Compare commits

...

3 Commits

Author SHA1 Message Date
GitHub Actions
d73812bce5 chore(release): bump package version(s) [skip ci] 2023-06-01 17:21:47 +00:00
Balázs Orbán
ee36d09a08 chore: drop Legacy from naming everywhere 2023-06-01 19:05:44 +02:00
Balázs Orbán
0cb7fd2e7c feat: introduce @auth/typeorm-adapter (#7706)
BREAKING CHANGE:
If you are coming from the previous adapter, change your `package.json`:

```diff
-  "@next-auth/typeorm-legacy-adapter": "0.0.0",
+  "@auth/typeorm-adapter": "0.0.0",
```

And run `npm install`, `yarn install` or `pnpm install` respectively.

**Note:** This packages is published as ESM-only
2023-06-01 17:52:11 +01:00
34 changed files with 303 additions and 270 deletions

View File

@@ -32,7 +32,7 @@ body:
- "@auth/prisma-adapter"
- "@next-auth/sequelize-adapter"
- "@next-auth/supabase-adapter"
- "@next-auth/typeorm-legacy-adapter"
- "@auth/typeorm-adapter"
- "@next-auth/upstash-redis-adapter"
- "@next-auth/xata-adapter"
validations:

View File

@@ -33,8 +33,8 @@ sequelize:
supabase:
- "@next-auth/supabase-adapter"
typeorm-legacy:
- "@next-auth/typeorm-legacy-adapter"
typeorm:
- "@auth/typeorm-adapter"
upstash-redis:
- "@next-auth/upstash-redis-adapter"

View File

@@ -21,6 +21,6 @@ solidjs: ["packages/frameworks-solid-start/**/*"]
supabase: ["packages/adapter-supabase/**/*"]
svelte: ["packages/frameworks-sveltekit/**/*"]
test: ["**test**/*"]
typeorm-legacy: ["packages/adapter-typeorm-legacy/**/*"]
typeorm: ["packages/adapter-typeorm/**/*"]
upstash-redis: ["packages/adapter-upstash-redis/**/*"]
xata: ["packages/adapter-xata/**/*"]

View File

@@ -29,7 +29,7 @@ on:
- "@auth/prisma-adapter"
- "@auth/sequelize-adapter"
- "@auth/supabase-adapter"
- "@auth/typeorm-legacy-adapter"
- "@auth/typeorm-adapter"
- "@auth/upstash-redis-adapter"
- "@auth/xata-adapter"
- "next-auth"
@@ -52,7 +52,7 @@ on:
- "adapter-prisma"
- "adapter-sequelize"
- "adapter-supabase"
- "adapter-typeorm-legacy"
- "adapter-typeorm"
- "adapter-upstash-redis"
- "adapter-xata"
- "next-auth"

View File

@@ -17,7 +17,7 @@
"@next-auth/fauna-adapter": "workspace:*",
"@auth/prisma-adapter": "workspace:*",
"@next-auth/supabase-adapter": "workspace:*",
"@next-auth/typeorm-legacy-adapter": "workspace:*",
"@auth/typeorm-adapter": "workspace:*",
"@prisma/client": "^3",
"@supabase/supabase-js": "^2.0.5",
"faunadb": "^4",

View File

@@ -51,8 +51,8 @@ import WorkOS from "next-auth/providers/workos"
// const adapter = FaunaAdapter(client)
// // TypeORM
// import { TypeORMLegacyAdapter } from "@next-auth/typeorm-legacy-adapter"
// const adapter = TypeORMLegacyAdapter({
// import { TypeORMAdapter } from "@auth/typeorm-adapter"
// const adapter = TypeORMAdapter({
// type: "sqlite",
// name: "next-auth-test-memory",
// database: "./typeorm/dev.db",

View File

@@ -18,7 +18,7 @@
"@next-auth/fauna-adapter": "workspace:*",
"@auth/prisma-adapter": "workspace:*",
"@next-auth/supabase-adapter": "workspace:*",
"@next-auth/typeorm-legacy-adapter": "workspace:*",
"@auth/typeorm-adapter": "workspace:*",
"@prisma/client": "^3",
"@supabase/supabase-js": "^2.0.5",
"faunadb": "^4",

View File

@@ -55,8 +55,8 @@ import WorkOS from "@auth/core/providers/workos"
// const adapter = FaunaAdapter(client)
// // TypeORM
// import { TypeORMLegacyAdapter } from "@next-auth/typeorm-legacy-adapter"
// const adapter = TypeORMLegacyAdapter({
// import { TypeORMAdapter } from "@auth/typeorm-adapter"
// const adapter = TypeORMAdapter({
// type: "sqlite",
// name: "next-auth-test-memory",
// database: "./typeorm/dev.db",

View File

@@ -273,19 +273,7 @@ const docusaurusConfig = {
typedocAdapter("Neo4j"),
typedocAdapter("PouchDB"),
typedocAdapter("Prisma"),
[
"docusaurus-plugin-typedoc",
{
...typedocConfig,
id: "typeorm",
plugin: [require.resolve("./typedoc-mdn-links")],
watch: process.env.TYPEDOC_WATCH,
entryPoints: [`../packages/adapter-typeorm-legacy/src/index.ts`],
tsconfig: `../packages/adapter-typeorm-legacy/tsconfig.json`,
out: `reference/adapter/typeorm`,
sidebar: { indexLabel: "TypeORM" },
},
],
typedocAdapter("TypeORM"),
typedocAdapter("Sequelize"),
typedocAdapter("Supabase"),
typedocAdapter("Upstash Redis"),

View File

@@ -1,12 +0,0 @@
{
"extends": "@next-auth/tsconfig/tsconfig.adapters.json",
"compilerOptions": {
"rootDir": "src",
"outDir": "dist",
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"stripInternal": true
},
"include": ["."],
"exclude": ["tests", "dist", "jest.config.js"]
}

View File

@@ -8,14 +8,14 @@
</a>
<h3 align="center"><b>TypeORM Adapter</b> - NextAuth.js / Auth.js</a></h3>
<p align="center" style="align: center;">
<a href="https://npm.im/@next-auth/typeorm-legacy-adapter">
<a href="https://npm.im/@auth/typeorm-adapter">
<img src="https://img.shields.io/badge/TypeScript-blue?style=flat-square" alt="TypeScript" />
</a>
<a href="https://npm.im/@next-auth/typeorm-legacy-adapter">
<img alt="npm" src="https://img.shields.io/npm/v/@next-auth/typeorm-legacy-adapter?color=green&label=@next-auth/typeorm-legacy-adapter&style=flat-square">
<a href="https://npm.im/@auth/typeorm-adapter">
<img alt="npm" src="https://img.shields.io/npm/v/@auth/typeorm-adapter?color=green&label=@auth/typeorm-adapter&style=flat-square">
</a>
<a href="https://www.npmtrends.com/@next-auth/typeorm-legacy-adapter">
<img src="https://img.shields.io/npm/dm/@next-auth/typeorm-legacy-adapter?label=%20downloads&style=flat-square" alt="Downloads" />
<a href="https://www.npmtrends.com/@auth/typeorm-adapter">
<img src="https://img.shields.io/npm/dm/@auth/typeorm-adapter?label=%20downloads&style=flat-square" alt="Downloads" />
</a>
<a href="https://github.com/nextauthjs/next-auth/stargazers">
<img src="https://img.shields.io/github/stars/nextauthjs/next-auth?style=flat-square" alt="Github Stars" />

View File

@@ -1,8 +1,8 @@
{
"name": "@next-auth/typeorm-legacy-adapter",
"version": "2.0.2",
"description": "TypeORM (legacy) adapter for next-auth.",
"homepage": "https://authjs.dev",
"name": "@auth/typeorm-adapter",
"version": "1.0.0",
"description": "TypeORM adapter for Auth.js.",
"homepage": "https://authjs.dev/reference/adapter/typeorm",
"repository": "https://github.com/nextauthjs/next-auth",
"bugs": {
"url": "https://github.com/nextauthjs/next-auth/issues"
@@ -11,11 +11,19 @@
"contributors": [
"Balázs Orbán <info@balazsorban.com>"
],
"main": "dist/index.js",
"type": "module",
"types": "./index.d.ts",
"files": [
"README.md",
"dist"
"*.js",
"*.d.ts*",
"src"
],
"exports": {
".": {
"types": "./index.d.ts",
"import": "./index.js"
}
},
"license": "ISC",
"keywords": [
"next-auth",
@@ -38,26 +46,27 @@
"test:containers": "tests/test.sh",
"test": "tests/test.sh"
},
"dependencies": {
"@auth/core": "workspace:*"
},
"devDependencies": {
"@next-auth/adapter-test": "workspace:*",
"@next-auth/tsconfig": "workspace:*",
"jest": "^27.4.3",
"mssql": "^7.2.1",
"mysql": "^2.18.1",
"next-auth": "workspace:*",
"pg": "^8.7.3",
"sqlite3": "^5.0.8",
"typeorm": "0.3.7",
"typeorm": "0.3.15",
"typeorm-naming-strategies": "^4.1.0",
"typescript": "^4.7.4"
},
"peerDependencies": {
"mssql": "^6.2.1 || 7",
"mysql": "^2.18.1",
"next-auth": "^4",
"pg": "^8.2.1",
"sqlite3": "^5.0.2",
"typeorm": "0.3.7"
"typeorm": "^0.3.7"
},
"peerDependenciesMeta": {
"mysql": {

View File

@@ -9,17 +9,17 @@
* ## Installation
*
* ```bash npm2yarn2pnpm
* npm install next-auth @next-auth/typeorm-legacy-adapter typeorm
* npm install @auth/typeorm-adapter typeorm
* ```
*
* @module @next-auth/typeorm-legacy-adapter
* @module @auth/typeorm-adapter
*/
import type {
Adapter,
AdapterUser,
AdapterAccount,
AdapterSession,
} from "next-auth/adapters"
} from "@auth/core/adapters"
import { DataSourceOptions, DataSource, EntityManager } from "typeorm"
import * as defaultEntities from "./entities"
import { parseDataSourceConfig, updateConnectionEntities } from "./utils"
@@ -29,7 +29,7 @@ export const entities = defaultEntities
export type Entities = typeof entities
/** This is the interface for the TypeORM adapter options. */
export interface TypeORMLegacyAdapterOptions {
export interface TypeORMAdapterOptions {
/**
* The {@link https://orkhan.gitbook.io/typeorm/docs/entities TypeORM entities} to create the database tables from.
*/
@@ -70,16 +70,16 @@ export async function getManager(options: {
*
* ```javascript title="pages/api/auth/[...nextauth].js"
* import NextAuth from "next-auth"
* import { TypeORMLegacyAdapter } from "@next-auth/typeorm-legacy-adapter"
* import { TypeORMAdapter } from "@auth/typeorm-adapter"
*
*
* export default NextAuth({
* adapter: TypeORMLegacyAdapter("yourconnectionstring"),
* adapter: TypeORMAdapter("yourconnectionstring"),
* ...
* })
* ```
*
* `TypeORMLegacyAdapter` takes either a connection string, or a [`ConnectionOptions`](https://github.com/typeorm/typeorm/blob/master/docs/connection-options.md) object as its first parameter.
* `TypeORMAdapter` takes either a connection string, or a [`ConnectionOptions`](https://github.com/typeorm/typeorm/blob/master/docs/connection-options.md) object as its first parameter.
*
* ## Advanced usage
*
@@ -93,7 +93,7 @@ export async function getManager(options: {
*
* 1. Create a file containing your modified entities:
*
* (The file below is based on the [default entities](https://github.com/nextauthjs/next-auth/blob/main/packages/adapter-typeorm-legacy/src/entities.ts))
* (The file below is based on the [default entities](https://github.com/nextauthjs/next-auth/blob/main/packages/adapter-typeorm/src/entities.ts))
*
* ```diff title="lib/entities.ts"
* import {
@@ -231,15 +231,15 @@ export async function getManager(options: {
* }
* ```
*
* 2. Pass them to `TypeORMLegacyAdapter`
* 2. Pass them to `TypeORMAdapter`
*
* ```javascript title="pages/api/auth/[...nextauth].js"
* import NextAuth from "next-auth"
* import { TypeORMLegacyAdapter } from "@next-auth/typeorm-legacy-adapter"
* import { TypeORMAdapter } from "@auth/typeorm-adapter"
* import * as entities from "lib/entities"
*
* export default NextAuth({
* adapter: TypeORMLegacyAdapter("yourconnectionstring", { entities }),
* adapter: TypeORMAdapter("yourconnectionstring", { entities }),
* ...
* })
* ```
@@ -260,7 +260,7 @@ export async function getManager(options: {
*
* ```javascript title="pages/api/auth/[...nextauth].js"
* import NextAuth from "next-auth"
* import { TypeORMLegacyAdapter } from "@next-auth/typeorm-legacy-adapter"
* import { TypeORMAdapter } from "@auth/typeorm-adapter"
* import { SnakeNamingStrategy } from 'typeorm-naming-strategies'
* import { ConnectionOptions } from "typeorm"
*
@@ -275,14 +275,14 @@ export async function getManager(options: {
* }
*
* export default NextAuth({
* adapter: TypeORMLegacyAdapter(connection),
* adapter: TypeORMAdapter(connection),
* ...
* })
* ```
*/
export function TypeORMLegacyAdapter(
export function TypeORMAdapter(
dataSource: string | DataSourceOptions,
options?: TypeORMLegacyAdapterOptions
options?: TypeORMAdapterOptions
): Adapter {
const entities = options?.entities
const c = {
@@ -328,8 +328,10 @@ export function TypeORMLegacyAdapter(
},
async getUserByAccount(provider_providerAccountId) {
const m = await getManager(c)
// @ts-expect-error
const account = await m.findOne<AdapterAccount & { user: AdapterUser }>(
"AccountEntity",
// @ts-expect-error
{ where: provider_providerAccountId, relations: ["user"] }
)
if (!account) return null

View File

@@ -1,5 +1,5 @@
import { runBasicTests } from "../../../adapter-test"
import { TypeORMLegacyAdapter } from "../../src"
import { TypeORMAdapter } from "../../src"
import * as entities from "../custom-entities"
import { db } from "../helpers"
import { SnakeNamingStrategy } from "typeorm-naming-strategies"
@@ -18,7 +18,7 @@ const mysqlConfig: ConnectionOptions = {
}
runBasicTests({
adapter: TypeORMLegacyAdapter(mysqlConfig, {
adapter: TypeORMAdapter(mysqlConfig, {
entities,
}),
db: db(mysqlConfig, entities),

View File

@@ -1,5 +1,5 @@
import { runBasicTests } from "../../../adapter-test"
import { TypeORMLegacyAdapter } from "../../src"
import { TypeORMAdapter } from "../../src"
import { db } from "../helpers"
const mysqlConfig = {
@@ -13,6 +13,6 @@ const mysqlConfig = {
}
runBasicTests({
adapter: TypeORMLegacyAdapter(mysqlConfig),
adapter: TypeORMAdapter(mysqlConfig),
db: db(mysqlConfig),
})

View File

@@ -1,5 +1,5 @@
import { runBasicTests } from "../../../adapter-test"
import { TypeORMLegacyAdapter } from "../../src"
import { TypeORMAdapter } from "../../src"
import * as entities from "../custom-entities"
import { db } from "../helpers"
@@ -7,7 +7,7 @@ const postgresConfig =
"postgres://nextauth:password@localhost:5432/nextauth?synchronize=true"
runBasicTests({
adapter: TypeORMLegacyAdapter(postgresConfig, {
adapter: TypeORMAdapter(postgresConfig, {
entities,
}),
db: db(postgresConfig, entities),

View File

@@ -1,11 +1,11 @@
import { runBasicTests } from "../../../adapter-test"
import { TypeORMLegacyAdapter } from "../../src"
import { TypeORMAdapter } from "../../src"
import { db } from "../helpers"
const postgresConfig =
"postgres://nextauth:password@localhost:5432/nextauth?synchronize=true"
runBasicTests({
adapter: TypeORMLegacyAdapter(postgresConfig),
adapter: TypeORMAdapter(postgresConfig),
db: db(postgresConfig),
})

View File

@@ -1,5 +1,5 @@
import { runBasicTests } from "../../../adapter-test"
import { TypeORMLegacyAdapter } from "../../src"
import { TypeORMAdapter } from "../../src"
import * as entities from "../custom-entities"
import { db } from "../helpers"
@@ -11,7 +11,7 @@ const sqliteConfig = {
}
runBasicTests({
adapter: TypeORMLegacyAdapter(sqliteConfig, {
adapter: TypeORMAdapter(sqliteConfig, {
entities,
}),
db: db(sqliteConfig, entities),

View File

@@ -1,5 +1,5 @@
import { runBasicTests } from "../../../adapter-test"
import { TypeORMLegacyAdapter } from "../../src"
import { TypeORMAdapter } from "../../src"
import { db } from "../helpers"
import { SnakeNamingStrategy } from "typeorm-naming-strategies"
@@ -14,6 +14,6 @@ const sqliteConfig: DataSourceOptions = {
}
runBasicTests({
adapter: TypeORMLegacyAdapter(sqliteConfig),
adapter: TypeORMAdapter(sqliteConfig),
db: db(sqliteConfig),
})

View File

@@ -0,0 +1,27 @@
{
"extends": "@next-auth/tsconfig/tsconfig.base.json",
"compilerOptions": {
"allowJs": true,
"baseUrl": ".",
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"isolatedModules": true,
"target": "ES2020",
"module": "ESNext",
"moduleResolution": "node",
"outDir": ".",
"rootDir": "src",
"skipDefaultLibCheck": true,
"strictNullChecks": true,
"stripInternal": true,
"declarationMap": true,
"declaration": true
},
"include": [
"src/**/*"
],
"exclude": [
"*.js",
"*.d.ts",
]
}

395
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@@ -65,7 +65,7 @@
"@next-auth/pouchdb-adapter#build",
"@next-auth/sequelize-adapter#build",
"@next-auth/supabase-adapter#build",
"@next-auth/typeorm-legacy-adapter#build",
"@auth/typeorm-adapter#build",
"@next-auth/upstash-redis-adapter#build",
"@next-auth/xata-adapter#build",
"^build",
@@ -88,7 +88,7 @@
"@next-auth/pouchdb-adapter#build",
"@next-auth/sequelize-adapter#build",
"@next-auth/supabase-adapter#build",
"@next-auth/typeorm-legacy-adapter#build",
"@auth/typeorm-adapter#build",
"@next-auth/upstash-redis-adapter#build",
"@next-auth/xata-adapter#build",
"^build",