@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.
- package/dist/src/codegen/clients.d.ts +8 -13
- package/dist/src/codegen/clients.d.ts.map +1 -1
- package/dist/src/codegen/clients.js +45 -39
- package/dist/src/codegen/clients.js.map +1 -1
- package/dist/src/codegen/codeGenerator.d.ts +1 -2
- package/dist/src/codegen/codeGenerator.d.ts.map +1 -1
- package/dist/src/codegen/codeGenerator.js +28 -27
- package/dist/src/codegen/codeGenerator.js.map +1 -1
- package/dist/src/codegen/context.d.ts.map +1 -1
- package/dist/src/codegen/context.js +5 -4
- package/dist/src/codegen/context.js.map +1 -1
- package/dist/src/codegen/enums.d.ts +2 -1
- package/dist/src/codegen/enums.d.ts.map +1 -1
- package/dist/src/codegen/enums.js +6 -3
- package/dist/src/codegen/enums.js.map +1 -1
- package/dist/src/codegen/headerTraits.d.ts +2 -2
- package/dist/src/codegen/headerTraits.d.ts.map +1 -1
- package/dist/src/codegen/headerTraits.js +12 -9
- package/dist/src/codegen/headerTraits.js.map +1 -1
- package/dist/src/codegen/helpers.d.ts +11 -4
- package/dist/src/codegen/helpers.d.ts.map +1 -1
- package/dist/src/codegen/helpers.js +13 -8
- package/dist/src/codegen/helpers.js.map +1 -1
- package/dist/src/codegen/lib.d.ts +1 -4
- package/dist/src/codegen/lib.d.ts.map +1 -1
- package/dist/src/codegen/lib.js +4 -99
- package/dist/src/codegen/lib.js.map +1 -1
- package/dist/src/codegen/mod.d.ts +10 -4
- package/dist/src/codegen/mod.d.ts.map +1 -1
- package/dist/src/codegen/mod.js +36 -19
- package/dist/src/codegen/mod.js.map +1 -1
- package/dist/src/codegen/models.d.ts +5 -4
- package/dist/src/codegen/models.d.ts.map +1 -1
- package/dist/src/codegen/models.js +455 -48
- package/dist/src/codegen/models.js.map +1 -1
- package/dist/src/codegen/use.d.ts +7 -6
- package/dist/src/codegen/use.d.ts.map +1 -1
- package/dist/src/codegen/use.js +31 -16
- package/dist/src/codegen/use.js.map +1 -1
- package/dist/src/codemodel/client.d.ts +8 -3
- package/dist/src/codemodel/client.d.ts.map +1 -1
- package/dist/src/codemodel/client.js +9 -8
- package/dist/src/codemodel/client.js.map +1 -1
- package/dist/src/codemodel/method.d.ts +3 -3
- package/dist/src/codemodel/method.d.ts.map +1 -1
- package/dist/src/codemodel/method.js +2 -2
- package/dist/src/codemodel/method.js.map +1 -1
- package/dist/src/codemodel/types.d.ts +13 -11
- package/dist/src/codemodel/types.d.ts.map +1 -1
- package/dist/src/codemodel/types.js +20 -20
- package/dist/src/codemodel/types.js.map +1 -1
- package/dist/src/emitter.d.ts.map +1 -1
- package/dist/src/emitter.js +12 -6
- package/dist/src/emitter.js.map +1 -1
- package/dist/src/lib.d.ts +1 -0
- package/dist/src/lib.d.ts.map +1 -1
- package/dist/src/lib.js +2 -1
- package/dist/src/lib.js.map +1 -1
- package/dist/src/tcgcadapter/adapter.d.ts +3 -1
- package/dist/src/tcgcadapter/adapter.d.ts.map +1 -1
- package/dist/src/tcgcadapter/adapter.js +64 -50
- package/dist/src/tcgcadapter/adapter.js.map +1 -1
- package/package.json +23 -23
|
@@ -27,17 +27,17 @@ export class StdType {
|
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
29
|
class StructBase {
|
|
30
|
-
constructor(kind, name,
|
|
30
|
+
constructor(kind, name, visibility) {
|
|
31
31
|
this.kind = kind;
|
|
32
32
|
this.name = name;
|
|
33
|
-
this.
|
|
33
|
+
this.visibility = visibility;
|
|
34
34
|
this.docs = {};
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
37
|
class StructFieldBase {
|
|
38
|
-
constructor(name,
|
|
38
|
+
constructor(name, visibility, type) {
|
|
39
39
|
this.name = name;
|
|
40
|
-
this.
|
|
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,
|
|
137
|
-
super('model', name,
|
|
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,
|
|
144
|
-
super(name,
|
|
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 '
|
|
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 '
|
|
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,
|
|
255
|
-
super('struct', name,
|
|
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,
|
|
261
|
-
super(name,
|
|
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 = '
|
|
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":"AAAA;;;+FAG+F;AAE/F,OAAO,EAAS,eAAe,EAAE,MAAM,YAAY,CAAC;AA2KpD,2DAA2D;AAC3D,MAAM,CAAN,IAAY,UAQX;AARD,WAAY,UAAU;IACpB,yDAAe,CAAA;IAEf,yCAAyC;IACzC,6CAAS,CAAA;IAET,4CAA4C;IAC5C,+CAAU,CAAA;AACZ,CAAC,EARW,UAAU,KAAV,UAAU,QAQrB;AA4KD,MAAM,OAAO,QAAQ;IACnB,YAAY,KAAY,EAAE,SAAiB,EAAE,QAAgB,EAAE,SAAkB;QAC/E,KAAK,CAAC,aAAa,CAAC,IAAI,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CACF;AAWD,MAAM,OAAO,OAAO;IAClB,YAAY,IAAY,EAAE,GAAW;QACnC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;CACF;
|
|
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,
|
|
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"}
|
package/dist/src/emitter.js
CHANGED
|
@@ -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
|
|
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) &&
|
|
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
|
-
|
|
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);
|
package/dist/src/emitter.js.map
CHANGED
|
@@ -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,
|
|
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;
|
package/dist/src/lib.d.ts.map
CHANGED
|
@@ -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;
|
|
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',
|
package/dist/src/lib.js.map
CHANGED
|
@@ -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;
|
|
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
|
|
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;
|
|
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,
|
|
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
|
|
214
|
+
* @param modelVisibility the visibility of the model that contains the property
|
|
214
215
|
* @returns a Rust model field
|
|
215
216
|
*/
|
|
216
|
-
getModelField(property,
|
|
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 ((
|
|
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,
|
|
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',
|
|
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`,
|
|
505
|
-
const clientOptionsField = new rust.StructField('client_options',
|
|
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
|
-
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
-
|
|
719
|
-
|
|
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,
|
|
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`,
|
|
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}()\`](
|
|
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',
|
|
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,
|
|
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}()\`](
|
|
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 !== '
|
|
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 !== '
|
|
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 '
|
|
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
|