@azure-tools/typespec-ts 0.28.0 → 0.29.0-alpha.20240531.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 +12 -0
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +24 -18
- package/dist/src/index.js.map +1 -1
- package/dist/src/lib.d.ts +14 -4
- package/dist/src/lib.d.ts.map +1 -1
- package/dist/src/lib.js +9 -2
- package/dist/src/lib.js.map +1 -1
- package/dist/src/modular/buildClassicalClient.d.ts.map +1 -1
- package/dist/src/modular/buildClassicalClient.js +2 -0
- package/dist/src/modular/buildClassicalClient.js.map +1 -1
- package/dist/src/modular/buildClassicalOperationGroups.d.ts.map +1 -1
- package/dist/src/modular/buildClassicalOperationGroups.js +3 -0
- package/dist/src/modular/buildClassicalOperationGroups.js.map +1 -1
- package/dist/src/modular/buildCodeModel.d.ts.map +1 -1
- package/dist/src/modular/buildCodeModel.js +80 -83
- package/dist/src/modular/buildCodeModel.js.map +1 -1
- package/dist/src/modular/buildLroFiles.d.ts +24 -0
- package/dist/src/modular/buildLroFiles.d.ts.map +1 -0
- package/dist/src/modular/buildLroFiles.js +399 -0
- package/dist/src/modular/buildLroFiles.js.map +1 -0
- package/dist/src/modular/buildOperations.d.ts +6 -0
- package/dist/src/modular/buildOperations.d.ts.map +1 -1
- package/dist/src/modular/buildOperations.js +64 -5
- package/dist/src/modular/buildOperations.js.map +1 -1
- package/dist/src/modular/buildPagingFiles.js +3 -3
- package/dist/src/modular/buildPagingFiles.js.map +1 -1
- package/dist/src/modular/buildProjectFiles.d.ts +0 -3
- package/dist/src/modular/buildProjectFiles.d.ts.map +1 -1
- package/dist/src/modular/buildProjectFiles.js +0 -399
- 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 +20 -0
- package/dist/src/modular/buildRootIndex.js.map +1 -1
- package/dist/src/modular/buildSubpathIndex.js +4 -3
- package/dist/src/modular/buildSubpathIndex.js.map +1 -1
- package/dist/src/modular/emitModels.d.ts +2 -0
- package/dist/src/modular/emitModels.d.ts.map +1 -1
- package/dist/src/modular/emitModels.js +73 -11
- package/dist/src/modular/emitModels.js.map +1 -1
- package/dist/src/modular/helpers/operationHelpers.d.ts +5 -5
- package/dist/src/modular/helpers/operationHelpers.d.ts.map +1 -1
- package/dist/src/modular/helpers/operationHelpers.js +171 -55
- 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 -1
- package/dist/src/modular/helpers/typeHelpers.js.map +1 -1
- package/dist/src/modular/interfaces.d.ts +5 -0
- package/dist/src/modular/interfaces.d.ts.map +1 -1
- package/dist/src/modular/modularCodeModel.d.ts +9 -1
- package/dist/src/modular/modularCodeModel.d.ts.map +1 -1
- package/dist/src/transform/transformHelperFunctionDetails.js +1 -1
- package/dist/src/transform/transformParameters.js +2 -2
- package/dist/src/transform/transformParameters.js.map +1 -1
- package/dist/src/transform/transformPaths.js +1 -1
- package/dist/src/transform/transformPaths.js.map +1 -1
- package/dist/src/transform/transformResponses.js +2 -2
- 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 +23 -31
- package/dist/src/transform/transformSchemas.js.map +1 -1
- package/dist/src/transform/transfromRLCOptions.d.ts.map +1 -1
- package/dist/src/transform/transfromRLCOptions.js +8 -1
- package/dist/src/transform/transfromRLCOptions.js.map +1 -1
- package/dist/src/utils/modelUtils.d.ts +12 -2
- package/dist/src/utils/modelUtils.d.ts.map +1 -1
- package/dist/src/utils/modelUtils.js +88 -49
- package/dist/src/utils/modelUtils.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +19 -18
- package/src/index.ts +36 -22
- package/src/lib.ts +10 -2
- package/src/modular/buildClassicalClient.ts +2 -0
- package/src/modular/buildClassicalOperationGroups.ts +4 -0
- package/src/modular/buildCodeModel.ts +100 -155
- package/src/modular/buildLroFiles.ts +433 -0
- package/src/modular/buildOperations.ts +91 -10
- package/src/modular/buildPagingFiles.ts +4 -4
- package/src/modular/buildProjectFiles.ts +0 -471
- package/src/modular/buildRootIndex.ts +49 -0
- package/src/modular/buildSubpathIndex.ts +4 -4
- package/src/modular/emitModels.ts +102 -15
- package/src/modular/helpers/operationHelpers.ts +207 -72
- package/src/modular/helpers/typeHelpers.ts +6 -2
- package/src/modular/interfaces.ts +6 -0
- package/src/modular/modularCodeModel.ts +10 -1
- package/src/transform/transformHelperFunctionDetails.ts +1 -1
- package/src/transform/transformParameters.ts +2 -2
- package/src/transform/transformPaths.ts +1 -1
- package/src/transform/transformResponses.ts +2 -2
- package/src/transform/transformSchemas.ts +22 -33
- package/src/transform/transfromRLCOptions.ts +10 -1
- package/src/utils/modelUtils.ts +107 -46
|
@@ -1,31 +1,7 @@
|
|
|
1
|
-
import { Project } from "ts-morph";
|
|
2
1
|
import { ModularCodeModel } from "./modularCodeModel.js";
|
|
3
2
|
import { NameType, normalizeName } from "@azure-tools/rlc-common";
|
|
4
|
-
import {
|
|
5
|
-
hasLROOperation,
|
|
6
|
-
hasPagingOperation
|
|
7
|
-
} from "./helpers/operationHelpers.js";
|
|
8
3
|
import { getClassicalLayerPrefix } from "./helpers/namingHelpers.js";
|
|
9
4
|
|
|
10
|
-
// =========== utils =============
|
|
11
|
-
function appendPathWhenFormat(
|
|
12
|
-
generateTest?: boolean,
|
|
13
|
-
generateSample?: boolean
|
|
14
|
-
) {
|
|
15
|
-
let path = "";
|
|
16
|
-
if (generateTest) {
|
|
17
|
-
path = path + ` "test/**/*.ts"`;
|
|
18
|
-
}
|
|
19
|
-
if (generateSample) {
|
|
20
|
-
path = path + ` "samples-dev/**/*.ts"`;
|
|
21
|
-
}
|
|
22
|
-
return path;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
function appendPathWhenLint(generateTest?: boolean) {
|
|
26
|
-
return generateTest ? "test" : "";
|
|
27
|
-
}
|
|
28
|
-
|
|
29
5
|
function buildExportsForMultiClient(
|
|
30
6
|
codeModel: ModularCodeModel,
|
|
31
7
|
packageInfo: any
|
|
@@ -82,450 +58,3 @@ export function getModuleExports(codeModel: ModularCodeModel) {
|
|
|
82
58
|
|
|
83
59
|
return buildExportsForMultiClient(codeModel, exports);
|
|
84
60
|
}
|
|
85
|
-
|
|
86
|
-
// Prepare package info without scripts and devDependencies and dependencies ect
|
|
87
|
-
function initPackageInfo(codeModel: ModularCodeModel) {
|
|
88
|
-
const { packageDetails, generateTest, flavor } = codeModel.options;
|
|
89
|
-
const description = packageDetails!.description
|
|
90
|
-
? packageDetails!.description
|
|
91
|
-
: `A generated SDK for ${codeModel.clients[0]?.name}.`;
|
|
92
|
-
const packageInfo = {
|
|
93
|
-
name: `${packageDetails!.name}`,
|
|
94
|
-
"sdk-type": "client",
|
|
95
|
-
...(flavor === "azure"
|
|
96
|
-
? {
|
|
97
|
-
author: "Microsoft Corporation"
|
|
98
|
-
}
|
|
99
|
-
: {}),
|
|
100
|
-
version: `${packageDetails!.version}`,
|
|
101
|
-
description,
|
|
102
|
-
keywords: [
|
|
103
|
-
"node",
|
|
104
|
-
...(flavor === "azure" ? ["azure", "cloud"] : []),
|
|
105
|
-
"typescript",
|
|
106
|
-
"browser",
|
|
107
|
-
"isomorphic"
|
|
108
|
-
],
|
|
109
|
-
license: "MIT",
|
|
110
|
-
type: "module",
|
|
111
|
-
main: "dist/index.js",
|
|
112
|
-
module: "./dist-esm/src/index.js",
|
|
113
|
-
types: `./types/${packageDetails!.nameWithoutScope}.d.ts`,
|
|
114
|
-
exports: {
|
|
115
|
-
".": {
|
|
116
|
-
types: "./types/src/index.d.ts",
|
|
117
|
-
require: "./dist/index.cjs",
|
|
118
|
-
import: "./dist-esm/src/index.js"
|
|
119
|
-
},
|
|
120
|
-
"./api": {
|
|
121
|
-
types: "./types/src/api/index.d.ts",
|
|
122
|
-
import: "./dist-esm/src/api/index.js"
|
|
123
|
-
},
|
|
124
|
-
"./models": {
|
|
125
|
-
types: "./types/src/models/index.d.ts",
|
|
126
|
-
import: "./dist-esm/src/models/index.js"
|
|
127
|
-
}
|
|
128
|
-
},
|
|
129
|
-
...(flavor === "azure"
|
|
130
|
-
? {
|
|
131
|
-
repository: "github:Azure/azure-sdk-for-js",
|
|
132
|
-
bugs: {
|
|
133
|
-
url: "https://github.com/Azure/azure-sdk-for-js/issues"
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
: {}),
|
|
137
|
-
files: [
|
|
138
|
-
"dist/",
|
|
139
|
-
generateTest && flavor === "azure" ? "dist-esm/src/" : "dist-esm/",
|
|
140
|
-
`types/${packageDetails!.nameWithoutScope}.d.ts`,
|
|
141
|
-
"README.md",
|
|
142
|
-
"LICENSE",
|
|
143
|
-
"review/*"
|
|
144
|
-
],
|
|
145
|
-
engines: {
|
|
146
|
-
node: ">=18.0.0"
|
|
147
|
-
}
|
|
148
|
-
} as any;
|
|
149
|
-
return packageInfo;
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
// =========== emit package.json =============
|
|
153
|
-
export function emitPackage(
|
|
154
|
-
project: Project,
|
|
155
|
-
metadataDir: string,
|
|
156
|
-
codeModel: ModularCodeModel
|
|
157
|
-
) {
|
|
158
|
-
const packageJsonFile = project.createSourceFile(
|
|
159
|
-
`${metadataDir}/package.json`,
|
|
160
|
-
"",
|
|
161
|
-
{
|
|
162
|
-
overwrite: true
|
|
163
|
-
}
|
|
164
|
-
);
|
|
165
|
-
const packageInfo =
|
|
166
|
-
codeModel.options?.flavor === "azure"
|
|
167
|
-
? emitBrandedPackage(codeModel)
|
|
168
|
-
: emitNonBrandedPackage(codeModel);
|
|
169
|
-
packageJsonFile.addStatements(JSON.stringify(packageInfo));
|
|
170
|
-
return packageJsonFile;
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
function emitNonBrandedPackage(codeModel: ModularCodeModel) {
|
|
174
|
-
const runtimeLibVersion =
|
|
175
|
-
codeModel.runtimeImports?.commonFallback?.version ??
|
|
176
|
-
"1.0.0-alpha.20240314.2";
|
|
177
|
-
const packageInfo = {
|
|
178
|
-
...initPackageInfo(codeModel),
|
|
179
|
-
scripts: {
|
|
180
|
-
"check-format":
|
|
181
|
-
'prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore "src/**/*.ts" "*.{js,json}" ',
|
|
182
|
-
clean:
|
|
183
|
-
"rimraf --glob dist dist-browser dist-esm test-dist temp types *.tgz *.log",
|
|
184
|
-
"extract-api":
|
|
185
|
-
"rimraf review && mkdirp ./review && api-extractor run --local",
|
|
186
|
-
format:
|
|
187
|
-
'prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore "src/**/*.ts" "*.{js,json}" ',
|
|
188
|
-
"lint:fix": "echo skipped",
|
|
189
|
-
lint: "echo skipped",
|
|
190
|
-
pack: "npm pack 2>&1",
|
|
191
|
-
test: 'echo "Error: no test specified" && exit 1',
|
|
192
|
-
build:
|
|
193
|
-
"npm run clean && tsc && rollup -c 2>&1 && npm run minify && mkdirp ./review && npm run extract-api",
|
|
194
|
-
minify:
|
|
195
|
-
"uglifyjs -c -m --comments --source-map \"content='./dist/index.js.map'\" -o ./dist/index.min.js ./dist/index.js"
|
|
196
|
-
},
|
|
197
|
-
sideEffects: false,
|
|
198
|
-
autoPublish: false,
|
|
199
|
-
dependencies: {
|
|
200
|
-
tslib: "^2.2.0",
|
|
201
|
-
"@typespec/ts-http-runtime": runtimeLibVersion
|
|
202
|
-
},
|
|
203
|
-
devDependencies: {
|
|
204
|
-
"@microsoft/api-extractor": "^7.31.1",
|
|
205
|
-
"@types/node": "^18.0.0",
|
|
206
|
-
mkdirp: "^3.0.1",
|
|
207
|
-
prettier: "^3.1.0",
|
|
208
|
-
rimraf: "^5.0.0",
|
|
209
|
-
"source-map-support": "^0.5.9",
|
|
210
|
-
typescript: "~5.4.5",
|
|
211
|
-
"@rollup/plugin-commonjs": "^24.0.0",
|
|
212
|
-
"@rollup/plugin-json": "^6.0.0",
|
|
213
|
-
"@rollup/plugin-multi-entry": "^6.0.0",
|
|
214
|
-
"@rollup/plugin-node-resolve": "^13.1.3",
|
|
215
|
-
rollup: "^2.66.1",
|
|
216
|
-
"rollup-plugin-sourcemaps": "^0.6.3",
|
|
217
|
-
"uglify-js": "^3.4.9"
|
|
218
|
-
}
|
|
219
|
-
} as any;
|
|
220
|
-
buildExportsForMultiClient(codeModel, packageInfo);
|
|
221
|
-
return packageInfo;
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
function emitBrandedPackage(codeModel: ModularCodeModel) {
|
|
225
|
-
const hasLRO = hasLROOperation(codeModel, true),
|
|
226
|
-
hasPaging = hasPagingOperation(codeModel, true);
|
|
227
|
-
const {
|
|
228
|
-
azureOutputDirectory,
|
|
229
|
-
azureSdkForJs,
|
|
230
|
-
sourceFrom,
|
|
231
|
-
isModularLibrary,
|
|
232
|
-
generateTest,
|
|
233
|
-
generateSample,
|
|
234
|
-
packageDetails
|
|
235
|
-
} = codeModel.options;
|
|
236
|
-
const clientPackageName = packageDetails!.name;
|
|
237
|
-
let apiRefUrlQueryParameter: string = "";
|
|
238
|
-
if (packageDetails!.version!.includes("beta")) {
|
|
239
|
-
apiRefUrlQueryParameter = "?view=azure-node-preview";
|
|
240
|
-
}
|
|
241
|
-
const packageInfo = {
|
|
242
|
-
...initPackageInfo(codeModel),
|
|
243
|
-
scripts: {
|
|
244
|
-
"build:browser": "echo skipped.",
|
|
245
|
-
"build:node": "echo skipped.",
|
|
246
|
-
"build:samples": "echo skipped.",
|
|
247
|
-
"build:test": "echo skipped.",
|
|
248
|
-
"build:debug": "echo skipped.",
|
|
249
|
-
"check-format": `prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore "src/**/*.ts" "*.{js,json}" ${appendPathWhenFormat(
|
|
250
|
-
generateTest,
|
|
251
|
-
generateSample
|
|
252
|
-
)}`,
|
|
253
|
-
clean:
|
|
254
|
-
"rimraf --glob dist dist-browser dist-esm test-dist temp types *.tgz *.log",
|
|
255
|
-
"execute:samples": "echo skipped",
|
|
256
|
-
"extract-api":
|
|
257
|
-
"rimraf review && mkdirp ./review && api-extractor run --local",
|
|
258
|
-
format: `prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore "src/**/*.ts" "*.{js,json}" ${appendPathWhenFormat(
|
|
259
|
-
generateTest,
|
|
260
|
-
generateSample
|
|
261
|
-
)}`,
|
|
262
|
-
"generate:client":
|
|
263
|
-
sourceFrom === "Swagger"
|
|
264
|
-
? "autorest --typescript swagger/README.md && npm run format"
|
|
265
|
-
: "echo skipped",
|
|
266
|
-
"integration-test:browser": "echo skipped",
|
|
267
|
-
"integration-test:node": "echo skipped",
|
|
268
|
-
"integration-test": "echo skipped",
|
|
269
|
-
"lint:fix": `eslint package.json api-extractor.json src ${appendPathWhenLint(
|
|
270
|
-
generateTest
|
|
271
|
-
)} --ext .ts --fix --fix-type [problem,suggestion]`,
|
|
272
|
-
lint: `eslint package.json api-extractor.json src ${appendPathWhenLint(
|
|
273
|
-
generateTest
|
|
274
|
-
)} --ext .ts`,
|
|
275
|
-
pack: "npm pack 2>&1",
|
|
276
|
-
"test:browser": "echo skipped",
|
|
277
|
-
"test:node": "echo skipped",
|
|
278
|
-
test: 'echo "Error: no test specified" && exit 1',
|
|
279
|
-
"unit-test": "echo skipped",
|
|
280
|
-
"unit-test:node": "echo skipped",
|
|
281
|
-
"unit-test:browser": "echo skipped"
|
|
282
|
-
},
|
|
283
|
-
sideEffects: false,
|
|
284
|
-
autoPublish: false,
|
|
285
|
-
dependencies: {
|
|
286
|
-
"@azure/core-auth": "^1.6.0",
|
|
287
|
-
"@azure-rest/core-client": "^1.4.0",
|
|
288
|
-
"@azure/core-rest-pipeline": "^1.14.0",
|
|
289
|
-
"@azure/logger": "^1.0.0",
|
|
290
|
-
tslib: "^2.2.0",
|
|
291
|
-
...(hasPaging && {
|
|
292
|
-
"@azure/core-paging": "^1.5.0"
|
|
293
|
-
}),
|
|
294
|
-
...(hasLRO && {
|
|
295
|
-
"@azure/core-lro": "^2.5.4",
|
|
296
|
-
"@azure/abort-controller": "^1.0.0"
|
|
297
|
-
}),
|
|
298
|
-
...(isModularLibrary && {
|
|
299
|
-
"@azure/core-util": "^1.4.0"
|
|
300
|
-
})
|
|
301
|
-
},
|
|
302
|
-
devDependencies: {
|
|
303
|
-
"@microsoft/api-extractor": "^7.31.1",
|
|
304
|
-
autorest: "latest",
|
|
305
|
-
"@types/node": "^18.0.0",
|
|
306
|
-
dotenv: "^16.0.0",
|
|
307
|
-
eslint: "^8.0.0",
|
|
308
|
-
mkdirp: "^3.0.1",
|
|
309
|
-
prettier: "^3.1.0",
|
|
310
|
-
rimraf: "^5.0.0",
|
|
311
|
-
"source-map-support": "^0.5.9",
|
|
312
|
-
typescript: "~5.4.5"
|
|
313
|
-
}
|
|
314
|
-
} as any;
|
|
315
|
-
|
|
316
|
-
if (azureOutputDirectory) {
|
|
317
|
-
packageInfo["homepage"] =
|
|
318
|
-
`https://github.com/Azure/azure-sdk-for-js/tree/main/${azureOutputDirectory}/README.md`;
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
if (azureSdkForJs) {
|
|
322
|
-
packageInfo["//metadata"] = {
|
|
323
|
-
constantPaths: []
|
|
324
|
-
};
|
|
325
|
-
// TODO: remember to put the userAgent path into metadata
|
|
326
|
-
// Only generate this from Swagger spec
|
|
327
|
-
if (sourceFrom === "Swagger") {
|
|
328
|
-
packageInfo["//metadata"].constantPaths.push({
|
|
329
|
-
path: "swagger/README.md",
|
|
330
|
-
prefix: "package-version"
|
|
331
|
-
});
|
|
332
|
-
}
|
|
333
|
-
packageInfo.scripts["build"] =
|
|
334
|
-
"npm run clean && tsc -p . && dev-tool run bundle && mkdirp ./review && dev-tool run extract-api";
|
|
335
|
-
packageInfo.scripts["build:debug"] =
|
|
336
|
-
"tsc -p . && dev-tool run bundle && dev-tool run extract-api";
|
|
337
|
-
packageInfo.scripts["build:browser"] = "tsc -p . && dev-tool run bundle";
|
|
338
|
-
packageInfo.scripts["build:node"] = "tsc -p . && dev-tool run bundle";
|
|
339
|
-
packageInfo.scripts["extract-api"] = "dev-tool run extract-api";
|
|
340
|
-
packageInfo.devDependencies["@azure/dev-tool"] = "^1.0.0";
|
|
341
|
-
packageInfo.devDependencies["@azure/eslint-plugin-azure-sdk"] = "^3.0.0";
|
|
342
|
-
// azsdkjs repo use dev-tool to run vendored prettier
|
|
343
|
-
const dtxPrettierCmd = "dev-tool run vendored ";
|
|
344
|
-
packageInfo.scripts["check-format"] =
|
|
345
|
-
dtxPrettierCmd + packageInfo.scripts["check-format"];
|
|
346
|
-
packageInfo.scripts["format"] =
|
|
347
|
-
dtxPrettierCmd + packageInfo.scripts["format"];
|
|
348
|
-
delete packageInfo.devDependencies.prettier;
|
|
349
|
-
} else {
|
|
350
|
-
packageInfo.scripts["build"] =
|
|
351
|
-
"npm run clean && tsc && rollup -c 2>&1 && npm run minify && mkdirp ./review && npm run extract-api";
|
|
352
|
-
packageInfo.scripts["minify"] =
|
|
353
|
-
`uglifyjs -c -m --comments --source-map "content='./dist/index.js.map'" -o ./dist/index.min.js ./dist/index.js`;
|
|
354
|
-
packageInfo.devDependencies["@rollup/plugin-commonjs"] = "^24.0.0";
|
|
355
|
-
packageInfo.devDependencies["@rollup/plugin-json"] = "^6.0.0";
|
|
356
|
-
packageInfo.devDependencies["@rollup/plugin-multi-entry"] = "^6.0.0";
|
|
357
|
-
packageInfo.devDependencies["@rollup/plugin-node-resolve"] = "^13.1.3";
|
|
358
|
-
packageInfo.devDependencies["rollup"] = "^2.66.1";
|
|
359
|
-
packageInfo.devDependencies["rollup-plugin-sourcemaps"] = "^0.6.3";
|
|
360
|
-
packageInfo.devDependencies["uglify-js"] = "^3.4.9";
|
|
361
|
-
}
|
|
362
|
-
|
|
363
|
-
if (generateTest) {
|
|
364
|
-
packageInfo.module = `./dist-esm/src/index.js`;
|
|
365
|
-
packageInfo.devDependencies["@azure-tools/test-credential"] = "^1.0.0";
|
|
366
|
-
packageInfo.devDependencies["@azure/identity"] = "^4.0.1";
|
|
367
|
-
packageInfo.devDependencies["@azure-tools/test-recorder"] = "^3.0.0";
|
|
368
|
-
packageInfo.devDependencies["mocha"] = "^10.0.0";
|
|
369
|
-
packageInfo.devDependencies["@types/mocha"] = "^10.0.0";
|
|
370
|
-
packageInfo.devDependencies["cross-env"] = "^7.0.2";
|
|
371
|
-
packageInfo.devDependencies["@types/chai"] = "^4.2.8";
|
|
372
|
-
packageInfo.devDependencies["chai"] = "^4.2.0";
|
|
373
|
-
packageInfo.devDependencies["cross-env"] = "^7.0.2";
|
|
374
|
-
packageInfo.devDependencies["karma-chrome-launcher"] = "^3.0.0";
|
|
375
|
-
packageInfo.devDependencies["karma-coverage"] = "^2.0.0";
|
|
376
|
-
packageInfo.devDependencies["karma-env-preprocessor"] = "^0.1.1";
|
|
377
|
-
packageInfo.devDependencies["karma-firefox-launcher"] = "^2.1.2";
|
|
378
|
-
packageInfo.devDependencies["karma-junit-reporter"] = "^2.0.1";
|
|
379
|
-
packageInfo.devDependencies["karma-mocha-reporter"] = "^2.2.5";
|
|
380
|
-
packageInfo.devDependencies["karma-mocha"] = "^2.0.1";
|
|
381
|
-
packageInfo.devDependencies["karma-source-map-support"] = "~1.4.0";
|
|
382
|
-
packageInfo.devDependencies["karma-sourcemap-loader"] = "^0.4.0";
|
|
383
|
-
packageInfo.devDependencies["karma"] = "^6.2.0";
|
|
384
|
-
packageInfo.devDependencies["nyc"] = "^15.1.0";
|
|
385
|
-
packageInfo.devDependencies["source-map-support"] = "^0.5.9";
|
|
386
|
-
packageInfo.devDependencies["ts-node"] = "^10.0.0";
|
|
387
|
-
packageInfo.scripts["test"] =
|
|
388
|
-
"npm run clean && npm run build:test && npm run unit-test";
|
|
389
|
-
packageInfo.scripts["test:node"] =
|
|
390
|
-
"npm run clean && npm run build:test && npm run unit-test:node";
|
|
391
|
-
packageInfo.scripts["test:browser"] =
|
|
392
|
-
"npm run clean && npm run build:test && npm run unit-test:browser";
|
|
393
|
-
packageInfo.scripts["build:browser"] =
|
|
394
|
-
"tsc -p . && cross-env ONLY_BROWSER=true rollup -c 2>&1";
|
|
395
|
-
packageInfo.scripts["build:node"] =
|
|
396
|
-
"tsc -p . && cross-env ONLY_NODE=true rollup -c 2>&1";
|
|
397
|
-
packageInfo.scripts["build:test"] = "tsc -p . && rollup -c 2>&1";
|
|
398
|
-
packageInfo.scripts["unit-test"] =
|
|
399
|
-
"npm run unit-test:node && npm run unit-test:browser";
|
|
400
|
-
packageInfo.scripts["unit-test:node"] =
|
|
401
|
-
'mocha --full-trace "test/{,!(browser)/**/}*.spec.ts"';
|
|
402
|
-
packageInfo.scripts["unit-test:browser"] = "karma start --single-run";
|
|
403
|
-
packageInfo.scripts["integration-test:browser"] =
|
|
404
|
-
"karma start --single-run";
|
|
405
|
-
packageInfo.scripts["integration-test:node"] =
|
|
406
|
-
'nyc mocha --require source-map-support/register.js --timeout 5000000 --full-trace "dist-esm/test/{,!(browser)/**/}*.spec.js"';
|
|
407
|
-
packageInfo.scripts["integration-test"] =
|
|
408
|
-
"npm run integration-test:node && npm run integration-test:browser";
|
|
409
|
-
if (azureSdkForJs) {
|
|
410
|
-
packageInfo.scripts["build:test"] = "tsc -p . && dev-tool run bundle";
|
|
411
|
-
packageInfo.scripts["integration-test:browser"] =
|
|
412
|
-
"dev-tool run test:browser";
|
|
413
|
-
packageInfo.scripts["unit-test:browser"] = "dev-tool run test:browser";
|
|
414
|
-
packageInfo.scripts["unit-test:node"] =
|
|
415
|
-
"dev-tool run test:node-ts-input -- --timeout 1200000 --exclude 'test/**/browser/*.spec.ts' 'test/**/*.spec.ts'";
|
|
416
|
-
packageInfo.scripts["integration-test:node"] =
|
|
417
|
-
"dev-tool run test:node-js-input -- --timeout 5000000 'dist-esm/test/**/*.spec.js'";
|
|
418
|
-
}
|
|
419
|
-
|
|
420
|
-
packageInfo["browser"] = {
|
|
421
|
-
"./dist-esm/test/public/utils/env.js":
|
|
422
|
-
"./dist-esm/test/public/utils/env.browser.js"
|
|
423
|
-
};
|
|
424
|
-
|
|
425
|
-
packageInfo["mocha"] = {
|
|
426
|
-
extension: ["ts"],
|
|
427
|
-
timeout: "1200000",
|
|
428
|
-
loader: "ts-node/esm"
|
|
429
|
-
};
|
|
430
|
-
}
|
|
431
|
-
|
|
432
|
-
if (generateSample) {
|
|
433
|
-
packageInfo["//sampleConfiguration"] = {
|
|
434
|
-
productName:
|
|
435
|
-
codeModel.options.serviceInfo?.title ?? codeModel.clients[0]?.name,
|
|
436
|
-
productSlugs: ["azure"],
|
|
437
|
-
disableDocsMs: true,
|
|
438
|
-
apiRefLink: `https://docs.microsoft.com/javascript/api/${clientPackageName}${apiRefUrlQueryParameter}`
|
|
439
|
-
};
|
|
440
|
-
if (azureSdkForJs) {
|
|
441
|
-
packageInfo.scripts["execute:samples"] =
|
|
442
|
-
"dev-tool samples run samples-dev";
|
|
443
|
-
}
|
|
444
|
-
}
|
|
445
|
-
|
|
446
|
-
buildExportsForMultiClient(codeModel, packageInfo);
|
|
447
|
-
return packageInfo;
|
|
448
|
-
}
|
|
449
|
-
|
|
450
|
-
// =========== emit tsconfig.json =============
|
|
451
|
-
const modularTsConfigInSDKRepo: Record<string, any> = {
|
|
452
|
-
extends: "../../../tsconfig.package",
|
|
453
|
-
compilerOptions: {
|
|
454
|
-
outDir: "./dist-esm",
|
|
455
|
-
declarationDir: "./types",
|
|
456
|
-
module: "NodeNext",
|
|
457
|
-
moduleResolution: "NodeNext",
|
|
458
|
-
lib: ["esnext", "dom"],
|
|
459
|
-
rootDir: "."
|
|
460
|
-
},
|
|
461
|
-
"ts-node": { esm: true },
|
|
462
|
-
include: ["src/**/*.ts"]
|
|
463
|
-
};
|
|
464
|
-
|
|
465
|
-
const modularTsConfigNotInSDKRepo: Record<string, any> = {
|
|
466
|
-
compilerOptions: {
|
|
467
|
-
target: "ES2017",
|
|
468
|
-
module: "NodeNext",
|
|
469
|
-
lib: ["esnext", "dom"],
|
|
470
|
-
declaration: true,
|
|
471
|
-
declarationMap: true,
|
|
472
|
-
inlineSources: true,
|
|
473
|
-
sourceMap: true,
|
|
474
|
-
importHelpers: true,
|
|
475
|
-
strict: true,
|
|
476
|
-
alwaysStrict: true,
|
|
477
|
-
noUnusedLocals: true,
|
|
478
|
-
noUnusedParameters: true,
|
|
479
|
-
noImplicitReturns: true,
|
|
480
|
-
noFallthroughCasesInSwitch: true,
|
|
481
|
-
forceConsistentCasingInFileNames: true,
|
|
482
|
-
moduleResolution: "NodeNext",
|
|
483
|
-
allowSyntheticDefaultImports: true,
|
|
484
|
-
esModuleInterop: true,
|
|
485
|
-
outDir: "./dist-esm",
|
|
486
|
-
declarationDir: "./types",
|
|
487
|
-
rootDir: "."
|
|
488
|
-
},
|
|
489
|
-
"ts-node": { esm: true },
|
|
490
|
-
include: ["./src/**/*.ts"]
|
|
491
|
-
};
|
|
492
|
-
|
|
493
|
-
export function emitTsConfig(
|
|
494
|
-
project: Project,
|
|
495
|
-
srcPath: string,
|
|
496
|
-
codeModel: ModularCodeModel
|
|
497
|
-
) {
|
|
498
|
-
const tsConfigFile = project.createSourceFile(
|
|
499
|
-
`${srcPath}/tsconfig.json`,
|
|
500
|
-
"",
|
|
501
|
-
{
|
|
502
|
-
overwrite: true
|
|
503
|
-
}
|
|
504
|
-
);
|
|
505
|
-
|
|
506
|
-
const { packageDetails, azureSdkForJs } = codeModel.options || {};
|
|
507
|
-
const { generateTest, generateSample } = codeModel.options || {};
|
|
508
|
-
const isAzureFlavor = codeModel.options?.flavor === "azure";
|
|
509
|
-
// Take the undefined as true by default
|
|
510
|
-
const clientPackageName = packageDetails!.name;
|
|
511
|
-
const tsConfig = (
|
|
512
|
-
!isAzureFlavor
|
|
513
|
-
? modularTsConfigNotInSDKRepo
|
|
514
|
-
: azureSdkForJs
|
|
515
|
-
? modularTsConfigInSDKRepo
|
|
516
|
-
: modularTsConfigNotInSDKRepo
|
|
517
|
-
) as any;
|
|
518
|
-
|
|
519
|
-
if (generateTest && isAzureFlavor) {
|
|
520
|
-
tsConfig.include.push("./test/**/*.ts");
|
|
521
|
-
}
|
|
522
|
-
if (generateSample && isAzureFlavor) {
|
|
523
|
-
tsConfig.include.push("samples-dev/**/*.ts");
|
|
524
|
-
tsConfig.compilerOptions["paths"] = {};
|
|
525
|
-
tsConfig.compilerOptions["paths"][clientPackageName] = ["./src/index"];
|
|
526
|
-
}
|
|
527
|
-
|
|
528
|
-
tsConfigFile.addStatements(JSON.stringify(tsConfig));
|
|
529
|
-
|
|
530
|
-
return tsConfigFile;
|
|
531
|
-
}
|
|
@@ -29,6 +29,14 @@ export function buildRootIndex(
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
exportClassicalClient(client, rootIndexFile, subfolder);
|
|
32
|
+
exportRestoreHelpers(
|
|
33
|
+
rootIndexFile,
|
|
34
|
+
project,
|
|
35
|
+
srcPath,
|
|
36
|
+
clientName,
|
|
37
|
+
subfolder,
|
|
38
|
+
true
|
|
39
|
+
);
|
|
32
40
|
exportModules(
|
|
33
41
|
rootIndexFile,
|
|
34
42
|
project,
|
|
@@ -49,6 +57,40 @@ export function buildRootIndex(
|
|
|
49
57
|
);
|
|
50
58
|
}
|
|
51
59
|
|
|
60
|
+
function exportRestoreHelpers(
|
|
61
|
+
indexFile: SourceFile,
|
|
62
|
+
project: Project,
|
|
63
|
+
srcPath: string,
|
|
64
|
+
clientName: string,
|
|
65
|
+
subfolder: string = "",
|
|
66
|
+
isTopLevel: boolean = false
|
|
67
|
+
) {
|
|
68
|
+
const helperFile = project.getSourceFile(
|
|
69
|
+
`${srcPath}/${
|
|
70
|
+
subfolder !== "" ? subfolder + "/" : ""
|
|
71
|
+
}restorePollerHelpers.ts`
|
|
72
|
+
);
|
|
73
|
+
if (!helperFile) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
const exported = [...indexFile.getExportedDeclarations().keys()];
|
|
77
|
+
const namedExports = [...helperFile.getExportedDeclarations().keys()].map(
|
|
78
|
+
(helper) => {
|
|
79
|
+
if (exported.indexOf(helper) > -1) {
|
|
80
|
+
return `${helper} as ${clientName}${helper}`;
|
|
81
|
+
}
|
|
82
|
+
return helper;
|
|
83
|
+
}
|
|
84
|
+
);
|
|
85
|
+
const moduleSpecifier = `./${
|
|
86
|
+
isTopLevel && subfolder !== "" ? subfolder + "/" : ""
|
|
87
|
+
}restorePollerHelpers.js`;
|
|
88
|
+
indexFile.addExportDeclaration({
|
|
89
|
+
moduleSpecifier,
|
|
90
|
+
namedExports
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
|
|
52
94
|
function exportClassicalClient(
|
|
53
95
|
client: Client,
|
|
54
96
|
indexFile: SourceFile,
|
|
@@ -122,6 +164,13 @@ export function buildSubClientIndexFile(
|
|
|
122
164
|
}
|
|
123
165
|
|
|
124
166
|
exportClassicalClient(client, subClientIndexFile, subfolder, true);
|
|
167
|
+
exportRestoreHelpers(
|
|
168
|
+
subClientIndexFile,
|
|
169
|
+
codeModel.project,
|
|
170
|
+
srcPath,
|
|
171
|
+
clientName,
|
|
172
|
+
subfolder
|
|
173
|
+
);
|
|
125
174
|
exportModules(
|
|
126
175
|
subClientIndexFile,
|
|
127
176
|
codeModel.project,
|
|
@@ -14,7 +14,8 @@ export function buildSubpathIndexFile(
|
|
|
14
14
|
) {
|
|
15
15
|
const { subfolder } = client;
|
|
16
16
|
const srcPath = codeModel.modularOptions.sourceRoot;
|
|
17
|
-
|
|
17
|
+
// Skip to export these files because they are used internally.
|
|
18
|
+
const skipFiles = ["pagingHelpers.ts", "pollingHelpers.ts"];
|
|
18
19
|
const apiFilePattern = join(srcPath, client.subfolder ?? "", subpath);
|
|
19
20
|
const apiFiles = codeModel.project.getSourceFiles().filter((file) => {
|
|
20
21
|
return file
|
|
@@ -32,9 +33,8 @@ export function buildSubpathIndexFile(
|
|
|
32
33
|
if (!options.exportIndex && file.getFilePath().endsWith("index.ts")) {
|
|
33
34
|
continue;
|
|
34
35
|
}
|
|
35
|
-
// Skip to export
|
|
36
|
-
|
|
37
|
-
if (file.getFilePath().endsWith("pagingHelpers.ts")) {
|
|
36
|
+
// Skip to export these files because they are used internally.
|
|
37
|
+
if (skipFiles.some((skipFile) => file.getFilePath().endsWith(skipFile))) {
|
|
38
38
|
continue;
|
|
39
39
|
}
|
|
40
40
|
if (file.getFilePath() === indexFile.getFilePath()) {
|