@goast/typescript 0.6.2 → 0.6.3-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/assets/stubs/easy-network-stub/easy-network-stub.utils.ts +2 -6
- package/package.json +2 -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 -137
- 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 -481
- 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 -414
- 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 -250
- 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 -285
- 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 -474
- 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,54 +0,0 @@
|
|
|
1
|
-
import type { AstNodeOptions, Nullable, Prettify, SourceBuilder } from '@goast/core';
|
|
2
|
-
|
|
3
|
-
import type { TypeScriptExportType } from '../../common-results.js';
|
|
4
|
-
import { TypeScriptFileBuilder } from '../../file-builder.js';
|
|
5
|
-
import { TsNode } from '../node.js';
|
|
6
|
-
import { writeTsNodes } from '../utils/write-ts-nodes.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
|
-
name: string;
|
|
14
|
-
filePath: string;
|
|
15
|
-
kind?: Nullable<TypeScriptExportType>;
|
|
16
|
-
}
|
|
17
|
-
>;
|
|
18
|
-
|
|
19
|
-
export class TsExport<TBuilder extends SourceBuilder, TInjects extends string = never> extends TsNode<
|
|
20
|
-
TBuilder,
|
|
21
|
-
TInjects | Injects
|
|
22
|
-
> {
|
|
23
|
-
public name: string;
|
|
24
|
-
public filePath: string;
|
|
25
|
-
public kind: TypeScriptExportType;
|
|
26
|
-
|
|
27
|
-
constructor(options: Options<TBuilder, TInjects>) {
|
|
28
|
-
super(options);
|
|
29
|
-
this.name = options.name;
|
|
30
|
-
this.filePath = options.filePath;
|
|
31
|
-
this.kind = options.kind ?? 'export';
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
protected override onWrite(builder: TBuilder): void {
|
|
35
|
-
if (builder instanceof TypeScriptFileBuilder) {
|
|
36
|
-
builder.addExport(this.name, this.filePath, { type: this.kind });
|
|
37
|
-
} else {
|
|
38
|
-
builder.appendLine(
|
|
39
|
-
this.kind === 'type-export' ? 'export type' : 'export',
|
|
40
|
-
` { ${this.name} } from '${this.filePath}';`,
|
|
41
|
-
);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
export const createExport = <TBuilder extends SourceBuilder>(
|
|
47
|
-
name: Options<TBuilder>['name'],
|
|
48
|
-
filePath: Options<TBuilder>['filePath'],
|
|
49
|
-
options?: Prettify<Omit<Options<TBuilder>, 'name' | 'filePath'>>,
|
|
50
|
-
): TsExport<TBuilder> => new TsExport<TBuilder>({ ...options, name, filePath });
|
|
51
|
-
|
|
52
|
-
export const tsExport: typeof createExport & { write: typeof writeTsNodes } = Object.assign(createExport, {
|
|
53
|
-
write: writeTsNodes,
|
|
54
|
-
});
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { type AstNodeOptions, type BasicAppendValue, notNullish, type Nullable, type SourceBuilder } from '@goast/core';
|
|
2
|
-
|
|
3
|
-
import { TsNode } from '../node.js';
|
|
4
|
-
import { writeTsNode, writeTsNodes } from '../utils/write-ts-nodes.js';
|
|
5
|
-
import { type TsGenericParameter, tsGenericParameter } from './generic-parameter.js';
|
|
6
|
-
import { type TsParameter, tsParameter } from './parameter.js';
|
|
7
|
-
import type { TsType } from './types.js';
|
|
8
|
-
|
|
9
|
-
type Injects = 'generics' | 'params' | 'returnType';
|
|
10
|
-
|
|
11
|
-
type Options<TBuilder extends SourceBuilder, TInjects extends string = never> = AstNodeOptions<
|
|
12
|
-
typeof TsNode<TBuilder, TInjects | Injects>,
|
|
13
|
-
{
|
|
14
|
-
generics?: Nullable<Nullable<TsGenericParameter<TBuilder> | BasicAppendValue<TBuilder>>[]>;
|
|
15
|
-
parameters?: Nullable<Nullable<TsParameter<TBuilder> | BasicAppendValue<TBuilder>>[]>;
|
|
16
|
-
returnType?: Nullable<TsType<TBuilder>>;
|
|
17
|
-
}
|
|
18
|
-
>;
|
|
19
|
-
|
|
20
|
-
export class TsFunctionType<TBuilder extends SourceBuilder, TInjects extends string = never> extends TsNode<
|
|
21
|
-
TBuilder,
|
|
22
|
-
TInjects | Injects
|
|
23
|
-
> {
|
|
24
|
-
public generics: (TsGenericParameter<TBuilder> | BasicAppendValue<TBuilder>)[];
|
|
25
|
-
public parameters: (TsParameter<TBuilder> | BasicAppendValue<TBuilder>)[];
|
|
26
|
-
public returnType: TsType<TBuilder> | null;
|
|
27
|
-
|
|
28
|
-
constructor(options: Options<TBuilder, TInjects>) {
|
|
29
|
-
super(options);
|
|
30
|
-
this.generics = options.generics?.filter(notNullish) ?? [];
|
|
31
|
-
this.parameters = options.parameters?.filter(notNullish) ?? [];
|
|
32
|
-
this.returnType = options.returnType ?? null;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
protected override onWrite(builder: TBuilder): void {
|
|
36
|
-
builder.append(this.inject.beforeGenerics);
|
|
37
|
-
tsGenericParameter.write(builder, this.generics);
|
|
38
|
-
builder.append(this.inject.afterGenerics);
|
|
39
|
-
|
|
40
|
-
builder.append(this.inject.beforeParams);
|
|
41
|
-
tsParameter.write(builder, this.parameters);
|
|
42
|
-
builder.append(this.inject.afterParams);
|
|
43
|
-
|
|
44
|
-
builder.append(' => ');
|
|
45
|
-
|
|
46
|
-
builder.append(this.inject.beforeReturnType);
|
|
47
|
-
writeTsNode(builder, this.returnType ?? 'void');
|
|
48
|
-
builder.append(this.inject.afterReturnType);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
const createFunctionType = <TBuilder extends SourceBuilder>(options?: Options<TBuilder>): TsFunctionType<TBuilder> =>
|
|
53
|
-
new TsFunctionType<TBuilder>(options ?? {});
|
|
54
|
-
|
|
55
|
-
export const tsFunctionType: typeof createFunctionType & { write: typeof writeTsNodes } = Object.assign(
|
|
56
|
-
createFunctionType,
|
|
57
|
-
{
|
|
58
|
-
write: writeTsNodes,
|
|
59
|
-
},
|
|
60
|
-
);
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
type AppendValue,
|
|
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 { writeTsNode, writeTsNodes } from '../utils/write-ts-nodes.js';
|
|
12
|
-
import { type TsDecorator, tsDecorator } from './decorator.js';
|
|
13
|
-
import { type TsDoc, tsDoc } from './doc.js';
|
|
14
|
-
import { type TsGenericParameter, tsGenericParameter } from './generic-parameter.js';
|
|
15
|
-
import { type TsParameter, tsParameter } from './parameter.js';
|
|
16
|
-
import type { TsType } from './types.js';
|
|
17
|
-
|
|
18
|
-
type Injects = 'doc' | 'decorators' | 'modifiers' | 'name' | 'generics' | 'params' | 'returnType' | 'body';
|
|
19
|
-
|
|
20
|
-
type Options<TBuilder extends SourceBuilder, TInjects extends string = never> = AstNodeOptions<
|
|
21
|
-
typeof TsNode<TBuilder, TInjects | Injects>,
|
|
22
|
-
{
|
|
23
|
-
doc?: Nullable<TsDoc<TBuilder>>;
|
|
24
|
-
decorators?: Nullable<Nullable<TsDecorator<TBuilder>>[]>;
|
|
25
|
-
export?: boolean;
|
|
26
|
-
name: string;
|
|
27
|
-
generics?: Nullable<Nullable<TsGenericParameter<TBuilder>>[]>;
|
|
28
|
-
parameters?: Nullable<Nullable<TsParameter<TBuilder>>[]>;
|
|
29
|
-
returnType?: Nullable<TsType<TBuilder>>;
|
|
30
|
-
body?: Nullable<AppendValue<TBuilder>>;
|
|
31
|
-
}
|
|
32
|
-
>;
|
|
33
|
-
|
|
34
|
-
export class TsFunction<TBuilder extends SourceBuilder, TInjects extends string = never> extends TsNode<
|
|
35
|
-
TBuilder,
|
|
36
|
-
TInjects | Injects
|
|
37
|
-
> {
|
|
38
|
-
public doc: TsDoc<TBuilder> | null;
|
|
39
|
-
public decorators: TsDecorator<TBuilder>[];
|
|
40
|
-
public export: boolean;
|
|
41
|
-
public name: string;
|
|
42
|
-
public generics: TsGenericParameter<TBuilder>[];
|
|
43
|
-
public parameters: TsParameter<TBuilder>[];
|
|
44
|
-
public returnType: TsType<TBuilder> | null;
|
|
45
|
-
public body: AppendValue<TBuilder> | null;
|
|
46
|
-
|
|
47
|
-
constructor(options: Options<TBuilder, TInjects>) {
|
|
48
|
-
super(options);
|
|
49
|
-
this.doc = options.doc ?? null;
|
|
50
|
-
this.decorators = options.decorators?.filter(notNullish) ?? [];
|
|
51
|
-
this.export = options.export ?? false;
|
|
52
|
-
this.name = options.name;
|
|
53
|
-
this.generics = options.generics?.filter(notNullish) ?? [];
|
|
54
|
-
this.parameters = options.parameters?.filter(notNullish) ?? [];
|
|
55
|
-
this.returnType = options.returnType ?? null;
|
|
56
|
-
this.body = options.body ?? null;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
protected override onWrite(builder: TBuilder): void {
|
|
60
|
-
builder.append(this.inject.beforeDoc);
|
|
61
|
-
tsDoc.write(builder, tsDoc.get(this.doc, { generics: this.generics }));
|
|
62
|
-
builder.append(this.inject.afterDoc);
|
|
63
|
-
|
|
64
|
-
builder.append(this.inject.beforeDecorators);
|
|
65
|
-
tsDecorator.write(builder, this.decorators, { multiline: true });
|
|
66
|
-
builder.append(this.inject.afterDecorators);
|
|
67
|
-
|
|
68
|
-
builder.append(this.inject.beforeModifiers);
|
|
69
|
-
if (this.export) builder.append('export ');
|
|
70
|
-
builder.append(this.inject.afterModifiers);
|
|
71
|
-
|
|
72
|
-
builder.append('function ');
|
|
73
|
-
builder.append(this.inject.beforeName, this.name, this.inject.afterName);
|
|
74
|
-
|
|
75
|
-
builder.append(this.inject.beforeGenerics);
|
|
76
|
-
tsGenericParameter.write(builder, this.generics);
|
|
77
|
-
builder.append(this.inject.afterGenerics);
|
|
78
|
-
|
|
79
|
-
builder.append(this.inject.beforeParams);
|
|
80
|
-
tsParameter.write(builder, this.parameters);
|
|
81
|
-
builder.append(this.inject.afterParams);
|
|
82
|
-
|
|
83
|
-
if (this.returnType) {
|
|
84
|
-
builder.append(': ');
|
|
85
|
-
builder.append(this.inject.beforeReturnType);
|
|
86
|
-
writeTsNode(builder, this.returnType);
|
|
87
|
-
builder.append(this.inject.afterReturnType);
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
builder.append(' ');
|
|
91
|
-
|
|
92
|
-
builder.append(this.inject.beforeBody);
|
|
93
|
-
builder.parenthesize('{}', this.body, { multiline: !!this.body });
|
|
94
|
-
builder.append(this.inject.afterBody);
|
|
95
|
-
|
|
96
|
-
builder.appendLine();
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
const createFunction = <TBuilder extends SourceBuilder>(
|
|
101
|
-
name: Options<TBuilder>['name'],
|
|
102
|
-
options?: Prettify<Omit<Options<TBuilder>, 'name'>>,
|
|
103
|
-
): TsFunction<TBuilder> => new TsFunction<TBuilder>({ ...options, name });
|
|
104
|
-
|
|
105
|
-
export const tsFunction: typeof createFunction & { write: typeof writeTsNodes } = Object.assign(createFunction, {
|
|
106
|
-
write: writeTsNodes,
|
|
107
|
-
});
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import type { AstNodeOptions, BasicAppendValue, Nullable, Prettify, SourceBuilder } from '@goast/core';
|
|
2
|
-
|
|
3
|
-
import { TsNode } from '../node.js';
|
|
4
|
-
import { writeTsGenericParameters } from '../utils/write-ts-generic-parameters.js';
|
|
5
|
-
import { writeTsNode } from '../utils/write-ts-nodes.js';
|
|
6
|
-
import type { TsType } from './types.js';
|
|
7
|
-
|
|
8
|
-
type Injects = 'modifiers' | 'name' | 'constraint' | 'default';
|
|
9
|
-
|
|
10
|
-
type Options<TBuilder extends SourceBuilder, TInjects extends string = never> = AstNodeOptions<
|
|
11
|
-
typeof TsNode<TBuilder, TInjects | Injects>,
|
|
12
|
-
{
|
|
13
|
-
description?: Nullable<BasicAppendValue<TBuilder>>;
|
|
14
|
-
const?: Nullable<boolean>;
|
|
15
|
-
name: string;
|
|
16
|
-
constraint?: Nullable<TsType<TBuilder>>;
|
|
17
|
-
default?: Nullable<TsType<TBuilder>>;
|
|
18
|
-
}
|
|
19
|
-
>;
|
|
20
|
-
|
|
21
|
-
export class TsGenericParameter<TBuilder extends SourceBuilder, TInjects extends string = never> extends TsNode<
|
|
22
|
-
TBuilder,
|
|
23
|
-
TInjects | Injects
|
|
24
|
-
> {
|
|
25
|
-
public description: BasicAppendValue<TBuilder> | null;
|
|
26
|
-
public const: boolean;
|
|
27
|
-
public name: string;
|
|
28
|
-
public constraint: TsType<TBuilder> | null;
|
|
29
|
-
public default: TsType<TBuilder> | null;
|
|
30
|
-
|
|
31
|
-
constructor(options: Options<TBuilder, TInjects>) {
|
|
32
|
-
super(options);
|
|
33
|
-
this.description = options.description ?? null;
|
|
34
|
-
this.const = options.const ?? false;
|
|
35
|
-
this.name = options.name;
|
|
36
|
-
this.constraint = options.constraint ?? null;
|
|
37
|
-
this.default = options.default ?? null;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
protected override onWrite(builder: TBuilder): void {
|
|
41
|
-
builder.append(this.inject.beforeModifiers);
|
|
42
|
-
builder.appendIf(this.const, 'const ');
|
|
43
|
-
builder.append(this.inject.afterModifiers);
|
|
44
|
-
|
|
45
|
-
builder.append(this.inject.beforeName, this.name, this.inject.afterName);
|
|
46
|
-
|
|
47
|
-
if (this.constraint !== null) {
|
|
48
|
-
builder.append(' extends ');
|
|
49
|
-
builder.append(this.inject.beforeConstraint);
|
|
50
|
-
writeTsNode(builder, this.constraint);
|
|
51
|
-
builder.append(this.inject.afterConstraint);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
if (this.default !== null) {
|
|
55
|
-
builder.append(' = ');
|
|
56
|
-
builder.append(this.inject.beforeDefault);
|
|
57
|
-
writeTsNode(builder, this.default);
|
|
58
|
-
builder.append(this.inject.afterDefault);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
const createGenericParameter = <TBuilder extends SourceBuilder>(
|
|
64
|
-
name: Options<TBuilder>['name'],
|
|
65
|
-
options?: Prettify<Omit<Options<TBuilder>, 'name'>>,
|
|
66
|
-
): TsGenericParameter<TBuilder> => new TsGenericParameter<TBuilder>({ ...options, name });
|
|
67
|
-
|
|
68
|
-
export const tsGenericParameter: typeof createGenericParameter & { write: typeof writeTsGenericParameters } = Object
|
|
69
|
-
.assign(createGenericParameter, {
|
|
70
|
-
write: writeTsGenericParameters,
|
|
71
|
-
});
|
|
@@ -1,60 +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 = never;
|
|
8
|
-
|
|
9
|
-
type Options<TBuilder extends SourceBuilder, TInjects extends string = never> = AstNodeOptions<
|
|
10
|
-
typeof TsNode<TBuilder, TInjects | Injects>,
|
|
11
|
-
{
|
|
12
|
-
keyName?: Nullable<string>;
|
|
13
|
-
keyType: TsType<TBuilder>;
|
|
14
|
-
valueType: TsType<TBuilder>;
|
|
15
|
-
readonly?: Nullable<boolean>;
|
|
16
|
-
}
|
|
17
|
-
>;
|
|
18
|
-
|
|
19
|
-
export class TsIndexer<TBuilder extends SourceBuilder, TInjects extends string = never> extends TsNode<
|
|
20
|
-
TBuilder,
|
|
21
|
-
TInjects | Injects
|
|
22
|
-
> {
|
|
23
|
-
public keyName: string;
|
|
24
|
-
public keyType: TsType<TBuilder>;
|
|
25
|
-
public valueType: TsType<TBuilder>;
|
|
26
|
-
public readonly: boolean;
|
|
27
|
-
|
|
28
|
-
constructor(options: Options<TBuilder, TInjects>) {
|
|
29
|
-
super(options);
|
|
30
|
-
this.keyName = options.keyName ?? 'key';
|
|
31
|
-
this.keyType = options.keyType;
|
|
32
|
-
this.valueType = options.valueType;
|
|
33
|
-
this.readonly = options.readonly ?? false;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
protected override onWrite(builder: TBuilder): void {
|
|
37
|
-
if (this.readonly) builder.append('readonly ');
|
|
38
|
-
|
|
39
|
-
builder.parenthesize('[]', (b) => {
|
|
40
|
-
b.append(this.keyName, ': ');
|
|
41
|
-
writeTsNode(b, this.keyType);
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
builder.append(': ');
|
|
45
|
-
writeTsNode(builder, this.valueType);
|
|
46
|
-
builder.append(';');
|
|
47
|
-
|
|
48
|
-
builder.appendLine();
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
const createIndexer = <TBuilder extends SourceBuilder>(
|
|
53
|
-
keyType: Options<TBuilder>['keyType'],
|
|
54
|
-
valueType: Options<TBuilder>['valueType'],
|
|
55
|
-
options?: Prettify<Omit<Options<TBuilder>, 'keyType' | 'valueType'>>,
|
|
56
|
-
): TsIndexer<TBuilder> => new TsIndexer<TBuilder>({ ...options, keyType, valueType });
|
|
57
|
-
|
|
58
|
-
export const tsIndexer: typeof createIndexer & { write: typeof writeTsNodes } = Object.assign(createIndexer, {
|
|
59
|
-
write: writeTsNodes,
|
|
60
|
-
});
|
|
@@ -1,117 +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 { writeTsNodes } from '../utils/write-ts-nodes.js';
|
|
13
|
-
import { type TsDecorator, tsDecorator } from './decorator.js';
|
|
14
|
-
import { type TsDoc, tsDoc } from './doc.js';
|
|
15
|
-
import { type TsGenericParameter, tsGenericParameter } from './generic-parameter.js';
|
|
16
|
-
import type { TsIndexer } from './indexer.js';
|
|
17
|
-
import type { TsMethod } from './method.js';
|
|
18
|
-
import type { TsProperty } from './property.js';
|
|
19
|
-
import type { TsReference } from './reference.js';
|
|
20
|
-
|
|
21
|
-
type Injects = 'doc' | 'decorators' | 'modifiers' | 'name' | 'generics' | 'extends' | 'body' | 'members';
|
|
22
|
-
|
|
23
|
-
type Options<TBuilder extends SourceBuilder, TInjects extends string = never> = AstNodeOptions<
|
|
24
|
-
typeof TsNode<TBuilder, TInjects | Injects>,
|
|
25
|
-
{
|
|
26
|
-
doc?: Nullable<TsDoc<TBuilder>>;
|
|
27
|
-
decorators?: Nullable<Nullable<TsDecorator<TBuilder>>[]>;
|
|
28
|
-
export?: Nullable<boolean>;
|
|
29
|
-
name: string;
|
|
30
|
-
generics?: Nullable<Nullable<TsGenericParameter<TBuilder> | BasicAppendValue<TBuilder>>[]>;
|
|
31
|
-
extends?: Nullable<Nullable<TsReference<TBuilder> | BasicAppendValue<TBuilder>>[]>;
|
|
32
|
-
members?: Nullable<Nullable<Member<TBuilder>>[]>;
|
|
33
|
-
}
|
|
34
|
-
>;
|
|
35
|
-
|
|
36
|
-
type Member<TBuilder extends SourceBuilder> =
|
|
37
|
-
| TsIndexer<TBuilder>
|
|
38
|
-
| TsProperty<TBuilder>
|
|
39
|
-
| TsMethod<TBuilder>
|
|
40
|
-
| BasicAppendValue<TBuilder>;
|
|
41
|
-
|
|
42
|
-
export class TsInterface<TBuilder extends SourceBuilder, TInjects extends string = never> extends TsNode<
|
|
43
|
-
TBuilder,
|
|
44
|
-
TInjects | Injects
|
|
45
|
-
> {
|
|
46
|
-
public doc: TsDoc<TBuilder> | null;
|
|
47
|
-
public decorators: TsDecorator<TBuilder>[];
|
|
48
|
-
public export: boolean;
|
|
49
|
-
public name: string;
|
|
50
|
-
public generics: (TsGenericParameter<TBuilder> | BasicAppendValue<TBuilder>)[];
|
|
51
|
-
public extends: (TsReference<TBuilder> | BasicAppendValue<TBuilder>)[];
|
|
52
|
-
public members: Member<TBuilder>[];
|
|
53
|
-
|
|
54
|
-
constructor(options: Options<TBuilder, TInjects>) {
|
|
55
|
-
super(options);
|
|
56
|
-
this.doc = options.doc ?? null;
|
|
57
|
-
this.decorators = options.decorators?.filter(notNullish) ?? [];
|
|
58
|
-
this.export = options.export ?? false;
|
|
59
|
-
this.name = options.name;
|
|
60
|
-
this.generics = options.generics?.filter(notNullish) ?? [];
|
|
61
|
-
this.extends = options.extends?.filter(notNullish) ?? [];
|
|
62
|
-
this.members = options.members?.filter(notNullish) ?? [];
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
protected override onWrite(builder: TBuilder): void {
|
|
66
|
-
builder.append(this.inject.beforeDoc);
|
|
67
|
-
tsDoc.write(builder, tsDoc.get(this.doc, { generics: this.generics }));
|
|
68
|
-
builder.append(this.inject.afterDoc);
|
|
69
|
-
|
|
70
|
-
builder.append(this.inject.beforeDecorators);
|
|
71
|
-
tsDecorator.write(builder, this.decorators, { multiline: true });
|
|
72
|
-
builder.append(this.inject.afterDecorators);
|
|
73
|
-
|
|
74
|
-
builder.append(this.inject.beforeModifiers);
|
|
75
|
-
if (this.export) builder.append('export ');
|
|
76
|
-
builder.append(this.inject.afterModifiers);
|
|
77
|
-
|
|
78
|
-
builder.append('interface ');
|
|
79
|
-
builder.append(this.inject.beforeName, this.name, this.inject.afterName);
|
|
80
|
-
|
|
81
|
-
builder.append(this.inject.beforeGenerics);
|
|
82
|
-
tsGenericParameter.write(builder, this.generics);
|
|
83
|
-
builder.append(this.inject.afterGenerics);
|
|
84
|
-
|
|
85
|
-
if (this.extends.length > 0) {
|
|
86
|
-
builder.append(' extends ');
|
|
87
|
-
builder.append(this.inject.beforeExtends);
|
|
88
|
-
writeTsNodes(builder, this.extends, { separator: ', ' });
|
|
89
|
-
builder.append(this.inject.afterExtends);
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
builder.append(' ');
|
|
93
|
-
|
|
94
|
-
builder.append(this.inject.beforeBody);
|
|
95
|
-
builder.parenthesize(
|
|
96
|
-
'{}',
|
|
97
|
-
(b) => {
|
|
98
|
-
b.append(this.inject.beforeMembers);
|
|
99
|
-
writeTsMembers(b, this.members);
|
|
100
|
-
b.append(this.inject.afterMembers);
|
|
101
|
-
},
|
|
102
|
-
{ multiline: this.members.length > 0 },
|
|
103
|
-
);
|
|
104
|
-
builder.append(this.inject.afterBody);
|
|
105
|
-
|
|
106
|
-
builder.appendLine();
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
const createInterface = <TBuilder extends SourceBuilder>(
|
|
111
|
-
name: Options<TBuilder>['name'],
|
|
112
|
-
options?: Prettify<Omit<Options<TBuilder>, 'name'>>,
|
|
113
|
-
): TsInterface<TBuilder> => new TsInterface<TBuilder>({ ...options, name });
|
|
114
|
-
|
|
115
|
-
export const tsInterface: typeof createInterface & { write: typeof writeTsNodes } = Object.assign(createInterface, {
|
|
116
|
-
write: writeTsNodes,
|
|
117
|
-
});
|
|
@@ -1,67 +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 { writeTsNode, writeTsNodes } from '../utils/write-ts-nodes.js';
|
|
5
|
-
import type { TsType } 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
|
-
types: Nullable<TsType<TBuilder>>[];
|
|
13
|
-
}
|
|
14
|
-
>;
|
|
15
|
-
|
|
16
|
-
export class TsIntersectionType<TBuilder extends SourceBuilder, TInjects extends string = never> extends TsNode<
|
|
17
|
-
TBuilder,
|
|
18
|
-
TInjects | Injects
|
|
19
|
-
> {
|
|
20
|
-
public types: TsType<TBuilder>[];
|
|
21
|
-
|
|
22
|
-
constructor(options: Options<TBuilder, TInjects>) {
|
|
23
|
-
super(options);
|
|
24
|
-
this.types = options.types.filter(notNullish);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
protected override onWrite(builder: TBuilder): void {
|
|
28
|
-
const types = this.types.length === 0 ? ['unknown'] : resolveNestedIntersectionTypes(this);
|
|
29
|
-
if (types.length === 1) {
|
|
30
|
-
writeTsNode(builder, types[0]);
|
|
31
|
-
} else {
|
|
32
|
-
const multiline = types.length > 3;
|
|
33
|
-
if (multiline) {
|
|
34
|
-
builder.appendLine().append('& ');
|
|
35
|
-
}
|
|
36
|
-
builder.forEach(types, (b, t) => b.parenthesize('()', (b) => writeTsNode(b, t)), {
|
|
37
|
-
separator: multiline ? '\n& ' : ' & ',
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
const createIntersectionType = <TBuilder extends SourceBuilder>(
|
|
44
|
-
types: Options<TBuilder>['types'],
|
|
45
|
-
options?: Prettify<Omit<Options<TBuilder>, 'types'>>,
|
|
46
|
-
): TsIntersectionType<TBuilder> => new TsIntersectionType<TBuilder>({ ...options, types });
|
|
47
|
-
|
|
48
|
-
export const tsIntersectionType: typeof createIntersectionType & { write: typeof writeTsNodes } = Object.assign(
|
|
49
|
-
createIntersectionType,
|
|
50
|
-
{
|
|
51
|
-
write: writeTsNodes,
|
|
52
|
-
},
|
|
53
|
-
);
|
|
54
|
-
|
|
55
|
-
function resolveNestedIntersectionTypes<TBuilder extends SourceBuilder>(
|
|
56
|
-
node: TsIntersectionType<TBuilder>,
|
|
57
|
-
): TsType<TBuilder>[] {
|
|
58
|
-
const types: TsType<TBuilder>[] = [];
|
|
59
|
-
for (const type of node.types) {
|
|
60
|
-
if (type instanceof TsIntersectionType) {
|
|
61
|
-
types.push(...resolveNestedIntersectionTypes(type));
|
|
62
|
-
} else {
|
|
63
|
-
types.push(type);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
return types;
|
|
67
|
-
}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import type { AstNodeOptions, 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' | 'index';
|
|
8
|
-
|
|
9
|
-
type Options<TBuilder extends SourceBuilder, TInjects extends string = never> = AstNodeOptions<
|
|
10
|
-
typeof TsNode<TBuilder, TInjects | Injects>,
|
|
11
|
-
{
|
|
12
|
-
type: TsType<TBuilder>;
|
|
13
|
-
index: TsType<TBuilder>;
|
|
14
|
-
}
|
|
15
|
-
>;
|
|
16
|
-
|
|
17
|
-
export class TsLookupType<TBuilder extends SourceBuilder, TInjects extends string = never> extends TsNode<
|
|
18
|
-
TBuilder,
|
|
19
|
-
TInjects | Injects
|
|
20
|
-
> {
|
|
21
|
-
public type: TsType<TBuilder>;
|
|
22
|
-
public index: TsType<TBuilder>;
|
|
23
|
-
|
|
24
|
-
constructor(options: Options<TBuilder, TInjects>) {
|
|
25
|
-
super(options);
|
|
26
|
-
this.type = options.type;
|
|
27
|
-
this.index = options.index;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
protected override onWrite(builder: TBuilder): void {
|
|
31
|
-
builder
|
|
32
|
-
.parenthesize('()', (b) => {
|
|
33
|
-
b.append(this.inject.beforeType);
|
|
34
|
-
writeTsNode(b, this.type);
|
|
35
|
-
b.append(this.inject.afterType);
|
|
36
|
-
})
|
|
37
|
-
.parenthesize('[]', (b) => {
|
|
38
|
-
b.append(this.inject.beforeIndex);
|
|
39
|
-
writeTsNode(b, this.index);
|
|
40
|
-
b.append(this.inject.afterIndex);
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
const createLookupType = <TBuilder extends SourceBuilder>(
|
|
46
|
-
type: Options<TBuilder>['type'],
|
|
47
|
-
index: Options<TBuilder>['index'],
|
|
48
|
-
options?: Omit<Options<TBuilder>, 'type' | 'index'>,
|
|
49
|
-
): TsLookupType<TBuilder> => new TsLookupType<TBuilder>({ ...options, type, index });
|
|
50
|
-
|
|
51
|
-
export const tsLookupType: typeof createLookupType & { write: typeof writeTsNodes } = Object.assign(createLookupType, {
|
|
52
|
-
write: writeTsNodes,
|
|
53
|
-
});
|