@azure-tools/typespec-ts 0.13.1 → 0.13.2
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 +6 -0
- package/dist/src/modelUtils.d.ts.map +1 -1
- package/dist/src/modelUtils.js +1 -0
- package/dist/src/modelUtils.js.map +1 -1
- package/dist/src/modular/helpers/namingHelpers.d.ts +1 -10
- package/dist/src/modular/helpers/namingHelpers.d.ts.map +1 -1
- package/dist/src/modular/helpers/namingHelpers.js +3 -82
- package/dist/src/modular/helpers/namingHelpers.js.map +1 -1
- package/dist/src/transform/transformHelperFunctionDetails.js +9 -1
- package/dist/src/transform/transformHelperFunctionDetails.js.map +1 -1
- package/dist/src/transform/transformParameters.d.ts +1 -0
- package/dist/src/transform/transformParameters.d.ts.map +1 -1
- package/dist/src/transform/transformParameters.js +14 -3
- package/dist/src/transform/transformParameters.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +10 -12
- package/src/modelUtils.ts +2 -0
- package/src/modular/helpers/namingHelpers.ts +3 -89
- package/src/transform/transformHelperFunctionDetails.ts +9 -1
- package/src/transform/transformParameters.ts +16 -3
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@azure-tools/typespec-ts",
|
|
3
|
-
"version": "0.13.
|
|
3
|
+
"version": "0.13.2",
|
|
4
4
|
"description": "An experimental CADL emitter for TypeScript RLC",
|
|
5
5
|
"main": "dist/src/index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -14,7 +14,6 @@
|
|
|
14
14
|
"@types/fs-extra": "^9.0.13",
|
|
15
15
|
"@typescript-eslint/eslint-plugin": "^5.58.0",
|
|
16
16
|
"@typescript-eslint/parser": "^5.58.0",
|
|
17
|
-
"@typespec/http": "~0.44.0",
|
|
18
17
|
"chai": "^4.3.6",
|
|
19
18
|
"mkdirp": "^2.1.2",
|
|
20
19
|
"eslint": "^8.9.0",
|
|
@@ -23,10 +22,9 @@
|
|
|
23
22
|
"ts-node": "^10.9.1",
|
|
24
23
|
"typescript": "~5.0.0",
|
|
25
24
|
"prettier": "~2.7.1",
|
|
26
|
-
"@azure-tools/cadl-ranch-specs": "
|
|
27
|
-
"@typespec/versioning": "~0.44.0",
|
|
25
|
+
"@azure-tools/cadl-ranch-specs": "^0.15.4",
|
|
28
26
|
"@azure-tools/cadl-ranch-expect": "^0.3.2",
|
|
29
|
-
"@azure-tools/cadl-ranch": "
|
|
27
|
+
"@azure-tools/cadl-ranch": "^0.4.17",
|
|
30
28
|
"chalk": "^4.0.0",
|
|
31
29
|
"@azure-rest/core-client": "^1.1.3",
|
|
32
30
|
"@azure/core-auth": "^1.3.2",
|
|
@@ -37,17 +35,17 @@
|
|
|
37
35
|
"@azure/logger": "^1.0.4"
|
|
38
36
|
},
|
|
39
37
|
"peerDependencies": {
|
|
40
|
-
"@azure-tools/typespec-azure-core": ">=0.
|
|
41
|
-
"@azure-tools/typespec-client-generator-core": ">=0.
|
|
42
|
-
"@typespec/compiler": ">=0.
|
|
43
|
-
"@typespec/http": ">=0.
|
|
44
|
-
"@typespec/rest": ">=0.
|
|
45
|
-
"@typespec/versioning": ">=0.
|
|
38
|
+
"@azure-tools/typespec-azure-core": ">=0.31.0 <1.0.0",
|
|
39
|
+
"@azure-tools/typespec-client-generator-core": ">=0.31.0 <1.0.0",
|
|
40
|
+
"@typespec/compiler": ">=0.45.0 <1.0.0",
|
|
41
|
+
"@typespec/http": ">=0.45.0 <1.0.0",
|
|
42
|
+
"@typespec/rest": ">=0.45.0 <1.0.0",
|
|
43
|
+
"@typespec/versioning": ">=0.45.0 <1.0.0"
|
|
46
44
|
},
|
|
47
45
|
"dependencies": {
|
|
48
46
|
"prettier": "^2.6.1",
|
|
49
47
|
"tslib": "^2.3.1",
|
|
50
|
-
"@azure-tools/rlc-common": "^0.13.
|
|
48
|
+
"@azure-tools/rlc-common": "^0.13.2",
|
|
51
49
|
"ts-morph": "^15.1.0",
|
|
52
50
|
"fs-extra": "^11.1.0"
|
|
53
51
|
},
|
package/src/modelUtils.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { toCamelCase, toPascalCase } from "../../casingUtils.js";
|
|
2
2
|
import { Client, Operation } from "../modularCodeModel.js";
|
|
3
|
+
import { ReservedModelNames, NameType, normalizeName } from "@azure-tools/rlc-common";
|
|
3
4
|
|
|
4
5
|
export function getClientName(client: Client) {
|
|
5
6
|
return client.name.replace(/Client$/, "");
|
|
@@ -17,7 +18,7 @@ export function getOperationName(
|
|
|
17
18
|
const casingFn = options.casing === "camel" ? toCamelCase : toPascalCase;
|
|
18
19
|
if (isReservedName(operation.name, NameType.Operation)) {
|
|
19
20
|
return {
|
|
20
|
-
name:
|
|
21
|
+
name: normalizeName(operation.name, NameType.Operation, true),
|
|
21
22
|
fixme: [
|
|
22
23
|
`${operation.name} is a reserved word that cannot be used as an operation name. Please add @projectedName(
|
|
23
24
|
"javascript", "<JS-Specific-Name>") to the operation to override the generated name.`
|
|
@@ -31,95 +32,8 @@ export function getOperationName(
|
|
|
31
32
|
}
|
|
32
33
|
|
|
33
34
|
export function isReservedName(name: string, nameType: NameType): boolean {
|
|
34
|
-
return
|
|
35
|
+
return ReservedModelNames.some(
|
|
35
36
|
(reservedName) =>
|
|
36
37
|
reservedName.name === name && reservedName.reservedFor.includes(nameType)
|
|
37
38
|
);
|
|
38
39
|
}
|
|
39
|
-
|
|
40
|
-
interface ReservedName {
|
|
41
|
-
name: string;
|
|
42
|
-
reservedFor: NameType[];
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
enum NameType {
|
|
46
|
-
Class,
|
|
47
|
-
File,
|
|
48
|
-
Interface,
|
|
49
|
-
Property,
|
|
50
|
-
Parameter,
|
|
51
|
-
Operation,
|
|
52
|
-
OperationGroup
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
const Newable = [NameType.Class, NameType.Interface, NameType.OperationGroup];
|
|
56
|
-
|
|
57
|
-
const RESERVED_NAMES: ReservedName[] = [
|
|
58
|
-
{ name: "any", reservedFor: [NameType.Parameter] },
|
|
59
|
-
{ name: "as", reservedFor: [NameType.Parameter] },
|
|
60
|
-
{ name: "boolean", reservedFor: [NameType.Parameter, ...Newable] },
|
|
61
|
-
{ name: "break", reservedFor: [NameType.Parameter] },
|
|
62
|
-
{ name: "case", reservedFor: [NameType.Parameter] },
|
|
63
|
-
{ name: "catch", reservedFor: [NameType.Parameter] },
|
|
64
|
-
{ name: "class", reservedFor: [NameType.Parameter] },
|
|
65
|
-
{ name: "const", reservedFor: [NameType.Parameter] },
|
|
66
|
-
{ name: "constructor", reservedFor: [NameType.Parameter] },
|
|
67
|
-
{ name: "continue", reservedFor: [NameType.Parameter] },
|
|
68
|
-
{ name: "date", reservedFor: [NameType.Parameter, ...Newable] },
|
|
69
|
-
{ name: "debugger", reservedFor: [NameType.Parameter] },
|
|
70
|
-
{ name: "declare", reservedFor: [NameType.Parameter] },
|
|
71
|
-
{ name: "default", reservedFor: [NameType.Parameter] },
|
|
72
|
-
{
|
|
73
|
-
name: "delete",
|
|
74
|
-
reservedFor: [NameType.Parameter, NameType.Operation, ...Newable]
|
|
75
|
-
},
|
|
76
|
-
{ name: "do", reservedFor: [NameType.Parameter] },
|
|
77
|
-
{ name: "else", reservedFor: [NameType.Parameter] },
|
|
78
|
-
{ name: "enum", reservedFor: [NameType.Parameter] },
|
|
79
|
-
{ name: "error", reservedFor: [NameType.Parameter, ...Newable] },
|
|
80
|
-
{ name: "export", reservedFor: [NameType.Parameter] },
|
|
81
|
-
{ name: "extends", reservedFor: [NameType.Parameter] },
|
|
82
|
-
{ name: "false", reservedFor: [NameType.Parameter] },
|
|
83
|
-
{ name: "finally", reservedFor: [NameType.Parameter] },
|
|
84
|
-
{ name: "for", reservedFor: [NameType.Parameter] },
|
|
85
|
-
{ name: "from", reservedFor: [NameType.Parameter] },
|
|
86
|
-
{ name: "function", reservedFor: [NameType.Parameter, ...Newable] },
|
|
87
|
-
{ name: "get", reservedFor: [NameType.Parameter] },
|
|
88
|
-
{ name: "if", reservedFor: [NameType.Parameter] },
|
|
89
|
-
{ name: "implements", reservedFor: [NameType.Parameter] },
|
|
90
|
-
{ name: "import", reservedFor: [NameType.Parameter] },
|
|
91
|
-
{ name: "in", reservedFor: [NameType.Parameter] },
|
|
92
|
-
{ name: "instanceof", reservedFor: [NameType.Parameter] },
|
|
93
|
-
{ name: "interface", reservedFor: [NameType.Parameter] },
|
|
94
|
-
{ name: "let", reservedFor: [NameType.Parameter] },
|
|
95
|
-
{ name: "module", reservedFor: [NameType.Parameter] },
|
|
96
|
-
{ name: "new", reservedFor: [NameType.Parameter] },
|
|
97
|
-
{ name: "null", reservedFor: [NameType.Parameter] },
|
|
98
|
-
{ name: "number", reservedFor: [NameType.Parameter, ...Newable] },
|
|
99
|
-
{ name: "of", reservedFor: [NameType.Parameter] },
|
|
100
|
-
{ name: "package", reservedFor: [NameType.Parameter] },
|
|
101
|
-
{ name: "private", reservedFor: [NameType.Parameter] },
|
|
102
|
-
{ name: "protected", reservedFor: [NameType.Parameter] },
|
|
103
|
-
{ name: "public", reservedFor: [NameType.Parameter] },
|
|
104
|
-
{ name: "requestoptions", reservedFor: [NameType.Parameter] },
|
|
105
|
-
{ name: "require", reservedFor: [NameType.Parameter] },
|
|
106
|
-
{ name: "return", reservedFor: [NameType.Parameter] },
|
|
107
|
-
{ name: "set", reservedFor: [NameType.Parameter, ...Newable] },
|
|
108
|
-
{ name: "static", reservedFor: [NameType.Parameter] },
|
|
109
|
-
{ name: "string", reservedFor: [NameType.Parameter, ...Newable] },
|
|
110
|
-
{ name: "super", reservedFor: [NameType.Parameter] },
|
|
111
|
-
{ name: "switch", reservedFor: [NameType.Parameter] },
|
|
112
|
-
{ name: "symbol", reservedFor: [NameType.Parameter, ...Newable] },
|
|
113
|
-
{ name: "this", reservedFor: [NameType.Parameter] },
|
|
114
|
-
{ name: "throw", reservedFor: [NameType.Parameter] },
|
|
115
|
-
{ name: "true", reservedFor: [NameType.Parameter] },
|
|
116
|
-
{ name: "try", reservedFor: [NameType.Parameter] },
|
|
117
|
-
{ name: "type", reservedFor: [NameType.Parameter] },
|
|
118
|
-
{ name: "typeof", reservedFor: [NameType.Parameter] },
|
|
119
|
-
{ name: "var", reservedFor: [NameType.Parameter] },
|
|
120
|
-
{ name: "void", reservedFor: [NameType.Parameter] },
|
|
121
|
-
{ name: "while", reservedFor: [NameType.Parameter] },
|
|
122
|
-
{ name: "with", reservedFor: [NameType.Parameter] },
|
|
123
|
-
{ name: "yield", reservedFor: [NameType.Parameter] },
|
|
124
|
-
{ name: "arguments", reservedFor: [NameType.Parameter] }
|
|
125
|
-
];
|
|
@@ -194,6 +194,7 @@ function extractSpecialSerializeInfo(
|
|
|
194
194
|
let hasPipeCollection = false;
|
|
195
195
|
let hasTsvCollection = false;
|
|
196
196
|
let hasSsvCollection = false;
|
|
197
|
+
let hasCsvCollection = false;
|
|
197
198
|
const operationGroups = listOperationGroups(dpgContext, client);
|
|
198
199
|
for (const operationGroup of operationGroups) {
|
|
199
200
|
const operations = listOperationsInOperationGroup(
|
|
@@ -216,6 +217,9 @@ function extractSpecialSerializeInfo(
|
|
|
216
217
|
hasSsvCollection = hasSsvCollection
|
|
217
218
|
? hasSsvCollection
|
|
218
219
|
: serializeInfo.hasSsvCollection;
|
|
220
|
+
hasCsvCollection = hasCsvCollection
|
|
221
|
+
? hasCsvCollection
|
|
222
|
+
: serializeInfo.hasCsvCollection;
|
|
219
223
|
});
|
|
220
224
|
}
|
|
221
225
|
}
|
|
@@ -236,12 +240,16 @@ function extractSpecialSerializeInfo(
|
|
|
236
240
|
hasSsvCollection = hasSsvCollection
|
|
237
241
|
? hasSsvCollection
|
|
238
242
|
: serializeInfo.hasSsvCollection;
|
|
243
|
+
hasCsvCollection = hasCsvCollection
|
|
244
|
+
? hasCsvCollection
|
|
245
|
+
: serializeInfo.hasCsvCollection;
|
|
239
246
|
});
|
|
240
247
|
}
|
|
241
248
|
return {
|
|
242
249
|
hasMultiCollection,
|
|
243
250
|
hasPipeCollection,
|
|
244
251
|
hasTsvCollection,
|
|
245
|
-
hasSsvCollection
|
|
252
|
+
hasSsvCollection,
|
|
253
|
+
hasCsvCollection
|
|
246
254
|
};
|
|
247
255
|
}
|
|
@@ -126,15 +126,19 @@ function getParameterMetadata(
|
|
|
126
126
|
paramType: "query" | "path" | "header",
|
|
127
127
|
parameter: HttpOperationParameter
|
|
128
128
|
): ParameterMetadata {
|
|
129
|
+
const schemaContext = [SchemaContext.Exception, SchemaContext.Input];
|
|
129
130
|
const schema = getSchemaForType(
|
|
130
131
|
program,
|
|
131
132
|
dpgContext,
|
|
132
133
|
parameter.param.type,
|
|
133
|
-
|
|
134
|
+
schemaContext,
|
|
134
135
|
false,
|
|
135
136
|
parameter.param
|
|
136
137
|
) as Schema;
|
|
137
|
-
let type =
|
|
138
|
+
let type =
|
|
139
|
+
paramType === "query"
|
|
140
|
+
? getTypeName(schema, schemaContext)
|
|
141
|
+
: getTypeName(schema);
|
|
138
142
|
const name = getParameterName(parameter.name);
|
|
139
143
|
let description =
|
|
140
144
|
getFormattedPropertyDoc(program, parameter.param, schema) ?? "";
|
|
@@ -144,7 +148,8 @@ function getParameterMetadata(
|
|
|
144
148
|
serializeInfo.hasMultiCollection ||
|
|
145
149
|
serializeInfo.hasPipeCollection ||
|
|
146
150
|
serializeInfo.hasSsvCollection ||
|
|
147
|
-
serializeInfo.hasTsvCollection
|
|
151
|
+
serializeInfo.hasTsvCollection ||
|
|
152
|
+
serializeInfo.hasCsvCollection
|
|
148
153
|
) {
|
|
149
154
|
type = "string";
|
|
150
155
|
description += ` This parameter needs to be formatted as ${serializeInfo.collectionInfo.join(
|
|
@@ -495,6 +500,7 @@ export function getSpecialSerializeInfo(parameter: HttpOperationParameter) {
|
|
|
495
500
|
let hasPipeCollection = false;
|
|
496
501
|
let hasSsvCollection = false;
|
|
497
502
|
let hasTsvCollection = false;
|
|
503
|
+
let hasCsvCollection = false;
|
|
498
504
|
const descriptions = [];
|
|
499
505
|
const collectionInfo = [];
|
|
500
506
|
if (
|
|
@@ -522,11 +528,18 @@ export function getSpecialSerializeInfo(parameter: HttpOperationParameter) {
|
|
|
522
528
|
descriptions.push("buildPipeCollection");
|
|
523
529
|
collectionInfo.push("pipe");
|
|
524
530
|
}
|
|
531
|
+
|
|
532
|
+
if (parameter.type === "header" && (parameter as any).format === "csv") {
|
|
533
|
+
hasCsvCollection = true;
|
|
534
|
+
descriptions.push("buildCsvCollection");
|
|
535
|
+
collectionInfo.push("csv");
|
|
536
|
+
}
|
|
525
537
|
return {
|
|
526
538
|
hasMultiCollection,
|
|
527
539
|
hasPipeCollection,
|
|
528
540
|
hasSsvCollection,
|
|
529
541
|
hasTsvCollection,
|
|
542
|
+
hasCsvCollection,
|
|
530
543
|
descriptions,
|
|
531
544
|
collectionInfo
|
|
532
545
|
};
|