@passlock/client 2.0.1 → 2.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/README.md +2 -2
  2. package/README.template.md +2 -2
  3. package/dist/index.d.ts +235 -31
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +237 -36
  6. package/dist/index.js.map +1 -1
  7. package/dist/internal/index.d.ts +4 -0
  8. package/dist/internal/index.d.ts.map +1 -0
  9. package/dist/internal/index.js +4 -0
  10. package/dist/internal/index.js.map +1 -0
  11. package/dist/{shared → internal}/network.d.ts +19 -16
  12. package/dist/internal/network.d.ts.map +1 -0
  13. package/dist/{shared → internal}/network.js +41 -24
  14. package/dist/internal/network.js.map +1 -0
  15. package/dist/{shared → internal}/promise.d.ts +2 -2
  16. package/dist/internal/promise.d.ts.map +1 -0
  17. package/dist/{shared → internal}/promise.js +2 -2
  18. package/dist/internal/promise.js.map +1 -0
  19. package/dist/internal/tenancy.d.ts.map +1 -0
  20. package/dist/internal/tenancy.js.map +1 -0
  21. package/dist/{logger/index.d.ts → logger.d.ts} +19 -4
  22. package/dist/logger.d.ts.map +1 -0
  23. package/dist/{logger/index.js → logger.js} +23 -8
  24. package/dist/logger.js.map +1 -0
  25. package/dist/{shared/options.d.ts → options.d.ts} +4 -0
  26. package/dist/options.d.ts.map +1 -0
  27. package/dist/{shared/options.js.map → options.js.map} +1 -1
  28. package/dist/passkey/authentication/authentication.d.ts +145 -0
  29. package/dist/passkey/authentication/authentication.d.ts.map +1 -0
  30. package/dist/passkey/{authentication.js → authentication/authentication.js} +70 -52
  31. package/dist/passkey/authentication/authentication.js.map +1 -0
  32. package/dist/passkey/errors.d.ts +150 -15
  33. package/dist/passkey/errors.d.ts.map +1 -1
  34. package/dist/passkey/errors.js +209 -8
  35. package/dist/passkey/errors.js.map +1 -1
  36. package/dist/passkey/registration/registration.d.ts +149 -0
  37. package/dist/passkey/registration/registration.d.ts.map +1 -0
  38. package/dist/passkey/{registration.js → registration/registration.js} +46 -36
  39. package/dist/passkey/registration/registration.js.map +1 -0
  40. package/dist/passkey/shared.d.ts +10 -2
  41. package/dist/passkey/shared.d.ts.map +1 -1
  42. package/dist/passkey/signals/signals.d.ts +160 -0
  43. package/dist/passkey/signals/signals.d.ts.map +1 -0
  44. package/dist/passkey/{signals.js → signals/signals.js} +123 -84
  45. package/dist/passkey/signals/signals.js.map +1 -0
  46. package/dist/passkey/support.d.ts +15 -0
  47. package/dist/passkey/support.d.ts.map +1 -1
  48. package/dist/passkey/support.js +16 -1
  49. package/dist/passkey/support.js.map +1 -1
  50. package/dist/principal.d.ts +19 -0
  51. package/dist/principal.d.ts.map +1 -0
  52. package/dist/principal.js +2 -0
  53. package/dist/principal.js.map +1 -0
  54. package/dist/safe.d.ts +267 -0
  55. package/dist/safe.d.ts.map +1 -0
  56. package/dist/safe.js +275 -0
  57. package/dist/safe.js.map +1 -0
  58. package/package.json +22 -20
  59. package/dist/logger/index.d.ts.map +0 -1
  60. package/dist/logger/index.js.map +0 -1
  61. package/dist/passkey/authentication.d.ts +0 -118
  62. package/dist/passkey/authentication.d.ts.map +0 -1
  63. package/dist/passkey/authentication.js.map +0 -1
  64. package/dist/passkey/authentication.test.d.ts +0 -2
  65. package/dist/passkey/authentication.test.d.ts.map +0 -1
  66. package/dist/passkey/authentication.test.js +0 -157
  67. package/dist/passkey/authentication.test.js.map +0 -1
  68. package/dist/passkey/registration.d.ts +0 -136
  69. package/dist/passkey/registration.d.ts.map +0 -1
  70. package/dist/passkey/registration.js.map +0 -1
  71. package/dist/passkey/registration.test.d.ts +0 -2
  72. package/dist/passkey/registration.test.d.ts.map +0 -1
  73. package/dist/passkey/registration.test.js +0 -161
  74. package/dist/passkey/registration.test.js.map +0 -1
  75. package/dist/passkey/signals.d.ts +0 -113
  76. package/dist/passkey/signals.d.ts.map +0 -1
  77. package/dist/passkey/signals.js.map +0 -1
  78. package/dist/shared/network.d.ts.map +0 -1
  79. package/dist/shared/network.js.map +0 -1
  80. package/dist/shared/options.d.ts.map +0 -1
  81. package/dist/shared/promise.d.ts.map +0 -1
  82. package/dist/shared/promise.js.map +0 -1
  83. package/dist/shared/tenancy.d.ts.map +0 -1
  84. package/dist/shared/tenancy.js.map +0 -1
  85. package/dist/surface.test.d.ts +0 -2
  86. package/dist/surface.test.d.ts.map +0 -1
  87. package/dist/surface.test.js +0 -38
  88. package/dist/surface.test.js.map +0 -1
  89. package/dist/unsafe.d.ts +0 -41
  90. package/dist/unsafe.d.ts.map +0 -1
  91. package/dist/unsafe.js +0 -52
  92. package/dist/unsafe.js.map +0 -1
  93. /package/dist/{shared → internal}/tenancy.d.ts +0 -0
  94. /package/dist/{shared → internal}/tenancy.js +0 -0
  95. /package/dist/{shared/options.js → options.js} +0 -0
