@ic-reactor/react 3.10.0 → 3.12.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.
package/README.md CHANGED
@@ -13,6 +13,17 @@ pnpm add @ic-reactor/react @icp-sdk/core @tanstack/react-query
13
13
  pnpm add @icp-sdk/auth
14
14
  ```
15
15
 
16
+ > **npm needs an override to install this set.** Every published
17
+ > `@icp-sdk/auth` peers `@icp-sdk/core@^5`, while this package needs `^6`, so a
18
+ > strict `npm install` fails with `ERESOLVE`. The metadata is stale rather than
19
+ > the versions being incompatible — auth v8 runs against core v6, and this
20
+ > repository's own suite exercises that combination. pnpm and yarn install it
21
+ > as-is; for npm, add:
22
+ >
23
+ > ```json
24
+ > { "overrides": { "@icp-sdk/auth": { "@icp-sdk/core": "$@icp-sdk/core" } } }
25
+ > ```
26
+
16
27
  `@icp-sdk/auth` is an optional peer. `AuthenticationManager` reaches it through a
17
28
  literal `import("@icp-sdk/auth/client")`, so Vite, Rollup and webpack code-split
18
29
  it into its own async chunk. That chunk is never fetched unless something
@@ -34,6 +34,13 @@ export declare class AuthenticationManager {
34
34
  private authStateValue;
35
35
  private readonly identityProvider?;
36
36
  private readonly internetIdentityId?;
37
+ /**
38
+ * Which authorize path the locally deployed Internet Identity serves, once
39
+ * probed. `undefined` means not probed yet; `null` means it serves no sign-in
40
+ * UI and login should fail with an explanation rather than open a popup onto
41
+ * a gateway error page.
42
+ */
43
+ private localAuthorizePath?;
37
44
  private readonly defaultClientOptions;
38
45
  readonly clientManager: ClientManager;
39
46
  /** The current authentication state. */
@@ -51,6 +58,14 @@ export declare class AuthenticationManager {
51
58
  * what browser popup blockers and the ICRC-29 transport require.
52
59
  */
53
60
  prepareClient(options?: AuthenticationClientOptions): Promise<AuthClientLike | undefined>;
61
+ /**
62
+ * Probe the local Internet Identity canister once, and remember what it
63
+ * serves.
64
+ *
65
+ * Only for the derived local provider: an explicitly configured
66
+ * `identityProvider` is the caller's business, and mainnet is fixed.
67
+ */
68
+ private ensureLocalAuthorizePath;
54
69
  /**
55
70
  * Returns an AuthClient without awaiting, or `undefined` when the auth
56
71
  * module has not been loaded yet.
@@ -1 +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,YAAY,CAAA;AACnB,OAAO,EAAE,aAAa,EAAwB,MAAM,kBAAkB,CAAA;AAUtE,MAAM,WAAW,+BAAgC,SAAQ,2BAA2B;IAClF,aAAa,EAAE,aAAa,CAAA;IAC5B;;;OAGG;IACH,UAAU,CAAC,EAAE,cAAc,CAAA;IAC3B,2DAA2D;IAC3D,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAMD;;;;;;;;;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,iBAAiB,CAAC,CAA6B;IACvD,OAAO,CAAC,cAAc,CAKrB;IACD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAc;IAChD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAQ;IAC5C,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA6B;IAClE,SAAgB,aAAa,EAAE,aAAa,CAAA;IAE5C,wCAAwC;IACxC,IAAW,SAAS,IAAI,SAAS,CAEhC;gBAEW,EACV,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EAClB,GAAG,aAAa,EACjB,EAAE,+BAA+B;IAiClC,mDAAmD;IACnD,IAAW,MAAM,+BAEhB;IAEM,kBAAkB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI;IAS9D;;;;;;;OAOG;IACU,aAAa,CAAC,OAAO,CAAC,EAAE,2BAA2B;IAUhE;;;;;;;OAOG;IACI,iBAAiB,CACtB,OAAO,CAAC,EAAE,2BAA2B,GACpC,cAAc,GAAG,SAAS;IAItB,YAAY,QAAa,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAqF5D;IAEM,KAAK,GAAU,eAAe,2BAA2B,mBAwD/D;IAEM,MAAM,GAAU,UAAU;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,mBAuBrD;YAEa,gBAAgB;IAc9B,mDAAmD;IACtC,uBAAuB,CAClC,OAAO,CAAC,EAAE,uBAAuB,GAChC,OAAO,CAAC,QAAQ,CAAC;IAyBpB,OAAO,CAAC,oBAAoB;IAiB5B;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;IAO5B;;;OAGG;IACH,OAAO,CAAC,oBAAoB;YAed,mBAAmB;IAmBjC,mDAAmD;IACtC,YAAY,CAAC,OAAO,CAAC,EAAE,2BAA2B;IAQ/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;CAkCxC"}
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,YAAY,CAAA;AACnB,OAAO,EAAE,aAAa,EAA2B,MAAM,kBAAkB,CAAA;AAgBzE,MAAM,WAAW,+BAAgC,SAAQ,2BAA2B;IAClF,aAAa,EAAE,aAAa,CAAA;IAC5B;;;OAGG;IACH,UAAU,CAAC,EAAE,cAAc,CAAA;IAC3B,2DAA2D;IAC3D,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAMD;;;;;;;;;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,iBAAiB,CAAC,CAA6B;IACvD,OAAO,CAAC,cAAc,CAKrB;IACD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAc;IAChD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAQ;IAC5C;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB,CAAC,CAAsB;IACjD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA6B;IAClE,SAAgB,aAAa,EAAE,aAAa,CAAA;IAE5C,wCAAwC;IACxC,IAAW,SAAS,IAAI,SAAS,CAEhC;gBAEW,EACV,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EAClB,GAAG,aAAa,EACjB,EAAE,+BAA+B;IAiClC,mDAAmD;IACnD,IAAW,MAAM,+BAEhB;IAEM,kBAAkB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI;IAS9D;;;;;;;OAOG;IACU,aAAa,CAAC,OAAO,CAAC,EAAE,2BAA2B;IAehE;;;;;;OAMG;YACW,wBAAwB;IA2BtC;;;;;;;OAOG;IACI,iBAAiB,CACtB,OAAO,CAAC,EAAE,2BAA2B,GACpC,cAAc,GAAG,SAAS;IAItB,YAAY,QAAa,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAqF5D;IAEM,KAAK,GAAU,eAAe,2BAA2B,mBAwD/D;IAEM,MAAM,GAAU,UAAU;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,mBAuBrD;YAEa,gBAAgB;IAc9B,mDAAmD;IACtC,uBAAuB,CAClC,OAAO,CAAC,EAAE,uBAAuB,GAChC,OAAO,CAAC,QAAQ,CAAC;IAyBpB,OAAO,CAAC,oBAAoB;IAiB5B;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;IAO5B;;;OAGG;IACH,OAAO,CAAC,oBAAoB;YAed,mBAAmB;IAmBjC,mDAAmD;IACtC,YAAY,CAAC,OAAO,CAAC,EAAE,2BAA2B;IAQ/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;IA0BlC,OAAO,CAAC,WAAW;YASL,yBAAyB;CAkCxC"}
@@ -1,7 +1,8 @@
1
- import { isDev, isMainnetHost } from "@ic-reactor/core";
1
+ import { isDev, allowsEnvRootKey } from "@ic-reactor/core";
2
2
  import { Principal } from "@icp-sdk/core/principal";
3
3
  import { safeGetCanisterEnv } from "@icp-sdk/core/agent/canister-env";
4
- import { IC_INTERNET_IDENTITY_PROVIDER, INTERNET_IDENTITY_PROVIDER_ENV_KEY, localInternetIdentityProvider, } from "./constants.js";
4
+ import { probeLocalInternetIdentity, localInternetIdentityUnavailableError, } from "./local-ii-probe.js";
5
+ import { IC_INTERNET_IDENTITY_PROVIDER, INTERNET_IDENTITY_PROVIDER_ENV_KEY, LOCAL_INTERNET_IDENTITY_CANISTER_ID, localInternetIdentityProvider, } from "./constants.js";
5
6
  /**
6
7
  * Manages Internet Identity sign-in, session restoration, and authentication
7
8
  * state for a {@link ClientManager}.
@@ -95,6 +96,18 @@ export class AuthenticationManager {
95
96
  writable: true,
96
97
  value: void 0
97
98
  });
99
+ /**
100
+ * Which authorize path the locally deployed Internet Identity serves, once
101
+ * probed. `undefined` means not probed yet; `null` means it serves no sign-in
102
+ * UI and login should fail with an explanation rather than open a popup onto
103
+ * a gateway error page.
104
+ */
105
+ Object.defineProperty(this, "localAuthorizePath", {
106
+ enumerable: true,
107
+ configurable: true,
108
+ writable: true,
109
+ value: void 0
110
+ });
98
111
  Object.defineProperty(this, "defaultClientOptions", {
99
112
  enumerable: true,
100
113
  configurable: true,
@@ -312,12 +325,42 @@ export class AuthenticationManager {
312
325
  * what browser popup blockers and the ICRC-29 transport require.
313
326
  */
314
327
  async prepareClient(options) {
328
+ // Before resolving options, because resolving them is what picks the
329
+ // provider URL. This is the last async point before `login()` has to stay
330
+ // inside the user gesture, so the answer has to be cached by now.
331
+ await this.ensureLocalAuthorizePath();
315
332
  const clientOptions = this.resolveClientOptions(options);
316
333
  if (this.authClient && !this.shouldRecreateClient(clientOptions)) {
317
334
  return this.authClient;
318
335
  }
319
336
  return this.initializeClient(clientOptions);
320
337
  }
338
+ /**
339
+ * Probe the local Internet Identity canister once, and remember what it
340
+ * serves.
341
+ *
342
+ * Only for the derived local provider: an explicitly configured
343
+ * `identityProvider` is the caller's business, and mainnet is fixed.
344
+ */
345
+ async ensureLocalAuthorizePath() {
346
+ if (this.localAuthorizePath !== undefined)
347
+ return;
348
+ if (this.identityProvider)
349
+ return;
350
+ if (!this.clientManager.isLocal)
351
+ return;
352
+ const canisterId = this.internetIdentityId ?? LOCAL_INTERNET_IDENTITY_CANISTER_ID;
353
+ const { path, inconclusive } = await probeLocalInternetIdentity(this.clientManager.agent, canisterId);
354
+ // An inconclusive probe must not change behaviour: the canister may be
355
+ // fine and merely unreachable from here, and a diagnostic that blocks a
356
+ // working login is worse than the failure it explains.
357
+ this.localAuthorizePath = inconclusive ? "/authorize" : path;
358
+ if (path === "/#authorize" && !inconclusive) {
359
+ console.warn(`[ic-reactor] Internet Identity canister ${canisterId} serves its sign-in UI at ` +
360
+ `"/" rather than "/authorize" — using the legacy #authorize flow. This is a ` +
361
+ `pre-2026 build; newer ones through release-2026-03-16 serve /authorize directly.`);
362
+ }
363
+ }
321
364
  /**
322
365
  * Returns an AuthClient without awaiting, or `undefined` when the auth
323
366
  * module has not been loaded yet.
@@ -439,9 +482,18 @@ export class AuthenticationManager {
439
482
  if (this.identityProvider) {
440
483
  return this.identityProvider;
441
484
  }
442
- return this.clientManager.isLocal
443
- ? localInternetIdentityProvider(Number(this.clientManager.agentHost?.port) || 4943, this.internetIdentityId)
444
- : IC_INTERNET_IDENTITY_PROVIDER;
485
+ if (!this.clientManager.isLocal) {
486
+ return IC_INTERNET_IDENTITY_PROVIDER;
487
+ }
488
+ const canisterId = this.internetIdentityId ?? LOCAL_INTERNET_IDENTITY_CANISTER_ID;
489
+ // `null` is the probe's positive finding that this build serves no sign-in
490
+ // UI. Throwing here surfaces an actionable message where the caller can see
491
+ // it, instead of opening a popup onto the gateway's verification-error page
492
+ // and leaving the app waiting until the user closes it.
493
+ if (this.localAuthorizePath === null) {
494
+ throw localInternetIdentityUnavailableError(canisterId);
495
+ }
496
+ return localInternetIdentityProvider(Number(this.clientManager.agentHost?.port) || 4943, this.internetIdentityId, this.localAuthorizePath);
445
497
  }
446
498
  updateState(newState) {
447
499
  if (isDev())
@@ -588,15 +640,20 @@ function acceptEnvIdentityProvider(value, clientManager) {
588
640
  if (pageOrigin && url.origin === pageOrigin) {
589
641
  return url.toString();
590
642
  }
591
- // `isMainnetHost` matches only the real boundary domains and defaults to true
592
- // for an unknown host, so custom testnets keep working while anything that
593
- // looks like mainnet fails closed. `clientManager.isLocal` would be wrong
594
- // here: it treats every unrecognized hostname as "ic".
595
- if (isMainnetHost(clientManager.agentHost?.toString())) {
643
+ // Positive allowlist, not `!isMainnetHost(...)`.
644
+ //
645
+ // The old comment here claimed this defaulted to true for an unknown host so
646
+ // that "anything that looks like mainnet fails closed". It did not:
647
+ // isMainnetHost defaults to true only for `undefined`, and returns false for
648
+ // every unrecognised host — so a dapp on a custom domain accepted an identity
649
+ // provider chosen by a cookie, and the ic_env cookie is writable by any
650
+ // sibling subdomain. Redirecting the Internet Identity flow is as severe as
651
+ // substituting the root key, so both now use the same test.
652
+ if (!allowsEnvRootKey(clientManager.agentHost?.toString())) {
596
653
  console.warn(`[ic-reactor] Ignoring the Internet Identity provider from the ic_env cookie ` +
597
- `("${url.origin}") because this reactor targets mainnet, where the provider ` +
598
- `is taken from configuration rather than the environment. Pass ` +
599
- `\`identityProvider\` to AuthenticationManager to use a custom provider on mainnet.`);
654
+ `("${url.origin}") because this reactor does not target a local replica, where ` +
655
+ `the provider is taken from configuration rather than the environment. Pass ` +
656
+ `\`identityProvider\` to AuthenticationManager to use a custom provider.`);
600
657
  return undefined;
601
658
  }
602
659
  return url.toString();
@@ -1 +1 @@
1
- {"version":3,"file":"authentication-manager.js","sourceRoot":"","sources":["../../src/auth/authentication-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"authentication-manager.js","sourceRoot":"","sources":["../../src/auth/authentication-manager.ts"],"names":[],"mappings":"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"}
@@ -9,8 +9,14 @@ export declare const INTERNET_IDENTITY_PROVIDER_ENV_KEY = "INTERNET_IDENTITY_PRO
9
9
  export declare const LOCAL_INTERNET_IDENTITY_CANISTER_ID = "rdmx6-jaaaa-aaaaa-aaadq-cai";
10
10
  /**
11
11
  * Builds the local Internet Identity provider URL for the given replica port.
12
+ *
13
+ * `authorizePath` selects the shape the installed build understands: modern
14
+ * builds serve `/authorize` as a real asset, while pre-2026 ones serve the SPA
15
+ * at `/` and drive the flow from a `#authorize` fragment. `AuthenticationManager`
16
+ * probes the canister and passes the right one; the default keeps the previous
17
+ * behaviour for direct callers.
12
18
  */
