@azure-tools/rlc-common 0.11.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 (232) hide show
  1. package/.eslintrc.json +23 -0
  2. package/.prettierignore +1 -0
  3. package/.prettierrc +7 -0
  4. package/.rush/temp/package-deps_build.json +53 -0
  5. package/.rush/temp/shrinkwrap-deps.json +147 -0
  6. package/CHANGELOG.md +61 -0
  7. package/CONTRIBUTING.md +30 -0
  8. package/README.md +3 -0
  9. package/dist/buildClient.js +268 -0
  10. package/dist/buildClient.js.map +1 -0
  11. package/dist/buildClientDefinitions.js +160 -0
  12. package/dist/buildClientDefinitions.js.map +1 -0
  13. package/dist/buildIndexFile.js +170 -0
  14. package/dist/buildIndexFile.js.map +1 -0
  15. package/dist/buildIsUnexpectedHelper.js +220 -0
  16. package/dist/buildIsUnexpectedHelper.js.map +1 -0
  17. package/dist/buildMethodShortcuts.js +50 -0
  18. package/dist/buildMethodShortcuts.js.map +1 -0
  19. package/dist/buildObjectTypes.js +286 -0
  20. package/dist/buildObjectTypes.js.map +1 -0
  21. package/dist/buildPaginateHelper.js +30 -0
  22. package/dist/buildPaginateHelper.js.map +1 -0
  23. package/dist/buildParameterTypes.js +315 -0
  24. package/dist/buildParameterTypes.js.map +1 -0
  25. package/dist/buildPollingHelper.js +21 -0
  26. package/dist/buildPollingHelper.js.map +1 -0
  27. package/dist/buildResponseTypes.js +135 -0
  28. package/dist/buildResponseTypes.js.map +1 -0
  29. package/dist/buildSchemaType.js +65 -0
  30. package/dist/buildSchemaType.js.map +1 -0
  31. package/dist/buildSerializeHelper.js +35 -0
  32. package/dist/buildSerializeHelper.js.map +1 -0
  33. package/dist/buildTopLevelIndexFile.js +48 -0
  34. package/dist/buildTopLevelIndexFile.js.map +1 -0
  35. package/dist/helpers/nameConstructors.js +41 -0
  36. package/dist/helpers/nameConstructors.js.map +1 -0
  37. package/dist/helpers/nameUtils.js +196 -0
  38. package/dist/helpers/nameUtils.js.map +1 -0
  39. package/dist/helpers/operationHelpers.js +103 -0
  40. package/dist/helpers/operationHelpers.js.map +1 -0
  41. package/dist/helpers/pathUtils.js +13 -0
  42. package/dist/helpers/pathUtils.js.map +1 -0
  43. package/dist/helpers/schemaHelpers.js +27 -0
  44. package/dist/helpers/schemaHelpers.js.map +1 -0
  45. package/dist/helpers/shortcutMethods.js +46 -0
  46. package/dist/helpers/shortcutMethods.js.map +1 -0
  47. package/dist/index.js +45 -0
  48. package/dist/index.js.map +1 -0
  49. package/dist/interfaces.js +18 -0
  50. package/dist/interfaces.js.map +1 -0
  51. package/dist/metadata/buildApiExtractorConfig.js +56 -0
  52. package/dist/metadata/buildApiExtractorConfig.js.map +1 -0
  53. package/dist/metadata/buildESLintConfig.js +33 -0
  54. package/dist/metadata/buildESLintConfig.js.map +1 -0
  55. package/dist/metadata/buildLicenseFile.js +41 -0
  56. package/dist/metadata/buildLicenseFile.js.map +1 -0
  57. package/dist/metadata/buildPackageFile.js +274 -0
  58. package/dist/metadata/buildPackageFile.js.map +1 -0
  59. package/dist/metadata/buildReadmeFile.js +170 -0
  60. package/dist/metadata/buildReadmeFile.js.map +1 -0
  61. package/dist/metadata/buildRollupConfig.js +144 -0
  62. package/dist/metadata/buildRollupConfig.js.map +1 -0
  63. package/dist/metadata/buildTsConfig.js +72 -0
  64. package/dist/metadata/buildTsConfig.js.map +1 -0
  65. package/dist/package.json +1 -0
  66. package/dist/static/paginateContent.js +214 -0
  67. package/dist/static/paginateContent.js.map +1 -0
  68. package/dist/static/pollingContent.js +98 -0
  69. package/dist/static/pollingContent.js.map +1 -0
  70. package/dist/static/serializeHelper.js +30 -0
  71. package/dist/static/serializeHelper.js.map +1 -0
  72. package/dist/test/buildEnvFile.js +31 -0
  73. package/dist/test/buildEnvFile.js.map +1 -0
  74. package/dist/test/buildKarmaConfig.js +19 -0
  75. package/dist/test/buildKarmaConfig.js.map +1 -0
  76. package/dist/test/buildRecordedClient.js +22 -0
  77. package/dist/test/buildRecordedClient.js.map +1 -0
  78. package/dist/test/buildSampleTest.js +19 -0
  79. package/dist/test/buildSampleTest.js.map +1 -0
  80. package/dist/test/template.js +191 -0
  81. package/dist/test/template.js.map +1 -0
  82. package/dist-esm/buildClient.js +261 -0
  83. package/dist-esm/buildClient.js.map +1 -0
  84. package/dist-esm/buildClientDefinitions.js +155 -0
  85. package/dist-esm/buildClientDefinitions.js.map +1 -0
  86. package/dist-esm/buildIndexFile.js +165 -0
  87. package/dist-esm/buildIndexFile.js.map +1 -0
  88. package/dist-esm/buildIsUnexpectedHelper.js +216 -0
  89. package/dist-esm/buildIsUnexpectedHelper.js.map +1 -0
  90. package/dist-esm/buildMethodShortcuts.js +46 -0
  91. package/dist-esm/buildMethodShortcuts.js.map +1 -0
  92. package/dist-esm/buildObjectTypes.js +288 -0
  93. package/dist-esm/buildObjectTypes.js.map +1 -0
  94. package/dist-esm/buildPaginateHelper.js +26 -0
  95. package/dist-esm/buildPaginateHelper.js.map +1 -0
  96. package/dist-esm/buildParameterTypes.js +321 -0
  97. package/dist-esm/buildParameterTypes.js.map +1 -0
  98. package/dist-esm/buildPollingHelper.js +17 -0
  99. package/dist-esm/buildPollingHelper.js.map +1 -0
  100. package/dist-esm/buildResponseTypes.js +140 -0
  101. package/dist-esm/buildResponseTypes.js.map +1 -0
  102. package/dist-esm/buildSchemaType.js +60 -0
  103. package/dist-esm/buildSchemaType.js.map +1 -0
  104. package/dist-esm/buildSerializeHelper.js +31 -0
  105. package/dist-esm/buildSerializeHelper.js.map +1 -0
  106. package/dist-esm/buildTopLevelIndexFile.js +44 -0
  107. package/dist-esm/buildTopLevelIndexFile.js.map +1 -0
  108. package/dist-esm/helpers/nameConstructors.js +34 -0
  109. package/dist-esm/helpers/nameConstructors.js.map +1 -0
  110. package/dist-esm/helpers/nameUtils.js +187 -0
  111. package/dist-esm/helpers/nameUtils.js.map +1 -0
  112. package/dist-esm/helpers/operationHelpers.js +84 -0
  113. package/dist-esm/helpers/operationHelpers.js.map +1 -0
  114. package/dist-esm/helpers/pathUtils.js +9 -0
  115. package/dist-esm/helpers/pathUtils.js.map +1 -0
  116. package/dist-esm/helpers/schemaHelpers.js +21 -0
  117. package/dist-esm/helpers/schemaHelpers.js.map +1 -0
  118. package/dist-esm/helpers/shortcutMethods.js +42 -0
  119. package/dist-esm/helpers/shortcutMethods.js.map +1 -0
  120. package/dist-esm/index.js +29 -0
  121. package/dist-esm/index.js.map +1 -0
  122. package/dist-esm/interfaces.js +15 -0
  123. package/dist-esm/interfaces.js.map +1 -0
  124. package/dist-esm/metadata/buildApiExtractorConfig.js +51 -0
  125. package/dist-esm/metadata/buildApiExtractorConfig.js.map +1 -0
  126. package/dist-esm/metadata/buildESLintConfig.js +28 -0
  127. package/dist-esm/metadata/buildESLintConfig.js.map +1 -0
  128. package/dist-esm/metadata/buildLicenseFile.js +36 -0
  129. package/dist-esm/metadata/buildLicenseFile.js.map +1 -0
  130. package/dist-esm/metadata/buildPackageFile.js +276 -0
  131. package/dist-esm/metadata/buildPackageFile.js.map +1 -0
  132. package/dist-esm/metadata/buildReadmeFile.js +167 -0
  133. package/dist-esm/metadata/buildReadmeFile.js.map +1 -0
  134. package/dist-esm/metadata/buildRollupConfig.js +139 -0
  135. package/dist-esm/metadata/buildRollupConfig.js.map +1 -0
  136. package/dist-esm/metadata/buildTsConfig.js +67 -0
  137. package/dist-esm/metadata/buildTsConfig.js.map +1 -0
  138. package/dist-esm/package.json +1 -0
  139. package/dist-esm/static/paginateContent.js +211 -0
  140. package/dist-esm/static/paginateContent.js.map +1 -0
  141. package/dist-esm/static/pollingContent.js +95 -0
  142. package/dist-esm/static/pollingContent.js.map +1 -0
  143. package/dist-esm/static/serializeHelper.js +27 -0
  144. package/dist-esm/static/serializeHelper.js.map +1 -0
  145. package/dist-esm/test/buildEnvFile.js +24 -0
  146. package/dist-esm/test/buildEnvFile.js.map +1 -0
  147. package/dist-esm/test/buildKarmaConfig.js +14 -0
  148. package/dist-esm/test/buildKarmaConfig.js.map +1 -0
  149. package/dist-esm/test/buildRecordedClient.js +17 -0
  150. package/dist-esm/test/buildRecordedClient.js.map +1 -0
  151. package/dist-esm/test/buildSampleTest.js +14 -0
  152. package/dist-esm/test/buildSampleTest.js.map +1 -0
  153. package/dist-esm/test/template.js +188 -0
  154. package/dist-esm/test/template.js.map +1 -0
  155. package/package.json +46 -0
  156. package/publishPackage.js +11 -0
  157. package/rlc-common.build.log +2 -0
  158. package/src/buildClient.ts +353 -0
  159. package/src/buildClientDefinitions.ts +235 -0
  160. package/src/buildIndexFile.ts +202 -0
  161. package/src/buildIsUnexpectedHelper.ts +240 -0
  162. package/src/buildMethodShortcuts.ts +75 -0
  163. package/src/buildObjectTypes.ts +449 -0
  164. package/src/buildPaginateHelper.ts +33 -0
  165. package/src/buildParameterTypes.ts +477 -0
  166. package/src/buildPollingHelper.ts +18 -0
  167. package/src/buildResponseTypes.ts +186 -0
  168. package/src/buildSchemaType.ts +85 -0
  169. package/src/buildSerializeHelper.ts +42 -0
  170. package/src/buildTopLevelIndexFile.ts +52 -0
  171. package/src/helpers/nameConstructors.ts +93 -0
  172. package/src/helpers/nameUtils.ts +227 -0
  173. package/src/helpers/operationHelpers.ts +119 -0
  174. package/src/helpers/pathUtils.ts +9 -0
  175. package/src/helpers/schemaHelpers.ts +25 -0
  176. package/src/helpers/shortcutMethods.ts +60 -0
  177. package/src/index.ts +29 -0
  178. package/src/interfaces.ts +227 -0
  179. package/src/metadata/buildApiExtractorConfig.ts +59 -0
  180. package/src/metadata/buildESLintConfig.ts +34 -0
  181. package/src/metadata/buildLicenseFile.ts +39 -0
  182. package/src/metadata/buildPackageFile.ts +334 -0
  183. package/src/metadata/buildReadmeFile.ts +231 -0
  184. package/src/metadata/buildRollupConfig.ts +147 -0
  185. package/src/metadata/buildTsConfig.ts +79 -0
  186. package/src/static/paginateContent.ts +210 -0
  187. package/src/static/pollingContent.ts +94 -0
  188. package/src/static/serializeHelper.ts +29 -0
  189. package/src/test/buildEnvFile.ts +26 -0
  190. package/src/test/buildKarmaConfig.ts +15 -0
  191. package/src/test/buildRecordedClient.ts +18 -0
  192. package/src/test/buildSampleTest.ts +15 -0
  193. package/src/test/template.ts +191 -0
  194. package/tsconfig-cjs.json +9 -0
  195. package/tsconfig-common.json +13 -0
  196. package/tsconfig.json +13 -0
  197. package/types/buildClient.d.ts +2 -0
  198. package/types/buildClientDefinitions.d.ts +5 -0
  199. package/types/buildIndexFile.d.ts +5 -0
  200. package/types/buildIsUnexpectedHelper.d.ts +5 -0
  201. package/types/buildMethodShortcuts.d.ts +4 -0
  202. package/types/buildObjectTypes.d.ts +15 -0
  203. package/types/buildPaginateHelper.d.ts +5 -0
  204. package/types/buildParameterTypes.d.ts +13 -0
  205. package/types/buildPollingHelper.d.ts +5 -0
  206. package/types/buildResponseTypes.d.ts +5 -0
  207. package/types/buildSchemaType.d.ts +19 -0
  208. package/types/buildSerializeHelper.d.ts +5 -0
  209. package/types/buildTopLevelIndexFile.d.ts +5 -0
  210. package/types/helpers/nameConstructors.d.ts +28 -0
  211. package/types/helpers/nameUtils.d.ts +25 -0
  212. package/types/helpers/operationHelpers.d.ts +13 -0
  213. package/types/helpers/pathUtils.d.ts +1 -0
  214. package/types/helpers/schemaHelpers.d.ts +4 -0
  215. package/types/helpers/shortcutMethods.d.ts +3 -0
  216. package/types/index.d.ts +26 -0
  217. package/types/interfaces.d.ts +200 -0
  218. package/types/metadata/buildApiExtractorConfig.d.ts +5 -0
  219. package/types/metadata/buildESLintConfig.d.ts +5 -0
  220. package/types/metadata/buildLicenseFile.d.ts +5 -0
  221. package/types/metadata/buildPackageFile.d.ts +5 -0
  222. package/types/metadata/buildReadmeFile.d.ts +5 -0
  223. package/types/metadata/buildRollupConfig.d.ts +5 -0
  224. package/types/metadata/buildTsConfig.d.ts +5 -0
  225. package/types/static/paginateContent.d.ts +1 -0
  226. package/types/static/pollingContent.d.ts +1 -0
  227. package/types/static/serializeHelper.d.ts +4 -0
  228. package/types/test/buildEnvFile.d.ts +9 -0
  229. package/types/test/buildKarmaConfig.d.ts +5 -0
  230. package/types/test/buildRecordedClient.d.ts +5 -0
  231. package/types/test/buildSampleTest.d.ts +5 -0
  232. package/types/test/template.d.ts +5 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildClient.js","sourceRoot":"","sources":["../src/buildClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,160 @@
