@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,117 +0,0 @@
1
- import {
2
- type AstNodeOptions,
3
- type BasicAppendValue,
4
- notNullish,
5
- type Nullable,
6
- type Prettify,
7
- type SourceBuilder,
8
- } from '@goast/core';
9
-
10
- import { TsNode } from '../node.js';
11
- import { writeTsMembers } from '../utils/write-ts-members.js';
12
- import { writeTsNodes } from '../utils/write-ts-nodes.js';
13
- import { type TsDecorator, tsDecorator } from './decorator.js';
14
- import { type TsDoc, tsDoc } from './doc.js';
15
- import { type TsGenericParameter, tsGenericParameter } from './generic-parameter.js';
16
- import type { TsIndexer } from './indexer.js';
17
- import type { TsMethod } from './method.js';
18
- import type { TsProperty } from './property.js';
19
- import type { TsReference } from './reference.js';
20
-
21
- type Injects = 'doc' | 'decorators' | 'modifiers' | 'name' | 'generics' | 'extends' | 'body' | 'members';
22
-
23
- type Options<TBuilder extends SourceBuilder, TInjects extends string = never> = AstNodeOptions<
24
- typeof TsNode<TBuilder, TInjects | Injects>,
25
- {
26
- doc?: Nullable<TsDoc<TBuilder>>;
27
- decorators?: Nullable<Nullable<TsDecorator<TBuilder>>[]>;
28
- export?: Nullable<boolean>;
29
- name: string;
30
- generics?: Nullable<Nullable<TsGenericParameter<TBuilder> | BasicAppendValue<TBuilder>>[]>;
31
- extends?: Nullable<Nullable<TsReference<TBuilder> | BasicAppendValue<TBuilder>>[]>;
32
- members?: Nullable<Nullable<Member<TBuilder>>[]>;
33
- }
34
- >;
35
-
36
- type Member<TBuilder extends SourceBuilder> =
37
- | TsIndexer<TBuilder>
38
- | TsProperty<TBuilder>
39
- | TsMethod<TBuilder>
40
- | BasicAppendValue<TBuilder>;
41
-
42
- export class TsInterface<TBuilder extends SourceBuilder, TInjects extends string = never> extends TsNode<
43
- TBuilder,
44
- TInjects | Injects
45
- > {
46
- public doc: TsDoc<TBuilder> | null;
47
- public decorators: TsDecorator<TBuilder>[];
48
- public export: boolean;
49
- public name: string;
50
- public generics: (TsGenericParameter<TBuilder> | BasicAppendValue<TBuilder>)[];
51
- public extends: (TsReference<TBuilder> | BasicAppendValue<TBuilder>)[];
52
- public members: Member<TBuilder>[];
53
-
54
- constructor(options: Options<TBuilder, TInjects>) {
55
- super(options);
56
- this.doc = options.doc ?? null;
57
- this.decorators = options.decorators?.filter(notNullish) ?? [];
58
- this.export = options.export ?? false;
59
- this.name = options.name;
60
- this.generics = options.generics?.filter(notNullish) ?? [];
61
- this.extends = options.extends?.filter(notNullish) ?? [];
62
- this.members = options.members?.filter(notNullish) ?? [];
63
- }
64
-
65
- protected override onWrite(builder: TBuilder): void {
66
- builder.append(this.inject.beforeDoc);
67
- tsDoc.write(builder, tsDoc.get(this.doc, { generics: this.generics }));
68
- builder.append(this.inject.afterDoc);
69
-
70
- builder.append(this.inject.beforeDecorators);
71
- tsDecorator.write(builder, this.decorators, { multiline: true });
72
- builder.append(this.inject.afterDecorators);
73
-
74
- builder.append(this.inject.beforeModifiers);
75
- if (this.export) builder.append('export ');
76
- builder.append(this.inject.afterModifiers);
77
-
78
- builder.append('interface ');
79
- builder.append(this.inject.beforeName, this.name, this.inject.afterName);
80
-
81
- builder.append(this.inject.beforeGenerics);
82
- tsGenericParameter.write(builder, this.generics);
83
- builder.append(this.inject.afterGenerics);
84
-
85
- if (this.extends.length > 0) {
86
- builder.append(' extends ');
87
- builder.append(this.inject.beforeExtends);
88
- writeTsNodes(builder, this.extends, { separator: ', ' });
89
- builder.append(this.inject.afterExtends);
90
- }
91
-
92
- builder.append(' ');
93
-
94
- builder.append(this.inject.beforeBody);
95
- builder.parenthesize(
96
- '{}',
97
- (b) => {
98
- b.append(this.inject.beforeMembers);
99
- writeTsMembers(b, this.members);
100
- b.append(this.inject.afterMembers);
101
- },
102
- { multiline: this.members.length > 0 },
103
- );
104
- builder.append(this.inject.afterBody);
105
-
106
- builder.appendLine();
107
- }
108
- }
109
-
110
- const createInterface = <TBuilder extends SourceBuilder>(
111
- name: Options<TBuilder>['name'],
112
- options?: Prettify<Omit<Options<TBuilder>, 'name'>>,
113
- ): TsInterface<TBuilder> => new TsInterface<TBuilder>({ ...options, name });
114
-
115
- export const tsInterface: typeof createInterface & { write: typeof writeTsNodes } = Object.assign(createInterface, {
116
- write: writeTsNodes,
117
- });
@@ -1,67 +0,0 @@
1
- import { type AstNodeOptions, notNullish, type Nullable, type Prettify, type SourceBuilder } from '@goast/core';
2
-
3
- import { TsNode } from '../node.js';
4
- import { writeTsNode, writeTsNodes } from '../utils/write-ts-nodes.js';
5
- import type { TsType } from './types.js';
6
-
7
- type Injects = never;
8
-
9
- type Options<TBuilder extends SourceBuilder, TInjects extends string = never> = AstNodeOptions<
10
- typeof TsNode<TBuilder, TInjects | Injects>,
11
- {
12
- types: Nullable<TsType<TBuilder>>[];
13
- }
14
- >;
15
-
16
- export class TsIntersectionType<TBuilder extends SourceBuilder, TInjects extends string = never> extends TsNode<
17
- TBuilder,
18
- TInjects | Injects
19
- > {
20
- public types: TsType<TBuilder>[];
21
-
22
- constructor(options: Options<TBuilder, TInjects>) {
23
- super(options);
24
- this.types = options.types.filter(notNullish);
25
- }
26
-
27
- protected override onWrite(builder: TBuilder): void {
28
- const types = this.types.length === 0 ? ['unknown'] : resolveNestedIntersectionTypes(this);
29
- if (types.length === 1) {
30
- writeTsNode(builder, types[0]);
31
- } else {
32
- const multiline = types.length > 3;
33
- if (multiline) {
34
- builder.appendLine().append('& ');
35
- }
36
- builder.forEach(types, (b, t) => b.parenthesize('()', (b) => writeTsNode(b, t)), {
37
- separator: multiline ? '\n& ' : ' & ',
38
- });
39
- }
40
- }
41
- }
42
-
43
- const createIntersectionType = <TBuilder extends SourceBuilder>(
44
- types: Options<TBuilder>['types'],
45
- options?: Prettify<Omit<Options<TBuilder>, 'types'>>,
46
- ): TsIntersectionType<TBuilder> => new TsIntersectionType<TBuilder>({ ...options, types });
47
-
48
- export const tsIntersectionType: typeof createIntersectionType & { write: typeof writeTsNodes } = Object.assign(
49
- createIntersectionType,
50
- {
51
- write: writeTsNodes,
52
- },
53
- );
54
-
55
- function resolveNestedIntersectionTypes<TBuilder extends SourceBuilder>(
56
- node: TsIntersectionType<TBuilder>,
57
- ): TsType<TBuilder>[] {
58
- const types: TsType<TBuilder>[] = [];
59
- for (const type of node.types) {
60
- if (type instanceof TsIntersectionType) {
61
- types.push(...resolveNestedIntersectionTypes(type));
62
- } else {
63
- types.push(type);
64
- }
65
- }
66
- return types;
67
- }
@@ -1,53 +0,0 @@
1
- import type { AstNodeOptions, SourceBuilder } from '@goast/core';
2
-
3
- import { TsNode } from '../node.js';
4
- import { writeTsNode, writeTsNodes } from '../utils/write-ts-nodes.js';
5
- import type { TsType } from './types.js';
6
-
7
- type Injects = 'type' | 'index';
8
-
9
- type Options<TBuilder extends SourceBuilder, TInjects extends string = never> = AstNodeOptions<
10
- typeof TsNode<TBuilder, TInjects | Injects>,
11
- {
12
- type: TsType<TBuilder>;
13
- index: TsType<TBuilder>;
14
- }
15
- >;
16
-
17
- export class TsLookupType<TBuilder extends SourceBuilder, TInjects extends string = never> extends TsNode<
18
- TBuilder,
19
- TInjects | Injects
20
- > {
21
- public type: TsType<TBuilder>;
22
- public index: TsType<TBuilder>;
23
-
24
- constructor(options: Options<TBuilder, TInjects>) {
25
- super(options);
26
- this.type = options.type;
27
- this.index = options.index;
28
- }
29
-
30
- protected override onWrite(builder: TBuilder): void {
31
- builder
32
- .parenthesize('()', (b) => {
33
- b.append(this.inject.beforeType);
34
- writeTsNode(b, this.type);
35
- b.append(this.inject.afterType);
36
- })
37
- .parenthesize('[]', (b) => {
38
- b.append(this.inject.beforeIndex);
39
- writeTsNode(b, this.index);
40
- b.append(this.inject.afterIndex);
41
- });
42
- }
43
- }
44
-
45
- const createLookupType = <TBuilder extends SourceBuilder>(
46
- type: Options<TBuilder>['type'],
47
- index: Options<TBuilder>['index'],
48
- options?: Omit<Options<TBuilder>, 'type' | 'index'>,
49
- ): TsLookupType<TBuilder> => new TsLookupType<TBuilder>({ ...options, type, index });
50
-
51
- export const tsLookupType: typeof createLookupType & { write: typeof writeTsNodes } = Object.assign(createLookupType, {
52
- write: writeTsNodes,
53
- });
@@ -1,138 +0,0 @@
1
- import {
2
- type AppendValue,
3
- type AstNodeOptions,
4
- type BasicAppendValue,
5
- notNullish,
6
- type Nullable,
7
- type Prettify,
8
- type SourceBuilder,
9
- } from '@goast/core';
10
-
11
- import type { TsAccessModifier } from '../common.js';
12
- import { TsNode } from '../node.js';
13
- import { writeTsNode, writeTsNodes } from '../utils/write-ts-nodes.js';
14
- import { type TsDecorator, tsDecorator } from './decorator.js';
15
- import { type TsDoc, tsDoc } from './doc.js';
16
- import { type TsGenericParameter, tsGenericParameter } from './generic-parameter.js';
17
- import { TsObject } from './object.js';
18
- import { type TsParameter, tsParameter } from './parameter.js';
19
- import type { TsType } from './types.js';
20
-
21
- type Injects = 'doc' | 'decorators' | 'modifiers' | 'name' | 'generics' | 'params' | 'returnType' | 'body';
22
-
23
- type Options<TBuilder extends SourceBuilder, TInjects extends string = never> = AstNodeOptions<
24
- typeof TsNode<TBuilder, TInjects | Injects>,
25
- {
26
- doc?: Nullable<TsDoc<TBuilder>>;
27
- decorators?: Nullable<Nullable<TsDecorator<TBuilder>>[]>;
28
- accessModifier?: Nullable<TsAccessModifier>;
29
- async?: Nullable<boolean>;
30
- static?: Nullable<boolean>;
31
- abstract?: Nullable<boolean>;
32
- override?: Nullable<boolean>;
33
- name: string;
34
- optional?: Nullable<boolean>;
35
- generics?: Nullable<Nullable<TsGenericParameter<TBuilder> | BasicAppendValue<TBuilder>>[]>;
36
- parameters?: Nullable<Nullable<TsParameter<TBuilder> | BasicAppendValue<TBuilder>>[]>;
37
- returnType?: Nullable<TsType<TBuilder>>;
38
- body?: Nullable<AppendValue<TBuilder>>;
39
- }
40
- >;
41
-
42
- export class TsMethod<TBuilder extends SourceBuilder, TInjects extends string = never> extends TsNode<
43
- TBuilder,
44
- TInjects | Injects
45
- > {
46
- public doc: TsDoc<TBuilder> | null;
47
- public decorators: TsDecorator<TBuilder>[];
48
- public accessModifier: TsAccessModifier | null;
49
- public static: boolean;
50
- public abstract: boolean;
51
- public override: boolean;
52
- public async: boolean;
53
- public name: string;
54
- public optional: boolean;
55
- public generics: (TsGenericParameter<TBuilder> | BasicAppendValue<TBuilder>)[];
56
- public parameters: (TsParameter<TBuilder> | BasicAppendValue<TBuilder>)[];
57
- public returnType: TsType<TBuilder> | null;
58
- public body: AppendValue<TBuilder> | null;
59
-
60
- constructor(options: Options<TBuilder, TInjects>) {
61
- super(options);
62
- this.doc = options.doc ?? null;
63
- this.decorators = options.decorators?.filter(notNullish) ?? [];
64
- this.accessModifier = options.accessModifier ?? null;
65
- this.static = options.static ?? false;
66
- this.abstract = options.abstract ?? false;
67
- this.override = options.override ?? false;
68
- this.async = options.async ?? false;
69
- this.name = options.name;
70
- this.optional = options.optional ?? false;
71
- this.generics = options.generics?.filter(notNullish) ?? [];
72
- this.parameters = options.parameters?.filter(notNullish) ?? [];
73
- this.returnType = options.returnType ?? null;
74
- this.body = options.body ?? null;
75
- }
76
-
77
- protected override onWrite(builder: TBuilder): void {
78
- const isInObjectDeclaration = this.getParentNode(builder) instanceof TsObject;
79
-
80
- builder.append(this.inject.beforeDoc);
81
- tsDoc.write(builder, tsDoc.get(this.doc, { generics: this.generics, parameters: this.parameters }));
82
- builder.append(this.inject.afterDoc);
83
-
84
- builder.append(this.inject.beforeDecorators);
85
- tsDecorator.write(builder, this.decorators, { multiline: true });
86
- builder.append(this.inject.afterDecorators);
87
-
88
- builder.append(this.inject.beforeModifiers);
89
- if (this.accessModifier) builder.append(this.accessModifier, ' ');
90
- if (this.static) builder.append('static ');
91
- if (this.abstract) builder.append('abstract ');
92
- if (this.override) builder.append('override ');
93
- if (this.async) builder.append('async ');
94
- builder.append(this.inject.afterModifiers);
95
-
96
- builder.append(this.inject.beforeName, this.name, this.inject.afterName);
97
- if (this.optional) builder.append('?');
98
-
99
- builder.append(this.inject.beforeGenerics);
100
- tsGenericParameter.write(builder, this.generics);
101
- builder.append(this.inject.afterGenerics);
102
-
103
- builder.append(this.inject.beforeParams);
104
- tsParameter.write(builder, this.parameters);
105
- builder.append(this.inject.afterParams);
106
-
107
- if (this.returnType) {
108
- builder.append(': ');
109
- builder.append(this.inject.beforeReturnType);
110
- writeTsNode(builder, this.returnType);
111
- builder.append(this.inject.afterReturnType);
112
- }
113
-
114
- if (this.body) {
115
- builder.append(' ');
116
- builder.append(this.inject.beforeBody);
117
- builder.parenthesize('{}', this.body, { multiline: !!this.body });
118
- builder.append(this.inject.afterBody);
119
- } else if (!isInObjectDeclaration) {
120
- builder.append(';');
121
- }
122
-
123
- if (isInObjectDeclaration) {
124
- builder.append(',');
125
- }
126
-
127
- builder.appendLine();
128
- }
129
- }
130
-
131
- export const createMethod = <TBuilder extends SourceBuilder>(
132
- name: Options<TBuilder>['name'],
133
- options?: Prettify<Omit<Options<TBuilder>, 'name'>>,
134
- ): TsMethod<TBuilder> => new TsMethod<TBuilder>({ ...options, name });
135
-
136
- export const tsMethod: typeof createMethod & { write: typeof writeTsNodes } = Object.assign(createMethod, {
137
- write: writeTsNodes,
138
- });
@@ -1,52 +0,0 @@
1
- import { type AstNodeOptions, type BasicAppendValue, notNullish, type Nullable, type SourceBuilder } from '@goast/core';
2
-
3
- import { TsNode } from '../node.js';
4
- import { writeTsMembers } from '../utils/write-ts-members.js';
5
- import { writeTsNodes } from '../utils/write-ts-nodes.js';
6
- import type { TsIndexer } from './indexer.js';
7
- import type { TsMethod } from './method.js';
8
- import type { TsProperty } from './property.js';
9
-
10
- type Injects = never;
11
-
12
- type Options<TBuilder extends SourceBuilder, TInjects extends string = never> = AstNodeOptions<
13
- typeof TsNode<TBuilder, TInjects | Injects>,
14
- {
15
- members?: Nullable<Nullable<Member<TBuilder>>[]>;
16
- }
17
- >;
18
-
19
- type Member<TBuilder extends SourceBuilder> =
20
- | TsProperty<TBuilder>
21
- | TsMethod<TBuilder>
22
- | TsIndexer<TBuilder>
23
- | BasicAppendValue<TBuilder>;
24
-
25
- export class TsObjectType<TBuilder extends SourceBuilder, TInjects extends string = never> extends TsNode<
26
- TBuilder,
27
- TInjects | Injects
28
- > {
29
- public members: Member<TBuilder>[];
30
-
31
- constructor(options: Options<TBuilder, TInjects>) {
32
- super(options);
33
- this.members = options.members?.filter(notNullish) ?? [];
34
- }
35
-
36
- protected override onWrite(builder: TBuilder): void {
37
- builder.parenthesize(
38
- '{}',
39
- (b) => {
40
- writeTsMembers(b, this.members);
41
- },
42
- { multiline: this.members.length > 0 },
43
- );
44
- }
45
- }
46
-
47
- const createObjectType = <TBuilder extends SourceBuilder>(options?: Options<TBuilder>): TsObjectType<TBuilder> =>
48
- new TsObjectType<TBuilder>(options ?? {});
49
-
50
- export const tsObjectType: typeof createObjectType & { write: typeof writeTsNodes } = Object.assign(createObjectType, {
51
- write: writeTsNodes,
52
- });
@@ -1,48 +0,0 @@
1
- import { type AstNodeOptions, type BasicAppendValue, notNullish, type Nullable, type SourceBuilder } from '@goast/core';
2
-
3
- import { TsNode } from '../node.js';
4
- import { writeTsMembers } from '../utils/write-ts-members.js';
5
- import { writeTsNodes } from '../utils/write-ts-nodes.js';
6
-
7
- import type { TsMethod } from './method.js';
8
- import type { TsProperty } from './property.js';
9
-
10
- type Injects = never;
11
-
12
- type Options<TBuilder extends SourceBuilder, TInjects extends string = never> = AstNodeOptions<
13
- typeof TsNode<TBuilder, TInjects | Injects>,
14
- {
15
- members?: Nullable<Nullable<Member<TBuilder>>[]>;
16
- }
17
- >;
18
-
19
- type Member<TBuilder extends SourceBuilder> = TsProperty<TBuilder> | TsMethod<TBuilder> | BasicAppendValue<TBuilder>;
20
-
21
- export class TsObject<TBuilder extends SourceBuilder, TInjects extends string = never> extends TsNode<
22
- TBuilder,
23
- TInjects | Injects
24
- > {
25
- public members: Member<TBuilder>[];
26
-
27
- constructor(options: Options<TBuilder, TInjects>) {
28
- super(options);
29
- this.members = options.members?.filter(notNullish) ?? [];
30
- }
31
-
32
- protected override onWrite(builder: TBuilder): void {
33
- builder.parenthesize(
34
- '{}',
35
- (b) => {
36
- writeTsMembers(b, this.members);
37
- },
38
- { multiline: this.members.length > 0 },
39
- );
40
- }
41
- }
42
-
43
- const createObject = <TBuilder extends SourceBuilder>(options?: Options<TBuilder>): TsObject<TBuilder> =>
44
- new TsObject<TBuilder>(options ?? {});
45
-
46
- export const tsObject: typeof createObject & { write: typeof writeTsNodes } = Object.assign(createObject, {
47
- write: writeTsNodes,
48
- });
@@ -1,85 +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 } from '../utils/write-ts-nodes.js';
12
- import { writeTsParameters } from '../utils/write-ts-parameters.js';
13
- import { type TsDecorator, tsDecorator } from './decorator.js';
14
- import type { TsType, TsValue } from './types.js';
15
-
16
- type Injects = 'decorators' | 'name' | 'type' | 'default';
17
-
18
- type Options<TBuilder extends SourceBuilder, TInjects extends string = never> = AstNodeOptions<
19
- typeof TsNode<TBuilder, TInjects | Injects>,
20
- {
21
- name: string;
22
- description?: Nullable<BasicAppendValue<TBuilder>>;
23
- decorators?: Nullable<Nullable<TsDecorator<TBuilder>>[]>;
24
- type?: Nullable<TsType<TBuilder>>;
25
- optional?: Nullable<boolean>;
26
- default?: Nullable<TsValue<TBuilder>>;
27
- }
28
- >;
29
-
30
- export class TsParameter<TBuilder extends SourceBuilder, TInjects extends string = never> extends TsNode<
31
- TBuilder,
32
- TInjects | Injects
33
- > {
34
- public name: string;
35
- public description: BasicAppendValue<TBuilder> | null;
36
- public decorators: TsDecorator<TBuilder>[];
37
- public type: TsType<TBuilder> | null;
38
- public optional: boolean;
39
- public default: TsValue<TBuilder> | null;
40
-
41
- constructor(options: Options<TBuilder, TInjects>) {
42
- super(options);
43
- this.name = options.name;
44
- this.description = options.description ?? null;
45
- this.decorators = options.decorators?.filter(notNullish) ?? [];
46
- this.type = options.type ?? null;
47
- this.optional = options.optional ?? false;
48
- this.default = options.default ?? null;
49
- }
50
-
51
- protected override onWrite(builder: TBuilder): void {
52
- builder.append(this.inject.beforeDecorators);
53
- tsDecorator.write(builder, this.decorators);
54
- builder.append(this.inject.afterDecorators);
55
-
56
- builder.append(this.inject.beforeName, this.name, this.inject.afterName);
57
- if (this.optional) builder.append('?');
58
-
59
- if (this.type) {
60
- builder.append(': ');
61
- builder.append(this.inject.beforeType);
62
- writeTsNode(builder, this.type);
63
- builder.append(this.inject.afterType);
64
- }
65
-
66
- if (this.default) {
67
- builder.append(' = ');
68
- builder.append(this.inject.beforeDefault);
69
- writeTsNode(builder, this.default);
70
- builder.append(this.inject.afterDefault);
71
- }
72
- }
73
- }
74
-
75
- const createParameter = <TBuilder extends SourceBuilder>(
76
- name: Options<TBuilder>['name'],
77
- options?: Prettify<Omit<Options<TBuilder>, 'name'>>,
78
- ): TsParameter<TBuilder> => new TsParameter<TBuilder>({ ...options, name });
79
-
80
- export const tsParameter: typeof createParameter & { write: typeof writeTsParameters } = Object.assign(
81
- createParameter,
82
- {
83
- write: writeTsParameters,
84
- },
85
- );