From c27a72e2da9825ed5b62b718b2507087b35fa2ce Mon Sep 17 00:00:00 2001 From: Maor Leger Date: Wed, 14 Feb 2024 13:03:21 -0800 Subject: [PATCH 1/8] [identity] Use custom loader --- common/tools/esm4mocha.mjs | 3 ++- sdk/communication/communication-identity/package.json | 2 +- sdk/identity/identity/package.json | 4 ++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/common/tools/esm4mocha.mjs b/common/tools/esm4mocha.mjs index 46dd170ab64b..792d7a82313d 100644 --- a/common/tools/esm4mocha.mjs +++ b/common/tools/esm4mocha.mjs @@ -32,7 +32,8 @@ export async function load(url, context, defaultLoad) { }; } const { source } = await defaultLoad(url, context, defaultLoad); - return { format: context.format, source, shortCircuit: true }; + const format = url.startsWith("node:") ? "builtin" : context.format; + return { format, source, shortCircuit: true }; } async function updateSpecifierValueIfRelative(declaration, base) { diff --git a/sdk/communication/communication-identity/package.json b/sdk/communication/communication-identity/package.json index c9f8634ea060..022a64e4dd61 100644 --- a/sdk/communication/communication-identity/package.json +++ b/sdk/communication/communication-identity/package.json @@ -113,7 +113,7 @@ "@azure/dev-tool": "^1.0.0", "@azure/eslint-plugin-azure-sdk": "^3.0.0", "@azure/identity": "^4.0.1", - "@azure/msal-node": "^1.3.0", + "@azure/msal-node": "^2.5.1", "@azure/test-utils": "^1.0.0", "@microsoft/api-extractor": "^7.31.1", "@types/chai": "^4.1.6", diff --git a/sdk/identity/identity/package.json b/sdk/identity/identity/package.json index 4a278cf810e8..13f3dcdba48c 100644 --- a/sdk/identity/identity/package.json +++ b/sdk/identity/identity/package.json @@ -55,7 +55,7 @@ "format": "dev-tool run vendored prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"samples-dev/**/*.ts\" \"*.{js,json}\"", "check-format": "dev-tool run vendored prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"samples-dev/**/*.ts\" \"*.{js,json}\"", "integration-test:browser": "echo skipped", - "integration-test:node": "dev-tool run test:node-js-input -- --timeout 180000 'dist-esm/test/public/node/*.spec.js' 'dist-esm/test/internal/node/*.spec.js'", + "integration-test:node": "dev-tool run test:node-js-input -- --loader=../../../common/tools/esm4mocha.mjs --timeout 180000 'dist-esm/test/public/node/*.spec.js' 'dist-esm/test/internal/node/*.spec.js'", "integration-test": "npm run integration-test:node && npm run integration-test:browser", "lint:fix": "eslint package.json api-extractor.json src test --ext .ts --fix --fix-type [problem,suggestion]", "lint": "eslint package.json api-extractor.json src test --ext .ts", @@ -114,7 +114,7 @@ "@azure/core-util": "^1.3.0", "@azure/logger": "^1.0.0", "@azure/msal-browser": "^3.5.0", - "@azure/msal-node": "^2.5.1", + "@azure/msal-node": "^2.6.3", "events": "^3.0.0", "jws": "^4.0.0", "open": "^8.0.0", From 0bf4d09758338a0d8953c1d448e3982cf9f560af Mon Sep 17 00:00:00 2001 From: Maor Leger Date: Wed, 14 Feb 2024 13:50:47 -0800 Subject: [PATCH 2/8] [identity] Use esm4mocha and re-enable IBC test --- common/config/rush/pnpm-lock.yaml | 29 +++++-------------- .../src/commands/run/testNodeJSInput.ts | 9 +++++- common/tools/esm4mocha.mjs | 7 +++-- sdk/identity/identity/package.json | 4 +-- .../node/clientAssertionCredential.spec.ts | 1 - .../node/clientCertificateCredential.spec.ts | 2 +- .../node/interactiveBrowserCredential.spec.ts | 10 +++---- .../identity/test/node/msalNodeTestSetup.ts | 10 +++---- .../identity/test/public/node/utils/utils.ts | 3 +- 9 files changed, 33 insertions(+), 42 deletions(-) diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index 88245ba33f94..97ecda2ac630 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -1507,11 +1507,6 @@ packages: '@azure/msal-common': 14.7.0 dev: false - /@azure/msal-common@13.3.1: - resolution: {integrity: sha512-Lrk1ozoAtaP/cp53May3v6HtcFSVxdFrg2Pa/1xu5oIvsIwhxW6zSPibKefCOVgd5osgykMi5jjcZHv8XkzZEQ==} - engines: {node: '>=0.8.0'} - dev: false - /@azure/msal-common@14.5.0: resolution: {integrity: sha512-Gx5rZbiZV/HiZ2nEKfjfAF/qDdZ4/QWxMvMo2jhIFVz528dVKtaZyFAOtsX2Ak8+TQvRsGCaEfuwJFuXB6tu1A==} engines: {node: '>=0.8.0'} @@ -1545,16 +1540,6 @@ packages: requiresBuild: true dev: false - /@azure/msal-node@1.18.4: - resolution: {integrity: sha512-Kc/dRvhZ9Q4+1FSfsTFDME/v6+R2Y1fuMty/TfwqE5p9GTPw08BPbKgeWinE8JRHRp+LemjQbUZsn4Q4l6Lszg==} - engines: {node: 10 || 12 || 14 || 16 || 18} - deprecated: A newer major version of this library is available. Please upgrade to the latest available version. - dependencies: - '@azure/msal-common': 13.3.1 - jsonwebtoken: 9.0.2 - uuid: 8.3.2 - dev: false - /@azure/msal-node@2.6.3: resolution: {integrity: sha512-ojjJqUwb297T5Tcln4PbJANFEqRXfbQXcyOrtdr1HQYIo+dSuCT/o0nG6bFVihf6fcNykDwJLCQPVXzTkx/oGg==} engines: {node: '>=16'} @@ -17259,13 +17244,13 @@ packages: dev: false file:projects/communication-identity.tgz: - resolution: {integrity: sha512-UEwtyljWS6JPoCHiArohCq2AVoE8Km9w/7Fvnsw+hFzIBl02GGZpkBJ9azSBuDyAeDJm0Ng7Ho0Pe5I6CcEhVw==, tarball: file:projects/communication-identity.tgz} + resolution: {integrity: sha512-mmtIS0CeYFMJxoa1TseC3pau6aV+tAU6ic/Hj9xxdAd3dFOKrK6SKEyen3IfsHTGS279en5I2UnTTzw3ICmqOQ==, tarball: file:projects/communication-identity.tgz} name: '@rush-temp/communication-identity' version: 0.0.0 dependencies: '@azure/abort-controller': 1.1.0 '@azure/identity': 4.0.1 - '@azure/msal-node': 1.18.4 + '@azure/msal-node': 2.6.3 '@microsoft/api-extractor': 7.40.1(@types/node@18.19.15) '@types/chai': 4.3.11 '@types/mocha': 10.0.6 @@ -19830,7 +19815,7 @@ packages: dev: false file:projects/monitor-opentelemetry.tgz: - resolution: {integrity: sha512-jJAKV0xZtJJLGYQWKh491I84Og97NX2goKLq+z5ioxrIbIoC9z2XED2DpzVtFN90F+UOyTfNIA8niXTAfXbwZg==, tarball: file:projects/monitor-opentelemetry.tgz} + resolution: {integrity: sha512-znsAUq8KrMWEZpRYoUUwSamsOFAjKPrQJc2leRHM/QcMAO3ghlYvgfgAovlsaaQ8jQ+Q7V1uTGBIu77mAy2Nrw==, tarball: file:projects/monitor-opentelemetry.tgz} name: '@rush-temp/monitor-opentelemetry' version: 0.0.0 dependencies: @@ -19878,7 +19863,7 @@ packages: dev: false file:projects/monitor-query.tgz: - resolution: {integrity: sha512-JC7XYy5qw1ZabecDN7Girw9cfhpaC8EFMHovybi+cGlrXtIpvbgOoi4qJ5C8cNMXgoV9epX1odxEZRQVvsWzWQ==, tarball: file:projects/monitor-query.tgz} + resolution: {integrity: sha512-N9nSwtCSOOXRpR8UtlkeVRtkSzVfSoLFh3srVaQaPmdPWR8kI8faSAe4VG/K4YGuJgaxFStJJv00vVAQr032EA==, tarball: file:projects/monitor-query.tgz} name: '@rush-temp/monitor-query' version: 0.0.0 dependencies: @@ -19924,7 +19909,7 @@ packages: dev: false file:projects/notification-hubs.tgz: - resolution: {integrity: sha512-R0F44ALQH8wMZsJUMtW5dmriw3nhkUZ6q4777dhgDev7MsgBdOCnZC8Mqlu10q0g/x8kUlmQwvTp65rwrejQPA==, tarball: file:projects/notification-hubs.tgz} + resolution: {integrity: sha512-HlHgzSJnLpwoLUyooqPuF4iuVRhygYHgsg8x1O4YlmHGo2811G7hBGHnzwrbSij/FhHfjjETNOiEH23jSH9uzA==, tarball: file:projects/notification-hubs.tgz} name: '@rush-temp/notification-hubs' version: 0.0.0 dependencies: @@ -20415,7 +20400,7 @@ packages: dev: false file:projects/perf-monitor-opentelemetry.tgz: - resolution: {integrity: sha512-m4miWyp+BhptAHW0KNafiP9ZLli5kRk7xQrFWlegcJbCA/JAaBWvYAw9oP9T1oCsgbeQPPT0vRneQDeS+0G7gg==, tarball: file:projects/perf-monitor-opentelemetry.tgz} + resolution: {integrity: sha512-0dtMDfhtA6+1wyBjUXM/sIpoa0Qc/yVWKC0blPWcGOvI51ECvWTfqOmhdMuN/FZpUgr/TTfqsJl+WuH+Trilag==, tarball: file:projects/perf-monitor-opentelemetry.tgz} name: '@rush-temp/perf-monitor-opentelemetry' version: 0.0.0 dependencies: @@ -21027,7 +21012,7 @@ packages: dev: false file:projects/service-bus.tgz: - resolution: {integrity: sha512-LqhpJwnhHWnc84l3xMhtQgfpvY8Rc+kmbqZumXeR6fWjL/eC2o7ToXVic1R33AfvYoyuxGgMTYIrIpR+Rye+AA==, tarball: file:projects/service-bus.tgz} + resolution: {integrity: sha512-z056stcwgVFeU0n4k4vAokL+Qp5i6Pkc8kSCfHk8LuceWJ2/9rwmYTVB/Gf8OiybE8MKfKXsopQW0sDpz5yN2w==, tarball: file:projects/service-bus.tgz} name: '@rush-temp/service-bus' version: 0.0.0 dependencies: diff --git a/common/tools/dev-tool/src/commands/run/testNodeJSInput.ts b/common/tools/dev-tool/src/commands/run/testNodeJSInput.ts index 46656ece53c7..b301a786995f 100644 --- a/common/tools/dev-tool/src/commands/run/testNodeJSInput.ts +++ b/common/tools/dev-tool/src/commands/run/testNodeJSInput.ts @@ -17,14 +17,21 @@ export const commandInfo = makeCommandInfo( default: false, description: "whether to run with test-proxy", }, + "no-esm": { + shortName: "nesm", + kind: "boolean", + default: false, + description: "whether to skip loading the esm package", + }, }, ); export default leafCommand(commandInfo, async (options) => { + console.log(options); const reporterArgs = "--reporter ../../../common/tools/mocha-multi-reporter.js --reporter-option output=test-results.xml"; const defaultMochaArgs = `${ - (await isModuleProject()) + options["no-esm"] === true || (await isModuleProject()) ? "-r source-map-support/register.js" : "-r ../../../common/tools/esm-workaround -r esm -r source-map-support/register" } ${reporterArgs} --full-trace`; diff --git a/common/tools/esm4mocha.mjs b/common/tools/esm4mocha.mjs index 792d7a82313d..fd2a690d2649 100644 --- a/common/tools/esm4mocha.mjs +++ b/common/tools/esm4mocha.mjs @@ -1,10 +1,11 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -import { readFile, stat, constants } from "node:fs/promises"; +import { constants, readFile, stat } from "node:fs/promises"; import { dirname, join } from "node:path"; -import { fileURLToPath } from "url"; + import { Project } from "./dev-tool/node_modules/ts-morph/dist/ts-morph.js"; +import { fileURLToPath } from "url"; // if modules are loaded from dist-esm/ treat them as ESM export async function resolve(specifier, context, defaultResolve) { @@ -32,7 +33,7 @@ export async function load(url, context, defaultLoad) { }; } const { source } = await defaultLoad(url, context, defaultLoad); - const format = url.startsWith("node:") ? "builtin" : context.format; + const format = context.format ?? "builtin"; return { format, source, shortCircuit: true }; } diff --git a/sdk/identity/identity/package.json b/sdk/identity/identity/package.json index 13f3dcdba48c..736bc76708b8 100644 --- a/sdk/identity/identity/package.json +++ b/sdk/identity/identity/package.json @@ -55,7 +55,7 @@ "format": "dev-tool run vendored prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"samples-dev/**/*.ts\" \"*.{js,json}\"", "check-format": "dev-tool run vendored prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"samples-dev/**/*.ts\" \"*.{js,json}\"", "integration-test:browser": "echo skipped", - "integration-test:node": "dev-tool run test:node-js-input -- --loader=../../../common/tools/esm4mocha.mjs --timeout 180000 'dist-esm/test/public/node/*.spec.js' 'dist-esm/test/internal/node/*.spec.js'", + "integration-test:node": "dev-tool run test:node-js-input --no-esm=true -- --loader=../../../common/tools/esm4mocha.mjs --timeout 180000 'dist-esm/test/public/node/*.spec.js' 'dist-esm/test/internal/node/*.spec.js'", "integration-test": "npm run integration-test:node && npm run integration-test:browser", "lint:fix": "eslint package.json api-extractor.json src test --ext .ts --fix --fix-type [problem,suggestion]", "lint": "eslint package.json api-extractor.json src test --ext .ts", @@ -114,7 +114,7 @@ "@azure/core-util": "^1.3.0", "@azure/logger": "^1.0.0", "@azure/msal-browser": "^3.5.0", - "@azure/msal-node": "^2.6.3", + "@azure/msal-node": "^2.5.1", "events": "^3.0.0", "jws": "^4.0.0", "open": "^8.0.0", diff --git a/sdk/identity/identity/test/internal/node/clientAssertionCredential.spec.ts b/sdk/identity/identity/test/internal/node/clientAssertionCredential.spec.ts index 9d75d1014927..19855bb9a550 100644 --- a/sdk/identity/identity/test/internal/node/clientAssertionCredential.spec.ts +++ b/sdk/identity/identity/test/internal/node/clientAssertionCredential.spec.ts @@ -95,7 +95,6 @@ describe("ClientAssertionCredential (internal)", function () { await credential.getToken("https://vault.azure.net/.default"); } catch (e: any) { // We're ignoring errors since our main goal here is to ensure that we send the correct parameters to MSAL. - console.log("error", e); } assert.equal(getTokenSilentSpy.callCount, 1); diff --git a/sdk/identity/identity/test/internal/node/clientCertificateCredential.spec.ts b/sdk/identity/identity/test/internal/node/clientCertificateCredential.spec.ts index 8b1038452f2b..73337c202492 100644 --- a/sdk/identity/identity/test/internal/node/clientCertificateCredential.spec.ts +++ b/sdk/identity/identity/test/internal/node/clientCertificateCredential.spec.ts @@ -114,7 +114,7 @@ describe("ClientCertificateCredential (internal)", function () { }); it("throws when given a file that doesn't contain a PEM-formatted certificate", async function (this: Context) { - const fullPath = path.resolve(__dirname, "../src/index.ts"); + const fullPath = path.resolve("./clientCertificateCredential.spec.ts"); const credential = new ClientCertificateCredential("tenant", "client", { certificatePath: fullPath, }); diff --git a/sdk/identity/identity/test/internal/node/interactiveBrowserCredential.spec.ts b/sdk/identity/identity/test/internal/node/interactiveBrowserCredential.spec.ts index 90b5604ef7d4..c1e4a00dce9f 100644 --- a/sdk/identity/identity/test/internal/node/interactiveBrowserCredential.spec.ts +++ b/sdk/identity/identity/test/internal/node/interactiveBrowserCredential.spec.ts @@ -4,14 +4,14 @@ /* eslint-disable @typescript-eslint/no-non-null-asserted-optional-chain */ /* eslint-disable @typescript-eslint/no-namespace */ -import { MsalTestCleanup, msalNodeTestSetup } from "../../node/msalNodeTestSetup"; -import { Recorder, env } from "@azure-tools/test-recorder"; -import { Context } from "mocha"; import { InteractiveBrowserCredential, InteractiveBrowserCredentialNodeOptions, } from "../../../src"; +import { MsalTestCleanup, msalNodeTestSetup } from "../../node/msalNodeTestSetup"; +import { Recorder, env } from "@azure-tools/test-recorder"; +import { Context } from "mocha"; import Sinon from "sinon"; import { assert } from "chai"; import http from "http"; @@ -46,9 +46,7 @@ describe("InteractiveBrowserCredential (internal)", function () { const scope = "https://vault.azure.net/.default"; - // TODO: re-enable this when we resolve the esm incompatibility issues - // https://github.com/Azure/azure-sdk-for-js/issues/28373 - it.skip("Throws an expected error if no browser is available", async function (this: Context) { + it("Throws an expected error if no browser is available", async function (this: Context) { // The SinonStub type does not include this second parameter to throws(). const testErrorMessage = "No browsers available on this test."; (sandbox.stub(interactiveBrowserMockable, "open") as any).throws( diff --git a/sdk/identity/identity/test/node/msalNodeTestSetup.ts b/sdk/identity/identity/test/node/msalNodeTestSetup.ts index a51c1085c288..32e2e6fbcb19 100644 --- a/sdk/identity/identity/test/node/msalNodeTestSetup.ts +++ b/sdk/identity/identity/test/node/msalNodeTestSetup.ts @@ -1,8 +1,6 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. -import * as util from "../../src/msal/utils"; - import { AuthenticationResult, ConfidentialClientApplication, @@ -46,9 +44,6 @@ export async function msalNodeTestSetup( const sandbox = createSandbox(); - const stub = sandbox.stub(util, "randomUUID"); - stub.returns(playbackValues.correlationId); - if (testContextOrStubbedToken instanceof Test || testContextOrStubbedToken === undefined) { const testContext = testContextOrStubbedToken; @@ -132,6 +127,11 @@ export async function msalNodeTestSetup( target: `x-client-VER=[a-zA-Z0-9.-]+`, value: `x-client-VER=identity-client-version`, }, + { + regex: true, + target: `client-request-id=[a-zA-Z0-9-]+`, + value: `client-request-id=${playbackValues.correlationId}`, + }, ], bodyKeySanitizers: [ { diff --git a/sdk/identity/identity/test/public/node/utils/utils.ts b/sdk/identity/identity/test/public/node/utils/utils.ts index 46e53c6df816..0e784ba04609 100644 --- a/sdk/identity/identity/test/public/node/utils/utils.ts +++ b/sdk/identity/identity/test/public/node/utils/utils.ts @@ -2,9 +2,10 @@ // Licensed under the MIT license. import * as fs from "fs"; -import * as jwt from "jsonwebtoken"; import * as net from "net"; import * as tls from "tls"; + +import jwt from "jsonwebtoken"; import ms from "ms"; import { randomUUID } from "@azure/core-util"; From 491b8a53e22adf1852c85f065e8f971c2fdfd2e4 Mon Sep 17 00:00:00 2001 From: Maor Leger Date: Wed, 14 Feb 2024 14:24:27 -0800 Subject: [PATCH 3/8] update comm identity --- common/tools/dev-tool/src/commands/run/testNodeJSInput.ts | 1 - sdk/communication/communication-identity/package.json | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/common/tools/dev-tool/src/commands/run/testNodeJSInput.ts b/common/tools/dev-tool/src/commands/run/testNodeJSInput.ts index b301a786995f..dd71b8797064 100644 --- a/common/tools/dev-tool/src/commands/run/testNodeJSInput.ts +++ b/common/tools/dev-tool/src/commands/run/testNodeJSInput.ts @@ -27,7 +27,6 @@ export const commandInfo = makeCommandInfo( ); export default leafCommand(commandInfo, async (options) => { - console.log(options); const reporterArgs = "--reporter ../../../common/tools/mocha-multi-reporter.js --reporter-option output=test-results.xml"; const defaultMochaArgs = `${ diff --git a/sdk/communication/communication-identity/package.json b/sdk/communication/communication-identity/package.json index 022a64e4dd61..a17efdd86f7a 100644 --- a/sdk/communication/communication-identity/package.json +++ b/sdk/communication/communication-identity/package.json @@ -23,7 +23,7 @@ "format": "dev-tool run vendored prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"samples-dev/**/*.ts\" \"*.{js,json}\"", "generate:client": "autorest --typescript ./swagger/README.md && rushx format", "integration-test:browser": "dev-tool run test:browser", - "integration-test:node": "dev-tool run test:node-js-input -- --timeout 5000000 --exclude 'dist-esm/test/**/browser/*.spec.js' 'dist-esm/test/**/*.spec.js'", + "integration-test:node": "dev-tool run test:node-js-input --no-esm=true -- --loader=../../../common/tools/esm4mocha.mjs --timeout 5000000 --exclude 'dist-esm/test/**/browser/*.spec.js' 'dist-esm/test/**/*.spec.js'", "integration-test": "npm run integration-test:node && npm run integration-test:browser", "lint:fix": "eslint package.json api-extractor.json README.md src test --ext .ts,.javascript,.js --fix --fix-type [problem,suggestion]", "lint": "eslint package.json api-extractor.json README.md src test --ext .ts,.javascript,.js", From 68c6e2de3485ba44b38b7a68a188126357c68896 Mon Sep 17 00:00:00 2001 From: Maor Leger Date: Wed, 14 Feb 2024 14:58:37 -0800 Subject: [PATCH 4/8] better naming for loader? --- common/config/rush/pnpm-lock.yaml | 21 ++++++++++++-- .../src/commands/run/testNodeJSInput.ts | 29 ++++++++++++------- .../communication-identity/package.json | 4 +-- sdk/identity/identity/package.json | 5 ++-- 4 files changed, 40 insertions(+), 19 deletions(-) diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index 97ecda2ac630..f6070dde39f8 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -1507,6 +1507,11 @@ packages: '@azure/msal-common': 14.7.0 dev: false + /@azure/msal-common@13.3.1: + resolution: {integrity: sha512-Lrk1ozoAtaP/cp53May3v6HtcFSVxdFrg2Pa/1xu5oIvsIwhxW6zSPibKefCOVgd5osgykMi5jjcZHv8XkzZEQ==} + engines: {node: '>=0.8.0'} + dev: false + /@azure/msal-common@14.5.0: resolution: {integrity: sha512-Gx5rZbiZV/HiZ2nEKfjfAF/qDdZ4/QWxMvMo2jhIFVz528dVKtaZyFAOtsX2Ak8+TQvRsGCaEfuwJFuXB6tu1A==} engines: {node: '>=0.8.0'} @@ -1540,6 +1545,16 @@ packages: requiresBuild: true dev: false + /@azure/msal-node@1.18.4: + resolution: {integrity: sha512-Kc/dRvhZ9Q4+1FSfsTFDME/v6+R2Y1fuMty/TfwqE5p9GTPw08BPbKgeWinE8JRHRp+LemjQbUZsn4Q4l6Lszg==} + engines: {node: 10 || 12 || 14 || 16 || 18} + deprecated: A newer major version of this library is available. Please upgrade to the latest available version. + dependencies: + '@azure/msal-common': 13.3.1 + jsonwebtoken: 9.0.2 + uuid: 8.3.2 + dev: false + /@azure/msal-node@2.6.3: resolution: {integrity: sha512-ojjJqUwb297T5Tcln4PbJANFEqRXfbQXcyOrtdr1HQYIo+dSuCT/o0nG6bFVihf6fcNykDwJLCQPVXzTkx/oGg==} engines: {node: '>=16'} @@ -17244,13 +17259,13 @@ packages: dev: false file:projects/communication-identity.tgz: - resolution: {integrity: sha512-mmtIS0CeYFMJxoa1TseC3pau6aV+tAU6ic/Hj9xxdAd3dFOKrK6SKEyen3IfsHTGS279en5I2UnTTzw3ICmqOQ==, tarball: file:projects/communication-identity.tgz} + resolution: {integrity: sha512-UEwtyljWS6JPoCHiArohCq2AVoE8Km9w/7Fvnsw+hFzIBl02GGZpkBJ9azSBuDyAeDJm0Ng7Ho0Pe5I6CcEhVw==, tarball: file:projects/communication-identity.tgz} name: '@rush-temp/communication-identity' version: 0.0.0 dependencies: '@azure/abort-controller': 1.1.0 '@azure/identity': 4.0.1 - '@azure/msal-node': 2.6.3 + '@azure/msal-node': 1.18.4 '@microsoft/api-extractor': 7.40.1(@types/node@18.19.15) '@types/chai': 4.3.11 '@types/mocha': 10.0.6 @@ -18995,7 +19010,7 @@ packages: dev: false file:projects/identity.tgz: - resolution: {integrity: sha512-ruu02BC8golDTf85SJTFWELLDl+Zy2BQatuyJyf/UpOUF61YdK8HuKyf6V23ICPn/0M8l9Cud8LzzOT8bdPI7g==, tarball: file:projects/identity.tgz} + resolution: {integrity: sha512-fO1XIna4VY+PdwoHkYkDN0HH/926BMjo5zeacrD70jlTpd0bybvpdVHkNVxxNZgfuAhoZoYRNR+XB4Y/Ev0yIQ==, tarball: file:projects/identity.tgz} name: '@rush-temp/identity' version: 0.0.0 dependencies: diff --git a/common/tools/dev-tool/src/commands/run/testNodeJSInput.ts b/common/tools/dev-tool/src/commands/run/testNodeJSInput.ts index dd71b8797064..5a4db9a11905 100644 --- a/common/tools/dev-tool/src/commands/run/testNodeJSInput.ts +++ b/common/tools/dev-tool/src/commands/run/testNodeJSInput.ts @@ -1,8 +1,9 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license -import concurrently from "concurrently"; import { leafCommand, makeCommandInfo } from "../../framework/command"; + +import concurrently from "concurrently"; import { createPrinter } from "../../util/printer"; import { isModuleProject } from "../../util/resolveProject"; import { runTestsWithProxyTool } from "../../util/testUtils"; @@ -17,23 +18,29 @@ export const commandInfo = makeCommandInfo( default: false, description: "whether to run with test-proxy", }, - "no-esm": { - shortName: "nesm", - kind: "boolean", - default: false, - description: "whether to skip loading the esm package", + loader: { + shortName: "l", + kind: "string", + default: "esm", + description: "loader to use for running tests", }, }, ); export default leafCommand(commandInfo, async (options) => { + let esmLoaderArgs = []; + if ((await isModuleProject()) === false) { + if (options["loader"] === "esm") { + esmLoaderArgs.push("-r ../../../common/tools/esm-workaround -r esm"); + } else { + esmLoaderArgs.push("--loader=../../../common/tools/esm4mocha.mjs"); + } + } + esmLoaderArgs.push("-r source-map-support/register.js"); + const reporterArgs = "--reporter ../../../common/tools/mocha-multi-reporter.js --reporter-option output=test-results.xml"; - const defaultMochaArgs = `${ - options["no-esm"] === true || (await isModuleProject()) - ? "-r source-map-support/register.js" - : "-r ../../../common/tools/esm-workaround -r esm -r source-map-support/register" - } ${reporterArgs} --full-trace`; + const defaultMochaArgs = `${esmLoaderArgs.join(" ")} ${reporterArgs} --full-trace`; const updatedArgs = options["--"]?.map((opt) => opt.includes("**") && !opt.startsWith("'") && !opt.startsWith('"') ? `"${opt}"` : opt, ); diff --git a/sdk/communication/communication-identity/package.json b/sdk/communication/communication-identity/package.json index a17efdd86f7a..c9f8634ea060 100644 --- a/sdk/communication/communication-identity/package.json +++ b/sdk/communication/communication-identity/package.json @@ -23,7 +23,7 @@ "format": "dev-tool run vendored prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"samples-dev/**/*.ts\" \"*.{js,json}\"", "generate:client": "autorest --typescript ./swagger/README.md && rushx format", "integration-test:browser": "dev-tool run test:browser", - "integration-test:node": "dev-tool run test:node-js-input --no-esm=true -- --loader=../../../common/tools/esm4mocha.mjs --timeout 5000000 --exclude 'dist-esm/test/**/browser/*.spec.js' 'dist-esm/test/**/*.spec.js'", + "integration-test:node": "dev-tool run test:node-js-input -- --timeout 5000000 --exclude 'dist-esm/test/**/browser/*.spec.js' 'dist-esm/test/**/*.spec.js'", "integration-test": "npm run integration-test:node && npm run integration-test:browser", "lint:fix": "eslint package.json api-extractor.json README.md src test --ext .ts,.javascript,.js --fix --fix-type [problem,suggestion]", "lint": "eslint package.json api-extractor.json README.md src test --ext .ts,.javascript,.js", @@ -113,7 +113,7 @@ "@azure/dev-tool": "^1.0.0", "@azure/eslint-plugin-azure-sdk": "^3.0.0", "@azure/identity": "^4.0.1", - "@azure/msal-node": "^2.5.1", + "@azure/msal-node": "^1.3.0", "@azure/test-utils": "^1.0.0", "@microsoft/api-extractor": "^7.31.1", "@types/chai": "^4.1.6", diff --git a/sdk/identity/identity/package.json b/sdk/identity/identity/package.json index 736bc76708b8..322c53ddaf73 100644 --- a/sdk/identity/identity/package.json +++ b/sdk/identity/identity/package.json @@ -55,7 +55,7 @@ "format": "dev-tool run vendored prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"samples-dev/**/*.ts\" \"*.{js,json}\"", "check-format": "dev-tool run vendored prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"samples-dev/**/*.ts\" \"*.{js,json}\"", "integration-test:browser": "echo skipped", - "integration-test:node": "dev-tool run test:node-js-input --no-esm=true -- --loader=../../../common/tools/esm4mocha.mjs --timeout 180000 'dist-esm/test/public/node/*.spec.js' 'dist-esm/test/internal/node/*.spec.js'", + "integration-test:node": "dev-tool run test:node-js-input --loader=esm4mocha -- --timeout 180000 'dist-esm/test/public/node/*.spec.js' 'dist-esm/test/internal/node/*.spec.js'", "integration-test": "npm run integration-test:node && npm run integration-test:browser", "lint:fix": "eslint package.json api-extractor.json src test --ext .ts --fix --fix-type [problem,suggestion]", "lint": "eslint package.json api-extractor.json src test --ext .ts", @@ -159,7 +159,6 @@ "sinon": "^17.0.0", "ts-node": "^10.0.0", "typescript": "~5.3.3", - "util": "^0.12.1", - "esm": "^3.2.18" + "util": "^0.12.1" } } From b5e14c9c8b5b3d28f7b4d676ff54bfa6ee2a44ee Mon Sep 17 00:00:00 2001 From: Maor Leger Date: Wed, 14 Feb 2024 14:59:44 -0800 Subject: [PATCH 5/8] reverse order --- common/tools/dev-tool/src/commands/run/testNodeJSInput.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/common/tools/dev-tool/src/commands/run/testNodeJSInput.ts b/common/tools/dev-tool/src/commands/run/testNodeJSInput.ts index 5a4db9a11905..7b450e279bff 100644 --- a/common/tools/dev-tool/src/commands/run/testNodeJSInput.ts +++ b/common/tools/dev-tool/src/commands/run/testNodeJSInput.ts @@ -30,10 +30,10 @@ export const commandInfo = makeCommandInfo( export default leafCommand(commandInfo, async (options) => { let esmLoaderArgs = []; if ((await isModuleProject()) === false) { - if (options["loader"] === "esm") { - esmLoaderArgs.push("-r ../../../common/tools/esm-workaround -r esm"); - } else { + if (options["loader"] === "esm4mocha") { esmLoaderArgs.push("--loader=../../../common/tools/esm4mocha.mjs"); + } else { + esmLoaderArgs.push("-r ../../../common/tools/esm-workaround -r esm"); } } esmLoaderArgs.push("-r source-map-support/register.js"); From f0ca0f27dd9b8b8df658951f80ae72fdf73d0447 Mon Sep 17 00:00:00 2001 From: Maor Leger Date: Wed, 14 Feb 2024 15:00:55 -0800 Subject: [PATCH 6/8] revert rush upgrade --- common/config/rush/pnpm-lock.yaml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index f6070dde39f8..88245ba33f94 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -19010,7 +19010,7 @@ packages: dev: false file:projects/identity.tgz: - resolution: {integrity: sha512-fO1XIna4VY+PdwoHkYkDN0HH/926BMjo5zeacrD70jlTpd0bybvpdVHkNVxxNZgfuAhoZoYRNR+XB4Y/Ev0yIQ==, tarball: file:projects/identity.tgz} + resolution: {integrity: sha512-ruu02BC8golDTf85SJTFWELLDl+Zy2BQatuyJyf/UpOUF61YdK8HuKyf6V23ICPn/0M8l9Cud8LzzOT8bdPI7g==, tarball: file:projects/identity.tgz} name: '@rush-temp/identity' version: 0.0.0 dependencies: @@ -19830,7 +19830,7 @@ packages: dev: false file:projects/monitor-opentelemetry.tgz: - resolution: {integrity: sha512-znsAUq8KrMWEZpRYoUUwSamsOFAjKPrQJc2leRHM/QcMAO3ghlYvgfgAovlsaaQ8jQ+Q7V1uTGBIu77mAy2Nrw==, tarball: file:projects/monitor-opentelemetry.tgz} + resolution: {integrity: sha512-jJAKV0xZtJJLGYQWKh491I84Og97NX2goKLq+z5ioxrIbIoC9z2XED2DpzVtFN90F+UOyTfNIA8niXTAfXbwZg==, tarball: file:projects/monitor-opentelemetry.tgz} name: '@rush-temp/monitor-opentelemetry' version: 0.0.0 dependencies: @@ -19878,7 +19878,7 @@ packages: dev: false file:projects/monitor-query.tgz: - resolution: {integrity: sha512-N9nSwtCSOOXRpR8UtlkeVRtkSzVfSoLFh3srVaQaPmdPWR8kI8faSAe4VG/K4YGuJgaxFStJJv00vVAQr032EA==, tarball: file:projects/monitor-query.tgz} + resolution: {integrity: sha512-JC7XYy5qw1ZabecDN7Girw9cfhpaC8EFMHovybi+cGlrXtIpvbgOoi4qJ5C8cNMXgoV9epX1odxEZRQVvsWzWQ==, tarball: file:projects/monitor-query.tgz} name: '@rush-temp/monitor-query' version: 0.0.0 dependencies: @@ -19924,7 +19924,7 @@ packages: dev: false file:projects/notification-hubs.tgz: - resolution: {integrity: sha512-HlHgzSJnLpwoLUyooqPuF4iuVRhygYHgsg8x1O4YlmHGo2811G7hBGHnzwrbSij/FhHfjjETNOiEH23jSH9uzA==, tarball: file:projects/notification-hubs.tgz} + resolution: {integrity: sha512-R0F44ALQH8wMZsJUMtW5dmriw3nhkUZ6q4777dhgDev7MsgBdOCnZC8Mqlu10q0g/x8kUlmQwvTp65rwrejQPA==, tarball: file:projects/notification-hubs.tgz} name: '@rush-temp/notification-hubs' version: 0.0.0 dependencies: @@ -20415,7 +20415,7 @@ packages: dev: false file:projects/perf-monitor-opentelemetry.tgz: - resolution: {integrity: sha512-0dtMDfhtA6+1wyBjUXM/sIpoa0Qc/yVWKC0blPWcGOvI51ECvWTfqOmhdMuN/FZpUgr/TTfqsJl+WuH+Trilag==, tarball: file:projects/perf-monitor-opentelemetry.tgz} + resolution: {integrity: sha512-m4miWyp+BhptAHW0KNafiP9ZLli5kRk7xQrFWlegcJbCA/JAaBWvYAw9oP9T1oCsgbeQPPT0vRneQDeS+0G7gg==, tarball: file:projects/perf-monitor-opentelemetry.tgz} name: '@rush-temp/perf-monitor-opentelemetry' version: 0.0.0 dependencies: @@ -21027,7 +21027,7 @@ packages: dev: false file:projects/service-bus.tgz: - resolution: {integrity: sha512-z056stcwgVFeU0n4k4vAokL+Qp5i6Pkc8kSCfHk8LuceWJ2/9rwmYTVB/Gf8OiybE8MKfKXsopQW0sDpz5yN2w==, tarball: file:projects/service-bus.tgz} + resolution: {integrity: sha512-LqhpJwnhHWnc84l3xMhtQgfpvY8Rc+kmbqZumXeR6fWjL/eC2o7ToXVic1R33AfvYoyuxGgMTYIrIpR+Rye+AA==, tarball: file:projects/service-bus.tgz} name: '@rush-temp/service-bus' version: 0.0.0 dependencies: From 564b60dbeb023c3a382cefb075c4de06e4e1414b Mon Sep 17 00:00:00 2001 From: Maor Leger Date: Wed, 14 Feb 2024 15:31:11 -0800 Subject: [PATCH 7/8] cleanup --- .../tools/dev-tool/src/commands/run/testNodeJSInput.ts | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/common/tools/dev-tool/src/commands/run/testNodeJSInput.ts b/common/tools/dev-tool/src/commands/run/testNodeJSInput.ts index 7b450e279bff..55f2c8614b83 100644 --- a/common/tools/dev-tool/src/commands/run/testNodeJSInput.ts +++ b/common/tools/dev-tool/src/commands/run/testNodeJSInput.ts @@ -28,19 +28,18 @@ export const commandInfo = makeCommandInfo( ); export default leafCommand(commandInfo, async (options) => { - let esmLoaderArgs = []; + let esmLoaderArgs = ""; if ((await isModuleProject()) === false) { if (options["loader"] === "esm4mocha") { - esmLoaderArgs.push("--loader=../../../common/tools/esm4mocha.mjs"); + esmLoaderArgs = "--loader=../../../common/tools/esm4mocha.mjs"; } else { - esmLoaderArgs.push("-r ../../../common/tools/esm-workaround -r esm"); + esmLoaderArgs = "-r ../../../common/tools/esm-workaround -r esm"; } } - esmLoaderArgs.push("-r source-map-support/register.js"); const reporterArgs = "--reporter ../../../common/tools/mocha-multi-reporter.js --reporter-option output=test-results.xml"; - const defaultMochaArgs = `${esmLoaderArgs.join(" ")} ${reporterArgs} --full-trace`; + const defaultMochaArgs = `${esmLoaderArgs} -r source-map-support/register.js ${reporterArgs} --full-trace`; const updatedArgs = options["--"]?.map((opt) => opt.includes("**") && !opt.startsWith("'") && !opt.startsWith('"') ? `"${opt}"` : opt, ); From 2b6207bcbc2f70134b873a555f393b620c51fae6 Mon Sep 17 00:00:00 2001 From: Maor Leger Date: Thu, 15 Feb 2024 07:41:42 -0800 Subject: [PATCH 8/8] use-esm-workaround --- .../src/commands/run/testNodeJSInput.ts | 17 ++++++++++------- sdk/identity/identity/package.json | 2 +- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/common/tools/dev-tool/src/commands/run/testNodeJSInput.ts b/common/tools/dev-tool/src/commands/run/testNodeJSInput.ts index 55f2c8614b83..8f25d8d6cfe9 100644 --- a/common/tools/dev-tool/src/commands/run/testNodeJSInput.ts +++ b/common/tools/dev-tool/src/commands/run/testNodeJSInput.ts @@ -18,19 +18,22 @@ export const commandInfo = makeCommandInfo( default: false, description: "whether to run with test-proxy", }, - loader: { - shortName: "l", - kind: "string", - default: "esm", - description: "loader to use for running tests", + "use-esm-workaround": { + shortName: "esm", + kind: "boolean", + default: true, + description: + "when true, uses the `esm` npm package for tests. Otherwise uses esm4mocha if needed", }, }, ); export default leafCommand(commandInfo, async (options) => { + const isModule = await isModuleProject(); let esmLoaderArgs = ""; - if ((await isModuleProject()) === false) { - if (options["loader"] === "esm4mocha") { + + if (isModule === false) { + if (options["use-esm-workaround"] === false) { esmLoaderArgs = "--loader=../../../common/tools/esm4mocha.mjs"; } else { esmLoaderArgs = "-r ../../../common/tools/esm-workaround -r esm"; diff --git a/sdk/identity/identity/package.json b/sdk/identity/identity/package.json index 322c53ddaf73..a94c26f04bd4 100644 --- a/sdk/identity/identity/package.json +++ b/sdk/identity/identity/package.json @@ -55,7 +55,7 @@ "format": "dev-tool run vendored prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"samples-dev/**/*.ts\" \"*.{js,json}\"", "check-format": "dev-tool run vendored prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"samples-dev/**/*.ts\" \"*.{js,json}\"", "integration-test:browser": "echo skipped", - "integration-test:node": "dev-tool run test:node-js-input --loader=esm4mocha -- --timeout 180000 'dist-esm/test/public/node/*.spec.js' 'dist-esm/test/internal/node/*.spec.js'", + "integration-test:node": "dev-tool run test:node-js-input --use-esm-workaround=false -- --timeout 180000 'dist-esm/test/public/node/*.spec.js' 'dist-esm/test/internal/node/*.spec.js'", "integration-test": "npm run integration-test:node && npm run integration-test:browser", "lint:fix": "eslint package.json api-extractor.json src test --ext .ts --fix --fix-type [problem,suggestion]", "lint": "eslint package.json api-extractor.json src test --ext .ts",