@goast/typescript 0.5.3 → 0.6.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.
Files changed (97) hide show
  1. package/LICENSE +21 -21
  2. package/esm/src/file-builder.d.ts.map +1 -1
  3. package/esm/src/file-builder.js +2 -5
  4. package/esm/src/generators/models/model-generator.d.ts.map +1 -1
  5. package/esm/src/generators/models/model-generator.js +6 -2
  6. package/esm/src/generators/services/k6-clients/k6-client-generator.d.ts.map +1 -1
  7. package/esm/src/generators/services/k6-clients/k6-client-generator.js +2 -1
  8. package/package.json +3 -3
  9. package/script/src/file-builder.d.ts.map +1 -1
  10. package/script/src/file-builder.js +1 -5
  11. package/script/src/generators/models/model-generator.d.ts.map +1 -1
  12. package/script/src/generators/models/model-generator.js +5 -1
  13. package/script/src/generators/services/k6-clients/k6-client-generator.d.ts.map +1 -1
  14. package/script/src/generators/services/k6-clients/k6-client-generator.js +2 -1
  15. package/src/mod.ts +0 -7
  16. package/src/src/assets.ts +0 -9
  17. package/src/src/ast/_index.ts +0 -54
  18. package/src/src/ast/common.ts +0 -1
  19. package/src/src/ast/index.ts +0 -1
  20. package/src/src/ast/node.ts +0 -10
  21. package/src/src/ast/nodes/argument.ts +0 -40
  22. package/src/src/ast/nodes/array-type.ts +0 -49
  23. package/src/src/ast/nodes/arrow-function.ts +0 -91
  24. package/src/src/ast/nodes/call.ts +0 -55
  25. package/src/src/ast/nodes/class.ts +0 -133
  26. package/src/src/ast/nodes/constructor-parameter.ts +0 -70
  27. package/src/src/ast/nodes/constructor.ts +0 -77
  28. package/src/src/ast/nodes/decorator.ts +0 -76
  29. package/src/src/ast/nodes/doc-tag.ts +0 -291
  30. package/src/src/ast/nodes/doc.ts +0 -102
  31. package/src/src/ast/nodes/enum-value.ts +0 -72
  32. package/src/src/ast/nodes/enum.ts +0 -77
  33. package/src/src/ast/nodes/export.ts +0 -54
  34. package/src/src/ast/nodes/function-type.ts +0 -60
  35. package/src/src/ast/nodes/function.ts +0 -107
  36. package/src/src/ast/nodes/generic-parameter.ts +0 -71
  37. package/src/src/ast/nodes/indexer.ts +0 -60
  38. package/src/src/ast/nodes/interface.ts +0 -117
  39. package/src/src/ast/nodes/intersection-type.ts +0 -67
  40. package/src/src/ast/nodes/lookup-type.ts +0 -53
  41. package/src/src/ast/nodes/method.ts +0 -138
  42. package/src/src/ast/nodes/object-type.ts +0 -52
  43. package/src/src/ast/nodes/object.ts +0 -48
  44. package/src/src/ast/nodes/parameter.ts +0 -85
  45. package/src/src/ast/nodes/property-accessor.ts +0 -173
  46. package/src/src/ast/nodes/property.ts +0 -192
  47. package/src/src/ast/nodes/reference.ts +0 -194
  48. package/src/src/ast/nodes/string.ts +0 -49
  49. package/src/src/ast/nodes/tuple.ts +0 -53
  50. package/src/src/ast/nodes/type-alias.ts +0 -75
  51. package/src/src/ast/nodes/typeof.ts +0 -42
  52. package/src/src/ast/nodes/types.ts +0 -40
  53. package/src/src/ast/nodes/union-type.ts +0 -62
  54. package/src/src/ast/nodes/variable.ts +0 -73
  55. package/src/src/ast/references/angular.ts +0 -24
  56. package/src/src/ast/references/easy-network-stub.ts +0 -21
  57. package/src/src/ast/references/index.ts +0 -5
  58. package/src/src/ast/references/k6.ts +0 -8
  59. package/src/src/ast/references/rxjs.ts +0 -7
  60. package/src/src/ast/references/typescript.ts +0 -35
  61. package/src/src/ast/utils/get-type-script-builder-options.ts +0 -19
  62. package/src/src/ast/utils/to-ts-node.ts +0 -27
  63. package/src/src/ast/utils/write-ts-generic-parameters.ts +0 -25
  64. package/src/src/ast/utils/write-ts-members.ts +0 -28
  65. package/src/src/ast/utils/write-ts-nodes.ts +0 -35
  66. package/src/src/ast/utils/write-ts-parameters.ts +0 -25
  67. package/src/src/common-results.ts +0 -26
  68. package/src/src/config.ts +0 -89
  69. package/src/src/file-builder.ts +0 -136
  70. package/src/src/generators/file-generator.ts +0 -15
  71. package/src/src/generators/index.ts +0 -6
  72. package/src/src/generators/models/index.ts +0 -3
  73. package/src/src/generators/models/model-generator.ts +0 -469
  74. package/src/src/generators/models/models-generator.ts +0 -108
  75. package/src/src/generators/models/models.ts +0 -121
  76. package/src/src/generators/services/angular-services/angular-service-generator.ts +0 -406
  77. package/src/src/generators/services/angular-services/angular-services-generator.ts +0 -295
  78. package/src/src/generators/services/angular-services/index.ts +0 -3
  79. package/src/src/generators/services/angular-services/models.ts +0 -277
  80. package/src/src/generators/services/angular-services/refs.ts +0 -54
  81. package/src/src/generators/services/easy-network-stub/easy-network-stub-generator.ts +0 -242
  82. package/src/src/generators/services/easy-network-stub/easy-network-stubs-generator.ts +0 -211
  83. package/src/src/generators/services/easy-network-stub/index.ts +0 -3
  84. package/src/src/generators/services/easy-network-stub/models.ts +0 -124
  85. package/src/src/generators/services/easy-network-stub/refs.ts +0 -45
  86. package/src/src/generators/services/fetch-clients/fetch-client-generator.ts +0 -275
  87. package/src/src/generators/services/fetch-clients/fetch-clients-generator.ts +0 -163
  88. package/src/src/generators/services/fetch-clients/index.ts +0 -3
  89. package/src/src/generators/services/fetch-clients/models.ts +0 -130
  90. package/src/src/generators/services/fetch-clients/refs.ts +0 -21
  91. package/src/src/generators/services/k6-clients/index.ts +0 -3
  92. package/src/src/generators/services/k6-clients/k6-client-generator.ts +0 -465
  93. package/src/src/generators/services/k6-clients/k6-clients-generator.ts +0 -171
  94. package/src/src/generators/services/k6-clients/models.ts +0 -247
  95. package/src/src/generators/services/k6-clients/refs.ts +0 -16
  96. package/src/src/import-collection.ts +0 -236
  97. package/src/src/utils.ts +0 -72
