@azure-tools/typespec-rust 0.11.0 → 0.12.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 (60) hide show
  1. package/dist/src/codegen/clients.d.ts +8 -13
  2. package/dist/src/codegen/clients.d.ts.map +1 -1
  3. package/dist/src/codegen/clients.js +38 -32
  4. package/dist/src/codegen/clients.js.map +1 -1
  5. package/dist/src/codegen/codeGenerator.d.ts +1 -2
  6. package/dist/src/codegen/codeGenerator.d.ts.map +1 -1
  7. package/dist/src/codegen/codeGenerator.js +28 -27
  8. package/dist/src/codegen/codeGenerator.js.map +1 -1
  9. package/dist/src/codegen/enums.d.ts +2 -1
  10. package/dist/src/codegen/enums.d.ts.map +1 -1
  11. package/dist/src/codegen/enums.js +4 -1
  12. package/dist/src/codegen/enums.js.map +1 -1
  13. package/dist/src/codegen/headerTraits.d.ts +2 -2
  14. package/dist/src/codegen/headerTraits.d.ts.map +1 -1
  15. package/dist/src/codegen/headerTraits.js +6 -4
  16. package/dist/src/codegen/headerTraits.js.map +1 -1
  17. package/dist/src/codegen/helpers.d.ts +11 -4
  18. package/dist/src/codegen/helpers.d.ts.map +1 -1
  19. package/dist/src/codegen/helpers.js +13 -8
  20. package/dist/src/codegen/helpers.js.map +1 -1
  21. package/dist/src/codegen/lib.d.ts +1 -4
  22. package/dist/src/codegen/lib.d.ts.map +1 -1
  23. package/dist/src/codegen/lib.js +4 -99
  24. package/dist/src/codegen/lib.js.map +1 -1
  25. package/dist/src/codegen/mod.d.ts +10 -4
  26. package/dist/src/codegen/mod.d.ts.map +1 -1
  27. package/dist/src/codegen/mod.js +36 -19
  28. package/dist/src/codegen/mod.js.map +1 -1
  29. package/dist/src/codegen/models.d.ts +5 -4
  30. package/dist/src/codegen/models.d.ts.map +1 -1
  31. package/dist/src/codegen/models.js +453 -46
  32. package/dist/src/codegen/models.js.map +1 -1
  33. package/dist/src/codegen/use.d.ts +7 -6
  34. package/dist/src/codegen/use.d.ts.map +1 -1
  35. package/dist/src/codegen/use.js +31 -16
  36. package/dist/src/codegen/use.js.map +1 -1
  37. package/dist/src/codemodel/client.d.ts +8 -3
  38. package/dist/src/codemodel/client.d.ts.map +1 -1
  39. package/dist/src/codemodel/client.js +9 -8
  40. package/dist/src/codemodel/client.js.map +1 -1
  41. package/dist/src/codemodel/method.d.ts +3 -3
  42. package/dist/src/codemodel/method.d.ts.map +1 -1
  43. package/dist/src/codemodel/method.js +2 -2
  44. package/dist/src/codemodel/method.js.map +1 -1
  45. package/dist/src/codemodel/types.d.ts +13 -11
  46. package/dist/src/codemodel/types.d.ts.map +1 -1
  47. package/dist/src/codemodel/types.js +15 -15
  48. package/dist/src/codemodel/types.js.map +1 -1
  49. package/dist/src/emitter.d.ts.map +1 -1
  50. package/dist/src/emitter.js +12 -6
  51. package/dist/src/emitter.js.map +1 -1
  52. package/dist/src/lib.d.ts +1 -0
  53. package/dist/src/lib.d.ts.map +1 -1
  54. package/dist/src/lib.js +2 -1
  55. package/dist/src/lib.js.map +1 -1
  56. package/dist/src/tcgcadapter/adapter.d.ts +3 -1
  57. package/dist/src/tcgcadapter/adapter.d.ts.map +1 -1
  58. package/dist/src/tcgcadapter/adapter.js +60 -36
  59. package/dist/src/tcgcadapter/adapter.js.map +1 -1
  60. package/package.json +23 -23
@@ -27,17 +27,17 @@ export class StdType {
27
27
  }
28
28
  }
