@azure-tools/typespec-rust 0.11.0 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +38 -32
- 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/enums.d.ts +2 -1
- package/dist/src/codegen/enums.d.ts.map +1 -1
- package/dist/src/codegen/enums.js +4 -1
- 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 +6 -4
- 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 +453 -46
- 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 +15 -15
- 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 +60 -36
- 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
|
}
|
|
@@ -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;
|
|
@@ -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;
|
|
@@ -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 {
|
|
@@ -284,7 +284,7 @@ export class Url extends External {
|
|
|
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;IAoO5B;;;;;;OAMG;IACH,OAAO,CAAC,yBAAyB;IAgBjC;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;IAuC5B;;;;;;;OAOG;IACH,OAAO,CAAC,mBAAmB;IAwB3B;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IAkOnB;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IA2G5B;;;;;;;OAOG;IACH,OAAO,CAAC,0BAA0B;IA2ClC;;;;;OAKG;IACH,OAAO,CAAC,eAAe;CAaxB"}
|
|
@@ -25,6 +25,7 @@ export class Adapter {
|
|
|
25
25
|
additionalDecorators: ['TypeSpec\\.@encodedName', '@clientName'],
|
|
26
26
|
disableUsageAccessPropagationToBase: true,
|
|
27
27
|
});
|
|
28
|
+
context.program.reportDiagnostics(ctx.diagnostics);
|
|
28
29
|
return new Adapter(ctx, context.options);
|
|
29
30
|
}
|
|
30
31
|
constructor(ctx, options) {
|
|
@@ -162,7 +163,7 @@ export class Adapter {
|
|
|
162
163
|
if ((model.usage & tcgc.UsageFlags.Output) === tcgc.UsageFlags.Output) {
|
|
163
164
|
modelFlags |= rust.ModelFlags.Output;
|
|
164
165
|
}
|
|
165
|
-
rustModel = new rust.Model(modelName, model.access === 'internal', modelFlags);
|
|
166
|
+
rustModel = new rust.Model(modelName, model.access === 'internal' ? 'pubCrate' : 'pub', modelFlags);
|
|
166
167
|
rustModel.docs = this.adaptDocs(model.summary, model.doc);
|
|
167
168
|
rustModel.xmlName = getXMLName(model.decorators);
|
|
168
169
|
this.types.set(modelName, rustModel);
|
|
@@ -201,7 +202,7 @@ export class Adapter {
|
|
|
201
202
|
throw new Error(`model property kind ${property.kind} NYI`);
|
|
202
203
|
}
|
|
203
204
|
}
|
|
204
|
-
const structField = this.getModelField(property,
|
|
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,11 +502,11 @@ export class Adapter {
|
|
|
498
502
|
const rustClient = new rust.Client(clientName);
|
|
499
503
|
rustClient.docs = this.adaptDocs(client.summary, client.doc);
|
|
500
504
|
rustClient.parent = parent;
|
|
501
|
-
rustClient.fields.push(new rust.StructField('pipeline',
|
|
505
|
+
rustClient.fields.push(new rust.StructField('pipeline', 'pubCrate', new rust.ExternalType(this.crate, 'azure_core', 'Pipeline')));
|
|
502
506
|
// anything other than public means non-instantiable client
|
|
503
507
|
if (client.clientInitialization.initializedBy & tcgc.InitializedByFlags.Individually) {
|
|
504
|
-
const clientOptionsStruct = new rust.Struct(`${rustClient.name}Options`,
|
|
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', 'ClientOptions'));
|
|
506
510
|
clientOptionsField.defaultValue = 'ClientOptions::default()';
|
|
507
511
|
clientOptionsStruct.fields.push(clientOptionsField);
|
|
508
512
|
rustClient.constructable = new rust.ClientConstruction(new rust.ClientOptions(clientOptionsStruct));
|
|
@@ -594,7 +598,7 @@ export class Adapter {
|
|
|
594
598
|
const adaptedParam = new rust.ClientMethodParameter(param.name, this.getStringSlice(), false, true);
|
|
595
599
|
adaptedParam.docs = this.adaptDocs(param.summary, param.doc);
|
|
596
600
|
ctorParams.push(adaptedParam);
|
|
597
|
-
rustClient.fields.push(new rust.StructField(param.name,
|
|
601
|
+
rustClient.fields.push(new rust.StructField(param.name, 'pubCrate', new rust.Url(this.crate)));
|
|
598
602
|
// if the server's URL is *only* the endpoint parameter then we're done.
|
|
599
603
|
// this is the param.type.kind === 'endpoint' case.
|
|
600
604
|
if (endpointType.serverUrl === `{${templateArg.serializedName}}`) {
|
|
@@ -629,7 +633,7 @@ export class Adapter {
|
|
|
629
633
|
}
|
|
630
634
|
case 'method': {
|
|
631
635
|
const clientParam = this.adaptClientParameter(param, rustClient.constructable);
|
|
632
|
-
rustClient.fields.push(new rust.StructField(clientParam.name,
|
|
636
|
+
rustClient.fields.push(new rust.StructField(clientParam.name, 'pubCrate', clientParam.type));
|
|
633
637
|
ctorParams.push(clientParam);
|
|
634
638
|
break;
|
|
635
639
|
}
|
|
@@ -665,7 +669,7 @@ export class Adapter {
|
|
|
665
669
|
if (rustClient.fields.find((v) => v.name === name)) {
|
|
666
670
|
continue;
|
|
667
671
|
}
|
|
668
|
-
rustClient.fields.push(new rust.StructField(name,
|
|
672
|
+
rustClient.fields.push(new rust.StructField(name, 'pubCrate', this.getType(prop.type)));
|
|
669
673
|
}
|
|
670
674
|
}
|
|
671
675
|
else {
|
|
@@ -715,8 +719,10 @@ export class Adapter {
|
|
|
715
719
|
adaptClientParameter(param, constructable) {
|
|
716
720
|
let paramType;
|
|
717
721
|
if (param.isApiVersionParam) {
|
|
718
|
-
|
|
719
|
-
|
|
722
|
+
if (!param.clientDefaultValue) {
|
|
723
|
+
throw new Error(`API version parameter ${param.name} has no clientDefaultValue`);
|
|
724
|
+
}
|
|
725
|
+
paramType = this.getStringType();
|
|
720
726
|
}
|
|
721
727
|
else {
|
|
722
728
|
paramType = this.getType(param.type);
|
|
@@ -726,7 +732,7 @@ export class Adapter {
|
|
|
726
732
|
// client-side default value makes the param optional
|
|
727
733
|
if (param.optional || param.clientDefaultValue) {
|
|
728
734
|
optional = true;
|
|
729
|
-
const paramField = new rust.StructField(paramName,
|
|
735
|
+
const paramField = new rust.StructField(paramName, 'pub', paramType);
|
|
730
736
|
constructable.options.type.fields.push(paramField);
|
|
731
737
|
if (param.clientDefaultValue) {
|
|
732
738
|
paramField.defaultValue = `String::from("${param.clientDefaultValue}")`;
|
|
@@ -800,15 +806,15 @@ export class Adapter {
|
|
|
800
806
|
}
|
|
801
807
|
const methodName = naming.getEscapedReservedName(snakeCaseName(srcMethodName), 'fn');
|
|
802
808
|
const optionsLifetime = new rust.Lifetime('a');
|
|
803
|
-
const methodOptionsStruct = new rust.Struct(`${rustClient.name}${codegen.pascalCase(srcMethodName)}Options`,
|
|
809
|
+
const methodOptionsStruct = new rust.Struct(`${rustClient.name}${codegen.pascalCase(srcMethodName)}Options`, 'pub');
|
|
804
810
|
methodOptionsStruct.lifetime = optionsLifetime;
|
|
805
811
|
methodOptionsStruct.docs.summary = `Options to be passed to [\`${rustClient.name}::${methodName}()\`](${buildClientDocPath(rustClient)}::${methodName}())`;
|
|
806
812
|
const clientMethodOptions = new rust.ExternalType(this.crate, 'azure_core', 'ClientMethodOptions');
|
|
807
813
|
clientMethodOptions.lifetime = optionsLifetime;
|
|
808
|
-
const methodOptionsField = new rust.StructField('method_options',
|
|
814
|
+
const methodOptionsField = new rust.StructField('method_options', 'pub', clientMethodOptions);
|
|
809
815
|
methodOptionsField.docs.summary = 'Allows customization of the method call.';
|
|
810
816
|
methodOptionsStruct.fields.push(methodOptionsField);
|
|
811
|
-
const pub = method.access === 'public';
|
|
817
|
+
const pub = method.access === 'public' ? 'pub' : 'pubCrate';
|
|
812
818
|
const methodOptions = new rust.MethodOptions(methodOptionsStruct);
|
|
813
819
|
const httpMethod = method.operation.verb;
|
|
814
820
|
// if path is more than just "/" strip off any leading forward slash.
|
|
@@ -817,8 +823,9 @@ export class Adapter {
|
|
|
817
823
|
// e.g. if endpoint is https://contoso.com/foo/bar and httpPath is /some/sub/path
|
|
818
824
|
// then calling Url::join will provide result https://contoso.com/some/sub/path
|
|
819
825
|
// which is not what we want.
|
|
826
|
+
// the only exception is if this is the root before the query string
|
|
820
827
|
let httpPath = method.operation.path;
|
|
821
|
-
if (httpPath.length > 1 && httpPath[0] === '/') {
|
|
828
|
+
if (httpPath.length > 1 && httpPath[0] === '/' && !httpPath.startsWith('/?')) {
|
|
822
829
|
httpPath = httpPath.slice(1);
|
|
823
830
|
}
|
|
824
831
|
let rustMethod;
|
|
@@ -895,7 +902,7 @@ export class Adapter {
|
|
|
895
902
|
else {
|
|
896
903
|
fieldType = new rust.Option(adaptedParam.type);
|
|
897
904
|
}
|
|
898
|
-
const optionsField = new rust.StructField(adaptedParam.name,
|
|
905
|
+
const optionsField = new rust.StructField(adaptedParam.name, 'pub', fieldType);
|
|
899
906
|
optionsField.docs = adaptedParam.docs;
|
|
900
907
|
rustMethod.options.type.fields.push(optionsField);
|
|
901
908
|
}
|
|
@@ -949,7 +956,7 @@ export class Adapter {
|
|
|
949
956
|
responseHeader = new rust.ResponseHeaderHashMap(header.name, header.serializedName);
|
|
950
957
|
}
|
|
951
958
|
else {
|
|
952
|
-
responseHeader = new rust.ResponseHeaderScalar(header.name, header.serializedName, this.getType(header.type));
|
|
959
|
+
responseHeader = new rust.ResponseHeaderScalar(fixETagName(header.name), fixETagName(header.serializedName), this.getType(header.type));
|
|
953
960
|
}
|
|
954
961
|
responseHeader.docs = this.adaptDocs(header.summary, header.doc);
|
|
955
962
|
rustMethod.responseHeaders.push(responseHeader);
|
|
@@ -1046,7 +1053,7 @@ export class Adapter {
|
|
|
1046
1053
|
throw new Error('cookie parameters are not supported');
|
|
1047
1054
|
case 'header':
|
|
1048
1055
|
if (param.collectionFormat) {
|
|
1049
|
-
if (paramType.kind !== '
|
|
1056
|
+
if (paramType.kind !== 'Vec') {
|
|
1050
1057
|
throw new Error(`unexpected kind ${paramType.kind} for HeaderCollectionParameter`);
|
|
1051
1058
|
}
|
|
1052
1059
|
let format;
|
|
@@ -1073,6 +1080,7 @@ export class Adapter {
|
|
|
1073
1080
|
}
|
|
1074
1081
|
else {
|
|
1075
1082
|
adaptedParam = new rust.HeaderParameter(paramName, param.serializedName, paramLoc, param.optional, paramType);
|
|
1083
|
+
adaptedParam.isApiVersion = param.isApiVersionParam;
|
|
1076
1084
|
}
|
|
1077
1085
|
break;
|
|
1078
1086
|
case 'path':
|
|
@@ -1081,7 +1089,7 @@ export class Adapter {
|
|
|
1081
1089
|
case 'query':
|
|
1082
1090
|
if (param.collectionFormat) {
|
|
1083
1091
|
const format = param.collectionFormat === 'simple' ? 'csv' : (param.collectionFormat === 'form' ? 'multi' : param.collectionFormat);
|
|
1084
|
-
if (paramType.kind !== '
|
|
1092
|
+
if (paramType.kind !== 'Vec') {
|
|
1085
1093
|
throw new Error(`unexpected kind ${paramType.kind} for QueryCollectionParameter`);
|
|
1086
1094
|
}
|
|
1087
1095
|
// TODO: hard-coded encoding setting, https://github.com/Azure/typespec-azure/issues/1314
|
|
@@ -1169,6 +1177,20 @@ export class Adapter {
|
|
|
1169
1177
|
}
|
|
1170
1178
|
}
|
|
1171
1179
|
}
|
|
1180
|
+
/**
|
|
1181
|
+
* transforms Etag etc to all lower case.
|
|
1182
|
+
* this is to prevent inadvertently snake-casing
|
|
1183
|
+
* Etag to e_tag.
|
|
1184
|
+
*
|
|
1185
|
+
* if name isn't some variant of Etag the
|
|
1186
|
+
* original value is returned.
|
|
1187
|
+
*
|
|
1188
|
+
* @param name the name to transform
|
|
1189
|
+
* @returns etag or the original value
|
|
1190
|
+
*/
|
|
1191
|
+
function fixETagName(name) {
|
|
1192
|
+
return name.match(/^etag$/i) ? 'etag' : name;
|
|
1193
|
+
}
|
|
1172
1194
|
/**
|
|
1173
1195
|
* snake-cases the provided name
|
|
1174
1196
|
*
|
|
@@ -1176,7 +1198,7 @@ export class Adapter {
|
|
|
1176
1198
|
* @returns name in snake-case format
|
|
1177
1199
|
*/
|
|
1178
1200
|
function snakeCaseName(name) {
|
|
1179
|
-
return codegen.deconstruct(name).join('_');
|
|
1201
|
+
return codegen.deconstruct(fixETagName(name)).join('_');
|
|
1180
1202
|
}
|
|
1181
1203
|
/**
|
|
1182
1204
|
* recursively creates a map key from the specified type.
|
|
@@ -1195,6 +1217,8 @@ function recursiveKeyName(root, obj) {
|
|
|
1195
1217
|
switch (obj.kind) {
|
|
1196
1218
|
case 'array':
|
|
1197
1219
|
return recursiveKeyName(`${root}-array`, obj.valueType);
|
|
1220
|
+
case 'bytes':
|
|
1221
|
+
return `${root}-bytes-${obj.encode ? obj.encode : 'std'}`;
|
|
1198
1222
|
case 'enum':
|
|
1199
1223
|
return `${root}-${obj.name}`;
|
|
1200
1224
|
case 'enumvalue':
|
|
@@ -1261,7 +1285,7 @@ function getXMLKind(decorators, field) {
|
|
|
1261
1285
|
case 'TypeSpec.Xml.@unwrapped': {
|
|
1262
1286
|
const fieldType = helpers.unwrapOption(field.type);
|
|
1263
1287
|
switch (fieldType.kind) {
|
|
1264
|
-
case '
|
|
1288
|
+
case 'Vec':
|
|
1265
1289
|
return 'unwrappedList';
|
|
1266
1290
|
case 'String':
|
|
1267
1291
|
// an unwrapped string means it's text
|