@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.js CHANGED
@@ -38,6 +38,51 @@ var AuthnWebhookSignatureInvalidError = class extends Error {
38
38
  name = "AuthnWebhookSignatureInvalidError";
39
39
  };
40
40
 
41
+ // src/resources/Manager.ts
42
+ var Manager = class {
43
+ constructor(transport) {
44
+ this.transport = transport;
45
+ }
46
+ transport;
47
+ };
48
+
49
+ // src/resources/Appearance.ts
50
+ var AppearanceManager = class extends Manager {
51
+ async get() {
52
+ const raw = await this.transport.send("GET", "/v1/instance/appearance");
53
+ return hydrateAppearance(raw);
54
+ }
55
+ async put(blob, idempotencyKey) {
56
+ const raw = await this.transport.send("PUT", "/v1/instance/appearance", {
57
+ body: blob,
58
+ idempotencyKey
59
+ });
60
+ return hydrateAppearance(raw);
61
+ }
62
+ async patch(partial, idempotencyKey) {
63
+ const raw = await this.transport.send("PATCH", "/v1/instance/appearance", {
64
+ body: partial,
65
+ idempotencyKey
66
+ });
67
+ return hydrateAppearance(raw);
68
+ }
69
+ };
70
+ function hydrateAppearance(raw) {
71
+ if (!raw || typeof raw !== "object") return {};
72
+ const obj = raw;
73
+ const out = {};
74
+ if (obj.variables && typeof obj.variables === "object") {
75
+ out.variables = obj.variables;
76
+ }
77
+ if (obj.elements && typeof obj.elements === "object") {
78
+ out.elements = obj.elements;
79
+ }
80
+ if (obj.layout && typeof obj.layout === "object") {
81
+ out.layout = obj.layout;
82
+ }
83
+ return out;
84
+ }
85
+
41
86
  // src/resources/ListParams.ts
