@passlock/client 2.0.0 → 2.0.2

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 (103) hide show
  1. package/README.md +14 -16
  2. package/README.template.md +14 -16
  3. package/dist/errors.d.ts +4 -0
  4. package/dist/errors.d.ts.map +1 -0
  5. package/dist/errors.js +14 -0
  6. package/dist/errors.js.map +1 -0
  7. package/dist/index.d.ts +245 -4
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +253 -3
  10. package/dist/index.js.map +1 -1
  11. package/dist/internal/index.d.ts +4 -0
  12. package/dist/internal/index.d.ts.map +1 -0
  13. package/dist/internal/index.js +4 -0
  14. package/dist/internal/index.js.map +1 -0
  15. package/dist/{shared → internal}/network.d.ts +19 -16
  16. package/dist/internal/network.d.ts.map +1 -0
  17. package/dist/{shared → internal}/network.js +40 -25
  18. package/dist/internal/network.js.map +1 -0
  19. package/dist/{shared → internal}/promise.d.ts +2 -2
  20. package/dist/internal/promise.d.ts.map +1 -0
  21. package/dist/{shared → internal}/promise.js +2 -2
  22. package/dist/internal/promise.js.map +1 -0
  23. package/dist/internal/tenancy.d.ts.map +1 -0
  24. package/dist/internal/tenancy.js.map +1 -0
  25. package/dist/{logger/index.d.ts → logger.d.ts} +19 -4
  26. package/dist/logger.d.ts.map +1 -0
  27. package/dist/{logger/index.js → logger.js} +19 -4
  28. package/dist/logger.js.map +1 -0
  29. package/dist/{shared/options.d.ts → options.d.ts} +4 -0
  30. package/dist/options.d.ts.map +1 -0
  31. package/dist/{shared/options.js.map → options.js.map} +1 -1
  32. package/dist/passkey/authentication/authentication.d.ts +82 -66
  33. package/dist/passkey/authentication/authentication.d.ts.map +1 -1
  34. package/dist/passkey/authentication/authentication.js +67 -49
  35. package/dist/passkey/authentication/authentication.js.map +1 -1
  36. package/dist/passkey/errors.d.ts +158 -16
  37. package/dist/passkey/errors.d.ts.map +1 -1
  38. package/dist/passkey/errors.js +214 -6
  39. package/dist/passkey/errors.js.map +1 -1
  40. package/dist/passkey/registration/registration.d.ts +81 -72
  41. package/dist/passkey/registration/registration.d.ts.map +1 -1
  42. package/dist/passkey/registration/registration.js +42 -35
  43. package/dist/passkey/registration/registration.js.map +1 -1
  44. package/dist/passkey/{types.d.ts → shared.d.ts} +9 -3
  45. package/dist/passkey/shared.d.ts.map +1 -0
  46. package/dist/passkey/shared.js +2 -0
  47. package/dist/passkey/shared.js.map +1 -0
  48. package/dist/passkey/signals/signals.d.ts +93 -35
  49. package/dist/passkey/signals/signals.d.ts.map +1 -1
  50. package/dist/passkey/signals/signals.js +197 -90
  51. package/dist/passkey/signals/signals.js.map +1 -1
  52. package/dist/passkey/support.d.ts +15 -0
  53. package/dist/passkey/support.d.ts.map +1 -1
  54. package/dist/passkey/support.js +16 -1
  55. package/dist/passkey/support.js.map +1 -1
  56. package/dist/principal.d.ts +16 -0
  57. package/dist/principal.d.ts.map +1 -0
  58. package/dist/principal.js +2 -0
  59. package/dist/principal.js.map +1 -0
  60. package/dist/safe.d.ts +247 -0
  61. package/dist/safe.d.ts.map +1 -0
  62. package/dist/safe.js +254 -0
  63. package/dist/safe.js.map +1 -0
  64. package/package.json +26 -21
  65. package/dist/logger/index.d.ts.map +0 -1
  66. package/dist/logger/index.js.map +0 -1
  67. package/dist/passkey/authentication/authentication.test.d.ts +0 -2
  68. package/dist/passkey/authentication/authentication.test.d.ts.map +0 -1
  69. package/dist/passkey/authentication/authentication.test.js +0 -157
  70. package/dist/passkey/authentication/authentication.test.js.map +0 -1
  71. package/dist/passkey/authentication/index.d.ts +0 -21
  72. package/dist/passkey/authentication/index.d.ts.map +0 -1
  73. package/dist/passkey/authentication/index.js +0 -22
  74. package/dist/passkey/authentication/index.js.map +0 -1
  75. package/dist/passkey/index.d.ts +0 -6
  76. package/dist/passkey/index.d.ts.map +0 -1
  77. package/dist/passkey/index.js +0 -6
  78. package/dist/passkey/index.js.map +0 -1
  79. package/dist/passkey/registration/index.d.ts +0 -19
  80. package/dist/passkey/registration/index.d.ts.map +0 -1
  81. package/dist/passkey/registration/index.js +0 -20
  82. package/dist/passkey/registration/index.js.map +0 -1
  83. package/dist/passkey/registration/registration.test.d.ts +0 -2
  84. package/dist/passkey/registration/registration.test.d.ts.map +0 -1
  85. package/dist/passkey/registration/registration.test.js +0 -161
  86. package/dist/passkey/registration/registration.test.js.map +0 -1
  87. package/dist/passkey/signals/index.d.ts +0 -9
  88. package/dist/passkey/signals/index.d.ts.map +0 -1
  89. package/dist/passkey/signals/index.js +0 -19
  90. package/dist/passkey/signals/index.js.map +0 -1
  91. package/dist/passkey/types.d.ts.map +0 -1
  92. package/dist/passkey/types.js +0 -2
  93. package/dist/passkey/types.js.map +0 -1
  94. package/dist/shared/network.d.ts.map +0 -1
  95. package/dist/shared/network.js.map +0 -1
  96. package/dist/shared/options.d.ts.map +0 -1
  97. package/dist/shared/promise.d.ts.map +0 -1
  98. package/dist/shared/promise.js.map +0 -1
  99. package/dist/shared/tenancy.d.ts.map +0 -1
  100. package/dist/shared/tenancy.js.map +0 -1
  101. /package/dist/{shared → internal}/tenancy.d.ts +0 -0
  102. /package/dist/{shared → internal}/tenancy.js +0 -0
  103. /package/dist/{shared/options.js → options.js} +0 -0
