@treeseed/sdk 0.10.12 → 0.10.14

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.
@@ -310,6 +310,7 @@ class D1AuthStore {
310
310
  scopes: this.scopesForPrincipal(permissions),
311
311
  metadata: {
312
312
  ...parseJson(user.metadata_json, {}),
313
+ email: user.email ?? void 0,
313
314
  username: user.username ?? void 0
314
315
  }
315
316
  }
@@ -637,7 +638,11 @@ class D1AuthStore {
637
638
  expiresInSeconds: this.config.accessTokenTtlSeconds,
638
639
  principal: {
639
640
  ...principalRecord.principal,
640
- scopes: requestedScopes
641
+ scopes: requestedScopes,
642
+ metadata: {
643
+ ...principalRecord.principal.metadata,
644
+ sessionId
645
+ }
641
646
  }
642
647
  };
643
648
  }
@@ -865,6 +870,20 @@ class D1AuthStore {
865
870
  }
866
871
  const payload = verifyAccessToken(token, this.config.authSecret);
867
872
  if (!payload) return null;
873
+ const sessionId = typeof payload.metadata?.sessionId === "string" ? payload.metadata.sessionId.trim() : "";
874
+ if (sessionId) {
875
+ const session = await this.first(
876
+ `SELECT id, user_id, expires_at, revoked_at
877
+ FROM auth_sessions
878
+ WHERE id = ?`,
879
+ [sessionId]
880
+ );
881
+ const sessionExpiresAt = session ? new Date(session.expires_at).getTime() : 0;
882
+ if (!session || session.user_id !== payload.sub || session.revoked_at || !Number.isFinite(sessionExpiresAt) || sessionExpiresAt <= Date.now()) {
883
+ return null;
884
+ }
885
+ await this.run(`UPDATE auth_sessions SET updated_at = ? WHERE id = ?`, [isoNow(), session.id]);
886
+ }
868
887
  return {
869
888
  principal: principalFromAccessTokenPayload(payload),
870
889
  credential: {