@ic-reactor/react 3.5.1 → 3.7.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 (125) hide show
  1. package/README.md +28 -9
  2. package/dist/auth/authentication-manager.d.ts +66 -0
  3. package/dist/auth/authentication-manager.d.ts.map +1 -0
  4. package/dist/auth/authentication-manager.js +458 -0
  5. package/dist/auth/authentication-manager.js.map +1 -0
  6. package/dist/auth/constants.d.ts +18 -0
  7. package/dist/auth/constants.d.ts.map +1 -0
  8. package/dist/auth/constants.js +18 -0
  9. package/dist/auth/constants.js.map +1 -0
  10. package/dist/auth/createIdentityAttributeHooks.d.ts +14 -0
  11. package/dist/auth/createIdentityAttributeHooks.d.ts.map +1 -0
  12. package/dist/auth/createIdentityAttributeHooks.js +54 -0
  13. package/dist/auth/createIdentityAttributeHooks.js.map +1 -0
  14. package/dist/auth/identity-attributes-manager.d.ts +19 -0
  15. package/dist/auth/identity-attributes-manager.d.ts.map +1 -0
  16. package/dist/auth/identity-attributes-manager.js +94 -0
  17. package/dist/auth/identity-attributes-manager.js.map +1 -0
  18. package/dist/auth/identity-attributes.d.ts +19 -0
  19. package/dist/auth/identity-attributes.d.ts.map +1 -0
  20. package/dist/auth/identity-attributes.js +170 -0
  21. package/dist/auth/identity-attributes.js.map +1 -0
  22. package/dist/auth/index.d.ts +8 -0
  23. package/dist/auth/index.d.ts.map +1 -0
  24. package/dist/auth/index.js +8 -0
  25. package/dist/auth/index.js.map +1 -0
  26. package/dist/auth/types.d.ts +75 -0
  27. package/dist/auth/types.d.ts.map +1 -0
  28. package/dist/auth/types.js +2 -0
  29. package/dist/auth/types.js.map +1 -0
  30. package/dist/createActorHooks.d.ts +12 -12
  31. package/dist/createActorHooks.d.ts.map +1 -1
  32. package/dist/createActorHooks.js.map +1 -1
  33. package/dist/createInfiniteQuery.d.ts +32 -32
  34. package/dist/createInfiniteQuery.d.ts.map +1 -1
  35. package/dist/createInfiniteQuery.js +6 -6
  36. package/dist/createInfiniteQuery.js.map +1 -1
  37. package/dist/createMutation.d.ts +12 -1
  38. package/dist/createMutation.d.ts.map +1 -1
  39. package/dist/createMutation.js +11 -0
  40. package/dist/createMutation.js.map +1 -1
  41. package/dist/createQuery.d.ts +12 -2
  42. package/dist/createQuery.d.ts.map +1 -1
  43. package/dist/createQuery.js +15 -5
  44. package/dist/createQuery.js.map +1 -1
  45. package/dist/createSuspenseInfiniteQuery.d.ts +31 -31
  46. package/dist/createSuspenseInfiniteQuery.d.ts.map +1 -1
  47. package/dist/createSuspenseInfiniteQuery.js +6 -6
  48. package/dist/createSuspenseInfiniteQuery.js.map +1 -1
  49. package/dist/createSuspenseQuery.d.ts +2 -2
  50. package/dist/createSuspenseQuery.d.ts.map +1 -1
  51. package/dist/createSuspenseQuery.js.map +1 -1
  52. package/dist/defineReactor.d.ts +74 -0
  53. package/dist/defineReactor.d.ts.map +1 -0
  54. package/dist/defineReactor.js +75 -0
  55. package/dist/defineReactor.js.map +1 -0
  56. package/dist/{createAuthHooks.d.ts → hooks/createAuthHooks.d.ts} +6 -13
  57. package/dist/hooks/createAuthHooks.d.ts.map +1 -0
  58. package/dist/{createAuthHooks.js → hooks/createAuthHooks.js} +12 -57
  59. package/dist/hooks/createAuthHooks.js.map +1 -0
  60. package/dist/hooks/index.d.ts +2 -0
  61. package/dist/hooks/index.d.ts.map +1 -1
  62. package/dist/hooks/index.js +2 -0
  63. package/dist/hooks/index.js.map +1 -1
  64. package/dist/hooks/useActorInfiniteQuery.d.ts +9 -9
  65. package/dist/hooks/useActorInfiniteQuery.d.ts.map +1 -1
  66. package/dist/hooks/useActorInfiniteQuery.js +3 -1
  67. package/dist/hooks/useActorInfiniteQuery.js.map +1 -1
  68. package/dist/hooks/useActorMethod.d.ts +17 -17
  69. package/dist/hooks/useActorMethod.d.ts.map +1 -1
  70. package/dist/hooks/useActorMethod.js.map +1 -1
  71. package/dist/hooks/useActorMutation.d.ts +18 -7
  72. package/dist/hooks/useActorMutation.d.ts.map +1 -1
  73. package/dist/hooks/useActorMutation.js +11 -0
  74. package/dist/hooks/useActorMutation.js.map +1 -1
  75. package/dist/hooks/useActorQuery.d.ts +8 -8
  76. package/dist/hooks/useActorQuery.d.ts.map +1 -1
  77. package/dist/hooks/useActorQuery.js.map +1 -1
  78. package/dist/hooks/useActorSuspenseInfiniteQuery.d.ts +9 -9
  79. package/dist/hooks/useActorSuspenseInfiniteQuery.d.ts.map +1 -1
  80. package/dist/hooks/useActorSuspenseInfiniteQuery.js +3 -1
  81. package/dist/hooks/useActorSuspenseInfiniteQuery.js.map +1 -1
  82. package/dist/hooks/useActorSuspenseQuery.d.ts +8 -8
  83. package/dist/hooks/useActorSuspenseQuery.d.ts.map +1 -1
  84. package/dist/hooks/useActorSuspenseQuery.js.map +1 -1
  85. package/dist/index.d.ts +2 -1
  86. package/dist/index.d.ts.map +1 -1
  87. package/dist/index.js +2 -1
  88. package/dist/index.js.map +1 -1
  89. package/dist/types.d.ts +24 -24
  90. package/dist/types.d.ts.map +1 -1
  91. package/dist/utils.d.ts +3 -0
  92. package/dist/utils.d.ts.map +1 -1
  93. package/dist/utils.js +10 -2
  94. package/dist/utils.js.map +1 -1
  95. package/llms.txt +48 -0
  96. package/package.json +28 -22
  97. package/src/auth/authentication-manager.ts +519 -0
  98. package/src/auth/constants.ts +25 -0
  99. package/src/auth/createIdentityAttributeHooks.ts +83 -0
  100. package/src/auth/identity-attributes-manager.ts +127 -0
  101. package/src/auth/identity-attributes.ts +270 -0
  102. package/src/auth/index.ts +7 -0
  103. package/src/auth/types.ts +88 -0
  104. package/src/createActorHooks.ts +81 -49
  105. package/src/createInfiniteQuery.ts +153 -97
  106. package/src/createMutation.ts +34 -18
  107. package/src/createQuery.ts +92 -48
  108. package/src/createSuspenseInfiniteQuery.ts +165 -114
  109. package/src/createSuspenseQuery.ts +67 -41
  110. package/src/defineReactor.test.ts +70 -0
  111. package/src/defineReactor.ts +150 -0
  112. package/src/{createAuthHooks.ts → hooks/createAuthHooks.ts} +17 -98
  113. package/src/hooks/index.ts +4 -0
  114. package/src/hooks/useActorInfiniteQuery.ts +44 -30
  115. package/src/hooks/useActorMethod.ts +62 -53
  116. package/src/hooks/useActorMutation.ts +47 -30
  117. package/src/hooks/useActorQuery.ts +36 -32
  118. package/src/hooks/useActorSuspenseInfiniteQuery.ts +56 -30
  119. package/src/hooks/useActorSuspenseQuery.ts +42 -32
  120. package/src/index.ts +3 -1
  121. package/src/types.ts +76 -71
  122. package/src/utils.test.ts +14 -0
  123. package/src/utils.ts +15 -2
  124. package/dist/createAuthHooks.d.ts.map +0 -1
  125. package/dist/createAuthHooks.js.map +0 -1
