@azure-tools/typespec-go 0.8.6 → 0.8.7
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.
- package/dist/codegen.go/src/core/clientFactory.d.ts +12 -0
- package/dist/codegen.go/src/core/clientFactory.d.ts.map +1 -0
- package/dist/codegen.go/src/{clientFactory.js → core/clientFactory.js} +17 -9
- package/dist/codegen.go/src/core/clientFactory.js.map +1 -0
- package/dist/codegen.go/src/core/cloudConfig.d.ts +11 -0
- package/dist/codegen.go/src/core/cloudConfig.d.ts.map +1 -0
- package/dist/codegen.go/src/{cloudConfig.js → core/cloudConfig.js} +7 -15
- package/dist/codegen.go/src/core/cloudConfig.js.map +1 -0
- package/dist/codegen.go/src/core/constants.d.ts +9 -0
- package/dist/codegen.go/src/core/constants.d.ts.map +1 -0
- package/dist/codegen.go/src/{constants.js → core/constants.js} +10 -5
- package/dist/codegen.go/src/core/constants.js.map +1 -0
- package/dist/codegen.go/src/{errors.d.ts → core/errors.d.ts} +1 -1
- package/dist/codegen.go/src/core/errors.d.ts.map +1 -0
- package/dist/codegen.go/src/core/errors.js.map +1 -0
- package/dist/codegen.go/src/core/example.d.ts +16 -0
- package/dist/codegen.go/src/core/example.d.ts.map +1 -0
- package/dist/codegen.go/src/{example.js → core/example.js} +76 -43
- package/dist/codegen.go/src/core/example.js.map +1 -0
- package/dist/codegen.go/src/core/gomod.d.ts +12 -0
- package/dist/codegen.go/src/core/gomod.d.ts.map +1 -0
- package/dist/codegen.go/src/{gomod.js → core/gomod.js} +14 -11
- package/dist/codegen.go/src/core/gomod.js.map +1 -0
- package/dist/codegen.go/src/{helpers.d.ts → core/helpers.d.ts} +21 -8
- package/dist/codegen.go/src/core/helpers.d.ts.map +1 -0
- package/dist/codegen.go/src/{helpers.js → core/helpers.js} +43 -30
- package/dist/codegen.go/src/core/helpers.js.map +1 -0
- package/dist/codegen.go/src/core/imports.d.ts +17 -0
- package/dist/codegen.go/src/core/imports.d.ts.map +1 -0
- package/dist/codegen.go/src/{imports.js → core/imports.js} +25 -0
- package/dist/codegen.go/src/core/imports.js.map +1 -0
- package/dist/codegen.go/src/core/interfaces.d.ts +9 -0
- package/dist/codegen.go/src/core/interfaces.d.ts.map +1 -0
- package/dist/codegen.go/src/{interfaces.js → core/interfaces.js} +11 -5
- package/dist/codegen.go/src/core/interfaces.js.map +1 -0
- package/dist/codegen.go/src/core/license.d.ts +9 -0
- package/dist/codegen.go/src/core/license.d.ts.map +1 -0
- package/dist/codegen.go/src/{license.js → core/license.js} +4 -13
- package/dist/codegen.go/src/core/license.js.map +1 -0
- package/dist/codegen.go/src/core/metadata.d.ts +3 -0
- package/dist/codegen.go/src/core/metadata.d.ts.map +1 -0
- package/dist/codegen.go/src/core/metadata.js.map +1 -0
- package/dist/codegen.go/src/core/models.d.ts +15 -0
- package/dist/codegen.go/src/core/models.d.ts.map +1 -0
- package/dist/codegen.go/src/{models.js → core/models.js} +17 -11
- package/dist/codegen.go/src/core/models.js.map +1 -0
- package/dist/codegen.go/src/core/operations.d.ts +17 -0
- package/dist/codegen.go/src/core/operations.d.ts.map +1 -0
- package/dist/codegen.go/src/{operations.js → core/operations.js} +34 -27
- package/dist/codegen.go/src/core/operations.js.map +1 -0
- package/dist/codegen.go/src/core/options.d.ts +9 -0
- package/dist/codegen.go/src/core/options.d.ts.map +1 -0
- package/dist/codegen.go/src/{options.js → core/options.js} +11 -6
- package/dist/codegen.go/src/core/options.js.map +1 -0
- package/dist/codegen.go/src/core/polymorphics.d.ts +10 -0
- package/dist/codegen.go/src/core/polymorphics.d.ts.map +1 -0
- package/dist/codegen.go/src/{polymorphics.js → core/polymorphics.js} +16 -10
- package/dist/codegen.go/src/core/polymorphics.js.map +1 -0
- package/dist/codegen.go/src/core/responses.d.ts +14 -0
- package/dist/codegen.go/src/core/responses.d.ts.map +1 -0
- package/dist/codegen.go/src/{responses.js → core/responses.js} +14 -8
- package/dist/codegen.go/src/core/responses.js.map +1 -0
- package/dist/codegen.go/src/core/time.d.ts +15 -0
- package/dist/codegen.go/src/core/time.d.ts.map +1 -0
- package/dist/codegen.go/src/{time.js → core/time.js} +19 -14
- package/dist/codegen.go/src/core/time.js.map +1 -0
- package/dist/codegen.go/src/core/version.d.ts +10 -0
- package/dist/codegen.go/src/core/version.d.ts.map +1 -0
- package/dist/codegen.go/src/{version.js → core/version.js} +4 -12
- package/dist/codegen.go/src/core/version.js.map +1 -0
- package/dist/codegen.go/src/core/xmlAdditionalProps.d.ts +9 -0
- package/dist/codegen.go/src/core/xmlAdditionalProps.d.ts.map +1 -0
- package/dist/codegen.go/src/{xmlAdditionalProps.js → core/xmlAdditionalProps.js} +11 -7
- package/dist/codegen.go/src/core/xmlAdditionalProps.js.map +1 -0
- package/dist/codegen.go/src/emitter.d.ts +42 -0
- package/dist/codegen.go/src/emitter.d.ts.map +1 -0
- package/dist/codegen.go/src/emitter.js +290 -0
- package/dist/codegen.go/src/emitter.js.map +1 -0
- package/dist/codegen.go/src/fake/factory.d.ts +8 -1
- package/dist/codegen.go/src/fake/factory.d.ts.map +1 -1
- package/dist/codegen.go/src/fake/factory.js +17 -9
- package/dist/codegen.go/src/fake/factory.js.map +1 -1
- package/dist/codegen.go/src/fake/internal.d.ts +8 -1
- package/dist/codegen.go/src/fake/internal.d.ts.map +1 -1
- package/dist/codegen.go/src/fake/internal.js +12 -5
- package/dist/codegen.go/src/fake/internal.js.map +1 -1
- package/dist/codegen.go/src/fake/servers.d.ts +7 -1
- package/dist/codegen.go/src/fake/servers.d.ts.map +1 -1
- package/dist/codegen.go/src/fake/servers.js +22 -15
- package/dist/codegen.go/src/fake/servers.js.map +1 -1
- package/dist/codegen.go/src/index.d.ts +4 -0
- package/dist/codegen.go/src/index.d.ts.map +1 -0
- package/dist/codegen.go/src/index.js +8 -0
- package/dist/codegen.go/src/index.js.map +1 -0
- package/dist/codemodel.go/src/client.d.ts +1 -1
- package/dist/codemodel.go/src/client.d.ts.map +1 -1
- package/dist/codemodel.go/src/{package.d.ts → codeModel.d.ts} +11 -35
- package/dist/codemodel.go/src/codeModel.d.ts.map +1 -0
- package/dist/codemodel.go/src/codeModel.js +29 -0
- package/dist/codemodel.go/src/codeModel.js.map +1 -0
- package/dist/codemodel.go/src/index.d.ts +3 -2
- package/dist/codemodel.go/src/index.d.ts.map +1 -1
- package/dist/codemodel.go/src/index.js +3 -2
- package/dist/codemodel.go/src/index.js.map +1 -1
- package/dist/codemodel.go/src/module.d.ts +70 -0
- package/dist/codemodel.go/src/module.d.ts.map +1 -0
- package/dist/codemodel.go/src/module.js +39 -0
- package/dist/codemodel.go/src/module.js.map +1 -0
- package/dist/typespec-go/src/emitter.d.ts.map +1 -1
- package/dist/typespec-go/src/emitter.js +31 -167
- package/dist/typespec-go/src/emitter.js.map +1 -1
- package/dist/typespec-go/src/tcgcadapter/adapter.d.ts.map +1 -1
- package/dist/typespec-go/src/tcgcadapter/adapter.js +19 -18
- package/dist/typespec-go/src/tcgcadapter/adapter.js.map +1 -1
- package/dist/typespec-go/src/tcgcadapter/clients.d.ts +7 -0
- package/dist/typespec-go/src/tcgcadapter/clients.d.ts.map +1 -1
- package/dist/typespec-go/src/tcgcadapter/clients.js +19 -10
- package/dist/typespec-go/src/tcgcadapter/clients.js.map +1 -1
- package/dist/typespec-go/src/tcgcadapter/types.d.ts +7 -0
- package/dist/typespec-go/src/tcgcadapter/types.d.ts.map +1 -1
- package/dist/typespec-go/src/tcgcadapter/types.js +12 -3
- package/dist/typespec-go/src/tcgcadapter/types.js.map +1 -1
- package/package.json +22 -22
- package/dist/codegen.go/src/clientFactory.d.ts +0 -3
- package/dist/codegen.go/src/clientFactory.d.ts.map +0 -1
- package/dist/codegen.go/src/clientFactory.js.map +0 -1
- package/dist/codegen.go/src/cloudConfig.d.ts +0 -10
- package/dist/codegen.go/src/cloudConfig.d.ts.map +0 -1
- package/dist/codegen.go/src/cloudConfig.js.map +0 -1
- package/dist/codegen.go/src/constants.d.ts +0 -3
- package/dist/codegen.go/src/constants.d.ts.map +0 -1
- package/dist/codegen.go/src/constants.js.map +0 -1
- package/dist/codegen.go/src/errors.d.ts.map +0 -1
- package/dist/codegen.go/src/errors.js.map +0 -1
- package/dist/codegen.go/src/example.d.ts +0 -8
- package/dist/codegen.go/src/example.d.ts.map +0 -1
- package/dist/codegen.go/src/example.js.map +0 -1
- package/dist/codegen.go/src/gomod.d.ts +0 -3
- package/dist/codegen.go/src/gomod.d.ts.map +0 -1
- package/dist/codegen.go/src/gomod.js.map +0 -1
- package/dist/codegen.go/src/helpers.d.ts.map +0 -1
- package/dist/codegen.go/src/helpers.js.map +0 -1
- package/dist/codegen.go/src/imports.d.ts +0 -11
- package/dist/codegen.go/src/imports.d.ts.map +0 -1
- package/dist/codegen.go/src/imports.js.map +0 -1
- package/dist/codegen.go/src/interfaces.d.ts +0 -3
- package/dist/codegen.go/src/interfaces.d.ts.map +0 -1
- package/dist/codegen.go/src/interfaces.js.map +0 -1
- package/dist/codegen.go/src/license.d.ts +0 -10
- package/dist/codegen.go/src/license.d.ts.map +0 -1
- package/dist/codegen.go/src/license.js.map +0 -1
- package/dist/codegen.go/src/metadata.d.ts +0 -3
- package/dist/codegen.go/src/metadata.d.ts.map +0 -1
- package/dist/codegen.go/src/metadata.js.map +0 -1
- package/dist/codegen.go/src/models.d.ts +0 -8
- package/dist/codegen.go/src/models.d.ts.map +0 -1
- package/dist/codegen.go/src/models.js.map +0 -1
- package/dist/codegen.go/src/operations.d.ts +0 -9
- package/dist/codegen.go/src/operations.d.ts.map +0 -1
- package/dist/codegen.go/src/operations.js.map +0 -1
- package/dist/codegen.go/src/options.d.ts +0 -3
- package/dist/codegen.go/src/options.d.ts.map +0 -1
- package/dist/codegen.go/src/options.js.map +0 -1
- package/dist/codegen.go/src/polymorphics.d.ts +0 -3
- package/dist/codegen.go/src/polymorphics.d.ts.map +0 -1
- package/dist/codegen.go/src/polymorphics.js.map +0 -1
- package/dist/codegen.go/src/responses.d.ts +0 -7
- package/dist/codegen.go/src/responses.d.ts.map +0 -1
- package/dist/codegen.go/src/responses.js.map +0 -1
- package/dist/codegen.go/src/time.d.ts +0 -8
- package/dist/codegen.go/src/time.d.ts.map +0 -1
- package/dist/codegen.go/src/time.js.map +0 -1
- package/dist/codegen.go/src/version.d.ts +0 -10
- package/dist/codegen.go/src/version.d.ts.map +0 -1
- package/dist/codegen.go/src/version.js.map +0 -1
- package/dist/codegen.go/src/xmlAdditionalProps.d.ts +0 -3
- package/dist/codegen.go/src/xmlAdditionalProps.d.ts.map +0 -1
- package/dist/codegen.go/src/xmlAdditionalProps.js.map +0 -1
- package/dist/codemodel.go/src/package.d.ts.map +0 -1
- package/dist/codemodel.go/src/package.js +0 -78
- package/dist/codemodel.go/src/package.js.map +0 -1
- /package/dist/codegen.go/src/{errors.js → core/errors.js} +0 -0
- /package/dist/codegen.go/src/{metadata.js → core/metadata.js} +0 -0
|
@@ -4,13 +4,19 @@
|
|
|
4
4
|
*--------------------------------------------------------------------------------------------*/
|
|
5
5
|
import { comment } from '@azure-tools/codegen';
|
|
6
6
|
import { values } from '@azure-tools/linq';
|
|
7
|
-
import * as go from '
|
|
7
|
+
import * as go from '../../../codemodel.go/src/index.js';
|
|
8
8
|
import * as helpers from './helpers.js';
|
|
9
9
|
import { ImportManager } from './imports.js';
|
|
10
10
|
import { CodegenError } from './errors.js';
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
/**
|
|
12
|
+
* Creates the content for the responses.go file.
|
|
13
|
+
*
|
|
14
|
+
* @param pkg contains the package content
|
|
15
|
+
* @param options the emitter options
|
|
16
|
+
* @returns the text for the file or the empty string
|
|
17
|
+
*/
|
|
18
|
+
export function generateResponses(pkg, options) {
|
|
19
|
+
if (pkg.responseEnvelopes.length === 0) {
|
|
14
20
|
return {
|
|
15
21
|
responses: '',
|
|
16
22
|
serDe: ''
|
|
@@ -18,13 +24,13 @@ export async function generateResponses(codeModel) {
|
|
|
18
24
|
}
|
|
19
25
|
const imports = new ImportManager();
|
|
20
26
|
const serdeImports = new ImportManager();
|
|
21
|
-
let responses = helpers.contentPreamble(
|
|
27
|
+
let responses = helpers.contentPreamble(helpers.getPackageName(pkg));
|
|
22
28
|
let serDe = '';
|
|
23
29
|
let respContent = '';
|
|
24
30
|
let serdeContent = '';
|
|
25
|
-
for (const respEnv of
|
|
31
|
+
for (const respEnv of pkg.responseEnvelopes) {
|
|
26
32
|
respContent += emit(respEnv, imports);
|
|
27
|
-
if (
|
|
33
|
+
if (options.generateFakes) {
|
|
28
34
|
serdeContent += generateMarshaller(respEnv, serdeImports);
|
|
29
35
|
}
|
|
30
36
|
serdeContent += generateUnmarshaller(respEnv, serdeImports);
|
|
@@ -32,7 +38,7 @@ export async function generateResponses(codeModel) {
|
|
|
32
38
|
responses += imports.text();
|
|
33
39
|
responses += respContent;
|
|
34
40
|
if (serdeContent.length > 0) {
|
|
35
|
-
serDe = helpers.contentPreamble(
|
|
41
|
+
serDe = helpers.contentPreamble(helpers.getPackageName(pkg));
|
|
36
42
|
serDe += serdeImports.text();
|
|
37
43
|
serDe += serdeContent;
|
|
38
44
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"responses.js","sourceRoot":"","sources":["../../../../../codegen.go/src/core/responses.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as go from '../../../codemodel.go/src/index.js';
|
|
2
|
+
export declare class Content {
|
|
3
|
+
readonly name: string;
|
|
4
|
+
readonly content: string;
|
|
5
|
+
constructor(name: string, content: string);
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Creates the content for the required time marshalling helpers.
|
|
9
|
+
*
|
|
10
|
+
* @param pkg contains the package content
|
|
11
|
+
* @param packageName optional name when emitting into the fake package
|
|
12
|
+
* @returns the text for the file or the empty string
|
|
13
|
+
*/
|
|
14
|
+
export declare function generateTimeHelpers(pkg: go.PackageContent, packageName?: string): Array<Content>;
|
|
15
|
+
//# sourceMappingURL=time.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../../../../codegen.go/src/core/time.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,MAAM,oCAAoC,CAAC;AAMzD,qBAAa,OAAO;IAClB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;gBAEb,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAI1C;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,EAAE,CAAC,cAAc,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAgIhG"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
4
4
|
*--------------------------------------------------------------------------------------------*/
|
|
5
5
|
import { values } from '@azure-tools/linq';
|
|
6
|
-
import
|
|
6
|
+
import * as helpers from './helpers.js';
|
|
7
7
|
import { ImportManager } from './imports.js';
|
|
8
8
|
import { CodegenError } from './errors.js';
|
|
9
9
|
// represents the generated content for an operation group
|
|
@@ -15,9 +15,14 @@ export class Content {
|
|
|
15
15
|
this.content = content;
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
/**
|
|
19
|
+
* Creates the content for the required time marshalling helpers.
|
|
20
|
+
*
|
|
21
|
+
* @param pkg contains the package content
|
|
22
|
+
* @param packageName optional name when emitting into the fake package
|
|
23
|
+
* @returns the text for the file or the empty string
|
|
24
|
+
*/
|
|
25
|
+
export function generateTimeHelpers(pkg, packageName) {
|
|
21
26
|
let needsDateHelper = false;
|
|
22
27
|
let needsDateTimeRFC1123Helper = false;
|
|
23
28
|
let needsDateTimeRFC3339Helper = false;
|
|
@@ -50,10 +55,10 @@ export async function generateTimeHelpers(codeModel, packageName) {
|
|
|
50
55
|
// for most packages, we must check params, response envelopes, and models
|
|
51
56
|
// for fakes, we check a subset
|
|
52
57
|
if (packageName !== 'fake') {
|
|
53
|
-
for (const client of
|
|
58
|
+
for (const client of pkg.clients) {
|
|
54
59
|
for (const method of client.methods) {
|
|
55
60
|
for (const param of method.parameters) {
|
|
56
|
-
const unwrappedParam = recursiveUnwrapMapSlice(param.type);
|
|
61
|
+
const unwrappedParam = helpers.recursiveUnwrapMapSlice(param.type);
|
|
57
62
|
if (unwrappedParam.kind !== 'time') {
|
|
58
63
|
continue;
|
|
59
64
|
}
|
|
@@ -67,24 +72,24 @@ export async function generateTimeHelpers(codeModel, packageName) {
|
|
|
67
72
|
}
|
|
68
73
|
}
|
|
69
74
|
}
|
|
70
|
-
for (const model of
|
|
75
|
+
for (const model of pkg.models) {
|
|
71
76
|
for (const field of values(model.fields)) {
|
|
72
|
-
const unwrappedField = recursiveUnwrapMapSlice(field.type);
|
|
77
|
+
const unwrappedField = helpers.recursiveUnwrapMapSlice(field.type);
|
|
73
78
|
if (unwrappedField.kind !== 'time') {
|
|
74
79
|
continue;
|
|
75
80
|
}
|
|
76
|
-
if (getSerDeFormat(model,
|
|
81
|
+
if (helpers.getSerDeFormat(model, pkg) === 'JSON') {
|
|
77
82
|
// needsSerDeHelpers helpers are for JSON only
|
|
78
83
|
needsSerDeHelpers = true;
|
|
79
84
|
}
|
|
80
85
|
setHelper(unwrappedField.format);
|
|
81
86
|
}
|
|
82
87
|
}
|
|
83
|
-
for (const respEnv of
|
|
88
|
+
for (const respEnv of pkg.responseEnvelopes) {
|
|
84
89
|
if (!respEnv.result || respEnv.result.kind !== 'monomorphicResult' || respEnv.result.format !== 'JSON') {
|
|
85
90
|
continue;
|
|
86
91
|
}
|
|
87
|
-
const unwrappedResult = recursiveUnwrapMapSlice(respEnv.result.monomorphicType);
|
|
92
|
+
const unwrappedResult = helpers.recursiveUnwrapMapSlice(respEnv.result.monomorphicType);
|
|
88
93
|
if (unwrappedResult.kind !== 'time') {
|
|
89
94
|
continue;
|
|
90
95
|
}
|
|
@@ -94,7 +99,7 @@ export async function generateTimeHelpers(codeModel, packageName) {
|
|
|
94
99
|
else {
|
|
95
100
|
// for fakes, only need to check the if the body params are of type time.Time.
|
|
96
101
|
// otherwise, the conversion happens in place
|
|
97
|
-
for (const client of
|
|
102
|
+
for (const client of pkg.clients) {
|
|
98
103
|
for (const method of client.methods) {
|
|
99
104
|
for (const param of method.parameters) {
|
|
100
105
|
if (param.kind === 'bodyParam' && param.type.kind === 'time') {
|
|
@@ -103,7 +108,7 @@ export async function generateTimeHelpers(codeModel, packageName) {
|
|
|
103
108
|
}
|
|
104
109
|
}
|
|
105
110
|
}
|
|
106
|
-
for (const respEnv of
|
|
111
|
+
for (const respEnv of pkg.responseEnvelopes) {
|
|
107
112
|
for (const header of respEnv.headers) {
|
|
108
113
|
// for header/path/query params, the conversion happens in place. the only
|
|
109
114
|
// exceptions are for timeRFC3339 and timeUnix
|
|
@@ -124,7 +129,7 @@ export async function generateTimeHelpers(codeModel, packageName) {
|
|
|
124
129
|
!needsUnixTimeHelper) {
|
|
125
130
|
return content;
|
|
126
131
|
}
|
|
127
|
-
const preamble = contentPreamble(
|
|
132
|
+
const preamble = helpers.contentPreamble(packageName ?? helpers.getPackageName(pkg), true);
|
|
128
133
|
if (needsDateTimeRFC1123Helper) {
|
|
129
134
|
content.push(new Content('time_rfc1123', generateRFC1123Helper(preamble, needsSerDeHelpers)));
|
|
130
135
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time.js","sourceRoot":"","sources":["../../../../../codegen.go/src/core/time.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as go from '../../../codemodel.go/src/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Creates the content in version.go.
|
|
4
|
+
* if version.go doesn't need to be created, the empty string is returned.
|
|
5
|
+
*
|
|
6
|
+
* @param module the module for which to generate version.go
|
|
7
|
+
* @returns the contents of version.go or the empty string
|
|
8
|
+
*/
|
|
9
|
+
export declare function generateVersionInfo(module: go.Module): string;
|
|
10
|
+
//# sourceMappingURL=version.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../../../codegen.go/src/core/version.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,MAAM,oCAAoC,CAAC;AAEzD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,GAAG,MAAM,CAa7D"}
|
|
@@ -3,27 +3,19 @@
|
|
|
3
3
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
4
4
|
*--------------------------------------------------------------------------------------------*/
|
|
5
5
|
import * as helpers from './helpers.js';
|
|
6
|
-
import { CodegenError } from './errors.js';
|
|
7
6
|
/**
|
|
8
7
|
* Creates the content in version.go.
|
|
9
8
|
* if version.go doesn't need to be created, the empty string is returned.
|
|
10
9
|
*
|
|
11
|
-
* @param
|
|
10
|
+
* @param module the module for which to generate version.go
|
|
12
11
|
* @returns the contents of version.go or the empty string
|
|
13
12
|
*/
|
|
14
|
-
export
|
|
15
|
-
|
|
16
|
-
// code is being emitted into an existing module
|
|
17
|
-
return '';
|
|
18
|
-
}
|
|
19
|
-
else if (!codeModel.options.module) {
|
|
20
|
-
throw new CodegenError('InvalidArgument', 'missing --module or --containing-module argument');
|
|
21
|
-
}
|
|
22
|
-
let text = helpers.contentPreamble(codeModel, false);
|
|
13
|
+
export function generateVersionInfo(module) {
|
|
14
|
+
let text = helpers.contentPreamble(helpers.getPackageName(module), false);
|
|
23
15
|
text += 'const (\n';
|
|
24
16
|
// strip off any major version suffix. this is for telemetry
|
|
25
17
|
// purposes, so all major versions coalesce into the same bucket
|
|
26
|
-
text += `\tmoduleName = "${
|
|
18
|
+
text += `\tmoduleName = "${module.identity.replace(/\/v\d+$/, '')}"\n`;
|
|
27
19
|
// for new modules, we seed the moduleVersion with a prerelease version
|
|
28
20
|
text += '\tmoduleVersion = "v0.1.0"\n';
|
|
29
21
|
text += ')\n\n';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../../../../codegen.go/src/core/version.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AAGxC;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAiB;IACnD,IAAI,IAAI,GAAG,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC;IAE1E,IAAI,IAAI,WAAW,CAAC;IACpB,4DAA4D;IAC5D,gEAAgE;IAChE,IAAI,IAAI,mBAAmB,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,KAAK,CAAC;IAEvE,uEAAuE;IACvE,IAAI,IAAI,8BAA8B,CAAC;IACvC,IAAI,IAAI,OAAO,CAAC;IAEhB,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as go from '../../../codemodel.go/src/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Creates the content for the required additional properties XML marshalling helpers.
|
|
4
|
+
*
|
|
5
|
+
* @param pkg contains the package content
|
|
6
|
+
* @returns the text for the file or the empty string
|
|
7
|
+
*/
|
|
8
|
+
export declare function generateXMLAdditionalPropsHelpers(pkg: go.PackageContent): string;
|
|
9
|
+
//# sourceMappingURL=xmlAdditionalProps.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xmlAdditionalProps.d.ts","sourceRoot":"","sources":["../../../../../codegen.go/src/core/xmlAdditionalProps.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,oCAAoC,CAAC;AAIzD;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAAC,GAAG,EAAE,EAAE,CAAC,cAAc,GAAG,MAAM,CAuGhF"}
|
|
@@ -2,15 +2,19 @@
|
|
|
2
2
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
3
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
4
4
|
*--------------------------------------------------------------------------------------------*/
|
|
5
|
-
import
|
|
5
|
+
import * as helpers from './helpers.js';
|
|
6
6
|
import { ImportManager } from './imports.js';
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
/**
|
|
8
|
+
* Creates the content for the required additional properties XML marshalling helpers.
|
|
9
|
+
*
|
|
10
|
+
* @param pkg contains the package content
|
|
11
|
+
* @returns the text for the file or the empty string
|
|
12
|
+
*/
|
|
13
|
+
export function generateXMLAdditionalPropsHelpers(pkg) {
|
|
10
14
|
// check if any models need this helper
|
|
11
15
|
let required = false;
|
|
12
|
-
for (const model of
|
|
13
|
-
if (getSerDeFormat(model,
|
|
16
|
+
for (const model of pkg.models) {
|
|
17
|
+
if (helpers.getSerDeFormat(model, pkg) !== 'XML') {
|
|
14
18
|
continue;
|
|
15
19
|
}
|
|
16
20
|
for (const field of model.fields) {
|
|
@@ -26,7 +30,7 @@ export async function generateXMLAdditionalPropsHelpers(codeModel) {
|
|
|
26
30
|
if (!required) {
|
|
27
31
|
return '';
|
|
28
32
|
}
|
|
29
|
-
let text = contentPreamble(
|
|
33
|
+
let text = helpers.contentPreamble(helpers.getPackageName(pkg));
|
|
30
34
|
// add standard imports
|
|
31
35
|
const imports = new ImportManager();
|
|
32
36
|
imports.add('encoding/xml');
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xmlAdditionalProps.js","sourceRoot":"","sources":["../../../../../codegen.go/src/core/xmlAdditionalProps.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAGhG,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C;;;;;GAKG;AACH,MAAM,UAAU,iCAAiC,CAAC,GAAsB;IACtE,uCAAuC;IACvC,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QAC/B,IAAI,OAAO,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC;YACjD,SAAS;QACX,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBAC9B,QAAQ,GAAG,IAAI,CAAC;gBAChB,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM;QACR,CAAC;IACH,CAAC;IAED,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,IAAI,GAAG,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;IAChE,uBAAuB;IACvB,MAAM,OAAO,GAAG,IAAI,aAAa,EAAE,CAAC;IACpC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtB,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClB,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACvB,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IACvB,IAAI,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsET,CAAC;IACA,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import * as go from '../../codemodel.go/src/index.js';
|
|
2
|
+
/** abstractions over various file handling facilities */
|
|
3
|
+
export interface FsFacilities {
|
|
4
|
+
/** checks if a file exists */
|
|
5
|
+
exists: (name: string) => Promise<boolean>;
|
|
6
|
+
/**
|
|
7
|
+
* reads the contents of a file.
|
|
8
|
+
* this function assumes the file exists.
|
|
9
|
+
*/
|
|
10
|
+
read: (name: string) => Promise<string>;
|
|
11
|
+
/** writes contents to a file */
|
|
12
|
+
write: (name: string, content: string) => Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
/** used to write a Go code model to disk */
|
|
15
|
+
export declare class Emitter {
|
|
16
|
+
private readonly codeModel;
|
|
17
|
+
private readonly fs;
|
|
18
|
+
private readonly filePrefix;
|
|
19
|
+
constructor(codeModel: go.CodeModel, fs: FsFacilities, options?: {
|
|
20
|
+
filePrefix?: string;
|
|
21
|
+
});
|
|
22
|
+
/**
|
|
23
|
+
* writes the core code model content.
|
|
24
|
+
* this content is common to both emitters.
|
|
25
|
+
*/
|
|
26
|
+
emit(): Promise<void>;
|
|
27
|
+
/** writes the cloud_config.go file */
|
|
28
|
+
emitCloudConfig(): Promise<void>;
|
|
29
|
+
/** writes the *_example_test.go files */
|
|
30
|
+
emitExamples(): Promise<void>;
|
|
31
|
+
/** writes the LICENSE.txt file */
|
|
32
|
+
emitLicenseFile(): Promise<void>;
|
|
33
|
+
/** writes the emitter metadata file */
|
|
34
|
+
emitMetadataFile(): Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* recursively emits package contents.
|
|
37
|
+
*
|
|
38
|
+
* @param emitForPkg the package contents to emit
|
|
39
|
+
*/
|
|
40
|
+
private recursiveEmit;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=emitter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emitter.d.ts","sourceRoot":"","sources":["../../../../codegen.go/src/emitter.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,iCAAiC,CAAC;AAqBtD,yDAAyD;AACzD,MAAM,WAAW,YAAY;IAC3B,8BAA8B;IAC9B,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAE3C;;;OAGG;IACH,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAExC,gCAAgC;IAChC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACzD;AAED,4CAA4C;AAC5C,qBAAa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;IACzC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAe;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,EAAE,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;IAwBxF;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA+G3B,sCAAsC;IAChC,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAUtC,yCAAyC;IACnC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAanC,kCAAkC;IAC5B,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAatC,uCAAuC;IACjC,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAWvC;;;;OAIG;YACW,aAAa;CAwB5B"}
|
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
import { generateClientFactory } from './core/clientFactory.js';
|
|
6
|
+
import { generateCloudConfig } from './core/cloudConfig.js';
|
|
7
|
+
import { generateConstants } from './core/constants.js';
|
|
8
|
+
import { generateExamples } from './core/example.js';
|
|
9
|
+
import { generateGoModFile } from './core/gomod.js';
|
|
10
|
+
import { setCustomHeaderText } from './core/helpers.js';
|
|
11
|
+
import { generateInterfaces } from './core/interfaces.js';
|
|
12
|
+
import { generateLicenseTxt } from './core/license.js';
|
|
13
|
+
import { generateMetadataFile } from './core/metadata.js';
|
|
14
|
+
import { generateModels } from './core/models.js';
|
|
15
|
+
import { generateOperations } from './core/operations.js';
|
|
16
|
+
import { generateOptions } from './core/options.js';
|
|
17
|
+
import { generatePolymorphicHelpers } from './core/polymorphics.js';
|
|
18
|
+
import { generateResponses } from './core/responses.js';
|
|
19
|
+
import { generateTimeHelpers } from './core/time.js';
|
|
20
|
+
import { generateVersionInfo } from './core/version.js';
|
|
21
|
+
import { generateXMLAdditionalPropsHelpers } from './core/xmlAdditionalProps.js';
|
|
22
|
+
import { generateServers } from './fake/servers.js';
|
|
23
|
+
import { generateServerFactory } from './fake/factory.js';
|
|
24
|
+
/** used to write a Go code model to disk */
|
|
25
|
+
export class Emitter {
|
|
26
|
+
codeModel;
|
|
27
|
+
fs;
|
|
28
|
+
filePrefix;
|
|
29
|
+
constructor(codeModel, fs, options) {
|
|
30
|
+
this.codeModel = codeModel;
|
|
31
|
+
this.fs = fs;
|
|
32
|
+
if (options?.filePrefix) {
|
|
33
|
+
this.filePrefix = options?.filePrefix;
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
this.filePrefix = '';
|
|
37
|
+
}
|
|
38
|
+
if (this.codeModel.options.headerText) {
|
|
39
|
+
setCustomHeaderText(this.codeModel.options.headerText);
|
|
40
|
+
}
|
|
41
|
+
switch (this.codeModel.root.kind) {
|
|
42
|
+
case 'containingModule':
|
|
43
|
+
sortContent(this.codeModel.root.package);
|
|
44
|
+
break;
|
|
45
|
+
case 'module':
|
|
46
|
+
sortContent(this.codeModel.root);
|
|
47
|
+
break;
|
|
48
|
+
default:
|
|
49
|
+
this.codeModel.root;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* writes the core code model content.
|
|
54
|
+
* this content is common to both emitters.
|
|
55
|
+
*/
|
|
56
|
+
async emit() {
|
|
57
|
+
if (this.codeModel.root.kind === 'module') {
|
|
58
|
+
// don't overwrite an existing go.mod file, update it if required
|
|
59
|
+
const goModFile = 'go.mod';
|
|
60
|
+
let existingGoMod;
|
|
61
|
+
if (await this.fs.exists(goModFile)) {
|
|
62
|
+
existingGoMod = await this.fs.read(goModFile);
|
|
63
|
+
}
|
|
64
|
+
const gomod = generateGoModFile(this.codeModel.root, this.codeModel.options, existingGoMod);
|
|
65
|
+
if (gomod.length > 0) {
|
|
66
|
+
await this.fs.write(goModFile, gomod);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
await this.recursiveEmit(async (pkg, write) => {
|
|
70
|
+
const clientFactory = generateClientFactory(pkg, this.codeModel.type, this.codeModel.options);
|
|
71
|
+
if (clientFactory.length > 0) {
|
|
72
|
+
await write('client_factory.go', clientFactory);
|
|
73
|
+
}
|
|
74
|
+
const constants = generateConstants(pkg);
|
|
75
|
+
if (constants.length > 0) {
|
|
76
|
+
await write('constants.go', constants);
|
|
77
|
+
}
|
|
78
|
+
const interfaces = generateInterfaces(pkg);
|
|
79
|
+
if (interfaces.length > 0) {
|
|
80
|
+
await write('interfaces.go', interfaces);
|
|
81
|
+
}
|
|
82
|
+
const operations = generateOperations(pkg, this.codeModel.type, this.codeModel.options);
|
|
83
|
+
for (const op of operations) {
|
|
84
|
+
await write(`${snakeClientFileName(op.name)}.go`, op.content);
|
|
85
|
+
}
|
|
86
|
+
const models = generateModels(pkg, this.codeModel.options);
|
|
87
|
+
if (models.models.length > 0) {
|
|
88
|
+
await write('models.go', models.models);
|
|
89
|
+
}
|
|
90
|
+
if (models.serDe.length > 0) {
|
|
91
|
+
await write('models_serde.go', models.serDe);
|
|
92
|
+
}
|
|
93
|
+
const options = generateOptions(pkg);
|
|
94
|
+
if (options.length > 0) {
|
|
95
|
+
await write('options.go', options);
|
|
96
|
+
}
|
|
97
|
+
const polymorphics = generatePolymorphicHelpers(pkg);
|
|
98
|
+
if (polymorphics.length > 0) {
|
|
99
|
+
await write('polymorphic_helpers.go', polymorphics);
|
|
100
|
+
}
|
|
101
|
+
const responses = generateResponses(pkg, this.codeModel.options);
|
|
102
|
+
if (responses.responses.length > 0) {
|
|
103
|
+
await write('responses.go', responses.responses);
|
|
104
|
+
}
|
|
105
|
+
if (responses.serDe.length > 0) {
|
|
106
|
+
await write('responses_serde.go', responses.serDe);
|
|
107
|
+
}
|
|
108
|
+
const timeHelpers = generateTimeHelpers(pkg);
|
|
109
|
+
for (const helper of timeHelpers) {
|
|
110
|
+
await write(`${helper.name.toLowerCase()}.go`, helper.content);
|
|
111
|
+
}
|
|
112
|
+
const xmlAddlProps = generateXMLAdditionalPropsHelpers(pkg);
|
|
113
|
+
if (xmlAddlProps.length > 0) {
|
|
114
|
+
await write('xml_helper.go', xmlAddlProps);
|
|
115
|
+
}
|
|
116
|
+
if (this.codeModel.options.generateFakes) {
|
|
117
|
+
const serverContent = generateServers(pkg);
|
|
118
|
+
if (serverContent.servers.length > 0) {
|
|
119
|
+
const fakesDir = 'fake';
|
|
120
|
+
for (const op of serverContent.servers) {
|
|
121
|
+
const fileName = `${snakeClientFileName(op.name, 'server')}.go`;
|
|
122
|
+
await write(fileName, op.content, fakesDir);
|
|
123
|
+
}
|
|
124
|
+
const serverFactory = generateServerFactory(pkg, this.codeModel.type);
|
|
125
|
+
if (serverFactory.length > 0) {
|
|
126
|
+
await write('server_factory.go', serverFactory, fakesDir);
|
|
127
|
+
}
|
|
128
|
+
await write('internal.go', serverContent.internals, fakesDir);
|
|
129
|
+
const timeHelpers = generateTimeHelpers(pkg, 'fake');
|
|
130
|
+
for (const helper of timeHelpers) {
|
|
131
|
+
await write(`${helper.name.toLowerCase()}.go`, helper.content, fakesDir);
|
|
132
|
+
}
|
|
133
|
+
const polymorphics = generatePolymorphicHelpers(pkg, 'fake');
|
|
134
|
+
if (polymorphics.length > 0) {
|
|
135
|
+
await write('polymorphic_helpers.go', polymorphics, fakesDir);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
// only one version.go file per module
|
|
141
|
+
if (this.codeModel.root.kind === 'module') {
|
|
142
|
+
// don't overwrite an existing version.go file
|
|
143
|
+
const versionGo = generateVersionInfo(this.codeModel.root);
|
|
144
|
+
const versionGoFileName = `${this.filePrefix}version.go`;
|
|
145
|
+
if (versionGo.length > 0 && !await this.fs.exists(versionGoFileName)) {
|
|
146
|
+
await this.fs.write(versionGoFileName, versionGo);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
/** writes the cloud_config.go file */
|
|
151
|
+
async emitCloudConfig() {
|
|
152
|
+
if (this.codeModel.root.kind !== 'module') {
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
const cloudConfig = generateCloudConfig(this.codeModel.root, this.codeModel.type);
|
|
156
|
+
if (cloudConfig.length > 0) {
|
|
157
|
+
await this.fs.write(`${this.filePrefix}cloud_config.go`, cloudConfig);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
/** writes the *_example_test.go files */
|
|
161
|
+
async emitExamples() {
|
|
162
|
+
if (!this.codeModel.options.generateExamples) {
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
await this.recursiveEmit(async (pkg, write) => {
|
|
166
|
+
const examples = generateExamples(pkg, this.codeModel.type, this.codeModel.options);
|
|
167
|
+
for (const example of examples) {
|
|
168
|
+
await write(`${snakeClientFileName(example.name)}_example_test.go`, example.content);
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
/** writes the LICENSE.txt file */
|
|
173
|
+
async emitLicenseFile() {
|
|
174
|
+
if (this.codeModel.root.kind !== 'module') {
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
// don't overwrite an existing LICENSE.txt file
|
|
178
|
+
const licenseTxt = generateLicenseTxt(this.codeModel.options);
|
|
179
|
+
const licenseTxtFileName = 'LICENSE.txt';
|
|
180
|
+
if (licenseTxt && !await this.fs.exists(licenseTxtFileName)) {
|
|
181
|
+
await this.fs.write(licenseTxtFileName, licenseTxt);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
/** writes the emitter metadata file */
|
|
185
|
+
async emitMetadataFile() {
|
|
186
|
+
if (this.codeModel.root.kind !== 'module') {
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
const metadata = generateMetadataFile(this.codeModel);
|
|
190
|
+
if (metadata.length > 0) {
|
|
191
|
+
await this.fs.write('testdata/_metadata.json', metadata);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* recursively emits package contents.
|
|
196
|
+
*
|
|
197
|
+
* @param emitForPkg the package contents to emit
|
|
198
|
+
*/
|
|
199
|
+
async recursiveEmit(emitForPkg) {
|
|
200
|
+
const recursiveEmit = async (pkg, dir) => {
|
|
201
|
+
await emitForPkg(pkg, async (name, content, subdir) => {
|
|
202
|
+
return await this.fs.write(`${dir}${subdir ? `${subdir}/` : ''}${this.filePrefix}${name}`, content);
|
|
203
|
+
});
|
|
204
|
+
// recursively emit any sub-packages
|
|
205
|
+
for (const subPkg of pkg.packages) {
|
|
206
|
+
await recursiveEmit(subPkg, `${dir}${subPkg.name}/`);
|
|
207
|
+
}
|
|
208
|
+
};
|
|
209
|
+
switch (this.codeModel.root.kind) {
|
|
210
|
+
case 'containingModule':
|
|
211
|
+
await recursiveEmit(this.codeModel.root.package, '');
|
|
212
|
+
break;
|
|
213
|
+
case 'module':
|
|
214
|
+
// when emitting a module, the root directory is the module directory
|
|
215
|
+
await recursiveEmit(this.codeModel.root, '');
|
|
216
|
+
break;
|
|
217
|
+
default:
|
|
218
|
+
this.codeModel.root;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* creates a snake cased client file name from the provided client name.
|
|
224
|
+
* the returned name will not contain the .go suffix.
|
|
225
|
+
*
|
|
226
|
+
* @param clientName the name of the client (e.g. FooClient)
|
|
227
|
+
* @param suffix the client name suffix. the default value is 'client'
|
|
228
|
+
* @returns a snaked client file name prefix (e.g. foo_client)
|
|
229
|
+
*/
|
|
230
|
+
function snakeClientFileName(clientName, suffix = 'client') {
|
|
231
|
+
clientName = clientName.toLowerCase();
|
|
232
|
+
// fileName is the client name, e.g. FooClient.
|
|
233
|
+
// insert a _ before Client, i.e. Foo_Client
|
|
234
|
+
// if the name isn't simply Client.
|
|
235
|
+
if (clientName !== suffix) {
|
|
236
|
+
clientName = `${clientName.substring(0, clientName.length - suffix.length)}_${suffix}`;
|
|
237
|
+
}
|
|
238
|
+
return clientName;
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* recursively sorts code model contents by name in alphabetical order.
|
|
242
|
+
*
|
|
243
|
+
* @param pkg the contents to sort
|
|
244
|
+
*/
|
|
245
|
+
function sortContent(pkg) {
|
|
246
|
+
const sortAscending = function (a, b) {
|
|
247
|
+
return a < b ? -1 : a > b ? 1 : 0;
|
|
248
|
+
};
|
|
249
|
+
pkg.constants.sort((a, b) => { return sortAscending(a.name, b.name); });
|
|
250
|
+
for (const enm of pkg.constants) {
|
|
251
|
+
enm.values.sort((a, b) => { return sortAscending(a.name, b.name); });
|
|
252
|
+
}
|
|
253
|
+
pkg.interfaces.sort((a, b) => { return sortAscending(a.name, b.name); });
|
|
254
|
+
for (const iface of pkg.interfaces) {
|
|
255
|
+
// we sort by literal value so that the switch/case statements in polymorphic_helpers.go
|
|
256
|
+
// are ordered by the literal value which can be somewhat different from the model name.
|
|
257
|
+
iface.possibleTypes.sort((a, b) => { return sortAscending(a.discriminatorValue.literal, b.discriminatorValue.literal); });
|
|
258
|
+
}
|
|
259
|
+
pkg.models.sort((a, b) => { return sortAscending(a.name, b.name); });
|
|
260
|
+
for (const model of pkg.models) {
|
|
261
|
+
model.fields.sort((a, b) => { return sortAscending(a.name, b.name); });
|
|
262
|
+
}
|
|
263
|
+
pkg.paramGroups.sort((a, b) => { return sortAscending(a.name, b.name); });
|
|
264
|
+
for (const paramGroup of pkg.paramGroups) {
|
|
265
|
+
paramGroup.fields.sort((a, b) => { return sortAscending(a.name, b.name); });
|
|
266
|
+
}
|
|
267
|
+
pkg.responseEnvelopes.sort((a, b) => { return sortAscending(a.name, b.name); });
|
|
268
|
+
for (const respEnv of pkg.responseEnvelopes) {
|
|
269
|
+
respEnv.headers.sort((a, b) => { return sortAscending(a.fieldName, b.fieldName); });
|
|
270
|
+
}
|
|
271
|
+
pkg.clients.sort((a, b) => { return sortAscending(a.name, b.name); });
|
|
272
|
+
for (const client of pkg.clients) {
|
|
273
|
+
if (client.instance?.kind === 'constructable') {
|
|
274
|
+
client.instance.constructors.sort((a, b) => sortAscending(a.name, b.name));
|
|
275
|
+
if (client.instance.options.kind === 'clientOptions') {
|
|
276
|
+
client.instance.options.parameters.sort((a, b) => sortAscending(a.name, b.name));
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
client.parameters.sort((a, b) => sortAscending(a.name, b.name));
|
|
280
|
+
client.methods.sort((a, b) => { return sortAscending(a.name, b.name); });
|
|
281
|
+
client.clientAccessors.sort((a, b) => { return sortAscending(a.name, b.name); });
|
|
282
|
+
for (const method of client.methods) {
|
|
283
|
+
method.httpStatusCodes.sort();
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
for (const subPkg of pkg.packages) {
|
|
287
|
+
sortContent(subPkg);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
//# sourceMappingURL=emitter.js.map
|