Skip to content

Commit 8e41333

Browse files
update branch to use esm properly, related to #2028
2 parents 6c7347e + 51deff0 commit 8e41333

31 files changed

+104
-100
lines changed

V4_MIGRATION_GUIDE.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ In v4, by default, the only claims that are persisted in the `user` object of se
230230
- `email_verified`
231231
- `org_id`
232232

233-
If you'd like to customize the `user` object to include additional custom claims from the ID token, you can use the `beforeSessionSaved` hook (see [beforeSessionSaved hook](https://github.com/guabu/nextjs-auth0/tree/main?tab=readme-ov-file#beforesessionsaved))
233+
If you'd like to customize the `user` object to include additional custom claims from the ID token, you can use the `beforeSessionSaved` hook (see [beforeSessionSaved hook](https://github.com/auth0/nextjs-auth0/blob/main/EXAMPLES.md#beforesessionsaved))
234234

235235
## Additional changes
236236

package.json

+6-5
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
"name": "@auth0/nextjs-auth0",
33
"version": "4.4.0",
44
"description": "Auth0 Next.js SDK",
5+
"type": "module",
56
"scripts": {
67
"build": "tsc",
78
"build:watch": "tsc -w",
@@ -60,19 +61,19 @@
6061
},
6162
"exports": {
6263
".": {
63-
"import": "./dist/client/index.js"
64+
"default": "./dist/client/index.js"
6465
},
6566
"./server": {
66-
"import": "./dist/server/index.js"
67+
"default": "./dist/server/index.js"
6768
},
6869
"./errors": {
69-
"import": "./dist/errors/index.js"
70+
"default": "./dist/errors/index.js"
7071
},
7172
"./types": {
72-
"import": "./dist/types/index.d.ts"
73+
"default": "./dist/types/index.d.ts"
7374
},
7475
"./testing": {
75-
"import": "./dist/testing/index.js"
76+
"default": "./dist/testing/index.js"
7677
}
7778
},
7879
"dependencies": {

src/client/helpers/get-access-token.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { AccessTokenError } from "../../errors";
1+
import { AccessTokenError } from "../../errors/index.js";
22

33
export async function getAccessToken() {
44
const tokenRes = await fetch(

src/client/hooks/use-user.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import useSWR from "swr";
44

5-
import type { User } from "../../types";
5+
import type { User } from "../../types/index.js";
66

77
export function useUser() {
88
const { data, error, isLoading } = useSWR<User, Error, string>(

src/client/index.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
export { useUser } from "./hooks/use-user";
2-
export { getAccessToken } from "./helpers/get-access-token";
3-
export { Auth0Provider } from "./providers/auth0-provider";
1+
export { useUser } from "./hooks/use-user.js";
2+
export { getAccessToken } from "./helpers/get-access-token.js";
3+
export { Auth0Provider } from "./providers/auth0-provider.js";

src/client/providers/auth0-provider.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import React from "react";
44
import { SWRConfig } from "swr";
55

6-
import { User } from "../../types";
6+
import { User } from "../../types/index.js";
77

88
export function Auth0Provider({
99
user,

src/server/auth-client.test.ts

+8-8
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
1-
import { NextRequest, NextResponse } from "next/server";
1+
import { NextRequest, NextResponse } from "next/server.js";
22
import * as jose from "jose";
33
import * as oauth from "oauth4webapi";
44
import { describe, expect, it, vi } from "vitest";
55

6-
import { generateSecret } from "../test/utils";
7-
import { SessionData } from "../types";
8-
import { AuthClient } from "./auth-client";
9-
import { decrypt, encrypt } from "./cookies";
10-
import { StatefulSessionStore } from "./session/stateful-session-store";
11-
import { StatelessSessionStore } from "./session/stateless-session-store";
12-
import { TransactionState, TransactionStore } from "./transaction-store";
6+
import { generateSecret } from "../test/utils.js";
7+
import { SessionData } from "../types/index.js";
8+
import { AuthClient } from "./auth-client.js";
9+
import { decrypt, encrypt } from "./cookies.js";
10+
import { StatefulSessionStore } from "./session/stateful-session-store.js";
11+
import { StatelessSessionStore } from "./session/stateless-session-store.js";
12+
import { TransactionState, TransactionStore } from "./transaction-store.js";
1313

1414
describe("Authentication Client", async () => {
1515
const DEFAULT = {

src/server/auth-client.ts

+9-9
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import { NextResponse, type NextRequest } from "next/server";
1+
import { NextResponse, type NextRequest } from "next/server.js";
22
import * as jose from "jose";
33
import * as oauth from "oauth4webapi";
44

5-
import packageJson from "../../package.json";
5+
import packageJson from "../../package.json" with { type: "json" };
66
import {
77
AccessTokenError,
88
AccessTokenErrorCode,
@@ -16,7 +16,7 @@ import {
1616
MissingStateError,
1717
OAuth2Error,
1818
SdkError
19-
} from "../errors";
19+
} from "../errors/index.js";
2020
import {
2121
AuthorizationParameters,
2222
ConnectionTokenSet,
@@ -25,16 +25,16 @@ import {
2525
SessionData,
2626
StartInteractiveLoginOptions,
2727
TokenSet
28-
} from "../types";
28+
} from "../types/index.js";
2929
import {
3030
ensureNoLeadingSlash,
3131
ensureTrailingSlash,
3232
removeTrailingSlash
33-
} from "../utils/pathUtils";
34-
import { toSafeRedirect } from "../utils/url-helpers";
35-
import { AbstractSessionStore } from "./session/abstract-session-store";
36-
import { TransactionState, TransactionStore } from "./transaction-store";
37-
import { filterClaims } from "./user";
33+
} from "../utils/pathUtils.js";
34+
import { toSafeRedirect } from "../utils/url-helpers.js";
35+
import { AbstractSessionStore } from "./session/abstract-session-store.js";
36+
import { TransactionState, TransactionStore } from "./transaction-store.js";
37+
import { filterClaims } from "./user.js";
3838

3939
export type BeforeSessionSavedHook = (
4040
session: SessionData,

src/server/chunked-cookies.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import {
77
RequestCookies,
88
ResponseCookies,
99
setChunkedCookie
10-
} from "./cookies";
10+
} from "./cookies.js";
1111

1212
// Create mock implementation for RequestCookies and ResponseCookies
1313
const createMocks = () => {

src/server/client.test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
22

3-
import { ConfigurationError, ConfigurationErrorCode } from "../errors";
4-
import { Auth0Client } from "./client";
3+
import { ConfigurationError, ConfigurationErrorCode } from "../errors/index.js";
4+
import { Auth0Client } from "./client.js";
55

66
describe("Auth0Client", () => {
77
// Store original env vars

src/server/client.ts

+16-16
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import type { IncomingMessage, ServerResponse } from "node:http";
2-
import { cookies } from "next/headers";
3-
import { NextRequest, NextResponse } from "next/server";
4-
import { NextApiRequest, NextApiResponse } from "next/types";
2+
import { cookies } from "next/headers.js";
3+
import { NextRequest, NextResponse } from "next/server.js";
4+
import { NextApiRequest, NextApiResponse } from "next/types.js";
55

66
import {
77
AccessTokenError,
@@ -10,32 +10,32 @@ import {
1010
AccessTokenForConnectionErrorCode,
1111
ConfigurationError,
1212
ConfigurationErrorCode
13-
} from "../errors";
13+
} from "../errors/index.js";
1414
import {
1515
AccessTokenForConnectionOptions,
1616
AuthorizationParameters,
1717
SessionData,
1818
SessionDataStore,
1919
StartInteractiveLoginOptions
20-
} from "../types";
20+
} from "../types/index.js";
2121
import {
2222
AuthClient,
2323
BeforeSessionSavedHook,
2424
OnCallbackHook,
2525
RoutesOptions
26-
} from "./auth-client";
27-
import { RequestCookies, ResponseCookies } from "./cookies";
26+
} from "./auth-client.js";
27+
import { RequestCookies, ResponseCookies } from "./cookies.js";
2828
import {
2929
AbstractSessionStore,
3030
SessionConfiguration,
3131
SessionCookieOptions
32-
} from "./session/abstract-session-store";
33-
import { StatefulSessionStore } from "./session/stateful-session-store";
34-
import { StatelessSessionStore } from "./session/stateless-session-store";
32+
} from "./session/abstract-session-store.js";
33+
import { StatefulSessionStore } from "./session/stateful-session-store.js";
34+
import { StatelessSessionStore } from "./session/stateless-session-store.js";
3535
import {
3636
TransactionCookieOptions,
3737
TransactionStore
38-
} from "./transaction-store";
38+
} from "./transaction-store.js";
3939

4040
export interface Auth0ClientOptions {
4141
// authorization server configuration
@@ -100,7 +100,7 @@ export interface Auth0ClientOptions {
100100
/**
101101
* Configure the session timeouts and whether to use rolling sessions or not.
102102
*
103-
* See [Session configuration](https://github.com/auth0/nextjs-auth0#session-configuration) for additional details.
103+
* See [Session configuration](https://github.com/auth0/nextjs-auth0/blob/main/EXAMPLES.md#session-configuration) for additional details.
104104
*/
105105
session?: SessionConfiguration;
106106

@@ -114,28 +114,28 @@ export interface Auth0ClientOptions {
114114
/**
115115
* A method to manipulate the session before persisting it.
116116
*
117-
* See [beforeSessionSaved](https://github.com/auth0/nextjs-auth0#beforesessionsaved) for additional details
117+
* See [beforeSessionSaved](https://github.com/auth0/nextjs-auth0/blob/main/EXAMPLES.md#beforesessionsaved) for additional details
118118
*/
119119
beforeSessionSaved?: BeforeSessionSavedHook;
120120
/**
121121
* A method to handle errors or manage redirects after attempting to authenticate.
122122
*
123-
* See [onCallback](https://github.com/auth0/nextjs-auth0#oncallback) for additional details
123+
* See [onCallback](https://github.com/auth0/nextjs-auth0/blob/main/EXAMPLES.md#oncallback) for additional details
124124
*/
125125
onCallback?: OnCallbackHook;
126126

127127
// provide a session store to persist sessions in your own data store
128128
/**
129129
* A custom session store implementation used to persist sessions to a data store.
130130
*
131-
* See [Database sessions](https://github.com/auth0/nextjs-auth0#database-sessions) for additional details.
131+
* See [Database sessions](https://github.com/auth0/nextjs-auth0/blob/main/EXAMPLES.md#database-sessions) for additional details.
132132
*/
133133
sessionStore?: SessionDataStore;
134134

135135
/**
136136
* Configure the paths for the authentication routes.
137137
*
138-
* See [Custom routes](https://github.com/auth0/nextjs-auth0#custom-routes) for additional details.
138+
* See [Custom routes](https://github.com/auth0/nextjs-auth0/blob/main/EXAMPLES.md#custom-routes) for additional details.
139139
*/
140140
routes?: RoutesOptions;
141141

src/server/cookies.test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { describe, expect, it } from "vitest";
22

3-
import { generateSecret } from "../test/utils";
4-
import { decrypt, encrypt } from "./cookies";
3+
import { generateSecret } from "../test/utils.js";
4+
import { decrypt, encrypt } from "./cookies.js";
55

66
describe("encrypt/decrypt", async () => {
77
const secret = await generateSecret(32);

src/server/cookies.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import {
33
RequestCookies,
44
ResponseCookies
55
} from "@edge-runtime/cookies";
6-
import hkdf from "@panva/hkdf";
6+
import { hkdf } from "@panva/hkdf";
77
import * as jose from "jose";
88

99
const ENC = "A256GCM";

src/server/index.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
export { Auth0Client } from "./client";
1+
export { Auth0Client } from "./client.js";
22

3-
export { AuthClient } from "./auth-client";
3+
export { AuthClient } from "./auth-client.js";
44

5-
export { TransactionStore } from "./transaction-store";
5+
export { TransactionStore } from "./transaction-store.js";
66

7-
export { AbstractSessionStore } from "./session/abstract-session-store";
7+
export { AbstractSessionStore } from "./session/abstract-session-store.js";

src/server/session/abstract-session-store.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import type { SessionData, SessionDataStore } from "../../types";
1+
import type { SessionData, SessionDataStore } from "../../types/index.js";
22
import {
33
CookieOptions,
44
ReadonlyRequestCookies,
55
RequestCookies,
66
ResponseCookies
7-
} from "../cookies";
7+
} from "../cookies.js";
88

99
export interface SessionCookieOptions {
1010
/**

src/server/session/normalize-session.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { JWTDecryptResult } from "jose";
22

3-
import { SessionData } from "../../types";
3+
import { SessionData } from "../../types/index.js";
44

55
export const LEGACY_COOKIE_NAME = "appSession";
66

src/server/session/stateful-session-store.test.ts

+6-5
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
22

3-
import { generateSecret } from "../../test/utils";
4-
import { SessionData } from "../../types";
3+
import { generateSecret } from "../../test/utils.js";
4+
import { SessionData } from "../../types/index.js";
55
import {
66
decrypt,
77
encrypt,
88
RequestCookies,
99
ResponseCookies,
1010
sign
11-
} from "../cookies";
12-
import { LEGACY_COOKIE_NAME, LegacySessionPayload } from "./normalize-session";
13-
import { StatefulSessionStore } from "./stateful-session-store";
11+
} from "../cookies.js";
12+
import { LEGACY_COOKIE_NAME, LegacySessionPayload } from "./normalize-session.js";
13+
import { StatefulSessionStore } from "./stateful-session-store.js";
14+
1415

1516
describe("Stateful Session Store", async () => {
1617
describe("get", async () => {

src/server/session/stateful-session-store.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
import { SessionData, SessionDataStore } from "../../types";
2-
import * as cookies from "../cookies";
1+
import { SessionData, SessionDataStore } from "../../types/index.js";
2+
import * as cookies from "../cookies.js";
33
import {
44
AbstractSessionStore,
55
SessionCookieOptions
6-
} from "./abstract-session-store";
6+
} from "./abstract-session-store.js";
77
import {
88
LEGACY_COOKIE_NAME,
99
normalizeStatefulSession
10-
} from "./normalize-session";
10+
} from "./normalize-session.js";
1111

1212
// the value of the stateful session cookie containing a unique session ID to identify
1313
// the current session

src/server/session/stateless-session-store.test.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
22

3-
import { generateSecret } from "../../test/utils";
4-
import { SessionData } from "../../types";
5-
import { decrypt, encrypt, RequestCookies, ResponseCookies } from "../cookies";
6-
import { LEGACY_COOKIE_NAME, LegacySession } from "./normalize-session";
7-
import { StatelessSessionStore } from "./stateless-session-store";
3+
import { generateSecret } from "../../test/utils.js";
4+
import { SessionData } from "../../types/index.js";
5+
import { decrypt, encrypt, RequestCookies, ResponseCookies } from "../cookies.js";
6+
import { LEGACY_COOKIE_NAME, LegacySession } from "./normalize-session.js";
7+
import { StatelessSessionStore } from "./stateless-session-store.js";
88

99
describe("Stateless Session Store", async () => {
1010
describe("get", async () => {

src/server/session/stateless-session-store.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
1-
import { CookieOptions, ConnectionTokenSet, SessionData } from "../../types";
1+
import { CookieOptions, ConnectionTokenSet, SessionData } from "../../types/index.js";
22

33
import type { JWTPayload } from "jose";
44

5-
import * as cookies from "../cookies";
5+
import * as cookies from "../cookies.js";
66
import {
77
AbstractSessionStore,
88
SessionCookieOptions
9-
} from "./abstract-session-store";
9+
} from "./abstract-session-store.js";
1010
import {
1111
LEGACY_COOKIE_NAME,
1212
LegacySessionPayload,
1313
normalizeStatelessSession
14-
} from "./normalize-session";
14+
} from "./normalize-session.js";
1515

1616
interface StatelessSessionStoreOptions {
1717
secret: string;

src/server/transaction-store.test.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import * as oauth from "oauth4webapi";
22
import { describe, expect, it } from "vitest";
33

4-
import { generateSecret } from "../test/utils";
5-
import { decrypt, encrypt, RequestCookies, ResponseCookies } from "./cookies";
6-
import { TransactionState, TransactionStore } from "./transaction-store";
4+
import { generateSecret } from "../test/utils.js";
5+
import { decrypt, encrypt, RequestCookies, ResponseCookies } from "./cookies.js";
6+
import { TransactionState, TransactionStore } from "./transaction-store.js";
77

88
describe("Transaction Store", async () => {
99
describe("get", async () => {

0 commit comments

Comments
 (0)