@passlock/client 2.0.0-beta.1 → 2.0.0-beta.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.
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/{network.d.ts → internal/network.d.ts} +5 -3
- package/dist/internal/network.d.ts.map +1 -0
- package/dist/{network.js → internal/network.js} +29 -10
- package/dist/internal/network.js.map +1 -0
- package/dist/internal/promise.d.ts.map +1 -0
- package/dist/internal/promise.js.map +1 -0
- package/dist/internal/tenancy.d.ts.map +1 -0
- package/dist/internal/tenancy.js.map +1 -0
- package/dist/logger/index.d.ts +3 -1
- package/dist/logger/index.d.ts.map +1 -1
- package/dist/logger/index.js +8 -3
- package/dist/logger/index.js.map +1 -1
- package/dist/passkey/authentication/index.d.ts +2 -2
- package/dist/passkey/authentication/index.d.ts.map +1 -1
- package/dist/passkey/authentication/index.js +4 -4
- package/dist/passkey/authentication/index.js.map +1 -1
- package/dist/passkey/authentication/micro.d.ts +54 -7
- package/dist/passkey/authentication/micro.d.ts.map +1 -1
- package/dist/passkey/authentication/micro.it.test.d.ts +2 -0
- package/dist/passkey/authentication/micro.it.test.d.ts.map +1 -0
- package/dist/passkey/authentication/micro.it.test.js +74 -0
- package/dist/passkey/authentication/micro.it.test.js.map +1 -0
- package/dist/passkey/authentication/micro.js +98 -31
- package/dist/passkey/authentication/micro.js.map +1 -1
- package/dist/passkey/authentication/micro.test.d.ts +2 -0
- package/dist/passkey/authentication/micro.test.d.ts.map +1 -0
- package/dist/passkey/authentication/micro.test.js +157 -0
- package/dist/passkey/authentication/micro.test.js.map +1 -0
- package/dist/passkey/{shared.d.ts → errors.d.ts} +3 -3
- package/dist/passkey/errors.d.ts.map +1 -0
- package/dist/passkey/{shared.js → errors.js} +3 -3
- package/dist/passkey/errors.js.map +1 -0
- package/dist/passkey/index.d.ts +4 -6
- package/dist/passkey/index.d.ts.map +1 -1
- package/dist/passkey/index.js +4 -4
- package/dist/passkey/index.js.map +1 -1
- package/dist/passkey/registration/index.d.ts +2 -2
- package/dist/passkey/registration/index.d.ts.map +1 -1
- package/dist/passkey/registration/index.js +4 -4
- package/dist/passkey/registration/index.js.map +1 -1
- package/dist/passkey/registration/micro.d.ts +43 -8
- package/dist/passkey/registration/micro.d.ts.map +1 -1
- package/dist/passkey/registration/micro.it.test.d.ts +2 -0
- package/dist/passkey/registration/micro.it.test.d.ts.map +1 -0
- package/dist/passkey/registration/micro.it.test.js +33 -0
- package/dist/passkey/registration/micro.it.test.js.map +1 -0
- package/dist/passkey/registration/micro.js +61 -40
- package/dist/passkey/registration/micro.js.map +1 -1
- package/dist/passkey/registration/micro.test.d.ts +2 -0
- package/dist/passkey/registration/micro.test.d.ts.map +1 -0
- package/dist/passkey/registration/micro.test.js +161 -0
- package/dist/passkey/registration/micro.test.js.map +1 -0
- package/dist/passkey/signals/micro.d.ts +12 -0
- package/dist/passkey/signals/micro.d.ts.map +1 -0
- package/dist/passkey/signals/micro.js +22 -0
- package/dist/passkey/signals/micro.js.map +1 -0
- package/dist/passkey/support.d.ts.map +1 -1
- package/dist/passkey/support.js +1 -1
- package/dist/passkey/support.js.map +1 -1
- package/dist/passkey/types.d.ts.map +1 -1
- package/dist/shared.d.ts.map +1 -1
- package/package.json +21 -25
- package/dist/network.d.ts.map +0 -1
- package/dist/network.js.map +0 -1
- package/dist/passkey/shared.d.ts.map +0 -1
- package/dist/passkey/shared.js.map +0 -1
- package/dist/promise.d.ts.map +0 -1
- package/dist/promise.js.map +0 -1
- package/dist/tenancy.d.ts.map +0 -1
- package/dist/tenancy.js.map +0 -1
- /package/dist/{promise.d.ts → internal/promise.d.ts} +0 -0
- /package/dist/{promise.js → internal/promise.js} +0 -0
- /package/dist/{tenancy.d.ts → internal/tenancy.d.ts} +0 -0
- /package/dist/{tenancy.js → internal/tenancy.js} +0 -0
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
export * from "./passkey/index";
|
|
2
1
|
export type { PasslockOptions } from "./shared";
|
|
3
|
-
export {
|
|
2
|
+
export { isUnexpectedError, UnexpectedError } from "./internal/network";
|
|
3
|
+
export * from "./logger/index";
|
|
4
|
+
export * from "./passkey/index";
|
|
4
5
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACvE,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACvE,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA"}
|
|
@@ -26,14 +26,16 @@ export declare const buildEndpoint: ({ endpoint, }: {
|
|
|
26
26
|
* @param param0
|
|
27
27
|
* @returns
|
|
28
28
|
*/
|
|
29
|
-
export declare const makeRequest: <
|
|
29
|
+
export declare const makeRequest: <A extends object, E = never>({ url, payload, responsePredicate, errorPredicate, label, }: {
|
|
30
30
|
url: URL;
|
|
31
31
|
/** Request payload */
|
|
32
32
|
payload: object;
|
|
33
33
|
/** Response type guard */
|
|
34
|
-
responsePredicate: (res: unknown) => res is
|
|
34
|
+
responsePredicate: (res: unknown) => res is A;
|
|
35
|
+
/** Error response type guard */
|
|
36
|
+
errorPredicate?: (res: unknown, status: number) => res is E;
|
|
35
37
|
/** For logging/error reporting */
|
|
36
38
|
label: string;
|
|
37
|
-
}) => Micro.Micro<
|
|
39
|
+
}) => Micro.Micro<A, E | UnexpectedError>;
|
|
38
40
|
export {};
|
|
39
41
|
//# sourceMappingURL=network.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../src/internal/network.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAevC,eAAO,MAAM,iBAAiB,GAAI,KAAK,OAAO,KAAG,GAAG,IAAI,eACxB,CAAA;;;;AAEhC,qBAAa,eAAgB,SAAQ,qBAA4C;IAC/E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CACrB,CAAC;IACA,MAAM,CAAC,iBAAiB,QAPa,OAAO,KAAG,GAAG,IAAI,eAAe,CAOzB;CAC7C;;uBAKoF,MAAM;;AAH3F;;GAEG;AACH,qBAAa,QAAS,SAAQ,aAAkE;CAAG;AAEnG,eAAO,MAAM,aAAa,GAAI,eAE3B;IACD,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,KAAG,QAAQ,CAAC,MAAM,CAA8B,CAAA;AAoBjD;;;;;GAKG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,GAAG,KAAK,EAAE,6DAMtD;IACD,GAAG,EAAE,GAAG,CAAA;IACR,sBAAsB;IACtB,OAAO,EAAE,MAAM,CAAA;IACf,0BAA0B;IAC1B,iBAAiB,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,GAAG,IAAI,CAAC,CAAA;IAC7C,gCAAgC;IAChC,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,CAAA;IAC3D,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAA;CACd,KAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,eAAe,CAmElC,CAAA"}
|
|
@@ -40,10 +40,14 @@ const isErrorResponse = (payload) => {
|
|
|
40
40
|
* @param param0
|
|
41
41
|
* @returns
|
|
42
42
|
*/
|
|
43
|
-
export const makeRequest = ({ url, payload, responsePredicate, label, }) => Micro.gen(function* () {
|
|
43
|
+
export const makeRequest = ({ url, payload, responsePredicate, errorPredicate = (res) => false, label, }) => Micro.gen(function* () {
|
|
44
|
+
const isUnderTest = typeof process !== "undefined" && process.env.VITEST === "true";
|
|
45
|
+
// when running the test in nodejs there is no browser therefore no
|
|
46
|
+
// origin header is set so we need to fake it
|
|
44
47
|
const headers = {
|
|
45
|
-
"Content-Type": "application/json",
|
|
46
48
|
Accept: "application/json",
|
|
49
|
+
"Content-Type": "application/json",
|
|
50
|
+
...(isUnderTest ? { Origin: "http://localhost:3000" } : {}),
|
|
47
51
|
};
|
|
48
52
|
const body = JSON.stringify(payload);
|
|
49
53
|
const networkError = new UnexpectedError({
|
|
@@ -59,24 +63,39 @@ export const makeRequest = ({ url, payload, responsePredicate, label, }) => Micr
|
|
|
59
63
|
url: String(url),
|
|
60
64
|
});
|
|
61
65
|
const fetchResponse = yield* Micro.tryPromise({
|
|
62
|
-
try: () => fetch(url, { method: "post"
|
|
66
|
+
try: () => fetch(url, { body, headers, method: "post" }),
|
|
63
67
|
catch: () => networkError,
|
|
64
68
|
});
|
|
65
|
-
|
|
69
|
+
const contentType = fetchResponse.headers.get("Content-Type");
|
|
70
|
+
const isJsonResponse = contentType === "application/json";
|
|
71
|
+
if (!fetchResponse.ok && isJsonResponse) {
|
|
66
72
|
const apiError = yield* Micro.tryPromise({
|
|
67
|
-
try: () => fetchResponse.json(),
|
|
68
73
|
catch: () => parseError,
|
|
74
|
+
try: () => fetchResponse.json(),
|
|
69
75
|
});
|
|
70
|
-
|
|
71
|
-
|
|
76
|
+
if (errorPredicate(apiError, fetchResponse.status)) {
|
|
77
|
+
return yield* Micro.fail(apiError);
|
|
78
|
+
}
|
|
79
|
+
else if (isErrorResponse(apiError)) {
|
|
80
|
+
return yield* new UnexpectedError({
|
|
72
81
|
...apiError,
|
|
73
82
|
url: String(url),
|
|
74
|
-
})
|
|
75
|
-
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
return yield* parseError;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
else if (!fetchResponse.ok) {
|
|
90
|
+
const message = yield* Micro.promise(() => fetchResponse.text());
|
|
91
|
+
return yield* new UnexpectedError({
|
|
92
|
+
message,
|
|
93
|
+
url: String(url),
|
|
94
|
+
});
|
|
76
95
|
}
|
|
77
96
|
const json = yield* Micro.tryPromise({
|
|
78
|
-
try: () => fetchResponse.json(),
|
|
79
97
|
catch: () => parseError,
|
|
98
|
+
try: () => fetchResponse.json(),
|
|
80
99
|
});
|
|
81
100
|
return responsePredicate(json) ? json : yield* invalidResponsePayload;
|
|
82
101
|
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/internal/network.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"promise.d.ts","sourceRoot":"","sources":["../../src/internal/promise.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,EAAQ,MAAM,QAAQ,CAAA;AAGtD;;;;;GAKG;AACH,eAAO,MAAM,YAAY,GAAU,CAAC,EAAE,CAAC,EAAE,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAOhF,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,GAAU,CAAC,EAAE,CAAC,EAAE,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAG,OAAO,CAAC,CAAC,CAqBlF,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"promise.js","sourceRoot":"","sources":["../../src/internal/promise.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAEpC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAAQ,KAAwB,EAAkB,EAAE;IACnF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;IAEhE,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;QAC1B,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,QAAQ;KAClB,CAAC,CAAA;AACJ,CAAC,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EAAQ,KAAwB,EAAc,EAAE;IACrF,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;IAE9C,IAAI,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,KAAK,CAAA;IAEhD,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,MAAM,IAAI,CAAC,KAAK,CAAA;QAClB,CAAC;;YAAM,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;IAClD,CAAC;IAED,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,YAAY,KAAK,EAAE,CAAC;YACvC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAA;QACzB,CAAC;;YAAM,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;IAC7C,CAAC;IAED,IAAI,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAEpE,IAAI,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;;QAC7D,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;AAC1C,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tenancy.d.ts","sourceRoot":"","sources":["../../src/internal/tenancy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;;wBAIR,MAAM;;AAF9B,qBAAa,SAAU,SAAQ,cAG5B;CAAG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tenancy.js","sourceRoot":"","sources":["../../src/internal/tenancy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAEhC,MAAM,OAAO,SAAU,SAAQ,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,EAGpD;CAAG"}
|
package/dist/logger/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { Context, Micro } from "effect";
|
|
|
2
2
|
declare const Logger_base: Context.TagClass<Logger, "Logger", {
|
|
3
3
|
readonly logDebug: (message: string) => Micro.Micro<void>;
|
|
4
4
|
readonly logInfo: (message: string) => Micro.Micro<void>;
|
|
5
|
+
readonly logWarn: (message: string) => Micro.Micro<void>;
|
|
5
6
|
readonly logError: (message: string) => Micro.Micro<void>;
|
|
6
7
|
}>;
|
|
7
8
|
export declare class Logger extends Logger_base {
|
|
@@ -10,7 +11,8 @@ export declare const ConsoleLogger: typeof Logger.Service;
|
|
|
10
11
|
export declare enum LogLevel {
|
|
11
12
|
DEBUG = "DEBUG",
|
|
12
13
|
INFO = "INFO",
|
|
13
|
-
ERROR = "ERROR"
|
|
14
|
+
ERROR = "ERROR",
|
|
15
|
+
WARN = "WARN"
|
|
14
16
|
}
|
|
15
17
|
export declare class LogEvent extends Event {
|
|
16
18
|
#private;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/logger/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/logger/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;;uBAKhB,CAAC,OAAO,EAAE,MAAM,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;sBACvC,CAAC,OAAO,EAAE,MAAM,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;sBACtC,CAAC,OAAO,EAAE,MAAM,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;uBACrC,CAAC,OAAO,EAAE,MAAM,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;;AAN7D,qBAAa,MAAO,SAAQ,WAQzB;CAAG;AAEN,eAAO,MAAM,aAAa,EAAE,OAAO,MAAM,CAAC,OAoBzC,CAAA;AAED,oBAAY,QAAQ;IAClB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,KAAK,UAAU;IACf,IAAI,SAAS;CACd;AAED,qBAAa,QAAS,SAAQ,KAAK;;IAIjC,MAAM,CAAC,IAAI,SAAqB;gBAEpB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ;IAM5C,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,KAAK,IAAI,QAAQ,CAEpB;CACF;AASD,eAAO,MAAM,WAAW,EAAE,OAAO,MAAM,CAAC,OAKvC,CAAA"}
|
package/dist/logger/index.js
CHANGED
|
@@ -5,11 +5,14 @@ export const ConsoleLogger = {
|
|
|
5
5
|
logDebug: (message, ...optionalArgs) => Micro.sync(() => {
|
|
6
6
|
console.debug(message, optionalArgs);
|
|
7
7
|
}),
|
|
8
|
+
logError: (message, ...optionalArgs) => Micro.sync(() => {
|
|
9
|
+
console.error(message, optionalArgs);
|
|
10
|
+
}),
|
|
8
11
|
logInfo: (message, ...optionalArgs) => Micro.sync(() => {
|
|
9
12
|
console.info(message, optionalArgs);
|
|
10
13
|
}),
|
|
11
|
-
|
|
12
|
-
console.
|
|
14
|
+
logWarn: (message, ...optionalArgs) => Micro.sync(() => {
|
|
15
|
+
console.warn(message, optionalArgs);
|
|
13
16
|
}),
|
|
14
17
|
};
|
|
15
18
|
export var LogLevel;
|
|
@@ -17,6 +20,7 @@ export var LogLevel;
|
|
|
17
20
|
LogLevel["DEBUG"] = "DEBUG";
|
|
18
21
|
LogLevel["INFO"] = "INFO";
|
|
19
22
|
LogLevel["ERROR"] = "ERROR";
|
|
23
|
+
LogLevel["WARN"] = "WARN";
|
|
20
24
|
})(LogLevel || (LogLevel = {}));
|
|
21
25
|
export class LogEvent extends Event {
|
|
22
26
|
#message;
|
|
@@ -41,7 +45,8 @@ const logEvent = (level) => (message) => Micro.sync(() => {
|
|
|
41
45
|
});
|
|
42
46
|
export const EventLogger = {
|
|
43
47
|
logDebug: logEvent(LogLevel.DEBUG),
|
|
44
|
-
logInfo: logEvent(LogLevel.INFO),
|
|
45
48
|
logError: logEvent(LogLevel.ERROR),
|
|
49
|
+
logInfo: logEvent(LogLevel.INFO),
|
|
50
|
+
logWarn: logEvent(LogLevel.WARN),
|
|
46
51
|
};
|
|
47
52
|
//# sourceMappingURL=index.js.map
|
package/dist/logger/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/logger/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/logger/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAEvC,MAAM,OAAO,MAAO,SAAQ,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAQ9C;CAAG;AAEN,MAAM,CAAC,MAAM,aAAa,GAA0B;IAClD,QAAQ,EAAE,CAAC,OAAwB,EAAE,GAAG,YAA4B,EAAE,EAAE,CACtE,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;QACd,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;IACtC,CAAC,CAAC;IAEJ,QAAQ,EAAE,CAAC,OAAwB,EAAE,GAAG,YAA4B,EAAE,EAAE,CACtE,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;QACd,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;IACtC,CAAC,CAAC;IAEJ,OAAO,EAAE,CAAC,OAAwB,EAAE,GAAG,YAA4B,EAAE,EAAE,CACrE,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;QACd,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;IACrC,CAAC,CAAC;IAEJ,OAAO,EAAE,CAAC,OAAwB,EAAE,GAAG,YAA4B,EAAE,EAAE,CACrE,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;QACd,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;IACrC,CAAC,CAAC;CACL,CAAA;AAED,MAAM,CAAN,IAAY,QAKX;AALD,WAAY,QAAQ;IAClB,2BAAe,CAAA;IACf,yBAAa,CAAA;IACb,2BAAe,CAAA;IACf,yBAAa,CAAA;AACf,CAAC,EALW,QAAQ,KAAR,QAAQ,QAKnB;AAED,MAAM,OAAO,QAAS,SAAQ,KAAK;IACxB,QAAQ,CAAQ;IAChB,MAAM,CAAU;IAEzB,MAAM,CAAC,IAAI,GAAG,kBAAkB,CAAA;IAEhC,YAAY,OAAe,EAAE,KAAe;QAC1C,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QACpB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;QACvB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;IACrB,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;;AAGH,MAAM,QAAQ,GAAG,CAAC,KAAe,EAAE,EAAE,CAAC,CAAC,OAAe,EAAE,EAAE,CACxD,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;IACd,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,MAAM,CAAC,aAAa,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAA;IACpD,CAAC;AACH,CAAC,CAAC,CAAA;AAEJ,MAAM,CAAC,MAAM,WAAW,GAA0B;IAChD,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;IAClC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;IAClC,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;IAChC,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;CACjC,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { type AuthenticationError, type AuthenticationOptions, type AuthenticationSuccess } from "./micro";
|
|
2
1
|
import { Logger } from "../../logger";
|
|
2
|
+
import { type AuthenticationError, type AuthenticationOptions, type AuthenticationSuccess } from "./micro";
|
|
3
3
|
/**
|
|
4
4
|
* Trigger local passkey authentication then verify the passkey in the Passlock vault.
|
|
5
5
|
* Returns a code and id_token that can be exchanged/decoded in your backend.
|
|
@@ -16,6 +16,6 @@ export declare const authenticatePasskeyUnsafe: (options: AuthenticationOptions,
|
|
|
16
16
|
* @returns
|
|
17
17
|
*/
|
|
18
18
|
export declare const authenticatePasskey: (options: AuthenticationOptions, logger?: typeof Logger.Service) => Promise<AuthenticationSuccess | AuthenticationError>;
|
|
19
|
-
export type {
|
|
19
|
+
export type { AuthenticationError, AuthenticationOptions, AuthenticationSuccess } from "./micro";
|
|
20
20
|
export { isAuthenticationSuccess } from "./micro";
|
|
21
21
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/passkey/authentication/index.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/passkey/authentication/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAe,MAAM,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,EACL,KAAK,mBAAmB,EAExB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAE3B,MAAM,SAAS,CAAA;AAEhB;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,GACpC,SAAS,qBAAqB,EAC9B,SAAQ,OAAO,MAAM,CAAC,OAAqB,KAC1C,OAAO,CAAC,qBAAqB,CAM7B,CAAA;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,GAC9B,SAAS,qBAAqB,EAC9B,SAAQ,OAAO,MAAM,CAAC,OAAqB,KAC1C,OAAO,CAAC,qBAAqB,GAAG,mBAAmB,CAMnD,CAAA;AAEH,YAAY,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAChG,OAAO,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Micro, pipe } from "effect";
|
|
2
|
-
import { runToPromise, runToPromiseUnsafe } from "../../promise";
|
|
3
|
-
import { authenticatePasskey as authenticatePasskeyM, } from "./micro";
|
|
2
|
+
import { runToPromise, runToPromiseUnsafe } from "../../internal/promise";
|
|
4
3
|
import { EventLogger, Logger } from "../../logger";
|
|
4
|
+
import { AuthenticationHelper, authenticatePasskey as authenticatePasskeyM, } from "./micro";
|
|
5
5
|
/**
|
|
6
6
|
* Trigger local passkey authentication then verify the passkey in the Passlock vault.
|
|
7
7
|
* Returns a code and id_token that can be exchanged/decoded in your backend.
|
|
@@ -9,7 +9,7 @@ import { EventLogger, Logger } from "../../logger";
|
|
|
9
9
|
* @param options
|
|
10
10
|
* @returns
|
|
11
11
|
*/
|
|
12
|
-
export const authenticatePasskeyUnsafe = (options, logger = EventLogger) => pipe(authenticatePasskeyM(options), Micro.provideService(Logger, logger), runToPromiseUnsafe);
|
|
12
|
+
export const authenticatePasskeyUnsafe = (options, logger = EventLogger) => pipe(authenticatePasskeyM(options), Micro.provideService(Logger, logger), Micro.provideService(AuthenticationHelper, AuthenticationHelper.Default), runToPromiseUnsafe);
|
|
13
13
|
/**
|
|
14
14
|
* Trigger local passkey authentication then verify the passkey in the Passlock vault.
|
|
15
15
|
* Returns a code and id_token that can be exchanged/decoded in your backend.
|
|
@@ -17,6 +17,6 @@ export const authenticatePasskeyUnsafe = (options, logger = EventLogger) => pipe
|
|
|
17
17
|
* @param options
|
|
18
18
|
* @returns
|
|
19
19
|
*/
|
|
20
|
-
export const authenticatePasskey = (options, logger = EventLogger) => pipe(authenticatePasskeyM(options), Micro.provideService(Logger, logger), runToPromise);
|
|
20
|
+
export const authenticatePasskey = (options, logger = EventLogger) => pipe(authenticatePasskeyM(options), Micro.provideService(Logger, logger), Micro.provideService(AuthenticationHelper, AuthenticationHelper.Default), runToPromise);
|
|
21
21
|
export { isAuthenticationSuccess } from "./micro";
|
|
22
22
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/passkey/authentication/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/passkey/authentication/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AACpC,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,EAEL,oBAAoB,EAGpB,mBAAmB,IAAI,oBAAoB,GAC5C,MAAM,SAAS,CAAA;AAEhB;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,OAA8B,EAC9B,SAAgC,WAAW,EACX,EAAE,CAClC,IAAI,CACF,oBAAoB,CAAC,OAAO,CAAC,EAC7B,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,EACpC,KAAK,CAAC,cAAc,CAAC,oBAAoB,EAAE,oBAAoB,CAAC,OAAO,CAAC,EACxE,kBAAkB,CACnB,CAAA;AAEH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,OAA8B,EAC9B,SAAgC,WAAW,EACW,EAAE,CACxD,IAAI,CACF,oBAAoB,CAAC,OAAO,CAAC,EAC7B,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,EACpC,KAAK,CAAC,cAAc,CAAC,oBAAoB,EAAE,oBAAoB,CAAC,OAAO,CAAC,EACxE,YAAY,CACb,CAAA;AAGH,OAAO,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAA"}
|
|
@@ -1,9 +1,29 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { type UnexpectedError } from "../../network";
|
|
3
|
-
import { OtherPasskeyError, PasskeysUnsupportedError } from "../shared";
|
|
4
|
-
import { type PasslockOptions } from "../../shared";
|
|
5
|
-
import { Logger } from "../../logger";
|
|
1
|
+
import type { PasslockOptions } from "../../shared";
|
|
6
2
|
import type { UserVerification } from "../types";
|
|
3
|
+
import * as Helper from "@simplewebauthn/browser";
|
|
4
|
+
import { type AuthenticationResponseJSON, type PublicKeyCredentialRequestOptionsJSON } from "@simplewebauthn/browser";
|
|
5
|
+
import { Context, Micro } from "effect";
|
|
6
|
+
import { Endpoint, type UnexpectedError } from "../../internal/network";
|
|
7
|
+
import { TenancyId } from "../../internal/tenancy";
|
|
8
|
+
import { Logger } from "../../logger";
|
|
9
|
+
import { OtherPasskeyError, PasskeysUnsupportedError } from "../errors";
|
|
10
|
+
interface OptionsResponse {
|
|
11
|
+
sessionToken: string;
|
|
12
|
+
optionsJSON: PublicKeyCredentialRequestOptionsJSON;
|
|
13
|
+
}
|
|
14
|
+
declare const AuthenticationHelper_base: Context.TagClass<AuthenticationHelper, "AuthenticationHelper", {
|
|
15
|
+
browserSupportsWebAuthn: typeof Helper.browserSupportsWebAuthn;
|
|
16
|
+
startAuthentication: typeof Helper.startAuthentication;
|
|
17
|
+
}>;
|
|
18
|
+
export declare class AuthenticationHelper extends AuthenticationHelper_base {
|
|
19
|
+
static Default: {
|
|
20
|
+
browserSupportsWebAuthn: typeof Helper.browserSupportsWebAuthn;
|
|
21
|
+
startAuthentication: typeof Helper.startAuthentication;
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
export declare const authenticationEvent: readonly ["optionsRequest", "getCredential", "verifyCredential"];
|
|
25
|
+
export type AuthenticationEvent = (typeof authenticationEvent)[number];
|
|
26
|
+
export type OnEventFn = (event: AuthenticationEvent) => void;
|
|
7
27
|
export interface AuthenticationOptions extends PasslockOptions {
|
|
8
28
|
/**
|
|
9
29
|
* Passlock userId. Essentially a shortcut to look up any
|
|
@@ -22,8 +42,21 @@ export interface AuthenticationOptions extends PasslockOptions {
|
|
|
22
42
|
* @see {@link https://passlock.dev/passkeys/user-verification/|userVerification}
|
|
23
43
|
*/
|
|
24
44
|
userVerification?: UserVerification | undefined;
|
|
45
|
+
/**
|
|
46
|
+
* Use browser autofill.
|
|
47
|
+
*/
|
|
48
|
+
autofill?: boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Receive notifications about key stages in the authentication process.
|
|
51
|
+
* For example, you might use event notifications to toggle loading icons or
|
|
52
|
+
* to disable certain form fields.
|
|
53
|
+
* @param event
|
|
54
|
+
* @returns
|
|
55
|
+
*/
|
|
56
|
+
onEvent?: OnEventFn;
|
|
25
57
|
timeout?: number | undefined;
|
|
26
58
|
}
|
|
59
|
+
export declare const fetchOptions: (options: Omit<AuthenticationOptions, keyof PasslockOptions>) => Micro.Micro<OptionsResponse, UnexpectedError, Endpoint | Logger | TenancyId>;
|
|
27
60
|
declare const AuthenticationSuccessTag: "AuthenticationSuccess";
|
|
28
61
|
type AuthenticationSuccessTag = typeof AuthenticationSuccessTag;
|
|
29
62
|
/**
|
|
@@ -58,7 +91,21 @@ export interface AuthenticationSuccess {
|
|
|
58
91
|
code: string;
|
|
59
92
|
}
|
|
60
93
|
export declare const isAuthenticationSuccess: (payload: unknown) => payload is AuthenticationSuccess;
|
|
61
|
-
export
|
|
94
|
+
export interface PasskeyNotFound {
|
|
95
|
+
_tag: "@error/PasskeyNotFound";
|
|
96
|
+
message: string;
|
|
97
|
+
credentialId: string;
|
|
98
|
+
rpId: string;
|
|
99
|
+
}
|
|
100
|
+
export declare const isPasskeyNotFound: (payload: unknown) => payload is PasskeyNotFound;
|
|
101
|
+
export declare const startAuthentication: (optionsJSON: PublicKeyCredentialRequestOptionsJSON, { useBrowserAutofill, onEvent, }: {
|
|
102
|
+
useBrowserAutofill: boolean;
|
|
103
|
+
onEvent?: OnEventFn | undefined;
|
|
104
|
+
}) => Micro.Micro<Helper.AuthenticationResponseJSON, PasskeysUnsupportedError | OtherPasskeyError, Logger | AuthenticationHelper>;
|
|
105
|
+
export declare const verifyCredential: (sessionToken: string, response: AuthenticationResponseJSON, { onEvent }: {
|
|
106
|
+
onEvent?: OnEventFn | undefined;
|
|
107
|
+
}) => Micro.Micro<AuthenticationSuccess, UnexpectedError | PasskeyNotFound, Endpoint | Logger | TenancyId>;
|
|
108
|
+
export type AuthenticationError = PasskeysUnsupportedError | OtherPasskeyError | PasskeyNotFound | UnexpectedError;
|
|
62
109
|
/**
|
|
63
110
|
* Trigger local passkey authentication then verify the passkey in the Passlock vault.
|
|
64
111
|
* Returns a code and id_token that can be exchanged/decoded in your backend.
|
|
@@ -66,6 +113,6 @@ export type AuthenticationError = PasskeysUnsupportedError | OtherPasskeyError |
|
|
|
66
113
|
* @param options
|
|
67
114
|
* @returns
|
|
68
115
|
*/
|
|
69
|
-
export declare const authenticatePasskey: (options: AuthenticationOptions) => Micro.Micro<AuthenticationSuccess, AuthenticationError, Logger>;
|
|
116
|
+
export declare const authenticatePasskey: (options: AuthenticationOptions) => Micro.Micro<AuthenticationSuccess, AuthenticationError, Logger | AuthenticationHelper>;
|
|
70
117
|
export {};
|
|
71
118
|
//# sourceMappingURL=micro.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"micro.d.ts","sourceRoot":"","sources":["../../../src/passkey/authentication/micro.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"micro.d.ts","sourceRoot":"","sources":["../../../src/passkey/authentication/micro.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"micro.it.test.d.ts","sourceRoot":"","sources":["../../../src/passkey/authentication/micro.it.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { Context, Micro, pipe } from "effect";
|
|
2
|
+
import { describe, expect, it } from "vitest";
|
|
3
|
+
import { Endpoint } from "../../internal/network";
|
|
4
|
+
import { TenancyId } from "../../internal/tenancy";
|
|
5
|
+
import { Logger } from "../../logger";
|
|
6
|
+
import { fetchOptions, verifyCredential } from "./micro";
|
|
7
|
+
describe(fetchOptions.name, () => {
|
|
8
|
+
const tenancyId = "itTenancy";
|
|
9
|
+
const loggerTest = {
|
|
10
|
+
logDebug: () => Micro.void,
|
|
11
|
+
logError: () => Micro.void,
|
|
12
|
+
logInfo: () => Micro.void,
|
|
13
|
+
logWarn: () => Micro.void,
|
|
14
|
+
};
|
|
15
|
+
const endpoint = pipe(Micro.sync(() => process.env.PASSLOCK_ENDPOINT ?? "http://localhost:3000"), Micro.map((endpoint) => ({ endpoint })));
|
|
16
|
+
it("should fetch options from the int test env", async () => {
|
|
17
|
+
const { optionsJSON, sessionToken } = await pipe(fetchOptions({}), Micro.provideServiceEffect(Endpoint, endpoint), Micro.provideService(Logger, loggerTest), Micro.provideService(TenancyId, { tenancyId }), Micro.runPromise);
|
|
18
|
+
expect(sessionToken).toEqual(expect.any(String));
|
|
19
|
+
expect(optionsJSON.challenge).toEqual(expect.any(String));
|
|
20
|
+
expect(optionsJSON.userVerification).toEqual("preferred");
|
|
21
|
+
});
|
|
22
|
+
it("should respect userVerification", async () => {
|
|
23
|
+
const userVerification = "required";
|
|
24
|
+
const { optionsJSON, sessionToken } = await pipe(fetchOptions({ userVerification }), Micro.provideServiceEffect(Endpoint, endpoint), Micro.provideService(Logger, loggerTest), Micro.provideService(TenancyId, { tenancyId }), Micro.runPromise);
|
|
25
|
+
expect(sessionToken).toEqual(expect.any(String));
|
|
26
|
+
expect(optionsJSON.challenge).toEqual(expect.any(String));
|
|
27
|
+
expect(optionsJSON.userVerification).toEqual(userVerification);
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
describe(verifyCredential.name, () => {
|
|
31
|
+
const tenancyId = "itTenancy";
|
|
32
|
+
const endpoint = "http://localhost:3000";
|
|
33
|
+
const loggerTest = {
|
|
34
|
+
logDebug: () => Micro.void,
|
|
35
|
+
logError: () => Micro.void,
|
|
36
|
+
logInfo: () => Micro.void,
|
|
37
|
+
logWarn: () => Micro.void,
|
|
38
|
+
};
|
|
39
|
+
const ctx = pipe(Context.make(Logger, loggerTest), Context.add(TenancyId, { tenancyId }), Context.add(Endpoint, { endpoint }));
|
|
40
|
+
it("should return an error if the passkey doesnt exist", async () => {
|
|
41
|
+
const { sessionToken } = await pipe(fetchOptions({}), Micro.provideContext(ctx), Micro.runPromise);
|
|
42
|
+
const response = {
|
|
43
|
+
clientExtensionResults: {},
|
|
44
|
+
id: "123456",
|
|
45
|
+
rawId: "123456",
|
|
46
|
+
response: {
|
|
47
|
+
authenticatorData: "",
|
|
48
|
+
clientDataJSON: "",
|
|
49
|
+
signature: "",
|
|
50
|
+
},
|
|
51
|
+
type: "public-key",
|
|
52
|
+
};
|
|
53
|
+
const error = await pipe(verifyCredential(sessionToken, response, {}), Micro.flip, Micro.provideContext(ctx), Micro.runPromise);
|
|
54
|
+
expect(error._tag).toEqual("@error/PasskeyNotFound");
|
|
55
|
+
});
|
|
56
|
+
it("should return an error if the session token is wrong", async () => {
|
|
57
|
+
await pipe(fetchOptions({}), Micro.provideContext(ctx), Micro.runPromise);
|
|
58
|
+
const response = {
|
|
59
|
+
clientExtensionResults: {},
|
|
60
|
+
id: "123456",
|
|
61
|
+
rawId: "123456",
|
|
62
|
+
response: {
|
|
63
|
+
authenticatorData: "",
|
|
64
|
+
clientDataJSON: "",
|
|
65
|
+
signature: "",
|
|
66
|
+
},
|
|
67
|
+
type: "public-key",
|
|
68
|
+
};
|
|
69
|
+
const error = await pipe(verifyCredential("invalidSessionToken", response, {}), Micro.flip, Micro.provideContext(ctx), Micro.runPromise);
|
|
70
|
+
expect(error._tag).toEqual("@error/UnexpectedError");
|
|
71
|
+
expect(error.message).toEqual("Invalid challenge token");
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
//# sourceMappingURL=micro.it.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"micro.it.test.js","sourceRoot":"","sources":["../../../src/passkey/authentication/micro.it.test.ts"],"names":[],"mappings":"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"}
|