@autorest/typescript 6.0.0-alpha.16.20220105.1 → 6.0.0-alpha.16.20220119.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.
- package/dist/src/autorestSession.d.ts +1 -0
- package/dist/src/autorestSession.d.ts.map +1 -1
- package/dist/src/autorestSession.js.map +1 -1
- package/dist/src/generators/indexGenerator.d.ts.map +1 -1
- package/dist/src/generators/indexGenerator.js +66 -3
- package/dist/src/generators/indexGenerator.js.map +1 -1
- package/dist/src/generators/static/packageFileGenerator.js +6 -0
- package/dist/src/generators/static/packageFileGenerator.js.map +1 -1
- package/dist/src/restLevelClient/generateClient.d.ts +1 -1
- package/dist/src/restLevelClient/generateClient.d.ts.map +1 -1
- package/dist/src/restLevelClient/generateClient.js +23 -193
- package/dist/src/restLevelClient/generateClient.js.map +1 -1
- package/dist/src/restLevelClient/generateClientDefinition.d.ts +6 -0
- package/dist/src/restLevelClient/generateClientDefinition.d.ts.map +1 -0
- package/dist/src/restLevelClient/generateClientDefinition.js +228 -0
- package/dist/src/restLevelClient/generateClientDefinition.js.map +1 -0
- package/dist/src/restLevelClient/generatePagingHelper.d.ts.map +1 -1
- package/dist/src/restLevelClient/generatePagingHelper.js +2 -1
- package/dist/src/restLevelClient/generatePagingHelper.js.map +1 -1
- package/dist/src/restLevelClient/generateParameterTypes.d.ts.map +1 -1
- package/dist/src/restLevelClient/generateParameterTypes.js +51 -1
- package/dist/src/restLevelClient/generateParameterTypes.js.map +1 -1
- package/dist/src/restLevelClient/generatePollingHelper.d.ts.map +1 -1
- package/dist/src/restLevelClient/generatePollingHelper.js +3 -1
- package/dist/src/restLevelClient/generatePollingHelper.js.map +1 -1
- package/dist/src/restLevelClient/generateResponseTypes.d.ts.map +1 -1
- package/dist/src/restLevelClient/generateResponseTypes.js +4 -1
- package/dist/src/restLevelClient/generateResponseTypes.js.map +1 -1
- package/dist/src/restLevelClient/generateRestLevel.d.ts.map +1 -1
- package/dist/src/restLevelClient/generateRestLevel.js +5 -1
- package/dist/src/restLevelClient/generateRestLevel.js.map +1 -1
- package/dist/src/restLevelClient/generateSchemaTypes.d.ts.map +1 -1
- package/dist/src/restLevelClient/generateSchemaTypes.js +5 -2
- package/dist/src/restLevelClient/generateSchemaTypes.js.map +1 -1
- package/dist/src/restLevelClient/generateTopLevelIndexFile.d.ts +4 -0
- package/dist/src/restLevelClient/generateTopLevelIndexFile.d.ts.map +1 -0
- package/dist/src/restLevelClient/generateTopLevelIndexFile.js +41 -0
- package/dist/src/restLevelClient/generateTopLevelIndexFile.js.map +1 -0
- package/dist/src/utils/autorestOptions.d.ts.map +1 -1
- package/dist/src/utils/autorestOptions.js +8 -0
- package/dist/src/utils/autorestOptions.js.map +1 -1
- package/package.json +2 -2
- package/src/autorestSession.ts +1 -0
- package/src/generators/indexGenerator.ts +75 -4
- package/src/generators/static/packageFileGenerator.ts +6 -0
- package/src/restLevelClient/generateClient.ts +25 -276
- package/src/restLevelClient/generateClientDefinition.ts +325 -0
- package/src/restLevelClient/generatePagingHelper.ts +3 -2
- package/src/restLevelClient/generateParameterTypes.ts +91 -2
- package/src/restLevelClient/generatePollingHelper.ts +3 -1
- package/src/restLevelClient/generateResponseTypes.ts +4 -1
- package/src/restLevelClient/generateRestLevel.ts +8 -2
- package/src/restLevelClient/generateSchemaTypes.ts +5 -3
- package/src/restLevelClient/generateTopLevelIndexFile.ts +41 -0
- package/src/utils/autorestOptions.ts +9 -0
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateTopLevelIndexFile = void 0;
|
|
4
|
+
const path = require("path");
|
|
5
|
+
const autorestSession_1 = require("../autorestSession");
|
|
6
|
+
const nameUtils_1 = require("../utils/nameUtils");
|
|
7
|
+
const batchOutputFolder = [];
|
|
8
|
+
function generateTopLevelIndexFile(model, project) {
|
|
9
|
+
const { batch, srcPath } = autorestSession_1.getAutorestOptions();
|
|
10
|
+
if (srcPath) {
|
|
11
|
+
const clientName = model.language.default.name;
|
|
12
|
+
const moduleName = nameUtils_1.normalizeName(clientName, nameUtils_1.NameType.File);
|
|
13
|
+
const relativePath = srcPath.replace('/src', '');
|
|
14
|
+
batchOutputFolder.push([relativePath, clientName, moduleName]);
|
|
15
|
+
}
|
|
16
|
+
if (batch && batch.length > 1 && batchOutputFolder.length === batch.length) {
|
|
17
|
+
const { srcPath } = autorestSession_1.getAutorestOptions();
|
|
18
|
+
const fileDirectory = path.join(srcPath, '../../');
|
|
19
|
+
const file = project.createSourceFile('/src/index.ts', undefined, {
|
|
20
|
+
overwrite: true
|
|
21
|
+
});
|
|
22
|
+
file.moveToDirectory(fileDirectory);
|
|
23
|
+
const allModules = [];
|
|
24
|
+
batchOutputFolder.forEach(item => {
|
|
25
|
+
file.addImportDeclaration({
|
|
26
|
+
namespaceImport: item[1],
|
|
27
|
+
moduleSpecifier: `${item[0]}`
|
|
28
|
+
});
|
|
29
|
+
file.addExportDeclaration({
|
|
30
|
+
moduleSpecifier: `${item[0]}/${item[2]}`,
|
|
31
|
+
namedExports: [`${item[1]} as ${item[1]}Client`]
|
|
32
|
+
});
|
|
33
|
+
allModules.push(item[1]);
|
|
34
|
+
});
|
|
35
|
+
file.addExportDeclaration({
|
|
36
|
+
namedExports: [...allModules]
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.generateTopLevelIndexFile = generateTopLevelIndexFile;
|
|
41
|
+
//# sourceMappingURL=generateTopLevelIndexFile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateTopLevelIndexFile.js","sourceRoot":"","sources":["../../../src/restLevelClient/generateTopLevelIndexFile.ts"],"names":[],"mappings":";;;AACA,6BAA6B;AAC7B,wDAAwD;AAExD,kDAA6D;AAE7D,MAAM,iBAAiB,GAA+B,EAAE,CAAC;AAEzD,SAAgB,yBAAyB,CAAC,KAAgB,EAAE,OAAgB;IACxE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,oCAAkB,EAAE,CAAC;IAChD,IAAI,OAAO,EAAE;QACT,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;QAC/C,MAAM,UAAU,GAAG,yBAAa,CAAC,UAAU,EAAE,oBAAQ,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;KAClE;IAED,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,iBAAiB,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE;QACxE,MAAM,EAAE,OAAO,EAAE,GAAG,oCAAkB,EAAE,CAAC;QACzC,MAAM,aAAa,GAAE,IAAI,CAAC,IAAI,CAAC,OAAiB,EAAE,QAAQ,CAAC,CAAC;QAC5D,MAAM,IAAI,GAAG,OAAO,CAAC,gBAAgB,CAAC,eAAe,EAAE,SAAS,EAAE;YAC9D,SAAS,EAAE,IAAI;SAClB,CAAC,CAAC;QACH,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;QACpC,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC7B,IAAI,CAAC,oBAAoB,CAAC;gBACtB,eAAe,EAAE,IAAI,CAAC,CAAC,CAAC;gBACxB,eAAe,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE;aAChC,CAAC,CAAC;YACH,IAAI,CAAC,oBAAoB,CAAC;gBACtB,eAAe,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE;gBACxC,YAAY,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;aACnD,CAAC,CAAA;YACF,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,oBAAoB,CAAC;YACtB,YAAY,EAAE,CAAC,GAAG,UAAU,CAAC;SAChC,CAAC,CAAC;KACN;AACL,CAAC;AAhCD,8DAgCC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autorestOptions.d.ts","sourceRoot":"","sources":["../../../src/utils/autorestOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAuB,MAAM,oBAAoB,CAAC;AAK1E;;GAEG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,eAAe,CAAC,
|
|
1
|
+
{"version":3,"file":"autorestOptions.d.ts","sourceRoot":"","sources":["../../../src/utils/autorestOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAuB,MAAM,oBAAoB,CAAC;AAK1E;;GAEG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,eAAe,CAAC,CAwDvE;AAgLD,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,CA8B/B"}
|
|
@@ -42,6 +42,7 @@ function extractAutorestOptions() {
|
|
|
42
42
|
const headAsBoolean = yield getHeadAsBoolean(host);
|
|
43
43
|
const isTestPackage = yield getIsTestPackage(host);
|
|
44
44
|
const generateTest = yield getGenerateTest(host);
|
|
45
|
+
const batch = yield getBatch(host);
|
|
45
46
|
const generateSample = yield getGenerateSample(host);
|
|
46
47
|
return {
|
|
47
48
|
azureArm,
|
|
@@ -67,6 +68,7 @@ function extractAutorestOptions() {
|
|
|
67
68
|
headAsBoolean,
|
|
68
69
|
isTestPackage,
|
|
69
70
|
generateTest,
|
|
71
|
+
batch,
|
|
70
72
|
generateSample
|
|
71
73
|
};
|
|
72
74
|
});
|
|
@@ -268,4 +270,10 @@ function getAzureOutputDirectoryPath(host) {
|
|
|
268
270
|
: undefined;
|
|
269
271
|
});
|
|
270
272
|
}
|
|
273
|
+
function getBatch(host) {
|
|
274
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
275
|
+
const batch = yield host.getValue('batch');
|
|
276
|
+
return batch;
|
|
277
|
+
});
|
|
278
|
+
}
|
|
271
279
|
//# sourceMappingURL=autorestOptions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autorestOptions.js","sourceRoot":"","sources":["../../../src/utils/autorestOptions.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6DAA0E;AAC1E,wDAA0E;AAG1E,2CAAsD;AAEtD;;GAEG;AACH,SAAsB,sBAAsB;;QAC1C,MAAM,IAAI,GAAG,yBAAO,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,eAAe,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACvD,MAAM,WAAW,GAAG,MAAM,qBAAqB,CAAC,IAAI,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,cAAc,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,uBAAuB,GAAG,MAAM,0BAA0B,CAAC,IAAI,CAAC,CAAC;QACvE,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,gBAAgB,GAAG,MAAM,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACzD,MAAM,cAAc,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACnD,MAAM,gBAAgB,GAAG,MAAM,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACzD,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEnC,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;QAC/C,MAAM,2BAA2B,GAAG,MAAM,wBAAwB,CAAC,IAAI,CAAC,CAAC;QACzE,MAAM,wBAAwB,GAAG,MAAM,2BAA2B,CAAC,IAAI,CAAC,CAAC;QACzE,MAAM,uBAAuB,GAAG,MAAM,0BAA0B,CAAC,IAAI,CAAC,CAAC;QACvE,MAAM,kBAAkB,GAAG,MAAM,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAC7D,MAAM,oBAAoB,GAAG,MAAM,2BAA2B,CAAC,IAAI,CAAC,CAAC;QACrE,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACnD,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACnD,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,cAAc,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAErD,OAAO;YACL,QAAQ;YACR,cAAc;YACd,uBAAuB;YACvB,gBAAgB;YAChB,eAAe;YACf,WAAW;YACX,OAAO;YACP,UAAU;YACV,cAAc;YACd,aAAa;YACb,WAAW;YACX,gBAAgB;YAChB,SAAS;YACT,WAAW;YACX,wBAAwB;YACxB,uBAAuB;YACvB,2BAA2B;YAC3B,kBAAkB;YAClB,KAAK;YACL,oBAAoB;YACpB,aAAa;YACb,aAAa;YACb,YAAY;YACZ,cAAc;SACf,CAAC;IACJ,CAAC;CAAA;
|
|
1
|
+
{"version":3,"file":"autorestOptions.js","sourceRoot":"","sources":["../../../src/utils/autorestOptions.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@autorest/typescript",
|
|
3
|
-
"version": "6.0.0-alpha.16.
|
|
3
|
+
"version": "6.0.0-alpha.16.20220119.1",
|
|
4
4
|
"scripts": {
|
|
5
5
|
"build": "tsc -p . && npm run copyFiles",
|
|
6
6
|
"build:test:browser": "tsc -p tsconfig.browser-test.json && webpack --config webpack.config.test.js",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"dependencies": {
|
|
39
39
|
"@autorest/codemodel": "^4.17.0",
|
|
40
40
|
"@autorest/extension-base": "^3.4.1",
|
|
41
|
-
"@azure-rest/core-client": "1.0.0-alpha.
|
|
41
|
+
"@azure-rest/core-client": "1.0.0-alpha.20220112.1",
|
|
42
42
|
"@autorest/testmodeler": "^1.0.4",
|
|
43
43
|
"@azure-tools/codegen": "^2.5.294",
|
|
44
44
|
"@azure/core-client": "^1.3.0",
|
package/src/autorestSession.ts
CHANGED
|
@@ -12,7 +12,7 @@ export function generateIndexFile(
|
|
|
12
12
|
project: Project,
|
|
13
13
|
clientDetails?: ClientDetails
|
|
14
14
|
) {
|
|
15
|
-
const { restLevelClient, srcPath } = getAutorestOptions();
|
|
15
|
+
const { restLevelClient, srcPath, batch } = getAutorestOptions();
|
|
16
16
|
const indexFile = project.createSourceFile(`${srcPath}/index.ts`, undefined, {
|
|
17
17
|
overwrite: true
|
|
18
18
|
});
|
|
@@ -24,11 +24,79 @@ export function generateIndexFile(
|
|
|
24
24
|
);
|
|
25
25
|
}
|
|
26
26
|
generateHLCIndex(clientDetails, indexFile);
|
|
27
|
-
} else {
|
|
27
|
+
} else if (!batch || batch?.length === 1) {
|
|
28
|
+
// if we are generate single client package for RLC
|
|
28
29
|
generateRLCIndex(indexFile);
|
|
30
|
+
} else {
|
|
31
|
+
generateRLCIndexForMultiClient(indexFile);
|
|
29
32
|
}
|
|
30
33
|
}
|
|
31
34
|
|
|
35
|
+
// to generate a index.ts for each single module inside the multi client RLC package
|
|
36
|
+
function generateRLCIndexForMultiClient(file: SourceFile) {
|
|
37
|
+
const { model } = getSession();
|
|
38
|
+
const clientName = model.language.default.name;
|
|
39
|
+
const moduleName = normalizeName(clientName, NameType.File);
|
|
40
|
+
|
|
41
|
+
file.addImportDeclaration({
|
|
42
|
+
namespaceImport: "Parameters",
|
|
43
|
+
moduleSpecifier: "./parameters"
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
file.addImportDeclaration({
|
|
47
|
+
namespaceImport: "Responses",
|
|
48
|
+
moduleSpecifier: "./responses"
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
file.addImportDeclaration({
|
|
52
|
+
namespaceImport: "Client",
|
|
53
|
+
moduleSpecifier: "./clientDefinitions"
|
|
54
|
+
})
|
|
55
|
+
|
|
56
|
+
const exports = ['Parameters', 'Responses', 'Client'];
|
|
57
|
+
if (hasInputModels(model)) {
|
|
58
|
+
file.addImportDeclaration({
|
|
59
|
+
namespaceImport: "Models",
|
|
60
|
+
moduleSpecifier: "./models",
|
|
61
|
+
});
|
|
62
|
+
exports.push("Models");
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
if (hasOutputModels(model)) {
|
|
66
|
+
file.addImportDeclaration({
|
|
67
|
+
namespaceImport: "OutputModels",
|
|
68
|
+
moduleSpecifier: "./outputModels",
|
|
69
|
+
});
|
|
70
|
+
exports.push("OutputModels");
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
if (hasPagingOperations(model)) {
|
|
74
|
+
file.addImportDeclaration({
|
|
75
|
+
namespaceImport: "PaginateHelper",
|
|
76
|
+
moduleSpecifier: './paginateHelper',
|
|
77
|
+
});
|
|
78
|
+
exports.push("PaginateHelper");
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
if (hasPollingOperations(model)) {
|
|
82
|
+
file.addImportDeclaration({
|
|
83
|
+
namespaceImport: 'PollingHelper',
|
|
84
|
+
moduleSpecifier: './pollingHelper',
|
|
85
|
+
})
|
|
86
|
+
exports.push("PollingHelper");
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
file.addExportDeclarations([
|
|
90
|
+
{
|
|
91
|
+
moduleSpecifier: `./${moduleName}`,
|
|
92
|
+
namedExports: [`${clientName} as ${clientName}Client`],
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
namedExports: [...exports]
|
|
96
|
+
}
|
|
97
|
+
]);
|
|
98
|
+
}
|
|
99
|
+
|
|
32
100
|
function generateRLCIndex(file: SourceFile) {
|
|
33
101
|
const { model } = getSession();
|
|
34
102
|
const clientName = model.language.default.name;
|
|
@@ -41,13 +109,16 @@ function generateRLCIndex(file: SourceFile) {
|
|
|
41
109
|
|
|
42
110
|
file.addExportDeclarations([
|
|
43
111
|
{
|
|
44
|
-
moduleSpecifier: `./${moduleName}
|
|
112
|
+
moduleSpecifier: `./${moduleName}`,
|
|
45
113
|
},
|
|
46
114
|
{
|
|
47
115
|
moduleSpecifier: "./parameters"
|
|
48
116
|
},
|
|
49
117
|
{
|
|
50
118
|
moduleSpecifier: "./responses"
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
moduleSpecifier: "./clientDefinitions"
|
|
51
122
|
}
|
|
52
123
|
]);
|
|
53
124
|
|
|
@@ -82,7 +153,7 @@ function generateRLCIndex(file: SourceFile) {
|
|
|
82
153
|
}
|
|
83
154
|
]);
|
|
84
155
|
}
|
|
85
|
-
|
|
156
|
+
|
|
86
157
|
file.addExportAssignment({
|
|
87
158
|
expression: clientName,
|
|
88
159
|
isExportEquals: false
|
|
@@ -294,6 +294,12 @@ function regularAutorestPackage(
|
|
|
294
294
|
docs: "echo skipped"
|
|
295
295
|
},
|
|
296
296
|
sideEffects: false,
|
|
297
|
+
"//metadata":{
|
|
298
|
+
constantPaths: [{
|
|
299
|
+
path: `src/${clientDetails.name}.ts`,
|
|
300
|
+
prefix: "packageDetails",
|
|
301
|
+
}],
|
|
302
|
+
},
|
|
297
303
|
autoPublish: true
|
|
298
304
|
};
|
|
299
305
|
if (generateTest) {
|
|
@@ -5,118 +5,40 @@ import {
|
|
|
5
5
|
ImplementationLocation
|
|
6
6
|
} from "@autorest/codemodel";
|
|
7
7
|
|
|
8
|
-
import { getResponseTypeName } from "./operationHelpers";
|
|
9
|
-
|
|
10
8
|
import {
|
|
11
|
-
CallSignatureDeclarationStructure,
|
|
12
9
|
Project,
|
|
13
|
-
SourceFile,
|
|
14
10
|
StatementStructures,
|
|
15
11
|
StructureKind,
|
|
16
12
|
VariableDeclarationKind,
|
|
17
13
|
VariableStatementStructure,
|
|
18
|
-
WriterFunction
|
|
19
|
-
Writers
|
|
14
|
+
WriterFunction
|
|
20
15
|
} from "ts-morph";
|
|
16
|
+
import * as path from 'path';
|
|
21
17
|
|
|
22
18
|
import { getAutorestOptions, getSession } from "../autorestSession";
|
|
23
19
|
import { transformBaseUrl } from "../transforms/urlTransforms";
|
|
24
20
|
import { NameType, normalizeName } from "../utils/nameUtils";
|
|
25
|
-
import { isConstantSchema
|
|
21
|
+
import { isConstantSchema } from "./schemaHelpers";
|
|
26
22
|
import { getLanguageMetadata } from "../utils/languageHelpers";
|
|
27
|
-
import {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
getPathParamDefinitions
|
|
31
|
-
} from "./helpers/operationHelpers";
|
|
32
|
-
import {
|
|
33
|
-
generateMethodShortcutImplementation,
|
|
34
|
-
generateMethodShortcuts
|
|
35
|
-
} from "./generateMethodShortcuts";
|
|
36
|
-
import { Methods, PathParameter, Paths } from "./interfaces";
|
|
23
|
+
import { generateMethodShortcutImplementation } from "./generateMethodShortcuts";
|
|
24
|
+
import { Paths } from "./interfaces";
|
|
25
|
+
import { pathDictionary } from './generateClientDefinition';
|
|
37
26
|
|
|
38
|
-
export function
|
|
27
|
+
export function generateClient(model: CodeModel, project: Project) {
|
|
39
28
|
const name = normalizeName(
|
|
40
29
|
getLanguageMetadata(model.language).name,
|
|
41
30
|
NameType.File
|
|
42
31
|
);
|
|
43
|
-
const
|
|
32
|
+
const { srcPath } = getAutorestOptions();
|
|
33
|
+
const clientFile = project.createSourceFile(path.join(srcPath, `${name}.ts`), undefined, {
|
|
44
34
|
overwrite: true
|
|
45
35
|
});
|
|
46
36
|
|
|
47
37
|
// Get all paths
|
|
48
|
-
const importedParameters = new Set<string>();
|
|
49
|
-
const importedResponses = new Set<string>();
|
|
50
|
-
const pathDictionary: Paths = {};
|
|
51
|
-
for (const operationGroup of model.operationGroups) {
|
|
52
|
-
for (const operation of operationGroup.operations) {
|
|
53
|
-
const operationName = getLanguageMetadata(operation.language).name;
|
|
54
|
-
const operationDescription = getLanguageMetadata(operation.language)
|
|
55
|
-
.description;
|
|
56
|
-
const pathParameters: PathParameter[] =
|
|
57
|
-
operation.parameters
|
|
58
|
-
?.filter(p => p.protocol.http?.in === ParameterLocation.Path)
|
|
59
|
-
.map(p => {
|
|
60
|
-
const languageMetadata = getLanguageMetadata(p.language);
|
|
61
|
-
return {
|
|
62
|
-
name: languageMetadata.serializedName || languageMetadata.name,
|
|
63
|
-
schema: p.schema,
|
|
64
|
-
description: languageMetadata.description
|
|
65
|
-
};
|
|
66
|
-
}) || [];
|
|
67
|
-
const path: string = operation.requests?.[0].protocol.http?.path;
|
|
68
|
-
pathParameters.sort(function compare(a: PathParameter, b: PathParameter) {
|
|
69
|
-
return path.indexOf(a.name) - path.indexOf(b.name);
|
|
70
|
-
});
|
|
71
|
-
|
|
72
|
-
for (const request of operation.requests || []) {
|
|
73
|
-
const path: string = (request.protocol.http?.path as string) || "";
|
|
74
|
-
const method = request.protocol.http?.method;
|
|
75
|
-
|
|
76
|
-
if (path && method) {
|
|
77
|
-
if (!pathDictionary[path]) {
|
|
78
|
-
pathDictionary[path] = {
|
|
79
|
-
pathParameters,
|
|
80
|
-
methods: {},
|
|
81
|
-
name: operationName
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
const hasOptionalOptions = !hasRequiredOptions(operation);
|
|
85
|
-
|
|
86
|
-
const newMethod = {
|
|
87
|
-
description: operationDescription,
|
|
88
|
-
optionsName: getOperationOptionsType(operation, importedParameters),
|
|
89
|
-
hasOptionalOptions,
|
|
90
|
-
returnType: `Promise<${getOperationReturnType(
|
|
91
|
-
operation,
|
|
92
|
-
importedResponses
|
|
93
|
-
)}>`
|
|
94
|
-
};
|
|
95
|
-
|
|
96
|
-
if (pathDictionary[path].methods[`${method}`]) {
|
|
97
|
-
pathDictionary[path].methods[`${method}`].push(newMethod);
|
|
98
|
-
} else {
|
|
99
|
-
pathDictionary[path].methods[`${method}`] = [newMethod];
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
writeShortcutInterface(model, pathDictionary, clientFile);
|
|
107
|
-
clientFile.addInterface({
|
|
108
|
-
name: "Routes",
|
|
109
|
-
isExported: true,
|
|
110
|
-
callSignatures: getPathFirstRoutesInterfaceDefinition(
|
|
111
|
-
pathDictionary,
|
|
112
|
-
clientFile
|
|
113
|
-
)
|
|
114
|
-
});
|
|
115
|
-
|
|
116
38
|
const clientName = getLanguageMetadata(model.language).name;
|
|
117
39
|
const uriParameter = getClientUriParameter();
|
|
118
40
|
|
|
119
|
-
const { addCredentials, credentialKeyHeaderName } = getAutorestOptions();
|
|
41
|
+
const { addCredentials, credentialKeyHeaderName, batch } = getAutorestOptions();
|
|
120
42
|
const credentialTypes = addCredentials ? ["TokenCredential"] : [];
|
|
121
43
|
|
|
122
44
|
if (credentialKeyHeaderName) {
|
|
@@ -129,76 +51,28 @@ export function generatePathFirstClient(model: CodeModel, project: Project) {
|
|
|
129
51
|
? []
|
|
130
52
|
: [{ name: "credentials", type: credentialTypes.join(" | ") }])
|
|
131
53
|
];
|
|
132
|
-
const
|
|
54
|
+
const clientInterfaceName = `${clientName}RestClient`;
|
|
133
55
|
|
|
134
|
-
const
|
|
135
|
-
|
|
136
|
-
let shortcutElements = !rlcShortcut
|
|
137
|
-
? []
|
|
138
|
-
: model.operationGroups.map(og => {
|
|
139
|
-
const groupName = og.language.default.name;
|
|
140
|
-
const name = normalizeName(groupName, NameType.Property);
|
|
141
|
-
const interfaceName = normalizeName(
|
|
142
|
-
`${name}Operations`,
|
|
143
|
-
NameType.Interface
|
|
144
|
-
);
|
|
145
|
-
return { name, type: interfaceName };
|
|
146
|
-
});
|
|
147
|
-
|
|
148
|
-
// There may be operations without an operation group, those shortcut
|
|
149
|
-
// methods need to be handled differently.
|
|
150
|
-
const shortcutsInOperationGroup = shortcutElements.filter(s => s.name);
|
|
151
|
-
|
|
152
|
-
clientFile.addTypeAlias({
|
|
153
|
-
isExported: true,
|
|
154
|
-
name: clientIterfaceName,
|
|
155
|
-
type: Writers.intersectionType(
|
|
156
|
-
"Client",
|
|
157
|
-
Writers.objectType({
|
|
158
|
-
properties: [
|
|
159
|
-
{ name: "path", type: "Routes" },
|
|
160
|
-
...shortcutsInOperationGroup
|
|
161
|
-
]
|
|
162
|
-
}),
|
|
163
|
-
// If the length of shortcutMethods in operation group and all shortcutMethods
|
|
164
|
-
// is the same, then we don't have any operations at the client level
|
|
165
|
-
// Otherwise we need to make the client interface name an union with the
|
|
166
|
-
// definition of all client level shortcut methods
|
|
167
|
-
...(shortcutsInOperationGroup.length !== shortcutElements.length
|
|
168
|
-
? [`ClientOperations`]
|
|
169
|
-
: [])
|
|
170
|
-
)
|
|
171
|
-
});
|
|
172
|
-
|
|
173
|
-
clientFile.addFunction({
|
|
56
|
+
const functionStatement = {
|
|
174
57
|
isExported: true,
|
|
175
|
-
name: clientName
|
|
58
|
+
name: `${clientName}`,
|
|
176
59
|
parameters: [
|
|
177
60
|
...commonClientParams,
|
|
178
61
|
{ name: "options", type: "ClientOptions = {}" }
|
|
179
62
|
],
|
|
180
|
-
returnType:
|
|
181
|
-
isDefaultExport:
|
|
182
|
-
statements: getClientFactoryBody(
|
|
183
|
-
});
|
|
184
|
-
|
|
185
|
-
if (importedParameters.size) {
|
|
186
|
-
clientFile.addImportDeclaration({
|
|
187
|
-
namedImports: [...importedParameters],
|
|
188
|
-
moduleSpecifier: "./parameters"
|
|
189
|
-
});
|
|
63
|
+
returnType: clientInterfaceName,
|
|
64
|
+
isDefaultExport: false,
|
|
65
|
+
statements: getClientFactoryBody(clientInterfaceName, pathDictionary)
|
|
190
66
|
}
|
|
191
67
|
|
|
192
|
-
if (
|
|
193
|
-
|
|
194
|
-
namedImports: [...importedResponses],
|
|
195
|
-
moduleSpecifier: "./responses"
|
|
196
|
-
});
|
|
68
|
+
if (!batch || batch.length === 1) {
|
|
69
|
+
functionStatement.isDefaultExport = true;
|
|
197
70
|
}
|
|
71
|
+
clientFile.addFunction(functionStatement);
|
|
198
72
|
|
|
199
73
|
clientFile.addImportDeclarations([
|
|
200
74
|
{
|
|
201
|
-
namedImports: ["getClient", "ClientOptions"
|
|
75
|
+
namedImports: ["getClient", "ClientOptions"],
|
|
202
76
|
moduleSpecifier: "@azure-rest/core-client"
|
|
203
77
|
}
|
|
204
78
|
]);
|
|
@@ -207,65 +81,14 @@ export function generatePathFirstClient(model: CodeModel, project: Project) {
|
|
|
207
81
|
{
|
|
208
82
|
namedImports: credentialTypes,
|
|
209
83
|
moduleSpecifier: "@azure/core-auth"
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
namedImports: [`${clientName}RestClient`],
|
|
87
|
+
moduleSpecifier: './clientDefinitions'
|
|
210
88
|
}
|
|
211
89
|
]);
|
|
212
90
|
}
|
|
213
91
|
|
|
214
|
-
function writeShortcutInterface(
|
|
215
|
-
model: CodeModel,
|
|
216
|
-
pathDictionary: Paths,
|
|
217
|
-
clientFile: SourceFile
|
|
218
|
-
) {
|
|
219
|
-
const { rlcShortcut } = getAutorestOptions();
|
|
220
|
-
if (!rlcShortcut) {
|
|
221
|
-
return;
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
// Create a map of Operation group descriptions
|
|
225
|
-
const descriptions = model.operationGroups.reduce((map, current) => {
|
|
226
|
-
const { name, description } = current.language.default;
|
|
227
|
-
map.set(name, description);
|
|
228
|
-
|
|
229
|
-
return map;
|
|
230
|
-
}, new Map<string, string>());
|
|
231
|
-
|
|
232
|
-
const shortcuts = generateMethodShortcuts(model, pathDictionary);
|
|
233
|
-
|
|
234
|
-
for (const group of Object.keys(shortcuts)) {
|
|
235
|
-
const groupName = normalizeName(group, NameType.Interface) || "Client";
|
|
236
|
-
const groupOperations = shortcuts[group];
|
|
237
|
-
|
|
238
|
-
clientFile.addInterface({
|
|
239
|
-
docs: [
|
|
240
|
-
descriptions.get(group) ||
|
|
241
|
-
`Contains operations for ${groupName} operations`
|
|
242
|
-
],
|
|
243
|
-
name: `${groupName}Operations`,
|
|
244
|
-
isExported: true,
|
|
245
|
-
methods: groupOperations
|
|
246
|
-
});
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
function hasRequiredOptions(operation: Operation) {
|
|
251
|
-
return getOperationParameters(operation)
|
|
252
|
-
.filter(p => p.implementation === ImplementationLocation.Method)
|
|
253
|
-
.filter(p => ["query", "body", "headers"].includes(p.protocol.http?.in))
|
|
254
|
-
.some(p => p.required);
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
function getOperationOptionsType(
|
|
258
|
-
operation: Operation,
|
|
259
|
-
importedParameters = new Set<string>()
|
|
260
|
-
) {
|
|
261
|
-
const paramsName = `${
|
|
262
|
-
getLanguageMetadata(operation.language).name
|
|
263
|
-
}Parameters`;
|
|
264
|
-
importedParameters.add(paramsName);
|
|
265
|
-
|
|
266
|
-
return paramsName;
|
|
267
|
-
}
|
|
268
|
-
|
|
269
92
|
function getClientFactoryBody(
|
|
270
93
|
clientTypeName: string,
|
|
271
94
|
paths: Paths
|
|
@@ -375,82 +198,8 @@ function getApiVersion(): string | undefined {
|
|
|
375
198
|
return undefined;
|
|
376
199
|
}
|
|
377
200
|
|
|
378
|
-
function getOperationReturnType(
|
|
379
|
-
operation: Operation,
|
|
380
|
-
importedResponses = new Set<string>()
|
|
381
|
-
) {
|
|
382
|
-
let returnType: string = "HttpResponse";
|
|
383
|
-
if (operation.responses && operation.responses.length) {
|
|
384
|
-
const responses = [...operation.responses, ...(operation.exceptions || [])];
|
|
385
|
-
|
|
386
|
-
const responseTypes = responses
|
|
387
|
-
.filter(
|
|
388
|
-
r => r.protocol.http?.statusCodes && r.protocol.http?.statusCodes.length
|
|
389
|
-
)
|
|
390
|
-
.map(r => {
|
|
391
|
-
const responseName = getResponseTypeName(operation, r);
|
|
392
|
-
importedResponses.add(responseName);
|
|
393
|
-
return responseName;
|
|
394
|
-
});
|
|
395
|
-
|
|
396
|
-
if (responseTypes.length) {
|
|
397
|
-
returnType = responseTypes.join(" | ");
|
|
398
|
-
}
|
|
399
|
-
}
|
|
400
|
-
|
|
401
|
-
return returnType;
|
|
402
|
-
}
|
|
403
|
-
|
|
404
|
-
function getPathFirstRoutesInterfaceDefinition(
|
|
405
|
-
paths: Paths,
|
|
406
|
-
sourcefile: SourceFile
|
|
407
|
-
): CallSignatureDeclarationStructure[] {
|
|
408
|
-
const signatures: CallSignatureDeclarationStructure[] = [];
|
|
409
|
-
for (const key of Object.keys(paths)) {
|
|
410
|
-
generatePathFirstRouteMethodsDefinition(
|
|
411
|
-
paths[key].name,
|
|
412
|
-
paths[key].methods,
|
|
413
|
-
sourcefile
|
|
414
|
-
);
|
|
415
|
-
const pathParams = paths[key].pathParameters;
|
|
416
|
-
signatures.push({
|
|
417
|
-
docs: [
|
|
418
|
-
`Resource for '${key
|
|
419
|
-
.replace(/}/g, "\\}")
|
|
420
|
-
.replace(
|
|
421
|
-
/{/g,
|
|
422
|
-
"\\{"
|
|
423
|
-
)}' has methods for the following verbs: ${Object.keys(
|
|
424
|
-
paths[key].methods
|
|
425
|
-
).join(", ")}`
|
|
426
|
-
],
|
|
427
|
-
parameters: [
|
|
428
|
-
{ name: "path", type: `"${key}"` },
|
|
429
|
-
...getPathParamDefinitions(pathParams)
|
|
430
|
-
],
|
|
431
|
-
returnType: paths[key].name,
|
|
432
|
-
kind: StructureKind.CallSignature
|
|
433
|
-
});
|
|
434
|
-
}
|
|
435
|
-
return signatures;
|
|
436
|
-
}
|
|
437
|
-
|
|
438
201
|
function getClientUriParameter() {
|
|
439
202
|
const { model } = getSession();
|
|
440
203
|
const { parameterName } = transformBaseUrl(model);
|
|
441
204
|
return parameterName;
|
|
442
|
-
}
|
|
443
|
-
|
|
444
|
-
function generatePathFirstRouteMethodsDefinition(
|
|
445
|
-
operationName: string,
|
|
446
|
-
methods: Methods,
|
|
447
|
-
file: SourceFile
|
|
448
|
-
): void {
|
|
449
|
-
const methodDefinitions = buildMethodDefinitions(methods);
|
|
450
|
-
|
|
451
|
-
file.addInterface({
|
|
452
|
-
methods: methodDefinitions,
|
|
453
|
-
name: operationName,
|
|
454
|
-
isExported: true
|
|
455
|
-
});
|
|
456
|
-
}
|
|
205
|
+
}
|