@azure-tools/typespec-ts 0.14.0 → 0.15.0-alpha.20230822.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/CHANGELOG.md +9 -0
- package/dist/src/index.d.ts +1 -5
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +148 -78
- package/dist/src/index.js.map +1 -1
- package/dist/src/lib.d.ts.map +1 -1
- package/dist/src/lib.js +4 -2
- package/dist/src/lib.js.map +1 -1
- package/dist/src/modular/buildClassicalClient.d.ts +1 -1
- package/dist/src/modular/buildClassicalClient.d.ts.map +1 -1
- package/dist/src/modular/buildClassicalClient.js +27 -15
- package/dist/src/modular/buildClassicalClient.js.map +1 -1
- package/dist/src/modular/buildClientContext.d.ts +1 -1
- package/dist/src/modular/buildClientContext.d.ts.map +1 -1
- package/dist/src/modular/buildClientContext.js +16 -7
- package/dist/src/modular/buildClientContext.js.map +1 -1
- package/dist/src/modular/buildCodeModel.d.ts.map +1 -1
- package/dist/src/modular/buildCodeModel.js +59 -12
- package/dist/src/modular/buildCodeModel.js.map +1 -1
- package/dist/src/modular/buildOperations.d.ts +2 -1
- package/dist/src/modular/buildOperations.d.ts.map +1 -1
- package/dist/src/modular/buildOperations.js +25 -29
- package/dist/src/modular/buildOperations.js.map +1 -1
- package/dist/src/modular/buildProjectFiles.d.ts +2 -2
- package/dist/src/modular/buildProjectFiles.d.ts.map +1 -1
- package/dist/src/modular/buildProjectFiles.js +284 -145
- package/dist/src/modular/buildProjectFiles.js.map +1 -1
- package/dist/src/modular/buildRootIndex.d.ts.map +1 -1
- package/dist/src/modular/buildRootIndex.js +5 -5
- package/dist/src/modular/buildRootIndex.js.map +1 -1
- package/dist/src/modular/buildSubpathIndex.d.ts.map +1 -1
- package/dist/src/modular/buildSubpathIndex.js +9 -2
- package/dist/src/modular/buildSubpathIndex.js.map +1 -1
- package/dist/src/modular/emitModels.d.ts +3 -2
- package/dist/src/modular/emitModels.d.ts.map +1 -1
- package/dist/src/modular/emitModels.js +40 -7
- package/dist/src/modular/emitModels.js.map +1 -1
- package/dist/src/modular/helpers/clientHelpers.d.ts.map +1 -1
- package/dist/src/modular/helpers/clientHelpers.js +5 -3
- package/dist/src/modular/helpers/clientHelpers.js.map +1 -1
- package/dist/src/modular/helpers/docsHelpers.d.ts +3 -0
- package/dist/src/modular/helpers/docsHelpers.d.ts.map +1 -0
- package/dist/src/modular/helpers/docsHelpers.js +10 -0
- package/dist/src/modular/helpers/docsHelpers.js.map +1 -0
- package/dist/src/modular/helpers/operationHelpers.d.ts +11 -4
- package/dist/src/modular/helpers/operationHelpers.d.ts.map +1 -1
- package/dist/src/modular/helpers/operationHelpers.js +197 -56
- package/dist/src/modular/helpers/operationHelpers.js.map +1 -1
- package/dist/src/modular/helpers/typeHelpers.d.ts.map +1 -1
- package/dist/src/modular/helpers/typeHelpers.js +6 -0
- package/dist/src/modular/helpers/typeHelpers.js.map +1 -1
- package/dist/src/modular/modularCodeModel.d.ts +2 -0
- package/dist/src/modular/modularCodeModel.d.ts.map +1 -1
- package/dist/src/transform/transform.d.ts +5 -8
- package/dist/src/transform/transform.d.ts.map +1 -1
- package/dist/src/transform/transform.js +23 -13
- package/dist/src/transform/transform.js.map +1 -1
- package/dist/src/transform/transformApiVersionInfo.d.ts +2 -1
- package/dist/src/transform/transformApiVersionInfo.d.ts.map +1 -1
- package/dist/src/transform/transformApiVersionInfo.js.map +1 -1
- package/dist/src/transform/transformHelperFunctionDetails.d.ts +2 -1
- package/dist/src/transform/transformHelperFunctionDetails.d.ts.map +1 -1
- package/dist/src/transform/transformHelperFunctionDetails.js +4 -10
- package/dist/src/transform/transformHelperFunctionDetails.js.map +1 -1
- package/dist/src/transform/transformParameters.d.ts +2 -12
- package/dist/src/transform/transformParameters.d.ts.map +1 -1
- package/dist/src/transform/transformParameters.js +6 -47
- package/dist/src/transform/transformParameters.js.map +1 -1
- package/dist/src/transform/transformPaths.d.ts +2 -2
- package/dist/src/transform/transformPaths.d.ts.map +1 -1
- package/dist/src/transform/transformPaths.js.map +1 -1
- package/dist/src/transform/transformResponses.d.ts +2 -2
- package/dist/src/transform/transformResponses.d.ts.map +1 -1
- package/dist/src/transform/transformResponses.js +5 -1
- package/dist/src/transform/transformResponses.js.map +1 -1
- package/dist/src/transform/transformSchemas.d.ts +2 -2
- package/dist/src/transform/transformSchemas.d.ts.map +1 -1
- package/dist/src/transform/transformSchemas.js.map +1 -1
- package/dist/src/transform/transformTelemetryInfo.d.ts +4 -0
- package/dist/src/transform/transformTelemetryInfo.d.ts.map +1 -0
- package/dist/src/transform/transformTelemetryInfo.js +42 -0
- package/dist/src/transform/transformTelemetryInfo.js.map +1 -0
- package/dist/src/transform/transfromRLCOptions.d.ts +4 -2
- package/dist/src/transform/transfromRLCOptions.d.ts.map +1 -1
- package/dist/src/transform/transfromRLCOptions.js +72 -19
- package/dist/src/transform/transfromRLCOptions.js.map +1 -1
- package/dist/src/utils/clientUtils.d.ts +2 -1
- package/dist/src/utils/clientUtils.d.ts.map +1 -1
- package/dist/src/utils/clientUtils.js.map +1 -1
- package/dist/src/utils/interfaces.d.ts +13 -0
- package/dist/src/utils/interfaces.d.ts.map +1 -0
- package/dist/src/utils/interfaces.js +2 -0
- package/dist/src/utils/interfaces.js.map +1 -0
- package/dist/src/utils/modelUtils.d.ts +1 -1
- package/dist/src/utils/modelUtils.d.ts.map +1 -1
- package/dist/src/utils/modelUtils.js +25 -20
- package/dist/src/utils/modelUtils.js.map +1 -1
- package/dist/src/utils/operationUtil.d.ts +15 -4
- package/dist/src/utils/operationUtil.d.ts.map +1 -1
- package/dist/src/utils/operationUtil.js +65 -1
- package/dist/src/utils/operationUtil.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +28 -18
- package/src/index.ts +231 -129
- package/src/lib.ts +4 -2
- package/src/modular/buildClassicalClient.ts +33 -16
- package/src/modular/buildClientContext.ts +18 -8
- package/src/modular/buildCodeModel.ts +71 -13
- package/src/modular/buildOperations.ts +31 -36
- package/src/modular/buildProjectFiles.ts +329 -162
- package/src/modular/buildRootIndex.ts +5 -7
- package/src/modular/buildSubpathIndex.ts +9 -2
- package/src/modular/emitModels.ts +55 -9
- package/src/modular/helpers/clientHelpers.ts +5 -3
- package/src/modular/helpers/docsHelpers.ts +10 -0
- package/src/modular/helpers/operationHelpers.ts +328 -75
- package/src/modular/helpers/typeHelpers.ts +6 -0
- package/src/modular/modularCodeModel.ts +2 -0
- package/src/transform/transform.ts +24 -31
- package/src/transform/transformApiVersionInfo.ts +1 -1
- package/src/transform/transformHelperFunctionDetails.ts +12 -11
- package/src/transform/transformParameters.ts +20 -63
- package/src/transform/transformPaths.ts +5 -5
- package/src/transform/transformResponses.ts +10 -6
- package/src/transform/transformSchemas.ts +2 -2
- package/src/transform/transformTelemetryInfo.ts +72 -0
- package/src/transform/transfromRLCOptions.ts +100 -23
- package/src/utils/clientUtils.ts +2 -4
- package/src/utils/interfaces.ts +14 -0
- package/src/utils/modelUtils.ts +18 -11
- package/src/utils/operationUtil.ts +92 -6
- package/dist/src/modular/helpers/fixmeHelpers.d.ts +0 -2
- package/dist/src/modular/helpers/fixmeHelpers.d.ts.map +0 -1
- package/dist/src/modular/helpers/fixmeHelpers.js +0 -4
- package/dist/src/modular/helpers/fixmeHelpers.js.map +0 -1
- package/dist/src/modular/helpers/parameterHelpers.d.ts +0 -3
- package/dist/src/modular/helpers/parameterHelpers.d.ts.map +0 -1
- package/dist/src/modular/helpers/parameterHelpers.js +0 -16
- package/dist/src/modular/helpers/parameterHelpers.js.map +0 -1
- package/src/modular/helpers/fixmeHelpers.ts +0 -3
- package/src/modular/helpers/parameterHelpers.ts +0 -17
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { Project, SourceFile } from "ts-morph";
|
|
2
2
|
import { getType } from "./helpers/typeHelpers.js";
|
|
3
|
-
import { ModularCodeModel, Type } from "./modularCodeModel.js";
|
|
3
|
+
import { Client, ModularCodeModel, Type } from "./modularCodeModel.js";
|
|
4
4
|
import * as path from "path";
|
|
5
|
+
import { getDocsFromDescription } from "./helpers/docsHelpers.js";
|
|
6
|
+
import { buildOperationOptions } from "./buildOperations.js";
|
|
5
7
|
|
|
6
8
|
/**
|
|
7
9
|
* This function creates the file containing all the models defined in TypeSpec
|
|
@@ -11,17 +13,21 @@ export function buildModels(
|
|
|
11
13
|
project: Project,
|
|
12
14
|
srcPath: string = "src",
|
|
13
15
|
subfolder: string = ""
|
|
14
|
-
): SourceFile {
|
|
15
|
-
const modelsFile = project.createSourceFile(
|
|
16
|
-
path.join(`${srcPath}/src/`, subfolder, `models/models.ts`)
|
|
17
|
-
);
|
|
18
|
-
|
|
16
|
+
): SourceFile | undefined {
|
|
19
17
|
// We are generating both models and enums here
|
|
20
18
|
const coreClientTypes = new Set<string>();
|
|
21
19
|
const models = codeModel.types.filter(
|
|
22
20
|
(t) => (t.type === "model" || t.type === "enum") && !isAzureCoreError(t)
|
|
23
21
|
);
|
|
24
22
|
|
|
23
|
+
// Skip to generate models.ts if there is no any models
|
|
24
|
+
if (models.length === 0) {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
const modelsFile = project.createSourceFile(
|
|
28
|
+
path.join(`${srcPath}/`, subfolder, `models/models.ts`)
|
|
29
|
+
);
|
|
30
|
+
|
|
25
31
|
for (const model of codeModel.types) {
|
|
26
32
|
if (model.type === "combined" && model.nullable) {
|
|
27
33
|
for (const unionModel of model.types ?? []) {
|
|
@@ -48,7 +54,7 @@ export function buildModels(
|
|
|
48
54
|
name: model.name!,
|
|
49
55
|
isExported: true,
|
|
50
56
|
docs: [
|
|
51
|
-
model.description
|
|
57
|
+
...getDocsFromDescription(model.description),
|
|
52
58
|
// If it is a fixed enum we don't need to list the known values in the docs as the
|
|
53
59
|
// output will be a literal union which is self documenting
|
|
54
60
|
model.isFixed
|
|
@@ -68,7 +74,7 @@ export function buildModels(
|
|
|
68
74
|
modelsFile.addInterface({
|
|
69
75
|
name: model.name,
|
|
70
76
|
isExported: true,
|
|
71
|
-
docs:
|
|
77
|
+
docs: getDocsFromDescription(model.description),
|
|
72
78
|
properties: properties.map((p) => {
|
|
73
79
|
const propertyMetadata = getType(p.type);
|
|
74
80
|
let propertyTypeName = propertyMetadata.name;
|
|
@@ -82,7 +88,7 @@ export function buildModels(
|
|
|
82
88
|
}
|
|
83
89
|
return {
|
|
84
90
|
name: `"${p.clientName}"`,
|
|
85
|
-
docs:
|
|
91
|
+
docs: getDocsFromDescription(p.description),
|
|
86
92
|
hasQuestionToken: p.optional,
|
|
87
93
|
isReadonly: p.readonly,
|
|
88
94
|
type: propertyTypeName
|
|
@@ -117,3 +123,43 @@ function isAzureCoreError(t: Type) {
|
|
|
117
123
|
t.isCoreErrorType === true
|
|
118
124
|
);
|
|
119
125
|
}
|
|
126
|
+
|
|
127
|
+
export function buildModelsOptions(
|
|
128
|
+
client: Client,
|
|
129
|
+
project: Project,
|
|
130
|
+
srcPath: string = "src",
|
|
131
|
+
subfolder: string = ""
|
|
132
|
+
) {
|
|
133
|
+
const modelOptionsFile = project.createSourceFile(
|
|
134
|
+
`${srcPath}/${subfolder}/models/options.ts`,
|
|
135
|
+
undefined,
|
|
136
|
+
{
|
|
137
|
+
overwrite: true
|
|
138
|
+
}
|
|
139
|
+
);
|
|
140
|
+
for (const operationGroup of client.operationGroups) {
|
|
141
|
+
operationGroup.operations.forEach((o) => {
|
|
142
|
+
buildOperationOptions(o, modelOptionsFile);
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
modelOptionsFile.addImportDeclarations([
|
|
146
|
+
{
|
|
147
|
+
moduleSpecifier: "@azure-rest/core-client",
|
|
148
|
+
namedImports: ["OperationOptions"]
|
|
149
|
+
}
|
|
150
|
+
]);
|
|
151
|
+
|
|
152
|
+
modelOptionsFile.fixMissingImports();
|
|
153
|
+
modelOptionsFile
|
|
154
|
+
.getImportDeclarations()
|
|
155
|
+
.filter((id) => {
|
|
156
|
+
return (
|
|
157
|
+
id.isModuleSpecifierRelative() &&
|
|
158
|
+
!id.getModuleSpecifierValue().endsWith(".js")
|
|
159
|
+
);
|
|
160
|
+
})
|
|
161
|
+
.map((id) => {
|
|
162
|
+
id.setModuleSpecifier(id.getModuleSpecifierValue() + ".js");
|
|
163
|
+
return id;
|
|
164
|
+
});
|
|
165
|
+
}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { OptionalKind, ParameterDeclarationStructure } from "ts-morph";
|
|
2
2
|
import { Client } from "../modularCodeModel.js";
|
|
3
|
-
import {
|
|
3
|
+
import { getType } from "./typeHelpers.js";
|
|
4
|
+
import { getClientName } from "./namingHelpers.js";
|
|
4
5
|
|
|
5
6
|
export function getClientParameters(
|
|
6
7
|
client: Client
|
|
7
8
|
): OptionalKind<ParameterDeclarationStructure>[] {
|
|
8
|
-
const {
|
|
9
|
+
const { parameters } = client;
|
|
10
|
+
const name = getClientName(client);
|
|
9
11
|
const optionsParam = {
|
|
10
12
|
name: "options",
|
|
11
13
|
type: `${name}ClientOptions`,
|
|
@@ -22,7 +24,7 @@ export function getClientParameters(
|
|
|
22
24
|
.map<OptionalKind<ParameterDeclarationStructure>>((p) => {
|
|
23
25
|
return {
|
|
24
26
|
name: p.clientName,
|
|
25
|
-
type:
|
|
27
|
+
type: getType(p.type).name
|
|
26
28
|
};
|
|
27
29
|
}),
|
|
28
30
|
optionsParam
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export function getFixmeForMultilineDocs(fixme: string[]): string[] {
|
|
2
|
+
return fixme.map((fixme) => ` @fixme ${fixme}`);
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
export function getDocsFromDescription(description?: string): string[] {
|
|
6
|
+
if (!description || description.trim().length === 0) {
|
|
7
|
+
return [];
|
|
8
|
+
}
|
|
9
|
+
return [description];
|
|
10
|
+
}
|