@azure-tools/typespec-rust 0.11.0 → 0.13.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 (63) 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 +45 -39
  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/context.d.ts.map +1 -1
  10. package/dist/src/codegen/context.js +5 -4
  11. package/dist/src/codegen/context.js.map +1 -1
  12. package/dist/src/codegen/enums.d.ts +2 -1
  13. package/dist/src/codegen/enums.d.ts.map +1 -1
  14. package/dist/src/codegen/enums.js +6 -3
  15. package/dist/src/codegen/enums.js.map +1 -1
  16. package/dist/src/codegen/headerTraits.d.ts +2 -2
  17. package/dist/src/codegen/headerTraits.d.ts.map +1 -1
  18. package/dist/src/codegen/headerTraits.js +12 -9
  19. package/dist/src/codegen/headerTraits.js.map +1 -1
  20. package/dist/src/codegen/helpers.d.ts +11 -4
  21. package/dist/src/codegen/helpers.d.ts.map +1 -1
  22. package/dist/src/codegen/helpers.js +13 -8
  23. package/dist/src/codegen/helpers.js.map +1 -1
  24. package/dist/src/codegen/lib.d.ts +1 -4
  25. package/dist/src/codegen/lib.d.ts.map +1 -1
  26. package/dist/src/codegen/lib.js +4 -99
  27. package/dist/src/codegen/lib.js.map +1 -1
  28. package/dist/src/codegen/mod.d.ts +10 -4
  29. package/dist/src/codegen/mod.d.ts.map +1 -1
  30. package/dist/src/codegen/mod.js +36 -19
  31. package/dist/src/codegen/mod.js.map +1 -1
  32. package/dist/src/codegen/models.d.ts +5 -4
  33. package/dist/src/codegen/models.d.ts.map +1 -1
  34. package/dist/src/codegen/models.js +455 -48
  35. package/dist/src/codegen/models.js.map +1 -1
  36. package/dist/src/codegen/use.d.ts +7 -6
  37. package/dist/src/codegen/use.d.ts.map +1 -1
  38. package/dist/src/codegen/use.js +31 -16
  39. package/dist/src/codegen/use.js.map +1 -1
  40. package/dist/src/codemodel/client.d.ts +8 -3
  41. package/dist/src/codemodel/client.d.ts.map +1 -1
  42. package/dist/src/codemodel/client.js +9 -8
  43. package/dist/src/codemodel/client.js.map +1 -1
  44. package/dist/src/codemodel/method.d.ts +3 -3
  45. package/dist/src/codemodel/method.d.ts.map +1 -1
  46. package/dist/src/codemodel/method.js +2 -2
  47. package/dist/src/codemodel/method.js.map +1 -1
  48. package/dist/src/codemodel/types.d.ts +13 -11
  49. package/dist/src/codemodel/types.d.ts.map +1 -1
  50. package/dist/src/codemodel/types.js +20 -20
  51. package/dist/src/codemodel/types.js.map +1 -1
  52. package/dist/src/emitter.d.ts.map +1 -1
  53. package/dist/src/emitter.js +12 -6
  54. package/dist/src/emitter.js.map +1 -1
  55. package/dist/src/lib.d.ts +1 -0
  56. package/dist/src/lib.d.ts.map +1 -1
  57. package/dist/src/lib.js +2 -1
  58. package/dist/src/lib.js.map +1 -1
  59. package/dist/src/tcgcadapter/adapter.d.ts +3 -1
  60. package/dist/src/tcgcadapter/adapter.d.ts.map +1 -1
  61. package/dist/src/tcgcadapter/adapter.js +64 -50
  62. package/dist/src/tcgcadapter/adapter.js.map +1 -1
  63. 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
  }
@@ -84,7 +84,7 @@ export class EnumValue {
84
84
  }
85
85
  export class Etag extends External {
86
86
  constructor(crate) {
87
- super(crate, 'azure_core', 'Etag');
87
+ super(crate, 'azure_core::http', 'Etag');
88
88
  this.kind = 'Etag';
89
89
  }
90
90
  }
