@_mustachio/openauth 0.6.0

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 (192) hide show
  1. package/dist/esm/client.js +186 -0
  2. package/dist/esm/css.d.js +0 -0
  3. package/dist/esm/error.js +73 -0
  4. package/dist/esm/index.js +14 -0
  5. package/dist/esm/issuer.js +558 -0
  6. package/dist/esm/jwt.js +16 -0
  7. package/dist/esm/keys.js +113 -0
  8. package/dist/esm/pkce.js +35 -0
  9. package/dist/esm/provider/apple.js +28 -0
  10. package/dist/esm/provider/arctic.js +43 -0
  11. package/dist/esm/provider/code.js +58 -0
  12. package/dist/esm/provider/cognito.js +16 -0
  13. package/dist/esm/provider/discord.js +15 -0
  14. package/dist/esm/provider/facebook.js +24 -0
  15. package/dist/esm/provider/github.js +15 -0
  16. package/dist/esm/provider/google.js +25 -0
  17. package/dist/esm/provider/index.js +3 -0
  18. package/dist/esm/provider/jumpcloud.js +15 -0
  19. package/dist/esm/provider/keycloak.js +15 -0
  20. package/dist/esm/provider/linkedin.js +15 -0
  21. package/dist/esm/provider/m2m.js +17 -0
  22. package/dist/esm/provider/microsoft.js +24 -0
  23. package/dist/esm/provider/oauth2.js +119 -0
  24. package/dist/esm/provider/oidc.js +69 -0
  25. package/dist/esm/provider/passkey.js +315 -0
  26. package/dist/esm/provider/password.js +306 -0
  27. package/dist/esm/provider/provider.js +10 -0
  28. package/dist/esm/provider/slack.js +15 -0
  29. package/dist/esm/provider/spotify.js +15 -0
  30. package/dist/esm/provider/twitch.js +15 -0
  31. package/dist/esm/provider/x.js +16 -0
  32. package/dist/esm/provider/yahoo.js +15 -0
  33. package/dist/esm/random.js +27 -0
  34. package/dist/esm/storage/aws.js +39 -0
  35. package/dist/esm/storage/cloudflare.js +42 -0
  36. package/dist/esm/storage/dynamo.js +116 -0
  37. package/dist/esm/storage/memory.js +88 -0
  38. package/dist/esm/storage/storage.js +36 -0
  39. package/dist/esm/subject.js +7 -0
  40. package/dist/esm/ui/base.js +407 -0
  41. package/dist/esm/ui/code.js +151 -0
  42. package/dist/esm/ui/form.js +43 -0
  43. package/dist/esm/ui/icon.js +92 -0
  44. package/dist/esm/ui/passkey.js +329 -0
  45. package/dist/esm/ui/password.js +338 -0
  46. package/dist/esm/ui/select.js +187 -0
  47. package/dist/esm/ui/theme.js +115 -0
  48. package/dist/esm/util.js +54 -0
  49. package/dist/types/client.d.ts +466 -0
  50. package/dist/types/client.d.ts.map +1 -0
  51. package/dist/types/error.d.ts +77 -0
  52. package/dist/types/error.d.ts.map +1 -0
  53. package/dist/types/index.d.ts +20 -0
  54. package/dist/types/index.d.ts.map +1 -0
  55. package/dist/types/issuer.d.ts +465 -0
  56. package/dist/types/issuer.d.ts.map +1 -0
  57. package/dist/types/jwt.d.ts +6 -0
  58. package/dist/types/jwt.d.ts.map +1 -0
  59. package/dist/types/keys.d.ts +18 -0
  60. package/dist/types/keys.d.ts.map +1 -0
  61. package/dist/types/pkce.d.ts +7 -0
  62. package/dist/types/pkce.d.ts.map +1 -0
  63. package/dist/types/provider/apple.d.ts +108 -0
  64. package/dist/types/provider/apple.d.ts.map +1 -0
  65. package/dist/types/provider/arctic.d.ts +16 -0
  66. package/dist/types/provider/arctic.d.ts.map +1 -0
  67. package/dist/types/provider/code.d.ts +74 -0
  68. package/dist/types/provider/code.d.ts.map +1 -0
  69. package/dist/types/provider/cognito.d.ts +64 -0
  70. package/dist/types/provider/cognito.d.ts.map +1 -0
  71. package/dist/types/provider/discord.d.ts +38 -0
  72. package/dist/types/provider/discord.d.ts.map +1 -0
  73. package/dist/types/provider/facebook.d.ts +74 -0
  74. package/dist/types/provider/facebook.d.ts.map +1 -0
  75. package/dist/types/provider/github.d.ts +38 -0
  76. package/dist/types/provider/github.d.ts.map +1 -0
  77. package/dist/types/provider/google.d.ts +74 -0
  78. package/dist/types/provider/google.d.ts.map +1 -0
  79. package/dist/types/provider/index.d.ts +4 -0
  80. package/dist/types/provider/index.d.ts.map +1 -0
  81. package/dist/types/provider/jumpcloud.d.ts +38 -0
  82. package/dist/types/provider/jumpcloud.d.ts.map +1 -0
  83. package/dist/types/provider/keycloak.d.ts +67 -0
  84. package/dist/types/provider/keycloak.d.ts.map +1 -0
  85. package/dist/types/provider/linkedin.d.ts +6 -0
  86. package/dist/types/provider/linkedin.d.ts.map +1 -0
  87. package/dist/types/provider/m2m.d.ts +34 -0
  88. package/dist/types/provider/m2m.d.ts.map +1 -0
  89. package/dist/types/provider/microsoft.d.ts +89 -0
  90. package/dist/types/provider/microsoft.d.ts.map +1 -0
  91. package/dist/types/provider/oauth2.d.ts +133 -0
  92. package/dist/types/provider/oauth2.d.ts.map +1 -0
  93. package/dist/types/provider/oidc.d.ts +91 -0
  94. package/dist/types/provider/oidc.d.ts.map +1 -0
  95. package/dist/types/provider/passkey.d.ts +143 -0
  96. package/dist/types/provider/passkey.d.ts.map +1 -0
  97. package/dist/types/provider/password.d.ts +210 -0
  98. package/dist/types/provider/password.d.ts.map +1 -0
  99. package/dist/types/provider/provider.d.ts +29 -0
  100. package/dist/types/provider/provider.d.ts.map +1 -0
  101. package/dist/types/provider/slack.d.ts +59 -0
  102. package/dist/types/provider/slack.d.ts.map +1 -0
  103. package/dist/types/provider/spotify.d.ts +38 -0
  104. package/dist/types/provider/spotify.d.ts.map +1 -0
  105. package/dist/types/provider/twitch.d.ts +38 -0
  106. package/dist/types/provider/twitch.d.ts.map +1 -0
  107. package/dist/types/provider/x.d.ts +38 -0
  108. package/dist/types/provider/x.d.ts.map +1 -0
  109. package/dist/types/provider/yahoo.d.ts +38 -0
  110. package/dist/types/provider/yahoo.d.ts.map +1 -0
  111. package/dist/types/random.d.ts +3 -0
  112. package/dist/types/random.d.ts.map +1 -0
  113. package/dist/types/storage/aws.d.ts +4 -0
  114. package/dist/types/storage/aws.d.ts.map +1 -0
  115. package/dist/types/storage/cloudflare.d.ts +34 -0
  116. package/dist/types/storage/cloudflare.d.ts.map +1 -0
  117. package/dist/types/storage/dynamo.d.ts +65 -0
  118. package/dist/types/storage/dynamo.d.ts.map +1 -0
  119. package/dist/types/storage/memory.d.ts +49 -0
  120. package/dist/types/storage/memory.d.ts.map +1 -0
  121. package/dist/types/storage/storage.d.ts +15 -0
  122. package/dist/types/storage/storage.d.ts.map +1 -0
  123. package/dist/types/subject.d.ts +122 -0
  124. package/dist/types/subject.d.ts.map +1 -0
  125. package/dist/types/ui/base.d.ts +5 -0
  126. package/dist/types/ui/base.d.ts.map +1 -0
  127. package/dist/types/ui/code.d.ts +104 -0
  128. package/dist/types/ui/code.d.ts.map +1 -0
  129. package/dist/types/ui/form.d.ts +6 -0
  130. package/dist/types/ui/form.d.ts.map +1 -0
  131. package/dist/types/ui/icon.d.ts +6 -0
  132. package/dist/types/ui/icon.d.ts.map +1 -0
  133. package/dist/types/ui/passkey.d.ts +5 -0
  134. package/dist/types/ui/passkey.d.ts.map +1 -0
  135. package/dist/types/ui/password.d.ts +139 -0
  136. package/dist/types/ui/password.d.ts.map +1 -0
  137. package/dist/types/ui/select.d.ts +55 -0
  138. package/dist/types/ui/select.d.ts.map +1 -0
  139. package/dist/types/ui/theme.d.ts +207 -0
  140. package/dist/types/ui/theme.d.ts.map +1 -0
  141. package/dist/types/util.d.ts +8 -0
  142. package/dist/types/util.d.ts.map +1 -0
  143. package/package.json +51 -0
  144. package/src/client.ts +749 -0
  145. package/src/css.d.ts +4 -0
  146. package/src/error.ts +120 -0
  147. package/src/index.ts +26 -0
  148. package/src/issuer.ts +1302 -0
  149. package/src/jwt.ts +17 -0
  150. package/src/keys.ts +139 -0
  151. package/src/pkce.ts +40 -0
  152. package/src/provider/apple.ts +127 -0
  153. package/src/provider/arctic.ts +66 -0
  154. package/src/provider/code.ts +227 -0
  155. package/src/provider/cognito.ts +74 -0
  156. package/src/provider/discord.ts +45 -0
  157. package/src/provider/facebook.ts +84 -0
  158. package/src/provider/github.ts +45 -0
  159. package/src/provider/google.ts +85 -0
  160. package/src/provider/index.ts +3 -0
  161. package/src/provider/jumpcloud.ts +45 -0
  162. package/src/provider/keycloak.ts +75 -0
  163. package/src/provider/linkedin.ts +12 -0
  164. package/src/provider/m2m.ts +56 -0
  165. package/src/provider/microsoft.ts +100 -0
  166. package/src/provider/oauth2.ts +297 -0
  167. package/src/provider/oidc.ts +179 -0
  168. package/src/provider/passkey.ts +655 -0
  169. package/src/provider/password.ts +672 -0
  170. package/src/provider/provider.ts +33 -0
  171. package/src/provider/slack.ts +67 -0
  172. package/src/provider/spotify.ts +45 -0
  173. package/src/provider/twitch.ts +45 -0
  174. package/src/provider/x.ts +46 -0
  175. package/src/provider/yahoo.ts +45 -0
  176. package/src/random.ts +24 -0
  177. package/src/storage/aws.ts +59 -0
  178. package/src/storage/cloudflare.ts +77 -0
  179. package/src/storage/dynamo.ts +193 -0
  180. package/src/storage/memory.ts +135 -0
  181. package/src/storage/storage.ts +46 -0
  182. package/src/subject.ts +130 -0
  183. package/src/ui/base.tsx +118 -0
  184. package/src/ui/code.tsx +215 -0
  185. package/src/ui/form.tsx +40 -0
  186. package/src/ui/icon.tsx +95 -0
  187. package/src/ui/passkey.tsx +321 -0
  188. package/src/ui/password.tsx +405 -0
  189. package/src/ui/select.tsx +221 -0
  190. package/src/ui/theme.ts +319 -0
  191. package/src/ui/ui.css +252 -0
  192. package/src/util.ts +58 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slack.d.ts","sourceRoot":"","sources":["../../../src/provider/slack.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAkB,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAEjE,MAAM,WAAW,WAAY,SAAQ,mBAAmB;IACtD;;;;;OAKG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;;;;;;;OAQG;IACH,MAAM,EAAE,CAAC,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAC,EAAE,CAAA;CAC3C;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW;;;GAShD"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Use this provider to authenticate with Spotify.
