@azure-tools/typespec-ts 0.56.0-dev.1 → 0.56.0-dev.10
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/README.md +1 -13
- package/dist/src/context-manager.d.ts +2 -2
- package/dist/src/context-manager.d.ts.map +1 -1
- package/dist/src/framework/declaration.d.ts.map +1 -1
- package/dist/src/framework/declaration.js +6 -20
- package/dist/src/framework/declaration.js.map +1 -1
- package/dist/src/framework/hooks/sdk-types.d.ts.map +1 -1
- package/dist/src/framework/hooks/sdk-types.js +1 -1
- package/dist/src/framework/hooks/sdk-types.js.map +1 -1
- package/dist/src/framework/source-file-batch.d.ts +35 -0
- package/dist/src/framework/source-file-batch.d.ts.map +1 -0
- package/dist/src/framework/source-file-batch.js +128 -0
- package/dist/src/framework/source-file-batch.js.map +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +63 -60
- package/dist/src/index.js.map +1 -1
- package/dist/src/{rlc-common/interfaces.d.ts → interfaces.d.ts} +12 -14
- package/dist/src/interfaces.d.ts.map +1 -0
- package/dist/src/interfaces.js.map +1 -0
- package/dist/src/lib.d.ts +2 -4
- package/dist/src/lib.d.ts.map +1 -1
- package/dist/src/lib.js +2 -12
- package/dist/src/lib.js.map +1 -1
- package/dist/src/meta-tree.d.ts +4 -4
- package/dist/src/meta-tree.d.ts.map +1 -1
- package/dist/src/metadata/build-api-extractor-config.d.ts +6 -0
- package/dist/src/metadata/build-api-extractor-config.d.ts.map +1 -0
- package/dist/src/metadata/build-api-extractor-config.js.map +1 -0
- package/dist/src/metadata/build-changelog-file.d.ts +6 -0
- package/dist/src/metadata/build-changelog-file.d.ts.map +1 -0
- package/dist/src/metadata/build-changelog-file.js.map +1 -0
- package/dist/src/metadata/build-es-lint-config.d.ts +6 -0
- package/dist/src/metadata/build-es-lint-config.d.ts.map +1 -0
- package/dist/src/metadata/build-es-lint-config.js.map +1 -0
- package/dist/src/metadata/build-license-file.d.ts.map +1 -0
- package/dist/src/metadata/build-license-file.js.map +1 -0
- package/dist/src/{rlc-common/metadata → metadata}/build-package-file.d.ts +3 -3
- package/dist/src/metadata/build-package-file.d.ts.map +1 -0
- package/dist/src/{rlc-common/metadata → metadata}/build-package-file.js +1 -1
- package/dist/src/metadata/build-package-file.js.map +1 -0
- package/dist/src/metadata/build-readme-file.d.ts +11 -0
- package/dist/src/metadata/build-readme-file.d.ts.map +1 -0
- package/dist/src/{rlc-common/metadata → metadata}/build-readme-file.js +16 -69
- package/dist/src/metadata/build-readme-file.js.map +1 -0
- package/dist/src/metadata/build-sample-env-file.d.ts +6 -0
- package/dist/src/metadata/build-sample-env-file.d.ts.map +1 -0
- package/dist/src/metadata/build-sample-env-file.js.map +1 -0
- package/dist/src/{rlc-common/metadata → metadata}/build-test-config.d.ts +3 -3
- package/dist/src/metadata/build-test-config.d.ts.map +1 -0
- package/dist/src/metadata/build-test-config.js.map +1 -0
- package/dist/src/{rlc-common/metadata → metadata}/build-ts-config.d.ts +3 -3
- package/dist/src/metadata/build-ts-config.d.ts.map +1 -0
- package/dist/src/metadata/build-ts-config.js.map +1 -0
- package/dist/src/metadata/build-vitest-config.d.ts +6 -0
- package/dist/src/metadata/build-vitest-config.d.ts.map +1 -0
- package/dist/src/metadata/build-vitest-config.js.map +1 -0
- package/dist/src/{rlc-common/metadata → metadata}/build-warp-config.d.ts +2 -2
- package/dist/src/metadata/build-warp-config.d.ts.map +1 -0
- package/dist/src/metadata/build-warp-config.js.map +1 -0
- package/dist/src/metadata/package-json/azure-package-common.d.ts.map +1 -0
- package/dist/src/metadata/package-json/azure-package-common.js.map +1 -0
- package/dist/src/metadata/package-json/build-azure-monorepo-package.d.ts.map +1 -0
- package/dist/src/metadata/package-json/build-azure-monorepo-package.js.map +1 -0
- package/dist/src/metadata/package-json/package-common.d.ts.map +1 -0
- package/dist/src/metadata/package-json/package-common.js.map +1 -0
- package/dist/src/metadata/render-template.d.ts +24 -0
- package/dist/src/metadata/render-template.d.ts.map +1 -0
- package/dist/src/metadata/render-template.js +148 -0
- package/dist/src/metadata/render-template.js.map +1 -0
- package/dist/src/metadata/test/build-recorded-client.d.ts +6 -0
- package/dist/src/metadata/test/build-recorded-client.d.ts.map +1 -0
- package/dist/src/metadata/test/build-recorded-client.js +8 -0
- package/dist/src/metadata/test/build-recorded-client.js.map +1 -0
- package/dist/src/metadata/test/build-sample-test.d.ts +6 -0
- package/dist/src/metadata/test/build-sample-test.d.ts.map +1 -0
- package/dist/src/metadata/test/build-sample-test.js +8 -0
- package/dist/src/metadata/test/build-sample-test.js.map +1 -0
- package/dist/src/metadata/test/build-snippets.d.ts +6 -0
- package/dist/src/metadata/test/build-snippets.d.ts.map +1 -0
- package/dist/src/{rlc-common → metadata}/test/build-snippets.js +3 -5
- package/dist/src/metadata/test/build-snippets.js.map +1 -0
- package/dist/src/metadata/test/template.d.ts +4 -0
- package/dist/src/metadata/test/template.d.ts.map +1 -0
- package/dist/src/metadata/test/template.js +100 -0
- package/dist/src/metadata/test/template.js.map +1 -0
- package/dist/src/metadata/utils.d.ts +3 -0
- package/dist/src/metadata/utils.d.ts.map +1 -0
- package/dist/src/metadata/utils.js.map +1 -0
- package/dist/src/modular/build-classical-client.d.ts.map +1 -1
- package/dist/src/modular/build-classical-client.js +9 -9
- package/dist/src/modular/build-classical-client.js.map +1 -1
- package/dist/src/modular/build-classical-operation-groups.d.ts.map +1 -1
- package/dist/src/modular/build-classical-operation-groups.js +3 -3
- package/dist/src/modular/build-classical-operation-groups.js.map +1 -1
- package/dist/src/modular/build-client-context.d.ts.map +1 -1
- package/dist/src/modular/build-client-context.js +7 -7
- package/dist/src/modular/build-client-context.js.map +1 -1
- package/dist/src/modular/build-modular-options.js +3 -3
- package/dist/src/modular/build-modular-options.js.map +1 -1
- package/dist/src/modular/build-operations.d.ts.map +1 -1
- package/dist/src/modular/build-operations.js +6 -6
- package/dist/src/modular/build-operations.js.map +1 -1
- package/dist/src/modular/build-project-files.d.ts.map +1 -1
- package/dist/src/modular/build-project-files.js +4 -4
- package/dist/src/modular/build-project-files.js.map +1 -1
- package/dist/src/modular/build-restore-poller.d.ts.map +1 -1
- package/dist/src/modular/build-restore-poller.js +3 -3
- package/dist/src/modular/build-restore-poller.js.map +1 -1
- package/dist/src/modular/build-root-index.d.ts.map +1 -1
- package/dist/src/modular/build-root-index.js +42 -14
- package/dist/src/modular/build-root-index.js.map +1 -1
- package/dist/src/modular/build-subpath-index.d.ts.map +1 -1
- package/dist/src/modular/build-subpath-index.js +17 -4
- package/dist/src/modular/build-subpath-index.js.map +1 -1
- package/dist/src/modular/emit-models-options.d.ts.map +1 -1
- package/dist/src/modular/emit-models-options.js +3 -3
- package/dist/src/modular/emit-models-options.js.map +1 -1
- package/dist/src/modular/emit-models.d.ts +1 -1
- package/dist/src/modular/emit-models.d.ts.map +1 -1
- package/dist/src/modular/emit-models.js +32 -25
- package/dist/src/modular/emit-models.js.map +1 -1
- package/dist/src/modular/emit-samples.d.ts.map +1 -1
- package/dist/src/modular/emit-samples.js +5 -5
- package/dist/src/modular/emit-samples.js.map +1 -1
- package/dist/src/modular/emit-tests.d.ts.map +1 -1
- package/dist/src/modular/emit-tests.js +1 -1
- package/dist/src/modular/emit-tests.js.map +1 -1
- package/dist/src/modular/helpers/classical-operation-helpers.d.ts.map +1 -1
- package/dist/src/modular/helpers/classical-operation-helpers.js +11 -11
- package/dist/src/modular/helpers/classical-operation-helpers.js.map +1 -1
- package/dist/src/modular/helpers/client-helpers.d.ts.map +1 -1
- package/dist/src/modular/helpers/client-helpers.js +3 -3
- package/dist/src/modular/helpers/client-helpers.js.map +1 -1
- package/dist/src/modular/helpers/example-value-helpers.d.ts.map +1 -1
- package/dist/src/modular/helpers/example-value-helpers.js +2 -2
- package/dist/src/modular/helpers/example-value-helpers.js.map +1 -1
- package/dist/src/modular/helpers/naming-helpers.d.ts +1 -1
- package/dist/src/modular/helpers/naming-helpers.d.ts.map +1 -1
- package/dist/src/modular/helpers/naming-helpers.js +2 -2
- package/dist/src/modular/helpers/naming-helpers.js.map +1 -1
- package/dist/src/modular/helpers/operation-helpers.d.ts +4 -4
- package/dist/src/modular/helpers/operation-helpers.d.ts.map +1 -1
- package/dist/src/modular/helpers/operation-helpers.js +25 -26
- package/dist/src/modular/helpers/operation-helpers.js.map +1 -1
- package/dist/src/modular/helpers/type-helpers.d.ts.map +1 -1
- package/dist/src/modular/helpers/type-helpers.js +1 -1
- package/dist/src/modular/helpers/type-helpers.js.map +1 -1
- package/dist/src/modular/interfaces.d.ts +4 -4
- package/dist/src/modular/interfaces.d.ts.map +1 -1
- package/dist/src/modular/serialization/build-deserializer-function.d.ts.map +1 -1
- package/dist/src/modular/serialization/build-deserializer-function.js +2 -2
- package/dist/src/modular/serialization/build-deserializer-function.js.map +1 -1
- package/dist/src/modular/serialization/build-serializer-function.d.ts.map +1 -1
- package/dist/src/modular/serialization/build-serializer-function.js +2 -2
- package/dist/src/modular/serialization/build-serializer-function.js.map +1 -1
- package/dist/src/modular/serialization/build-xml-serializer-function.d.ts.map +1 -1
- package/dist/src/modular/serialization/build-xml-serializer-function.js +1 -1
- package/dist/src/modular/serialization/build-xml-serializer-function.js.map +1 -1
- package/dist/src/modular/type-expressions/get-enum-expression.js +1 -1
- package/dist/src/modular/type-expressions/get-enum-expression.js.map +1 -1
- package/dist/src/modular/type-expressions/get-nullable-expression.js +1 -1
- package/dist/src/modular/type-expressions/get-nullable-expression.js.map +1 -1
- package/dist/src/modular/type-expressions/get-type-expression.d.ts.map +1 -1
- package/dist/src/modular/type-expressions/get-type-expression.js +3 -3
- package/dist/src/modular/type-expressions/get-type-expression.js.map +1 -1
- package/dist/src/transform/transform-api-version-info.d.ts +1 -1
- package/dist/src/transform/transform-api-version-info.d.ts.map +1 -1
- package/dist/src/transform/transform-api-version-info.js +4 -3
- package/dist/src/transform/transform-api-version-info.js.map +1 -1
- package/dist/src/transform/{transfrom-rlc-options.d.ts → transform-client-options.d.ts} +3 -3
- package/dist/src/transform/transform-client-options.d.ts.map +1 -0
- package/dist/src/transform/{transfrom-rlc-options.js → transform-client-options.js} +9 -13
- package/dist/src/transform/transform-client-options.js.map +1 -0
- package/dist/src/transform/transform-helper-function-details.d.ts +1 -1
- package/dist/src/transform/transform-helper-function-details.d.ts.map +1 -1
- package/dist/src/transform/transform-helper-function-details.js +4 -4
- package/dist/src/transform/transform-helper-function-details.js.map +1 -1
- package/dist/src/transform/transform-parameters.d.ts +1 -1
- package/dist/src/transform/transform-parameters.d.ts.map +1 -1
- package/dist/src/transform/transform-parameters.js +11 -11
- package/dist/src/transform/transform-parameters.js.map +1 -1
- package/dist/src/transform/transform-paths.d.ts +1 -1
- package/dist/src/transform/transform-paths.d.ts.map +1 -1
- package/dist/src/transform/transform-paths.js +5 -4
- package/dist/src/transform/transform-paths.js.map +1 -1
- package/dist/src/transform/transform-responses.d.ts +1 -1
- package/dist/src/transform/transform-responses.d.ts.map +1 -1
- package/dist/src/transform/transform-responses.js +19 -18
- package/dist/src/transform/transform-responses.js.map +1 -1
- package/dist/src/transform/transform-schemas.js +5 -5
- package/dist/src/transform/transform-schemas.js.map +1 -1
- package/dist/src/transform/transform-telemetry-info.d.ts +1 -1
- package/dist/src/transform/transform-telemetry-info.d.ts.map +1 -1
- package/dist/src/transform/transform-telemetry-info.js +2 -2
- package/dist/src/transform/transform-telemetry-info.js.map +1 -1
- package/dist/src/transform/transform.d.ts +2 -2
- package/dist/src/transform/transform.d.ts.map +1 -1
- package/dist/src/transform/transform.js +9 -10
- package/dist/src/transform/transform.js.map +1 -1
- package/dist/src/utils/api-version-util.d.ts.map +1 -0
- package/dist/src/utils/api-version-util.js.map +1 -0
- package/dist/src/utils/client-utils.d.ts +5 -5
- package/dist/src/utils/client-utils.d.ts.map +1 -1
- package/dist/src/utils/client-utils.js +10 -10
- package/dist/src/utils/client-utils.js.map +1 -1
- package/dist/src/utils/cross-language-def.d.ts.map +1 -1
- package/dist/src/utils/cross-language-def.js +3 -3
- package/dist/src/utils/cross-language-def.js.map +1 -1
- package/dist/src/utils/emit-util.d.ts +2 -2
- package/dist/src/utils/emit-util.d.ts.map +1 -1
- package/dist/src/utils/emit-util.js +2 -2
- package/dist/src/utils/emit-util.js.map +1 -1
- package/dist/src/utils/imports-util.d.ts.map +1 -0
- package/dist/src/{rlc-common/helpers → utils}/imports-util.js +6 -6
- package/dist/src/utils/imports-util.js.map +1 -0
- package/dist/src/utils/interfaces.d.ts +3 -4
- package/dist/src/utils/interfaces.d.ts.map +1 -1
- package/dist/src/utils/model-utils.d.ts +1 -1
- package/dist/src/utils/model-utils.d.ts.map +1 -1
- package/dist/src/utils/model-utils.js +4 -2
- package/dist/src/utils/model-utils.js.map +1 -1
- package/dist/src/{rlc-common/helpers → utils}/name-constructors.d.ts +2 -2
- package/dist/src/utils/name-constructors.d.ts.map +1 -0
- package/dist/src/utils/name-constructors.js.map +1 -0
- package/dist/src/utils/name-utils.d.ts.map +1 -0
- package/dist/src/utils/name-utils.js.map +1 -0
- package/dist/src/utils/namespace-utils.js +4 -4
- package/dist/src/utils/namespace-utils.js.map +1 -1
- package/dist/src/utils/operation-helpers.d.ts +16 -0
- package/dist/src/utils/operation-helpers.d.ts.map +1 -0
- package/dist/src/utils/operation-helpers.js.map +1 -0
- package/dist/src/utils/operation-util.d.ts +2 -2
- package/dist/src/utils/operation-util.d.ts.map +1 -1
- package/dist/src/utils/operation-util.js +17 -18
- package/dist/src/utils/operation-util.js.map +1 -1
- package/dist/src/utils/parameter-utils.d.ts +1 -1
- package/dist/src/utils/parameter-utils.d.ts.map +1 -1
- package/dist/src/utils/parameter-utils.js +2 -4
- package/dist/src/utils/parameter-utils.js.map +1 -1
- package/dist/src/{rlc-common/helpers → utils}/schema-helpers.d.ts +2 -2
- package/dist/src/utils/schema-helpers.d.ts.map +1 -0
- package/dist/src/utils/schema-helpers.js.map +1 -0
- package/dist/src/utils/type-util.d.ts.map +1 -0
- package/dist/src/utils/type-util.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +14 -24
- package/src/context-manager.ts +2 -2
- package/src/framework/declaration.ts +8 -20
- package/src/framework/hooks/sdk-types.ts +1 -1
- package/src/framework/source-file-batch.ts +140 -0
- package/src/index.ts +81 -101
- package/src/{rlc-common/interfaces.ts → interfaces.ts} +14 -16
- package/src/lib.ts +3 -16
- package/src/meta-tree.ts +4 -4
- package/src/{rlc-common/metadata → metadata}/build-api-extractor-config.ts +2 -2
- package/src/{rlc-common/metadata → metadata}/build-changelog-file.ts +3 -3
- package/src/{rlc-common/metadata → metadata}/build-es-lint-config.ts +2 -2
- package/src/{rlc-common/metadata → metadata}/build-package-file.ts +6 -6
- package/src/{rlc-common/metadata → metadata}/build-readme-file.ts +25 -99
- package/src/{rlc-common/metadata → metadata}/build-sample-env-file.ts +2 -2
- package/src/{rlc-common/metadata → metadata}/build-test-config.ts +4 -4
- package/src/{rlc-common/metadata → metadata}/build-ts-config.ts +3 -3
- package/src/{rlc-common/metadata → metadata}/build-vitest-config.ts +2 -2
- package/src/{rlc-common/metadata → metadata}/build-warp-config.ts +2 -2
- package/src/metadata/render-template.ts +202 -0
- package/src/metadata/test/build-recorded-client.ts +9 -0
- package/src/metadata/test/build-sample-test.ts +9 -0
- package/src/{rlc-common → metadata}/test/build-snippets.ts +5 -7
- package/src/metadata/test/template.ts +101 -0
- package/src/{rlc-common/metadata → metadata}/utils.ts +2 -2
- package/src/modular/build-classical-client.ts +9 -9
- package/src/modular/build-classical-operation-groups.ts +3 -3
- package/src/modular/build-client-context.ts +7 -7
- package/src/modular/build-modular-options.ts +3 -3
- package/src/modular/build-operations.ts +6 -6
- package/src/modular/build-project-files.ts +4 -5
- package/src/modular/build-restore-poller.ts +3 -3
- package/src/modular/build-root-index.ts +57 -19
- package/src/modular/build-subpath-index.ts +26 -5
- package/src/modular/emit-models-options.ts +3 -3
- package/src/modular/emit-models.ts +32 -26
- package/src/modular/emit-samples.ts +5 -5
- package/src/modular/emit-tests.ts +1 -1
- package/src/modular/helpers/classical-operation-helpers.ts +11 -11
- package/src/modular/helpers/client-helpers.ts +3 -3
- package/src/modular/helpers/example-value-helpers.ts +2 -2
- package/src/modular/helpers/naming-helpers.ts +2 -2
- package/src/modular/helpers/operation-helpers.ts +27 -27
- package/src/modular/helpers/type-helpers.ts +1 -1
- package/src/modular/interfaces.ts +4 -4
- package/src/modular/serialization/build-deserializer-function.ts +2 -2
- package/src/modular/serialization/build-serializer-function.ts +2 -2
- package/src/modular/serialization/build-xml-serializer-function.ts +1 -1
- package/src/modular/type-expressions/get-enum-expression.ts +1 -1
- package/src/modular/type-expressions/get-nullable-expression.ts +1 -1
- package/src/modular/type-expressions/get-type-expression.ts +3 -3
- package/src/transform/transform-api-version-info.ts +4 -10
- package/src/transform/{transfrom-rlc-options.ts → transform-client-options.ts} +12 -22
- package/src/transform/transform-helper-function-details.ts +5 -5
- package/src/transform/transform-parameters.ts +12 -12
- package/src/transform/transform-paths.ts +5 -12
- package/src/transform/transform-responses.ts +19 -19
- package/src/transform/transform-schemas.ts +5 -5
- package/src/transform/transform-telemetry-info.ts +3 -3
- package/src/transform/transform.ts +13 -18
- package/src/utils/client-utils.ts +11 -11
- package/src/utils/cross-language-def.ts +3 -3
- package/src/utils/emit-util.ts +3 -3
- package/src/{rlc-common/helpers → utils}/imports-util.ts +6 -6
- package/src/utils/interfaces.ts +3 -4
- package/src/utils/model-utils.ts +7 -8
- package/src/{rlc-common/helpers → utils}/name-constructors.ts +2 -2
- package/src/utils/namespace-utils.ts +4 -4
- package/src/{rlc-common/helpers → utils}/operation-helpers.ts +12 -12
- package/src/utils/operation-util.ts +19 -33
- package/src/utils/parameter-utils.ts +2 -4
- package/src/{rlc-common/helpers → utils}/schema-helpers.ts +2 -2
- package/dist/src/rlc-common/helpers/api-version-util.d.ts.map +0 -1
- package/dist/src/rlc-common/helpers/api-version-util.js.map +0 -1
- package/dist/src/rlc-common/helpers/imports-util.d.ts.map +0 -1
- package/dist/src/rlc-common/helpers/imports-util.js.map +0 -1
- package/dist/src/rlc-common/helpers/name-constructors.d.ts.map +0 -1
- package/dist/src/rlc-common/helpers/name-constructors.js.map +0 -1
- package/dist/src/rlc-common/helpers/name-utils.d.ts.map +0 -1
- package/dist/src/rlc-common/helpers/name-utils.js.map +0 -1
- package/dist/src/rlc-common/helpers/operation-helpers.d.ts +0 -16
- package/dist/src/rlc-common/helpers/operation-helpers.d.ts.map +0 -1
- package/dist/src/rlc-common/helpers/operation-helpers.js.map +0 -1
- package/dist/src/rlc-common/helpers/schema-helpers.d.ts.map +0 -1
- package/dist/src/rlc-common/helpers/schema-helpers.js.map +0 -1
- package/dist/src/rlc-common/helpers/type-util.d.ts.map +0 -1
- package/dist/src/rlc-common/helpers/type-util.js.map +0 -1
- package/dist/src/rlc-common/index.d.ts +0 -23
- package/dist/src/rlc-common/index.d.ts.map +0 -1
- package/dist/src/rlc-common/index.js +0 -25
- package/dist/src/rlc-common/index.js.map +0 -1
- package/dist/src/rlc-common/interfaces.d.ts.map +0 -1
- package/dist/src/rlc-common/interfaces.js.map +0 -1
- package/dist/src/rlc-common/metadata/build-api-extractor-config.d.ts +0 -6
- package/dist/src/rlc-common/metadata/build-api-extractor-config.d.ts.map +0 -1
- package/dist/src/rlc-common/metadata/build-api-extractor-config.js.map +0 -1
- package/dist/src/rlc-common/metadata/build-changelog-file.d.ts +0 -6
- package/dist/src/rlc-common/metadata/build-changelog-file.d.ts.map +0 -1
- package/dist/src/rlc-common/metadata/build-changelog-file.js.map +0 -1
- package/dist/src/rlc-common/metadata/build-es-lint-config.d.ts +0 -6
- package/dist/src/rlc-common/metadata/build-es-lint-config.d.ts.map +0 -1
- package/dist/src/rlc-common/metadata/build-es-lint-config.js.map +0 -1
- package/dist/src/rlc-common/metadata/build-license-file.d.ts.map +0 -1
- package/dist/src/rlc-common/metadata/build-license-file.js.map +0 -1
- package/dist/src/rlc-common/metadata/build-package-file.d.ts.map +0 -1
- package/dist/src/rlc-common/metadata/build-package-file.js.map +0 -1
- package/dist/src/rlc-common/metadata/build-readme-file.d.ts +0 -11
- package/dist/src/rlc-common/metadata/build-readme-file.d.ts.map +0 -1
- package/dist/src/rlc-common/metadata/build-readme-file.js.map +0 -1
- package/dist/src/rlc-common/metadata/build-sample-env-file.d.ts +0 -6
- package/dist/src/rlc-common/metadata/build-sample-env-file.d.ts.map +0 -1
- package/dist/src/rlc-common/metadata/build-sample-env-file.js.map +0 -1
- package/dist/src/rlc-common/metadata/build-test-config.d.ts.map +0 -1
- package/dist/src/rlc-common/metadata/build-test-config.js.map +0 -1
- package/dist/src/rlc-common/metadata/build-ts-config.d.ts.map +0 -1
- package/dist/src/rlc-common/metadata/build-ts-config.js.map +0 -1
- package/dist/src/rlc-common/metadata/build-vitest-config.d.ts +0 -6
- package/dist/src/rlc-common/metadata/build-vitest-config.d.ts.map +0 -1
- package/dist/src/rlc-common/metadata/build-vitest-config.js.map +0 -1
- package/dist/src/rlc-common/metadata/build-warp-config.d.ts.map +0 -1
- package/dist/src/rlc-common/metadata/build-warp-config.js.map +0 -1
- package/dist/src/rlc-common/metadata/package-json/azure-package-common.d.ts.map +0 -1
- package/dist/src/rlc-common/metadata/package-json/azure-package-common.js.map +0 -1
- package/dist/src/rlc-common/metadata/package-json/build-azure-monorepo-package.d.ts.map +0 -1
- package/dist/src/rlc-common/metadata/package-json/build-azure-monorepo-package.js.map +0 -1
- package/dist/src/rlc-common/metadata/package-json/package-common.d.ts.map +0 -1
- package/dist/src/rlc-common/metadata/package-json/package-common.js.map +0 -1
- package/dist/src/rlc-common/metadata/utils.d.ts +0 -3
- package/dist/src/rlc-common/metadata/utils.d.ts.map +0 -1
- package/dist/src/rlc-common/metadata/utils.js.map +0 -1
- package/dist/src/rlc-common/static/paginate-content.d.ts +0 -2
- package/dist/src/rlc-common/static/paginate-content.d.ts.map +0 -1
- package/dist/src/rlc-common/static/paginate-content.js +0 -345
- package/dist/src/rlc-common/static/paginate-content.js.map +0 -1
- package/dist/src/rlc-common/static/polling-content.d.ts +0 -2
- package/dist/src/rlc-common/static/polling-content.d.ts.map +0 -1
- package/dist/src/rlc-common/static/polling-content.js +0 -225
- package/dist/src/rlc-common/static/polling-content.js.map +0 -1
- package/dist/src/rlc-common/static/sample-template.d.ts +0 -2
- package/dist/src/rlc-common/static/sample-template.d.ts.map +0 -1
- package/dist/src/rlc-common/static/sample-template.js +0 -56
- package/dist/src/rlc-common/static/sample-template.js.map +0 -1
- package/dist/src/rlc-common/static/serialize-helper.d.ts +0 -6
- package/dist/src/rlc-common/static/serialize-helper.d.ts.map +0 -1
- package/dist/src/rlc-common/static/serialize-helper.js +0 -31
- package/dist/src/rlc-common/static/serialize-helper.js.map +0 -1
- package/dist/src/rlc-common/test/build-karma-config.d.ts +0 -6
- package/dist/src/rlc-common/test/build-karma-config.d.ts.map +0 -1
- package/dist/src/rlc-common/test/build-karma-config.js +0 -11
- package/dist/src/rlc-common/test/build-karma-config.js.map +0 -1
- package/dist/src/rlc-common/test/build-recorded-client.d.ts +0 -6
- package/dist/src/rlc-common/test/build-recorded-client.d.ts.map +0 -1
- package/dist/src/rlc-common/test/build-recorded-client.js +0 -14
- package/dist/src/rlc-common/test/build-recorded-client.js.map +0 -1
- package/dist/src/rlc-common/test/build-sample-test.d.ts +0 -6
- package/dist/src/rlc-common/test/build-sample-test.d.ts.map +0 -1
- package/dist/src/rlc-common/test/build-sample-test.js +0 -11
- package/dist/src/rlc-common/test/build-sample-test.js.map +0 -1
- package/dist/src/rlc-common/test/build-snippets.d.ts +0 -6
- package/dist/src/rlc-common/test/build-snippets.d.ts.map +0 -1
- package/dist/src/rlc-common/test/build-snippets.js.map +0 -1
- package/dist/src/rlc-common/test/template.d.ts +0 -5
- package/dist/src/rlc-common/test/template.d.ts.map +0 -1
- package/dist/src/rlc-common/test/template.js +0 -227
- package/dist/src/rlc-common/test/template.js.map +0 -1
- package/dist/src/transform/transfrom-rlc-options.d.ts.map +0 -1
- package/dist/src/transform/transfrom-rlc-options.js.map +0 -1
- package/src/rlc-common/index.ts +0 -25
- package/src/rlc-common/static/paginate-content.ts +0 -345
- package/src/rlc-common/static/polling-content.ts +0 -225
- package/src/rlc-common/static/sample-template.ts +0 -56
- package/src/rlc-common/static/serialize-helper.ts +0 -34
- package/src/rlc-common/test/build-karma-config.ts +0 -12
- package/src/rlc-common/test/build-recorded-client.ts +0 -15
- package/src/rlc-common/test/build-sample-test.ts +0 -12
- package/src/rlc-common/test/template.ts +0 -229
- /package/dist/src/{rlc-common/interfaces.js → interfaces.js} +0 -0
- /package/dist/src/{rlc-common/metadata → metadata}/build-api-extractor-config.js +0 -0
- /package/dist/src/{rlc-common/metadata → metadata}/build-changelog-file.js +0 -0
- /package/dist/src/{rlc-common/metadata → metadata}/build-es-lint-config.js +0 -0
- /package/dist/src/{rlc-common/metadata → metadata}/build-license-file.d.ts +0 -0
- /package/dist/src/{rlc-common/metadata → metadata}/build-license-file.js +0 -0
- /package/dist/src/{rlc-common/metadata → metadata}/build-sample-env-file.js +0 -0
- /package/dist/src/{rlc-common/metadata → metadata}/build-test-config.js +0 -0
- /package/dist/src/{rlc-common/metadata → metadata}/build-ts-config.js +0 -0
- /package/dist/src/{rlc-common/metadata → metadata}/build-vitest-config.js +0 -0
- /package/dist/src/{rlc-common/metadata → metadata}/build-warp-config.js +0 -0
- /package/dist/src/{rlc-common/metadata → metadata}/package-json/azure-package-common.d.ts +0 -0
- /package/dist/src/{rlc-common/metadata → metadata}/package-json/azure-package-common.js +0 -0
- /package/dist/src/{rlc-common/metadata → metadata}/package-json/build-azure-monorepo-package.d.ts +0 -0
- /package/dist/src/{rlc-common/metadata → metadata}/package-json/build-azure-monorepo-package.js +0 -0
- /package/dist/src/{rlc-common/metadata → metadata}/package-json/package-common.d.ts +0 -0
- /package/dist/src/{rlc-common/metadata → metadata}/package-json/package-common.js +0 -0
- /package/dist/src/{rlc-common/metadata → metadata}/utils.js +0 -0
- /package/dist/src/{rlc-common/helpers → utils}/api-version-util.d.ts +0 -0
- /package/dist/src/{rlc-common/helpers → utils}/api-version-util.js +0 -0
- /package/dist/src/{rlc-common/helpers → utils}/imports-util.d.ts +0 -0
- /package/dist/src/{rlc-common/helpers → utils}/name-constructors.js +0 -0
- /package/dist/src/{rlc-common/helpers → utils}/name-utils.d.ts +0 -0
- /package/dist/src/{rlc-common/helpers → utils}/name-utils.js +0 -0
- /package/dist/src/{rlc-common/helpers → utils}/operation-helpers.js +0 -0
- /package/dist/src/{rlc-common/helpers → utils}/schema-helpers.js +0 -0
- /package/dist/src/{rlc-common/helpers → utils}/type-util.d.ts +0 -0
- /package/dist/src/{rlc-common/helpers → utils}/type-util.js +0 -0
- /package/src/{rlc-common/metadata → metadata}/build-license-file.ts +0 -0
- /package/src/{rlc-common/metadata → metadata}/package-json/azure-package-common.ts +0 -0
- /package/src/{rlc-common/metadata → metadata}/package-json/build-azure-monorepo-package.ts +0 -0
- /package/src/{rlc-common/metadata → metadata}/package-json/package-common.ts +0 -0
- /package/src/{rlc-common/helpers → utils}/api-version-util.ts +0 -0
- /package/src/{rlc-common/helpers → utils}/name-utils.ts +0 -0
- /package/src/{rlc-common/helpers → utils}/type-util.ts +0 -0
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
// Copyright (c) Microsoft Corporation.
|
|
2
|
+
// Licensed under the MIT License.
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* A tiny, dependency-free renderer for the small subset of Handlebars/Mustache
|
|
6
|
+
* syntax used by the emitter's metadata templates. It intentionally supports only
|
|
7
|
+
* what those templates need:
|
|
8
|
+
*
|
|
9
|
+
* - `{{ name }}` interpolation (always "unescaped", matching the previous
|
|
10
|
+
* `{ noEscape: true }` Handlebars option).
|
|
11
|
+
* - `{{#if name}} ... {{else}} ... {{/if}}` conditional blocks (nesting allowed).
|
|
12
|
+
*
|
|
13
|
+
* It reproduces Handlebars' "standalone" whitespace handling so that a block tag
|
|
14
|
+
* occupying its own line does not leave a blank line behind, keeping the rendered
|
|
15
|
+
* output byte-for-byte identical to the previous Handlebars-based implementation.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
type TemplateData = Record<string, unknown>;
|
|
19
|
+
|
|
20
|
+
interface TextToken {
|
|
21
|
+
kind: "text";
|
|
22
|
+
value: string;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
interface TagToken {
|
|
26
|
+
kind: "open" | "else" | "close" | "var";
|
|
27
|
+
/** Condition (for `open`) or variable name (for `var`). */
|
|
28
|
+
name: string;
|
|
29
|
+
/** Whether this block tag stands alone on its line (Handlebars semantics). */
|
|
30
|
+
standalone: boolean;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
type Token = TextToken | TagToken;
|
|
34
|
+
|
|
35
|
+
const MUSTACHE = /\{\{([^}]*)\}\}/g;
|
|
36
|
+
|
|
37
|
+
function tokenize(template: string): Token[] {
|
|
38
|
+
const tokens: Token[] = [];
|
|
39
|
+
let lastIndex = 0;
|
|
40
|
+
let match: RegExpExecArray | null;
|
|
41
|
+
MUSTACHE.lastIndex = 0;
|
|
42
|
+
while ((match = MUSTACHE.exec(template)) !== null) {
|
|
43
|
+
tokens.push({ kind: "text", value: template.slice(lastIndex, match.index) });
|
|
44
|
+
const inner = match[1]!.trim();
|
|
45
|
+
if (inner.startsWith("#if ")) {
|
|
46
|
+
tokens.push({ kind: "open", name: inner.slice(4).trim(), standalone: false });
|
|
47
|
+
} else if (inner === "else") {
|
|
48
|
+
tokens.push({ kind: "else", name: "", standalone: false });
|
|
49
|
+
} else if (inner === "/if") {
|
|
50
|
+
tokens.push({ kind: "close", name: "", standalone: false });
|
|
51
|
+
} else {
|
|
52
|
+
tokens.push({ kind: "var", name: inner, standalone: false });
|
|
53
|
+
}
|
|
54
|
+
lastIndex = match.index + match[0].length;
|
|
55
|
+
}
|
|
56
|
+
tokens.push({ kind: "text", value: template.slice(lastIndex) });
|
|
57
|
+
return tokens;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Applies Handlebars "standalone" whitespace stripping. A block tag (`#if`,
|
|
62
|
+
* `else`, `/if`) that is the only non-whitespace content on its line has the
|
|
63
|
+
* surrounding indentation and trailing newline removed.
|
|
64
|
+
*/
|
|
65
|
+
function stripStandaloneWhitespace(tokens: Token[]): void {
|
|
66
|
+
const isBlock = (t: Token): t is TagToken =>
|
|
67
|
+
t.kind === "open" || t.kind === "else" || t.kind === "close";
|
|
68
|
+
|
|
69
|
+
// First pass: detect standalone tags from the original text tokens.
|
|
70
|
+
for (let i = 0; i < tokens.length; i++) {
|
|
71
|
+
const token = tokens[i]!;
|
|
72
|
+
if (!isBlock(token)) {
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
const prev = tokens[i - 1] as TextToken | undefined;
|
|
76
|
+
const next = tokens[i + 1] as TextToken | undefined;
|
|
77
|
+
const prevIsFirst = i - 1 === 0;
|
|
78
|
+
const nextIsLast = i + 1 === tokens.length - 1;
|
|
79
|
+
|
|
80
|
+
const prevValue = prev?.value ?? "";
|
|
81
|
+
const nextValue = next?.value ?? "";
|
|
82
|
+
|
|
83
|
+
const prevStandalone =
|
|
84
|
+
/\n[ \t]*$/.test(prevValue) || (prevIsFirst && /^[ \t]*$/.test(prevValue));
|
|
85
|
+
const nextStandalone =
|
|
86
|
+
/^[ \t]*\n/.test(nextValue) || (nextIsLast && /^[ \t]*$/.test(nextValue));
|
|
87
|
+
|
|
88
|
+
token.standalone = prevStandalone && nextStandalone;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// Second pass: strip whitespace around standalone tags.
|
|
92
|
+
for (let i = 0; i < tokens.length; i++) {
|
|
93
|
+
const token = tokens[i]!;
|
|
94
|
+
if (!isBlock(token) || !token.standalone) {
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
const prev = tokens[i - 1] as TextToken | undefined;
|
|
98
|
+
const next = tokens[i + 1] as TextToken | undefined;
|
|
99
|
+
if (prev) {
|
|
100
|
+
// Drop the indentation preceding the tag, keeping the previous newline.
|
|
101
|
+
prev.value = prev.value.replace(/[ \t]*$/, "");
|
|
102
|
+
}
|
|
103
|
+
if (next) {
|
|
104
|
+
// Drop the rest of the tag's line, including its trailing newline.
|
|
105
|
+
next.value = /^[ \t]*\n/.test(next.value)
|
|
106
|
+
? next.value.replace(/^[ \t]*\n/, "")
|
|
107
|
+
: next.value.replace(/^[ \t]*$/, "");
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
type Node = TextNode | VarNode | IfNode;
|
|
113
|
+
interface TextNode {
|
|
114
|
+
kind: "text";
|
|
115
|
+
value: string;
|
|
116
|
+
}
|
|
117
|
+
interface VarNode {
|
|
118
|
+
kind: "var";
|
|
119
|
+
name: string;
|
|
120
|
+
}
|
|
121
|
+
interface IfNode {
|
|
122
|
+
kind: "if";
|
|
123
|
+
condition: string;
|
|
124
|
+
whenTrue: Node[];
|
|
125
|
+
whenFalse: Node[];
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
function parse(tokens: Token[], start: number, stopKinds: Token["kind"][]): [Node[], number] {
|
|
129
|
+
const nodes: Node[] = [];
|
|
130
|
+
let i = start;
|
|
131
|
+
while (i < tokens.length) {
|
|
132
|
+
const token = tokens[i]!;
|
|
133
|
+
if (token.kind === "text") {
|
|
134
|
+
if (token.value) {
|
|
135
|
+
nodes.push({ kind: "text", value: token.value });
|
|
136
|
+
}
|
|
137
|
+
i++;
|
|
138
|
+
} else if (token.kind === "var") {
|
|
139
|
+
nodes.push({ kind: "var", name: token.name });
|
|
140
|
+
i++;
|
|
141
|
+
} else if (token.kind === "open") {
|
|
142
|
+
const [whenTrue, afterTrue] = parse(tokens, i + 1, ["else", "close"]);
|
|
143
|
+
let whenFalse: Node[] = [];
|
|
144
|
+
let next = afterTrue;
|
|
145
|
+
if (tokens[next]?.kind === "else") {
|
|
146
|
+
const [elseNodes, afterElse] = parse(tokens, next + 1, ["close"]);
|
|
147
|
+
whenFalse = elseNodes;
|
|
148
|
+
next = afterElse;
|
|
149
|
+
}
|
|
150
|
+
// `next` now points at the matching `close` token.
|
|
151
|
+
nodes.push({ kind: "if", condition: token.name, whenTrue, whenFalse });
|
|
152
|
+
i = next + 1;
|
|
153
|
+
} else if (stopKinds.includes(token.kind)) {
|
|
154
|
+
return [nodes, i];
|
|
155
|
+
} else {
|
|
156
|
+
// Unmatched `else`/`close`; skip defensively.
|
|
157
|
+
i++;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
return [nodes, i];
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
function isTruthy(value: unknown): boolean {
|
|
164
|
+
if (Array.isArray(value)) {
|
|
165
|
+
return value.length > 0;
|
|
166
|
+
}
|
|
167
|
+
return Boolean(value);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
function renderNodes(nodes: Node[], data: TemplateData): string {
|
|
171
|
+
let out = "";
|
|
172
|
+
for (const node of nodes) {
|
|
173
|
+
switch (node.kind) {
|
|
174
|
+
case "text":
|
|
175
|
+
out += node.value;
|
|
176
|
+
break;
|
|
177
|
+
case "var": {
|
|
178
|
+
const value = data[node.name];
|
|
179
|
+
out += value === undefined || value === null ? "" : String(value);
|
|
180
|
+
break;
|
|
181
|
+
}
|
|
182
|
+
case "if":
|
|
183
|
+
out += renderNodes(isTruthy(data[node.condition]) ? node.whenTrue : node.whenFalse, data);
|
|
184
|
+
break;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
return out;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* Renders a metadata template against the provided data.
|
|
192
|
+
*
|
|
193
|
+
* @param template - Template using the supported `{{var}}` / `{{#if}}` subset.
|
|
194
|
+
* @param data - Values referenced by the template.
|
|
195
|
+
* @returns The rendered string.
|
|
196
|
+
*/
|
|
197
|
+
export function renderTemplate(template: string, data: TemplateData): string {
|
|
198
|
+
const tokens = tokenize(template);
|
|
199
|
+
stripStandaloneWhitespace(tokens);
|
|
200
|
+
const [nodes] = parse(tokens, 0, []);
|
|
201
|
+
return renderNodes(nodes, data);
|
|
202
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ClientModel } from "../../interfaces.js";
|
|
2
|
+
import { recordedClientContent } from "./template.js";
|
|
3
|
+
|
|
4
|
+
export function buildRecordedClientFile(_model: ClientModel) {
|
|
5
|
+
return {
|
|
6
|
+
path: "test/public/utils/recordedClient.ts",
|
|
7
|
+
content: recordedClientContent,
|
|
8
|
+
};
|
|
9
|
+
}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import
|
|
4
|
-
import { getClientName } from "../helpers/name-constructors.js";
|
|
5
|
-
import { RLCModel } from "../interfaces.js";
|
|
1
|
+
import { ClientModel } from "../../interfaces.js";
|
|
2
|
+
import { getClientName } from "../../utils/name-constructors.js";
|
|
3
|
+
import { renderTemplate } from "../render-template.js";
|
|
6
4
|
import { snippetsContent } from "./template.js";
|
|
7
5
|
|
|
8
|
-
export function buildSnippets(model:
|
|
6
|
+
export function buildSnippets(model: ClientModel, clientName?: string) {
|
|
9
7
|
// to keep the same config for azure scope in buildReadmeFile.ts
|
|
10
8
|
if (
|
|
11
9
|
(model?.options?.packageDetails?.scopeName === "azure" ||
|
|
@@ -14,7 +12,7 @@ export function buildSnippets(model: RLCModel, clientName?: string) {
|
|
|
14
12
|
) {
|
|
15
13
|
return {
|
|
16
14
|
path: "test/snippets.spec.ts",
|
|
17
|
-
content:
|
|
15
|
+
content: renderTemplate(snippetsContent, {
|
|
18
16
|
clientClassName: clientName ? clientName : getClientName(model),
|
|
19
17
|
azureArm: model.options?.azureArm,
|
|
20
18
|
hasSubscriptionId: model.options.hasSubscriptionId,
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
export const recordedClientContent = `
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
Recorder,
|
|
5
|
+
RecorderStartOptions,
|
|
6
|
+
VitestTestContext,
|
|
7
|
+
} from "@azure-tools/test-recorder";
|
|
8
|
+
|
|
9
|
+
const replaceableVariables: Record<string, string> = {
|
|
10
|
+
SUBSCRIPTION_ID: "azure_subscription_id"
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
const recorderEnvSetup: RecorderStartOptions = {
|
|
14
|
+
envSetupForPlayback: replaceableVariables,
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* creates the recorder and reads the environment variables from the \`.env\` file.
|
|
19
|
+
* Should be called first in the test suite to make sure environment variables are
|
|
20
|
+
* read before they are being used.
|
|
21
|
+
*/
|
|
22
|
+
export async function createRecorder(context: VitestTestContext): Promise<Recorder> {
|
|
23
|
+
const recorder = new Recorder(context);
|
|
24
|
+
await recorder.start(recorderEnvSetup);
|
|
25
|
+
return recorder;
|
|
26
|
+
}
|
|
27
|
+
`;
|
|
28
|
+
|
|
29
|
+
export const sampleTestContent = `
|
|
30
|
+
// import { Recorder } from "@azure-tools/test-recorder";
|
|
31
|
+
// import { createRecorder } from "./utils/recordedClient.js";
|
|
32
|
+
import { assert,
|
|
33
|
+
// beforeEach,
|
|
34
|
+
// afterEach,
|
|
35
|
+
it,
|
|
36
|
+
describe
|
|
37
|
+
} from "vitest";
|
|
38
|
+
|
|
39
|
+
describe("My test", () => {
|
|
40
|
+
// let recorder: Recorder;
|
|
41
|
+
|
|
42
|
+
// beforeEach(async function(ctx) {
|
|
43
|
+
// recorder = await createRecorder(ctx);
|
|
44
|
+
// });
|
|
45
|
+
|
|
46
|
+
// afterEach(async function() {
|
|
47
|
+
// await recorder.stop();
|
|
48
|
+
// });
|
|
49
|
+
|
|
50
|
+
it("sample test", async function() {
|
|
51
|
+
assert.equal(1, 1);
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
`;
|
|
55
|
+
|
|
56
|
+
export const snippetsContent = `
|
|
57
|
+
import { {{ clientClassName }} } from "../src/index.js";
|
|
58
|
+
import { DefaultAzureCredential, InteractiveBrowserCredential } from "@azure/identity";
|
|
59
|
+
import { setLogLevel } from "@azure/logger";
|
|
60
|
+
import { describe, it } from "vitest";
|
|
61
|
+
|
|
62
|
+
describe("snippets", () => {
|
|
63
|
+
it("ReadmeSampleCreateClient_Node", async () => {
|
|
64
|
+
{{#if azureArm}}
|
|
65
|
+
{{#if hasSubscriptionId}}
|
|
66
|
+
const subscriptionId = "00000000-0000-0000-0000-000000000000";
|
|
67
|
+
const client = new {{ clientClassName }}(new DefaultAzureCredential(), subscriptionId);
|
|
68
|
+
{{else}}
|
|
69
|
+
const client = new {{ clientClassName }}(new DefaultAzureCredential());
|
|
70
|
+
{{/if}}
|
|
71
|
+
{{else}}
|
|
72
|
+
const client = new {{ clientClassName }}("<endpoint>", new DefaultAzureCredential());
|
|
73
|
+
{{/if}}
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
it("ReadmeSampleCreateClient_Browser", async () => {
|
|
77
|
+
{{#if azureArm}}
|
|
78
|
+
const credential = new InteractiveBrowserCredential({
|
|
79
|
+
tenantId: "<YOUR_TENANT_ID>",
|
|
80
|
+
clientId: "<YOUR_CLIENT_ID>",
|
|
81
|
+
});
|
|
82
|
+
{{#if hasSubscriptionId}}
|
|
83
|
+
const subscriptionId = "00000000-0000-0000-0000-000000000000";
|
|
84
|
+
const client = new {{ clientClassName }}(credential, subscriptionId);
|
|
85
|
+
{{else}}
|
|
86
|
+
const client = new {{ clientClassName }}(credential);
|
|
87
|
+
{{/if}}
|
|
88
|
+
{{else}}
|
|
89
|
+
const credential = new InteractiveBrowserCredential({
|
|
90
|
+
tenantId: "<YOUR_TENANT_ID>",
|
|
91
|
+
clientId: "<YOUR_CLIENT_ID>",
|
|
92
|
+
});
|
|
93
|
+
const client = new {{ clientClassName }}("<endpoint>", credential);
|
|
94
|
+
{{/if}}
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
it("SetLogLevel", async () => {
|
|
98
|
+
setLogLevel("info");
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
`;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// Copyright (c) Microsoft Corporation.
|
|
2
2
|
// Licensed under the MIT License.
|
|
3
3
|
|
|
4
|
-
import {
|
|
4
|
+
import { ClientModel } from "../interfaces.js";
|
|
5
5
|
|
|
6
|
-
export function getPackageName(model:
|
|
6
|
+
export function getPackageName(model: ClientModel): string {
|
|
7
7
|
return model.options?.packageDetails?.name ?? model.libraryName;
|
|
8
8
|
}
|
|
@@ -5,7 +5,6 @@ import {
|
|
|
5
5
|
SourceFile,
|
|
6
6
|
StructureKind,
|
|
7
7
|
} from "ts-morph";
|
|
8
|
-
import { NameType, normalizeName } from "../rlc-common/index.js";
|
|
9
8
|
import { buildUserAgentOptions, getClientParametersDeclaration } from "./helpers/client-helpers.js";
|
|
10
9
|
import { getClassicalClientName, getClientName } from "./helpers/naming-helpers.js";
|
|
11
10
|
import { ModularEmitterOptions } from "./interfaces.js";
|
|
@@ -20,8 +19,9 @@ import { useContext } from "../context-manager.js";
|
|
|
20
19
|
import { useDependencies } from "../framework/hooks/use-dependencies.js";
|
|
21
20
|
import { resolveReference } from "../framework/reference.js";
|
|
22
21
|
import { refkey } from "../framework/refkey.js";
|
|
23
|
-
import {
|
|
22
|
+
import { getClientModuleInfo, isMultiEndpointClient } from "../utils/client-utils.js";
|
|
24
23
|
import { SdkContext } from "../utils/interfaces.js";
|
|
24
|
+
import { NameType, normalizeName } from "../utils/name-utils.js";
|
|
25
25
|
import { getMethodHierarchiesMap, isTenantLevelOperation } from "../utils/operation-util.js";
|
|
26
26
|
import { AzurePollingDependencies } from "./external-dependencies.js";
|
|
27
27
|
import { getPagingLROMethodName } from "./helpers/classical-operation-helpers.js";
|
|
@@ -47,7 +47,7 @@ export function buildClassicalClient(
|
|
|
47
47
|
requiredOnly: true,
|
|
48
48
|
});
|
|
49
49
|
const srcPath = emitterOptions.modularOptions.sourceRoot;
|
|
50
|
-
const { subfolder,
|
|
50
|
+
const { subfolder, clientName } = getClientModuleInfo(clientMap);
|
|
51
51
|
|
|
52
52
|
const clientFile = project.createSourceFile(
|
|
53
53
|
`${srcPath}/${subfolder && subfolder !== "" ? subfolder + "/" : ""}${normalizeName(
|
|
@@ -68,16 +68,16 @@ export function buildClassicalClient(
|
|
|
68
68
|
});
|
|
69
69
|
|
|
70
70
|
// Add the private client member. This will be the client context from /api
|
|
71
|
-
if (
|
|
71
|
+
if (isMultiEndpointClient(dpgContext)) {
|
|
72
72
|
clientClass.addProperty({
|
|
73
73
|
name: "_client",
|
|
74
|
-
type: `Client.${
|
|
74
|
+
type: `Client.${clientName}`,
|
|
75
75
|
scope: Scope.Private,
|
|
76
76
|
});
|
|
77
77
|
} else {
|
|
78
78
|
clientClass.addProperty({
|
|
79
79
|
name: "_client",
|
|
80
|
-
type: `${
|
|
80
|
+
type: `${clientName}`,
|
|
81
81
|
scope: Scope.Private,
|
|
82
82
|
});
|
|
83
83
|
}
|
|
@@ -214,7 +214,7 @@ function generateMethod(
|
|
|
214
214
|
});
|
|
215
215
|
|
|
216
216
|
// add LRO helper methods if applicable
|
|
217
|
-
if (context.
|
|
217
|
+
if (context.emitterOptions?.compatibilityLro && declaration?.isLro && !declaration?.isLroPaging) {
|
|
218
218
|
const operationStateReference = resolveReference(AzurePollingDependencies.OperationState);
|
|
219
219
|
const simplePollerLikeReference = resolveReference(SimplePollerHelpers.SimplePollerLike);
|
|
220
220
|
const getSimplePollerReference = resolveReference(SimplePollerHelpers.getSimplePoller);
|
|
@@ -244,7 +244,7 @@ function generateMethod(
|
|
|
244
244
|
statements: `return await ${declarationRefKey}(${methodParamStr});`,
|
|
245
245
|
});
|
|
246
246
|
} // For LRO+Paging operations, use different return types and implementation
|
|
247
|
-
else if (context.
|
|
247
|
+
else if (context.emitterOptions?.compatibilityLro && declaration?.isLroPaging) {
|
|
248
248
|
const returnType = declaration?.lropagingFinalReturnType ?? "void";
|
|
249
249
|
const pagedAsyncIterableIteratorReference = resolveReference(
|
|
250
250
|
PagingHelpers.PagedAsyncIterableIterator,
|
|
@@ -274,7 +274,7 @@ function buildClientOperationGroups(
|
|
|
274
274
|
) {
|
|
275
275
|
let clientType = "Client";
|
|
276
276
|
const [_hierarchy, client] = clientMap;
|
|
277
|
-
const { subfolder } =
|
|
277
|
+
const { subfolder } = getClientModuleInfo(clientMap);
|
|
278
278
|
if (subfolder && subfolder !== "") {
|
|
279
279
|
clientType = `Client.${clientClass.getName()}`;
|
|
280
280
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { SdkClientType, SdkServiceOperation } from "@azure-tools/typespec-client-generator-core";
|
|
2
2
|
import { SourceFile } from "ts-morph";
|
|
3
3
|
import { useContext } from "../context-manager.js";
|
|
4
|
-
import {
|
|
5
|
-
import { getModularClientOptions } from "../utils/client-utils.js";
|
|
4
|
+
import { getClientModuleInfo } from "../utils/client-utils.js";
|
|
6
5
|
import { SdkContext } from "../utils/interfaces.js";
|
|
6
|
+
import { NameType } from "../utils/name-utils.js";
|
|
7
7
|
import { getMethodHierarchiesMap } from "../utils/operation-util.js";
|
|
8
8
|
import { getClassicalOperation } from "./helpers/classical-operation-helpers.js";
|
|
9
9
|
import { getClassicalLayerPrefix } from "./helpers/naming-helpers.js";
|
|
@@ -17,7 +17,7 @@ export function buildClassicOperationFiles(
|
|
|
17
17
|
// const sdkPackage = dpgContext.sdkPackage;
|
|
18
18
|
const project = useContext("outputProject");
|
|
19
19
|
const [_hierarchy, client] = clientMap;
|
|
20
|
-
const { subfolder } =
|
|
20
|
+
const { subfolder } = getClientModuleInfo(clientMap);
|
|
21
21
|
const classicOperationFiles: Map<string, SourceFile> = new Map<string, SourceFile>();
|
|
22
22
|
const methodMap = getMethodHierarchiesMap(dpgContext, client);
|
|
23
23
|
for (const [prefixKey, operations] of methodMap) {
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { NameType, normalizeName } from "../rlc-common/index.js";
|
|
2
1
|
import {
|
|
3
2
|
buildGetClientCredentialParam,
|
|
4
3
|
buildGetClientEndpointParam,
|
|
@@ -24,8 +23,9 @@ import { useDependencies } from "../framework/hooks/use-dependencies.js";
|
|
|
24
23
|
import { resolveReference } from "../framework/reference.js";
|
|
25
24
|
import { refkey } from "../framework/refkey.js";
|
|
26
25
|
import { reportDiagnostic } from "../lib.js";
|
|
27
|
-
import {
|
|
26
|
+
import { getClientModuleInfo } from "../utils/client-utils.js";
|
|
28
27
|
import { SdkContext } from "../utils/interfaces.js";
|
|
28
|
+
import { NameType, normalizeName } from "../utils/name-utils.js";
|
|
29
29
|
import { buildEnumTypes, getApiVersionEnum } from "./emit-models.js";
|
|
30
30
|
import { getDocsFromDescription } from "./helpers/docs-helpers.js";
|
|
31
31
|
import { getClassicalClientName, getClientName } from "./helpers/naming-helpers.js";
|
|
@@ -40,7 +40,7 @@ export function getClientContextPath(
|
|
|
40
40
|
emitterOptions: ModularEmitterOptions,
|
|
41
41
|
): string {
|
|
42
42
|
const [_, client] = clientMap;
|
|
43
|
-
const { subfolder } =
|
|
43
|
+
const { subfolder } = getClientModuleInfo(clientMap);
|
|
44
44
|
const name = getClientName(client);
|
|
45
45
|
const srcPath = emitterOptions.modularOptions.sourceRoot;
|
|
46
46
|
const contentPath = `${srcPath}/${
|
|
@@ -61,7 +61,7 @@ export function buildClientContext(
|
|
|
61
61
|
const dependencies = useDependencies();
|
|
62
62
|
const [hierarchy, client] = clientMap;
|
|
63
63
|
const name = getClientName(client);
|
|
64
|
-
const {
|
|
64
|
+
const { clientName } = getClientModuleInfo(clientMap);
|
|
65
65
|
const requiredParams = getClientParametersDeclaration(client, dpgContext, {
|
|
66
66
|
onClientOnly: false,
|
|
67
67
|
requiredOnly: true,
|
|
@@ -116,7 +116,7 @@ export function buildClientContext(
|
|
|
116
116
|
|
|
117
117
|
clientContextFile.addInterface({
|
|
118
118
|
isExported: true,
|
|
119
|
-
name: `${
|
|
119
|
+
name: `${clientName}`,
|
|
120
120
|
extends: [resolveReference(dependencies.Client)],
|
|
121
121
|
docs: getDocsFromDescription(client.doc),
|
|
122
122
|
properties: [...requiredInterfaceProperties, ...optionalInterfaceProperties],
|
|
@@ -172,7 +172,7 @@ export function buildClientContext(
|
|
|
172
172
|
const factoryFunction = clientContextFile.addFunction({
|
|
173
173
|
docs: getDocsFromDescription(client.doc),
|
|
174
174
|
name: `create${name}`,
|
|
175
|
-
returnType: `${
|
|
175
|
+
returnType: `${clientName}`,
|
|
176
176
|
parameters: getClientParametersDeclaration(client, dpgContext, {
|
|
177
177
|
onClientOnly: false,
|
|
178
178
|
requiredOnly: true,
|
|
@@ -286,7 +286,7 @@ export function buildClientContext(
|
|
|
286
286
|
|
|
287
287
|
if (allContextParams.length) {
|
|
288
288
|
factoryFunction.addStatements(
|
|
289
|
-
`return { ...clientContext, ${allContextParams.join(", ")}} as ${
|
|
289
|
+
`return { ...clientContext, ${allContextParams.join(", ")}} as ${clientName};`,
|
|
290
290
|
);
|
|
291
291
|
} else {
|
|
292
292
|
factoryFunction.addStatements(`return clientContext;`);
|
|
@@ -10,11 +10,11 @@ export function transformModularEmitterOptions(
|
|
|
10
10
|
): ModularEmitterOptions {
|
|
11
11
|
CASING = options.casing ?? CASING;
|
|
12
12
|
const emitterOptions: ModularEmitterOptions = {
|
|
13
|
-
options: dpgContext.
|
|
13
|
+
options: dpgContext.emitterOptions ?? {},
|
|
14
14
|
modularOptions: {
|
|
15
15
|
sourceRoot: modularSourcesRoot,
|
|
16
|
-
compatibilityMode: !!dpgContext.
|
|
17
|
-
experimentalExtensibleEnums: !!dpgContext.
|
|
16
|
+
compatibilityMode: !!dpgContext.emitterOptions?.compatibilityMode,
|
|
17
|
+
experimentalExtensibleEnums: !!dpgContext.emitterOptions?.experimentalExtensibleEnums,
|
|
18
18
|
},
|
|
19
19
|
};
|
|
20
20
|
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { InterfaceDeclarationStructure, SourceFile, StructureKind } from "ts-morph";
|
|
2
|
-
import { NameType, normalizeName } from "../rlc-common/index.js";
|
|
3
2
|
import {
|
|
4
3
|
getDeserializeExceptionHeadersPrivateFunction,
|
|
5
4
|
getDeserializeHeadersPrivateFunction,
|
|
@@ -23,8 +22,9 @@ import { addDeclaration } from "../framework/declaration.js";
|
|
|
23
22
|
import { useDependencies } from "../framework/hooks/use-dependencies.js";
|
|
24
23
|
import { resolveReference } from "../framework/reference.js";
|
|
25
24
|
import { refkey } from "../framework/refkey.js";
|
|
26
|
-
import {
|
|
25
|
+
import { getClientModuleInfo, isMultiEndpointClient } from "../utils/client-utils.js";
|
|
27
26
|
import { SdkContext } from "../utils/interfaces.js";
|
|
27
|
+
import { NameType, normalizeName } from "../utils/name-utils.js";
|
|
28
28
|
import {
|
|
29
29
|
getMethodHierarchiesMap,
|
|
30
30
|
hasDualFormatSupport,
|
|
@@ -48,9 +48,9 @@ export function buildOperationFiles(
|
|
|
48
48
|
const project = useContext("outputProject");
|
|
49
49
|
const [_, client] = clientMap;
|
|
50
50
|
const operationFiles: Set<SourceFile> = new Set();
|
|
51
|
-
const { subfolder,
|
|
52
|
-
const isMultiEndpoint =
|
|
53
|
-
const clientType = isMultiEndpoint ? `Client.${
|
|
51
|
+
const { subfolder, clientName } = getClientModuleInfo(clientMap);
|
|
52
|
+
const isMultiEndpoint = isMultiEndpointClient(dpgContext);
|
|
53
|
+
const clientType = isMultiEndpoint ? `Client.${clientName}` : "Client";
|
|
54
54
|
const methodMap = getMethodHierarchiesMap(dpgContext, client);
|
|
55
55
|
for (const [prefixKey, operations] of methodMap) {
|
|
56
56
|
const prefixes = prefixKey.split("/");
|
|
@@ -102,7 +102,7 @@ export function buildOperationFiles(
|
|
|
102
102
|
|
|
103
103
|
const indexPathPrefix = "../".repeat(prefixKey === "" ? 0 : prefixes.length) || "./";
|
|
104
104
|
operationGroupFile.addImportDeclaration({
|
|
105
|
-
namedImports: [`${
|
|
105
|
+
namedImports: [`${clientName} as Client`],
|
|
106
106
|
moduleSpecifier: `${indexPathPrefix}index.js`,
|
|
107
107
|
});
|
|
108
108
|
operationGroupFile.fixUnusedIdentifiers();
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { NameType } from "../rlc-common/index.js";
|
|
2
|
-
|
|
3
1
|
import { getRelativePathFromDirectory, joinPaths } from "@typespec/compiler";
|
|
4
2
|
import { useContext } from "../context-manager.js";
|
|
5
|
-
import { getClientHierarchyMap,
|
|
3
|
+
import { getClientHierarchyMap, getClientModuleInfo } from "../utils/client-utils.js";
|
|
6
4
|
import { SdkContext } from "../utils/interfaces.js";
|
|
5
|
+
import { NameType } from "../utils/name-utils.js";
|
|
7
6
|
import { getMethodHierarchiesMap } from "../utils/operation-util.js";
|
|
8
7
|
import { getClassicalLayerPrefix } from "./helpers/naming-helpers.js";
|
|
9
8
|
import { ModularEmitterOptions } from "./interfaces.js";
|
|
@@ -42,7 +41,7 @@ function buildExportsForMultiClient(
|
|
|
42
41
|
if (hierarchy.length === 0) {
|
|
43
42
|
hasTopLevelClient = true;
|
|
44
43
|
}
|
|
45
|
-
const { subfolder } =
|
|
44
|
+
const { subfolder } = getClientModuleInfo([hierarchy, client]);
|
|
46
45
|
if (subfolder !== "" && methodMap.size > 0) {
|
|
47
46
|
packageInfo.exports[`./${subfolder}`] = `${srcPrefix}/${subfolder}/index.ts`;
|
|
48
47
|
|
|
@@ -56,7 +55,7 @@ function buildExportsForMultiClient(
|
|
|
56
55
|
// TODO: support api subpath exports for multi-service. Skip for now. https://github.com/Azure/autorest.typescript/issues/3717
|
|
57
56
|
if (!emitterOptions.options.isMultiService) {
|
|
58
57
|
for (const flattenedClient of clientMap) {
|
|
59
|
-
const { subfolder } =
|
|
58
|
+
const { subfolder } = getClientModuleInfo(flattenedClient);
|
|
60
59
|
const client = flattenedClient[1];
|
|
61
60
|
const methodMap = getMethodHierarchiesMap(context, client);
|
|
62
61
|
for (const [prefixKey, _] of methodMap) {
|
|
@@ -4,9 +4,9 @@ import { SourceFile } from "ts-morph";
|
|
|
4
4
|
import { useContext } from "../context-manager.js";
|
|
5
5
|
import { useDependencies } from "../framework/hooks/use-dependencies.js";
|
|
6
6
|
import { resolveReference } from "../framework/reference.js";
|
|
7
|
-
import {
|
|
8
|
-
import { getModularClientOptions } from "../utils/client-utils.js";
|
|
7
|
+
import { getClientModuleInfo } from "../utils/client-utils.js";
|
|
9
8
|
import { SdkContext } from "../utils/interfaces.js";
|
|
9
|
+
import { NameType, normalizeName } from "../utils/name-utils.js";
|
|
10
10
|
import { getMethodHierarchiesMap } from "../utils/operation-util.js";
|
|
11
11
|
import { buildLroDeserDetailMap } from "./build-operations.js";
|
|
12
12
|
import { AzurePollingDependencies } from "./external-dependencies.js";
|
|
@@ -23,7 +23,7 @@ export function buildRestorePoller(
|
|
|
23
23
|
const project = useContext("outputProject");
|
|
24
24
|
const [_, client] = clientMap;
|
|
25
25
|
const dependencies = useDependencies();
|
|
26
|
-
const { subfolder } =
|
|
26
|
+
const { subfolder } = getClientModuleInfo(clientMap);
|
|
27
27
|
const methodMap = getMethodHierarchiesMap(context, client);
|
|
28
28
|
const hasLro = Array.from(methodMap.values()).some((operations) => {
|
|
29
29
|
return operations.some(isLroOnlyOperation);
|