@churchapps/content-providers 0.9.3 → 0.9.4

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
@@ -36,6 +36,7 @@ __export(index_exports, {
36
36
  SignPresenterProvider: () => SignPresenterProvider,
37
37
  TokenHelper: () => TokenHelper,
38
38
  VERSION: () => VERSION,
39
+ authIsExpired: () => authIsExpired,
39
40
  getAllProviders: () => getAllProviders,
40
41
  getAvailableProviders: () => getAvailableProviders,
41
42
  getProvider: () => getProvider,
@@ -82,18 +83,32 @@ function toAuthData(data, fallbacks) {
82
83
  ...planTypeId ? { planTypeId } : {}
83
84
  };
84
85
  }
85
- var TokenHelper = class {
86
+ function authIsExpired(auth, nowMs = Date.now()) {
87
+ if (!auth?.created_at || !auth.expires_in) return true;
88
+ const lifetimeMs = auth.expires_in * 1e3;
89
+ const expiresAt = (auth.created_at + auth.expires_in) * 1e3;
90
+ const bufferMs = Math.min(5 * 60 * 1e3, Math.floor(lifetimeMs / 10));
91
+ return nowMs > expiresAt - bufferMs;
92
+ }
93
+ var _TokenHelper = class _TokenHelper {
86
94
  isAuthValid(auth) {
87
- if (!auth) return false;
88
- return !this.isTokenExpired(auth);
95
+ return !authIsExpired(auth);
89
96
  }
90
97
  isTokenExpired(auth) {
91
- if (!auth.created_at || !auth.expires_in) return true;
92
- const expiresAt = (auth.created_at + auth.expires_in) * 1e3;
93
- return Date.now() > expiresAt - 5 * 60 * 1e3;
98
+ return authIsExpired(auth);
94
99
  }
95
100
  async refreshToken(config, auth) {
96
101
  if (!auth.refresh_token) return null;
102
+ const key = `${config.oauthBase}|${config.clientId}|${auth.refresh_token}`;
103
+ const existing = _TokenHelper.inflight.get(key);
104
+ if (existing) return existing;
105
+ const pending = this.doRefresh(config, auth).finally(() => {
106
+ _TokenHelper.inflight.delete(key);
107
+ });
108
+ _TokenHelper.inflight.set(key, pending);
109
+ return pending;
110
+ }
111
+ async doRefresh(config, auth) {
97
112
  try {
98
113
  const params = new URLSearchParams({
99
114
  grant_type: "refresh_token",
@@ -114,6 +129,8 @@ var TokenHelper = class {
114
129
  }
115
130
  }
116
131
  };
132
+ _TokenHelper.inflight = /* @__PURE__ */ new Map();
133
+ var TokenHelper = _TokenHelper;
117
134
 
118
135
  // src/helpers/OAuthHelper.ts
119
136
  function generateCodeVerifier() {
@@ -18022,7 +18039,7 @@ function getAvailableProviders(ids) {
18022
18039
  }
18023
18040
 
18024
18041
  // src/index.ts
18025
- var VERSION = true ? "0.9.3" : "dev";
18042
+ var VERSION = true ? "0.9.4" : "dev";
18026
18043
  // Annotate the CommonJS export names for ESM import in node:
18027
18044
  0 && (module.exports = {
18028
18045
  APlayProvider,
@@ -18041,6 +18058,7 @@ var VERSION = true ? "0.9.3" : "dev";
18041
18058
  SignPresenterProvider,
18042
18059
  TokenHelper,
18043
18060
  VERSION,
18061
+ authIsExpired,
18044
18062
  getAllProviders,
18045
18063
  getAvailableProviders,
18046
18064
  getProvider,