42
87
  var ListParams = class {
43
88
  constructor(limit, offset, orderBy) {
@@ -57,14 +102,6 @@ var ListParams = class {
57
102
  }
58
103
  };
59
104
 
60
- // src/resources/Manager.ts
61
- var Manager = class {
62
- constructor(transport) {
63
- this.transport = transport;
64
- }
65
- transport;
66
- };
67
-
68
105
  // src/resources/PaginatedList.ts
69
106
  function hydratePaginatedList(raw, hydrate) {
70
107
  if (!raw || typeof raw !== "object") {
@@ -276,6 +313,37 @@ function hydrateBlocklistIdentifier(raw) {
276
313
  return hydrateIdentifier(raw, "blocklist_identifier");
277
314
  }
278
315
 
316
+ // src/resources/Localization.ts
317
+ var LocalizationManager = class extends Manager {
318
+ async get() {
319
+ const raw = await this.transport.send("GET", "/v1/instance/localization");
320
+ return hydrateLocalization(raw);
321
+ }
322
+ async put(blob, idempotencyKey) {
323
+ const raw = await this.transport.send("PUT", "/v1/instance/localization", {
324
+ body: blob,
325
+ idempotencyKey
326
+ });
327
+ return hydrateLocalization(raw);
328
+ }
329
+ async patch(partial, idempotencyKey) {
330
+ const raw = await this.transport.send("PATCH", "/v1/instance/localization", {
331
+ body: partial,
332
+ idempotencyKey
333
+ });
334
+ return hydrateLocalization(raw);
335
+ }
336
+ };
337
+ function hydrateLocalization(raw) {
338
+ const obj = raw && typeof raw === "object" ? raw : {};
339
+ return {
340
+ default_locale: typeof obj.default_locale === "string" ? obj.default_locale : "en-US",
341
+ fallback_locale: typeof obj.fallback_locale === "string" ? obj.fallback_locale : "en-US",
342
+ supported_locales: Array.isArray(obj.supported_locales) ? obj.supported_locales.filter((s) => typeof s === "string") : [],
343
+ overrides: obj.overrides && typeof obj.overrides === "object" ? obj.overrides : {}
344
+ };
345
+ }
346
+
279
347
  // src/resources/OauthProviders.ts
280
348
  var OauthProvidersManager = class extends Manager {
281
349
  async list(params) {
@@ -597,6 +665,62 @@ function hydrateOrganizationDomain(raw) {
597
665
  };
598
666
  }
599
667
 
668
+ // src/resources/Passkeys.ts
669
+ var PasskeysListParams = class extends ListParams {
670
+ constructor(userId, limit, offset, orderBy) {
671
+ super(limit, offset, orderBy);
672
+ this.userId = userId;
673
+ }
674
+ userId;
675
+ toQuery() {
676
+ const q = super.toQuery();
677
+ if (this.userId) q.user_id = this.userId;
678
+ return q;
679
+ }
680
+ };
681
+ var PasskeysManager = class extends Manager {
682
+ async list(params) {
683
+ const raw = await this.transport.send("GET", "/v1/passkeys", {
684
+ query: (params ?? new PasskeysListParams()).toQuery()
685
+ });
686
+ return hydratePaginatedList(raw, hydratePasskey);
687
+ }
688
+ async get(passkeyId) {
689
+ const raw = await this.transport.send("GET", `/v1/passkeys/${encodeURIComponent(passkeyId)}`);
690
+ return hydratePasskey(raw);
691
+ }
692
+ async update(passkeyId, data, idempotencyKey) {
693
+ const raw = await this.transport.send(
694
+ "PATCH",
695
+ `/v1/passkeys/${encodeURIComponent(passkeyId)}`,
696
+ {
697
+ body: data,
698
+ idempotencyKey
699
+ }
700
+ );
701
+ return hydratePasskey(raw);
702
+ }
703
+ async delete(passkeyId) {
704
+ await this.transport.send("DELETE", `/v1/passkeys/${encodeURIComponent(passkeyId)}`);
705
+ }
706
+ };
707
+ function hydratePasskey(raw) {
708
+ const obj = raw && typeof raw === "object" ? raw : {};
709
+ return {
710
+ id: String(obj.id ?? ""),
711
+ object: "passkey",
712
+ userId: String(obj.user_id ?? ""),
713
+ nickname: typeof obj.nickname === "string" ? obj.nickname : "",
714
+ transports: Array.isArray(obj.transports) ? obj.transports.filter((t) => typeof t === "string") : [],
715
+ aaguid: typeof obj.aaguid === "string" ? obj.aaguid : null,
716
+ verified: Boolean(obj.verified),
717
+ lastUsedAt: typeof obj.last_used_at === "number" ? obj.last_used_at : null,
718
+ createdAt: typeof obj.created_at === "number" ? obj.created_at : 0,
719
+ updatedAt: typeof obj.updated_at === "number" ? obj.updated_at : 0,
720
+ raw: obj
721
+ };
722
+ }
723
+
600
724
  // src/resources/PhoneNumbers.ts
601
725
  var PhoneNumbersListParams = class extends ListParams {
602
726
  constructor(userId, limit, offset, orderBy) {
@@ -1135,6 +1259,9 @@ var Authn = class {
1135
1259
  roles;
1136
1260
  permissions;
1137
1261
  instance;
1262
+ passkeys;
1263
+ appearance;
1264
+ localization;
1138
1265
  constructor(opts) {
1139
1266
  if (!opts.secretKey || typeof opts.secretKey !== "string") {
1140
1267
  throw new AuthnConfigError("Authn: secretKey is required.");
@@ -1164,12 +1291,15 @@ var Authn = class {
1164
1291
  this.roles = new RolesManager(this.transport);
1165
1292
  this.permissions = new PermissionsManager(this.transport);
1166
1293
  this.instance = new InstanceManager(this.transport);
1294
+ this.passkeys = new PasskeysManager(this.transport);
1295
+ this.appearance = new AppearanceManager(this.transport);
1296
+ this.localization = new LocalizationManager(this.transport);
1167
1297
  }
1168
1298
  };
1169
1299
 
1170
1300
  // src/tokens/VerifiedClaims.ts
1171
1301
  var VerifiedClaims = class {
1172
- constructor(sub, sid, iss, azp, exp, iat, nbf, actor, organization, wasTest, twoFactorVerified, secondFactorAgeSeconds, firstFactorAgeSeconds, phoneNumberVerified, defaultSecondFactor, raw) {
1302
+ constructor(sub, sid, iss, azp, exp, iat, nbf, actor, organization, wasTest, twoFactorVerified, secondFactorAgeSeconds, firstFactorAgeSeconds, phoneNumberVerified, defaultSecondFactor, passkeyVerified, passkeyCount, raw) {
1173
1303
  this.sub = sub;
1174
1304
  this.sid = sid;
1175
1305
  this.iss = iss;
@@ -1185,6 +1315,8 @@ var VerifiedClaims = class {
1185
1315
  this.firstFactorAgeSeconds = firstFactorAgeSeconds;
1186
1316
  this.phoneNumberVerified = phoneNumberVerified;
1187
1317
  this.defaultSecondFactor = defaultSecondFactor;
1318
+ this.passkeyVerified = passkeyVerified;
1319
+ this.passkeyCount = passkeyCount;
1188
1320
  this.raw = raw;
1189
1321
  }
1190
1322
  sub;
@@ -1202,6 +1334,8 @@ var VerifiedClaims = class {
1202
1334
  firstFactorAgeSeconds;
1203
1335
  phoneNumberVerified;
1204
1336
  defaultSecondFactor;
1337
+ passkeyVerified;
1338
+ passkeyCount;
1205
1339
  raw;
1206
1340
  hasRole(roleKey) {
1207
1341
  return this.organization?.role === roleKey;
@@ -1215,6 +1349,9 @@ var VerifiedClaims = class {
1215
1349
  preferredSecondFactor() {
1216
1350
  return this.defaultSecondFactor;
1217
1351
  }
1352
+ hasVerifiedPasskey() {
1353
+ return this.passkeyVerified;
1354
+ }
1218
1355
  };
1219
1356
  function buildVerifiedClaims(claims) {
1220
1357
  const num = (k) => typeof claims[k] === "number" ? claims[k] : 0;
@@ -1257,6 +1394,8 @@ function buildVerifiedClaims(claims) {
1257
1394
  numOrNull("ffa"),
1258
1395
  claims["pnv"] === true,
1259
1396
  dsf,
1397
+ claims["pkv"] === true,
1398
+ num("pkc"),
1260
1399
  claims
1261
1400
  );
1262
1401
  }
@@ -1472,6 +1611,6 @@ function stripWhsecPrefix(secret) {
1472
1611
  return secret.startsWith("whsec_") ? secret.slice(6) : secret;
1473
1612
  }
1474
1613
 
1475
- export { AllowlistIdentifiersManager, Authn, AuthnConfigError, AuthnHttpError, AuthnTokenInvalidError, AuthnWebhookSignatureInvalidError, BlocklistIdentifiersManager, ExternalAccountsListParams, ExternalAccountsManager, InstanceManager, InvitationsListParams, InvitationsManager, ListParams, OauthProvidersManager, OrganizationDomainsManager, OrganizationInvitationsManager, OrganizationMembershipsManager, OrganizationsManager, PermissionsManager, PhoneNumbersListParams, PhoneNumbersManager, RedirectUrlsManager, RolesManager, SessionsListParams, SessionsManager, SmsTemplatesManager, TokenVerifier, Transport, UsersListParams, UsersManager, VerifiedClaims, WebhookSignatureVerifier, buildVerifiedClaims, decodeFrontendApiUrl, hydrateAllowlistIdentifier, hydrateBlocklistIdentifier, hydrateExternalAccount, hydrateInstance, hydrateInvitation, hydrateOauthProvider, hydrateOrganization, hydrateOrganizationDomain, hydrateOrganizationInvitation, hydrateOrganizationMembership, hydratePermission, hydratePhoneNumber, hydrateRedirectUrl, hydrateRole, hydrateSession, hydrateSmsTemplate, hydrateUser };
1614
+ export { AllowlistIdentifiersManager, AppearanceManager, Authn, AuthnConfigError, AuthnHttpError, AuthnTokenInvalidError, AuthnWebhookSignatureInvalidError, BlocklistIdentifiersManager, ExternalAccountsListParams, ExternalAccountsManager, InstanceManager, InvitationsListParams, InvitationsManager, ListParams, LocalizationManager, OauthProvidersManager, OrganizationDomainsManager, OrganizationInvitationsManager, OrganizationMembershipsManager, OrganizationsManager, PasskeysListParams, PasskeysManager, PermissionsManager, PhoneNumbersListParams, PhoneNumbersManager, RedirectUrlsManager, RolesManager, SessionsListParams, SessionsManager, SmsTemplatesManager, TokenVerifier, Transport, UsersListParams, UsersManager, VerifiedClaims, WebhookSignatureVerifier, buildVerifiedClaims, decodeFrontendApiUrl, hydrateAllowlistIdentifier, hydrateAppearance, hydrateBlocklistIdentifier, hydrateExternalAccount, hydrateInstance, hydrateInvitation, hydrateLocalization, hydrateOauthProvider, hydrateOrganization, hydrateOrganizationDomain, hydrateOrganizationInvitation, hydrateOrganizationMembership, hydratePasskey, hydratePermission, hydratePhoneNumber, hydrateRedirectUrl, hydrateRole, hydrateSession, hydrateSmsTemplate, hydrateUser };
1476
1615
  //# sourceMappingURL=index.js.map
1477
1616
  //# sourceMappingURL=index.js.map