@azure-tools/typespec-rust 0.1.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/LICENSE +21 -0
- package/README.md +16 -0
- package/dist/src/codegen/cargotoml.d.ts +3 -0
- package/dist/src/codegen/cargotoml.d.ts.map +1 -0
- package/dist/src/codegen/cargotoml.js +22 -0
- package/dist/src/codegen/cargotoml.js.map +1 -0
- package/dist/src/codegen/clients.d.ts +7 -0
- package/dist/src/codegen/clients.d.ts.map +1 -0
- package/dist/src/codegen/clients.js +514 -0
- package/dist/src/codegen/clients.js.map +1 -0
- package/dist/src/codegen/codeGenerator.d.ts +14 -0
- package/dist/src/codegen/codeGenerator.d.ts.map +1 -0
- package/dist/src/codegen/codeGenerator.js +46 -0
- package/dist/src/codegen/codeGenerator.js.map +1 -0
- package/dist/src/codegen/context.d.ts +10 -0
- package/dist/src/codegen/context.d.ts.map +1 -0
- package/dist/src/codegen/context.js +75 -0
- package/dist/src/codegen/context.js.map +1 -0
- package/dist/src/codegen/enums.d.ts +4 -0
- package/dist/src/codegen/enums.d.ts.map +1 -0
- package/dist/src/codegen/enums.js +48 -0
- package/dist/src/codegen/enums.js.map +1 -0
- package/dist/src/codegen/helpers.d.ts +18 -0
- package/dist/src/codegen/helpers.d.ts.map +1 -0
- package/dist/src/codegen/helpers.js +133 -0
- package/dist/src/codegen/helpers.js.map +1 -0
- package/dist/src/codegen/lib.d.ts +3 -0
- package/dist/src/codegen/lib.d.ts.map +1 -0
- package/dist/src/codegen/lib.js +37 -0
- package/dist/src/codegen/lib.js.map +1 -0
- package/dist/src/codegen/mod.d.ts +3 -0
- package/dist/src/codegen/mod.d.ts.map +1 -0
- package/dist/src/codegen/mod.js +20 -0
- package/dist/src/codegen/mod.js.map +1 -0
- package/dist/src/codegen/models.d.ts +4 -0
- package/dist/src/codegen/models.d.ts.map +1 -0
- package/dist/src/codegen/models.js +45 -0
- package/dist/src/codegen/models.js.map +1 -0
- package/dist/src/codegen/use.d.ts +11 -0
- package/dist/src/codegen/use.d.ts.map +1 -0
- package/dist/src/codegen/use.js +105 -0
- package/dist/src/codegen/use.js.map +1 -0
- package/dist/src/codemodel/client.d.ts +137 -0
- package/dist/src/codemodel/client.d.ts.map +1 -0
- package/dist/src/codemodel/client.js +146 -0
- package/dist/src/codemodel/client.js.map +1 -0
- package/dist/src/codemodel/crate.d.ts +24 -0
- package/dist/src/codemodel/crate.d.ts.map +1 -0
- package/dist/src/codemodel/crate.js +53 -0
- package/dist/src/codemodel/crate.js.map +1 -0
- package/dist/src/codemodel/index.d.ts +5 -0
- package/dist/src/codemodel/index.d.ts.map +1 -0
- package/dist/src/codemodel/index.js +9 -0
- package/dist/src/codemodel/index.js.map +1 -0
- package/dist/src/codemodel/method.d.ts +32 -0
- package/dist/src/codemodel/method.d.ts.map +1 -0
- package/dist/src/codemodel/method.js +33 -0
- package/dist/src/codemodel/method.js.map +1 -0
- package/dist/src/codemodel/types.d.ts +224 -0
- package/dist/src/codemodel/types.d.ts.map +1 -0
- package/dist/src/codemodel/types.js +248 -0
- package/dist/src/codemodel/types.js.map +1 -0
- package/dist/src/emitter.d.ts +5 -0
- package/dist/src/emitter.d.ts.map +1 -0
- package/dist/src/emitter.js +45 -0
- package/dist/src/emitter.js.map +1 -0
- package/dist/src/index.d.ts +3 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +7 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/lib.d.ts +13 -0
- package/dist/src/lib.d.ts.map +1 -0
- package/dist/src/lib.js +24 -0
- package/dist/src/lib.js.map +1 -0
- package/dist/src/tcgcadapter/adapter.d.ts +25 -0
- package/dist/src/tcgcadapter/adapter.d.ts.map +1 -0
- package/dist/src/tcgcadapter/adapter.js +617 -0
- package/dist/src/tcgcadapter/adapter.js.map +1 -0
- package/dist/src/tcgcadapter/helpers.d.ts +4 -0
- package/dist/src/tcgcadapter/helpers.d.ts.map +1 -0
- package/dist/src/tcgcadapter/helpers.js +45 -0
- package/dist/src/tcgcadapter/helpers.js.map +1 -0
- package/dist/src/tcgcadapter/naming.d.ts +2 -0
- package/dist/src/tcgcadapter/naming.d.ts.map +1 -0
- package/dist/src/tcgcadapter/naming.js +27 -0
- package/dist/src/tcgcadapter/naming.js.map +1 -0
- package/package.json +87 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
import * as codegen from '@azure-tools/codegen';
|
|
6
|
+
// fixes up enum names to follow Rust conventions
|
|
7
|
+
export function fixUpEnumValueName(name) {
|
|
8
|
+
name = codegen.capitalize(name);
|
|
9
|
+
// first replace any '.' chars between numbers with the word 'Dot'
|
|
10
|
+
// any '.' between a letter and a numer will be removed.
|
|
11
|
+
// e.g. V7.6_preview.1 becomes V7Dot6_preview1
|
|
12
|
+
const numDotNumMatch = name.match(/(\d+\.\d+)/);
|
|
13
|
+
if (numDotNumMatch) {
|
|
14
|
+
name = name.replace(numDotNumMatch[0], numDotNumMatch[0].replace('.', 'Dot'));
|
|
15
|
+
}
|
|
16
|
+
const wordDotNumMatch = name.match(/\w+\.\d+/);
|
|
17
|
+
if (wordDotNumMatch) {
|
|
18
|
+
name = name.replace(wordDotNumMatch[0], wordDotNumMatch[0].replace('.', ''));
|
|
19
|
+
}
|
|
20
|
+
// if we have a name like V2022_12_01_preview, we want to
|
|
21
|
+
// turn this into V2022_12_01Preview to make the linter happy
|
|
22
|
+
const parts = name.split('_');
|
|
23
|
+
if (parts.length > 1) {
|
|
24
|
+
name = '';
|
|
25
|
+
for (let i = 0; i < parts.length; ++i) {
|
|
26
|
+
parts[i] = codegen.capitalize(parts[i]);
|
|
27
|
+
name += parts[i];
|
|
28
|
+
if (i + 1 < parts.length && parts[i + 1].match(/^\d/)) {
|
|
29
|
+
name += '_';
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return name;
|
|
34
|
+
}
|
|
35
|
+
// sorts client params so they're in the order, endpoint, [credential], other
|
|
36
|
+
export function sortClientParameters(params) {
|
|
37
|
+
params.sort((a, b) => {
|
|
38
|
+
if (a.name === 'endpoint' || (a.name === 'credential' && b.name !== 'endpoint')) {
|
|
39
|
+
// endpoint always comes first, followed by credential (if applicable)
|
|
40
|
+
return -1;
|
|
41
|
+
}
|
|
42
|
+
return 0;
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/tcgcadapter/helpers.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAGhD,iDAAiD;AACjD,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAEhC,kEAAkE;IAClE,wDAAwD;IACxD,8CAA8C;IAC9C,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAChD,IAAI,cAAc,EAAE;QAClB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;KAC/E;IAED,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC/C,IAAI,eAAe,EAAE;QACnB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;KAC9E;IAED,yDAAyD;IACzD,6DAA6D;IAC7D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;QACpB,IAAI,GAAG,EAAE,CAAC;QACV,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;YACrC,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACxC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;YACjB,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;gBACrD,IAAI,IAAI,GAAG,CAAC;aACb;SACF;KACF;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,oBAAoB,CAAC,MAAmC;IACtE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAuB,EAAE,CAAuB,EAAU,EAAE;QACvE,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE;YAC/E,sEAAsE;YACtE,OAAO,CAAC,CAAC,CAAC;SACX;QACD,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"naming.d.ts","sourceRoot":"","sources":["../../../src/tcgcadapter/naming.ts"],"names":[],"mappings":"AAUA,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAK5F"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
// if name is a reserved word, append the suffix and return the result, else return name
|
|
6
|
+
// the suffix indicates the context in which name appears
|
|
7
|
+
// fn - function name
|
|
8
|
+
// param - param name
|
|
9
|
+
// prop - struct field
|
|
10
|
+
export function getEscapedReservedName(name, suffix) {
|
|
11
|
+
if (reservedWords.has(name)) {
|
|
12
|
+
name = `${name}_${suffix}`;
|
|
13
|
+
}
|
|
14
|
+
return name;
|
|
15
|
+
}
|
|
16
|
+
// https://doc.rust-lang.org/reference/keywords.html
|
|
17
|
+
const reservedWords = new Set([
|
|
18
|
+
// strict keywords
|
|
19
|
+
'as', 'async', 'await', 'break', 'const', 'continue', 'crate', 'dyn', 'else', 'enum', 'extern', 'false', 'fn',
|
|
20
|
+
'for', 'if', 'impl', 'in', 'let', 'loop', 'match', 'mod', 'move', 'mut', 'pub', 'ref', 'return', 'self',
|
|
21
|
+
'Self', 'static', 'struct', 'super', 'trait', 'true', 'type', 'unsafe', 'use', 'where', 'while',
|
|
22
|
+
// reserved keywords
|
|
23
|
+
'abstract', 'become', 'box', 'do', 'final', 'macro', 'override', 'priv', 'try', 'typeof', 'unsized', 'virtual', 'yield',
|
|
24
|
+
// weak keywords
|
|
25
|
+
'macro_rules', 'union', '\'static',
|
|
26
|
+
]);
|
|
27
|
+
//# sourceMappingURL=naming.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"naming.js","sourceRoot":"","sources":["../../../src/tcgcadapter/naming.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F,wFAAwF;AACxF,yDAAyD;AACzD,wBAAwB;AACxB,qBAAqB;AACrB,uBAAuB;AACvB,MAAM,UAAU,sBAAsB,CAAC,IAAY,EAAE,MAA+B;IAClF,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QAC3B,IAAI,GAAG,GAAG,IAAI,IAAI,MAAM,EAAE,CAAC;KAC5B;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,oDAAoD;AACpD,MAAM,aAAa,GAAG,IAAI,GAAG,CAC3B;IACE,kBAAkB;IAClB,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI;IAC7G,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM;IACvG,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO;IAE/F,oBAAoB;IACpB,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO;IAEvH,gBAAgB;IAChB,aAAa,EAAE,OAAO,EAAE,UAAU;CACnC,CACF,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@azure-tools/typespec-rust",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "TypeSpec emitter for Rust SDKs",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/src/index.js",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": "./dist/src/index.js"
|
|
9
|
+
},
|
|
10
|
+
"tspMain": "dist/src/index.js",
|
|
11
|
+
"directories": {
|
|
12
|
+
"doc": "docs"
|
|
13
|
+
},
|
|
14
|
+
"engines": {
|
|
15
|
+
"node": ">=20.0.0"
|
|
16
|
+
},
|
|
17
|
+
"scripts": {
|
|
18
|
+
"cadl-ranch": "node .scripts/cadl-ranch.js",
|
|
19
|
+
"clean": "ver > nul 2>&1 nul && npm run --silent clean-cmd || npm run --silent clean-bash",
|
|
20
|
+
"clean-cmd": "if exist dist rmdir /s /q dist && exit 0 || exit 0 ",
|
|
21
|
+
"clean-bash": "rm nul && rm -rf dist && exit 0 || exit 0",
|
|
22
|
+
"build": "tsc -p .",
|
|
23
|
+
"eslint-fix": "eslint . --fix --ext .ts",
|
|
24
|
+
"eslint": "eslint . --ext .ts",
|
|
25
|
+
"test": "vitest run",
|
|
26
|
+
"test-ci": "vitest run --coverage --reporter=junit --reporter=default --no-file-parallelism",
|
|
27
|
+
"tspcompile": "node .scripts/tspcompile.js",
|
|
28
|
+
"watch": "tsc -p . --watch"
|
|
29
|
+
},
|
|
30
|
+
"files": [
|
|
31
|
+
"dist/src/**",
|
|
32
|
+
"!dist/test/**"
|
|
33
|
+
],
|
|
34
|
+
"repository": {
|
|
35
|
+
"type": "git",
|
|
36
|
+
"url": "git+https://github.com/Azure/typespec-rust.git"
|
|
37
|
+
},
|
|
38
|
+
"keywords": [
|
|
39
|
+
"cadl",
|
|
40
|
+
"rust",
|
|
41
|
+
"rustlang",
|
|
42
|
+
"typespec"
|
|
43
|
+
],
|
|
44
|
+
"author": "Microsoft Corporation",
|
|
45
|
+
"license": "MIT",
|
|
46
|
+
"bugs": {
|
|
47
|
+
"url": "https://github.com/Azure/typespec-rust/issues"
|
|
48
|
+
},
|
|
49
|
+
"homepage": "https://github.com/Azure/typespec-rust#readme",
|
|
50
|
+
"readme": "https://github.com/Azure/typespec-rust/blob/main/readme.md",
|
|
51
|
+
"devDependencies": {
|
|
52
|
+
"@azure-tools/cadl-ranch": "~0.14.6",
|
|
53
|
+
"@azure-tools/cadl-ranch-expect": "~0.15.4",
|
|
54
|
+
"@azure-tools/cadl-ranch-specs": "0.37.4",
|
|
55
|
+
"@azure-tools/typespec-autorest": ">=0.46.0 <1.0.0",
|
|
56
|
+
"@azure-tools/typespec-azure-core": ">=0.46.0 <1.0.0",
|
|
57
|
+
"@azure-tools/typespec-azure-resource-manager": ">=0.46.1 <1.0.0",
|
|
58
|
+
"@azure-tools/typespec-client-generator-core": ">=0.46.2 <1.0.0",
|
|
59
|
+
"@types/js-yaml": "~4.0.9",
|
|
60
|
+
"@types/node": "^20.14.10",
|
|
61
|
+
"@typescript-eslint/eslint-plugin": "~4.1.1",
|
|
62
|
+
"@typescript-eslint/parser": "~4.1.1",
|
|
63
|
+
"@typespec/compiler": ">=0.60.1 <1.0.0",
|
|
64
|
+
"@typespec/http": ">=0.60.0 <1.0.0",
|
|
65
|
+
"@typespec/openapi": ">=0.60.0 <1.0.0",
|
|
66
|
+
"@typespec/rest": ">=0.60.0 <1.0.0",
|
|
67
|
+
"@typespec/versioning": ">=0.60.1 <1.0.0",
|
|
68
|
+
"@typespec/xml": ">=0.60.0 <1.0.0",
|
|
69
|
+
"@vitest/coverage-v8": "^1.6.0",
|
|
70
|
+
"@vitest/ui": "^1.6.0",
|
|
71
|
+
"c8": "^9.1.0",
|
|
72
|
+
"eslint": "~6.6.0",
|
|
73
|
+
"typescript": "~5.1.6"
|
|
74
|
+
},
|
|
75
|
+
"peerDependencies": {
|
|
76
|
+
"@azure-tools/typespec-client-generator-core": ">=0.46.2 <1.0.0",
|
|
77
|
+
"@typespec/compiler": ">=0.60.1 <1.0.0"
|
|
78
|
+
},
|
|
79
|
+
"dependencies": {
|
|
80
|
+
"@azure-tools/codegen": "~2.9.2",
|
|
81
|
+
"@azure-tools/linq": "~3.1.263",
|
|
82
|
+
"js-yaml": "~4.1.0",
|
|
83
|
+
"source-map-support": "0.5.21",
|
|
84
|
+
"vitest": "^1.6.0"
|
|
85
|
+
},
|
|
86
|
+
"packageManager": "pnpm@9.12.1+sha512.e5a7e52a4183a02d5931057f7a0dbff9d5e9ce3161e33fa68ae392125b79282a8a8a470a51dfc8a0ed86221442eb2fb57019b0990ed24fab519bf0e1bc5ccfc4"
|
|
87
|
+
}
|