diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 9193bdface..d89aa6926f 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -18,7 +18,7 @@ jobs:
strategy:
matrix:
# We test against different OSes, because the build toolchain has OS-specific dependencies.
- os: ["ubuntu-latest", "windows-latest", "macos-latest"]
+ os: ["ubuntu-latest", "windows-latest"]
node-version: ["22.x", "24.x"]
steps:
- uses: actions/checkout@v7
diff --git a/e2e/browser/solid-client-authn-browser/test-app/next-env.d.ts b/e2e/browser/solid-client-authn-browser/test-app/next-env.d.ts
index 9edff1c7ca..ce4e94a6b1 100644
--- a/e2e/browser/solid-client-authn-browser/test-app/next-env.d.ts
+++ b/e2e/browser/solid-client-authn-browser/test-app/next-env.d.ts
@@ -1,6 +1,7 @@
///
///
import "./.next/types/routes.d.ts";
+import "./.next/types/root-params.d.ts";
// NOTE: This file should not be edited
// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
diff --git a/jest.config.ts b/jest.config.ts
index 8c0b173de6..8c1cf9205b 100644
--- a/jest.config.ts
+++ b/jest.config.ts
@@ -29,7 +29,6 @@ import { join } from "node:path";
// Jest 30 loads .ts config files as ESM via Node's native TypeScript support,
// so `require` is not available. Use createRequire for require.resolve calls.
-// @ts-expect-error: import.meta.url is valid at runtime (ESM), but tsconfig targets CJS.
const esmRequire = createRequire(import.meta.url);
type ArrayElement = MyArray extends Array ? T : never;
diff --git a/package-lock.json b/package-lock.json
index a267e6e1cd..a4a3b169c6 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -51,7 +51,7 @@
"ts-node": "^10.9.2",
"typedoc": "^0.28.20",
"typedoc-plugin-markdown": "^3.17.1",
- "typescript": "^5.9.3"
+ "typescript": "^6.0.3"
},
"engines": {
"node": "^22.0.0 || ^24.0.0"
@@ -21058,7 +21058,9 @@
}
},
"node_modules/typescript": {
- "version": "5.9.3",
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz",
+ "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==",
"dev": true,
"license": "Apache-2.0",
"bin": {
diff --git a/package.json b/package.json
index d300aca2d3..ca6358f102 100644
--- a/package.json
+++ b/package.json
@@ -78,7 +78,7 @@
"ts-node": "^10.9.2",
"typedoc": "^0.28.20",
"typedoc-plugin-markdown": "^3.17.1",
- "typescript": "^5.9.3"
+ "typescript": "^6.0.3"
},
"optionalDependencies": {
"@nx/nx-win32-x64-msvc": "^23.1.0",
diff --git a/packages/browser/package.json b/packages/browser/package.json
index 192d7e627c..103f6a6ce0 100644
--- a/packages/browser/package.json
+++ b/packages/browser/package.json
@@ -13,9 +13,9 @@
},
"exports": {
".": {
+ "types": "./dist/index.d.ts",
"require": "./dist/index.js",
- "import": "./dist/index.mjs",
- "types": "./dist/index.d.ts"
+ "import": "./dist/index.mjs"
}
},
"scripts": {
diff --git a/packages/browser/src/ClientAuthentication.ts b/packages/browser/src/ClientAuthentication.ts
index e05cb61c5d..19190bd932 100644
--- a/packages/browser/src/ClientAuthentication.ts
+++ b/packages/browser/src/ClientAuthentication.ts
@@ -35,7 +35,7 @@ import {
removeOpenIdParams,
} from "@inrupt/solid-client-authn-core";
import { normalizeCallbackUrl } from "@inrupt/oidc-client-ext";
-import type { EventEmitter } from "events";
+import type { EventEmitter } from "node:events";
/**
* Checks if a client's registration has expired.
diff --git a/packages/browser/src/login/oidc/IssuerConfigFetcher.spec.ts b/packages/browser/src/login/oidc/IssuerConfigFetcher.spec.ts
index c022594fb2..c1a2e1d899 100644
--- a/packages/browser/src/login/oidc/IssuerConfigFetcher.spec.ts
+++ b/packages/browser/src/login/oidc/IssuerConfigFetcher.spec.ts
@@ -18,7 +18,14 @@
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
-import { jest, it, describe, expect } from "@jest/globals";
+import {
+ jest,
+ it,
+ describe,
+ expect,
+ beforeEach,
+ afterEach,
+} from "@jest/globals";
import { mockStorageUtility } from "@inrupt/solid-client-authn-core";
import IssuerConfigFetcher from "./IssuerConfigFetcher";
diff --git a/packages/browser/src/login/oidc/incomingRedirectHandler/AuthCodeRedirectHandler.ts b/packages/browser/src/login/oidc/incomingRedirectHandler/AuthCodeRedirectHandler.ts
index dfb01d14d3..73e6cc804f 100644
--- a/packages/browser/src/login/oidc/incomingRedirectHandler/AuthCodeRedirectHandler.ts
+++ b/packages/browser/src/login/oidc/incomingRedirectHandler/AuthCodeRedirectHandler.ts
@@ -40,7 +40,7 @@ import {
saveSessionInfoToStorage,
} from "@inrupt/solid-client-authn-core";
import { getTokens } from "@inrupt/oidc-client-ext";
-import type { EventEmitter } from "events";
+import type { EventEmitter } from "node:events";
/**
* @hidden
diff --git a/packages/browser/src/login/oidc/incomingRedirectHandler/ErrorOidcHandler.ts b/packages/browser/src/login/oidc/incomingRedirectHandler/ErrorOidcHandler.ts
index 9681cd6f94..9d446b6f1f 100644
--- a/packages/browser/src/login/oidc/incomingRedirectHandler/ErrorOidcHandler.ts
+++ b/packages/browser/src/login/oidc/incomingRedirectHandler/ErrorOidcHandler.ts
@@ -28,7 +28,7 @@ import type {
ISessionInfo,
} from "@inrupt/solid-client-authn-core";
import { EVENTS } from "@inrupt/solid-client-authn-core";
-import type { EventEmitter } from "events";
+import type { EventEmitter } from "node:events";
import { getUnauthenticatedSession } from "../../../sessionInfo/SessionInfoManager";
diff --git a/packages/browser/src/login/oidc/refresh/TokenRefresher.ts b/packages/browser/src/login/oidc/refresh/TokenRefresher.ts
index e3ac585f5f..be42efed37 100644
--- a/packages/browser/src/login/oidc/refresh/TokenRefresher.ts
+++ b/packages/browser/src/login/oidc/refresh/TokenRefresher.ts
@@ -37,7 +37,7 @@ import {
EVENTS,
} from "@inrupt/solid-client-authn-core";
import { refresh } from "@inrupt/oidc-client-ext";
-import type { EventEmitter } from "events";
+import type { EventEmitter } from "node:events";
// Some identifiers are not in camelcase on purpose, as they are named using the
// official names from the OIDC/OAuth2 specifications.
diff --git a/packages/browser/tsconfig.json b/packages/browser/tsconfig.json
index 45ef66d0ef..cbb34b0022 100644
--- a/packages/browser/tsconfig.json
+++ b/packages/browser/tsconfig.json
@@ -3,7 +3,9 @@
"compilerOptions": {
"lib": ["es2022", "dom"],
- "outDir": "./dist"
+ "rootDir": "./src",
+ "outDir": "./dist",
+ "types": ["node"]
},
"include": ["src/**/*"],
diff --git a/packages/core/package.json b/packages/core/package.json
index 18d81e4e54..5d06d40638 100644
--- a/packages/core/package.json
+++ b/packages/core/package.json
@@ -7,14 +7,14 @@
"types": "dist/index.d.ts",
"exports": {
".": {
+ "types": "./dist/index.d.ts",
"require": "./dist/index.js",
- "import": "./dist/index.mjs",
- "types": "./dist/index.d.ts"
+ "import": "./dist/index.mjs"
},
"./mocks": {
+ "types": "./dist/mocks.d.ts",
"require": "./dist/mocks.js",
- "import": "./dist/mocks.mjs",
- "types": "./dist/mocks.d.ts"
+ "import": "./dist/mocks.mjs"
}
},
"typesVersions": {
diff --git a/packages/core/src/SessionEventListener.ts b/packages/core/src/SessionEventListener.ts
index ba78da5ba4..64f2c6d971 100644
--- a/packages/core/src/SessionEventListener.ts
+++ b/packages/core/src/SessionEventListener.ts
@@ -18,7 +18,7 @@
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
-import type { EventEmitter } from "events";
+import type { EventEmitter } from "node:events";
import type { EVENTS } from "./constant";
import type { KeyPair } from "./authenticatedFetch/dpopUtils";
diff --git a/packages/core/src/authenticatedFetch/fetchFactory.ts b/packages/core/src/authenticatedFetch/fetchFactory.ts
index 5bb4ea3b59..c18e82966f 100644
--- a/packages/core/src/authenticatedFetch/fetchFactory.ts
+++ b/packages/core/src/authenticatedFetch/fetchFactory.ts
@@ -18,7 +18,7 @@
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
-import type { EventEmitter } from "events";
+import type { EventEmitter } from "node:events";
import { REFRESH_BEFORE_EXPIRATION_SECONDS, EVENTS } from "../constant";
import type { ITokenRefresher } from "../login/oidc/refresh/ITokenRefresher";
import type { KeyPair } from "./dpopUtils";
diff --git a/packages/core/src/login/ILoginOptions.ts b/packages/core/src/login/ILoginOptions.ts
index 8be9360706..eb69523f02 100644
--- a/packages/core/src/login/ILoginOptions.ts
+++ b/packages/core/src/login/ILoginOptions.ts
@@ -23,7 +23,7 @@
* @packageDocumentation
*/
-import type { EventEmitter } from "events";
+import type { EventEmitter } from "node:events";
import type ILoginInputOptions from "../ILoginInputOptions";
/**
diff --git a/packages/core/src/login/oidc/IIncomingRedirectHandler.ts b/packages/core/src/login/oidc/IIncomingRedirectHandler.ts
index d773ad05b4..d352c16077 100644
--- a/packages/core/src/login/oidc/IIncomingRedirectHandler.ts
+++ b/packages/core/src/login/oidc/IIncomingRedirectHandler.ts
@@ -23,7 +23,7 @@
* @packageDocumentation
*/
-import type { EventEmitter } from "events";
+import type { EventEmitter } from "node:events";
import type IHandleable from "../../util/handlerPattern/IHandleable";
import type { ISessionInfo } from "../../sessionInfo/ISessionInfo";
import type { IRpLogoutOptions } from "../../logout/ILogoutHandler";
diff --git a/packages/core/src/login/oidc/IOidcOptions.ts b/packages/core/src/login/oidc/IOidcOptions.ts
index 8dade63854..f44afa836e 100644
--- a/packages/core/src/login/oidc/IOidcOptions.ts
+++ b/packages/core/src/login/oidc/IOidcOptions.ts
@@ -26,7 +26,7 @@
/**
* Defines how OIDC login should proceed
*/
-import type { EventEmitter } from "events";
+import type { EventEmitter } from "node:events";
import type { IIssuerConfig } from "./IIssuerConfig";
import type { IClient } from "./IClient";
import { DEFAULT_SCOPES } from "../../constant";
diff --git a/packages/core/src/login/oidc/__mocks__/IncomingRedirectHandler.ts b/packages/core/src/login/oidc/__mocks__/IncomingRedirectHandler.ts
index 099973170b..55e25ba0d1 100644
--- a/packages/core/src/login/oidc/__mocks__/IncomingRedirectHandler.ts
+++ b/packages/core/src/login/oidc/__mocks__/IncomingRedirectHandler.ts
@@ -18,7 +18,7 @@
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
-import type { EventEmitter } from "events";
+import type { EventEmitter } from "node:events";
import { jest } from "@jest/globals";
import type IIncomingRedirectHandler from "../IIncomingRedirectHandler";
diff --git a/packages/core/src/login/oidc/refresh/ITokenRefresher.ts b/packages/core/src/login/oidc/refresh/ITokenRefresher.ts
index f92a13ade0..874d71a3bd 100644
--- a/packages/core/src/login/oidc/refresh/ITokenRefresher.ts
+++ b/packages/core/src/login/oidc/refresh/ITokenRefresher.ts
@@ -18,7 +18,7 @@
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
-import type { EventEmitter } from "events";
+import type { EventEmitter } from "node:events";
import type { KeyPair } from "../../../authenticatedFetch/dpopUtils";
/**
diff --git a/packages/core/tsconfig.json b/packages/core/tsconfig.json
index 45ef66d0ef..cbb34b0022 100644
--- a/packages/core/tsconfig.json
+++ b/packages/core/tsconfig.json
@@ -3,7 +3,9 @@
"compilerOptions": {
"lib": ["es2022", "dom"],
- "outDir": "./dist"
+ "rootDir": "./src",
+ "outDir": "./dist",
+ "types": ["node"]
},
"include": ["src/**/*"],
diff --git a/packages/node/package.json b/packages/node/package.json
index 7acc44e84e..974ca3dd03 100644
--- a/packages/node/package.json
+++ b/packages/node/package.json
@@ -11,9 +11,9 @@
},
"exports": {
".": {
+ "types": "./dist/index.d.ts",
"require": "./dist/index.js",
- "import": "./dist/index.mjs",
- "types": "./dist/index.d.ts"
+ "import": "./dist/index.mjs"
}
},
"scripts": {
diff --git a/packages/node/src/ClientAuthentication.ts b/packages/node/src/ClientAuthentication.ts
index 790f59b211..05b0088aa7 100644
--- a/packages/node/src/ClientAuthentication.ts
+++ b/packages/node/src/ClientAuthentication.ts
@@ -34,7 +34,7 @@ import type {
ISessionInternalInfo,
AuthorizationRequestState,
} from "@inrupt/solid-client-authn-core";
-import type { EventEmitter } from "events";
+import type { EventEmitter } from "node:events";
/**
* @hidden
diff --git a/packages/node/src/Session.spec.ts b/packages/node/src/Session.spec.ts
index 441a9e40b8..2106e3ba5b 100644
--- a/packages/node/src/Session.spec.ts
+++ b/packages/node/src/Session.spec.ts
@@ -23,7 +23,7 @@ import type { ISessionInfo } from "@inrupt/solid-client-authn-core";
import { EVENTS } from "@inrupt/solid-client-authn-core";
// eslint-disable-next-line import/no-unresolved
import { mockStorage } from "@inrupt/solid-client-authn-core/mocks";
-import type EventEmitter from "events";
+import type EventEmitter from "node:events";
import type { SessionTokenSet } from "core";
import { mockClientAuthentication } from "./__mocks__/ClientAuthentication";
import type ClientAuthentication from "./ClientAuthentication";
diff --git a/packages/node/src/Session.ts b/packages/node/src/Session.ts
index 9049d9ffd0..aead9631c0 100644
--- a/packages/node/src/Session.ts
+++ b/packages/node/src/Session.ts
@@ -39,7 +39,7 @@ import {
getWebidFromTokenPayload,
} from "@inrupt/solid-client-authn-core";
import { v4 } from "uuid";
-import EventEmitter from "events";
+import EventEmitter from "node:events";
import { exportJWK } from "jose";
import type ClientAuthentication from "./ClientAuthentication";
import { getClientAuthenticationWithDependencies } from "./dependencies";
diff --git a/packages/node/src/login/oidc/AggregateIncomingRedirectHandler.ts b/packages/node/src/login/oidc/AggregateIncomingRedirectHandler.ts
index 9e3932c3cf..6743a83af1 100644
--- a/packages/node/src/login/oidc/AggregateIncomingRedirectHandler.ts
+++ b/packages/node/src/login/oidc/AggregateIncomingRedirectHandler.ts
@@ -32,7 +32,7 @@ import type {
SessionConfig,
} from "@inrupt/solid-client-authn-core";
import { AggregateHandler } from "@inrupt/solid-client-authn-core";
-import type { EventEmitter } from "events";
+import type { EventEmitter } from "node:events";
/**
* @hidden
diff --git a/packages/node/src/login/oidc/incomingRedirectHandler/AuthCodeRedirectHandler.ts b/packages/node/src/login/oidc/incomingRedirectHandler/AuthCodeRedirectHandler.ts
index 7d271c8518..862cf2fc5a 100644
--- a/packages/node/src/login/oidc/incomingRedirectHandler/AuthCodeRedirectHandler.ts
+++ b/packages/node/src/login/oidc/incomingRedirectHandler/AuthCodeRedirectHandler.ts
@@ -49,7 +49,7 @@ import {
import { URL } from "url";
import { Issuer } from "openid-client";
-import type { EventEmitter } from "events";
+import type { EventEmitter } from "node:events";
import { configToIssuerMetadata } from "../IssuerConfigFetcher";
import { asDPoPInput } from "../../../util/dpopInput";
diff --git a/packages/node/src/login/oidc/oidcHandlers/RefreshTokenOidcHandler.ts b/packages/node/src/login/oidc/oidcHandlers/RefreshTokenOidcHandler.ts
index c63d5d55c3..f2b36f23dc 100644
--- a/packages/node/src/login/oidc/oidcHandlers/RefreshTokenOidcHandler.ts
+++ b/packages/node/src/login/oidc/oidcHandlers/RefreshTokenOidcHandler.ts
@@ -47,7 +47,7 @@ import {
} from "@inrupt/solid-client-authn-core";
import type { JWK, CryptoKey as JoseCryptoKey } from "jose";
import { importJWK } from "jose";
-import type { EventEmitter } from "events";
+import type { EventEmitter } from "node:events";
function validateOptions(
oidcLoginOptions: IOidcOptions,
diff --git a/packages/node/src/login/oidc/refresh/TokenRefresher.ts b/packages/node/src/login/oidc/refresh/TokenRefresher.ts
index 7dc7482694..435d688d40 100644
--- a/packages/node/src/login/oidc/refresh/TokenRefresher.ts
+++ b/packages/node/src/login/oidc/refresh/TokenRefresher.ts
@@ -40,7 +40,7 @@ import {
} from "@inrupt/solid-client-authn-core";
import type { IssuerMetadata, TokenSet } from "openid-client";
import { Issuer } from "openid-client";
-import type { EventEmitter } from "events";
+import type { EventEmitter } from "node:events";
import { configToIssuerMetadata } from "../IssuerConfigFetcher";
import { negotiateClientSigningAlg } from "../ClientRegistrar";
import { asDPoPInput } from "../../../util/dpopInput";
diff --git a/packages/node/tsconfig.json b/packages/node/tsconfig.json
index 34fbe2bf18..ed95b3ee5f 100644
--- a/packages/node/tsconfig.json
+++ b/packages/node/tsconfig.json
@@ -3,7 +3,9 @@
"compilerOptions": {
"lib": ["es2022"],
- "outDir": "./dist"
+ "rootDir": "./src",
+ "outDir": "./dist",
+ "types": ["node"]
},
"include": ["src/**/*"],
diff --git a/packages/oidc-browser/tsconfig.json b/packages/oidc-browser/tsconfig.json
index 70425f82df..1d1ac61595 100644
--- a/packages/oidc-browser/tsconfig.json
+++ b/packages/oidc-browser/tsconfig.json
@@ -3,7 +3,9 @@
"compilerOptions": {
"lib": ["es2022", "dom"],
- "outDir": "./dist"
+ "rootDir": "./src",
+ "outDir": "./dist",
+ "types": ["node"]
},
"typedocOptions": {
@@ -13,5 +15,5 @@
},
"include": ["src/**/*"],
- "exclude": ["*.spec.ts"]
+ "exclude": ["src/**/*.spec.ts", "**/__mocks__/*"]
}
diff --git a/tsconfig.build.json b/tsconfig.build.json
index ef5ddd53fb..3135e0482c 100644
--- a/tsconfig.build.json
+++ b/tsconfig.build.json
@@ -7,7 +7,7 @@
"./jest.config.ts"
],
"compilerOptions": {
- "module": "commonjs",
+ "module": "preserve",
"strict": true,
"declaration": true,
"noImplicitAny": true,
@@ -15,7 +15,10 @@
"target": "es2022",
"sourceMap": true,
"lib": ["es2022", "dom"],
- "moduleResolution": "node",
+ // "bundler" resolution matches how the Rollup build resolves modules, and
+ // "module": "preserve" leave module syntax untouched for the bundler to
+ // handle. See https://aka.ms/ts6.
+ "moduleResolution": "bundler",
"resolveJsonModule": true,
"outDir": "./dist",
// This is required to transform native ESM from our dependencies using ts-jest.
diff --git a/tsconfig.json b/tsconfig.json
index 5299601143..b2499d5eff 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -2,9 +2,8 @@
"extends": "./tsconfig.build.json",
"compilerOptions": {
- "baseUrl": "./packages",
"paths": {
- "*": ["*/src"]
+ "*": ["./packages/*/src"]
}
}
}