@typespec/http-client-csharp 1.0.0-alpha.20250826.5 → 1.0.0-alpha.20250827.3

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.
@@ -6,7 +6,9 @@ export { $lib, createDiagnostic, getTracer, reportDiagnostic } from "./lib/lib.j
6
6
  export { LoggerLevel } from "./lib/logger-level.js";
7
7
  export { Logger } from "./lib/logger.js";
8
8
  export { CSharpEmitterOptions, CSharpEmitterOptionsSchema, defaultOptions, resolveOptions, } from "./options.js";
9
+ export { $dynamicModel, isDynamicModel } from "./lib/decorators.js";
9
10
  export { CSharpEmitterContext, createCSharpEmitterContext } from "./sdk-context.js";
10
11
  export { CodeModel } from "./type/code-model.js";
11
12
  export { InputClient, InputModelType } from "./type/input-type.js";
13
+ export type { DynamicModelDecorator } from "../../generated-defs/TypeSpec.HttpClient.CSharp.js";
12
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../emitter/src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvC,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACnF,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,cAAc,EACd,cAAc,GACf,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AACpF,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../emitter/src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvC,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACnF,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,cAAc,EACd,cAAc,GACf,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AACpF,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAKnE,YAAY,EAAE,qBAAqB,EAAE,MAAM,oDAAoD,CAAC"}
@@ -12,5 +12,8 @@ export { Logger } from "./lib/logger.js";
12
12
  export { CSharpEmitterOptionsSchema, defaultOptions, resolveOptions, } from "./options.js";
13
13
  // we export `createCSharpEmitterContext` only for autorest.csharp because it uses the emitter to generate the code model file but not calling the dll here
14
14
  // we could remove this export when in the future we deprecate autorest.csharp
15
+ export { $dynamicModel, isDynamicModel } from "./lib/decorators.js";
15
16
  export { createCSharpEmitterContext } from "./sdk-context.js";
