better-auth 1.5.5 → 1.5.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/dist/api/index.d.mts +6 -10
  2. package/dist/api/index.mjs +19 -4
  3. package/dist/api/index.mjs.map +1 -1
  4. package/dist/api/middlewares/origin-check.mjs +17 -8
  5. package/dist/api/middlewares/origin-check.mjs.map +1 -1
  6. package/dist/api/routes/account.d.mts +1 -1
  7. package/dist/api/routes/email-verification.d.mts +0 -1
  8. package/dist/api/routes/session.d.mts +0 -1
  9. package/dist/api/routes/sign-in.d.mts +2 -2
  10. package/dist/api/routes/sign-up.d.mts +0 -1
  11. package/dist/api/routes/update-session.d.mts +0 -1
  12. package/dist/api/routes/update-user.d.mts +0 -1
  13. package/dist/api/to-auth-endpoints.mjs +49 -12
  14. package/dist/api/to-auth-endpoints.mjs.map +1 -1
  15. package/dist/auth/full.d.mts +0 -1
  16. package/dist/auth/minimal.d.mts +0 -1
  17. package/dist/client/index.d.mts +0 -2
  18. package/dist/client/path-to-object.d.mts +3 -1
  19. package/dist/client/session-refresh.d.mts +0 -1
  20. package/dist/client/session-refresh.mjs +12 -4
  21. package/dist/client/session-refresh.mjs.map +1 -1
  22. package/dist/client/types.d.mts +0 -1
  23. package/dist/context/create-context.mjs +4 -1
  24. package/dist/context/create-context.mjs.map +1 -1
  25. package/dist/context/helpers.mjs +10 -4
  26. package/dist/context/helpers.mjs.map +1 -1
  27. package/dist/cookies/index.d.mts +0 -1
  28. package/dist/cookies/session-store.d.mts +0 -2
  29. package/dist/db/index.d.mts +2 -2
  30. package/dist/db/internal-adapter.d.mts +2 -1
  31. package/dist/db/internal-adapter.mjs +1 -1
  32. package/dist/db/internal-adapter.mjs.map +1 -1
  33. package/dist/db/schema.d.mts +0 -1
  34. package/dist/db/with-hooks.d.mts +6 -2
  35. package/dist/db/with-hooks.mjs +72 -31
  36. package/dist/db/with-hooks.mjs.map +1 -1
  37. package/dist/index.d.mts +0 -2
  38. package/dist/integrations/node.d.mts +0 -1
  39. package/dist/oauth2/link-account.d.mts +0 -1
  40. package/dist/plugins/admin/access/statement.d.mts +0 -2
  41. package/dist/plugins/admin/admin.d.mts +0 -1
  42. package/dist/plugins/admin/client.d.mts +0 -2
  43. package/dist/plugins/admin/types.d.mts +0 -2
  44. package/dist/plugins/anonymous/types.d.mts +0 -1
  45. package/dist/plugins/email-otp/index.mjs +2 -1
  46. package/dist/plugins/email-otp/index.mjs.map +1 -1
  47. package/dist/plugins/email-otp/otp-token.mjs +31 -2
  48. package/dist/plugins/email-otp/otp-token.mjs.map +1 -1
  49. package/dist/plugins/email-otp/routes.mjs +60 -59
  50. package/dist/plugins/email-otp/routes.mjs.map +1 -1
  51. package/dist/plugins/email-otp/types.d.mts +12 -0
  52. package/dist/plugins/email-otp/utils.mjs +4 -1
  53. package/dist/plugins/email-otp/utils.mjs.map +1 -1
  54. package/dist/plugins/generic-oauth/client.d.mts +0 -1
  55. package/dist/plugins/generic-oauth/index.d.mts +0 -1
  56. package/dist/plugins/index.d.mts +0 -3
  57. package/dist/plugins/jwt/types.d.mts +0 -1
  58. package/dist/plugins/magic-link/index.d.mts +2 -0
  59. package/dist/plugins/magic-link/index.mjs +5 -3
  60. package/dist/plugins/magic-link/index.mjs.map +1 -1
  61. package/dist/plugins/mcp/index.d.mts +0 -1
  62. package/dist/plugins/oidc-provider/index.d.mts +0 -1
  63. package/dist/plugins/oidc-provider/types.d.mts +0 -1
  64. package/dist/plugins/one-time-token/index.d.mts +0 -1
  65. package/dist/plugins/organization/access/statement.d.mts +0 -2
  66. package/dist/plugins/organization/adapter.d.mts +0 -2
  67. package/dist/plugins/organization/adapter.mjs +2 -2
  68. package/dist/plugins/organization/adapter.mjs.map +1 -1
  69. package/dist/plugins/organization/client.d.mts +0 -5
  70. package/dist/plugins/organization/organization.d.mts +0 -2
  71. package/dist/plugins/organization/permission.d.mts +0 -1
  72. package/dist/plugins/organization/routes/crud-access-control.d.mts +0 -2
  73. package/dist/plugins/organization/routes/crud-invites.d.mts +0 -3
  74. package/dist/plugins/organization/routes/crud-members.d.mts +0 -3
  75. package/dist/plugins/organization/routes/crud-org.d.mts +0 -3
  76. package/dist/plugins/organization/routes/crud-team.d.mts +2 -3
  77. package/dist/plugins/organization/routes/crud-team.mjs +18 -14
  78. package/dist/plugins/organization/routes/crud-team.mjs.map +1 -1
  79. package/dist/plugins/organization/schema.d.mts +0 -1
  80. package/dist/plugins/organization/types.d.mts +0 -2
  81. package/dist/plugins/phone-number/types.d.mts +0 -1
  82. package/dist/plugins/siwe/index.d.mts +0 -1
  83. package/dist/plugins/test-utils/types.d.mts +0 -2
  84. package/dist/plugins/two-factor/client.d.mts +7 -0
  85. package/dist/plugins/two-factor/client.mjs +5 -1
  86. package/dist/plugins/two-factor/client.mjs.map +1 -1
  87. package/dist/plugins/two-factor/types.d.mts +0 -1
  88. package/dist/test-utils/test-instance.d.mts +18 -22
  89. package/dist/types/index.d.mts +0 -1
  90. package/package.json +13 -10
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.mjs","names":[],"sources":["../../../src/plugins/organization/adapter.ts"],"sourcesContent":["import type { AuthContext, GenericEndpointContext } from \"@better-auth/core\";\nimport { getCurrentAdapter } from \"@better-auth/core/context\";\nimport type { WhereOperator } from \"@better-auth/core/db/adapter\";\nimport { BetterAuthError } from \"@better-auth/core/error\";\nimport { filterOutputFields } from \"@better-auth/core/utils/db\";\nimport { parseJSON } from \"../../client/parser\";\nimport type { InferAdditionalFieldsFromPluginOptions } from \"../../db\";\nimport type { Session, User } from \"../../types\";\nimport { getDate } from \"../../utils/date\";\nimport type {\n\tInferInvitation,\n\tInferMember,\n\tInferOrganization,\n\tInferTeam,\n\tInvitationInput,\n\tMember,\n\tMemberInput,\n\tOrganizationInput,\n\tTeam,\n\tTeamInput,\n\tTeamMember,\n} from \"./schema\";\nimport type { OrganizationOptions } from \"./types\";\n\nexport const getOrgAdapter = <O extends OrganizationOptions>(\n\tcontext: AuthContext,\n\toptions?: O | undefined,\n) => {\n\tconst baseAdapter = context.adapter;\n\tconst orgAdditionalFields = options?.schema?.organization?.additionalFields;\n\tconst memberAdditionalFields = options?.schema?.member?.additionalFields;\n\tconst invitationAdditionalFields =\n\t\toptions?.schema?.invitation?.additionalFields;\n\tconst teamAdditionalFields = options?.schema?.team?.additionalFields;\n\treturn {\n\t\tfindOrganizationBySlug: async (\n\t\t\tslug: string,\n\t\t): Promise<InferOrganization<O> | null> => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst organization = await adapter.findOne<InferOrganization<O, false>>({\n\t\t\t\tmodel: \"organization\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"slug\",\n\t\t\t\t\t\tvalue: slug,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t\treturn filterOutputFields(\n\t\t\t\torganization,\n\t\t\t\torgAdditionalFields,\n\t\t\t) as InferOrganization<O> | null;\n\t\t},\n\t\tcreateOrganization: async (data: {\n\t\t\torganization: OrganizationInput &\n\t\t\t\t// This represents the additional fields from the plugin options\n\t\t\t\tRecord<string, any>;\n\t\t}): Promise<InferOrganization<O>> => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst organization = await adapter.create<\n\t\t\t\tOrganizationInput,\n\t\t\t\tInferOrganization<O, false>\n\t\t\t>({\n\t\t\t\tmodel: \"organization\",\n\t\t\t\tdata: {\n\t\t\t\t\t...data.organization,\n\t\t\t\t\tmetadata: data.organization.metadata\n\t\t\t\t\t\t? JSON.stringify(data.organization.metadata)\n\t\t\t\t\t\t: undefined,\n\t\t\t\t},\n\t\t\t\tforceAllowId: true,\n\t\t\t});\n\n\t\t\tconst result = {\n\t\t\t\t...organization,\n\t\t\t\tmetadata:\n\t\t\t\t\torganization.metadata && typeof organization.metadata === \"string\"\n\t\t\t\t\t\t? JSON.parse(organization.metadata)\n\t\t\t\t\t\t: undefined,\n\t\t\t};\n\t\t\treturn filterOutputFields(\n\t\t\t\tresult,\n\t\t\t\torgAdditionalFields,\n\t\t\t) as InferOrganization<O>;\n\t\t},\n\t\tfindMemberByEmail: async (data: {\n\t\t\temail: string;\n\t\t\torganizationId: string;\n\t\t}) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst user = await adapter.findOne<User>({\n\t\t\t\tmodel: \"user\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"email\",\n\t\t\t\t\t\tvalue: data.email.toLowerCase(),\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t\tif (!user) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tconst member = await adapter.findOne<InferMember<O, false>>({\n\t\t\t\tmodel: \"member\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"organizationId\",\n\t\t\t\t\t\tvalue: data.organizationId,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"userId\",\n\t\t\t\t\t\tvalue: user.id,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t\tif (!member) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t...member,\n\t\t\t\tuser: {\n\t\t\t\t\tid: user.id,\n\t\t\t\t\tname: user.name,\n\t\t\t\t\temail: user.email,\n\t\t\t\t\timage: user.image,\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t\tlistMembers: async (data: {\n\t\t\torganizationId?: string | undefined;\n\t\t\tlimit?: number | undefined;\n\t\t\toffset?: number | undefined;\n\t\t\tsortBy?: string | undefined;\n\t\t\tsortOrder?: (\"asc\" | \"desc\") | undefined;\n\t\t\tfilter?:\n\t\t\t\t| {\n\t\t\t\t\t\tfield: string;\n\t\t\t\t\t\toperator?: WhereOperator;\n\t\t\t\t\t\tvalue: any;\n\t\t\t\t }\n\t\t\t\t| undefined;\n\t\t}) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst members = await Promise.all([\n\t\t\t\tadapter.findMany<InferMember<O, false>>({\n\t\t\t\t\tmodel: \"member\",\n\t\t\t\t\twhere: [\n\t\t\t\t\t\t{ field: \"organizationId\", value: data.organizationId },\n\t\t\t\t\t\t...(data.filter?.field\n\t\t\t\t\t\t\t? [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tfield: data.filter?.field,\n\t\t\t\t\t\t\t\t\t\tvalue: data.filter?.value,\n\t\t\t\t\t\t\t\t\t\t...(data.filter.operator\n\t\t\t\t\t\t\t\t\t\t\t? { operator: data.filter.operator }\n\t\t\t\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t: []),\n\t\t\t\t\t],\n\t\t\t\t\tlimit:\n\t\t\t\t\t\tdata.limit ||\n\t\t\t\t\t\t(typeof options?.membershipLimit === \"number\"\n\t\t\t\t\t\t\t? options.membershipLimit\n\t\t\t\t\t\t\t: 100) ||\n\t\t\t\t\t\t100,\n\t\t\t\t\toffset: data.offset || 0,\n\t\t\t\t\tsortBy: data.sortBy\n\t\t\t\t\t\t? { field: data.sortBy, direction: data.sortOrder || \"asc\" }\n\t\t\t\t\t\t: undefined,\n\t\t\t\t}),\n\t\t\t\tadapter.count({\n\t\t\t\t\tmodel: \"member\",\n\t\t\t\t\twhere: [\n\t\t\t\t\t\t{ field: \"organizationId\", value: data.organizationId },\n\t\t\t\t\t\t...(data.filter?.field\n\t\t\t\t\t\t\t? [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tfield: data.filter?.field,\n\t\t\t\t\t\t\t\t\t\tvalue: data.filter?.value,\n\t\t\t\t\t\t\t\t\t\t...(data.filter.operator\n\t\t\t\t\t\t\t\t\t\t\t? { operator: data.filter.operator }\n\t\t\t\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t: []),\n\t\t\t\t\t],\n\t\t\t\t}),\n\t\t\t]);\n\t\t\tconst users = await adapter.findMany<User>({\n\t\t\t\tmodel: \"user\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"id\",\n\t\t\t\t\t\tvalue: members[0].map((member) => member.userId),\n\t\t\t\t\t\toperator: \"in\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t\treturn {\n\t\t\t\tmembers: members[0].map((member) => {\n\t\t\t\t\tconst user = users.find((user) => user.id === member.userId);\n\t\t\t\t\tif (!user) {\n\t\t\t\t\t\tthrow new BetterAuthError(\n\t\t\t\t\t\t\t\"Unexpected error: User not found for member\",\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...member,\n\t\t\t\t\t\tuser: {\n\t\t\t\t\t\t\tid: user.id,\n\t\t\t\t\t\t\tname: user.name,\n\t\t\t\t\t\t\temail: user.email,\n\t\t\t\t\t\t\timage: user.image,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t\ttotal: members[1],\n\t\t\t};\n\t\t},\n\t\tfindMemberByOrgId: async (data: {\n\t\t\tuserId: string;\n\t\t\torganizationId: string;\n\t\t}) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst result = await adapter.findOne<\n\t\t\t\tInferMember<O, false> & { user: User }\n\t\t\t>({\n\t\t\t\tmodel: \"member\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"userId\",\n\t\t\t\t\t\tvalue: data.userId,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"organizationId\",\n\t\t\t\t\t\tvalue: data.organizationId,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tjoin: {\n\t\t\t\t\tuser: true,\n\t\t\t\t},\n\t\t\t});\n\t\t\tif (!result || !result.user) return null;\n\t\t\tconst { user, ...member } = result;\n\n\t\t\treturn {\n\t\t\t\t...member,\n\t\t\t\tuser: {\n\t\t\t\t\tid: user.id,\n\t\t\t\t\tname: user.name,\n\t\t\t\t\temail: user.email,\n\t\t\t\t\timage: user.image,\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t\tfindMemberById: async (memberId: string) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst result = await adapter.findOne<\n\t\t\t\tInferMember<O, false> & { user: User }\n\t\t\t>({\n\t\t\t\tmodel: \"member\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"id\",\n\t\t\t\t\t\tvalue: memberId,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tjoin: {\n\t\t\t\t\tuser: true,\n\t\t\t\t},\n\t\t\t});\n\t\t\tif (!result) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tconst { user, ...member } = result;\n\n\t\t\treturn {\n\t\t\t\t...(member as unknown as InferMember<O, false>),\n\t\t\t\tuser: {\n\t\t\t\t\tid: user.id,\n\t\t\t\t\tname: user.name,\n\t\t\t\t\temail: user.email,\n\t\t\t\t\timage: user.image,\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t\tcreateMember: async (\n\t\t\tdata: Omit<MemberInput, \"id\"> &\n\t\t\t\t// Additional fields from the plugin options\n\t\t\t\tRecord<string, any>,\n\t\t) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst member = await adapter.create<\n\t\t\t\ttypeof data,\n\t\t\t\tMember & InferAdditionalFieldsFromPluginOptions<\"member\", O, false>\n\t\t\t>({\n\t\t\t\tmodel: \"member\",\n\t\t\t\tdata: {\n\t\t\t\t\t...data,\n\t\t\t\t\tcreatedAt: new Date(),\n\t\t\t\t},\n\t\t\t});\n\t\t\treturn member;\n\t\t},\n\t\tupdateMember: async (memberId: string, role: string) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst member = await adapter.update<InferMember<O, false>>({\n\t\t\t\tmodel: \"member\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"id\",\n\t\t\t\t\t\tvalue: memberId,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tupdate: {\n\t\t\t\t\trole,\n\t\t\t\t},\n\t\t\t});\n\t\t\treturn member;\n\t\t},\n\t\tdeleteMember: async ({\n\t\t\tmemberId,\n\t\t\torganizationId,\n\t\t\tuserId: _userId,\n\t\t}: {\n\t\t\tmemberId: string;\n\t\t\torganizationId: string;\n\t\t\tuserId?: string;\n\t\t}) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tlet userId: string;\n\t\t\tif (!_userId) {\n\t\t\t\tconst member = await adapter.findOne<Member>({\n\t\t\t\t\tmodel: \"member\",\n\t\t\t\t\twhere: [{ field: \"id\", value: memberId }],\n\t\t\t\t});\n\t\t\t\tif (!member) {\n\t\t\t\t\tthrow new BetterAuthError(\"Member not found\");\n\t\t\t\t}\n\t\t\t\tuserId = member.userId;\n\t\t\t} else {\n\t\t\t\tuserId = _userId;\n\t\t\t}\n\t\t\tconst member = await adapter.delete<InferMember<O, false>>({\n\t\t\t\tmodel: \"member\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"id\",\n\t\t\t\t\t\tvalue: memberId,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t\t// remove member from all teams they're part of\n\t\t\tif (options?.teams?.enabled) {\n\t\t\t\tconst teams = await adapter.findMany<Team>({\n\t\t\t\t\tmodel: \"team\",\n\t\t\t\t\twhere: [{ field: \"organizationId\", value: organizationId }],\n\t\t\t\t});\n\t\t\t\tawait Promise.all(\n\t\t\t\t\tteams.map((team) =>\n\t\t\t\t\t\tadapter.deleteMany({\n\t\t\t\t\t\t\tmodel: \"teamMember\",\n\t\t\t\t\t\t\twhere: [\n\t\t\t\t\t\t\t\t{ field: \"teamId\", value: team.id },\n\t\t\t\t\t\t\t\t{ field: \"userId\", value: userId },\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t}),\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn member;\n\t\t},\n\t\tupdateOrganization: async (\n\t\t\torganizationId: string,\n\t\t\tdata: Partial<OrganizationInput>,\n\t\t): Promise<InferOrganization<O> | null> => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst organization = await adapter.update<InferOrganization<O, false>>({\n\t\t\t\tmodel: \"organization\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"id\",\n\t\t\t\t\t\tvalue: organizationId,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tupdate: {\n\t\t\t\t\t...data,\n\t\t\t\t\tmetadata:\n\t\t\t\t\t\ttypeof data.metadata === \"object\"\n\t\t\t\t\t\t\t? JSON.stringify(data.metadata)\n\t\t\t\t\t\t\t: data.metadata,\n\t\t\t\t},\n\t\t\t});\n\t\t\tif (!organization) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tconst result = {\n\t\t\t\t...organization,\n\t\t\t\tmetadata: organization.metadata\n\t\t\t\t\t? parseJSON<Record<string, any>>(organization.metadata)\n\t\t\t\t\t: undefined,\n\t\t\t};\n\t\t\treturn filterOutputFields(\n\t\t\t\tresult,\n\t\t\t\torgAdditionalFields,\n\t\t\t) as InferOrganization<O>;\n\t\t},\n\t\tdeleteOrganization: async (organizationId: string) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tawait adapter.deleteMany({\n\t\t\t\tmodel: \"member\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"organizationId\",\n\t\t\t\t\t\tvalue: organizationId,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t\tawait adapter.deleteMany({\n\t\t\t\tmodel: \"invitation\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"organizationId\",\n\t\t\t\t\t\tvalue: organizationId,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t\tawait adapter.delete<InferOrganization<O, false>>({\n\t\t\t\tmodel: \"organization\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"id\",\n\t\t\t\t\t\tvalue: organizationId,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t\treturn organizationId;\n\t\t},\n\t\tsetActiveOrganization: async (\n\t\t\tsessionToken: string,\n\t\t\torganizationId: string | null,\n\t\t\tctx: GenericEndpointContext,\n\t\t) => {\n\t\t\tconst session = await context.internalAdapter.updateSession(\n\t\t\t\tsessionToken,\n\t\t\t\t{\n\t\t\t\t\tactiveOrganizationId: organizationId,\n\t\t\t\t},\n\t\t\t);\n\t\t\treturn session as Session;\n\t\t},\n\t\tfindOrganizationById: async (\n\t\t\torganizationId: string,\n\t\t): Promise<InferOrganization<O> | null> => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst organization = await adapter.findOne<InferOrganization<O, false>>({\n\t\t\t\tmodel: \"organization\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"id\",\n\t\t\t\t\t\tvalue: organizationId,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t\treturn filterOutputFields(\n\t\t\t\torganization,\n\t\t\t\torgAdditionalFields,\n\t\t\t) as InferOrganization<O> | null;\n\t\t},\n\t\tcheckMembership: async ({\n\t\t\tuserId,\n\t\t\torganizationId,\n\t\t}: {\n\t\t\tuserId: string;\n\t\t\torganizationId: string;\n\t\t}) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst member = await adapter.findOne<InferMember<O, false>>({\n\t\t\t\tmodel: \"member\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"userId\",\n\t\t\t\t\t\tvalue: userId,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"organizationId\",\n\t\t\t\t\t\tvalue: organizationId,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t\treturn member;\n\t\t},\n\t\t/**\n\t\t * @requires db\n\t\t */\n\t\tfindFullOrganization: async ({\n\t\t\torganizationId,\n\t\t\tisSlug,\n\t\t\tincludeTeams,\n\t\t\tmembersLimit,\n\t\t}: {\n\t\t\torganizationId: string;\n\t\t\tisSlug?: boolean | undefined;\n\t\t\tincludeTeams?: boolean | undefined;\n\t\t\tmembersLimit?: number | undefined;\n\t\t}) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst result = await adapter.findOne<\n\t\t\t\tInferOrganization<O, false> & {\n\t\t\t\t\tinvitation: InferInvitation<O>[];\n\t\t\t\t\tmember: InferMember<O>[];\n\t\t\t\t\tteam: InferTeam<O>[] | undefined;\n\t\t\t\t}\n\t\t\t>({\n\t\t\t\tmodel: \"organization\",\n\t\t\t\twhere: [{ field: isSlug ? \"slug\" : \"id\", value: organizationId }],\n\t\t\t\tjoin: {\n\t\t\t\t\tinvitation: true,\n\t\t\t\t\tmember: membersLimit ? { limit: membersLimit } : true,\n\t\t\t\t\t...(includeTeams ? { team: true } : {}),\n\t\t\t\t},\n\t\t\t});\n\t\t\tif (!result) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst {\n\t\t\t\tinvitation: invitations,\n\t\t\t\tmember: members,\n\t\t\t\tteam: teams,\n\t\t\t\t...org\n\t\t\t} = result;\n\t\t\tconst userIds = members.map((member) => member.userId);\n\t\t\tconst users =\n\t\t\t\tuserIds.length > 0\n\t\t\t\t\t? await adapter.findMany<User>({\n\t\t\t\t\t\t\tmodel: \"user\",\n\t\t\t\t\t\t\twhere: [{ field: \"id\", value: userIds, operator: \"in\" }],\n\t\t\t\t\t\t\tlimit:\n\t\t\t\t\t\t\t\t(typeof options?.membershipLimit === \"number\"\n\t\t\t\t\t\t\t\t\t? options.membershipLimit\n\t\t\t\t\t\t\t\t\t: 100) || 100,\n\t\t\t\t\t\t})\n\t\t\t\t\t: [];\n\n\t\t\tconst userMap = new Map(users.map((user) => [user.id, user]));\n\t\t\tconst membersWithUsers = members.map((member) => {\n\t\t\t\tconst user = userMap.get(member.userId);\n\t\t\t\tif (!user) {\n\t\t\t\t\tthrow new BetterAuthError(\n\t\t\t\t\t\t\"Unexpected error: User not found for member\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tconst filteredMember = filterOutputFields(\n\t\t\t\t\tmember,\n\t\t\t\t\tmemberAdditionalFields,\n\t\t\t\t);\n\t\t\t\treturn {\n\t\t\t\t\t...filteredMember,\n\t\t\t\t\tuser: {\n\t\t\t\t\t\tid: user.id,\n\t\t\t\t\t\tname: user.name,\n\t\t\t\t\t\temail: user.email,\n\t\t\t\t\t\timage: user.image,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t});\n\n\t\t\tconst filteredOrg = filterOutputFields(org, orgAdditionalFields);\n\t\t\tconst filteredInvitations = invitations.map((inv) =>\n\t\t\t\tfilterOutputFields(inv, invitationAdditionalFields),\n\t\t\t);\n\t\t\tconst filteredTeams = teams?.map((team) =>\n\t\t\t\tfilterOutputFields(team, teamAdditionalFields),\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\t...filteredOrg,\n\t\t\t\tinvitations: filteredInvitations,\n\t\t\t\tmembers: membersWithUsers,\n\t\t\t\tteams: filteredTeams,\n\t\t\t};\n\t\t},\n\t\tlistOrganizations: async (\n\t\t\tuserId: string,\n\t\t): Promise<InferOrganization<O>[]> => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst result = await adapter.findMany<\n\t\t\t\tInferMember<O, false> & { organization: InferOrganization<O, false> }\n\t\t\t>({\n\t\t\t\tmodel: \"member\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"userId\",\n\t\t\t\t\t\tvalue: userId,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tjoin: {\n\t\t\t\t\torganization: true,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tif (!result || result.length === 0) {\n\t\t\t\treturn [];\n\t\t\t}\n\n\t\t\tconst organizations = result.map(\n\t\t\t\t(member) =>\n\t\t\t\t\tfilterOutputFields(\n\t\t\t\t\t\tmember.organization,\n\t\t\t\t\t\torgAdditionalFields,\n\t\t\t\t\t) as InferOrganization<O>,\n\t\t\t);\n\n\t\t\treturn organizations;\n\t\t},\n\t\tcreateTeam: async (data: Omit<TeamInput, \"id\">) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst team = await adapter.create<\n\t\t\t\tOmit<TeamInput, \"id\">,\n\t\t\t\tInferTeam<O, false>\n\t\t\t>({\n\t\t\t\tmodel: \"team\",\n\t\t\t\tdata,\n\t\t\t});\n\t\t\treturn team;\n\t\t},\n\t\tfindTeamById: async <IncludeMembers extends boolean>({\n\t\t\tteamId,\n\t\t\torganizationId,\n\t\t\tincludeTeamMembers,\n\t\t}: {\n\t\t\tteamId: string;\n\t\t\torganizationId?: string | undefined;\n\t\t\tincludeTeamMembers?: IncludeMembers | undefined;\n\t\t}): Promise<\n\t\t\t| (InferTeam<O> &\n\t\t\t\t\t(IncludeMembers extends true ? { members: TeamMember[] } : {}))\n\t\t\t| null\n\t\t> => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst result = await adapter.findOne<\n\t\t\t\tInferTeam<O> & { teamMember: TeamMember[] }\n\t\t\t>({\n\t\t\t\tmodel: \"team\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"id\",\n\t\t\t\t\t\tvalue: teamId,\n\t\t\t\t\t},\n\t\t\t\t\t...(organizationId\n\t\t\t\t\t\t? [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tfield: \"organizationId\",\n\t\t\t\t\t\t\t\t\tvalue: organizationId,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t: []),\n\t\t\t\t],\n\t\t\t\tjoin: {\n\t\t\t\t\t// In the future when `join` support is better, we can apply the `membershipLimit` here. Right now we're just querying 100.\n\t\t\t\t\t...(includeTeamMembers ? { teamMember: true } : {}),\n\t\t\t\t},\n\t\t\t});\n\t\t\tif (!result) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tconst { teamMember, ...team } = result;\n\n\t\t\treturn {\n\t\t\t\t...team,\n\t\t\t\t...(includeTeamMembers ? { members: teamMember } : {}),\n\t\t\t} as any;\n\t\t},\n\t\tupdateTeam: async (\n\t\t\tteamId: string,\n\t\t\tdata: {\n\t\t\t\tname?: string | undefined;\n\t\t\t\tdescription?: string | undefined;\n\t\t\t\tstatus?: string | undefined;\n\t\t\t},\n\t\t) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tif (\"id\" in data) data.id = undefined;\n\t\t\tconst team = await adapter.update<\n\t\t\t\tInferTeam<O, false> & InferAdditionalFieldsFromPluginOptions<\"team\", O>\n\t\t\t>({\n\t\t\t\tmodel: \"team\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"id\",\n\t\t\t\t\t\tvalue: teamId,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tupdate: {\n\t\t\t\t\t...data,\n\t\t\t\t},\n\t\t\t});\n\t\t\treturn team;\n\t\t},\n\n\t\tdeleteTeam: async (teamId: string) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tawait adapter.deleteMany({\n\t\t\t\tmodel: \"teamMember\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"teamId\",\n\t\t\t\t\t\tvalue: teamId,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\n\t\t\tconst team = await adapter.delete<InferTeam<O, false>>({\n\t\t\t\tmodel: \"team\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"id\",\n\t\t\t\t\t\tvalue: teamId,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t\treturn team;\n\t\t},\n\n\t\tlistTeams: async (organizationId: string) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst teams = await adapter.findMany<InferTeam<O, false>>({\n\t\t\t\tmodel: \"team\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"organizationId\",\n\t\t\t\t\t\tvalue: organizationId,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t\treturn teams;\n\t\t},\n\n\t\tcreateTeamInvitation: async ({\n\t\t\temail,\n\t\t\trole,\n\t\t\tteamId,\n\t\t\torganizationId,\n\t\t\tinviterId,\n\t\t\texpiresIn = 1000 * 60 * 60 * 48, // Default expiration: 48 hours\n\t\t}: {\n\t\t\temail: string;\n\t\t\trole: string;\n\t\t\tteamId: string;\n\t\t\torganizationId: string;\n\t\t\tinviterId: string;\n\t\t\texpiresIn?: number | undefined;\n\t\t}) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst expiresAt = getDate(expiresIn); // Get expiration date\n\n\t\t\tconst invitation = await adapter.create<\n\t\t\t\tInvitationInput,\n\t\t\t\tInferInvitation<O>\n\t\t\t>({\n\t\t\t\tmodel: \"invitation\",\n\t\t\t\tdata: {\n\t\t\t\t\temail,\n\t\t\t\t\trole,\n\t\t\t\t\torganizationId,\n\t\t\t\t\tteamId,\n\t\t\t\t\tinviterId,\n\t\t\t\t\tstatus: \"pending\",\n\t\t\t\t\texpiresAt,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\treturn invitation;\n\t\t},\n\n\t\tsetActiveTeam: async (\n\t\t\tsessionToken: string,\n\t\t\tteamId: string | null,\n\t\t\tctx: GenericEndpointContext,\n\t\t) => {\n\t\t\tconst session = await context.internalAdapter.updateSession(\n\t\t\t\tsessionToken,\n\t\t\t\t{\n\t\t\t\t\tactiveTeamId: teamId,\n\t\t\t\t},\n\t\t\t);\n\t\t\treturn session as Session;\n\t\t},\n\n\t\tlistTeamMembers: async (data: { teamId: string }) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst members = await adapter.findMany<TeamMember>({\n\t\t\t\tmodel: \"teamMember\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"teamId\",\n\t\t\t\t\t\tvalue: data.teamId,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\n\t\t\treturn members;\n\t\t},\n\t\tcountTeamMembers: async (data: { teamId: string }) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst count = await adapter.count({\n\t\t\t\tmodel: \"teamMember\",\n\t\t\t\twhere: [{ field: \"teamId\", value: data.teamId }],\n\t\t\t});\n\t\t\treturn count;\n\t\t},\n\t\tcountMembers: async (data: { organizationId: string }) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst count = await adapter.count({\n\t\t\t\tmodel: \"member\",\n\t\t\t\twhere: [{ field: \"organizationId\", value: data.organizationId }],\n\t\t\t});\n\t\t\treturn count;\n\t\t},\n\t\tlistTeamsByUser: async (data: { userId: string }) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst results = await adapter.findMany<TeamMember & { team: Team }>({\n\t\t\t\tmodel: \"teamMember\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"userId\",\n\t\t\t\t\t\tvalue: data.userId,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tjoin: {\n\t\t\t\t\tteam: true,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\treturn results.map((result) => result.team);\n\t\t},\n\n\t\tfindTeamMember: async (data: { teamId: string; userId: string }) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst member = await adapter.findOne<TeamMember>({\n\t\t\t\tmodel: \"teamMember\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"teamId\",\n\t\t\t\t\t\tvalue: data.teamId,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"userId\",\n\t\t\t\t\t\tvalue: data.userId,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\n\t\t\treturn member;\n\t\t},\n\n\t\tfindOrCreateTeamMember: async (data: {\n\t\t\tteamId: string;\n\t\t\tuserId: string;\n\t\t}) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst member = await adapter.findOne<TeamMember>({\n\t\t\t\tmodel: \"teamMember\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"teamId\",\n\t\t\t\t\t\tvalue: data.teamId,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"userId\",\n\t\t\t\t\t\tvalue: data.userId,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\n\t\t\tif (member) return member;\n\n\t\t\treturn await adapter.create<Omit<TeamMember, \"id\">, TeamMember>({\n\t\t\t\tmodel: \"teamMember\",\n\t\t\t\tdata: {\n\t\t\t\t\tteamId: data.teamId,\n\t\t\t\t\tuserId: data.userId,\n\t\t\t\t\tcreatedAt: new Date(),\n\t\t\t\t},\n\t\t\t});\n\t\t},\n\t\tremoveTeamMember: async (data: { teamId: string; userId: string }) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\t// use `deleteMany` instead of `delete` since Prisma requires 1 unique field for normal `delete` operations\n\t\t\t// FKs do not count thus breaking the operation. As a solution, we'll use `deleteMany` instead.\n\t\t\tawait adapter.deleteMany({\n\t\t\t\tmodel: \"teamMember\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"teamId\",\n\t\t\t\t\t\tvalue: data.teamId,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"userId\",\n\t\t\t\t\t\tvalue: data.userId,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t},\n\t\tfindInvitationsByTeamId: async (teamId: string) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst invitations = await adapter.findMany<InferInvitation<O, false>>({\n\t\t\t\tmodel: \"invitation\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"teamId\",\n\t\t\t\t\t\tvalue: teamId,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t\treturn invitations;\n\t\t},\n\t\tlistUserInvitations: async (email: string) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst invitations = await adapter.findMany<\n\t\t\t\tInferInvitation<O, false> & {\n\t\t\t\t\torganization: InferOrganization<O, false>;\n\t\t\t\t}\n\t\t\t>({\n\t\t\t\tmodel: \"invitation\",\n\t\t\t\twhere: [{ field: \"email\", value: email.toLowerCase() }],\n\t\t\t\tjoin: {\n\t\t\t\t\torganization: true,\n\t\t\t\t},\n\t\t\t});\n\t\t\treturn invitations.map(({ organization, ...inv }) => ({\n\t\t\t\t...inv,\n\t\t\t\torganizationName: organization.name,\n\t\t\t}));\n\t\t},\n\t\tcreateInvitation: async ({\n\t\t\tinvitation,\n\t\t\tuser,\n\t\t}: {\n\t\t\tinvitation: {\n\t\t\t\temail: string;\n\t\t\t\trole: string;\n\t\t\t\torganizationId: string;\n\t\t\t\tteamIds: string[];\n\t\t\t} & Record<string, any>; // This represents the additionalFields for the invitation\n\t\t\tuser: User;\n\t\t}) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst defaultExpiration = 60 * 60 * 48;\n\t\t\tconst expiresAt = getDate(\n\t\t\t\toptions?.invitationExpiresIn || defaultExpiration,\n\t\t\t\t\"sec\",\n\t\t\t);\n\t\t\tconst invite = await adapter.create<\n\t\t\t\tOmit<InvitationInput, \"id\">,\n\t\t\t\tInferInvitation<O, false>\n\t\t\t>({\n\t\t\t\tmodel: \"invitation\",\n\t\t\t\tdata: {\n\t\t\t\t\tstatus: \"pending\",\n\t\t\t\t\texpiresAt,\n\t\t\t\t\tcreatedAt: new Date(),\n\t\t\t\t\tinviterId: user.id,\n\t\t\t\t\t...invitation,\n\t\t\t\t\tteamId:\n\t\t\t\t\t\tinvitation.teamIds.length > 0 ? invitation.teamIds.join(\",\") : null,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\treturn invite;\n\t\t},\n\t\tfindInvitationById: async (id: string) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst invitation = await adapter.findOne<InferInvitation<O, false>>({\n\t\t\t\tmodel: \"invitation\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"id\",\n\t\t\t\t\t\tvalue: id,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t\treturn invitation;\n\t\t},\n\t\tfindPendingInvitation: async (data: {\n\t\t\temail: string;\n\t\t\torganizationId: string;\n\t\t}) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst invitation = await adapter.findMany<InferInvitation<O, false>>({\n\t\t\t\tmodel: \"invitation\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"email\",\n\t\t\t\t\t\tvalue: data.email.toLowerCase(),\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"organizationId\",\n\t\t\t\t\t\tvalue: data.organizationId,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"status\",\n\t\t\t\t\t\tvalue: \"pending\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t\treturn invitation.filter(\n\t\t\t\t(invite) => new Date(invite.expiresAt) > new Date(),\n\t\t\t);\n\t\t},\n\t\tfindPendingInvitations: async (data: { organizationId: string }) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst invitations = await adapter.findMany<InferInvitation<O, false>>({\n\t\t\t\tmodel: \"invitation\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"organizationId\",\n\t\t\t\t\t\tvalue: data.organizationId,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"status\",\n\t\t\t\t\t\tvalue: \"pending\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t\treturn invitations.filter(\n\t\t\t\t(invite) => new Date(invite.expiresAt) > new Date(),\n\t\t\t);\n\t\t},\n\t\tlistInvitations: async (data: { organizationId: string }) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst invitations = await adapter.findMany<InferInvitation<O, false>>({\n\t\t\t\tmodel: \"invitation\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"organizationId\",\n\t\t\t\t\t\tvalue: data.organizationId,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t\treturn invitations;\n\t\t},\n\t\tupdateInvitation: async (data: {\n\t\t\tinvitationId: string;\n\t\t\tstatus: \"accepted\" | \"canceled\" | \"rejected\";\n\t\t}) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst invitation = await adapter.update<InferInvitation<O, false>>({\n\t\t\t\tmodel: \"invitation\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"id\",\n\t\t\t\t\t\tvalue: data.invitationId,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tupdate: {\n\t\t\t\t\tstatus: data.status,\n\t\t\t\t},\n\t\t\t});\n\t\t\treturn invitation;\n\t\t},\n\t};\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"adapter.mjs","names":[],"sources":["../../../src/plugins/organization/adapter.ts"],"sourcesContent":["import type { AuthContext, GenericEndpointContext } from \"@better-auth/core\";\nimport { getCurrentAdapter } from \"@better-auth/core/context\";\nimport type { WhereOperator } from \"@better-auth/core/db/adapter\";\nimport { BetterAuthError } from \"@better-auth/core/error\";\nimport { filterOutputFields } from \"@better-auth/core/utils/db\";\nimport { parseJSON } from \"../../client/parser\";\nimport type { InferAdditionalFieldsFromPluginOptions } from \"../../db\";\nimport type { Session, User } from \"../../types\";\nimport { getDate } from \"../../utils/date\";\nimport type {\n\tInferInvitation,\n\tInferMember,\n\tInferOrganization,\n\tInferTeam,\n\tInvitationInput,\n\tMember,\n\tMemberInput,\n\tOrganizationInput,\n\tTeam,\n\tTeamInput,\n\tTeamMember,\n} from \"./schema\";\nimport type { OrganizationOptions } from \"./types\";\n\nexport const getOrgAdapter = <O extends OrganizationOptions>(\n\tcontext: AuthContext,\n\toptions?: O | undefined,\n) => {\n\tconst baseAdapter = context.adapter;\n\tconst orgAdditionalFields = options?.schema?.organization?.additionalFields;\n\tconst memberAdditionalFields = options?.schema?.member?.additionalFields;\n\tconst invitationAdditionalFields =\n\t\toptions?.schema?.invitation?.additionalFields;\n\tconst teamAdditionalFields = options?.schema?.team?.additionalFields;\n\treturn {\n\t\tfindOrganizationBySlug: async (\n\t\t\tslug: string,\n\t\t): Promise<InferOrganization<O> | null> => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst organization = await adapter.findOne<InferOrganization<O, false>>({\n\t\t\t\tmodel: \"organization\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"slug\",\n\t\t\t\t\t\tvalue: slug,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t\treturn filterOutputFields(\n\t\t\t\torganization,\n\t\t\t\torgAdditionalFields,\n\t\t\t) as InferOrganization<O> | null;\n\t\t},\n\t\tcreateOrganization: async (data: {\n\t\t\torganization: OrganizationInput &\n\t\t\t\t// This represents the additional fields from the plugin options\n\t\t\t\tRecord<string, any>;\n\t\t}): Promise<InferOrganization<O>> => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst organization = await adapter.create<\n\t\t\t\tOrganizationInput,\n\t\t\t\tInferOrganization<O, false>\n\t\t\t>({\n\t\t\t\tmodel: \"organization\",\n\t\t\t\tdata: {\n\t\t\t\t\t...data.organization,\n\t\t\t\t\tmetadata: data.organization.metadata\n\t\t\t\t\t\t? JSON.stringify(data.organization.metadata)\n\t\t\t\t\t\t: undefined,\n\t\t\t\t},\n\t\t\t\tforceAllowId: true,\n\t\t\t});\n\n\t\t\tconst result = {\n\t\t\t\t...organization,\n\t\t\t\tmetadata:\n\t\t\t\t\torganization.metadata && typeof organization.metadata === \"string\"\n\t\t\t\t\t\t? JSON.parse(organization.metadata)\n\t\t\t\t\t\t: undefined,\n\t\t\t};\n\t\t\treturn filterOutputFields(\n\t\t\t\tresult,\n\t\t\t\torgAdditionalFields,\n\t\t\t) as InferOrganization<O>;\n\t\t},\n\t\tfindMemberByEmail: async (data: {\n\t\t\temail: string;\n\t\t\torganizationId: string;\n\t\t}) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst user = await adapter.findOne<User>({\n\t\t\t\tmodel: \"user\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"email\",\n\t\t\t\t\t\tvalue: data.email.toLowerCase(),\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t\tif (!user) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tconst member = await adapter.findOne<InferMember<O, false>>({\n\t\t\t\tmodel: \"member\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"organizationId\",\n\t\t\t\t\t\tvalue: data.organizationId,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"userId\",\n\t\t\t\t\t\tvalue: user.id,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t\tif (!member) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t...member,\n\t\t\t\tuser: {\n\t\t\t\t\tid: user.id,\n\t\t\t\t\tname: user.name,\n\t\t\t\t\temail: user.email,\n\t\t\t\t\timage: user.image,\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t\tlistMembers: async (data: {\n\t\t\torganizationId?: string | undefined;\n\t\t\tlimit?: number | undefined;\n\t\t\toffset?: number | undefined;\n\t\t\tsortBy?: string | undefined;\n\t\t\tsortOrder?: (\"asc\" | \"desc\") | undefined;\n\t\t\tfilter?:\n\t\t\t\t| {\n\t\t\t\t\t\tfield: string;\n\t\t\t\t\t\toperator?: WhereOperator;\n\t\t\t\t\t\tvalue: any;\n\t\t\t\t }\n\t\t\t\t| undefined;\n\t\t}) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst members = await Promise.all([\n\t\t\t\tadapter.findMany<InferMember<O, false>>({\n\t\t\t\t\tmodel: \"member\",\n\t\t\t\t\twhere: [\n\t\t\t\t\t\t{ field: \"organizationId\", value: data.organizationId },\n\t\t\t\t\t\t...(data.filter?.field\n\t\t\t\t\t\t\t? [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tfield: data.filter?.field,\n\t\t\t\t\t\t\t\t\t\tvalue: data.filter?.value,\n\t\t\t\t\t\t\t\t\t\t...(data.filter.operator\n\t\t\t\t\t\t\t\t\t\t\t? { operator: data.filter.operator }\n\t\t\t\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t: []),\n\t\t\t\t\t],\n\t\t\t\t\tlimit:\n\t\t\t\t\t\tdata.limit ||\n\t\t\t\t\t\t(typeof options?.membershipLimit === \"number\"\n\t\t\t\t\t\t\t? options.membershipLimit\n\t\t\t\t\t\t\t: 100) ||\n\t\t\t\t\t\t100,\n\t\t\t\t\toffset: data.offset || 0,\n\t\t\t\t\tsortBy: data.sortBy\n\t\t\t\t\t\t? { field: data.sortBy, direction: data.sortOrder || \"asc\" }\n\t\t\t\t\t\t: undefined,\n\t\t\t\t}),\n\t\t\t\tadapter.count({\n\t\t\t\t\tmodel: \"member\",\n\t\t\t\t\twhere: [\n\t\t\t\t\t\t{ field: \"organizationId\", value: data.organizationId },\n\t\t\t\t\t\t...(data.filter?.field\n\t\t\t\t\t\t\t? [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tfield: data.filter?.field,\n\t\t\t\t\t\t\t\t\t\tvalue: data.filter?.value,\n\t\t\t\t\t\t\t\t\t\t...(data.filter.operator\n\t\t\t\t\t\t\t\t\t\t\t? { operator: data.filter.operator }\n\t\t\t\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t: []),\n\t\t\t\t\t],\n\t\t\t\t}),\n\t\t\t]);\n\t\t\tconst users = await adapter.findMany<User>({\n\t\t\t\tmodel: \"user\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"id\",\n\t\t\t\t\t\tvalue: members[0].map((member) => member.userId),\n\t\t\t\t\t\toperator: \"in\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t\treturn {\n\t\t\t\tmembers: members[0].map((member) => {\n\t\t\t\t\tconst user = users.find((user) => user.id === member.userId);\n\t\t\t\t\tif (!user) {\n\t\t\t\t\t\tthrow new BetterAuthError(\n\t\t\t\t\t\t\t\"Unexpected error: User not found for member\",\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...member,\n\t\t\t\t\t\tuser: {\n\t\t\t\t\t\t\tid: user.id,\n\t\t\t\t\t\t\tname: user.name,\n\t\t\t\t\t\t\temail: user.email,\n\t\t\t\t\t\t\timage: user.image,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t\ttotal: members[1],\n\t\t\t};\n\t\t},\n\t\tfindMemberByOrgId: async (data: {\n\t\t\tuserId: string;\n\t\t\torganizationId: string;\n\t\t}) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst result = await adapter.findOne<\n\t\t\t\tInferMember<O, false> & { user: User }\n\t\t\t>({\n\t\t\t\tmodel: \"member\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"userId\",\n\t\t\t\t\t\tvalue: data.userId,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"organizationId\",\n\t\t\t\t\t\tvalue: data.organizationId,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tjoin: {\n\t\t\t\t\tuser: true,\n\t\t\t\t},\n\t\t\t});\n\t\t\tif (!result || !result.user) return null;\n\t\t\tconst { user, ...member } = result;\n\n\t\t\treturn {\n\t\t\t\t...member,\n\t\t\t\tuser: {\n\t\t\t\t\tid: user.id,\n\t\t\t\t\tname: user.name,\n\t\t\t\t\temail: user.email,\n\t\t\t\t\timage: user.image,\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t\tfindMemberById: async (memberId: string) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst result = await adapter.findOne<\n\t\t\t\tInferMember<O, false> & { user: User }\n\t\t\t>({\n\t\t\t\tmodel: \"member\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"id\",\n\t\t\t\t\t\tvalue: memberId,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tjoin: {\n\t\t\t\t\tuser: true,\n\t\t\t\t},\n\t\t\t});\n\t\t\tif (!result) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tconst { user, ...member } = result;\n\n\t\t\treturn {\n\t\t\t\t...(member as unknown as InferMember<O, false>),\n\t\t\t\tuser: {\n\t\t\t\t\tid: user.id,\n\t\t\t\t\tname: user.name,\n\t\t\t\t\temail: user.email,\n\t\t\t\t\timage: user.image,\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t\tcreateMember: async (\n\t\t\tdata: Omit<MemberInput, \"id\"> &\n\t\t\t\t// Additional fields from the plugin options\n\t\t\t\tRecord<string, any>,\n\t\t) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst member = await adapter.create<\n\t\t\t\ttypeof data,\n\t\t\t\tMember & InferAdditionalFieldsFromPluginOptions<\"member\", O, false>\n\t\t\t>({\n\t\t\t\tmodel: \"member\",\n\t\t\t\tdata: {\n\t\t\t\t\t...data,\n\t\t\t\t\tcreatedAt: new Date(),\n\t\t\t\t},\n\t\t\t});\n\t\t\treturn member;\n\t\t},\n\t\tupdateMember: async (memberId: string, role: string) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst member = await adapter.update<InferMember<O, false>>({\n\t\t\t\tmodel: \"member\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"id\",\n\t\t\t\t\t\tvalue: memberId,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tupdate: {\n\t\t\t\t\trole,\n\t\t\t\t},\n\t\t\t});\n\t\t\treturn member;\n\t\t},\n\t\tdeleteMember: async ({\n\t\t\tmemberId,\n\t\t\torganizationId,\n\t\t\tuserId: _userId,\n\t\t}: {\n\t\t\tmemberId: string;\n\t\t\torganizationId: string;\n\t\t\tuserId?: string;\n\t\t}) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tlet userId: string;\n\t\t\tif (!_userId) {\n\t\t\t\tconst member = await adapter.findOne<Member>({\n\t\t\t\t\tmodel: \"member\",\n\t\t\t\t\twhere: [{ field: \"id\", value: memberId }],\n\t\t\t\t});\n\t\t\t\tif (!member) {\n\t\t\t\t\tthrow new BetterAuthError(\"Member not found\");\n\t\t\t\t}\n\t\t\t\tuserId = member.userId;\n\t\t\t} else {\n\t\t\t\tuserId = _userId;\n\t\t\t}\n\t\t\tconst member = await adapter.delete<InferMember<O, false>>({\n\t\t\t\tmodel: \"member\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"id\",\n\t\t\t\t\t\tvalue: memberId,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t\t// remove member from all teams they're part of\n\t\t\tif (options?.teams?.enabled) {\n\t\t\t\tconst teams = await adapter.findMany<Team>({\n\t\t\t\t\tmodel: \"team\",\n\t\t\t\t\twhere: [{ field: \"organizationId\", value: organizationId }],\n\t\t\t\t});\n\t\t\t\tawait Promise.all(\n\t\t\t\t\tteams.map((team) =>\n\t\t\t\t\t\tadapter.deleteMany({\n\t\t\t\t\t\t\tmodel: \"teamMember\",\n\t\t\t\t\t\t\twhere: [\n\t\t\t\t\t\t\t\t{ field: \"teamId\", value: team.id },\n\t\t\t\t\t\t\t\t{ field: \"userId\", value: userId },\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t}),\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn member;\n\t\t},\n\t\tupdateOrganization: async (\n\t\t\torganizationId: string,\n\t\t\tdata: Partial<OrganizationInput>,\n\t\t): Promise<InferOrganization<O> | null> => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst organization = await adapter.update<InferOrganization<O, false>>({\n\t\t\t\tmodel: \"organization\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"id\",\n\t\t\t\t\t\tvalue: organizationId,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tupdate: {\n\t\t\t\t\t...data,\n\t\t\t\t\tmetadata:\n\t\t\t\t\t\ttypeof data.metadata === \"object\"\n\t\t\t\t\t\t\t? JSON.stringify(data.metadata)\n\t\t\t\t\t\t\t: data.metadata,\n\t\t\t\t},\n\t\t\t});\n\t\t\tif (!organization) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tconst result = {\n\t\t\t\t...organization,\n\t\t\t\tmetadata: organization.metadata\n\t\t\t\t\t? parseJSON<Record<string, any>>(organization.metadata)\n\t\t\t\t\t: undefined,\n\t\t\t};\n\t\t\treturn filterOutputFields(\n\t\t\t\tresult,\n\t\t\t\torgAdditionalFields,\n\t\t\t) as InferOrganization<O>;\n\t\t},\n\t\tdeleteOrganization: async (organizationId: string) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tawait adapter.deleteMany({\n\t\t\t\tmodel: \"member\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"organizationId\",\n\t\t\t\t\t\tvalue: organizationId,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t\tawait adapter.deleteMany({\n\t\t\t\tmodel: \"invitation\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"organizationId\",\n\t\t\t\t\t\tvalue: organizationId,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t\tawait adapter.delete<InferOrganization<O, false>>({\n\t\t\t\tmodel: \"organization\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"id\",\n\t\t\t\t\t\tvalue: organizationId,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t\treturn organizationId;\n\t\t},\n\t\tsetActiveOrganization: async (\n\t\t\tsessionToken: string,\n\t\t\torganizationId: string | null,\n\t\t\tctx: GenericEndpointContext,\n\t\t) => {\n\t\t\tconst session = await context.internalAdapter.updateSession(\n\t\t\t\tsessionToken,\n\t\t\t\t{\n\t\t\t\t\tactiveOrganizationId: organizationId,\n\t\t\t\t},\n\t\t\t);\n\t\t\treturn session as Session;\n\t\t},\n\t\tfindOrganizationById: async (\n\t\t\torganizationId: string,\n\t\t): Promise<InferOrganization<O> | null> => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst organization = await adapter.findOne<InferOrganization<O, false>>({\n\t\t\t\tmodel: \"organization\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"id\",\n\t\t\t\t\t\tvalue: organizationId,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t\treturn filterOutputFields(\n\t\t\t\torganization,\n\t\t\t\torgAdditionalFields,\n\t\t\t) as InferOrganization<O> | null;\n\t\t},\n\t\tcheckMembership: async ({\n\t\t\tuserId,\n\t\t\torganizationId,\n\t\t}: {\n\t\t\tuserId: string;\n\t\t\torganizationId: string;\n\t\t}) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst member = await adapter.findOne<InferMember<O, false>>({\n\t\t\t\tmodel: \"member\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"userId\",\n\t\t\t\t\t\tvalue: userId,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"organizationId\",\n\t\t\t\t\t\tvalue: organizationId,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t\treturn member;\n\t\t},\n\t\t/**\n\t\t * @requires db\n\t\t */\n\t\tfindFullOrganization: async ({\n\t\t\torganizationId,\n\t\t\tisSlug,\n\t\t\tincludeTeams,\n\t\t\tmembersLimit,\n\t\t}: {\n\t\t\torganizationId: string;\n\t\t\tisSlug?: boolean | undefined;\n\t\t\tincludeTeams?: boolean | undefined;\n\t\t\tmembersLimit?: number | undefined;\n\t\t}) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst result = await adapter.findOne<\n\t\t\t\tInferOrganization<O, false> & {\n\t\t\t\t\tinvitation: InferInvitation<O>[];\n\t\t\t\t\tmember: InferMember<O>[];\n\t\t\t\t\tteam: InferTeam<O>[] | undefined;\n\t\t\t\t}\n\t\t\t>({\n\t\t\t\tmodel: \"organization\",\n\t\t\t\twhere: [{ field: isSlug ? \"slug\" : \"id\", value: organizationId }],\n\t\t\t\tjoin: {\n\t\t\t\t\tinvitation: true,\n\t\t\t\t\tmember: membersLimit ? { limit: membersLimit } : true,\n\t\t\t\t\t...(includeTeams ? { team: true } : {}),\n\t\t\t\t},\n\t\t\t});\n\t\t\tif (!result) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst {\n\t\t\t\tinvitation: invitations,\n\t\t\t\tmember: members,\n\t\t\t\tteam: teams,\n\t\t\t\t...org\n\t\t\t} = result;\n\t\t\tconst userIds = members.map((member) => member.userId);\n\t\t\tconst users =\n\t\t\t\tuserIds.length > 0\n\t\t\t\t\t? await adapter.findMany<User>({\n\t\t\t\t\t\t\tmodel: \"user\",\n\t\t\t\t\t\t\twhere: [{ field: \"id\", value: userIds, operator: \"in\" }],\n\t\t\t\t\t\t\tlimit:\n\t\t\t\t\t\t\t\t(typeof options?.membershipLimit === \"number\"\n\t\t\t\t\t\t\t\t\t? options.membershipLimit\n\t\t\t\t\t\t\t\t\t: 100) || 100,\n\t\t\t\t\t\t})\n\t\t\t\t\t: [];\n\n\t\t\tconst userMap = new Map(users.map((user) => [user.id, user]));\n\t\t\tconst membersWithUsers = members.map((member) => {\n\t\t\t\tconst user = userMap.get(member.userId);\n\t\t\t\tif (!user) {\n\t\t\t\t\tthrow new BetterAuthError(\n\t\t\t\t\t\t\"Unexpected error: User not found for member\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tconst filteredMember = filterOutputFields(\n\t\t\t\t\tmember,\n\t\t\t\t\tmemberAdditionalFields,\n\t\t\t\t);\n\t\t\t\treturn {\n\t\t\t\t\t...filteredMember,\n\t\t\t\t\tuser: {\n\t\t\t\t\t\tid: user.id,\n\t\t\t\t\t\tname: user.name,\n\t\t\t\t\t\temail: user.email,\n\t\t\t\t\t\timage: user.image,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t});\n\n\t\t\tconst filteredOrg = filterOutputFields(org, orgAdditionalFields);\n\t\t\tconst filteredInvitations = invitations.map((inv) =>\n\t\t\t\tfilterOutputFields(inv, invitationAdditionalFields),\n\t\t\t);\n\t\t\tconst filteredTeams = teams?.map((team) =>\n\t\t\t\tfilterOutputFields(team, teamAdditionalFields),\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\t...filteredOrg,\n\t\t\t\tinvitations: filteredInvitations,\n\t\t\t\tmembers: membersWithUsers,\n\t\t\t\tteams: filteredTeams,\n\t\t\t};\n\t\t},\n\t\tlistOrganizations: async (\n\t\t\tuserId: string,\n\t\t): Promise<InferOrganization<O>[]> => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst result = await adapter.findMany<\n\t\t\t\tInferMember<O, false> & { organization: InferOrganization<O, false> }\n\t\t\t>({\n\t\t\t\tmodel: \"member\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"userId\",\n\t\t\t\t\t\tvalue: userId,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tjoin: {\n\t\t\t\t\torganization: true,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tif (!result || result.length === 0) {\n\t\t\t\treturn [];\n\t\t\t}\n\n\t\t\tconst organizations = result.map(\n\t\t\t\t(member) =>\n\t\t\t\t\tfilterOutputFields(\n\t\t\t\t\t\tmember.organization,\n\t\t\t\t\t\torgAdditionalFields,\n\t\t\t\t\t) as InferOrganization<O>,\n\t\t\t);\n\n\t\t\treturn organizations;\n\t\t},\n\t\tcreateTeam: async (data: Omit<TeamInput, \"id\">) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst team = await adapter.create<\n\t\t\t\tOmit<TeamInput, \"id\">,\n\t\t\t\tInferTeam<O, false>\n\t\t\t>({\n\t\t\t\tmodel: \"team\",\n\t\t\t\tdata,\n\t\t\t});\n\t\t\treturn team;\n\t\t},\n\t\tfindTeamById: async <IncludeMembers extends boolean>({\n\t\t\tteamId,\n\t\t\torganizationId,\n\t\t\tincludeTeamMembers,\n\t\t}: {\n\t\t\tteamId: string;\n\t\t\torganizationId?: string | undefined;\n\t\t\tincludeTeamMembers?: IncludeMembers | undefined;\n\t\t}): Promise<\n\t\t\t| (InferTeam<O> &\n\t\t\t\t\t(IncludeMembers extends true ? { members: TeamMember[] } : {}))\n\t\t\t| null\n\t\t> => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst result = await adapter.findOne<\n\t\t\t\tInferTeam<O> & { teamMember: TeamMember[] }\n\t\t\t>({\n\t\t\t\tmodel: \"team\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"id\",\n\t\t\t\t\t\tvalue: teamId,\n\t\t\t\t\t},\n\t\t\t\t\t...(organizationId\n\t\t\t\t\t\t? [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tfield: \"organizationId\",\n\t\t\t\t\t\t\t\t\tvalue: organizationId,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t: []),\n\t\t\t\t],\n\t\t\t\tjoin: {\n\t\t\t\t\t// In the future when `join` support is better, we can apply the `membershipLimit` here. Right now we're just querying 100.\n\t\t\t\t\t...(includeTeamMembers ? { teamMember: true } : {}),\n\t\t\t\t},\n\t\t\t});\n\t\t\tif (!result) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tconst { teamMember, ...team } = result;\n\n\t\t\treturn {\n\t\t\t\t...team,\n\t\t\t\t...(includeTeamMembers ? { members: teamMember } : {}),\n\t\t\t} as any;\n\t\t},\n\t\tupdateTeam: async (\n\t\t\tteamId: string,\n\t\t\tdata: {\n\t\t\t\tname?: string | undefined;\n\t\t\t\tdescription?: string | undefined;\n\t\t\t\tstatus?: string | undefined;\n\t\t\t},\n\t\t) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tif (\"id\" in data) data.id = undefined;\n\t\t\tconst team = await adapter.update<\n\t\t\t\tInferTeam<O, false> & InferAdditionalFieldsFromPluginOptions<\"team\", O>\n\t\t\t>({\n\t\t\t\tmodel: \"team\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"id\",\n\t\t\t\t\t\tvalue: teamId,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tupdate: {\n\t\t\t\t\t...data,\n\t\t\t\t},\n\t\t\t});\n\t\t\treturn team;\n\t\t},\n\n\t\tdeleteTeam: async (teamId: string) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tawait adapter.deleteMany({\n\t\t\t\tmodel: \"teamMember\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"teamId\",\n\t\t\t\t\t\tvalue: teamId,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\n\t\t\tconst team = await adapter.delete<InferTeam<O, false>>({\n\t\t\t\tmodel: \"team\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"id\",\n\t\t\t\t\t\tvalue: teamId,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t\treturn team;\n\t\t},\n\n\t\tlistTeams: async (organizationId: string) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst teams = await adapter.findMany<InferTeam<O, false>>({\n\t\t\t\tmodel: \"team\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"organizationId\",\n\t\t\t\t\t\tvalue: organizationId,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t\treturn teams;\n\t\t},\n\n\t\tcreateTeamInvitation: async ({\n\t\t\temail,\n\t\t\trole,\n\t\t\tteamId,\n\t\t\torganizationId,\n\t\t\tinviterId,\n\t\t\texpiresIn = 1000 * 60 * 60 * 48, // Default expiration: 48 hours\n\t\t}: {\n\t\t\temail: string;\n\t\t\trole: string;\n\t\t\tteamId: string;\n\t\t\torganizationId: string;\n\t\t\tinviterId: string;\n\t\t\texpiresIn?: number | undefined;\n\t\t}) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst expiresAt = getDate(expiresIn); // Get expiration date\n\n\t\t\tconst invitation = await adapter.create<\n\t\t\t\tInvitationInput,\n\t\t\t\tInferInvitation<O>\n\t\t\t>({\n\t\t\t\tmodel: \"invitation\",\n\t\t\t\tdata: {\n\t\t\t\t\temail,\n\t\t\t\t\trole,\n\t\t\t\t\torganizationId,\n\t\t\t\t\tteamId,\n\t\t\t\t\tinviterId,\n\t\t\t\t\tstatus: \"pending\",\n\t\t\t\t\texpiresAt,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\treturn invitation;\n\t\t},\n\n\t\tsetActiveTeam: async (\n\t\t\tsessionToken: string,\n\t\t\tteamId: string | null,\n\t\t\tctx: GenericEndpointContext,\n\t\t) => {\n\t\t\tconst session = await context.internalAdapter.updateSession(\n\t\t\t\tsessionToken,\n\t\t\t\t{\n\t\t\t\t\tactiveTeamId: teamId,\n\t\t\t\t},\n\t\t\t);\n\t\t\treturn session as Session;\n\t\t},\n\n\t\tlistTeamMembers: async (data: { teamId: string }) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst members = await adapter.findMany<TeamMember>({\n\t\t\t\tmodel: \"teamMember\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"teamId\",\n\t\t\t\t\t\tvalue: data.teamId,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\n\t\t\treturn members;\n\t\t},\n\t\tcountTeamMembers: async (data: { teamId: string }) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst count = await adapter.count({\n\t\t\t\tmodel: \"teamMember\",\n\t\t\t\twhere: [{ field: \"teamId\", value: data.teamId }],\n\t\t\t});\n\t\t\treturn count;\n\t\t},\n\t\tcountMembers: async (data: { organizationId: string }) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst count = await adapter.count({\n\t\t\t\tmodel: \"member\",\n\t\t\t\twhere: [{ field: \"organizationId\", value: data.organizationId }],\n\t\t\t});\n\t\t\treturn count;\n\t\t},\n\t\tlistTeamsByUser: async (data: { userId: string }) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst results = await adapter.findMany<TeamMember & { team: Team }>({\n\t\t\t\tmodel: \"teamMember\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"userId\",\n\t\t\t\t\t\tvalue: data.userId,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tjoin: {\n\t\t\t\t\tteam: true,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\treturn results.map((result) => result.team);\n\t\t},\n\n\t\tfindTeamMember: async (data: { teamId: string; userId: string }) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst member = await adapter.findOne<TeamMember>({\n\t\t\t\tmodel: \"teamMember\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"teamId\",\n\t\t\t\t\t\tvalue: data.teamId,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"userId\",\n\t\t\t\t\t\tvalue: data.userId,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\n\t\t\treturn member;\n\t\t},\n\n\t\tfindOrCreateTeamMember: async (data: {\n\t\t\tteamId: string;\n\t\t\tuserId: string;\n\t\t}) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst member = await adapter.findOne<TeamMember>({\n\t\t\t\tmodel: \"teamMember\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"teamId\",\n\t\t\t\t\t\tvalue: data.teamId,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"userId\",\n\t\t\t\t\t\tvalue: data.userId,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\n\t\t\tif (member) return member;\n\n\t\t\treturn await adapter.create<Omit<TeamMember, \"id\">, TeamMember>({\n\t\t\t\tmodel: \"teamMember\",\n\t\t\t\tdata: {\n\t\t\t\t\tteamId: data.teamId,\n\t\t\t\t\tuserId: data.userId,\n\t\t\t\t\tcreatedAt: new Date(),\n\t\t\t\t},\n\t\t\t});\n\t\t},\n\t\tremoveTeamMember: async (data: { teamId: string; userId: string }) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\t// use `deleteMany` instead of `delete` since Prisma requires 1 unique field for normal `delete` operations\n\t\t\t// FKs do not count thus breaking the operation. As a solution, we'll use `deleteMany` instead.\n\t\t\tawait adapter.deleteMany({\n\t\t\t\tmodel: \"teamMember\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"teamId\",\n\t\t\t\t\t\tvalue: data.teamId,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"userId\",\n\t\t\t\t\t\tvalue: data.userId,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t},\n\t\tfindInvitationsByTeamId: async (teamId: string) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst invitations = await adapter.findMany<InferInvitation<O, false>>({\n\t\t\t\tmodel: \"invitation\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"teamId\",\n\t\t\t\t\t\tvalue: teamId,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t\treturn invitations;\n\t\t},\n\t\tlistUserInvitations: async (email: string) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst invitations = await adapter.findMany<\n\t\t\t\tInferInvitation<O, false> & {\n\t\t\t\t\torganization: InferOrganization<O, false>;\n\t\t\t\t}\n\t\t\t>({\n\t\t\t\tmodel: \"invitation\",\n\t\t\t\twhere: [{ field: \"email\", value: email.toLowerCase() }],\n\t\t\t\tjoin: {\n\t\t\t\t\torganization: true,\n\t\t\t\t},\n\t\t\t});\n\t\t\treturn invitations.filter(Boolean).map(({ organization, ...inv }) => ({\n\t\t\t\t...inv,\n\t\t\t\torganizationName: organization?.name,\n\t\t\t}));\n\t\t},\n\t\tcreateInvitation: async ({\n\t\t\tinvitation,\n\t\t\tuser,\n\t\t}: {\n\t\t\tinvitation: {\n\t\t\t\temail: string;\n\t\t\t\trole: string;\n\t\t\t\torganizationId: string;\n\t\t\t\tteamIds: string[];\n\t\t\t} & Record<string, any>; // This represents the additionalFields for the invitation\n\t\t\tuser: User;\n\t\t}) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst defaultExpiration = 60 * 60 * 48;\n\t\t\tconst expiresAt = getDate(\n\t\t\t\toptions?.invitationExpiresIn || defaultExpiration,\n\t\t\t\t\"sec\",\n\t\t\t);\n\t\t\tconst invite = await adapter.create<\n\t\t\t\tOmit<InvitationInput, \"id\">,\n\t\t\t\tInferInvitation<O, false>\n\t\t\t>({\n\t\t\t\tmodel: \"invitation\",\n\t\t\t\tdata: {\n\t\t\t\t\tstatus: \"pending\",\n\t\t\t\t\texpiresAt,\n\t\t\t\t\tcreatedAt: new Date(),\n\t\t\t\t\tinviterId: user.id,\n\t\t\t\t\t...invitation,\n\t\t\t\t\tteamId:\n\t\t\t\t\t\tinvitation.teamIds.length > 0 ? invitation.teamIds.join(\",\") : null,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\treturn invite;\n\t\t},\n\t\tfindInvitationById: async (id: string) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst invitation = await adapter.findOne<InferInvitation<O, false>>({\n\t\t\t\tmodel: \"invitation\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"id\",\n\t\t\t\t\t\tvalue: id,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t\treturn invitation;\n\t\t},\n\t\tfindPendingInvitation: async (data: {\n\t\t\temail: string;\n\t\t\torganizationId: string;\n\t\t}) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst invitation = await adapter.findMany<InferInvitation<O, false>>({\n\t\t\t\tmodel: \"invitation\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"email\",\n\t\t\t\t\t\tvalue: data.email.toLowerCase(),\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"organizationId\",\n\t\t\t\t\t\tvalue: data.organizationId,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"status\",\n\t\t\t\t\t\tvalue: \"pending\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t\treturn invitation.filter(\n\t\t\t\t(invite) => new Date(invite.expiresAt) > new Date(),\n\t\t\t);\n\t\t},\n\t\tfindPendingInvitations: async (data: { organizationId: string }) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst invitations = await adapter.findMany<InferInvitation<O, false>>({\n\t\t\t\tmodel: \"invitation\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"organizationId\",\n\t\t\t\t\t\tvalue: data.organizationId,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"status\",\n\t\t\t\t\t\tvalue: \"pending\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t\treturn invitations.filter(\n\t\t\t\t(invite) => new Date(invite.expiresAt) > new Date(),\n\t\t\t);\n\t\t},\n\t\tlistInvitations: async (data: { organizationId: string }) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst invitations = await adapter.findMany<InferInvitation<O, false>>({\n\t\t\t\tmodel: \"invitation\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"organizationId\",\n\t\t\t\t\t\tvalue: data.organizationId,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t\treturn invitations;\n\t\t},\n\t\tupdateInvitation: async (data: {\n\t\t\tinvitationId: string;\n\t\t\tstatus: \"accepted\" | \"canceled\" | \"rejected\";\n\t\t}) => {\n\t\t\tconst adapter = await getCurrentAdapter(baseAdapter);\n\t\t\tconst invitation = await adapter.update<InferInvitation<O, false>>({\n\t\t\t\tmodel: \"invitation\",\n\t\t\t\twhere: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"id\",\n\t\t\t\t\t\tvalue: data.invitationId,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tupdate: {\n\t\t\t\t\tstatus: data.status,\n\t\t\t\t},\n\t\t\t});\n\t\t\treturn invitation;\n\t\t},\n\t};\n};\n"],"mappings":"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"}
@@ -3,16 +3,11 @@ import { Prettify } from "../../types/helper.mjs";
3
3
  import { BetterAuthOptions as BetterAuthOptions$1 } from "../../types/index.mjs";
