@azure-tools/typespec-ts 0.15.0 → 0.16.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.
- package/CHANGELOG.md +10 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +14 -17
- package/dist/src/index.js.map +1 -1
- package/dist/src/lib.d.ts.map +1 -1
- package/dist/src/lib.js +3 -3
- package/dist/src/lib.js.map +1 -1
- package/dist/src/modular/buildClassicalClient.d.ts +2 -3
- package/dist/src/modular/buildClassicalClient.d.ts.map +1 -1
- package/dist/src/modular/buildClassicalClient.js +26 -12
- package/dist/src/modular/buildClassicalClient.js.map +1 -1
- package/dist/src/modular/buildClientContext.d.ts +3 -3
- package/dist/src/modular/buildClientContext.d.ts.map +1 -1
- package/dist/src/modular/buildClientContext.js +5 -4
- package/dist/src/modular/buildClientContext.js.map +1 -1
- package/dist/src/modular/buildCodeModel.d.ts +3 -2
- package/dist/src/modular/buildCodeModel.d.ts.map +1 -1
- package/dist/src/modular/buildCodeModel.js +141 -54
- package/dist/src/modular/buildCodeModel.js.map +1 -1
- package/dist/src/modular/buildOperations.d.ts +2 -2
- package/dist/src/modular/buildOperations.d.ts.map +1 -1
- package/dist/src/modular/buildOperations.js +15 -8
- package/dist/src/modular/buildOperations.js.map +1 -1
- package/dist/src/modular/buildProjectFiles.js +2 -2
- package/dist/src/modular/buildProjectFiles.js.map +1 -1
- package/dist/src/modular/buildRootIndex.d.ts +4 -4
- package/dist/src/modular/buildRootIndex.d.ts.map +1 -1
- package/dist/src/modular/buildRootIndex.js +12 -5
- package/dist/src/modular/buildRootIndex.js.map +1 -1
- package/dist/src/modular/buildSubpathIndex.d.ts +2 -2
- package/dist/src/modular/buildSubpathIndex.d.ts.map +1 -1
- package/dist/src/modular/buildSubpathIndex.js +7 -4
- package/dist/src/modular/buildSubpathIndex.js.map +1 -1
- package/dist/src/modular/emitModels.d.ts +3 -3
- package/dist/src/modular/emitModels.d.ts.map +1 -1
- package/dist/src/modular/emitModels.js +28 -18
- package/dist/src/modular/emitModels.js.map +1 -1
- package/dist/src/modular/helpers/clientHelpers.js +1 -1
- package/dist/src/modular/helpers/clientHelpers.js.map +1 -1
- package/dist/src/modular/helpers/operationHelpers.d.ts +1 -1
- package/dist/src/modular/helpers/operationHelpers.d.ts.map +1 -1
- package/dist/src/modular/helpers/operationHelpers.js +140 -77
- package/dist/src/modular/helpers/operationHelpers.js.map +1 -1
- package/dist/src/modular/helpers/typeHelpers.d.ts +2 -2
- package/dist/src/modular/helpers/typeHelpers.d.ts.map +1 -1
- package/dist/src/modular/helpers/typeHelpers.js +13 -7
- package/dist/src/modular/helpers/typeHelpers.js.map +1 -1
- package/dist/src/modular/modularCodeModel.d.ts +11 -0
- package/dist/src/modular/modularCodeModel.d.ts.map +1 -1
- package/dist/src/transform/transformHelperFunctionDetails.js +3 -4
- package/dist/src/transform/transformHelperFunctionDetails.js.map +1 -1
- package/dist/src/transform/transformParameters.d.ts +0 -10
- package/dist/src/transform/transformParameters.d.ts.map +1 -1
- package/dist/src/transform/transformParameters.js +7 -51
- package/dist/src/transform/transformParameters.js.map +1 -1
- package/dist/src/transform/transformResponses.js +3 -4
- package/dist/src/transform/transformResponses.js.map +1 -1
- package/dist/src/transform/transformSchemas.d.ts.map +1 -1
- package/dist/src/transform/transformSchemas.js +4 -8
- package/dist/src/transform/transformSchemas.js.map +1 -1
- package/dist/src/transform/transformTelemetryInfo.d.ts.map +1 -1
- package/dist/src/transform/transformTelemetryInfo.js +3 -10
- package/dist/src/transform/transformTelemetryInfo.js.map +1 -1
- package/dist/src/transform/transfromRLCOptions.d.ts.map +1 -1
- package/dist/src/transform/transfromRLCOptions.js +48 -9
- package/dist/src/transform/transfromRLCOptions.js.map +1 -1
- package/dist/src/utils/modelUtils.d.ts +2 -1
- package/dist/src/utils/modelUtils.d.ts.map +1 -1
- package/dist/src/utils/modelUtils.js +83 -73
- package/dist/src/utils/modelUtils.js.map +1 -1
- package/dist/src/utils/operationUtil.d.ts +15 -1
- package/dist/src/utils/operationUtil.d.ts.map +1 -1
- package/dist/src/utils/operationUtil.js +82 -3
- package/dist/src/utils/operationUtil.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +13 -11
- package/src/index.ts +24 -51
- package/src/lib.ts +3 -3
- package/src/modular/buildClassicalClient.ts +29 -16
- package/src/modular/buildClientContext.ts +8 -9
- package/src/modular/buildCodeModel.ts +183 -60
- package/src/modular/buildOperations.ts +16 -11
- package/src/modular/buildProjectFiles.ts +2 -2
- package/src/modular/buildRootIndex.ts +19 -12
- package/src/modular/buildSubpathIndex.ts +10 -8
- package/src/modular/emitModels.ts +35 -24
- package/src/modular/helpers/clientHelpers.ts +1 -1
- package/src/modular/helpers/operationHelpers.ts +231 -118
- package/src/modular/helpers/typeHelpers.ts +14 -7
- package/src/modular/modularCodeModel.ts +11 -0
- package/src/transform/transformHelperFunctionDetails.ts +10 -4
- package/src/transform/transformParameters.ts +15 -57
- package/src/transform/transformResponses.ts +2 -4
- package/src/transform/transformSchemas.ts +5 -9
- package/src/transform/transformTelemetryInfo.ts +4 -18
- package/src/transform/transfromRLCOptions.ts +67 -9
- package/src/utils/modelUtils.ts +81 -72
- package/src/utils/operationUtil.ts +121 -4
|
@@ -1,20 +1,22 @@
|
|
|
1
1
|
import { join } from "path";
|
|
2
|
-
import {
|
|
2
|
+
import { Client, ModularCodeModel } from "./modularCodeModel.js";
|
|
3
3
|
|
|
4
4
|
export function buildSubpathIndexFile(
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
subpath: string
|
|
8
|
-
subfolder: string
|
|
5
|
+
codeModel: ModularCodeModel,
|
|
6
|
+
client: Client,
|
|
7
|
+
subpath: string
|
|
9
8
|
) {
|
|
10
|
-
const
|
|
11
|
-
const
|
|
9
|
+
const { subfolder } = client;
|
|
10
|
+
const srcPath = codeModel.modularOptions.sourceRoot;
|
|
11
|
+
|
|
12
|
+
const apiFilePattern = join(srcPath, client.subfolder ?? "", subpath);
|
|
13
|
+
const apiFiles = codeModel.project.getSourceFiles().filter((file) => {
|
|
12
14
|
return file
|
|
13
15
|
.getFilePath()
|
|
14
16
|
.replace(/\\/g, "/")
|
|
15
17
|
.startsWith(apiFilePattern.replace(/\\/g, "/"));
|
|
16
18
|
});
|
|
17
|
-
const indexFile = project.createSourceFile(
|
|
19
|
+
const indexFile = codeModel.project.createSourceFile(
|
|
18
20
|
`${srcPath}/${subfolder}/${subpath}/index.ts`
|
|
19
21
|
);
|
|
20
22
|
for (const file of apiFiles) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { SourceFile } from "ts-morph";
|
|
2
2
|
import { getType } from "./helpers/typeHelpers.js";
|
|
3
3
|
import { Client, ModularCodeModel, Type } from "./modularCodeModel.js";
|
|
4
4
|
import * as path from "path";
|
|
@@ -10,18 +10,22 @@ import { buildOperationOptions } from "./buildOperations.js";
|
|
|
10
10
|
*/
|
|
11
11
|
export function buildModels(
|
|
12
12
|
codeModel: ModularCodeModel,
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
subfolder: string = ""
|
|
16
|
-
): SourceFile {
|
|
17
|
-
const modelsFile = project.createSourceFile(
|
|
18
|
-
path.join(`${srcPath}/`, subfolder, `models/models.ts`)
|
|
19
|
-
);
|
|
20
|
-
|
|
13
|
+
subClient: Client
|
|
14
|
+
): SourceFile | undefined {
|
|
21
15
|
// We are generating both models and enums here
|
|
22
16
|
const coreClientTypes = new Set<string>();
|
|
23
17
|
const models = codeModel.types.filter(
|
|
24
|
-
(t) =>
|
|
18
|
+
(t) =>
|
|
19
|
+
(t.type === "model" || t.type === "enum") && !isAzureCoreErrorSdkType(t)
|
|
20
|
+
);
|
|
21
|
+
|
|
22
|
+
// Skip to generate models.ts if there is no any models
|
|
23
|
+
if (models.length === 0) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const srcPath = codeModel.modularOptions.sourceRoot;
|
|
27
|
+
const modelsFile = codeModel.project.createSourceFile(
|
|
28
|
+
path.join(`${srcPath}/`, subClient.subfolder ?? "", `models/models.ts`)
|
|
25
29
|
);
|
|
26
30
|
|
|
27
31
|
for (const model of codeModel.types) {
|
|
@@ -36,7 +40,7 @@ export function buildModels(
|
|
|
36
40
|
|
|
37
41
|
for (const model of models) {
|
|
38
42
|
const properties = model.properties ?? [];
|
|
39
|
-
const typeMetadata = getType(model);
|
|
43
|
+
const typeMetadata = getType(model, model.format);
|
|
40
44
|
let typeName = typeMetadata.name;
|
|
41
45
|
if (typeMetadata.modifier === "Array") {
|
|
42
46
|
typeName = `${typeName}[]`;
|
|
@@ -67,15 +71,16 @@ export function buildModels(
|
|
|
67
71
|
if (!model.name) {
|
|
68
72
|
throw new Error("Can't generate a model that has no name");
|
|
69
73
|
}
|
|
70
|
-
|
|
74
|
+
const modelInterface = {
|
|
71
75
|
name: model.name,
|
|
72
76
|
isExported: true,
|
|
73
77
|
docs: getDocsFromDescription(model.description),
|
|
78
|
+
extends: [] as string[],
|
|
74
79
|
properties: properties.map((p) => {
|
|
75
|
-
const propertyMetadata = getType(p.type);
|
|
80
|
+
const propertyMetadata = getType(p.type, p.format);
|
|
76
81
|
let propertyTypeName = propertyMetadata.name;
|
|
77
|
-
if (
|
|
78
|
-
propertyTypeName =
|
|
82
|
+
if (isAzureCoreErrorSdkType(p.type)) {
|
|
83
|
+
propertyTypeName = isAzureCoreErrorSdkType(p.type)
|
|
79
84
|
? getCoreClientErrorType(propertyTypeName)
|
|
80
85
|
: propertyTypeName;
|
|
81
86
|
}
|
|
@@ -90,7 +95,13 @@ export function buildModels(
|
|
|
90
95
|
type: propertyTypeName
|
|
91
96
|
};
|
|
92
97
|
})
|
|
93
|
-
}
|
|
98
|
+
};
|
|
99
|
+
model.type === "model"
|
|
100
|
+
? model.parents?.forEach((p) =>
|
|
101
|
+
modelInterface.extends.push(getType(p, p.format).name)
|
|
102
|
+
)
|
|
103
|
+
: undefined;
|
|
104
|
+
modelsFile.addInterface(modelInterface);
|
|
94
105
|
}
|
|
95
106
|
}
|
|
96
107
|
|
|
@@ -112,22 +123,22 @@ export function buildModels(
|
|
|
112
123
|
return modelsFile;
|
|
113
124
|
}
|
|
114
125
|
|
|
115
|
-
function
|
|
126
|
+
function isAzureCoreErrorSdkType(t: Type) {
|
|
116
127
|
return (
|
|
117
128
|
t.name &&
|
|
118
|
-
["
|
|
129
|
+
["error", "errormodel", "innererror", "errorresponse"].includes(
|
|
130
|
+
t.name.toLowerCase()
|
|
131
|
+
) &&
|
|
119
132
|
t.isCoreErrorType === true
|
|
120
133
|
);
|
|
121
134
|
}
|
|
122
135
|
|
|
123
136
|
export function buildModelsOptions(
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
srcPath: string = "src",
|
|
127
|
-
subfolder: string = ""
|
|
137
|
+
codeModel: ModularCodeModel,
|
|
138
|
+
client: Client
|
|
128
139
|
) {
|
|
129
|
-
const modelOptionsFile = project.createSourceFile(
|
|
130
|
-
`${
|
|
140
|
+
const modelOptionsFile = codeModel.project.createSourceFile(
|
|
141
|
+
`${codeModel.modularOptions.sourceRoot}/${client.subfolder}/models/options.ts`,
|
|
131
142
|
undefined,
|
|
132
143
|
{
|
|
133
144
|
overwrite: true
|