3
+ *
4
+ * ```ts {5-8}
5
+ * import { SpotifyProvider } from "@openauthjs/openauth/provider/spotify"
6
+ *
7
+ * export default issuer({
8
+ * providers: {
9
+ * spotify: SpotifyProvider({
10
+ * clientID: "1234567890",
11
+ * clientSecret: "0987654321"
12
+ * })
13
+ * }
14
+ * })
15
+ * ```
16
+ *
17
+ * @packageDocumentation
18
+ */
19
+ import { type Oauth2WrappedConfig } from "./oauth2.js";
20
+ export interface SpotifyConfig extends Oauth2WrappedConfig {
21
+ }
22
+ /**
23
+ * Create a Spotify OAuth2 provider.
24
+ *
25
+ * @param config - The config for the provider.
26
+ * @example
27
+ * ```ts
28
+ * SpotifyProvider({
29
+ * clientID: "1234567890",
30
+ * clientSecret: "0987654321"
31
+ * })
32
+ * ```
33
+ */
34
+ export declare function SpotifyProvider(config: SpotifyConfig): import("./provider.js").Provider<{
35
+ tokenset: import("./oauth2.js").Oauth2Token;
36
+ clientID: string;
37
+ }>;
38
+ //# sourceMappingURL=spotify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spotify.d.ts","sourceRoot":"","sources":["../../../src/provider/spotify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAkB,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAEtE,MAAM,WAAW,aAAc,SAAQ,mBAAmB;CAAG;AAE7D;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,aAAa;;;GASpD"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Use this provider to authenticate with Twitch.
3
+ *
4
+ * ```ts {5-8}
5
+ * import { TwitchProvider } from "@openauthjs/openauth/provider/twitch"
6
+ *
7
+ * export default issuer({
8
+ * providers: {
9
+ * twitch: TwitchProvider({
10
+ * clientID: "1234567890",
11
+ * clientSecret: "0987654321"
12
+ * })
13
+ * }
14
+ * })
15
+ * ```
16
+ *
17
+ * @packageDocumentation
18
+ */
19
+ import { Oauth2WrappedConfig } from "./oauth2.js";
20
+ export interface TwitchConfig extends Oauth2WrappedConfig {
21
+ }
22
+ /**
23
+ * Create a Twitch OAuth2 provider.
24
+ *
25
+ * @param config - The config for the provider.
26
+ * @example
27
+ * ```ts
28
+ * TwitchProvider({
29
+ * clientID: "1234567890",
30
+ * clientSecret: "0987654321"
31
+ * })
32
+ * ```
33
+ */
34
+ export declare function TwitchProvider(config: TwitchConfig): import("./provider.js").Provider<{
35
+ tokenset: import("./oauth2.js").Oauth2Token;
36
+ clientID: string;
37
+ }>;
38
+ //# sourceMappingURL=twitch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"twitch.d.ts","sourceRoot":"","sources":["../../../src/provider/twitch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAkB,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAEjE,MAAM,WAAW,YAAa,SAAQ,mBAAmB;CAAG;AAE5D;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY;;;GASlD"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Use this provider to authenticate with X.com.
3
+ *
4
+ * ```ts {5-8}
5
+ * import { XProvider } from "@openauthjs/openauth/provider/x"
6
+ *
7
+ * export default issuer({
8
+ * providers: {
9
+ * x: XProvider({
10
+ * clientID: "1234567890",
11
+ * clientSecret: "0987654321"
12
+ * })
13
+ * }
14
+ * })
15
+ * ```
16
+ *
17
+ * @packageDocumentation
18
+ */
19
+ import { Oauth2WrappedConfig } from "./oauth2.js";
20
+ export interface XProviderConfig extends Oauth2WrappedConfig {
21
+ }
22
+ /**
23
+ * Create a X.com OAuth2 provider.
24
+ *
25
+ * @param config - The config for the provider.
26
+ * @example
27
+ * ```ts
28
+ * XProvider({
29
+ * clientID: "1234567890",
30
+ * clientSecret: "0987654321"
31
+ * })
32
+ * ```
33
+ */
34
+ export declare function XProvider(config: XProviderConfig): import("./provider.js").Provider<{
35
+ tokenset: import("./oauth2.js").Oauth2Token;
36
+ clientID: string;
37
+ }>;
38
+ //# sourceMappingURL=x.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"x.d.ts","sourceRoot":"","sources":["../../../src/provider/x.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAkB,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAEjE,MAAM,WAAW,eAAgB,SAAQ,mBAAmB;CAAG;AAE/D;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,eAAe;;;GAUhD"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Use this provider to authenticate with Yahoo.
3
+ *
4
+ * ```ts {5-8}
5
+ * import { YahooProvider } from "@openauthjs/openauth/provider/yahoo"
6
+ *
7
+ * export default issuer({
8
+ * providers: {
9
+ * yahoo: YahooProvider({
10
+ * clientID: "1234567890",
11
+ * clientSecret: "0987654321"
12
+ * })
13
+ * }
14
+ * })
15
+ * ```
16
+ *
17
+ * @packageDocumentation
18
+ */
19
+ import { Oauth2WrappedConfig } from "./oauth2.js";
20
+ export interface YahooConfig extends Oauth2WrappedConfig {
21
+ }
22
+ /**
23
+ * Create a Yahoo OAuth2 provider.
24
+ *
25
+ * @param config - The config for the provider.
26
+ * @example
27
+ * ```ts
28
+ * YahooProvider({
29
+ * clientID: "1234567890",
30
+ * clientSecret: "0987654321"
31
+ * })
32
+ * ```
33
+ */
34
+ export declare function YahooProvider(config: YahooConfig): import("./provider.js").Provider<{
35
+ tokenset: import("./oauth2.js").Oauth2Token;
36
+ clientID: string;
37
+ }>;
38
+ //# sourceMappingURL=yahoo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yahoo.d.ts","sourceRoot":"","sources":["../../../src/provider/yahoo.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAkB,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAEjE,MAAM,WAAW,WAAY,SAAQ,mBAAmB;CAAG;AAE3D;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW;;;GAShD"}
@@ -0,0 +1,3 @@
1
+ export declare function generateUnbiasedDigits(length: number): string;
2
+ export declare function timingSafeCompare(a: string, b: string): boolean;
3
+ //# sourceMappingURL=random.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"random.d.ts","sourceRoot":"","sources":["../../src/random.ts"],"names":[],"mappings":"AAEA,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAW7D;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAQ/D"}
@@ -0,0 +1,4 @@
1
+ import { AwsClient } from "aws4fetch";
2
+ export declare function client(): Promise<AwsClient>;
3
+ export type AwsOptions = Exclude<Parameters<AwsClient["fetch"]>[1], null | undefined>["aws"];
4
+ //# sourceMappingURL=aws.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aws.d.ts","sourceRoot":"","sources":["../../../src/storage/aws.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AA6BrC,wBAAsB,MAAM,IAAI,OAAO,CAAC,SAAS,CAAC,CAwBjD;AAED,MAAM,MAAM,UAAU,GAAG,OAAO,CAC9B,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EACjC,IAAI,GAAG,SAAS,CACjB,CAAC,KAAK,CAAC,CAAA"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Configure OpenAuth to use [Cloudflare KV](https://developers.cloudflare.com/kv/) as a
3
+ * storage adapter.
4
+ *
5
+ * ```ts
6
+ * import { CloudflareStorage } from "@openauthjs/openauth/storage/cloudflare"
7
+ *
8
+ * const storage = CloudflareStorage({
9
+ * namespace: "my-namespace"
10
+ * })
11
+ *
12
+ *
13
+ * export default issuer({
14
+ * storage,
15
+ * // ...
16
+ * })
17
+ * ```
18
+ *
19
+ * @packageDocumentation
20
+ */
21
+ import type { KVNamespace } from "@cloudflare/workers-types";
22
+ import { StorageAdapter } from "./storage.js";
23
+ /**
24
+ * Configure the Cloudflare KV store that's created.
25
+ */
26
+ export interface CloudflareStorageOptions {
27
+ namespace: KVNamespace;
28
+ }
29
+ /**
30
+ * Creates a Cloudflare KV store.
31
+ * @param options - The config for the adapter.
32
+ */
33
+ export declare function CloudflareStorage(options: CloudflareStorageOptions): StorageAdapter;
34
+ //# sourceMappingURL=cloudflare.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudflare.d.ts","sourceRoot":"","sources":["../../../src/storage/cloudflare.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAC5D,OAAO,EAAqB,cAAc,EAAE,MAAM,cAAc,CAAA;AAEhE;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,WAAW,CAAA;CACvB;AACD;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,wBAAwB,GAChC,cAAc,CAyChB"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Configure OpenAuth to use [DynamoDB](https://aws.amazon.com/dynamodb/) as a storage adapter.
3
+ *
4
+ * ```ts
5
+ * import { DynamoStorage } from "@openauthjs/openauth/storage/dynamo"
6
+ *
7
+ * const storage = DynamoStorage({
8
+ * table: "my-table",
9
+ * pk: "pk",
10
+ * sk: "sk"
11
+ * })
12
+ *
13
+ * export default issuer({
14
+ * storage,
15
+ * // ...
16
+ * })
17
+ * ```
18
+ *
19
+ * @packageDocumentation
20
+ */
21
+ import { StorageAdapter } from "./storage.js";
22
+ /**
23
+ * Configure the DynamoDB table that's created.
24
+ *
25
+ * @example
26
+ * ```ts
27
+ * {
28
+ * table: "my-table",
29
+ * pk: "pk",
30
+ * sk: "sk"
31
+ * }
32
+ * ```
33
+ */
34
+ export interface DynamoStorageOptions {
35
+ /**
36
+ * The name of the DynamoDB table.
37
+ */
38
+ table: string;
39
+ /**
40
+ * The primary key column name.
41
+ * @default "pk"
42
+ */
43
+ pk?: string;
44
+ /**
45
+ * The sort key column name.
46
+ * @default "sk"
47
+ */
48
+ sk?: string;
49
+ /**
50
+ * Endpoint URL for the DynamoDB service. Useful for local testing.
51
+ * @default "https://dynamodb.{region}.amazonaws.com"
52
+ */
53
+ endpoint?: string;
54
+ /**
55
+ * The name of the time to live attribute.
56
+ * @default "expiry"
57
+ */
58
+ ttl?: string;
59
+ }
60
+ /**
61
+ * Creates a DynamoDB store.
62
+ * @param options - The config for the adapter.
63
+ */
64
+ export declare function DynamoStorage(options: DynamoStorageOptions): StorageAdapter;
65
+ //# sourceMappingURL=dynamo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamo.d.ts","sourceRoot":"","sources":["../../../src/storage/dynamo.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,EAAW,cAAc,EAAE,MAAM,cAAc,CAAA;AAEtD;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;IACb;;;OAGG;IACH,EAAE,CAAC,EAAE,MAAM,CAAA;IACX;;;OAGG;IACH,EAAE,CAAC,EAAE,MAAM,CAAA;IACX;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,cAAc,CA6H3E"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Configure OpenAuth to use a simple in-memory store.
3
+ *
4
+ * :::caution
5
+ * This is not meant to be used in production.
6
+ * :::
7
+ *
8
+ * This is useful for testing and development. It's not meant to be used in production.
9
+ *
10
+ * ```ts
11
+ * import { MemoryStorage } from "@openauthjs/openauth/storage/memory"
12
+ *
13
+ * const storage = MemoryStorage()
14
+ *
15
+ * export default issuer({
16
+ * storage,
17
+ * // ...
18
+ * })
19
+ * ```
20
+ *
21
+ * Optionally, you can persist the store to a file.
22
+ *
23
+ * ```ts
24
+ * MemoryStorage({
25
+ * persist: "./persist.json"
26
+ * })
27
+ * ```
28
+ *
29
+ * @packageDocumentation
30
+ */
31
+ import { StorageAdapter } from "./storage.js";
32
+ /**
33
+ * Configure the memory store.
34
+ */
35
+ export interface MemoryStorageOptions {
36
+ /**
37
+ * Optionally, backup the store to a file. So it'll be persisted when the issuer restarts.
38
+ *
39
+ * @example
40
+ * ```ts
41
+ * {
42
+ * persist: "./persist.json"
43
+ * }
44
+ * ```
45
+ */
46
+ persist?: string;
47
+ }
48
+ export declare function MemoryStorage(input?: MemoryStorageOptions): StorageAdapter;
49
+ //# sourceMappingURL=memory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../src/storage/memory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,EAAqB,cAAc,EAAE,MAAM,cAAc,CAAA;AAIhE;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;;;;;;OASG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AACD,wBAAgB,aAAa,CAAC,KAAK,CAAC,EAAE,oBAAoB,GAAG,cAAc,CAoF1E"}
@@ -0,0 +1,15 @@
1
+ export interface StorageAdapter {
2
+ get(key: string[]): Promise<Record<string, any> | undefined>;
3
+ remove(key: string[]): Promise<void>;
4
+ set(key: string[], value: any, expiry?: Date): Promise<void>;
5
+ scan(prefix: string[]): AsyncIterable<[string[], any]>;
6
+ }
7
+ export declare function joinKey(key: string[]): string;
8
+ export declare function splitKey(key: string): string[];
9
+ export declare namespace Storage {
10
+ function get<T>(adapter: StorageAdapter, key: string[]): Promise<T | null>;
11
+ function set(adapter: StorageAdapter, key: string[], value: any, ttl?: number): Promise<void>;
12
+ function remove(adapter: StorageAdapter, key: string[]): Promise<void>;
13
+ function scan<T>(adapter: StorageAdapter, key: string[]): AsyncIterable<[string[], T]>;
14
+ }
15
+ //# sourceMappingURL=storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../src/storage/storage.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC,CAAA;IAC5D,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACpC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5D,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC,CAAA;CACvD;AAID,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,UAEpC;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,YAEnC;AAED,yBAAiB,OAAO,CAAC;IAIvB,SAAgB,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,EAAE,GACxB,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CACrD;IAED,SAAgB,GAAG,CACjB,OAAO,EAAE,cAAc,EACvB,GAAG,EAAE,MAAM,EAAE,EACb,KAAK,EAAE,GAAG,EACV,GAAG,CAAC,EAAE,MAAM,iBAIb;IAED,SAAgB,MAAM,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,EAAE,iBAE5D;IAED,SAAgB,IAAI,CAAC,CAAC,EACpB,OAAO,EAAE,cAAc,EACvB,GAAG,EAAE,MAAM,EAAE,GACZ,aAAa,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAE9B;CACF"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * Subjects are what the access token generated at the end of the auth flow will map to. Under
3
+ * the hood, the access token is a JWT that contains this data.
4
+ *
5
+ * #### Define subjects
6
+ *
7
+ * ```ts title="subjects.ts"
8
+ * import { object, string } from "valibot"
9
+ *
10
+ * const subjects = createSubjects({
11
+ * user: object({
12
+ * userID: string()
13
+ * })
14
+ * })
15
+ * ```
16
+ *
17
+ * We are using [valibot](https://github.com/fabian-hiller/valibot) here. You can use any
18
+ * validation library that's following the
19
+ * [standard-schema specification](https://github.com/standard-schema/standard-schema).
20
+ *
21
+ * :::tip
22
+ * You typically want to place subjects in its own file so it can be imported by all of your apps.
23
+ * :::
24
+ *
25
+ * You can start with one subject. Later you can add more for different types of users.
26
+ *
27
+ * #### Set the subjects
28
+ *
29
+ * Then you can pass it to the `issuer`.
30
+ *
31
+ * ```ts title="issuer.ts"
32
+ * import { subjects } from "./subjects"
33
+ *
34
+ * const app = issuer({
35
+ * providers: { ... },
36
+ * subjects,
37
+ * // ...
38
+ * })
39
+ * ```
40
+ *
41
+ * #### Add the subject payload
42
+ *
43
+ * When your user completes the flow, you can add the subject payload in the `success` callback.
44
+ *
45
+ * ```ts title="issuer.ts"
46
+ * const app = issuer({
47
+ * providers: { ... },
48
+ * subjects,
49
+ * async success(ctx, value) {
50
+ * let userID
51
+ * if (value.provider === "password") {
52
+ * console.log(value.email)
53
+ * userID = ... // lookup user or create them
54
+ * }
55
+ * return ctx.subject("user", {
56
+ * userID
57
+ * })
58
+ * },
59
+ * // ...
60
+ * })
61
+ * ```
62
+ *
63
+ * Here we are looking up the userID from our database and adding it to the subject payload.
64
+ *
65
+ * :::caution
66
+ * You should only store properties that won't change for the lifetime of the user.
67
+ * :::
68
+ *
69
+ * Since these will be stored in the access token, you should avoid storing information
70
+ * that'll change often. For example, if you store the user's username, you'll need to
71
+ * revoke the access token when the user changes their username.
72
+ *
73
+ * #### Decode the subject
74
+ *
75
+ * Now when your user logs in, you can use the OpenAuth client to decode the subject. For
76
+ * example, in our SSR app we can do the following.
77
+ *
78
+ * ```ts title="app/page.tsx"
79
+ * import { subjects } from "../subjects"
80
+ *
81
+ * const verified = await client.verify(subjects, cookies.get("access_token")!)
82
+ * console.log(verified.subject.properties.userID)
83
+ * ```
84
+ *
85
+ * All this is typesafe based on the shape of the subjects you defined.
86
+ *
87
+ * @packageDocumentation
88
+ */
89
+ import type { v1 } from "@standard-schema/spec";
90
+ import { Prettify } from "./util.js";
91
+ /**
92
+ * Subject schema is a map of types that are used to define the subjects.
93
+ */
94
+ export type SubjectSchema = Record<string, v1.StandardSchema>;
95
+ /** @internal */
96
+ export type SubjectPayload<T extends SubjectSchema> = Prettify<{
97
+ [type in keyof T & string]: {
98
+ type: type;
99
+ properties: v1.InferOutput<T[type]>;
100
+ };
101
+ }[keyof T & string]>;
102
+ /**
103
+ * Create a subject schema.
104
+ *
105
+ * @example
106
+ * ```ts
107
+ * const subjects = createSubjects({
108
+ * user: object({
109
+ * userID: string()
110
+ * }),
111
+ * admin: object({
112
+ * workspaceID: string()
113
+ * })
114
+ * })
115
+ * ```
116
+ *
117
+ * This is using [valibot](https://github.com/fabian-hiller/valibot) to define the shape of the
118
+ * subjects. You can use any validation library that's following the
119
+ * [standard-schema specification](https://github.com/standard-schema/standard-schema).
120
+ */
121
+ export declare function createSubjects<Schema extends SubjectSchema = {}>(types: Schema): Schema;
122
+ //# sourceMappingURL=subject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subject.d.ts","sourceRoot":"","sources":["../../src/subject.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuFG;AACH,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,uBAAuB,CAAA;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,cAAc,CAAC,CAAA;AAE7D,gBAAgB;AAChB,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,aAAa,IAAI,QAAQ,CAC5D;KACG,IAAI,IAAI,MAAM,CAAC,GAAG,MAAM,GAAG;QAC1B,IAAI,EAAE,IAAI,CAAA;QACV,UAAU,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;KACpC;CACF,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,CACpB,CAAA;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,cAAc,CAAC,MAAM,SAAS,aAAa,GAAG,EAAE,EAC9D,KAAK,EAAE,MAAM,GACZ,MAAM,CAER"}
@@ -0,0 +1,5 @@
1
+ import { PropsWithChildren } from "hono/jsx";
2
+ export declare function Layout(props: PropsWithChildren<{
3
+ size?: "small";
4
+ }>): import("hono/jsx/jsx-dev-runtime").JSX.Element;
5
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/ui/base.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAI5C,wBAAgB,MAAM,CACpB,KAAK,EAAE,iBAAiB,CAAC;IACvB,IAAI,CAAC,EAAE,OAAO,CAAA;CACf,CAAC,kDA8FH"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * Configure the UI that's used by the Code provider.
3
+ *
4
+ * ```ts {1,7-12}
5
+ * import { CodeUI } from "@openauthjs/openauth/ui/code"
6
+ * import { CodeProvider } from "@openauthjs/openauth/provider/code"
7
+ *
8
+ * export default issuer({
9
+ * providers: {
10
+ * code: CodeAdapter(
11
+ * CodeUI({
12
+ * copy: {
13
+ * code_info: "We'll send a pin code to your email"
14
+ * },
15
+ * sendCode: (claims, code) => console.log(claims.email, code)
16
+ * })
17
+ * )
18
+ * },
19
+ * // ...
20
+ * })
21
+ * ```
22
+ *
23
+ * @packageDocumentation
24
+ */
25
+ /** @jsxImportSource hono/jsx */
26
+ import { CodeProviderOptions, CodeProviderError } from "../provider/code.js";
27
+ declare const DEFAULT_COPY: {
28
+ /**
29
+ * Copy for the email input.
30
+ */
31
+ email_placeholder: string;
32
+ /**
33
+ * Error message when the email is invalid.
34
+ */
35
+ email_invalid: string;
36
+ /**
37
+ * Copy for the continue button.
38
+ */
39
+ button_continue: string;
40
+ /**
41
+ * Copy informing that the pin code will be emailed.
42
+ */
43
+ code_info: string;
44
+ /**
45
+ * Copy for the pin code input.
46
+ */
47
+ code_placeholder: string;
48
+ /**
49
+ * Error message when the code is invalid.
50
+ */
51
+ code_invalid: string;
52
+ /**
53
+ * Copy for when the code was sent.
54
+ */
55
+ code_sent: string;
56
+ /**
57
+ * Copy for when the code was resent.
58
+ */
59
+ code_resent: string;
60
+ /**
61
+ * Copy for the link to resend the code.
62
+ */
63
+ code_didnt_get: string;
64
+ /**
65
+ * Copy for the resend button.
66
+ */
67
+ code_resend: string;
68
+ };
69
+ export type CodeUICopy = typeof DEFAULT_COPY;
70
+ /**
71
+ * Configure the password UI.
72
+ */
73
+ export interface CodeUIOptions {
74
+ /**
75
+ * Callback to send the pin code to the user.
76
+ *
77
+ * The `claims` object contains the email or phone number of the user. You can send the code
78
+ * using this.
79
+ *
80
+ * @example
81
+ * ```ts
82
+ * async (claims, code) => {
83
+ * // Send the code via the claim
84
+ * }
85
+ * ```
86
+ */
87
+ sendCode: (claims: Record<string, string>, code: string) => Promise<void | CodeProviderError>;
88
+ /**
89
+ * Custom copy for the UI.
90
+ */
91
+ copy?: Partial<CodeUICopy>;
92
+ /**
93
+ * The mode to use for the input.
94
+ * @default "email"
95
+ */
96
+ mode?: "email" | "phone";
97
+ }
98
+ /**
99
+ * Creates a UI for the Code provider flow.
100
+ * @param props - Configure the UI.
101
+ */
102
+ export declare function CodeUI(props: CodeUIOptions): CodeProviderOptions;
103
+ export {};
104
+ //# sourceMappingURL=code.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code.d.ts","sourceRoot":"","sources":["../../../src/ui/code.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,gCAAgC;AAEhC,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAK5E,QAAA,MAAM,YAAY;IAChB;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;CAEJ,CAAA;AAED,MAAM,MAAM,UAAU,GAAG,OAAO,YAAY,CAAA;AAE5C;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;;;;;;;;;OAYG;IACH,QAAQ,EAAE,CACR,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,IAAI,EAAE,MAAM,KACT,OAAO,CAAC,IAAI,GAAG,iBAAiB,CAAC,CAAA;IACtC;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAA;IAC1B;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAA;CACzB;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,aAAa,GAAG,mBAAmB,CAsGhE"}
@@ -0,0 +1,6 @@
1
+ /** @jsxImportSource hono/jsx */
2
+ export declare function FormAlert(props: {
3
+ message?: string;
4
+ color?: "danger" | "success";
5
+ }): import("hono/jsx/jsx-dev-runtime").JSX.Element;
6
+ //# sourceMappingURL=form.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../../../src/ui/form.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,wBAAgB,SAAS,CAAC,KAAK,EAAE;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAA;CAC7B,kDAkCA"}
@@ -0,0 +1,6 @@
1
+ /** @jsxImportSource hono/jsx */
2
+ export declare const ICON_GITHUB: import("hono/jsx/jsx-dev-runtime").JSX.Element;
3
+ export declare const ICON_GOOGLE: import("hono/jsx/jsx-dev-runtime").JSX.Element;
4
+ export declare const ICON_EMAIL: import("hono/jsx/jsx-dev-runtime").JSX.Element;
5
+ export declare const ICON_SLACK: import("hono/jsx/jsx-dev-runtime").JSX.Element;
6
+ //# sourceMappingURL=icon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon.d.ts","sourceRoot":"","sources":["../../../src/ui/icon.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,eAAO,MAAM,WAAW,gDAWvB,CAAA;AAED,eAAO,MAAM,WAAW,gDAyBvB,CAAA;AAED,eAAO,MAAM,UAAU,gDAetB,CAAA;AAED,eAAO,MAAM,UAAU,gDAmCtB,CAAA"}
@@ -0,0 +1,5 @@
1
+ import { PasskeyProviderConfig } from "../provider/passkey.js";
2
+ type PasskeyUIOptions = Omit<PasskeyProviderConfig, "authorize" | "register">;
3
+ export declare function PasskeyUI(options: PasskeyUIOptions): PasskeyProviderConfig;
4
+ export {};
5
+ //# sourceMappingURL=passkey.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"passkey.d.ts","sourceRoot":"","sources":["../../../src/ui/passkey.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AA4C9D,KAAK,gBAAgB,GAAG,IAAI,CAAC,qBAAqB,EAAE,WAAW,GAAG,UAAU,CAAC,CAAA;AAE7E,wBAAgB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,qBAAqB,CAkR1E"}