@azure/playwright 1.1.3 → 1.1.4
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/dist/browser/common/constants.d.ts +1 -4
- package/dist/browser/common/constants.d.ts.map +1 -1
- package/dist/browser/common/constants.js +1 -4
- package/dist/browser/common/constants.js.map +1 -1
- package/dist/browser/common/types.d.ts +0 -4
- package/dist/browser/common/types.d.ts.map +1 -1
- package/dist/browser/common/types.js.map +1 -1
- package/dist/browser/reporter/playwrightReporter.d.ts +0 -1
- package/dist/browser/reporter/playwrightReporter.d.ts.map +1 -1
- package/dist/browser/reporter/playwrightReporter.js +3 -17
- package/dist/browser/reporter/playwrightReporter.js.map +1 -1
- package/dist/browser/utils/PlaywrightServiceClient.d.ts +1 -2
- package/dist/browser/utils/PlaywrightServiceClient.d.ts.map +1 -1
- package/dist/browser/utils/PlaywrightServiceClient.js +1 -26
- package/dist/browser/utils/PlaywrightServiceClient.js.map +1 -1
- package/dist/browser/utils/utils.d.ts +2 -3
- package/dist/browser/utils/utils.d.ts.map +1 -1
- package/dist/browser/utils/utils.js +8 -21
- package/dist/browser/utils/utils.js.map +1 -1
- package/dist/commonjs/common/constants.d.ts +1 -4
- package/dist/commonjs/common/constants.d.ts.map +1 -1
- package/dist/commonjs/common/constants.js +2 -5
- package/dist/commonjs/common/constants.js.map +1 -1
- package/dist/commonjs/common/types.d.ts +0 -4
- package/dist/commonjs/common/types.d.ts.map +1 -1
- package/dist/commonjs/common/types.js.map +1 -1
- package/dist/commonjs/reporter/playwrightReporter.d.ts +0 -1
- package/dist/commonjs/reporter/playwrightReporter.d.ts.map +1 -1
- package/dist/commonjs/reporter/playwrightReporter.js +2 -16
- package/dist/commonjs/reporter/playwrightReporter.js.map +1 -1
- package/dist/commonjs/tsdoc-metadata.json +1 -1
- package/dist/commonjs/utils/PlaywrightServiceClient.d.ts +1 -2
- package/dist/commonjs/utils/PlaywrightServiceClient.d.ts.map +1 -1
- package/dist/commonjs/utils/PlaywrightServiceClient.js +0 -25
- package/dist/commonjs/utils/PlaywrightServiceClient.js.map +1 -1
- package/dist/commonjs/utils/utils.d.ts +2 -3
- package/dist/commonjs/utils/utils.d.ts.map +1 -1
- package/dist/commonjs/utils/utils.js +8 -22
- package/dist/commonjs/utils/utils.js.map +1 -1
- package/dist/esm/common/constants.d.ts +1 -4
- package/dist/esm/common/constants.d.ts.map +1 -1
- package/dist/esm/common/constants.js +92 -96
- package/dist/esm/common/constants.js.map +1 -7
- package/dist/esm/common/customerConfig.js +11 -11
- package/dist/esm/common/customerConfig.js.map +1 -7
- package/dist/esm/common/entraIdAccessToken.js +77 -85
- package/dist/esm/common/entraIdAccessToken.js.map +1 -7
- package/dist/esm/common/environmentVariables.js +19 -19
- package/dist/esm/common/environmentVariables.js.map +1 -7
- package/dist/esm/common/executor.js +58 -51
- package/dist/esm/common/executor.js.map +1 -7
- package/dist/esm/common/httpService.js +29 -34
- package/dist/esm/common/httpService.js.map +1 -7
- package/dist/esm/common/logger.js +4 -4
- package/dist/esm/common/logger.js.map +1 -7
- package/dist/esm/common/messages.js +166 -166
- package/dist/esm/common/messages.js.map +1 -7
- package/dist/esm/common/playwrightServiceConfig.js +91 -91
- package/dist/esm/common/playwrightServiceConfig.js.map +1 -7
- package/dist/esm/common/state.js +7 -7
- package/dist/esm/common/state.js.map +1 -7
- package/dist/esm/common/types.d.ts +0 -4
- package/dist/esm/common/types.d.ts.map +1 -1
- package/dist/esm/common/types.js +4 -0
- package/dist/esm/common/types.js.map +1 -7
- package/dist/esm/core/global/playwright-service-global-setup.js +17 -17
- package/dist/esm/core/global/playwright-service-global-setup.js.map +1 -7
- package/dist/esm/core/global/playwright-service-global-teardown.js +13 -16
- package/dist/esm/core/global/playwright-service-global-teardown.js.map +1 -7
- package/dist/esm/core/initializePlaywrightServiceTestRun.js +21 -13
- package/dist/esm/core/initializePlaywrightServiceTestRun.js.map +1 -7
- package/dist/esm/core/playwrightService.js +200 -149
- package/dist/esm/core/playwrightService.js.map +1 -7
- package/dist/esm/core/playwrightServiceEntra.js +42 -44
- package/dist/esm/core/playwrightServiceEntra.js.map +1 -7
- package/dist/esm/core/playwrightServiceUtils.js +8 -6
- package/dist/esm/core/playwrightServiceUtils.js.map +1 -7
- package/dist/esm/index.js +9 -7
- package/dist/esm/index.js.map +1 -7
- package/dist/esm/reporter/index.js +11 -4
- package/dist/esm/reporter/index.js.map +1 -7
- package/dist/esm/reporter/playwrightReporter.d.ts +0 -1
- package/dist/esm/reporter/playwrightReporter.d.ts.map +1 -1
- package/dist/esm/reporter/playwrightReporter.js +193 -202
- package/dist/esm/reporter/playwrightReporter.js.map +1 -7
- package/dist/esm/utils/PlaywrightServiceClient.d.ts +1 -2
- package/dist/esm/utils/PlaywrightServiceClient.d.ts.map +1 -1
- package/dist/esm/utils/PlaywrightServiceClient.js +61 -121
- package/dist/esm/utils/PlaywrightServiceClient.js.map +1 -7
- package/dist/esm/utils/cIInfoProvider.js +71 -58
- package/dist/esm/utils/cIInfoProvider.js.map +1 -7
- package/dist/esm/utils/getPackageVersion.js +17 -12
- package/dist/esm/utils/getPackageVersion.js.map +1 -7
- package/dist/esm/utils/getPlaywrightVersion.js +13 -15
- package/dist/esm/utils/getPlaywrightVersion.js.map +1 -7
- package/dist/esm/utils/packageManager.js +37 -37
- package/dist/esm/utils/packageManager.js.map +1 -7
- package/dist/esm/utils/parseJwt.js +14 -15
- package/dist/esm/utils/parseJwt.js.map +1 -7
- package/dist/esm/utils/playwrightReporterStorageManager.js +333 -358
- package/dist/esm/utils/playwrightReporterStorageManager.js.map +1 -7
- package/dist/esm/utils/utils.d.ts +2 -3
- package/dist/esm/utils/utils.d.ts.map +1 -1
- package/dist/esm/utils/utils.js +338 -380
- package/dist/esm/utils/utils.js.map +1 -7
- package/dist/react-native/common/constants.d.ts +1 -4
- package/dist/react-native/common/constants.d.ts.map +1 -1
- package/dist/react-native/common/constants.js +1 -4
- package/dist/react-native/common/constants.js.map +1 -1
- package/dist/react-native/common/types.d.ts +0 -4
- package/dist/react-native/common/types.d.ts.map +1 -1
- package/dist/react-native/common/types.js.map +1 -1
- package/dist/react-native/reporter/playwrightReporter.d.ts +0 -1
- package/dist/react-native/reporter/playwrightReporter.d.ts.map +1 -1
- package/dist/react-native/reporter/playwrightReporter.js +3 -17
- package/dist/react-native/reporter/playwrightReporter.js.map +1 -1
- package/dist/react-native/utils/PlaywrightServiceClient.d.ts +1 -2
- package/dist/react-native/utils/PlaywrightServiceClient.d.ts.map +1 -1
- package/dist/react-native/utils/PlaywrightServiceClient.js +1 -26
- package/dist/react-native/utils/PlaywrightServiceClient.js.map +1 -1
- package/dist/react-native/utils/utils.d.ts +2 -3
- package/dist/react-native/utils/utils.d.ts.map +1 -1
- package/dist/react-native/utils/utils.js +8 -21
- package/dist/react-native/utils/utils.js.map +1 -1
- package/package.json +6 -6
|
@@ -1,92 +1,84 @@
|
|
|
1
|
+
// Copyright (c) Microsoft Corporation.
|
|
2
|
+
// Licensed under the MIT License.
|
|
1
3
|
import { coreLogger } from "./logger.js";
|
|
2
|
-
import {
|
|
3
|
-
EntraIdAccessTokenConstants,
|
|
4
|
-
InternalEnvironmentVariables,
|
|
5
|
-
ServiceEnvironmentVariable
|
|
6
|
-
} from "./constants.js";
|
|
4
|
+
import { EntraIdAccessTokenConstants, InternalEnvironmentVariables, ServiceEnvironmentVariable, } from "./constants.js";
|
|
7
5
|
import { parseJwt } from "../utils/parseJwt.js";
|
|
8
6
|
import { ServiceErrorMessageConstants } from "./messages.js";
|
|
9
|
-
class EntraIdAccessToken {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
7
|
+
export class EntraIdAccessToken {
|
|
8
|
+
token;
|
|
9
|
+
_expiryTimestamp; // in milliseconds
|
|
10
|
+
_credential;
|
|
11
|
+
_noOpFlag = false;
|
|
12
|
+
constructor(credential) {
|
|
13
|
+
this._credential = credential;
|
|
14
|
+
if (!this._credential) {
|
|
15
|
+
this._noOpFlag = true;
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
this.setEntraIdAccessTokenFromEnvironment();
|
|
20
19
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
20
|
+
fetchEntraIdAccessToken = async () => {
|
|
21
|
+
if (this._noOpFlag) {
|
|
22
|
+
throw new Error(ServiceErrorMessageConstants.NO_CRED_ENTRA_AUTH_ERROR.message);
|
|
23
|
+
}
|
|
24
|
+
try {
|
|
25
|
+
coreLogger.info("Fetching entra id access token");
|
|
26
|
+
const accessToken = await this._credential.getToken(EntraIdAccessTokenConstants.SCOPE);
|
|
27
|
+
if (!accessToken) {
|
|
28
|
+
throw new Error("Entra id access token is null");
|
|
29
|
+
}
|
|
30
|
+
if (accessToken.token === this.token) {
|
|
31
|
+
// azure identity library can fetch the same token again from cache. 10 mins before expiry, it allows token refresh
|
|
32
|
+
coreLogger.info("Cached access token is returned, will be retried again.");
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
this.token = accessToken.token;
|
|
36
|
+
this._expiryTimestamp = accessToken.expiresOnTimestamp;
|
|
37
|
+
process.env[ServiceEnvironmentVariable.PLAYWRIGHT_SERVICE_ACCESS_TOKEN] = this.token;
|
|
38
|
+
coreLogger.info("Entra id access token fetched and set in environment variable");
|
|
39
|
+
coreLogger.info("Entra id access token expiry:", new Date(this._expiryTimestamp).toISOString());
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
catch (err) {
|
|
43
|
+
coreLogger.error(err);
|
|
44
|
+
process.env[InternalEnvironmentVariables.MPT_SETUP_FATAL_ERROR] = "true";
|
|
45
|
+
throw new Error(ServiceErrorMessageConstants.NO_AUTH_ERROR_ENTRA_TOKEN.message);
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
doesEntraIdAccessTokenNeedRotation() {
|
|
49
|
+
if (this._noOpFlag) {
|
|
50
|
+
throw new Error(ServiceErrorMessageConstants.NO_CRED_ENTRA_AUTH_ERROR.message);
|
|
51
|
+
}
|
|
52
|
+
if (!this.token) {
|
|
53
|
+
coreLogger.info("Entra id access token not found, needs rotation");
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
const lifetimeLeft = this._expiryTimestamp - new Date().getTime();
|
|
57
|
+
const doesEntraTokenRequireRotation = lifetimeLeft <
|
|
58
|
+
EntraIdAccessTokenConstants.LIFETIME_LEFT_THRESHOLD_IN_MINUTES_FOR_ROTATION * 60 * 1000;
|
|
59
|
+
coreLogger.info("Entra id access token requires rotation:", doesEntraTokenRequireRotation ? "Yes" : "No");
|
|
60
|
+
return doesEntraTokenRequireRotation;
|
|
26
61
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
return;
|
|
46
|
-
} catch (err) {
|
|
47
|
-
coreLogger.error(err);
|
|
48
|
-
process.env[InternalEnvironmentVariables.MPT_SETUP_FATAL_ERROR] = "true";
|
|
49
|
-
throw new Error(ServiceErrorMessageConstants.NO_AUTH_ERROR_ENTRA_TOKEN.message);
|
|
50
|
-
}
|
|
51
|
-
};
|
|
52
|
-
doesEntraIdAccessTokenNeedRotation() {
|
|
53
|
-
if (this._noOpFlag) {
|
|
54
|
-
throw new Error(ServiceErrorMessageConstants.NO_CRED_ENTRA_AUTH_ERROR.message);
|
|
55
|
-
}
|
|
56
|
-
if (!this.token) {
|
|
57
|
-
coreLogger.info("Entra id access token not found, needs rotation");
|
|
58
|
-
return true;
|
|
59
|
-
}
|
|
60
|
-
const lifetimeLeft = this._expiryTimestamp - (/* @__PURE__ */ new Date()).getTime();
|
|
61
|
-
const doesEntraTokenRequireRotation = lifetimeLeft < EntraIdAccessTokenConstants.LIFETIME_LEFT_THRESHOLD_IN_MINUTES_FOR_ROTATION * 60 * 1e3;
|
|
62
|
-
coreLogger.info(
|
|
63
|
-
"Entra id access token requires rotation:",
|
|
64
|
-
doesEntraTokenRequireRotation ? "Yes" : "No"
|
|
65
|
-
);
|
|
66
|
-
return doesEntraTokenRequireRotation;
|
|
67
|
-
}
|
|
68
|
-
setEntraIdAccessTokenFromEnvironment = () => {
|
|
69
|
-
try {
|
|
70
|
-
const token = process.env[ServiceEnvironmentVariable.PLAYWRIGHT_SERVICE_ACCESS_TOKEN];
|
|
71
|
-
if (!token) {
|
|
72
|
-
return;
|
|
73
|
-
}
|
|
74
|
-
const claims = parseJwt(token);
|
|
75
|
-
if (claims.pwid) {
|
|
76
|
-
return;
|
|
77
|
-
}
|
|
78
|
-
const expiry = new Date(claims.exp * 1e3);
|
|
79
|
-
this.token = token;
|
|
80
|
-
this._expiryTimestamp = expiry.getTime();
|
|
81
|
-
} catch (_) {
|
|
82
|
-
return;
|
|
83
|
-
}
|
|
84
|
-
};
|
|
62
|
+
setEntraIdAccessTokenFromEnvironment = () => {
|
|
63
|
+
try {
|
|
64
|
+
const token = process.env[ServiceEnvironmentVariable.PLAYWRIGHT_SERVICE_ACCESS_TOKEN];
|
|
65
|
+
if (!token) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
const claims = parseJwt(token);
|
|
69
|
+
if (claims.pwid) {
|
|
70
|
+
return;
|
|
71
|
+
} // mpt PAT
|
|
72
|
+
const expiry = new Date(claims.exp * 1000);
|
|
73
|
+
this.token = token;
|
|
74
|
+
this._expiryTimestamp = expiry.getTime();
|
|
75
|
+
}
|
|
76
|
+
catch (_) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
};
|
|
85
80
|
}
|
|
86
|
-
function createEntraIdAccessToken(credential) {
|
|
87
|
-
|
|
81
|
+
export function createEntraIdAccessToken(credential) {
|
|
82
|
+
return new EntraIdAccessToken(credential);
|
|
88
83
|
}
|
|
89
|
-
|
|
90
|
-
EntraIdAccessToken,
|
|
91
|
-
createEntraIdAccessToken
|
|
92
|
-
};
|
|
84
|
+
//# sourceMappingURL=entraIdAccessToken.js.map
|
|
@@ -1,7 +1 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["/mnt/vss/_work/1/s/sdk/loadtesting/playwright/src/common/entraIdAccessToken.ts"],
|
|
4
|
-
"sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { TokenCredential } from \"@azure/core-auth\";\nimport { coreLogger } from \"./logger.js\";\nimport {\n EntraIdAccessTokenConstants,\n InternalEnvironmentVariables,\n ServiceEnvironmentVariable,\n} from \"./constants.js\";\nimport type { AccessTokenClaims } from \"./types.js\";\nimport { parseJwt } from \"../utils/parseJwt.js\";\nimport { ServiceErrorMessageConstants } from \"./messages.js\";\n\nexport class EntraIdAccessToken {\n public token?: string;\n private _expiryTimestamp?: number; // in milliseconds\n private _credential?: TokenCredential;\n private _noOpFlag = false;\n\n constructor(credential?: TokenCredential) {\n this._credential = credential;\n if (!this._credential) {\n this._noOpFlag = true;\n return;\n }\n this.setEntraIdAccessTokenFromEnvironment();\n }\n\n public fetchEntraIdAccessToken = async (): Promise<void> => {\n if (this._noOpFlag) {\n throw new Error(ServiceErrorMessageConstants.NO_CRED_ENTRA_AUTH_ERROR.message);\n }\n try {\n coreLogger.info(\"Fetching entra id access token\");\n const accessToken = await this._credential!.getToken(EntraIdAccessTokenConstants.SCOPE);\n if (!accessToken) {\n throw new Error(\"Entra id access token is null\");\n }\n if (accessToken.token === this.token) {\n // azure identity library can fetch the same token again from cache. 10 mins before expiry, it allows token refresh\n coreLogger.info(\"Cached access token is returned, will be retried again.\");\n return;\n }\n this.token = accessToken.token;\n this._expiryTimestamp = accessToken.expiresOnTimestamp;\n process.env[ServiceEnvironmentVariable.PLAYWRIGHT_SERVICE_ACCESS_TOKEN] = this.token!;\n coreLogger.info(\"Entra id access token fetched and set in environment variable\");\n coreLogger.info(\n \"Entra id access token expiry:\",\n new Date(this._expiryTimestamp!).toISOString(),\n );\n return;\n } catch (err) {\n coreLogger.error(err);\n process.env[InternalEnvironmentVariables.MPT_SETUP_FATAL_ERROR] = \"true\";\n throw new Error(ServiceErrorMessageConstants.NO_AUTH_ERROR_ENTRA_TOKEN.message);\n }\n };\n\n public doesEntraIdAccessTokenNeedRotation(): boolean {\n if (this._noOpFlag) {\n throw new Error(ServiceErrorMessageConstants.NO_CRED_ENTRA_AUTH_ERROR.message);\n }\n if (!this.token) {\n coreLogger.info(\"Entra id access token not found, needs rotation\");\n return true;\n }\n const lifetimeLeft = this._expiryTimestamp! - new Date().getTime();\n const doesEntraTokenRequireRotation =\n lifetimeLeft <\n EntraIdAccessTokenConstants.LIFETIME_LEFT_THRESHOLD_IN_MINUTES_FOR_ROTATION * 60 * 1000;\n coreLogger.info(\n \"Entra id access token requires rotation:\",\n doesEntraTokenRequireRotation ? \"Yes\" : \"No\",\n );\n return doesEntraTokenRequireRotation;\n }\n\n private setEntraIdAccessTokenFromEnvironment = (): void => {\n try {\n const token = process.env[ServiceEnvironmentVariable.PLAYWRIGHT_SERVICE_ACCESS_TOKEN];\n if (!token) {\n return;\n }\n const claims = parseJwt<Partial<AccessTokenClaims>>(token);\n if (claims.pwid) {\n return;\n } // mpt PAT\n const expiry = new Date(claims.exp! * 1000);\n this.token = token;\n this._expiryTimestamp = expiry.getTime();\n } catch (_) {\n return;\n }\n };\n}\n\nexport function createEntraIdAccessToken(credential?: TokenCredential): EntraIdAccessToken {\n return new EntraIdAccessToken(credential);\n}\n"],
|
|
5
|
-
"mappings": "AAIA,SAAS,kBAAkB;AAC3B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,gBAAgB;AACzB,SAAS,oCAAoC;AAEtC,MAAM,mBAAmB;AAAA,EACvB;AAAA,EACC;AAAA;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EAEpB,YAAY,YAA8B;AACxC,SAAK,cAAc;AACnB,QAAI,CAAC,KAAK,aAAa;AACrB,WAAK,YAAY;AACjB;AAAA,IACF;AACA,SAAK,qCAAqC;AAAA,EAC5C;AAAA,EAEO,0BAA0B,YAA2B;AAC1D,QAAI,KAAK,WAAW;AAClB,YAAM,IAAI,MAAM,6BAA6B,yBAAyB,OAAO;AAAA,IAC/E;AACA,QAAI;AACF,iBAAW,KAAK,gCAAgC;AAChD,YAAM,cAAc,MAAM,KAAK,YAAa,SAAS,4BAA4B,KAAK;AACtF,UAAI,CAAC,aAAa;AAChB,cAAM,IAAI,MAAM,+BAA+B;AAAA,MACjD;AACA,UAAI,YAAY,UAAU,KAAK,OAAO;AAEpC,mBAAW,KAAK,yDAAyD;AACzE;AAAA,MACF;AACA,WAAK,QAAQ,YAAY;AACzB,WAAK,mBAAmB,YAAY;AACpC,cAAQ,IAAI,2BAA2B,+BAA+B,IAAI,KAAK;AAC/E,iBAAW,KAAK,+DAA+D;AAC/E,iBAAW;AAAA,QACT;AAAA,QACA,IAAI,KAAK,KAAK,gBAAiB,EAAE,YAAY;AAAA,MAC/C;AACA;AAAA,IACF,SAAS,KAAK;AACZ,iBAAW,MAAM,GAAG;AACpB,cAAQ,IAAI,6BAA6B,qBAAqB,IAAI;AAClE,YAAM,IAAI,MAAM,6BAA6B,0BAA0B,OAAO;AAAA,IAChF;AAAA,EACF;AAAA,EAEO,qCAA8C;AACnD,QAAI,KAAK,WAAW;AAClB,YAAM,IAAI,MAAM,6BAA6B,yBAAyB,OAAO;AAAA,IAC/E;AACA,QAAI,CAAC,KAAK,OAAO;AACf,iBAAW,KAAK,iDAAiD;AACjE,aAAO;AAAA,IACT;AACA,UAAM,eAAe,KAAK,oBAAoB,oBAAI,KAAK,GAAE,QAAQ;AACjE,UAAM,gCACJ,eACA,4BAA4B,kDAAkD,KAAK;AACrF,eAAW;AAAA,MACT;AAAA,MACA,gCAAgC,QAAQ;AAAA,IAC1C;AACA,WAAO;AAAA,EACT;AAAA,EAEQ,uCAAuC,MAAY;AACzD,QAAI;AACF,YAAM,QAAQ,QAAQ,IAAI,2BAA2B,+BAA+B;AACpF,UAAI,CAAC,OAAO;AACV;AAAA,MACF;AACA,YAAM,SAAS,SAAqC,KAAK;AACzD,UAAI,OAAO,MAAM;AACf;AAAA,MACF;AACA,YAAM,SAAS,IAAI,KAAK,OAAO,MAAO,GAAI;AAC1C,WAAK,QAAQ;AACb,WAAK,mBAAmB,OAAO,QAAQ;AAAA,IACzC,SAAS,GAAG;AACV;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,yBAAyB,YAAkD;AACzF,SAAO,IAAI,mBAAmB,UAAU;AAC1C;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
1
|
+
{"version":3,"file":"entraIdAccessToken.js","sourceRoot":"","sources":["../../../src/common/entraIdAccessToken.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { TokenCredential } from \"@azure/core-auth\";\nimport { coreLogger } from \"./logger.js\";\nimport {\n EntraIdAccessTokenConstants,\n InternalEnvironmentVariables,\n ServiceEnvironmentVariable,\n} from \"./constants.js\";\nimport type { AccessTokenClaims } from \"./types.js\";\nimport { parseJwt } from \"../utils/parseJwt.js\";\nimport { ServiceErrorMessageConstants } from \"./messages.js\";\n\nexport class EntraIdAccessToken {\n public token?: string;\n private _expiryTimestamp?: number; // in milliseconds\n private _credential?: TokenCredential;\n private _noOpFlag = false;\n\n constructor(credential?: TokenCredential) {\n this._credential = credential;\n if (!this._credential) {\n this._noOpFlag = true;\n return;\n }\n this.setEntraIdAccessTokenFromEnvironment();\n }\n\n public fetchEntraIdAccessToken = async (): Promise<void> => {\n if (this._noOpFlag) {\n throw new Error(ServiceErrorMessageConstants.NO_CRED_ENTRA_AUTH_ERROR.message);\n }\n try {\n coreLogger.info(\"Fetching entra id access token\");\n const accessToken = await this._credential!.getToken(EntraIdAccessTokenConstants.SCOPE);\n if (!accessToken) {\n throw new Error(\"Entra id access token is null\");\n }\n if (accessToken.token === this.token) {\n // azure identity library can fetch the same token again from cache. 10 mins before expiry, it allows token refresh\n coreLogger.info(\"Cached access token is returned, will be retried again.\");\n return;\n }\n this.token = accessToken.token;\n this._expiryTimestamp = accessToken.expiresOnTimestamp;\n process.env[ServiceEnvironmentVariable.PLAYWRIGHT_SERVICE_ACCESS_TOKEN] = this.token!;\n coreLogger.info(\"Entra id access token fetched and set in environment variable\");\n coreLogger.info(\n \"Entra id access token expiry:\",\n new Date(this._expiryTimestamp!).toISOString(),\n );\n return;\n } catch (err) {\n coreLogger.error(err);\n process.env[InternalEnvironmentVariables.MPT_SETUP_FATAL_ERROR] = \"true\";\n throw new Error(ServiceErrorMessageConstants.NO_AUTH_ERROR_ENTRA_TOKEN.message);\n }\n };\n\n public doesEntraIdAccessTokenNeedRotation(): boolean {\n if (this._noOpFlag) {\n throw new Error(ServiceErrorMessageConstants.NO_CRED_ENTRA_AUTH_ERROR.message);\n }\n if (!this.token) {\n coreLogger.info(\"Entra id access token not found, needs rotation\");\n return true;\n }\n const lifetimeLeft = this._expiryTimestamp! - new Date().getTime();\n const doesEntraTokenRequireRotation =\n lifetimeLeft <\n EntraIdAccessTokenConstants.LIFETIME_LEFT_THRESHOLD_IN_MINUTES_FOR_ROTATION * 60 * 1000;\n coreLogger.info(\n \"Entra id access token requires rotation:\",\n doesEntraTokenRequireRotation ? \"Yes\" : \"No\",\n );\n return doesEntraTokenRequireRotation;\n }\n\n private setEntraIdAccessTokenFromEnvironment = (): void => {\n try {\n const token = process.env[ServiceEnvironmentVariable.PLAYWRIGHT_SERVICE_ACCESS_TOKEN];\n if (!token) {\n return;\n }\n const claims = parseJwt<Partial<AccessTokenClaims>>(token);\n if (claims.pwid) {\n return;\n } // mpt PAT\n const expiry = new Date(claims.exp! * 1000);\n this.token = token;\n this._expiryTimestamp = expiry.getTime();\n } catch (_) {\n return;\n }\n };\n}\n\nexport function createEntraIdAccessToken(credential?: TokenCredential): EntraIdAccessToken {\n return new EntraIdAccessToken(credential);\n}\n"]}
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
+
// Copyright (c) Microsoft Corporation.
|
|
2
|
+
// Licensed under the MIT License.
|
|
1
3
|
import { randomUUID } from "node:crypto";
|
|
2
4
|
import { InternalEnvironmentVariables } from "./constants.js";
|
|
3
|
-
class EnvironmentVariables {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
5
|
+
export class EnvironmentVariables {
|
|
6
|
+
get accessToken() {
|
|
7
|
+
return process.env["PLAYWRIGHT_SERVICE_ACCESS_TOKEN"];
|
|
8
|
+
}
|
|
9
|
+
runId;
|
|
10
|
+
accountId;
|
|
11
|
+
userId;
|
|
12
|
+
userName;
|
|
13
|
+
correlationId;
|
|
14
|
+
region;
|
|
15
|
+
runName;
|
|
16
|
+
constructor() {
|
|
17
|
+
this.runName = process.env["_MPT_SERVICE_RUN_NAME"];
|
|
18
|
+
this.runId = process.env[InternalEnvironmentVariables.MPT_SERVICE_RUN_ID];
|
|
19
|
+
this.correlationId = randomUUID();
|
|
20
|
+
}
|
|
19
21
|
}
|
|
20
|
-
|
|
21
|
-
EnvironmentVariables
|
|
22
|
-
};
|
|
22
|
+
//# sourceMappingURL=environmentVariables.js.map
|
|
@@ -1,7 +1 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["/mnt/vss/_work/1/s/sdk/loadtesting/playwright/src/common/environmentVariables.ts"],
|
|
4
|
-
"sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { randomUUID } from \"node:crypto\";\nimport { InternalEnvironmentVariables } from \"./constants.js\";\n\nexport class EnvironmentVariables {\n get accessToken(): string {\n return process.env[\"PLAYWRIGHT_SERVICE_ACCESS_TOKEN\"]!;\n }\n runId: string;\n accountId: string | undefined;\n userId: string | undefined;\n userName: string | undefined;\n correlationId: string | undefined;\n region: string | undefined;\n runName: string;\n constructor() {\n this.runName = process.env[\"_MPT_SERVICE_RUN_NAME\"]!;\n this.runId = process.env[InternalEnvironmentVariables.MPT_SERVICE_RUN_ID]!;\n this.correlationId = randomUUID();\n }\n}\n"],
|
|
5
|
-
"mappings": "AAGA,SAAS,kBAAkB;AAC3B,SAAS,oCAAoC;AAEtC,MAAM,qBAAqB;AAAA,EAChC,IAAI,cAAsB;AACxB,WAAO,QAAQ,IAAI,iCAAiC;AAAA,EACtD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AACZ,SAAK,UAAU,QAAQ,IAAI,uBAAuB;AAClD,SAAK,QAAQ,QAAQ,IAAI,6BAA6B,kBAAkB;AACxE,SAAK,gBAAgB,WAAW;AAAA,EAClC;AACF;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
1
|
+
{"version":3,"file":"environmentVariables.js","sourceRoot":"","sources":["../../../src/common/environmentVariables.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAC;AAE9D,MAAM,OAAO,oBAAoB;IAC/B,IAAI,WAAW;QACb,OAAO,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAE,CAAC;IACzD,CAAC;IACD,KAAK,CAAS;IACd,SAAS,CAAqB;IAC9B,MAAM,CAAqB;IAC3B,QAAQ,CAAqB;IAC7B,aAAa,CAAqB;IAClC,MAAM,CAAqB;IAC3B,OAAO,CAAS;IAChB;QACE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAE,CAAC;QACrD,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,kBAAkB,CAAE,CAAC;QAC3E,IAAI,CAAC,aAAa,GAAG,UAAU,EAAE,CAAC;IACpC,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { randomUUID } from \"node:crypto\";\nimport { InternalEnvironmentVariables } from \"./constants.js\";\n\nexport class EnvironmentVariables {\n get accessToken(): string {\n return process.env[\"PLAYWRIGHT_SERVICE_ACCESS_TOKEN\"]!;\n }\n runId: string;\n accountId: string | undefined;\n userId: string | undefined;\n userName: string | undefined;\n correlationId: string | undefined;\n region: string | undefined;\n runName: string;\n constructor() {\n this.runName = process.env[\"_MPT_SERVICE_RUN_NAME\"]!;\n this.runId = process.env[InternalEnvironmentVariables.MPT_SERVICE_RUN_ID]!;\n this.correlationId = randomUUID();\n }\n}\n"]}
|
|
@@ -1,66 +1,73 @@
|
|
|
1
|
+
// Copyright (c) Microsoft Corporation.
|
|
2
|
+
// Licensed under the MIT License.
|
|
1
3
|
import { basename } from "node:path";
|
|
2
4
|
import fs from "node:fs";
|
|
3
5
|
import url from "url";
|
|
4
6
|
import path from "node:path";
|
|
5
7
|
import { ServiceErrorMessageConstants } from "./messages.js";
|
|
6
8
|
const getPackageJsonPath = (folderPath) => {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
9
|
+
const packageJsonPath = path.join(folderPath, "package.json");
|
|
10
|
+
if (fs.existsSync(packageJsonPath)) {
|
|
11
|
+
return packageJsonPath;
|
|
12
|
+
}
|
|
13
|
+
const parentFolder = path.dirname(folderPath);
|
|
14
|
+
if (folderPath === parentFolder) {
|
|
15
|
+
return "";
|
|
16
|
+
}
|
|
17
|
+
const result = getPackageJsonPath(parentFolder);
|
|
18
|
+
return result;
|
|
17
19
|
};
|
|
18
20
|
const folderIsModule = (folder) => {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
21
|
+
const packageJsonPath = getPackageJsonPath(folder);
|
|
22
|
+
if (!packageJsonPath)
|
|
23
|
+
return false;
|
|
24
|
+
// Rely on `require` internal caching logic.
|
|
25
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
26
|
+
return require(packageJsonPath).type === "module";
|
|
22
27
|
};
|
|
23
|
-
const fileIsModule = (
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
+
const fileIsModule = (file) => {
|
|
29
|
+
if (file.endsWith(".mjs") || file.endsWith(".mts"))
|
|
30
|
+
return true;
|
|
31
|
+
if (file.endsWith(".cjs") || file.endsWith(".cts"))
|
|
32
|
+
return false;
|
|
33
|
+
const folder = path.dirname(file);
|
|
34
|
+
return folderIsModule(folder);
|
|
28
35
|
};
|
|
29
36
|
const resolveFile = (id, rootDir) => {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
37
|
+
if (!id) {
|
|
38
|
+
return undefined;
|
|
39
|
+
}
|
|
40
|
+
const localPath = path.resolve(rootDir, id);
|
|
41
|
+
if (fs.existsSync(localPath)) {
|
|
42
|
+
return localPath;
|
|
43
|
+
}
|
|
44
|
+
return require.resolve(id, { paths: [rootDir] });
|
|
38
45
|
};
|
|
39
46
|
const requireOrImportDefaultFunction = async (file) => {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
)
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
47
|
+
const fileName = basename(file);
|
|
48
|
+
const isModule = fileIsModule(file);
|
|
49
|
+
let func;
|
|
50
|
+
if (isModule)
|
|
51
|
+
func = await eval(`import(${JSON.stringify(url.pathToFileURL(file))})`);
|
|
52
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
53
|
+
else
|
|
54
|
+
func = require(file);
|
|
55
|
+
if (func && typeof func === "object" && "default" in func) {
|
|
56
|
+
func = func.default;
|
|
57
|
+
}
|
|
58
|
+
if (typeof func !== "function") {
|
|
59
|
+
// match playwright's error style
|
|
60
|
+
const error = new Error(`${fileName}: ${ServiceErrorMessageConstants.INVALID_GLOBAL_FUNCTION.message}`);
|
|
61
|
+
error.stack = "";
|
|
62
|
+
throw error;
|
|
63
|
+
}
|
|
64
|
+
return func;
|
|
56
65
|
};
|
|
57
|
-
const loadCustomerGlobalFunction = (rootDir, customerFunctionFileName) => {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
};
|
|
64
|
-
export {
|
|
65
|
-
loadCustomerGlobalFunction
|
|
66
|
+
export const loadCustomerGlobalFunction = (rootDir, customerFunctionFileName) => {
|
|
67
|
+
if (!customerFunctionFileName) {
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
const file = path.resolve(rootDir, resolveFile(customerFunctionFileName, rootDir) ?? "");
|
|
71
|
+
return requireOrImportDefaultFunction(file);
|
|
66
72
|
};
|
|
73
|
+
//# sourceMappingURL=executor.js.map
|
|
@@ -1,7 +1 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["/mnt/vss/_work/1/s/sdk/loadtesting/playwright/src/common/executor.ts"],
|
|
4
|
-
"sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { basename } from \"node:path\";\nimport fs from \"node:fs\";\nimport url from \"url\";\nimport path from \"node:path\";\nimport { ServiceErrorMessageConstants } from \"./messages.js\";\n\nconst getPackageJsonPath = (folderPath: string): string => {\n const packageJsonPath = path.join(folderPath, \"package.json\");\n if (fs.existsSync(packageJsonPath)) {\n return packageJsonPath;\n }\n\n const parentFolder = path.dirname(folderPath);\n if (folderPath === parentFolder) {\n return \"\";\n }\n\n const result = getPackageJsonPath(parentFolder);\n return result;\n};\n\nconst folderIsModule = (folder: string): boolean => {\n const packageJsonPath = getPackageJsonPath(folder);\n if (!packageJsonPath) return false;\n // Rely on `require` internal caching logic.\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n return require(packageJsonPath).type === \"module\";\n};\n\nconst fileIsModule = (file: string): boolean => {\n if (file.endsWith(\".mjs\") || file.endsWith(\".mts\")) return true;\n if (file.endsWith(\".cjs\") || file.endsWith(\".cts\")) return false;\n const folder = path.dirname(file);\n return folderIsModule(folder);\n};\n\nconst resolveFile = (id: string | undefined, rootDir: string): string | undefined => {\n if (!id) {\n return undefined;\n }\n const localPath = path.resolve(rootDir, id);\n if (fs.existsSync(localPath)) {\n return localPath;\n }\n return require.resolve(id, { paths: [rootDir] });\n};\n\nconst requireOrImportDefaultFunction = async (file: string): Promise<any> => {\n const fileName = basename(file);\n const isModule = fileIsModule(file);\n let func: any;\n if (isModule) func = await eval(`import(${JSON.stringify(url.pathToFileURL(file))})`);\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n else func = require(file);\n if (func && typeof func === \"object\" && \"default\" in func) {\n func = func.default;\n }\n if (typeof func !== \"function\") {\n // match playwright's error style\n const error = new Error(\n `${fileName}: ${ServiceErrorMessageConstants.INVALID_GLOBAL_FUNCTION.message}`,\n );\n error.stack = \"\";\n throw error;\n }\n return func;\n};\n\nexport const loadCustomerGlobalFunction = (\n rootDir: string,\n customerFunctionFileName?: string,\n): any => {\n if (!customerFunctionFileName) {\n return null;\n }\n const file = path.resolve(rootDir, resolveFile(customerFunctionFileName, rootDir) ?? \"\");\n return requireOrImportDefaultFunction(file);\n};\n"],
|
|
5
|
-
"mappings": "AAGA,SAAS,gBAAgB;AACzB,OAAO,QAAQ;AACf,OAAO,SAAS;AAChB,OAAO,UAAU;AACjB,SAAS,oCAAoC;AAE7C,MAAM,qBAAqB,CAAC,eAA+B;AACzD,QAAM,kBAAkB,KAAK,KAAK,YAAY,cAAc;AAC5D,MAAI,GAAG,WAAW,eAAe,GAAG;AAClC,WAAO;AAAA,EACT;AAEA,QAAM,eAAe,KAAK,QAAQ,UAAU;AAC5C,MAAI,eAAe,cAAc;AAC/B,WAAO;AAAA,EACT;AAEA,QAAM,SAAS,mBAAmB,YAAY;AAC9C,SAAO;AACT;AAEA,MAAM,iBAAiB,CAAC,WAA4B;AAClD,QAAM,kBAAkB,mBAAmB,MAAM;AACjD,MAAI,CAAC,gBAAiB,QAAO;AAG7B,SAAO,QAAQ,eAAe,EAAE,SAAS;AAC3C;AAEA,MAAM,eAAe,CAACA,UAA0B;AAC9C,MAAIA,MAAK,SAAS,MAAM,KAAKA,MAAK,SAAS,MAAM,EAAG,QAAO;AAC3D,MAAIA,MAAK,SAAS,MAAM,KAAKA,MAAK,SAAS,MAAM,EAAG,QAAO;AAC3D,QAAM,SAAS,KAAK,QAAQA,KAAI;AAChC,SAAO,eAAe,MAAM;AAC9B;AAEA,MAAM,cAAc,CAAC,IAAwB,YAAwC;AACnF,MAAI,CAAC,IAAI;AACP,WAAO;AAAA,EACT;AACA,QAAM,YAAY,KAAK,QAAQ,SAAS,EAAE;AAC1C,MAAI,GAAG,WAAW,SAAS,GAAG;AAC5B,WAAO;AAAA,EACT;AACA,SAAO,QAAQ,QAAQ,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;AACjD;AAEA,MAAM,iCAAiC,OAAO,SAA+B;AAC3E,QAAM,WAAW,SAAS,IAAI;AAC9B,QAAM,WAAW,aAAa,IAAI;AAClC,MAAI;AACJ,MAAI,SAAU,QAAO,MAAM,KAAK,UAAU,KAAK,UAAU,IAAI,cAAc,IAAI,CAAC,CAAC,GAAG;AAAA,MAE/E,QAAO,QAAQ,IAAI;AACxB,MAAI,QAAQ,OAAO,SAAS,YAAY,aAAa,MAAM;AACzD,WAAO,KAAK;AAAA,EACd;AACA,MAAI,OAAO,SAAS,YAAY;AAE9B,UAAM,QAAQ,IAAI;AAAA,MAChB,GAAG,QAAQ,KAAK,6BAA6B,wBAAwB,OAAO;AAAA,IAC9E;AACA,UAAM,QAAQ;AACd,UAAM;AAAA,EACR;AACA,SAAO;AACT;AAEO,MAAM,6BAA6B,CACxC,SACA,6BACQ;AACR,MAAI,CAAC,0BAA0B;AAC7B,WAAO;AAAA,EACT;AACA,QAAMA,QAAO,KAAK,QAAQ,SAAS,YAAY,0BAA0B,OAAO,KAAK,EAAE;AACvF,SAAO,+BAA+BA,KAAI;AAC5C;",
|
|
6
|
-
"names": ["file"]
|
|
7
|
-
}
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/common/executor.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { basename } from \"node:path\";\nimport fs from \"node:fs\";\nimport url from \"url\";\nimport path from \"node:path\";\nimport { ServiceErrorMessageConstants } from \"./messages.js\";\n\nconst getPackageJsonPath = (folderPath: string): string => {\n const packageJsonPath = path.join(folderPath, \"package.json\");\n if (fs.existsSync(packageJsonPath)) {\n return packageJsonPath;\n }\n\n const parentFolder = path.dirname(folderPath);\n if (folderPath === parentFolder) {\n return \"\";\n }\n\n const result = getPackageJsonPath(parentFolder);\n return result;\n};\n\nconst folderIsModule = (folder: string): boolean => {\n const packageJsonPath = getPackageJsonPath(folder);\n if (!packageJsonPath) return false;\n // Rely on `require` internal caching logic.\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n return require(packageJsonPath).type === \"module\";\n};\n\nconst fileIsModule = (file: string): boolean => {\n if (file.endsWith(\".mjs\") || file.endsWith(\".mts\")) return true;\n if (file.endsWith(\".cjs\") || file.endsWith(\".cts\")) return false;\n const folder = path.dirname(file);\n return folderIsModule(folder);\n};\n\nconst resolveFile = (id: string | undefined, rootDir: string): string | undefined => {\n if (!id) {\n return undefined;\n }\n const localPath = path.resolve(rootDir, id);\n if (fs.existsSync(localPath)) {\n return localPath;\n }\n return require.resolve(id, { paths: [rootDir] });\n};\n\nconst requireOrImportDefaultFunction = async (file: string): Promise<any> => {\n const fileName = basename(file);\n const isModule = fileIsModule(file);\n let func: any;\n if (isModule) func = await eval(`import(${JSON.stringify(url.pathToFileURL(file))})`);\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n else func = require(file);\n if (func && typeof func === \"object\" && \"default\" in func) {\n func = func.default;\n }\n if (typeof func !== \"function\") {\n // match playwright's error style\n const error = new Error(\n `${fileName}: ${ServiceErrorMessageConstants.INVALID_GLOBAL_FUNCTION.message}`,\n );\n error.stack = \"\";\n throw error;\n }\n return func;\n};\n\nexport const loadCustomerGlobalFunction = (\n rootDir: string,\n customerFunctionFileName?: string,\n): any => {\n if (!customerFunctionFileName) {\n return null;\n }\n const file = path.resolve(rootDir, resolveFile(customerFunctionFileName, rootDir) ?? \"\");\n return requireOrImportDefaultFunction(file);\n};\n"]}
|
|
@@ -1,39 +1,34 @@
|
|
|
1
|
+
// Copyright (c) Microsoft Corporation.
|
|
2
|
+
// Licensed under the MIT License.
|
|
1
3
|
import { randomUUID } from "crypto";
|
|
2
|
-
import {
|
|
3
|
-
createDefaultHttpClient,
|
|
4
|
-
createHttpHeaders,
|
|
5
|
-
createPipelineRequest,
|
|
6
|
-
createPipelineFromOptions
|
|
7
|
-
} from "@azure/core-rest-pipeline";
|
|
4
|
+
import { createDefaultHttpClient, createHttpHeaders, createPipelineRequest, createPipelineFromOptions, } from "@azure/core-rest-pipeline";
|
|
8
5
|
import { coreLogger } from "../common/logger.js";
|
|
9
6
|
import { Constants } from "./constants.js";
|
|
10
|
-
class HttpService {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
7
|
+
export class HttpService {
|
|
8
|
+
async callAPI(method, url, data, token, contentType, correlationId) {
|
|
9
|
+
const pipeline = createPipelineFromOptions({
|
|
10
|
+
loggingOptions: {
|
|
11
|
+
logger: coreLogger.info,
|
|
12
|
+
},
|
|
13
|
+
retryOptions: {},
|
|
14
|
+
});
|
|
15
|
+
const httpClient = createDefaultHttpClient();
|
|
16
|
+
const request = createPipelineRequest({
|
|
17
|
+
url,
|
|
18
|
+
method,
|
|
19
|
+
headers: createHttpHeaders({
|
|
20
|
+
"Content-Type": contentType,
|
|
21
|
+
Accept: "*/*",
|
|
22
|
+
Authorization: `Bearer ${token}`,
|
|
23
|
+
"x-ms-client-request-id": `${randomUUID()}`,
|
|
24
|
+
"x-correlation-id": correlationId,
|
|
25
|
+
}),
|
|
26
|
+
timeout: Constants.HTTP_CALL_TIMEOUT,
|
|
27
|
+
});
|
|
28
|
+
if (data) {
|
|
29
|
+
request.body = data;
|
|
30
|
+
}
|
|
31
|
+
return pipeline.sendRequest(httpClient, request);
|
|
33
32
|
}
|
|
34
|
-
return pipeline.sendRequest(httpClient, request);
|
|
35
|
-
}
|
|
36
33
|
}
|
|
37
|
-
|
|
38
|
-
HttpService
|
|
39
|
-
};
|
|
34
|
+
//# sourceMappingURL=httpService.js.map
|
|
@@ -1,7 +1 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["/mnt/vss/_work/1/s/sdk/loadtesting/playwright/src/common/httpService.ts"],
|
|
4
|
-
"sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { randomUUID } from \"crypto\";\nimport type { PipelineResponse, HttpMethods } from \"@azure/core-rest-pipeline\";\nimport {\n createDefaultHttpClient,\n createHttpHeaders,\n createPipelineRequest,\n createPipelineFromOptions,\n} from \"@azure/core-rest-pipeline\";\nimport { coreLogger } from \"../common/logger.js\";\nimport { Constants } from \"./constants.js\";\n\nexport class HttpService {\n public async callAPI(\n method: HttpMethods,\n url: string,\n data: any | null,\n token: string,\n contentType: string,\n correlationId: string,\n ): Promise<PipelineResponse> {\n const pipeline = createPipelineFromOptions({\n loggingOptions: {\n logger: coreLogger.info,\n },\n retryOptions: {},\n });\n\n const httpClient = createDefaultHttpClient();\n const request = createPipelineRequest({\n url,\n method,\n headers: createHttpHeaders({\n \"Content-Type\": contentType,\n Accept: \"*/*\",\n Authorization: `Bearer ${token}`,\n \"x-ms-client-request-id\": `${randomUUID()}`,\n \"x-correlation-id\": correlationId,\n }),\n timeout: Constants.HTTP_CALL_TIMEOUT,\n });\n\n if (data) {\n request.body = data;\n }\n return pipeline.sendRequest(httpClient, request);\n }\n}\n"],
|
|
5
|
-
"mappings": "AAGA,SAAS,kBAAkB;AAE3B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,kBAAkB;AAC3B,SAAS,iBAAiB;AAEnB,MAAM,YAAY;AAAA,EACvB,MAAa,QACX,QACA,KACA,MACA,OACA,aACA,eAC2B;AAC3B,UAAM,WAAW,0BAA0B;AAAA,MACzC,gBAAgB;AAAA,QACd,QAAQ,WAAW;AAAA,MACrB;AAAA,MACA,cAAc,CAAC;AAAA,IACjB,CAAC;AAED,UAAM,aAAa,wBAAwB;AAC3C,UAAM,UAAU,sBAAsB;AAAA,MACpC;AAAA,MACA;AAAA,MACA,SAAS,kBAAkB;AAAA,QACzB,gBAAgB;AAAA,QAChB,QAAQ;AAAA,QACR,eAAe,UAAU,KAAK;AAAA,QAC9B,0BAA0B,GAAG,WAAW,CAAC;AAAA,QACzC,oBAAoB;AAAA,MACtB,CAAC;AAAA,MACD,SAAS,UAAU;AAAA,IACrB,CAAC;AAED,QAAI,MAAM;AACR,cAAQ,OAAO;AAAA,IACjB;AACA,WAAO,SAAS,YAAY,YAAY,OAAO;AAAA,EACjD;AACF;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
1
|
+
{"version":3,"file":"httpService.js","sourceRoot":"","sources":["../../../src/common/httpService.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEpC,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,OAAO,WAAW;IACf,KAAK,CAAC,OAAO,CAClB,MAAmB,EACnB,GAAW,EACX,IAAgB,EAChB,KAAa,EACb,WAAmB,EACnB,aAAqB;QAErB,MAAM,QAAQ,GAAG,yBAAyB,CAAC;YACzC,cAAc,EAAE;gBACd,MAAM,EAAE,UAAU,CAAC,IAAI;aACxB;YACD,YAAY,EAAE,EAAE;SACjB,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,uBAAuB,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,qBAAqB,CAAC;YACpC,GAAG;YACH,MAAM;YACN,OAAO,EAAE,iBAAiB,CAAC;gBACzB,cAAc,EAAE,WAAW;gBAC3B,MAAM,EAAE,KAAK;gBACb,aAAa,EAAE,UAAU,KAAK,EAAE;gBAChC,wBAAwB,EAAE,GAAG,UAAU,EAAE,EAAE;gBAC3C,kBAAkB,EAAE,aAAa;aAClC,CAAC;YACF,OAAO,EAAE,SAAS,CAAC,iBAAiB;SACrC,CAAC,CAAC;QAEH,IAAI,IAAI,EAAE,CAAC;YACT,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;QACtB,CAAC;QACD,OAAO,QAAQ,CAAC,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { randomUUID } from \"crypto\";\nimport type { PipelineResponse, HttpMethods } from \"@azure/core-rest-pipeline\";\nimport {\n createDefaultHttpClient,\n createHttpHeaders,\n createPipelineRequest,\n createPipelineFromOptions,\n} from \"@azure/core-rest-pipeline\";\nimport { coreLogger } from \"../common/logger.js\";\nimport { Constants } from \"./constants.js\";\n\nexport class HttpService {\n public async callAPI(\n method: HttpMethods,\n url: string,\n data: any | null,\n token: string,\n contentType: string,\n correlationId: string,\n ): Promise<PipelineResponse> {\n const pipeline = createPipelineFromOptions({\n loggingOptions: {\n logger: coreLogger.info,\n },\n retryOptions: {},\n });\n\n const httpClient = createDefaultHttpClient();\n const request = createPipelineRequest({\n url,\n method,\n headers: createHttpHeaders({\n \"Content-Type\": contentType,\n Accept: \"*/*\",\n Authorization: `Bearer ${token}`,\n \"x-ms-client-request-id\": `${randomUUID()}`,\n \"x-correlation-id\": correlationId,\n }),\n timeout: Constants.HTTP_CALL_TIMEOUT,\n });\n\n if (data) {\n request.body = data;\n }\n return pipeline.sendRequest(httpClient, request);\n }\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
// Copyright (c) Microsoft Corporation.
|
|
2
|
+
// Licensed under the MIT License.
|
|
1
3
|
import { createClientLogger } from "@azure/logger";
|
|
2
|
-
const coreLogger = createClientLogger("playwright");
|
|
3
|
-
|
|
4
|
-
coreLogger
|
|
5
|
-
};
|
|
4
|
+
export const coreLogger = createClientLogger("playwright");
|
|
5
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -1,7 +1 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["/mnt/vss/_work/1/s/sdk/loadtesting/playwright/src/common/logger.ts"],
|
|
4
|
-
"sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { createClientLogger } from \"@azure/logger\";\n\nexport const coreLogger = createClientLogger(\"playwright\");\n"],
|
|
5
|
-
"mappings": "AAGA,SAAS,0BAA0B;AAE5B,MAAM,aAAa,mBAAmB,YAAY;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/common/logger.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,MAAM,CAAC,MAAM,UAAU,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { createClientLogger } from \"@azure/logger\";\n\nexport const coreLogger = createClientLogger(\"playwright\");\n"]}
|