@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,127 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+ import { Project, StructureKind } from "ts-morph";
4
+ import { ImportKind } from "./interfaces.js";
5
+ import * as path from "path";
6
+ import { getResponseBaseName, getResponseTypeName } from "./helpers/nameConstructors.js";
7
+ export function buildResponseTypes(model) {
8
+ const project = new Project();
9
+ const srcPath = model.srcPath;
10
+ const filePath = path.join(srcPath, `responses.ts`);
11
+ const responsesFile = project.createSourceFile(filePath, undefined, {
12
+ overwrite: true
13
+ });
14
+ // Set used to track down which models need to be imported
15
+ // Track if we need to import RawHttpHeaders
16
+ let hasHeaders = false;
17
+ if (!model.responses) {
18
+ return;
19
+ }
20
+ for (const operationResponse of model.responses) {
21
+ for (const response of operationResponse.responses) {
22
+ // Building the response type base name
23
+ const baseResponseName = getResponseBaseName(operationResponse.operationGroup, operationResponse.operationName, response.statusCode);
24
+ // Build the response header
25
+ const headersInterface = getResponseHeaderInterfaceDefinition(response, baseResponseName);
26
+ if (headersInterface) {
27
+ hasHeaders = true;
28
+ responsesFile.addInterface(headersInterface);
29
+ }
30
+ // Get the information to build the Response Interface
31
+ const responseTypeName = getResponseTypeName(baseResponseName);
32
+ const responseProperties = getResponseInterfaceProperties(response, headersInterface?.name);
33
+ const responseInterfaceDefinition = {
34
+ name: responseTypeName,
35
+ properties: responseProperties,
36
+ isExported: true,
37
+ extends: ["HttpResponse"]
38
+ };
39
+ // Only add a description if one was provided in the Swagger
40
+ // otherwise skip to avoid having empty TSDoc lines
41
+ if (response.description) {
42
+ responseInterfaceDefinition.docs = [
43
+ { description: response.description }
44
+ ];
45
+ }
46
+ // Add the response interface to the responses file
47
+ responsesFile.addInterface(responseInterfaceDefinition);
48
+ }
49
+ }
50
+ if (hasHeaders) {
51
+ responsesFile.addImportDeclarations([
52
+ {
53
+ namedImports: ["RawHttpHeaders"],
54
+ moduleSpecifier: "@azure/core-rest-pipeline"
55
+ }
56
+ ]);
57
+ }
58
+ responsesFile.addImportDeclarations([
59
+ {
60
+ namedImports: ["HttpResponse"],
61
+ moduleSpecifier: "@azure-rest/core-client"
62
+ }
63
+ ]);
64
+ if (model.importSet?.has(ImportKind.ResponseOutput)) {
65
+ responsesFile.addImportDeclarations([
66
+ {
67
+ namedImports: [
68
+ ...Array.from(model.importSet.get(ImportKind.ResponseOutput) || [])
69
+ ],
70
+ moduleSpecifier: "./outputModels"
71
+ }
72
+ ]);
73
+ }
74
+ return { path: filePath, content: responsesFile.getFullText() };
75
+ }
76
+ function getResponseHeaderInterfaceDefinition(response, baseName) {
77
+ // Check if there are any required headers
78
+ if (!response.headers) {
79
+ return;
80
+ }
81
+ const headersInterfaceName = `${baseName}Headers`;
82
+ return {
83
+ kind: StructureKind.Interface,
84
+ isExported: true,
85
+ name: headersInterfaceName,
86
+ properties: response?.headers.map((h) => {
87
+ const description = h.description;
88
+ return {
89
+ name: h.name,
90
+ ...(description && { docs: [{ description }] }),
91
+ type: h.type,
92
+ hasQuestionToken: !Boolean(h.required)
93
+ };
94
+ })
95
+ };
96
+ }
97
+ /**
98
+ * Gets the properties that need to be part of the response interface
99
+ */
100
+ function getResponseInterfaceProperties(response, headersInterfaceName) {
101
+ const statusCode = response.statusCode;
102
+ const responseProperties = [
103
+ {
104
+ name: "status",
105
+ type: statusCode === "default" ? `string` : `"${statusCode}"`,
106
+ kind: StructureKind.PropertySignature
107
+ }
108
+ ];
109
+ if (response.body) {
110
+ const description = response.body.description;
111
+ responseProperties.push({
112
+ name: "body",
113
+ type: response.body.type,
114
+ kind: StructureKind.PropertySignature,
115
+ ...(description && { docs: [{ description }] })
116
+ });
117
+ }
118
+ if (headersInterfaceName) {
119
+ responseProperties.push({
120
+ name: "headers",
121
+ type: `RawHttpHeaders & ${headersInterfaceName}`,
122
+ kind: StructureKind.PropertySignature
123
+ });
124
+ }
125
+ return responseProperties;
126
+ }
127
+ //# sourceMappingURL=buildResponseTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildResponseTypes.js","sourceRoot":"","sources":["../src/buildResponseTypes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+ import { Project } from "ts-morph";
4
+ import * as path from "path";
5
+ import { buildObjectInterfaces, buildPolymorphicAliases } from "./buildObjectTypes.js";
6
+ import { SchemaContext } from "./interfaces.js";
7
+ /**
8
+ * Generates types to represent schema definitions in the swagger
9
+ */
10
+ export function buildSchemaTypes(model) {
11
+ const { srcPath } = model;
12
+ const project = new Project();
13
+ let filePath = path.join(srcPath, `models.ts`);
14
+ const inputModelFile = generateModelFiles(model, project, filePath, [
15
+ SchemaContext.Input
16
+ ]);
17
+ filePath = path.join(srcPath, `outputModels.ts`);
18
+ const outputModelFile = generateModelFiles(model, project, filePath, [
19
+ SchemaContext.Output,
20
+ SchemaContext.Exception
21
+ ]);
22
+ return { inputModelFile, outputModelFile };
23
+ }
24
+ export function generateModelFiles(model, project, filePath, schemaContext) {
25
+ // Track models that need to be imported
26
+ const importedModels = new Set();
27
+ const objectsDefinitions = buildObjectInterfaces(model, importedModels, schemaContext);
28
+ const objectTypeAliases = buildPolymorphicAliases(model, schemaContext);
29
+ if (objectTypeAliases.length || objectsDefinitions.length) {
30
+ const modelsFile = project.createSourceFile(filePath, undefined, {
31
+ overwrite: true
32
+ });
33
+ modelsFile.addInterfaces(objectsDefinitions);
34
+ modelsFile.addTypeAliases(objectTypeAliases);
35
+ return { path: filePath, content: modelsFile.getFullText() };
36
+ }
37
+ return undefined;
38
+ }
39
+ //# sourceMappingURL=buildSchemaType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildSchemaType.js","sourceRoot":"","sources":["../src/buildSchemaType.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAY,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAE1D;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAe;IAC9C,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAC1B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAC9B,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAC/C,MAAM,cAAc,GAAG,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE;QAClE,aAAa,CAAC,KAAK;KACpB,CAAC,CAAC;IACH,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;IACjD,MAAM,eAAe,GAAG,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE;QACnE,aAAa,CAAC,MAAM;QACpB,aAAa,CAAC,SAAS;KACxB,CAAC,CAAC;IACH,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,KAAe,EACf,OAAgB,EAChB,QAAgB,EAChB,aAA8B;IAE9B,wCAAwC;IACxC,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;IAEzC,MAAM,kBAAkB,GAAG,qBAAqB,CAC9C,KAAK,EACL,cAAc,EACd,aAAa,CACd,CAAC;IACF,MAAM,iBAAiB,GAAG,uBAAuB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IAExE,IAAI,iBAAiB,CAAC,MAAM,IAAI,kBAAkB,CAAC,MAAM,EAAE;QACzD,MAAM,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,SAAS,EAAE;YAC/D,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;QAEH,UAAU,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;QAC7C,UAAU,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;QAC7C,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,WAAW,EAAE,EAAE,CAAC;KAC9D;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,41 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+ import { NameType, normalizeName } from "./helpers/nameUtils.js";
4
+ import { Project } from "ts-morph";
5
+ const batchOutputFolder = [];
6
+ export function buildTopLevelIndex(model) {
7
+ if (!model.options) {
8
+ return undefined;
9
+ }
10
+ const project = new Project();
11
+ const { srcPath } = model;
12
+ const { multiClient, batch } = model.options;
13
+ if (srcPath) {
14
+ const clientName = model.libraryName;
15
+ const moduleName = normalizeName(clientName, NameType.File);
16
+ const relativePath = srcPath.replace("/src", "");
17
+ batchOutputFolder.push([relativePath, clientName, moduleName]);
18
+ }
19
+ if (multiClient &&
20
+ batch &&
21
+ batch.length > 1 &&
22
+ batchOutputFolder.length === batch.length) {
23
+ const indexFile = project.createSourceFile("index.ts", undefined, {
24
+ overwrite: true
25
+ });
26
+ const allModules = [];
27
+ batchOutputFolder.forEach((item) => {
28
+ indexFile.addImportDeclaration({
29
+ namespaceImport: item[1],
30
+ moduleSpecifier: `${item[0]}`
31
+ });
32
+ allModules.push(item[1]);
33
+ });
34
+ indexFile.addExportDeclaration({
35
+ namedExports: [...allModules]
36
+ });
37
+ // TODO handle multi-client path issue in cald
38
+ return { path: "", content: indexFile.getFullText() };
39
+ }
40
+ }
41
+ //# sourceMappingURL=buildTopLevelIndexFile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildTopLevelIndexFile.js","sourceRoot":"","sources":["../src/buildTopLevelIndexFile.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEjE,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC,MAAM,iBAAiB,GAA+B,EAAE,CAAC;AAEzD,MAAM,UAAU,kBAAkB,CAAC,KAAe;IAChD,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;QAClB,OAAO,SAAS,CAAC;KAClB;IACD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAC9B,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAC1B,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC;IAC7C,IAAI,OAAO,EAAE;QACX,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC;QACrC,MAAM,UAAU,GAAG,aAAa,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5D,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACjD,iBAAiB,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;KAChE;IACD,IACE,WAAW;QACX,KAAK;QACL,KAAK,CAAC,MAAM,GAAG,CAAC;QAChB,iBAAiB,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EACzC;QACA,MAAM,SAAS,GAAG,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE,SAAS,EAAE;YAChE,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;QACH,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,iBAAiB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACjC,SAAS,CAAC,oBAAoB,CAAC;gBAC7B,eAAe,EAAE,IAAI,CAAC,CAAC,CAAC;gBACxB,eAAe,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE;aAC9B,CAAC,CAAC;YACH,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,SAAS,CAAC,oBAAoB,CAAC;YAC7B,YAAY,EAAE,CAAC,GAAG,UAAU,CAAC;SAC9B,CAAC,CAAC;QACH,8CAA8C;QAC9C,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC;KACvD;AACH,CAAC"}
@@ -0,0 +1,34 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+ import { NameType, normalizeName } from "./nameUtils.js";
4
+ export function getResponseTypeName(baseNameOrOperationGroup, operationName, statusCode) {
5
+ if (Boolean(operationName)) {
6
+ baseNameOrOperationGroup = getResponseBaseName(baseNameOrOperationGroup, operationName, statusCode || "");
7
+ }
8
+ return normalizeName(`${baseNameOrOperationGroup}Response`, NameType.Interface);
9
+ }
10
+ /**
11
+ * The prefix of all response types
12
+ * @param operationGroup operation group name e.g string_PutEmpty
13
+ * @param operationName operation name D e.g string_PutEmpty
14
+ * @param statusCode 2XX, 4XX, 5XX, default etc.
15
+ * @returns normolized base name e.g StringPutEmpty200
16
+ */
17
+ export function getResponseBaseName(operationGroup, operationName, statusCode) {
18
+ return normalizeName(`${operationGroup}_${operationName}_${statusCode}`, NameType.Interface);
19
+ }
20
+ /**
21
+ * The prefix of all parameter relevant types
22
+ * @param operationName is composed with operationGroup and operationID e.g string_PutEmpty
23
+ * @returns
24
+ */
25
+ export function getParameterBaseName(operationGroup, operationName) {
26
+ return normalizeName(`${operationGroup}_${operationName}`, NameType.Interface);
27
+ }
28
+ export function getParameterTypeName(baseNameOrOperationGroup, operationName) {
29
+ if (Boolean(operationName)) {
30
+ baseNameOrOperationGroup = getParameterBaseName(baseNameOrOperationGroup, operationName);
31
+ }
32
+ return normalizeName(`${baseNameOrOperationGroup}_Parameters`, NameType.Interface);
33
+ }
34
+ //# sourceMappingURL=nameConstructors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nameConstructors.js","sourceRoot":"","sources":["../../src/helpers/nameConstructors.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAYzD,MAAM,UAAU,mBAAmB,CACjC,wBAAgC,EAChC,aAAsB,EACtB,UAAmB;IAEnB,IAAI,OAAO,CAAC,aAAa,CAAC,EAAE;QAC1B,wBAAwB,GAAG,mBAAmB,CAC5C,wBAAwB,EACxB,aAAc,EACd,UAAU,IAAI,EAAE,CACjB,CAAC;KACH;IACD,OAAO,aAAa,CAClB,GAAG,wBAAwB,UAAU,EACrC,QAAQ,CAAC,SAAS,CACnB,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CACjC,cAAsB,EACtB,aAAqB,EACrB,UAAkB;IAElB,OAAO,aAAa,CAClB,GAAG,cAAc,IAAI,aAAa,IAAI,UAAU,EAAE,EAClD,QAAQ,CAAC,SAAS,CACnB,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,cAAsB,EACtB,aAAqB;IAErB,OAAO,aAAa,CAClB,GAAG,cAAc,IAAI,aAAa,EAAE,EACpC,QAAQ,CAAC,SAAS,CACnB,CAAC;AACJ,CAAC;AAaD,MAAM,UAAU,oBAAoB,CAClC,wBAAgC,EAChC,aAAsB;IAEtB,IAAI,OAAO,CAAC,aAAa,CAAC,EAAE;QAC1B,wBAAwB,GAAG,oBAAoB,CAC7C,wBAAwB,EACxB,aAAc,CACf,CAAC;KACH;IAED,OAAO,aAAa,CAClB,GAAG,wBAAwB,aAAa,EACxC,QAAQ,CAAC,SAAS,CACnB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,187 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+ export var NameType;
4
+ (function (NameType) {
5
+ NameType[NameType["Class"] = 0] = "Class";
6
+ NameType[NameType["File"] = 1] = "File";
7
+ NameType[NameType["Interface"] = 2] = "Interface";
8
+ NameType[NameType["Property"] = 3] = "Property";
9
+ NameType[NameType["Parameter"] = 4] = "Parameter";
10
+ NameType[NameType["Operation"] = 5] = "Operation";
11
+ NameType[NameType["OperationGroup"] = 6] = "OperationGroup";
12
+ })(NameType || (NameType = {}));
13
+ const Newable = [NameType.Class, NameType.Interface, NameType.OperationGroup];
14
+ const ReservedModelNames = [
15
+ { name: "any", reservedFor: [NameType.Parameter] },
16
+ { name: "as", reservedFor: [NameType.Parameter] },
17
+ { name: "boolean", reservedFor: [NameType.Parameter, ...Newable] },
18
+ { name: "break", reservedFor: [NameType.Parameter] },
19
+ { name: "case", reservedFor: [NameType.Parameter] },
20
+ { name: "catch", reservedFor: [NameType.Parameter] },
21
+ { name: "class", reservedFor: [NameType.Parameter] },
22
+ { name: "const", reservedFor: [NameType.Parameter] },
23
+ { name: "constructor", reservedFor: [NameType.Parameter] },
24
+ { name: "continue", reservedFor: [NameType.Parameter] },
25
+ { name: "date", reservedFor: [NameType.Parameter, ...Newable] },
26
+ { name: "debugger", reservedFor: [NameType.Parameter] },
27
+ { name: "declare", reservedFor: [NameType.Parameter] },
28
+ { name: "default", reservedFor: [NameType.Parameter] },
29
+ { name: "delete", reservedFor: [NameType.Parameter] },
30
+ { name: "do", reservedFor: [NameType.Parameter] },
31
+ { name: "else", reservedFor: [NameType.Parameter] },
32
+ { name: "enum", reservedFor: [NameType.Parameter] },
33
+ { name: "error", reservedFor: [NameType.Parameter, ...Newable] },
34
+ { name: "export", reservedFor: [NameType.Parameter] },
35
+ { name: "extends", reservedFor: [NameType.Parameter] },
36
+ { name: "false", reservedFor: [NameType.Parameter] },
37
+ { name: "finally", reservedFor: [NameType.Parameter] },
38
+ { name: "for", reservedFor: [NameType.Parameter] },
39
+ { name: "from", reservedFor: [NameType.Parameter] },
40
+ { name: "function", reservedFor: [NameType.Parameter, ...Newable] },
41
+ { name: "get", reservedFor: [NameType.Parameter] },
42
+ { name: "if", reservedFor: [NameType.Parameter] },
43
+ { name: "implements", reservedFor: [NameType.Parameter] },
44
+ { name: "import", reservedFor: [NameType.Parameter] },
45
+ { name: "in", reservedFor: [NameType.Parameter] },
46
+ { name: "instanceof", reservedFor: [NameType.Parameter] },
47
+ { name: "interface", reservedFor: [NameType.Parameter] },
48
+ { name: "let", reservedFor: [NameType.Parameter] },
49
+ { name: "module", reservedFor: [NameType.Parameter] },
50
+ { name: "new", reservedFor: [NameType.Parameter] },
51
+ { name: "null", reservedFor: [NameType.Parameter] },
52
+ { name: "number", reservedFor: [NameType.Parameter, ...Newable] },
53
+ { name: "of", reservedFor: [NameType.Parameter] },
54
+ { name: "package", reservedFor: [NameType.Parameter] },
55
+ { name: "private", reservedFor: [NameType.Parameter] },
56
+ { name: "protected", reservedFor: [NameType.Parameter] },
57
+ { name: "public", reservedFor: [NameType.Parameter] },
58
+ { name: "requestoptions", reservedFor: [NameType.Parameter] },
59
+ { name: "require", reservedFor: [NameType.Parameter] },
60
+ { name: "return", reservedFor: [NameType.Parameter] },
61
+ { name: "set", reservedFor: [NameType.Parameter, ...Newable] },
62
+ { name: "static", reservedFor: [NameType.Parameter] },
63
+ { name: "string", reservedFor: [NameType.Parameter, ...Newable] },
64
+ { name: "super", reservedFor: [NameType.Parameter] },
65
+ { name: "switch", reservedFor: [NameType.Parameter] },
66
+ { name: "symbol", reservedFor: [NameType.Parameter, ...Newable] },
67
+ { name: "this", reservedFor: [NameType.Parameter] },
68
+ { name: "throw", reservedFor: [NameType.Parameter] },
69
+ { name: "true", reservedFor: [NameType.Parameter] },
70
+ { name: "try", reservedFor: [NameType.Parameter] },
71
+ { name: "type", reservedFor: [NameType.Parameter] },
72
+ { name: "typeof", reservedFor: [NameType.Parameter] },
73
+ { name: "var", reservedFor: [NameType.Parameter] },
74
+ { name: "void", reservedFor: [NameType.Parameter] },
75
+ { name: "while", reservedFor: [NameType.Parameter] },
76
+ { name: "with", reservedFor: [NameType.Parameter] },
77
+ { name: "yield", reservedFor: [NameType.Parameter] },
78
+ { name: "arguments", reservedFor: [NameType.Parameter] }
79
+ ];
80
+ export var CasingConvention;
81
+ (function (CasingConvention) {
82
+ CasingConvention[CasingConvention["Pascal"] = 0] = "Pascal";
83
+ CasingConvention[CasingConvention["Camel"] = 1] = "Camel";
84
+ })(CasingConvention || (CasingConvention = {}));
85
+ export function guardReservedNames(name, nameType, customReservedNames = []) {
86
+ const suffix = getSuffix(nameType);
87
+ return [...ReservedModelNames, ...customReservedNames]
88
+ .filter((r) => r.reservedFor.includes(nameType))
89
+ .find((r) => r.name === name.toLowerCase())
90
+ ? `${name}${suffix}`
91
+ : name;
92
+ }
93
+ function getSuffix(nameType) {
94
+ switch (nameType) {
95
+ case NameType.File:
96
+ case NameType.Operation:
97
+ case NameType.Property:
98
+ return "";
99
+ case NameType.OperationGroup:
100
+ return "Operations";
101
+ case NameType.Parameter:
102
+ return "Param";
103
+ case NameType.Class:
104
+ case NameType.Interface:
105
+ default:
106
+ return "Model";
107
+ }
108
+ }
109
+ export function normalizeName(name, nameType, shouldGuard, customReservedNames = [], casingOverride) {
110
+ if (name.startsWith("$DO_NOT_NORMALIZE$")) {
111
+ return name.replace("$DO_NOT_NORMALIZE$", "");
112
+ }
113
+ const casingConvention = casingOverride ?? getCasingConvention(nameType);
114
+ const sanitizedName = sanitizeName(name);
115
+ const parts = getNameParts(sanitizedName);
116
+ const [firstPart, ...otherParts] = parts;
117
+ const normalizedFirstPart = toCasing(firstPart, casingConvention);
118
+ const normalizedParts = (otherParts || [])
119
+ .map((part) => part === "null" ? part : toCasing(part, CasingConvention.Pascal))
120
+ .join("");
121
+ const normalized = checkBeginning(`${normalizedFirstPart}${normalizedParts}`);
122
+ return shouldGuard
123
+ ? guardReservedNames(normalized, nameType, customReservedNames)
124
+ : normalized;
125
+ }
126
+ function checkBeginning(name) {
127
+ if (name.startsWith("@")) {
128
+ return name.substring(1);
129
+ }
130
+ return name;
131
+ }
132
+ function sanitizeName(name) {
133
+ // Remove \, " and ' from name string
134
+ return name.replace(/["'\\]+/g, "");
135
+ }
136
+ export function getModelsName(title) {
137
+ const spaceRemovedTitle = title.replace(/ /g, "");
138
+ return `${spaceRemovedTitle.replace("Client", "")}Models`;
139
+ }
140
+ export function getMappersName(title) {
141
+ const spaceRemovedTitle = title.replace(/ /g, "");
142
+ return `${spaceRemovedTitle.replace("Client", "")}Mappers`;
143
+ }
144
+ function getCasingConvention(nameType) {
145
+ switch (nameType) {
146
+ case NameType.Class:
147
+ case NameType.Interface:
148
+ case NameType.OperationGroup:
149
+ return CasingConvention.Pascal;
150
+ case NameType.File:
151
+ case NameType.Property:
152
+ case NameType.Operation:
153
+ case NameType.Parameter:
154
+ return CasingConvention.Camel;
155
+ }
156
+ }
157
+ /**
158
+ * TODO: Improve this function to handle cases such as TEST -> test. Current basic implementation
159
+ * results in TEST -> test or Test (depending on the CasingConvention). We should switch to relay
160
+ * on Modeler four namer for this once it is stable
161
+ */
162
+ function toCasing(str, casing) {
163
+ let value = str;
164
+ if (value === value.toUpperCase()) {
165
+ value = str.toLowerCase();
166
+ }
167
+ const firstChar = casing === CasingConvention.Pascal
168
+ ? value.charAt(0).toUpperCase()
169
+ : value.charAt(0).toLocaleLowerCase();
170
+ return `${firstChar}${value.substring(1)}`;
171
+ }
172
+ function getNameParts(name) {
173
+ let parts = name.split(/[-._ ]+/);
174
+ return parts.length > 0 ? parts : [name];
175
+ }
176
+ export function pascalCase(str) {
177
+ return str.charAt(0).toUpperCase() + str.slice(1);
178
+ }
179
+ export function camelCase(str, options = {}) {
180
+ const { uppercaseThreshold = 4 } = options;
181
+ const thresholdRegex = new RegExp(`^(?<![A-Z])[A-Z]{1,${uppercaseThreshold}}(?![A-Z])`);
182
+ if (!thresholdRegex.test(str)) {
183
+ return str;
184
+ }
185
+ return str.charAt(0).toLocaleLowerCase() + str.slice(1);
186
+ }
187
+ //# sourceMappingURL=nameUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nameUtils.js","sourceRoot":"","sources":["../../src/helpers/nameUtils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+ import { SchemaContext } from "../interfaces.js";
4
+ import { pascalCase } from "./nameUtils.js";
5
+ import { isObjectSchema } from "./schemaHelpers.js";
6
+ export function buildMethodDefinitions(methods, pathParams = []) {
7
+ const methodDefinitions = [];
8
+ for (const key of Object.keys(methods)) {
9
+ const verbMethods = methods[key];
10
+ for (const method of verbMethods) {
11
+ const description = method.description;
12
+ let areAllOptional = method.hasOptionalOptions;
13
+ methodDefinitions.push({
14
+ name: key,
15
+ ...(description && { docs: [{ description }] }),
16
+ parameters: [
17
+ ...getPathParamDefinitions(pathParams),
18
+ {
19
+ name: "options",
20
+ hasQuestionToken: areAllOptional,
21
+ type: pascalCase(method.optionsName)
22
+ }
23
+ ],
24
+ returnType: `StreamableMethod<${method.returnType}>`
25
+ });
26
+ }
27
+ }
28
+ return methodDefinitions;
29
+ }
30
+ export function getPathParamDefinitions(pathParams) {
31
+ return pathParams.map(({ name, type, description }) => {
32
+ return {
33
+ name,
34
+ type,
35
+ description
36
+ };
37
+ });
38
+ }
39
+ export function hasPagingOperations(model) {
40
+ return Boolean(model.annotations?.hasPaging);
41
+ }
42
+ export function hasPollingOperations(model) {
43
+ return Boolean(model.annotations?.hasLongRunning);
44
+ }
45
+ export function hasUnexpectedHelper(model) {
46
+ const pathDictionary = model.paths;
47
+ for (const details of Object.values(pathDictionary)) {
48
+ for (const methodDetails of Object.values(details.methods)) {
49
+ const successTypes = methodDetails[0].responseTypes.success;
50
+ const errorTypes = methodDetails[0].responseTypes.error;
51
+ if (successTypes.length > 0 && errorTypes.length > 0 && !!errorTypes[0]) {
52
+ return true;
53
+ }
54
+ }
55
+ }
56
+ return false;
57
+ }
58
+ export function hasInputModels(model) {
59
+ return hasSchemaContextObject(model, [SchemaContext.Input]);
60
+ }
61
+ export function hasOutputModels(model) {
62
+ return hasSchemaContextObject(model, [
63
+ SchemaContext.Output,
64
+ SchemaContext.Exception
65
+ ]);
66
+ }
67
+ function hasSchemaContextObject(model, schemaUsage) {
68
+ const objectSchemas = (model.schemas ?? []).filter((o) => isObjectSchema(o) &&
69
+ o.usage?.some((u) => schemaUsage.includes(u)));
70
+ return objectSchemas.length > 0;
71
+ }
72
+ //# sourceMappingURL=operationHelpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operationHelpers.js","sourceRoot":"","sources":["../../src/helpers/operationHelpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+ export function isDictionarySchema(schema) {
4
+ if (schema.type === "dictionary") {
5
+ return true;
6
+ }
7
+ return false;
8
+ }
9
+ export function isObjectSchema(schema) {
10
+ if (schema.type === "object") {
11
+ return true;
12
+ }
13
+ return false;
14
+ }
15
+ export function isConstantSchema(schema) {
16
+ if (schema.type === "constant") {
17
+ return true;
18
+ }
19
+ return false;
20
+ }
21
+ //# sourceMappingURL=schemaHelpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemaHelpers.js","sourceRoot":"","sources":["../../src/helpers/schemaHelpers.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,MAAM,UAAU,kBAAkB,CAAC,MAAc;IAC/C,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE;QAChC,OAAO,IAAI,CAAC;KACb;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;QAC5B,OAAO,IAAI,CAAC;KACb;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAc;IAC7C,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE;QAC9B,OAAO,IAAI,CAAC;KACb;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,42 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+ import { buildMethodDefinitions } from "./operationHelpers.js";
4
+ import { NameType, normalizeName } from "./nameUtils.js";
5
+ export function generateMethodShortcuts(paths) {
6
+ let keys = {};
7
+ for (const path in paths) {
8
+ const groupName = paths[path].operationGroupName;
9
+ const definitions = buildOperationDefinitions(paths[path]);
10
+ if (!keys[groupName]) {
11
+ keys[groupName] = definitions;
12
+ }
13
+ else {
14
+ keys[groupName] = [...keys[groupName], ...definitions];
15
+ }
16
+ }
17
+ const interfaces = [];
18
+ for (const interfaceName in keys) {
19
+ const methods = keys[interfaceName];
20
+ interfaces.push({
21
+ name: `${interfaceName}Operations`,
22
+ methods: methods,
23
+ isExported: true,
24
+ docs: [`Contains operations for ${interfaceName} operations`]
25
+ });
26
+ }
27
+ return interfaces;
28
+ }
29
+ function buildOperationDefinitions(path) {
30
+ let ops = [];
31
+ for (const verb in path.methods) {
32
+ const methods = path.methods[verb];
33
+ for (const method of methods) {
34
+ const name = normalizeName(method.operationName, NameType.Property);
35
+ const pathParams = path.pathParameters;
36
+ const methodDefinitions = buildMethodDefinitions({ [name]: [method] }, pathParams);
37
+ ops = [...ops, ...methodDefinitions];
38
+ }
39
+ }
40
+ return ops;
41
+ }
42
+ //# sourceMappingURL=shortcutMethods.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shortcutMethods.js","sourceRoot":"","sources":["../../src/helpers/shortcutMethods.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAQlC,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEzD,MAAM,UAAU,uBAAuB,CACrC,KAAY;IAEZ,IAAI,IAAI,GAA6D,EAAE,CAAC;IACxE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACxB,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,kBAAkB,CAAC;QACjD,MAAM,WAAW,GAAG,yBAAyB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3D,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YACpB,IAAI,CAAC,SAAS,CAAC,GAAG,WAAW,CAAC;SAC/B;aAAM;YACL,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,WAAW,CAAC,CAAC;SACxD;KACF;IAED,MAAM,UAAU,GAAkD,EAAE,CAAC;IAErE,KAAK,MAAM,aAAa,IAAI,IAAI,EAAE;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;QACpC,UAAU,CAAC,IAAI,CAAC;YACd,IAAI,EAAE,GAAG,aAAa,YAAY;YAClC,OAAO,EAAE,OAAO;YAChB,UAAU,EAAE,IAAI;YAChB,IAAI,EAAE,CAAC,2BAA2B,aAAa,aAAa,CAAC;SAC9D,CAAC,CAAC;KACJ;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,yBAAyB,CAChC,IAAkB;IAElB,IAAI,GAAG,GAA6C,EAAE,CAAC;IAEvD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC5B,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,aAAa,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACpE,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC;YACvC,MAAM,iBAAiB,GAAG,sBAAsB,CAC9C,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,EACpB,UAAU,CACX,CAAC;YACF,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,iBAAiB,CAAC,CAAC;SACtC;KACF;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}