@tempoxyz/id 0.0.0-pr-349.sha-4e0d044 → 0.0.0-pr-607.sha-7a85573

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.
@@ -12,6 +12,10 @@ import type * as AccountActions from './account.js';
12
12
  /**
13
13
  * Emails the user a sign-in code. The response is the same for every address.
14
14
  *
15
+ * With `accessKey`, Tempo ID first checks the access key that `Actions.email.signIn` will request, and
16
+ * refuses one that the sign-in would refuse, such as one above the headless ceiling, before it emails
17
+ * a code.
18
+ *
15
19
  * @example
16
20
  * ```ts
17
21
  * await Actions.email.sendCode(auth, { email: 'user@example.com' })
@@ -20,6 +24,13 @@ import type * as AccountActions from './account.js';
20
24
  export declare function sendCode(auth: Config, options: sendCode.Options): Promise<void>;
21
25
  export declare namespace sendCode {
22
26
  type Options = {
27
+ /**
28
+ * The access key that `Actions.email.signIn` will request. Tempo ID refuses one that the sign-in
29
+ * would refuse before it emails a code.
30
+ */
31
+ accessKey?: WithAccount | undefined;
32
+ /** The `challenge` that `Actions.email.signIn` will send. Needs `accessKey`. */
33
+ challenge?: string | undefined;
23
34
  /** The user's email address. */
24
35
  email: string;
25
36
  };
