@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 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;