@vibes.diy/identity 4.0.15 → 4.0.17

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.
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,232 @@
1
+ import { createServer } from "node:net";
2
+ import { describe, it, expect, vi } from "vitest";
3
+ import { AppContext, Evento, Result } from "@adviser/cement";
4
+ import { ensureSuperThis } from "../index.js";
5
+ import { getKeyBag } from "../keybag/keybag.js";
6
+ import { DeviceIdKey } from "./key.js";
7
+ import { createTestDeviceCA } from "./test-helpers.js";
8
+ import { deviceIdRegisterEvento, isResDeviceIdRegister } from "./register.js";
9
+ const openMock = vi.hoisted(() => ({
10
+ waiters: [],
11
+ failNext: false,
12
+ }));
13
+ vi.mock("open", () => ({
14
+ default: (url) => {
15
+ for (const w of openMock.waiters.splice(0))
16
+ w(url);
17
+ if (openMock.failNext) {
18
+ openMock.failNext = false;
19
+ return Promise.reject(new Error("no browser available"));
20
+ }
21
+ return Promise.resolve();
22
+ },
23
+ }));
24
+ function nextOpenUrl() {
25
+ return new Promise((resolve) => openMock.waiters.push(resolve));
26
+ }
27
+ const FIXTURE = (await import("../keybag/keybag-golden.fixture.json", { with: { type: "json" } })).default;
28
+ class TestSendProvider {
29
+ results = [];
30
+ send(_trigger, data) {
31
+ this.results.push(data);
32
+ return Promise.resolve(Result.Ok(undefined));
33
+ }
34
+ done() {
35
+ return Promise.resolve(Result.Ok(undefined));
36
+ }
37
+ }
38
+ function startRegister(sthis, raw) {
39
+ const evento = new Evento({
40
+ encode: (i) => Promise.resolve(Result.Ok(i.result)),
41
+ decode: (i) => Promise.resolve(Result.Ok(i)),
42
+ });
43
+ evento.push([deviceIdRegisterEvento]);
44
+ const send = new TestSendProvider();
45
+ const appCtx = new AppContext().set("cliCtx", { sthis });
46
+ const request = {
47
+ type: "msg.cmd-ts",
48
+ cmdTs: { raw, outputFormat: "text" },
49
+ result: { type: "core-cli.device-id-register", ...raw },
50
+ };
51
+ const done = evento.trigger({ ctx: appCtx, send, request }).then((triggered) => {
52
+ if (triggered.isErr()) {
53
+ throw triggered.Err();
54
+ }
55
+ const triggerCtx = triggered.unwrap();
56
+ if (triggerCtx.error) {
57
+ throw triggerCtx.error;
58
+ }
59
+ const last = send.results[send.results.length - 1];
60
+ if (!last) {
61
+ throw new Error("register evento emitted no response");
62
+ }
63
+ return last.result;
64
+ });
65
+ void done.catch(() => undefined);
66
+ return { send, done };
67
+ }
68
+ function memSthis() {
69
+ const sthis = ensureSuperThis();
70
+ sthis.env.set("FP_KEYBAG_URL", `memory://register-integration-${sthis.nextId().str}`);
71
+ return sthis;
72
+ }
73
+ const baseArgs = {
74
+ commonName: "test-device",
75
+ organization: "You did not set the Organization",
76
+ locality: "You did not set the City",
77
+ state: "You did not set the State",
78
+ country: "WD",
79
+ caUrl: "http://localhost:7370/settings/csr-to-cert",
80
+ port: "",
81
+ timeout: "60",
82
+ forceRenew: false,
83
+ };
84
+ function clerkClaims(sthis) {
85
+ const now = Math.floor(Date.now() / 1000);
86
+ return {
87
+ azp: "register-integration",
88
+ exp: now + 3600,
89
+ iat: now,
90
+ iss: "test-issuer",
91
+ jti: sthis.nextId().str,
92
+ nbf: now,
93
+ params: {
94
+ nick: "nick-register",
95
+ email: "register@example.com",
96
+ email_verified: true,
97
+ first: "first",
98
+ image_url: "http://example.com/image.png",
99
+ last: "last",
100
+ name: "name",
101
+ public_meta: `{ "role": "tester" }`,
102
+ },
103
+ role: "device-id",
104
+ sub: `device-id-subject-${sthis.nextId().str}`,
105
+ userId: "user-register-integration",
106
+ aud: ["http://test-audience.localhost/"],
107
+ };
108
+ }
109
+ function freePort() {
110
+ return new Promise((resolve, reject) => {
111
+ const probe = createServer();
112
+ probe.once("error", reject);
113
+ probe.listen(0, "127.0.0.1", () => {
114
+ const addr = probe.address();
115
+ if (!addr || typeof addr === "string") {
116
+ probe.close(() => reject(new Error(`no port assigned: ${addr}`)));
117
+ return;
118
+ }
119
+ probe.close(() => resolve(addr.port));
120
+ });
121
+ });
122
+ }
123
+ function progressMessages(send) {
124
+ return send.results
125
+ .map((r) => r.result)
126
+ .filter((r) => r?.type === "core-cli.progress")
127
+ .map((r) => r?.message ?? "");
128
+ }
129
+ async function mintCertFromOpenUrl(sthis, openedUrl) {
130
+ const url = new URL(openedUrl);
131
+ const csr = url.searchParams.get("csr");
132
+ const returnUrl = url.searchParams.get("returnUrl");
133
+ if (!csr || !returnUrl) {
134
+ throw new Error(`opened CA URL is missing csr/returnUrl: ${openedUrl}`);
135
+ }
136
+ const ca = await createTestDeviceCA(sthis);
137
+ const issued = (await ca.processCSR(csr, clerkClaims(sthis))).Ok();
138
+ return { certJWT: issued.certificateJWT, returnUrl };
139
+ }
140
+ describe("device-id register — enroll round-trip (Hono callback server)", { timeout: 30000 }, () => {
141
+ it("fresh device: CSR out via the CA URL, cert back via GET /cert, key+cert stored", async () => {
142
+ const sthis = memSthis();
143
+ const openedUrlP = nextOpenUrl();
144
+ const port = await freePort();
145
+ const { send, done } = startRegister(sthis, { ...baseArgs, port: String(port) });
146
+ const openedUrl = await openedUrlP;
147
+ expect(openedUrl).toContain(baseArgs.caUrl);
148
+ const { certJWT, returnUrl } = await mintCertFromOpenUrl(sthis, openedUrl);
149
+ expect(returnUrl).toBe(`http://localhost:${port}/cert`);
150
+ const resp = await fetch(`${returnUrl}?cert=${encodeURIComponent(certJWT)}`);
151
+ expect(resp.status).toBe(200);
152
+ expect(await resp.text()).toContain("Certificate received successfully");
153
+ const msg = await done;
154
+ expect(isResDeviceIdRegister(msg)).toBe(true);
155
+ if (isResDeviceIdRegister(msg)) {
156
+ expect(msg.output).toContain("Registration complete! Certificate successfully stored with Device ID.");
157
+ }
158
+ const kb = await getKeyBag(sthis);
159
+ const devid = await kb.getDeviceId();
160
+ expect(devid.deviceId.IsSome()).toBe(true);
161
+ expect(devid.cert.IsSome()).toBe(true);
162
+ const stored = devid.cert.Unwrap();
163
+ expect(stored.certificateJWT).toBe(certJWT);
164
+ expect(stored.certificatePayload.certificate.subject.commonName).toBe("test-device");
165
+ expect(stored.certificatePayload.certificate.issuer.commonName).toBe("Test Device CA");
166
+ const key = (await DeviceIdKey.createFromJWK(devid.deviceId.Unwrap())).Ok();
167
+ if (isResDeviceIdRegister(msg)) {
168
+ expect(msg.output).toContain(`Device ID Fingerprint: ${await key.fingerPrint()}`);
169
+ }
170
+ expect(progressMessages(send)).toContain("Creating new device ID key pair...");
171
+ });
172
+ it("--force-renew: keeps the enrolled key, replaces the cert via a fresh round-trip", async () => {
173
+ const sthis = memSthis();
174
+ const kb = await getKeyBag(sthis);
175
+ await kb.setDeviceId(FIXTURE.item.deviceId, FIXTURE.item.cert);
176
+ const openedUrlP = nextOpenUrl();
177
+ const { send, done } = startRegister(sthis, { ...baseArgs, forceRenew: true });
178
+ const { certJWT, returnUrl } = await mintCertFromOpenUrl(sthis, await openedUrlP);
179
+ await fetch(`${returnUrl}?cert=${encodeURIComponent(certJWT)}`);
180
+ const msg = await done;
181
+ expect(isResDeviceIdRegister(msg)).toBe(true);
182
+ if (isResDeviceIdRegister(msg)) {
183
+ expect(msg.output).toContain("Registration complete! Certificate successfully stored with Device ID.");
184
+ }
185
+ const progress = progressMessages(send);
186
+ expect(progress).toContain("Force renewing certificate...");
187
+ expect(progress).toContain("Using existing device ID key...");
188
+ const devid = await kb.getDeviceId();
189
+ expect(devid.deviceId.Unwrap()).toEqual(FIXTURE.item.deviceId);
190
+ const renewed = devid.cert.Unwrap();
191
+ expect(renewed.certificateJWT).toBe(certJWT);
192
+ expect(renewed.certificateJWT).not.toBe(FIXTURE.item.cert.certificateJWT);
193
+ });
194
+ });
195
+ describe("device-id register — failure branches", { timeout: 30000 }, () => {
196
+ it("no callback before the deadline ⇒ timeout error (and the browser-open failure is survived)", async () => {
197
+ const sthis = memSthis();
198
+ openMock.failNext = true;
199
+ const { send, done } = startRegister(sthis, { ...baseArgs, timeout: "1" });
200
+ await expect(done).rejects.toThrow("Timeout waiting for certificate from CA (1s).");
201
+ const progress = progressMessages(send);
202
+ expect(progress).toContain("Could not automatically open browser. Please open this URL manually:");
203
+ const devid = await (await getKeyBag(sthis)).getDeviceId();
204
+ expect(devid.deviceId.IsSome()).toBe(true);
205
+ expect(devid.cert.IsNone()).toBe(true);
206
+ });
207
+ it("GET /cert without a cert param ⇒ 400 and the register run fails, nothing stored", async () => {
208
+ const sthis = memSthis();
209
+ const openedUrlP = nextOpenUrl();
210
+ const { done } = startRegister(sthis, baseArgs);
211
+ const returnUrl = new URL(await openedUrlP).searchParams.get("returnUrl");
212
+ const resp = await fetch(returnUrl);
213
+ expect(resp.status).toBe(400);
214
+ expect(await resp.text()).toBe("Missing cert parameter");
215
+ await expect(done).rejects.toThrow(/Failed to receive certificate: .*Missing cert parameter/);
216
+ const devid = await (await getKeyBag(sthis)).getDeviceId();
217
+ expect(devid.cert.IsNone()).toBe(true);
218
+ });
219
+ it("malformed cert JWT ⇒ parse error, no cert stored", async () => {
220
+ const sthis = memSthis();
221
+ const openedUrlP = nextOpenUrl();
222
+ const { done } = startRegister(sthis, baseArgs);
223
+ const returnUrl = new URL(await openedUrlP).searchParams.get("returnUrl");
224
+ const resp = await fetch(`${returnUrl}?cert=not-a-jwt`);
225
+ expect(resp.status).toBe(200);
226
+ await expect(done).rejects.toThrow("Invalid JWT");
227
+ const devid = await (await getKeyBag(sthis)).getDeviceId();
228
+ expect(devid.deviceId.IsSome()).toBe(true);
229
+ expect(devid.cert.IsNone()).toBe(true);
230
+ });
231
+ });
232
+ //# sourceMappingURL=register-integration.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-integration.test.js","sourceRoot":"","sources":["../../jsr/device-id/register-integration.test.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE7D,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG9C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAuB,MAAM,eAAe,CAAC;AAMnG,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACjC,OAAO,EAAE,EAA+B;IACxC,QAAQ,EAAE,KAAK;CAChB,CAAC,CAAC,CAAC;AACJ,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IACrB,OAAO,EAAE,CAAC,GAAW,EAAE,EAAE;QACvB,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;YAAE,CAAC,CAAC,GAAG,CAAC,CAAC;QACnD,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACtB,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC;YAC1B,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;CACF,CAAC,CAAC,CAAC;AACJ,SAAS,WAAW;IAClB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAClE,CAAC;AAID,MAAM,OAAO,GAAG,CAAC,MAAM,MAAM,CAAC,sCAAsC,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,OAElG,CAAC;AAGF,MAAM,gBAAgB;IACX,OAAO,GAAc,EAAE,CAAC;IACjC,IAAI,CAAS,QAAiB,EAAE,IAAQ;QACtC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,SAAe,CAAC,CAAC,CAAC;IACrD,CAAC;IACD,IAAI;QACF,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,SAAe,CAAC,CAAC,CAAC;IACrD,CAAC;CACF;AAWD,SAAS,aAAa,CAAC,KAAgB,EAAE,GAAsC;IAC7E,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;QACxB,MAAM,EAAE,CAAC,CAAU,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAE,CAAyB,CAAC,MAAM,CAAC,CAAC;QACrF,MAAM,EAAE,CAAC,CAAU,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;KACtD,CAAC,CAAC;IACH,MAAM,CAAC,IAAI,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,IAAI,gBAAgB,EAAE,CAAC;IACpC,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG;QACd,IAAI,EAAE,YAAY;QAClB,KAAK,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE;QACpC,MAAM,EAAE,EAAE,IAAI,EAAE,6BAA6B,EAAE,GAAG,GAAG,EAAE;KACxD,CAAC;IACF,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE;QAC7E,IAAI,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC;YACtB,MAAM,SAAS,CAAC,GAAG,EAAE,CAAC;QACxB,CAAC;QACD,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,EAAqE,CAAC;QACzG,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;YACrB,MAAM,UAAU,CAAC,KAAK,CAAC;QACzB,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAA6C,CAAC;QAC/F,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC,CAAC,CAAC;IAKH,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACjC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,SAAS,QAAQ;IACf,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;IAChC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,EAAE,iCAAiC,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;IACtF,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,QAAQ,GAAsC;IAClD,UAAU,EAAE,aAAa;IACzB,YAAY,EAAE,kCAAkC;IAChD,QAAQ,EAAE,0BAA0B;IACpC,KAAK,EAAE,2BAA2B;IAClC,OAAO,EAAE,IAAI;IACb,KAAK,EAAE,4CAA4C;IACnD,IAAI,EAAE,EAAE;IACR,OAAO,EAAE,IAAI;IACb,UAAU,EAAE,KAAK;CAClB,CAAC;AAKF,SAAS,WAAW,CAAC,KAAgB;IACnC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAC1C,OAAO;QACL,GAAG,EAAE,sBAAsB;QAC3B,GAAG,EAAE,GAAG,GAAG,IAAI;QACf,GAAG,EAAE,GAAG;QACR,GAAG,EAAE,aAAa;QAClB,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG;QACvB,GAAG,EAAE,GAAG;QACR,MAAM,EAAE;YACN,IAAI,EAAE,eAAe;YACrB,KAAK,EAAE,sBAAsB;YAC7B,cAAc,EAAE,IAAI;YACpB,KAAK,EAAE,OAAO;YACd,SAAS,EAAE,8BAA8B;YACzC,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,MAAM;YACZ,WAAW,EAAE,sBAAsB;SACpC;QACD,IAAI,EAAE,WAAW;QACjB,GAAG,EAAE,qBAAqB,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;QAC9C,MAAM,EAAE,2BAA2B;QACnC,GAAG,EAAE,CAAC,iCAAiC,CAAC;KACzC,CAAC;AACJ,CAAC;AAKD,SAAS,QAAQ;IACf,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC5B,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE;YAChC,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACtC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBAClE,OAAO;YACT,CAAC;YACD,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAsB;IAC9C,OAAO,IAAI,CAAC,OAAO;SAChB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAAsD,CAAC,MAAM,CAAC;SAC1E,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,KAAK,mBAAmB,CAAC;SAC9C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;AAClC,CAAC;AAID,KAAK,UAAU,mBAAmB,CAAC,KAAgB,EAAE,SAAiB;IACpE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;IAC/B,MAAM,GAAG,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACpD,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,2CAA2C,SAAS,EAAE,CAAC,CAAC;IAC1E,CAAC;IACD,MAAM,EAAE,GAAG,MAAM,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACnE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,cAAc,EAAE,SAAS,EAAE,CAAC;AACvD,CAAC;AAED,QAAQ,CAAC,+DAA+D,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE;IACjG,EAAE,CAAC,gFAAgF,EAAE,KAAK,IAAI,EAAE;QAC9F,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;QACzB,MAAM,UAAU,GAAG,WAAW,EAAE,CAAC;QAGjC,MAAM,IAAI,GAAG,MAAM,QAAQ,EAAE,CAAC;QAC9B,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,aAAa,CAAC,KAAK,EAAE,EAAE,GAAG,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEjF,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC;QACnC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,mBAAmB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAC3E,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,oBAAoB,IAAI,OAAO,CAAC,CAAC;QAExD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,SAAS,SAAS,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC7E,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,mCAAmC,CAAC,CAAC;QAEzE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC;QACvB,MAAM,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,wEAAwE,CAAC,CAAC;QACzG,CAAC;QAGD,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,EAA6C,CAAC;QAC9E,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE5C,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACrF,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAGvF,MAAM,GAAG,GAAG,CAAC,MAAM,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC5E,IAAI,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,0BAA0B,MAAM,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACpF,CAAC;QAGD,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,oCAAoC,CAAC,CAAC;IACjF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iFAAiF,EAAE,KAAK,IAAI,EAAE;QAC/F,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;QACzB,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE/D,MAAM,UAAU,GAAG,WAAW,EAAE,CAAC;QACjC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,aAAa,CAAC,KAAK,EAAE,EAAE,GAAG,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QAE/E,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,mBAAmB,CAAC,KAAK,EAAE,MAAM,UAAU,CAAC,CAAC;QAClF,MAAM,KAAK,CAAC,GAAG,SAAS,SAAS,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEhE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC;QACvB,MAAM,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,wEAAwE,CAAC,CAAC;QACzG,CAAC;QAED,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,+BAA+B,CAAC,CAAC;QAC5D,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,iCAAiC,CAAC,CAAC;QAE9D,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC;QAErC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/D,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,EAA6C,CAAC;QAC/E,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7C,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,uCAAuC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE;IACzE,EAAE,CAAC,4FAA4F,EAAE,KAAK,IAAI,EAAE;QAC1G,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;QACzB,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC;QACzB,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,aAAa,CAAC,KAAK,EAAE,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;QAE3E,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC;QAEpF,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,sEAAsE,CAAC,CAAC;QAGnG,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAC3D,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iFAAiF,EAAE,KAAK,IAAI,EAAE;QAC/F,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;QACzB,MAAM,UAAU,GAAG,WAAW,EAAE,CAAC;QACjC,MAAM,EAAE,IAAI,EAAE,GAAG,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAEhD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,MAAM,UAAU,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAW,CAAC;QACpF,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAEzD,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,yDAAyD,CAAC,CAAC;QAE9F,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAC3D,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;QAChE,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;QACzB,MAAM,UAAU,GAAG,WAAW,EAAE,CAAC;QACjC,MAAM,EAAE,IAAI,EAAE,GAAG,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAEhD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,MAAM,UAAU,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAW,CAAC;QAGpF,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,SAAS,iBAAiB,CAAC,CAAC;QACxD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAE9B,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAElD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAC3D,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vibes.diy/identity",
3
- "version": "4.0.15",
3
+ "version": "4.0.17",
4
4
  "type": "module",
5
5
  "main": "./index.js",
6
6
  "exports": {
@@ -18,7 +18,7 @@
18
18
  "@adviser/ts-xxhash": "~1.0.2",
19
19
  "@clerk/shared": "~4.22.0",
20
20
  "@hono/node-server": "~1.19.14",
21
- "@vibes.diy/cmd-tools": "4.0.15",
21
+ "@vibes.diy/cmd-tools": "4.0.17",
22
22
  "arktype": "~2.2.1",
23
23
  "hono": "~4.12.14",
24
24
  "jose": "~6.2.2",