@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.
Files changed (87) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +16 -0
  3. package/dist/src/codegen/cargotoml.d.ts +3 -0
  4. package/dist/src/codegen/cargotoml.d.ts.map +1 -0
  5. package/dist/src/codegen/cargotoml.js +22 -0
  6. package/dist/src/codegen/cargotoml.js.map +1 -0
  7. package/dist/src/codegen/clients.d.ts +7 -0
  8. package/dist/src/codegen/clients.d.ts.map +1 -0
  9. package/dist/src/codegen/clients.js +514 -0
  10. package/dist/src/codegen/clients.js.map +1 -0
  11. package/dist/src/codegen/codeGenerator.d.ts +14 -0
  12. package/dist/src/codegen/codeGenerator.d.ts.map +1 -0
  13. package/dist/src/codegen/codeGenerator.js +46 -0
  14. package/dist/src/codegen/codeGenerator.js.map +1 -0
  15. package/dist/src/codegen/context.d.ts +10 -0
  16. package/dist/src/codegen/context.d.ts.map +1 -0
  17. package/dist/src/codegen/context.js +75 -0
  18. package/dist/src/codegen/context.js.map +1 -0
  19. package/dist/src/codegen/enums.d.ts +4 -0
  20. package/dist/src/codegen/enums.d.ts.map +1 -0
  21. package/dist/src/codegen/enums.js +48 -0
  22. package/dist/src/codegen/enums.js.map +1 -0
  23. package/dist/src/codegen/helpers.d.ts +18 -0
  24. package/dist/src/codegen/helpers.d.ts.map +1 -0
  25. package/dist/src/codegen/helpers.js +133 -0
  26. package/dist/src/codegen/helpers.js.map +1 -0
  27. package/dist/src/codegen/lib.d.ts +3 -0
  28. package/dist/src/codegen/lib.d.ts.map +1 -0
  29. package/dist/src/codegen/lib.js +37 -0
  30. package/dist/src/codegen/lib.js.map +1 -0
  31. package/dist/src/codegen/mod.d.ts +3 -0
  32. package/dist/src/codegen/mod.d.ts.map +1 -0
  33. package/dist/src/codegen/mod.js +20 -0
  34. package/dist/src/codegen/mod.js.map +1 -0
  35. package/dist/src/codegen/models.d.ts +4 -0
  36. package/dist/src/codegen/models.d.ts.map +1 -0
  37. package/dist/src/codegen/models.js +45 -0
  38. package/dist/src/codegen/models.js.map +1 -0
  39. package/dist/src/codegen/use.d.ts +11 -0
  40. package/dist/src/codegen/use.d.ts.map +1 -0
  41. package/dist/src/codegen/use.js +105 -0
  42. package/dist/src/codegen/use.js.map +1 -0
  43. package/dist/src/codemodel/client.d.ts +137 -0
  44. package/dist/src/codemodel/client.d.ts.map +1 -0
  45. package/dist/src/codemodel/client.js +146 -0
  46. package/dist/src/codemodel/client.js.map +1 -0
  47. package/dist/src/codemodel/crate.d.ts +24 -0
  48. package/dist/src/codemodel/crate.d.ts.map +1 -0
  49. package/dist/src/codemodel/crate.js +53 -0
  50. package/dist/src/codemodel/crate.js.map +1 -0
  51. package/dist/src/codemodel/index.d.ts +5 -0
  52. package/dist/src/codemodel/index.d.ts.map +1 -0
  53. package/dist/src/codemodel/index.js +9 -0
  54. package/dist/src/codemodel/index.js.map +1 -0
  55. package/dist/src/codemodel/method.d.ts +32 -0
  56. package/dist/src/codemodel/method.d.ts.map +1 -0
  57. package/dist/src/codemodel/method.js +33 -0
  58. package/dist/src/codemodel/method.js.map +1 -0
  59. package/dist/src/codemodel/types.d.ts +224 -0
  60. package/dist/src/codemodel/types.d.ts.map +1 -0
  61. package/dist/src/codemodel/types.js +248 -0
  62. package/dist/src/codemodel/types.js.map +1 -0
  63. package/dist/src/emitter.d.ts +5 -0
  64. package/dist/src/emitter.d.ts.map +1 -0
  65. package/dist/src/emitter.js +45 -0
  66. package/dist/src/emitter.js.map +1 -0
  67. package/dist/src/index.d.ts +3 -0
  68. package/dist/src/index.d.ts.map +1 -0
  69. package/dist/src/index.js +7 -0
  70. package/dist/src/index.js.map +1 -0
  71. package/dist/src/lib.d.ts +13 -0
  72. package/dist/src/lib.d.ts.map +1 -0
  73. package/dist/src/lib.js +24 -0
  74. package/dist/src/lib.js.map +1 -0
  75. package/dist/src/tcgcadapter/adapter.d.ts +25 -0
  76. package/dist/src/tcgcadapter/adapter.d.ts.map +1 -0
  77. package/dist/src/tcgcadapter/adapter.js +617 -0
  78. package/dist/src/tcgcadapter/adapter.js.map +1 -0
  79. package/dist/src/tcgcadapter/helpers.d.ts +4 -0
  80. package/dist/src/tcgcadapter/helpers.d.ts.map +1 -0
  81. package/dist/src/tcgcadapter/helpers.js +45 -0
  82. package/dist/src/tcgcadapter/helpers.js.map +1 -0
  83. package/dist/src/tcgcadapter/naming.d.ts +2 -0
  84. package/dist/src/tcgcadapter/naming.d.ts.map +1 -0
  85. package/dist/src/tcgcadapter/naming.js +27 -0
  86. package/dist/src/tcgcadapter/naming.js.map +1 -0
  87. 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,2 @@
1
+ export declare function getEscapedReservedName(name: string, suffix: 'fn' | 'param' | 'prop'): string;
2
+ //# sourceMappingURL=naming.d.ts.map
@@ -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
+ }