@icp-sdk/auth 11.0.0 → 11.1.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.
@@ -1,6 +1,7 @@
1
1
  import { type HttpAgentOptions, type Identity } from '@icp-sdk/core/agent';
2
2
  import { Principal } from '@icp-sdk/core/principal';
3
3
  import type { CredentialStorage } from './credential-storage.js';
4
+ import { type NotificationConsentStatus } from './notification-consent.js';
4
5
  import { type SsoStatus } from './sso-status.js';
5
6
  import { type StateStorage } from './state-storage.js';
6
7
  export type OpenIdProvider = 'google' | 'apple' | 'microsoft';
@@ -422,6 +423,50 @@ export declare class AuthClient {
422
423
  keys: string[];
423
424
  nonce: () => Promise<Uint8Array>;
424
425
  }): Promise<SignedAttributes>;
426
+ /**
427
+ * Asks the user whether this application may notify them.
428
+ *
429
+ * Opens the identity provider the way a sign-in does, because consent is the
430
+ * user's answer and nothing else can stand in for it. Where they agree, the
431
+ * browser they answered on is registered for delivery.
432
+ *
433
+ * A refusal is an answer rather than a failure: it returns `granted: false`,
434
+ * and an application renders that. Calling it again where consent is already
435
+ * held returns what is recorded without asking a second time.
436
+ *
437
+ * @returns Whether this application may notify the user.
438
+ * @throws {InteractionRequiredError} Where the client was built with
439
+ * `prompt: 'none'`, which no consent ceremony can be run under.
440
+ * @throws {NotificationsUnsupportedError} Where this identity provider does
441
+ * not send notifications at all.
442
+ * @example
443
+ * const { granted } = await authClient.requestNotificationConsent();
444
+ */
445
+ requestNotificationConsent(): Promise<NotificationConsentStatus>;
446
+ /**
447
+ * Withdraws this application's consent to notify the user.
448
+ *
449
+ * A canister call made as the session, so it needs no ceremony and opens
450
+ * nothing: the user already decided, and this records that they changed their
451
+ * mind. Idempotent — consent that is already withdrawn is not an error.
452
+ *
453
+ * @throws {SessionGoneError} Where this origin holds no live session.
454
+ */
455
+ revokeNotificationConsent(): Promise<void>;
456
+ /**
457
+ * Whether this application may notify the signed-in user.
458
+ *
459
+ * What a notifications control is painted from. A query, so the answer is
460
+ * uncertified, and it reports the consent alone: whether a notification would
461
+ * reach the user also depends on the device they hold, which this does not
462
+ * speak for.
463
+ *
464
+ * @returns Whether this application may notify the user.
465
+ * @throws {SessionGoneError} Where this origin holds no live session.
466
+ * @example
467
+ * const { granted } = await authClient.getNotificationConsentStatus();
468
+ */
469
+ getNotificationConsentStatus(): Promise<NotificationConsentStatus>;
425
470
  /**
426
471
  * Runs and journals a piece of your own async work so its result stays stable
427
472
  * across the `'redirect'` flow.
@@ -3,11 +3,15 @@ import { isDelegationValid, } from '@icp-sdk/core/identity';
3
3
  import { Principal } from '@icp-sdk/core/principal';
4
4
  import { Signer } from '@icp-sdk/signer';
5
5
  import { PostMessageTransport, UrlTransport } from '@icp-sdk/signer/web';
6
- import { AccountMismatchError, chainAuthorisesKey } from './app-delegation-source.js';
6
+ import { AccountMismatchError, chainAuthorisesKey, SessionGoneError, } from './app-delegation-source.js';
7
7
  import { stealLock, stealMintLock } from './app-lock.js';
8
8
  import { fromBase64, toBase64 } from './base64.js';
9
9
  import { watchActivity, watchForeground } from './foreground-refresh.js';
10
10
  import { IdbCredentialStorage } from './idb-credential-storage.js';
11
+ import { NotificationConsent,
12
+ // Aliased: the method below is this library's name for the operation, and this
13
+ // is the request it sends.
14
+ requestNotificationConsent as sendConsentRequest, } from './notification-consent.js';
11
15
  import { requestSessionDelegation } from './session-delegation.js';
12
16
  import { SessionIdentity } from './session-identity.js';
13
17
  import { SessionMinter } from './session-minter.js';
@@ -822,6 +826,92 @@ export class AuthClient {
822
826
  throw new Error('Invalid response: data or signature is not valid base64', { cause });
823
827
  }
824
828
  }
829
+ /**
830
+ * Asks the user whether this application may notify them.
831
+ *
832
+ * Opens the identity provider the way a sign-in does, because consent is the
833
+ * user's answer and nothing else can stand in for it. Where they agree, the
834
+ * browser they answered on is registered for delivery.
835
+ *
836
+ * A refusal is an answer rather than a failure: it returns `granted: false`,
837
+ * and an application renders that. Calling it again where consent is already
838
+ * held returns what is recorded without asking a second time.
839
+ *
840
+ * @returns Whether this application may notify the user.
841
+ * @throws {InteractionRequiredError} Where the client was built with
842
+ * `prompt: 'none'`, which no consent ceremony can be run under.
843
+ * @throws {NotificationsUnsupportedError} Where this identity provider does
844
+ * not send notifications at all.
845
+ * @example
846
+ * const { granted } = await authClient.requestNotificationConsent();
847
+ */
848
+ async requestNotificationConsent() {
849
+ // The channel lock and not the sign-in lock, for the reason `requestAttributes`
850
+ // takes it: this opens the signer channel, which an origin has one of, and
851
+ // writes nothing anyone else reads.
852
+ this.#beginInteraction();
853
+ try {
854
+ const response = sendConsentRequest(this.#signer, this.#options.derivationOrigin?.toString());
855
+ this.#takeChannelLock();
856
+ return await response;
857
+ }
858
+ finally {
859
+ this.#endInteraction();
860
+ }
861
+ }
862
+ /**
863
+ * Withdraws this application's consent to notify the user.
864
+ *
865
+ * A canister call made as the session, so it needs no ceremony and opens
866
+ * nothing: the user already decided, and this records that they changed their
867
+ * mind. Idempotent — consent that is already withdrawn is not an error.
868
+ *
869
+ * @throws {SessionGoneError} Where this origin holds no live session.
870
+ */
871
+ async revokeNotificationConsent() {
872
+ await (await this.#consent()).revoke();
873
+ }
874
+ /**
875
+ * Whether this application may notify the signed-in user.
876
+ *
877
+ * What a notifications control is painted from. A query, so the answer is
878
+ * uncertified, and it reports the consent alone: whether a notification would
879
+ * reach the user also depends on the device they hold, which this does not
880
+ * speak for.
881
+ *
882
+ * @returns Whether this application may notify the user.
883
+ * @throws {SessionGoneError} Where this origin holds no live session.
884
+ * @example
885
+ * const { granted } = await authClient.getNotificationConsentStatus();
886
+ */
887
+ async getNotificationConsentStatus() {
888
+ return (await this.#consent()).status();
889
+ }
890
+ /**
891
+ * Builds the consent calls from the session this origin holds.
892
+ *
893
+ * Read at the call rather than kept, so a session replaced since the last call
894
+ * is not the one spoken for, and a sign-out between them is reported as what it
895
+ * is instead of answered from a stale actor.
896
+ */
897
+ async #consent() {
898
+ // Wait for the constructor's session restore, which is what puts the
899
+ // credential these calls are made with where this can read it.
900
+ await this.#init();
901
+ // The chain is checked and not just its presence: `#init()` resolves once, so a
902
+ // session that ran out while the page stayed open is still in the slot, and a
903
+ // call made with it would fail as a rejected signature rather than as what it is.
904
+ const session = await this.#credentialStorage.get(this.#slots.session);
905
+ if (session === null || session.chain === undefined || !isDelegationValid(session.chain)) {
906
+ throw new SessionGoneError();
907
+ }
908
+ return NotificationConsent.create({
909
+ sessionKey: session.identity,
910
+ sessionChain: session.chain,
911
+ canisterId: this.#canisterId,
912
+ agentOptions: this.#options.agentOptions,
913
+ });
914
+ }
825
915
  memoize(produce) {
826
916
  if (this.#urlTransport) {
827
917
  return this.#urlTransport.memoize(produce);
@@ -1 +1 @@
1
- {"version":3,"file":"auth-client.js","sourceRoot":"","sources":["../../../src/client/auth-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth-client.js","sourceRoot":"","sources":["../../../src/client/auth-client.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,7 @@ export { watchActivity, watchForeground } from './foreground-refresh.js';
10
10
  export { IdbCredentialStorage } from './idb-credential-storage.js';
11
11
  export { LocalCredentialStorage } from './local-credential-storage.js';
12
12
  export { MemoryCredentialStorage } from './memory-credential-storage.js';
13
+ export { NotificationConsent, type NotificationConsentOptions, type NotificationConsentService, type NotificationConsentStatus, NotificationsUnsupportedError, requestNotificationConsent, } from './notification-consent.js';
13
14
  export { InteractionRequiredError, requestSessionDelegation } from './session-delegation.js';
14
15
  export { SessionIdentity, type SessionIdentityOptions } from './session-identity.js';
15
16
  export { SessionMinter, type SessionMinterOptions } from './session-minter.js';
@@ -9,6 +9,7 @@ export { watchActivity, watchForeground } from './foreground-refresh.js';
9
9
  export { IdbCredentialStorage } from './idb-credential-storage.js';
10
10
  export { LocalCredentialStorage } from './local-credential-storage.js';
11
11
  export { MemoryCredentialStorage } from './memory-credential-storage.js';
12
+ export { NotificationConsent, NotificationsUnsupportedError, requestNotificationConsent, } from './notification-consent.js';
12
13
  export { InteractionRequiredError, requestSessionDelegation } from './session-delegation.js';
13
14
  export { SessionIdentity } from './session-identity.js';
14
15
  export { SessionMinter } from './session-minter.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAA4B,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACxF,cAAc,kBAAkB,CAAC;AACjC,OAAO,EACL,kBAAkB,GAEnB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,UAAU,EAAwB,SAAS,EAAE,MAAM,SAAS,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAC7F,OAAO,EAAE,eAAe,EAA+B,MAAM,uBAAuB,CAAC;AACrF,OAAO,EAAE,aAAa,EAA6B,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,GAC9B,MAAM,uCAAuC,CAAC;AAE/C,OAAO,EACL,iBAAiB,EACjB,kBAAkB,GAGnB,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAA4B,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACxF,cAAc,kBAAkB,CAAC;AACjC,OAAO,EACL,kBAAkB,GAEnB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,UAAU,EAAwB,SAAS,EAAE,MAAM,SAAS,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EACL,mBAAmB,EAInB,6BAA6B,EAC7B,0BAA0B,GAC3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAC7F,OAAO,EAAE,eAAe,EAA+B,MAAM,uBAAuB,CAAC;AACrF,OAAO,EAAE,aAAa,EAA6B,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,GAC9B,MAAM,uCAAuC,CAAC;AAE/C,OAAO,EACL,iBAAiB,EACjB,kBAAkB,GAGnB,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,102 @@
1
+ import { type HttpAgentOptions, type SignIdentity } from '@icp-sdk/core/agent';
2
+ import { type DelegationChain } from '@icp-sdk/core/identity';
3
+ import type { Principal } from '@icp-sdk/core/principal';
4
+ import type { Signer } from '@icp-sdk/signer';
5
+ /**
6
+ * Whether the user has allowed this application to notify them.
7
+ *
8
+ * A record rather than a bare boolean, mirroring what the canister answers: a
9
+ * second fact about the decision can then be reported without a breaking change
10
+ * to anything that already reads `granted`.
11
+ */
12
+ export interface NotificationConsentStatus {
13
+ granted: boolean;
14
+ }
15
+ /**
16
+ * Thrown where the identity provider does not send notifications at all.
17
+ *
18
+ * Its own error because its remedy is its own: there is nothing to retry and no
19
+ * ceremony to run, so an application hides the control rather than reporting a
20
+ * failure to the user. A deployment either carries the feature or does not.
21
+ */
22
+ export declare class NotificationsUnsupportedError extends Error {
23
+ constructor(message?: string);
24
+ }
25
+ /**
26
+ * Asks the user, through the identity provider, whether this application may
27
+ * notify them, and registers the browser for delivery where they agree.
28
+ *
29
+ * A refusal is an answer: it comes back as `granted: false` rather than as an
30
+ * error, because the user decided and the application has something to render.
31
+ *
32
+ * @param signer - The channel to the identity provider.
33
+ * @param derivationOrigin - The origin the account is derived for, where the
34
+ * application signs in under one other than its own.
35
+ * @returns What the provider recorded, read back rather than reported from the
36
+ * screen.
37
+ * @throws {InteractionRequiredError} Where the request asked not to render.
38
+ * @throws {NotificationsUnsupportedError} Where the provider does not notify.
39
+ */
40
+ export declare function requestNotificationConsent(signer: Signer, derivationOrigin?: string): Promise<NotificationConsentStatus>;
41
+ /** What the canister answers either consent call with. */
42
+ type NotificationConsentError = {
43
+ NoSuchSession: null;
44
+ } | {
45
+ InternalCanisterError: string;
46
+ };
47
+ type Result<T> = {
48
+ Ok: T;
49
+ } | {
50
+ Err: NotificationConsentError;
51
+ };
52
+ /** The two Internet Identity methods an application makes about its own consent. */
53
+ export interface NotificationConsentService {
54
+ app_notification_consent_status(): Promise<Result<{
55
+ is_granted: boolean;
56
+ }>>;
57
+ app_revoke_notification_consent(): Promise<Result<null>>;
58
+ }
59
+ export interface NotificationConsentOptions {
60
+ /** The key the session chain delegates to. Signs the calls made here. */
61
+ sessionKey: SignIdentity;
62
+ /** The chain proving those calls come from the session. Restricted to II. */
63
+ sessionChain: DelegationChain;
64
+ /** The canister these calls go to. */
65
+ canisterId: Principal;
66
+ /**
67
+ * Options for the agent making them. `identity` is not among them: the agent
68
+ * signs as the session, which is what both calls are authorised by.
69
+ */
70
+ agentOptions?: Omit<HttpAgentOptions, 'identity'>;
71
+ }
72
+ /** Reads and withdraws an application's consent, at the Internet Identity canister. */
73
+ export declare class NotificationConsent {
74
+ #private;
75
+ private constructor();
76
+ /**
77
+ * Builds the calls as the session.
78
+ *
79
+ * As the session and not as the application: Internet Identity authorises both
80
+ * methods by the principal the session signs with, which is the one that mints
81
+ * app delegations rather than any of the ones minted from it.
82
+ */
83
+ static create(options: NotificationConsentOptions): Promise<NotificationConsent>;
84
+ /**
85
+ * Whether this application may notify the signed-in user.
86
+ *
87
+ * A query, so the answer is uncertified: it is what a control is painted from,
88
+ * not something to rest a decision on.
89
+ */
90
+ status(): Promise<NotificationConsentStatus>;
91
+ /**
92
+ * Withdraws this application's consent to notify the signed-in user.
93
+ *
94
+ * Idempotent at the canister: consent that is already withdrawn is `Ok`, because
95
+ * the caller wanted it gone and it is gone. What comes back as an error is the
96
+ * canister failing to write, and it is raised rather than dropped — an
97
+ * application that told a user it had turned notifications off should be able to
98
+ * find out that it had not.
99
+ */
100
+ revoke(): Promise<void>;
101
+ }
102
+ export {};
@@ -0,0 +1,143 @@
1
+ import { Actor, HttpAgent } from '@icp-sdk/core/agent';
2
+ import { DelegationIdentity } from '@icp-sdk/core/identity';
3
+ import { SessionGoneError } from './app-delegation-source.js';
4
+ import { InteractionRequiredError } from './session-delegation.js';
5
+ import { assertChainReaches } from './session-minter.js';
6
+ /**
7
+ * The method Internet Identity answers with the user's decision about being
8
+ * notified. Named for its provider because a JSON-RPC method travels over a
9
+ * transport shared with other signers, unlike a canister method.
10
+ */
11
+ const NOTIFICATION_CONSENT_METHOD = 'ii_notification_consent';
12
+ /** The code Internet Identity denies a `prompt: 'none'` request with. */
13
+ const INTERACTION_REQUIRED_CODE = 3002;
14
+ /** JSON-RPC's own code for a method the receiver does not implement. */
15
+ const METHOD_NOT_FOUND_CODE = -32601;
16
+ /**
17
+ * Thrown where the identity provider does not send notifications at all.
18
+ *
19
+ * Its own error because its remedy is its own: there is nothing to retry and no
20
+ * ceremony to run, so an application hides the control rather than reporting a
21
+ * failure to the user. A deployment either carries the feature or does not.
22
+ */
23
+ export class NotificationsUnsupportedError extends Error {
24
+ constructor(message = 'This Internet Identity does not send notifications') {
25
+ super(message);
26
+ this.name = 'NotificationsUnsupportedError';
27
+ }
28
+ }
29
+ /**
30
+ * Asks the user, through the identity provider, whether this application may
31
+ * notify them, and registers the browser for delivery where they agree.
32
+ *
33
+ * A refusal is an answer: it comes back as `granted: false` rather than as an
34
+ * error, because the user decided and the application has something to render.
35
+ *
36
+ * @param signer - The channel to the identity provider.
37
+ * @param derivationOrigin - The origin the account is derived for, where the
38
+ * application signs in under one other than its own.
39
+ * @returns What the provider recorded, read back rather than reported from the
40
+ * screen.
41
+ * @throws {InteractionRequiredError} Where the request asked not to render.
42
+ * @throws {NotificationsUnsupportedError} Where the provider does not notify.
43
+ */
44
+ export async function requestNotificationConsent(signer, derivationOrigin) {
45
+ const response = await signer.sendRequest({
46
+ jsonrpc: '2.0',
47
+ id: globalThis.crypto.randomUUID(),
48
+ method: NOTIFICATION_CONSENT_METHOD,
49
+ // Every member is optional, so an application with nothing to pass sends an
50
+ // empty object rather than no `params` at all.
51
+ params: derivationOrigin === undefined ? {} : { icrc95DerivationOrigin: derivationOrigin },
52
+ });
53
+ if ('error' in response) {
54
+ if (response.error.code === METHOD_NOT_FOUND_CODE) {
55
+ throw new NotificationsUnsupportedError(response.error.message);
56
+ }
57
+ if (response.error.code === INTERACTION_REQUIRED_CODE) {
58
+ throw new InteractionRequiredError(response.error.message);
59
+ }
60
+ throw new Error(response.error.message);
61
+ }
62
+ const result = response.result;
63
+ if (typeof result?.granted !== 'boolean') {
64
+ throw new Error('Invalid response: missing granted');
65
+ }
66
+ return { granted: result.granted };
67
+ }
68
+ /**
69
+ * Written out for the same reason as the session methods in `session-minter.ts`:
70
+ * this package carries no Internet Identity declarations.
71
+ */
72
+ const idlFactory = ({ IDL }) => {
73
+ const ConsentError = IDL.Variant({
74
+ NoSuchSession: IDL.Null,
75
+ InternalCanisterError: IDL.Text,
76
+ });
77
+ const Status = IDL.Record({ is_granted: IDL.Bool });
78
+ return IDL.Service({
79
+ app_notification_consent_status: IDL.Func([], [IDL.Variant({ Ok: Status, Err: ConsentError })], ['query']),
80
+ app_revoke_notification_consent: IDL.Func([], [IDL.Variant({ Ok: IDL.Null, Err: ConsentError })], []),
81
+ });
82
+ };
83
+ /**
84
+ * Unwraps a canister result, turning the one terminal error into
85
+ * {@link SessionGoneError} and the other into a plain failure.
86
+ */
87
+ const unwrap = (result, failed) => {
88
+ if ('Ok' in result)
89
+ return result.Ok;
90
+ if ('NoSuchSession' in result.Err)
91
+ throw new SessionGoneError();
92
+ // A candid variant, so interpolating it directly renders "[object Object]" and
93
+ // throws away the canister's own explanation of what went wrong.
94
+ const detail = result.Err.InternalCanisterError;
95
+ throw new Error(`${failed}${detail === '' ? '' : `: ${detail}`}`);
96
+ };
97
+ /** Reads and withdraws an application's consent, at the Internet Identity canister. */
98
+ export class NotificationConsent {
99
+ #service;
100
+ constructor(service) {
101
+ this.#service = service;
102
+ }
103
+ /**
104
+ * Builds the calls as the session.
105
+ *
106
+ * As the session and not as the application: Internet Identity authorises both
107
+ * methods by the principal the session signs with, which is the one that mints
108
+ * app delegations rather than any of the ones minted from it.
109
+ */
110
+ static async create(options) {
111
+ const { canisterId } = options;
112
+ assertChainReaches(options.sessionChain, canisterId);
113
+ const agent = await HttpAgent.create({
114
+ ...options.agentOptions,
115
+ // Last, so no agent option can replace the session these calls are made as.
116
+ identity: DelegationIdentity.fromDelegation(options.sessionKey, options.sessionChain),
117
+ });
118
+ return new NotificationConsent(Actor.createActor(idlFactory, { agent, canisterId }));
119
+ }
120
+ /**
121
+ * Whether this application may notify the signed-in user.
122
+ *
123
+ * A query, so the answer is uncertified: it is what a control is painted from,
124
+ * not something to rest a decision on.
125
+ */
126
+ async status() {
127
+ const status = unwrap(await this.#service.app_notification_consent_status(), 'Internet Identity could not report this notification consent');
128
+ return { granted: status.is_granted };
129
+ }
130
+ /**
131
+ * Withdraws this application's consent to notify the signed-in user.
132
+ *
133
+ * Idempotent at the canister: consent that is already withdrawn is `Ok`, because
134
+ * the caller wanted it gone and it is gone. What comes back as an error is the
135
+ * canister failing to write, and it is raised rather than dropped — an
136
+ * application that told a user it had turned notifications off should be able to
137
+ * find out that it had not.
138
+ */
139
+ async revoke() {
140
+ unwrap(await this.#service.app_revoke_notification_consent(), 'Internet Identity could not withdraw this notification consent');
141
+ }
142
+ }
143
+ //# sourceMappingURL=notification-consent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification-consent.js","sourceRoot":"","sources":["../../../src/client/notification-consent.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@icp-sdk/auth",
3
- "version": "11.0.0",
3
+ "version": "11.1.0",
4
4
  "author": "DFINITY Stiftung <sdk@dfinity.org>",
5
5
  "license": "Apache-2.0",
6
6
  "description": "Authentication library for Internet Computer web apps",
@@ -13,12 +13,23 @@ import {
13
13
  import { Principal } from '@icp-sdk/core/principal';
14
14
  import { Signer } from '@icp-sdk/signer';
15
15
  import { PostMessageTransport, UrlTransport } from '@icp-sdk/signer/web';
16
- import { AccountMismatchError, chainAuthorisesKey } from './app-delegation-source.js';
16
+ import {
17
+ AccountMismatchError,
18
+ chainAuthorisesKey,
19
+ SessionGoneError,
20
+ } from './app-delegation-source.js';
17
21
  import { type HeldLock, stealLock, stealMintLock } from './app-lock.js';
18
22
  import { fromBase64, toBase64 } from './base64.js';
19
23
  import type { Credential, CredentialStorage } from './credential-storage.js';
20
24
  import { watchActivity, watchForeground } from './foreground-refresh.js';
21
25
  import { IdbCredentialStorage } from './idb-credential-storage.js';
26
+ import {
27
+ NotificationConsent,
28
+ type NotificationConsentStatus,
29
+ // Aliased: the method below is this library's name for the operation, and this
30
+ // is the request it sends.
31
+ requestNotificationConsent as sendConsentRequest,
32
+ } from './notification-consent.js';
22
33
  import { requestSessionDelegation } from './session-delegation.js';
23
34
  import { SessionIdentity } from './session-identity.js';
24
35
  import { SessionMinter } from './session-minter.js';
@@ -1190,6 +1201,97 @@ export class AuthClient {
1190
1201
  }
1191
1202
  }
1192
1203
 
1204
+ /**
1205
+ * Asks the user whether this application may notify them.
1206
+ *
1207
+ * Opens the identity provider the way a sign-in does, because consent is the
1208
+ * user's answer and nothing else can stand in for it. Where they agree, the
1209
+ * browser they answered on is registered for delivery.
1210
+ *
1211
+ * A refusal is an answer rather than a failure: it returns `granted: false`,
1212
+ * and an application renders that. Calling it again where consent is already
1213
+ * held returns what is recorded without asking a second time.
1214
+ *
1215
+ * @returns Whether this application may notify the user.
1216
+ * @throws {InteractionRequiredError} Where the client was built with
1217
+ * `prompt: 'none'`, which no consent ceremony can be run under.
1218
+ * @throws {NotificationsUnsupportedError} Where this identity provider does
1219
+ * not send notifications at all.
1220
+ * @example
1221
+ * const { granted } = await authClient.requestNotificationConsent();
1222
+ */
1223
+ async requestNotificationConsent(): Promise<NotificationConsentStatus> {
1224
+ // The channel lock and not the sign-in lock, for the reason `requestAttributes`
1225
+ // takes it: this opens the signer channel, which an origin has one of, and
1226
+ // writes nothing anyone else reads.
1227
+ this.#beginInteraction();
1228
+ try {
1229
+ const response = sendConsentRequest(this.#signer, this.#options.derivationOrigin?.toString());
1230
+ this.#takeChannelLock();
1231
+ return await response;
1232
+ } finally {
1233
+ this.#endInteraction();
1234
+ }
1235
+ }
1236
+
1237
+ /**
1238
+ * Withdraws this application's consent to notify the user.
1239
+ *
1240
+ * A canister call made as the session, so it needs no ceremony and opens
1241
+ * nothing: the user already decided, and this records that they changed their
1242
+ * mind. Idempotent — consent that is already withdrawn is not an error.
1243
+ *
1244
+ * @throws {SessionGoneError} Where this origin holds no live session.
1245
+ */
1246
+ async revokeNotificationConsent(): Promise<void> {
1247
+ await (await this.#consent()).revoke();
1248
+ }
1249
+
1250
+ /**
1251
+ * Whether this application may notify the signed-in user.
1252
+ *
1253
+ * What a notifications control is painted from. A query, so the answer is
1254
+ * uncertified, and it reports the consent alone: whether a notification would
1255
+ * reach the user also depends on the device they hold, which this does not
1256
+ * speak for.
1257
+ *
1258
+ * @returns Whether this application may notify the user.
1259
+ * @throws {SessionGoneError} Where this origin holds no live session.
1260
+ * @example
1261
+ * const { granted } = await authClient.getNotificationConsentStatus();
1262
+ */
1263
+ async getNotificationConsentStatus(): Promise<NotificationConsentStatus> {
1264
+ return (await this.#consent()).status();
1265
+ }
1266
+
1267
+ /**
1268
+ * Builds the consent calls from the session this origin holds.
1269
+ *
1270
+ * Read at the call rather than kept, so a session replaced since the last call
1271
+ * is not the one spoken for, and a sign-out between them is reported as what it
1272
+ * is instead of answered from a stale actor.
1273
+ */
1274
+ async #consent(): Promise<NotificationConsent> {
1275
+ // Wait for the constructor's session restore, which is what puts the
1276
+ // credential these calls are made with where this can read it.
1277
+ await this.#init();
1278
+
1279
+ // The chain is checked and not just its presence: `#init()` resolves once, so a
1280
+ // session that ran out while the page stayed open is still in the slot, and a
1281
+ // call made with it would fail as a rejected signature rather than as what it is.
1282
+ const session = await this.#credentialStorage.get(this.#slots.session);
1283
+ if (session === null || session.chain === undefined || !isDelegationValid(session.chain)) {
1284
+ throw new SessionGoneError();
1285
+ }
1286
+
1287
+ return NotificationConsent.create({
1288
+ sessionKey: session.identity,
1289
+ sessionChain: session.chain,
1290
+ canisterId: this.#canisterId,
1291
+ agentOptions: this.#options.agentOptions,
1292
+ });
1293
+ }
1294
+
1193
1295
  /**
1194
1296
  * Runs and journals a piece of your own async work so its result stays stable
1195
1297
  * across the `'redirect'` flow.
@@ -14,6 +14,14 @@ export { watchActivity, watchForeground } from './foreground-refresh.js';
14
14
  export { IdbCredentialStorage } from './idb-credential-storage.js';
15
15
  export { LocalCredentialStorage } from './local-credential-storage.js';
16
16
  export { MemoryCredentialStorage } from './memory-credential-storage.js';
17
+ export {
18
+ NotificationConsent,
19
+ type NotificationConsentOptions,
20
+ type NotificationConsentService,
21
+ type NotificationConsentStatus,
22
+ NotificationsUnsupportedError,
23
+ requestNotificationConsent,
24
+ } from './notification-consent.js';
17
25
  export { InteractionRequiredError, requestSessionDelegation } from './session-delegation.js';
18
26
  export { SessionIdentity, type SessionIdentityOptions } from './session-identity.js';
19
27
  export { SessionMinter, type SessionMinterOptions } from './session-minter.js';
@@ -0,0 +1,214 @@
1
+ import { Actor, HttpAgent, type HttpAgentOptions, type SignIdentity } from '@icp-sdk/core/agent';
2
+ import type { IDL } from '@icp-sdk/core/candid';
3
+ import { type DelegationChain, DelegationIdentity } from '@icp-sdk/core/identity';
4
+ import type { Principal } from '@icp-sdk/core/principal';
5
+ import type { Signer } from '@icp-sdk/signer';
6
+ import { SessionGoneError } from './app-delegation-source.js';
7
+ import { InteractionRequiredError } from './session-delegation.js';
8
+ import { assertChainReaches } from './session-minter.js';
9
+
10
+ /**
11
+ * The method Internet Identity answers with the user's decision about being
12
+ * notified. Named for its provider because a JSON-RPC method travels over a
13
+ * transport shared with other signers, unlike a canister method.
14
+ */
15
+ const NOTIFICATION_CONSENT_METHOD = 'ii_notification_consent';
16
+
17
+ /** The code Internet Identity denies a `prompt: 'none'` request with. */
18
+ const INTERACTION_REQUIRED_CODE = 3002;
19
+
20
+ /** JSON-RPC's own code for a method the receiver does not implement. */
21
+ const METHOD_NOT_FOUND_CODE = -32601;
22
+
23
+ /**
24
+ * Whether the user has allowed this application to notify them.
25
+ *
26
+ * A record rather than a bare boolean, mirroring what the canister answers: a
27
+ * second fact about the decision can then be reported without a breaking change
28
+ * to anything that already reads `granted`.
29
+ */
30
+ export interface NotificationConsentStatus {
31
+ granted: boolean;
32
+ }
33
+
34
+ /**
35
+ * Thrown where the identity provider does not send notifications at all.
36
+ *
37
+ * Its own error because its remedy is its own: there is nothing to retry and no
38
+ * ceremony to run, so an application hides the control rather than reporting a
39
+ * failure to the user. A deployment either carries the feature or does not.
40
+ */
41
+ export class NotificationsUnsupportedError extends Error {
42
+ constructor(message = 'This Internet Identity does not send notifications') {
43
+ super(message);
44
+ this.name = 'NotificationsUnsupportedError';
45
+ }
46
+ }
47
+
48
+ /**
49
+ * Asks the user, through the identity provider, whether this application may
50
+ * notify them, and registers the browser for delivery where they agree.
51
+ *
52
+ * A refusal is an answer: it comes back as `granted: false` rather than as an
53
+ * error, because the user decided and the application has something to render.
54
+ *
55
+ * @param signer - The channel to the identity provider.
56
+ * @param derivationOrigin - The origin the account is derived for, where the
57
+ * application signs in under one other than its own.
58
+ * @returns What the provider recorded, read back rather than reported from the
59
+ * screen.
60
+ * @throws {InteractionRequiredError} Where the request asked not to render.
61
+ * @throws {NotificationsUnsupportedError} Where the provider does not notify.
62
+ */
63
+ export async function requestNotificationConsent(
64
+ signer: Signer,
65
+ derivationOrigin?: string,
66
+ ): Promise<NotificationConsentStatus> {
67
+ const response = await signer.sendRequest({
68
+ jsonrpc: '2.0' as const,
69
+ id: globalThis.crypto.randomUUID(),
70
+ method: NOTIFICATION_CONSENT_METHOD,
71
+ // Every member is optional, so an application with nothing to pass sends an
72
+ // empty object rather than no `params` at all.
73
+ params: derivationOrigin === undefined ? {} : { icrc95DerivationOrigin: derivationOrigin },
74
+ });
75
+
76
+ if ('error' in response) {
77
+ if (response.error.code === METHOD_NOT_FOUND_CODE) {
78
+ throw new NotificationsUnsupportedError(response.error.message);
79
+ }
80
+ if (response.error.code === INTERACTION_REQUIRED_CODE) {
81
+ throw new InteractionRequiredError(response.error.message);
82
+ }
83
+ throw new Error(response.error.message);
84
+ }
85
+
86
+ const result = response.result as Record<string, unknown> | undefined;
87
+ if (typeof result?.granted !== 'boolean') {
88
+ throw new Error('Invalid response: missing granted');
89
+ }
90
+ return { granted: result.granted };
91
+ }
92
+
93
+ /** What the canister answers either consent call with. */
94
+ type NotificationConsentError = { NoSuchSession: null } | { InternalCanisterError: string };
95
+ type Result<T> = { Ok: T } | { Err: NotificationConsentError };
96
+
97
+ /** The two Internet Identity methods an application makes about its own consent. */
98
+ export interface NotificationConsentService {
99
+ app_notification_consent_status(): Promise<Result<{ is_granted: boolean }>>;
100
+ app_revoke_notification_consent(): Promise<Result<null>>;
101
+ }
102
+
103
+ /**
104
+ * Written out for the same reason as the session methods in `session-minter.ts`:
105
+ * this package carries no Internet Identity declarations.
106
+ */
107
+ const idlFactory: IDL.InterfaceFactory = ({ IDL }) => {
108
+ const ConsentError = IDL.Variant({
109
+ NoSuchSession: IDL.Null,
110
+ InternalCanisterError: IDL.Text,
111
+ });
112
+ const Status = IDL.Record({ is_granted: IDL.Bool });
113
+ return IDL.Service({
114
+ app_notification_consent_status: IDL.Func(
115
+ [],
116
+ [IDL.Variant({ Ok: Status, Err: ConsentError })],
117
+ ['query'],
118
+ ),
119
+ app_revoke_notification_consent: IDL.Func(
120
+ [],
121
+ [IDL.Variant({ Ok: IDL.Null, Err: ConsentError })],
122
+ [],
123
+ ),
124
+ });
125
+ };
126
+
127
+ /**
128
+ * Unwraps a canister result, turning the one terminal error into
129
+ * {@link SessionGoneError} and the other into a plain failure.
130
+ */
131
+ const unwrap = <T>(result: Result<T>, failed: string): T => {
132
+ if ('Ok' in result) return result.Ok;
133
+ if ('NoSuchSession' in result.Err) throw new SessionGoneError();
134
+ // A candid variant, so interpolating it directly renders "[object Object]" and
135
+ // throws away the canister's own explanation of what went wrong.
136
+ const detail = result.Err.InternalCanisterError;
137
+ throw new Error(`${failed}${detail === '' ? '' : `: ${detail}`}`);
138
+ };
139
+
140
+ export interface NotificationConsentOptions {
141
+ /** The key the session chain delegates to. Signs the calls made here. */
142
+ sessionKey: SignIdentity;
143
+
144
+ /** The chain proving those calls come from the session. Restricted to II. */
145
+ sessionChain: DelegationChain;
146
+
147
+ /** The canister these calls go to. */
148
+ canisterId: Principal;
149
+
150
+ /**
151
+ * Options for the agent making them. `identity` is not among them: the agent
152
+ * signs as the session, which is what both calls are authorised by.
153
+ */
154
+ agentOptions?: Omit<HttpAgentOptions, 'identity'>;
155
+ }
156
+
157
+ /** Reads and withdraws an application's consent, at the Internet Identity canister. */
158
+ export class NotificationConsent {
159
+ readonly #service: NotificationConsentService;
160
+
161
+ private constructor(service: NotificationConsentService) {
162
+ this.#service = service;
163
+ }
164
+
165
+ /**
166
+ * Builds the calls as the session.
167
+ *
168
+ * As the session and not as the application: Internet Identity authorises both
169
+ * methods by the principal the session signs with, which is the one that mints
170
+ * app delegations rather than any of the ones minted from it.
171
+ */
172
+ static async create(options: NotificationConsentOptions): Promise<NotificationConsent> {
173
+ const { canisterId } = options;
174
+ assertChainReaches(options.sessionChain, canisterId);
175
+ const agent = await HttpAgent.create({
176
+ ...options.agentOptions,
177
+ // Last, so no agent option can replace the session these calls are made as.
178
+ identity: DelegationIdentity.fromDelegation(options.sessionKey, options.sessionChain),
179
+ });
180
+ return new NotificationConsent(
181
+ Actor.createActor<NotificationConsentService>(idlFactory, { agent, canisterId }),
182
+ );
183
+ }
184
+
185
+ /**
186
+ * Whether this application may notify the signed-in user.
187
+ *
188
+ * A query, so the answer is uncertified: it is what a control is painted from,
189
+ * not something to rest a decision on.
190
+ */
191
+ async status(): Promise<NotificationConsentStatus> {
192
+ const status = unwrap(
193
+ await this.#service.app_notification_consent_status(),
194
+ 'Internet Identity could not report this notification consent',
195
+ );
196
+ return { granted: status.is_granted };
197
+ }
198
+
199
+ /**
200
+ * Withdraws this application's consent to notify the signed-in user.
201
+ *
202
+ * Idempotent at the canister: consent that is already withdrawn is `Ok`, because
203
+ * the caller wanted it gone and it is gone. What comes back as an error is the
204
+ * canister failing to write, and it is raised rather than dropped — an
205
+ * application that told a user it had turned notifications off should be able to
206
+ * find out that it had not.
207
+ */
208
+ async revoke(): Promise<void> {
209
+ unwrap(
210
+ await this.#service.app_revoke_notification_consent(),
211
+ 'Internet Identity could not withdraw this notification consent',
212
+ );
213
+ }
214
+ }