13
- export declare const localInternetIdentityProvider: (port: number, canisterId?: string) => string;
19
+ export declare const localInternetIdentityProvider: (port: number, canisterId?: string, authorizePath?: "/authorize" | "/#authorize") => string;
14
20
  /**
15
21
  * Legacy default URL for local Internet Identity, using port `4943`.
16
22
  */
@@ -1 +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"}
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;;;;;;;;GAQG;AACH,eAAO,MAAM,6BAA6B,GACxC,MAAM,MAAM,EACZ,aAAY,MAA4C,EACxD,gBAAe,YAAY,GAAG,aAA4B,WACC,CAAA;AAE7D;;GAEG;AACH,eAAO,MAAM,gCAAgC,QACR,CAAA"}
@@ -9,8 +9,14 @@ export const INTERNET_IDENTITY_PROVIDER_ENV_KEY = "INTERNET_IDENTITY_PROVIDER";
9
9
  export const LOCAL_INTERNET_IDENTITY_CANISTER_ID = "rdmx6-jaaaa-aaaaa-aaadq-cai";
10
10
  /**
11
11
  * Builds the local Internet Identity provider URL for the given replica port.
12
+ *
13
+ * `authorizePath` selects the shape the installed build understands: modern
14
+ * builds serve `/authorize` as a real asset, while pre-2026 ones serve the SPA
15
+ * at `/` and drive the flow from a `#authorize` fragment. `AuthenticationManager`
16
+ * probes the canister and passes the right one; the default keeps the previous
17
+ * behaviour for direct callers.
12
18
  */
