@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,32 +1,62 @@
|
|
|
1
1
|
import { Project } from "ts-morph";
|
|
2
2
|
import { ModularCodeModel } from "./modularCodeModel.js";
|
|
3
3
|
import { NameType, normalizeName } from "@azure-tools/rlc-common";
|
|
4
|
+
import {
|
|
5
|
+
hasLROOperation,
|
|
6
|
+
hasPagingOperation
|
|
7
|
+
} from "./helpers/operationHelpers.js";
|
|
4
8
|
|
|
5
9
|
export function emitPackage(
|
|
6
10
|
project: Project,
|
|
7
|
-
|
|
8
|
-
codeModel: ModularCodeModel
|
|
11
|
+
metadataDir: string,
|
|
12
|
+
codeModel: ModularCodeModel,
|
|
13
|
+
hasSamplesGenerated = false
|
|
9
14
|
) {
|
|
10
15
|
const packageJson = project.createSourceFile(
|
|
11
|
-
`${
|
|
16
|
+
`${metadataDir}/package.json`,
|
|
12
17
|
"",
|
|
13
18
|
{
|
|
14
19
|
overwrite: true
|
|
15
20
|
}
|
|
16
21
|
);
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
22
|
+
const hasLRO = hasLROOperation(codeModel),
|
|
23
|
+
hasPaging = hasPagingOperation(codeModel);
|
|
24
|
+
const { azureOutputDirectory, azureSdkForJs, sourceFrom, isModularLibrary } =
|
|
25
|
+
codeModel.options;
|
|
26
|
+
let { packageDetails, generateTest, generateSample } = codeModel.options;
|
|
27
|
+
if (packageDetails === undefined) {
|
|
28
|
+
packageDetails = {
|
|
29
|
+
name: "@msinternal/unamedpackage",
|
|
30
|
+
nameWithoutScope: "unamedpackage",
|
|
31
|
+
version: "1.0.0-beta.1"
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
// Take the undefined as true by default
|
|
35
|
+
generateTest = generateTest === true || generateTest === undefined;
|
|
36
|
+
generateSample =
|
|
37
|
+
(generateSample === true || generateSample === undefined) &&
|
|
38
|
+
hasSamplesGenerated;
|
|
39
|
+
const clientPackageName = packageDetails.name;
|
|
40
|
+
let apiRefUrlQueryParameter: string = "";
|
|
41
|
+
packageDetails.version = packageDetails.version ?? "1.0.0-beta.1";
|
|
42
|
+
if (packageDetails.version.includes("beta")) {
|
|
43
|
+
apiRefUrlQueryParameter = "?view=azure-node-preview";
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
const packageInfo = {
|
|
47
|
+
name: `${packageDetails.name}`,
|
|
23
48
|
"sdk-type": "client",
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
49
|
+
author: "Microsoft Corporation",
|
|
50
|
+
version: `${packageDetails.version}`,
|
|
51
|
+
description:
|
|
52
|
+
`${packageDetails.description}` ||
|
|
53
|
+
`A generated SDK for ${codeModel.clients[0]?.name}.`,
|
|
54
|
+
keywords: ["node", "azure", "cloud", "typescript", "browser", "isomorphic"],
|
|
55
|
+
license: "MIT",
|
|
29
56
|
type: "module",
|
|
57
|
+
main: "dist/index.js",
|
|
58
|
+
module: "./dist-esm/src/index.js",
|
|
59
|
+
types: `./types/${packageDetails.nameWithoutScope}.d.ts`,
|
|
30
60
|
exports: {
|
|
31
61
|
".": {
|
|
32
62
|
types: "./types/src/index.d.ts",
|
|
@@ -42,202 +72,339 @@ export function emitPackage(
|
|
|
42
72
|
import: "./dist-esm/src/models/index.js"
|
|
43
73
|
}
|
|
44
74
|
},
|
|
45
|
-
"
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
path: "src/utils/constants.ts",
|
|
49
|
-
prefix: "SDK_VERSION"
|
|
50
|
-
}
|
|
51
|
-
]
|
|
52
|
-
},
|
|
53
|
-
types: `types/latest/${codeModel.options?.packageDetails?.nameWithoutScope}.d.ts`,
|
|
54
|
-
typesVersions: {
|
|
55
|
-
"<3.6": {
|
|
56
|
-
"*": [
|
|
57
|
-
`types/3.1/${codeModel.options?.packageDetails?.nameWithoutScope}.d.ts`
|
|
58
|
-
]
|
|
59
|
-
}
|
|
60
|
-
},
|
|
61
|
-
scripts: {
|
|
62
|
-
audit:
|
|
63
|
-
"node ../../../common/scripts/rush-audit.js && rimraf node_modules package-lock.json && npm i --package-lock-only 2>&1 && npm audit",
|
|
64
|
-
"build:samples": "echo Obsolete",
|
|
65
|
-
"build:test:browser": "tsc -p . && rollup -c rollup.test.config.js 2>&1",
|
|
66
|
-
"build:test:node": "tsc -p . && dev-tool run bundle",
|
|
67
|
-
"build:test": "tsc -p . && rollup -c rollup.test.config.js 2>&1",
|
|
68
|
-
"build:types": "downlevel-dts types/latest/ types/3.1/",
|
|
69
|
-
"build:output": "node scripts/renameOutput.mjs",
|
|
70
|
-
build:
|
|
71
|
-
"npm run build:test && api-extractor run --local && npm run build:types && npm run build:output",
|
|
72
|
-
"check-format":
|
|
73
|
-
'prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore "src/**/*.ts" "test/**/*.ts" "*.{js,json}"',
|
|
74
|
-
clean: "rimraf dist dist-* temp types *.tgz *.log",
|
|
75
|
-
"execute:samples": "dev-tool samples run samples-dev",
|
|
76
|
-
"extract-api": "tsc -p . && api-extractor run --local",
|
|
77
|
-
format:
|
|
78
|
-
'prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore "src/**/*.ts" "test/**/*.ts" "samples-dev/**/*.ts" "*.{js,json}"',
|
|
79
|
-
"integration-test:browser": "echo skipped",
|
|
80
|
-
"integration-test:node":
|
|
81
|
-
'nyc mocha --timeout 600000 "test/internal/**/*.spec.ts" "test/public/**/*.spec.ts"',
|
|
82
|
-
"integration-test":
|
|
83
|
-
"npm run integration-test:node && npm run integration-test:browser",
|
|
84
|
-
"lint:fix":
|
|
85
|
-
"eslint README.md package.json api-extractor.json src test --ext .ts,.javascript,.js --fix --fix-type [problem,suggestion]",
|
|
86
|
-
lint: "eslint README.md package.json api-extractor.json src test --ext .ts,.javascript,.js",
|
|
87
|
-
pack: "npm pack 2>&1",
|
|
88
|
-
"test:browser":
|
|
89
|
-
"npm run clean && npm run build:test && npm run integration-test:browser",
|
|
90
|
-
"test:node": "npm run clean && tsc -p . && npm run integration-test:node",
|
|
91
|
-
test: "npm run clean && tsc -p . && npm run unit-test:node && dev-tool run bundle && npm run unit-test:browser && npm run integration-test",
|
|
92
|
-
"unit-test:browser": "karma start karma.conf.cjs --single-run",
|
|
93
|
-
"unit-test:node":
|
|
94
|
-
'mocha --exclude "test/**/browser/*.spec.ts" "test/internal/unit/{,!(browser)/**/}*.spec.ts" "test/public/unit/{,!(browser)/**/}*.spec.ts"',
|
|
95
|
-
"unit-test": "npm run unit-test:node && npm run unit-test:browser"
|
|
75
|
+
repository: "github:Azure/azure-sdk-for-js",
|
|
76
|
+
bugs: {
|
|
77
|
+
url: "https://github.com/Azure/azure-sdk-for-js/issues"
|
|
96
78
|
},
|
|
97
79
|
files: [
|
|
98
80
|
"dist/",
|
|
99
|
-
"dist-esm/src/",
|
|
100
|
-
|
|
101
|
-
"types/src",
|
|
102
|
-
"types/latest/",
|
|
103
|
-
"types/3.1/",
|
|
81
|
+
generateTest ? "dist-esm/src/" : "dist-esm/",
|
|
82
|
+
`types/${packageDetails.nameWithoutScope}.d.ts`,
|
|
104
83
|
"README.md",
|
|
105
|
-
"LICENSE"
|
|
84
|
+
"LICENSE",
|
|
85
|
+
"review/*"
|
|
106
86
|
],
|
|
107
|
-
repository: "github:Azure/azure-sdk-for-js",
|
|
108
87
|
engines: {
|
|
109
88
|
node: ">=14.0.0"
|
|
110
89
|
},
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
90
|
+
scripts: {
|
|
91
|
+
audit:
|
|
92
|
+
"node ../../../common/scripts/rush-audit.js && rimraf node_modules package-lock.json && npm i --package-lock-only 2>&1 && npm audit",
|
|
93
|
+
"build:browser": "echo skipped.",
|
|
94
|
+
"build:node": "echo skipped.",
|
|
95
|
+
"build:samples": "echo skipped.",
|
|
96
|
+
"build:test": "echo skipped.",
|
|
97
|
+
"build:debug": "echo skipped.",
|
|
98
|
+
"check-format": `prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore "src/**/*.ts" "*.{js,json}" ${appendPathWhenFormat(
|
|
99
|
+
generateTest,
|
|
100
|
+
generateSample
|
|
101
|
+
)}`,
|
|
102
|
+
clean:
|
|
103
|
+
"rimraf dist dist-browser dist-esm test-dist temp types *.tgz *.log",
|
|
104
|
+
"execute:samples": "echo skipped",
|
|
105
|
+
"extract-api":
|
|
106
|
+
"rimraf review && mkdirp ./review && api-extractor run --local",
|
|
107
|
+
format: `prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore "src/**/*.ts" "*.{js,json}" ${appendPathWhenFormat(
|
|
108
|
+
generateTest,
|
|
109
|
+
generateSample
|
|
110
|
+
)}`,
|
|
111
|
+
"generate:client":
|
|
112
|
+
sourceFrom === "Swagger"
|
|
113
|
+
? "autorest --typescript swagger/README.md && npm run format"
|
|
114
|
+
: "echo skipped",
|
|
115
|
+
"integration-test:browser": "echo skipped",
|
|
116
|
+
"integration-test:node": "echo skipped",
|
|
117
|
+
"integration-test": "echo skipped",
|
|
118
|
+
"lint:fix": `eslint package.json api-extractor.json src ${appednPathWhenLint(
|
|
119
|
+
generateTest
|
|
120
|
+
)} --ext .ts --fix --fix-type [problem,suggestion]`,
|
|
121
|
+
lint: `eslint package.json api-extractor.json src ${appednPathWhenLint(
|
|
122
|
+
generateTest
|
|
123
|
+
)} --ext .ts`,
|
|
124
|
+
pack: "npm pack 2>&1",
|
|
125
|
+
"test:browser": "echo skipped",
|
|
126
|
+
"test:node": "echo skipped",
|
|
127
|
+
test: 'echo "Error: no test specified" && exit 1',
|
|
128
|
+
"unit-test": "echo skipped",
|
|
129
|
+
"unit-test:node": "echo skipped",
|
|
130
|
+
"unit-test:browser": "echo skipped"
|
|
116
131
|
},
|
|
117
|
-
homepage: `https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/${(
|
|
118
|
-
codeModel.options?.packageDetails?.nameWithoutScope ?? ""
|
|
119
|
-
).replace(/-/g, "")}/${
|
|
120
|
-
codeModel.options?.packageDetails?.nameWithoutScope
|
|
121
|
-
}/README.md`,
|
|
122
132
|
sideEffects: false,
|
|
123
|
-
|
|
133
|
+
autoPublish: false,
|
|
134
|
+
dependencies: {
|
|
135
|
+
"@azure/core-auth": "^1.3.0",
|
|
136
|
+
"@azure-rest/core-client": "^1.1.4",
|
|
137
|
+
"@azure/core-rest-pipeline": "^1.12.0",
|
|
138
|
+
"@azure/logger": "^1.0.0",
|
|
139
|
+
tslib: "^2.2.0",
|
|
140
|
+
...(hasPaging && {
|
|
141
|
+
"@azure/core-paging": "^1.5.0"
|
|
142
|
+
}),
|
|
143
|
+
...(hasLRO && {
|
|
144
|
+
"@azure/core-lro": "^2.5.4",
|
|
145
|
+
"@azure/abort-controller": "^1.0.0"
|
|
146
|
+
}),
|
|
147
|
+
...(isModularLibrary && {
|
|
148
|
+
"@azure/core-util": "^1.4.0"
|
|
149
|
+
})
|
|
150
|
+
},
|
|
124
151
|
devDependencies: {
|
|
125
|
-
"@azure/dev-tool": "^1.0.0",
|
|
126
|
-
"@azure/eslint-plugin-azure-sdk": "^3.0.0",
|
|
127
|
-
"@azure-tools/test-recorder": "^3.0.0",
|
|
128
|
-
"@azure/test-utils": "^1.0.0",
|
|
129
152
|
"@microsoft/api-extractor": "^7.31.1",
|
|
130
|
-
|
|
131
|
-
"@rollup/plugin-inject": "^5.0.0",
|
|
132
|
-
"@rollup/plugin-json": "^6.0.0",
|
|
133
|
-
"@rollup/plugin-multi-entry": "^6.0.0",
|
|
134
|
-
"@rollup/plugin-node-resolve": "^13.1.3",
|
|
135
|
-
"@rollup/plugin-replace": "^5.0.0",
|
|
136
|
-
"@rollup/plugin-typescript": "^11.0.0",
|
|
137
|
-
"@types/chai": "^4.3.1",
|
|
138
|
-
"@types/mocha": "^7.0.2",
|
|
153
|
+
autorest: "latest",
|
|
139
154
|
"@types/node": "^14.0.0",
|
|
140
|
-
chai: "^4.3.6",
|
|
141
|
-
"cross-env": "^7.0.3",
|
|
142
155
|
dotenv: "^16.0.0",
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
esm: "^3.2.25",
|
|
146
|
-
karma: "^6.4.0",
|
|
147
|
-
"karma-chrome-launcher": "^3.1.1",
|
|
148
|
-
"karma-coverage": "^2.2.0",
|
|
149
|
-
"karma-edge-launcher": "^0.4.2",
|
|
150
|
-
"karma-env-preprocessor": "^0.1.1",
|
|
151
|
-
"karma-firefox-launcher": "^2.1.2",
|
|
152
|
-
"karma-json-preprocessor": "^0.3.3",
|
|
153
|
-
"karma-json-to-file-reporter": "^1.0.1",
|
|
154
|
-
"karma-junit-reporter": "^2.0.1",
|
|
155
|
-
"karma-mocha": "^2.0.1",
|
|
156
|
-
"karma-mocha-reporter": "^2.2.5",
|
|
157
|
-
"karma-sourcemap-loader": "^0.3.8",
|
|
158
|
-
mocha: "^7.1.1",
|
|
159
|
-
"mocha-junit-reporter": "^2.0.2",
|
|
160
|
-
nyc: "^15.1.0",
|
|
156
|
+
eslint: "^8.0.0",
|
|
157
|
+
mkdirp: "^2.1.2",
|
|
161
158
|
prettier: "^2.5.1",
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
"rollup-plugin-shim": "^1.0.0",
|
|
166
|
-
"rollup-plugin-sourcemaps": "^0.6.3",
|
|
167
|
-
"ts-node": "^10.8.1",
|
|
168
|
-
typescript: "~5.0.0",
|
|
169
|
-
util: "^0.12.4"
|
|
170
|
-
},
|
|
171
|
-
dependencies: {
|
|
172
|
-
"@azure-rest/core-client": "^1.1.2",
|
|
173
|
-
"@azure/core-auth": "^1.4.1",
|
|
174
|
-
"@azure/core-rest-pipeline": "^1.8.1",
|
|
175
|
-
"@azure/core-util": "^1.1.0",
|
|
176
|
-
"@azure/logger": "^1.0.3",
|
|
177
|
-
tslib: "^2.4.0"
|
|
159
|
+
rimraf: "^3.0.0",
|
|
160
|
+
"source-map-support": "^0.5.9",
|
|
161
|
+
typescript: "~5.0.0"
|
|
178
162
|
}
|
|
179
163
|
} as any;
|
|
180
164
|
|
|
165
|
+
if (azureOutputDirectory) {
|
|
166
|
+
packageInfo[
|
|
167
|
+
"homepage"
|
|
168
|
+
] = `https://github.com/Azure/azure-sdk-for-js/tree/main/${azureOutputDirectory}/README.md`;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
if (azureSdkForJs) {
|
|
172
|
+
packageInfo["//metadata"] = {
|
|
173
|
+
constantPaths: []
|
|
174
|
+
};
|
|
175
|
+
// TODO: remember to put the userAgent path into metadata
|
|
176
|
+
// Only generate this from Swagger spec
|
|
177
|
+
if (sourceFrom === "Swagger") {
|
|
178
|
+
packageInfo["//metadata"].constantPaths.push({
|
|
179
|
+
path: "swagger/README.md",
|
|
180
|
+
prefix: "package-version"
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
packageInfo.scripts["build"] =
|
|
184
|
+
"npm run clean && tsc -p . && dev-tool run bundle && mkdirp ./review && api-extractor run --local";
|
|
185
|
+
packageInfo.scripts["build:debug"] =
|
|
186
|
+
"tsc -p . && dev-tool run bundle && api-extractor run --local";
|
|
187
|
+
packageInfo.scripts["build:browser"] = "tsc -p . && dev-tool run bundle";
|
|
188
|
+
packageInfo.scripts["build:node"] = "tsc -p . && dev-tool run bundle";
|
|
189
|
+
packageInfo.devDependencies["@azure/dev-tool"] = "^1.0.0";
|
|
190
|
+
packageInfo.devDependencies["@azure/eslint-plugin-azure-sdk"] = "^3.0.0";
|
|
191
|
+
} else {
|
|
192
|
+
packageInfo.scripts["build"] =
|
|
193
|
+
"npm run clean && tsc && rollup -c 2>&1 && npm run minify && mkdirp ./review && npm run extract-api";
|
|
194
|
+
packageInfo.scripts[
|
|
195
|
+
"minify"
|
|
196
|
+
] = `uglifyjs -c -m --comments --source-map "content='./dist/index.js.map'" -o ./dist/index.min.js ./dist/index.js`;
|
|
197
|
+
packageInfo.devDependencies["@rollup/plugin-commonjs"] = "^24.0.0";
|
|
198
|
+
packageInfo.devDependencies["@rollup/plugin-json"] = "^6.0.0";
|
|
199
|
+
packageInfo.devDependencies["@rollup/plugin-multi-entry"] = "^6.0.0";
|
|
200
|
+
packageInfo.devDependencies["@rollup/plugin-node-resolve"] = "^13.1.3";
|
|
201
|
+
packageInfo.devDependencies["rollup"] = "^2.66.1";
|
|
202
|
+
packageInfo.devDependencies["rollup-plugin-sourcemaps"] = "^0.6.3";
|
|
203
|
+
packageInfo.devDependencies["uglify-js"] = "^3.4.9";
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
if (generateTest) {
|
|
207
|
+
packageInfo.module = `./dist-esm/src/index.js`;
|
|
208
|
+
packageInfo.devDependencies["@azure-tools/test-credential"] = "^1.0.0";
|
|
209
|
+
packageInfo.devDependencies["@azure/identity"] = "^2.0.1";
|
|
210
|
+
packageInfo.devDependencies["@azure-tools/test-recorder"] = "^3.0.0";
|
|
211
|
+
packageInfo.devDependencies["mocha"] = "^7.1.1";
|
|
212
|
+
packageInfo.devDependencies["@types/mocha"] = "^7.0.2";
|
|
213
|
+
packageInfo.devDependencies["mocha-junit-reporter"] = "^1.18.0";
|
|
214
|
+
packageInfo.devDependencies["cross-env"] = "^7.0.2";
|
|
215
|
+
packageInfo.devDependencies["@types/chai"] = "^4.2.8";
|
|
216
|
+
packageInfo.devDependencies["chai"] = "^4.2.0";
|
|
217
|
+
packageInfo.devDependencies["cross-env"] = "^7.0.2";
|
|
218
|
+
packageInfo.devDependencies["karma-chrome-launcher"] = "^3.0.0";
|
|
219
|
+
packageInfo.devDependencies["karma-coverage"] = "^2.0.0";
|
|
220
|
+
packageInfo.devDependencies["karma-env-preprocessor"] = "^0.1.1";
|
|
221
|
+
packageInfo.devDependencies["karma-firefox-launcher"] = "^2.1.2";
|
|
222
|
+
packageInfo.devDependencies["karma-junit-reporter"] = "^2.0.1";
|
|
223
|
+
packageInfo.devDependencies["karma-mocha-reporter"] = "^2.2.5";
|
|
224
|
+
packageInfo.devDependencies["karma-mocha"] = "^2.0.1";
|
|
225
|
+
packageInfo.devDependencies["karma-source-map-support"] = "~1.4.0";
|
|
226
|
+
packageInfo.devDependencies["karma-sourcemap-loader"] = "^0.4.0";
|
|
227
|
+
packageInfo.devDependencies["karma"] = "^6.2.0";
|
|
228
|
+
packageInfo.devDependencies["nyc"] = "^15.0.0";
|
|
229
|
+
packageInfo.devDependencies["source-map-support"] = "^0.5.9";
|
|
230
|
+
packageInfo.devDependencies["ts-node"] = "^10.0.0";
|
|
231
|
+
packageInfo.scripts["test"] =
|
|
232
|
+
"npm run clean && npm run build:test && npm run unit-test";
|
|
233
|
+
packageInfo.scripts["test:node"] =
|
|
234
|
+
"npm run clean && npm run build:test && npm run unit-test:node";
|
|
235
|
+
packageInfo.scripts["test:browser"] =
|
|
236
|
+
"npm run clean && npm run build:test && npm run unit-test:browser";
|
|
237
|
+
packageInfo.scripts["build:browser"] =
|
|
238
|
+
"tsc -p . && cross-env ONLY_BROWSER=true rollup -c 2>&1";
|
|
239
|
+
packageInfo.scripts["build:node"] =
|
|
240
|
+
"tsc -p . && cross-env ONLY_NODE=true rollup -c 2>&1";
|
|
241
|
+
packageInfo.scripts["build:test"] = "tsc -p . && rollup -c 2>&1";
|
|
242
|
+
packageInfo.scripts["unit-test"] =
|
|
243
|
+
"npm run unit-test:node && npm run unit-test:browser";
|
|
244
|
+
packageInfo.scripts["unit-test:node"] =
|
|
245
|
+
'mocha -r esm --require ts-node/register --reporter ../../../common/tools/mocha-multi-reporter.js --timeout 1200000 --full-trace "test/{,!(browser)/**/}*.spec.ts"';
|
|
246
|
+
packageInfo.scripts["unit-test:browser"] = "karma start --single-run";
|
|
247
|
+
packageInfo.scripts["integration-test:browser"] =
|
|
248
|
+
"karma start --single-run";
|
|
249
|
+
packageInfo.scripts["integration-test:node"] =
|
|
250
|
+
'nyc mocha -r esm --require source-map-support/register --reporter ../../../common/tools/mocha-multi-reporter.js --timeout 5000000 --full-trace "dist-esm/test/{,!(browser)/**/}*.spec.js"';
|
|
251
|
+
packageInfo.scripts["integration-test"] =
|
|
252
|
+
"npm run integration-test:node && npm run integration-test:browser";
|
|
253
|
+
if (azureSdkForJs) {
|
|
254
|
+
packageInfo.scripts["build:test"] = "tsc -p . && dev-tool run bundle";
|
|
255
|
+
packageInfo.scripts["integration-test:browser"] =
|
|
256
|
+
"dev-tool run test:browser";
|
|
257
|
+
packageInfo.scripts["unit-test:browser"] = "dev-tool run test:browser";
|
|
258
|
+
packageInfo.scripts["unit-test:node"] =
|
|
259
|
+
"dev-tool run test:node-ts-input -- --timeout 1200000 --exclude 'test/**/browser/*.spec.ts' 'test/**/*.spec.ts'";
|
|
260
|
+
packageInfo.scripts["integration-test:node"] =
|
|
261
|
+
"dev-tool run test:node-js-input -- --timeout 5000000 'dist-esm/test/**/*.spec.js'";
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
packageInfo["browser"] = {
|
|
265
|
+
"./dist-esm/test/public/utils/env.js":
|
|
266
|
+
"./dist-esm/test/public/utils/env.browser.js"
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
if (generateSample) {
|
|
271
|
+
packageInfo["//sampleConfiguration"] = {
|
|
272
|
+
productName:
|
|
273
|
+
codeModel.options.serviceInfo?.title ?? codeModel.clients[0]?.name,
|
|
274
|
+
productSlugs: ["azure"],
|
|
275
|
+
disableDocsMs: true,
|
|
276
|
+
apiRefLink: `https://docs.microsoft.com/javascript/api/${clientPackageName}${apiRefUrlQueryParameter}`
|
|
277
|
+
};
|
|
278
|
+
if (azureSdkForJs) {
|
|
279
|
+
packageInfo.scripts["execute:samples"] =
|
|
280
|
+
"dev-tool samples run samples-dev";
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
|
|
181
284
|
if (codeModel.clients.length > 1) {
|
|
182
|
-
delete
|
|
183
|
-
delete
|
|
285
|
+
delete packageInfo.exports["./api"];
|
|
286
|
+
delete packageInfo.exports["./models"];
|
|
184
287
|
for (const client of codeModel.clients) {
|
|
185
288
|
const subfolder = normalizeName(
|
|
186
289
|
client.name.replace("Client", ""),
|
|
187
290
|
NameType.File
|
|
188
291
|
);
|
|
189
|
-
|
|
292
|
+
packageInfo.exports[`./${subfolder}`] = {
|
|
190
293
|
types: `./types/src/${subfolder}/index.d.ts`,
|
|
191
294
|
import: `./dist-esm/src/${subfolder}/index.js`
|
|
192
295
|
};
|
|
193
|
-
|
|
296
|
+
packageInfo.exports[`./${subfolder}/api`] = {
|
|
194
297
|
types: `./types/src/${subfolder}/api/index.d.ts`,
|
|
195
298
|
import: `./dist-esm/src/${subfolder}/api/index.js`
|
|
196
299
|
};
|
|
197
|
-
|
|
300
|
+
packageInfo.exports[`./${subfolder}/models`] = {
|
|
198
301
|
types: `./types/src/${subfolder}/models/index.d.ts`,
|
|
199
302
|
import: `./dist-esm/src/${subfolder}/models/index.js`
|
|
200
303
|
};
|
|
201
304
|
}
|
|
202
305
|
}
|
|
203
306
|
|
|
204
|
-
packageJson.addStatements(JSON.stringify(
|
|
307
|
+
packageJson.addStatements(JSON.stringify(packageInfo));
|
|
205
308
|
|
|
206
309
|
return packageJson;
|
|
207
310
|
}
|
|
208
311
|
|
|
312
|
+
const modularTsConfigInSDKRepo: Record<string, any> = {
|
|
313
|
+
extends: "../../../tsconfig.package",
|
|
314
|
+
compilerOptions: {
|
|
315
|
+
outDir: "./dist-esm",
|
|
316
|
+
declarationDir: "./types",
|
|
317
|
+
module: "NodeNext",
|
|
318
|
+
moduleResolution: "NodeNext",
|
|
319
|
+
lib: ["esnext", "dom"],
|
|
320
|
+
rootDir: "."
|
|
321
|
+
},
|
|
322
|
+
"ts-node": { esm: true },
|
|
323
|
+
include: ["src/**/*.ts"]
|
|
324
|
+
};
|
|
325
|
+
|
|
326
|
+
const modularTsConfigNotInSDKRepo: Record<string, any> = {
|
|
327
|
+
compilerOptions: {
|
|
328
|
+
target: "ES2017",
|
|
329
|
+
module: "NodeNext",
|
|
330
|
+
lib: ["esnext", "dom"],
|
|
331
|
+
declaration: true,
|
|
332
|
+
declarationMap: true,
|
|
333
|
+
inlineSources: true,
|
|
334
|
+
sourceMap: true,
|
|
335
|
+
importHelpers: true,
|
|
336
|
+
strict: true,
|
|
337
|
+
alwaysStrict: true,
|
|
338
|
+
noUnusedLocals: true,
|
|
339
|
+
noUnusedParameters: true,
|
|
340
|
+
noImplicitReturns: true,
|
|
341
|
+
noFallthroughCasesInSwitch: true,
|
|
342
|
+
forceConsistentCasingInFileNames: true,
|
|
343
|
+
moduleResolution: "NodeNext",
|
|
344
|
+
allowSyntheticDefaultImports: true,
|
|
345
|
+
esModuleInterop: true,
|
|
346
|
+
outDir: "./dist-esm",
|
|
347
|
+
declarationDir: "./types",
|
|
348
|
+
rootDir: "."
|
|
349
|
+
},
|
|
350
|
+
"ts-node": { esm: true },
|
|
351
|
+
include: ["./src/**/*.ts"]
|
|
352
|
+
};
|
|
353
|
+
|
|
209
354
|
export function emitTsConfig(
|
|
210
355
|
project: Project,
|
|
211
356
|
srcPath: string,
|
|
212
|
-
codeModel: ModularCodeModel
|
|
357
|
+
codeModel: ModularCodeModel,
|
|
358
|
+
hasSamplesGenerated = false
|
|
213
359
|
) {
|
|
214
|
-
const
|
|
215
|
-
`${srcPath}/
|
|
360
|
+
const tsConfigFile = project.createSourceFile(
|
|
361
|
+
`${srcPath}/tsconfig.json`,
|
|
216
362
|
"",
|
|
217
363
|
{
|
|
218
364
|
overwrite: true
|
|
219
365
|
}
|
|
220
366
|
);
|
|
221
|
-
const content = {
|
|
222
|
-
extends: "../../../tsconfig.package",
|
|
223
|
-
compilerOptions: {
|
|
224
|
-
outDir: "./dist-esm",
|
|
225
|
-
declarationDir: "./types",
|
|
226
|
-
paths: {
|
|
227
|
-
[`${
|
|
228
|
-
codeModel.options?.packageDetails?.name ?? "@msinternal/unamedpackage"
|
|
229
|
-
}`]: ["./src/index.js"]
|
|
230
|
-
},
|
|
231
|
-
module: "NodeNext",
|
|
232
|
-
moduleResolution: "NodeNext",
|
|
233
|
-
rootDir: "."
|
|
234
|
-
},
|
|
235
|
-
"ts-node": {
|
|
236
|
-
esm: true
|
|
237
|
-
},
|
|
238
|
-
include: ["src/**/*.ts", "test/**/*.ts", "samples-dev/**/*.ts"]
|
|
239
|
-
};
|
|
240
|
-
tsConfig.addStatements(JSON.stringify(content));
|
|
241
367
|
|
|
242
|
-
|
|
368
|
+
const { packageDetails, azureSdkForJs } = codeModel.options || {};
|
|
369
|
+
let { generateTest, generateSample } = codeModel.options || {};
|
|
370
|
+
// Take the undefined as true by default
|
|
371
|
+
generateTest = generateTest === true || generateTest === undefined;
|
|
372
|
+
generateSample =
|
|
373
|
+
(generateSample === true || generateSample === undefined) &&
|
|
374
|
+
hasSamplesGenerated;
|
|
375
|
+
const clientPackageName = packageDetails?.name ?? "@msinternal/unamedpackage";
|
|
376
|
+
const tsConfig = (
|
|
377
|
+
azureSdkForJs ? modularTsConfigInSDKRepo : modularTsConfigNotInSDKRepo
|
|
378
|
+
) as any;
|
|
379
|
+
|
|
380
|
+
if (generateTest) {
|
|
381
|
+
tsConfig.include.push("./test/**/*.ts");
|
|
382
|
+
}
|
|
383
|
+
if (generateSample) {
|
|
384
|
+
tsConfig.include.push("samples-dev/**/*.ts");
|
|
385
|
+
tsConfig.compilerOptions["paths"] = {};
|
|
386
|
+
tsConfig.compilerOptions["paths"][clientPackageName] = ["./src/index"];
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
tsConfigFile.addStatements(JSON.stringify(tsConfig));
|
|
390
|
+
|
|
391
|
+
return tsConfigFile;
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
function appendPathWhenFormat(
|
|
395
|
+
generateTest?: boolean,
|
|
396
|
+
generateSample?: boolean
|
|
397
|
+
) {
|
|
398
|
+
let path = "";
|
|
399
|
+
if (generateTest) {
|
|
400
|
+
path = path + ` "test/**/*.ts"`;
|
|
401
|
+
}
|
|
402
|
+
if (generateSample) {
|
|
403
|
+
path = path + ` "samples-dev/**/*.ts"`;
|
|
404
|
+
}
|
|
405
|
+
return path;
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
function appednPathWhenLint(generateTest?: boolean) {
|
|
409
|
+
return generateTest ? "test" : "";
|
|
243
410
|
}
|
|
@@ -11,13 +11,11 @@ export function buildRootIndex(
|
|
|
11
11
|
) {
|
|
12
12
|
const clientName = `${getClientName(client)}Client`;
|
|
13
13
|
const clientFile = project.getSourceFile(
|
|
14
|
-
`${srcPath}
|
|
14
|
+
`${srcPath}/${subfolder !== "" ? subfolder + "/" : ""}${clientName}.ts`
|
|
15
15
|
);
|
|
16
16
|
|
|
17
17
|
if (!clientFile) {
|
|
18
|
-
throw new Error(
|
|
19
|
-
`Couldn't find client file: ${srcPath}/src/${clientName}.ts`
|
|
20
|
-
);
|
|
18
|
+
throw new Error(`Couldn't find client file: ${srcPath}/${clientName}.ts`);
|
|
21
19
|
}
|
|
22
20
|
|
|
23
21
|
exportClassicalClient(client, rootIndexFile, subfolder);
|
|
@@ -48,7 +46,7 @@ function exportModels(
|
|
|
48
46
|
isTopLevel: boolean = false
|
|
49
47
|
) {
|
|
50
48
|
const modelsFile = project.getSourceFile(
|
|
51
|
-
`${srcPath}
|
|
49
|
+
`${srcPath}/${subfolder !== "" ? subfolder + "/" : ""}models/index.ts`
|
|
52
50
|
);
|
|
53
51
|
if (!modelsFile) {
|
|
54
52
|
return;
|
|
@@ -79,12 +77,12 @@ export function buildSubClientIndexFile(
|
|
|
79
77
|
subfolder: string
|
|
80
78
|
) {
|
|
81
79
|
const subClientIndexFile = project.createSourceFile(
|
|
82
|
-
`${srcPath}
|
|
80
|
+
`${srcPath}/${subfolder !== "" ? subfolder + "/" : ""}index.ts`,
|
|
83
81
|
undefined,
|
|
84
82
|
{ overwrite: true }
|
|
85
83
|
);
|
|
86
84
|
const clientName = `${getClientName(client)}Client`;
|
|
87
|
-
const clientFilePath = `${srcPath}
|
|
85
|
+
const clientFilePath = `${srcPath}/${
|
|
88
86
|
subfolder !== "" ? subfolder + "/" : ""
|
|
89
87
|
}${clientName}.ts`;
|
|
90
88
|
const clientFile = project.getSourceFile(clientFilePath);
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { join } from "path";
|
|
1
2
|
import { Project } from "ts-morph";
|
|
2
3
|
|
|
3
4
|
export function buildSubpathIndexFile(
|
|
@@ -6,9 +7,15 @@ export function buildSubpathIndexFile(
|
|
|
6
7
|
subpath: string,
|
|
7
8
|
subfolder: string
|
|
8
9
|
) {
|
|
9
|
-
const
|
|
10
|
+
const apiFilePattern = join(srcPath, subfolder, subpath);
|
|
11
|
+
const apiFiles = project.getSourceFiles().filter((file) => {
|
|
12
|
+
return file
|
|
13
|
+
.getFilePath()
|
|
14
|
+
.replace(/\\/g, "/")
|
|
15
|
+
.startsWith(apiFilePattern.replace(/\\/g, "/"));
|
|
16
|
+
});
|
|
10
17
|
const indexFile = project.createSourceFile(
|
|
11
|
-
`${srcPath}
|
|
18
|
+
`${srcPath}/${subfolder}/${subpath}/index.ts`
|
|
12
19
|
);
|
|
13
20
|
for (const file of apiFiles) {
|
|
14
21
|
const exports = [...file.getExportedDeclarations().keys()].filter(
|