29
29
  class StructBase {
30
- constructor(kind, name, internal) {
30
+ constructor(kind, name, visibility) {
31
31
  this.kind = kind;
32
32
  this.name = name;
33
- this.internal = internal;
33
+ this.visibility = visibility;
34
34
  this.docs = {};
35
35
  }
36
36
  }
37
37
  class StructFieldBase {
38
- constructor(name, pub, type) {
38
+ constructor(name, visibility, type) {
39
39
  this.name = name;
40
- this.pub = pub;
40
+ this.visibility = visibility;
41
41
  this.type = type;
42
42
  this.docs = {};
43
43
  }
@@ -133,15 +133,15 @@ export class MarkerType {
133
133
  }
134
134
  }
135
135
  export class Model extends StructBase {
136
- constructor(name, internal, flags) {
137
- super('model', name, internal);
136
+ constructor(name, visibility, flags) {
137
+ super('model', name, visibility);
138
138
  this.fields = new Array();
139
139
  this.flags = flags;
140
140
  }
141
141
  }
142
142
  export class ModelField extends StructFieldBase {
143
- constructor(name, serde, pub, type) {
144
- super(name, pub, type);
143
+ constructor(name, serde, visibility, type) {
144
+ super(name, visibility, type);
145
145
  this.serde = serde;
146
146
  }
147
147
  }
@@ -169,7 +169,7 @@ export class Option {
169
169
  case 'scalar':
170
170
  case 'struct':
171
171
  case 'Url':
172
- case 'vector':
172
+ case 'Vec':
173
173
  this.kind = 'option';
174
174
  this.type = type;
175
175
  break;
@@ -198,7 +198,7 @@ export class Payload {
198
198
  case 'model':
199
199
  case 'offsetDateTime':
200
200
  case 'scalar':
201
- case 'vector':
201
+ case 'Vec':
202
202
  this.kind = 'payload';
203
203
  this.type = type;
204
204
  this.format = format;
@@ -251,14 +251,14 @@ export class StringType {
251
251
  }
252
252
  }
253
253
  export class Struct extends StructBase {
254
- constructor(name, internal) {
255
- super('struct', name, internal);
254
+ constructor(name, visibility) {
255
+ super('struct', name, visibility);
256
256
  this.fields = new Array();
257
257
  }
258
258
  }
259
259
  export class StructField extends StructFieldBase {
260
- constructor(name, pub, type) {
261
- super(name, pub, type);
260
+ constructor(name, visibility, type) {
261
+ super(name, visibility, type);
262
262
  }
263
263
  }
264
264
  export class TokenCredential extends External {
@@ -284,7 +284,7 @@ export class Url extends External {
284
284
  }
285
285
  export class Vector {
286
286
  constructor(type) {
287
- this.kind = 'vector';
287
+ this.kind = 'Vec';
288
288
  this.type = type;
289
289
  }
290
290
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/codemodel/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/codemodel/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"emitter.d.ts","sourceRoot":"","sources":["../../src/emitter.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAK9C,OAAO,EAAE,WAAW,EAAY,MAAM,oBAAoB,CAAC;AAC3D,OAAO,gCAAgC,CAAC;AAExC;;;;GAIG;AACH,wBAAsB,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,kBAAkB,CAAC,iBA+DrE"}
1
+ {"version":3,"file":"emitter.d.ts","sourceRoot":"","sources":["../../src/emitter.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAK9C,OAAO,EAAE,WAAW,EAAY,MAAM,oBAAoB,CAAC;AAC3D,OAAO,gCAAgC,CAAC;AAExC;;;;GAIG;AACH,wBAAsB,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,kBAAkB,CAAC,iBAoErE"}
@@ -5,7 +5,7 @@
5
5
  import { CodeGenerator } from './codegen/codeGenerator.js';
6
6
  import { Adapter } from './tcgcadapter/adapter.js';
7
7
  import { execSync } from 'child_process';
8
- import { existsSync, readFileSync } from 'fs';
8
+ import { existsSync } from 'fs';
9
9
  import { mkdir, writeFile } from 'fs/promises';
10
10
  import * as path from 'path';
11
11
  import { NoTarget } from '@typespec/compiler';
@@ -24,7 +24,7 @@ export async function $onEmit(context) {
24
24
  // TODO: consider merging existing dependencies with emitted dependencies when overwriting
25
25
  // https://github.com/Azure/typespec-rust/issues/22
26
26
  const cargoTomlPath = `${context.emitterOutputDir}/Cargo.toml`;
27
- if (existsSync(cargoTomlPath) && !context.options['overwrite-cargo-toml']) {
27
+ if (existsSync(cargoTomlPath) && context.options['overwrite-cargo-toml'] !== true) {
28
28
  context.program.reportDiagnostic({
29
29
  code: 'FileAlreadyExists',
30
30
  severity: 'warning',
@@ -35,12 +35,18 @@ export async function $onEmit(context) {
35
35
  else {
36
36
  await writeFile(cargoTomlPath, codegen.emitCargoToml());
37
37
  }
38
- let existingLibRs;
39
38
  const libRsPath = `${context.emitterOutputDir}/src/lib.rs`;
40
- if (existsSync(libRsPath)) {
41
- existingLibRs = readFileSync(libRsPath, { encoding: 'ascii' });
39
+ if (existsSync(libRsPath) && context.options['overwrite-lib-rs'] !== true) {
40
+ context.program.reportDiagnostic({
41
+ code: 'FileAlreadyExists',
42
+ severity: 'warning',
43
+ message: `skip overwriting file ${libRsPath}`,
44
+ target: NoTarget,
45
+ });
46
+ }
47
+ else {
48
+ await writeFile(libRsPath, codegen.emitLibRs());
42
49
  }
43
- await writeFile(libRsPath, codegen.emitLibRs(existingLibRs));
44
50
  const files = codegen.emitContent();
45
51
  for (const file of files) {
46
52
  await writeToGeneratedDir(context.emitterOutputDir, file.name, file.content);
@@ -1 +1 @@
1
- {"version":3,"file":"emitter.js","sourceRoot":"","sources":["../../src/emitter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"emitter.js","sourceRoot":"","sources":["../../src/emitter.ts"],"names":[],"mappings":"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"}
package/dist/src/lib.d.ts CHANGED
@@ -3,6 +3,7 @@ export interface RustEmitterOptions {
3
3
  'crate-name': string;
4
4
  'crate-version': string;
5
5
  'overwrite-cargo-toml': boolean;
6
+ 'overwrite-lib-rs': boolean;
6
7
  }
7
8
  export declare const $lib: import("@typespec/compiler").TypeSpecLibrary<{
8
9
  [code: string]: import("@typespec/compiler").DiagnosticMessages;
@@ -1 +1 @@
1
- {"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../../src/lib.ts"],"names":[],"mappings":"AAOA,sCAAsC;AACtC,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,sBAAsB,EAAE,OAAO,CAAC;CACjC;AAwBD,eAAO,MAAM,IAAI;;6BAAgC,CAAC;AAElD,eAAO,MAAQ,gBAAgB;;;;mBAAE,iBAAiB,4BAAE,SAAS,wFAAS,CAAC"}
1
+ {"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../../src/lib.ts"],"names":[],"mappings":"AAOA,sCAAsC;AACtC,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,sBAAsB,EAAE,OAAO,CAAC;IAChC,kBAAkB,EAAE,OAAO,CAAC;CAC7B;AAyBD,eAAO,MAAM,IAAI;;6BAAgC,CAAC;AAElD,eAAO,MAAQ,gBAAgB;;;;mBAAE,iBAAiB,4BAAE,SAAS,wFAAS,CAAC"}
package/dist/src/lib.js CHANGED
@@ -9,7 +9,8 @@ const EmitterOptionsSchema = {
9
9
  properties: {
10
10
  'crate-name': { type: 'string', nullable: false },
11
11
  'crate-version': { type: 'string', nullable: false },
12
- 'overwrite-cargo-toml': { type: 'boolean', nullable: false },
12
+ 'overwrite-cargo-toml': { type: 'boolean', nullable: false, default: false },
13
+ 'overwrite-lib-rs': { type: 'boolean', nullable: false, default: false },
13
14
  },
14
15
  required: [
15
16
  'crate-name',
@@ -1 +1 @@
1
- {"version":3,"file":"lib.js","sourceRoot":"","sources":["../../src/lib.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,qBAAqB,EAAkB,MAAM,oBAAoB,CAAC;AAS3E,MAAM,oBAAoB,GAAuC;IAC/D,IAAI,EAAE,QAAQ;IACd,oBAAoB,EAAE,IAAI;IAC1B,UAAU,EAAE;QACV,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE;QACjD,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE;QACpD,sBAAsB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE;KAC7D;IACD,QAAQ,EAAE;QACR,YAAY;QACZ,eAAe;KAChB;CACF,CAAC;AAEF,MAAM,MAAM,GAAG;IACb,IAAI,EAAE,4BAA4B;IAClC,WAAW,EAAE,EAAE;IACf,OAAO,EAAE;QACP,OAAO,EAAsC,oBAAoB;KAClE;CACO,CAAC;AAEX,MAAM,CAAC,MAAM,IAAI,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAClD,gEAAgE;AAChE,MAAM,CAAC,MAAM,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC"}
1
+ {"version":3,"file":"lib.js","sourceRoot":"","sources":["../../src/lib.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,qBAAqB,EAAkB,MAAM,oBAAoB,CAAC;AAU3E,MAAM,oBAAoB,GAAuC;IAC/D,IAAI,EAAE,QAAQ;IACd,oBAAoB,EAAE,IAAI;IAC1B,UAAU,EAAE;QACV,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE;QACjD,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE;QACpD,sBAAsB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAC;QAC3E,kBAAkB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE;KACzE;IACD,QAAQ,EAAE;QACR,YAAY;QACZ,eAAe;KAChB;CACF,CAAC;AAEF,MAAM,MAAM,GAAG;IACb,IAAI,EAAE,4BAA4B;IAClC,WAAW,EAAE,EAAE;IACf,OAAO,EAAE;QACP,OAAO,EAAsC,oBAAoB;KAClE;CACO,CAAC;AAEX,MAAM,CAAC,MAAM,IAAI,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAClD,gEAAgE;AAChE,MAAM,CAAC,MAAM,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC"}
@@ -48,7 +48,7 @@ export declare class Adapter {
48
48
  * converts a tcgc model property to a model field
49
49
  *
50
50
  * @param property the tcgc model property to convert
51
- * @param isPubMod indicates if the model is public
51
+ * @param modelVisibility the visibility of the model that contains the property
52
52
  * @returns a Rust model field
53
53
  */
54
54
  private getModelField;
@@ -56,6 +56,8 @@ export declare class Adapter {
56
56
  private getType;
57
57
  /** returns the Rust string slice type */
58
58
  private getStringSlice;
59
+ /** returns the Rust String type */
60
+ private getStringType;
59
61
  /** returns the Rust unit type */
60
62
  private getUnitType;
61
63
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/tcgcadapter/adapter.ts"],"names":[],"mappings":"AAOA,OAAO,EAAyB,WAAW,EAAY,MAAM,oBAAoB,CAAC;AAIlF,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE/C,OAAO,KAAK,IAAI,MAAM,uBAAuB,CAAC;AAE9C,2DAA2D;AAC3D,qBAAa,OAAO;IAClB;;;;;OAKG;WACU,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,kBAAkB,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAW/E,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAa;IACnC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAkB;IAGtC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAyB;IAG/C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAoC;IAGvE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAc;IAE7C,OAAO;IAcP,wDAAwD;IACxD,WAAW,IAAI,IAAI,CAAC,KAAK;IAgCzB,gDAAgD;IAChD,OAAO,CAAC,SAAS;IAajB,4DAA4D;IAC5D,OAAO,CAAC,UAAU;IAuBlB;;;;;OAKG;IACH,OAAO,CAAC,OAAO;IAoBf;;;;;;OAMG;IACH,OAAO,CAAC,YAAY;IAWpB;;;;;OAKG;IACH,OAAO,CAAC,QAAQ;IAkEhB;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IAuBrB,0CAA0C;IAC1C,OAAO,CAAC,OAAO;IA4Lf,yCAAyC;IACzC,OAAO,CAAC,cAAc;IAUtB,iCAAiC;IACjC,OAAO,CAAC,WAAW;IAWnB;;;;;OAKG;IACH,OAAO,CAAC,UAAU;IAWlB,4EAA4E;IAC5E,OAAO,CAAC,YAAY;IAcpB;;;;;;;OAOG;IACH,OAAO,CAAC,oBAAoB;IAoO5B;;;;;;OAMG;IACH,OAAO,CAAC,yBAAyB;IAgBjC;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;IAqC5B;;;;;;;OAOG;IACH,OAAO,CAAC,mBAAmB;IAwB3B;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IAiOnB;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IA0G5B;;;;;;;OAOG;IACH,OAAO,CAAC,0BAA0B;IA2ClC;;;;;OAKG;IACH,OAAO,CAAC,eAAe;CAaxB"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/tcgcadapter/adapter.ts"],"names":[],"mappings":"AAOA,OAAO,EAAyB,WAAW,EAAY,MAAM,oBAAoB,CAAC;AAIlF,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE/C,OAAO,KAAK,IAAI,MAAM,uBAAuB,CAAC;AAE9C,2DAA2D;AAC3D,qBAAa,OAAO;IAClB;;;;;OAKG;WACU,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,kBAAkB,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAY/E,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAa;IACnC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAkB;IAGtC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAyB;IAG/C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAoC;IAGvE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAc;IAE7C,OAAO;IAcP,wDAAwD;IACxD,WAAW,IAAI,IAAI,CAAC,KAAK;IAgCzB,gDAAgD;IAChD,OAAO,CAAC,SAAS;IAajB,4DAA4D;IAC5D,OAAO,CAAC,UAAU;IAuBlB;;;;;OAKG;IACH,OAAO,CAAC,OAAO;IAoBf;;;;;;OAMG;IACH,OAAO,CAAC,YAAY;IAWpB;;;;;OAKG;IACH,OAAO,CAAC,QAAQ;IAkEhB;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IAuBrB,0CAA0C;IAC1C,OAAO,CAAC,OAAO;IAkLf,yCAAyC;IACzC,OAAO,CAAC,cAAc;IAUtB,mCAAmC;IACnC,OAAO,CAAC,aAAa;IAWrB,iCAAiC;IACjC,OAAO,CAAC,WAAW;IAWnB;;;;;OAKG;IACH,OAAO,CAAC,UAAU;IAWlB,4EAA4E;IAC5E,OAAO,CAAC,YAAY;IAcpB;;;;;;;OAOG;IACH,OAAO,CAAC,oBAAoB;IAoO5B;;;;;;OAMG;IACH,OAAO,CAAC,yBAAyB;IAgBjC;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;IAuC5B;;;;;;;OAOG;IACH,OAAO,CAAC,mBAAmB;IAwB3B;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IAkOnB;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IA2G5B;;;;;;;OAOG;IACH,OAAO,CAAC,0BAA0B;IA2ClC;;;;;OAKG;IACH,OAAO,CAAC,eAAe;CAaxB"}
@@ -25,6 +25,7 @@ export class Adapter {
25
25
  additionalDecorators: ['TypeSpec\\.@encodedName', '@clientName'],
26
26
  disableUsageAccessPropagationToBase: true,
27
27
  });
28
+ context.program.reportDiagnostics(ctx.diagnostics);
28
29
  return new Adapter(ctx, context.options);
29
30
  }
30
31
  constructor(ctx, options) {
@@ -162,7 +163,7 @@ export class Adapter {
162
163
  if ((model.usage & tcgc.UsageFlags.Output) === tcgc.UsageFlags.Output) {
163
164
  modelFlags |= rust.ModelFlags.Output;
164
165
  }
165
- rustModel = new rust.Model(modelName, model.access === 'internal', modelFlags);
166
+ rustModel = new rust.Model(modelName, model.access === 'internal' ? 'pubCrate' : 'pub', modelFlags);
166
167
  rustModel.docs = this.adaptDocs(model.summary, model.doc);
167
168
  rustModel.xmlName = getXMLName(model.decorators);
168
169
  this.types.set(modelName, rustModel);
@@ -201,7 +202,7 @@ export class Adapter {
201
202
  throw new Error(`model property kind ${property.kind} NYI`);
202
203
  }
203
204
  }
204
- const structField = this.getModelField(property, !rustModel.internal);
205
+ const structField = this.getModelField(property, rustModel.visibility);
205
206
  rustModel.fields.push(structField);
206
207
  }
207
208
  return rustModel;
@@ -210,18 +211,18 @@ export class Adapter {
210
211
  * converts a tcgc model property to a model field
211
212
  *
212
213
  * @param property the tcgc model property to convert
213
- * @param isPubMod indicates if the model is public
214
+ * @param modelVisibility the visibility of the model that contains the property
214
215
  * @returns a Rust model field
215
216
  */
216
- getModelField(property, isPubMod) {
217
+ getModelField(property, modelVisibility) {
217
218
  let fieldType = this.getType(property.type);
218
219
  // for public models each field is always an Option<T>.
219
220
  // the only exception is for HashMap and Vec since an
220
221
  // empty collection conveys the same semantics.
221
- if ((isPubMod || property.optional) && fieldType.kind !== 'hashmap' && fieldType.kind !== 'vector') {
222
+ if ((modelVisibility === 'pub' || property.optional) && fieldType.kind !== 'hashmap' && fieldType.kind !== 'Vec') {
222
223
  fieldType = new rust.Option(fieldType);
223
224
  }
224
- const modelField = new rust.ModelField(naming.getEscapedReservedName(snakeCaseName(property.name), 'prop'), property.serializedName, true, fieldType);
225
+ const modelField = new rust.ModelField(naming.getEscapedReservedName(snakeCaseName(property.name), 'prop'), property.serializedName, modelVisibility, fieldType);
225
226
  modelField.docs = this.adaptDocs(property.summary, property.doc);
226
227
  const xmlName = getXMLName(property.decorators);
227
228
  if (xmlName) {
@@ -288,15 +289,6 @@ export class Adapter {
288
289
  this.types.set(kind, scalar);
289
290
  return scalar;
290
291
  };
291
- const getStringType = () => {
292
- let stringType = this.types.get(type.kind);
293
- if (stringType) {
294
- return stringType;
295
- }
296
- stringType = new rust.StringType();
297
- this.types.set(type.kind, stringType);
298
- return stringType;
299
- };
300
292
  switch (type.kind) {
301
293
  case 'array': {
302
294
  const keyName = recursiveKeyName(type.kind, type.valueType);
@@ -343,7 +335,7 @@ export class Adapter {
343
335
  case 'int64':
344
336
  return getScalar(type.wireType.kind);
345
337
  case 'string':
346
- return getStringType();
338
+ return this.getStringType();
347
339
  default:
348
340
  throw new Error(`unhandled duration wireType.kind ${type.wireType.kind}`);
349
341
  }
@@ -378,7 +370,7 @@ export class Adapter {
378
370
  this.types.set(etagKey, etagType);
379
371
  return etagType;
380
372
  }
381
- return getStringType();
373
+ return this.getStringType();
382
374
  }
383
375
  case 'offsetDateTime': {
384
376
  const keyName = `${type.kind}-${type.encode}`;
@@ -423,6 +415,18 @@ export class Adapter {
423
415
  }
424
416
  return stringSlice;
425
417
  }
418
+ /** returns the Rust String type */
419
+ getStringType() {
420
+ const typeKey = 'String';
421
+ let stringType = this.types.get(typeKey);
422
+ if (stringType) {
423
+ return stringType;
424
+ }
425
+ stringType = new rust.StringType();
426
+ this.types.set(typeKey, stringType);
427
+ return stringType;
428
+ }
429
+ ;
426
430
  /** returns the Rust unit type */
427
431
  getUnitType() {
428
432
  const typeKey = 'rust-unit';
@@ -498,11 +502,11 @@ export class Adapter {
498
502
  const rustClient = new rust.Client(clientName);
499
503
  rustClient.docs = this.adaptDocs(client.summary, client.doc);
500
504
  rustClient.parent = parent;
501
- rustClient.fields.push(new rust.StructField('pipeline', false, new rust.ExternalType(this.crate, 'azure_core', 'Pipeline')));
505
+ rustClient.fields.push(new rust.StructField('pipeline', 'pubCrate', new rust.ExternalType(this.crate, 'azure_core', 'Pipeline')));
502
506
  // anything other than public means non-instantiable client
503
507
  if (client.clientInitialization.initializedBy & tcgc.InitializedByFlags.Individually) {
504
- const clientOptionsStruct = new rust.Struct(`${rustClient.name}Options`, true);
505
- const clientOptionsField = new rust.StructField('client_options', true, new rust.ExternalType(this.crate, 'azure_core', 'ClientOptions'));
508
+ const clientOptionsStruct = new rust.Struct(`${rustClient.name}Options`, 'pub');
509
+ const clientOptionsField = new rust.StructField('client_options', 'pub', new rust.ExternalType(this.crate, 'azure_core', 'ClientOptions'));
506
510
  clientOptionsField.defaultValue = 'ClientOptions::default()';
507
511
  clientOptionsStruct.fields.push(clientOptionsField);
508
512
  rustClient.constructable = new rust.ClientConstruction(new rust.ClientOptions(clientOptionsStruct));
@@ -594,7 +598,7 @@ export class Adapter {
594
598
  const adaptedParam = new rust.ClientMethodParameter(param.name, this.getStringSlice(), false, true);
595
599
  adaptedParam.docs = this.adaptDocs(param.summary, param.doc);
596
600
  ctorParams.push(adaptedParam);
597
- rustClient.fields.push(new rust.StructField(param.name, false, new rust.Url(this.crate)));
601
+ rustClient.fields.push(new rust.StructField(param.name, 'pubCrate', new rust.Url(this.crate)));
598
602
  // if the server's URL is *only* the endpoint parameter then we're done.
599
603
  // this is the param.type.kind === 'endpoint' case.
600
604
  if (endpointType.serverUrl === `{${templateArg.serializedName}}`) {
@@ -629,7 +633,7 @@ export class Adapter {
629
633
  }
630
634
  case 'method': {
631
635
  const clientParam = this.adaptClientParameter(param, rustClient.constructable);
632
- rustClient.fields.push(new rust.StructField(clientParam.name, false, clientParam.type));
636
+ rustClient.fields.push(new rust.StructField(clientParam.name, 'pubCrate', clientParam.type));
633
637
  ctorParams.push(clientParam);
634
638
  break;
635
639
  }
@@ -665,7 +669,7 @@ export class Adapter {
665
669
  if (rustClient.fields.find((v) => v.name === name)) {
666
670
  continue;
667
671
  }
668
- rustClient.fields.push(new rust.StructField(name, false, this.getType(prop.type)));
672
+ rustClient.fields.push(new rust.StructField(name, 'pubCrate', this.getType(prop.type)));
669
673
  }
670
674
  }
671
675
  else {
@@ -715,8 +719,10 @@ export class Adapter {
715
719
  adaptClientParameter(param, constructable) {
716
720
  let paramType;
717
721
  if (param.isApiVersionParam) {
718
- // we expose the api-version param as a String
719
- paramType = new rust.StringType();
722
+ if (!param.clientDefaultValue) {
723
+ throw new Error(`API version parameter ${param.name} has no clientDefaultValue`);
724
+ }
725
+ paramType = this.getStringType();
720
726
  }
721
727
  else {
722
728
  paramType = this.getType(param.type);
@@ -726,7 +732,7 @@ export class Adapter {
726
732
  // client-side default value makes the param optional
727
733
  if (param.optional || param.clientDefaultValue) {
728
734
  optional = true;
729
- const paramField = new rust.StructField(paramName, true, paramType);
735
+ const paramField = new rust.StructField(paramName, 'pub', paramType);
730
736
  constructable.options.type.fields.push(paramField);
731
737
  if (param.clientDefaultValue) {
732
738
  paramField.defaultValue = `String::from("${param.clientDefaultValue}")`;
@@ -800,15 +806,15 @@ export class Adapter {
800
806
  }
801
807
  const methodName = naming.getEscapedReservedName(snakeCaseName(srcMethodName), 'fn');
802
808
  const optionsLifetime = new rust.Lifetime('a');
803
- const methodOptionsStruct = new rust.Struct(`${rustClient.name}${codegen.pascalCase(srcMethodName)}Options`, true);
809
+ const methodOptionsStruct = new rust.Struct(`${rustClient.name}${codegen.pascalCase(srcMethodName)}Options`, 'pub');
804
810
  methodOptionsStruct.lifetime = optionsLifetime;
805
811
  methodOptionsStruct.docs.summary = `Options to be passed to [\`${rustClient.name}::${methodName}()\`](${buildClientDocPath(rustClient)}::${methodName}())`;
806
812
  const clientMethodOptions = new rust.ExternalType(this.crate, 'azure_core', 'ClientMethodOptions');
807
813
  clientMethodOptions.lifetime = optionsLifetime;
808
- const methodOptionsField = new rust.StructField('method_options', true, clientMethodOptions);
814
+ const methodOptionsField = new rust.StructField('method_options', 'pub', clientMethodOptions);
809
815
  methodOptionsField.docs.summary = 'Allows customization of the method call.';
810
816
  methodOptionsStruct.fields.push(methodOptionsField);
811
- const pub = method.access === 'public';
817
+ const pub = method.access === 'public' ? 'pub' : 'pubCrate';
812
818
  const methodOptions = new rust.MethodOptions(methodOptionsStruct);
813
819
  const httpMethod = method.operation.verb;
814
820
  // if path is more than just "/" strip off any leading forward slash.
@@ -817,8 +823,9 @@ export class Adapter {
817
823
  // e.g. if endpoint is https://contoso.com/foo/bar and httpPath is /some/sub/path
818
824
  // then calling Url::join will provide result https://contoso.com/some/sub/path
819
825
  // which is not what we want.
826
+ // the only exception is if this is the root before the query string
820
827
  let httpPath = method.operation.path;
821
- if (httpPath.length > 1 && httpPath[0] === '/') {
828
+ if (httpPath.length > 1 && httpPath[0] === '/' && !httpPath.startsWith('/?')) {
822
829
  httpPath = httpPath.slice(1);
823
830
  }
824
831
  let rustMethod;
@@ -895,7 +902,7 @@ export class Adapter {
895
902
  else {
896
903
  fieldType = new rust.Option(adaptedParam.type);
897
904
  }
898
- const optionsField = new rust.StructField(adaptedParam.name, true, fieldType);
905
+ const optionsField = new rust.StructField(adaptedParam.name, 'pub', fieldType);
899
906
  optionsField.docs = adaptedParam.docs;
900
907
  rustMethod.options.type.fields.push(optionsField);
901
908
  }
@@ -949,7 +956,7 @@ export class Adapter {
949
956
  responseHeader = new rust.ResponseHeaderHashMap(header.name, header.serializedName);
950
957
  }
951
958
  else {
952
- responseHeader = new rust.ResponseHeaderScalar(header.name, header.serializedName, this.getType(header.type));
959
+ responseHeader = new rust.ResponseHeaderScalar(fixETagName(header.name), fixETagName(header.serializedName), this.getType(header.type));
953
960
  }
954
961
  responseHeader.docs = this.adaptDocs(header.summary, header.doc);
955
962
  rustMethod.responseHeaders.push(responseHeader);
@@ -1046,7 +1053,7 @@ export class Adapter {
1046
1053
  throw new Error('cookie parameters are not supported');
1047
1054
  case 'header':
1048
1055
  if (param.collectionFormat) {
1049
- if (paramType.kind !== 'vector') {
1056
+ if (paramType.kind !== 'Vec') {
1050
1057
  throw new Error(`unexpected kind ${paramType.kind} for HeaderCollectionParameter`);
1051
1058
  }
1052
1059
  let format;
@@ -1073,6 +1080,7 @@ export class Adapter {
1073
1080
  }
1074
1081
  else {
1075
1082
  adaptedParam = new rust.HeaderParameter(paramName, param.serializedName, paramLoc, param.optional, paramType);
1083
+ adaptedParam.isApiVersion = param.isApiVersionParam;
1076
1084
  }
1077
1085
  break;
1078
1086
  case 'path':
@@ -1081,7 +1089,7 @@ export class Adapter {
1081
1089
  case 'query':
1082
1090
  if (param.collectionFormat) {
1083
1091
  const format = param.collectionFormat === 'simple' ? 'csv' : (param.collectionFormat === 'form' ? 'multi' : param.collectionFormat);
1084
- if (paramType.kind !== 'vector') {
1092
+ if (paramType.kind !== 'Vec') {
1085
1093
  throw new Error(`unexpected kind ${paramType.kind} for QueryCollectionParameter`);
1086
1094
  }
1087
1095
  // TODO: hard-coded encoding setting, https://github.com/Azure/typespec-azure/issues/1314
@@ -1169,6 +1177,20 @@ export class Adapter {
1169
1177
  }
1170
1178
  }
1171
1179
  }
1180
+ /**
1181
+ * transforms Etag etc to all lower case.
1182
+ * this is to prevent inadvertently snake-casing
1183
+ * Etag to e_tag.
1184
+ *
1185
+ * if name isn't some variant of Etag the
1186
+ * original value is returned.
1187
+ *
1188
+ * @param name the name to transform
1189
+ * @returns etag or the original value
1190
+ */
1191
+ function fixETagName(name) {
1192
+ return name.match(/^etag$/i) ? 'etag' : name;
1193
+ }
1172
1194
  /**
1173
1195
  * snake-cases the provided name
1174
1196
  *
@@ -1176,7 +1198,7 @@ export class Adapter {
1176
1198
  * @returns name in snake-case format
1177
1199
  */
1178
1200
  function snakeCaseName(name) {
1179
- return codegen.deconstruct(name).join('_');
1201
+ return codegen.deconstruct(fixETagName(name)).join('_');
1180
1202
  }
1181
1203
  /**
1182
1204
  * recursively creates a map key from the specified type.
@@ -1195,6 +1217,8 @@ function recursiveKeyName(root, obj) {
1195
1217
  switch (obj.kind) {
1196
1218
  case 'array':
1197
1219
  return recursiveKeyName(`${root}-array`, obj.valueType);
1220
+ case 'bytes':
1221
+ return `${root}-bytes-${obj.encode ? obj.encode : 'std'}`;
1198
1222
  case 'enum':
1199
1223
  return `${root}-${obj.name}`;
1200
1224
  case 'enumvalue':
@@ -1261,7 +1285,7 @@ function getXMLKind(decorators, field) {
1261
1285
  case 'TypeSpec.Xml.@unwrapped': {
1262
1286
  const fieldType = helpers.unwrapOption(field.type);
1263
1287
  switch (fieldType.kind) {
1264
- case 'vector':
1288
+ case 'Vec':
1265
1289
  return 'unwrappedList';
1266
1290
  case 'String':
1267
1291
  // an unwrapped string means it's text