@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.
Files changed (125) hide show
  1. package/dist/browser/common/constants.d.ts +1 -4
  2. package/dist/browser/common/constants.d.ts.map +1 -1
  3. package/dist/browser/common/constants.js +1 -4
  4. package/dist/browser/common/constants.js.map +1 -1
  5. package/dist/browser/common/types.d.ts +0 -4
  6. package/dist/browser/common/types.d.ts.map +1 -1
  7. package/dist/browser/common/types.js.map +1 -1
  8. package/dist/browser/reporter/playwrightReporter.d.ts +0 -1
  9. package/dist/browser/reporter/playwrightReporter.d.ts.map +1 -1
  10. package/dist/browser/reporter/playwrightReporter.js +3 -17
  11. package/dist/browser/reporter/playwrightReporter.js.map +1 -1
  12. package/dist/browser/utils/PlaywrightServiceClient.d.ts +1 -2
  13. package/dist/browser/utils/PlaywrightServiceClient.d.ts.map +1 -1
  14. package/dist/browser/utils/PlaywrightServiceClient.js +1 -26
  15. package/dist/browser/utils/PlaywrightServiceClient.js.map +1 -1
  16. package/dist/browser/utils/utils.d.ts +2 -3
  17. package/dist/browser/utils/utils.d.ts.map +1 -1
  18. package/dist/browser/utils/utils.js +8 -21
  19. package/dist/browser/utils/utils.js.map +1 -1
  20. package/dist/commonjs/common/constants.d.ts +1 -4
  21. package/dist/commonjs/common/constants.d.ts.map +1 -1
  22. package/dist/commonjs/common/constants.js +2 -5
  23. package/dist/commonjs/common/constants.js.map +1 -1
  24. package/dist/commonjs/common/types.d.ts +0 -4
  25. package/dist/commonjs/common/types.d.ts.map +1 -1
  26. package/dist/commonjs/common/types.js.map +1 -1
  27. package/dist/commonjs/reporter/playwrightReporter.d.ts +0 -1
  28. package/dist/commonjs/reporter/playwrightReporter.d.ts.map +1 -1
  29. package/dist/commonjs/reporter/playwrightReporter.js +2 -16
  30. package/dist/commonjs/reporter/playwrightReporter.js.map +1 -1
  31. package/dist/commonjs/tsdoc-metadata.json +1 -1
  32. package/dist/commonjs/utils/PlaywrightServiceClient.d.ts +1 -2
  33. package/dist/commonjs/utils/PlaywrightServiceClient.d.ts.map +1 -1
  34. package/dist/commonjs/utils/PlaywrightServiceClient.js +0 -25
  35. package/dist/commonjs/utils/PlaywrightServiceClient.js.map +1 -1
  36. package/dist/commonjs/utils/utils.d.ts +2 -3
  37. package/dist/commonjs/utils/utils.d.ts.map +1 -1
  38. package/dist/commonjs/utils/utils.js +8 -22
  39. package/dist/commonjs/utils/utils.js.map +1 -1
  40. package/dist/esm/common/constants.d.ts +1 -4
  41. package/dist/esm/common/constants.d.ts.map +1 -1
  42. package/dist/esm/common/constants.js +92 -96
  43. package/dist/esm/common/constants.js.map +1 -7
  44. package/dist/esm/common/customerConfig.js +11 -11
  45. package/dist/esm/common/customerConfig.js.map +1 -7
  46. package/dist/esm/common/entraIdAccessToken.js +77 -85
  47. package/dist/esm/common/entraIdAccessToken.js.map +1 -7
  48. package/dist/esm/common/environmentVariables.js +19 -19
  49. package/dist/esm/common/environmentVariables.js.map +1 -7
  50. package/dist/esm/common/executor.js +58 -51
  51. package/dist/esm/common/executor.js.map +1 -7
  52. package/dist/esm/common/httpService.js +29 -34
  53. package/dist/esm/common/httpService.js.map +1 -7
  54. package/dist/esm/common/logger.js +4 -4
  55. package/dist/esm/common/logger.js.map +1 -7
  56. package/dist/esm/common/messages.js +166 -166
  57. package/dist/esm/common/messages.js.map +1 -7
  58. package/dist/esm/common/playwrightServiceConfig.js +91 -91
  59. package/dist/esm/common/playwrightServiceConfig.js.map +1 -7
  60. package/dist/esm/common/state.js +7 -7
  61. package/dist/esm/common/state.js.map +1 -7
  62. package/dist/esm/common/types.d.ts +0 -4
  63. package/dist/esm/common/types.d.ts.map +1 -1
  64. package/dist/esm/common/types.js +4 -0
  65. package/dist/esm/common/types.js.map +1 -7
  66. package/dist/esm/core/global/playwright-service-global-setup.js +17 -17
  67. package/dist/esm/core/global/playwright-service-global-setup.js.map +1 -7
  68. package/dist/esm/core/global/playwright-service-global-teardown.js +13 -16
  69. package/dist/esm/core/global/playwright-service-global-teardown.js.map +1 -7
  70. package/dist/esm/core/initializePlaywrightServiceTestRun.js +21 -13
  71. package/dist/esm/core/initializePlaywrightServiceTestRun.js.map +1 -7
  72. package/dist/esm/core/playwrightService.js +200 -149
  73. package/dist/esm/core/playwrightService.js.map +1 -7
  74. package/dist/esm/core/playwrightServiceEntra.js +42 -44
  75. package/dist/esm/core/playwrightServiceEntra.js.map +1 -7
  76. package/dist/esm/core/playwrightServiceUtils.js +8 -6
  77. package/dist/esm/core/playwrightServiceUtils.js.map +1 -7
  78. package/dist/esm/index.js +9 -7
  79. package/dist/esm/index.js.map +1 -7
  80. package/dist/esm/reporter/index.js +11 -4
  81. package/dist/esm/reporter/index.js.map +1 -7
  82. package/dist/esm/reporter/playwrightReporter.d.ts +0 -1
  83. package/dist/esm/reporter/playwrightReporter.d.ts.map +1 -1
  84. package/dist/esm/reporter/playwrightReporter.js +193 -202
  85. package/dist/esm/reporter/playwrightReporter.js.map +1 -7
  86. package/dist/esm/utils/PlaywrightServiceClient.d.ts +1 -2
  87. package/dist/esm/utils/PlaywrightServiceClient.d.ts.map +1 -1
  88. package/dist/esm/utils/PlaywrightServiceClient.js +61 -121
  89. package/dist/esm/utils/PlaywrightServiceClient.js.map +1 -7
  90. package/dist/esm/utils/cIInfoProvider.js +71 -58
  91. package/dist/esm/utils/cIInfoProvider.js.map +1 -7
  92. package/dist/esm/utils/getPackageVersion.js +17 -12
  93. package/dist/esm/utils/getPackageVersion.js.map +1 -7
  94. package/dist/esm/utils/getPlaywrightVersion.js +13 -15
  95. package/dist/esm/utils/getPlaywrightVersion.js.map +1 -7
  96. package/dist/esm/utils/packageManager.js +37 -37
  97. package/dist/esm/utils/packageManager.js.map +1 -7
  98. package/dist/esm/utils/parseJwt.js +14 -15
  99. package/dist/esm/utils/parseJwt.js.map +1 -7
  100. package/dist/esm/utils/playwrightReporterStorageManager.js +333 -358
  101. package/dist/esm/utils/playwrightReporterStorageManager.js.map +1 -7
  102. package/dist/esm/utils/utils.d.ts +2 -3
  103. package/dist/esm/utils/utils.d.ts.map +1 -1
  104. package/dist/esm/utils/utils.js +338 -380
  105. package/dist/esm/utils/utils.js.map +1 -7
  106. package/dist/react-native/common/constants.d.ts +1 -4
  107. package/dist/react-native/common/constants.d.ts.map +1 -1
  108. package/dist/react-native/common/constants.js +1 -4
  109. package/dist/react-native/common/constants.js.map +1 -1
  110. package/dist/react-native/common/types.d.ts +0 -4
  111. package/dist/react-native/common/types.d.ts.map +1 -1
  112. package/dist/react-native/common/types.js.map +1 -1
  113. package/dist/react-native/reporter/playwrightReporter.d.ts +0 -1
  114. package/dist/react-native/reporter/playwrightReporter.d.ts.map +1 -1
  115. package/dist/react-native/reporter/playwrightReporter.js +3 -17
  116. package/dist/react-native/reporter/playwrightReporter.js.map +1 -1
  117. package/dist/react-native/utils/PlaywrightServiceClient.d.ts +1 -2
  118. package/dist/react-native/utils/PlaywrightServiceClient.d.ts.map +1 -1
  119. package/dist/react-native/utils/PlaywrightServiceClient.js +1 -26
  120. package/dist/react-native/utils/PlaywrightServiceClient.js.map +1 -1
  121. package/dist/react-native/utils/utils.d.ts +2 -3
  122. package/dist/react-native/utils/utils.d.ts.map +1 -1
  123. package/dist/react-native/utils/utils.js +8 -21
  124. package/dist/react-native/utils/utils.js.map +1 -1
  125. 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
