@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
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
type AppendValue,
|
|
3
|
-
notNullish,
|
|
4
|
-
type Nullable,
|
|
5
|
-
type SingleOrMultiple,
|
|
6
|
-
type SourceBuilder,
|
|
7
|
-
toArray,
|
|
8
|
-
} from '@goast/core';
|
|
9
|
-
|
|
10
|
-
import type { TsNode } from '../node.js';
|
|
11
|
-
import { writeTsNodes } from './write-ts-nodes.js';
|
|
12
|
-
|
|
13
|
-
export function writeTsParameters<TBuilder extends SourceBuilder>(
|
|
14
|
-
builder: TBuilder,
|
|
15
|
-
nodes: SingleOrMultiple<Nullable<TsNode<TBuilder> | AppendValue<TBuilder>>>,
|
|
16
|
-
) {
|
|
17
|
-
const filteredNodes = toArray(nodes).filter(notNullish);
|
|
18
|
-
const multiline = filteredNodes.length > 2 ||
|
|
19
|
-
filteredNodes.some((p) =>
|
|
20
|
-
typeof p === 'object' && 'decorators' in p && Array.isArray(p.decorators) && p.decorators.length > 0
|
|
21
|
-
);
|
|
22
|
-
builder.parenthesize('()', (b) => writeTsNodes(b, filteredNodes, { separator: multiline ? ',\n' : ', ' }), {
|
|
23
|
-
multiline,
|
|
24
|
-
});
|
|
25
|
-
}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import type { TypeScriptExportOptions } from './import-collection.js';
|
|
2
|
-
|
|
3
|
-
export type TypeScriptComponentOutputKind = 'interface' | 'type' | 'enum' | 'class' | 'function' | 'variable';
|
|
4
|
-
export type TypeScriptComponentOutput = {
|
|
5
|
-
component: string;
|
|
6
|
-
filePath?: string;
|
|
7
|
-
imports: TypeScriptImport[];
|
|
8
|
-
additionalExports?: string[] | ({ name: string } & TypeScriptExportOptions)[];
|
|
9
|
-
kind?: TypeScriptComponentOutputKind;
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
export type TypeScriptExportOutput = {
|
|
13
|
-
component: string;
|
|
14
|
-
filePath: string;
|
|
15
|
-
} & TypeScriptExportOptions;
|
|
16
|
-
|
|
17
|
-
export type TypeScriptImportKind = 'module' | 'file';
|
|
18
|
-
export type TypeScriptImportType = 'import' | 'type-import' | 'js-doc';
|
|
19
|
-
export type TypeScriptExportType = 'export' | 'type-export';
|
|
20
|
-
|
|
21
|
-
export type TypeScriptImport = {
|
|
22
|
-
kind: TypeScriptImportKind;
|
|
23
|
-
type: TypeScriptImportType;
|
|
24
|
-
modulePath: string;
|
|
25
|
-
name: string;
|
|
26
|
-
};
|
package/src/src/config.ts
DELETED
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
import type { DefaultGenerationProviderConfig, ExtendedStringCasing, OpenApiGeneratorConfig } from '@goast/core';
|
|
2
|
-
|
|
3
|
-
import type { ImportModuleTransformer } from './utils.js';
|
|
4
|
-
|
|
5
|
-
export type TypeScriptGeneratorConfig = OpenApiGeneratorConfig & {
|
|
6
|
-
/**
|
|
7
|
-
* The transformer to use for transforming import module paths.
|
|
8
|
-
* @default 'omit-extension'
|
|
9
|
-
*/
|
|
10
|
-
importModuleTransformer: ImportModuleTransformer;
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* The casing to use for file names.
|
|
14
|
-
* @default 'kebab'
|
|
15
|
-
*/
|
|
16
|
-
fileNameCasing: ExtendedStringCasing;
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* The casing to use for type names.
|
|
20
|
-
* @default 'pascal'
|
|
21
|
-
*/
|
|
22
|
-
typeNameCasing: ExtendedStringCasing;
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* The casing to use for function names.
|
|
26
|
-
* @default 'camel'
|
|
27
|
-
*/
|
|
28
|
-
functionNameCasing: ExtendedStringCasing;
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* The casing to use for property names.
|
|
32
|
-
* @default 'camel'
|
|
33
|
-
*/
|
|
34
|
-
propertyNameCasing: ExtendedStringCasing;
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* The casing to use for enum value names.
|
|
38
|
-
* @default 'pascal'
|
|
39
|
-
*/
|
|
40
|
-
enumValueNameCasing: ExtendedStringCasing;
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* The casing to use for constant names.
|
|
44
|
-
* @default { casing: 'snake', wordCasing: 'all-upper' }
|
|
45
|
-
*/
|
|
46
|
-
constantNameCasing: ExtendedStringCasing;
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* The casing to use for generic parameter names.
|
|
50
|
-
* @default { casing: 'pascal', prefix: 'T' }
|
|
51
|
-
*/
|
|
52
|
-
genericParamNameCasing: ExtendedStringCasing;
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* The casing to use for parameter names.
|
|
56
|
-
* @default 'camel'
|
|
57
|
-
*/
|
|
58
|
-
paramNameCasing: ExtendedStringCasing;
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* Whether to prefer `unknown` over `any`.
|
|
62
|
-
* @default true
|
|
63
|
-
*/
|
|
64
|
-
preferUnknown: boolean;
|
|
65
|
-
|
|
66
|
-
/**
|
|
67
|
-
* Whether to use single quotes for strings.
|
|
68
|
-
* @default true
|
|
69
|
-
*/
|
|
70
|
-
useSingleQuotes: boolean;
|
|
71
|
-
};
|
|
72
|
-
|
|
73
|
-
export const defaultTypeScriptGeneratorConfig: DefaultGenerationProviderConfig<TypeScriptGeneratorConfig> = {
|
|
74
|
-
indent: { type: 'spaces', count: 2 },
|
|
75
|
-
|
|
76
|
-
importModuleTransformer: 'omit-extension',
|
|
77
|
-
|
|
78
|
-
fileNameCasing: 'kebab',
|
|
79
|
-
typeNameCasing: 'pascal',
|
|
80
|
-
functionNameCasing: 'camel',
|
|
81
|
-
propertyNameCasing: 'camel',
|
|
82
|
-
enumValueNameCasing: 'pascal',
|
|
83
|
-
constantNameCasing: { casing: 'snake', wordCasing: 'all-upper' },
|
|
84
|
-
genericParamNameCasing: { casing: 'pascal', prefix: 'T' },
|
|
85
|
-
paramNameCasing: 'camel',
|
|
86
|
-
|
|
87
|
-
preferUnknown: true,
|
|
88
|
-
useSingleQuotes: true,
|
|
89
|
-
};
|
package/src/src/file-builder.ts
DELETED
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
import { dirname } from 'node:path';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import fs from 'fs-extra';
|
|
5
|
-
|
|
6
|
-
import { type AppendParam, type AppendValue, isAppendValue, type Nullable, SourceBuilder } from '@goast/core';
|
|
7
|
-
|
|
8
|
-
import { TsNode } from './ast/node.js';
|
|
9
|
-
import { defaultTypeScriptGeneratorConfig, type TypeScriptGeneratorConfig } from './config.js';
|
|
10
|
-
import type { TypeScriptModelGeneratorOutput } from './generators/index.js';
|
|
11
|
-
import {
|
|
12
|
-
ImportExportCollection,
|
|
13
|
-
type TypeScriptExportOptions,
|
|
14
|
-
type TypeScriptImportOptions,
|
|
15
|
-
} from './import-collection.js';
|
|
16
|
-
|
|
17
|
-
export type TypeScriptAppends<TAdditionalAppends> = TsNode<TypeScriptFileBuilder> | TAdditionalAppends;
|
|
18
|
-
export type TypeScriptAppendParam<TBuilder extends TypeScriptFileBuilder, TAdditionalAppends> = AppendParam<
|
|
19
|
-
TBuilder,
|
|
20
|
-
TypeScriptAppends<TAdditionalAppends>
|
|
21
|
-
>;
|
|
22
|
-
|
|
23
|
-
export function isTypeScriptAppendValue<TBuilder extends TypeScriptFileBuilder = TypeScriptFileBuilder>(
|
|
24
|
-
value: unknown,
|
|
25
|
-
): value is AppendValue<TBuilder> {
|
|
26
|
-
return isAppendValue(value) || value instanceof TsNode;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
export class TypeScriptFileBuilder<TAdditionalAppends = never>
|
|
30
|
-
extends SourceBuilder<TypeScriptAppends<TAdditionalAppends>> {
|
|
31
|
-
public readonly filePath: string | undefined;
|
|
32
|
-
public readonly imports: ImportExportCollection;
|
|
33
|
-
|
|
34
|
-
public override get options(): TypeScriptGeneratorConfig {
|
|
35
|
-
return super.options as TypeScriptGeneratorConfig;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
constructor(filePath?: string, options?: TypeScriptGeneratorConfig) {
|
|
39
|
-
super(options ?? defaultTypeScriptGeneratorConfig);
|
|
40
|
-
this.filePath = filePath;
|
|
41
|
-
this.imports = new ImportExportCollection({
|
|
42
|
-
filePath: filePath,
|
|
43
|
-
importModuleTransformer: this.options.importModuleTransformer,
|
|
44
|
-
useSingleQuotes: this.options.useSingleQuotes,
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
public addImport(name: string, moduleNameOrfilePath: string, options?: TypeScriptImportOptions): this {
|
|
49
|
-
this.imports.addImport(name, moduleNameOrfilePath, options);
|
|
50
|
-
return this;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
public addExport(name: string, filePath: string, options?: TypeScriptExportOptions): this {
|
|
54
|
-
this.imports.addExport(name, filePath, options);
|
|
55
|
-
return this;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
public override clear(): void {
|
|
59
|
-
super.clear();
|
|
60
|
-
this.imports.clear();
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
public override toString(addPadding: boolean = true): string {
|
|
64
|
-
const builder = new SourceBuilder(this.options);
|
|
65
|
-
if (this.filePath?.match(/\.[cm]?js$/)) {
|
|
66
|
-
builder.appendLine('// @ts-check');
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
builder.ensurePreviousLineEmpty();
|
|
70
|
-
this.imports.writeTo(builder);
|
|
71
|
-
|
|
72
|
-
const baseString = super.toString();
|
|
73
|
-
if (baseString && addPadding) {
|
|
74
|
-
builder.ensurePreviousLineEmpty();
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
builder.append(baseString);
|
|
78
|
-
|
|
79
|
-
if (addPadding) {
|
|
80
|
-
builder.ensureCurrentLineEmpty();
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
return builder.toString();
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
protected override appendSingle(value: TypeScriptAppendParam<this, TAdditionalAppends>) {
|
|
87
|
-
super.appendSingle(value);
|
|
88
|
-
if (value instanceof TsNode) {
|
|
89
|
-
value.write(this);
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
public appendModelUsage(type: TypeScriptModelGeneratorOutput, options?: TypeScriptImportOptions): this {
|
|
94
|
-
this.append(options?.type === 'js-doc' ? type.component.replace(/\/\*\*.*\*\/\s*/gs, '') : type.component);
|
|
95
|
-
for (const i of type.imports) {
|
|
96
|
-
this.addImport(i.name, i.modulePath, { ...i, ...options });
|
|
97
|
-
}
|
|
98
|
-
return this;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
public writeToFile(filePath?: string): void {
|
|
102
|
-
if (!filePath) filePath = this.filePath;
|
|
103
|
-
if (!filePath) throw new Error('File path is required');
|
|
104
|
-
fs.ensureDirSync(dirname(filePath));
|
|
105
|
-
fs.writeFileSync(filePath, this.toString());
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
public static generate(options: {
|
|
109
|
-
filePath: string;
|
|
110
|
-
logName?: Nullable<string>;
|
|
111
|
-
options?: TypeScriptGeneratorConfig;
|
|
112
|
-
generator: (builder: TypeScriptFileBuilder) => void;
|
|
113
|
-
}): void {
|
|
114
|
-
TypeScriptFileBuilder.tryGenerate(options);
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
public static tryGenerate({
|
|
118
|
-
filePath,
|
|
119
|
-
generator,
|
|
120
|
-
options,
|
|
121
|
-
logName,
|
|
122
|
-
}: {
|
|
123
|
-
filePath: Nullable<string>;
|
|
124
|
-
logName?: Nullable<string>;
|
|
125
|
-
options?: TypeScriptGeneratorConfig;
|
|
126
|
-
generator: (builder: TypeScriptFileBuilder) => void;
|
|
127
|
-
}) {
|
|
128
|
-
if (!filePath) return;
|
|
129
|
-
if (logName) {
|
|
130
|
-
console.log(`Generating ${logName} to ${filePath}...`);
|
|
131
|
-
}
|
|
132
|
-
const builder = new TypeScriptFileBuilder(filePath, options);
|
|
133
|
-
generator(builder);
|
|
134
|
-
builder.writeToFile();
|
|
135
|
-
}
|
|
136
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import type { MaybePromise, OpenApiGenerationProviderContext, OpenApiGeneratorInput, SourceBuilder } from '@goast/core';
|
|
2
|
-
|
|
3
|
-
import { ts } from '../ast/index.js';
|
|
4
|
-
import type { TypeScriptGeneratorConfig } from '../config.js';
|
|
5
|
-
|
|
6
|
-
export abstract class TypeScriptFileGenerator<
|
|
7
|
-
TContext extends OpenApiGenerationProviderContext<OpenApiGeneratorInput, TypeScriptGeneratorConfig>,
|
|
8
|
-
TOutput,
|
|
9
|
-
> {
|
|
10
|
-
public abstract generate(context: TContext): MaybePromise<TOutput>;
|
|
11
|
-
|
|
12
|
-
protected getAnyType(context: TContext): ts.Reference<SourceBuilder> {
|
|
13
|
-
return context.config.preferUnknown ? ts.refs.unknown() : ts.refs.any();
|
|
14
|
-
}
|
|
15
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export * from './file-generator.js';
|
|
2
|
-
export * from './models/index.js';
|
|
3
|
-
export * from './services/angular-services/index.js';
|
|
4
|
-
export * from './services/easy-network-stub/index.js';
|
|
5
|
-
export * from './services/fetch-clients/index.js';
|
|
6
|
-
export * from './services/k6-clients/index.js';
|