@robelest/convex-auth 0.0.1

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 (280) hide show
  1. package/README.md +6 -0
  2. package/dist/bin.cjs +27733 -0
  3. package/dist/client/index.d.ts +49 -0
  4. package/dist/client/index.d.ts.map +1 -0
  5. package/dist/client/index.js +283 -0
  6. package/dist/client/index.js.map +1 -0
  7. package/dist/component/_generated/api.d.ts +36 -0
  8. package/dist/component/_generated/api.d.ts.map +1 -0
  9. package/dist/component/_generated/api.js +31 -0
  10. package/dist/component/_generated/api.js.map +1 -0
  11. package/dist/component/_generated/component.d.ts +295 -0
  12. package/dist/component/_generated/component.d.ts.map +1 -0
  13. package/dist/component/_generated/component.js +11 -0
  14. package/dist/component/_generated/component.js.map +1 -0
  15. package/dist/component/_generated/dataModel.d.ts +46 -0
  16. package/dist/component/_generated/dataModel.d.ts.map +1 -0
  17. package/dist/component/_generated/dataModel.js +11 -0
  18. package/dist/component/_generated/dataModel.js.map +1 -0
  19. package/dist/component/_generated/server.d.ts +121 -0
  20. package/dist/component/_generated/server.d.ts.map +1 -0
  21. package/dist/component/_generated/server.js +78 -0
  22. package/dist/component/_generated/server.js.map +1 -0
  23. package/dist/component/convex.config.d.ts +3 -0
  24. package/dist/component/convex.config.d.ts.map +1 -0
  25. package/dist/component/convex.config.js +4 -0
  26. package/dist/component/convex.config.js.map +1 -0
  27. package/dist/component/index.d.ts +15 -0
  28. package/dist/component/index.d.ts.map +1 -0
  29. package/dist/component/index.js +13 -0
  30. package/dist/component/index.js.map +1 -0
  31. package/dist/component/public.d.ts +450 -0
  32. package/dist/component/public.d.ts.map +1 -0
  33. package/dist/component/public.js +528 -0
  34. package/dist/component/public.js.map +1 -0
  35. package/dist/component/schema.d.ts +107 -0
  36. package/dist/component/schema.d.ts.map +1 -0
  37. package/dist/component/schema.js +26 -0
  38. package/dist/component/schema.js.map +1 -0
  39. package/dist/providers/Anonymous.d.ts +50 -0
  40. package/dist/providers/Anonymous.d.ts.map +1 -0
  41. package/dist/providers/Anonymous.js +39 -0
  42. package/dist/providers/Anonymous.js.map +1 -0
  43. package/dist/providers/ConvexCredentials.d.ts +88 -0
  44. package/dist/providers/ConvexCredentials.d.ts.map +1 -0
  45. package/dist/providers/ConvexCredentials.js +37 -0
  46. package/dist/providers/ConvexCredentials.js.map +1 -0
  47. package/dist/providers/Email.d.ts +33 -0
  48. package/dist/providers/Email.d.ts.map +1 -0
  49. package/dist/providers/Email.js +50 -0
  50. package/dist/providers/Email.js.map +1 -0
  51. package/dist/providers/Password.d.ts +95 -0
  52. package/dist/providers/Password.d.ts.map +1 -0
  53. package/dist/providers/Password.js +174 -0
  54. package/dist/providers/Password.js.map +1 -0
  55. package/dist/providers/Phone.d.ts +22 -0
  56. package/dist/providers/Phone.d.ts.map +1 -0
  57. package/dist/providers/Phone.js +37 -0
  58. package/dist/providers/Phone.js.map +1 -0
  59. package/dist/server/convex_types.d.ts +17 -0
  60. package/dist/server/convex_types.d.ts.map +1 -0
  61. package/dist/server/convex_types.js +2 -0
  62. package/dist/server/convex_types.js.map +1 -0
  63. package/dist/server/cookies.d.ts +35 -0
  64. package/dist/server/cookies.d.ts.map +1 -0
  65. package/dist/server/cookies.js +34 -0
  66. package/dist/server/cookies.js.map +1 -0
  67. package/dist/server/implementation/db.d.ts +80 -0
  68. package/dist/server/implementation/db.d.ts.map +1 -0
  69. package/dist/server/implementation/db.js +59 -0
  70. package/dist/server/implementation/db.js.map +1 -0
  71. package/dist/server/implementation/index.d.ts +370 -0
  72. package/dist/server/implementation/index.d.ts.map +1 -0
  73. package/dist/server/implementation/index.js +521 -0
  74. package/dist/server/implementation/index.js.map +1 -0
  75. package/dist/server/implementation/mutations/createAccountFromCredentials.d.ts +33 -0
  76. package/dist/server/implementation/mutations/createAccountFromCredentials.d.ts.map +1 -0
  77. package/dist/server/implementation/mutations/createAccountFromCredentials.js +71 -0
  78. package/dist/server/implementation/mutations/createAccountFromCredentials.js.map +1 -0
  79. package/dist/server/implementation/mutations/createVerificationCode.d.ts +25 -0
  80. package/dist/server/implementation/mutations/createVerificationCode.d.ts.map +1 -0
  81. package/dist/server/implementation/mutations/createVerificationCode.js +84 -0
  82. package/dist/server/implementation/mutations/createVerificationCode.js.map +1 -0
  83. package/dist/server/implementation/mutations/index.d.ts +304 -0
  84. package/dist/server/implementation/mutations/index.d.ts.map +1 -0
  85. package/dist/server/implementation/mutations/index.js +108 -0
  86. package/dist/server/implementation/mutations/index.js.map +1 -0
  87. package/dist/server/implementation/mutations/invalidateSessions.d.ts +13 -0
  88. package/dist/server/implementation/mutations/invalidateSessions.d.ts.map +1 -0
  89. package/dist/server/implementation/mutations/invalidateSessions.js +35 -0
  90. package/dist/server/implementation/mutations/invalidateSessions.js.map +1 -0
  91. package/dist/server/implementation/mutations/modifyAccount.d.ts +23 -0
  92. package/dist/server/implementation/mutations/modifyAccount.d.ts.map +1 -0
  93. package/dist/server/implementation/mutations/modifyAccount.js +48 -0
  94. package/dist/server/implementation/mutations/modifyAccount.js.map +1 -0
  95. package/dist/server/implementation/mutations/refreshSession.d.ts +16 -0
  96. package/dist/server/implementation/mutations/refreshSession.d.ts.map +1 -0
  97. package/dist/server/implementation/mutations/refreshSession.js +116 -0
  98. package/dist/server/implementation/mutations/refreshSession.js.map +1 -0
  99. package/dist/server/implementation/mutations/retrieveAccountWithCredentials.d.ts +27 -0
  100. package/dist/server/implementation/mutations/retrieveAccountWithCredentials.d.ts.map +1 -0
  101. package/dist/server/implementation/mutations/retrieveAccountWithCredentials.js +55 -0
  102. package/dist/server/implementation/mutations/retrieveAccountWithCredentials.js.map +1 -0
  103. package/dist/server/implementation/mutations/signIn.d.ts +17 -0
  104. package/dist/server/implementation/mutations/signIn.d.ts.map +1 -0
  105. package/dist/server/implementation/mutations/signIn.js +26 -0
  106. package/dist/server/implementation/mutations/signIn.js.map +1 -0
  107. package/dist/server/implementation/mutations/signOut.d.ts +11 -0
  108. package/dist/server/implementation/mutations/signOut.d.ts.map +1 -0
  109. package/dist/server/implementation/mutations/signOut.js +24 -0
  110. package/dist/server/implementation/mutations/signOut.js.map +1 -0
  111. package/dist/server/implementation/mutations/userOAuth.d.ts +19 -0
  112. package/dist/server/implementation/mutations/userOAuth.d.ts.map +1 -0
  113. package/dist/server/implementation/mutations/userOAuth.js +84 -0
  114. package/dist/server/implementation/mutations/userOAuth.js.map +1 -0
  115. package/dist/server/implementation/mutations/verifier.d.ts +8 -0
  116. package/dist/server/implementation/mutations/verifier.d.ts.map +1 -0
  117. package/dist/server/implementation/mutations/verifier.js +19 -0
  118. package/dist/server/implementation/mutations/verifier.js.map +1 -0
  119. package/dist/server/implementation/mutations/verifierSignature.d.ts +15 -0
  120. package/dist/server/implementation/mutations/verifierSignature.d.ts.map +1 -0
  121. package/dist/server/implementation/mutations/verifierSignature.js +29 -0
  122. package/dist/server/implementation/mutations/verifierSignature.js.map +1 -0
  123. package/dist/server/implementation/mutations/verifyCodeAndSignIn.d.ts +21 -0
  124. package/dist/server/implementation/mutations/verifyCodeAndSignIn.d.ts.map +1 -0
  125. package/dist/server/implementation/mutations/verifyCodeAndSignIn.js +127 -0
  126. package/dist/server/implementation/mutations/verifyCodeAndSignIn.js.map +1 -0
  127. package/dist/server/implementation/provider.d.ts +6 -0
  128. package/dist/server/implementation/provider.d.ts.map +1 -0
  129. package/dist/server/implementation/provider.js +21 -0
  130. package/dist/server/implementation/provider.js.map +1 -0
  131. package/dist/server/implementation/rateLimit.d.ts +6 -0
  132. package/dist/server/implementation/rateLimit.d.ts.map +1 -0
  133. package/dist/server/implementation/rateLimit.js +76 -0
  134. package/dist/server/implementation/rateLimit.js.map +1 -0
  135. package/dist/server/implementation/redirects.d.ts +6 -0
  136. package/dist/server/implementation/redirects.d.ts.map +1 -0
  137. package/dist/server/implementation/redirects.js +40 -0
  138. package/dist/server/implementation/redirects.js.map +1 -0
  139. package/dist/server/implementation/refreshTokens.d.ts +40 -0
  140. package/dist/server/implementation/refreshTokens.d.ts.map +1 -0
  141. package/dist/server/implementation/refreshTokens.js +160 -0
  142. package/dist/server/implementation/refreshTokens.js.map +1 -0
  143. package/dist/server/implementation/sessions.d.ts +43 -0
  144. package/dist/server/implementation/sessions.d.ts.map +1 -0
  145. package/dist/server/implementation/sessions.js +94 -0
  146. package/dist/server/implementation/sessions.js.map +1 -0
  147. package/dist/server/implementation/signIn.d.ts +31 -0
  148. package/dist/server/implementation/signIn.d.ts.map +1 -0
  149. package/dist/server/implementation/signIn.js +148 -0
  150. package/dist/server/implementation/signIn.js.map +1 -0
  151. package/dist/server/implementation/tokens.d.ts +7 -0
  152. package/dist/server/implementation/tokens.d.ts.map +1 -0
  153. package/dist/server/implementation/tokens.js +18 -0
  154. package/dist/server/implementation/tokens.js.map +1 -0
  155. package/dist/server/implementation/types.d.ts +288 -0
  156. package/dist/server/implementation/types.d.ts.map +1 -0
  157. package/dist/server/implementation/types.js +182 -0
  158. package/dist/server/implementation/types.js.map +1 -0
  159. package/dist/server/implementation/users.d.ts +27 -0
  160. package/dist/server/implementation/users.d.ts.map +1 -0
  161. package/dist/server/implementation/users.js +181 -0
  162. package/dist/server/implementation/users.js.map +1 -0
  163. package/dist/server/implementation/utils.d.ts +17 -0
  164. package/dist/server/implementation/utils.d.ts.map +1 -0
  165. package/dist/server/implementation/utils.js +72 -0
  166. package/dist/server/implementation/utils.js.map +1 -0
  167. package/dist/server/index.d.ts +17 -0
  168. package/dist/server/index.d.ts.map +1 -0
  169. package/dist/server/index.js +54 -0
  170. package/dist/server/index.js.map +1 -0
  171. package/dist/server/oauth/authorizationUrl.d.ts +13 -0
  172. package/dist/server/oauth/authorizationUrl.d.ts.map +1 -0
  173. package/dist/server/oauth/authorizationUrl.js +91 -0
  174. package/dist/server/oauth/authorizationUrl.js.map +1 -0
  175. package/dist/server/oauth/callback.d.ts +19 -0
  176. package/dist/server/oauth/callback.d.ts.map +1 -0
  177. package/dist/server/oauth/callback.js +173 -0
  178. package/dist/server/oauth/callback.js.map +1 -0
  179. package/dist/server/oauth/checks.d.ts +52 -0
  180. package/dist/server/oauth/checks.d.ts.map +1 -0
  181. package/dist/server/oauth/checks.js +106 -0
  182. package/dist/server/oauth/checks.js.map +1 -0
  183. package/dist/server/oauth/convexAuth.d.ts +12 -0
  184. package/dist/server/oauth/convexAuth.d.ts.map +1 -0
  185. package/dist/server/oauth/convexAuth.js +137 -0
  186. package/dist/server/oauth/convexAuth.js.map +1 -0
  187. package/dist/server/oauth/lib/utils/customFetch.d.ts +9 -0
  188. package/dist/server/oauth/lib/utils/customFetch.d.ts.map +1 -0
  189. package/dist/server/oauth/lib/utils/customFetch.js +11 -0
  190. package/dist/server/oauth/lib/utils/customFetch.js.map +1 -0
  191. package/dist/server/oauth/lib/utils/providers.d.ts +3 -0
  192. package/dist/server/oauth/lib/utils/providers.d.ts.map +1 -0
  193. package/dist/server/oauth/lib/utils/providers.js +7 -0
  194. package/dist/server/oauth/lib/utils/providers.js.map +1 -0
  195. package/dist/server/oauth/providers/oauth.d.ts +43 -0
  196. package/dist/server/oauth/providers/oauth.d.ts.map +1 -0
  197. package/dist/server/oauth/providers/oauth.js +3 -0
  198. package/dist/server/oauth/providers/oauth.js.map +1 -0
  199. package/dist/server/oauth/types.d.ts +24 -0
  200. package/dist/server/oauth/types.d.ts.map +1 -0
  201. package/dist/server/oauth/types.js +5 -0
  202. package/dist/server/oauth/types.js.map +1 -0
  203. package/dist/server/provider_utils.d.ts +76 -0
  204. package/dist/server/provider_utils.d.ts.map +1 -0
  205. package/dist/server/provider_utils.js +177 -0
  206. package/dist/server/provider_utils.js.map +1 -0
  207. package/dist/server/types.d.ts +412 -0
  208. package/dist/server/types.d.ts.map +1 -0
  209. package/dist/server/types.js +2 -0
  210. package/dist/server/types.js.map +1 -0
  211. package/dist/server/utils.d.ts +3 -0
  212. package/dist/server/utils.d.ts.map +1 -0
  213. package/dist/server/utils.js +11 -0
  214. package/dist/server/utils.js.map +1 -0
  215. package/package.json +126 -0
  216. package/providers/Anonymous/package.json +6 -0
  217. package/providers/ConvexCredentials/package.json +6 -0
  218. package/providers/Email/package.json +6 -0
  219. package/providers/Password/package.json +6 -0
  220. package/providers/Phone/package.json +6 -0
  221. package/server/package.json +6 -0
  222. package/src/cli/command.ts +69 -0
  223. package/src/cli/generateKeys.ts +20 -0
  224. package/src/cli/index.ts +840 -0
  225. package/src/client/index.ts +415 -0
  226. package/src/component/_generated/api.ts +52 -0
  227. package/src/component/_generated/component.ts +586 -0
  228. package/src/component/_generated/dataModel.ts +60 -0
  229. package/src/component/_generated/server.ts +156 -0
  230. package/src/component/convex.config.ts +5 -0
  231. package/src/component/index.ts +40 -0
  232. package/src/component/public.ts +607 -0
  233. package/src/component/schema.ts +35 -0
  234. package/src/providers/Anonymous.ts +79 -0
  235. package/src/providers/ConvexCredentials.ts +108 -0
  236. package/src/providers/Email.ts +60 -0
  237. package/src/providers/Password.ts +253 -0
  238. package/src/providers/Phone.ts +46 -0
  239. package/src/server/convex_types.ts +55 -0
  240. package/src/server/cookies.ts +42 -0
  241. package/src/server/implementation/db.ts +125 -0
  242. package/src/server/implementation/index.ts +815 -0
  243. package/src/server/implementation/mutations/createAccountFromCredentials.ts +113 -0
  244. package/src/server/implementation/mutations/createVerificationCode.ts +139 -0
  245. package/src/server/implementation/mutations/index.ts +157 -0
  246. package/src/server/implementation/mutations/invalidateSessions.ts +47 -0
  247. package/src/server/implementation/mutations/modifyAccount.ts +65 -0
  248. package/src/server/implementation/mutations/refreshSession.ts +188 -0
  249. package/src/server/implementation/mutations/retrieveAccountWithCredentials.ts +87 -0
  250. package/src/server/implementation/mutations/signIn.ts +51 -0
  251. package/src/server/implementation/mutations/signOut.ts +38 -0
  252. package/src/server/implementation/mutations/userOAuth.ts +112 -0
  253. package/src/server/implementation/mutations/verifier.ts +29 -0
  254. package/src/server/implementation/mutations/verifierSignature.ts +44 -0
  255. package/src/server/implementation/mutations/verifyCodeAndSignIn.ts +205 -0
  256. package/src/server/implementation/provider.ts +38 -0
  257. package/src/server/implementation/rateLimit.ts +105 -0
  258. package/src/server/implementation/redirects.ts +58 -0
  259. package/src/server/implementation/refreshTokens.ts +221 -0
  260. package/src/server/implementation/sessions.ts +155 -0
  261. package/src/server/implementation/signIn.ts +253 -0
  262. package/src/server/implementation/tokens.ts +29 -0
  263. package/src/server/implementation/types.ts +220 -0
  264. package/src/server/implementation/users.ts +286 -0
  265. package/src/server/implementation/utils.ts +91 -0
  266. package/src/server/index.ts +74 -0
  267. package/src/server/oauth/NOTICE.txt +21 -0
  268. package/src/server/oauth/README.md +7 -0
  269. package/src/server/oauth/authorizationUrl.ts +113 -0
  270. package/src/server/oauth/callback.ts +243 -0
  271. package/src/server/oauth/checks.ts +136 -0
  272. package/src/server/oauth/convexAuth.ts +168 -0
  273. package/src/server/oauth/lib/utils/customFetch.ts +18 -0
  274. package/src/server/oauth/lib/utils/providers.ts +12 -0
  275. package/src/server/oauth/providers/oauth.ts +56 -0
  276. package/src/server/oauth/types.ts +60 -0
  277. package/src/server/provider_utils.ts +222 -0
  278. package/src/server/types.ts +470 -0
  279. package/src/server/utils.ts +12 -0
  280. package/src/test.ts +24 -0
