Skip to content

Commit 38aba91

Browse files
kazrael2119MaryGao
andauthored
Migrate to ESM for HLC (#3128)
* migrate eam for hlc * update * update * Update typescriptGenerator.ts * update * generate-swaggers * Update case-hlcReadme.md * update * revert moduleKind changes * update * update * update * update * separate changes * revert import type change * update * Update operationGenerator.ts * update * Update smoke-test.ts * update * update * update * Update operationGenerator.ts * update * Update nameConstructors.spec.ts * update * Update nameConstructors.spec.ts * Update nameConstructors.ts * Update nameConstructors.ts --------- Co-authored-by: Mary Gao <yanmeigao1210@gmail.com>
1 parent 0ef095c commit 38aba91

1,243 files changed

Lines changed: 10048 additions & 8807 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

packages/autorest.typescript/README.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,7 @@ In addition to the [list of Autorest flags](https://github.com/Azure/autorest/bl
3434
| `--generate-metadata` | Generates meta files such as readme, license, package.json, etc. Typically, you need to specify this flag in your first generation only |
3535
| `--tracing-info` | Controls specification of meta info attached to requests for tracing purposes |
3636
| `--disable-async-iterators` | Does not generate async iterators needed for paging operations |
37-
| `--allow-insecure-connection` | Allow generated clients to make requests to HTTP endpoints |
38-
| `--module-kind` | Allows controlling between CommonJS and ESM style imports and exports. Accepted values: `esm`, `cjs`. Defaults to `cjs` for backwards compatibility. ESM style imports and exports will include the file extension and avoid directory imports. |
39-
37+
| `--allow-insecure-connection` | Allow generated clients to make requests to HTTP endpoints |
4038
## Contributing
4139

4240
This project welcomes contributions and suggestions. Most contributions require you to agree to a

packages/autorest.typescript/src/autorestSession.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ export interface AutorestOptions {
4444
lenientModelDeduplication?: boolean;
4545
useLegacyLro?: boolean;
4646
flavor?: PackageFlavor;
47-
moduleKind?: "cjs" | "esm";
4847
}
4948

5049
let host: AutorestExtensionHost;

packages/autorest.typescript/src/generators/clientFileGenerator.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ export function generateClient(clientDetails: ClientDetails, project: Project) {
4545
packageDetails,
4646
coreHttpCompatMode,
4747
useLegacyLro,
48-
moduleKind
48+
isTestPackage
4949
} = getAutorestOptions();
5050
const { addCredentials } = getSecurityInfoFromModel(clientDetails.security);
5151
const hasMappers = !!clientDetails.mappers.length;
@@ -144,7 +144,7 @@ export function generateClient(clientDetails: ClientDetails, project: Project) {
144144
});
145145
clientFile.addImportDeclaration({
146146
namedImports: ["createLroSpec"],
147-
moduleSpecifier: getImportModuleName(`./lroImpl`, moduleKind)
147+
moduleSpecifier: getImportModuleName(`./lroImpl`, isTestPackage)
148148
});
149149
}
150150

@@ -158,7 +158,7 @@ export function generateClient(clientDetails: ClientDetails, project: Project) {
158158
true /* shouldGuard */
159159
)}Impl`
160160
),
161-
moduleSpecifier: getImportModuleName({ cjsName: "./operations", esModulesName: "./operations/index.js" }, moduleKind)
161+
moduleSpecifier: getImportModuleName({ cjsName: "./operations", esModulesName: "./operations/index.js" }, isTestPackage)
162162
});
163163

164164
clientFile.addImportDeclaration({
@@ -170,23 +170,23 @@ export function generateClient(clientDetails: ClientDetails, project: Project) {
170170
true /* shouldGuard */
171171
)}`
172172
),
173-
moduleSpecifier: getImportModuleName({ cjsName: "./operationsInterfaces", esModulesName: "./operationsInterfaces/index.js" }, moduleKind)
173+
moduleSpecifier: getImportModuleName({ cjsName: "./operationsInterfaces", esModulesName: "./operationsInterfaces/index.js" }, isTestPackage)
174174
});
175175
}
176176

