@passlock/client 0.9.32 → 2.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -86
- package/README.template.md +16 -88
- package/dist/index.d.ts +4 -206
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -158
- package/dist/index.js.map +1 -1
- package/dist/logger/index.d.ts +24 -0
- package/dist/logger/index.d.ts.map +1 -0
- package/dist/logger/index.js +47 -0
- package/dist/logger/index.js.map +1 -0
- package/dist/network.d.ts +39 -0
- package/dist/network.d.ts.map +1 -0
- package/dist/network.js +83 -0
- package/dist/network.js.map +1 -0
- package/dist/passkey/authentication/index.d.ts +21 -0
- package/dist/passkey/authentication/index.d.ts.map +1 -0
- package/dist/passkey/authentication/index.js +22 -0
- package/dist/passkey/authentication/index.js.map +1 -0
- package/dist/passkey/authentication/micro.d.ts +71 -0
- package/dist/passkey/authentication/micro.d.ts.map +1 -0
- package/dist/passkey/authentication/micro.js +107 -0
- package/dist/passkey/authentication/micro.js.map +1 -0
- package/dist/passkey/index.d.ts +7 -0
- package/dist/passkey/index.d.ts.map +1 -0
- package/dist/passkey/index.js +5 -0
- package/dist/passkey/index.js.map +1 -0
- package/dist/passkey/registration/index.d.ts +19 -0
- package/dist/passkey/registration/index.d.ts.map +1 -0
- package/dist/passkey/registration/index.js +20 -0
- package/dist/passkey/registration/index.js.map +1 -0
- package/dist/passkey/registration/micro.d.ts +101 -0
- package/dist/passkey/registration/micro.d.ts.map +1 -0
- package/dist/passkey/registration/micro.js +126 -0
- package/dist/passkey/registration/micro.js.map +1 -0
- package/dist/passkey/shared.d.ts +24 -0
- package/dist/passkey/shared.d.ts.map +1 -0
- package/dist/passkey/shared.js +10 -0
- package/dist/passkey/shared.js.map +1 -0
- package/dist/passkey/support.d.ts +3 -0
- package/dist/passkey/support.d.ts.map +1 -0
- package/dist/passkey/support.js +4 -0
- package/dist/passkey/support.js.map +1 -0
- package/dist/passkey/types.d.ts +26 -0
- package/dist/passkey/types.d.ts.map +1 -0
- package/dist/passkey/types.js +2 -0
- package/dist/passkey/types.js.map +1 -0
- package/dist/promise.d.ts +15 -0
- package/dist/promise.d.ts.map +1 -0
- package/dist/promise.js +46 -0
- package/dist/promise.js.map +1 -0
- package/dist/shared.d.ts +15 -0
- package/dist/shared.d.ts.map +1 -0
- package/dist/shared.js +2 -0
- package/dist/shared.js.map +1 -0
- package/dist/tenancy.d.ts +8 -0
- package/dist/tenancy.d.ts.map +1 -0
- package/dist/tenancy.js +4 -0
- package/dist/tenancy.js.map +1 -0
- package/package.json +52 -58
- package/LICENSE +0 -21
- package/dist/authentication/authenticate.d.ts +0 -23
- package/dist/authentication/authenticate.fixture.d.ts +0 -52
- package/dist/authentication/authenticate.fixture.js +0 -50
- package/dist/authentication/authenticate.fixture.js.map +0 -1
- package/dist/authentication/authenticate.js +0 -72
- package/dist/authentication/authenticate.js.map +0 -1
- package/dist/capabilities/capabilities.d.ts +0 -19
- package/dist/capabilities/capabilities.js +0 -37
- package/dist/capabilities/capabilities.js.map +0 -1
- package/dist/connection/connection.d.ts +0 -15
- package/dist/connection/connection.fixture.d.ts +0 -10
- package/dist/connection/connection.fixture.js +0 -13
- package/dist/connection/connection.fixture.js.map +0 -1
- package/dist/connection/connection.js +0 -23
- package/dist/connection/connection.js.map +0 -1
- package/dist/effect.d.ts +0 -26
- package/dist/effect.js +0 -78
- package/dist/effect.js.map +0 -1
- package/dist/email/email.d.ts +0 -70
- package/dist/email/email.fixture.d.ts +0 -46
- package/dist/email/email.fixture.js +0 -25
- package/dist/email/email.fixture.js.map +0 -1
- package/dist/email/email.js +0 -83
- package/dist/email/email.js.map +0 -1
- package/dist/event/event.d.ts +0 -8
- package/dist/event/event.js +0 -23
- package/dist/event/event.js.map +0 -1
- package/dist/logging/eventLogger.d.ts +0 -17
- package/dist/logging/eventLogger.js +0 -38
- package/dist/logging/eventLogger.js.map +0 -1
- package/dist/registration/register.d.ts +0 -25
- package/dist/registration/register.fixture.d.ts +0 -53
- package/dist/registration/register.fixture.js +0 -66
- package/dist/registration/register.fixture.js.map +0 -1
- package/dist/registration/register.js +0 -77
- package/dist/registration/register.js.map +0 -1
- package/dist/rpc/client.d.ts +0 -30
- package/dist/rpc/client.js +0 -101
- package/dist/rpc/client.js.map +0 -1
- package/dist/rpc/config.d.ts +0 -15
- package/dist/rpc/config.js +0 -6
- package/dist/rpc/config.js.map +0 -1
- package/dist/rpc/connection.d.ts +0 -8
- package/dist/rpc/connection.js +0 -16
- package/dist/rpc/connection.js.map +0 -1
- package/dist/rpc/passkey/authentication.d.ts +0 -8
- package/dist/rpc/passkey/authentication.js +0 -17
- package/dist/rpc/passkey/authentication.js.map +0 -1
- package/dist/rpc/passkey/registration.d.ts +0 -8
- package/dist/rpc/passkey/registration.js +0 -17
- package/dist/rpc/passkey/registration.js.map +0 -1
- package/dist/rpc/social.d.ts +0 -10
- package/dist/rpc/social.js +0 -19
- package/dist/rpc/social.js.map +0 -1
- package/dist/rpc/user.d.ts +0 -8
- package/dist/rpc/user.js +0 -20
- package/dist/rpc/user.js.map +0 -1
- package/dist/social/social.d.ts +0 -23
- package/dist/social/social.fixture.d.ts +0 -46
- package/dist/social/social.fixture.js +0 -31
- package/dist/social/social.fixture.js.map +0 -1
- package/dist/social/social.js +0 -38
- package/dist/social/social.js.map +0 -1
- package/dist/storage/storage.d.ts +0 -56
- package/dist/storage/storage.fixture.d.ts +0 -4
- package/dist/storage/storage.fixture.js +0 -10
- package/dist/storage/storage.fixture.js.map +0 -1
- package/dist/storage/storage.js +0 -111
- package/dist/storage/storage.js.map +0 -1
- package/dist/test/fixtures.d.ts +0 -15
- package/dist/test/fixtures.js +0 -56
- package/dist/test/fixtures.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/dist/user/user.d.ts +0 -25
- package/dist/user/user.fixture.d.ts +0 -12
- package/dist/user/user.fixture.js +0 -20
- package/dist/user/user.fixture.js.map +0 -1
- package/dist/user/user.js +0 -37
- package/dist/user/user.js.map +0 -1
- package/dist/version.d.ts +0 -1
- package/dist/version.js +0 -2
- package/dist/version.js.map +0 -1
- package/src/authentication/authenticate.fixture.ts +0 -73
- package/src/authentication/authenticate.test.ts +0 -249
- package/src/authentication/authenticate.ts +0 -143
- package/src/capabilities/capabilities.ts +0 -83
- package/src/connection/connection.fixture.ts +0 -20
- package/src/connection/connection.test.ts +0 -60
- package/src/connection/connection.ts +0 -51
- package/src/effect.ts +0 -280
- package/src/email/email.fixture.ts +0 -44
- package/src/email/email.test.ts +0 -186
- package/src/email/email.ts +0 -148
- package/src/event/event.node.test.ts +0 -21
- package/src/event/event.test.ts +0 -37
- package/src/event/event.ts +0 -25
- package/src/index.ts +0 -407
- package/src/logging/eventLogger.test.ts +0 -104
- package/src/logging/eventLogger.ts +0 -41
- package/src/registration/register.fixture.ts +0 -96
- package/src/registration/register.test.ts +0 -216
- package/src/registration/register.ts +0 -156
- package/src/rpc/client.ts +0 -174
- package/src/rpc/config.ts +0 -18
- package/src/rpc/connection.ts +0 -32
- package/src/rpc/passkey/authentication.ts +0 -52
- package/src/rpc/passkey/registration.ts +0 -52
- package/src/rpc/social.ts +0 -55
- package/src/rpc/user.ts +0 -68
- package/src/social/social.fixture.ts +0 -44
- package/src/social/social.test.ts +0 -179
- package/src/social/social.ts +0 -79
- package/src/storage/storage.fixture.ts +0 -16
- package/src/storage/storage.test.ts +0 -206
- package/src/storage/storage.ts +0 -168
- package/src/test/fixtures.ts +0 -70
- package/src/user/user.fixture.ts +0 -33
- package/src/user/user.test.ts +0 -84
- package/src/user/user.ts +0 -71
- package/src/version.ts +0 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAIhC,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Context, Micro } from "effect";
|
|
2
|
+
declare const Logger_base: Context.TagClass<Logger, "Logger", {
|
|
3
|
+
readonly logDebug: (message: string) => Micro.Micro<void>;
|
|
4
|
+
readonly logInfo: (message: string) => Micro.Micro<void>;
|
|
5
|
+
readonly logError: (message: string) => Micro.Micro<void>;
|
|
6
|
+
}>;
|
|
7
|
+
export declare class Logger extends Logger_base {
|
|
8
|
+
}
|
|
9
|
+
export declare const ConsoleLogger: typeof Logger.Service;
|
|
10
|
+
export declare enum LogLevel {
|
|
11
|
+
DEBUG = "DEBUG",
|
|
12
|
+
INFO = "INFO",
|
|
13
|
+
ERROR = "ERROR"
|
|
14
|
+
}
|
|
15
|
+
export declare class LogEvent extends Event {
|
|
16
|
+
#private;
|
|
17
|
+
static name: string;
|
|
18
|
+
constructor(message: string, level: LogLevel);
|
|
19
|
+
get message(): string;
|
|
20
|
+
get level(): LogLevel;
|
|
21
|
+
}
|
|
22
|
+
export declare const EventLogger: typeof Logger.Service;
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +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,CAAC;;uBAKjB,CAAC,OAAO,EAAE,MAAM,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;sBACvC,CAAC,OAAO,EAAE,MAAM,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;uBACrC,CAAC,OAAO,EAAE,MAAM,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;;AAL7D,qBAAa,MAAO,SAAQ,WAOzB;CAAG;AAEN,eAAO,MAAM,aAAa,EAAE,OAAO,MAAM,CAAC,OAezC,CAAC;AAEF,oBAAY,QAAQ;IAClB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,KAAK,UAAU;CAChB;AAED,qBAAa,QAAS,SAAQ,KAAK;;IAIjC,MAAM,CAAC,IAAI,SAAsB;gBAErB,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,OAIvC,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Context, Micro } from "effect";
|
|
2
|
+
export class Logger extends Context.Tag("Logger")() {
|
|
3
|
+
}
|
|
4
|
+
export const ConsoleLogger = {
|
|
5
|
+
logDebug: (message, ...optionalArgs) => Micro.sync(() => {
|
|
6
|
+
console.debug(message, optionalArgs);
|
|
7
|
+
}),
|
|
8
|
+
logInfo: (message, ...optionalArgs) => Micro.sync(() => {
|
|
9
|
+
console.info(message, optionalArgs);
|
|
10
|
+
}),
|
|
11
|
+
logError: (message, ...optionalArgs) => Micro.sync(() => {
|
|
12
|
+
console.error(message, optionalArgs);
|
|
13
|
+
}),
|
|
14
|
+
};
|
|
15
|
+
export var LogLevel;
|
|
16
|
+
(function (LogLevel) {
|
|
17
|
+
LogLevel["DEBUG"] = "DEBUG";
|
|
18
|
+
LogLevel["INFO"] = "INFO";
|
|
19
|
+
LogLevel["ERROR"] = "ERROR";
|
|
20
|
+
})(LogLevel || (LogLevel = {}));
|
|
21
|
+
export class LogEvent extends Event {
|
|
22
|
+
#message;
|
|
23
|
+
#level;
|
|
24
|
+
static name = "PasslockLogEvent";
|
|
25
|
+
constructor(message, level) {
|
|
26
|
+
super(LogEvent.name);
|
|
27
|
+
this.#message = message;
|
|
28
|
+
this.#level = level;
|
|
29
|
+
}
|
|
30
|
+
get message() {
|
|
31
|
+
return this.#message;
|
|
32
|
+
}
|
|
33
|
+
get level() {
|
|
34
|
+
return this.#level;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
const logEvent = (level) => (message) => Micro.sync(() => {
|
|
38
|
+
if (typeof message === "string") {
|
|
39
|
+
window.dispatchEvent(new LogEvent(message, level));
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
export const EventLogger = {
|
|
43
|
+
logDebug: logEvent(LogLevel.DEBUG),
|
|
44
|
+
logInfo: logEvent(LogLevel.INFO),
|
|
45
|
+
logError: logEvent(LogLevel.ERROR),
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/logger/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAExC,MAAM,OAAO,MAAO,SAAQ,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAO9C;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,CAAC;IACvC,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,CAAC;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,CAAC;IACvC,CAAC,CAAC;CACL,CAAC;AAEF,MAAM,CAAN,IAAY,QAIX;AAJD,WAAY,QAAQ;IAClB,2BAAe,CAAA;IACf,yBAAa,CAAA;IACb,2BAAe,CAAA;AACjB,CAAC,EAJW,QAAQ,KAAR,QAAQ,QAInB;AAED,MAAM,OAAO,QAAS,SAAQ,KAAK;IACxB,QAAQ,CAAS;IACjB,MAAM,CAAW;IAE1B,MAAM,CAAC,IAAI,GAAG,kBAAkB,CAAC;IAEjC,YAAY,OAAe,EAAE,KAAe;QAC1C,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,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,CAAC;IACrD,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,MAAM,CAAC,MAAM,WAAW,GAA0B;IAChD,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;IAClC,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;IAChC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;CACnC,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Context, Micro } from "effect";
|
|
2
|
+
export declare const isUnexpectedError: (err: unknown) => err is UnexpectedError;
|
|
3
|
+
declare const UnexpectedError_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 & {
|
|
4
|
+
readonly _tag: "@error/UnexpectedError";
|
|
5
|
+
} & Readonly<A>;
|
|
6
|
+
export declare class UnexpectedError extends UnexpectedError_base<{
|
|
7
|
+
readonly message: string;
|
|
8
|
+
readonly url: string;
|
|
9
|
+
}> {
|
|
10
|
+
static isUnexpectedError: (err: unknown) => err is UnexpectedError;
|
|
11
|
+
}
|
|
12
|
+
declare const Endpoint_base: Context.TagClass<Endpoint, "Endpoint", {
|
|
13
|
+
readonly endpoint: string;
|
|
14
|
+
}>;
|
|
15
|
+
/**
|
|
16
|
+
* Passlock API endpoint
|
|
17
|
+
*/
|
|
18
|
+
export declare class Endpoint extends Endpoint_base {
|
|
19
|
+
}
|
|
20
|
+
export declare const buildEndpoint: ({ endpoint, }: {
|
|
21
|
+
endpoint?: string;
|
|
22
|
+
}) => Endpoint["Type"];
|
|
23
|
+
/**
|
|
24
|
+
* Make a fetch request and parse the response using the provided
|
|
25
|
+
* responsePredicate function.
|
|
26
|
+
* @param param0
|
|
27
|
+
* @returns
|
|
28
|
+
*/
|
|
29
|
+
export declare const makeRequest: <Res extends object>({ url, payload, responsePredicate, label, }: {
|
|
30
|
+
url: URL;
|
|
31
|
+
/** Request payload */
|
|
32
|
+
payload: object;
|
|
33
|
+
/** Response type guard */
|
|
34
|
+
responsePredicate: (res: unknown) => res is Res;
|
|
35
|
+
/** For logging/error reporting */
|
|
36
|
+
label: string;
|
|
37
|
+
}) => Micro.Micro<Res, UnexpectedError>;
|
|
38
|
+
export {};
|
|
39
|
+
//# sourceMappingURL=network.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../src/network.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAexC,eAAO,MAAM,iBAAiB,GAAI,KAAK,OAAO,KAAG,GAAG,IAAI,eACxB,CAAC;;;;AAEjC,qBAAa,eAAgB,SAAQ,qBAEnC;IACA,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB,CAAC;IACA,MAAM,CAAC,iBAAiB,QATa,OAAO,KAAG,GAAG,IAAI,eAAe,CASxB;CAC9C;;uBAOsB,MAAM;;AAL7B;;GAEG;AACH,qBAAa,QAAS,SAAQ,aAG3B;CAAG;AAEN,eAAO,MAAM,aAAa,GAAI,eAE3B;IACD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,KAAG,QAAQ,CAAC,MAAM,CAA8B,CAAC;AAoBlD;;;;;GAKG;AACH,eAAO,MAAM,WAAW,GAAI,GAAG,SAAS,MAAM,EAAE,6CAK7C;IACD,GAAG,EAAE,GAAG,CAAC;IACT,sBAAsB;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,0BAA0B;IAC1B,iBAAiB,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,GAAG,IAAI,GAAG,CAAC;IAChD,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;CACf,KAAG,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,eAAe,CAiDhC,CAAC"}
|
package/dist/network.js
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { Context, Micro } from "effect";
|
|
2
|
+
/**
|
|
3
|
+
* Make a request to the Passlock API endpoint.
|
|
4
|
+
* Assumes the response is JSON and any errors
|
|
5
|
+
* have a non-200 status code, are also JSON and
|
|
6
|
+
* include message and _tag fields.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* TODO Consider Effect RPC/HttpClient
|
|
10
|
+
*/
|
|
11
|
+
const DefaultEndpoint = "https://api.passlock.dev";
|
|
12
|
+
export const isUnexpectedError = (err) => err instanceof UnexpectedError;
|
|
13
|
+
export class UnexpectedError extends Micro.TaggedError("@error/UnexpectedError") {
|
|
14
|
+
static isUnexpectedError = isUnexpectedError;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Passlock API endpoint
|
|
18
|
+
*/
|
|
19
|
+
export class Endpoint extends Context.Tag("Endpoint")() {
|
|
20
|
+
}
|
|
21
|
+
export const buildEndpoint = ({ endpoint = DefaultEndpoint, }) => Endpoint.of({ endpoint });
|
|
22
|
+
const isErrorResponse = (payload) => {
|
|
23
|
+
if (typeof payload !== "object")
|
|
24
|
+
return false;
|
|
25
|
+
if (payload === null)
|
|
26
|
+
return false;
|
|
27
|
+
if (!("message" in payload))
|
|
28
|
+
return false;
|
|
29
|
+
if (typeof payload.message !== "string")
|
|
30
|
+
return false;
|
|
31
|
+
if (!("_tag" in payload))
|
|
32
|
+
return false;
|
|
33
|
+
if (typeof payload._tag !== "string")
|
|
34
|
+
return false;
|
|
35
|
+
return true;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Make a fetch request and parse the response using the provided
|
|
39
|
+
* responsePredicate function.
|
|
40
|
+
* @param param0
|
|
41
|
+
* @returns
|
|
42
|
+
*/
|
|
43
|
+
export const makeRequest = ({ url, payload, responsePredicate, label, }) => Micro.gen(function* () {
|
|
44
|
+
const headers = {
|
|
45
|
+
"Content-Type": "application/json",
|
|
46
|
+
Accept: "application/json",
|
|
47
|
+
};
|
|
48
|
+
const body = JSON.stringify(payload);
|
|
49
|
+
const networkError = new UnexpectedError({
|
|
50
|
+
message: "Fetch failed",
|
|
51
|
+
url: String(url),
|
|
52
|
+
});
|
|
53
|
+
const parseError = new UnexpectedError({
|
|
54
|
+
message: "Unable to parse JSON response",
|
|
55
|
+
url: String(url),
|
|
56
|
+
});
|
|
57
|
+
const invalidResponsePayload = new UnexpectedError({
|
|
58
|
+
message: `Invalid ${label} response`,
|
|
59
|
+
url: String(url),
|
|
60
|
+
});
|
|
61
|
+
const fetchResponse = yield* Micro.tryPromise({
|
|
62
|
+
try: () => fetch(url, { method: "post", headers, body }),
|
|
63
|
+
catch: () => networkError,
|
|
64
|
+
});
|
|
65
|
+
if (!fetchResponse.ok) {
|
|
66
|
+
const apiError = yield* Micro.tryPromise({
|
|
67
|
+
try: () => fetchResponse.json(),
|
|
68
|
+
catch: () => parseError,
|
|
69
|
+
});
|
|
70
|
+
return isErrorResponse(apiError)
|
|
71
|
+
? yield* new UnexpectedError({
|
|
72
|
+
...apiError,
|
|
73
|
+
url: String(url),
|
|
74
|
+
})
|
|
75
|
+
: yield* parseError;
|
|
76
|
+
}
|
|
77
|
+
const json = yield* Micro.tryPromise({
|
|
78
|
+
try: () => fetchResponse.json(),
|
|
79
|
+
catch: () => parseError,
|
|
80
|
+
});
|
|
81
|
+
return responsePredicate(json) ? json : yield* invalidResponsePayload;
|
|
82
|
+
});
|
|
83
|
+
//# sourceMappingURL=network.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network.js","sourceRoot":"","sources":["../src/network.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type AuthenticationError, type AuthenticationOptions, type AuthenticationSuccess } from "./micro";
|
|
2
|
+
import { Logger } from "../../logger";
|
|
3
|
+
/**
|
|
4
|
+
* Trigger local passkey authentication then verify the passkey in the Passlock vault.
|
|
5
|
+
* Returns a code and id_token that can be exchanged/decoded in your backend.
|
|
6
|
+
*
|
|
7
|
+
* @param options
|
|
8
|
+
* @returns
|
|
9
|
+
*/
|
|
10
|
+
export declare const authenticatePasskeyUnsafe: (options: AuthenticationOptions, logger?: typeof Logger.Service) => Promise<AuthenticationSuccess>;
|
|
11
|
+
/**
|
|
12
|
+
* Trigger local passkey authentication then verify the passkey in the Passlock vault.
|
|
13
|
+
* Returns a code and id_token that can be exchanged/decoded in your backend.
|
|
14
|
+
*
|
|
15
|
+
* @param options
|
|
16
|
+
* @returns
|
|
17
|
+
*/
|
|
18
|
+
export declare const authenticatePasskey: (options: AuthenticationOptions, logger?: typeof Logger.Service) => Promise<AuthenticationSuccess | AuthenticationError>;
|
|
19
|
+
export type { AuthenticationSuccess, AuthenticationError } from "./micro";
|
|
20
|
+
export { isAuthenticationSuccess } from "./micro";
|
|
21
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/passkey/authentication/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC3B,MAAM,SAAS,CAAC;AACjB,OAAO,EAAe,MAAM,EAAE,MAAM,cAAc,CAAC;AAEnD;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,GACpC,SAAS,qBAAqB,EAC9B,SAAQ,OAAO,MAAM,CAAC,OAAqB,KAC1C,OAAO,CAAC,qBAAqB,CAK7B,CAAC;AAEJ;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,GAC9B,SAAS,qBAAqB,EAC9B,SAAQ,OAAO,MAAM,CAAC,OAAqB,KAC1C,OAAO,CAAC,qBAAqB,GAAG,mBAAmB,CAKnD,CAAC;AAEJ,YAAY,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Micro, pipe } from "effect";
|
|
2
|
+
import { runToPromise, runToPromiseUnsafe } from "../../promise";
|
|
3
|
+
import { authenticatePasskey as authenticatePasskeyM, } from "./micro";
|
|
4
|
+
import { EventLogger, Logger } from "../../logger";
|
|
5
|
+
/**
|
|
6
|
+
* Trigger local passkey authentication then verify the passkey in the Passlock vault.
|
|
7
|
+
* Returns a code and id_token that can be exchanged/decoded in your backend.
|
|
8
|
+
*
|
|
9
|
+
* @param options
|
|
10
|
+
* @returns
|
|
11
|
+
*/
|
|
12
|
+
export const authenticatePasskeyUnsafe = (options, logger = EventLogger) => pipe(authenticatePasskeyM(options), Micro.provideService(Logger, logger), runToPromiseUnsafe);
|
|
13
|
+
/**
|
|
14
|
+
* Trigger local passkey authentication then verify the passkey in the Passlock vault.
|
|
15
|
+
* Returns a code and id_token that can be exchanged/decoded in your backend.
|
|
16
|
+
*
|
|
17
|
+
* @param options
|
|
18
|
+
* @returns
|
|
19
|
+
*/
|
|
20
|
+
export const authenticatePasskey = (options, logger = EventLogger) => pipe(authenticatePasskeyM(options), Micro.provideService(Logger, logger), runToPromise);
|
|
21
|
+
export { isAuthenticationSuccess } from "./micro";
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +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,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EACL,mBAAmB,IAAI,oBAAoB,GAI5C,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEnD;;;;;;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,kBAAkB,CACnB,CAAC;AAEJ;;;;;;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,YAAY,CACb,CAAC;AAGJ,OAAO,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { Micro } from "effect";
|
|
2
|
+
import { type UnexpectedError } from "../../network";
|
|
3
|
+
import { OtherPasskeyError, PasskeysUnsupportedError } from "../shared";
|
|
4
|
+
import { type PasslockOptions } from "../../shared";
|
|
5
|
+
import { Logger } from "../../logger";
|
|
6
|
+
import type { UserVerification } from "../types";
|
|
7
|
+
export interface AuthenticationOptions extends PasslockOptions {
|
|
8
|
+
/**
|
|
9
|
+
* Passlock userId. Essentially a shortcut to look up any
|
|
10
|
+
* registered passkeys (allowCredentials) for a given user.
|
|
11
|
+
*/
|
|
12
|
+
userId?: string | undefined;
|
|
13
|
+
/**
|
|
14
|
+
* Restrict the passkey(s) the device presents to the user to a given set
|
|
15
|
+
*
|
|
16
|
+
* @see {@link https://passlock.dev/passkeys/authentication/#allowcredentials|allowCredentials}
|
|
17
|
+
*/
|
|
18
|
+
allowCredentials?: Array<string> | undefined;
|
|
19
|
+
/**
|
|
20
|
+
* Whether the device should re-authenticate the user locally before registering the passkey.
|
|
21
|
+
*
|
|
22
|
+
* @see {@link https://passlock.dev/passkeys/user-verification/|userVerification}
|
|
23
|
+
*/
|
|
24
|
+
userVerification?: UserVerification | undefined;
|
|
25
|
+
timeout?: number | undefined;
|
|
26
|
+
}
|
|
27
|
+
declare const AuthenticationSuccessTag: "AuthenticationSuccess";
|
|
28
|
+
type AuthenticationSuccessTag = typeof AuthenticationSuccessTag;
|
|
29
|
+
/**
|
|
30
|
+
* Represents the outcome of a successfull passkey authentication.
|
|
31
|
+
* Submit the code and/or id_token to your backend, then either
|
|
32
|
+
* exchange the code with the passlock REST API or decode and
|
|
33
|
+
* verify the id_token (JWT).
|
|
34
|
+
*
|
|
35
|
+
* Note: The @passlock/node library includes utilities to do this
|
|
36
|
+
* for you.
|
|
37
|
+
*/
|
|
38
|
+
export interface AuthenticationSuccess {
|
|
39
|
+
_tag: AuthenticationSuccessTag;
|
|
40
|
+
principal: {
|
|
41
|
+
authenticatorId: string;
|
|
42
|
+
userId: string;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* A signed JWT representing the newly registered passkey.
|
|
46
|
+
* Decode and verify this in your backend or use one of the @passlock/node
|
|
47
|
+
* helper utilities.
|
|
48
|
+
*
|
|
49
|
+
* @see {@link https://passlock.dev/principal/idtoken-verification/|id_token}
|
|
50
|
+
*/
|
|
51
|
+
id_token: string;
|
|
52
|
+
/**
|
|
53
|
+
* Call the Passlock API to exchange this code for details about the newly
|
|
54
|
+
* registered passkey.
|
|
55
|
+
*
|
|
56
|
+
* @see {@link https://passlock.dev/principal/code-exchange//|code exchange}
|
|
57
|
+
*/
|
|
58
|
+
code: string;
|
|
59
|
+
}
|
|
60
|
+
export declare const isAuthenticationSuccess: (payload: unknown) => payload is AuthenticationSuccess;
|
|
61
|
+
export type AuthenticationError = PasskeysUnsupportedError | OtherPasskeyError | UnexpectedError;
|
|
62
|
+
/**
|
|
63
|
+
* Trigger local passkey authentication then verify the passkey in the Passlock vault.
|
|
64
|
+
* Returns a code and id_token that can be exchanged/decoded in your backend.
|
|
65
|
+
*
|
|
66
|
+
* @param options
|
|
67
|
+
* @returns
|
|
68
|
+
*/
|
|
69
|
+
export declare const authenticatePasskey: (options: AuthenticationOptions) => Micro.Micro<AuthenticationSuccess, AuthenticationError, Logger>;
|
|
70
|
+
export {};
|
|
71
|
+
//# sourceMappingURL=micro.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"micro.d.ts","sourceRoot":"","sources":["../../../src/passkey/authentication/micro.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,EAAQ,MAAM,QAAQ,CAAC;AAGrC,OAAO,EACL,KAAK,eAAe,EAIrB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AACxE,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAqBjD,MAAM,WAAW,qBAAsB,SAAQ,eAAe;IAC5D;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IAC7C;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAChD,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B;AAwBD,QAAA,MAAM,wBAAwB,EAAG,uBAAgC,CAAC;AAClE,KAAK,wBAAwB,GAAG,OAAO,wBAAwB,CAAC;AAEhE;;;;;;;;GAQG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,wBAAwB,CAAC;IAC/B,SAAS,EAAE;QACT,eAAe,EAAE,MAAM,CAAC;QACxB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF;;;;;;OAMG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,uBAAuB,GAClC,SAAS,OAAO,KACf,OAAO,IAAI,qBASb,CAAC;AA6DF,MAAM,MAAM,mBAAmB,GAC3B,wBAAwB,GACxB,iBAAiB,GACjB,eAAe,CAAC;AAEpB;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,GAC9B,SAAS,qBAAqB,KAC7B,KAAK,CAAC,KAAK,CAAC,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,CAgBhE,CAAC"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { WebAuthnError, startAuthentication as simpleAuthentication, browserSupportsWebAuthn, } from "@simplewebauthn/browser";
|
|
2
|
+
import { Micro, pipe } from "effect";
|
|
3
|
+
import { TenancyId } from "../../tenancy";
|
|
4
|
+
import { buildEndpoint, Endpoint, makeRequest, } from "../../network";
|
|
5
|
+
import { OtherPasskeyError, PasskeysUnsupportedError } from "../shared";
|
|
6
|
+
import {} from "../../shared";
|
|
7
|
+
import { Logger } from "../../logger";
|
|
8
|
+
const isOptionsResponse = (payload) => {
|
|
9
|
+
if (typeof payload !== "object")
|
|
10
|
+
return false;
|
|
11
|
+
if (payload === null)
|
|
12
|
+
return false;
|
|
13
|
+
if (!("optionsJSON" in payload))
|
|
14
|
+
return false;
|
|
15
|
+
if (typeof payload.optionsJSON !== "object")
|
|
16
|
+
return false;
|
|
17
|
+
if (payload.optionsJSON === null)
|
|
18
|
+
return false;
|
|
19
|
+
if (!("sessionToken" in payload))
|
|
20
|
+
return false;
|
|
21
|
+
if (typeof payload.sessionToken !== "string")
|
|
22
|
+
return false;
|
|
23
|
+
return true;
|
|
24
|
+
};
|
|
25
|
+
const fetchOptions = ({ userId, userVerification }) => Micro.gen(function* () {
|
|
26
|
+
const logger = yield* Micro.service(Logger);
|
|
27
|
+
const { endpoint } = yield* Micro.service(Endpoint);
|
|
28
|
+
const { tenancyId } = yield* Micro.service(TenancyId);
|
|
29
|
+
const url = new URL(`${tenancyId}/passkey/authentication/options`, endpoint);
|
|
30
|
+
yield* logger.logInfo("Fetching passkey authentication options from Passlock");
|
|
31
|
+
return yield* makeRequest({
|
|
32
|
+
url,
|
|
33
|
+
payload: { userId, userVerification },
|
|
34
|
+
label: "authentication options",
|
|
35
|
+
responsePredicate: isOptionsResponse,
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
const AuthenticationSuccessTag = "AuthenticationSuccess";
|
|
39
|
+
export const isAuthenticationSuccess = (payload) => {
|
|
40
|
+
if (typeof payload !== "object")
|
|
41
|
+
return false;
|
|
42
|
+
if (payload === null)
|
|
43
|
+
return false;
|
|
44
|
+
if (!("_tag" in payload))
|
|
45
|
+
return false;
|
|
46
|
+
if (typeof payload._tag !== "string")
|
|
47
|
+
return false;
|
|
48
|
+
if (payload._tag !== AuthenticationSuccessTag)
|
|
49
|
+
return false;
|
|
50
|
+
return true;
|
|
51
|
+
};
|
|
52
|
+
const verifyCredential = (sessionToken, response) => Micro.gen(function* () {
|
|
53
|
+
const logger = yield* Micro.service(Logger);
|
|
54
|
+
const { endpoint } = yield* Micro.service(Endpoint);
|
|
55
|
+
const { tenancyId } = yield* Micro.service(TenancyId);
|
|
56
|
+
const url = new URL(`${tenancyId}/passkey/authentication/verification`, endpoint);
|
|
57
|
+
yield* logger.logInfo("Verifying passkey in Passlock vault");
|
|
58
|
+
const authenticationResponse = yield* makeRequest({
|
|
59
|
+
url,
|
|
60
|
+
payload: { sessionToken, response },
|
|
61
|
+
label: "authentication verification",
|
|
62
|
+
responsePredicate: isAuthenticationSuccess,
|
|
63
|
+
});
|
|
64
|
+
yield* logger.logInfo(`Passkey with id ${authenticationResponse.principal.authenticatorId} successfully authenticated`);
|
|
65
|
+
return authenticationResponse;
|
|
66
|
+
});
|
|
67
|
+
const startAuthentication = (optionsJSON) => Micro.gen(function* () {
|
|
68
|
+
const logger = yield* Micro.service(Logger);
|
|
69
|
+
yield* logger.logInfo("Requesting passkey authentication on device");
|
|
70
|
+
const isSupport = browserSupportsWebAuthn();
|
|
71
|
+
if (!isSupport)
|
|
72
|
+
yield* new PasskeysUnsupportedError({
|
|
73
|
+
message: "Device does not support passkeys",
|
|
74
|
+
});
|
|
75
|
+
return yield* Micro.tryPromise({
|
|
76
|
+
try: () => simpleAuthentication({ optionsJSON }),
|
|
77
|
+
catch: (error) => {
|
|
78
|
+
if (error instanceof WebAuthnError) {
|
|
79
|
+
return new OtherPasskeyError({
|
|
80
|
+
error: error.cause,
|
|
81
|
+
message: error.message,
|
|
82
|
+
code: error.code,
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
return new OtherPasskeyError({ error, message: "Unexpected error" });
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
/**
|
|
92
|
+
* Trigger local passkey authentication then verify the passkey in the Passlock vault.
|
|
93
|
+
* Returns a code and id_token that can be exchanged/decoded in your backend.
|
|
94
|
+
*
|
|
95
|
+
* @param options
|
|
96
|
+
* @returns
|
|
97
|
+
*/
|
|
98
|
+
export const authenticatePasskey = (options) => {
|
|
99
|
+
const endpoint = buildEndpoint(options);
|
|
100
|
+
const effect = Micro.gen(function* () {
|
|
101
|
+
const { sessionToken, optionsJSON } = yield* fetchOptions(options);
|
|
102
|
+
const response = yield* startAuthentication(optionsJSON);
|
|
103
|
+
return yield* verifyCredential(sessionToken, response);
|
|
104
|
+
});
|
|
105
|
+
return pipe(effect, Micro.provideService(TenancyId, options), Micro.provideService(Endpoint, endpoint));
|
|
106
|
+
};
|
|
107
|
+
//# sourceMappingURL=micro.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"micro.js","sourceRoot":"","sources":["../../../src/passkey/authentication/micro.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type { RegistrationOptions, RegistrationSuccess, RegistrationError, DuplicatePasskeyError, } from "./registration/micro";
|
|
2
|
+
export { registerPasskeyUnsafe, registerPasskey, isRegistrationSuccess, } from "./registration/index";
|
|
3
|
+
export type { AuthenticationOptions, AuthenticationSuccess, AuthenticationError, } from "./authentication/micro";
|
|
4
|
+
export { authenticatePasskeyUnsafe, authenticatePasskey, isAuthenticationSuccess, } from "./authentication/index";
|
|
5
|
+
export { isPasskeySupport, isAutofillSupport } from "./support";
|
|
6
|
+
export { PasskeysUnsupportedError, OtherPasskeyError } from "./shared";
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/passkey/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAE9B,YAAY,EACV,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,yBAAyB,EACzB,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAEhE,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { registerPasskeyUnsafe, registerPasskey, isRegistrationSuccess, } from "./registration/index";
|
|
2
|
+
export { authenticatePasskeyUnsafe, authenticatePasskey, isAuthenticationSuccess, } from "./authentication/index";
|
|
3
|
+
export { isPasskeySupport, isAutofillSupport } from "./support";
|
|
4
|
+
export { PasskeysUnsupportedError, OtherPasskeyError } from "./shared";
|
|
5
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/passkey/index.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAQ9B,OAAO,EACL,yBAAyB,EACzB,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAEhE,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type RegistrationError, type RegistrationOptions, type RegistrationSuccess } from "./micro";
|
|
2
|
+
import { Logger } from "../../logger";
|
|
3
|
+
/**
|
|
4
|
+
* Register a passkey on the local device and store the
|
|
5
|
+
* associated public key in your Passlock vault.
|
|
6
|
+
* @param options
|
|
7
|
+
* @returns
|
|
8
|
+
*/
|
|
9
|
+
export declare const registerPasskeyUnsafe: (options: RegistrationOptions, logger?: typeof Logger.Service) => Promise<RegistrationSuccess>;
|
|
10
|
+
/**
|
|
11
|
+
* Register a passkey on the local device and store the
|
|
12
|
+
* associated public key in your Passlock vault.
|
|
13
|
+
* @param options
|
|
14
|
+
* @returns
|
|
15
|
+
*/
|
|
16
|
+
export declare const registerPasskey: (options: RegistrationOptions, logger?: typeof Logger.Service) => Promise<RegistrationSuccess | RegistrationError>;
|
|
17
|
+
export type { RegistrationSuccess, RegistrationError } from "./micro";
|
|
18
|
+
export { isRegistrationSuccess } from "./micro";
|
|
19
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/passkey/registration/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACzB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAe,MAAM,EAAE,MAAM,cAAc,CAAC;AAEnD;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAChC,SAAS,mBAAmB,EAC5B,SAAQ,OAAO,MAAM,CAAC,OAAqB,KAC1C,OAAO,CAAC,mBAAmB,CAK3B,CAAC;AAEJ;;;;;GAKG;AACH,eAAO,MAAM,eAAe,GAC1B,SAAS,mBAAmB,EAC5B,SAAQ,OAAO,MAAM,CAAC,OAAqB,KAC1C,OAAO,CAAC,mBAAmB,GAAG,iBAAiB,CAK/C,CAAC;AAEJ,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Micro, pipe } from "effect";
|
|
2
|
+
import { runToPromise, runToPromiseUnsafe } from "../../promise";
|
|
3
|
+
import { registerPasskey as registerPasskeyM, } from "./micro";
|
|
4
|
+
import { EventLogger, Logger } from "../../logger";
|
|
5
|
+
/**
|
|
6
|
+
* Register a passkey on the local device and store the
|
|
7
|
+
* associated public key in your Passlock vault.
|
|
8
|
+
* @param options
|
|
9
|
+
* @returns
|
|
10
|
+
*/
|
|
11
|
+
export const registerPasskeyUnsafe = async (options, logger = EventLogger) => pipe(registerPasskeyM(options), Micro.provideService(Logger, logger), runToPromiseUnsafe);
|
|
12
|
+
/**
|
|
13
|
+
* Register a passkey on the local device and store the
|
|
14
|
+
* associated public key in your Passlock vault.
|
|
15
|
+
* @param options
|
|
16
|
+
* @returns
|
|
17
|
+
*/
|
|
18
|
+
export const registerPasskey = async (options, logger = EventLogger) => pipe(registerPasskeyM(options), Micro.provideService(Logger, logger), runToPromise);
|
|
19
|
+
export { isRegistrationSuccess } from "./micro";
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/passkey/registration/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EACL,eAAe,IAAI,gBAAgB,GAIpC,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,EACxC,OAA4B,EAC5B,SAAgC,WAAW,EACb,EAAE,CAChC,IAAI,CACF,gBAAgB,CAAC,OAAO,CAAC,EACzB,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,EACpC,kBAAkB,CACnB,CAAC;AAEJ;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAClC,OAA4B,EAC5B,SAAgC,WAAW,EACO,EAAE,CACpD,IAAI,CACF,gBAAgB,CAAC,OAAO,CAAC,EACzB,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,EACpC,YAAY,CACb,CAAC;AAGJ,OAAO,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC"}
|