- token;
11
- _expiryTimestamp;
12
- // in milliseconds
13
- _credential;
14
- _noOpFlag = false;
15
- constructor(credential) {
16
- this._credential = credential;
17
- if (!this._credential) {
18
- this._noOpFlag = true;
19
- return;
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
- this.setEntraIdAccessTokenFromEnvironment();
22
- }
23
- fetchEntraIdAccessToken = async () => {
24
- if (this._noOpFlag) {
25
- throw new Error(ServiceErrorMessageConstants.NO_CRED_ENTRA_AUTH_ERROR.message);
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
- try {
28
- coreLogger.info("Fetching entra id access token");
29
- const accessToken = await this._credential.getToken(EntraIdAccessTokenConstants.SCOPE);
30
- if (!accessToken) {
31
- throw new Error("Entra id access token is null");
32
- }
33
- if (accessToken.token === this.token) {
34
- coreLogger.info("Cached access token is returned, will be retried again.");
35
- return;
36
- }
37
- this.token = accessToken.token;
38
- this._expiryTimestamp = accessToken.expiresOnTimestamp;
39
- process.env[ServiceEnvironmentVariable.PLAYWRIGHT_SERVICE_ACCESS_TOKEN] = this.token;
40
- coreLogger.info("Entra id access token fetched and set in environment variable");
41
- coreLogger.info(
42
- "Entra id access token expiry:",
43
- new Date(this._expiryTimestamp).toISOString()
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
- return new EntraIdAccessToken(credential);
81
+ export function createEntraIdAccessToken(credential) {
82
+ return new EntraIdAccessToken(credential);
88
83
  }
89
- export {
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
- get accessToken() {
5
- return process.env["PLAYWRIGHT_SERVICE_ACCESS_TOKEN"];
6
- }
7
- runId;
8
- accountId;
9
- userId;
10
- userName;
11
- correlationId;
12
- region;
13
- runName;
14
- constructor() {
15
- this.runName = process.env["_MPT_SERVICE_RUN_NAME"];
16
- this.runId = process.env[InternalEnvironmentVariables.MPT_SERVICE_RUN_ID];
17
- this.correlationId = randomUUID();
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
- export {
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
- const packageJsonPath = path.join(folderPath, "package.json");
8
- if (fs.existsSync(packageJsonPath)) {
9
- return packageJsonPath;
10
- }
11
- const parentFolder = path.dirname(folderPath);
12
- if (folderPath === parentFolder) {
13
- return "";
14
- }
15
- const result = getPackageJsonPath(parentFolder);
16
- return result;
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
- const packageJsonPath = getPackageJsonPath(folder);
20
- if (!packageJsonPath) return false;
21
- return require(packageJsonPath).type === "module";
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 = (file2) => {
24
- if (file2.endsWith(".mjs") || file2.endsWith(".mts")) return true;
25
- if (file2.endsWith(".cjs") || file2.endsWith(".cts")) return false;
26
- const folder = path.dirname(file2);
27
- return folderIsModule(folder);
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
- if (!id) {
31
- return void 0;
32
- }
33
- const localPath = path.resolve(rootDir, id);
34
- if (fs.existsSync(localPath)) {
35
- return localPath;
36
- }
37
- return require.resolve(id, { paths: [rootDir] });
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
- const fileName = basename(file);
41
- const isModule = fileIsModule(file);
42
- let func;
43
- if (isModule) func = await eval(`import(${JSON.stringify(url.pathToFileURL(file))})`);
44
- else func = require(file);
45
- if (func && typeof func === "object" && "default" in func) {
46
- func = func.default;
47
- }
48
- if (typeof func !== "function") {
49
- const error = new Error(
50
- `${fileName}: ${ServiceErrorMessageConstants.INVALID_GLOBAL_FUNCTION.message}`
51
- );
52
- error.stack = "";
53
- throw error;
54
- }
55
- return func;
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
- if (!customerFunctionFileName) {
59
- return null;
60
- }
61
- const file2 = path.resolve(rootDir, resolveFile(customerFunctionFileName, rootDir) ?? "");
62
- return requireOrImportDefaultFunction(file2);
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
- async callAPI(method, url, data, token, contentType, correlationId) {
12
- const pipeline = createPipelineFromOptions({
13
- loggingOptions: {
14
- logger: coreLogger.info
15
- },
16
- retryOptions: {}
17
- });
18
- const httpClient = createDefaultHttpClient();
19
- const request = createPipelineRequest({
20
- url,
21
- method,
22
- headers: createHttpHeaders({
23
- "Content-Type": contentType,
24
- Accept: "*/*",
25
- Authorization: `Bearer ${token}`,
26
- "x-ms-client-request-id": `${randomUUID()}`,
27
- "x-correlation-id": correlationId
28
- }),
29
- timeout: Constants.HTTP_CALL_TIMEOUT
30
- });
31
- if (data) {
32
- request.body = data;
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
- export {
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
- export {
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"]}