@@ -1 +1 @@
1
- {"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../../src/actions/email.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,cAAc,EAAc,MAAM,aAAa,CAAA;AACxD,OAAO,EAAE,KAAK,MAAM,EAA4B,MAAM,UAAU,CAAA;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAGxD,OAAO,KAAK,mBAAmB,MAAM,6BAA6B,CAAA;AAClE,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,KAAK,cAAc,MAAM,cAAc,CAAA;AAEnD;;;;;;;GAOG;AACH,wBAAsB,QAAQ,CAC5B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,QAAQ,CAAC,OAAO,GACxB,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,MAAM,CAAC,OAAO,WAAW,QAAQ,CAAC;IAChC,KAAK,OAAO,GAAG;QACb,gCAAgC;QAChC,KAAK,EAAE,MAAM,CAAA;KACd,CAAA;CACF;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,MAAM,CAC1B,KAAK,CAAC,SAAS,SAAS,WAAW,GAAG,SAAS,GAAG,SAAS,EAE3D,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,GACjC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAqGlE;AAED,MAAM,CAAC,OAAO,WAAW,MAAM,CAAC;IAC9B,KAAK,OAAO,CACV,SAAS,SAAS,WAAW,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,IACjE;QACF;;;;WAIG;QACH,SAAS,CAAC,EAAE,SAAS,CAAA;QACrB;;;WAGG;QACH,OAAO,CAAC,EACJ,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC,GAC/D,SAAS,CAAA;QACb;;;WAGG;QACH,SAAS,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,MAAM,CAAC,GAAG,SAAS,CAAA;QAC1E,8CAA8C;QAC9C,IAAI,EAAE,MAAM,CAAA;QACZ,0CAA0C;QAC1C,KAAK,EAAE,MAAM,CAAA;QACb;;;WAGG;QACH,KAAK,CAAC,EAAE,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,SAAS,CAAA;QACxD;;;WAGG;QACH,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QACzB;;;WAGG;QACH,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;KACnC,CAAA;IAED;;;OAGG;IACH,KAAK,UAAU,CACb,OAAO,SAAS,MAAM,GAAG,MAAM,EAC/B,GAAG,SAAS,OAAO,GAAG,KAAK,IACzB,CAAC,GAAG,SAAS,KAAK,GAClB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC,GACjD,aAAa,CAAC,OAAO,CAAC,CAAC,GAAG;QAC5B;;;;;WAKG;QACH,OAAO,CAAC,EAAE,YAAY,GAAG,SAAS,CAAA;QAClC;;;WAGG;QACH,YAAY,CAAC,EAAE,mBAAmB,CAAC,YAAY,GAAG,SAAS,CAAA;QAC3D;;;WAGG;QACH,gBAAgB,EAAE,OAAO,CAAA;KAC1B,CAAA;CACF"}
1
+ {"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../../src/actions/email.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,cAAc,EAAc,MAAM,aAAa,CAAA;AACxD,OAAO,EAAE,KAAK,MAAM,EAA4B,MAAM,UAAU,CAAA;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAGxD,OAAO,KAAK,mBAAmB,MAAM,6BAA6B,CAAA;AAClE,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,KAAK,cAAc,MAAM,cAAc,CAAA;AAEnD;;;;;;;;;;;GAWG;AACH,wBAAsB,QAAQ,CAC5B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,QAAQ,CAAC,OAAO,GACxB,OAAO,CAAC,IAAI,CAAC,CAcf;AAED,MAAM,CAAC,OAAO,WAAW,QAAQ,CAAC;IAChC,KAAK,OAAO,GAAG;QACb;;;WAGG;QACH,SAAS,CAAC,EAAE,WAAW,GAAG,SAAS,CAAA;QACnC,gFAAgF;QAChF,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QAC9B,gCAAgC;QAChC,KAAK,EAAE,MAAM,CAAA;KACd,CAAA;CACF;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,MAAM,CAC1B,KAAK,CAAC,SAAS,SAAS,WAAW,GAAG,SAAS,GAAG,SAAS,EAE3D,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,GACjC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAqGlE;AAED,MAAM,CAAC,OAAO,WAAW,MAAM,CAAC;IAC9B,KAAK,OAAO,CACV,SAAS,SAAS,WAAW,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,IACjE;QACF;;;;WAIG;QACH,SAAS,CAAC,EAAE,SAAS,CAAA;QACrB;;;WAGG;QACH,OAAO,CAAC,EACJ,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC,GAC/D,SAAS,CAAA;QACb;;;WAGG;QACH,SAAS,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,MAAM,CAAC,GAAG,SAAS,CAAA;QAC1E,8CAA8C;QAC9C,IAAI,EAAE,MAAM,CAAA;QACZ,0CAA0C;QAC1C,KAAK,EAAE,MAAM,CAAA;QACb;;;WAGG;QACH,KAAK,CAAC,EAAE,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,SAAS,CAAA;QACxD;;;WAGG;QACH,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QACzB;;;WAGG;QACH,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;KACnC,CAAA;IAED;;;OAGG;IACH,KAAK,UAAU,CACb,OAAO,SAAS,MAAM,GAAG,MAAM,EAC/B,GAAG,SAAS,OAAO,GAAG,KAAK,IACzB,CAAC,GAAG,SAAS,KAAK,GAClB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC,GACjD,aAAa,CAAC,OAAO,CAAC,CAAC,GAAG;QAC5B;;;;;WAKG;QACH,OAAO,CAAC,EAAE,YAAY,GAAG,SAAS,CAAA;QAClC;;;WAGG;QACH,YAAY,CAAC,EAAE,mBAAmB,CAAC,YAAY,GAAG,SAAS,CAAA;QAC3D;;;WAGG;QACH,gBAAgB,EAAE,OAAO,CAAA;KAC1B,CAAA;CACF"}
@@ -10,13 +10,27 @@ import * as RegistrationOptions from '../internal/registration.js';
10
10
  /**
11
11
  * Emails the user a sign-in code. The response is the same for every address.
12
12
  *
13
+ * With `accessKey`, Tempo ID first checks the access key that `Actions.email.signIn` will request, and
14
+ * refuses one that the sign-in would refuse, such as one above the headless ceiling, before it emails
15
+ * a code.
16
+ *
13
17
  * @example
14
18
  * ```ts
15
19
  * await Actions.email.sendCode(auth, { email: 'user@example.com' })
16
20
  * ```
17
21
  */
18
22
  export async function sendCode(auth, options) {
19
- await Api.json(await Api.post(auth, '/v1/auth/code', { json: options }));
23
+ const { accessKey, challenge, email } = options;
24
+ if (!accessKey && challenge !== undefined)
25
+ throw new ChallengeWithoutKeyError();
26
+ // The check reads what the access key may do, so a new access key stands in for the one that the
27
+ // sign-in signs.
28
+ const authorize = accessKey
29
+ ? (await Headless.prepare(auth, { accessKey, challenge })).authorize
30
+ : undefined;
31
+ await Api.json(await Api.post(auth, '/v1/auth/code', {
32
+ json: { ...(authorize ? { authorize } : {}), email },
33
+ }));
20
34
  }
21
35
  /**
22
36
  * Signs the user in with an emailed code, and authorizes a first-party app in the same request. The
@@ -1 +1 @@
1
- {"version":3,"file":"email.js","sourceRoot":"","sources":["../../src/actions/email.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"email.js","sourceRoot":"","sources":["../../src/actions/email.ts"],"names":[],"mappings":"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"}
@@ -36,6 +36,14 @@ export declare namespace email {
36
36
  };
37
37
  namespace sendCode {
38
38
  type Parameters = {
39
+ /**
40
+ * The access key that `email.signIn` will request, which Tempo ID checks before it emails a
41
+ * code: what it may do, a function that returns it, or `false` for none. Defaults to the
42
+ * instance's `accessKey`. A backend ignores it.
43
+ */
44
+ accessKey?: SignIn.AccessKeyOption;
45
+ /** The `challenge` that `email.signIn` will send. A backend ignores it. */
46
+ challenge?: string | undefined;
39
47
  /** The user's email address. */