4
4
  import { AuthQueryAtom } from "../../client/query.mjs";
5
5
  import { AccessControl, ArrayElement, Role, Statements } from "../access/types.mjs";
6
- import "../access/index.mjs";
7
- import "../../db/index.mjs";
8
6
  import { OrganizationOptions } from "./types.mjs";
9
7
  import { InferInvitation, InferMember, InferOrganization, InferOrganizationRolesFromOption, InferOrganizationZodRolesFromOption, InferTeam, Invitation, InvitationInput, InvitationStatus, Member, MemberInput, Organization, OrganizationInput, OrganizationRole, OrganizationSchema, Team, TeamInput, TeamMember, TeamMemberInput, defaultRolesSchema, invitationSchema, invitationStatus, memberSchema, organizationRoleSchema, organizationSchema, roleSchema, teamMemberSchema, teamSchema } from "./schema.mjs";
10
- import "../index.mjs";
11
8
  import { ORGANIZATION_ERROR_CODES } from "./error-codes.mjs";
12
9
  import { HasPermissionBaseInput } from "./permission.mjs";
13
10
  import { OrganizationPlugin } from "./organization.mjs";
14
- import "./index.mjs";
15
- import "../../client/index.mjs";
16
11
  import * as _better_auth_core0 from "@better-auth/core";