177177
if (hasInlineOperations && shouldImportParameters(clientDetails)) {
178178
addTracingOperationImports(clientFile, ".");
179179
clientFile.addImportDeclaration({
180180
namespaceImport: "Parameters",
181-
moduleSpecifier: getImportModuleName("./models/parameters", moduleKind)
181+
moduleSpecifier: getImportModuleName("./models/parameters", isTestPackage)
182182
});
183183
}
184184

185185
// Only import mappers if there are any
186186
if (hasInlineOperations && hasMappers) {
187187
clientFile.addImportDeclaration({
188188
namespaceImport: "Mappers",
189-
moduleSpecifier: getImportModuleName("./models/mappers", moduleKind)
189+
moduleSpecifier: getImportModuleName("./models/mappers", isTestPackage)
190190
});
191191
}
192192

@@ -243,7 +243,7 @@ export function generateClient(clientDetails: ClientDetails, project: Project) {
243243
if (importedModels.size) {
244244
clientFile.addImportDeclaration({
245245
namedImports: [...importedModels],
246-
moduleSpecifier: getImportModuleName({ cjsName: "./models", esModulesName: "./models/index.js" }, moduleKind)
246+
moduleSpecifier: getImportModuleName({ cjsName: "./models", esModulesName: "./models/index.js" }, isTestPackage)
247247
});
248248
}
249249

packages/autorest.typescript/src/generators/indexGenerator.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,21 +22,21 @@ export function generateIndexFile(
2222
}
2323

2424
function generateHLCIndex(clientDetails: ClientDetails, file: SourceFile) {
25-
const { disablePagingAsyncIterators, moduleKind } = getAutorestOptions();
25+
const { disablePagingAsyncIterators, isTestPackage } = getAutorestOptions();
2626
if (clientDetails.options.hasPaging && !disablePagingAsyncIterators) {
2727
file.addStatements([`/// <reference lib="esnext.asynciterable" />`]);
2828
file.addExportDeclaration({
29-
moduleSpecifier: getImportModuleName("./pagingHelper", moduleKind),
29+
moduleSpecifier: getImportModuleName("./pagingHelper", isTestPackage),
3030
namedExports: ["getContinuationToken"]
3131
});
3232
}
3333

3434
file.addExportDeclarations([
3535
{
36-
moduleSpecifier: getImportModuleName({ cjsName: "./models", esModulesName: "./models/index.js" }, moduleKind),
36+
moduleSpecifier: getImportModuleName({ cjsName: "./models", esModulesName: "./models/index.js" }, isTestPackage),
3737
},
3838
{
39-
moduleSpecifier: getImportModuleName(`./${clientDetails.sourceFileName}`, moduleKind),
39+
moduleSpecifier: getImportModuleName(`./${clientDetails.sourceFileName}`, isTestPackage),
4040
namedExports: [clientDetails.className]
4141
}
4242
]);
@@ -48,7 +48,7 @@ function generateHLCIndex(clientDetails: ClientDetails, file: SourceFile) {
4848
if (operationGroups.length) {
4949
file.addExportDeclarations([
5050
{
51-
moduleSpecifier: getImportModuleName({ cjsName: "./operationsInterfaces", esModulesName: "./operationsInterfaces/index.js" }, moduleKind),
51+
moduleSpecifier: getImportModuleName({ cjsName: "./operationsInterfaces", esModulesName: "./operationsInterfaces/index.js" }, isTestPackage),
5252
}
5353
]);
5454
}

packages/autorest.typescript/src/generators/mappersGenerator.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -243,8 +243,8 @@ function writeDiscriminatorsMapping(
243243

244244
type ModelPropertiesType =
245245
| {
246-
[propertyName: string]: Mapper;
247-
}
246+
[propertyName: string]: Mapper;
247+
}
248248
| undefined;
249249

250250
export function writeMapper(writer: CodeBlockWriter, mapper: Mapper) {

packages/autorest.typescript/src/generators/modelsGenerator.ts

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -109,8 +109,8 @@ const writeClientModels = (
109109
baseClass: !useCoreV2
110110
? "coreHttp.ServiceClientOptions"
111111
: coreHttpCompatMode
112-
? "coreHttpCompat.ExtendedServiceClientOptions"
113-
: "coreClient.ServiceClientOptions"
112+
? "coreHttpCompat.ExtendedServiceClientOptions"
113+
: "coreClient.ServiceClientOptions"
114114
}
115115
);
116116
};
@@ -404,11 +404,11 @@ function buildResponseType(
404404
docs: ["The underlying HTTP response."],
405405
type: innerResponseProperties.length
406406
? Writers.intersectionType(
407-
"coreHttp.HttpResponse",
408-
Writers.objectType({
409-
properties: innerResponseProperties
410-
})
411-
)
407+
"coreHttp.HttpResponse",
408+
Writers.objectType({
409+
properties: innerResponseProperties
410+
})
411+
)
412412
: "coreHttp.HttpResponse",
413413
leadingTrivia: writer => writer.blankLine()
414414
}
@@ -448,13 +448,13 @@ function buildResponseType(
448448
if (!useCoreV2) {
449449
return intersectionTypes.length > 1
450450
? // Using apply instead of calling the method directly to be able to conditionally pass
451-
// parameters, this way we don't have to have a nested if/else tree to decide which parameters
452-
// to pass, we will pass any intersectionTypes availabe plus the innerType. When there are no intersection types
453-
// we just return innerType
454-
Writers.intersectionType.apply(
455-
Writers,
456-
intersectionTypes as IntersectionTypeParameters
457-
)
451+
// parameters, this way we don't have to have a nested if/else tree to decide which parameters
452+
// to pass, we will pass any intersectionTypes availabe plus the innerType. When there are no intersection types
453+
// we just return innerType
454+
Writers.intersectionType.apply(
455+
Writers,
456+
intersectionTypes as IntersectionTypeParameters
457+
)
458458
: (innerTypeWriter as WriterFunction);
459459
} else {
460460
if (intersectionTypes.length > 1) {
@@ -698,9 +698,9 @@ function writeOptionalParameters(
698698
isExported: true,
699699
extends: [
700700
baseClass ||
701-
(!useCoreV2
702-
? "coreHttp.OperationOptions"
703-
: "coreClient.OperationOptions")
701+
(!useCoreV2
702+
? "coreHttp.OperationOptions"
703+
: "coreClient.OperationOptions")
704704
],
705705
properties: properties
706706
};

packages/autorest.typescript/src/generators/operationGenerator.ts

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ export function generateOperations(
6666
clientDetails: ClientDetails,
6767
project: Project
6868
): void {
69-
const { srcPath, moduleKind } = getAutorestOptions();
69+
const { srcPath, isTestPackage } = getAutorestOptions();
7070
let fileNames: string[] = [];
7171

7272
// Toplevel operations are inlined in the client
@@ -89,7 +89,7 @@ export function generateOperations(
8989
operationIndexFile.addExportDeclarations(
9090
fileNames.map(fileName => {
9191
return {
92-
moduleSpecifier: getImportModuleName(`./${fileName}`, moduleKind)
92+
moduleSpecifier: getImportModuleName(`./${fileName}`, isTestPackage)
9393
} as ExportDeclarationStructure;
9494
})
9595
);
@@ -466,7 +466,7 @@ function addClass(
466466
clientDetails: ClientDetails
467467
) {
468468
let importedModels = new Set<string>();
469-
const { moduleKind } = getAutorestOptions();
469+
const { isTestPackage } = getAutorestOptions();
470470

471471
let allModelsNames = getAllModelsNames(clientDetails);
472472

@@ -528,7 +528,7 @@ function addClass(
528528

529529
operationGroupFile.addImportDeclaration({
530530
namedImports,
531-
moduleSpecifier: getImportModuleName({ cjsName: "../models", esModulesName: "../models/index.js" }, moduleKind)
531+
moduleSpecifier: getImportModuleName({ cjsName: "../models", esModulesName: "../models/index.js" }, isTestPackage)
532532
});
533533
}
534534
}
@@ -1237,7 +1237,7 @@ function addImports(
12371237
operationGroupFile: SourceFile,
12381238
clientDetails: ClientDetails
12391239
) {
1240-
const { useCoreV2, useLegacyLro, moduleKind } = getAutorestOptions();
1240+
const { useCoreV2, useLegacyLro, isTestPackage } = getAutorestOptions();
12411241

12421242
const { className, mappers } = clientDetails;
12431243
addPagingEsNextRef(operationGroupDetails.operations, operationGroupFile);
@@ -1252,7 +1252,7 @@ function addImports(
12521252

12531253
operationGroupFile.addImportDeclaration({
12541254
namedImports: [`${operationGroupInterfaceName}`],
1255-
moduleSpecifier: getImportModuleName({ cjsName: "../operationsInterfaces", esModulesName: "../operationsInterfaces/index.js" }, moduleKind)
1255+
moduleSpecifier: getImportModuleName({ cjsName: "../operationsInterfaces", esModulesName: "../operationsInterfaces/index.js" }, isTestPackage)
12561256
});
12571257

12581258
if (!useCoreV2) {
@@ -1282,14 +1282,14 @@ function addImports(
12821282
if (mappers.length) {
12831283
operationGroupFile.addImportDeclaration({
12841284
namespaceImport: "Mappers",
1285-
moduleSpecifier: getImportModuleName("../models/mappers", moduleKind)
1285+
moduleSpecifier: getImportModuleName("../models/mappers", isTestPackage)
12861286
});
12871287
}
12881288

12891289
if (shouldImportParameters(clientDetails)) {
12901290
operationGroupFile.addImportDeclaration({
12911291
namespaceImport: "Parameters",
1292-
moduleSpecifier: getImportModuleName("../models/parameters", moduleKind)
1292+
moduleSpecifier: getImportModuleName("../models/parameters", isTestPackage)
12931293
});
12941294
}
12951295

@@ -1299,7 +1299,7 @@ function addImports(
12991299

13001300
operationGroupFile.addImportDeclaration({
13011301
namedImports: [`${clientClassName}`],
1302-
moduleSpecifier: getImportModuleName(`../${clientFileName}`, moduleKind)
1302+
moduleSpecifier: getImportModuleName(`../${clientFileName}`, isTestPackage)
13031303
});
13041304

13051305
if (hasLroOperation(operationGroupDetails)) {
@@ -1309,7 +1309,7 @@ function addImports(
13091309
});
13101310
operationGroupFile.addImportDeclaration({
13111311
namedImports: ["createLroSpec"],
1312-
moduleSpecifier: getImportModuleName(`../lroImpl`, moduleKind)
1312+
moduleSpecifier: getImportModuleName(`../lroImpl`, isTestPackage)
13131313
});
13141314
}
13151315
}

packages/autorest.typescript/src/generators/operationInterfaceGenerator.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ export function generateOperationsInterfaces(
4545
clientDetails: ClientDetails,
4646
project: Project
4747
): void {
48-
const { srcPath, moduleKind } = getAutorestOptions();
48+
const { srcPath, isTestPackage } = getAutorestOptions();
4949
let fileNames: string[] = [];
5050

5151
// Toplevel operations are inlined in the client
@@ -68,7 +68,7 @@ export function generateOperationsInterfaces(
6868
operationIndexFile.addExportDeclarations(
6969
fileNames.map(fileName => {
7070
return {
71-
moduleSpecifier: getImportModuleName(`./${fileName}`, moduleKind)
71+
moduleSpecifier: getImportModuleName(`./${fileName}`, isTestPackage)
7272
} as ExportDeclarationStructure;
7373
})
7474
);
@@ -129,7 +129,7 @@ function addInterface(
129129
operationGroupDetails: OperationGroupDetails,
130130
clientDetails: ClientDetails
131131
) {
132-
const { moduleKind } = getAutorestOptions();
132+
const { isTestPackage } = getAutorestOptions();
133133

134134
let importedModels = new Set<string>();
135135

@@ -167,7 +167,7 @@ function addInterface(
167167

168168
operationGroupFile.addImportDeclaration({
169169
namedImports,
170-
moduleSpecifier: getImportModuleName({ cjsName: "../models", esModulesName: "../models/index.js" }, moduleKind)
170+
moduleSpecifier: getImportModuleName({ cjsName: "../models", esModulesName: "../models/index.js" }, isTestPackage)
171171
});
172172
}
173173
}

packages/autorest.typescript/src/generators/parametersGenerator.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ export function generateParameters(
2121
clientDetails: ClientDetails,
2222
project: Project
2323
): void {
24-
const { useCoreV2, srcPath, moduleKind } = getAutorestOptions();
24+
const { useCoreV2, srcPath, isTestPackage } = getAutorestOptions();
2525
if (!shouldImportParameters(clientDetails)) {
2626
logger.verbose(
2727
"There are no parameters to generate, skipping parameters file generation"
@@ -47,7 +47,7 @@ export function generateParameters(
4747
if (importedMappers.length) {
4848
parametersFile.addImportDeclaration({
4949
namedImports: importedMappers,
50-
moduleSpecifier: getImportModuleName("../models/mappers", moduleKind)
50+
moduleSpecifier: getImportModuleName("../models/mappers", isTestPackage)
5151
});
5252
}
5353

packages/autorest.typescript/src/generators/static/apiExtractorConfig.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { Project } from "ts-morph";
55
import { getAutorestOptions } from "../../autorestSession";
66

77
export function generateApiExtractorConfig(project: Project) {
8-
const { generateMetadata, packageDetails, generateTest, restLevelClient } = getAutorestOptions();
8+
const { generateMetadata, packageDetails } = getAutorestOptions();
99

1010
if (!generateMetadata) {
1111
return;
@@ -14,7 +14,7 @@ export function generateApiExtractorConfig(project: Project) {
1414
const config = {
1515
$schema:
1616
"https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json",
17-
mainEntryPointFilePath: `${restLevelClient ? "./types" : "./dist-esm"}${generateTest ? "/src" : ""}/index.d.ts`,
17+
mainEntryPointFilePath: `dist/esm/index.d.ts`,
1818
docModel: {
1919
enabled: true
2020
},
@@ -25,7 +25,7 @@ export function generateApiExtractorConfig(project: Project) {
2525
dtsRollup: {
2626
enabled: true,
2727
untrimmedFilePath: "",
28-
publicTrimmedFilePath: `./types/${packageDetails.nameWithoutScope}.d.ts`
28+
publicTrimmedFilePath: `dist/${packageDetails.nameWithoutScope}.d.ts`
2929
},
3030
messages: {
3131
tsdocMessageReporting: {
@@ -44,7 +44,7 @@ export function generateApiExtractorConfig(project: Project) {
4444
}
4545
};
4646

47-
project.createSourceFile("api-extractor.json", JSON.stringify(config), {
47+
project.createSourceFile("api-extractor.json", JSON.stringify(config, null, 2), {
4848
overwrite: true
4949
});
5050
}

0 commit comments

Comments
 (0)