@goast/typescript 0.7.6 → 0.8.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/README.md +52 -52
- package/assets/client/angular/angular-service.utils.ts +82 -82
- package/assets/client/angular/request-builder.ts +377 -377
- package/assets/client/fetch/fetch-client.utils.ts +52 -52
- package/assets/client/k6/request-builder.js +448 -448
- package/assets/client/k6/request-builder.ts +366 -366
- package/assets/stubs/easy-network-stub/easy-network-stub.utils.ts +257 -257
- package/esm/src/generators/services/angular-services/angular-service-generator.js +9 -9
- package/esm/src/generators/services/easy-network-stub/easy-network-stub-generator.js +9 -9
- package/esm/src/generators/services/fetch-clients/fetch-client-generator.js +4 -4
- package/esm/src/generators/services/k6-clients/k6-client-generator.js +11 -11
- package/package.json +2 -2
- package/script/src/generators/services/angular-services/angular-service-generator.js +9 -9
- package/script/src/generators/services/easy-network-stub/easy-network-stub-generator.js +9 -9
- package/script/src/generators/services/fetch-clients/fetch-client-generator.js +4 -4
- package/script/src/generators/services/k6-clients/k6-client-generator.js +11 -11
- 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 -96
- 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 -493
- 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 -431
- 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 -47
- package/src/src/generators/services/fetch-clients/fetch-client-generator.ts +0 -305
- 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 -505
- 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 -79
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { type TsGenericReferenceFactory, tsReference, type TsReferenceFactory } from '../nodes/reference.js';
|
|
2
|
-
|
|
3
|
-
export const any: TsReferenceFactory = tsReference.factory('any');
|
|
4
|
-
export const unknown: TsReferenceFactory = tsReference.factory('unknown');
|
|
5
|
-
export const void_: TsReferenceFactory = tsReference.factory('void');
|
|
6
|
-
export const never: TsReferenceFactory = tsReference.factory('never');
|
|
7
|
-
export const number: TsReferenceFactory = tsReference.factory('number');
|
|
8
|
-
export const string: TsReferenceFactory = tsReference.factory('string');
|
|
9
|
-
export const boolean: TsReferenceFactory = tsReference.factory('boolean');
|
|
10
|
-
export const bigint: TsReferenceFactory = tsReference.factory('bigint');
|
|
11
|
-
export const symbol: TsReferenceFactory = tsReference.factory('symbol');
|
|
12
|
-
export const object: TsReferenceFactory = tsReference.factory('object');
|
|
13
|
-
export const undefined_: TsReferenceFactory = tsReference.factory('undefined');
|
|
14
|
-
export const null_: TsReferenceFactory = tsReference.factory('null');
|
|
15
|
-
|
|
16
|
-
export const array: TsGenericReferenceFactory<1> = tsReference.genericFactory<1>('Array');
|
|
17
|
-
export const record: TsGenericReferenceFactory<2> = tsReference.genericFactory<2>('Record');
|
|
18
|
-
export const map: TsGenericReferenceFactory<2> = tsReference.genericFactory<2>('Map');
|
|
19
|
-
export const set: TsGenericReferenceFactory<1> = tsReference.genericFactory<1>('Set');
|
|
20
|
-
export const promise: TsGenericReferenceFactory<1> = tsReference.genericFactory<1>('Promise');
|
|
21
|
-
|
|
22
|
-
export const readonlyArray: TsGenericReferenceFactory<1> = tsReference.genericFactory<1>('ReadonlyArray');
|
|
23
|
-
export const readonly: TsGenericReferenceFactory<1> = tsReference.genericFactory<1>('Readonly');
|
|
24
|
-
export const partial: TsGenericReferenceFactory<1> = tsReference.genericFactory<1>('Partial');
|
|
25
|
-
export const required: TsGenericReferenceFactory<1> = tsReference.genericFactory<1>('Required');
|
|
26
|
-
export const pick: TsGenericReferenceFactory<2> = tsReference.genericFactory<2>('Pick');
|
|
27
|
-
export const omit: TsGenericReferenceFactory<2> = tsReference.genericFactory<2>('Omit');
|
|
28
|
-
export const exclude: TsGenericReferenceFactory<2> = tsReference.genericFactory<2>('Exclude');
|
|
29
|
-
export const extract: TsGenericReferenceFactory<2> = tsReference.genericFactory<2>('Extract');
|
|
30
|
-
export const nonNullable: TsGenericReferenceFactory<1> = tsReference.genericFactory<1>('NonNullable');
|
|
31
|
-
export const parameters: TsGenericReferenceFactory<1> = tsReference.genericFactory<1>('Parameters');
|
|
32
|
-
export const returnType: TsGenericReferenceFactory<1> = tsReference.genericFactory<1>('ReturnType');
|
|
33
|
-
export const instanceType: TsGenericReferenceFactory<1> = tsReference.genericFactory<1>('InstanceType');
|
|
34
|
-
|
|
35
|
-
export const blob: TsReferenceFactory = tsReference.factory('Blob');
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { defaultOpenApiGeneratorConfig, type SourceBuilder, type StringBuilder } from '@goast/core';
|
|
2
|
-
|
|
3
|
-
import { defaultTypeScriptGeneratorConfig, type TypeScriptGeneratorConfig } from '../../config.js';
|
|
4
|
-
import { TypeScriptFileBuilder } from '../../file-builder.js';
|
|
5
|
-
|
|
6
|
-
const tsConfigSymbol = Symbol();
|
|
7
|
-
type _BuilderWithConfig = SourceBuilder & { [tsConfigSymbol]?: TypeScriptGeneratorConfig };
|
|
8
|
-
|
|
9
|
-
export function getTypeScriptBuilderOptions(builder: StringBuilder): TypeScriptGeneratorConfig {
|
|
10
|
-
if (builder instanceof TypeScriptFileBuilder) {
|
|
11
|
-
return builder.options;
|
|
12
|
-
}
|
|
13
|
-
if (tsConfigSymbol in builder.options) {
|
|
14
|
-
return builder.options[tsConfigSymbol] as TypeScriptGeneratorConfig;
|
|
15
|
-
}
|
|
16
|
-
const options = { ...defaultOpenApiGeneratorConfig, ...defaultTypeScriptGeneratorConfig, ...builder.options };
|
|
17
|
-
(builder as _BuilderWithConfig)[tsConfigSymbol] = options;
|
|
18
|
-
return options;
|
|
19
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import type { BasicAppendValue, SourceBuilder } from '@goast/core';
|
|
2
|
-
|
|
3
|
-
import { type TsObject, tsObject } from '../nodes/object.js';
|
|
4
|
-
import { tsProperty } from '../nodes/property.js';
|
|
5
|
-
import { type TsString, tsString } from '../nodes/string.js';
|
|
6
|
-
import { type TsTuple, tsTuple } from '../nodes/tuple.js';
|
|
7
|
-
|
|
8
|
-
export function toTsNode<TBuilder extends SourceBuilder>(object: Record<string, unknown>): TsObject<TBuilder>;
|
|
9
|
-
export function toTsNode<TBuilder extends SourceBuilder>(tuple: unknown[]): TsTuple<TBuilder>;
|
|
10
|
-
export function toTsNode<TBuilder extends SourceBuilder>(string: string): TsString<TBuilder>;
|
|
11
|
-
export function toTsNode<TBuilder extends SourceBuilder>(value: unknown): BasicAppendValue<TBuilder>;
|
|
12
|
-
export function toTsNode<TBuilder extends SourceBuilder>(value: unknown): unknown {
|
|
13
|
-
if (Array.isArray(value)) {
|
|
14
|
-
return tsTuple(value.map((x) => toTsNode<TBuilder>(x)));
|
|
15
|
-
}
|
|
16
|
-
if (typeof value === 'object' && value !== null) {
|
|
17
|
-
const result = tsObject<TBuilder>();
|
|
18
|
-
for (const [k, v] of Object.entries(value)) {
|
|
19
|
-
result.members.push(tsProperty(k, { value: toTsNode(v) }));
|
|
20
|
-
}
|
|
21
|
-
return result;
|
|
22
|
-
}
|
|
23
|
-
if (value === null || value === undefined || typeof value === 'boolean' || typeof value === 'number') {
|
|
24
|
-
return String(value);
|
|
25
|
-
}
|
|
26
|
-
return tsString(String(value));
|
|
27
|
-
}
|
|
@@ -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 writeTsGenericParameters<TBuilder extends SourceBuilder>(
|
|
14
|
-
builder: TBuilder,
|
|
15
|
-
nodes: SingleOrMultiple<Nullable<TsNode<TBuilder> | AppendValue<TBuilder>>>,
|
|
16
|
-
): void {
|
|
17
|
-
const filteredNodes = toArray(nodes).filter(notNullish);
|
|
18
|
-
const multiline = filteredNodes.length > 2;
|
|
19
|
-
builder.parenthesizeIf(
|
|
20
|
-
filteredNodes.length > 0,
|
|
21
|
-
'<>',
|
|
22
|
-
(b) => writeTsNodes(b, filteredNodes, { separator: multiline ? ',\n' : ', ' }),
|
|
23
|
-
{ multiline },
|
|
24
|
-
);
|
|
25
|
-
}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { type AppendValue, isAppendValue, notNullish, type Nullable, type SourceBuilder } from '@goast/core';
|
|
2
|
-
|
|
3
|
-
import type { TsNode } from '../node.js';
|
|
4
|
-
import { tsDoc } from '../nodes/doc.js';
|
|
5
|
-
import { TsMethod } from '../nodes/method.js';
|
|
6
|
-
import { TsProperty } from '../nodes/property.js';
|
|
7
|
-
import { writeTsNode } from './write-ts-nodes.js';
|
|
8
|
-
|
|
9
|
-
export function writeTsMembers<TBuilder extends SourceBuilder>(
|
|
10
|
-
builder: TBuilder,
|
|
11
|
-
members: Nullable<AppendValue<TBuilder> | TsNode<TBuilder>>[],
|
|
12
|
-
options?: { alreadyHasMembers?: boolean },
|
|
13
|
-
): void {
|
|
14
|
-
const filteredMembers = members.filter(notNullish);
|
|
15
|
-
builder.forEach(filteredMembers, (b, m, i) =>
|
|
16
|
-
b.if(
|
|
17
|
-
() =>
|
|
18
|
-
!(m instanceof TsProperty && tsDoc.isEmpty(m.doc) && m.decorators.length === 0) &&
|
|
19
|
-
!(m instanceof TsMethod && !m.body && tsDoc.isEmpty(m.doc) && m.decorators.length === 0) &&
|
|
20
|
-
!isAppendValue(m),
|
|
21
|
-
(b) =>
|
|
22
|
-
b
|
|
23
|
-
.if(i > 0 || !!options?.alreadyHasMembers, (b) => b.ensurePreviousLineEmpty())
|
|
24
|
-
.append((b) => writeTsNode(b, m))
|
|
25
|
-
.if(i < filteredMembers.length - 1, (b) => b.ensurePreviousLineEmpty()),
|
|
26
|
-
(b) => b.append((b) => writeTsNode(b, m)).ensureCurrentLineEmpty(),
|
|
27
|
-
));
|
|
28
|
-
}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
type AppendValue,
|
|
3
|
-
notNullish,
|
|
4
|
-
type Nullable,
|
|
5
|
-
type Separator,
|
|
6
|
-
type SingleOrMultiple,
|
|
7
|
-
type SourceBuilder,
|
|
8
|
-
toArray,
|
|
9
|
-
} from '@goast/core';
|
|
10
|
-
|
|
11
|
-
import { TsNode } from '../node.js';
|
|
12
|
-
|
|
13
|
-
export function writeTsNode<TBuilder extends SourceBuilder>(
|
|
14
|
-
builder: TBuilder,
|
|
15
|
-
node: Nullable<AppendValue<TBuilder> | TsNode<TBuilder>>,
|
|
16
|
-
): void {
|
|
17
|
-
if (node instanceof TsNode) {
|
|
18
|
-
node.write(builder);
|
|
19
|
-
} else {
|
|
20
|
-
builder.append(node);
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
export function writeTsNodes<TBuilder extends SourceBuilder>(
|
|
25
|
-
builder: TBuilder,
|
|
26
|
-
nodes: SingleOrMultiple<Nullable<AppendValue<TBuilder> | TsNode<TBuilder>>>,
|
|
27
|
-
options?: { separator?: Separator<TBuilder, AppendValue<TBuilder> | TsNode<TBuilder>> },
|
|
28
|
-
): void {
|
|
29
|
-
const filteredNodes = toArray(nodes).filter(notNullish);
|
|
30
|
-
if (filteredNodes.length === 1) {
|
|
31
|
-
writeTsNode(builder, filteredNodes[0]);
|
|
32
|
-
} else if (filteredNodes.length > 1) {
|
|
33
|
-
builder.forEach(filteredNodes, writeTsNode, { separator: options?.separator });
|
|
34
|
-
}
|
|
35
|
-
}
|
|
@@ -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,96 +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
|
-
* Whether to include the source OpenAPI document path in the generated documentation comments.
|
|
74
|
-
* @default false
|
|
75
|
-
*/
|
|
76
|
-
includeSourceInDocs: boolean;
|
|
77
|
-
};
|
|
78
|
-
|
|
79
|
-
export const defaultTypeScriptGeneratorConfig: DefaultGenerationProviderConfig<TypeScriptGeneratorConfig> = {
|
|
80
|
-
indent: { type: 'spaces', count: 2 },
|
|
81
|
-
|
|
82
|
-
importModuleTransformer: 'omit-extension',
|
|
83
|
-
|
|
84
|
-
fileNameCasing: 'kebab',
|
|
85
|
-
typeNameCasing: 'pascal',
|
|
86
|
-
functionNameCasing: 'camel',
|
|
87
|
-
propertyNameCasing: 'camel',
|
|
88
|
-
enumValueNameCasing: 'pascal',
|
|
89
|
-
constantNameCasing: { casing: 'snake', wordCasing: 'all-upper' },
|
|
90
|
-
genericParamNameCasing: { casing: 'pascal', prefix: 'T' },
|
|
91
|
-
paramNameCasing: 'camel',
|
|
92
|
-
|
|
93
|
-
preferUnknown: true,
|
|
94
|
-
useSingleQuotes: true,
|
|
95
|
-
includeSourceInDocs: false,
|
|
96
|
-
};
|
package/src/src/file-builder.ts
DELETED
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
type AppendParam,
|
|
3
|
-
type AppendValue,
|
|
4
|
-
isAppendValue,
|
|
5
|
-
type Nullable,
|
|
6
|
-
SourceBuilder,
|
|
7
|
-
writeGeneratedFile,
|
|
8
|
-
} from '@goast/core';
|
|
9
|
-
|
|
10
|
-
import { TsNode } from './ast/node.js';
|
|
11
|
-
import { defaultTypeScriptGeneratorConfig, type TypeScriptGeneratorConfig } from './config.js';
|
|
12
|
-
import type { TypeScriptModelGeneratorOutput } from './generators/index.js';
|
|
13
|
-
import {
|
|
14
|
-
ImportExportCollection,
|
|
15
|
-
type TypeScriptExportOptions,
|
|
16
|
-
type TypeScriptImportOptions,
|
|
17
|
-
} from './import-collection.js';
|
|
18
|
-
|
|
19
|
-
export type TypeScriptAppends<TAdditionalAppends> = TsNode<TypeScriptFileBuilder> | TAdditionalAppends;
|
|
20
|
-
export type TypeScriptAppendParam<TBuilder extends TypeScriptFileBuilder, TAdditionalAppends> = AppendParam<
|
|
21
|
-
TBuilder,
|
|
22
|
-
TypeScriptAppends<TAdditionalAppends>
|
|
23
|
-
>;
|
|
24
|
-
|
|
25
|
-
export function isTypeScriptAppendValue<TBuilder extends TypeScriptFileBuilder = TypeScriptFileBuilder>(
|
|
26
|
-
value: unknown,
|
|
27
|
-
): value is AppendValue<TBuilder> {
|
|
28
|
-
return isAppendValue(value) || value instanceof TsNode;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
export class TypeScriptFileBuilder<TAdditionalAppends = never>
|
|
32
|
-
extends SourceBuilder<TypeScriptAppends<TAdditionalAppends>> {
|
|
33
|
-
public readonly filePath: string | undefined;
|
|
34
|
-
public readonly imports: ImportExportCollection;
|
|
35
|
-
|
|
36
|
-
public override get options(): TypeScriptGeneratorConfig {
|
|
37
|
-
return super.options as TypeScriptGeneratorConfig;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
constructor(filePath?: string, options?: TypeScriptGeneratorConfig) {
|
|
41
|
-
super(options ?? defaultTypeScriptGeneratorConfig);
|
|
42
|
-
this.filePath = filePath;
|
|
43
|
-
this.imports = new ImportExportCollection({
|
|
44
|
-
filePath: filePath,
|
|
45
|
-
importModuleTransformer: this.options.importModuleTransformer,
|
|
46
|
-
useSingleQuotes: this.options.useSingleQuotes,
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
public addImport(name: string, moduleNameOrfilePath: string, options?: TypeScriptImportOptions): this {
|
|
51
|
-
this.imports.addImport(name, moduleNameOrfilePath, options);
|
|
52
|
-
return this;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
public addExport(name: string, filePath: string, options?: TypeScriptExportOptions): this {
|
|
56
|
-
this.imports.addExport(name, filePath, options);
|
|
57
|
-
return this;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
public override clear(): void {
|
|
61
|
-
super.clear();
|
|
62
|
-
this.imports.clear();
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
public override toString(addPadding: boolean = true): string {
|
|
66
|
-
const builder = new SourceBuilder(this.options);
|
|
67
|
-
if (this.filePath?.match(/\.[cm]?js$/)) {
|
|
68
|
-
builder.appendLine('// @ts-check');
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
builder.ensurePreviousLineEmpty();
|
|
72
|
-
this.imports.writeTo(builder);
|
|
73
|
-
|
|
74
|
-
const baseString = super.toString();
|
|
75
|
-
if (baseString && addPadding) {
|
|
76
|
-
builder.ensurePreviousLineEmpty();
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
builder.append(baseString);
|
|
80
|
-
|
|
81
|
-
if (addPadding) {
|
|
82
|
-
builder.ensureCurrentLineEmpty();
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
return builder.toString();
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
protected override appendSingle(value: TypeScriptAppendParam<this, TAdditionalAppends>) {
|
|
89
|
-
super.appendSingle(value);
|
|
90
|
-
if (value instanceof TsNode) {
|
|
91
|
-
value.write(this);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
public appendModelUsage(type: TypeScriptModelGeneratorOutput, options?: TypeScriptImportOptions): this {
|
|
96
|
-
this.append(options?.type === 'js-doc' ? type.component.replace(/\/\*\*.*\*\/\s*/gs, '') : type.component);
|
|
97
|
-
for (const i of type.imports) {
|
|
98
|
-
this.addImport(i.name, i.modulePath, { ...i, ...options });
|
|
99
|
-
}
|
|
100
|
-
return this;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
public writeToFile(filePath?: string): void {
|
|
104
|
-
if (!filePath) filePath = this.filePath;
|
|
105
|
-
if (!filePath) throw new Error('File path is required');
|
|
106
|
-
writeGeneratedFile(this.options, filePath, this.toString());
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
public static generate(options: {
|
|
110
|
-
filePath: string;
|
|
111
|
-
logName?: Nullable<string>;
|
|
112
|
-
options?: TypeScriptGeneratorConfig;
|
|
113
|
-
generator: (builder: TypeScriptFileBuilder) => void;
|
|
114
|
-
}): void {
|
|
115
|
-
TypeScriptFileBuilder.tryGenerate(options);
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
public static tryGenerate({
|
|
119
|
-
filePath,
|
|
120
|
-
generator,
|
|
121
|
-
options,
|
|
122
|
-
logName,
|
|
123
|
-
}: {
|
|
124
|
-
filePath: Nullable<string>;
|
|
125
|
-
logName?: Nullable<string>;
|
|
126
|
-
options?: TypeScriptGeneratorConfig;
|
|
127
|
-
generator: (builder: TypeScriptFileBuilder) => void;
|
|
128
|
-
}) {
|
|
129
|
-
if (!filePath) return;
|
|
130
|
-
if (logName) {
|
|
131
|
-
console.log(`Generating ${logName} to ${filePath}...`);
|
|
132
|
-
}
|
|
133
|
-
const builder = new TypeScriptFileBuilder(filePath, options);
|
|
134
|
-
generator(builder);
|
|
135
|
-
builder.writeToFile();
|
|
136
|
-
}
|
|
137
|
-
}
|
|
@@ -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';
|