17
12
  import { DBFieldAttribute } from "@better-auth/core/db";
18
13
  import * as _better_auth_core_utils_error_codes0 from "@better-auth/core/utils/error-codes";
@@ -1,8 +1,6 @@
1
1
  import { AccessControl, ArrayElement, Statements } from "../access/types.mjs";
2
- import "../access/index.mjs";
3
2
  import { OrganizationOptions } from "./types.mjs";
4
3
  import { InferInvitation, InferMember, InferOrganization, InferTeam, OrganizationSchema, Team, TeamMember } from "./schema.mjs";
5
- import "../index.mjs";
6
4
  import { ORGANIZATION_ERROR_CODES } from "./error-codes.mjs";
7
5
  import { createOrgRole, deleteOrgRole, getOrgRole, listOrgRoles, updateOrgRole } from "./routes/crud-access-control.mjs";
8
6
  import { acceptInvitation, cancelInvitation, createInvitation, getInvitation, listInvitations, listUserInvitations, rejectInvitation } from "./routes/crud-invites.mjs";
@@ -1,4 +1,3 @@
1
- import "../access/index.mjs";
2
1
  import { OrganizationOptions } from "./types.mjs";
3
2
 
4
3
  //#region src/plugins/organization/permission.d.ts
@@ -1,9 +1,7 @@
1
1
  import { InferAdditionalFieldsFromPluginOptions } from "../../../db/field.mjs";
