@azure-tools/typespec-rust 0.35.0 → 0.37.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.
Files changed (76) hide show
  1. package/dist/src/codegen/clients.d.ts +4 -4
  2. package/dist/src/codegen/clients.d.ts.map +1 -1
  3. package/dist/src/codegen/clients.js +177 -69
  4. package/dist/src/codegen/clients.js.map +1 -1
  5. package/dist/src/codegen/codeGenerator.d.ts +6 -0
  6. package/dist/src/codegen/codeGenerator.d.ts.map +1 -1
  7. package/dist/src/codegen/codeGenerator.js +112 -32
  8. package/dist/src/codegen/codeGenerator.js.map +1 -1
  9. package/dist/src/codegen/context.d.ts +10 -0
  10. package/dist/src/codegen/context.d.ts.map +1 -1
  11. package/dist/src/codegen/context.js +58 -17
  12. package/dist/src/codegen/context.js.map +1 -1
  13. package/dist/src/codegen/docTests.d.ts +1 -2
  14. package/dist/src/codegen/docTests.d.ts.map +1 -1
  15. package/dist/src/codegen/docTests.js +13 -4
  16. package/dist/src/codegen/docTests.js.map +1 -1
  17. package/dist/src/codegen/enums.d.ts +4 -4
  18. package/dist/src/codegen/enums.d.ts.map +1 -1
  19. package/dist/src/codegen/enums.js +21 -21
  20. package/dist/src/codegen/enums.js.map +1 -1
  21. package/dist/src/codegen/headerTraits.d.ts +2 -2
  22. package/dist/src/codegen/headerTraits.d.ts.map +1 -1
  23. package/dist/src/codegen/headerTraits.js +17 -9
  24. package/dist/src/codegen/headerTraits.js.map +1 -1
  25. package/dist/src/codegen/helpers.d.ts +12 -3
  26. package/dist/src/codegen/helpers.d.ts.map +1 -1
  27. package/dist/src/codegen/helpers.js +19 -13
  28. package/dist/src/codegen/helpers.js.map +1 -1
  29. package/dist/src/codegen/lib.d.ts +3 -1
  30. package/dist/src/codegen/lib.d.ts.map +1 -1
  31. package/dist/src/codegen/lib.js +5 -1
  32. package/dist/src/codegen/lib.js.map +1 -1
  33. package/dist/src/codegen/mod.d.ts +9 -2
  34. package/dist/src/codegen/mod.d.ts.map +1 -1
  35. package/dist/src/codegen/mod.js +25 -9
  36. package/dist/src/codegen/mod.js.map +1 -1
  37. package/dist/src/codegen/models.d.ts +4 -4
  38. package/dist/src/codegen/models.d.ts.map +1 -1
  39. package/dist/src/codegen/models.js +76 -30
  40. package/dist/src/codegen/models.js.map +1 -1
  41. package/dist/src/codegen/unions.d.ts +4 -4
  42. package/dist/src/codegen/unions.d.ts.map +1 -1
  43. package/dist/src/codegen/unions.js +71 -45
  44. package/dist/src/codegen/unions.js.map +1 -1
  45. package/dist/src/codegen/use.d.ts +4 -2
  46. package/dist/src/codegen/use.d.ts.map +1 -1
  47. package/dist/src/codegen/use.js +22 -26
  48. package/dist/src/codegen/use.js.map +1 -1
  49. package/dist/src/codemodel/client.d.ts +31 -16
  50. package/dist/src/codemodel/client.d.ts.map +1 -1
  51. package/dist/src/codemodel/client.js +11 -7
  52. package/dist/src/codemodel/client.js.map +1 -1
  53. package/dist/src/codemodel/crate.d.ts +42 -12
  54. package/dist/src/codemodel/crate.d.ts.map +1 -1
  55. package/dist/src/codemodel/crate.js +21 -46
  56. package/dist/src/codemodel/crate.js.map +1 -1
  57. package/dist/src/codemodel/types.d.ts +60 -34
  58. package/dist/src/codemodel/types.d.ts.map +1 -1
  59. package/dist/src/codemodel/types.js +26 -10
  60. package/dist/src/codemodel/types.js.map +1 -1
  61. package/dist/src/emitter.d.ts.map +1 -1
  62. package/dist/src/emitter.js +39 -11
  63. package/dist/src/emitter.js.map +1 -1
  64. package/dist/src/lib.d.ts +2 -0
  65. package/dist/src/lib.d.ts.map +1 -1
  66. package/dist/src/lib.js +6 -0
  67. package/dist/src/lib.js.map +1 -1
  68. package/dist/src/tcgcadapter/adapter.d.ts +81 -13
  69. package/dist/src/tcgcadapter/adapter.d.ts.map +1 -1
  70. package/dist/src/tcgcadapter/adapter.js +711 -213
  71. package/dist/src/tcgcadapter/adapter.js.map +1 -1
  72. package/dist/src/utils/utils.d.ts +7 -4
  73. package/dist/src/utils/utils.d.ts.map +1 -1
  74. package/dist/src/utils/utils.js +25 -23
  75. package/dist/src/utils/utils.js.map +1 -1
  76. package/package.json +17 -17
