@goast/typescript 0.5.2 → 0.5.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.
Files changed (90) hide show
  1. package/LICENSE +21 -21
  2. package/assets/client/k6/request-builder.ts +362 -362
  3. package/esm/src/generators/services/fetch-clients/fetch-client-generator.d.ts.map +1 -1
  4. package/esm/src/generators/services/fetch-clients/fetch-client-generator.js +6 -2
  5. package/package.json +1 -1
  6. package/script/src/generators/services/fetch-clients/fetch-client-generator.d.ts.map +1 -1
  7. package/script/src/generators/services/fetch-clients/fetch-client-generator.js +6 -2
  8. package/src/mod.ts +0 -7
  9. package/src/src/assets.ts +0 -9
  10. package/src/src/ast/_index.ts +0 -54
  11. package/src/src/ast/common.ts +0 -1
  12. package/src/src/ast/index.ts +0 -1
  13. package/src/src/ast/node.ts +0 -10
  14. package/src/src/ast/nodes/argument.ts +0 -40
  15. package/src/src/ast/nodes/array-type.ts +0 -49
  16. package/src/src/ast/nodes/arrow-function.ts +0 -91
  17. package/src/src/ast/nodes/call.ts +0 -55
  18. package/src/src/ast/nodes/class.ts +0 -133
  19. package/src/src/ast/nodes/constructor-parameter.ts +0 -70
  20. package/src/src/ast/nodes/constructor.ts +0 -77
  21. package/src/src/ast/nodes/decorator.ts +0 -76
  22. package/src/src/ast/nodes/doc-tag.ts +0 -291
  23. package/src/src/ast/nodes/doc.ts +0 -102
  24. package/src/src/ast/nodes/enum-value.ts +0 -72
  25. package/src/src/ast/nodes/enum.ts +0 -77
  26. package/src/src/ast/nodes/export.ts +0 -54
  27. package/src/src/ast/nodes/function-type.ts +0 -60
  28. package/src/src/ast/nodes/function.ts +0 -107
  29. package/src/src/ast/nodes/generic-parameter.ts +0 -71
  30. package/src/src/ast/nodes/indexer.ts +0 -60
  31. package/src/src/ast/nodes/interface.ts +0 -117
  32. package/src/src/ast/nodes/intersection-type.ts +0 -67
  33. package/src/src/ast/nodes/lookup-type.ts +0 -53
  34. package/src/src/ast/nodes/method.ts +0 -138
  35. package/src/src/ast/nodes/object-type.ts +0 -52
  36. package/src/src/ast/nodes/object.ts +0 -48
  37. package/src/src/ast/nodes/parameter.ts +0 -85
  38. package/src/src/ast/nodes/property-accessor.ts +0 -173
  39. package/src/src/ast/nodes/property.ts +0 -192
  40. package/src/src/ast/nodes/reference.ts +0 -194
  41. package/src/src/ast/nodes/string.ts +0 -49
  42. package/src/src/ast/nodes/tuple.ts +0 -53
  43. package/src/src/ast/nodes/type-alias.ts +0 -75
  44. package/src/src/ast/nodes/typeof.ts +0 -42
  45. package/src/src/ast/nodes/types.ts +0 -40
  46. package/src/src/ast/nodes/union-type.ts +0 -62
  47. package/src/src/ast/nodes/variable.ts +0 -73
  48. package/src/src/ast/references/angular.ts +0 -24
  49. package/src/src/ast/references/easy-network-stub.ts +0 -21
  50. package/src/src/ast/references/index.ts +0 -5
  51. package/src/src/ast/references/k6.ts +0 -8
  52. package/src/src/ast/references/rxjs.ts +0 -7
  53. package/src/src/ast/references/typescript.ts +0 -35
  54. package/src/src/ast/utils/get-type-script-builder-options.ts +0 -19
  55. package/src/src/ast/utils/to-ts-node.ts +0 -27
  56. package/src/src/ast/utils/write-ts-generic-parameters.ts +0 -25
  57. package/src/src/ast/utils/write-ts-members.ts +0 -28
  58. package/src/src/ast/utils/write-ts-nodes.ts +0 -35
  59. package/src/src/ast/utils/write-ts-parameters.ts +0 -25
  60. package/src/src/common-results.ts +0 -26
  61. package/src/src/config.ts +0 -89
  62. package/src/src/file-builder.ts +0 -136
  63. package/src/src/generators/file-generator.ts +0 -15
  64. package/src/src/generators/index.ts +0 -6
  65. package/src/src/generators/models/index.ts +0 -3
  66. package/src/src/generators/models/model-generator.ts +0 -469
  67. package/src/src/generators/models/models-generator.ts +0 -108
  68. package/src/src/generators/models/models.ts +0 -121
  69. package/src/src/generators/services/angular-services/angular-service-generator.ts +0 -406
  70. package/src/src/generators/services/angular-services/angular-services-generator.ts +0 -295
  71. package/src/src/generators/services/angular-services/index.ts +0 -3
  72. package/src/src/generators/services/angular-services/models.ts +0 -277
  73. package/src/src/generators/services/angular-services/refs.ts +0 -54
  74. package/src/src/generators/services/easy-network-stub/easy-network-stub-generator.ts +0 -242
  75. package/src/src/generators/services/easy-network-stub/easy-network-stubs-generator.ts +0 -211
  76. package/src/src/generators/services/easy-network-stub/index.ts +0 -3
  77. package/src/src/generators/services/easy-network-stub/models.ts +0 -124
  78. package/src/src/generators/services/easy-network-stub/refs.ts +0 -45
  79. package/src/src/generators/services/fetch-clients/fetch-client-generator.ts +0 -267
  80. package/src/src/generators/services/fetch-clients/fetch-clients-generator.ts +0 -163
  81. package/src/src/generators/services/fetch-clients/index.ts +0 -3
  82. package/src/src/generators/services/fetch-clients/models.ts +0 -130
  83. package/src/src/generators/services/fetch-clients/refs.ts +0 -21
  84. package/src/src/generators/services/k6-clients/index.ts +0 -3
  85. package/src/src/generators/services/k6-clients/k6-client-generator.ts +0 -465
  86. package/src/src/generators/services/k6-clients/k6-clients-generator.ts +0 -171
  87. package/src/src/generators/services/k6-clients/models.ts +0 -247
  88. package/src/src/generators/services/k6-clients/refs.ts +0 -16
  89. package/src/src/import-collection.ts +0 -236
  90. package/src/src/utils.ts +0 -72
@@ -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,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
- };
@@ -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';
@@ -1,3 +0,0 @@
1
- export * from './model-generator.js';
2
- export * from './models-generator.js';
3
- export * from './models.js';