2
2
  import { Statements, Subset } from "../../access/types.mjs";
3
- import "../../../db/index.mjs";
4
3
  import { OrganizationOptions } from "../types.mjs";
5
4
  import { OrganizationRole } from "../schema.mjs";
6
- import "../../index.mjs";
7
5
  import * as better_call0 from "better-call";
8
6
  import * as z from "zod";
9
7
 
@@ -1,11 +1,8 @@
1
1
  import { FieldAttributeToObject, InferAdditionalFieldsFromPluginOptions, RemoveFieldsWithReturnedFalse } from "../../../db/field.mjs";
2
2
  import { Role } from "../../access/types.mjs";
3
- import "../../../db/index.mjs";
4
3
  import { OrganizationOptions } from "../types.mjs";
5
4
  import { InferOrganizationRolesFromOption, InvitationStatus } from "../schema.mjs";
6
- import "../../index.mjs";
7
5
  import { defaultRoles } from "../access/statement.mjs";
8
- import "../index.mjs";
9
6
  import * as _better_auth_core0 from "@better-auth/core";
10
7
  import * as _better_auth_core_db0 from "@better-auth/core/db";
11
8
  import * as better_call0 from "better-call";
@@ -1,11 +1,8 @@
1
1
  import { FieldAttributeToObject, InferAdditionalFieldsFromPluginOptions, RemoveFieldsWithReturnedFalse } from "../../../db/field.mjs";