@@ -1,4 +1,5 @@
1
1
  import * as tsp from '@typespec/compiler';
2
+ import * as http from '@typespec/http';
2
3
  import { RustEmitterOptions } from '../lib.js';
3
4
  import * as rust from '../codemodel/index.js';
4
5
  /** ErrorCode defines the types of adapter errors */
@@ -42,6 +43,7 @@ export declare class Adapter {
42
43
  private readonly crate;
43
44
  private readonly ctx;
44
45
  private readonly options;
46
+ private readonly rootNamespace;
45
47
  private readonly types;
46
48
  private readonly clientMethodParams;
47
49
  private readonly fieldsMap;
@@ -50,6 +52,13 @@ export declare class Adapter {
50
52
  tcgcToCrate(): rust.Crate;
51
53
  /** converts tcgc docs to formatted rust.Docs */
52
54
  private adaptDocs;
55
+ /**
56
+ * adapts the specified namespace to a hierarchy of Rust modules
57
+ *
58
+ * @param namespace the namespace for which to return the package
59
+ * @returns the leaf module in the namespace
60
+ */
61
+ private adaptNamespace;
53
62
  /** converts all tcgc types to their Rust type equivalent */
54
63
  private adaptTypes;
55
64
  /**
@@ -91,6 +100,55 @@ export declare class Adapter {
91
100
  */
92
101
  private getDiscriminatedUnion;
93
102
  private getSerializedPropertyName;
103
+ /**
104
+ * converts a non-discriminated tcgc union to either a flat merged Rust Enum (union-of-enums)
105
+ * or a Rust UntaggedUnion (#[serde(untagged)] enum).
106
+ * self-registers the result in the owning module and caches it.
107
+ *
108
+ * @param src the non-discriminated tcgc union
109
+ * @returns a Rust Enum or UntaggedUnion
110
+ */
111
+ private getNonDiscriminatedUnion;
112
+ /**
113
+ * synthesizes a union name for anonymous inline unions by concatenating variant type names
114
+ *
115
+ * @param src the non-discriminated tcgc union
116
+ * @returns a PascalCase name for the union
117
+ */
118
+ private synthesizeUnionName;
119
+ /**
120
+ * builds a flat merged Rust Enum from a union whose every variant is a TSP enum type.
121
+ * all variant enum values are merged into a single flat enum.
122
+ *
123
+ * @param unionName the PascalCase name for the resulting enum
124
+ * @param src the non-discriminated tcgc union
125
+ * @returns a flat merged Rust Enum
126
+ */
127
+ private getMergedFlatEnum;
128
+ /**
129
+ * builds an UntaggedUnion (#[serde(untagged)] enum) from a non-discriminated tcgc union
130
+ * whose variants are not all enum types.
131
+ *
132
+ * @param unionName the PascalCase name for the resulting union
133
+ * @param src the non-discriminated tcgc union
134
+ * @returns a Rust UntaggedUnion
135
+ */
136
+ private buildUntaggedUnion;
137
+ /**
138
+ * returns the sort order for a variant in a #[serde(untagged)] enum.
139
+ * more specific types must come before more general ones to ensure correct deserialization.
140
+ *
141
+ * @param variant the tcgc type to get the order for
142
+ * @returns a numeric sort key (lower = earlier)
143
+ */
144
+ private getUntaggedVariantOrder;
145
+ /**
146
+ * returns the Rust variant name (PascalCase) for a variant in a #[serde(untagged)] enum.
147
+ *
148
+ * @param variant the tcgc type to name
149
+ * @returns a PascalCase Rust variant name
150
+ */
151
+ private getUntaggedVariantName;
94
152
  /**
95
153
  * converts a tcgc model property to a model field
96
154
  *
@@ -233,9 +291,15 @@ export declare class Adapter {
233
291
  */
234
292
  private adaptPageableMethodReinjectionParams;
235
293
  /**
236
- * converts a tcgc operation parameter into a Rust method parameter
294
+ * converts a tcgc operation parameter into a Rust method parameter.
295
+ * note that when methodParam is present, we must use all applicable
296
+ * values from methodParam as the source of truth. e.g. when overriding
297
+ * a method to make an optional param required, the requiredness will
298
+ * be reflected in the method param, _not_ the operation param.
237
299
  *
238
- * @param param the tcgc operation parameter to convert
300
+ * @param opParam the tcgc operation parameter to convert
301
+ * @param methodParam the tcgc method parameter associated with opParam
302
+ * @param lifetime optional lifetime to stamp on borrowed ref types (used for grouped params that are struct fields)
239
303
  * @returns a Rust method parameter
240
304
  */
241
305
  private adaptMethodParameter;
@@ -247,6 +311,7 @@ export declare class Adapter {
247
311
  *
248
312
  * @param type the param type to be updated
249
313
  * @param kind the kind of param
314
+ * @param lifetime optional lifetime to stamp on Ref types (used for struct fields)
250
315
  * @returns the updated param type or undefined
251
316
  */
252
317
  private canBorrowMethodParam;
@@ -268,18 +333,21 @@ export declare class Adapter {
268
333
  */
269
334
  private adaptMethodSpreadParameter;
270
335
  /**
271
- * converts a Content-Type header value into a payload format
272
- *
273
- * @param contentType the value of the Content-Type header
274
- * @returns a payload format
275
- */
276
- private adaptPayloadFormat;
277
- /**
278
- * converts an accept or content-type header value into a payload format type
336
+ * determines the payload format type from serializationOptions on the type, falling
337
+ * back to inspecting the defaultContentType when serializationOptions isn't available.
279
338
  *
280
- * @param contentType the value of the Accept or Content-Type header
281
- * @returns a response format
339
+ * @param type the SDK type associated with the payload, if available
340
+ * @param defaultContentType the value of the Accept or Content-Type header
341
+ * @returns a payload format type
282
342
  */
283
- private adaptPayloadFormatType;
343
+ private getPayloadFormatType;
284
344
  }
345
+ /**
346
+ * converts an array of Visibility flags to a sorted, human-readable string.
347
+ * returns undefined if visibility is unrestricted (all flags or undefined).
348
+ *
349
+ * @param visibility the visibility flags from TCGC
350
+ * @returns a formatted string like "Read" or "Create, Update", or undefined if unrestricted
351
+ */
352
+ export declare function formatVisibility(visibility?: http.Visibility[]): string | undefined;
285
353
  //# sourceMappingURL=adapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/tcgcadapter/adapter.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,GAAG,MAAM,oBAAoB,CAAC;AAI1C,OAAO,EAAC,kBAAkB,EAAC,MAAM,WAAW,CAAC;AAG7C,OAAO,KAAK,IAAI,MAAM,uBAAuB,CAAC;AAG9C,oDAAoD;AACpD,MAAM,MAAM,SAAS;AACnB,qFAAqF;AACrF,eAAe;AAEf,mDAAmD;AACnD,iBAAiB;AAEjB;;;GAGG;AACH,eAAe;AAEf,sEAAsE;AACtE,gBAAgB,CAAC;AAEnB;;;;GAIG;AACH,qBAAa,YAAa,SAAQ,KAAK;IACrC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,gBAAgB,GAAG,OAAO,GAAG,CAAC,QAAQ,CAAC;gBAEhD,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,gBAAgB;CAK5E;AAED;;;GAGG;AACH,qBAAa,aAAc,SAAQ,KAAK;CAAI;AAE5C,2DAA2D;AAC3D,qBAAa,OAAO;IAClB;;;;;OAKG;WACU,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,WAAW,CAAC,kBAAkB,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAuBnF,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAa;IACnC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAkB;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAG7C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAyB;IAG/C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAoC;IAGvE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0E;IAEpG,OAAO;IAeP,wDAAwD;IACxD,WAAW,IAAI,IAAI,CAAC,KAAK;IAiBzB,gDAAgD;IAChD,OAAO,CAAC,SAAS;IAajB,4DAA4D;IAC5D,OAAO,CAAC,UAAU;IA6DlB;;;;;OAKG;IACH,OAAO,CAAC,OAAO;IA6Ef;;;;;;OAMG;IACH,OAAO,CAAC,YAAY;IAWpB;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAcvB;;;;;;;OAOG;IACH,OAAO,CAAC,QAAQ;IAgHhB;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;IA0G7B,OAAO,CAAC,yBAAyB;IAIjC;;;;;;;;OAQG;IACH,OAAO,CAAC,aAAa;IA2GrB;;;;;;OAMG;IACH,OAAO,CAAC,OAAO;IAgJf,yBAAyB;IACzB,OAAO,CAAC,UAAU;IAUlB,+DAA+D;IAC/D,OAAO,CAAC,eAAe;IAWvB,0BAA0B;IAC1B,OAAO,CAAC,OAAO;IAWf,sCAAsC;IACtC,OAAO,CAAC,UAAU;IAWlB,mCAAmC;IACnC,OAAO,CAAC,eAAe;IAWvB,wDAAwD;IACxD,OAAO,CAAC,aAAa;IAUrB,kDAAkD;IAClD,OAAO,CAAC,UAAU;IAUlB,qDAAqD;IACrD,OAAO,CAAC,SAAS;IAgDjB,4CAA4C;IAC5C,OAAO,CAAC,QAAQ;IAUhB,yCAAyC;IACzC,OAAO,CAAC,cAAc;IAUtB,mCAAmC;IACnC,OAAO,CAAC,aAAa;IAWrB,iCAAiC;IACjC,OAAO,CAAC,WAAW;IAWnB,0BAA0B;IAC1B,OAAO,CAAC,MAAM;IAWd;;;;;OAKG;IACH,OAAO,CAAC,UAAU;IAoClB,4EAA4E;IAC5E,OAAO,CAAC,YAAY;IAMpB;;;;;;;;OAQG;IACH,OAAO,CAAC,SAAS;IAOjB;;;;;;;OAOG;IACH,OAAO,CAAC,oBAAoB;IAyP5B;;;;;;OAMG;IACH,OAAO,CAAC,yBAAyB;IAmBjC;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;IAkC5B;;;;;;;OAOG;IACH,OAAO,CAAC,mBAAmB;IAwB3B;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IAwanB;;;;;;;OAOG;IACH,OAAO,CAAC,oBAAoB;IAsB5B;;;;;;;;OAQG;IACH,OAAO,CAAC,yBAAyB;IAqEjC;;;;;;;OAOG;IACH,OAAO,CAAC,2BAA2B;IAyEnC;;;;;;;OAOG;IACH,OAAO,CAAC,oCAAoC;IA0B5C;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAqK5B;;;;;;;;;OASG;IACH,OAAO,CAAC,oBAAoB;IAsD5B;;;;;;OAMG;IACH,OAAO,CAAC,cAAc;IA6BtB;;;;;;;OAOG;IACH,OAAO,CAAC,0BAA0B;IA2BlC;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAe1B;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;CAa/B"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/tcgcadapter/adapter.ts"],"names":[],"mappings":"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"}