@goast/typescript 0.5.3 → 0.6.0-beta.2

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