package/README.md CHANGED
@@ -81,8 +81,10 @@ export function App() {
81
81
 
82
82
  - `createActorHooks(reactor)` for per-canister hooks like `useActorQuery` and
83
83
  `useActorMutation`
84
- - `createAuthHooks(clientManager)` for `useAuth`, `useAgentState`,
85
- `useUserPrincipal`, and identity attribute hooks
84
+ - `createAuthHooks(authentication)` for `useAuth`, `useAgentState`, and
85
+ `useUserPrincipal`
86
+ - `createIdentityAttributeHooks(identityAttributes)` for signed identity
87
+ attribute requests
86
88
  - direct reactor hooks like `useReactorQuery` when you want to pass the reactor
87
89
  instance at call time
88
90
  - factory helpers like `createQuery`, `createSuspenseQuery`,
@@ -136,16 +138,34 @@ const mutation = updateProfile.useMutation({
136
138
 
137
139
  ## Identity Attributes / OpenID email and profile values
138
140
 
139
- `createAuthHooks(clientManager)` exposes `useIdentityAttributes()` for signed
140
- identity attributes from `@icp-sdk/auth` v6. Existing `useAuth()`, `login()`,
141
- `logout()`, and `useUserPrincipal()` consumers keep the same IC Reactor API, but
142
- the configured auth client must support the v6 constructor/sign-in API.
141
+ Identity attributes use a dedicated `IdentityAttributesManager`, with React
142
+ bindings created by `createIdentityAttributeHooks`. The configured auth client
143
+ must support the `@icp-sdk/auth` v7 constructor, sign-in, sign-out, and
144
+ attribute-request APIs.
143
145
 
144
146
  ```tsx
145
- import { createAuthHooks } from "@ic-reactor/react"
147
+ // src/auth.ts
148
+ import {
149
+ AuthenticationManager,
150
+ IdentityAttributesManager,
151
+ createAuthHooks,
152
+ createIdentityAttributeHooks,
153
+ } from "@ic-reactor/react"
146
154
  import { clientManager } from "./reactor"
147
155
 
148
- const { useIdentityAttributes } = createAuthHooks(clientManager)
156
+ const authentication = new AuthenticationManager({ clientManager })
157
+ export const { useAuth, useAgentState, useUserPrincipal } =
158
+ createAuthHooks(authentication)
159
+
160
+ const identityAttributes = new IdentityAttributesManager(authentication)
161
+ export const { useIdentityAttributes } =
162
+ createIdentityAttributeHooks(identityAttributes)
163
+ ```
164
+
165
+ ```tsx
166
+ // src/RegisterWithOpenIdProvider.tsx
167
+ import { useIdentityAttributes } from "./auth"
168
+ import { backend } from "./reactor"
149
169
 
150
170
  function RegisterWithOpenIdProvider() {
151
171
  const {
@@ -162,7 +182,6 @@ function RegisterWithOpenIdProvider() {
162
182
  nonce,
163
183
  openIdProvider: "microsoft",
164
184
  keys: ["email", "name"],
165
- identityProvider: "https://beta.id.ai/authorize",
166
185
  windowOpenerFeatures: popupCenter(),
167
186
  })
168
187
 
@@ -0,0 +1,66 @@
1
+ import type { Identity } from "@icp-sdk/core/agent";
2
+ import type { AuthClientLike, AuthClientSignInOptions, AuthState, AuthenticationClientOptions, AuthenticationSignInOptions } from "./types";
3
+ import { ClientManager } from "@ic-reactor/core";
4
+ export interface AuthenticationManagerParameters {
5
+ clientManager: ClientManager;
6
+ authClient?: AuthClientLike;
7
+ identityProvider?: string | URL;
8
+ internetIdentityId?: string;
9
+ }
10
+ /**
11
+ * Manages Internet Identity sign-in, session restoration, and authentication
12
+ * state for a {@link ClientManager}.
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * const authentication = new AuthenticationManager({ clientManager })
17
+ * const identity = await authentication.authenticate()
18
+ * ```
19
+ */
20
+ export declare class AuthenticationManager {
21
+ private authClient?;
22
+ private authPromise?;
23
+ private authClientWasProvided;
24
+ private authStateRevision;
25
+ private authStateSubscribers;
26
+ private authClientConstructor?;
27
+ private authClientConstructorPromise?;
28
+ private authModuleMissing;
29
+ private authStateValue;
30
+ private readonly identityProvider?;
31
+ private readonly internetIdentityId?;
32
+ readonly clientManager: ClientManager;
33
+ /** The current authentication state. */
34
+ get authState(): AuthState;
35
+ constructor({ clientManager, authClient, identityProvider, internetIdentityId, }: AuthenticationManagerParameters);
36
+ /** @internal Used by IdentityAttributesManager. */
37
+ get client(): AuthClientLike | undefined;
38
+ subscribeAuthState(callback: (state: AuthState) => void): () => void;
39
+ /**
40
+ * Preloads and creates an AuthClient before a user gesture is needed.
41
+ */
42
+ prepareClient(options?: AuthenticationClientOptions): Promise<AuthClientLike | undefined>;
43
+ authenticate: () => Promise<Identity | undefined>;
44
+ login: (loginOptions?: AuthenticationSignInOptions) => Promise<void>;
45
+ logout: (options?: {
46
+ returnTo?: string;
47
+ }) => Promise<void>;
48
+ private initializeClient;
49
+ /** @internal Used by IdentityAttributesManager. */
50
+ signInOrRecoverIdentity(options?: AuthClientSignInOptions): Promise<Identity>;
51
+ private ensurePreparedClient;
52
+ private shouldRecreateClient;
53
+ private syncStateFromClient;
54
+ /** @internal Used by IdentityAttributesManager. */
55
+ ensureClient(options?: AuthenticationClientOptions): Promise<AuthClientLike | undefined>;
56
+ /** @internal Used by IdentityAttributesManager. */
57
+ commitIdentity(identity: Identity, isAuthenticated: boolean): Promise<void>;
58
+ /** @internal Used by IdentityAttributesManager. */
59
+ setAuthenticating(): void;
60
+ /** @internal Used by IdentityAttributesManager. */
61
+ setAuthenticationError(error: Error): void;
62
+ private getDefaultIdentityProvider;
63
+ private updateState;
64
+ private loadAuthClientConstructor;
65
+ }
66
+ //# sourceMappingURL=authentication-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authentication-manager.d.ts","sourceRoot":"","sources":["../../src/auth/authentication-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,KAAK,EACV,cAAc,EACd,uBAAuB,EACvB,SAAS,EACT,2BAA2B,EAC3B,2BAA2B,EAC5B,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,aAAa,EAAS,MAAM,kBAAkB,CAAA;AASvD,MAAM,WAAW,+BAA+B;IAC9C,aAAa,EAAE,aAAa,CAAA;IAC5B,UAAU,CAAC,EAAE,cAAc,CAAA;IAC3B,gBAAgB,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAQD;;;;;;;;;GASG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,UAAU,CAAC,CAAgB;IACnC,OAAO,CAAC,WAAW,CAAC,CAA+B;IACnD,OAAO,CAAC,qBAAqB,CAAQ;IACrC,OAAO,CAAC,iBAAiB,CAAI;IAC7B,OAAO,CAAC,oBAAoB,CAAwC;IACpE,OAAO,CAAC,qBAAqB,CAAC,CAAuB;IACrD,OAAO,CAAC,4BAA4B,CAAC,CAEpC;IACD,OAAO,CAAC,iBAAiB,CAAQ;IACjC,OAAO,CAAC,cAAc,CAKrB;IACD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAc;IAChD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAQ;IAC5C,SAAgB,aAAa,EAAE,aAAa,CAAA;IAE5C,wCAAwC;IACxC,IAAW,SAAS,IAAI,SAAS,CAEhC;gBAEW,EACV,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,kBAAkB,GACnB,EAAE,+BAA+B;IA2BlC,mDAAmD;IACnD,IAAW,MAAM,+BAEhB;IAEM,kBAAkB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI;IAS9D;;OAEG;IACU,aAAa,CAAC,OAAO,CAAC,EAAE,2BAA2B;IAiBzD,YAAY,QAAa,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAuD5D;IAEM,KAAK,GAAU,eAAe,2BAA2B,mBA2D/D;IAEM,MAAM,GAAU,UAAU;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,mBAerD;YAEa,gBAAgB;IAa9B,mDAAmD;IACtC,uBAAuB,CAClC,OAAO,CAAC,EAAE,uBAAuB,GAChC,OAAO,CAAC,QAAQ,CAAC;IAyBpB,OAAO,CAAC,oBAAoB;IAmB5B,OAAO,CAAC,oBAAoB;YAId,mBAAmB;IAmBjC,mDAAmD;IACtC,YAAY,CAAC,OAAO,CAAC,EAAE,2BAA2B;IAY/D,mDAAmD;IACtC,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,OAAO;IAQxE,mDAAmD;IAC5C,iBAAiB;IAIxB,mDAAmD;IAC5C,sBAAsB,CAAC,KAAK,EAAE,KAAK;IAI1C,OAAO,CAAC,0BAA0B;IAYlC,OAAO,CAAC,WAAW;YASL,yBAAyB;CAsCxC"}
@@ -0,0 +1,458 @@
1
+ import { isDev } from "@ic-reactor/core";
2
+ import { safeGetCanisterEnv } from "@icp-sdk/core/agent/canister-env";
3
+ import { IC_INTERNET_IDENTITY_PROVIDER, INTERNET_IDENTITY_PROVIDER_ENV_KEY, localInternetIdentityProvider, } from "./constants";
4
+ const AUTH_CLIENT_MODULE = "@icp-sdk/auth/client";
5
+ /**
6
+ * Manages Internet Identity sign-in, session restoration, and authentication
7
+ * state for a {@link ClientManager}.
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * const authentication = new AuthenticationManager({ clientManager })
12
+ * const identity = await authentication.authenticate()
13
+ * ```
14
+ */
15
+ export class AuthenticationManager {
16
+ /** The current authentication state. */
17
+ get authState() {
18
+ return this.authStateValue;
19
+ }
20
+ constructor({ clientManager, authClient, identityProvider, internetIdentityId, }) {
21
+ Object.defineProperty(this, "authClient", {
22
+ enumerable: true,
23
+ configurable: true,
24
+ writable: true,
25
+ value: void 0
26
+ });
27
+ Object.defineProperty(this, "authPromise", {
28
+ enumerable: true,
29
+ configurable: true,
30
+ writable: true,
31
+ value: void 0
32
+ });
33
+ Object.defineProperty(this, "authClientWasProvided", {
34
+ enumerable: true,
35
+ configurable: true,
36
+ writable: true,
37
+ value: false
38
+ });
39
+ Object.defineProperty(this, "authStateRevision", {
40
+ enumerable: true,
41
+ configurable: true,
42
+ writable: true,
43
+ value: 0
44
+ });
45
+ Object.defineProperty(this, "authStateSubscribers", {
46
+ enumerable: true,
47
+ configurable: true,
48
+ writable: true,
49
+ value: []
50
+ });
51
+ Object.defineProperty(this, "authClientConstructor", {
52
+ enumerable: true,
53
+ configurable: true,
54
+ writable: true,
55
+ value: void 0
56
+ });
57
+ Object.defineProperty(this, "authClientConstructorPromise", {
58
+ enumerable: true,
59
+ configurable: true,
60
+ writable: true,
61
+ value: void 0
62
+ });
63
+ Object.defineProperty(this, "authModuleMissing", {
64
+ enumerable: true,
65
+ configurable: true,
66
+ writable: true,
67
+ value: false
68
+ });
69
+ Object.defineProperty(this, "authStateValue", {
70
+ enumerable: true,
71
+ configurable: true,
72
+ writable: true,
73
+ value: {
74
+ identity: null,
75
+ isAuthenticating: false,
76
+ isAuthenticated: false,
77
+ error: undefined,
78
+ }
79
+ });
80
+ Object.defineProperty(this, "identityProvider", {
81
+ enumerable: true,
82
+ configurable: true,
83
+ writable: true,
84
+ value: void 0
85
+ });
86
+ Object.defineProperty(this, "internetIdentityId", {
87
+ enumerable: true,
88
+ configurable: true,
89
+ writable: true,
90
+ value: void 0
91
+ });
92
+ Object.defineProperty(this, "clientManager", {
93
+ enumerable: true,
94
+ configurable: true,
95
+ writable: true,
96
+ value: void 0
97
+ });
98
+ Object.defineProperty(this, "authenticate", {
99
+ enumerable: true,
100
+ configurable: true,
101
+ writable: true,
102
+ value: async () => {
103
+ if (this.authState.isAuthenticated) {
104
+ return this.authState.identity || undefined;
105
+ }
106
+ if (this.authPromise) {
107
+ return this.authPromise;
108
+ }
109
+ if (this.authModuleMissing) {
110
+ return undefined;
111
+ }
112
+ this.authPromise = (async () => {
113
+ if (isDev() && typeof window !== "undefined") {
114
+ console.info(`%cic-reactor:%c Authenticating...`, "color: #3b82f6; font-weight: bold", "color: inherit", {
115
+ network: this.clientManager.network,
116
+ authClient: this.authClient ? "Shared Instance" : "Dynamic Import",
117
+ });
118
+ }
119
+ this.updateState({ isAuthenticating: true });
120
+ try {
121
+ if (!this.authClient) {
122
+ const authClient = await this.initializeClient(getAuthClientOptions({
123
+ identityProvider: this.getDefaultIdentityProvider(),
124
+ }));
125
+ if (!authClient) {
126
+ this.updateState({ isAuthenticating: false });
127
+ return undefined;
128
+ }
129
+ }
130
+ const identity = await this.authClient.getIdentity();
131
+ const isAuthenticated = await this.authClient.isAuthenticated();
132
+ this.clientManager.updateAgent(identity);
133
+ this.updateState({
134
+ identity,
135
+ isAuthenticated,
136
+ isAuthenticating: false,
137
+ });
138
+ return identity;
139
+ }
140
+ catch (error) {
141
+ this.updateState({ error: error, isAuthenticating: false });
142
+ console.error("Authentication failed:", error);
143
+ throw error;
144
+ }
145
+ finally {
146
+ this.authPromise = undefined;
147
+ }
148
+ })();
149
+ return this.authPromise;
150
+ }
151
+ });
152
+ Object.defineProperty(this, "login", {
153
+ enumerable: true,
154
+ configurable: true,
155
+ writable: true,
156
+ value: async (loginOptions) => {
157
+ let didCompleteSignIn = false;
158
+ try {
159
+ const identityProvider = loginOptions?.identityProvider || this.getDefaultIdentityProvider();
160
+ const authClientOptions = getAuthClientOptions({
161
+ ...loginOptions,
162
+ identityProvider,
163
+ });
164
+ if (!this.ensurePreparedClient(authClientOptions)) {
165
+ await this.initializeClient(authClientOptions);
166
+ }
167
+ if (!this.authClient) {
168
+ await this.authenticate();
169
+ }
170
+ if (!this.authClient) {
171
+ throw new Error("Authentication module is missing or failed to initialize. To use login, please install the auth package: npm install @icp-sdk/auth");
172
+ }
173
+ this.updateState({ isAuthenticating: true, error: undefined });
174
+ const identity = await this.signInOrRecoverIdentity(getSignInOptions(loginOptions));
175
+ if (!this.clientManager.agentState.isInitialized) {
176
+ await this.clientManager.initializeAgent();
177
+ }
178
+ this.clientManager.updateAgent(identity);
179
+ this.updateState({
180
+ identity,
181
+ isAuthenticated: true,
182
+ isAuthenticating: false,
183
+ });
184
+ didCompleteSignIn = true;
185
+ try {
186
+ await loginOptions?.onSuccess?.();
187
+ }
188
+ catch (callbackError) {
189
+ this.updateState({ error: callbackError });
190
+ await loginOptions?.onError?.(callbackError.message);
191
+ throw callbackError;
192
+ }
193
+ }
194
+ catch (error) {
195
+ if (!didCompleteSignIn) {
196
+ await loginOptions?.onError?.(error.message);
197
+ this.updateState({
198
+ error: error,
199
+ isAuthenticating: false,
200
+ });
201
+ }
202
+ throw error;
203
+ }
204
+ }
205
+ });
206
+ Object.defineProperty(this, "logout", {
207
+ enumerable: true,
208
+ configurable: true,
209
+ writable: true,
210
+ value: async (options) => {
211
+ if (!this.authClient) {
212
+ throw new Error("Authentication module is missing or failed to initialize. To use logout, please install the auth package: npm install @icp-sdk/auth");
213
+ }
214
+ this.updateState({ isAuthenticating: true, error: undefined });
215
+ await this.authClient.signOut(options);
216
+ const identity = await this.authClient.getIdentity();
217
+ this.clientManager.updateAgent(identity);
218
+ this.updateState({
219
+ identity,
220
+ isAuthenticated: false,
221
+ isAuthenticating: false,
222
+ });
223
+ }
224
+ });
225
+ this.clientManager = clientManager;
226
+ const canisterEnv = typeof window !== "undefined" ? getAuthenticationCanisterEnv() : undefined;
227
+ this.identityProvider =
228
+ identityProvider ||
229
+ canisterEnv?.[INTERNET_IDENTITY_PROVIDER_ENV_KEY] ||
230
+ canisterEnv?.["PUBLIC_INTERNET_IDENTITY_PROVIDER"];
231
+ this.internetIdentityId =
232
+ internetIdentityId ||
233
+ canisterEnv?.["internet_identity"] ||
234
+ canisterEnv?.["PUBLIC_CANISTER_ID:internet_identity"] ||
235
+ canisterEnv?.["CANISTER_ID_INTERNET_IDENTITY"];
236
+ if (authClient) {
237
+ this.authClientWasProvided = true;
238
+ this.authClient = authClient;
239
+ this.syncStateFromClient(this.authStateRevision).catch((error) => {
240
+ this.updateState({ error: error, isAuthenticating: false });
241
+ });
242
+ }
243
+ else if (typeof window !== "undefined") {
244
+ this.loadAuthClientConstructor().catch(() => {
245
+ // Optional auth support is reported when an auth method is used.
246
+ });
247
+ }
248
+ }
249
+ /** @internal Used by IdentityAttributesManager. */
250
+ get client() {
251
+ return this.authClient;
252
+ }
253
+ subscribeAuthState(callback) {
254
+ this.authStateSubscribers.push(callback);
255
+ return () => {
256
+ this.authStateSubscribers = this.authStateSubscribers.filter((subscriber) => subscriber !== callback);
257
+ };
258
+ }
259
+ /**
260
+ * Preloads and creates an AuthClient before a user gesture is needed.
261
+ */
262
+ async prepareClient(options) {
263
+ const clientOptions = getAuthClientOptions({
264
+ ...options,
265
+ identityProvider: options?.identityProvider ?? this.getDefaultIdentityProvider(),
266
+ });
267
+ if (this.authClient &&
268
+ (!this.shouldRecreateClient(clientOptions) || this.authClientWasProvided)) {
269
+ return this.authClient;
270
+ }
271
+ return this.initializeClient(clientOptions);
272
+ }
273
+ async initializeClient(options) {
274
+ const AuthClient = await this.loadAuthClientConstructor();
275
+ if (!AuthClient) {
276
+ return undefined;
277
+ }
278
+ this.authClient = new AuthClient(options);
279
+ return this.authClient;
280
+ }
281
+ /** @internal Used by IdentityAttributesManager. */
282
+ async signInOrRecoverIdentity(options) {
283
+ if (!this.authClient) {
284
+ throw new Error("Authentication module is missing or failed to initialize. To use login, please install the auth package: npm install @icp-sdk/auth");
285
+ }
286
+ try {
287
+ return await this.authClient.signIn(options);
288
+ }
289
+ catch (error) {
290
+ const identity = await Promise.resolve(this.authClient.getIdentity()).catch(() => null);
291
+ const isAuthenticated = await Promise.resolve(this.authClient.isAuthenticated()).catch(() => false);
292
+ if (identity && isAuthenticated) {
293
+ return identity;
294
+ }
295
+ throw error;
296
+ }
297
+ }
298
+ ensurePreparedClient(options) {
299
+ if (this.authClient &&
300
+ (!this.shouldRecreateClient(options) || this.authClientWasProvided)) {
301
+ return this.authClient;
302
+ }
303
+ const AuthClient = this.authClientConstructor;
304
+ if (!AuthClient || this.authClientWasProvided) {
305
+ return undefined;
306
+ }
307
+ this.authClient = new AuthClient(options);
308
+ return this.authClient;
309
+ }
310
+ shouldRecreateClient(options) {
311
+ return !this.authClientWasProvided && hasAuthClientOptions(options);
312
+ }
313
+ async syncStateFromClient(revision = this.authStateRevision) {
314
+ if (!this.authClient) {
315
+ return;
316
+ }
317
+ const identity = await this.authClient.getIdentity();
318
+ const isAuthenticated = await this.authClient.isAuthenticated();
319
+ if (revision !== this.authStateRevision) {
320
+ return;
321
+ }
322
+ this.clientManager.updateAgent(identity);
323
+ this.updateState({
324
+ identity,
325
+ isAuthenticated,
326
+ isAuthenticating: false,
327
+ error: undefined,
328
+ });
329
+ }
330
+ /** @internal Used by IdentityAttributesManager. */
331
+ async ensureClient(options) {
332
+ const clientOptions = getAuthClientOptions({
333
+ ...options,
334
+ identityProvider: options?.identityProvider ?? this.getDefaultIdentityProvider(),
335
+ });
336
+ if (!this.ensurePreparedClient(clientOptions)) {
337
+ await this.initializeClient(clientOptions);
338
+ }
339
+ return this.authClient;
340
+ }
341
+ /** @internal Used by IdentityAttributesManager. */
342
+ async commitIdentity(identity, isAuthenticated) {
343
+ if (!this.clientManager.agentState.isInitialized) {
344
+ await this.clientManager.initializeAgent();
345
+ }
346
+ this.clientManager.updateAgent(identity);
347
+ this.updateState({ identity, isAuthenticated, isAuthenticating: false });
348
+ }
349
+ /** @internal Used by IdentityAttributesManager. */
350
+ setAuthenticating() {
351
+ this.updateState({ isAuthenticating: true, error: undefined });
352
+ }
353
+ /** @internal Used by IdentityAttributesManager. */
354
+ setAuthenticationError(error) {
355
+ this.updateState({ error, isAuthenticating: false });
356
+ }
357
+ getDefaultIdentityProvider() {
358
+ if (this.identityProvider) {
359
+ return this.identityProvider;
360
+ }
361
+ return this.clientManager.isLocal
362
+ ? localInternetIdentityProvider(Number(this.clientManager.agentHost?.port) || 4943, this.internetIdentityId)
363
+ : IC_INTERNET_IDENTITY_PROVIDER;
364
+ }
365
+ updateState(newState) {
366
+ if (isDev())
367
+ console.debug("[ic-reactor] Updating Auth State:", newState);
368
+ this.authStateRevision += 1;
369
+ this.authStateValue = { ...this.authStateValue, ...newState };
370
+ this.authStateSubscribers.forEach((subscriber) => subscriber(this.authStateValue));
371
+ }
372
+ async loadAuthClientConstructor() {
373
+ if (this.authClientConstructor) {
374
+ return this.authClientConstructor;
375
+ }
376
+ if (!this.authClientConstructorPromise) {
377
+ // Keep the optional auth peer out of non-auth bundles. Vite/Rollup/esbuild
378
+ // can otherwise try to resolve this package even when auth APIs are unused.
379
+ this.authClientConstructorPromise = import(
380
+ /* @vite-ignore */ AUTH_CLIENT_MODULE)
381
+ .then((authModule) => {
382
+ const AuthClient = authModule.AuthClient;
383
+ if (!AuthClient) {
384
+ throw new Error("@icp-sdk/auth/client did not export AuthClient");
385
+ }
386
+ this.authClientConstructor = AuthClient;
387
+ return AuthClient;
388
+ })
389
+ .catch((error) => {
390
+ this.authModuleMissing = true;
391
+ this.authClientConstructorPromise = undefined;
392
+ if (error instanceof Error &&
393
+ error.message.includes("did not export AuthClient")) {
394
+ throw error;
395
+ }
396
+ return undefined;
397
+ });
398
+ }
399
+ return this.authClientConstructorPromise;
400
+ }
401
+ }
402
+ function getAuthClientOptions(options) {
403
+ if (!options) {
404
+ return undefined;
405
+ }
406
+ return {
407
+ identityProvider: options.identityProvider,
408
+ windowOpenerFeatures: options.windowOpenerFeatures,
409
+ openIdProvider: getAuthClientOpenIdProvider(options.openIdProvider),
410
+ };
411
+ }
412
+ function getAuthClientOpenIdProvider(openIdProvider) {
413
+ return openIdProvider === "google" ||
414
+ openIdProvider === "apple" ||
415
+ openIdProvider === "microsoft"
416
+ ? openIdProvider
417
+ : undefined;
418
+ }
419
+ function hasAuthClientOptions(options) {
420
+ return Boolean(options?.identityProvider ||
421
+ options?.windowOpenerFeatures ||
422
+ options?.openIdProvider);
423
+ }
424
+ function getAuthenticationCanisterEnv() {
425
+ const canisterEnv = safeGetCanisterEnv();
426
+ if (canisterEnv) {
427
+ return canisterEnv;
428
+ }
429
+ if (typeof document === "undefined") {
430
+ return undefined;
431
+ }
432
+ const cookie = document.cookie
433
+ .split(";")
434
+ .find((part) => part.trim().startsWith("ic_env="));
435
+ const encodedValue = cookie?.split("=").slice(1).join("=")?.trim();
436
+ if (!encodedValue) {
437
+ return undefined;
438
+ }
439
+ const env = Object.fromEntries(decodeURIComponent(encodedValue)
440
+ .split("&")
441
+ .map((entry) => {
442
+ const separatorIndex = entry.indexOf("=");
443
+ return separatorIndex === -1
444
+ ? [entry, ""]
445
+ : [entry.slice(0, separatorIndex), entry.slice(separatorIndex + 1)];
446
+ }));
447
+ return Object.keys(env).length ? env : undefined;
448
+ }
449
+ function getSignInOptions(options) {
450
+ if (!options) {
451
+ return undefined;
452
+ }
453
+ return {
454
+ maxTimeToLive: options.maxTimeToLive,
455
+ targets: options.targets,
456
+ };
457
+ }
458
+ //# sourceMappingURL=authentication-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authentication-manager.js","sourceRoot":"","sources":["../../src/auth/authentication-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export declare const IC_INTERNET_IDENTITY_PROVIDER = "https://id.ai/authorize";
2
+ /**
3
+ * `ic_env` key used to provide a fully resolved Internet Identity URL.
4
+ */
5
+ export declare const INTERNET_IDENTITY_PROVIDER_ENV_KEY = "INTERNET_IDENTITY_PROVIDER";
6
+ /**
7
+ * Well-known Internet Identity canister ID used when deploying II locally.
8
+ */
9
+ export declare const LOCAL_INTERNET_IDENTITY_CANISTER_ID = "rdmx6-jaaaa-aaaaa-aaadq-cai";
10
+ /**
11
+ * Builds the local Internet Identity provider URL for the given replica port.
12
+ */
13
+ export declare const localInternetIdentityProvider: (port: number, canisterId?: string) => string;
14
+ /**
15
+ * Legacy default URL for local Internet Identity, using port `4943`.
16
+ */
17
+ export declare const LOCAL_INTERNET_IDENTITY_PROVIDER: string;
18
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/auth/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,6BAA6B,4BAA4B,CAAA;AAEtE;;GAEG;AACH,eAAO,MAAM,kCAAkC,+BAA+B,CAAA;AAE9E;;GAEG;AACH,eAAO,MAAM,mCAAmC,gCAAgC,CAAA;AAEhF;;GAEG;AACH,eAAO,MAAM,6BAA6B,GACxC,MAAM,MAAM,EACZ,aAAY,MAA4C,WACH,CAAA;AAEvD;;GAEG;AACH,eAAO,MAAM,gCAAgC,QACR,CAAA"}
@@ -0,0 +1,18 @@
1
+ export const IC_INTERNET_IDENTITY_PROVIDER = "https://id.ai/authorize";
2
+ /**
3
+ * `ic_env` key used to provide a fully resolved Internet Identity URL.
4
+ */
5
+ export const INTERNET_IDENTITY_PROVIDER_ENV_KEY = "INTERNET_IDENTITY_PROVIDER";
6
+ /**
7
+ * Well-known Internet Identity canister ID used when deploying II locally.
8
+ */
9
+ export const LOCAL_INTERNET_IDENTITY_CANISTER_ID = "rdmx6-jaaaa-aaaaa-aaadq-cai";
10
+ /**
11
+ * Builds the local Internet Identity provider URL for the given replica port.
12
+ */
13
+ export const localInternetIdentityProvider = (port, canisterId = LOCAL_INTERNET_IDENTITY_CANISTER_ID) => `http://${canisterId}.localhost:${port}/authorize`;
14
+ /**
15
+ * Legacy default URL for local Internet Identity, using port `4943`.
16
+ */
17
+ export const LOCAL_INTERNET_IDENTITY_PROVIDER = localInternetIdentityProvider(4943);
18
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/auth/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,6BAA6B,GAAG,yBAAyB,CAAA;AAEtE;;GAEG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,4BAA4B,CAAA;AAE9E;;GAEG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,6BAA6B,CAAA;AAEhF;;GAEG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAC3C,IAAY,EACZ,aAAqB,mCAAmC,EACxD,EAAE,CAAC,UAAU,UAAU,cAAc,IAAI,YAAY,CAAA;AAEvD;;GAEG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAC3C,6BAA6B,CAAC,IAAI,CAAC,CAAA"}