@azure-tools/typespec-rust 0.4.0 → 0.5.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.
- package/dist/src/codegen/clients.d.ts.map +1 -1
- package/dist/src/codegen/clients.js +122 -94
- package/dist/src/codegen/clients.js.map +1 -1
- package/dist/src/codegen/context.js +1 -1
- package/dist/src/codegen/context.js.map +1 -1
- package/dist/src/codemodel/client.d.ts +52 -12
- package/dist/src/codemodel/client.d.ts.map +1 -1
- package/dist/src/codemodel/client.js +24 -4
- package/dist/src/codemodel/client.js.map +1 -1
- package/dist/src/codemodel/crate.js.map +1 -1
- package/dist/src/tcgcadapter/adapter.d.ts +16 -0
- package/dist/src/tcgcadapter/adapter.d.ts.map +1 -1
- package/dist/src/tcgcadapter/adapter.js +175 -54
- package/dist/src/tcgcadapter/adapter.js.map +1 -1
- package/package.json +16 -16
|
@@ -11,11 +11,14 @@ export interface Client {
|
|
|
11
11
|
constructable?: ClientConstruction;
|
|
12
12
|
/**
|
|
13
13
|
* fields contains the ctor parameters that are
|
|
14
|
-
* persisted as fields on the client type
|
|
15
|
-
*
|
|
16
|
-
*
|
|
14
|
+
* persisted as fields on the client type and might
|
|
15
|
+
* also contain other fields that don't originate
|
|
16
|
+
* from ctor params (e.g. the pipeline).
|
|
17
|
+
* by convention, all fields that have their values
|
|
18
|
+
* populated from ctor params (required or optional)
|
|
19
|
+
* will have the same name as their originating param.
|
|
17
20
|
*/
|
|
18
|
-
fields: Array<
|
|
21
|
+
fields: Array<types.StructField>;
|
|
19
22
|
/** all the methods for this client */
|
|
20
23
|
methods: Array<MethodType>;
|
|
21
24
|
/** the parent client in a hierarchical client */
|
|
@@ -27,12 +30,19 @@ export interface ClientConstruction {
|
|
|
27
30
|
options: ClientOptions;
|
|
28
31
|
/** the constructor functions for a client. */
|
|
29
32
|
constructors: Array<Constructor>;
|
|
33
|
+
/**
|
|
34
|
+
* indicates that the endpoint requires additional host configuration. i.e. the
|
|
35
|
+
* endpoint passed by the caller will be augmented with supplemental path info.
|
|
36
|
+
*/
|
|
37
|
+
endpoint?: SupplementalEndpoint;
|
|
30
38
|
}
|
|
31
39
|
/** ClientOptions is the struct containing optional client params */
|
|
32
40
|
export interface ClientOptions extends types.Option {
|
|
33
41
|
/** the client options type */
|
|
34
42
|
type: types.Struct;
|
|
35
43
|
}
|
|
44
|
+
/** ClientParameter defines the possible client parameter types */
|
|
45
|
+
export type ClientParameter = ClientEndpointParameter | ClientMethodParameter;
|
|
36
46
|
/** represents a client constructor function */
|
|
37
47
|
export interface Constructor {
|
|
38
48
|
/** name of the constructor */
|
|
@@ -40,15 +50,25 @@ export interface Constructor {
|
|
|
40
50
|
/** the modeled parameters. at minimum, an endpoint param */
|
|
41
51
|
parameters: Array<ClientParameter>;
|
|
42
52
|
}
|
|
43
|
-
/**
|
|
44
|
-
export interface
|
|
45
|
-
|
|
46
|
-
name: string;
|
|
47
|
-
/** the type of the client parameter */
|
|
48
|
-
type: types.Type;
|
|
53
|
+
/** ClientMethodParameter is a Rust client parameter that's used in method bodies */
|
|
54
|
+
export interface ClientMethodParameter extends ClientParameterBase {
|
|
55
|
+
kind: 'clientMethod';
|
|
49
56
|
/** indicates if the parameter is a reference. defaults to false */
|
|
50
57
|
ref: boolean;
|
|
51
58
|
}
|
|
59
|
+
/** ClientEndpointParameter is used when constructing the endpoint's supplemental path */
|
|
60
|
+
export interface ClientEndpointParameter extends ClientParameterBase {
|
|
61
|
+
kind: 'clientEndpoint';
|
|
62
|
+
/** the segment name to be replaced with the param's value */
|
|
63
|
+
segment: string;
|
|
64
|
+
}
|
|
65
|
+
/** contains data on how to supplement a client endpoint */
|
|
66
|
+
export interface SupplementalEndpoint {
|
|
67
|
+
/** the supplemental path used to construct the complete endpoint */
|
|
68
|
+
path: string;
|
|
69
|
+
/** the parameters used to replace segments in the path */
|
|
70
|
+
parameters: Array<ClientEndpointParameter>;
|
|
71
|
+
}
|
|
52
72
|
/** HTTPMethod defines the possible HTTP verbs in a request */
|
|
53
73
|
export type HTTPMethod = 'delete' | 'get' | 'head' | 'patch' | 'post' | 'put';
|
|
54
74
|
/** Method defines the possible method types */
|
|
@@ -189,6 +209,17 @@ export interface QueryParameter extends HTTPParameterBase {
|
|
|
189
209
|
/** indicates if the query parameter should be URL encoded */
|
|
190
210
|
encoded: boolean;
|
|
191
211
|
}
|
|
212
|
+
interface ClientParameterBase {
|
|
213
|
+
/** the name of the parameter */
|
|
214
|
+
name: string;
|
|
215
|
+
/** the type of the client parameter */
|
|
216
|
+
type: types.Type;
|
|
217
|
+
/**
|
|
218
|
+
* indicates if the parameter is optional.
|
|
219
|
+
* optional params will be surfaced in the client options type.
|
|
220
|
+
*/
|
|
221
|
+
optional: boolean;
|
|
222
|
+
}
|
|
192
223
|
/** base type for HTTP-based methods */
|
|
193
224
|
interface HTTPMethodBase extends method.Method<types.Type> {
|
|
194
225
|
/** the params passed to the method (excluding self). can be empty */
|
|
@@ -209,6 +240,9 @@ interface HTTPParameterBase extends method.Parameter {
|
|
|
209
240
|
/** optional params go in the method's MethodOptions type */
|
|
210
241
|
optional: boolean;
|
|
211
242
|
}
|
|
243
|
+
declare class ClientParameterBase implements ClientParameterBase {
|
|
244
|
+
constructor(name: string, type: types.Type, optional: boolean);
|
|
245
|
+
}
|
|
212
246
|
declare class HTTPMethodBase extends method.Method<types.Type> implements HTTPMethodBase {
|
|
213
247
|
constructor(name: string, httpMethod: HTTPMethod, httpPath: string, pub: boolean, impl: string, self: method.Self);
|
|
214
248
|
}
|
|
@@ -233,12 +267,15 @@ export declare class ClientConstruction implements ClientConstruction {
|
|
|
233
267
|
export declare class ClientOptions extends types.Option implements ClientOptions {
|
|
234
268
|
constructor(type: types.Struct);
|
|
235
269
|
}
|
|
236
|
-
export declare class
|
|
237
|
-
constructor(name: string, type: types.Type, ref?: boolean);
|
|
270
|
+
export declare class ClientMethodParameter extends ClientParameterBase implements ClientMethodParameter {
|
|
271
|
+
constructor(name: string, type: types.Type, optional: boolean, ref?: boolean);
|
|
238
272
|
}
|
|
239
273
|
export declare class Constructor implements Constructor {
|
|
240
274
|
constructor(name: string);
|
|
241
275
|
}
|
|
276
|
+
export declare class ClientEndpointParameter extends ClientParameterBase implements ClientEndpointParameter {
|
|
277
|
+
constructor(name: string, type: types.Type, optional: boolean, segment: string);
|
|
278
|
+
}
|
|
242
279
|
export declare class HeaderCollectionParameter extends HTTPParameterBase implements HeaderCollectionParameter {
|
|
243
280
|
constructor(name: string, header: string, location: ParameterLocation, optional: boolean, type: types.Vector, format: CollectionFormat);
|
|
244
281
|
}
|
|
@@ -272,5 +309,8 @@ export declare class QueryCollectionParameter extends HTTPParameterBase implemen
|
|
|
272
309
|
export declare class QueryParameter extends HTTPParameterBase implements QueryParameter {
|
|
273
310
|
constructor(name: string, key: string, location: ParameterLocation, optional: boolean, type: types.Type, encoded: boolean);
|
|
274
311
|
}
|
|
312
|
+
export declare class SupplementalEndpoint implements SupplementalEndpoint {
|
|
313
|
+
constructor(path: string);
|
|
314
|
+
}
|
|
275
315
|
export {};
|
|
276
316
|
//# sourceMappingURL=client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/codemodel/client.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AAEpC,6BAA6B;AAC7B,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,QAAQ,CAAC;IAEf,6BAA6B;IAC7B,IAAI,EAAE,MAAM,CAAC;IAEb,8BAA8B;IAC9B,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC;IAEjB,6CAA6C;IAC7C,aAAa,CAAC,EAAE,kBAAkB,CAAC;IAEnC
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/codemodel/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,13 @@
|
|
|
4
4
|
*--------------------------------------------------------------------------------------------*/
|
|
5
5
|
import * as method from './method.js';
|
|
6
6
|
import * as types from './types.js';
|
|
7
|
+
class ClientParameterBase {
|
|
8
|
+
constructor(name, type, optional) {
|
|
9
|
+
this.name = name;
|
|
10
|
+
this.type = type;
|
|
11
|
+
this.optional = optional;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
7
14
|
class HTTPMethodBase extends method.Method {
|
|
8
15
|
constructor(name, httpMethod, httpPath, pub, impl, self) {
|
|
9
16
|
super(name, pub, impl, self);
|
|
@@ -64,10 +71,10 @@ export class ClientOptions extends types.Option {
|
|
|
64
71
|
super(type);
|
|
65
72
|
}
|
|
66
73
|
}
|
|
67
|
-
export class
|
|
68
|
-
constructor(name, type, ref) {
|
|
69
|
-
|
|
70
|
-
this.
|
|
74
|
+
export class ClientMethodParameter extends ClientParameterBase {
|
|
75
|
+
constructor(name, type, optional, ref) {
|
|
76
|
+
super(name, type, optional);
|
|
77
|
+
this.kind = 'clientMethod';
|
|
71
78
|
this.ref = ref ? ref : false;
|
|
72
79
|
}
|
|
73
80
|
}
|
|
@@ -77,6 +84,13 @@ export class Constructor {
|
|
|
77
84
|
this.parameters = new Array();
|
|
78
85
|
}
|
|
79
86
|
}
|
|
87
|
+
export class ClientEndpointParameter extends ClientParameterBase {
|
|
88
|
+
constructor(name, type, optional, segment) {
|
|
89
|
+
super(name, type, optional);
|
|
90
|
+
this.kind = 'clientEndpoint';
|
|
91
|
+
this.segment = segment;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
80
94
|
export class HeaderCollectionParameter extends HTTPParameterBase {
|
|
81
95
|
constructor(name, header, location, optional, type, format) {
|
|
82
96
|
validateHeaderPathQueryParamKind(type, 'headerCollection');
|
|
@@ -162,6 +176,12 @@ export class QueryParameter extends HTTPParameterBase {
|
|
|
162
176
|
this.encoded = encoded;
|
|
163
177
|
}
|
|
164
178
|
}
|
|
179
|
+
export class SupplementalEndpoint {
|
|
180
|
+
constructor(path) {
|
|
181
|
+
this.path = path;
|
|
182
|
+
this.parameters = new Array();
|
|
183
|
+
}
|
|
184
|
+
}
|
|
165
185
|
function validateHeaderPathQueryParamKind(type, paramKind) {
|
|
166
186
|
switch (type.kind) {
|
|
167
187
|
case 'String':
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/codemodel/client.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/codemodel/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crate.js","sourceRoot":"","sources":["../../../src/codemodel/crate.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAsD/F,mGAAmG;AACnG,mGAAmG;AAEnG,MAAM,OAAO,KAAK;IAChB,YAAY,IAAY,EAAE,OAAe,EAAE,IAAiB;QAC1D,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,YAAY,GAAG,IAAI,KAAK,EAAmB,CAAC;QACjD,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,EAAc,CAAC;QACrC,IAAI,CAAC,MAAM,GAAG,IAAI,KAAK,EAAe,CAAC;QACvC,IAAI,CAAC,OAAO,GAAG,IAAI,KAAK,EAAiB,CAAC;IAC5C,CAAC;IAED;;;OAGG;IACH,aAAa,CAAC,UAA2B;QACvC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACpC,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,EAAE,CAAC;gBACjC,OAAO;YACT,CAAC;QACH,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACrC,CAAC;IAED,0CAA0C;IAC1C,WAAW;QACT,MAAM,aAAa,GAAG,UAAS,CAAS,EAAE,CAAS;YACjD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,CAAC,CAAC;QAEF,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAkB,EAAE,CAAkB,EAAE,EAAE,GAAG,OAAO,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9G,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAa,EAAE,CAAa,EAAE,EAAE,GAAG,OAAO,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7F,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAClC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAkB,EAAE,CAAkB,EAAE,EAAE,GAAG,OAAO,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9G,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAc,EAAE,CAAc,EAAE,EAAE,GAAG,OAAO,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChG,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAmB,EAAE,CAAmB,EAAE,EAAE,GAAG,OAAO,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7G,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAgB,EAAE,CAAgB,EAAE,EAAE,GAAG,OAAO,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrG,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"crate.js","sourceRoot":"","sources":["../../../src/codemodel/crate.ts"],"names":[],"mappings":"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"}
|
|
@@ -63,6 +63,22 @@ export declare class Adapter {
|
|
|
63
63
|
* @returns a Rust client
|
|
64
64
|
*/
|
|
65
65
|
private recursiveAdaptClient;
|
|
66
|
+
/**
|
|
67
|
+
* creates a client constructor for the TokenCredential type.
|
|
68
|
+
* the constructor is named new.
|
|
69
|
+
*
|
|
70
|
+
* @param cred the OAuth2 credential to adapt
|
|
71
|
+
* @returns a client constructor for TokenCredential
|
|
72
|
+
*/
|
|
73
|
+
private createTokenCredentialCtor;
|
|
74
|
+
/**
|
|
75
|
+
* converts a tcgc client parameter to a Rust client parameter
|
|
76
|
+
*
|
|
77
|
+
* @param param the tcgc client parameter to convert
|
|
78
|
+
* @param constructable contains client construction info. if the param is optional, it will go in the options type
|
|
79
|
+
* @returns the Rust client parameter
|
|
80
|
+
*/
|
|
81
|
+
private adaptClientParameter;
|
|
66
82
|
/**
|
|
67
83
|
* converts a tcgc method to a Rust method for the specified client
|
|
68
84
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/tcgcadapter/adapter.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/tcgcadapter/adapter.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAIjD,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;IAU/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;IAEvE,OAAO;IAaP,wDAAwD;IACxD,WAAW,IAAI,IAAI,CAAC,KAAK;IAoCzB,4DAA4D;IAC5D,OAAO,CAAC,UAAU;IAqBlB;;;;;OAKG;IACH,OAAO,CAAC,OAAO;IAoBf;;;;;OAKG;IACH,OAAO,CAAC,QAAQ;IAgChB;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IAsBrB,0CAA0C;IAC1C,OAAO,CAAC,OAAO;IAmIf,iCAAiC;IACjC,OAAO,CAAC,WAAW;IAWnB;;;;;OAKG;IACH,OAAO,CAAC,UAAU;IAWlB,4EAA4E;IAC5E,OAAO,CAAC,YAAY;IAcpB;;;;;;;OAOG;IACH,OAAO,CAAC,oBAAoB;IAiN5B;;;;;;OAMG;IACH,OAAO,CAAC,yBAAyB;IAajC;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;IA8B5B;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IA+KnB;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IA2F5B;;;;;;;OAOG;IACH,OAAO,CAAC,0BAA0B;IA8BlC;;;;;OAKG;IACH,OAAO,CAAC,eAAe;CAcxB"}
|
|
@@ -344,6 +344,7 @@ export class Adapter {
|
|
|
344
344
|
* @returns a Rust client
|
|
345
345
|
*/
|
|
346
346
|
recursiveAdaptClient(client, parent) {
|
|
347
|
+
var _a;
|
|
347
348
|
let clientName = client.name;
|
|
348
349
|
if (parent) {
|
|
349
350
|
// for hierarchical clients, the child client names are built
|
|
@@ -369,7 +370,7 @@ export class Adapter {
|
|
|
369
370
|
rustClient.docs.summary = client.summary;
|
|
370
371
|
rustClient.docs.description = client.doc;
|
|
371
372
|
rustClient.parent = parent;
|
|
372
|
-
rustClient.fields.push(new rust.
|
|
373
|
+
rustClient.fields.push(new rust.StructField('pipeline', false, new rust.ExternalType(this.crate, 'azure_core', 'Pipeline')));
|
|
373
374
|
// anything other than public means non-instantiable client
|
|
374
375
|
if (client.initialization.access === 'public') {
|
|
375
376
|
const clientOptionsStruct = new rust.Struct(`${rustClient.name}Options`, true);
|
|
@@ -390,71 +391,116 @@ export class Adapter {
|
|
|
390
391
|
AuthTypes[AuthTypes["WithAut"] = 2] = "WithAut";
|
|
391
392
|
})(AuthTypes || (AuthTypes = {}));
|
|
392
393
|
let authType = AuthTypes.Default;
|
|
394
|
+
/**
|
|
395
|
+
* processes a credendial, potentially adding its supporting client constructor
|
|
396
|
+
*
|
|
397
|
+
* @param cred the credential type to process
|
|
398
|
+
* @param constructable the constructable for the current Rust client
|
|
399
|
+
* @param throwOnDefault when true, throws an error on unsupported credential types
|
|
400
|
+
* @returns the AuthTypes enum for the credential that was handled, or AuthTypes.Default if none were
|
|
401
|
+
*/
|
|
402
|
+
const processCredential = (cred, constructable, throwOnDefault) => {
|
|
403
|
+
switch (cred.type) {
|
|
404
|
+
case 'noAuth':
|
|
405
|
+
return AuthTypes.NoAuth;
|
|
406
|
+
case 'oauth2': {
|
|
407
|
+
constructable.constructors.push(this.createTokenCredentialCtor(cred));
|
|
408
|
+
return AuthTypes.WithAut;
|
|
409
|
+
}
|
|
410
|
+
default:
|
|
411
|
+
if (throwOnDefault) {
|
|
412
|
+
throw new Error(`credential scheme type ${cred.type} NYI`);
|
|
413
|
+
}
|
|
414
|
+
return AuthTypes.Default;
|
|
415
|
+
}
|
|
416
|
+
};
|
|
393
417
|
const ctorParams = new Array();
|
|
394
418
|
for (const param of client.initialization.properties) {
|
|
395
419
|
switch (param.kind) {
|
|
396
420
|
case 'credential':
|
|
397
421
|
switch (param.type.kind) {
|
|
398
422
|
case 'credential':
|
|
399
|
-
|
|
400
|
-
case 'noAuth':
|
|
401
|
-
authType |= AuthTypes.NoAuth;
|
|
402
|
-
break;
|
|
403
|
-
case 'oauth2': {
|
|
404
|
-
authType |= AuthTypes.WithAut;
|
|
405
|
-
if (param.type.scheme.flows.length === 0) {
|
|
406
|
-
throw new Error(`no flows defined for credential type ${param.type.scheme.type}`);
|
|
407
|
-
}
|
|
408
|
-
const scopes = new Array();
|
|
409
|
-
for (const scope of param.type.scheme.flows[0].scopes) {
|
|
410
|
-
scopes.push(scope.value);
|
|
411
|
-
}
|
|
412
|
-
const ctorTokenCredential = new rust.Constructor('new');
|
|
413
|
-
ctorTokenCredential.parameters.push(new rust.ClientParameter('credential', new rust.Arc(new rust.TokenCredential(this.crate, scopes))));
|
|
414
|
-
rustClient.constructable.constructors.push(ctorTokenCredential);
|
|
415
|
-
break;
|
|
416
|
-
}
|
|
417
|
-
default:
|
|
418
|
-
// TODO: https://github.com/Azure/typespec-rust/issues/57
|
|
419
|
-
throw new Error(`credential scheme type ${param.type.scheme.type} NYI`);
|
|
420
|
-
}
|
|
423
|
+
authType |= processCredential(param.type.scheme, rustClient.constructable, true);
|
|
421
424
|
break;
|
|
422
|
-
case 'union':
|
|
423
|
-
|
|
425
|
+
case 'union': {
|
|
426
|
+
const variantKinds = new Array();
|
|
427
|
+
for (const variantType of param.type.variantTypes) {
|
|
428
|
+
variantKinds.push(variantType.scheme.type);
|
|
429
|
+
// if OAuth2 is specified then emit that and skip any unsupported ones.
|
|
430
|
+
// this prevents emitting the with_no_credential constructor in cases
|
|
431
|
+
// where it might not actually be supported.
|
|
432
|
+
authType |= processCredential(variantType.scheme, rustClient.constructable, false);
|
|
433
|
+
}
|
|
434
|
+
// no supported credential types were specified
|
|
435
|
+
if (authType === AuthTypes.Default) {
|
|
436
|
+
throw new Error(`credential scheme types ${variantKinds.join()} NYI`);
|
|
437
|
+
}
|
|
424
438
|
continue;
|
|
439
|
+
}
|
|
425
440
|
}
|
|
426
441
|
break;
|
|
427
|
-
case 'endpoint':
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
paramType = this.getType(param.type);
|
|
442
|
+
case 'endpoint': {
|
|
443
|
+
let endpointType;
|
|
444
|
+
switch (param.type.kind) {
|
|
445
|
+
case 'endpoint':
|
|
446
|
+
// single endpoint without any supplemental path
|
|
447
|
+
endpointType = param.type;
|
|
448
|
+
break;
|
|
449
|
+
case 'union':
|
|
450
|
+
// this is a union of endpoints. the first is the endpoint plus
|
|
451
|
+
// the supplemental path. the second is a "raw" endpoint which
|
|
452
|
+
// requires the caller to provide the complete endpoint. we only
|
|
453
|
+
// expose the former at present. languages that support overloads
|
|
454
|
+
// MAY support both but it's not a requirement.
|
|
455
|
+
endpointType = param.type.variantTypes[0];
|
|
442
456
|
}
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
457
|
+
for (let i = 0; i < endpointType.templateArguments.length; ++i) {
|
|
458
|
+
const templateArg = endpointType.templateArguments[i];
|
|
459
|
+
if (i === 0) {
|
|
460
|
+
// the first template arg is always the endpoint parameter.
|
|
461
|
+
// note that the types of the param and the field are different.
|
|
462
|
+
// NOTE: we use param.name here instead of templateArg.name as
|
|
463
|
+
// the former has the fixed name "endpoint" which is what we want.
|
|
464
|
+
ctorParams.push(new rust.ClientMethodParameter(param.name, new rust.StringSlice(), false, true));
|
|
465
|
+
rustClient.fields.push(new rust.StructField(param.name, false, new rust.Url(this.crate)));
|
|
466
|
+
// if the server's URL is *only* the endpoint parameter then we're done.
|
|
467
|
+
// this is the param.type.kind === 'endpoint' case.
|
|
468
|
+
if (endpointType.serverUrl === `{${templateArg.serializedName}}`) {
|
|
469
|
+
break;
|
|
470
|
+
}
|
|
471
|
+
// there's either a suffix on the endpoint param, more template arguments, or both.
|
|
472
|
+
// either way we need to create supplemental info on the constructable.
|
|
473
|
+
// NOTE: we remove the {endpoint} segment and trailing forward slash as we use
|
|
474
|
+
// Url::join to concatenate the two and not string replacement.
|
|
475
|
+
let serverUrl = endpointType.serverUrl.replace(`{${templateArg.serializedName}}/`, '');
|
|
476
|
+
// NOTE: the behavior of Url::join requires that the path ends with a forward slash.
|
|
477
|
+
// if there are any query params, splice it in as required else just append it.
|
|
478
|
+
if (serverUrl.includes('?')) {
|
|
479
|
+
if (serverUrl[serverUrl.indexOf('?') - 1] !== '/') {
|
|
480
|
+
serverUrl = serverUrl.replace('?', '/?');
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
else if (serverUrl[serverUrl.length - 1] !== '/') {
|
|
484
|
+
serverUrl += '/';
|
|
485
|
+
}
|
|
486
|
+
rustClient.constructable.endpoint = new rust.SupplementalEndpoint(serverUrl);
|
|
487
|
+
continue;
|
|
451
488
|
}
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
489
|
+
const clientParam = this.adaptClientParameter(templateArg, rustClient.constructable);
|
|
490
|
+
if (clientParam.kind !== 'clientEndpoint') {
|
|
491
|
+
throw new Error(`unexpected client parameter kind ${clientParam.kind}`);
|
|
492
|
+
}
|
|
493
|
+
(_a = rustClient.constructable.endpoint) === null || _a === void 0 ? void 0 : _a.parameters.push(clientParam);
|
|
494
|
+
ctorParams.push(clientParam);
|
|
455
495
|
}
|
|
456
496
|
break;
|
|
457
497
|
}
|
|
498
|
+
case 'method': {
|
|
499
|
+
const clientParam = this.adaptClientParameter(param, rustClient.constructable);
|
|
500
|
+
rustClient.fields.push(new rust.StructField(clientParam.name, false, clientParam.type));
|
|
501
|
+
ctorParams.push(clientParam);
|
|
502
|
+
break;
|
|
503
|
+
}
|
|
458
504
|
}
|
|
459
505
|
}
|
|
460
506
|
if (authType === AuthTypes.Default || (authType & AuthTypes.NoAuth) === AuthTypes.NoAuth) {
|
|
@@ -491,6 +537,59 @@ export class Adapter {
|
|
|
491
537
|
this.crate.clients.push(rustClient);
|
|
492
538
|
return rustClient;
|
|
493
539
|
}
|
|
540
|
+
/**
|
|
541
|
+
* creates a client constructor for the TokenCredential type.
|
|
542
|
+
* the constructor is named new.
|
|
543
|
+
*
|
|
544
|
+
* @param cred the OAuth2 credential to adapt
|
|
545
|
+
* @returns a client constructor for TokenCredential
|
|
546
|
+
*/
|
|
547
|
+
createTokenCredentialCtor(cred) {
|
|
548
|
+
if (cred.flows.length === 0) {
|
|
549
|
+
throw new Error(`no flows defined for credential type ${cred.type}`);
|
|
550
|
+
}
|
|
551
|
+
const scopes = new Array();
|
|
552
|
+
for (const scope of cred.flows[0].scopes) {
|
|
553
|
+
scopes.push(scope.value);
|
|
554
|
+
}
|
|
555
|
+
const ctorTokenCredential = new rust.Constructor('new');
|
|
556
|
+
ctorTokenCredential.parameters.push(new rust.ClientMethodParameter('credential', new rust.Arc(new rust.TokenCredential(this.crate, scopes)), false));
|
|
557
|
+
return ctorTokenCredential;
|
|
558
|
+
}
|
|
559
|
+
/**
|
|
560
|
+
* converts a tcgc client parameter to a Rust client parameter
|
|
561
|
+
*
|
|
562
|
+
* @param param the tcgc client parameter to convert
|
|
563
|
+
* @param constructable contains client construction info. if the param is optional, it will go in the options type
|
|
564
|
+
* @returns the Rust client parameter
|
|
565
|
+
*/
|
|
566
|
+
adaptClientParameter(param, constructable) {
|
|
567
|
+
let paramType;
|
|
568
|
+
if (param.isApiVersionParam) {
|
|
569
|
+
// we expose the api-version param as a String
|
|
570
|
+
paramType = new rust.StringType();
|
|
571
|
+
}
|
|
572
|
+
else {
|
|
573
|
+
paramType = this.getType(param.type);
|
|
574
|
+
}
|
|
575
|
+
const paramName = snakeCaseName(param.name);
|
|
576
|
+
let optional = false;
|
|
577
|
+
// client-side default value makes the param optional
|
|
578
|
+
if (param.optional || param.clientDefaultValue) {
|
|
579
|
+
optional = true;
|
|
580
|
+
const paramField = new rust.StructField(paramName, true, paramType);
|
|
581
|
+
constructable.options.type.fields.push(paramField);
|
|
582
|
+
if (param.clientDefaultValue) {
|
|
583
|
+
paramField.defaultValue = `String::from("${param.clientDefaultValue}")`;
|
|
584
|
+
}
|
|
585
|
+
}
|
|
586
|
+
switch (param.kind) {
|
|
587
|
+
case 'method':
|
|
588
|
+
return new rust.ClientMethodParameter(paramName, paramType, optional);
|
|
589
|
+
case 'path':
|
|
590
|
+
return new rust.ClientEndpointParameter(paramName, paramType, optional, param.serializedName);
|
|
591
|
+
}
|
|
592
|
+
}
|
|
494
593
|
/**
|
|
495
594
|
* converts a tcgc method to a Rust method for the specified client
|
|
496
595
|
*
|
|
@@ -509,7 +608,16 @@ export class Adapter {
|
|
|
509
608
|
const pub = method.access === 'public';
|
|
510
609
|
const methodOptions = new rust.MethodOptions(methodOptionsStruct);
|
|
511
610
|
const httpMethod = method.operation.verb;
|
|
512
|
-
|
|
611
|
+
// if path is more than just "/" strip off any leading forward slash.
|
|
612
|
+
// this is because Url::join will treat the path as absolute, overwriting
|
|
613
|
+
// any existing path on the endpoint.
|
|
614
|
+
// e.g. if endpoint is https://contoso.com/foo/bar and httpPath is /some/sub/path
|
|
615
|
+
// then calling Url::join will provide result https://contoso.com/some/sub/path
|
|
616
|
+
// which is not what we want.
|
|
617
|
+
let httpPath = method.operation.path;
|
|
618
|
+
if (httpPath.length > 1 && httpPath[0] === '/') {
|
|
619
|
+
httpPath = httpPath.slice(1);
|
|
620
|
+
}
|
|
513
621
|
switch (method.kind) {
|
|
514
622
|
case 'basic':
|
|
515
623
|
rustMethod = new rust.AsyncMethod(methodName, rustClient, pub, methodOptions, httpMethod, httpPath);
|
|
@@ -659,9 +767,19 @@ export class Adapter {
|
|
|
659
767
|
*/
|
|
660
768
|
adaptMethodParameter(param) {
|
|
661
769
|
const paramLoc = param.onClient ? 'client' : 'method';
|
|
770
|
+
/**
|
|
771
|
+
* used to create keys for this.clientMethodParams
|
|
772
|
+
* @param param the param for which to create a key
|
|
773
|
+
* @returns the map's key
|
|
774
|
+
*/
|
|
775
|
+
const getClientParamsKey = function (param) {
|
|
776
|
+
// include the param kind in the key name as a client param can be used
|
|
777
|
+
// in different places across methods (path/query)
|
|
778
|
+
return `${param.name}-${param.kind}`;
|
|
779
|
+
};
|
|
662
780
|
// if this is a client method param, check if we've already adapted it
|
|
663
781
|
if (paramLoc === 'client') {
|
|
664
|
-
const clientMethodParam = this.clientMethodParams.get(param
|
|
782
|
+
const clientMethodParam = this.clientMethodParams.get(getClientParamsKey(param));
|
|
665
783
|
if (clientMethodParam) {
|
|
666
784
|
return clientMethodParam;
|
|
667
785
|
}
|
|
@@ -674,6 +792,9 @@ export class Adapter {
|
|
|
674
792
|
adaptedParam = new rust.BodyParameter(paramName, paramLoc, param.optional, new rust.RequestContent(this.crate, paramType, this.adaptBodyFormat(param.defaultContentType)));
|
|
675
793
|
break;
|
|
676
794
|
}
|
|
795
|
+
case 'cookie':
|
|
796
|
+
// TODO: https://github.com/Azure/typespec-rust/issues/192
|
|
797
|
+
throw new Error('cookie parameters are not supported');
|
|
677
798
|
case 'header':
|
|
678
799
|
if (param.collectionFormat) {
|
|
679
800
|
if (paramType.kind !== 'vector') {
|
|
@@ -726,7 +847,7 @@ export class Adapter {
|
|
|
726
847
|
adaptedParam.docs.summary = param.summary;
|
|
727
848
|
adaptedParam.docs.description = param.doc;
|
|
728
849
|
if (paramLoc === 'client') {
|
|
729
|
-
this.clientMethodParams.set(param
|
|
850
|
+
this.clientMethodParams.set(getClientParamsKey(param), adaptedParam);
|
|
730
851
|
}
|
|
731
852
|
return adaptedParam;
|
|
732
853
|
}
|