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"] } } }