@@ -1,45 +1,49 @@
1
1
  import * as Helper from "@simplewebauthn/browser";
2
2
  import { WebAuthnError, } from "@simplewebauthn/browser";
3
3
  import { Context, Micro, pipe } from "effect";
4
- import { Logger } from "../logger";
5
- import { buildEndpoint, Endpoint, makeRequest } from "../shared/network";
6
- import { TenancyId } from "../shared/tenancy";
7
- import { OtherPasskeyError, PasskeyUnsupportedError } from "./errors";
4
+ import { Endpoint, makeEndpoint, makeRequest, TenancyId } from "../../internal";
5
+ import { Logger } from "../../logger";
6
+ import { OrphanedPasskeyError, OtherPasskeyError, PasskeyUnsupportedError, } from "../errors";
7
+ /**
8
+ * @internal
9
+ * @hidden
10
+ */
8
11
  export class AuthenticationHelper extends Context.Tag("AuthenticationHelper")() {
9
12
  static Default = {
10
13
  browserSupportsWebAuthn: Helper.browserSupportsWebAuthn,
11
14
  startAuthentication: Helper.startAuthentication,
12
15
  };
13
16
  }
14
- const isOptionsResponse = (payload) => {
17
+ export const AuthenticationSuccessTag = "AuthenticationSuccess";
18
+ /**
19
+ * Type guard to narrow something down to an {@link AuthenticationSuccess}
20
+ *
21
+ * @param payload
22
+ * @returns `true` if the payload is an {@link AuthenticationSuccess}.
23
+ *
24
+ * @category Passkeys (other)
25
+ */
26
+ export const isAuthenticationSuccess = (payload) => {
15
27
  if (typeof payload !== "object")
16
28
  return false;
17
29
  if (payload === null)
18
30
  return false;
19
- if (!("optionsJSON" in payload))
20
- return false;
21
- if (typeof payload.optionsJSON !== "object")
22
- return false;
23
- if (payload.optionsJSON === null)
24
- return false;
25
- if (!("sessionToken" in payload))
31
+ if (!("_tag" in payload))
26
32
  return false;
27
- if (typeof payload.sessionToken !== "string")
33
+ if (typeof payload._tag !== "string")
28
34
  return false;
29
- return true;
35
+ return payload._tag === AuthenticationSuccessTag;
30
36
  };
31
- export const authenticationEvent = ["optionsRequest", "getCredential", "verifyCredential"];
32
37
  export const fetchOptions = (options) => Micro.gen(function* () {
33
38
  const logger = yield* Micro.service(Logger);
34
39
  const { endpoint } = yield* Micro.service(Endpoint);
35
40
  const { tenancyId } = yield* Micro.service(TenancyId);
36
- const { userId, userVerification, allowCredentials, timeout, onEvent } = options;
41
+ const { userVerification, allowCredentials, timeout, onEvent } = options;
37
42
  const url = new URL(`${tenancyId}/passkey/authentication/options`, endpoint);
38
43
  onEvent?.("optionsRequest");
39
44
  yield* logger.logInfo("Fetching passkey authentication options from Passlock");
40
45
  const payload = {
41
46
  allowCredentials,
42
- userId,
43
47
  userVerification,
44
48
  timeout,
45
49
  };
@@ -50,42 +54,20 @@ export const fetchOptions = (options) => Micro.gen(function* () {
50
54
  url,
51
55
  });
52
56
  });
53
- const AuthenticationSuccessTag = "AuthenticationSuccess";
54
- export const isAuthenticationSuccess = (payload) => {
57
+ export const isOptionsResponse = (payload) => {
55
58
  if (typeof payload !== "object")
56
59
  return false;
57
60
  if (payload === null)
58
61
  return false;
59
- if (!("_tag" in payload))
60
- return false;
61
- if (typeof payload._tag !== "string")
62
- return false;
63
- if (payload._tag !== AuthenticationSuccessTag)
64
- return false;
65
- return true;
66
- };
67
- export const isPasskeyNotFound = (payload) => {
68
- if (typeof payload !== "object")
69
- return false;
70
- if (payload === null)
71
- return false;
72
- if (!("_tag" in payload))
73
- return false;
74
- if (typeof payload._tag !== "string")
75
- return false;
76
- if (payload._tag !== "@error/PasskeyNotFound")
77
- return false;
78
- if (!("message" in payload))
79
- return false;
80
- if (typeof payload.message !== "string")
62
+ if (!("optionsJSON" in payload))
81
63
  return false;
82
- if (!("credentialId" in payload))
64
+ if (typeof payload.optionsJSON !== "object")
83
65
  return false;
84
- if (typeof payload.credentialId !== "string")
66
+ if (payload.optionsJSON === null)
85
67
  return false;
86
- if (!("rpId" in payload))
68
+ if (!("sessionToken" in payload))
87
69
  return false;
88
- if (typeof payload.rpId !== "string")
70
+ if (typeof payload.sessionToken !== "string")
89
71
  return false;
90
72
  return true;
91
73
  };
@@ -96,9 +78,9 @@ export const startAuthentication = (optionsJSON, { useBrowserAutofill, onEvent,
96
78
  const helper = yield* Micro.service(AuthenticationHelper);
97
79
  const isSupport = helper.browserSupportsWebAuthn();
98
80
  if (!isSupport)
99
- yield* new PasskeyUnsupportedError({
81
+ yield* Micro.fail(new PasskeyUnsupportedError({
100
82
  message: "Device does not support passkeys",
101
- });
83
+ }));
102
84
  return yield* Micro.tryPromise({
103
85
  catch: (error) => {
104
86
  if (error instanceof WebAuthnError) {
@@ -116,6 +98,31 @@ export const startAuthentication = (optionsJSON, { useBrowserAutofill, onEvent,
116
98
  try: () => helper.startAuthentication({ optionsJSON, useBrowserAutofill }),
117
99
  });
118
100
  });
101
+ const isPasskeyNotFound = (payload) => {
102
+ if (typeof payload !== "object")
103
+ return false;
104
+ if (payload === null)
105
+ return false;
106
+ if (!("_tag" in payload))
107
+ return false;
108
+ if (typeof payload._tag !== "string")
109
+ return false;
110
+ if (payload._tag !== "@error/PasskeyNotFound")
111
+ return false;
112
+ if (!("message" in payload))
113
+ return false;
114
+ if (typeof payload.message !== "string")
115
+ return false;
116
+ if (!("credentialId" in payload))
117
+ return false;
118
+ if (typeof payload.credentialId !== "string")
119
+ return false;
120
+ if (!("rpId" in payload))
121
+ return false;
122
+ if (typeof payload.rpId !== "string")
123
+ return false;
124
+ return true;
125
+ };
119
126
  export const verifyCredential = (sessionToken, response, { onEvent }) => Micro.gen(function* () {
120
127
  const logger = yield* Micro.service(Logger);
121
128
  const { endpoint } = yield* Micro.service(Endpoint);
@@ -127,25 +134,26 @@ export const verifyCredential = (sessionToken, response, { onEvent }) => Micro.g
127
134
  response,
128
135
  sessionToken,
129
136
  };
130
- const authenticationResponse = yield* makeRequest({
137
+ const authenticationResponse = yield* pipe(makeRequest({
131
138
  errorPredicate: isPasskeyNotFound,
132
139
  label: "authentication verification",
133
140
  payload,
134
141
  responsePredicate: isAuthenticationSuccess,
135
142
  url,
136
- });
143
+ }), Micro.catchTag("@error/PasskeyNotFound", (err) => Micro.fail(new OrphanedPasskeyError(err))));
137
144
  yield* logger.logInfo(`Passkey with id ${authenticationResponse.principal.authenticatorId} successfully authenticated`);
138
145
  return authenticationResponse;
139
146
  });
140
147
  /**
141
- * Trigger local passkey authentication then verify the passkey in the Passlock vault.
148
+ * Trigger local passkey authentication then verify the passkey in your Passlock vault.
142
149
  * Returns a code and id_token that can be exchanged/decoded in your backend.
143
150
  *
144
151
  * @param options
145
- * @returns
152
+ * @returns A Micro effect that resolves with {@link AuthenticationSuccess} or
153
+ * fails with {@link AuthenticationError}.
146
154
  */
147
155
  export const authenticatePasskey = (options) => {
148
- const endpoint = buildEndpoint(options);
156
+ const endpoint = makeEndpoint(options);
149
157
  const micro = Micro.gen(function* () {
150
158
  const { sessionToken, optionsJSON } = yield* fetchOptions(options);
151
159
  const go = (useBrowserAutofill) => Micro.gen(function* () {
@@ -169,4 +177,14 @@ export const authenticatePasskey = (options) => {
169
177
  });
170
178
  return pipe(micro, Micro.provideService(TenancyId, options), Micro.provideService(Endpoint, endpoint));
171
179
  };
180
+ /**
181
+ * Type of the authentication event
182
+ *
183
+ * @category Passkeys (other)
184
+ */
185
+ export const AuthenticationEvents = [
186
+ "optionsRequest",
187
+ "getCredential",
188
+ "verifyCredential",
189
+ ];
172
190
  //# sourceMappingURL=authentication.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authentication.js","sourceRoot":"","sources":["../../../src/passkey/authentication/authentication.ts"],"names":[],"mappings":"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"}
@@ -1,25 +1,160 @@
1
- import { Micro } from "effect";
2
- export declare const isPasskeyUnsupported: (error: unknown) => error is PasskeyUnsupportedError;
3
- declare const PasskeyUnsupportedError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => Micro.YieldableError & {
1
+ /**
2
+ * The local device does not support Passkeys.
3
+ * See the message property (string) for more details
4
+ *
5
+ * @category Passkeys (errors)
6
+ */
7
+ export declare const isPasskeyUnsupportedError: (payload: unknown) => payload is PasskeyUnsupportedError;
8
+ /**
9
+ * The local device does not support Passkeys.
10
+ * See the message property (string) for more details
11
+ *
12
+ * @category Passkeys (errors)
13
+ */
14
+ export declare class PasskeyUnsupportedError extends Error {
4
15
  readonly _tag: "@error/PasskeyUnsupported";
5
- } & Readonly<A>;
6
- export declare class PasskeyUnsupportedError extends PasskeyUnsupportedError_base<{
7
16
  readonly message: string;
8
- }> {
9
- static isPasskeyUnsupported: (error: unknown) => error is PasskeyUnsupportedError;
17
+ constructor({ message }: {
18
+ message: string;
19
+ });
20
+ }
21
+ /**
22
+ * Client tried to authenticate with a passkey that was not found in the vault.
23
+ * Note: this error can be passed to the {@link deletePasskey} function. This is
24
+ * useful when the user has an orphaned passkey on their device with no server-side
25
+ * component. Just pass this error into deletePasskey and the library will attempt
26
+ * to remove the orphaned passkey from the local device.
27
+ *
28
+ * @category Passkeys (errors)
29
+ */
30
+ export declare const isOrphanedPasskeyError: (payload: unknown) => payload is OrphanedPasskeyError;
31
+ /**
32
+ * Client tried to authenticate with a passkey that was not found in the vault.
33
+ * Note: this error can be passed to the {@link deletePasskey} function. This is
34
+ * useful when the user has an orphaned passkey on their device with no server-side
35
+ * component. Just pass this error into deletePasskey and the library will attempt
36
+ * to remove the orphaned passkey from the local device.
37
+ *
38
+ * @category Passkeys (errors)
39
+ */
40
+ export declare class OrphanedPasskeyError extends Error {
41
+ readonly _tag: "@error/OrphanedPasskey";
42
+ readonly message: string;
43
+ readonly credentialId: string;
44
+ readonly rpId: string;
45
+ constructor({ message, credentialId, rpId, }: {
46
+ message: string;
47
+ credentialId: string;
48
+ rpId: string;
49
+ });
10
50
  }
11
51
  export type ErrorCode = "ERROR_CEREMONY_ABORTED" | "ERROR_INVALID_DOMAIN" | "ERROR_INVALID_RP_ID" | "ERROR_INVALID_USER_ID_LENGTH" | "ERROR_MALFORMED_PUBKEYCREDPARAMS" | "ERROR_AUTHENTICATOR_GENERAL_ERROR" | "ERROR_AUTHENTICATOR_MISSING_DISCOVERABLE_CREDENTIAL_SUPPORT" | "ERROR_AUTHENTICATOR_MISSING_USER_VERIFICATION_SUPPORT" | "ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED" | "ERROR_AUTHENTICATOR_NO_SUPPORTED_PUBKEYCREDPARAMS_ALG" | "ERROR_AUTO_REGISTER_USER_VERIFICATION_FAILURE" | "ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY";
12
- export declare const isOtherPasskeyError: (error: unknown) => error is OtherPasskeyError;
13
- declare const OtherPasskeyError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => Micro.YieldableError & {
14
- readonly _tag: "@error/OtherPasskeyError";
15
- } & Readonly<A>;
16
- export declare class OtherPasskeyError extends OtherPasskeyError_base<{
52
+ /**
53
+ * An unexpected passkey specific error occurred.
54
+ * Check the code and message for more information.
55
+ *
56
+ * @category Passkeys (errors)
57
+ */
58
+ export declare const isOtherPasskeyError: (payload: unknown) => payload is OtherPasskeyError;
59
+ /**
60
+ * An unexpected passkey specific error occurred.
61
+ * Check the code and message for more information.
62
+ *
63
+ * @category Passkeys (errors)
64
+ */
65
+ export declare class OtherPasskeyError extends Error {
66
+ readonly _tag: "@error/OtherPasskey";
17
67
  readonly error: unknown;
18
68
  readonly message: string;
19
69
  readonly code?: ErrorCode;
20
70
  readonly cause?: unknown;
21
- }> {
22
- static isOtherPasskeyError: (error: unknown) => error is OtherPasskeyError;
71
+ constructor({ error, message, code, cause, }: {
72
+ error: unknown;
73
+ message: string;
74
+ code?: ErrorCode;
75
+ cause?: unknown;
76
+ });
77
+ }
78
+ /**
79
+ * Raised if excludeCredentials was provided and the device
80
+ * recognises one of the excluded passkeys i.e. the user currently
81
+ * has a passkey registered for a given userId.
82
+ *
83
+ * @category Passkeys (errors)
84
+ */
85
+ export declare const isDuplicatePasskeyError: (payload: unknown) => payload is DuplicatePasskeyError;
86
+ /**
87
+ * Raised if excludeCredentials was provided and the device
88
+ * recognises one of the excluded passkeys i.e. the user currently
89
+ * has a passkey registered for a given userId.
90
+ *
91
+ * @category Passkeys (errors)
92
+ */
93
+ export declare class DuplicatePasskeyError extends Error {
94
+ readonly _tag: "@error/DuplicatePasskey";
95
+ readonly message: string;
96
+ constructor({ message }: {
97
+ message: string;
98
+ });
99
+ }
100
+ /**
101
+ * The browser/device was unable to delete the passkey
102
+ *
103
+ * @category Passkeys (errors)
104
+ */
105
+ export declare const isDeleteError: (payload: unknown) => payload is DeleteError;
106
+ /**
107
+ * The browser/device was unable to delete the passkey
108
+ *
109
+ * @category Passkeys (errors)
110
+ */
111
+ export declare class DeleteError extends Error {
112
+ readonly _tag: "@error/Delete";
113
+ readonly message: string;
114
+ readonly code: "PASSKEY_DELETION_UNSUPPORTED" | "PASSKEY_NOT_FOUND" | "OTHER_ERROR";
115
+ constructor({ message, code, }: {
116
+ message: string;
117
+ code: "PASSKEY_DELETION_UNSUPPORTED" | "PASSKEY_NOT_FOUND" | "OTHER_ERROR";
118
+ });
119
+ }
120
+ /**
121
+ * The browser/device was unable to prune the passkeys
122
+ *
123
+ * @category Passkeys (errors)
124
+ */
125
+ export declare const isPruningError: (payload: unknown) => payload is PruningError;
126
+ /**
127
+ * The browser/device was unable to prune the passkeys
128
+ *
129
+ * @category Passkeys (errors)
130
+ */
131
+ export declare class PruningError extends Error {
132
+ readonly _tag: "@error/Pruning";
133
+ readonly message: string;
134
+ readonly code: "PASSKEY_PRUNING_UNSUPPORTED" | "OTHER_ERROR";
135
+ constructor({ message, code, }: {
136
+ message: string;
137
+ code: "PASSKEY_PRUNING_UNSUPPORTED" | "OTHER_ERROR";
138
+ });
139
+ }
140
+ /**
141
+ * The browser/device was unable to update the local passkey
142
+ *
143
+ * @category Passkeys (errors)
144
+ */
145
+ export declare const isUpdateError: (payload: unknown) => payload is UpdateError;
146
+ /**
147
+ * The browser/device was unable to update the local passkey
148
+ *
149
+ * @category Passkeys (errors)
150
+ */
151
+ export declare class UpdateError extends Error {
152
+ readonly _tag: "@error/Update";
153
+ readonly message: string;
154
+ readonly code: "PASSKEY_UPDATE_UNSUPPORTED" | "OTHER_ERROR";
155
+ constructor({ message, code, }: {
156
+ message: string;
157
+ code: "PASSKEY_UPDATE_UNSUPPORTED" | "OTHER_ERROR";
158
+ });
23
159
  }
24
- export {};
25
160
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/passkey/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAE9B,eAAO,MAAM,oBAAoB,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,uBACrB,CAAA;;;;AAE1C,qBAAa,uBAAwB,SAAQ,6BAA+C;IAC1F,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB,CAAC;IACA,MAAM,CAAC,oBAAoB,UANe,OAAO,KAAG,KAAK,IAAI,uBAAuB,CAMlC;CACnD;AAED,MAAM,MAAM,SAAS,GACjB,wBAAwB,GACxB,sBAAsB,GACtB,qBAAqB,GACrB,8BAA8B,GAC9B,kCAAkC,GAClC,mCAAmC,GACnC,6DAA6D,GAC7D,uDAAuD,GACvD,2CAA2C,GAC3C,uDAAuD,GACvD,+CAA+C,GAC/C,sCAAsC,CAAA;AAE1C,eAAO,MAAM,mBAAmB,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,iBAC1B,CAAA;;;;AAEpC,qBAAa,iBAAkB,SAAQ,uBAA8C;IACnF,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAA;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CACzB,CAAC;IACA,MAAM,CAAC,mBAAmB,UATe,OAAO,KAAG,KAAK,IAAI,iBAAiB,CAS7B;CACjD"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/passkey/errors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,GACpC,SAAS,OAAO,KACf,OAAO,IAAI,uBAIb,CAAA;AAED;;;;;GAKG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,QAAQ,CAAC,IAAI,EAAG,2BAA2B,CAAS;IACpD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;gBAEZ,EAAE,OAAO,EAAE,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE;CAI7C;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,GACjC,SAAS,OAAO,KACf,OAAO,IAAI,oBAIb,CAAA;AAED;;;;;;;;GAQG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,IAAI,EAAG,wBAAwB,CAAS;IACjD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;gBAET,EACV,OAAO,EACP,YAAY,EACZ,IAAI,GACL,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;CAM3D;AAED,MAAM,MAAM,SAAS,GACjB,wBAAwB,GACxB,sBAAsB,GACtB,qBAAqB,GACrB,8BAA8B,GAC9B,kCAAkC,GAClC,mCAAmC,GACnC,6DAA6D,GAC7D,uDAAuD,GACvD,2CAA2C,GAC3C,uDAAuD,GACvD,+CAA+C,GAC/C,sCAAsC,CAAA;AAE1C;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,GAC9B,SAAS,OAAO,KACf,OAAO,IAAI,iBAIb,CAAA;AAED;;;;;GAKG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,IAAI,EAAG,qBAAqB,CAAS;IAC9C,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAA;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;gBAEZ,EACV,KAAK,EACL,OAAO,EACP,IAAI,EACJ,KAAK,GACN,EAAE;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,SAAS,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAO1E;AAED;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,GAClC,SAAS,OAAO,KACf,OAAO,IAAI,qBAIb,CAAA;AAED;;;;;;GAMG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,QAAQ,CAAC,IAAI,EAAG,yBAAyB,CAAS;IAClD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;gBACZ,EAAE,OAAO,EAAE,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE;CAI7C;AAED;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,SAAS,OAAO,KAAG,OAAO,IAAI,WAI3D,CAAA;AAED;;;;GAIG;AACH,qBAAa,WAAY,SAAQ,KAAK;IACpC,QAAQ,CAAC,IAAI,EAAG,eAAe,CAAS;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,IAAI,EACT,8BAA8B,GAC9B,mBAAmB,GACnB,aAAa,CAAA;gBAEL,EACV,OAAO,EACP,IAAI,GACL,EAAE;QACD,OAAO,EAAE,MAAM,CAAA;QACf,IAAI,EAAE,8BAA8B,GAAG,mBAAmB,GAAG,aAAa,CAAA;KAC3E;CAKF;AAID;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAI,SAAS,OAAO,KAAG,OAAO,IAAI,YAI5D,CAAA;AAED;;;;GAIG;AACH,qBAAa,YAAa,SAAQ,KAAK;IACrC,QAAQ,CAAC,IAAI,EAAG,gBAAgB,CAAS;IACzC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,IAAI,EAAE,6BAA6B,GAAG,aAAa,CAAA;gBAEhD,EACV,OAAO,EACP,IAAI,GACL,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,6BAA6B,GAAG,aAAa,CAAA;KAAE;CAK5E;AAED;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,SAAS,OAAO,KAAG,OAAO,IAAI,WAI3D,CAAA;AAED;;;;GAIG;AACH,qBAAa,WAAY,SAAQ,KAAK;IACpC,QAAQ,CAAC,IAAI,EAAG,eAAe,CAAS;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,IAAI,EAAE,4BAA4B,GAAG,aAAa,CAAA;gBAE/C,EACV,OAAO,EACP,IAAI,GACL,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,4BAA4B,GAAG,aAAa,CAAA;KAAE;CAK3E"}
@@ -1,10 +1,211 @@
1
- import { Micro } from "effect";
2
- export const isPasskeyUnsupported = (error) => error instanceof PasskeyUnsupportedError;
3
- export class PasskeyUnsupportedError extends Micro.TaggedError("@error/PasskeyUnsupported") {
4
- static isPasskeyUnsupported = isPasskeyUnsupported;
5
- }
6
- export const isOtherPasskeyError = (error) => error instanceof OtherPasskeyError;
7
- export class OtherPasskeyError extends Micro.TaggedError("@error/OtherPasskeyError") {
8
- static isOtherPasskeyError = isOtherPasskeyError;
1
+ /**
2
+ * The local device does not support Passkeys.
3
+ * See the message property (string) for more details
4
+ *
5
+ * @category Passkeys (errors)
6
+ */
7
+ export const isPasskeyUnsupportedError = (payload) => {
8
+ if (typeof payload !== "object")
9
+ return false;
10
+ if (payload === null)
11
+ return false;
12
+ return payload instanceof PasskeyUnsupportedError;
13
+ };
14
+ /**
15
+ * The local device does not support Passkeys.
16
+ * See the message property (string) for more details
17
+ *
18
+ * @category Passkeys (errors)
19
+ */
20
+ export class PasskeyUnsupportedError extends Error {
21
+ _tag = "@error/PasskeyUnsupported";
22
+ message;
23
+ constructor({ message }) {
24
+ super();
25
+ this.message = message;
26
+ }
27
+ }
28
+ /**
29
+ * Client tried to authenticate with a passkey that was not found in the vault.
30
+ * Note: this error can be passed to the {@link deletePasskey} function. This is
31
+ * useful when the user has an orphaned passkey on their device with no server-side
32
+ * component. Just pass this error into deletePasskey and the library will attempt
33
+ * to remove the orphaned passkey from the local device.
34
+ *
35
+ * @category Passkeys (errors)
36
+ */
37
+ export const isOrphanedPasskeyError = (payload) => {
38
+ if (typeof payload !== "object")
39
+ return false;
40
+ if (payload === null)
41
+ return false;
42
+ return payload instanceof OrphanedPasskeyError;
43
+ };
44
+ /**
45
+ * Client tried to authenticate with a passkey that was not found in the vault.
46
+ * Note: this error can be passed to the {@link deletePasskey} function. This is
47
+ * useful when the user has an orphaned passkey on their device with no server-side
48
+ * component. Just pass this error into deletePasskey and the library will attempt
49
+ * to remove the orphaned passkey from the local device.
50
+ *
51
+ * @category Passkeys (errors)
52
+ */
53
+ export class OrphanedPasskeyError extends Error {
54
+ _tag = "@error/OrphanedPasskey";
55
+ message;
56
+ credentialId;
57
+ rpId;
58
+ constructor({ message, credentialId, rpId, }) {
59
+ super();
60
+ this.message = message;
61
+ this.credentialId = credentialId;
62
+ this.rpId = rpId;
63
+ }
64
+ }
65
+ /**
66
+ * An unexpected passkey specific error occurred.
67
+ * Check the code and message for more information.
68
+ *
69
+ * @category Passkeys (errors)
70
+ */
71
+ export const isOtherPasskeyError = (payload) => {
72
+ if (typeof payload !== "object")
73
+ return false;
74
+ if (payload === null)
75
+ return false;
76
+ return payload instanceof OtherPasskeyError;
77
+ };
78
+ /**
79
+ * An unexpected passkey specific error occurred.
80
+ * Check the code and message for more information.
81
+ *
82
+ * @category Passkeys (errors)
83
+ */
84
+ export class OtherPasskeyError extends Error {
85
+ _tag = "@error/OtherPasskey";
86
+ error;
87
+ message;
88
+ code;
89
+ cause;
90
+ constructor({ error, message, code, cause, }) {
91
+ super();
92
+ this.error = error;
93
+ this.message = message;
94
+ if (code)
95
+ this.code = code;
96
+ if (cause)
97
+ this.cause = cause;
98
+ }
99
+ }
100
+ /**
101
+ * Raised if excludeCredentials was provided and the device
102
+ * recognises one of the excluded passkeys i.e. the user currently
103
+ * has a passkey registered for a given userId.
104
+ *
105
+ * @category Passkeys (errors)
106
+ */
107
+ export const isDuplicatePasskeyError = (payload) => {
108
+ if (typeof payload !== "object")
109
+ return false;
110
+ if (payload === null)
111
+ return false;
112
+ return payload instanceof DuplicatePasskeyError;
113
+ };
114
+ /**
115
+ * Raised if excludeCredentials was provided and the device
116
+ * recognises one of the excluded passkeys i.e. the user currently
117
+ * has a passkey registered for a given userId.
118
+ *
119
+ * @category Passkeys (errors)
120
+ */
121
+ export class DuplicatePasskeyError extends Error {
122
+ _tag = "@error/DuplicatePasskey";
123
+ message;
124
+ constructor({ message }) {
125
+ super();
126
+ this.message = message;
127
+ }
128
+ }
129
+ /**
130
+ * The browser/device was unable to delete the passkey
131
+ *
132
+ * @category Passkeys (errors)
133
+ */
134
+ export const isDeleteError = (payload) => {
135
+ if (typeof payload !== "object")
136
+ return false;
137
+ if (payload === null)
138
+ return false;
139
+ return payload instanceof DeleteError;
140
+ };
141
+ /**
142
+ * The browser/device was unable to delete the passkey
143
+ *
144
+ * @category Passkeys (errors)
145
+ */
146
+ export class DeleteError extends Error {
147
+ _tag = "@error/Delete";
148
+ message;
149
+ code;
150
+ constructor({ message, code, }) {
151
+ super();
152
+ this.message = message;
153
+ this.code = code;
154
+ }
155
+ }
156
+ /* Pruning error */
157
+ /**
158
+ * The browser/device was unable to prune the passkeys
159
+ *
160
+ * @category Passkeys (errors)
161
+ */
162
+ export const isPruningError = (payload) => {
163
+ if (typeof payload !== "object")
164
+ return false;
165
+ if (payload === null)
166
+ return false;
167
+ return payload instanceof PruningError;
168
+ };
169
+ /**
170
+ * The browser/device was unable to prune the passkeys
171
+ *
172
+ * @category Passkeys (errors)
173
+ */
174
+ export class PruningError extends Error {
175
+ _tag = "@error/Pruning";
176
+ message;
177
+ code;
178
+ constructor({ message, code, }) {
179
+ super();
180
+ this.message = message;
181
+ this.code = code;
182
+ }
183
+ }
184
+ /**
185
+ * The browser/device was unable to update the local passkey
186
+ *
187
+ * @category Passkeys (errors)
188
+ */
189
+ export const isUpdateError = (payload) => {
190
+ if (typeof payload !== "object")
191
+ return false;
192
+ if (payload === null)
193
+ return false;
194
+ return payload instanceof UpdateError;
195
+ };
196
+ /**
197
+ * The browser/device was unable to update the local passkey
198
+ *
199
+ * @category Passkeys (errors)
200
+ */
201
+ export class UpdateError extends Error {
202
+ _tag = "@error/Update";
203
+ message;
204
+ code;
205
+ constructor({ message, code, }) {
206
+ super();
207
+ this.message = message;
208
+ this.code = code;
209
+ }
9
210
  }
10
211
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/passkey/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAE9B,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,KAAc,EAAoC,EAAE,CACvF,KAAK,YAAY,uBAAuB,CAAA;AAE1C,MAAM,OAAO,uBAAwB,SAAQ,KAAK,CAAC,WAAW,CAAC,2BAA2B,CAExF;IACA,MAAM,CAAC,oBAAoB,GAAG,oBAAoB,CAAA;;AAiBpD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,KAAc,EAA8B,EAAE,CAChF,KAAK,YAAY,iBAAiB,CAAA;AAEpC,MAAM,OAAO,iBAAkB,SAAQ,KAAK,CAAC,WAAW,CAAC,0BAA0B,CAKjF;IACA,MAAM,CAAC,mBAAmB,GAAG,mBAAmB,CAAA"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/passkey/errors.ts"],"names":[],"mappings":"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"}