2
2
  import { Role } from "../../access/types.mjs";
3
- import "../../../db/index.mjs";
4
3
  import { OrganizationOptions } from "../types.mjs";
5
4
  import { InferOrganizationRolesFromOption } from "../schema.mjs";
6
- import "../../index.mjs";
7
5
  import { defaultRoles } from "../access/statement.mjs";
8
- import "../access/index.mjs";
9
6
  import * as _better_auth_core0 from "@better-auth/core";
10
7
  import { LiteralString } from "@better-auth/core";
11
8
  import * as _better_auth_core_db0 from "@better-auth/core/db";
@@ -1,11 +1,8 @@
1
1
  import { FieldAttributeToObject, InferAdditionalFieldsFromPluginOptions, RemoveFieldsWithReturnedFalse } from "../../../db/field.mjs";
2
2
  import { Role } from "../../access/types.mjs";
3
- import "../../../db/index.mjs";
4
3
  import { OrganizationOptions } from "../types.mjs";
5
4
  import { InferInvitation, InferMember, InferTeam } from "../schema.mjs";
6
- import "../../index.mjs";
7
5
  import { defaultRoles } from "../access/statement.mjs";
8
- import "../access/index.mjs";
9
6
  import * as _better_auth_core0 from "@better-auth/core";
10
7
  import * as _better_auth_core_db0 from "@better-auth/core/db";