40
48
  email: string;
41
49
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../../src/plugins/email.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,KAAK,GAAG,MAAM,oBAAoB,CAAA;AAC9C,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAA;AAC/C,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AACtC,OAAO,KAAK,KAAK,OAAO,MAAM,eAAe,CAAA;AAE7C;;;;;;;;;;GAUG;AACH,wBAAgB,KAAK,CAAC,OAAO,GAAE,KAAK,CAAC,OAAY;IAQzC;;;OAGG;yBACwB,KAAK,CAAC,QAAQ,CAAC,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAQpE;;;;OAIG;uBAEW,KAAK,CAAC,MAAM,CAAC,UAAU,GAClC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC;YAkD1C;AAED,MAAM,CAAC,OAAO,WAAW,KAAK,CAAC;IAC7B,KAAK,OAAO,GAAG;QACb;;;WAGG;QACH,KAAK,CAAC,EAAE,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,SAAS,CAAA;KACtD,CAAA;IAED,UAAU,QAAQ,CAAC;QACjB,KAAK,UAAU,GAAG;YAChB,gCAAgC;YAChC,KAAK,EAAE,MAAM,CAAA;YACb;;;eAGG;YACH,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;SAC5B,CAAA;KACF;IAED,UAAU,MAAM,CAAC;QACf,KAAK,UAAU,GAAG;YAChB;;;eAGG;YACH,SAAS,CAAC,EAAE,MAAM,CAAC,eAAe,CAAA;YAClC;;;eAGG;YACH,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;YAC9B,8CAA8C;YAC9C,IAAI,EAAE,MAAM,CAAA;YACZ,0CAA0C;YAC1C,KAAK,EAAE,MAAM,CAAA;YACb;;;eAGG;YACH,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;YACzB,mFAAmF;YACnF,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;SAC5B,CAAA;QAED,KAAK,UAAU,GAAG,OAAO,CAAC,OAAO,GAAG;YAClC;;;eAGG;YACH,gBAAgB,EAAE,OAAO,CAAA;SAC1B,CAAA;KACF;CACF"}
1
+ {"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../../src/plugins/email.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,KAAK,GAAG,MAAM,oBAAoB,CAAA;AAC9C,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAA;AAC/C,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AACtC,OAAO,KAAK,KAAK,OAAO,MAAM,eAAe,CAAA;AAE7C;;;;;;;;;;GAUG;AACH,wBAAgB,KAAK,CAAC,OAAO,GAAE,KAAK,CAAC,OAAY;IAQzC;;;OAGG;yBACwB,KAAK,CAAC,QAAQ,CAAC,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAapE;;;;OAIG;uBAEW,KAAK,CAAC,MAAM,CAAC,UAAU,GAClC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC;YAkD1C;AAED,MAAM,CAAC,OAAO,WAAW,KAAK,CAAC;IAC7B,KAAK,OAAO,GAAG;QACb;;;WAGG;QACH,KAAK,CAAC,EAAE,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,SAAS,CAAA;KACtD,CAAA;IAED,UAAU,QAAQ,CAAC;QACjB,KAAK,UAAU,GAAG;YAChB;;;;eAIG;YACH,SAAS,CAAC,EAAE,MAAM,CAAC,eAAe,CAAA;YAClC,2EAA2E;YAC3E,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;YAC9B,gCAAgC;YAChC,KAAK,EAAE,MAAM,CAAA;YACb;;;eAGG;YACH,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;SAC5B,CAAA;KACF;IAED,UAAU,MAAM,CAAC;QACf,KAAK,UAAU,GAAG;YAChB;;;eAGG;YACH,SAAS,CAAC,EAAE,MAAM,CAAC,eAAe,CAAA;YAClC;;;eAGG;YACH,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;YAC9B,8CAA8C;YAC9C,IAAI,EAAE,MAAM,CAAA;YACZ,0CAA0C;YAC1C,KAAK,EAAE,MAAM,CAAA;YACb;;;eAGG;YACH,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;YACzB,mFAAmF;YACnF,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;SAC5B,CAAA;QAED,KAAK,UAAU,GAAG,OAAO,CAAC,OAAO,GAAG;YAClC;;;eAGG;YACH,gBAAgB,EAAE,OAAO,CAAA;SAC1B,CAAA;KACF;CACF"}
@@ -34,7 +34,12 @@ export function email(options = {}) {
34
34
  email: parameters.email,
35
35
  userIp: parameters.userIp,
36
36
  });