@@ -1,157 +0,0 @@
1
- import fetchMock from "@fetch-mock/vitest";
2
- import { Context, Micro, pipe } from "effect";
3
- import { afterAll, describe, expect, it, vi } from "vitest";
4
- import { Logger } from "../../logger";
5
- import { Endpoint } from "../../shared/network";
6
- import { TenancyId } from "../../shared/tenancy";
7
- import { PasskeysUnsupportedError } from "../errors";
8
- import { AuthenticationHelper, authenticatePasskey, fetchOptions, startAuthentication, verifyCredential, } from "./authentication";
9
- const loggerTest = {
10
- logDebug: () => Micro.void,
11
- logError: () => Micro.void,
12
- logInfo: () => Micro.void,
13
- logWarn: () => Micro.void,
14
- };
15
- describe(fetchOptions.name, () => {
16
- const endpoint = "https://api.passlock.dev";
17
- const tenancyId = "dummyTenancyId";
18
- const ctx = pipe(Context.make(Endpoint, { endpoint }), Context.add(Logger, loggerTest), Context.add(TenancyId, { tenancyId }));
19
- const expectedRoute = `${endpoint}/${tenancyId}/passkey/authentication/options`;
20
- const mockResponse = {
21
- optionsJSON: {},
22
- sessionToken: "dummySessionToken",
23
- };
24
- describe("given an empty set of options", () => {
25
- it("should fetch some PublicKeyCredentialCreationOptions", async () => {
26
- fetchMock.mockGlobal().postOnce(expectedRoute, mockResponse);
27
- const result = await pipe(fetchOptions({}), Micro.provideContext(ctx), Micro.runPromise);
28
- expect(result.sessionToken).toBeTruthy();
29
- expect(result.optionsJSON).toBeTruthy();
30
- });
31
- });
32
- describe("given a userId", () => {
33
- const userId = "dummyUserId";
34
- it("should send it to the backend", async () => {
35
- fetchMock.mockGlobal().postOnce(expectedRoute, mockResponse);
36
- await pipe(fetchOptions({ userId }), Micro.provideContext(ctx), Micro.runPromise);
37
- expect(fetchMock).toHavePosted(expectedRoute, { body: { userId } });
38
- });
39
- });
40
- describe("given a list of allowCredentials", () => {
41
- const allowCredentials = ["dummyCredential"];
42
- it("should send them to the backend", async () => {
43
- fetchMock.mockGlobal().postOnce(expectedRoute, mockResponse);
44
- await pipe(fetchOptions({ allowCredentials }), Micro.provideContext(ctx), Micro.runPromise);
45
- expect(fetchMock).toHavePosted(expectedRoute, {
46
- body: { allowCredentials },
47
- });
48
- });
49
- });
50
- describe("given a userVerification", () => {
51
- const userVerification = "required";
52
- it("should send it to the backend", async () => {
53
- fetchMock.mockGlobal().postOnce(expectedRoute, mockResponse);
54
- await pipe(fetchOptions({ userVerification }), Micro.provideContext(ctx), Micro.runPromise);
55
- expect(fetchMock).toHavePosted(expectedRoute, {
56
- body: { userVerification },
57
- });
58
- });
59
- });
60
- it("should invoke the onEvent handler", async () => {
61
- fetchMock.mockGlobal().postOnce(expectedRoute, mockResponse);
62
- const onEvent = vi.fn();
63
- await pipe(fetchOptions({ onEvent }), Micro.provideContext(ctx), Micro.runPromise);
64
- expect(onEvent).toHaveBeenCalledWith("optionsRequest");
65
- });
66
- });
67
- describe(startAuthentication.name, () => {
68
- describe("given valid options", () => {
69
- const authenticationHelperTest = {
70
- browserSupportsWebAuthn: () => true,
71
- startAuthentication: () => Promise.resolve({}),
72
- };
73
- it("should invoke the underlying startAuthentication function", async () => {
74
- await pipe(startAuthentication({}, {
75
- useBrowserAutofill: false,
76
- }), Micro.provideService(Logger, loggerTest), Micro.provideService(AuthenticationHelper, authenticationHelperTest), Micro.runPromise);
77
- });
78
- });
79
- describe("if the device does not support passkeys", () => {
80
- const authenticationHelperTest = {
81
- browserSupportsWebAuthn: () => false,
82
- startAuthentication: () => Promise.resolve({}),
83
- };
84
- it("should return an error", async () => {
85
- const result = await pipe(startAuthentication({}, {
86
- useBrowserAutofill: false,
87
- }), Micro.flip, Micro.provideService(Logger, loggerTest), Micro.provideService(AuthenticationHelper, authenticationHelperTest), Micro.runPromise);
88
- expect(result).toBeInstanceOf(PasskeysUnsupportedError);
89
- });
90
- });
91
- });
92
- describe(verifyCredential.name, () => {
93
- const endpoint = "https://api.passlock.dev";
94
- const tenancyId = "dummyTenancyId";
95
- const ctx = pipe(Context.make(Endpoint, { endpoint }), Context.add(Logger, loggerTest), Context.add(TenancyId, { tenancyId }));
96
- const expectedRoute = `${endpoint}/${tenancyId}/passkey/authentication/verification`;
97
- describe("when the passkey exists", () => {
98
- const mockResponse = {
99
- _tag: "AuthenticationSuccess",
100
- code: "dummyCode",
101
- id_token: "dummyIdToken",
102
- principal: {
103
- authenticatorId: "dummyPasskeyId",
104
- },
105
- };
106
- it("should return a successful response", async () => {
107
- fetchMock.mockGlobal().postOnce(expectedRoute, mockResponse);
108
- const result = await pipe(verifyCredential("dummySessionToken", {}, {}), Micro.provideContext(ctx), Micro.runPromise);
109
- expect(result).toStrictEqual(mockResponse);
110
- });
111
- });
112
- describe("when the backend says the passkey does not exist", () => {
113
- it("should return an error", async () => {
114
- const mockResponse = {
115
- _tag: "@error/PasskeyNotFound",
116
- credentialId: "dummyWebAuthnId",
117
- message: "oops",
118
- rpId: "localhost",
119
- };
120
- fetchMock.mockGlobal().postOnce(expectedRoute, { body: mockResponse, status: 400 });
121
- const error = await pipe(verifyCredential("dummySessionToken", {}, {}), Micro.flip, Micro.provideContext(ctx), Micro.runPromise);
122
- expect(error).toStrictEqual(mockResponse);
123
- });
124
- });
125
- });
126
- describe(authenticatePasskey.name, () => {
127
- const endpoint = "https://api.passlock.dev";
128
- const tenancyId = "dummyTenancyId";
129
- const authenticationHelperTest = {
130
- browserSupportsWebAuthn: () => true,
131
- startAuthentication: () => Promise.resolve({}),
132
- };
133
- const ctx = pipe(Context.make(Endpoint, { endpoint }), Context.add(Logger, loggerTest), Context.add(TenancyId, { tenancyId }), Context.add(AuthenticationHelper, authenticationHelperTest));
134
- const optionsRoute = `${endpoint}/${tenancyId}/passkey/authentication/options`;
135
- const optionsResponse = {
136
- optionsJSON: {},
137
- sessionToken: "dummySessionToken",
138
- };
139
- const verificationRoute = `${endpoint}/${tenancyId}/passkey/authentication/verification`;
140
- const verificationResponse = {
141
- _tag: "AuthenticationSuccess",
142
- code: "dummyCode",
143
- id_token: "dummyIdToken",
144
- principal: {
145
- authenticatorId: "dummyPasskeyId",
146
- },
147
- };
148
- it("should fetch the options and kick off the authentication", async () => {
149
- fetchMock.mockGlobal().postOnce(optionsRoute, optionsResponse);
150
- fetchMock.mockGlobal().postOnce(verificationRoute, verificationResponse);
151
- pipe(authenticatePasskey({ tenancyId }), Micro.provideContext(ctx), Micro.runPromise);
152
- });
153
- });
154
- afterAll(() => {
155
- fetchMock.unmockGlobal();
156
- });
157
- //# sourceMappingURL=authentication.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"authentication.test.js","sourceRoot":"","sources":["../../../src/passkey/authentication/authentication.test.ts"],"names":[],"mappings":"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"}
@@ -1,21 +0,0 @@
1
- import { Logger } from "../../logger";
2
- import { type AuthenticationError, type AuthenticationOptions, type AuthenticationSuccess } from "./authentication";
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 { AuthenticationError, AuthenticationOptions, AuthenticationSuccess, } from "./authentication";
20
- export { isAuthenticationSuccess } from "./authentication";
21
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/passkey/authentication/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,MAAM,EAAE,MAAM,cAAc,CAAA;AAElD,OAAO,EACL,KAAK,mBAAmB,EAExB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAE3B,MAAM,kBAAkB,CAAA;AAEzB;;;;;;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,EACV,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAA"}
@@ -1,22 +0,0 @@
1
- import { Micro, pipe } from "effect";
2
- import { EventLogger, Logger } from "../../logger";
3
- import { runToPromise, runToPromiseUnsafe } from "../../shared/promise";
4
- import { AuthenticationHelper, authenticatePasskey as authenticatePasskeyM, } from "./authentication";
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), Micro.provideService(AuthenticationHelper, AuthenticationHelper.Default), 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), Micro.provideService(AuthenticationHelper, AuthenticationHelper.Default), runToPromise);
21
- export { isAuthenticationSuccess } from "./authentication";
22
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
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,WAAW,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACvE,OAAO,EAEL,oBAAoB,EAGpB,mBAAmB,IAAI,oBAAoB,GAC5C,MAAM,kBAAkB,CAAA;AAEzB;;;;;;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;AAOH,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAA"}
@@ -1,6 +0,0 @@
1
- export * from "./authentication/index";
2
- export * from "./errors";
3
- export * from "./registration/index";
4
- export * from "./signals/index";
5
- export * from "./support";
6
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/passkey/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA;AACtC,cAAc,UAAU,CAAA;AACxB,cAAc,sBAAsB,CAAA;AACpC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,WAAW,CAAA"}
@@ -1,6 +0,0 @@
1
- export * from "./authentication/index";
2
- export * from "./errors";
3
- export * from "./registration/index";
4
- export * from "./signals/index";
5
- export * from "./support";
6
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/passkey/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA;AACtC,cAAc,UAAU,CAAA;AACxB,cAAc,sBAAsB,CAAA;AACpC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,WAAW,CAAA"}
@@ -1,19 +0,0 @@
1
- import { Logger } from "../../logger";
2
- import { type RegistrationError, type RegistrationOptions, type RegistrationSuccess } from "./registration";
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 { RegistrationError, RegistrationOptions, RegistrationSuccess } from "./registration";
18
- export { isRegistrationSuccess } from "./registration";
19
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/passkey/registration/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,MAAM,EAAE,MAAM,cAAc,CAAA;AAElD,OAAO,EACL,KAAK,iBAAiB,EAEtB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EAEzB,MAAM,gBAAgB,CAAA;AAEvB;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAChC,SAAS,mBAAmB,EAC5B,SAAQ,OAAO,MAAM,CAAC,OAAqB,KAC1C,OAAO,CAAC,mBAAmB,CAM3B,CAAA;AAEH;;;;;GAKG;AACH,eAAO,MAAM,eAAe,GAC1B,SAAS,mBAAmB,EAC5B,SAAQ,OAAO,MAAM,CAAC,OAAqB,KAC1C,OAAO,CAAC,mBAAmB,GAAG,iBAAiB,CAM/C,CAAA;AAEH,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AACjG,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA"}
@@ -1,20 +0,0 @@
1
- import { Micro, pipe } from "effect";
2
- import { EventLogger, Logger } from "../../logger";
3
- import { runToPromise, runToPromiseUnsafe } from "../../shared/promise";
4
- import { RegistrationHelper, registerPasskey as registerPasskeyM, } from "./registration";
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), Micro.provideService(RegistrationHelper, RegistrationHelper.Default), 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), Micro.provideService(RegistrationHelper, RegistrationHelper.Default), runToPromise);
19
- export { isRegistrationSuccess } from "./registration";
20
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/passkey/registration/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACvE,OAAO,EAEL,kBAAkB,EAGlB,eAAe,IAAI,gBAAgB,GACpC,MAAM,gBAAgB,CAAA;AAEvB;;;;;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,KAAK,CAAC,cAAc,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,OAAO,CAAC,EACpE,kBAAkB,CACnB,CAAA;AAEH;;;;;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,KAAK,CAAC,cAAc,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,OAAO,CAAC,EACpE,YAAY,CACb,CAAA;AAGH,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=registration.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registration.test.d.ts","sourceRoot":"","sources":["../../../src/passkey/registration/registration.test.ts"],"names":[],"mappings":""}
@@ -1,161 +0,0 @@
1
- import fetchMock from "@fetch-mock/vitest";
2
- import { Context, Micro, pipe } from "effect";
3
- import { afterAll, describe, expect, it, vi } from "vitest";
4
- import { Logger } from "../../logger";
5
- import { Endpoint } from "../../shared/network";
6
- import { TenancyId } from "../../shared/tenancy";
7
- import { PasskeysUnsupportedError } from "../errors";
8
- import { fetchOptions, RegistrationHelper, registerPasskey, startRegistration, verifyCredential, } from "./registration";
9
- const loggerTest = {
10
- logDebug: () => Micro.void,
11
- logError: () => Micro.void,
12
- logInfo: () => Micro.void,
13
- logWarn: () => Micro.void,
14
- };
15
- describe(fetchOptions.name, () => {
16
- const endpoint = "https://api.passlock.dev";
17
- const tenancyId = "dummyTenancyId";
18
- const username = "dummyUsername";
19
- const userDisplayName = "dummyDisplayName";
20
- const userId = "dummyUserId";
21
- const ctx = pipe(Context.make(Endpoint, { endpoint }), Context.add(Logger, loggerTest), Context.add(TenancyId, { tenancyId }));
22
- const expectedRoute = `${endpoint}/${tenancyId}/passkey/registration/options`;
23
- const mockResponse = {
24
- optionsJSON: {},
25
- sessionToken: "dummySessionToken",
26
- };
27
- describe("given an empty set of options", () => {
28
- it("should fetch some PublicKeyCredentialCreationOptions", async () => {
29
- fetchMock.mockGlobal().postOnce(expectedRoute, mockResponse);
30
- const result = await pipe(fetchOptions({ username }), Micro.provideContext(ctx), Micro.runPromise);
31
- expect(result.sessionToken).toBeTruthy();
32
- expect(result.optionsJSON).toBeTruthy();
33
- });
34
- });
35
- describe("given a username", () => {
36
- it("should send it to the backend", async () => {
37
- fetchMock.mockGlobal().postOnce(expectedRoute, mockResponse);
38
- await pipe(fetchOptions({ username }), Micro.provideContext(ctx), Micro.runPromise);
39
- expect(fetchMock).toHavePosted(expectedRoute, { body: { username } });
40
- });
41
- });
42
- describe("given a userDisplayName", () => {
43
- it("should send it to the backend", async () => {
44
- fetchMock.mockGlobal().postOnce(expectedRoute, mockResponse);
45
- await pipe(fetchOptions({ userDisplayName, username }), Micro.provideContext(ctx), Micro.runPromise);
46
- expect(fetchMock).toHavePosted(expectedRoute, {
47
- body: { userDisplayName, username },
48
- });
49
- });
50
- });
51
- describe("given a userId", () => {
52
- it("should send it to the backend", async () => {
53
- fetchMock.mockGlobal().postOnce(expectedRoute, mockResponse);
54
- await pipe(fetchOptions({ userId, username }), Micro.provideContext(ctx), Micro.runPromise);
55
- expect(fetchMock).toHavePosted(expectedRoute, {
56
- body: { userId, username },
57
- });
58
- });
59
- });
60
- describe("given a list of excludeCredentials", () => {
61
- const excludeCredentials = ["dummyCredential"];
62
- it("should send them to the backend", async () => {
63
- fetchMock.mockGlobal().postOnce(expectedRoute, mockResponse);
64
- await pipe(fetchOptions({ excludeCredentials, username }), Micro.provideContext(ctx), Micro.runPromise);
65
- expect(fetchMock).toHavePosted(expectedRoute, {
66
- body: { excludeCredentials, username },
67
- });
68
- });
69
- });
70
- describe("given a userVerification", () => {
71
- const userVerification = "required";
72
- it("should send it to the backend", async () => {
73
- fetchMock.mockGlobal().postOnce(expectedRoute, mockResponse);
74
- await pipe(fetchOptions({ username, userVerification }), Micro.provideContext(ctx), Micro.runPromise);
75
- expect(fetchMock).toHavePosted(expectedRoute, {
76
- body: { username, userVerification },
77
- });
78
- });
79
- });
80
- it("should invoke the onEvent handler", async () => {
81
- fetchMock.mockGlobal().postOnce(expectedRoute, mockResponse);
82
- const onEvent = vi.fn();
83
- await pipe(fetchOptions({ onEvent, username }), Micro.provideContext(ctx), Micro.runPromise);
84
- expect(onEvent).toHaveBeenCalledWith("optionsRequest");
85
- });
86
- });
87
- describe(startRegistration.name, () => {
88
- describe("given valid options", () => {
89
- const registrationHelperTest = {
90
- browserSupportsWebAuthn: () => true,
91
- startRegistration: () => Promise.resolve({}),
92
- };
93
- it("should invoke the underlying startRegistration function", async () => {
94
- await pipe(startRegistration({}, {}), Micro.provideService(Logger, loggerTest), Micro.provideService(RegistrationHelper, registrationHelperTest), Micro.runPromise);
95
- });
96
- });
97
- describe("if the device does not support passkeys", () => {
98
- const registrationHelperTest = {
99
- browserSupportsWebAuthn: () => false,
100
- startRegistration: () => Promise.resolve({}),
101
- };
102
- it("should return an error", async () => {
103
- const result = await pipe(startRegistration({}, {}), Micro.flip, Micro.provideService(Logger, loggerTest), Micro.provideService(RegistrationHelper, registrationHelperTest), Micro.runPromise);
104
- expect(result).toBeInstanceOf(PasskeysUnsupportedError);
105
- });
106
- });
107
- });
108
- describe(verifyCredential.name, () => {
109
- const endpoint = "https://api.passlock.dev";
110
- const tenancyId = "dummyTenancyId";
111
- const ctx = pipe(Context.make(Endpoint, { endpoint }), Context.add(Logger, loggerTest), Context.add(TenancyId, { tenancyId }));
112
- const expectedRoute = `${endpoint}/${tenancyId}/passkey/registration/verification`;
113
- describe("when the passkey exists", () => {
114
- const mockResponse = {
115
- _tag: "RegistrationSuccess",
116
- code: "dummyCode",
117
- id_token: "dummyIdToken",
118
- principal: {
119
- authenticatorId: "dummyPasskeyId",
120
- },
121
- };
122
- it("should return a successful response", async () => {
123
- fetchMock.mockGlobal().postOnce(expectedRoute, mockResponse);
124
- const result = await pipe(verifyCredential("dummySessionToken", {}, {}), Micro.provideContext(ctx), Micro.runPromise);
125
- expect(result).toStrictEqual(mockResponse);
126
- });
127
- });
128
- });
129
- describe(registerPasskey.name, () => {
130
- const endpoint = "https://api.passlock.dev";
131
- const tenancyId = "dummyTenancyId";
132
- const username = "dummyUsername";
133
- const registrationHelperTest = {
134
- browserSupportsWebAuthn: () => true,
135
- startRegistration: () => Promise.resolve({}),
136
- };
137
- const ctx = pipe(Context.make(Endpoint, { endpoint }), Context.add(Logger, loggerTest), Context.add(TenancyId, { tenancyId }), Context.add(RegistrationHelper, registrationHelperTest));
138
- const optionsRoute = `${endpoint}/${tenancyId}/passkey/registration/options`;
139
- const optionsResponse = {
140
- optionsJSON: {},
141
- sessionToken: "dummySessionToken",
142
- };
143
- const verificationRoute = `${endpoint}/${tenancyId}/passkey/registration/verification`;
144
- const verificationResponse = {
145
- _tag: "RegistrationSuccess",
146
- code: "dummyCode",
147
- id_token: "dummyIdToken",
148
- principal: {
149
- authenticatorId: "dummyPasskeyId",
150
- },
151
- };
152
- it("should fetch the options and kick off the registration", async () => {
153
- fetchMock.mockGlobal().postOnce(optionsRoute, optionsResponse);
154
- fetchMock.mockGlobal().postOnce(verificationRoute, verificationResponse);
155
- pipe(registerPasskey({ tenancyId, username }), Micro.provideContext(ctx), Micro.runPromise);
156
- });
157
- });
158
- afterAll(() => {
159
- fetchMock.unmockGlobal();
160
- });
161
- //# sourceMappingURL=registration.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registration.test.js","sourceRoot":"","sources":["../../../src/passkey/registration/registration.test.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- import type { PasslockOptions } from "../../shared/options";
2
- import { Logger } from "../../logger";
3
- import { type CredentialMapping, type DeletionError, isDeletionError } from "./signals";
4
- export declare const isPasskeyDeletionSupport: () => boolean;
5
- export declare const deletePasskey: (identifiers: string | CredentialMapping, options: PasslockOptions, logger?: typeof Logger.Service) => Promise<boolean | DeletionError>;
6
- export declare const deletePasskeyUnsafe: (passkeyId: string, options: PasslockOptions, logger?: typeof Logger.Service) => Promise<boolean>;
7
- export { isDeletionError };
8
- export type { DeletionError, CredentialMapping };
9
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/passkey/signals/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAE3D,OAAO,EAAe,MAAM,EAAE,MAAM,cAAc,CAAA;AAElD,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAElB,eAAe,EAGhB,MAAM,WAAW,CAAA;AAElB,eAAO,MAAM,wBAAwB,eAAuD,CAAA;AAE5F,eAAO,MAAM,aAAa,GACxB,aAAa,MAAM,GAAG,iBAAiB,EACvC,SAAS,eAAe,EACxB,SAAQ,OAAO,MAAM,CAAC,OAAqB,KAC1C,OAAO,CAAC,OAAO,GAAG,aAAa,CAOjC,CAAA;AAED,eAAO,MAAM,mBAAmB,GAC9B,WAAW,MAAM,EACjB,SAAS,eAAe,EACxB,SAAQ,OAAO,MAAM,CAAC,OAAqB,KAC1C,OAAO,CAAC,OAAO,CAOjB,CAAA;AAED,OAAO,EAAE,eAAe,EAAE,CAAA;AAC1B,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,CAAA"}
@@ -1,19 +0,0 @@
1
- import { Micro, pipe } from "effect";
2
- import { EventLogger, Logger } from "../../logger";
3
- import { runToPromise, runToPromiseUnsafe } from "../../shared/promise";
4
- import { deletePasskey as deletePasskeyM, isDeletionError, isPasskeyDeletionSupport as isPasskeyDeletionSupportM, signalCredentialRemoval, } from "./signals";
5
- export const isPasskeyDeletionSupport = () => pipe(isPasskeyDeletionSupportM, Micro.runSync);
6
- export const deletePasskey = (identifiers, options, logger = EventLogger) => {
7
- const micro = typeof identifiers === "string"
8
- ? deletePasskeyM(identifiers, options)
9
- : signalCredentialRemoval(identifiers);
10
- return pipe(micro, Micro.provideService(Logger, logger), runToPromise);
11
- };
12
- export const deletePasskeyUnsafe = (passkeyId, options, logger = EventLogger) => {
13
- const micro = typeof passkeyId === "string"
14
- ? deletePasskeyM(passkeyId, options)
15
- : signalCredentialRemoval(passkeyId);
16
- return pipe(micro, Micro.provideService(Logger, logger), runToPromiseUnsafe);
17
- };
18
- export { isDeletionError };
19
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/passkey/signals/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACvE,OAAO,EAGL,aAAa,IAAI,cAAc,EAC/B,eAAe,EACf,wBAAwB,IAAI,yBAAyB,EACrD,uBAAuB,GACxB,MAAM,WAAW,CAAA;AAElB,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,yBAAyB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;AAE5F,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,WAAuC,EACvC,OAAwB,EACxB,SAAgC,WAAW,EACT,EAAE;IACpC,MAAM,KAAK,GACT,OAAO,WAAW,KAAK,QAAQ;QAC7B,CAAC,CAAC,cAAc,CAAC,WAAW,EAAE,OAAO,CAAC;QACtC,CAAC,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAA;IAE1C,OAAO,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,CAAA;AACxE,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,SAAiB,EACjB,OAAwB,EACxB,SAAgC,WAAW,EACzB,EAAE;IACpB,MAAM,KAAK,GACT,OAAO,SAAS,KAAK,QAAQ;QAC3B,CAAC,CAAC,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC;QACpC,CAAC,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAA;IAExC,OAAO,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB,CAAC,CAAA;AAC9E,CAAC,CAAA;AAED,OAAO,EAAE,eAAe,EAAE,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/passkey/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG,WAAW,GAAG,UAAU,CAAA;AAEvE;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,QAAQ,GAAG,cAAc,GAAG,eAAe,CAAA;AAEjF;;GAEG;AACH,MAAM,MAAM,iBAAiB,GACzB,UAAU,GACV,QAAQ,GACR,mBAAmB,GACnB,aAAa,GACb,KAAK,GACL,OAAO,GACP,MAAM,CAAA;AAEV;;GAEG;AACH,MAAM,WAAW,sCAAsC;IACrD,EAAE,EAAE,2BAA2B,CAAA;IAC/B,IAAI,EAAE,iCAAiC,CAAA;IACvC,SAAS,EAAE,eAAe,CAAA;IAC1B,gBAAgB,EAAE,KAAK,CAAC,6BAA6B,CAAC,CAAA;IACtD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,kBAAkB,CAAC,EAAE,KAAK,CAAC,iCAAiC,CAAC,CAAA;IAC7D,sBAAsB,CAAC,EAAE,8BAA8B,CAAA;IACvD,KAAK,CAAC,EAAE,KAAK,CAAC,uBAAuB,CAAC,CAAA;IACtC,WAAW,CAAC,EAAE,+BAA+B,CAAA;IAC7C,kBAAkB,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAA;IAC7C,UAAU,CAAC,EAAE,oCAAoC,CAAA;CAClD"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/passkey/types.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../src/shared/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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/shared/network.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/shared/options.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"promise.d.ts","sourceRoot":"","sources":["../../src/shared/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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"promise.js","sourceRoot":"","sources":["../../src/shared/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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tenancy.d.ts","sourceRoot":"","sources":["../../src/shared/tenancy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;;wBAIR,MAAM;;AAF9B,qBAAa,SAAU,SAAQ,cAG5B;CAAG"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tenancy.js","sourceRoot":"","sources":["../../src/shared/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"}
File without changes
File without changes
File without changes