11
8
  import * as better_call0 from "better-call";
@@ -1,12 +1,9 @@
1
1
  import { FieldAttributeToObject, InferAdditionalFieldsFromPluginOptions } from "../../../db/field.mjs";
2
2
  import { PrettifyDeep } from "../../../types/helper.mjs";
3
3
  import { Role } from "../../access/types.mjs";
4
- import "../../../db/index.mjs";
5
4
  import { OrganizationOptions } from "../types.mjs";
6
5
  import { teamSchema } from "../schema.mjs";
7
- import "../../index.mjs";
8
6
  import { defaultRoles } from "../access/statement.mjs";
9
- import "../access/index.mjs";
10
7
  import * as _better_auth_core0 from "@better-auth/core";
11
8
  import * as _better_auth_core_db0 from "@better-auth/core/db";
12
9
  import * as better_call0 from "better-call";
@@ -827,6 +824,7 @@ declare const addTeamMember: <O extends OrganizationOptions>(options: O) => bett
827
824
  body: z.ZodObject<{
828
825
  teamId: z.ZodString;
829
826
  userId: z.ZodCoercedString<unknown>;
827
+ organizationId: z.ZodOptional<z.ZodString>;
830
828
  }, z.core.$strip>;
831
829
  metadata: {
832
830
  openapi: {
@@ -957,6 +955,7 @@ declare const removeTeamMember: <O extends OrganizationOptions>(options: O) => b
957
955
  body: z.ZodObject<{
958
956
  teamId: z.ZodString;
959
957
  userId: z.ZodCoercedString<unknown>;
958
+ organizationId: z.ZodOptional<z.ZodString>;
960
959
  }, z.core.$strip>;
961
960
  metadata: {
962
961
  openapi: {
@@ -501,7 +501,8 @@ const listTeamMembers = (options) => createAuthEndpoint("/organization/list-team
501
501
  });
502
502
  const addTeamMemberBodySchema = z.object({
503
503
  teamId: z.string().meta({ description: "The team the user should be a member of." }),
504
- userId: z.coerce.string().meta({ description: "The user Id which represents the user to be added as a member." })
504
+ userId: z.coerce.string().meta({ description: "The user Id which represents the user to be added as a member." }),
505
+ organizationId: z.string().meta({ description: "The organization ID which the team falls under. If not provided, it will default to the user's active organization." }).optional()
505
506
  });
506
507
  const addTeamMember = (options) => createAuthEndpoint("/organization/add-team-member", {
507
508
  method: "POST",
@@ -546,28 +547,29 @@ const addTeamMember = (options) => createAuthEndpoint("/organization/add-team-me
546
547
  }, async (ctx) => {
547
548
  const session = ctx.context.session;
548
549
  const adapter = getOrgAdapter(ctx.context, ctx.context.orgOptions);
549
- if (!session.session.activeOrganizationId) throw APIError.from("BAD_REQUEST", ORGANIZATION_ERROR_CODES.NO_ACTIVE_ORGANIZATION);
550
+ const organizationId = ctx.body.organizationId || session.session.activeOrganizationId;
551
+ if (!organizationId) throw APIError.from("BAD_REQUEST", ORGANIZATION_ERROR_CODES.NO_ACTIVE_ORGANIZATION);
550
552
  const currentMember = await adapter.findMemberByOrgId({
551
553
  userId: session.user.id,
552
- organizationId: session.session.activeOrganizationId
554
+ organizationId
553
555
  });
554
556
  if (!currentMember) throw APIError.from("BAD_REQUEST", ORGANIZATION_ERROR_CODES.USER_IS_NOT_A_MEMBER_OF_THE_ORGANIZATION);
555
557
  if (!await hasPermission({
556
558
  role: currentMember.role,
557
559
  options: ctx.context.orgOptions,
558
560
  permissions: { member: ["update"] },
559
- organizationId: session.session.activeOrganizationId
561
+ organizationId
560
562
  }, ctx)) throw APIError.from("FORBIDDEN", ORGANIZATION_ERROR_CODES.YOU_ARE_NOT_ALLOWED_TO_CREATE_A_NEW_TEAM_MEMBER);
561
563
  if (!await adapter.findMemberByOrgId({
562
564
  userId: ctx.body.userId,
563
- organizationId: session.session.activeOrganizationId
565
+ organizationId
564
566
  })) throw APIError.from("BAD_REQUEST", ORGANIZATION_ERROR_CODES.USER_IS_NOT_A_MEMBER_OF_THE_ORGANIZATION);
565
567
  const team = await adapter.findTeamById({
566
568
  teamId: ctx.body.teamId,
567
- organizationId: session.session.activeOrganizationId
569
+ organizationId
568
570
  });
569
571
  if (!team) throw APIError.from("BAD_REQUEST", ORGANIZATION_ERROR_CODES.TEAM_NOT_FOUND);
570
- const organization = await adapter.findOrganizationById(session.session.activeOrganizationId);
572
+ const organization = await adapter.findOrganizationById(organizationId);
571
573
  if (!organization) throw APIError.from("BAD_REQUEST", ORGANIZATION_ERROR_CODES.ORGANIZATION_NOT_FOUND);
572
574
  const userBeingAdded = await ctx.context.internalAdapter.findUserById(ctx.body.userId);
573
575
  if (!userBeingAdded) throw APIError.fromStatus("BAD_REQUEST", { message: "User not found" });
@@ -597,7 +599,8 @@ const addTeamMember = (options) => createAuthEndpoint("/organization/add-team-me
597
599
  });
598
600
  const removeTeamMemberBodySchema = z.object({
599
601
  teamId: z.string().meta({ description: "The team the user should be removed from." }),
600
- userId: z.coerce.string().meta({ description: "The user which should be removed from the team." })
602
+ userId: z.coerce.string().meta({ description: "The user which should be removed from the team." }),
603
+ organizationId: z.string().meta({ description: "The organization ID which the team falls under. If not provided, it will default to the user's active organization." }).optional()
601
604
  });
602
605
  const removeTeamMember = (options) => createAuthEndpoint("/organization/remove-team-member", {
603
606
  method: "POST",
@@ -622,28 +625,29 @@ const removeTeamMember = (options) => createAuthEndpoint("/organization/remove-t
622
625
  }, async (ctx) => {
623
626
  const session = ctx.context.session;
624
627
  const adapter = getOrgAdapter(ctx.context, ctx.context.orgOptions);
625
- if (!session.session.activeOrganizationId) throw APIError.from("BAD_REQUEST", ORGANIZATION_ERROR_CODES.NO_ACTIVE_ORGANIZATION);
628
+ const organizationId = ctx.body.organizationId || session.session.activeOrganizationId;
629
+ if (!organizationId) throw APIError.from("BAD_REQUEST", ORGANIZATION_ERROR_CODES.NO_ACTIVE_ORGANIZATION);
626
630
  const currentMember = await adapter.findMemberByOrgId({
627
631
  userId: session.user.id,
628
- organizationId: session.session.activeOrganizationId
632
+ organizationId
629
633
  });
630
634
  if (!currentMember) throw APIError.from("BAD_REQUEST", ORGANIZATION_ERROR_CODES.USER_IS_NOT_A_MEMBER_OF_THE_ORGANIZATION);
631
635
  if (!await hasPermission({
632
636
  role: currentMember.role,
633
637
  options: ctx.context.orgOptions,
634
638
  permissions: { member: ["delete"] },
635
- organizationId: session.session.activeOrganizationId
639
+ organizationId
636
640
  }, ctx)) throw APIError.from("FORBIDDEN", ORGANIZATION_ERROR_CODES.YOU_ARE_NOT_ALLOWED_TO_REMOVE_A_TEAM_MEMBER);
637
641
  if (!await adapter.findMemberByOrgId({
638
642
  userId: ctx.body.userId,
639
- organizationId: session.session.activeOrganizationId
643
+ organizationId
640
644
  })) throw APIError.from("BAD_REQUEST", ORGANIZATION_ERROR_CODES.USER_IS_NOT_A_MEMBER_OF_THE_ORGANIZATION);
641
645
  const team = await adapter.findTeamById({
642
646
  teamId: ctx.body.teamId,
643
- organizationId: session.session.activeOrganizationId
647
+ organizationId
644
648
  });
645
649
  if (!team) throw APIError.from("BAD_REQUEST", ORGANIZATION_ERROR_CODES.TEAM_NOT_FOUND);
646
- const organization = await adapter.findOrganizationById(session.session.activeOrganizationId);
650
+ const organization = await adapter.findOrganizationById(organizationId);
647
651
  if (!organization) throw APIError.from("BAD_REQUEST", ORGANIZATION_ERROR_CODES.ORGANIZATION_NOT_FOUND);
648
652
  const userBeingRemoved = await ctx.context.internalAdapter.findUserById(ctx.body.userId);
649
653
  if (!userBeingRemoved) throw APIError.fromStatus("BAD_REQUEST", { message: "User not found" });