37
- return Actions.email.sendCode(config, { email: parameters.email });
37
+ // The access key that the sign-in will request, which Tempo ID checks before it emails a code.
38
+ return Actions.email.sendCode(config, {
39
+ accessKey: SignIn.accessKey(context, parameters.accessKey),
40
+ challenge: parameters.challenge,
41
+ email: parameters.email,
42
+ });
38
43
  },
39
44
  /**
40
45
  * Signs the user in with the emailed code, sets the instance's session, and returns it.
@@ -1 +1 @@
1
- {"version":3,"file":"email.js","sourceRoot":"","sources":["../../src/plugins/email.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"email.js","sourceRoot":"","sources":["../../src/plugins/email.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tempoxyz/id",
3
- "version": "0.0.0-pr-349.sha-4e0d044",
3
+ "version": "0.0.0-pr-607.sha-7a85573",
4
4
  "description": "Identity and Auth for Tempo",
5
5
  "type": "module",
6
6
  "sideEffects": [
@@ -15,6 +15,10 @@ import type * as AccountActions from './account.js'
15
15
  /**
16
16
  * Emails the user a sign-in code. The response is the same for every address.
17
17
  *
18
+ * With `accessKey`, Tempo ID first checks the access key that `Actions.email.signIn` will request, and
19
+ * refuses one that the sign-in would refuse, such as one above the headless ceiling, before it emails
20
+ * a code.
21
+ *
18
22
  * @example
19
23
  * ```ts
20
24
  * await Actions.email.sendCode(auth, { email: 'user@example.com' })
@@ -24,11 +28,30 @@ export async function sendCode(
24
28
  auth: Config,
25
29
  options: sendCode.Options,
26
30
  ): Promise<void> {
27
- await Api.json(await Api.post(auth, '/v1/auth/code', { json: options }))
31
+ const { accessKey, challenge, email } = options
32
+ if (!accessKey && challenge !== undefined)
33
+ throw new ChallengeWithoutKeyError()
34
+ // The check reads what the access key may do, so a new access key stands in for the one that the
35
+ // sign-in signs.
36
+ const authorize = accessKey
37
+ ? (await Headless.prepare(auth, { accessKey, challenge })).authorize
38
+ : undefined
39
+ await Api.json(
40
+ await Api.post(auth, '/v1/auth/code', {
41
+ json: { ...(authorize ? { authorize } : {}), email },
42
+ }),
43
+ )
28
44
  }
29
45
 
30
46
  export declare namespace sendCode {
31
47
  type Options = {
48
+ /**
49
+ * The access key that `Actions.email.signIn` will request. Tempo ID refuses one that the sign-in
50
+ * would refuse before it emails a code.
51
+ */
52
+ accessKey?: WithAccount | undefined
53
+ /** The `challenge` that `Actions.email.signIn` will send. Needs `accessKey`. */
54
+ challenge?: string | undefined
32
55
  /** The user's email address. */
33
56
  email: string
34
57
  }
@@ -38,7 +38,12 @@ export function email(options: email.Options = {}) {
38
38
  email: parameters.email,
39
39
  userIp: parameters.userIp,
40
40
  })
41
- return Actions.email.sendCode(config, { email: parameters.email })
41
+ // The access key that the sign-in will request, which Tempo ID checks before it emails a code.
42
+ return Actions.email.sendCode(config, {
43
+ accessKey: SignIn.accessKey(context, parameters.accessKey),
44
+ challenge: parameters.challenge,
45
+ email: parameters.email,
46
+ })
42
47
  },
43
48
  /**
44
49
  * Signs the user in with the emailed code, sets the instance's session, and returns it.
@@ -110,6 +115,14 @@ export declare namespace email {
110
115
 
111
116
  namespace sendCode {
112
117
  type Parameters = {
118
+ /**
119
+ * The access key that `email.signIn` will request, which Tempo ID checks before it emails a
120
+ * code: what it may do, a function that returns it, or `false` for none. Defaults to the
121
+ * instance's `accessKey`. A backend ignores it.
122
+ */
123
+ accessKey?: SignIn.AccessKeyOption
124
+ /** The `challenge` that `email.signIn` will send. A backend ignores it. */
125
+ challenge?: string | undefined
113
126
  /** The user's email address. */
114
127
  email: string
115
128
  /**