@@ -1,75 +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 { writeTsNode, writeTsNodes } from '../utils/write-ts-nodes.js';
12
- import type { TsDoc } from './doc.js';
13
- import { type TsGenericParameter, tsGenericParameter } from './generic-parameter.js';
14
- import type { TsType } from './types.js';
15
-
16
- type Injects = never;
17
-
18
- type Options<TBuilder extends SourceBuilder, TInjects extends string = never> = AstNodeOptions<
19
- typeof TsNode<TBuilder, TInjects | Injects>,
20
- {
21
- name: string;
22
- doc?: Nullable<TsDoc<TBuilder>>;
23
- generics?: Nullable<Nullable<TsGenericParameter<TBuilder> | BasicAppendValue<TBuilder>>[]>;
24
- type: TsType<TBuilder>;
25
- export?: Nullable<boolean>;
26
- }
27
- >;
28
-
29
- export class TsTypeAlias<TBuilder extends SourceBuilder, TInjects extends string = never> extends TsNode<
30
- TBuilder,
31
- TInjects | Injects
32
- > {
33
- public name: string;
34
- public doc: TsDoc<TBuilder> | null;
35
- public generics: (TsGenericParameter<TBuilder> | BasicAppendValue<TBuilder>)[];
36
- public type: TsType<TBuilder>;
37
- public export: boolean;
38
-
39
- constructor(options: Options<TBuilder, TInjects>) {
40
- super(options);
41
- this.name = options.name;
42
- this.doc = options.doc ?? null;
43
- this.generics = options.generics?.filter(notNullish) ?? [];
44
- this.type = options.type;
45
- this.export = options.export ?? false;
46
- }
47
-
48
- protected override onWrite(builder: TBuilder): void {
49
- if (this.doc) writeTsNode(builder, this.doc);
50
- if (this.export) builder.append('export ');
51
-
52
- builder.append('type ');
53
- builder.append(this.name);
54
- tsGenericParameter.write(builder, this.generics);
55
-
56
- builder.append(' = ');
57
- builder.indent((b) => {
58
- writeTsNode(b, this.type);
59
- });
60
-
61
- builder.append(';');
62
-
63
- builder.appendLine();
64
- }
65
- }
66
-
67
- const createTypeAlias = <TBuilder extends SourceBuilder>(
68
- name: Options<TBuilder>['name'],
69
- type: Options<TBuilder>['type'],
70
- options?: Prettify<Omit<Options<TBuilder>, 'name' | 'type'>>,
71
- ): TsTypeAlias<TBuilder> => new TsTypeAlias<TBuilder>({ ...options, name, type });
72
-
73
- export const tsTypeAlias: typeof createTypeAlias & { write: typeof writeTsNodes } = Object.assign(createTypeAlias, {
74
- write: writeTsNodes,
75
- });
@@ -1,42 +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 { TsValue } from './types.js';
6
-
7
- type Injects = 'value';
8
-
9
- type Options<TBuilder extends SourceBuilder, TInjects extends string = never> = AstNodeOptions<
10
- typeof TsNode<TBuilder, TInjects | Injects>,
11
- {
12
- value: TsValue<TBuilder>;
13
- }
14
- >;
15
-
16
- export class TsTypeof<TBuilder extends SourceBuilder, TInjects extends string = never> extends TsNode<
17
- TBuilder,
18
- TInjects | Injects
19
- > {
20
- public value: TsValue<TBuilder>;
21
-
22
- constructor(options: Options<TBuilder, TInjects>) {
23
- super(options);
24
- this.value = options.value;
25
- }
26
-
27
- protected override onWrite(builder: TBuilder): void {
28
- builder.append('typeof ');
29
- builder.append(this.inject.beforeValue);
30
- writeTsNode(builder, this.value);
31
- builder.append(this.inject.afterValue);
32
- }
33
- }
34
-
35
- export const createTypeof = <TBuilder extends SourceBuilder>(
36
- value: Options<TBuilder>['value'],
37
- options?: Omit<Options<TBuilder>, 'value'>,
38
- ): TsTypeof<TBuilder> => new TsTypeof<TBuilder>({ ...options, value });
39
-
40
- export const tsTypeof: typeof createTypeof & { write: typeof writeTsNodes } = Object.assign(createTypeof, {
41
- write: writeTsNodes,
42
- });
@@ -1,40 +0,0 @@
1
- import type { BasicAppendValue, SourceBuilder } from '@goast/core';
2
- import type { TsArrayType } from './array-type.js';
3
- import type { TsArrowFunction } from './arrow-function.js';
4
- import type { TsCall } from './call.js';
5
- import type { TsClass } from './class.js';
6
- import type { TsFunctionType } from './function-type.js';
7
- import type { TsFunction } from './function.js';
8
- import type { TsIntersectionType } from './intersection-type.js';
9
- import type { TsLookupType } from './lookup-type.js';
10
- import type { TsObjectType } from './object-type.js';
11
- import type { TsObject } from './object.js';
12
- import type { TsReference } from './reference.js';
13
- import type { TsString } from './string.js';
14
- import type { TsTuple } from './tuple.js';
15
- import type { TsTypeof } from './typeof.js';
16
- import type { TsUnionType } from './union-type.js';
17
-
18
- export type TsType<TBuilder extends SourceBuilder> =
19
- | BasicAppendValue<TBuilder>
20
- | TsIntersectionType<TBuilder>
21
- | TsUnionType<TBuilder>
22
- | TsArrayType<TBuilder>
23
- | TsTuple<TBuilder>
24
- | TsFunctionType<TBuilder>
25
- | TsObjectType<TBuilder>
26
- | TsString<TBuilder>
27
- | TsLookupType<TBuilder>
28
- | TsTypeof<TBuilder>
29
- | TsReference<TBuilder>;
30
-
31
- export type TsValue<TBuilder extends SourceBuilder> =
32
- | BasicAppendValue<TBuilder>
33
- | TsObject<TBuilder>
34
- | TsTuple<TBuilder>
35
- | TsString<TBuilder>
36
- | TsArrowFunction<TBuilder>
37
- | TsFunction<TBuilder>
38
- | TsClass<TBuilder>
39
- | TsCall<TBuilder>
40
- | TsReference<TBuilder>;
@@ -1,62 +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 TsUnionType<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 ? ['never'] : resolveNestedUnionTypes(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 createUnionType = <TBuilder extends SourceBuilder>(
44
- types: Options<TBuilder>['types'],
45
- options?: Prettify<Omit<Options<TBuilder>, 'types'>>,
46
- ): TsUnionType<TBuilder> => new TsUnionType<TBuilder>({ ...options, types });
47
-
48
- export const tsUnionType: typeof createUnionType & { write: typeof writeTsNodes } = Object.assign(createUnionType, {
49
- write: writeTsNodes,
50
- });
51
-
52
- function resolveNestedUnionTypes<TBuilder extends SourceBuilder>(node: TsUnionType<TBuilder>): TsType<TBuilder>[] {
53
- const types: TsType<TBuilder>[] = [];
54
- for (const type of node.types) {
55
- if (type instanceof TsUnionType) {
56
- types.push(...resolveNestedUnionTypes(type));
57
- } else {
58
- types.push(type);
59
- }
60
- }
61
- return types;
62
- }
@@ -1,73 +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 { TsDoc } from './doc.js';
6
- import type { TsType, TsValue } from './types.js';
7
-
8
- type Injects = never;
9
-
10
- type Options<TBuilder extends SourceBuilder, TInjects extends string = never> = AstNodeOptions<
11
- typeof TsNode<TBuilder, TInjects | Injects>,
12
- {
13
- name: string;
14
- doc?: Nullable<TsDoc<TBuilder>>;
15
- type?: Nullable<TsType<TBuilder>>;
16
- value?: Nullable<TsValue<TBuilder>>;
17
- export?: Nullable<boolean>;
18
- readonly?: Nullable<boolean>;
19
- }
20
- >;
21
-
22
- export class TsVariable<TBuilder extends SourceBuilder, TInjects extends string = never> extends TsNode<
23
- TBuilder,
24
- TInjects | Injects
25
- > {
26
- public name: string;
27
- public doc: TsDoc<TBuilder> | null;
28
- public type: TsType<TBuilder> | null;
29
- public value: TsValue<TBuilder> | null;
30
- public export: boolean;
31
- public readonly: boolean;
32
-
33
- constructor(options: Options<TBuilder, TInjects>) {
34
- super(options);
35
- this.name = options.name;
36
- this.doc = options.doc ?? null;
37
- this.type = options.type ?? null;
38
- this.value = options.value ?? null;
39
- this.export = options.export ?? false;
40
- this.readonly = options.readonly ?? false;
41
- }
42
-
43
- protected override onWrite(builder: TBuilder): void {
44
- if (this.doc) writeTsNode(builder, this.doc);
45
- if (this.export) builder.append('export ');
46
-
47
- builder.append(this.readonly ? 'const ' : 'let ');
48
- builder.append(this.name);
49
-
50
- if (this.type) {
51
- builder.append(': ');
52
- writeTsNode(builder, this.type);
53
- }
54
-
55
- if (this.value) {
56
- builder.append(' = ');
57
- writeTsNode(builder, this.value);
58
- }
59
-
60
- builder.append(';');
61
-
62
- builder.appendLine();
63
- }
64
- }
65
-
66
- const createVariable = <TBuilder extends SourceBuilder>(
67
- name: Options<TBuilder>['name'],
68
- options?: Prettify<Omit<Options<TBuilder>, 'name'>>,
69
- ): TsVariable<TBuilder> => new TsVariable<TBuilder>({ ...options, name });
70
-
71
- export const tsVariable: typeof createVariable & { write: typeof writeTsNodes } = Object.assign(createVariable, {
72
- write: writeTsNodes,
73
- });
@@ -1,24 +0,0 @@
1
- import {
2
- type TsGenericModuleReferenceFactory,
3
- type TsModuleReferenceFactory,
4
- tsReference,
5
- } from '../nodes/reference.js';
6
-
7
- // @angular/core
8
- export const inject: TsModuleReferenceFactory = tsReference.factory('inject', '@angular/core');
9
- export const injectable: TsModuleReferenceFactory = tsReference.factory('Injectable', '@angular/core');
10
- export const provider: TsModuleReferenceFactory = tsReference.factory('Provider', '@angular/core', {
11
- importType: 'type-import',
12
- });
13
-
14
- // @angular/common/http
15
- export const httpClient: TsModuleReferenceFactory = tsReference.factory('HttpClient', '@angular/common/http');
16
- export const httpContext: TsModuleReferenceFactory = tsReference.factory('HttpContext', '@angular/common/http');
17
- export const httpResponse: TsGenericModuleReferenceFactory<1> = tsReference.genericFactory<1>(
18
- 'HttpResponse',
19
- '@angular/common/http',
20
- );
21
- export const httpErrorResponse: TsModuleReferenceFactory = tsReference.factory(
22
- 'HttpErrorResponse',
23
- '@angular/common/http',
24
- );
@@ -1,21 +0,0 @@
1
- import {
2
- type TsGenericModuleReferenceFactory,
3
- type TsModuleReferenceFactory,
4
- tsReference,
5
- } from '../nodes/reference.js';
6
-
7
- export const easyNetworkStub: TsModuleReferenceFactory = tsReference.factory('EasyNetworkStub', 'easy-network-stub');
8
- export const httpMethod: TsModuleReferenceFactory = tsReference.factory('HttpMethod', 'easy-network-stub', {
9
- importType: 'type-import',
10
- });
11
- export const routeResponseCallback: TsGenericModuleReferenceFactory<2> = tsReference.genericFactory<2>(
12
- 'RouteResponseCallback',
13
- 'easy-network-stub',
14
- {
15
- importType: 'type-import',
16
- },
17
- );
18
- export const errorResponse: TsGenericModuleReferenceFactory<1> = tsReference.genericFactory<1>(
19
- 'ErrorResponse',
20
- 'easy-network-stub',
21
- );
@@ -1,5 +0,0 @@
1
- export * as angular from './angular.js';
2
- export * as easyNetworkStub from './easy-network-stub.js';
3
- export * as k6 from './k6.js';
4
- export * as rxjs from './rxjs.js';
5
- export * from './typescript.js';
@@ -1,8 +0,0 @@
1
- import { type TsModuleReferenceFactory, tsReference } from '../nodes/reference.js';
2
-
3
- // k6
4
- export const jsonValue: TsModuleReferenceFactory = tsReference.factory('JSONValue', 'k6');
5
-
6
- // h6/http
7
- export const response: TsModuleReferenceFactory = tsReference.factory('Response', 'k6/http');
8
- export const params: TsModuleReferenceFactory = tsReference.factory('Params', 'k6/http');
@@ -1,7 +0,0 @@
1
- import { type TsModuleReferenceFactory, tsReference } from '../nodes/reference.js';
2
-
3
- export const observable: TsModuleReferenceFactory = tsReference.factory('Observable', 'rxjs');
4
- export const firstValueFrom: TsModuleReferenceFactory = tsReference.factory('firstValueFrom', 'rxjs');
5
- export const filter: TsModuleReferenceFactory = tsReference.factory('filter', 'rxjs');
6
- export const map: TsModuleReferenceFactory = tsReference.factory('map', 'rxjs');
7
- export const take: TsModuleReferenceFactory = tsReference.factory('take', 'rxjs');
@@ -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
- };