@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,133 +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 { writeTsNode, writeTsNodes } from '../utils/write-ts-nodes.js';
13
- import type { TsConstructor } from './constructor.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 type { TsIndexer } from './indexer.js';
18
- import type { TsMethod } from './method.js';
19
- import type { TsProperty } from './property.js';
20
- import type { TsReference } from './reference.js';
21
-
22
- type Injects = 'doc' | 'decorators' | 'modifiers' | 'name' | 'generics' | 'extends' | 'implements' | 'body' | 'members';
23
-
24
- type Options<TBuilder extends SourceBuilder, TInjects extends string = never> = AstNodeOptions<
25
- typeof TsNode<TBuilder, TInjects | Injects>,
26
- {
27
- doc?: Nullable<TsDoc<TBuilder>>;
28
- decorators?: Nullable<Nullable<TsDecorator<TBuilder>>[]>;
29
- export?: Nullable<boolean>;
30
- abstract?: Nullable<boolean>;
31
- name: string;
32
- generics?: Nullable<Nullable<TsGenericParameter<TBuilder> | BasicAppendValue<TBuilder>>[]>;
33
- extends?: Nullable<TsReference<TBuilder> | BasicAppendValue<TBuilder>>;
34
- implements?: Nullable<Nullable<TsReference<TBuilder> | BasicAppendValue<TBuilder>>[]>;
35
- members?: Nullable<Nullable<Member<TBuilder>>[]>;
36
- }
37
- >;
38
-
39
- type Member<TBuilder extends SourceBuilder> =
40
- | TsProperty<TBuilder>
41
- | TsMethod<TBuilder>
42
- | TsIndexer<TBuilder>
43
- | TsConstructor<TBuilder>
44
- | BasicAppendValue<TBuilder>;
45
-
46
- export class TsClass<TBuilder extends SourceBuilder, TInjects extends string = never> extends TsNode<
47
- TBuilder,
48
- TInjects | Injects
49
- > {
50
- public doc: TsDoc<TBuilder> | null;
51
- public decorators: TsDecorator<TBuilder>[];
52
- public export: boolean;
53
- public abstract: boolean;
54
- public name: string;
55
- public generics: (TsGenericParameter<TBuilder> | BasicAppendValue<TBuilder>)[];
56
- public extends: TsReference<TBuilder> | BasicAppendValue<TBuilder> | null;
57
- public implements: (TsReference<TBuilder> | BasicAppendValue<TBuilder>)[];
58
- public members: Member<TBuilder>[];
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.export = options.export ?? false;
65
- this.abstract = options.abstract ?? false;
66
- this.name = options.name;
67
- this.generics = options.generics?.filter(notNullish) ?? [];
68
- this.extends = options.extends ?? null;
69
- this.implements = options.implements?.filter(notNullish) ?? [];
70
- this.members = options.members?.filter(notNullish) ?? [];
71
- }
72
-
73
- protected override onWrite(builder: TBuilder): void {
74
- builder.append(this.inject.beforeDoc);
75
- tsDoc.write(builder, tsDoc.get(this.doc, { generics: this.generics }));
76
- builder.append(this.inject.afterDoc);
77
-
78
- builder.append(this.inject.beforeDecorators);
79
- tsDecorator.write(builder, this.decorators, { multiline: true });
80
- builder.append(this.inject.afterDecorators);
81
-
82
- builder.append(this.inject.beforeModifiers);
83
- if (this.export) builder.append('export ');
84
- if (this.abstract) builder.append('abstract ');
85
- builder.append(this.inject.afterModifiers);
86
-
87
- builder.append('class ');
88
- builder.append(this.inject.beforeName, this.name, this.inject.afterName);
89
-
90
- builder.append(this.inject.beforeGenerics);
91
- tsGenericParameter.write(builder, this.generics);
92
- builder.append(this.inject.afterGenerics);
93
-
94
- if (this.extends) {
95
- builder.append(' extends ');
96
- builder.append(this.inject.beforeExtends);
97
- writeTsNode(builder, this.extends);
98
- builder.append(this.inject.afterExtends);
99
- }
100
-
101
- if (this.implements.length > 0) {
102
- builder.append(' implements ');
103
- builder.append(this.inject.beforeImplements);
104
- writeTsNodes(builder, this.implements, { separator: ', ' });
105
- builder.append(this.inject.afterImplements);
106
- }
107
-
108
- builder.append(' ');
109
-
110
- builder.append(this.inject.beforeBody);
111
- builder.parenthesize(
112
- '{}',
113
- (b) => {
114
- b.append(this.inject.beforeMembers);
115
- writeTsMembers(b, this.members);
116
- b.append(this.inject.afterMembers);
117
- },
118
- { multiline: this.members.length > 0 },
119
- );
120
- builder.append(this.inject.afterBody);
121
-
122
- builder.appendLine();
123
- }
124
- }
125
-
126
- const createClass = <TBuilder extends SourceBuilder>(
127
- name: Options<TBuilder>['name'],
128
- options?: Prettify<Omit<Options<TBuilder>, 'name'>>,
129
- ): TsClass<TBuilder> => new TsClass<TBuilder>({ ...options, name });
130
-
131
- export const tsClass: typeof createClass & { write: typeof writeTsNodes } = Object.assign(createClass, {
132
- write: writeTsNodes,
133
- });
@@ -1,70 +0,0 @@
1
- import type { AstNodeOptions, Nullable, Prettify, SourceBuilder } from '@goast/core';
2
-
3
- import type { TsAccessModifier } from '../common.js';
4
- import { writeTsNode } from '../utils/write-ts-nodes.js';
5
- import { writeTsParameters } from '../utils/write-ts-parameters.js';
6
- import { tsDecorator } from './decorator.js';
7
- import { TsParameter } from './parameter.js';
8
-
9
- type Injects = 'modifiers';
10
-
11
- type Options<TBuilder extends SourceBuilder, TInjects extends string = never> = AstNodeOptions<
12
- typeof TsParameter<TBuilder, TInjects | Injects>,
13
- {
14
- accessModifier?: Nullable<TsAccessModifier>;
15
- readonly?: Nullable<boolean>;
16
- }
17
- >;
18
-
19
- export class TsConstructorParameter<TBuilder extends SourceBuilder, TInjects extends string = never>
20
- extends TsParameter<
21
- TBuilder,
22
- TInjects | Injects
23
- > {
24
- public accessModifier: TsAccessModifier | null;
25
- public readonly: boolean;
26
-
27
- constructor(options: Options<TBuilder, TInjects>) {
28
- super(options);
29
- this.accessModifier = options.accessModifier ?? null;
30
- this.readonly = options.readonly ?? false;
31
- }
32
-
33
- protected override onWrite(builder: TBuilder): void {
34
- builder.append(this.inject.beforeDecorators);
35
- tsDecorator.write(builder, this.decorators);
36
- builder.append(this.inject.afterDecorators);
37
-
38
- builder.append(this.inject.beforeModifiers);
39
- if (this.accessModifier) builder.append(this.accessModifier, ' ');
40
- if (this.readonly) builder.append('readonly ');
41
- builder.append(this.inject.afterModifiers);
42
-
43
- builder.append(this.inject.beforeName, this.name, this.inject.afterName);
44
- if (this.optional) builder.append('?');
45
-
46
- if (this.type) {
47
- builder.append(': ');
48
- builder.append(this.inject.beforeType);
49
- writeTsNode(builder, this.type);
50
- builder.append(this.inject.afterType);
51
- }
52
-
53
- if (this.default) {
54
- builder.append(' = ');
55
- builder.append(this.inject.beforeDefault);
56
- writeTsNode(builder, this.default);
57
- builder.append(this.inject.afterDefault);
58
- }
59
- }
60
- }
61
-
62
- const createConstructorParameter = <TBuilder extends SourceBuilder>(
63
- name: Options<TBuilder>['name'],
64
- options?: Prettify<Omit<Options<TBuilder>, 'name'>>,
65
- ): TsConstructorParameter<TBuilder> => new TsConstructorParameter<TBuilder>({ ...options, name });
66
-
67
- export const tsConstructorParameter: typeof createConstructorParameter & { write: typeof writeTsParameters } = Object
68
- .assign(createConstructorParameter, {
69
- write: writeTsParameters,
70
- });
@@ -1,77 +0,0 @@
1
- import {
2
- type AppendValue,
3
- type AstNodeOptions,
4
- type BasicAppendValue,
5
- notNullish,
6
- type Nullable,
7
- type SourceBuilder,
8
- } from '@goast/core';
9
-
10
- import { TsNode } from '../node.js';
11
- import { writeTsNodes } from '../utils/write-ts-nodes.js';
12
- import type { TsConstructorParameter } from './constructor-parameter.js';
13
- import { type TsDecorator, tsDecorator } from './decorator.js';
14
- import { type TsDoc, tsDoc } from './doc.js';
15
- import { tsParameter } from './parameter.js';
16
-
17
- type Injects = 'params' | 'doc' | 'decorators' | 'body';
18
-
19
- type Options<TBuilder extends SourceBuilder, TInjects extends string = never> = AstNodeOptions<
20
- typeof TsNode<TBuilder, TInjects | Injects>,
21
- {
22
- doc?: Nullable<TsDoc<TBuilder>>;
23
- decorators?: Nullable<Nullable<TsDecorator<TBuilder>>[]>;
24
- parameters?: Nullable<Nullable<TsConstructorParameter<TBuilder> | BasicAppendValue<TBuilder>>[]>;
25
- body?: Nullable<AppendValue<TBuilder>>;
26
- }
27
- >;
28
-
29
- export class TsConstructor<TBuilder extends SourceBuilder, TInjects extends string = never> extends TsNode<
30
- TBuilder,
31
- TInjects | Injects
32
- > {
33
- public doc: TsDoc<TBuilder> | null;
34
- public decorators: TsDecorator<TBuilder>[];
35
- public parameters: (TsConstructorParameter<TBuilder> | BasicAppendValue<TBuilder>)[];
36
- public body: AppendValue<TBuilder> | null;
37
-
38
- constructor(options: Options<TBuilder, TInjects>) {
39
- super(options);
40
- this.doc = options.doc ?? null;
41
- this.decorators = options.decorators?.filter(notNullish) ?? [];
42
- this.parameters = options.parameters?.filter(notNullish) ?? [];
43
- this.body = options.body ?? null;
44
- }
45
-
46
- protected override onWrite(builder: TBuilder): void {
47
- builder.append(this.inject.beforeDoc);
48
- tsDoc.get(this.doc, { parameters: this.parameters })?.write(builder);
49
- builder.append(this.inject.afterDoc);
50
-
51
- builder.append(this.inject.beforeDecorators);
52
- tsDecorator.write(builder, this.decorators, { multiline: true });
53
- builder.append(this.inject.afterDecorators);
54
-
55
- builder.append('constructor');
56
- builder.append(this.inject.beforeParams);
57
- tsParameter.write(builder, this.parameters);
58
- builder.append(this.inject.afterParams);
59
- builder.append(' ');
60
-
61
- builder.append(this.inject.beforeBody);
62
- builder.parenthesize('{}', this.body, { multiline: !!this.body });
63
- builder.append(this.inject.afterBody);
64
-
65
- builder.appendLine();
66
- }
67
- }
68
-
69
- const createConstructor = <TBuilder extends SourceBuilder>(options?: Options<TBuilder>): TsConstructor<TBuilder> =>
70
- new TsConstructor<TBuilder>(options ?? {});
71
-
72
- export const tsConstructor: typeof createConstructor & { write: typeof writeTsNodes } = Object.assign(
73
- createConstructor,
74
- {
75
- write: writeTsNodes,
76
- },
77
- );
@@ -1,76 +0,0 @@
1
- import {
2
- type AppendValue,
3
- type AstNodeOptions,
4
- type BasicAppendValue,
5
- notNullish,
6
- type Nullable,
7
- type Prettify,
8
- type SingleOrMultiple,
9
- type SourceBuilder,
10
- toArray,
11
- } from '@goast/core';
12
-
13
- import { TsNode } from '../node.js';
14
- import { writeTsNode } from '../utils/write-ts-nodes.js';
15
- import { type TsArgument, tsArgument } from './argument.js';
16
- import type { TsReference } from './reference.js';
17
- import type { TsValue } from './types.js';
18
-
19
- type Injects = 'function' | 'arguments';
20
-
21
- type Options<TBuilder extends SourceBuilder, TInjects extends string = never> = AstNodeOptions<
22
- typeof TsNode<TBuilder, TInjects | Injects>,
23
- {
24
- function: TsReference<TBuilder> | BasicAppendValue<TBuilder>;
25
- arguments?: Nullable<Nullable<TsArgument<TBuilder> | TsValue<TBuilder>>[]>;
26
- }
27
- >;
28
-
29
- export class TsDecorator<TBuilder extends SourceBuilder, TInjects extends string = never> extends TsNode<
30
- TBuilder,
31
- TInjects | Injects
32
- > {
33
- public function: TsReference<TBuilder> | BasicAppendValue<TBuilder>;
34
- public arguments: (TsArgument<TBuilder> | TsValue<TBuilder>)[] | null;
35
-
36
- constructor(options: Options<TBuilder, TInjects>) {
37
- super(options);
38
- this.function = options.function;
39
- this.arguments = options.arguments?.filter(notNullish) ?? null;
40
- }
41
-
42
- protected override onWrite(builder: TBuilder): void {
43
- builder.append('@');
44
- builder.append(this.inject.beforeFunction);
45
- writeTsNode(builder, this.function);
46
- builder.append(this.inject.afterFunction);
47
-
48
- if (this.arguments) {
49
- builder.append(this.inject.beforeArguments);
50
- tsArgument.write(builder, this.arguments);
51
- builder.append(this.inject.afterArguments);
52
- }
53
- }
54
- }
55
-
56
- const createDecorator = <TBuilder extends SourceBuilder>(
57
- fn: Options<TBuilder>['function'],
58
- args?: Options<TBuilder>['arguments'],
59
- options?: Prettify<Omit<Options<TBuilder>, 'function' | 'arguments'>>,
60
- ): TsDecorator<TBuilder> => new TsDecorator<TBuilder>({ ...options, function: fn, arguments: args });
61
-
62
- const writeDecorators = <TBuilder extends SourceBuilder>(
63
- builder: TBuilder,
64
- nodes: SingleOrMultiple<Nullable<TsDecorator<TBuilder> | AppendValue<TBuilder>>>,
65
- options?: { multiline?: boolean },
66
- ): void => {
67
- const filteredNodes = toArray(nodes).filter(notNullish);
68
- builder.forEach(filteredNodes, (b, d) => {
69
- writeTsNode(b, d);
70
- b.append(options?.multiline ? '\n' : ' ');
71
- });
72
- };
73
-
74
- export const tsDecorator: typeof createDecorator & { write: typeof writeDecorators } = Object.assign(createDecorator, {
75
- write: writeDecorators,
76
- });
@@ -1,291 +0,0 @@
1
- import {
2
- type AstNodeOptions,
3
- type BasicAppendValue,
4
- basicAppendValueGroup,
5
- notNullish,
6
- type Nullable,
7
- type ParametersWithOverloads,
8
- type Prettify,
9
- type SourceBuilder,
10
- type StringSuggestions,
11
- } from '@goast/core';
12
-
13
- import { isTypeScriptAppendValue } from '../../file-builder.js';
14
- import { TsNode } from '../node.js';
15
- import { writeTsNode, writeTsNodes } from '../utils/write-ts-nodes.js';
16
- import type { TsType } from './types.js';
17
-
18
- type Injects = never;
19
-
20
- type Options<TBuilder extends SourceBuilder, TInjects extends string = never> = AstNodeOptions<
21
- typeof TsNode<TBuilder, TInjects | Injects>,
22
- {
23
- tag: string;
24
- type?: Nullable<TsType<TBuilder>>;
25
- text?: Nullable<BasicAppendValue<TBuilder>>;
26
- }
27
- >;
28
-
29
- export class TsDocTag<TBuilder extends SourceBuilder, TInjects extends string = never> extends TsNode<
30
- TBuilder,
31
- TInjects | Injects
32
- > {
33
- public tag: string;
34
- public type: TsType<TBuilder> | null;
35
- public text: BasicAppendValue<TBuilder> | null;
36
-
37
- constructor(options: Options<TBuilder, TInjects>) {
38
- super(options);
39
- this.tag = options.tag;
40
- this.type = options.type ?? null;
41
- this.text = options.text ?? null;
42
- }
43
-
44
- protected override onWrite(builder: TBuilder): void {
45
- builder.append('@', this.tag);
46
-
47
- if (this.type) {
48
- builder.append(' ');
49
- builder.parenthesize('{}', (b) => writeTsNode(b, this.type));
50
- }
51
-
52
- if (this.text) {
53
- builder.append(' ', this.text);
54
- }
55
- }
56
- }
57
-
58
- type _TsDocTagOpt<TBuilder extends SourceBuilder> = Prettify<Omit<Options<TBuilder>, 'tag'>>;
59
-
60
- type _TsDocTagArgsMap<TBuilder extends SourceBuilder> =
61
- & {
62
- access(
63
- access: StringSuggestions<'package' | 'private' | 'protected' | 'public'>,
64
- options?: _TsDocTagOpt<TBuilder>,
65
- ): never;
66
- author(authorName: BasicAppendValue<TBuilder>, options?: _TsDocTagOpt<TBuilder>): never;
67
- author(
68
- authorName: BasicAppendValue<TBuilder>,
69
- emailAddress: BasicAppendValue<TBuilder>,
70
- options?: _TsDocTagOpt<TBuilder>,
71
- ): never;
72
- borrows(
73
- thatNamepath: BasicAppendValue<TBuilder>,
74
- thisNamepath: BasicAppendValue<TBuilder>,
75
- options?: _TsDocTagOpt<TBuilder>,
76
- ): never;
77
- params(
78
- paramName: BasicAppendValue<TBuilder>,
79
- paramDescription: BasicAppendValue<TBuilder>,
80
- options?: _TsDocTagOpt<TBuilder>,
81
- ): never;
82
- example(
83
- caption: BasicAppendValue<TBuilder>,
84
- code: BasicAppendValue<TBuilder>,
85
- options?: _TsDocTagOpt<TBuilder>,
86
- ): never;
87
- example(code: BasicAppendValue<TBuilder>, options?: _TsDocTagOpt<TBuilder>): never;
88
- exports(
89
- moduleName: BasicAppendValue<TBuilder>,
90
- exportName: BasicAppendValue<TBuilder>,
91
- options?: _TsDocTagOpt<TBuilder>,
92
- ): never;
93
- kind(
94
- kindName: StringSuggestions<
95
- | 'class'
96
- | 'constant'
97
- | 'event'
98
- | 'external'
99
- | 'file'
100
- | 'function'
101
- | 'member'
102
- | 'mixin'
103
- | 'module'
104
- | 'namespace'
105
- | 'typedef'
106
- >,
107
- options?: _TsDocTagOpt<TBuilder>,
108
- ): never;
109
- license(identifier: BasicAppendValue<TBuilder>, options?: _TsDocTagOpt<TBuilder>): never;
110
- listens(eventName: BasicAppendValue<TBuilder>, options?: _TsDocTagOpt<TBuilder>): never;
111
- mixes(otherObjectPath: BasicAppendValue<TBuilder>, options?: _TsDocTagOpt<TBuilder>): never;
112
- mixin(mixinName: BasicAppendValue<TBuilder>, options?: _TsDocTagOpt<TBuilder>): never;
113
- requires(moduleName: BasicAppendValue<TBuilder>, options?: _TsDocTagOpt<TBuilder>): never;
114
- variation(variationNumber: BasicAppendValue<TBuilder>, options?: _TsDocTagOpt<TBuilder>): never;
115
- }
116
- & {
117
- [K in 'virtual' | 'abstract']: (options?: _TsDocTagOpt<TBuilder>) => never;
118
- }
119
- & {
120
- [K in 'alias' | 'augments' | 'callback' | 'extends' | 'lends' | 'name' | 'see' | 'this']: (
121
- namePath: BasicAppendValue<TBuilder>,
122
- options?: _TsDocTagOpt<TBuilder>,
123
- ) => never;
124
- }
125
- & {
126
- [
127
- K in
128
- | 'async'
129
- | 'generator'
130
- | 'global'
131
- | 'hideconstructor'
132
- | 'ignore'
133
- | 'inheritdoc'
134
- | 'inner'
135
- | 'instance'
136
- | 'override'
137
- | 'static'
138
- | 'enum'
139
- | 'package'
140
- | 'private'
141
- | 'protected'
142
- | 'implements'
143
- | 'type'
144
- ]: (options?: _TsDocTagOpt<TBuilder>) => never;
145
- }
146
- & {
147
- [
148
- K in
149
- | 'class'
150
- | 'constructor'
151
- | 'const'
152
- | 'function'
153
- | 'func'
154
- | 'method'
155
- | 'constant'
156
- | 'member'
157
- | 'constructs'
158
- | 'interface'
159
- | 'var'
160
- | 'yield'
161
- | 'yields'
162
- | 'module'
163
- | 'namespace'
164
- | 'typedef'
165
- ]: {
166
- (name: BasicAppendValue<TBuilder>, options?: _TsDocTagOpt<TBuilder>): never;
167
- (options?: _TsDocTagOpt<TBuilder>): never;
168
- };
169
- }
170
- & {
171
- [
172
- K in
173
- | 'return'
174
- | 'returns'
175
- | 'throws'
176
- | 'exception'
177
- | 'classdesc'
178
- | 'copyright'
179
- | 'deprecated'
180
- | 'desc'
181
- | 'description'
182
- | 'file'
183
- | 'fileoverview'
184
- | 'overview'
185
- | 'public'
186
- | 'readonly'
187
- | 'since'
188
- | 'summary'
189
- | 'todo'
190
- | 'tutorial'
191
- | 'version'
192
- ]: {
193
- (description: BasicAppendValue<TBuilder>, options?: _TsDocTagOpt<TBuilder>): never;
194
- (options?: _TsDocTagOpt<TBuilder>): never;
195
- };
196
- }
197
- & {
198
- [K in 'default' | 'defaultvalue']: {
199
- (value: BasicAppendValue<TBuilder>, options?: _TsDocTagOpt<TBuilder>): never;
200
- (options?: _TsDocTagOpt<TBuilder>): never;
201
- };
202
- }
203
- & {
204
- [K in 'event' | 'fires']: (
205
- className: BasicAppendValue<TBuilder>,
206
- eventName: BasicAppendValue<TBuilder>,
207
- options?: _TsDocTagOpt<TBuilder>,
208
- ) => never;
209
- }
210
- & {
211
- [K in 'external' | 'host']: (nameOfExternal: BasicAppendValue<TBuilder>, options?: _TsDocTagOpt<TBuilder>) => never;
212
- }
213
- & {
214
- [K in 'memberof' | 'memberof!']: (
215
- parentNamepath: BasicAppendValue<TBuilder>,
216
- options?: _TsDocTagOpt<TBuilder>,
217
- ) => never;
218
- }
219
- & {
220
- [K in 'param' | 'arg' | 'argument' | 'prop' | 'property' | 'template']: {
221
- (
222
- name: BasicAppendValue<TBuilder>,
223
- description: BasicAppendValue<TBuilder>,
224
- options?: _TsDocTagOpt<TBuilder>,
225
- ): never;
226
- (name: BasicAppendValue<TBuilder>, options?: _TsDocTagOpt<TBuilder>): never;
227
- };
228
- };
229
-
230
- type _TsDocTagArgs<
231
- TTagName extends StringSuggestions<keyof _TsDocTagArgsMap<TBuilder>>,
232
- TBuilder extends SourceBuilder,
233
- > = TTagName extends keyof _TsDocTagArgsMap<TBuilder>
234
- // deno-lint-ignore no-explicit-any
235
- ? _TsDocTagArgsMap<TBuilder>[TTagName] extends (...args: any[]) => any
236
- ? ParametersWithOverloads<_TsDocTagArgsMap<TBuilder>[TTagName]>
237
- : never
238
- : [options?: _TsDocTagOpt<TBuilder>];
239
-
240
- function createDocTag<
241
- TTagName extends StringSuggestions<keyof _TsDocTagArgsMap<TBuilder>>,
242
- TBuilder extends SourceBuilder,
243
- >(
244
- tag: TTagName,
245
- ...args: _TsDocTagArgs<TTagName, TBuilder>
246
- ): TsDocTag<TBuilder>;
247
- // deno-lint-ignore no-explicit-any
248
- function createDocTag<TBuilder extends SourceBuilder>(tag: string, ...args: any[]): TsDocTag<TBuilder> {
249
- let opt: _TsDocTagOpt<TBuilder> = {};
250
- if (args.length > 0) {
251
- const lastArg = args[args.length - 1];
252
- if (!isTypeScriptAppendValue(lastArg) && !!lastArg) {
253
- opt = args.pop() as _TsDocTagOpt<TBuilder>;
254
- }
255
- }
256
-
257
- let params = args as BasicAppendValue<TBuilder>[];
258
-
259
- if (tag === 'author' && params.length === 2) {
260
- params[1] = `<${params[1]}>`;
261
- }
262
-
263
- if (tag === 'borrows') {
264
- params.splice(1, 0, 'as');
265
- }
266
-
267
- if (tag === 'example') {
268
- if (typeof params[0] === 'string') {
269
- params[0] = `<caption>${params[0]}</caption>`;
270
- }
271
- if (params[1] && isTypeScriptAppendValue(params[1])) {
272
- params.splice(1, 0, '\n');
273
- }
274
- }
275
-
276
- if ((tag === 'event' || tag === 'fires') && typeof params[0] === 'string' && typeof params[1] === 'string') {
277
- params.splice(0, 2, `${params[0]}#${params[1]}`);
278
- }
279
-
280
- params = [...params, opt.text].filter(notNullish);
281
- return new TsDocTag({
282
- tag,
283
- type: opt.type,
284
- text: params.length > 0 ? basicAppendValueGroup<TBuilder>(params, ' ') : null,
285
- inject: opt.inject,
286
- });
287
- }
288
-
289
- export const tsDocTag: typeof createDocTag & { write: typeof writeTsNodes } = Object.assign(createDocTag, {
290
- write: writeTsNodes,
291
- });