@@ -0,0 +1,9 @@
1
+ import * as o from "oauth4webapi";
2
+ import type { InternalProvider } from "../../types";
3
+ import { OAuthConfig } from "@auth/core/providers/index.js";
4
+ export { customFetch } from "@auth/core";
5
+ type FetchOptResult = {
6
+ [o.customFetch]: typeof fetch;
7
+ };
8
+ export declare function fetchOpt(providerOrConfig: InternalProvider<"oauth" | "oidc"> | OAuthConfig<any>): FetchOptResult;
9
+ //# sourceMappingURL=customFetch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"customFetch.d.ts","sourceRoot":"","sources":["../../../../../src/server/oauth/lib/utils/customFetch.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAClC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAE5D,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,KAAK,cAAc,GAAG;IACpB,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,OAAO,KAAK,CAAC;CAC/B,CAAC;AAIF,wBAAgB,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,cAAc,CAEhH"}
@@ -0,0 +1,11 @@
1
+ // This file is adapted from packages/core/src/lib/utils/custom-fetch.ts in the @auth/core package (commit 5af1f30a32e64591abc50ae4d2dba4682e525431).
2
+ import * as o from "oauth4webapi";
3
+ import { customFetch } from "@auth/core";
4
+ // ConvexAuth:re-export the symbol from @auth/core
5
+ export { customFetch } from "@auth/core";
6
+ // ConvexAuth: Expose this internal function so we can use it.
7
+ // ConvexAuth: Make a version that works on InternalProvider and OAuthConfig
8
+ export function fetchOpt(providerOrConfig) {
9
+ return { [o.customFetch]: providerOrConfig[customFetch] ?? fetch };
10
+ }
11
+ //# sourceMappingURL=customFetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"customFetch.js","sourceRoot":"","sources":["../../../../../src/server/oauth/lib/utils/customFetch.ts"],"names":[],"mappings":"AAAA,qJAAqJ;AAErJ,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAElC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,kDAAkD;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAMzC,8DAA8D;AAC9D,4EAA4E;AAC5E,MAAM,UAAU,QAAQ,CAAC,gBAAuE;IAC9F,OAAO,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,gBAAgB,CAAC,WAAW,CAAC,IAAI,KAAK,EAAE,CAAC;AACrE,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { InternalProvider } from "../../types.js";
2
+ export declare function isOIDCProvider(provider: InternalProvider<"oidc" | "oauth">): provider is InternalProvider<"oidc">;
3
+ //# sourceMappingURL=providers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../../../../src/server/oauth/lib/utils/providers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,gBAAgB,CAAC,MAAM,GAAG,OAAO,CAAC,GAC3C,QAAQ,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAEtC"}
@@ -0,0 +1,7 @@
1
+ // This file maps to packages/core/src/lib/utils/providers.ts in the @auth/core package (commit 5af1f30a32e64591abc50ae4d2dba4682e525431).
2
+ export function isOIDCProvider(provider) {
3
+ return provider.type === "oidc";
4
+ }
5
+ // ConvexAuth: There are several more functions in the original file which we don't need,
6
+ // and are omitted here.
7
+ //# sourceMappingURL=providers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers.js","sourceRoot":"","sources":["../../../../../src/server/oauth/lib/utils/providers.ts"],"names":[],"mappings":"AAAA,0IAA0I;AAI1I,MAAM,UAAU,cAAc,CAC5B,QAA4C;IAE5C,OAAO,QAAQ,CAAC,IAAI,KAAK,MAAM,CAAC;AAClC,CAAC;AAED,yFAAyF;AACzF,wBAAwB"}
@@ -0,0 +1,43 @@
1
+ import { OAuth2Config, OAuthConfig, OAuthEndpointType, OIDCConfig, TokenEndpointHandler, UserinfoEndpointHandler } from "@auth/core/providers/index.js";
2
+ import { PrivateKey } from "oauth4webapi";
3
+ /**
4
+ * We parsed `authorization`, `token` and `userinfo`
5
+ * to always contain a valid `URL`, with the params
6
+ * @internal
7
+ */
8
+ export type OAuthConfigInternal<Profile> = Omit<OAuthConfig<Profile>, OAuthEndpointType | "redirectProxyUrl"> & {
9
+ authorization?: {
10
+ url: URL;
11
+ };
12
+ token?: {
13
+ url: URL;
14
+ request?: TokenEndpointHandler["request"];
15
+ clientPrivateKey?: CryptoKey | PrivateKey;
16
+ /**
17
+ * @internal
18
+ * @deprecated
19
+ */
20
+ conform?: TokenEndpointHandler["conform"];
21
+ };
22
+ userinfo?: {
23
+ url: URL;
24
+ request?: UserinfoEndpointHandler["request"];
25
+ };
26
+ /**
27
+ * Reconstructed from {@link OAuth2Config.redirectProxyUrl},
28
+ * adding the callback action and provider id onto the URL.
29
+ *
30
+ * If defined, it is favoured over {@link OAuthConfigInternal.callbackUrl} in the authorization request.
31
+ *
32
+ * When {@link InternalOptions.isOnRedirectProxy} is set, the actual value is saved in the decoded `state.origin` parameter.
33
+ *
34
+ * @example `"https://auth.example.com/api/auth/callback/:provider"`
35
+ *
36
+ */
37
+ redirectProxyUrl?: OAuth2Config<Profile>["redirectProxyUrl"];
38
+ } & Pick<Required<OAuthConfig<Profile>>, "clientId" | "checks" | "profile" | "account">;
39
+ export type OIDCConfigInternal<Profile> = OAuthConfigInternal<Profile> & {
40
+ checks: OIDCConfig<Profile>["checks"];
41
+ idToken: OIDCConfig<Profile>["idToken"];
42
+ };
43
+ //# sourceMappingURL=oauth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../../../src/server/oauth/providers/oauth.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,YAAY,EACZ,WAAW,EACX,iBAAiB,EACjB,UAAU,EACV,oBAAoB,EACpB,uBAAuB,EACxB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,CAAC,OAAO,IAAI,IAAI,CAC7C,WAAW,CAAC,OAAO,CAAC,EACpB,iBAAiB,GAAG,kBAAkB,CACvC,GAAG;IACF,aAAa,CAAC,EAAE;QAAE,GAAG,EAAE,GAAG,CAAA;KAAE,CAAC;IAC7B,KAAK,CAAC,EAAE;QACN,GAAG,EAAE,GAAG,CAAC;QACT,OAAO,CAAC,EAAE,oBAAoB,CAAC,SAAS,CAAC,CAAC;QAC1C,gBAAgB,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC;QAC1C;;;WAGG;QACH,OAAO,CAAC,EAAE,oBAAoB,CAAC,SAAS,CAAC,CAAC;KAC3C,CAAC;IACF,QAAQ,CAAC,EAAE;QAAE,GAAG,EAAE,GAAG,CAAC;QAAC,OAAO,CAAC,EAAE,uBAAuB,CAAC,SAAS,CAAC,CAAA;KAAE,CAAC;IACtE;;;;;;;;;;OAUG;IACH,gBAAgB,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,kBAAkB,CAAC,CAAC;CAC9D,GAAG,IAAI,CACJ,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,EAC9B,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAC9C,CAAC;AAEJ,MAAM,MAAM,kBAAkB,CAAC,OAAO,IAAI,mBAAmB,CAAC,OAAO,CAAC,GAAG;IACvE,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC;IACtC,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC;CACzC,CAAC"}
@@ -0,0 +1,3 @@
1
+ // This maps to packages/core/src/providers/oauth.ts in the @auth/core package (commit 5af1f30a32e64591abc50ae4d2dba4682e525431)
2
+ export {};
3
+ //# sourceMappingURL=oauth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../../../src/server/oauth/providers/oauth.ts"],"names":[],"mappings":"AAAA,gIAAgI"}
@@ -0,0 +1,24 @@
1
+ import * as AuthCoreJwt from "@auth/core/jwt";
2
+ import { CookieOption, CookiesOptions } from "@auth/core/types.js";
3
+ import { OAuthConfigInternal, OIDCConfigInternal } from "./providers/oauth.js";
4
+ import { ProviderType } from "@auth/core/providers/index.js";
5
+ import * as o from "oauth4webapi";
6
+ export type ConvexAuthProviderType = "oauth" | "oidc";
7
+ export type ConfigSource = "discovered" | "provided";
8
+ export type InternalProvider<T = ProviderType> = (T extends "oauth" ? OAuthConfigInternal<any> : T extends "oidc" ? OIDCConfigInternal<any> : never) & {
9
+ as: o.AuthorizationServer;
10
+ configSource: ConfigSource;
11
+ };
12
+ export type JWTOptions = AuthCoreJwt.JWTOptions & {
13
+ secret: string | string[];
14
+ };
15
+ /** @internal */
16
+ export interface InternalOptions<TProviderType extends ConvexAuthProviderType> {
17
+ provider: InternalProvider<TProviderType>;
18
+ /**
19
+ * `true` if the [Double-submit CSRF check](https://owasp.org/www-chapter-london/assets/slides/David_Johansson-Double_Defeat_of_Double-Submit_Cookie.pdf) was succesful
20
+ * or [`skipCSRFCheck`](https://authjs.dev/reference/core#skipcsrfcheck) was enabled.
21
+ */
22
+ cookies: Record<keyof CookiesOptions, CookieOption>;
23
+ }
24
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/server/oauth/types.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,WAAW,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAElC,MAAM,MAAM,sBAAsB,GAAG,OAAO,GAAG,MAAM,CAAC;AAEtD,MAAM,MAAM,YAAY,GAAG,YAAY,GAAG,UAAU,CAAC;AAGrD,MAAM,MAAM,gBAAgB,CAAC,CAAC,GAAG,YAAY,IAAI,CAAC,CAAC,SAAS,OAAO,GAC/D,mBAAmB,CAAC,GAAG,CAAC,GACxB,CAAC,SAAS,MAAM,GACd,kBAAkB,CAAC,GAAG,CAAC,GACvB,KAAK,CAAC,GAAI;IAAC,EAAE,EAAE,CAAC,CAAC,mBAAmB,CAAC;IAAC,YAAY,EAAE,YAAY,CAAA;CAAC,CAAA;AAIvE,MAAM,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,GAAG;IAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CAAE,CAAC;AAEhF,gBAAgB;AAChB,MAAM,WAAW,eAAe,CAAC,aAAa,SAAS,sBAAsB;IAK3E,QAAQ,EAAE,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAE1C;;;OAGG;IAaH,OAAO,EAAE,MAAM,CAAC,MAAM,cAAc,EAAE,YAAY,CAAC,CAAC;CASrD"}
@@ -0,0 +1,5 @@
1
+ // This maps to packages/core/src/types.ts in the @auth/core package (commit 5af1f30a32e64591abc50ae4d2dba4682e525431).
2
+ export {};
3
+ // ConvexAuth: There are several more types in the original file which we don't need,
4
+ // and are omitted here.
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/server/oauth/types.ts"],"names":[],"mappings":"AAAA,uHAAuH;;AA0DvH,qFAAqF;AACrF,wBAAwB"}
@@ -0,0 +1,76 @@
1
+ import { OAuth2Config, OAuthConfig, OAuthEndpointType, OIDCConfig } from "@auth/core/providers";
2
+ import { AuthProviderConfig, AuthProviderMaterializedConfig, ConvexAuthConfig } from "./types.js";
3
+ /**
4
+ * @internal
5
+ */
6
+ export declare function configDefaults(config_: ConvexAuthConfig): {
7
+ extraProviders: AuthProviderMaterializedConfig[];
8
+ theme: import("@auth/core/types.js").Theme;
9
+ providers: (OIDCConfig<any> | OAuth2Config<any> | import("./types.js").ConvexCredentialsConfig | import("./types.js").EmailConfig<import("convex/server").GenericDataModel> | import("./types.js").PhoneConfig<import("convex/server").GenericDataModel>)[];
10
+ component?: import("./types.js").AuthComponentApi;
11
+ session?: {
12
+ totalDurationMs?: number;
13
+ inactiveDurationMs?: number;
14
+ };
15
+ jwt?: {
16
+ durationMs?: number;
17
+ };
18
+ signIn?: {
19
+ maxFailedAttempsPerHour?: number;
20
+ };
21
+ callbacks?: {
22
+ redirect?: (params: {
23
+ redirectTo: string;
24
+ }) => Promise<string>;
25
+ createOrUpdateUser?: (ctx: import("convex/server").GenericMutationCtx<import("convex/server").AnyDataModel>, args: {
26
+ existingUserId: import("convex/values").GenericId<"user"> | null;
27
+ type: "oauth" | "credentials" | "email" | "phone" | "verification";
28
+ provider: AuthProviderMaterializedConfig;
29
+ profile: Record<string, unknown> & {
30
+ email?: string;
31
+ phone?: string;
32
+ emailVerified?: boolean;
33
+ phoneVerified?: boolean;
34
+ };
35
+ shouldLink?: boolean;
36
+ }) => Promise<import("convex/values").GenericId<"user">>;
37
+ afterUserCreatedOrUpdated?: (ctx: import("convex/server").GenericMutationCtx<import("convex/server").AnyDataModel>, args: {
38
+ userId: import("convex/values").GenericId<"user">;
39
+ existingUserId: import("convex/values").GenericId<"user"> | null;
40
+ type: "oauth" | "credentials" | "email" | "phone" | "verification";
41
+ provider: AuthProviderMaterializedConfig;
42
+ profile: Record<string, unknown> & {
43
+ email?: string;
44
+ phone?: string;
45
+ emailVerified?: boolean;
46
+ phoneVerified?: boolean;
47
+ };
48
+ shouldLink?: boolean;
49
+ }) => Promise<void>;
50
+ };
51
+ };
52
+ /**
53
+ * @internal
54
+ */
55
+ export declare function materializeProvider(provider: AuthProviderConfig): AuthProviderMaterializedConfig;
56
+ export declare const PLACEHOLDER_URL_HOST = "convexauth.mumbojumbo";
57
+ export declare function normalizeEndpoint(e?: OAuthConfig<any>[OAuthEndpointType], issuer?: string): {
58
+ url: URL;
59
+ request?: undefined;
60
+ conform?: undefined;
61
+ } | {
62
+ url: URL;
63
+ request: any;
64
+ conform: any;
65
+ } | undefined;
66
+ /**
67
+ * Deep merge two objects
68
+ *
69
+ * @internal
70
+ */
71
+ export declare function merge(target: any, ...sources: any[]): any;
72
+ /**
73
+ * @internal
74
+ */
75
+ export declare function listAvailableProviders(config: ReturnType<typeof configDefaults>, allowExtraProviders: boolean): string;
76
+ //# sourceMappingURL=provider_utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider_utils.d.ts","sourceRoot":"","sources":["../../src/server/provider_utils.ts"],"names":[],"mappings":"AAmBA,OAAO,EAEL,YAAY,EACZ,WAAW,EACX,iBAAiB,EACjB,UAAU,EAEX,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,kBAAkB,EAClB,8BAA8B,EAC9B,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,gBAAgB;;;;;;uBAKjD,CAAC;0BAK6C,CAAC;;;kBAalB,CAAC;;;+BAShB,CAAC;;;gBAuCuB,CAAC;;;0BAoB5C,CAAF;;;;;qBAsCa,CAAA;qBACG,CAAC;6BACf,CAAD;6BACO,CAAC;;sBAG4B,CAAC;;iCAwBS,CAAC;;;;;;qBA0B6gB,CAAC;qBAAyB,CAAC;6BAAiC,CAAC;6BAAkC,CAAC;;sBAAgI,CAAC;;;EAvK7xB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,kBAAkB,GAGhC,8BAA8B,CAC7D;AAwFD,eAAO,MAAM,oBAAoB,0BAA0B,CAAC;AAI5D,wBAAgB,iBAAiB,CAC/B,CAAC,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,iBAAiB,CAAC,EACvC,MAAM,CAAC,EAAE,MAAM;;;;;;;;cAmBhB;AAID;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,CAgBzD;AAMD;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,EACzC,mBAAmB,EAAE,OAAO,UAQ7B"}
@@ -0,0 +1,177 @@
1
+ // Some code adapted from Auth.js. Original license:
2
+ //
3
+ // ISC License
4
+ //
5
+ // Copyright (c) 2022-2024, Balázs Orbán
6
+ //
7
+ // Permission to use, copy, modify, and/or distribute this software for any
8
+ // purpose with or without fee is hereby granted, provided that the above
9
+ // copyright notice and this permission notice appear in all copies.
10
+ //
11
+ // THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
12
+ // WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
13
+ // MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
14
+ // ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
15
+ // WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
16
+ // ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
17
+ // OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
18
+ import { setEnvDefaults } from "@auth/core";
19
+ /**
20
+ * @internal
21
+ */
22
+ export function configDefaults(config_) {
23
+ const config = materializeAndDefaultProviders(config_);
24
+ // Collect extra providers
25
+ const extraProviders = config.providers
26
+ .filter((p) => p.type === "credentials")
27
+ .map((p) => p.extraProviders)
28
+ .flat()
29
+ .filter((p) => p !== undefined);
30
+ return {
31
+ ...config,
32
+ extraProviders: materializeProviders(extraProviders),
33
+ theme: config.theme ?? {
34
+ colorScheme: "auto",
35
+ logo: "",
36
+ brandColor: "",
37
+ buttonText: "",
38
+ },
39
+ };
40
+ }
41
+ /**
42
+ * @internal
43
+ */
44
+ export function materializeProvider(provider) {
45
+ const config = { providers: [provider] };
46
+ materializeAndDefaultProviders(config);
47
+ return config.providers[0];
48
+ }
49
+ function materializeProviders(providers) {
50
+ const config = { providers };
51
+ materializeAndDefaultProviders(config);
52
+ return config.providers;
53
+ }
54
+ function materializeAndDefaultProviders(config_) {
55
+ // Have to materialize first so that the correct env variables are used
56
+ const providers = config_.providers.map((provider) => providerDefaults(typeof provider === "function" ? provider() : provider));
57
+ const config = { ...config_, providers };
58
+ // Unfortunately mutates its argument
59
+ setEnvDefaults(process.env, config);
60
+ // Manually do this for new provider type
61
+ config.providers.forEach((provider) => {
62
+ if (provider.type === "phone") {
63
+ const ID = provider.id.toUpperCase().replace(/-/g, "_");
64
+ // Should not require this env var at push time, as the provider's
65
+ // implementation might not use it
66
+ provider.apiKey ??= process.env[`AUTH_${ID}_KEY`];
67
+ }
68
+ });
69
+ return config;
70
+ }
71
+ function providerDefaults(provider) {
72
+ // TODO: Add `redirectProxyUrl` to oauth providers
73
+ const merged = merge(provider, provider.options);
74
+ return merged.type === "oauth" || merged.type === "oidc"
75
+ ? normalizeOAuth(merged)
76
+ : merged;
77
+ }
78
+ const defaultProfile = (profile) => {
79
+ return stripUndefined({
80
+ id: profile.sub ?? profile.id ?? crypto.randomUUID(),
81
+ name: profile.name ?? profile.nickname ?? profile.preferred_username,
82
+ email: profile.email ?? undefined,
83
+ image: profile.picture ?? undefined,
84
+ });
85
+ };
86
+ const defaultAccount = (account) => {
87
+ return stripUndefined({
88
+ access_token: account.access_token,
89
+ id_token: account.id_token,
90
+ refresh_token: account.refresh_token,
91
+ expires_at: account.expires_at,
92
+ scope: account.scope,
93
+ token_type: account.token_type,
94
+ session_state: account.session_state,
95
+ });
96
+ };
97
+ function stripUndefined(o) {
98
+ const result = {};
99
+ for (const [k, v] of Object.entries(o))
100
+ v !== undefined && (result[k] = v);
101
+ return result;
102
+ }
103
+ function normalizeOAuth(c) {
104
+ if (c.issuer)
105
+ c.wellKnown ??= `${c.issuer}/.well-known/openid-configuration`;
106
+ const checks = c.checks ?? ["pkce"];
107
+ if (c.redirectProxyUrl) {
108
+ if (!checks.includes("state"))
109
+ checks.push("state");
110
+ c.redirectProxyUrl = `${c.redirectProxyUrl}/callback/${c.id}`;
111
+ }
112
+ return {
113
+ ...c,
114
+ checks,
115
+ profile: c.profile ?? defaultProfile,
116
+ account: c.account ?? defaultAccount,
117
+ };
118
+ }
119
+ export const PLACEHOLDER_URL_HOST = "convexauth.mumbojumbo";
120
+ const PLACEHOLDER_URL = `https://${PLACEHOLDER_URL_HOST}`;
121
+ export function normalizeEndpoint(e, issuer) {
122
+ if (!e && issuer)
123
+ return undefined;
124
+ if (typeof e === "string") {
125
+ return { url: new URL(e) };
126
+ }
127
+ // Placeholder URL is used to pass around the URL object
128
+ // even if the URL hasn't been specified: the `issuer`
129
+ // is used instead.
130
+ const url = new URL(e?.url ?? PLACEHOLDER_URL);
131
+ if (e?.params != null) {
132
+ for (const [key, value] of Object.entries(e.params)) {
133
+ url.searchParams.set(key, String(key === "claims" ? JSON.stringify(value) : value));
134
+ }
135
+ }
136
+ return { url, request: e?.request, conform: e?.conform };
137
+ }
138
+ // Source: https://stackoverflow.com/a/34749873/5364135
139
+ /**
140
+ * Deep merge two objects
141
+ *
142
+ * @internal
143
+ */
144
+ export function merge(target, ...sources) {
145
+ if (!sources.length)
146
+ return target;
147
+ const source = sources.shift();
148
+ if (isObject(target) && isObject(source)) {
149
+ for (const key in source) {
150
+ if (isObject(source[key])) {
151
+ if (!target[key])
152
+ Object.assign(target, { [key]: {} });
153
+ merge(target[key], source[key]);
154
+ }
155
+ else {
156
+ Object.assign(target, { [key]: source[key] });
157
+ }
158
+ }
159
+ }
160
+ return merge(target, ...sources);
161
+ }
162
+ /** Simple object check */
163
+ function isObject(item) {
164
+ return item && typeof item === "object" && !Array.isArray(item);
165
+ }
166
+ /**
167
+ * @internal
168
+ */
169
+ export function listAvailableProviders(config, allowExtraProviders) {
170
+ const availableProviders = config.providers
171
+ .concat(allowExtraProviders ? config.extraProviders : [])
172
+ .map((provider) => `\`${provider.id}\``);
173
+ return availableProviders.length > 0
174
+ ? availableProviders.join(", ")
175
+ : "no providers have been configured";
176
+ }
177
+ //# sourceMappingURL=provider_utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider_utils.js","sourceRoot":"","sources":["../../src/server/provider_utils.ts"],"names":[],"mappings":"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"}