@azure-tools/typespec-go 0.14.3 → 0.15.0
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 +676 -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 +212 -181
- 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 +208 -191
- 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,15 +2,15 @@
|
|
|
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 { CodegenError } from
|
|
5
|
+
import * as go from "../../codemodel/index.js";
|
|
6
|
+
import * as naming from "../../naming/naming.js";
|
|
7
|
+
import { CodegenError } from "./errors.js";
|
|
8
8
|
// variable to be used to determine comment length when calling comment from @azure-tools
|
|
9
9
|
export const commentLength = 120;
|
|
10
|
-
export const plainDateFormat =
|
|
11
|
-
export const RFC3339Format =
|
|
12
|
-
export const RFC1123Format =
|
|
13
|
-
export const plainTimeFormat =
|
|
10
|
+
export const plainDateFormat = "time.DateOnly";
|
|
11
|
+
export const RFC3339Format = "time.RFC3339Nano";
|
|
12
|
+
export const RFC1123Format = "time.RFC1123";
|
|
13
|
+
export const plainTimeFormat = "time.TimeOnly";
|
|
14
14
|
// matches both current format (DO NOT EDIT on same line as Code generated)
|
|
15
15
|
// and legacy autorest format (DO NOT EDIT on a separate line)
|
|
16
16
|
export const doNotEditRegex = /^\/\/ Code generated .*( DO NOT EDIT\.$|[\s\S]*?^\/\/ DO NOT EDIT\.$)/m;
|
|
@@ -34,19 +34,19 @@ export function setCustomHeaderText(headerText) {
|
|
|
34
34
|
* @returns the source file preamble
|
|
35
35
|
*/
|
|
36
36
|
export function contentPreamble(pkg, doNotEdit = true) {
|
|
37
|
-
const headerText = comment(overrideHeaderText ?? defaultHeaderText,
|
|
37
|
+
const headerText = comment(overrideHeaderText ?? defaultHeaderText, "// ");
|
|
38
38
|
let text = headerText;
|
|
39
39
|
if (doNotEdit) {
|
|
40
40
|
// ensure tools recognize the file as generated according to
|
|
41
41
|
// https://pkg.go.dev/cmd/go#hdr-Generate_Go_files_by_processing_source
|
|
42
|
-
text = text.replace(/^\/\/ Code generated .*\.$/m,
|
|
42
|
+
text = text.replace(/^\/\/ Code generated .*\.$/m, "$& DO NOT EDIT.");
|
|
43
43
|
if (!text.match(doNotEditRegex)) {
|
|
44
|
-
text +=
|
|
44
|
+
text += "\n// Code generated by @autorest/go. DO NOT EDIT.";
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
47
|
else {
|
|
48
48
|
// remove the blurb about the changes being lost
|
|
49
|
-
text = text.replace(/^\/\/ Changes may cause incorrect behavior and will be lost if the code is regenerated\.$/m,
|
|
49
|
+
text = text.replace(/^\/\/ Changes may cause incorrect behavior and will be lost if the code is regenerated\.$/m, "");
|
|
50
50
|
}
|
|
51
51
|
text += `\n\npackage ${go.getPackageName(pkg)}\n\n`;
|
|
52
52
|
return text;
|
|
@@ -66,15 +66,15 @@ export function formatParameterTypeName(scope, param) {
|
|
|
66
66
|
let typeName;
|
|
67
67
|
let required;
|
|
68
68
|
switch (param.kind) {
|
|
69
|
-
case
|
|
69
|
+
case "armClientOptions":
|
|
70
70
|
typeName = go.getTypeDeclaration(param, scope);
|
|
71
71
|
required = false;
|
|
72
72
|
break;
|
|
73
|
-
case
|
|
73
|
+
case "clientOptions":
|
|
74
74
|
typeName = go.getTypeDeclaration(param, scope);
|
|
75
75
|
required = false;
|
|
76
76
|
break;
|
|
77
|
-
case
|
|
77
|
+
case "paramGroup":
|
|
78
78
|
typeName = go.getTypeDeclaration(param, scope);
|
|
79
79
|
required = param.required;
|
|
80
80
|
break;
|
|
@@ -86,10 +86,10 @@ export function formatParameterTypeName(scope, param) {
|
|
|
86
86
|
}
|
|
87
87
|
// sorts parameters by their required state, ordering required before optional
|
|
88
88
|
export function sortParametersByRequired(a, b) {
|
|
89
|
-
let aRequired
|
|
90
|
-
let bRequired
|
|
89
|
+
let aRequired;
|
|
90
|
+
let bRequired;
|
|
91
91
|
switch (a.kind) {
|
|
92
|
-
case
|
|
92
|
+
case "paramGroup":
|
|
93
93
|
aRequired = a.required;
|
|
94
94
|
break;
|
|
95
95
|
default:
|
|
@@ -97,7 +97,7 @@ export function sortParametersByRequired(a, b) {
|
|
|
97
97
|
break;
|
|
98
98
|
}
|
|
99
99
|
switch (b.kind) {
|
|
100
|
-
case
|
|
100
|
+
case "paramGroup":
|
|
101
101
|
bRequired = b.required;
|
|
102
102
|
break;
|
|
103
103
|
default:
|
|
@@ -123,9 +123,9 @@ export function sortParametersByRequired(a, b) {
|
|
|
123
123
|
export function sortClientParameters(params, type) {
|
|
124
124
|
// ARM will never have uriParams but it will likely have a scalar path
|
|
125
125
|
// param for the subscription ID, so we sort by that instead.
|
|
126
|
-
const sortBy = type ===
|
|
126
|
+
const sortBy = type === "azure-arm" ? "pathScalarParam" : "uriParam";
|
|
127
127
|
params.sort((a, b) => {
|
|
128
|
-
if (a.kind === sortBy || (a.kind ===
|
|
128
|
+
if (a.kind === sortBy || (a.kind === "credentialParam" && b.kind !== sortBy)) {
|
|
129
129
|
// sortBy always comes first, followed by credential (if applicable)
|
|
130
130
|
return -1;
|
|
131
131
|
}
|
|
@@ -138,17 +138,19 @@ export function sortClientParameters(params, type) {
|
|
|
138
138
|
export function getCreateRequestParametersSig(method) {
|
|
139
139
|
const methodParams = getMethodParameters(method);
|
|
140
140
|
const params = new Array();
|
|
141
|
-
params.push(
|
|
141
|
+
params.push("ctx context.Context");
|
|
142
142
|
for (const methodParam of methodParams) {
|
|
143
143
|
let paramName = methodParam.name;
|
|
144
144
|
// when creating the method sig for fooCreateRequest, if the options type is empty
|
|
145
145
|
// or only contains the ResumeToken param use _ for the param name to quiet the linter
|
|
146
|
-
if (methodParam.kind ===
|
|
147
|
-
|
|
146
|
+
if (methodParam.kind === "paramGroup" &&
|
|
147
|
+
(methodParam.params.length === 0 ||
|
|
148
|
+
(methodParam.params.length === 1 && methodParam.params[0].kind === "resumeTokenParam"))) {
|
|
149
|
+
paramName = "_";
|
|
148
150
|
}
|
|
149
151
|
params.push(`${paramName} ${formatParameterTypeName(method.receiver.type.pkg, methodParam)}`);
|
|
150
152
|
}
|
|
151
|
-
return params.join(
|
|
153
|
+
return params.join(", ");
|
|
152
154
|
}
|
|
153
155
|
/**
|
|
154
156
|
* returns the parameter names for an operation (excludes the param types).
|
|
@@ -162,7 +164,7 @@ export function getCreateRequestParameters(method, optionsParam) {
|
|
|
162
164
|
// NOTE: keep in sync with getCreateRequestParametersSig
|
|
163
165
|
const methodParams = getMethodParameters(method);
|
|
164
166
|
const params = new Array();
|
|
165
|
-
params.push(
|
|
167
|
+
params.push("ctx");
|
|
166
168
|
for (let i = 0; i < methodParams.length; ++i) {
|
|
167
169
|
const methodParam = methodParams[i];
|
|
168
170
|
// the options param is always the last one
|
|
@@ -173,7 +175,7 @@ export function getCreateRequestParameters(method, optionsParam) {
|
|
|
173
175
|
params.push(methodParam.name);
|
|
174
176
|
}
|
|
175
177
|
}
|
|
176
|
-
return params.join(
|
|
178
|
+
return params.join(", ");
|
|
177
179
|
}
|
|
178
180
|
// returns the complete collection of method parameters
|
|
179
181
|
export function getMethodParameters(method, paramsFilter) {
|
|
@@ -184,7 +186,7 @@ export function getMethodParameters(method, paramsFilter) {
|
|
|
184
186
|
methodParams = paramsFilter(methodParams);
|
|
185
187
|
}
|
|
186
188
|
for (const param of methodParams) {
|
|
187
|
-
if (param.location ===
|
|
189
|
+
if (param.location === "client") {
|
|
188
190
|
// client params are passed via the receiver
|
|
189
191
|
// must check before param group as client params can be grouped
|
|
190
192
|
continue;
|
|
@@ -195,7 +197,7 @@ export function getMethodParameters(method, paramsFilter) {
|
|
|
195
197
|
paramGroups.push(param.group);
|
|
196
198
|
}
|
|
197
199
|
}
|
|
198
|
-
else if (param.type.kind ===
|
|
200
|
+
else if (param.type.kind === "literal") {
|
|
199
201
|
// don't generate a parameter for a constant
|
|
200
202
|
// NOTE: this check must come last as non-required optional constants
|
|
201
203
|
// in header/query params get dumped into the optional params group
|
|
@@ -218,7 +220,7 @@ export function getMethodParameters(method, paramsFilter) {
|
|
|
218
220
|
return 1;
|
|
219
221
|
});
|
|
220
222
|
// add the optional param group last if it's not already in the list.
|
|
221
|
-
if (method.kind !==
|
|
223
|
+
if (method.kind !== "nextPageMethod") {
|
|
222
224
|
if (!paramGroups.find((gp) => gp.groupName === method.optionalParamsGroup.groupName)) {
|
|
223
225
|
paramGroups.push(method.optionalParamsGroup);
|
|
224
226
|
}
|
|
@@ -240,36 +242,38 @@ export function getParamName(param) {
|
|
|
240
242
|
if (param.group) {
|
|
241
243
|
paramName = `${naming.uncapitalize(param.group.name)}.${naming.capitalize(paramName)}`;
|
|
242
244
|
}
|
|
243
|
-
if (param.location ===
|
|
245
|
+
if (param.location === "client") {
|
|
244
246
|
paramName = `client.${paramName}`;
|
|
245
247
|
}
|
|
246
248
|
// client parameters with default values aren't emitted as pointer-to-type
|
|
247
|
-
if (!go.isRequiredParameter(param.style) &&
|
|
249
|
+
if (!go.isRequiredParameter(param.style) &&
|
|
250
|
+
!(param.location === "client" && go.isClientSideDefault(param.style)) &&
|
|
251
|
+
!param.byValue) {
|
|
248
252
|
paramName = `*${paramName}`;
|
|
249
253
|
}
|
|
250
254
|
return paramName;
|
|
251
255
|
}
|
|
252
256
|
// converts the Go code model encoding type to the type name in the standard library
|
|
253
257
|
export function formatBytesEncoding(enc) {
|
|
254
|
-
if (enc ===
|
|
255
|
-
return
|
|
258
|
+
if (enc === "URL") {
|
|
259
|
+
return "RawURL";
|
|
256
260
|
}
|
|
257
|
-
return
|
|
261
|
+
return "Std";
|
|
258
262
|
}
|
|
259
263
|
export function formatParamValue(param, imports, indent) {
|
|
260
|
-
|
|
264
|
+
const paramName = getParamName(param);
|
|
261
265
|
switch (param.kind) {
|
|
262
|
-
case
|
|
263
|
-
case
|
|
264
|
-
case
|
|
265
|
-
case
|
|
266
|
-
if (param.collectionFormat ===
|
|
267
|
-
throw new CodegenError(
|
|
266
|
+
case "formBodyCollectionParam":
|
|
267
|
+
case "headerCollectionParam":
|
|
268
|
+
case "pathCollectionParam":
|
|
269
|
+
case "queryCollectionParam": {
|
|
270
|
+
if (param.collectionFormat === "multi") {
|
|
271
|
+
throw new CodegenError("InternalError", "multi collection format should have been previously handled");
|
|
268
272
|
}
|
|
269
273
|
const separator = getDelimiterForCollectionFormat(param.collectionFormat);
|
|
270
274
|
const emitConvertOver = function (paramName, format) {
|
|
271
275
|
const encodedVar = `encoded${naming.capitalize(paramName)}`;
|
|
272
|
-
let content =
|
|
276
|
+
let content = "strings.Join(func() []string {\n";
|
|
273
277
|
content += `${indent.push().get()}${encodedVar} := make([]string, len(${paramName}))\n`;
|
|
274
278
|
content += `${indent.get()}for i := 0; i < len(${paramName}); i++ {\n`;
|
|
275
279
|
content += `${indent.push().get()}${encodedVar}[i] = ${format}\n`;
|
|
@@ -279,20 +283,20 @@ export function formatParamValue(param, imports, indent) {
|
|
|
279
283
|
return content;
|
|
280
284
|
};
|
|
281
285
|
switch (param.type.elementType.kind) {
|
|
282
|
-
case
|
|
283
|
-
imports.add(
|
|
284
|
-
imports.add(
|
|
286
|
+
case "encodedBytes":
|
|
287
|
+
imports.add("encoding/base64");
|
|
288
|
+
imports.add("strings");
|
|
285
289
|
return emitConvertOver(param.name, `base64.${formatBytesEncoding(param.type.elementType.encoding)}Encoding.EncodeToString(${param.name}[i])`);
|
|
286
|
-
case
|
|
287
|
-
imports.add(
|
|
290
|
+
case "string":
|
|
291
|
+
imports.add("strings");
|
|
288
292
|
return `strings.Join(${paramName}, "${separator}")`;
|
|
289
|
-
case
|
|
290
|
-
imports.add(
|
|
291
|
-
imports.add(
|
|
293
|
+
case "time":
|
|
294
|
+
imports.add("strings");
|
|
295
|
+
imports.add("github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/datetime");
|
|
292
296
|
return emitConvertOver(param.name, `datetime.${param.type.elementType.format}(${param.name}[i]).String()`);
|
|
293
297
|
default:
|
|
294
|
-
imports.add(
|
|
295
|
-
imports.add(
|
|
298
|
+
imports.add("fmt");
|
|
299
|
+
imports.add("strings");
|
|
296
300
|
return `strings.Join(strings.Fields(strings.Trim(fmt.Sprint(${paramName}), "[]")), "${separator}")`;
|
|
297
301
|
}
|
|
298
302
|
}
|
|
@@ -301,69 +305,69 @@ export function formatParamValue(param, imports, indent) {
|
|
|
301
305
|
}
|
|
302
306
|
export function getDelimiterForCollectionFormat(cf) {
|
|
303
307
|
switch (cf) {
|
|
304
|
-
case
|
|
305
|
-
return
|
|
306
|
-
case
|
|
307
|
-
return
|
|
308
|
-
case
|
|
309
|
-
return
|
|
310
|
-
case
|
|
311
|
-
return
|
|
308
|
+
case "csv":
|
|
309
|
+
return ",";
|
|
310
|
+
case "pipes":
|
|
311
|
+
return "|";
|
|
312
|
+
case "ssv":
|
|
313
|
+
return " ";
|
|
314
|
+
case "tsv":
|
|
315
|
+
return "\\t";
|
|
312
316
|
default:
|
|
313
|
-
throw new CodegenError(
|
|
317
|
+
throw new CodegenError("InternalError", `unhandled CollectionFormat ${cf}`);
|
|
314
318
|
}
|
|
315
319
|
}
|
|
316
|
-
export function formatValue(paramName, type, imports,
|
|
320
|
+
export function formatValue(paramName, type, imports, deref) {
|
|
317
321
|
// callers don't have enough context to know if paramName needs to be
|
|
318
|
-
//
|
|
322
|
+
// dereferenced so we track that here when specified. note that not all
|
|
319
323
|
// cases will require paramName to be dereferenced.
|
|
320
|
-
let star =
|
|
321
|
-
if (
|
|
322
|
-
star =
|
|
324
|
+
let star = "";
|
|
325
|
+
if (deref === true) {
|
|
326
|
+
star = "*";
|
|
323
327
|
}
|
|
324
328
|
switch (type.kind) {
|
|
325
|
-
case
|
|
326
|
-
if (type.type ===
|
|
329
|
+
case "constant":
|
|
330
|
+
if (type.type === "string") {
|
|
327
331
|
return `string(${star}${paramName})`;
|
|
328
332
|
}
|
|
329
|
-
imports.add(
|
|
333
|
+
imports.add("fmt");
|
|
330
334
|
return `fmt.Sprintf("%v", ${star}${paramName})`;
|
|
331
|
-
case
|
|
335
|
+
case "encodedBytes":
|
|
332
336
|
// a base-64 encoded value in string format
|
|
333
|
-
imports.add(
|
|
337
|
+
imports.add("encoding/base64");
|
|
334
338
|
return `base64.${formatBytesEncoding(type.encoding)}Encoding.EncodeToString(${paramName})`;
|
|
335
|
-
case
|
|
339
|
+
case "etag":
|
|
336
340
|
return `string(${star}${paramName})`;
|
|
337
|
-
case
|
|
341
|
+
case "literal":
|
|
338
342
|
// cannot use formatLiteralValue() since all values are treated as strings
|
|
339
343
|
switch (type.type.kind) {
|
|
340
|
-
case
|
|
344
|
+
case "constantDef":
|
|
341
345
|
return type.type.name;
|
|
342
346
|
default:
|
|
343
347
|
return `"${type.literal}"`;
|
|
344
348
|
}
|
|
345
|
-
case
|
|
349
|
+
case "scalar":
|
|
346
350
|
switch (type.type) {
|
|
347
|
-
case
|
|
348
|
-
imports.add(
|
|
351
|
+
case "bool":
|
|
352
|
+
imports.add("strconv");
|
|
349
353
|
return `strconv.FormatBool(${star}${paramName})`;
|
|
350
|
-
case
|
|
351
|
-
imports.add(
|
|
354
|
+
case "float32":
|
|
355
|
+
imports.add("strconv");
|
|
352
356
|
return `strconv.FormatFloat(float64(${star}${paramName}), 'f', -1, 32)`;
|
|
353
|
-
case
|
|
354
|
-
imports.add(
|
|
357
|
+
case "float64":
|
|
358
|
+
imports.add("strconv");
|
|
355
359
|
return `strconv.FormatFloat(${star}${paramName}, 'f', -1, 64)`;
|
|
356
|
-
case
|
|
357
|
-
imports.add(
|
|
360
|
+
case "int32":
|
|
361
|
+
imports.add("strconv");
|
|
358
362
|
return `strconv.FormatInt(int64(${star}${paramName}), 10)`;
|
|
359
|
-
case
|
|
360
|
-
imports.add(
|
|
363
|
+
case "int64":
|
|
364
|
+
imports.add("strconv");
|
|
361
365
|
return `strconv.FormatInt(${star}${paramName}, 10)`;
|
|
362
366
|
default:
|
|
363
|
-
throw new CodegenError(
|
|
367
|
+
throw new CodegenError("InternalError", `unhandled scalar type ${type.type}`);
|
|
364
368
|
}
|
|
365
|
-
case
|
|
366
|
-
imports.add(
|
|
369
|
+
case "time":
|
|
370
|
+
imports.add("github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/datetime");
|
|
367
371
|
return `datetime.${type.format}(${star}${paramName}).String()`;
|
|
368
372
|
default:
|
|
369
373
|
return `${star}${paramName}`;
|
|
@@ -374,53 +378,53 @@ export function formatValue(paramName, type, imports, defef) {
|
|
|
374
378
|
// it could also be a constant.
|
|
375
379
|
export function formatLiteralValue(value, withCast) {
|
|
376
380
|
switch (value.type.kind) {
|
|
377
|
-
case
|
|
378
|
-
if (value.literal?.kind ===
|
|
381
|
+
case "constant":
|
|
382
|
+
if (value.literal?.kind === "constantValue") {
|
|
379
383
|
return value.literal.name;
|
|
380
384
|
}
|
|
381
385
|
// extensible enum with a value that's not one of the pre-defined ones.
|
|
382
386
|
// emit it as a cast to the enum type, e.g. NetworkAPIVersion("2026-04-15-preview").
|
|
383
|
-
if (value.type.type ===
|
|
387
|
+
if (value.type.type === "string") {
|
|
384
388
|
return `${value.type.name}("${value.literal}")`;
|
|
385
389
|
}
|
|
386
390
|
return `${value.type.name}(${value.literal})`;
|
|
387
|
-
case
|
|
391
|
+
case "constantDef":
|
|
388
392
|
return value.type.name;
|
|
389
|
-
case
|
|
393
|
+
case "encodedBytes":
|
|
390
394
|
return value.literal;
|
|
391
|
-
case
|
|
395
|
+
case "scalar":
|
|
392
396
|
if (!withCast) {
|
|
393
397
|
return `${value.literal}`;
|
|
394
398
|
}
|
|
395
399
|
switch (value.type.type) {
|
|
396
|
-
case
|
|
400
|
+
case "float32":
|
|
397
401
|
return `float32(${value.literal})`;
|
|
398
|
-
case
|
|
402
|
+
case "float64":
|
|
399
403
|
return `float64(${value.literal})`;
|
|
400
|
-
case
|
|
404
|
+
case "int32":
|
|
401
405
|
return `int32(${value.literal})`;
|
|
402
|
-
case
|
|
406
|
+
case "int64":
|
|
403
407
|
return `int64(${value.literal})`;
|
|
404
408
|
default:
|
|
405
409
|
return value.literal;
|
|
406
410
|
}
|
|
407
|
-
case
|
|
411
|
+
case "string":
|
|
408
412
|
if (value.literal[0] === '"') {
|
|
409
413
|
// string is already quoted
|
|
410
414
|
return value.literal;
|
|
411
415
|
}
|
|
412
416
|
return `"${value.literal}"`;
|
|
413
|
-
case
|
|
417
|
+
case "time":
|
|
414
418
|
return `"${value.literal}"`;
|
|
415
419
|
}
|
|
416
420
|
}
|
|
417
421
|
// returns true if at least one of the responses has a schema
|
|
418
422
|
export function hasSchemaResponse(method) {
|
|
419
423
|
switch (method.returns.result?.kind) {
|
|
420
|
-
case
|
|
421
|
-
case
|
|
422
|
-
case
|
|
423
|
-
case
|
|
424
|
+
case "anyResult":
|
|
425
|
+
case "modelResult":
|
|
426
|
+
case "monomorphicResult":
|
|
427
|
+
case "polymorphicResult":
|
|
424
428
|
return true;
|
|
425
429
|
default:
|
|
426
430
|
return false;
|
|
@@ -430,17 +434,17 @@ export function hasSchemaResponse(method) {
|
|
|
430
434
|
export function getResultFieldName(method) {
|
|
431
435
|
const result = method.returns.result;
|
|
432
436
|
if (!result) {
|
|
433
|
-
throw new CodegenError(
|
|
437
|
+
throw new CodegenError("InternalError", `missing result for method ${method.name}`);
|
|
434
438
|
}
|
|
435
439
|
switch (result.kind) {
|
|
436
|
-
case
|
|
437
|
-
case
|
|
438
|
-
case
|
|
439
|
-
case
|
|
440
|
+
case "anyResult":
|
|
441
|
+
case "binaryResult":
|
|
442
|
+
case "headAsBooleanResult":
|
|
443
|
+
case "monomorphicResult":
|
|
440
444
|
return result.fieldName;
|
|
441
|
-
case
|
|
445
|
+
case "modelResult":
|
|
442
446
|
return result.modelType.name;
|
|
443
|
-
case
|
|
447
|
+
case "polymorphicResult":
|
|
444
448
|
return result.interface.name;
|
|
445
449
|
}
|
|
446
450
|
}
|
|
@@ -449,139 +453,139 @@ export function formatStatusCodes(statusCodes) {
|
|
|
449
453
|
for (const rawCode of statusCodes) {
|
|
450
454
|
asHTTPStatus.push(formatStatusCode(rawCode));
|
|
451
455
|
}
|
|
452
|
-
return asHTTPStatus.join(
|
|
456
|
+
return asHTTPStatus.join(", ");
|
|
453
457
|
}
|
|
454
458
|
export function formatStatusCode(statusCode) {
|
|
455
459
|
switch (statusCode) {
|
|
456
460
|
// 1xx
|
|
457
461
|
case 100:
|
|
458
|
-
return
|
|
462
|
+
return "http.StatusContinue";
|
|
459
463
|
case 101:
|
|
460
|
-
return
|
|
464
|
+
return "http.StatusSwitchingProtocols";
|
|
461
465
|
case 102:
|
|
462
|
-
return
|
|
466
|
+
return "http.StatusProcessing";
|
|
463
467
|
case 103:
|
|
464
|
-
return
|
|
468
|
+
return "http.StatusEarlyHints";
|
|
465
469
|
// 2xx
|
|
466
470
|
case 200:
|
|
467
|
-
return
|
|
471
|
+
return "http.StatusOK";
|
|
468
472
|
case 201:
|
|
469
|
-
return
|
|
473
|
+
return "http.StatusCreated";
|
|
470
474
|
case 202:
|
|
471
|
-
return
|
|
475
|
+
return "http.StatusAccepted";
|
|
472
476
|
case 203:
|
|
473
|
-
return
|
|
477
|
+
return "http.StatusNonAuthoritativeInfo";
|
|
474
478
|
case 204:
|
|
475
|
-
return
|
|
479
|
+
return "http.StatusNoContent";
|
|
476
480
|
case 205:
|
|
477
|
-
return
|
|
481
|
+
return "http.StatusResetContent";
|
|
478
482
|
case 206:
|
|
479
|
-
return
|
|
483
|
+
return "http.StatusPartialContent";
|
|
480
484
|
case 207:
|
|
481
|
-
return
|
|
485
|
+
return "http.StatusMultiStatus";
|
|
482
486
|
case 208:
|
|
483
|
-
return
|
|
487
|
+
return "http.StatusAlreadyReported";
|
|
484
488
|
case 226:
|
|
485
|
-
return
|
|
489
|
+
return "http.StatusIMUsed";
|
|
486
490
|
// 3xx
|
|
487
491
|
case 300:
|
|
488
|
-
return
|
|
492
|
+
return "http.StatusMultipleChoices";
|
|
489
493
|
case 301:
|
|
490
|
-
return
|
|
494
|
+
return "http.StatusMovedPermanently";
|
|
491
495
|
case 302:
|
|
492
|
-
return
|
|
496
|
+
return "http.StatusFound";
|
|
493
497
|
case 303:
|
|
494
|
-
return
|
|
498
|
+
return "http.StatusSeeOther";
|
|
495
499
|
case 304:
|
|
496
|
-
return
|
|
500
|
+
return "http.StatusNotModified";
|
|
497
501
|
case 305:
|
|
498
|
-
return
|
|
502
|
+
return "http.StatusUseProxy";
|
|
499
503
|
case 307:
|
|
500
|
-
return
|
|
504
|
+
return "http.StatusTemporaryRedirect";
|
|
501
505
|
// 4xx
|
|
502
506
|
case 400:
|
|
503
|
-
return
|
|
507
|
+
return "http.StatusBadRequest";
|
|
504
508
|
case 401:
|
|
505
|
-
return
|
|
509
|
+
return "http.StatusUnauthorized";
|
|
506
510
|
case 402:
|
|
507
|
-
return
|
|
511
|
+
return "http.StatusPaymentRequired";
|
|
508
512
|
case 403:
|
|
509
|
-
return
|
|
513
|
+
return "http.StatusForbidden";
|
|
510
514
|
case 404:
|
|
511
|
-
return
|
|
515
|
+
return "http.StatusNotFound";
|
|
512
516
|
case 405:
|
|
513
|
-
return
|
|
517
|
+
return "http.StatusMethodNotAllowed";
|
|
514
518
|
case 406:
|
|
515
|
-
return
|
|
519
|
+
return "http.StatusNotAcceptable";
|
|
516
520
|
case 407:
|
|
517
|
-
return
|
|
521
|
+
return "http.StatusProxyAuthRequired";
|
|
518
522
|
case 408:
|
|
519
|
-
return
|
|
523
|
+
return "http.StatusRequestTimeout";
|
|
520
524
|
case 409:
|
|
521
|
-
return
|
|
525
|
+
return "http.StatusConflict";
|
|
522
526
|
case 410:
|
|
523
|
-
return
|
|
527
|
+
return "http.StatusGone";
|
|
524
528
|
case 411:
|
|
525
|
-
return
|
|
529
|
+
return "http.StatusLengthRequired";
|
|
526
530
|
case 412:
|
|
527
|
-
return
|
|
531
|
+
return "http.StatusPreconditionFailed";
|
|
528
532
|
case 413:
|
|
529
|
-
return
|
|
533
|
+
return "http.StatusRequestEntityTooLarge";
|
|
530
534
|
case 414:
|
|
531
|
-
return
|
|
535
|
+
return "http.StatusRequestURITooLong";
|
|
532
536
|
case 415:
|
|
533
|
-
return
|
|
537
|
+
return "http.StatusUnsupportedMediaType";
|
|
534
538
|
case 416:
|
|
535
|
-
return
|
|
539
|
+
return "http.StatusRequestedRangeNotSatisfiable";
|
|
536
540
|
case 417:
|
|
537
|
-
return
|
|
541
|
+
return "http.StatusExpectationFailed";
|
|
538
542
|
case 418:
|
|
539
|
-
return
|
|
543
|
+
return "http.StatusTeapot";
|
|
540
544
|
case 421:
|
|
541
|
-
return
|
|
545
|
+
return "http.StatusMisdirectedRequest";
|
|
542
546
|
case 422:
|
|
543
|
-
return
|
|
547
|
+
return "http.StatusUnprocessableEntity";
|
|
544
548
|
case 423:
|
|
545
|
-
return
|
|
549
|
+
return "http.StatusLocked";
|
|
546
550
|
case 424:
|
|
547
|
-
return
|
|
551
|
+
return "http.StatusFailedDependency";
|
|
548
552
|
case 425:
|
|
549
|
-
return
|
|
553
|
+
return "http.StatusTooEarly";
|
|
550
554
|
case 426:
|
|
551
|
-
return
|
|
555
|
+
return "http.StatusUpgradeRequired";
|
|
552
556
|
case 428:
|
|
553
|
-
return
|
|
557
|
+
return "http.StatusPreconditionRequired";
|
|
554
558
|
case 429:
|
|
555
|
-
return
|
|
559
|
+
return "http.StatusTooManyRequests";
|
|
556
560
|
case 431:
|
|
557
|
-
return
|
|
561
|
+
return "http.StatusRequestHeaderFieldsTooLarge";
|
|
558
562
|
case 451:
|
|
559
|
-
return
|
|
563
|
+
return "http.StatusUnavailableForLegalReasons";
|
|
560
564
|
// 5xx
|
|
561
565
|
case 500:
|
|
562
|
-
return
|
|
566
|
+
return "http.StatusInternalServerError";
|
|
563
567
|
case 501:
|
|
564
|
-
return
|
|
568
|
+
return "http.StatusNotImplemented";
|
|
565
569
|
case 502:
|
|
566
|
-
return
|
|
570
|
+
return "http.StatusBadGateway";
|
|
567
571
|
case 503:
|
|
568
|
-
return
|
|
572
|
+
return "http.StatusServiceUnavailable";
|
|
569
573
|
case 504:
|
|
570
|
-
return
|
|
574
|
+
return "http.StatusGatewayTimeout ";
|
|
571
575
|
case 505:
|
|
572
|
-
return
|
|
576
|
+
return "http.StatusHTTPVersionNotSupported";
|
|
573
577
|
case 506:
|
|
574
|
-
return
|
|
578
|
+
return "http.StatusVariantAlsoNegotiates";
|
|
575
579
|
case 507:
|
|
576
|
-
return
|
|
580
|
+
return "http.StatusInsufficientStorage";
|
|
577
581
|
case 508:
|
|
578
|
-
return
|
|
582
|
+
return "http.StatusLoopDetected";
|
|
579
583
|
case 510:
|
|
580
|
-
return
|
|
584
|
+
return "http.StatusNotExtended";
|
|
581
585
|
case 511:
|
|
582
|
-
return
|
|
586
|
+
return "http.StatusNetworkAuthenticationRequired";
|
|
583
587
|
default:
|
|
584
|
-
throw new CodegenError(
|
|
588
|
+
throw new CodegenError("InternalError", `unhandled status code ${statusCode}`);
|
|
585
589
|
}
|
|
586
590
|
}
|
|
587
591
|
export function formatCommentAsBulletItem(prefix, docs) {
|
|
@@ -589,24 +593,24 @@ export function formatCommentAsBulletItem(prefix, docs) {
|
|
|
589
593
|
//
|
|
590
594
|
// some comment first line
|
|
591
595
|
// and it finishes here.
|
|
592
|
-
|
|
596
|
+
const description = formatDocCommentWithPrefix(prefix, docs);
|
|
593
597
|
if (description.length === 0) {
|
|
594
|
-
return
|
|
598
|
+
return "";
|
|
595
599
|
}
|
|
596
600
|
// transform the above to look like this:
|
|
597
601
|
//
|
|
598
602
|
// - some comment first line
|
|
599
603
|
// and it finishes here.
|
|
600
|
-
const chunks = description.split(
|
|
604
|
+
const chunks = description.split("\n");
|
|
601
605
|
for (let i = 0; i < chunks.length; ++i) {
|
|
602
606
|
if (i === 0) {
|
|
603
|
-
chunks[i] = chunks[i].replace(
|
|
607
|
+
chunks[i] = chunks[i].replace("// ", "// - ");
|
|
604
608
|
}
|
|
605
609
|
else {
|
|
606
|
-
chunks[i] = chunks[i].replace(
|
|
610
|
+
chunks[i] = chunks[i].replace("// ", "// ");
|
|
607
611
|
}
|
|
608
612
|
}
|
|
609
|
-
return chunks.join(
|
|
613
|
+
return chunks.join("\n");
|
|
610
614
|
}
|
|
611
615
|
// conditionally returns a doc comment on an entity that requires a prefix.
|
|
612
616
|
// e.g.:
|
|
@@ -615,22 +619,22 @@ export function formatCommentAsBulletItem(prefix, docs) {
|
|
|
615
619
|
// {docs.description}
|
|
616
620
|
export function formatDocCommentWithPrefix(prefix, docs) {
|
|
617
621
|
if (!docs.summary && !docs.description) {
|
|
618
|
-
return
|
|
622
|
+
return "";
|
|
619
623
|
}
|
|
620
|
-
let docComment =
|
|
624
|
+
let docComment = "";
|
|
621
625
|
if (docs.summary) {
|
|
622
|
-
docComment = `${comment(`${prefix} - ${docs.summary}`,
|
|
626
|
+
docComment = `${comment(`${prefix} - ${docs.summary}`, "//", undefined, commentLength)}\n`;
|
|
623
627
|
}
|
|
624
628
|
if (docs.description) {
|
|
625
629
|
let description = docs.description;
|
|
626
630
|
if (docs.summary) {
|
|
627
|
-
docComment +=
|
|
631
|
+
docComment += "//\n";
|
|
628
632
|
}
|
|
629
633
|
else {
|
|
630
634
|
// only apply the prefix to the description if there was no summary
|
|
631
635
|
description = `${prefix} - ${description}`;
|
|
632
636
|
}
|
|
633
|
-
docComment += `${comment(`${description}`,
|
|
637
|
+
docComment += `${comment(`${description}`, "//", undefined, commentLength)}\n`;
|
|
634
638
|
}
|
|
635
639
|
return docComment;
|
|
636
640
|
}
|
|
@@ -640,41 +644,41 @@ export function formatDocCommentWithPrefix(prefix, docs) {
|
|
|
640
644
|
// {docs.description}
|
|
641
645
|
export function formatDocComment(docs) {
|
|
642
646
|
if (!docs.summary && !docs.description) {
|
|
643
|
-
return
|
|
647
|
+
return "";
|
|
644
648
|
}
|
|
645
|
-
let docComment =
|
|
649
|
+
let docComment = "";
|
|
646
650
|
if (docs.summary) {
|
|
647
|
-
docComment = `${comment(docs.summary,
|
|
651
|
+
docComment = `${comment(docs.summary, "//", undefined, commentLength)}\n`;
|
|
648
652
|
}
|
|
649
653
|
if (docs.description) {
|
|
650
654
|
if (docs.summary) {
|
|
651
|
-
docComment +=
|
|
655
|
+
docComment += "//\n";
|
|
652
656
|
}
|
|
653
|
-
docComment += `${comment(docs.description,
|
|
657
|
+
docComment += `${comment(docs.description, "//", undefined, commentLength)}\n`;
|
|
654
658
|
}
|
|
655
659
|
return docComment;
|
|
656
660
|
}
|
|
657
661
|
export function getBitSizeForNumber(intSize) {
|
|
658
662
|
switch (intSize) {
|
|
659
|
-
case
|
|
660
|
-
return
|
|
661
|
-
case
|
|
662
|
-
return
|
|
663
|
-
case
|
|
664
|
-
case
|
|
665
|
-
return
|
|
666
|
-
case
|
|
667
|
-
case
|
|
668
|
-
return
|
|
663
|
+
case "int8":
|
|
664
|
+
return "8";
|
|
665
|
+
case "int16":
|
|
666
|
+
return "16";
|
|
667
|
+
case "int32":
|
|
668
|
+
case "float32":
|
|
669
|
+
return "32";
|
|
670
|
+
case "int64":
|
|
671
|
+
case "float64":
|
|
672
|
+
return "64";
|
|
669
673
|
}
|
|
670
674
|
}
|
|
671
675
|
// returns the underlying map/slice element/value type
|
|
672
676
|
// if item isn't a map or slice, item is returned
|
|
673
677
|
export function recursiveUnwrapMapSlice(item) {
|
|
674
678
|
switch (item.kind) {
|
|
675
|
-
case
|
|
679
|
+
case "map":
|
|
676
680
|
return recursiveUnwrapMapSlice(item.valueType);
|
|
677
|
-
case
|
|
681
|
+
case "slice":
|
|
678
682
|
return recursiveUnwrapMapSlice(item.elementType);
|
|
679
683
|
default:
|
|
680
684
|
return item;
|
|
@@ -687,7 +691,7 @@ export function recursiveUnwrapMapSlice(item) {
|
|
|
687
691
|
* @returns a * or the empty string
|
|
688
692
|
*/
|
|
689
693
|
export function star(byValue) {
|
|
690
|
-
return byValue ?
|
|
694
|
+
return byValue ? "" : "*";
|
|
691
695
|
}
|
|
692
696
|
/**
|
|
693
697
|
* returns the zero-value expression for the specific parameter
|
|
@@ -700,14 +704,14 @@ export function zeroValue(param) {
|
|
|
700
704
|
// them optional, the azcore.ClientOptions.APIVersion field isn't pointer-to-type.
|
|
701
705
|
if (go.isRequiredParameter(param.style) || go.isAPIVersionParameter(param)) {
|
|
702
706
|
switch (param.type.kind) {
|
|
703
|
-
case
|
|
707
|
+
case "string":
|
|
704
708
|
return `""`;
|
|
705
709
|
default:
|
|
706
|
-
throw new CodegenError(
|
|
710
|
+
throw new CodegenError("InternalError", `unhandled zero-value kind ${param.type.kind}`);
|
|
707
711
|
}
|
|
708
712
|
}
|
|
709
713
|
// optional params are pointer-to-type
|
|
710
|
-
return
|
|
714
|
+
return "nil";
|
|
711
715
|
}
|
|
712
716
|
// used by getSerDeFormat to cache results
|
|
713
717
|
const serDeFormatCache = new Map();
|
|
@@ -720,20 +724,20 @@ export function getSerDeFormat(model, pkg) {
|
|
|
720
724
|
}
|
|
721
725
|
// for model-only builds we assume the format to be JSON
|
|
722
726
|
if (pkg.clients.length === 0) {
|
|
723
|
-
return
|
|
727
|
+
return "JSON";
|
|
724
728
|
}
|
|
725
729
|
// recursively walks the fields in model, updating serDeFormatCache with the model name and specified format
|
|
726
730
|
const recursiveWalkModelFields = function (type, serDeFormat) {
|
|
727
731
|
type = recursiveUnwrapMapSlice(type);
|
|
728
732
|
switch (type.kind) {
|
|
729
|
-
case
|
|
733
|
+
case "interface":
|
|
730
734
|
recursiveWalkModelFields(type.rootType, serDeFormat);
|
|
731
735
|
for (const possibleType of type.possibleTypes) {
|
|
732
736
|
recursiveWalkModelFields(possibleType, serDeFormat);
|
|
733
737
|
}
|
|
734
738
|
break;
|
|
735
|
-
case
|
|
736
|
-
case
|
|
739
|
+
case "model":
|
|
740
|
+
case "polymorphicModel":
|
|
737
741
|
if (serDeFormatCache.has(type.name)) {
|
|
738
742
|
// we've already processed this type, don't do it again
|
|
739
743
|
return;
|
|
@@ -750,29 +754,30 @@ export function getSerDeFormat(model, pkg) {
|
|
|
750
754
|
for (const client of pkg.clients) {
|
|
751
755
|
for (const method of client.methods) {
|
|
752
756
|
for (const param of method.parameters) {
|
|
753
|
-
if (param.kind !==
|
|
757
|
+
if (param.kind !== "bodyParam" ||
|
|
758
|
+
(param.bodyFormat !== "JSON" && param.bodyFormat !== "XML")) {
|
|
754
759
|
continue;
|
|
755
760
|
}
|
|
756
761
|
recursiveWalkModelFields(param.type, param.bodyFormat);
|
|
757
762
|
}
|
|
758
763
|
const resultType = method.returns.result;
|
|
759
764
|
switch (resultType?.kind) {
|
|
760
|
-
case
|
|
761
|
-
if (resultType.format ===
|
|
765
|
+
case "anyResult":
|
|
766
|
+
if (resultType.format === "JSON" || resultType.format === "XML") {
|
|
762
767
|
for (const type of Object.values(resultType.httpStatusCodeType)) {
|
|
763
768
|
recursiveWalkModelFields(type, resultType.format);
|
|
764
769
|
}
|
|
765
770
|
}
|
|
766
771
|
break;
|
|
767
|
-
case
|
|
772
|
+
case "modelResult":
|
|
768
773
|
recursiveWalkModelFields(resultType.modelType, resultType.format);
|
|
769
774
|
break;
|
|
770
|
-
case
|
|
771
|
-
if (resultType.format ===
|
|
775
|
+
case "monomorphicResult":
|
|
776
|
+
if (resultType.format === "JSON" || resultType.format === "XML") {
|
|
772
777
|
recursiveWalkModelFields(resultType.monomorphicType, resultType.format);
|
|
773
778
|
}
|
|
774
779
|
break;
|
|
775
|
-
case
|
|
780
|
+
case "polymorphicResult":
|
|
776
781
|
recursiveWalkModelFields(resultType.interface, resultType.format);
|
|
777
782
|
break;
|
|
778
783
|
}
|
|
@@ -786,7 +791,7 @@ export function getSerDeFormat(model, pkg) {
|
|
|
786
791
|
//
|
|
787
792
|
// while the former is possible, the latter has the potential to be real.
|
|
788
793
|
// regardless of the cause, we will just assume the format to be JSON.
|
|
789
|
-
serDeFormat =
|
|
794
|
+
serDeFormat = "JSON";
|
|
790
795
|
}
|
|
791
796
|
return serDeFormat;
|
|
792
797
|
}
|
|
@@ -794,7 +799,7 @@ export function getSerDeFormat(model, pkg) {
|
|
|
794
799
|
export function getAllClientParameters(pkg, target) {
|
|
795
800
|
const allClientParams = new Array();
|
|
796
801
|
for (const client of pkg.clients) {
|
|
797
|
-
if (client.instance?.kind ===
|
|
802
|
+
if (client.instance?.kind === "constructable") {
|
|
798
803
|
for (const ctor of client.instance.constructors) {
|
|
799
804
|
for (const ctorParam of ctor.parameters) {
|
|
800
805
|
if (go.isAPIVersionParameter(ctorParam)) {
|
|
@@ -815,12 +820,12 @@ export function getCommonClientParameters(pkg, target) {
|
|
|
815
820
|
const paramCount = new Map();
|
|
816
821
|
let numClients = 0; // track client count since we might skip some
|
|
817
822
|
for (const client of pkg.clients) {
|
|
818
|
-
// special cases: some ARM clients always don't contain any parameters (OperationsClient will be
|
|
819
|
-
if (target ===
|
|
823
|
+
// special cases: some ARM clients always don't contain any parameters (OperationsClient will be deprecated in the future)
|
|
824
|
+
if (target === "azure-arm" && client.name.match(/^OperationsClient$/)) {
|
|
820
825
|
continue;
|
|
821
826
|
}
|
|
822
827
|
++numClients;
|
|
823
|
-
if (client.instance?.kind ===
|
|
828
|
+
if (client.instance?.kind === "constructable") {
|
|
824
829
|
for (const ctor of client.instance.constructors) {
|
|
825
830
|
for (const ctorParam of ctor.parameters) {
|
|
826
831
|
if (go.isAPIVersionParameter(ctorParam)) {
|
|
@@ -863,30 +868,30 @@ export function getMethodParamGroups(method) {
|
|
|
863
868
|
const unencodedQueryParams = new Array();
|
|
864
869
|
for (const param of method.parameters) {
|
|
865
870
|
switch (param.kind) {
|
|
866
|
-
case
|
|
871
|
+
case "bodyParam":
|
|
867
872
|
bodyParam = param;
|
|
868
873
|
break;
|
|
869
|
-
case
|
|
870
|
-
case
|
|
874
|
+
case "formBodyCollectionParam":
|
|
875
|
+
case "formBodyScalarParam":
|
|
871
876
|
formBodyParams.push(param);
|
|
872
877
|
break;
|
|
873
|
-
case
|
|
874
|
-
case
|
|
875
|
-
case
|
|
878
|
+
case "headerCollectionParam":
|
|
879
|
+
case "headerMapParam":
|
|
880
|
+
case "headerScalarParam":
|
|
876
881
|
headerParams.push(param);
|
|
877
882
|
break;
|
|
878
|
-
case
|
|
883
|
+
case "multipartFormBodyParam":
|
|
879
884
|
multipartBodyParams.push(param);
|
|
880
885
|
break;
|
|
881
|
-
case
|
|
886
|
+
case "partialBodyParam":
|
|
882
887
|
partialBodyParams.push(param);
|
|
883
888
|
break;
|
|
884
|
-
case
|
|
885
|
-
case
|
|
889
|
+
case "pathCollectionParam":
|
|
890
|
+
case "pathScalarParam":
|
|
886
891
|
pathParams.push(param);
|
|
887
892
|
break;
|
|
888
|
-
case
|
|
889
|
-
case
|
|
893
|
+
case "queryCollectionParam":
|
|
894
|
+
case "queryScalarParam":
|
|
890
895
|
if (param.isEncoded) {
|
|
891
896
|
encodedQueryParams.push(param);
|
|
892
897
|
}
|
|
@@ -925,9 +930,9 @@ export class Indentation {
|
|
|
925
930
|
* @returns a string with the current indentation level
|
|
926
931
|
*/
|
|
927
932
|
get() {
|
|
928
|
-
let indent =
|
|
933
|
+
let indent = "";
|
|
929
934
|
for (let i = 0; i < this.level; ++i) {
|
|
930
|
-
indent +=
|
|
935
|
+
indent += "\t";
|
|
931
936
|
}
|
|
932
937
|
return indent;
|
|
933
938
|
}
|
|
@@ -948,7 +953,7 @@ export class Indentation {
|
|
|
948
953
|
pop() {
|
|
949
954
|
--this.level;
|
|
950
955
|
if (this.level < 0) {
|
|
951
|
-
throw new CodegenError(
|
|
956
|
+
throw new CodegenError("InternalError", "indentation stack underflow");
|
|
952
957
|
}
|
|
953
958
|
return this;
|
|
954
959
|
}
|
|
@@ -966,7 +971,7 @@ export function buildIfBlock(indent, ifBlock, elseBlock) {
|
|
|
966
971
|
body += ifBlock.body(indent.push());
|
|
967
972
|
body += `${indent.pop().get()}}`;
|
|
968
973
|
if (elseBlock) {
|
|
969
|
-
body +=
|
|
974
|
+
body += " else {\n";
|
|
970
975
|
body += elseBlock.body(indent.push());
|
|
971
976
|
body += `${indent.pop().get()}}`;
|
|
972
977
|
}
|
|
@@ -982,7 +987,7 @@ export function buildIfBlock(indent, ifBlock, elseBlock) {
|
|
|
982
987
|
*/
|
|
983
988
|
export function buildErrCheck(indent, errVar, returns) {
|
|
984
989
|
let body = `if ${errVar} != nil {\n`;
|
|
985
|
-
body += `${indent.push().get()}return ${returns ? `${returns}, ` :
|
|
990
|
+
body += `${indent.push().get()}return ${returns ? `${returns}, ` : ""}${errVar}\n`;
|
|
986
991
|
body += `${indent.pop().get()}}`;
|
|
987
992
|
return body;
|
|
988
993
|
}
|
|
@@ -994,7 +999,7 @@ export function buildErrCheck(indent, errVar, returns) {
|
|
|
994
999
|
* @param scope
|
|
995
1000
|
*/
|
|
996
1001
|
export function splitScope(scope) {
|
|
997
|
-
const scopeSplit = scope.lastIndexOf(
|
|
1002
|
+
const scopeSplit = scope.lastIndexOf("/");
|
|
998
1003
|
return {
|
|
999
1004
|
audience: scope.substring(0, scopeSplit),
|
|
1000
1005
|
scope: scope.substring(scopeSplit),
|
|
@@ -1026,41 +1031,60 @@ export function clientHasNoExportedMethods(client) {
|
|
|
1026
1031
|
* @returns the complete path to the next link
|
|
1027
1032
|
*/
|
|
1028
1033
|
export function buildNextLinkPath(strategy) {
|
|
1029
|
-
return strategy.nextLinkPath.map((segment) => segment.name).join(
|
|
1034
|
+
return strategy.nextLinkPath.map((segment) => segment.name).join(".");
|
|
1030
1035
|
}
|
|
1031
1036
|
// the following was copied from @azure-tools/codegen as it's being deprecated
|
|
1032
1037
|
const ones = [
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1038
|
+
"",
|
|
1039
|
+
"one",
|
|
1040
|
+
"two",
|
|
1041
|
+
"three",
|
|
1042
|
+
"four",
|
|
1043
|
+
"five",
|
|
1044
|
+
"six",
|
|
1045
|
+
"seven",
|
|
1046
|
+
"eight",
|
|
1047
|
+
"nine",
|
|
1048
|
+
"ten",
|
|
1049
|
+
"eleven",
|
|
1050
|
+
"twelve",
|
|
1051
|
+
"thirteen",
|
|
1052
|
+
"fourteen",
|
|
1053
|
+
"fifteen",
|
|
1054
|
+
"sixteen",
|
|
1055
|
+
"seventeen",
|
|
1056
|
+
"eighteen",
|
|
1057
|
+
"nineteen",
|
|
1058
|
+
];
|
|
1059
|
+
const tens = ["", "", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"];
|
|
1060
|
+
const magvalues = [
|
|
1061
|
+
10 ** 3,
|
|
1062
|
+
10 ** 6,
|
|
1063
|
+
10 ** 9,
|
|
1064
|
+
10 ** 12,
|
|
1065
|
+
10 ** 15,
|
|
1066
|
+
10 ** 18,
|
|
1067
|
+
10 ** 21,
|
|
1068
|
+
10 ** 24,
|
|
1069
|
+
10 ** 27,
|
|
1070
|
+
];
|
|
1071
|
+
const magnitude = [
|
|
1072
|
+
"thousand",
|
|
1073
|
+
"million",
|
|
1074
|
+
"billion",
|
|
1075
|
+
"trillion",
|
|
1076
|
+
"quadrillion",
|
|
1077
|
+
"quintillion",
|
|
1078
|
+
"septillion",
|
|
1079
|
+
"octillion",
|
|
1053
1080
|
];
|
|
1054
|
-
const tens = ['', '', 'twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety'];
|
|
1055
|
-
const magvalues = [10 ** 3, 10 ** 6, 10 ** 9, 10 ** 12, 10 ** 15, 10 ** 18, 10 ** 21, 10 ** 24, 10 ** 27];
|
|
1056
|
-
const magnitude = ['thousand', 'million', 'billion', 'trillion', 'quadrillion', 'quintillion', 'septillion', 'octillion'];
|
|
1057
1081
|
function* convert(num) {
|
|
1058
1082
|
if (!num) {
|
|
1059
|
-
yield
|
|
1083
|
+
yield "zero";
|
|
1060
1084
|
return;
|
|
1061
1085
|
}
|
|
1062
1086
|
if (num > 1e30) {
|
|
1063
|
-
yield
|
|
1087
|
+
yield "lots";
|
|
1064
1088
|
return;
|
|
1065
1089
|
}
|
|
1066
1090
|
if (num > 999) {
|
|
@@ -1075,7 +1099,7 @@ function* convert(num) {
|
|
|
1075
1099
|
}
|
|
1076
1100
|
if (num > 99) {
|
|
1077
1101
|
yield ones[Math.floor(num / 100)];
|
|
1078
|
-
yield
|
|
1102
|
+
yield "hundred";
|
|
1079
1103
|
num %= 100;
|
|
1080
1104
|
}
|
|
1081
1105
|
if (num > 19) {
|
|
@@ -1091,9 +1115,9 @@ function deconstruct(identifier) {
|
|
|
1091
1115
|
return identifier.flatMap(deconstruct);
|
|
1092
1116
|
}
|
|
1093
1117
|
return `${identifier}`
|
|
1094
|
-
.replace(/([a-z]+)([A-Z])/g,
|
|
1095
|
-
.replace(/(\d+)([a-z|A-Z]+)/g,
|
|
1096
|
-
.replace(/\b([A-Z]+)([A-Z])([a-z])/,
|
|
1118
|
+
.replace(/([a-z]+)([A-Z])/g, "$1 $2")
|
|
1119
|
+
.replace(/(\d+)([a-z|A-Z]+)/g, "$1 $2")
|
|
1120
|
+
.replace(/\b([A-Z]+)([A-Z])([a-z])/, "$1 $2$3")
|
|
1097
1121
|
.split(/[\W|_]+/)
|
|
1098
1122
|
.map((each) => each.toLowerCase());
|
|
1099
1123
|
}
|
|
@@ -1104,12 +1128,12 @@ function fixLeadingNumber(identifier) {
|
|
|
1104
1128
|
return identifier;
|
|
1105
1129
|
}
|
|
1106
1130
|
export function camelCase(identifier) {
|
|
1107
|
-
if (typeof identifier ===
|
|
1131
|
+
if (typeof identifier === "string") {
|
|
1108
1132
|
return camelCase(fixLeadingNumber(deconstruct(identifier)));
|
|
1109
1133
|
}
|
|
1110
1134
|
switch (identifier.length) {
|
|
1111
1135
|
case 0:
|
|
1112
|
-
return
|
|
1136
|
+
return "";
|
|
1113
1137
|
case 1:
|
|
1114
1138
|
return naming.uncapitalize(identifier[0]);
|
|
1115
1139
|
}
|
|
@@ -1117,32 +1141,32 @@ export function camelCase(identifier) {
|
|
|
1117
1141
|
}
|
|
1118
1142
|
export function pascalCase(identifier) {
|
|
1119
1143
|
return identifier === undefined
|
|
1120
|
-
?
|
|
1121
|
-
: typeof identifier ===
|
|
1144
|
+
? ""
|
|
1145
|
+
: typeof identifier === "string"
|
|
1122
1146
|
? pascalCase(fixLeadingNumber(deconstruct(identifier)))
|
|
1123
|
-
: identifier.map((each) => naming.capitalize(each)).join(
|
|
1147
|
+
: identifier.map((each) => naming.capitalize(each)).join("");
|
|
1124
1148
|
}
|
|
1125
1149
|
function indent(content, factor = 1) {
|
|
1126
|
-
const i =
|
|
1127
|
-
content = i + content.trim().replace(/\r\n/g,
|
|
1150
|
+
const i = "\t".repeat(factor);
|
|
1151
|
+
content = i + content.trim().replace(/\r\n/g, "\n");
|
|
1128
1152
|
return content.split(/\n/g).join(`\n${i}`);
|
|
1129
1153
|
}
|
|
1130
|
-
const lineCommentPrefix =
|
|
1154
|
+
const lineCommentPrefix = "//";
|
|
1131
1155
|
export function comment(content, prefix = lineCommentPrefix, factor = 0, maxLength = 120) {
|
|
1132
1156
|
const result = new Array();
|
|
1133
|
-
let line =
|
|
1157
|
+
let line = "";
|
|
1134
1158
|
prefix = indent(prefix, factor);
|
|
1135
1159
|
content = content.trim();
|
|
1136
1160
|
if (content) {
|
|
1137
|
-
for (const word of content.replace(/\n+/g,
|
|
1138
|
-
if (word ===
|
|
1161
|
+
for (const word of content.replace(/\n+/g, " » ").split(/\s+/g)) {
|
|
1162
|
+
if (word === "»") {
|
|
1139
1163
|
result.push(line);
|
|
1140
1164
|
line = prefix;
|
|
1141
1165
|
continue;
|
|
1142
1166
|
}
|
|
1143
1167
|
if (maxLength < line.length) {
|
|
1144
1168
|
result.push(line);
|
|
1145
|
-
line =
|
|
1169
|
+
line = "";
|
|
1146
1170
|
}
|
|
1147
1171
|
if (!line) {
|
|
1148
1172
|
line = prefix;
|
|
@@ -1152,9 +1176,9 @@ export function comment(content, prefix = lineCommentPrefix, factor = 0, maxLeng
|
|
|
1152
1176
|
if (line) {
|
|
1153
1177
|
result.push(line);
|
|
1154
1178
|
}
|
|
1155
|
-
return result.join(
|
|
1179
|
+
return result.join("\n");
|
|
1156
1180
|
}
|
|
1157
|
-
return
|
|
1181
|
+
return "";
|
|
1158
1182
|
}
|
|
1159
1183
|
// end ports from @azure-tools/codegen
|
|
1160
1184
|
//# sourceMappingURL=helpers.js.map
|