@azure-tools/rlc-common 1.0.0-beta.1

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 (209) hide show
  1. package/.rush/temp/package-deps_build.json +45 -0
  2. package/.rush/temp/shrinkwrap-deps.json +72 -0
  3. package/CHANGELOG.md +3 -0
  4. package/dist/buildClient.js +198 -0
  5. package/dist/buildClient.js.map +1 -0
  6. package/dist/buildClientDefinitions.js +160 -0
  7. package/dist/buildClientDefinitions.js.map +1 -0
  8. package/dist/buildIndexFile.js +150 -0
  9. package/dist/buildIndexFile.js.map +1 -0
  10. package/dist/buildIsUnexpectedHelper.js +219 -0
  11. package/dist/buildIsUnexpectedHelper.js.map +1 -0
  12. package/dist/buildMethodShortcuts.js +50 -0
  13. package/dist/buildMethodShortcuts.js.map +1 -0
  14. package/dist/buildObjectTypes.js +250 -0
  15. package/dist/buildObjectTypes.js.map +1 -0
  16. package/dist/buildPaginateHelper.js +30 -0
  17. package/dist/buildPaginateHelper.js.map +1 -0
  18. package/dist/buildParameterTypes.js +287 -0
  19. package/dist/buildParameterTypes.js.map +1 -0
  20. package/dist/buildPollingHelper.js +21 -0
  21. package/dist/buildPollingHelper.js.map +1 -0
  22. package/dist/buildResponseTypes.js +122 -0
  23. package/dist/buildResponseTypes.js.map +1 -0
  24. package/dist/buildSchemaType.js +44 -0
  25. package/dist/buildSchemaType.js.map +1 -0
  26. package/dist/buildTopLevelIndexFile.js +45 -0
  27. package/dist/buildTopLevelIndexFile.js.map +1 -0
  28. package/dist/helpers/nameConstructors.js +41 -0
  29. package/dist/helpers/nameConstructors.js.map +1 -0
  30. package/dist/helpers/nameUtils.js +196 -0
  31. package/dist/helpers/nameUtils.js.map +1 -0
  32. package/dist/helpers/operationHelpers.js +83 -0
  33. package/dist/helpers/operationHelpers.js.map +1 -0
  34. package/dist/helpers/schemaHelpers.js +27 -0
  35. package/dist/helpers/schemaHelpers.js.map +1 -0
  36. package/dist/helpers/shortcutMethods.js +46 -0
  37. package/dist/helpers/shortcutMethods.js.map +1 -0
  38. package/dist/index.js +44 -0
  39. package/dist/index.js.map +1 -0
  40. package/dist/interfaces.js +18 -0
  41. package/dist/interfaces.js.map +1 -0
  42. package/dist/metadata/buildApiExtractorConfig.js +56 -0
  43. package/dist/metadata/buildApiExtractorConfig.js.map +1 -0
  44. package/dist/metadata/buildESLintConfig.js +33 -0
  45. package/dist/metadata/buildESLintConfig.js.map +1 -0
  46. package/dist/metadata/buildLicenseFile.js +41 -0
  47. package/dist/metadata/buildLicenseFile.js.map +1 -0
  48. package/dist/metadata/buildPackageFile.js +232 -0
  49. package/dist/metadata/buildPackageFile.js.map +1 -0
  50. package/dist/metadata/buildReadmeFile.js +170 -0
  51. package/dist/metadata/buildReadmeFile.js.map +1 -0
  52. package/dist/metadata/buildRollupConfig.js +144 -0
  53. package/dist/metadata/buildRollupConfig.js.map +1 -0
  54. package/dist/metadata/buildTsConfig.js +72 -0
  55. package/dist/metadata/buildTsConfig.js.map +1 -0
  56. package/dist/package.json +1 -0
  57. package/dist/static/paginateContent.js +214 -0
  58. package/dist/static/paginateContent.js.map +1 -0
  59. package/dist/static/pollingContent.js +78 -0
  60. package/dist/static/pollingContent.js.map +1 -0
  61. package/dist/test/buildEnvFile.js +31 -0
  62. package/dist/test/buildEnvFile.js.map +1 -0
  63. package/dist/test/buildKarmaConfig.js +19 -0
  64. package/dist/test/buildKarmaConfig.js.map +1 -0
  65. package/dist/test/buildRecordedClient.js +22 -0
  66. package/dist/test/buildRecordedClient.js.map +1 -0
  67. package/dist/test/buildSampleTest.js +19 -0
  68. package/dist/test/buildSampleTest.js.map +1 -0
  69. package/dist/test/template.js +192 -0
  70. package/dist/test/template.js.map +1 -0
  71. package/dist-esm/buildClient.js +191 -0
  72. package/dist-esm/buildClient.js.map +1 -0
  73. package/dist-esm/buildClientDefinitions.js +155 -0
  74. package/dist-esm/buildClientDefinitions.js.map +1 -0
  75. package/dist-esm/buildIndexFile.js +145 -0
  76. package/dist-esm/buildIndexFile.js.map +1 -0
  77. package/dist-esm/buildIsUnexpectedHelper.js +215 -0
  78. package/dist-esm/buildIsUnexpectedHelper.js.map +1 -0
  79. package/dist-esm/buildMethodShortcuts.js +46 -0
  80. package/dist-esm/buildMethodShortcuts.js.map +1 -0
  81. package/dist-esm/buildObjectTypes.js +249 -0
  82. package/dist-esm/buildObjectTypes.js.map +1 -0
  83. package/dist-esm/buildPaginateHelper.js +26 -0
  84. package/dist-esm/buildPaginateHelper.js.map +1 -0
  85. package/dist-esm/buildParameterTypes.js +288 -0
  86. package/dist-esm/buildParameterTypes.js.map +1 -0
  87. package/dist-esm/buildPollingHelper.js +17 -0
  88. package/dist-esm/buildPollingHelper.js.map +1 -0
  89. package/dist-esm/buildResponseTypes.js +127 -0
  90. package/dist-esm/buildResponseTypes.js.map +1 -0
  91. package/dist-esm/buildSchemaType.js +39 -0
  92. package/dist-esm/buildSchemaType.js.map +1 -0
  93. package/dist-esm/buildTopLevelIndexFile.js +41 -0
  94. package/dist-esm/buildTopLevelIndexFile.js.map +1 -0
  95. package/dist-esm/helpers/nameConstructors.js +34 -0
  96. package/dist-esm/helpers/nameConstructors.js.map +1 -0
  97. package/dist-esm/helpers/nameUtils.js +187 -0
  98. package/dist-esm/helpers/nameUtils.js.map +1 -0
  99. package/dist-esm/helpers/operationHelpers.js +72 -0
  100. package/dist-esm/helpers/operationHelpers.js.map +1 -0
  101. package/dist-esm/helpers/schemaHelpers.js +21 -0
  102. package/dist-esm/helpers/schemaHelpers.js.map +1 -0
  103. package/dist-esm/helpers/shortcutMethods.js +42 -0
  104. package/dist-esm/helpers/shortcutMethods.js.map +1 -0
  105. package/dist-esm/index.js +28 -0
  106. package/dist-esm/index.js.map +1 -0
  107. package/dist-esm/interfaces.js +15 -0
  108. package/dist-esm/interfaces.js.map +1 -0
  109. package/dist-esm/metadata/buildApiExtractorConfig.js +51 -0
  110. package/dist-esm/metadata/buildApiExtractorConfig.js.map +1 -0
  111. package/dist-esm/metadata/buildESLintConfig.js +28 -0
  112. package/dist-esm/metadata/buildESLintConfig.js.map +1 -0
  113. package/dist-esm/metadata/buildLicenseFile.js +36 -0
  114. package/dist-esm/metadata/buildLicenseFile.js.map +1 -0
  115. package/dist-esm/metadata/buildPackageFile.js +234 -0
  116. package/dist-esm/metadata/buildPackageFile.js.map +1 -0
  117. package/dist-esm/metadata/buildReadmeFile.js +167 -0
  118. package/dist-esm/metadata/buildReadmeFile.js.map +1 -0
  119. package/dist-esm/metadata/buildRollupConfig.js +139 -0
  120. package/dist-esm/metadata/buildRollupConfig.js.map +1 -0
  121. package/dist-esm/metadata/buildTsConfig.js +67 -0
  122. package/dist-esm/metadata/buildTsConfig.js.map +1 -0
  123. package/dist-esm/package.json +1 -0
  124. package/dist-esm/static/paginateContent.js +211 -0
  125. package/dist-esm/static/paginateContent.js.map +1 -0
  126. package/dist-esm/static/pollingContent.js +75 -0
  127. package/dist-esm/static/pollingContent.js.map +1 -0
  128. package/dist-esm/test/buildEnvFile.js +24 -0
  129. package/dist-esm/test/buildEnvFile.js.map +1 -0
  130. package/dist-esm/test/buildKarmaConfig.js +14 -0
  131. package/dist-esm/test/buildKarmaConfig.js.map +1 -0
  132. package/dist-esm/test/buildRecordedClient.js +17 -0
  133. package/dist-esm/test/buildRecordedClient.js.map +1 -0
  134. package/dist-esm/test/buildSampleTest.js +14 -0
  135. package/dist-esm/test/buildSampleTest.js.map +1 -0
  136. package/dist-esm/test/template.js +189 -0
  137. package/dist-esm/test/template.js.map +1 -0
  138. package/package.json +40 -0
  139. package/publishPackage.js +11 -0
  140. package/rlc-common.build.log +2 -0
  141. package/src/buildClient.ts +251 -0
  142. package/src/buildClientDefinitions.ts +231 -0
  143. package/src/buildIndexFile.ts +172 -0
  144. package/src/buildIsUnexpectedHelper.ts +240 -0
  145. package/src/buildMethodShortcuts.ts +75 -0
  146. package/src/buildObjectTypes.ts +393 -0
  147. package/src/buildPaginateHelper.ts +33 -0
  148. package/src/buildParameterTypes.ts +435 -0
  149. package/src/buildPollingHelper.ts +18 -0
  150. package/src/buildResponseTypes.ts +169 -0
  151. package/src/buildSchemaType.ts +56 -0
  152. package/src/buildTopLevelIndexFile.ts +46 -0
  153. package/src/helpers/nameConstructors.ts +93 -0
  154. package/src/helpers/nameUtils.ts +227 -0
  155. package/src/helpers/operationHelpers.ts +103 -0
  156. package/src/helpers/schemaHelpers.ts +25 -0
  157. package/src/helpers/shortcutMethods.ts +60 -0
  158. package/src/index.ts +28 -0
  159. package/src/interfaces.ts +212 -0
  160. package/src/metadata/buildApiExtractorConfig.ts +59 -0
  161. package/src/metadata/buildESLintConfig.ts +34 -0
  162. package/src/metadata/buildLicenseFile.ts +39 -0
  163. package/src/metadata/buildPackageFile.ts +271 -0
  164. package/src/metadata/buildReadmeFile.ts +231 -0
  165. package/src/metadata/buildRollupConfig.ts +147 -0
  166. package/src/metadata/buildTsConfig.ts +79 -0
  167. package/src/static/paginateContent.ts +210 -0
  168. package/src/static/pollingContent.ts +74 -0
  169. package/src/test/buildEnvFile.ts +26 -0
  170. package/src/test/buildKarmaConfig.ts +15 -0
  171. package/src/test/buildRecordedClient.ts +18 -0
  172. package/src/test/buildSampleTest.ts +15 -0
  173. package/src/test/template.ts +192 -0
  174. package/tsconfig-cjs.json +9 -0
  175. package/tsconfig-common.json +13 -0
  176. package/tsconfig.json +13 -0
  177. package/types/buildClient.d.ts +2 -0
  178. package/types/buildClientDefinitions.d.ts +5 -0
  179. package/types/buildIndexFile.d.ts +5 -0
  180. package/types/buildIsUnexpectedHelper.d.ts +5 -0
  181. package/types/buildMethodShortcuts.d.ts +4 -0
  182. package/types/buildObjectTypes.d.ts +14 -0
  183. package/types/buildPaginateHelper.d.ts +5 -0
  184. package/types/buildParameterTypes.d.ts +5 -0
  185. package/types/buildPollingHelper.d.ts +5 -0
  186. package/types/buildResponseTypes.d.ts +5 -0
  187. package/types/buildSchemaType.d.ts +19 -0
  188. package/types/buildTopLevelIndexFile.d.ts +5 -0
  189. package/types/helpers/nameConstructors.d.ts +28 -0
  190. package/types/helpers/nameUtils.d.ts +25 -0
  191. package/types/helpers/operationHelpers.d.ts +9 -0
  192. package/types/helpers/schemaHelpers.d.ts +4 -0
  193. package/types/helpers/shortcutMethods.d.ts +3 -0
  194. package/types/index.d.ts +25 -0
  195. package/types/interfaces.d.ts +186 -0
  196. package/types/metadata/buildApiExtractorConfig.d.ts +5 -0
  197. package/types/metadata/buildESLintConfig.d.ts +5 -0
  198. package/types/metadata/buildLicenseFile.d.ts +5 -0
  199. package/types/metadata/buildPackageFile.d.ts +5 -0
  200. package/types/metadata/buildReadmeFile.d.ts +5 -0
  201. package/types/metadata/buildRollupConfig.d.ts +5 -0
  202. package/types/metadata/buildTsConfig.d.ts +5 -0
  203. package/types/static/paginateContent.d.ts +1 -0
  204. package/types/static/pollingContent.d.ts +1 -0
  205. package/types/test/buildEnvFile.d.ts +9 -0
  206. package/types/test/buildKarmaConfig.d.ts +5 -0
  207. package/types/test/buildRecordedClient.d.ts +5 -0
  208. package/types/test/buildSampleTest.d.ts +5 -0
  209. package/types/test/template.d.ts +5 -0
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+ // Copyright (c) Microsoft Corporation.
3
+ // Licensed under the MIT License.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.buildIndexFile = void 0;
6
+ const ts_morph_1 = require("ts-morph");
7
+ const nameUtils_js_1 = require("./helpers/nameUtils.js");
8
+ const operationHelpers_js_1 = require("./helpers/operationHelpers.js");
9
+ const path = require("path");
10
+ function buildIndexFile(model) {
11
+ var _a, _b;
12
+ const multiClient = Boolean((_a = model.options) === null || _a === void 0 ? void 0 : _a.multiClient), batch = (_b = model.options) === null || _b === void 0 ? void 0 : _b.batch;
13
+ const project = new ts_morph_1.Project();
14
+ const { srcPath } = model;
15
+ const filePath = path.join(srcPath, `index.ts`);
16
+ const indexFile = project.createSourceFile(filePath, undefined, {
17
+ overwrite: true
18
+ });
19
+ if (!multiClient || !batch || (batch === null || batch === void 0 ? void 0 : batch.length) === 1) {
20
+ // if we are generate single client package for RLC
21
+ generateRLCIndex(indexFile, model);
22
+ }
23
+ else {
24
+ generateRLCIndexForMultiClient(indexFile, model);
25
+ }
26
+ return {
27
+ path: filePath,
28
+ content: indexFile.getFullText()
29
+ };
30
+ }
31
+ exports.buildIndexFile = buildIndexFile;
32
+ // to generate a index.ts for each single module inside the multi client RLC package
33
+ function generateRLCIndexForMultiClient(file, model) {
34
+ const clientName = model.libraryName;
35
+ const createClientFuncName = `createClient`;
36
+ const moduleName = (0, nameUtils_js_1.normalizeName)(clientName, nameUtils_js_1.NameType.File);
37
+ file.addImportDeclaration({
38
+ namespaceImport: "Parameters",
39
+ moduleSpecifier: "./parameters"
40
+ });
41
+ file.addImportDeclaration({
42
+ namespaceImport: "Responses",
43
+ moduleSpecifier: "./responses"
44
+ });
45
+ file.addImportDeclaration({
46
+ namespaceImport: "Client",
47
+ moduleSpecifier: "./clientDefinitions"
48
+ });
49
+ const exports = ["Parameters", "Responses", "Client"];
50
+ if ((0, operationHelpers_js_1.hasInputModels)(model)) {
51
+ file.addImportDeclaration({
52
+ namespaceImport: "Models",
53
+ moduleSpecifier: "./models"
54
+ });
55
+ exports.push("Models");
56
+ }
57
+ if ((0, operationHelpers_js_1.hasOutputModels)(model)) {
58
+ file.addImportDeclaration({
59
+ namespaceImport: "OutputModels",
60
+ moduleSpecifier: "./outputModels"
61
+ });
62
+ exports.push("OutputModels");
63
+ }
64
+ if ((0, operationHelpers_js_1.hasPagingOperations)(model)) {
65
+ file.addImportDeclaration({
66
+ namespaceImport: "PaginateHelper",
67
+ moduleSpecifier: "./paginateHelper"
68
+ });
69
+ exports.push("PaginateHelper");
70
+ }
71
+ if ((0, operationHelpers_js_1.hasPollingOperations)(model)) {
72
+ file.addImportDeclaration({
73
+ namespaceImport: "PollingHelper",
74
+ moduleSpecifier: "./pollingHelper"
75
+ });
76
+ exports.push("PollingHelper");
77
+ }
78
+ file.addExportDeclarations([
79
+ {
80
+ moduleSpecifier: `./${moduleName}`,
81
+ namedExports: [`${createClientFuncName}`]
82
+ },
83
+ {
84
+ namedExports: [...exports]
85
+ }
86
+ ]);
87
+ }
88
+ function generateRLCIndex(file, model) {
89
+ const clientName = model.libraryName;
90
+ const createClientFuncName = `${clientName}`;
91
+ const moduleName = (0, nameUtils_js_1.normalizeName)(clientName, nameUtils_js_1.NameType.File);
92
+ file.addImportDeclaration({
93
+ moduleSpecifier: `./${moduleName}`,
94
+ defaultImport: createClientFuncName
95
+ });
96
+ file.addExportDeclarations([
97
+ {
98
+ moduleSpecifier: `./${moduleName}`
99
+ },
100
+ {
101
+ moduleSpecifier: "./parameters"
102
+ },
103
+ {
104
+ moduleSpecifier: "./responses"
105
+ },
106
+ {
107
+ moduleSpecifier: "./clientDefinitions"
108
+ }
109
+ ]);
110
+ if ((0, operationHelpers_js_1.hasUnexpectedHelper)(model)) {
111
+ file.addExportDeclarations([
112
+ {
113
+ moduleSpecifier: "./isUnexpected"
114
+ }
115
+ ]);
116
+ }
117
+ if ((0, operationHelpers_js_1.hasInputModels)(model)) {
118
+ file.addExportDeclarations([
119
+ {
120
+ moduleSpecifier: "./models"
121
+ }
122
+ ]);
123
+ }
124
+ if ((0, operationHelpers_js_1.hasOutputModels)(model)) {
125
+ file.addExportDeclarations([
126
+ {
127
+ moduleSpecifier: "./outputModels"
128
+ }
129
+ ]);
130
+ }
131
+ if ((0, operationHelpers_js_1.hasPagingOperations)(model)) {
132
+ file.addExportDeclarations([
133
+ {
134
+ moduleSpecifier: "./paginateHelper"
135
+ }
136
+ ]);
137
+ }
138
+ if ((0, operationHelpers_js_1.hasPollingOperations)(model)) {
139
+ file.addExportDeclarations([
140
+ {
141
+ moduleSpecifier: "./pollingHelper"
142
+ }
143
+ ]);
144
+ }
145
+ file.addExportAssignment({
146
+ expression: createClientFuncName,
147
+ isExportEquals: false
148
+ });
149
+ }
150
+ //# sourceMappingURL=buildIndexFile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildIndexFile.js","sourceRoot":"","sources":["../src/buildIndexFile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,219 @@
1
+ "use strict";
2
+ // Copyright (c) Microsoft Corporation.
3
+ // Licensed under the MIT License.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.buildIsUnexpectedHelper = void 0;
6
+ const path = require("path");
7
+ const ts_morph_1 = require("ts-morph");
8
+ const operationHelpers_js_1 = require("./helpers/operationHelpers.js");
9
+ function buildIsUnexpectedHelper(model) {
10
+ var _a, _b, _c;
11
+ if (!(0, operationHelpers_js_1.hasUnexpectedHelper)(model)) {
12
+ return;
13
+ }
14
+ const project = new ts_morph_1.Project();
15
+ const srcPath = model.srcPath;
16
+ const filePath = path.join(srcPath, `isUnexpected.ts`);
17
+ const isErrorHelper = project.createSourceFile(filePath, undefined, {
18
+ overwrite: true
19
+ });
20
+ let map = {};
21
+ let allResponseTypes = new Set();
22
+ let allErrorTypes = new Set();
23
+ let overloads = [];
24
+ const pathDictionary = model.paths;
25
+ for (const [path, details] of Object.entries(pathDictionary)) {
26
+ for (const [methodName, methodDetails] of Object.entries(details.methods)) {
27
+ const originalMethod = methodName.toUpperCase();
28
+ const operation = `${originalMethod} ${path}`;
29
+ const success = methodDetails[0].successStatus;
30
+ map = Object.assign(Object.assign({}, map), { [operation]: success });
31
+ // LROs may call the same path but with GET
32
+ // to get the operation status.
33
+ if (((_a = methodDetails[0].annotations) === null || _a === void 0 ? void 0 : _a.isLongRunning) &&
34
+ originalMethod !== "GET") {
35
+ const operation = `GET ${path}`;
36
+ const success = (_c = (pathDictionary[path].methods["get"] &&
37
+ ((_b = pathDictionary[path].methods["get"][0]) === null || _b === void 0 ? void 0 : _b.successStatus))) !== null && _c !== void 0 ? _c : methodDetails[0].successStatus;
38
+ map = Object.assign(Object.assign({}, map), { [operation]: success });
39
+ }
40
+ const successTypes = methodDetails[0].responseTypes.success;
41
+ const errorTypes = methodDetails[0].responseTypes.error;
42
+ if (!successTypes.length || !errorTypes.length || !errorTypes[0]) {
43
+ continue;
44
+ }
45
+ successTypes.forEach((t) => allResponseTypes.add(t));
46
+ errorTypes.forEach((t) => {
47
+ allResponseTypes.add(t);
48
+ allErrorTypes.add(t);
49
+ });
50
+ overloads.push({
51
+ isExported: true,
52
+ parameters: [
53
+ {
54
+ name: "response",
55
+ type: [...successTypes, ...errorTypes].join(" | ")
56
+ }
57
+ ],
58
+ returnType: `response is ${errorTypes[0]}`
59
+ });
60
+ }
61
+ }
62
+ isErrorHelper.addImportDeclaration({
63
+ namedImports: [...allResponseTypes],
64
+ moduleSpecifier: "./responses"
65
+ });
66
+ isErrorHelper.addVariableStatement({
67
+ declarations: [
68
+ {
69
+ name: "responseMap",
70
+ initializer: JSON.stringify(map),
71
+ type: "Record<string, string[]>"
72
+ }
73
+ ],
74
+ declarationKind: ts_morph_1.VariableDeclarationKind.Const
75
+ });
76
+ if (allErrorTypes.size) {
77
+ const hasTemplate = hasParametrizedPath(pathDictionary);
78
+ isErrorHelper.addFunction({
79
+ overloads,
80
+ isExported: true,
81
+ name: "isUnexpected",
82
+ parameters: [
83
+ {
84
+ name: "response",
85
+ type: [...allResponseTypes].join(" | ")
86
+ }
87
+ ],
88
+ returnType: `response is ${[...allErrorTypes].join(" | ")}`,
89
+ statements: [
90
+ `
91
+ const lroOriginal = response.headers["x-ms-original-url"];
92
+ const url = new URL(lroOriginal ?? response.request.url);
93
+ const method = response.request.method;
94
+ ${hasTemplate ? "let" : "const"} pathDetails = responseMap[\`\${method} \${url.pathname}\`];
95
+ if (!pathDetails) {`,
96
+ hasTemplate
97
+ ? "pathDetails = geParametrizedPathSuccess(method, url.pathname);"
98
+ : `return true;`,
99
+ ` }
100
+ return !pathDetails.includes(response.status);
101
+ `
102
+ ]
103
+ });
104
+ if (hasTemplate) {
105
+ isErrorHelper.addFunction({
106
+ isExported: false,
107
+ name: "geParametrizedPathSuccess",
108
+ parameters: [
109
+ {
110
+ name: "method",
111
+ type: "string"
112
+ },
113
+ {
114
+ name: "path",
115
+ type: "string"
116
+ }
117
+ ],
118
+ returnType: `string[]`,
119
+ statements: [
120
+ `
121
+ const pathParts = path.split("/");
122
+
123
+ // Iterate the responseMap to find a match
124
+ for (const [key, value] of Object.entries(responseMap)) {
125
+ // Extracting the path from the map key which is in format
126
+ // GET /path/foo
127
+ if (!key.startsWith(method)) {
128
+ continue;
129
+ }
130
+ const candidatePath = getPathFromMapKey(key);
131
+ // Get each part of the url path
132
+ const candidateParts = candidatePath.split("/");
133
+
134
+ // If the candidate and actual paths don't match in size
135
+ // we move on to the next candidate path
136
+ if (
137
+ candidateParts.length === pathParts.length &&
138
+ hasParametrizedPath(key)
139
+ ) {
140
+ // track if we have found a match to return the values found.
141
+ let found = true;
142
+ for (let i = 0; i < candidateParts.length; i++) {
143
+ if (
144
+ candidateParts[i]?.startsWith("{") &&
145
+ candidateParts[i]?.endsWith("}")
146
+ ) {
147
+ // If the current part of the candidate is a "template" part
148
+ // it is a match with the actual path part on hand
149
+ // skip as the parameterized part can match anything
150
+ continue;
151
+ }
152
+
153
+ // If the candidate part is not a template and
154
+ // the parts don't match mark the candidate as not found
155
+ // to move on with the next candidate path.
156
+ if (candidateParts[i] !== pathParts[i]) {
157
+ found = false;
158
+ break;
159
+ }
160
+ }
161
+
162
+ // We finished evaluating the current candidate parts
163
+ // if all parts matched we return the success values form
164
+ // the path mapping.
165
+ if (found) {
166
+ return value;
167
+ }
168
+ }
169
+ }
170
+
171
+ // No match was found, return an empty array.
172
+ return [];
173
+ `
174
+ ]
175
+ });
176
+ isErrorHelper.addFunction({
177
+ isExported: false,
178
+ name: "hasParametrizedPath",
179
+ parameters: [
180
+ {
181
+ name: "path",
182
+ type: "string"
183
+ }
184
+ ],
185
+ returnType: `boolean`,
186
+ statements: [`return path.includes("/{");`]
187
+ });
188
+ isErrorHelper.addFunction({
189
+ isExported: false,
190
+ name: "getPathFromMapKey",
191
+ parameters: [
192
+ {
193
+ name: "mapKey",
194
+ type: "string"
195
+ }
196
+ ],
197
+ returnType: `string`,
198
+ statements: [
199
+ `const pathStart = mapKey.indexOf("/");
200
+ return mapKey.slice(pathStart);`
201
+ ]
202
+ });
203
+ }
204
+ }
205
+ return {
206
+ path: filePath,
207
+ content: isErrorHelper.getFullText()
208
+ };
209
+ }
210
+ exports.buildIsUnexpectedHelper = buildIsUnexpectedHelper;
211
+ function hasParametrizedPath(pathDictionary) {
212
+ for (const [path] of Object.entries(pathDictionary)) {
213
+ if (path.includes("/{") && path.includes("}")) {
214
+ return true;
215
+ }
216
+ }
217
+ return false;
218
+ }
219
+ //# sourceMappingURL=buildIsUnexpectedHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildIsUnexpectedHelper.js","sourceRoot":"","sources":["../src/buildIsUnexpectedHelper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ // Copyright (c) Microsoft Corporation.
3
+ // Licensed under the MIT License.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.buildMethodShortcutImplementation = exports.REST_CLIENT_RESERVED = void 0;
6
+ const nameUtils_js_1 = require("./helpers/nameUtils.js");
7
+ exports.REST_CLIENT_RESERVED = [
8
+ { name: "path", reservedFor: [nameUtils_js_1.NameType.Property, nameUtils_js_1.NameType.OperationGroup] },
9
+ {
10
+ name: "pathUnchecked",
11
+ reservedFor: [nameUtils_js_1.NameType.Property, nameUtils_js_1.NameType.OperationGroup]
12
+ },
13
+ {
14
+ name: "pipeline",
15
+ reservedFor: [nameUtils_js_1.NameType.Property, nameUtils_js_1.NameType.OperationGroup]
16
+ }
17
+ ];
18
+ function buildMethodShortcutImplementation(paths) {
19
+ let keys = {};
20
+ for (const path of Object.keys(paths)) {
21
+ const groupName = (0, nameUtils_js_1.normalizeName)(paths[path].operationGroupName, nameUtils_js_1.NameType.OperationGroup, true, exports.REST_CLIENT_RESERVED, nameUtils_js_1.CasingConvention.Camel);
22
+ if (keys[groupName]) {
23
+ keys[groupName].push(...buildOperationDeclarations(path, paths[path]));
24
+ }
25
+ else {
26
+ keys[groupName] = buildOperationDeclarations(path, paths[path]);
27
+ }
28
+ }
29
+ return keys;
30
+ }
31
+ exports.buildMethodShortcutImplementation = buildMethodShortcutImplementation;
32
+ function buildOperationDeclarations(path, pathMetadata) {
33
+ let ops = [];
34
+ for (const method of Object.keys(pathMetadata.methods)) {
35
+ for (const op of pathMetadata.methods[method]) {
36
+ const pathParams = pathMetadata === null || pathMetadata === void 0 ? void 0 : pathMetadata.pathParameters;
37
+ const name = (0, nameUtils_js_1.normalizeName)(op.operationName, nameUtils_js_1.NameType.Property);
38
+ const methodDefinitions = generateOperationDeclaration(path, name, method, pathParams);
39
+ ops = [...ops, methodDefinitions];
40
+ }
41
+ }
42
+ return ops;
43
+ }
44
+ function generateOperationDeclaration(path, operationName, method, pathParams = []) {
45
+ const pathParamNames = `${pathParams.length > 0 ? `${pathParams.map((p) => p.name)},` : ""}`;
46
+ return `"${operationName}": (${pathParamNames} options) => {
47
+ return client.path("${path}", ${pathParamNames}).${method}(options);
48
+ }`;
49
+ }
50
+ //# sourceMappingURL=buildMethodShortcuts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildMethodShortcuts.js","sourceRoot":"","sources":["../src/buildMethodShortcuts.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,yDAKgC;AAGnB,QAAA,oBAAoB,GAAmB;IAClD,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,uBAAQ,CAAC,QAAQ,EAAE,uBAAQ,CAAC,cAAc,CAAC,EAAE;IAC3E;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,CAAC,uBAAQ,CAAC,QAAQ,EAAE,uBAAQ,CAAC,cAAc,CAAC;KAC1D;IACD;QACE,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,CAAC,uBAAQ,CAAC,QAAQ,EAAE,uBAAQ,CAAC,cAAc,CAAC;KAC1D;CACF,CAAC;AAEF,SAAgB,iCAAiC,CAAC,KAAY;IAC5D,IAAI,IAAI,GAA6B,EAAE,CAAC;IACxC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;QACrC,MAAM,SAAS,GAAG,IAAA,4BAAa,EAC7B,KAAK,CAAC,IAAI,CAAC,CAAC,kBAAkB,EAC9B,uBAAQ,CAAC,cAAc,EACvB,IAAI,EACJ,4BAAoB,EACpB,+BAAgB,CAAC,KAAK,CACvB,CAAC;QAEF,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE;YACnB,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,0BAA0B,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACxE;aAAM;YACL,IAAI,CAAC,SAAS,CAAC,GAAG,0BAA0B,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;SACjE;KACF;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAlBD,8EAkBC;AAED,SAAS,0BAA0B,CAAC,IAAY,EAAE,YAA0B;IAC1E,IAAI,GAAG,GAAa,EAAE,CAAC;IACvB,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;QACtD,KAAK,MAAM,EAAE,IAAI,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAC7C,MAAM,UAAU,GAAG,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,cAAc,CAAC;YAChD,MAAM,IAAI,GAAG,IAAA,4BAAa,EAAC,EAAE,CAAC,aAAa,EAAE,uBAAQ,CAAC,QAAQ,CAAC,CAAC;YAChE,MAAM,iBAAiB,GAAG,4BAA4B,CACpD,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,UAAU,CACX,CAAC;YACF,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,iBAAiB,CAAC,CAAC;SACnC;KACF;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,4BAA4B,CACnC,IAAY,EACZ,aAAqB,EACrB,MAAc,EACd,aAA8B,EAAE;IAEhC,MAAM,cAAc,GAAG,GACrB,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAChE,EAAE,CAAC;IACH,OAAO,IAAI,aAAa,OAAO,cAAc;4BACnB,IAAI,MAAM,cAAc,KAAK,MAAM;MACzD,CAAC;AACP,CAAC"}