@azure-tools/typespec-go 0.14.2 → 0.15.0-dev.4
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/CHANGELOG.md +669 -0
- package/README.md +6 -4
- package/dist/{codegen.go/src/core/clientFactory.d.ts → src/codegen/core/client-factory.d.ts} +2 -2
- package/dist/src/codegen/core/client-factory.d.ts.map +1 -0
- package/dist/{codegen.go/src/core/clientFactory.js → src/codegen/core/client-factory.js} +29 -24
- package/dist/src/codegen/core/client-factory.js.map +1 -0
- package/dist/{codegen.go/src/core/cloudConfig.d.ts → src/codegen/core/cloud-config.d.ts} +2 -2
- package/dist/src/codegen/core/cloud-config.d.ts.map +1 -0
- package/dist/{codegen.go/src/core/cloudConfig.js → src/codegen/core/cloud-config.js} +10 -9
- package/dist/src/codegen/core/cloud-config.js.map +1 -0
- package/dist/{codegen.go/src → src/codegen}/core/constants.d.ts +1 -1
- package/dist/src/codegen/core/constants.d.ts.map +1 -0
- package/dist/{codegen.go/src → src/codegen}/core/constants.js +9 -9
- package/dist/src/codegen/core/constants.js.map +1 -0
- package/dist/{codegen.go/src → src/codegen}/core/errors.d.ts +1 -1
- package/dist/src/codegen/core/errors.d.ts.map +1 -0
- package/dist/src/codegen/core/errors.js.map +1 -0
- package/dist/{codegen.go/src → src/codegen}/core/example.d.ts +1 -1
- package/dist/src/codegen/core/example.d.ts.map +1 -0
- package/dist/{codegen.go/src → src/codegen}/core/example.js +155 -140
- package/dist/src/codegen/core/example.js.map +1 -0
- package/dist/{codegen.go/src → src/codegen}/core/gomod.d.ts +1 -1
- package/dist/src/codegen/core/gomod.d.ts.map +1 -0
- package/dist/{codegen.go/src → src/codegen}/core/gomod.js +8 -8
- package/dist/src/codegen/core/gomod.js.map +1 -0
- package/dist/{codegen.go/src → src/codegen}/core/helpers.d.ts +5 -5
- package/dist/src/codegen/core/helpers.d.ts.map +1 -0
- package/dist/{codegen.go/src → src/codegen}/core/helpers.js +308 -284
- package/dist/src/codegen/core/helpers.js.map +1 -0
- package/dist/{codegen.go/src → src/codegen}/core/imports.d.ts +1 -1
- package/dist/src/codegen/core/imports.d.ts.map +1 -0
- package/dist/{codegen.go/src → src/codegen}/core/imports.js +19 -18
- package/dist/src/codegen/core/imports.js.map +1 -0
- package/dist/{codegen.go/src → src/codegen}/core/interfaces.d.ts +1 -1
- package/dist/src/codegen/core/interfaces.d.ts.map +1 -0
- package/dist/{codegen.go/src → src/codegen}/core/interfaces.js +5 -5
- package/dist/src/codegen/core/interfaces.js.map +1 -0
- package/dist/{codegen.go/src → src/codegen}/core/license.d.ts +1 -1
- package/dist/src/codegen/core/license.d.ts.map +1 -0
- package/dist/src/codegen/core/license.js.map +1 -0
- package/dist/src/codegen/core/metadata.d.ts +3 -0
- package/dist/src/codegen/core/metadata.d.ts.map +1 -0
- package/dist/{codegen.go/src → src/codegen}/core/metadata.js +1 -1
- package/dist/src/codegen/core/metadata.js.map +1 -0
- package/dist/{codegen.go/src → src/codegen}/core/models.d.ts +2 -2
- package/dist/src/codegen/core/models.d.ts.map +1 -0
- package/dist/{codegen.go/src → src/codegen}/core/models.js +215 -184
- package/dist/src/codegen/core/models.js.map +1 -0
- package/dist/{codegen.go/src → src/codegen}/core/operations.d.ts +1 -1
- package/dist/src/codegen/core/operations.d.ts.map +1 -0
- package/dist/{codegen.go/src → src/codegen}/core/operations.js +383 -360
- package/dist/src/codegen/core/operations.js.map +1 -0
- package/dist/{codegen.go/src → src/codegen}/core/options.d.ts +1 -1
- package/dist/src/codegen/core/options.d.ts.map +1 -0
- package/dist/{codegen.go/src → src/codegen}/core/options.js +11 -11
- package/dist/src/codegen/core/options.js.map +1 -0
- package/dist/{codegen.go/src → src/codegen}/core/polymorphics.d.ts +1 -1
- package/dist/src/codegen/core/polymorphics.d.ts.map +1 -0
- package/dist/{codegen.go/src → src/codegen}/core/polymorphics.js +30 -30
- package/dist/src/codegen/core/polymorphics.js.map +1 -0
- package/dist/{codegen.go/src → src/codegen}/core/responses.d.ts +1 -1
- package/dist/src/codegen/core/responses.d.ts.map +1 -0
- package/dist/{codegen.go/src → src/codegen}/core/responses.js +28 -28
- package/dist/src/codegen/core/responses.js.map +1 -0
- package/dist/{codegen.go/src → src/codegen}/core/version.d.ts +1 -1
- package/dist/src/codegen/core/version.d.ts.map +1 -0
- package/dist/{codegen.go/src → src/codegen}/core/version.js +4 -4
- package/dist/src/codegen/core/version.js.map +1 -0
- package/dist/{codegen.go/src/core/xmlAdditionalProps.d.ts → src/codegen/core/xml-additional-props.d.ts} +2 -2
- package/dist/src/codegen/core/xml-additional-props.d.ts.map +1 -0
- package/dist/{codegen.go/src/core/xmlAdditionalProps.js → src/codegen/core/xml-additional-props.js} +11 -11
- package/dist/src/codegen/core/xml-additional-props.js.map +1 -0
- package/dist/{codegen.go/src → src/codegen}/emitter.d.ts +2 -2
- package/dist/src/codegen/emitter.d.ts.map +1 -0
- package/dist/{codegen.go/src → src/codegen}/emitter.js +58 -54
- package/dist/src/codegen/emitter.js.map +1 -0
- package/dist/{codegen.go/src → src/codegen}/fake/factory.d.ts +1 -1
- package/dist/src/codegen/fake/factory.d.ts.map +1 -0
- package/dist/{codegen.go/src → src/codegen}/fake/factory.js +22 -21
- package/dist/src/codegen/fake/factory.js.map +1 -0
- package/dist/{codegen.go/src → src/codegen}/fake/internal.d.ts +1 -1
- package/dist/src/codegen/fake/internal.d.ts.map +1 -0
- package/dist/{codegen.go/src → src/codegen}/fake/internal.js +13 -13
- package/dist/src/codegen/fake/internal.js.map +1 -0
- package/dist/{codegen.go/src → src/codegen}/fake/servers.d.ts +1 -1
- package/dist/src/codegen/fake/servers.d.ts.map +1 -0
- package/dist/{codegen.go/src → src/codegen}/fake/servers.js +332 -300
- package/dist/src/codegen/fake/servers.js.map +1 -0
- package/dist/src/codegen/index.d.ts +4 -0
- package/dist/src/codegen/index.d.ts.map +1 -0
- package/dist/{codegen.go/src → src/codegen}/index.js +3 -3
- package/dist/src/codegen/index.js.map +1 -0
- package/dist/{codemodel.go/src → src/codemodel}/client.d.ts +25 -25
- package/dist/src/codemodel/client.d.ts.map +1 -0
- package/dist/{codemodel.go/src → src/codemodel}/client.js +32 -32
- package/dist/src/codemodel/client.js.map +1 -0
- package/dist/{codemodel.go/src/codeModel.d.ts → src/codemodel/code-model.d.ts} +3 -3
- package/dist/src/codemodel/code-model.d.ts.map +1 -0
- package/dist/{codemodel.go/src/codeModel.js → src/codemodel/code-model.js} +1 -1
- package/dist/src/codemodel/code-model.js.map +1 -0
- package/dist/{codemodel.go/src → src/codemodel}/errors.d.ts +5 -5
- package/dist/src/codemodel/errors.d.ts.map +1 -0
- package/dist/{codemodel.go/src → src/codemodel}/errors.js +1 -1
- package/dist/src/codemodel/errors.js.map +1 -0
- package/dist/{codemodel.go/src → src/codemodel}/examples.d.ts +13 -13
- package/dist/src/codemodel/examples.d.ts.map +1 -0
- package/dist/{codemodel.go/src → src/codemodel}/examples.js +10 -10
- package/dist/src/codemodel/examples.js.map +1 -0
- package/dist/src/codemodel/index.d.ts +9 -0
- package/dist/src/codemodel/index.d.ts.map +1 -0
- package/dist/{codemodel.go/src → src/codemodel}/index.js +8 -8
- package/dist/src/codemodel/index.js.map +1 -0
- package/dist/{codemodel.go/src → src/codemodel}/method.d.ts +1 -1
- package/dist/src/codemodel/method.d.ts.map +1 -0
- package/dist/src/codemodel/method.js.map +1 -0
- package/dist/{codemodel.go/src → src/codemodel}/module.d.ts +8 -8
- package/dist/src/codemodel/module.d.ts.map +1 -0
- package/dist/{codemodel.go/src → src/codemodel}/module.js +12 -11
- package/dist/src/codemodel/module.js.map +1 -0
- package/dist/{codemodel.go/src → src/codemodel}/param.d.ts +26 -26
- package/dist/src/codemodel/param.d.ts.map +1 -0
- package/dist/{codemodel.go/src → src/codemodel}/param.js +56 -53
- package/dist/src/codemodel/param.js.map +1 -0
- package/dist/{codemodel.go/src → src/codemodel}/result.d.ts +15 -15
- package/dist/src/codemodel/result.d.ts.map +1 -0
- package/dist/{codemodel.go/src → src/codemodel}/result.js +27 -27
- package/dist/src/codemodel/result.js.map +1 -0
- package/dist/{codemodel.go/src → src/codemodel}/type.d.ts +30 -30
- package/dist/src/codemodel/type.d.ts.map +1 -0
- package/dist/{codemodel.go/src → src/codemodel}/type.js +77 -76
- package/dist/src/codemodel/type.js.map +1 -0
- package/dist/{typespec-go/src → src}/emitter.d.ts +2 -3
- package/dist/src/emitter.d.ts.map +1 -0
- package/dist/{typespec-go/src → src}/emitter.js +56 -45
- package/dist/src/emitter.js.map +1 -0
- package/dist/src/index.d.ts +3 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/{typespec-go/src → src}/index.js +2 -2
- package/dist/src/index.js.map +1 -0
- package/dist/{typespec-go/src → src}/lib.d.ts +16 -16
- package/dist/src/lib.d.ts.map +1 -0
- package/dist/{typespec-go/src → src}/lib.js +60 -61
- package/dist/src/lib.js.map +1 -0
- package/dist/src/naming/index.d.ts +3 -0
- package/dist/src/naming/index.d.ts.map +1 -0
- package/dist/{naming.go/src → src/naming}/index.js +2 -2
- package/dist/src/naming/index.js.map +1 -0
- package/dist/src/naming/mappings.d.ts.map +1 -0
- package/dist/src/naming/mappings.js +294 -0
- package/dist/src/naming/mappings.js.map +1 -0
- package/dist/src/naming/naming.d.ts.map +1 -0
- package/dist/{naming.go/src → src/naming}/naming.js +10 -10
- package/dist/src/naming/naming.js.map +1 -0
- package/dist/{typespec-go/src → src}/tcgcadapter/adapter.d.ts +3 -3
- package/dist/src/tcgcadapter/adapter.d.ts.map +1 -0
- package/dist/{typespec-go/src → src}/tcgcadapter/adapter.js +35 -31
- package/dist/src/tcgcadapter/adapter.js.map +1 -0
- package/dist/{typespec-go/src → src}/tcgcadapter/clients.d.ts +1 -1
- package/dist/src/tcgcadapter/clients.d.ts.map +1 -0
- package/dist/{typespec-go/src → src}/tcgcadapter/clients.js +360 -310
- package/dist/src/tcgcadapter/clients.js.map +1 -0
- package/dist/{typespec-go/src → src}/tcgcadapter/errors.d.ts +2 -2
- package/dist/src/tcgcadapter/errors.d.ts.map +1 -0
- package/dist/{typespec-go/src → src}/tcgcadapter/errors.js +1 -1
- package/dist/src/tcgcadapter/errors.js.map +1 -0
- package/dist/{typespec-go/src → src}/tcgcadapter/helpers.d.ts +3 -3
- package/dist/src/tcgcadapter/helpers.d.ts.map +1 -0
- package/dist/{typespec-go/src → src}/tcgcadapter/helpers.js +41 -30
- package/dist/src/tcgcadapter/helpers.js.map +1 -0
- package/dist/{typespec-go/src → src}/tcgcadapter/metadata.d.ts +2 -2
- package/dist/src/tcgcadapter/metadata.d.ts.map +1 -0
- package/dist/src/tcgcadapter/metadata.js +47 -0
- package/dist/src/tcgcadapter/metadata.js.map +1 -0
- package/dist/{typespec-go/src → src}/tcgcadapter/types.d.ts +2 -2
- package/dist/src/tcgcadapter/types.d.ts.map +1 -0
- package/dist/{typespec-go/src → src}/tcgcadapter/types.js +221 -193
- package/dist/src/tcgcadapter/types.js.map +1 -0
- package/package.json +77 -62
- package/dist/codegen.go/src/core/clientFactory.d.ts.map +0 -1
- package/dist/codegen.go/src/core/clientFactory.js.map +0 -1
- package/dist/codegen.go/src/core/cloudConfig.d.ts.map +0 -1
- package/dist/codegen.go/src/core/cloudConfig.js.map +0 -1
- package/dist/codegen.go/src/core/constants.d.ts.map +0 -1
- package/dist/codegen.go/src/core/constants.js.map +0 -1
- package/dist/codegen.go/src/core/errors.d.ts.map +0 -1
- package/dist/codegen.go/src/core/errors.js.map +0 -1
- package/dist/codegen.go/src/core/example.d.ts.map +0 -1
- package/dist/codegen.go/src/core/example.js.map +0 -1
- package/dist/codegen.go/src/core/gomod.d.ts.map +0 -1
- package/dist/codegen.go/src/core/gomod.js.map +0 -1
- package/dist/codegen.go/src/core/helpers.d.ts.map +0 -1
- package/dist/codegen.go/src/core/helpers.js.map +0 -1
- package/dist/codegen.go/src/core/imports.d.ts.map +0 -1
- package/dist/codegen.go/src/core/imports.js.map +0 -1
- package/dist/codegen.go/src/core/interfaces.d.ts.map +0 -1
- package/dist/codegen.go/src/core/interfaces.js.map +0 -1
- package/dist/codegen.go/src/core/license.d.ts.map +0 -1
- package/dist/codegen.go/src/core/license.js.map +0 -1
- package/dist/codegen.go/src/core/metadata.d.ts +0 -3
- package/dist/codegen.go/src/core/metadata.d.ts.map +0 -1
- package/dist/codegen.go/src/core/metadata.js.map +0 -1
- package/dist/codegen.go/src/core/models.d.ts.map +0 -1
- package/dist/codegen.go/src/core/models.js.map +0 -1
- package/dist/codegen.go/src/core/operations.d.ts.map +0 -1
- package/dist/codegen.go/src/core/operations.js.map +0 -1
- package/dist/codegen.go/src/core/options.d.ts.map +0 -1
- package/dist/codegen.go/src/core/options.js.map +0 -1
- package/dist/codegen.go/src/core/polymorphics.d.ts.map +0 -1
- package/dist/codegen.go/src/core/polymorphics.js.map +0 -1
- package/dist/codegen.go/src/core/responses.d.ts.map +0 -1
- package/dist/codegen.go/src/core/responses.js.map +0 -1
- package/dist/codegen.go/src/core/version.d.ts.map +0 -1
- package/dist/codegen.go/src/core/version.js.map +0 -1
- package/dist/codegen.go/src/core/xmlAdditionalProps.d.ts.map +0 -1
- package/dist/codegen.go/src/core/xmlAdditionalProps.js.map +0 -1
- package/dist/codegen.go/src/emitter.d.ts.map +0 -1
- package/dist/codegen.go/src/emitter.js.map +0 -1
- package/dist/codegen.go/src/fake/factory.d.ts.map +0 -1
- package/dist/codegen.go/src/fake/factory.js.map +0 -1
- package/dist/codegen.go/src/fake/internal.d.ts.map +0 -1
- package/dist/codegen.go/src/fake/internal.js.map +0 -1
- package/dist/codegen.go/src/fake/servers.d.ts.map +0 -1
- package/dist/codegen.go/src/fake/servers.js.map +0 -1
- package/dist/codegen.go/src/index.d.ts +0 -4
- package/dist/codegen.go/src/index.d.ts.map +0 -1
- package/dist/codegen.go/src/index.js.map +0 -1
- package/dist/codemodel.go/src/client.d.ts.map +0 -1
- package/dist/codemodel.go/src/client.js.map +0 -1
- package/dist/codemodel.go/src/codeModel.d.ts.map +0 -1
- package/dist/codemodel.go/src/codeModel.js.map +0 -1
- package/dist/codemodel.go/src/errors.d.ts.map +0 -1
- package/dist/codemodel.go/src/errors.js.map +0 -1
- package/dist/codemodel.go/src/examples.d.ts.map +0 -1
- package/dist/codemodel.go/src/examples.js.map +0 -1
- package/dist/codemodel.go/src/index.d.ts +0 -9
- package/dist/codemodel.go/src/index.d.ts.map +0 -1
- package/dist/codemodel.go/src/index.js.map +0 -1
- package/dist/codemodel.go/src/method.d.ts.map +0 -1
- package/dist/codemodel.go/src/method.js.map +0 -1
- package/dist/codemodel.go/src/module.d.ts.map +0 -1
- package/dist/codemodel.go/src/module.js.map +0 -1
- package/dist/codemodel.go/src/param.d.ts.map +0 -1
- package/dist/codemodel.go/src/param.js.map +0 -1
- package/dist/codemodel.go/src/result.d.ts.map +0 -1
- package/dist/codemodel.go/src/result.js.map +0 -1
- package/dist/codemodel.go/src/type.d.ts.map +0 -1
- package/dist/codemodel.go/src/type.js.map +0 -1
- package/dist/naming.go/src/index.d.ts +0 -3
- package/dist/naming.go/src/index.d.ts.map +0 -1
- package/dist/naming.go/src/index.js.map +0 -1
- package/dist/naming.go/src/mappings.d.ts.map +0 -1
- package/dist/naming.go/src/mappings.js +0 -294
- package/dist/naming.go/src/mappings.js.map +0 -1
- package/dist/naming.go/src/naming.d.ts.map +0 -1
- package/dist/naming.go/src/naming.js.map +0 -1
- package/dist/typespec-go/src/emitter.d.ts.map +0 -1
- package/dist/typespec-go/src/emitter.js.map +0 -1
- package/dist/typespec-go/src/index.d.ts +0 -3
- package/dist/typespec-go/src/index.d.ts.map +0 -1
- package/dist/typespec-go/src/index.js.map +0 -1
- package/dist/typespec-go/src/lib.d.ts.map +0 -1
- package/dist/typespec-go/src/lib.js.map +0 -1
- package/dist/typespec-go/src/tcgcadapter/adapter.d.ts.map +0 -1
- package/dist/typespec-go/src/tcgcadapter/adapter.js.map +0 -1
- package/dist/typespec-go/src/tcgcadapter/clients.d.ts.map +0 -1
- package/dist/typespec-go/src/tcgcadapter/clients.js.map +0 -1
- package/dist/typespec-go/src/tcgcadapter/errors.d.ts.map +0 -1
- package/dist/typespec-go/src/tcgcadapter/errors.js.map +0 -1
- package/dist/typespec-go/src/tcgcadapter/helpers.d.ts.map +0 -1
- package/dist/typespec-go/src/tcgcadapter/helpers.js.map +0 -1
- package/dist/typespec-go/src/tcgcadapter/metadata.d.ts.map +0 -1
- package/dist/typespec-go/src/tcgcadapter/metadata.js +0 -21
- package/dist/typespec-go/src/tcgcadapter/metadata.js.map +0 -1
- package/dist/typespec-go/src/tcgcadapter/types.d.ts.map +0 -1
- package/dist/typespec-go/src/tcgcadapter/types.js.map +0 -1
- /package/dist/{codegen.go/src → src/codegen}/core/errors.js +0 -0
- /package/dist/{codegen.go/src → src/codegen}/core/license.js +0 -0
- /package/dist/{codemodel.go/src → src/codemodel}/method.js +0 -0
- /package/dist/{naming.go/src → src/naming}/mappings.d.ts +0 -0
- /package/dist/{naming.go/src → src/naming}/naming.d.ts +0 -0
|
@@ -2,12 +2,12 @@
|
|
|
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 * as go from
|
|
6
|
-
import * as naming from
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
5
|
+
import * as go from "../../codemodel/index.js";
|
|
6
|
+
import * as naming from "../../naming/naming.js";
|
|
7
|
+
import { CodegenError } from "./errors.js";
|
|
8
|
+
import * as helpers from "./helpers.js";
|
|
9
|
+
import { ImportManager } from "./imports.js";
|
|
10
|
+
import { fixUpMethodName } from "./operations.js";
|
|
11
11
|
// represents the generated content for an example
|
|
12
12
|
export class ExampleContent {
|
|
13
13
|
name;
|
|
@@ -31,10 +31,10 @@ export function generateExamples(pkg, target, options) {
|
|
|
31
31
|
if (pkg.src.clients.length === 0) {
|
|
32
32
|
return examples;
|
|
33
33
|
}
|
|
34
|
-
const azureARM = target ===
|
|
34
|
+
const azureARM = target === "azure-arm";
|
|
35
35
|
for (const client of pkg.src.clients) {
|
|
36
36
|
// client must be constructable to create a sample
|
|
37
|
-
if (client.instance?.kind
|
|
37
|
+
if (client.instance?.kind !== "constructable") {
|
|
38
38
|
continue;
|
|
39
39
|
}
|
|
40
40
|
const imports = new ImportManager(pkg);
|
|
@@ -42,12 +42,12 @@ export function generateExamples(pkg, target, options) {
|
|
|
42
42
|
if (client.methods.length > 0) {
|
|
43
43
|
// add standard imports for clients with methods.
|
|
44
44
|
// clients that are purely hierarchical (i.e. having no APIs) won't need them.
|
|
45
|
-
imports.add(
|
|
46
|
-
imports.add(
|
|
47
|
-
imports.add(
|
|
45
|
+
imports.add("context");
|
|
46
|
+
imports.add("log");
|
|
47
|
+
imports.add("github.com/Azure/azure-sdk-for-go/sdk/azidentity");
|
|
48
48
|
imports.addForPkg(pkg.src);
|
|
49
49
|
}
|
|
50
|
-
let clientFactoryParams
|
|
50
|
+
let clientFactoryParams;
|
|
51
51
|
if (options.factoryGatherAllParams) {
|
|
52
52
|
clientFactoryParams = helpers.getAllClientParameters(pkg.src, target);
|
|
53
53
|
}
|
|
@@ -58,13 +58,13 @@ export function generateExamples(pkg, target, options) {
|
|
|
58
58
|
for (const param of clientFactoryParams) {
|
|
59
59
|
clientFactoryParamsMap.set(param.name, param);
|
|
60
60
|
}
|
|
61
|
-
let exampleText =
|
|
61
|
+
let exampleText = "";
|
|
62
62
|
for (const method of client.methods) {
|
|
63
63
|
for (const example of method.examples) {
|
|
64
64
|
const indent = new helpers.Indentation();
|
|
65
65
|
// function signature
|
|
66
66
|
exampleText += `// Generated from example definition: ${example.filePath}\n`;
|
|
67
|
-
const exampleFuncNamePrefix = method.examples.length > 1 ? `_${helpers.camelCase(example.name)}` :
|
|
67
|
+
const exampleFuncNamePrefix = method.examples.length > 1 ? `_${helpers.camelCase(example.name)}` : "";
|
|
68
68
|
exampleText += `func Example${client.name}_${fixUpMethodName(method)}${exampleFuncNamePrefix}() {\n`;
|
|
69
69
|
// create credential
|
|
70
70
|
exampleText += `${indent.get()}cred, err := azidentity.NewDefaultAzureCredential(nil)\n`;
|
|
@@ -76,7 +76,7 @@ export function generateExamples(pkg, target, options) {
|
|
|
76
76
|
// create client
|
|
77
77
|
const clientParameters = [];
|
|
78
78
|
for (const param of method.parameters) {
|
|
79
|
-
if (param.location ===
|
|
79
|
+
if (param.location === "client") {
|
|
80
80
|
if (go.isLiteralParameter(param.style)) {
|
|
81
81
|
continue;
|
|
82
82
|
}
|
|
@@ -87,7 +87,7 @@ export function generateExamples(pkg, target, options) {
|
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
89
|
// TODO: client optional parameters
|
|
90
|
-
let clientRef
|
|
90
|
+
let clientRef;
|
|
91
91
|
if (azureARM) {
|
|
92
92
|
// since not all operation has all the client factory required parameters, we need to fake for the missing ones
|
|
93
93
|
const clientFactoryParamsExample = [];
|
|
@@ -97,10 +97,13 @@ export function generateExamples(pkg, target, options) {
|
|
|
97
97
|
clientFactoryParamsExample.push(clientFactoryParam);
|
|
98
98
|
}
|
|
99
99
|
else {
|
|
100
|
-
clientFactoryParamsExample.push({
|
|
100
|
+
clientFactoryParamsExample.push({
|
|
101
|
+
parameter: clientParam,
|
|
102
|
+
value: generateFakeExample(clientParam.type, clientParam.name),
|
|
103
|
+
});
|
|
101
104
|
}
|
|
102
105
|
}
|
|
103
|
-
exampleText += `${indent.get()}clientFactory, err := ${go.getPackageName(pkg.src)}.NewClientFactory(${clientFactoryParamsExample.map((p) => getExampleValue(pkg, p.value,
|
|
106
|
+
exampleText += `${indent.get()}clientFactory, err := ${go.getPackageName(pkg.src)}.NewClientFactory(${clientFactoryParamsExample.map((p) => getExampleValue(pkg, p.value, "\t", imports, p.parameter.byValue)).join(", ")}, nil)\n`;
|
|
104
107
|
exampleText += `${indent.get()}if err != nil {\n`;
|
|
105
108
|
exampleText += `${indent.push().get()}log.Fatalf("failed to create client: %v", err)\n`;
|
|
106
109
|
exampleText += `${indent.pop().get()}}\n`;
|
|
@@ -116,25 +119,28 @@ export function generateExamples(pkg, target, options) {
|
|
|
116
119
|
clientPrivateParameters.push(existingParam);
|
|
117
120
|
}
|
|
118
121
|
else {
|
|
119
|
-
clientPrivateParameters.push({
|
|
122
|
+
clientPrivateParameters.push({
|
|
123
|
+
parameter: ctorParam,
|
|
124
|
+
value: generateFakeExample(ctorParam.type, ctorParam.name),
|
|
125
|
+
});
|
|
120
126
|
}
|
|
121
127
|
}
|
|
122
128
|
if (clientPrivateParameters.length > 0) {
|
|
123
|
-
clientRef += `${clientPrivateParameters.map((p) => getExampleValue(pkg, p.value,
|
|
129
|
+
clientRef += `${clientPrivateParameters.map((p) => getExampleValue(pkg, p.value, "\t", imports, p.parameter.byValue).slice(1)).join(", ")}`;
|
|
124
130
|
}
|
|
125
131
|
clientRef += `)`;
|
|
126
132
|
}
|
|
127
133
|
else {
|
|
128
|
-
exampleText += `${indent.get()}client, err := ${go.getPackageName(client.instance.constructors[0].pkg)}.${client.instance.constructors[0].name}(${clientParameters.map((p) => getExampleValue(pkg, p.value,
|
|
134
|
+
exampleText += `${indent.get()}client, err := ${go.getPackageName(client.instance.constructors[0].pkg)}.${client.instance.constructors[0].name}(${clientParameters.map((p) => getExampleValue(pkg, p.value, "\t", imports, p.parameter.byValue).slice(1)).join(", ")}, cred, nil)\n`;
|
|
129
135
|
exampleText += `${indent.get()}if err != nil {\n`;
|
|
130
136
|
exampleText += `${indent.push().get()}log.Fatalf("failed to create client: %v", err)\n`;
|
|
131
137
|
exampleText += `${indent.pop().get()}}\n`;
|
|
132
|
-
clientRef =
|
|
138
|
+
clientRef = "client";
|
|
133
139
|
}
|
|
134
140
|
// call method, using getMethodParameters for correct ordering (including required param groups)
|
|
135
141
|
const renderedParams = [];
|
|
136
142
|
for (const methodParam of helpers.getMethodParameters(method)) {
|
|
137
|
-
if (methodParam.kind ===
|
|
143
|
+
if (methodParam.kind === "paramGroup") {
|
|
138
144
|
if (methodParam === method.optionalParamsGroup)
|
|
139
145
|
continue;
|
|
140
146
|
imports.addForPkg(methodParam.pkg);
|
|
@@ -144,7 +150,7 @@ export function generateExamples(pkg, target, options) {
|
|
|
144
150
|
continue;
|
|
145
151
|
fieldTexts.push(`${naming.capitalize(groupParam.name)}: ${getParamExampleValue(pkg, groupParam, example, imports)}`);
|
|
146
152
|
}
|
|
147
|
-
renderedParams.push(`${go.getPackageName(methodParam.pkg)}.${methodParam.groupName}{${fieldTexts.join(
|
|
153
|
+
renderedParams.push(`${go.getPackageName(methodParam.pkg)}.${methodParam.groupName}{${fieldTexts.join(", ")}}`);
|
|
148
154
|
}
|
|
149
155
|
else {
|
|
150
156
|
if (!shouldRenderParam(methodParam, example))
|
|
@@ -152,47 +158,48 @@ export function generateExamples(pkg, target, options) {
|
|
|
152
158
|
renderedParams.push(getParamExampleValue(pkg, methodParam, example, imports));
|
|
153
159
|
}
|
|
154
160
|
}
|
|
155
|
-
const methodOptionalParameters = example.optionalParamsGroup.filter((p) => p.parameter.location ===
|
|
161
|
+
const methodOptionalParameters = example.optionalParamsGroup.filter((p) => p.parameter.location === "method");
|
|
156
162
|
const checkResponse = example.responseEnvelope !== undefined;
|
|
157
|
-
let methodOptionalParametersText =
|
|
163
|
+
let methodOptionalParametersText = "nil";
|
|
158
164
|
if (methodOptionalParameters.length > 0) {
|
|
159
165
|
methodOptionalParametersText = `&${go.getPackageName(method.optionalParamsGroup.pkg)}.${method.optionalParamsGroup.groupName}{\n`;
|
|
160
166
|
methodOptionalParametersText += methodOptionalParameters
|
|
161
|
-
.map((p) => `${naming.capitalize(p.parameter.name)}: ${getExampleValue(pkg, p.value,
|
|
162
|
-
.join(
|
|
167
|
+
.map((p) => `${naming.capitalize(p.parameter.name)}: ${getExampleValue(pkg, p.value, "\t", imports, isParamByValue(p)).slice(1)}`)
|
|
168
|
+
.join(",\n");
|
|
163
169
|
methodOptionalParametersText += `}`;
|
|
164
170
|
}
|
|
165
171
|
switch (method.kind) {
|
|
166
|
-
case
|
|
167
|
-
case
|
|
168
|
-
exampleText += `${indent.get()}poller, err := ${clientRef}.${fixUpMethodName(method)}(ctx, ${renderedParams.join(
|
|
172
|
+
case "lroMethod":
|
|
173
|
+
case "lroPageableMethod":
|
|
174
|
+
exampleText += `${indent.get()}poller, err := ${clientRef}.${fixUpMethodName(method)}(ctx, ${renderedParams.join(", ")}${renderedParams.length > 0 ? ", " : ""}${methodOptionalParametersText.split("\n").join("\n" + indent.get())})\n`;
|
|
169
175
|
exampleText += `${indent.get()}if err != nil {\n`;
|
|
170
176
|
exampleText += `${indent.push().get()}log.Fatalf("failed to finish the request: %v", err)\n`;
|
|
171
177
|
exampleText += `${indent.pop().get()}}\n`;
|
|
172
|
-
exampleText += `${indent.get()}${checkResponse ?
|
|
178
|
+
exampleText += `${indent.get()}${checkResponse ? "res" : "_"}, err ${checkResponse ? ":=" : "="} poller.PollUntilDone(ctx, nil)\n`;
|
|
173
179
|
exampleText += `${indent.get()}if err != nil {\n`;
|
|
174
180
|
exampleText += `${indent.push().get()}log.Fatalf("failed to poll the result: %v", err)\n`;
|
|
175
181
|
exampleText += `${indent.pop().get()}}\n`;
|
|
176
182
|
break;
|
|
177
|
-
case
|
|
178
|
-
exampleText += `${indent.get()}${checkResponse ?
|
|
183
|
+
case "method":
|
|
184
|
+
exampleText += `${indent.get()}${checkResponse ? "res" : "_"}, err ${checkResponse ? ":=" : "="} ${clientRef}.${fixUpMethodName(method)}(ctx, ${renderedParams.join(", ")}${renderedParams.length > 0 ? ", " : ""}${methodOptionalParametersText.split("\n").join("\n" + indent.get())})\n`;
|
|
179
185
|
exampleText += `${indent.get()}if err != nil {\n`;
|
|
180
186
|
exampleText += `${indent.push().get()}log.Fatalf("failed to finish the request: %v", err)\n`;
|
|
181
187
|
exampleText += `${indent.pop().get()}}\n`;
|
|
182
188
|
break;
|
|
183
|
-
case
|
|
184
|
-
exampleText += `${indent.get()}pager := ${clientRef}.${fixUpMethodName(method)}(${renderedParams.join(
|
|
189
|
+
case "pageableMethod":
|
|
190
|
+
exampleText += `${indent.get()}pager := ${clientRef}.${fixUpMethodName(method)}(${renderedParams.join(", ")}${renderedParams.length > 0 ? ", " : ""}${methodOptionalParametersText.split("\n").join("\n" + indent.get())})\n`;
|
|
185
191
|
break;
|
|
186
192
|
default:
|
|
187
193
|
method;
|
|
188
194
|
}
|
|
189
195
|
// check response
|
|
190
|
-
if ((method.kind ===
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
196
|
+
if ((method.kind === "lroPageableMethod" || method.kind === "pageableMethod") &&
|
|
197
|
+
example.responseEnvelope) {
|
|
198
|
+
let resultName = "pager";
|
|
199
|
+
if (method.kind === "lroPageableMethod") {
|
|
200
|
+
resultName = "res";
|
|
194
201
|
}
|
|
195
|
-
const itemType = method.returns.result.modelType.fields.find((f) => f.type.kind ===
|
|
202
|
+
const itemType = method.returns.result.modelType.fields.find((f) => f.type.kind === "slice");
|
|
196
203
|
exampleText += `${indent.get()}for ${resultName}.More() {\n`;
|
|
197
204
|
exampleText += `${indent.push().get()}page, err := ${resultName}.NextPage(ctx)\n`;
|
|
198
205
|
exampleText += `${indent.get()}if err != nil {\n`;
|
|
@@ -205,11 +212,11 @@ export function generateExamples(pkg, target, options) {
|
|
|
205
212
|
exampleText += `${indent.get()}// If the HTTP response code is 200 as defined in example definition, your page structure would look as follows. Please pay attention that all the values in the output are fake values for just demo purposes.\n`;
|
|
206
213
|
exampleText += `${indent.get()}// page = ${go.getPackageName(example.responseEnvelope.response.method.receiver.type.pkg)}.${example.responseEnvelope.response.name}{\n`;
|
|
207
214
|
for (const header of example.responseEnvelope.headers ?? []) {
|
|
208
|
-
exampleText += `${indent.get()}// \t${header.header.fieldName}: ${getExampleValue(pkg, header.value,
|
|
209
|
-
.split(
|
|
215
|
+
exampleText += `${indent.get()}// \t${header.header.fieldName}: ${getExampleValue(pkg, header.value, "", undefined, header.header.byValue)
|
|
216
|
+
.split("\n")
|
|
210
217
|
.join(`\n${indent.get()}// \t`)},\n`;
|
|
211
218
|
}
|
|
212
|
-
exampleText += `${indent.get()}// \t${example.responseEnvelope.result.type.name}: ${getExampleValue(pkg, example.responseEnvelope.result,
|
|
219
|
+
exampleText += `${indent.get()}// \t${example.responseEnvelope.result.type.name}: ${getExampleValue(pkg, example.responseEnvelope.result, "", undefined, true).split("\n").join(`\n${indent.get()}// \t`)},\n`;
|
|
213
220
|
exampleText += `${indent.get()}// }\n`;
|
|
214
221
|
exampleText += `${indent.pop().get()}}\n`;
|
|
215
222
|
}
|
|
@@ -221,23 +228,25 @@ export function generateExamples(pkg, target, options) {
|
|
|
221
228
|
exampleText += `${indent.get()}// If the HTTP response code is 200 as defined in example definition, your response structure would look as follows. Please pay attention that all the values in the output are fake values for just demo purposes.\n`;
|
|
222
229
|
exampleText += `${indent.get()}// res = ${go.getPackageName(example.responseEnvelope.response.method.receiver.type.pkg)}.${example.responseEnvelope.response.name}{\n`;
|
|
223
230
|
for (const header of example.responseEnvelope?.headers ?? []) {
|
|
224
|
-
exampleText += `${indent.get()}// \t${header.header.fieldName}: ${getExampleValue(pkg, header.value,
|
|
225
|
-
.split(
|
|
231
|
+
exampleText += `${indent.get()}// \t${header.header.fieldName}: ${getExampleValue(pkg, header.value, "", undefined, header.header.byValue)
|
|
232
|
+
.split("\n")
|
|
226
233
|
.join(`\n${indent.get()}// \t`)},\n`;
|
|
227
234
|
}
|
|
228
235
|
if (example.responseEnvelope?.result) {
|
|
229
236
|
// modelResult and polymorphicResult are anonymously embedded by value in the response struct.
|
|
230
237
|
// monomorphicResult has an explicit byValue property. all other result types default to by value.
|
|
231
238
|
let resultByValue = true;
|
|
232
|
-
let resultFieldName = fieldName
|
|
233
|
-
|
|
239
|
+
let resultFieldName = fieldName
|
|
240
|
+
? fieldName
|
|
241
|
+
: (example.responseEnvelope?.result.type).name;
|
|
242
|
+
if (method.returns.result?.kind === "monomorphicResult") {
|
|
234
243
|
resultByValue = method.returns.result.byValue;
|
|
235
244
|
}
|
|
236
|
-
else if (method.returns.result?.kind ===
|
|
245
|
+
else if (method.returns.result?.kind === "polymorphicResult") {
|
|
237
246
|
resultFieldName = method.returns.result.interface.name;
|
|
238
247
|
resultByValue = false;
|
|
239
248
|
}
|
|
240
|
-
exampleText += `${indent.get()}// \t${resultFieldName}: ${getExampleValue(pkg, example.responseEnvelope.result,
|
|
249
|
+
exampleText += `${indent.get()}// \t${resultFieldName}: ${getExampleValue(pkg, example.responseEnvelope.result, "", undefined, resultByValue).split("\n").join(`\n${indent.get()}// \t`)},\n`;
|
|
241
250
|
}
|
|
242
251
|
exampleText += `${indent.get()}// }\n`;
|
|
243
252
|
}
|
|
@@ -245,7 +254,7 @@ export function generateExamples(pkg, target, options) {
|
|
|
245
254
|
}
|
|
246
255
|
}
|
|
247
256
|
// if no example, then do not generate example file
|
|
248
|
-
if (exampleText ===
|
|
257
|
+
if (exampleText === "")
|
|
249
258
|
continue;
|
|
250
259
|
// stitch it all together
|
|
251
260
|
let text = helpers.contentPreamble(pkg);
|
|
@@ -257,80 +266,80 @@ export function generateExamples(pkg, target, options) {
|
|
|
257
266
|
}
|
|
258
267
|
function getExampleValue(pkg, example, indent, imports, byValue = false, inArray = false) {
|
|
259
268
|
switch (example.kind) {
|
|
260
|
-
case
|
|
269
|
+
case "string": {
|
|
261
270
|
let exampleText = `"${escapeString(example.value)}"`;
|
|
262
|
-
if (example.type.kind ===
|
|
271
|
+
if (example.type.kind === "constant") {
|
|
263
272
|
exampleText = getConstantValue(pkg, example.type, example.value);
|
|
264
273
|
}
|
|
265
|
-
else if (example.type.kind ===
|
|
274
|
+
else if (example.type.kind === "time") {
|
|
266
275
|
exampleText = getTimeValue(example.type, example.value, imports);
|
|
267
276
|
}
|
|
268
|
-
else if (example.type.kind ===
|
|
277
|
+
else if (example.type.kind === "encodedBytes") {
|
|
269
278
|
exampleText = `[]byte("${escapeString(example.value)}")`;
|
|
270
279
|
}
|
|
271
|
-
else if (example.type.kind ===
|
|
280
|
+
else if (example.type.kind === "literal" && example.type.type.kind === "constant") {
|
|
272
281
|
exampleText = getConstantValue(pkg, example.type.type, example.type.literal.value);
|
|
273
282
|
}
|
|
274
|
-
else if (example.type.kind ===
|
|
283
|
+
else if (example.type.kind === "etag") {
|
|
275
284
|
imports?.add(example.type.module);
|
|
276
285
|
exampleText = `${go.getTypeDeclaration(example.type, pkg)}("${escapeString(example.value)}")`;
|
|
277
286
|
}
|
|
278
|
-
else if (example.type.kind ===
|
|
287
|
+
else if (example.type.kind === "scalar" && example.type.type === "byte") {
|
|
279
288
|
exampleText = `io.NopCloser(bytes.NewReader([]byte("${escapeString(example.value)}")))`;
|
|
280
289
|
}
|
|
281
|
-
else if (example.type.kind ===
|
|
282
|
-
imports?.add(
|
|
283
|
-
imports?.add(
|
|
290
|
+
else if (example.type.kind === "readSeekCloser") {
|
|
291
|
+
imports?.add("bytes");
|
|
292
|
+
imports?.add("github.com/Azure/azure-sdk-for-go/sdk/azcore/streaming");
|
|
284
293
|
exampleText = `streaming.NopCloser(bytes.NewReader([]byte("${escapeString(example.value)}")))`;
|
|
285
294
|
}
|
|
286
295
|
return `${indent}${getPointerValue(example.type, exampleText, byValue, imports)}`;
|
|
287
296
|
}
|
|
288
|
-
case
|
|
297
|
+
case "number": {
|
|
289
298
|
let exampleText = `${example.value}`;
|
|
290
299
|
switch (example.type.kind) {
|
|
291
|
-
case
|
|
300
|
+
case "constant":
|
|
292
301
|
exampleText = `${indent}${getConstantValue(pkg, example.type, example.value)}`;
|
|
293
302
|
break;
|
|
294
|
-
case
|
|
303
|
+
case "time":
|
|
295
304
|
exampleText = getTimeValue(example.type, example.value, imports);
|
|
296
305
|
break;
|
|
297
306
|
}
|
|
298
307
|
return `${indent}${getPointerValue(example.type, exampleText, byValue, imports)}`;
|
|
299
308
|
}
|
|
300
|
-
case
|
|
309
|
+
case "boolean": {
|
|
301
310
|
let exampleText = `${example.value}`;
|
|
302
|
-
if (example.type.kind ===
|
|
311
|
+
if (example.type.kind === "constant") {
|
|
303
312
|
exampleText = `${indent}${getConstantValue(pkg, example.type, example.value)}`;
|
|
304
313
|
}
|
|
305
314
|
return `${indent}${getPointerValue(example.type, exampleText, byValue, imports)}`;
|
|
306
315
|
}
|
|
307
|
-
case
|
|
316
|
+
case "null":
|
|
308
317
|
return `${indent}nil`;
|
|
309
|
-
case
|
|
318
|
+
case "any":
|
|
310
319
|
return jsonToGo(example.value, indent);
|
|
311
|
-
case
|
|
320
|
+
case "array": {
|
|
312
321
|
const isElementByValue = example.type.elementTypeByValue;
|
|
313
322
|
// if polymorphic, need to add type name in array, so inArray will be set to false
|
|
314
323
|
// if other case, no need to add type name in array, so inArray will be set to true
|
|
315
|
-
const isElementPolymorphic = example.type.elementType.kind ===
|
|
324
|
+
const isElementPolymorphic = example.type.elementType.kind === "interface";
|
|
316
325
|
let exampleText = `${indent}${getRef(byValue)}${go.getTypeDeclaration(example.type, pkg)}{\n`;
|
|
317
326
|
for (const element of example.value) {
|
|
318
|
-
exampleText += `${getExampleValue(pkg, element, indent +
|
|
327
|
+
exampleText += `${getExampleValue(pkg, element, indent + "\t", imports, isElementByValue && !isElementPolymorphic, !isElementPolymorphic)},\n`;
|
|
319
328
|
}
|
|
320
329
|
exampleText += `${indent}}`;
|
|
321
330
|
return exampleText;
|
|
322
331
|
}
|
|
323
|
-
case
|
|
332
|
+
case "dictionary": {
|
|
324
333
|
let exampleText = `${indent}${getRef(byValue)}${go.getTypeDeclaration(example.type, pkg)}{\n`;
|
|
325
334
|
const isValueByValue = example.type.valueTypeByValue;
|
|
326
|
-
const isValuePolymorphic = example.type.valueType.kind ===
|
|
335
|
+
const isValuePolymorphic = example.type.valueType.kind === "interface";
|
|
327
336
|
for (const key in example.value) {
|
|
328
|
-
exampleText += `${indent}\t"${key}": ${getExampleValue(pkg, example.value[key], indent +
|
|
337
|
+
exampleText += `${indent}\t"${key}": ${getExampleValue(pkg, example.value[key], indent + "\t", imports, isValueByValue && !isValuePolymorphic).slice(indent.length + 1)},\n`;
|
|
329
338
|
}
|
|
330
339
|
exampleText += `${indent}}`;
|
|
331
340
|
return exampleText;
|
|
332
341
|
}
|
|
333
|
-
case
|
|
342
|
+
case "model": {
|
|
334
343
|
let exampleText = `${indent}${getRef(byValue)}${go.getTypeDeclaration(example.type, pkg)}{\n`;
|
|
335
344
|
if (inArray) {
|
|
336
345
|
exampleText = `${indent}{\n`;
|
|
@@ -338,31 +347,31 @@ function getExampleValue(pkg, example, indent, imports, byValue = false, inArray
|
|
|
338
347
|
for (const field in example.value) {
|
|
339
348
|
const goField = example.type.fields.find((f) => f.name === field);
|
|
340
349
|
const isFieldByValue = goField.byValue ?? false;
|
|
341
|
-
const isFieldPolymorphic = goField.type.kind ===
|
|
342
|
-
exampleText += `${indent}\t${field}: ${getExampleValue(pkg, example.value[field], indent +
|
|
350
|
+
const isFieldPolymorphic = goField.type.kind === "interface";
|
|
351
|
+
exampleText += `${indent}\t${field}: ${getExampleValue(pkg, example.value[field], indent + "\t", imports, isFieldByValue && !isFieldPolymorphic).slice(indent.length + 1)},\n`;
|
|
343
352
|
}
|
|
344
353
|
if (example.additionalProperties) {
|
|
345
354
|
const additionalPropertiesField = example.type.fields.find((f) => f.annotations.isAdditionalProperties);
|
|
346
|
-
if (additionalPropertiesField.type.kind !==
|
|
347
|
-
throw new CodegenError(
|
|
355
|
+
if (additionalPropertiesField.type.kind !== "map") {
|
|
356
|
+
throw new CodegenError("InternalError", `additional properties field type should be map type`);
|
|
348
357
|
}
|
|
349
358
|
const isAdditionalPropertiesFieldByValue = additionalPropertiesField.type.valueTypeByValue ?? false;
|
|
350
|
-
const isAdditionalPropertiesPolymorphic = additionalPropertiesField.type.valueType.kind ===
|
|
359
|
+
const isAdditionalPropertiesPolymorphic = additionalPropertiesField.type.valueType.kind === "interface";
|
|
351
360
|
exampleText += `${indent}\t${additionalPropertiesField.name}: ${getRef(additionalPropertiesField.byValue)}${go.getTypeDeclaration(additionalPropertiesField.type, pkg)}{\n`;
|
|
352
361
|
for (const key in example.additionalProperties) {
|
|
353
|
-
exampleText += `${indent}\t"${key}": ${getExampleValue(pkg, example.additionalProperties[key], indent +
|
|
362
|
+
exampleText += `${indent}\t"${key}": ${getExampleValue(pkg, example.additionalProperties[key], indent + "\t", imports, isAdditionalPropertiesFieldByValue && !isAdditionalPropertiesPolymorphic).slice(indent.length + 1)},\n`;
|
|
354
363
|
}
|
|
355
364
|
exampleText += `${indent}},\n`;
|
|
356
365
|
}
|
|
357
366
|
exampleText += `${indent}}`;
|
|
358
367
|
return exampleText;
|
|
359
368
|
}
|
|
360
|
-
case
|
|
369
|
+
case "tokenCredential":
|
|
361
370
|
return example.value;
|
|
362
371
|
}
|
|
363
372
|
}
|
|
364
373
|
function getRef(byValue) {
|
|
365
|
-
return byValue ?
|
|
374
|
+
return byValue ? "" : "&";
|
|
366
375
|
}
|
|
367
376
|
function getConstantValue(pkg, type, value) {
|
|
368
377
|
for (const constantValue of type.values) {
|
|
@@ -371,7 +380,7 @@ function getConstantValue(pkg, type, value) {
|
|
|
371
380
|
}
|
|
372
381
|
}
|
|
373
382
|
switch (type.type) {
|
|
374
|
-
case
|
|
383
|
+
case "string":
|
|
375
384
|
return `${go.getTypeDeclaration(type, pkg)}("${value}")`;
|
|
376
385
|
default:
|
|
377
386
|
return `${go.getTypeDeclaration(type, pkg)}(${value})`;
|
|
@@ -385,13 +394,13 @@ function getTimeValue(type, value, imports) {
|
|
|
385
394
|
RFC3339: helpers.RFC3339Format,
|
|
386
395
|
};
|
|
387
396
|
if (type.format in formatMap) {
|
|
388
|
-
imports?.add(
|
|
397
|
+
imports?.add("time");
|
|
389
398
|
const format = formatMap[type.format];
|
|
390
399
|
return `func() time.Time { t, _ := time.Parse(${format}, "${value}"); return t}()`;
|
|
391
400
|
}
|
|
392
401
|
else {
|
|
393
|
-
imports?.add(
|
|
394
|
-
imports?.add(
|
|
402
|
+
imports?.add("strconv");
|
|
403
|
+
imports?.add("time");
|
|
395
404
|
return `func() time.Time { t, _ := strconv.ParseInt(${value}, 10, 64); return time.Unix(t, 0).UTC()}()`;
|
|
396
405
|
}
|
|
397
406
|
}
|
|
@@ -400,62 +409,62 @@ function getPointerValue(type, valueString, byValue, imports) {
|
|
|
400
409
|
return valueString;
|
|
401
410
|
}
|
|
402
411
|
switch (type.kind) {
|
|
403
|
-
case
|
|
404
|
-
case
|
|
405
|
-
case
|
|
406
|
-
case
|
|
407
|
-
case
|
|
408
|
-
case
|
|
412
|
+
case "any":
|
|
413
|
+
case "constant":
|
|
414
|
+
case "constantDef":
|
|
415
|
+
case "etag":
|
|
416
|
+
case "string":
|
|
417
|
+
case "time":
|
|
409
418
|
if (imports)
|
|
410
|
-
imports.add(
|
|
419
|
+
imports.add("github.com/Azure/azure-sdk-for-go/sdk/azcore/to");
|
|
411
420
|
return `to.Ptr(${valueString})`;
|
|
412
|
-
case
|
|
421
|
+
case "literal":
|
|
413
422
|
// unwrap the literal and delegate to the inner type's case
|
|
414
423
|
return getPointerValue(type.type, valueString, byValue, imports);
|
|
415
|
-
case
|
|
416
|
-
if (type.type ===
|
|
424
|
+
case "scalar": {
|
|
425
|
+
if (type.type === "byte") {
|
|
417
426
|
return valueString;
|
|
418
427
|
}
|
|
419
|
-
let prtType
|
|
428
|
+
let prtType;
|
|
420
429
|
switch (type.type) {
|
|
421
430
|
case `bool`:
|
|
422
431
|
case `rune`:
|
|
423
|
-
prtType =
|
|
432
|
+
prtType = "Ptr";
|
|
424
433
|
break;
|
|
425
434
|
default:
|
|
426
435
|
prtType = `Ptr[${type.type}]`;
|
|
427
436
|
}
|
|
428
437
|
if (imports)
|
|
429
|
-
imports.add(
|
|
438
|
+
imports.add("github.com/Azure/azure-sdk-for-go/sdk/azcore/to");
|
|
430
439
|
return `to.${prtType}(${valueString})`;
|
|
431
440
|
}
|
|
432
|
-
case
|
|
441
|
+
case "readSeekCloser":
|
|
433
442
|
return valueString;
|
|
434
443
|
default:
|
|
435
444
|
return `&${valueString}`;
|
|
436
445
|
}
|
|
437
446
|
}
|
|
438
447
|
function jsonToGo(value, indent) {
|
|
439
|
-
if (typeof value ===
|
|
448
|
+
if (typeof value === "string") {
|
|
440
449
|
return `${indent}"${escapeString(value)}"`;
|
|
441
450
|
}
|
|
442
|
-
else if (typeof value ===
|
|
451
|
+
else if (typeof value === "number" || typeof value === "bigint") {
|
|
443
452
|
return `${indent}${value}`;
|
|
444
453
|
}
|
|
445
|
-
else if (typeof value ===
|
|
454
|
+
else if (typeof value === "boolean") {
|
|
446
455
|
return `${indent}${value}`;
|
|
447
456
|
}
|
|
448
|
-
else if (typeof value ===
|
|
457
|
+
else if (typeof value === "undefined") {
|
|
449
458
|
return `${indent}nil`;
|
|
450
459
|
}
|
|
451
|
-
else if (typeof value ===
|
|
460
|
+
else if (typeof value === "object") {
|
|
452
461
|
if (value === null) {
|
|
453
462
|
return `${indent}nil`;
|
|
454
463
|
}
|
|
455
464
|
else if (Array.isArray(value)) {
|
|
456
465
|
let result = `${indent}[]any{\n`;
|
|
457
466
|
for (const item of value) {
|
|
458
|
-
result += `${jsonToGo(item, indent +
|
|
467
|
+
result += `${jsonToGo(item, indent + "\t")},\n`;
|
|
459
468
|
}
|
|
460
469
|
result += `${indent}}`;
|
|
461
470
|
return result;
|
|
@@ -463,70 +472,76 @@ function jsonToGo(value, indent) {
|
|
|
463
472
|
else {
|
|
464
473
|
let result = `${indent}map[string]any{\n`;
|
|
465
474
|
for (const key in value) {
|
|
466
|
-
result += `${indent}\t"${key}": ${jsonToGo(value[key], indent +
|
|
475
|
+
result += `${indent}\t"${key}": ${jsonToGo(value[key], indent + "\t").slice(indent.length + 1)},\n`;
|
|
467
476
|
}
|
|
468
477
|
result += `${indent}}`;
|
|
469
478
|
return result;
|
|
470
479
|
}
|
|
471
480
|
}
|
|
472
|
-
return
|
|
481
|
+
return "";
|
|
473
482
|
}
|
|
474
483
|
function generateFakeExample(goType, name) {
|
|
475
484
|
switch (goType.kind) {
|
|
476
|
-
case
|
|
485
|
+
case "any":
|
|
477
486
|
return new go.NullExample(goType);
|
|
478
|
-
case
|
|
487
|
+
case "constant":
|
|
479
488
|
switch (goType.type) {
|
|
480
|
-
case
|
|
489
|
+
case "bool":
|
|
481
490
|
return new go.BooleanExample(goType.values[0].value, goType);
|
|
482
|
-
case
|
|
491
|
+
case "string":
|
|
483
492
|
return new go.StringExample(goType.values[0].value, goType);
|
|
484
493
|
default:
|
|
485
494
|
return new go.NumberExample(goType.values[0].value, goType);
|
|
486
495
|
}
|
|
487
|
-
case
|
|
496
|
+
case "literal":
|
|
488
497
|
return new go.StringExample(goType.literal, goType);
|
|
489
|
-
case
|
|
498
|
+
case "scalar":
|
|
490
499
|
switch (goType.type) {
|
|
491
|
-
case
|
|
500
|
+
case "bool":
|
|
492
501
|
return new go.BooleanExample(false, goType);
|
|
493
|
-
case
|
|
494
|
-
case
|
|
495
|
-
return new go.StringExample(`<${name ??
|
|
502
|
+
case "byte":
|
|
503
|
+
case "rune":
|
|
504
|
+
return new go.StringExample(`<${name ?? "test"}>`, goType);
|
|
496
505
|
default:
|
|
497
506
|
return new go.NumberExample(0, goType);
|
|
498
507
|
}
|
|
499
|
-
case
|
|
500
|
-
return new go.StringExample(`<${name ??
|
|
501
|
-
case
|
|
508
|
+
case "string":
|
|
509
|
+
return new go.StringExample(`<${name ?? "test"}>`, goType);
|
|
510
|
+
case "tokenCredential":
|
|
502
511
|
// we hard code the credential var name to cred
|
|
503
|
-
return new go.TokenCredentialExample(
|
|
504
|
-
case
|
|
505
|
-
return new go.StringExample(`<${name ??
|
|
506
|
-
case
|
|
512
|
+
return new go.TokenCredentialExample("cred");
|
|
513
|
+
case "encodedBytes":
|
|
514
|
+
return new go.StringExample(`<${name ?? "test"}>`, goType);
|
|
515
|
+
case "time":
|
|
507
516
|
// use a placeholder date value for time types
|
|
508
|
-
return new go.StringExample(
|
|
509
|
-
case
|
|
510
|
-
return new go.StringExample(`<${name ??
|
|
511
|
-
case
|
|
512
|
-
case
|
|
517
|
+
return new go.StringExample("2006-01-02T15:04:05Z", goType);
|
|
518
|
+
case "etag":
|
|
519
|
+
return new go.StringExample(`<${name ?? "etag"}>`, goType);
|
|
520
|
+
case "model":
|
|
521
|
+
case "polymorphicModel":
|
|
513
522
|
// return an empty struct example for model types
|
|
514
523
|
return new go.StructExample(goType);
|
|
515
|
-
case
|
|
524
|
+
case "slice":
|
|
516
525
|
// return an empty array example for slice types
|
|
517
526
|
return new go.ArrayExample(goType);
|
|
518
|
-
case
|
|
527
|
+
case "map":
|
|
519
528
|
// return an empty map example for map types
|
|
520
529
|
return new go.DictionaryExample(goType);
|
|
521
|
-
case
|
|
530
|
+
case "interface":
|
|
522
531
|
// for interface types, use the root type (which is a PolymorphicModel) to create an example
|
|
523
532
|
return new go.StructExample(goType.rootType);
|
|
524
533
|
default:
|
|
525
|
-
throw new CodegenError(
|
|
534
|
+
throw new CodegenError("InternalError", `unhandled fake example kind ${goType.kind}`);
|
|
526
535
|
}
|
|
527
536
|
}
|
|
528
537
|
function escapeString(str) {
|
|
529
|
-
return str
|
|
538
|
+
return str
|
|
539
|
+
.split("\\")
|
|
540
|
+
.join("\\\\")
|
|
541
|
+
.split('"')
|
|
542
|
+
.join('\\"')
|
|
543
|
+
.replace(/\n/g, "\\n")
|
|
544
|
+
.replace(/\r/g, "\\r");
|
|
530
545
|
}
|
|
531
546
|
/**
|
|
532
547
|
* returns true if the parameter's example value should be passed by value,
|
|
@@ -539,8 +554,8 @@ function escapeString(str) {
|
|
|
539
554
|
*/
|
|
540
555
|
function isParamByValue(p) {
|
|
541
556
|
switch (p.parameter.type.kind) {
|
|
542
|
-
case
|
|
543
|
-
return p.value.kind ===
|
|
557
|
+
case "interface":
|
|
558
|
+
return p.value.kind === "null";
|
|
544
559
|
default:
|
|
545
560
|
return p.parameter.byValue;
|
|
546
561
|
}
|
|
@@ -564,9 +579,9 @@ function shouldRenderParam(param, example) {
|
|
|
564
579
|
function getParamExampleValue(pkg, param, example, imports) {
|
|
565
580
|
const paramExample = example.parameters.find((p) => p.parameter.name === param.name);
|
|
566
581
|
if (paramExample) {
|
|
567
|
-
return getExampleValue(pkg, paramExample.value,
|
|
582
|
+
return getExampleValue(pkg, paramExample.value, "\t", imports, isParamByValue(paramExample)).slice(1);
|
|
568
583
|
}
|
|
569
584
|
const fakeValue = generateFakeExample(param.type, param.name);
|
|
570
|
-
return getExampleValue(pkg, fakeValue,
|
|
585
|
+
return getExampleValue(pkg, fakeValue, "\t", imports, param.byValue).slice(1);
|
|
571
586
|
}
|
|
572
587
|
//# sourceMappingURL=example.js.map
|