1
+ "use strict";
2
+ // Copyright (c) Microsoft Corporation.
3
+ // Licensed under the MIT License.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.buildClientDefinitions = void 0;
6
+ const ts_morph_1 = require("ts-morph");
7
+ const path = require("path");
8
+ const operationHelpers_js_1 = require("./helpers/operationHelpers.js");
9
+ const shortcutMethods_js_1 = require("./helpers/shortcutMethods.js");
10
+ const buildMethodShortcuts_js_1 = require("./buildMethodShortcuts.js");
11
+ const nameUtils_js_1 = require("./helpers/nameUtils.js");
12
+ const nameUtils_js_2 = require("./helpers/nameUtils.js");
13
+ function buildClientDefinitions(model) {
14
+ var _a;
15
+ const options = {
16
+ importedParameters: new Set(),
17
+ importedResponses: new Set(),
18
+ clientImports: new Set()
19
+ };
20
+ const project = new ts_morph_1.Project();
21
+ const srcPath = model.srcPath;
22
+ const filePath = path.join(srcPath, `clientDefinitions.ts`);
23
+ const clientDefinitionsFile = project.createSourceFile(filePath, undefined, {
24
+ overwrite: true
25
+ });
26
+ // Get all paths
27
+ const pathDictionary = model.paths;
28
+ let shortcuts = [];
29
+ // There may be operations without an operation group, those shortcut
30
+ // methods need to be handled differently.
31
+ let shortcutsInOperationGroup = [];
32
+ if ((_a = model.options) === null || _a === void 0 ? void 0 : _a.includeShortcuts) {
33
+ shortcuts = (0, shortcutMethods_js_1.generateMethodShortcuts)(model.paths);
34
+ clientDefinitionsFile.addInterfaces(shortcuts);
35
+ shortcutsInOperationGroup = shortcuts
36
+ .filter((s) => s.name !== "ClientOperations")
37
+ .map((s) => getShortcutName(s.name));
38
+ }
39
+ clientDefinitionsFile.addInterface({
40
+ name: "Routes",
41
+ isExported: true,
42
+ callSignatures: getPathFirstRoutesInterfaceDefinition(pathDictionary, clientDefinitionsFile, options)
43
+ });
44
+ const clientName = model.libraryName;
45
+ const clientInterfaceName = clientName.endsWith("Client")
46
+ ? `${clientName}`
47
+ : `${clientName}Client`;
48
+ clientDefinitionsFile.addTypeAlias({
49
+ isExported: true,
50
+ name: clientInterfaceName,
51
+ type: ts_morph_1.Writers.intersectionType("Client", ts_morph_1.Writers.objectType({
52
+ properties: [
53
+ { name: "path", type: "Routes" },
54
+ ...shortcutsInOperationGroup
55
+ ]
56
+ }),
57
+ // If the length of shortcuts in operation group and all shortcutsInOperationGroup
58
+ // is the same, then we don't have any operations at the client level
59
+ // Otherwise we need to make the client interface name an union with the
60
+ // definition of all client level shortcut methods
61
+ ...(shortcutsInOperationGroup.length !== shortcuts.length
62
+ ? [`ClientOperations`]
63
+ : []))
64
+ });
65
+ if (options.importedParameters.size) {
66
+ clientDefinitionsFile.addImportDeclaration({
67
+ namedImports: [...options.importedParameters],
68
+ moduleSpecifier: "./parameters"
69
+ });
70
+ }
71
+ if (options.importedResponses.size) {
72
+ clientDefinitionsFile.addImportDeclaration({
73
+ namedImports: [...options.importedResponses],
74
+ moduleSpecifier: "./responses"
75
+ });
76
+ }
77
+ options.clientImports.add("Client");
78
+ options.clientImports.add("StreamableMethod");
79
+ clientDefinitionsFile.addImportDeclarations([
80
+ {
81
+ namedImports: [...options.clientImports],
82
+ moduleSpecifier: "@azure-rest/core-client"
83
+ }
84
+ ]);
85
+ return { path: filePath, content: clientDefinitionsFile.getFullText() };
86
+ }
87
+ exports.buildClientDefinitions = buildClientDefinitions;
88
+ function getPathFirstRoutesInterfaceDefinition(paths, sourcefile, options) {
89
+ const operationGroupCount = getOperationGroupCount(paths);
90
+ const signatures = [];
91
+ for (const key of Object.keys(paths)) {
92
+ for (const verb of Object.keys(paths[key].methods)) {
93
+ for (const method of paths[key].methods[verb]) {
94
+ options.importedParameters.add(method.optionsName);
95
+ method.returnType
96
+ .split(" | ")
97
+ .forEach((item) => options.importedResponses.add(item));
98
+ }
99
+ }
100
+ generatePathFirstRouteMethodsDefinition(paths[key], operationGroupCount, sourcefile);
101
+ const pathParams = paths[key].pathParameters;
102
+ signatures.push({
103
+ docs: [
104
+ `Resource for '${key
105
+ .replace(/}/g, "\\}")
106
+ .replace(/{/g, "\\{")}' has methods for the following verbs: ${Object.keys(paths[key].methods).join(", ")}`
107
+ ],
108
+ parameters: [
109
+ { name: "path", type: `"${key}"` },
110
+ ...(0, operationHelpers_js_1.getPathParamDefinitions)(pathParams)
111
+ ],
112
+ returnType: getOperationReturnTypeName(paths[key], getOperationGroupCount(paths)),
113
+ kind: ts_morph_1.StructureKind.CallSignature
114
+ });
115
+ }
116
+ return signatures;
117
+ }
118
+ function getOperationGroupCount(paths) {
119
+ const operationGroups = Object.keys(paths)
120
+ .map((p) => paths[p].operationGroupName)
121
+ .filter((p) => p && p !== "Client");
122
+ const uniqueNames = new Set(operationGroups);
123
+ return uniqueNames.size;
124
+ }
125
+ function getOperationReturnTypeName({ operationGroupName, name }, operationGroupCount) {
126
+ if (operationGroupCount > 1 &&
127
+ operationGroupName &&
128
+ operationGroupName !== "Client") {
129
+ return `${(0, nameUtils_js_2.pascalCase)(operationGroupName)}${(0, nameUtils_js_2.pascalCase)(name)}`;
130
+ }
131
+ return (0, nameUtils_js_2.pascalCase)(name);
132
+ }
133
+ function generatePathFirstRouteMethodsDefinition(path, operationGroupCount, file) {
134
+ const methodDefinitions = (0, operationHelpers_js_1.buildMethodDefinitions)(path.methods);
135
+ const interfaceDef = {
136
+ methods: methodDefinitions,
137
+ name: getOperationReturnTypeName(path, operationGroupCount),
138
+ isExported: true
139
+ };
140
+ file.addInterface(interfaceDef);
141
+ }
142
+ function getShortcutName(interfaceName) {
143
+ const endIndex = shouldKeepSuffix(interfaceName)
144
+ ? undefined
145
+ : interfaceName.length - "Operations".length;
146
+ const clientProperty = (0, nameUtils_js_1.normalizeName)(interfaceName.substring(0, endIndex), nameUtils_js_1.NameType.OperationGroup, true, buildMethodShortcuts_js_1.REST_CLIENT_RESERVED, nameUtils_js_1.CasingConvention.Camel);
147
+ return {
148
+ name: clientProperty,
149
+ type: interfaceName
150
+ };
151
+ }
152
+ function shouldKeepSuffix(name) {
153
+ const reservedNames = [
154
+ "pipelineOperations",
155
+ "pathOperations",
156
+ "pathUncheckedOperations"
157
+ ];
158
+ return reservedNames.some((r) => r.toLowerCase() === name.toLowerCase());
159
+ }
160
+ //# sourceMappingURL=buildClientDefinitions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildClientDefinitions.js","sourceRoot":"","sources":["../src/buildClientDefinitions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,170 @@
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
+ if ((0, operationHelpers_js_1.hasMultiCollection)(model) ||
79
+ (0, operationHelpers_js_1.hasSsvCollection)(model) ||
80
+ (0, operationHelpers_js_1.hasPipeCollection)(model) ||
81
+ (0, operationHelpers_js_1.hasTsvCollection)(model)) {
82
+ file.addImportDeclaration({
83
+ namespaceImport: "SerializeHelper",
84
+ moduleSpecifier: "./serializeHelper"
85
+ });
86
+ exports.push("SerializeHelper");
87
+ }
88
+ file.addExportDeclarations([
89
+ {
90
+ moduleSpecifier: `./${moduleName}`,
91
+ namedExports: [`${createClientFuncName}`]
92
+ },
93
+ {
94
+ namedExports: [...exports]
95
+ }
96
+ ]);
97
+ }
98
+ function generateRLCIndex(file, model) {
99
+ const clientName = model.libraryName;
100
+ const createClientFuncName = `${clientName}`;
101
+ const moduleName = (0, nameUtils_js_1.normalizeName)(clientName, nameUtils_js_1.NameType.File);
102
+ file.addImportDeclaration({
103
+ moduleSpecifier: `./${moduleName}`,
104
+ defaultImport: createClientFuncName
105
+ });
106
+ file.addExportDeclarations([
107
+ {
108
+ moduleSpecifier: `./${moduleName}`
109
+ },
110
+ {
111
+ moduleSpecifier: "./parameters"
112
+ },
113
+ {
114
+ moduleSpecifier: "./responses"
115
+ },
116
+ {
117
+ moduleSpecifier: "./clientDefinitions"
118
+ }
119
+ ]);
120
+ if ((0, operationHelpers_js_1.hasUnexpectedHelper)(model)) {
121
+ file.addExportDeclarations([
122
+ {
123
+ moduleSpecifier: "./isUnexpected"
124
+ }
125
+ ]);
126
+ }
127
+ if ((0, operationHelpers_js_1.hasInputModels)(model)) {
128
+ file.addExportDeclarations([
129
+ {
130
+ moduleSpecifier: "./models"
131
+ }
132
+ ]);
133
+ }
134
+ if ((0, operationHelpers_js_1.hasOutputModels)(model)) {
135
+ file.addExportDeclarations([
136
+ {
137
+ moduleSpecifier: "./outputModels"
138
+ }
139
+ ]);
140
+ }
141
+ if ((0, operationHelpers_js_1.hasPagingOperations)(model)) {
142
+ file.addExportDeclarations([
143
+ {
144
+ moduleSpecifier: "./paginateHelper"
145
+ }
146
+ ]);
147
+ }
148
+ if ((0, operationHelpers_js_1.hasPollingOperations)(model)) {
149
+ file.addExportDeclarations([
150
+ {
151
+ moduleSpecifier: "./pollingHelper"
152
+ }
153
+ ]);
154
+ }
155
+ if ((0, operationHelpers_js_1.hasMultiCollection)(model) ||
156
+ (0, operationHelpers_js_1.hasSsvCollection)(model) ||
157
+ (0, operationHelpers_js_1.hasPipeCollection)(model) ||
158
+ (0, operationHelpers_js_1.hasTsvCollection)(model)) {
159
+ file.addExportDeclarations([
160
+ {
161
+ moduleSpecifier: "./serializeHelper"
162
+ }
163
+ ]);
164
+ }
165
+ file.addExportAssignment({
166
+ expression: createClientFuncName,
167
+ isExportEquals: false
168
+ });
169
+ }
170
+ //# 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,220 @@
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
+ const allResponseTypes = new Set();
22
+ const allErrorTypes = new Set();
23
+ const 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 = getParametrizedPathSuccess(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: "getParametrizedPathSuccess",
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
+ // Traverse list to match the longest candidate
124
+ // matchedLen: the length of candidate path
125
+ // matchedValue: the matched status code array
126
+ let matchedLen = -1,
127
+ matchedValue: string[] = [];
128
+
129
+ // Iterate the responseMap to find a match
130
+ for (const [key, value] of Object.entries(responseMap)) {
131
+ // Extracting the path from the map key which is in format
132
+ // GET /path/foo
133
+ if (!key.startsWith(method)) {
134
+ continue;
135
+ }
136
+ const candidatePath = getPathFromMapKey(key);
137
+ // Get each part of the url path
138
+ const candidateParts = candidatePath.split("/");
139
+
140
+ // track if we have found a match to return the values found.
141
+ let found = true;
142
+ for (
143
+ let i = candidateParts.length - 1, j = pathParts.length - 1;
144
+ i >= 1 && j >= 1;
145
+ i--, j--
146
+ ) {
147
+ if (
148
+ candidateParts[i]?.startsWith("{") &&
149
+ candidateParts[i]?.indexOf("}") !== -1
150
+ ) {
151
+ const start = candidateParts[i]!.indexOf("}") + 1,
152
+ end = candidateParts[i]?.length;
153
+ // If the current part of the candidate is a "template" part
154
+ // Try to use the suffix of pattern to match the path
155
+ // {guid} ==> $
156
+ // {guid}:export ==> :export$
157
+ const isMatched = new RegExp(
158
+ \`\${candidateParts[i]?.slice(start, end)}\`
159
+ ).test(pathParts[j] || '');
160
+
161
+ if (!isMatched) {
162
+ found = false;
163
+ break;
164
+ }
165
+ continue;
166
+ }
167
+
168
+ // If the candidate part is not a template and
169
+ // the parts don't match mark the candidate as not found
170
+ // to move on with the next candidate path.
171
+ if (candidateParts[i] !== pathParts[j]) {
172
+ found = false;
173
+ break;
174
+ }
175
+ }
176
+
177
+ // We finished evaluating the current candidate parts
178
+ // Update the matched value if and only if we found the longer pattern
179
+ if (found && candidatePath.length > matchedLen) {
180
+ matchedLen = candidatePath.length;
181
+ matchedValue = value;
182
+ }
183
+ }
184
+
185
+ return matchedValue;
186
+ `
187
+ ]
188
+ });
189
+ isErrorHelper.addFunction({
190
+ isExported: false,
191
+ name: "getPathFromMapKey",
192
+ parameters: [
193
+ {
194
+ name: "mapKey",
195
+ type: "string"
196
+ }
197
+ ],
198
+ returnType: `string`,
199
+ statements: [
200
+ `const pathStart = mapKey.indexOf("/");
201
+ return mapKey.slice(pathStart);`
202
+ ]
203
+ });
204
+ }
205
+ }
206
+ return {
207
+ path: filePath,
208
+ content: isErrorHelper.getFullText()
209
+ };
210
+ }
211
+ exports.buildIsUnexpectedHelper = buildIsUnexpectedHelper;
212
+ function hasParametrizedPath(pathDictionary) {
213
+ for (const [path] of Object.entries(pathDictionary)) {
214
+ if (path.includes("/{") && path.includes("}")) {
215
+ return true;
216
+ }
217
+ }
218
+ return false;
219
+ }
220
+ //# 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
+ const 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,MAAM,IAAI,GAA6B,EAAE,CAAC;IAC1C,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"}