13
- export const localInternetIdentityProvider = (port, canisterId = LOCAL_INTERNET_IDENTITY_CANISTER_ID) => `http://${canisterId}.localhost:${port}/authorize`;
19
+ export const localInternetIdentityProvider = (port, canisterId = LOCAL_INTERNET_IDENTITY_CANISTER_ID, authorizePath = "/authorize") => `http://${canisterId}.localhost:${port}${authorizePath}`;
14
20
  /**
15
21
  * Legacy default URL for local Internet Identity, using port `4943`.
16
22
  */
@@ -1 +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"}
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;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAC3C,IAAY,EACZ,aAAqB,mCAAmC,EACxD,gBAA8C,YAAY,EAC1D,EAAE,CAAC,UAAU,UAAU,cAAc,IAAI,GAAG,aAAa,EAAE,CAAA;AAE7D;;GAEG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAC3C,6BAA6B,CAAC,IAAI,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"identity-attributes-manager.d.ts","sourceRoot":"","sources":["../../src/auth/identity-attributes-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,uBAAuB,EACvB,mCAAmC,EACnC,yCAAyC,EAC1C,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AAOnE;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,yBAAyB;aACR,cAAc,EAAE,qBAAqB;gBAArC,cAAc,EAAE,qBAAqB;IAE1D,OAAO,GAAU,mEAOrB,mCAAmC,KAAG,OAAO,CAAC,uBAAuB,CAAC,CAyDxE;IAEM,aAAa,GAAI,mCAIrB,yCAAyC,KAAG,OAAO,CAAC,uBAAuB,CAAC,CAO9E;CACF"}
1
+ {"version":3,"file":"identity-attributes-manager.d.ts","sourceRoot":"","sources":["../../src/auth/identity-attributes-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,uBAAuB,EACvB,mCAAmC,EACnC,yCAAyC,EAC1C,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AAOnE;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,yBAAyB;aACR,cAAc,EAAE,qBAAqB;gBAArC,cAAc,EAAE,qBAAqB;IAE1D,OAAO,GAAU,mEAOrB,mCAAmC,KAAG,OAAO,CAAC,uBAAuB,CAAC,CAyDxE;IAEM,aAAa,GAAI,mCAIrB,yCAAyC,KAAG,OAAO,CAAC,uBAAuB,CAAC,CAO9E;CACF"}
@@ -36,7 +36,7 @@ export class IdentityAttributesManager {
36
36
  const preparedClient = this.authentication.getPreparedClient(clientOptions);
37
37
  const authClient = preparedClient ?? (await this.authentication.ensureClient(clientOptions));
38
38
  if (!authClient) {
39
- throw new Error("Authentication module is missing or failed to initialize. To request identity attributes, please install @icp-sdk/auth v7 or later, or provide a compatible authClient.");
39
+ throw new Error("Authentication module is missing or failed to initialize. To request identity attributes, please install @icp-sdk/auth v8, or provide a compatible authClient.");
40
40
  }
41
41
  this.authentication.setAuthenticating();
42
42
  try {
@@ -50,7 +50,7 @@ export class IdentityAttributesManager {
50
50
  : Promise.resolve(authClient.getIdentity());
51
51
  const requestPromise = authClient.requestAttributes({
52
52
  keys,
53
- nonce: toAuthClientNonce(authClient, nonce),
53
+ nonce: toAuthClientNonce(nonce),
54
54
  });
55
55
  const [signedAttributes, identity] = await Promise.all([
56
56
  requestPromise,
@@ -90,19 +90,18 @@ export class IdentityAttributesManager {
90
90
  }
91
91
  }
92
92
  /**
93
- * Bridges the two `@icp-sdk/auth` nonce contracts.
93
+ * Adapts our nonce input to the `@icp-sdk/auth` nonce contract.
94
94
  *
95
- * v8 takes `() => Promise<Uint8Array>` (it journals the value so a redirect
96
- * flow replays the same bytes); v7 takes `Uint8Array | Promise<Uint8Array>`.
97
- * Both open the transport channel synchronously for the deferred forms, so we
98
- * always hand over the deferred shape the installed client understands.
99
- * `memoize` only exists from v8 onwards, which makes it a reliable marker.
95
+ * v8 takes `() => Promise<Uint8Array>` — a thunk, so it can journal the value
96
+ * and replay the same bytes through a redirect flow. The thunk form also opens
97
+ * the transport channel synchronously, which is what preserves the user
98
+ * gesture.
99
+ *
100
+ * Until 3.12.0 this probed `typeof authClient.memoize === "function"` to detect
101
+ * v8 and fell back to a bare promise for v7. The peer range is now `^8.0.0`, so
102
+ * the probe would only ever take one branch.
100
103
  */
101
- function toAuthClientNonce(authClient, nonce) {
102
- const supportsNonceThunk = typeof authClient.memoize === "function";
103
- if (supportsNonceThunk) {
104
- return () => Promise.resolve(typeof nonce === "function" ? nonce() : nonce);
105
- }
106
- return Promise.resolve(typeof nonce === "function" ? nonce() : nonce);
104
+ function toAuthClientNonce(nonce) {
105
+ return () => Promise.resolve(typeof nonce === "function" ? nonce() : nonce);
107
106
  }
108
107
  //# sourceMappingURL=identity-attributes-manager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"identity-attributes-manager.js","sourceRoot":"","sources":["../../src/auth/identity-attributes-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"identity-attributes-manager.js","sourceRoot":"","sources":["../../src/auth/identity-attributes-manager.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,6BAA6B,EAC7B,qBAAqB,EACrB,iCAAiC,GAClC,MAAM,0BAA0B,CAAA;AAEjC;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAO,yBAAyB;IACpC,YAA4B,cAAqC;QAArD;;;;mBAAgB,cAAc;WAAuB;QAE1D;;;;mBAAU,KAAK,EAAE,EACtB,IAAI,EACJ,KAAK,EACL,MAAM,GAAG,IAAI,EACb,aAAa,EACb,OAAO,EACP,GAAG,aAAa,EACoB,EAAoC,EAAE;gBAC1E,4EAA4E;gBAC5E,0EAA0E;gBAC1E,0EAA0E;gBAC1E,qDAAqD;gBACrD,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAA;gBAC3E,MAAM,UAAU,GACd,cAAc,IAAI,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAA;gBAE3E,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,MAAM,IAAI,KAAK,CACb,gKAAgK,CACjK,CAAA;gBACH,CAAC;gBAED,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAA;gBAEvC,IAAI,CAAC;oBACH,wEAAwE;oBACxE,8DAA8D;oBAC9D,MAAM,eAAe,GAAG,MAAM;wBAC5B,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,uBAAuB,CAAC;4BAC1C,aAAa;4BACb,OAAO;yBACR,CAAC;wBACJ,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAA;oBAC7C,MAAM,cAAc,GAAG,UAAU,CAAC,iBAAiB,CAAC;wBAClD,IAAI;wBACJ,KAAK,EAAE,iBAAiB,CAAC,KAAK,CAAC;qBAChC,CAAC,CAAA;oBAEF,MAAM,CAAC,gBAAgB,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;wBACrD,cAAc;wBACd,eAAe;qBAChB,CAAC,CAAA;oBAEF,MAAM,aAAa,GAAG,QAAQ,IAAI,CAAC,MAAM,UAAU,CAAC,WAAW,EAAE,CAAC,CAAA;oBAClE,MAAM,eAAe,GAAG,MAAM,UAAU,CAAC,eAAe,EAAE,CAAA;oBAC1D,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,aAAa,EAAE,eAAe,CAAC,CAAA;oBAExE,MAAM,0BAA0B,GAC9B,iCAAiC,CAAC,gBAAgB,CAAC,CAAA;oBAErD,OAAO;wBACL,SAAS,EAAE,aAAa,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE;wBAChD,aAAa,EAAE,IAAI;wBACnB,gBAAgB,EAAE,0BAA0B;wBAC5C,iBAAiB,EAAE,6BAA6B,CAC9C,0BAA0B,CAAC,IAAI,EAC/B,IAAI,CACL;wBACD,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;qBACtC,CAAA;gBACH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,KAAc,CAAC,CAAA;oBAC1D,MAAM,KAAK,CAAA;gBACb,CAAC;YACH,CAAC;WAAA;QAEM;;;;mBAAgB,CAAC,EACtB,IAAI,EACJ,cAAc,EACd,GAAG,IAAI,EACmC,EAAoC,EAAE;gBAChF,uEAAuE;gBACvE,OAAO,IAAI,CAAC,OAAO,CAAC;oBAClB,GAAG,IAAI;oBACP,cAAc;oBACd,IAAI,EAAE,qBAAqB,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;iBACtD,CAAC,CAAA;YACJ,CAAC;WAAA;IA/EmE,CAAC;CAgFtE;AAED;;;;;;;;;;;GAWG;AACH,SAAS,iBAAiB,CACxB,KAA6B;IAE7B,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;AAC7E,CAAC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Ask a locally deployed Internet Identity canister what it actually serves.
3
+ *
4
+ * `localInternetIdentityProvider` builds `http://<id>.localhost:<port>/authorize`,
5
+ * the id.ai-era path. Whether that works depends on which Internet Identity
6
+ * build is installed, and the window is narrow:
7
+ *
8
+ * - up to `release-2025-03-07`, the SPA lived at `/` and used a `#authorize`
9
+ * fragment; `/authorize` is not an asset
10
+ * - `release-2026-01-05` through `release-2026-03-16` serve `/authorize`
11
+ * - from `release-2026-03-23` the frontend left the canister entirely (the id.ai
12
+ * split), so `/authorize` 404s even on `.raw`
13
+ *
14
+ * Outside that window the login popup renders the gateway's
15
+ * "Response Verification Error" page and the app simply waits until the user
16
+ * closes it. Nothing points at the cause.
17
+ *
18
+ * Asking the canister over the agent avoids the gateway, so the answer is about
19
+ * the canister's assets rather than about how the gateway felt about them.
20
+ */
21
+ import { type HttpAgent } from "@icp-sdk/core/agent";
22
+ /** Where a given Internet Identity build expects the sign-in flow to start. */
23
+ export type AuthorizePath = "/authorize" | "/#authorize";
24
+ export interface LocalIiProbe {
25
+ /** The path that works, or `null` when the canister serves no sign-in UI. */
26
+ path: AuthorizePath | null;
27
+ /**
28
+ * The probe could not reach a conclusion — the canister was unreachable, or
29
+ * it does not expose `http_request` at all. Callers keep their existing
30
+ * behaviour rather than blocking a login that might well work.
31
+ */
32
+ inconclusive: boolean;
33
+ }
34
+ /**
35
+ * Determine which authorize path a locally deployed Internet Identity serves.
36
+ *
37
+ * Never throws. A probe that cannot answer returns `inconclusive`, because a
38
+ * diagnostic that blocks a working setup is worse than the failure it explains.
39
+ */
40
+ export declare function probeLocalInternetIdentity(agent: HttpAgent, canisterId: string): Promise<LocalIiProbe>;
41
+ /**
42
+ * The error a login gets when the installed build serves no sign-in UI, in
43
+ * place of a 503 page inside a popup the app cannot see.
44
+ */
45
+ export declare function localInternetIdentityUnavailableError(canisterId: string): Error;
46
+ //# sourceMappingURL=local-ii-probe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-ii-probe.d.ts","sourceRoot":"","sources":["../../src/auth/local-ii-probe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAS,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAqC3D,+EAA+E;AAC/E,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,aAAa,CAAA;AAExD,MAAM,WAAW,YAAY;IAC3B,6EAA6E;IAC7E,IAAI,EAAE,aAAa,GAAG,IAAI,CAAA;IAC1B;;;;OAIG;IACH,YAAY,EAAE,OAAO,CAAA;CACtB;AAmBD;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAC9C,KAAK,EAAE,SAAS,EAChB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,YAAY,CAAC,CA+BvB;AAED;;;GAGG;AACH,wBAAgB,qCAAqC,CACnD,UAAU,EAAE,MAAM,GACjB,KAAK,CASP"}
@@ -0,0 +1,102 @@
1
+ /**
2
+ * Ask a locally deployed Internet Identity canister what it actually serves.
3
+ *
4
+ * `localInternetIdentityProvider` builds `http://<id>.localhost:<port>/authorize`,
5
+ * the id.ai-era path. Whether that works depends on which Internet Identity
6
+ * build is installed, and the window is narrow:
7
+ *
8
+ * - up to `release-2025-03-07`, the SPA lived at `/` and used a `#authorize`
9
+ * fragment; `/authorize` is not an asset
10
+ * - `release-2026-01-05` through `release-2026-03-16` serve `/authorize`
11
+ * - from `release-2026-03-23` the frontend left the canister entirely (the id.ai
12
+ * split), so `/authorize` 404s even on `.raw`
13
+ *
14
+ * Outside that window the login popup renders the gateway's
15
+ * "Response Verification Error" page and the app simply waits until the user
16
+ * closes it. Nothing points at the cause.
17
+ *
18
+ * Asking the canister over the agent avoids the gateway, so the answer is about
19
+ * the canister's assets rather than about how the gateway felt about them.
20
+ */
21
+ import { Actor } from "@icp-sdk/core/agent";
22
+ /** The `http_request` query every asset-serving canister exposes. */
23
+ const httpInterface = ({ IDL }) => {
24
+ const HeaderField = IDL.Tuple(IDL.Text, IDL.Text);
25
+ return IDL.Service({
26
+ http_request: IDL.Func([
27
+ IDL.Record({
28
+ method: IDL.Text,
29
+ url: IDL.Text,
30
+ headers: IDL.Vec(HeaderField),
31
+ body: IDL.Vec(IDL.Nat8),
32
+ }),
33
+ ], [
34
+ IDL.Record({
35
+ status_code: IDL.Nat16,
36
+ headers: IDL.Vec(HeaderField),
37
+ body: IDL.Vec(IDL.Nat8),
38
+ }),
39
+ ], ["query"]),
40
+ });
41
+ };
42
+ async function statusOf(actor, url) {
43
+ try {
44
+ const response = await actor.http_request({
45
+ method: "GET",
46
+ url,
47
+ headers: [],
48
+ body: new Uint8Array(),
49
+ });
50
+ return response.status_code;
51
+ }
52
+ catch {
53
+ return undefined;
54
+ }
55
+ }
56
+ /**
57
+ * Determine which authorize path a locally deployed Internet Identity serves.
58
+ *
59
+ * Never throws. A probe that cannot answer returns `inconclusive`, because a
60
+ * diagnostic that blocks a working setup is worse than the failure it explains.
61
+ */
62
+ export async function probeLocalInternetIdentity(agent, canisterId) {
63
+ let actor;
64
+ try {
65
+ actor = Actor.createActor(httpInterface, {
66
+ agent,
67
+ canisterId,
68
+ });
69
+ }
70
+ catch {
71
+ return { path: "/authorize", inconclusive: true };
72
+ }
73
+ const authorize = await statusOf(actor, "/authorize");
74
+ // The canister does not answer http_request at all — not an asset canister,
75
+ // not deployed, or the replica is down. Not our call to make.
76
+ if (authorize === undefined) {
77
+ return { path: "/authorize", inconclusive: true };
78
+ }
79
+ if (authorize >= 200 && authorize < 300) {
80
+ return { path: "/authorize", inconclusive: false };
81
+ }
82
+ // Pre-2026 builds serve the SPA at the root and drive the flow from a
83
+ // `#authorize` fragment, which is a path the gateway never sees.
84
+ const root = await statusOf(actor, "/");
85
+ if (root !== undefined && root >= 200 && root < 300) {
86
+ return { path: "/#authorize", inconclusive: false };
87
+ }
88
+ return { path: null, inconclusive: false };
89
+ }
90
+ /**
91
+ * The error a login gets when the installed build serves no sign-in UI, in
92
+ * place of a 503 page inside a popup the app cannot see.
93
+ */
94
+ export function localInternetIdentityUnavailableError(canisterId) {
95
+ return new Error(`[ic-reactor] The Internet Identity canister ${canisterId} does not serve a sign-in UI: ` +
96
+ `neither /authorize nor / returned a page. Internet Identity builds from ` +
97
+ `release-2026-03-23 onward moved their frontend out of the canister (the id.ai split) ` +
98
+ `and cannot be used locally. Install internet_identity_dev.wasm from release-2026-03-16, ` +
99
+ `the newest build that still self-serves /authorize, or point \`identityProvider\` at a ` +
100
+ `provider you host yourself.`);
101
+ }
102
+ //# sourceMappingURL=local-ii-probe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-ii-probe.js","sourceRoot":"","sources":["../../src/auth/local-ii-probe.ts"],"names":[],"mappings":"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"}
@@ -167,10 +167,8 @@ export interface AuthClientLike {
167
167
  }): Promise<void>;
168
168
  requestAttributes(params: {
169
169
  keys: string[];
170
- nonce: Uint8Array | Promise<Uint8Array> | (() => Promise<Uint8Array>);
170
+ nonce: () => Promise<Uint8Array>;
171
171
  }): Promise<SignedIdentityAttributes>;
172
- /** Present from `@icp-sdk/auth` v8; used to detect the nonce contract. */
173
- memoize?<T>(produce: () => T | Promise<T>): Promise<T>;
174
172
  }
175
173
  export interface AuthState {
176
174
  identity: Identity | null;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/auth/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/auth/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ic-reactor/react",
3
- "version": "3.10.0",
3
+ "version": "3.12.0",
4
4
  "description": "IC Reactor React library for building Internet Computer apps",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -53,30 +53,30 @@
53
53
  "author": "Behrad Deylami",
54
54
  "license": "MIT",
55
55
  "dependencies": {
56
- "@ic-reactor/core": "^3.10.0"
56
+ "@ic-reactor/core": "^3.12.0"
57
57
  },
58
58
  "peerDependencies": {
59
- "@icp-sdk/auth": "^7.1.0 || ^8.0.0",
60
- "@icp-sdk/core": "^6.0.0",
59
+ "@icp-sdk/auth": "^8.0.0",
60
+ "@icp-sdk/core": "^6.1.0",
61
61
  "@tanstack/react-query": "^5.0.0",
62
62
  "react": ">=18.0.0",
63
63
  "react-dom": ">=18.0.0"
64
64
  },
65
65
  "devDependencies": {
66
- "@icp-sdk/auth": "^8.0.0",
67
- "@icp-sdk/core": "^6.0.0",
68
- "@size-limit/preset-small-lib": "^12.1.0",
66
+ "@icp-sdk/auth": "^8.0.3",
67
+ "@icp-sdk/core": "^6.1.0",
68
+ "@size-limit/preset-small-lib": "^13.0.3",
69
69
  "@tanstack/react-query": "^5.101.4",
70
70
  "@testing-library/dom": "^10.4.1",
71
- "@testing-library/jest-dom": "^6.9.1",
71
+ "@testing-library/jest-dom": "^7.0.1",
72
72
  "@testing-library/react": "^16.3.2",
73
- "@types/react": "^19.2.17",
74
- "@types/react-dom": "^19.2.3",
73
+ "@types/react": "^19.2.18",
74
+ "@types/react-dom": "^19.2.4",
75
75
  "fake-indexeddb": "^6.2.5",
76
- "jsdom": "^29.1.1",
76
+ "jsdom": "^30.0.1",
77
77
  "react": "^19.2.8",
78
78
  "react-dom": "^19.2.8",
79
- "size-limit": "^12.1.0",
79
+ "size-limit": "^13.0.3",
80
80
  "vitest": "^4.1.10"
81
81
  },
82
82
  "size-limit": [
@@ -6,13 +6,19 @@ import type {
6
6
  AuthenticationClientOptions,
7
7
  AuthenticationSignInOptions,
8
8
  } from "./types.js"
9
- import { ClientManager, isDev, isMainnetHost } from "@ic-reactor/core"
9
+ import { ClientManager, isDev, allowsEnvRootKey } from "@ic-reactor/core"
10
10
 
11
11
  import { Principal } from "@icp-sdk/core/principal"
12
12
  import { safeGetCanisterEnv } from "@icp-sdk/core/agent/canister-env"
13
+ import {
14
+ probeLocalInternetIdentity,
15
+ localInternetIdentityUnavailableError,
16
+ type AuthorizePath,
17
+ } from "./local-ii-probe.js"
13
18
  import {
14
19
  IC_INTERNET_IDENTITY_PROVIDER,
15
20
  INTERNET_IDENTITY_PROVIDER_ENV_KEY,
21
+ LOCAL_INTERNET_IDENTITY_CANISTER_ID,
16
22
  localInternetIdentityProvider,
17
23
  } from "./constants.js"
18
24
 
@@ -61,6 +67,13 @@ export class AuthenticationManager {
61
67
  }
62
68
  private readonly identityProvider?: string | URL
63
69
  private readonly internetIdentityId?: string
70
+ /**
71
+ * Which authorize path the locally deployed Internet Identity serves, once
72
+ * probed. `undefined` means not probed yet; `null` means it serves no sign-in
73
+ * UI and login should fail with an explanation rather than open a popup onto
74
+ * a gateway error page.
75
+ */
76
+ private localAuthorizePath?: AuthorizePath | null
64
77
  private readonly defaultClientOptions: AuthenticationClientOptions
65
78
  public readonly clientManager: ClientManager
66
79
 
@@ -131,6 +144,11 @@ export class AuthenticationManager {
131
144
  * what browser popup blockers and the ICRC-29 transport require.
132
145
  */
133
146
  public async prepareClient(options?: AuthenticationClientOptions) {
147
+ // Before resolving options, because resolving them is what picks the
148
+ // provider URL. This is the last async point before `login()` has to stay
149
+ // inside the user gesture, so the answer has to be cached by now.
150
+ await this.ensureLocalAuthorizePath()
151
+
134
152
  const clientOptions = this.resolveClientOptions(options)
135
153
 
136
154
  if (this.authClient && !this.shouldRecreateClient(clientOptions)) {
@@ -140,6 +158,40 @@ export class AuthenticationManager {
140
158
  return this.initializeClient(clientOptions)
141
159
  }
142
160
 
161
+ /**
162
+ * Probe the local Internet Identity canister once, and remember what it
163
+ * serves.
164
+ *
165
+ * Only for the derived local provider: an explicitly configured
166
+ * `identityProvider` is the caller's business, and mainnet is fixed.
167
+ */
168
+ private async ensureLocalAuthorizePath(): Promise<void> {
169
+ if (this.localAuthorizePath !== undefined) return
170
+ if (this.identityProvider) return
171
+ if (!this.clientManager.isLocal) return
172
+
173
+ const canisterId =
174
+ this.internetIdentityId ?? LOCAL_INTERNET_IDENTITY_CANISTER_ID
175
+
176
+ const { path, inconclusive } = await probeLocalInternetIdentity(
177
+ this.clientManager.agent,
178
+ canisterId
179
+ )
180
+
181
+ // An inconclusive probe must not change behaviour: the canister may be
182
+ // fine and merely unreachable from here, and a diagnostic that blocks a
183
+ // working login is worse than the failure it explains.
184
+ this.localAuthorizePath = inconclusive ? "/authorize" : path
185
+
186
+ if (path === "/#authorize" && !inconclusive) {
187
+ console.warn(
188
+ `[ic-reactor] Internet Identity canister ${canisterId} serves its sign-in UI at ` +
189
+ `"/" rather than "/authorize" — using the legacy #authorize flow. This is a ` +
190
+ `pre-2026 build; newer ones through release-2026-03-16 serve /authorize directly.`
191
+ )
192
+ }
193
+ }
194
+
143
195
  /**
144
196
  * Returns an AuthClient without awaiting, or `undefined` when the auth
145
197
  * module has not been loaded yet.
@@ -467,12 +519,26 @@ export class AuthenticationManager {
467
519
  if (this.identityProvider) {
468
520
  return this.identityProvider
469
521
  }
470
- return this.clientManager.isLocal
471
- ? localInternetIdentityProvider(
472
- Number(this.clientManager.agentHost?.port) || 4943,
473
- this.internetIdentityId
474
- )
475
- : IC_INTERNET_IDENTITY_PROVIDER
522
+ if (!this.clientManager.isLocal) {
523
+ return IC_INTERNET_IDENTITY_PROVIDER
524
+ }
525
+
526
+ const canisterId =
527
+ this.internetIdentityId ?? LOCAL_INTERNET_IDENTITY_CANISTER_ID
528
+
529
+ // `null` is the probe's positive finding that this build serves no sign-in
530
+ // UI. Throwing here surfaces an actionable message where the caller can see
531
+ // it, instead of opening a popup onto the gateway's verification-error page
532
+ // and leaving the app waiting until the user closes it.
533
+ if (this.localAuthorizePath === null) {
534
+ throw localInternetIdentityUnavailableError(canisterId)
535
+ }
536
+
537
+ return localInternetIdentityProvider(
538
+ Number(this.clientManager.agentHost?.port) || 4943,
539
+ this.internetIdentityId,
540
+ this.localAuthorizePath
541
+ )
476
542
  }
477
543
 
478
544
  private updateState(newState: Partial<AuthState>) {
@@ -651,16 +717,21 @@ function acceptEnvIdentityProvider(
651
717
  return url.toString()
652
718
  }
653
719
 
654
- // `isMainnetHost` matches only the real boundary domains and defaults to true
655
- // for an unknown host, so custom testnets keep working while anything that
656
- // looks like mainnet fails closed. `clientManager.isLocal` would be wrong
657
- // here: it treats every unrecognized hostname as "ic".
658
- if (isMainnetHost(clientManager.agentHost?.toString())) {
720
+ // Positive allowlist, not `!isMainnetHost(...)`.
721
+ //
722
+ // The old comment here claimed this defaulted to true for an unknown host so
723
+ // that "anything that looks like mainnet fails closed". It did not:
724
+ // isMainnetHost defaults to true only for `undefined`, and returns false for
725
+ // every unrecognised host — so a dapp on a custom domain accepted an identity
726
+ // provider chosen by a cookie, and the ic_env cookie is writable by any
727
+ // sibling subdomain. Redirecting the Internet Identity flow is as severe as
728
+ // substituting the root key, so both now use the same test.
729
+ if (!allowsEnvRootKey(clientManager.agentHost?.toString())) {
659
730
  console.warn(
660
731
  `[ic-reactor] Ignoring the Internet Identity provider from the ic_env cookie ` +
661
- `("${url.origin}") because this reactor targets mainnet, where the provider ` +
662
- `is taken from configuration rather than the environment. Pass ` +
663
- `\`identityProvider\` to AuthenticationManager to use a custom provider on mainnet.`
732
+ `("${url.origin}") because this reactor does not target a local replica, where ` +
733
+ `the provider is taken from configuration rather than the environment. Pass ` +
734
+ `\`identityProvider\` to AuthenticationManager to use a custom provider.`
664
735
  )
665
736
  return undefined
666
737
  }
@@ -12,11 +12,18 @@ export const LOCAL_INTERNET_IDENTITY_CANISTER_ID = "rdmx6-jaaaa-aaaaa-aaadq-cai"
12
12
 
13
13
  /**
14
14
  * Builds the local Internet Identity provider URL for the given replica port.
15
+ *
16
+ * `authorizePath` selects the shape the installed build understands: modern
17
+ * builds serve `/authorize` as a real asset, while pre-2026 ones serve the SPA
18
+ * at `/` and drive the flow from a `#authorize` fragment. `AuthenticationManager`
19
+ * probes the canister and passes the right one; the default keeps the previous
20
+ * behaviour for direct callers.
15
21
  */
16
22
  export const localInternetIdentityProvider = (
17
23
  port: number,
18
- canisterId: string = LOCAL_INTERNET_IDENTITY_CANISTER_ID
19
- ) => `http://${canisterId}.localhost:${port}/authorize`
24
+ canisterId: string = LOCAL_INTERNET_IDENTITY_CANISTER_ID,
25
+ authorizePath: "/authorize" | "/#authorize" = "/authorize"
26
+ ) => `http://${canisterId}.localhost:${port}${authorizePath}`
20
27
 
21
28
  /**
22
29
  * Legacy default URL for local Internet Identity, using port `4943`.
@@ -1,5 +1,4 @@
1
1
  import type {
2
- AuthClientLike,
3
2
  IdentityAttributeNonce,
4
3
  IdentityAttributeResult,
5
4
  RequestIdentityAttributesParameters,
@@ -51,7 +50,7 @@ export class IdentityAttributesManager {
51
50
 
52
51
  if (!authClient) {
53
52
  throw new Error(
54
- "Authentication module is missing or failed to initialize. To request identity attributes, please install @icp-sdk/auth v7 or later, or provide a compatible authClient."
53
+ "Authentication module is missing or failed to initialize. To request identity attributes, please install @icp-sdk/auth v8, or provide a compatible authClient."
55
54
  )
56
55
  }
57
56
 
@@ -68,7 +67,7 @@ export class IdentityAttributesManager {
68
67
  : Promise.resolve(authClient.getIdentity())
69
68
  const requestPromise = authClient.requestAttributes({
70
69
  keys,
71
- nonce: toAuthClientNonce(authClient, nonce),
70
+ nonce: toAuthClientNonce(nonce),
72
71
  })
73
72
 
74
73
  const [signedAttributes, identity] = await Promise.all([
@@ -114,23 +113,19 @@ export class IdentityAttributesManager {
114
113
  }
115
114
 
116
115
  /**
117
- * Bridges the two `@icp-sdk/auth` nonce contracts.
116
+ * Adapts our nonce input to the `@icp-sdk/auth` nonce contract.
118
117
  *
119
- * v8 takes `() => Promise<Uint8Array>` (it journals the value so a redirect
120
- * flow replays the same bytes); v7 takes `Uint8Array | Promise<Uint8Array>`.
121
- * Both open the transport channel synchronously for the deferred forms, so we
122
- * always hand over the deferred shape the installed client understands.
123
- * `memoize` only exists from v8 onwards, which makes it a reliable marker.
118
+ * v8 takes `() => Promise<Uint8Array>` — a thunk, so it can journal the value
119
+ * and replay the same bytes through a redirect flow. The thunk form also opens
120
+ * the transport channel synchronously, which is what preserves the user
121
+ * gesture.
122
+ *
123
+ * Until 3.12.0 this probed `typeof authClient.memoize === "function"` to detect
124
+ * v8 and fell back to a bare promise for v7. The peer range is now `^8.0.0`, so
125
+ * the probe would only ever take one branch.
124
126
  */
125
127
  function toAuthClientNonce(
126
- authClient: AuthClientLike,
127
128
  nonce: IdentityAttributeNonce
128
- ): Uint8Array | Promise<Uint8Array> | (() => Promise<Uint8Array>) {
129
- const supportsNonceThunk = typeof authClient.memoize === "function"
130
-
131
- if (supportsNonceThunk) {
132
- return () => Promise.resolve(typeof nonce === "function" ? nonce() : nonce)
133
- }
134
-
135
- return Promise.resolve(typeof nonce === "function" ? nonce() : nonce)
129
+ ): () => Promise<Uint8Array> {
130
+ return () => Promise.resolve(typeof nonce === "function" ? nonce() : nonce)
136
131
  }
@@ -0,0 +1,147 @@
1
+ /**
2
+ * Ask a locally deployed Internet Identity canister what it actually serves.
3
+ *
4
+ * `localInternetIdentityProvider` builds `http://<id>.localhost:<port>/authorize`,
5
+ * the id.ai-era path. Whether that works depends on which Internet Identity
6
+ * build is installed, and the window is narrow:
7
+ *
8
+ * - up to `release-2025-03-07`, the SPA lived at `/` and used a `#authorize`
9
+ * fragment; `/authorize` is not an asset
10
+ * - `release-2026-01-05` through `release-2026-03-16` serve `/authorize`
11
+ * - from `release-2026-03-23` the frontend left the canister entirely (the id.ai
12
+ * split), so `/authorize` 404s even on `.raw`
13
+ *
14
+ * Outside that window the login popup renders the gateway's
15
+ * "Response Verification Error" page and the app simply waits until the user
16
+ * closes it. Nothing points at the cause.
17
+ *
18
+ * Asking the canister over the agent avoids the gateway, so the answer is about
19
+ * the canister's assets rather than about how the gateway felt about them.
20
+ */
21
+
22
+ import { Actor, type HttpAgent } from "@icp-sdk/core/agent"
23
+ import { IDL } from "@icp-sdk/core/candid"
24
+
25
+ /** The `http_request` query every asset-serving canister exposes. */
26
+ const httpInterface: IDL.InterfaceFactory = ({ IDL }) => {
27
+ const HeaderField = IDL.Tuple(IDL.Text, IDL.Text)
28
+ return IDL.Service({
29
+ http_request: IDL.Func(
30
+ [
31
+ IDL.Record({
32
+ method: IDL.Text,
33
+ url: IDL.Text,
34
+ headers: IDL.Vec(HeaderField),
35
+ body: IDL.Vec(IDL.Nat8),
36
+ }),
37
+ ],
38
+ [
39
+ IDL.Record({
40
+ status_code: IDL.Nat16,
41
+ headers: IDL.Vec(HeaderField),
42
+ body: IDL.Vec(IDL.Nat8),
43
+ }),
44
+ ],
45
+ ["query"]
46
+ ),
47
+ })
48
+ }
49
+
50
+ interface HttpCapableActor {
51
+ http_request: (request: {
52
+ method: string
53
+ url: string
54
+ headers: [string, string][]
55
+ body: Uint8Array
56
+ }) => Promise<{ status_code: number }>
57
+ }
58
+
59
+ /** Where a given Internet Identity build expects the sign-in flow to start. */
60
+ export type AuthorizePath = "/authorize" | "/#authorize"
61
+
62
+ export interface LocalIiProbe {
63
+ /** The path that works, or `null` when the canister serves no sign-in UI. */
64
+ path: AuthorizePath | null
65
+ /**
66
+ * The probe could not reach a conclusion — the canister was unreachable, or
67
+ * it does not expose `http_request` at all. Callers keep their existing
68
+ * behaviour rather than blocking a login that might well work.
69
+ */
70
+ inconclusive: boolean
71
+ }
72
+
73
+ async function statusOf(
74
+ actor: HttpCapableActor,
75
+ url: string
76
+ ): Promise<number | undefined> {
77
+ try {
78
+ const response = await actor.http_request({
79
+ method: "GET",
80
+ url,
81
+ headers: [],
82
+ body: new Uint8Array(),
83
+ })
84
+ return response.status_code
85
+ } catch {
86
+ return undefined
87
+ }
88
+ }
89
+
90
+ /**
91
+ * Determine which authorize path a locally deployed Internet Identity serves.
92
+ *
93
+ * Never throws. A probe that cannot answer returns `inconclusive`, because a
94
+ * diagnostic that blocks a working setup is worse than the failure it explains.
95
+ */
96
+ export async function probeLocalInternetIdentity(
97
+ agent: HttpAgent,
98
+ canisterId: string
99
+ ): Promise<LocalIiProbe> {
100
+ let actor: HttpCapableActor
101
+ try {
102
+ actor = Actor.createActor<HttpCapableActor>(httpInterface, {
103
+ agent,
104
+ canisterId,
105
+ })
106
+ } catch {
107
+ return { path: "/authorize", inconclusive: true }
108
+ }
109
+
110
+ const authorize = await statusOf(actor, "/authorize")
111
+
112
+ // The canister does not answer http_request at all — not an asset canister,
113
+ // not deployed, or the replica is down. Not our call to make.
114
+ if (authorize === undefined) {
115
+ return { path: "/authorize", inconclusive: true }
116
+ }
117
+
118
+ if (authorize >= 200 && authorize < 300) {
119
+ return { path: "/authorize", inconclusive: false }
120
+ }
121
+
122
+ // Pre-2026 builds serve the SPA at the root and drive the flow from a
123
+ // `#authorize` fragment, which is a path the gateway never sees.
124
+ const root = await statusOf(actor, "/")
125
+ if (root !== undefined && root >= 200 && root < 300) {
126
+ return { path: "/#authorize", inconclusive: false }
127
+ }
128
+
129
+ return { path: null, inconclusive: false }
130
+ }
131
+
132
+ /**
133
+ * The error a login gets when the installed build serves no sign-in UI, in
134
+ * place of a 503 page inside a popup the app cannot see.
135
+ */
136
+ export function localInternetIdentityUnavailableError(
137
+ canisterId: string
138
+ ): Error {
139
+ return new Error(
140
+ `[ic-reactor] The Internet Identity canister ${canisterId} does not serve a sign-in UI: ` +
141
+ `neither /authorize nor / returned a page. Internet Identity builds from ` +
142
+ `release-2026-03-23 onward moved their frontend out of the canister (the id.ai split) ` +
143
+ `and cannot be used locally. Install internet_identity_dev.wasm from release-2026-03-16, ` +
144
+ `the newest build that still self-serves /authorize, or point \`identityProvider\` at a ` +
145
+ `provider you host yourself.`
146
+ )
147
+ }
package/src/auth/types.ts CHANGED
@@ -190,10 +190,8 @@ export interface AuthClientLike {
190
190
  // Widened across `@icp-sdk/auth` v7 (value or promise) and v8 (thunk).
191
191
  // Method-shorthand parameters are bivariant, so both real signatures are
192
192
  // assignable to this one.
193
- nonce: Uint8Array | Promise<Uint8Array> | (() => Promise<Uint8Array>)
193
+ nonce: () => Promise<Uint8Array>
194
194
  }): Promise<SignedIdentityAttributes>
195
- /** Present from `@icp-sdk/auth` v8; used to detect the nonce contract. */
196
- memoize?<T>(produce: () => T | Promise<T>): Promise<T>
197
195
  }
198
196
 
199
197
  export interface AuthState {