@authn-sh/sdk-node 0.4.0 → 0.5.0-alpha.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +155 -9
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +164 -14
- package/dist/index.d.ts +164 -14
- package/dist/index.js +149 -10
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -40,6 +40,51 @@ var AuthnWebhookSignatureInvalidError = class extends Error {
|
|
|
40
40
|
name = "AuthnWebhookSignatureInvalidError";
|
|
41
41
|
};
|
|
42
42
|
|
|
43
|
+
// src/resources/Manager.ts
|
|
44
|
+
var Manager = class {
|
|
45
|
+
constructor(transport) {
|
|
46
|
+
this.transport = transport;
|
|
47
|
+
}
|
|
48
|
+
transport;
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
// src/resources/Appearance.ts
|
|
52
|
+
var AppearanceManager = class extends Manager {
|
|
53
|
+
async get() {
|
|
54
|
+
const raw = await this.transport.send("GET", "/v1/instance/appearance");
|
|
55
|
+
return hydrateAppearance(raw);
|
|
56
|
+
}
|
|
57
|
+
async put(blob, idempotencyKey) {
|
|
58
|
+
const raw = await this.transport.send("PUT", "/v1/instance/appearance", {
|
|
59
|
+
body: blob,
|
|
60
|
+
idempotencyKey
|
|
61
|
+
});
|
|
62
|
+
return hydrateAppearance(raw);
|
|
63
|
+
}
|
|
64
|
+
async patch(partial, idempotencyKey) {
|
|
65
|
+
const raw = await this.transport.send("PATCH", "/v1/instance/appearance", {
|
|
66
|
+
body: partial,
|
|
67
|
+
idempotencyKey
|
|
68
|
+
});
|
|
69
|
+
return hydrateAppearance(raw);
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
function hydrateAppearance(raw) {
|
|
73
|
+
if (!raw || typeof raw !== "object") return {};
|
|
74
|
+
const obj = raw;
|
|
75
|
+
const out = {};
|
|
76
|
+
if (obj.variables && typeof obj.variables === "object") {
|
|
77
|
+
out.variables = obj.variables;
|
|
78
|
+
}
|
|
79
|
+
if (obj.elements && typeof obj.elements === "object") {
|
|
80
|
+
out.elements = obj.elements;
|
|
81
|
+
}
|
|
82
|
+
if (obj.layout && typeof obj.layout === "object") {
|
|
83
|
+
out.layout = obj.layout;
|
|
84
|
+
}
|
|
85
|
+
return out;
|
|
86
|
+
}
|
|
87
|
+
|
|
43
88
|
// src/resources/ListParams.ts
|
|
44
89
|
var ListParams = class {
|
|
45
90
|
constructor(limit, offset, orderBy) {
|
|
@@ -59,14 +104,6 @@ var ListParams = class {
|
|
|
59
104
|
}
|
|
60
105
|
};
|
|
61
106
|
|
|
62
|
-
// src/resources/Manager.ts
|
|
63
|
-
var Manager = class {
|
|
64
|
-
constructor(transport) {
|
|
65
|
-
this.transport = transport;
|
|
66
|
-
}
|
|
67
|
-
transport;
|
|
68
|
-
};
|
|
69
|
-
|
|
70
107
|
// src/resources/PaginatedList.ts
|
|
71
108
|
function hydratePaginatedList(raw, hydrate) {
|
|
72
109
|
if (!raw || typeof raw !== "object") {
|
|
@@ -278,6 +315,37 @@ function hydrateBlocklistIdentifier(raw) {
|
|
|
278
315
|
return hydrateIdentifier(raw, "blocklist_identifier");
|
|
279
316
|
}
|
|
280
317
|
|
|
318
|
+
// src/resources/Localization.ts
|
|
319
|
+
var LocalizationManager = class extends Manager {
|
|
320
|
+
async get() {
|
|
321
|
+
const raw = await this.transport.send("GET", "/v1/instance/localization");
|
|
322
|
+
return hydrateLocalization(raw);
|
|
323
|
+
}
|
|
324
|
+
async put(blob, idempotencyKey) {
|
|
325
|
+
const raw = await this.transport.send("PUT", "/v1/instance/localization", {
|
|
326
|
+
body: blob,
|
|
327
|
+
idempotencyKey
|
|
328
|
+
});
|
|
329
|
+
return hydrateLocalization(raw);
|
|
330
|
+
}
|
|
331
|
+
async patch(partial, idempotencyKey) {
|
|
332
|
+
const raw = await this.transport.send("PATCH", "/v1/instance/localization", {
|
|
333
|
+
body: partial,
|
|
334
|
+
idempotencyKey
|
|
335
|
+
});
|
|
336
|
+
return hydrateLocalization(raw);
|
|
337
|
+
}
|
|
338
|
+
};
|
|
339
|
+
function hydrateLocalization(raw) {
|
|
340
|
+
const obj = raw && typeof raw === "object" ? raw : {};
|
|
341
|
+
return {
|
|
342
|
+
default_locale: typeof obj.default_locale === "string" ? obj.default_locale : "en-US",
|
|
343
|
+
fallback_locale: typeof obj.fallback_locale === "string" ? obj.fallback_locale : "en-US",
|
|
344
|
+
supported_locales: Array.isArray(obj.supported_locales) ? obj.supported_locales.filter((s) => typeof s === "string") : [],
|
|
345
|
+
overrides: obj.overrides && typeof obj.overrides === "object" ? obj.overrides : {}
|
|
346
|
+
};
|
|
347
|
+
}
|
|
348
|
+
|
|
281
349
|
// src/resources/OauthProviders.ts
|
|
282
350
|
var OauthProvidersManager = class extends Manager {
|
|
283
351
|
async list(params) {
|
|
@@ -599,6 +667,62 @@ function hydrateOrganizationDomain(raw) {
|
|
|
599
667
|
};
|
|
600
668
|
}
|
|
601
669
|
|
|
670
|
+
// src/resources/Passkeys.ts
|
|
671
|
+
var PasskeysListParams = class extends ListParams {
|
|
672
|
+
constructor(userId, limit, offset, orderBy) {
|
|
673
|
+
super(limit, offset, orderBy);
|
|
674
|
+
this.userId = userId;
|
|
675
|
+
}
|
|
676
|
+
userId;
|
|
677
|
+
toQuery() {
|
|
678
|
+
const q = super.toQuery();
|
|
679
|
+
if (this.userId) q.user_id = this.userId;
|
|
680
|
+
return q;
|
|
681
|
+
}
|
|
682
|
+
};
|
|
683
|
+
var PasskeysManager = class extends Manager {
|
|
684
|
+
async list(params) {
|
|
685
|
+
const raw = await this.transport.send("GET", "/v1/passkeys", {
|
|
686
|
+
query: (params ?? new PasskeysListParams()).toQuery()
|
|
687
|
+
});
|
|
688
|
+
return hydratePaginatedList(raw, hydratePasskey);
|
|
689
|
+
}
|
|
690
|
+
async get(passkeyId) {
|
|
691
|
+
const raw = await this.transport.send("GET", `/v1/passkeys/${encodeURIComponent(passkeyId)}`);
|
|
692
|
+
return hydratePasskey(raw);
|
|
693
|
+
}
|
|
694
|
+
async update(passkeyId, data, idempotencyKey) {
|
|
695
|
+
const raw = await this.transport.send(
|
|
696
|
+
"PATCH",
|
|
697
|
+
`/v1/passkeys/${encodeURIComponent(passkeyId)}`,
|
|
698
|
+
{
|
|
699
|
+
body: data,
|
|
700
|
+
idempotencyKey
|
|
701
|
+
}
|
|
702
|
+
);
|
|
703
|
+
return hydratePasskey(raw);
|
|
704
|
+
}
|
|
705
|
+
async delete(passkeyId) {
|
|
706
|
+
await this.transport.send("DELETE", `/v1/passkeys/${encodeURIComponent(passkeyId)}`);
|
|
707
|
+
}
|
|
708
|
+
};
|
|
709
|
+
function hydratePasskey(raw) {
|
|
710
|
+
const obj = raw && typeof raw === "object" ? raw : {};
|
|
711
|
+
return {
|
|
712
|
+
id: String(obj.id ?? ""),
|
|
713
|
+
object: "passkey",
|
|
714
|
+
userId: String(obj.user_id ?? ""),
|
|
715
|
+
nickname: typeof obj.nickname === "string" ? obj.nickname : "",
|
|
716
|
+
transports: Array.isArray(obj.transports) ? obj.transports.filter((t) => typeof t === "string") : [],
|
|
717
|
+
aaguid: typeof obj.aaguid === "string" ? obj.aaguid : null,
|
|
718
|
+
verified: Boolean(obj.verified),
|
|
719
|
+
lastUsedAt: typeof obj.last_used_at === "number" ? obj.last_used_at : null,
|
|
720
|
+
createdAt: typeof obj.created_at === "number" ? obj.created_at : 0,
|
|
721
|
+
updatedAt: typeof obj.updated_at === "number" ? obj.updated_at : 0,
|
|
722
|
+
raw: obj
|
|
723
|
+
};
|
|
724
|
+
}
|
|
725
|
+
|
|
602
726
|
// src/resources/PhoneNumbers.ts
|
|
603
727
|
var PhoneNumbersListParams = class extends ListParams {
|
|
604
728
|
constructor(userId, limit, offset, orderBy) {
|
|
@@ -1137,6 +1261,9 @@ var Authn = class {
|
|
|
1137
1261
|
roles;
|
|
1138
1262
|
permissions;
|
|
1139
1263
|
instance;
|
|
1264
|
+
passkeys;
|
|
1265
|
+
appearance;
|
|
1266
|
+
localization;
|
|
1140
1267
|
constructor(opts) {
|
|
1141
1268
|
if (!opts.secretKey || typeof opts.secretKey !== "string") {
|
|
1142
1269
|
throw new AuthnConfigError("Authn: secretKey is required.");
|
|
@@ -1166,12 +1293,15 @@ var Authn = class {
|
|
|
1166
1293
|
this.roles = new RolesManager(this.transport);
|
|
1167
1294
|
this.permissions = new PermissionsManager(this.transport);
|
|
1168
1295
|
this.instance = new InstanceManager(this.transport);
|
|
1296
|
+
this.passkeys = new PasskeysManager(this.transport);
|
|
1297
|
+
this.appearance = new AppearanceManager(this.transport);
|
|
1298
|
+
this.localization = new LocalizationManager(this.transport);
|
|
1169
1299
|
}
|
|
1170
1300
|
};
|
|
1171
1301
|
|
|
1172
1302
|
// src/tokens/VerifiedClaims.ts
|
|
1173
1303
|
var VerifiedClaims = class {
|
|
1174
|
-
constructor(sub, sid, iss, azp, exp, iat, nbf, actor, organization, wasTest, twoFactorVerified, secondFactorAgeSeconds, firstFactorAgeSeconds, phoneNumberVerified, defaultSecondFactor, raw) {
|
|
1304
|
+
constructor(sub, sid, iss, azp, exp, iat, nbf, actor, organization, wasTest, twoFactorVerified, secondFactorAgeSeconds, firstFactorAgeSeconds, phoneNumberVerified, defaultSecondFactor, passkeyVerified, passkeyCount, raw) {
|
|
1175
1305
|
this.sub = sub;
|
|
1176
1306
|
this.sid = sid;
|
|
1177
1307
|
this.iss = iss;
|
|
@@ -1187,6 +1317,8 @@ var VerifiedClaims = class {
|
|
|
1187
1317
|
this.firstFactorAgeSeconds = firstFactorAgeSeconds;
|
|
1188
1318
|
this.phoneNumberVerified = phoneNumberVerified;
|
|
1189
1319
|
this.defaultSecondFactor = defaultSecondFactor;
|
|
1320
|
+
this.passkeyVerified = passkeyVerified;
|
|
1321
|
+
this.passkeyCount = passkeyCount;
|
|
1190
1322
|
this.raw = raw;
|
|
1191
1323
|
}
|
|
1192
1324
|
sub;
|
|
@@ -1204,6 +1336,8 @@ var VerifiedClaims = class {
|
|
|
1204
1336
|
firstFactorAgeSeconds;
|
|
1205
1337
|
phoneNumberVerified;
|
|
1206
1338
|
defaultSecondFactor;
|
|
1339
|
+
passkeyVerified;
|
|
1340
|
+
passkeyCount;
|
|
1207
1341
|
raw;
|
|
1208
1342
|
hasRole(roleKey) {
|
|
1209
1343
|
return this.organization?.role === roleKey;
|
|
@@ -1217,6 +1351,9 @@ var VerifiedClaims = class {
|
|
|
1217
1351
|
preferredSecondFactor() {
|
|
1218
1352
|
return this.defaultSecondFactor;
|
|
1219
1353
|
}
|
|
1354
|
+
hasVerifiedPasskey() {
|
|
1355
|
+
return this.passkeyVerified;
|
|
1356
|
+
}
|
|
1220
1357
|
};
|
|
1221
1358
|
function buildVerifiedClaims(claims) {
|
|
1222
1359
|
const num = (k) => typeof claims[k] === "number" ? claims[k] : 0;
|
|
@@ -1259,6 +1396,8 @@ function buildVerifiedClaims(claims) {
|
|
|
1259
1396
|
numOrNull("ffa"),
|
|
1260
1397
|
claims["pnv"] === true,
|
|
1261
1398
|
dsf,
|
|
1399
|
+
claims["pkv"] === true,
|
|
1400
|
+
num("pkc"),
|
|
1262
1401
|
claims
|
|
1263
1402
|
);
|
|
1264
1403
|
}
|
|
@@ -1475,6 +1614,7 @@ function stripWhsecPrefix(secret) {
|
|
|
1475
1614
|
}
|
|
1476
1615
|
|
|
1477
1616
|
exports.AllowlistIdentifiersManager = AllowlistIdentifiersManager;
|
|
1617
|
+
exports.AppearanceManager = AppearanceManager;
|
|
1478
1618
|
exports.Authn = Authn;
|
|
1479
1619
|
exports.AuthnConfigError = AuthnConfigError;
|
|
1480
1620
|
exports.AuthnHttpError = AuthnHttpError;
|
|
@@ -1487,11 +1627,14 @@ exports.InstanceManager = InstanceManager;
|
|
|
1487
1627
|
exports.InvitationsListParams = InvitationsListParams;
|
|
1488
1628
|
exports.InvitationsManager = InvitationsManager;
|
|
1489
1629
|
exports.ListParams = ListParams;
|
|
1630
|
+
exports.LocalizationManager = LocalizationManager;
|
|
1490
1631
|
exports.OauthProvidersManager = OauthProvidersManager;
|
|
1491
1632
|
exports.OrganizationDomainsManager = OrganizationDomainsManager;
|
|
1492
1633
|
exports.OrganizationInvitationsManager = OrganizationInvitationsManager;
|
|
1493
1634
|
exports.OrganizationMembershipsManager = OrganizationMembershipsManager;
|
|
1494
1635
|
exports.OrganizationsManager = OrganizationsManager;
|
|
1636
|
+
exports.PasskeysListParams = PasskeysListParams;
|
|
1637
|
+
exports.PasskeysManager = PasskeysManager;
|
|
1495
1638
|
exports.PermissionsManager = PermissionsManager;
|
|
1496
1639
|
exports.PhoneNumbersListParams = PhoneNumbersListParams;
|
|
1497
1640
|
exports.PhoneNumbersManager = PhoneNumbersManager;
|
|
@@ -1509,15 +1652,18 @@ exports.WebhookSignatureVerifier = WebhookSignatureVerifier;
|
|
|
1509
1652
|
exports.buildVerifiedClaims = buildVerifiedClaims;
|
|
1510
1653
|
exports.decodeFrontendApiUrl = decodeFrontendApiUrl;
|
|
1511
1654
|
exports.hydrateAllowlistIdentifier = hydrateAllowlistIdentifier;
|
|
1655
|
+
exports.hydrateAppearance = hydrateAppearance;
|
|
1512
1656
|
exports.hydrateBlocklistIdentifier = hydrateBlocklistIdentifier;
|
|
1513
1657
|
exports.hydrateExternalAccount = hydrateExternalAccount;
|
|
1514
1658
|
exports.hydrateInstance = hydrateInstance;
|
|
1515
1659
|
exports.hydrateInvitation = hydrateInvitation;
|
|
1660
|
+
exports.hydrateLocalization = hydrateLocalization;
|
|
1516
1661
|
exports.hydrateOauthProvider = hydrateOauthProvider;
|
|
1517
1662
|
exports.hydrateOrganization = hydrateOrganization;
|
|
1518
1663
|
exports.hydrateOrganizationDomain = hydrateOrganizationDomain;
|
|
1519
1664
|
exports.hydrateOrganizationInvitation = hydrateOrganizationInvitation;
|
|
1520
1665
|
exports.hydrateOrganizationMembership = hydrateOrganizationMembership;
|
|
1666
|
+
exports.hydratePasskey = hydratePasskey;
|
|
1521
1667
|
exports.hydratePermission = hydratePermission;
|
|
1522
1668
|
exports.hydratePhoneNumber = hydratePhoneNumber;
|
|
1523
1669
|
exports.hydrateRedirectUrl = hydrateRedirectUrl;
|