@@ -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;
@@ -180,7 +180,7 @@ export class Option {
180
180
  }
181
181
  export class Pager extends External {
182
182
  constructor(crate, type, format) {
183
- super(crate, 'azure_core', 'Pager');
183
+ super(crate, 'azure_core::http', 'Pager');
184
184
  this.kind = 'pager';
185
185
  this.type = type;
186
186
  this.format = format;
@@ -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;
@@ -210,14 +210,14 @@ export class Payload {
210
210
  }
211
211
  export class RequestContent extends External {
212
212
  constructor(crate, content) {
213
- super(crate, 'azure_core', 'RequestContent');
213
+ super(crate, 'azure_core::http', 'RequestContent');
214
214
  this.kind = 'requestContent';
215
215
  this.content = content;
216
216
  }
217
217
  }
218
218
  export class Response extends External {
219
219
  constructor(crate, content) {
220
- super(crate, 'azure_core', 'Response');
220
+ super(crate, 'azure_core::http', 'Response');
221
221
  this.kind = 'response';
222
222
  this.content = content;
223
223
  }
@@ -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 {
@@ -278,13 +278,13 @@ export class Unit {
278
278
  }
279
279
  export class Url extends External {
280
280
  constructor(crate) {
281
- super(crate, 'azure_core', 'Url');
281
+ super(crate, 'azure_core::http', 'Url');
282
282
  this.kind = 'Url';
283
283
  }
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":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAEnD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAe,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,gCAAgC,CAAC;AAExC;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,OAAwC;IACpE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAEpC,MAAM,KAAK,CAAC,GAAG,OAAO,CAAC,gBAAgB,MAAM,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC;IAElE,MAAM,OAAO,GAAG,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC;IAEzC,yDAAyD;IACzD,0FAA0F;IAC1F,mDAAmD;IACnD,MAAM,aAAa,GAAG,GAAG,OAAO,CAAC,gBAAgB,aAAa,CAAC;IAC/D,IAAI,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAAE,CAAC;QAC1E,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC;YAC/B,IAAI,EAAE,mBAAmB;YACzB,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,yBAAyB,aAAa,EAAE;YACjD,MAAM,EAAE,QAAQ;SACjB,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,MAAM,SAAS,CAAC,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,aAAiC,CAAC;IACtC,MAAM,SAAS,GAAG,GAAG,OAAO,CAAC,gBAAgB,aAAa,CAAC;IAC3D,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1B,aAAa,GAAG,YAAY,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IACjE,CAAC;IACD,MAAM,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;IAE7D,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACpC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,mBAAmB,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/E,CAAC;IAED,mEAAmE;IACnE,mEAAmE;IACnE,wEAAwE;IACxE,kCAAkC;IAClC,IAAI,CAAC;QACH,QAAQ,CAAC,iBAAiB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC;YAC/B,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,kDAAkD;YAC3D,MAAM,EAAE,QAAQ;SACjB,CAAC,CAAC;QAEH,6BAA6B;QAC7B,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,QAAQ,CAAC,2BAA2B,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,gBAAgB,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IAC9F,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC;YAC/B,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAU,GAAI,CAAC,OAAO;YAC7B,MAAM,EAAE,QAAQ;SACjB,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,mBAAmB,CAAC,MAAc,EAAE,QAAgB,EAAE,OAAe;IAClF,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IACrE,MAAM,WAAW,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAClF,MAAM,KAAK,CAAC,WAAW,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC;IAC5C,MAAM,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;AACzC,CAAC"}
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;IAmO5B;;;;;;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,16 +502,15 @@ 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::http', '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::http', 'ClientOptions'));
506
510
  clientOptionsField.defaultValue = 'ClientOptions::default()';
507
511
  clientOptionsStruct.fields.push(clientOptionsField);
508
512
  rustClient.constructable = new rust.ClientConstruction(new rust.ClientOptions(clientOptionsStruct));
509
- // NOTE: must call buildClientDocPath() after setting rustClient.constructable
510
- clientOptionsStruct.docs.summary = `Options used when creating a [\`${rustClient.name}\`](${buildClientDocPath(rustClient)})`;
513
+ clientOptionsStruct.docs.summary = `Options used when creating a [\`${rustClient.name}\`](${rustClient.name})`;
511
514
  // NOTE: per tcgc convention, if there is no param of kind credential
512
515
  // it means that the client doesn't require any kind of authentication.
513
516
  // HOWEVER, if there *is* a credential param, then the client *does not*
@@ -594,7 +597,7 @@ export class Adapter {
594
597
  const adaptedParam = new rust.ClientMethodParameter(param.name, this.getStringSlice(), false, true);
595
598
  adaptedParam.docs = this.adaptDocs(param.summary, param.doc);
596
599
  ctorParams.push(adaptedParam);
597
- rustClient.fields.push(new rust.StructField(param.name, false, new rust.Url(this.crate)));
600
+ rustClient.fields.push(new rust.StructField(param.name, 'pubCrate', new rust.Url(this.crate)));
598
601
  // if the server's URL is *only* the endpoint parameter then we're done.
599
602
  // this is the param.type.kind === 'endpoint' case.
600
603
  if (endpointType.serverUrl === `{${templateArg.serializedName}}`) {
@@ -629,7 +632,7 @@ export class Adapter {
629
632
  }
630
633
  case 'method': {
631
634
  const clientParam = this.adaptClientParameter(param, rustClient.constructable);
632
- rustClient.fields.push(new rust.StructField(clientParam.name, false, clientParam.type));
635
+ rustClient.fields.push(new rust.StructField(clientParam.name, 'pubCrate', clientParam.type));
633
636
  ctorParams.push(clientParam);
634
637
  break;
635
638
  }
@@ -665,7 +668,7 @@ export class Adapter {
665
668
  if (rustClient.fields.find((v) => v.name === name)) {
666
669
  continue;
667
670
  }
668
- rustClient.fields.push(new rust.StructField(name, false, this.getType(prop.type)));
671
+ rustClient.fields.push(new rust.StructField(name, 'pubCrate', this.getType(prop.type)));
669
672
  }
670
673
  }
671
674
  else {
@@ -715,8 +718,10 @@ export class Adapter {
715
718
  adaptClientParameter(param, constructable) {
716
719
  let paramType;
717
720
  if (param.isApiVersionParam) {
718
- // we expose the api-version param as a String
719
- paramType = new rust.StringType();
721
+ if (!param.clientDefaultValue) {
722
+ throw new Error(`API version parameter ${param.name} has no clientDefaultValue`);
723
+ }
724
+ paramType = this.getStringType();
720
725
  }
721
726
  else {
722
727
  paramType = this.getType(param.type);
@@ -726,7 +731,7 @@ export class Adapter {
726
731
  // client-side default value makes the param optional
727
732
  if (param.optional || param.clientDefaultValue) {
728
733
  optional = true;
729
- const paramField = new rust.StructField(paramName, true, paramType);
734
+ const paramField = new rust.StructField(paramName, 'pub', paramType);
730
735
  constructable.options.type.fields.push(paramField);
731
736
  if (param.clientDefaultValue) {
732
737
  paramField.defaultValue = `String::from("${param.clientDefaultValue}")`;
@@ -800,15 +805,15 @@ export class Adapter {
800
805
  }
801
806
  const methodName = naming.getEscapedReservedName(snakeCaseName(srcMethodName), 'fn');
802
807
  const optionsLifetime = new rust.Lifetime('a');
803
- const methodOptionsStruct = new rust.Struct(`${rustClient.name}${codegen.pascalCase(srcMethodName)}Options`, true);
808
+ const methodOptionsStruct = new rust.Struct(`${rustClient.name}${codegen.pascalCase(srcMethodName)}Options`, 'pub');
804
809
  methodOptionsStruct.lifetime = optionsLifetime;
805
- methodOptionsStruct.docs.summary = `Options to be passed to [\`${rustClient.name}::${methodName}()\`](${buildClientDocPath(rustClient)}::${methodName}())`;
806
- const clientMethodOptions = new rust.ExternalType(this.crate, 'azure_core', 'ClientMethodOptions');
810
+ methodOptionsStruct.docs.summary = `Options to be passed to [\`${rustClient.name}::${methodName}()\`](crate::generated::clients::${rustClient.name}::${methodName}())`;
811
+ const clientMethodOptions = new rust.ExternalType(this.crate, 'azure_core::http', 'ClientMethodOptions');
807
812
  clientMethodOptions.lifetime = optionsLifetime;
808
- const methodOptionsField = new rust.StructField('method_options', true, clientMethodOptions);
813
+ const methodOptionsField = new rust.StructField('method_options', 'pub', clientMethodOptions);
809
814
  methodOptionsField.docs.summary = 'Allows customization of the method call.';
810
815
  methodOptionsStruct.fields.push(methodOptionsField);
811
- const pub = method.access === 'public';
816
+ const pub = method.access === 'public' ? 'pub' : 'pubCrate';
812
817
  const methodOptions = new rust.MethodOptions(methodOptionsStruct);
813
818
  const httpMethod = method.operation.verb;
814
819
  // if path is more than just "/" strip off any leading forward slash.
@@ -817,8 +822,9 @@ export class Adapter {
817
822
  // e.g. if endpoint is https://contoso.com/foo/bar and httpPath is /some/sub/path
818
823
  // then calling Url::join will provide result https://contoso.com/some/sub/path
819
824
  // which is not what we want.
825
+ // the only exception is if this is the root before the query string
820
826
  let httpPath = method.operation.path;
821
- if (httpPath.length > 1 && httpPath[0] === '/') {
827
+ if (httpPath.length > 1 && httpPath[0] === '/' && !httpPath.startsWith('/?')) {
822
828
  httpPath = httpPath.slice(1);
823
829
  }
824
830
  let rustMethod;
@@ -895,7 +901,7 @@ export class Adapter {
895
901
  else {
896
902
  fieldType = new rust.Option(adaptedParam.type);
897
903
  }
898
- const optionsField = new rust.StructField(adaptedParam.name, true, fieldType);
904
+ const optionsField = new rust.StructField(adaptedParam.name, 'pub', fieldType);
899
905
  optionsField.docs = adaptedParam.docs;
900
906
  rustMethod.options.type.fields.push(optionsField);
901
907
  }
@@ -949,7 +955,7 @@ export class Adapter {
949
955
  responseHeader = new rust.ResponseHeaderHashMap(header.name, header.serializedName);
950
956
  }
951
957
  else {
952
- responseHeader = new rust.ResponseHeaderScalar(header.name, header.serializedName, this.getType(header.type));
958
+ responseHeader = new rust.ResponseHeaderScalar(fixETagName(header.name), fixETagName(header.serializedName), this.getType(header.type));
953
959
  }
954
960
  responseHeader.docs = this.adaptDocs(header.summary, header.doc);
955
961
  rustMethod.responseHeaders.push(responseHeader);
@@ -981,7 +987,7 @@ export class Adapter {
981
987
  // for methods that don't return a modeled type but return headers,
982
988
  // we need to return a marker type
983
989
  const markerType = new rust.MarkerType(`${rustClient.name}${codegen.pascalCase(method.name)}Result`);
984
- markerType.docs.summary = `Contains results for [\`${rustClient.name}::${methodName}()\`](${buildClientDocPath(rustClient)}::${methodName}())`;
990
+ markerType.docs.summary = `Contains results for [\`${rustClient.name}::${methodName}()\`](crate::generated::clients::${rustClient.name}::${methodName}())`;
985
991
  returnType = new rust.Response(this.crate, markerType);
986
992
  this.crate.models.push(markerType);
987
993
  }
@@ -1046,7 +1052,7 @@ export class Adapter {
1046
1052
  throw new Error('cookie parameters are not supported');
1047
1053
  case 'header':
1048
1054
  if (param.collectionFormat) {
1049
- if (paramType.kind !== 'vector') {
1055
+ if (paramType.kind !== 'Vec') {
1050
1056
  throw new Error(`unexpected kind ${paramType.kind} for HeaderCollectionParameter`);
1051
1057
  }
1052
1058
  let format;
@@ -1073,6 +1079,7 @@ export class Adapter {
1073
1079
  }
1074
1080
  else {
1075
1081
  adaptedParam = new rust.HeaderParameter(paramName, param.serializedName, paramLoc, param.optional, paramType);
1082
+ adaptedParam.isApiVersion = param.isApiVersionParam;
1076
1083
  }
1077
1084
  break;
1078
1085
  case 'path':
@@ -1081,7 +1088,7 @@ export class Adapter {
1081
1088
  case 'query':
1082
1089
  if (param.collectionFormat) {
1083
1090
  const format = param.collectionFormat === 'simple' ? 'csv' : (param.collectionFormat === 'form' ? 'multi' : param.collectionFormat);
1084
- if (paramType.kind !== 'vector') {
1091
+ if (paramType.kind !== 'Vec') {
1085
1092
  throw new Error(`unexpected kind ${paramType.kind} for QueryCollectionParameter`);
1086
1093
  }
1087
1094
  // TODO: hard-coded encoding setting, https://github.com/Azure/typespec-azure/issues/1314
@@ -1169,6 +1176,20 @@ export class Adapter {
1169
1176
  }
1170
1177
  }
1171
1178
  }
1179
+ /**
1180
+ * transforms Etag etc to all lower case.
1181
+ * this is to prevent inadvertently snake-casing
1182
+ * Etag to e_tag.
1183
+ *
1184
+ * if name isn't some variant of Etag the
1185
+ * original value is returned.
1186
+ *
1187
+ * @param name the name to transform
1188
+ * @returns etag or the original value
1189
+ */
1190
+ function fixETagName(name) {
1191
+ return name.match(/^etag$/i) ? 'etag' : name;
1192
+ }
1172
1193
  /**
1173
1194
  * snake-cases the provided name
1174
1195
  *
@@ -1176,7 +1197,7 @@ export class Adapter {
1176
1197
  * @returns name in snake-case format
1177
1198
  */
1178
1199
  function snakeCaseName(name) {
1179
- return codegen.deconstruct(name).join('_');
1200
+ return codegen.deconstruct(fixETagName(name)).join('_');
1180
1201
  }
1181
1202
  /**
1182
1203
  * recursively creates a map key from the specified type.
@@ -1195,6 +1216,8 @@ function recursiveKeyName(root, obj) {
1195
1216
  switch (obj.kind) {
1196
1217
  case 'array':
1197
1218
  return recursiveKeyName(`${root}-array`, obj.valueType);
1219
+ case 'bytes':
1220
+ return `${root}-bytes-${obj.encode ? obj.encode : 'std'}`;
1198
1221
  case 'enum':
1199
1222
  return `${root}-${obj.name}`;
1200
1223
  case 'enumvalue':
@@ -1261,7 +1284,7 @@ function getXMLKind(decorators, field) {
1261
1284
  case 'TypeSpec.Xml.@unwrapped': {
1262
1285
  const fieldType = helpers.unwrapOption(field.type);
1263
1286
  switch (fieldType.kind) {
1264
- case 'vector':
1287
+ case 'Vec':
1265
1288
  return 'unwrappedList';
1266
1289
  case 'String':
1267
1290
  // an unwrapped string means it's text
@@ -1272,13 +1295,4 @@ function getXMLKind(decorators, field) {
1272
1295
  }
1273
1296
  return undefined;
1274
1297
  }
1275
- /**
1276
- * contructs the fully qualified path to a client to be used in doc comments
1277
- *
1278
- * @param client the client to build the path to
1279
- * @returns the fully qualified client path (e.g. crate::Client, crate::clients::SubClient)
1280
- */
1281
- function buildClientDocPath(client) {
1282
- return `crate::${client.constructable ? '' : 'clients::'}${client.name}`;
1283
- }
1284
1298
  //# sourceMappingURL=adapter.js.map