17
+ /** @internal */
18
+ export { $decorators } from "./tsp-index.js";
16
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../emitter/src/index.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,+FAA+F;AAE/F,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,4IAA4I;AAC5I,8EAA8E;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACnF,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAEL,0BAA0B,EAC1B,cAAc,EACd,cAAc,GACf,MAAM,cAAc,CAAC;AACtB,2JAA2J;AAC3J,8EAA8E;AAC9E,OAAO,EAAwB,0BAA0B,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../emitter/src/index.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,+FAA+F;AAE/F,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,4IAA4I;AAC5I,8EAA8E;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACnF,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAEL,0BAA0B,EAC1B,cAAc,EACd,cAAc,GACf,MAAM,cAAc,CAAC;AACtB,2JAA2J;AAC3J,8EAA8E;AAC9E,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAwB,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAIpF,gBAAgB;AAChB,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"client-model-builder.d.ts","sourceRoot":"","sources":["../../../../emitter/src/lib/client-model-builder.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAMlD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,oBAAoB,GAAG,SAAS,CAgEvE"}
1
+ {"version":3,"file":"client-model-builder.d.ts","sourceRoot":"","sources":["../../../../emitter/src/lib/client-model-builder.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAOlD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,oBAAoB,GAAG,SAAS,CAsEvE"}
@@ -13,9 +13,13 @@ import { firstLetterToUpperCase, getClientNamespaceString } from "./utils.js";
13
13
  */
14
14
  export function createModel(sdkContext) {
15
15
  const sdkPackage = sdkContext.sdkPackage;
16
- // convert all the models and enums in the sdkPackage to the type cache.
17
- const models = sdkPackage.models.map((m) => fromSdkType(sdkContext, m));
18
- const enums = sdkPackage.enums.map((e) => fromSdkType(sdkContext, e));
16
+ // TO-DO: Consider using the TCGC model + enum cache once https://github.com/Azure/typespec-azure/issues/3180 is resolved
17
+ navigateModels(sdkContext);
18
+ const types = Array.from(sdkContext.__typeCache.types.values());
19
+ const [models, enums] = [
20
+ types.filter((type) => type.kind === "model"),
21
+ types.filter((type) => type.kind === "enum"),
22
+ ];
19
23
  const sdkApiVersionEnums = sdkPackage.enums.filter((e) => e.usage === UsageFlags.ApiVersionEnum);
20
24
  const rootClients = sdkPackage.clients;
21
25
  const rootApiVersions = sdkApiVersionEnums.length > 0
@@ -70,4 +74,12 @@ export function createModel(sdkContext) {
70
74
  };
71
75
  return clientModel;
72
76
  }
77
+ function navigateModels(sdkContext) {
78
+ for (const m of sdkContext.sdkPackage.models) {
79
+ fromSdkType(sdkContext, m);
80
+ }
81
+ for (const e of sdkContext.sdkPackage.enums) {
82
+ fromSdkType(sdkContext, e);
83
+ }
84
+ }
73
85
  //# sourceMappingURL=client-model-builder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client-model-builder.js","sourceRoot":"","sources":["../../../../emitter/src/lib/client-model-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client-model-builder.js","sourceRoot":"","sources":["../../../../emitter/src/lib/client-model-builder.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { SdkContext } from "@azure-tools/typespec-client-generator-core";
2
- import { DecoratedType, Operation, Type } from "@typespec/compiler";
2
+ import { DecoratedType, Model, Namespace, Operation, Program, Type } from "@typespec/compiler";
3
+ import type { DynamicModelDecorator } from "../../../generated-defs/TypeSpec.HttpClient.CSharp.js";
3
4
  import { ExternalDocs } from "../type/external-docs.js";
4
5
  export declare function getExternalDocs(context: SdkContext, entity: Type): ExternalDocs | undefined;
5
6
  /**
@@ -7,4 +8,20 @@ export declare function getExternalDocs(context: SdkContext, entity: Type): Exte
7
8
  */
8
9
  export declare function getOperationId(context: SdkContext, entity: Operation): string | undefined;
9
10
  export declare function hasDecorator(type: DecoratedType, name: string): boolean;
11
+ /**
12
+ * Marks a model or namespace as dynamic, indicating it should generate dynamic model code.
13
+ * Can be applied to Model or Namespace types.
14
+ * @param context - The decorator context
15
+ * @param target - The model or namespace to mark as dynamic
16
+ * @beta
17
+ */
18
+ export declare const $dynamicModel: DynamicModelDecorator;
19
+ /**
20
+ * Check if the given model or namespace is marked as dynamic.
21
+ * @param program - The TypeSpec program
22
+ * @param target - The model or namespace to check
23
+ * @returns true if the target is marked as dynamic, false otherwise
24
+ * @beta
25
+ */
26
+ export declare function isDynamicModel(program: Program, target: Model | Namespace): boolean;
10
27
  //# sourceMappingURL=decorators.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../../../emitter/src/lib/decorators.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,6CAA6C,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGxD,wBAAgB,eAAe,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,GAAG,YAAY,GAAG,SAAS,CAE3F;AAGD;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,CAEzF;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAEvE"}
1
+ {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../../../emitter/src/lib/decorators.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,6CAA6C,CAAC;AACzE,OAAO,EACL,aAAa,EAEb,KAAK,EACL,SAAS,EACT,SAAS,EACT,OAAO,EACP,IAAI,EACL,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uDAAuD,CAAC;AACnG,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGxD,wBAAgB,eAAe,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,GAAG,YAAY,GAAG,SAAS,CAE3F;AAGD;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,CAEzF;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAEvE;AAID;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,EAAE,qBAK3B,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,GAAG,SAAS,GAAG,OAAO,CAEnF"}
@@ -14,4 +14,25 @@ export function getOperationId(context, entity) {
14
14
  export function hasDecorator(type, name) {
15
15
  return type.decorators.find((it) => it.decorator.name === name) !== undefined;
16
16
  }
17
+ const dynamicModelKey = Symbol("dynamicModel");
18
+ /**
19
+ * Marks a model or namespace as dynamic, indicating it should generate dynamic model code.
20
+ * Can be applied to Model or Namespace types.
21
+ * @param context - The decorator context
22
+ * @param target - The model or namespace to mark as dynamic
23
+ * @beta
24
+ */
25
+ export const $dynamicModel = (context, target) => {
26
+ context.program.stateSet(dynamicModelKey).add(target);
27
+ };
28
+ /**
29
+ * Check if the given model or namespace is marked as dynamic.
30
+ * @param program - The TypeSpec program
31
+ * @param target - The model or namespace to check
32
+ * @returns true if the target is marked as dynamic, false otherwise
33
+ * @beta
34
+ */
35
+ export function isDynamicModel(program, target) {
36
+ return program.stateSet(dynamicModelKey).has(target);
37
+ }
17
38
  //# sourceMappingURL=decorators.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../../../emitter/src/lib/decorators.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,+FAA+F;AAM/F,MAAM,eAAe,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAC/C,MAAM,UAAU,eAAe,CAAC,OAAmB,EAAE,MAAY;IAC/D,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,eAAe,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAC/C;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,OAAmB,EAAE,MAAiB;IACnE,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAmB,EAAE,IAAY;IAC5D,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,SAAS,CAAC;AAChF,CAAC"}
1
+ {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../../../emitter/src/lib/decorators.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,+FAA+F;AAe/F,MAAM,eAAe,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAC/C,MAAM,UAAU,eAAe,CAAC,OAAmB,EAAE,MAAY;IAC/D,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,eAAe,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAC/C;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,OAAmB,EAAE,MAAiB;IACnE,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAmB,EAAE,IAAY;IAC5D,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,SAAS,CAAC;AAChF,CAAC;AAED,MAAM,eAAe,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAE/C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,aAAa,GAA0B,CAClD,OAAyB,EACzB,MAAyB,EACnB,EAAE;IACR,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxD,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,OAAgB,EAAE,MAAyB;IACxE,OAAO,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACvD,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { $lib } from "./lib/lib.js";
2
+ //# sourceMappingURL=tsp-index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tsp-index.d.ts","sourceRoot":"","sources":["../../../emitter/src/tsp-index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { $dynamicModel } from "./lib/decorators.js";
2
+ export { $lib } from "./lib/lib.js";
3
+ /** @internal */
4
+ export const $decorators = {
5
+ "TypeSpec.HttpClient.CSharp": {
6
+ dynamicModel: $dynamicModel,
7
+ },
8
+ };
9
+ //# sourceMappingURL=tsp-index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tsp-index.js","sourceRoot":"","sources":["../../../emitter/src/tsp-index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC,gBAAgB;AAChB,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,4BAA4B,EAAE;QAC5B,YAAY,EAAE,aAAa;KACiB;CAC/C,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@typespec/http-client-csharp",
3
- "version": "1.0.0-alpha.20250826.5",
3
+ "version": "1.0.0-alpha.20250827.3",
4
4
  "author": "Microsoft Corporation",
5
5
  "description": "TypeSpec library for emitting Http Client libraries for C#.",
6
6
  "homepage": "https://typespec.io",
@@ -21,6 +21,7 @@
21
21
  "exports": {
22
22
  ".": {
23
23
  "types": "./dist/emitter/src/index.d.ts",
24
+ "typespec": "./emitter/lib/main.tsp",
24
25
  "default": "./dist/emitter/src/index.js"
25
26
  }
26
27
  },
@@ -29,6 +30,7 @@
29
30
  "build:emitter": "tsc -p ./emitter/tsconfig.build.json",
30
31
  "build:generator": "dotnet build ./generator",
31
32
  "build": "npm run build:emitter && npm run build:generator && npm run extract-api",
33
+ "gen-extern-signature": "tspd --enable-experimental gen-extern-signature .",
32
34
  "watch": "tsc -p ./emitter/tsconfig.build.json --watch",
33
35
  "lint-typespec-library": "tsp compile . --warn-as-error --import @typespec/library-linter --no-emit",
34
36
  "test:emitter": "vitest run -c ./emitter/vitest.config.ts",
package/readme.md CHANGED
@@ -142,3 +142,43 @@ License information for the generated client code.
142
142
  **Type:** `object`
143
143
 
144
144
  The SDK context options that implement the `CreateSdkContextOptions` interface from the [`@azure-tools/typespec-client-generator-core`](https://www.npmjs.com/package/@azure-tools/typespec-client-generator-core) package to be used by the CSharp emitter.
145
+
146
+ ## Decorators
147
+
148
+ ### TypeSpec.HttpClient.CSharp
149
+
150
+ - [`@dynamicModel`](#@dynamicmodel)
151
+
152
+ #### `@dynamicModel`
153
+
154
+ Marks a model or namespace as dynamic, indicating it should generate dynamic model code.
155
+ Can be applied to Model or Namespace types.
156
+
157
+ ```typespec
158
+ @TypeSpec.HttpClient.CSharp.dynamicModel
159
+ ```
160
+
161
+ ##### Target
162
+
163
+ `Model | Namespace`
164
+
165
+ ##### Parameters
166
+
167
+ None
168
+
169
+ ##### Examples
170
+
171
+ ```tsp
172
+ @dynamicModel
173
+ model Pet {
174
+ name: string;
175
+ kind: string;
176
+ }
177
+
178
+ @dynamicModel
179
+ namespace PetStore {
180
+ model Dog extends Pet {
181
+ breed: string;
182
+ }
183
+ }
184
+ ```