@zoreal/oauth2-js 0.1.18 → 0.1.19
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 +26 -6
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -6
- package/dist/index.d.ts +1 -6
- package/dist/index.js +26 -6
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -60,7 +60,7 @@ function unsafeClaims(idToken) {
|
|
|
60
60
|
|
|
61
61
|
// src/wire.ts
|
|
62
62
|
var WIRE_VERSION = 1;
|
|
63
|
-
var SDK_VERSION = "0.1.
|
|
63
|
+
var SDK_VERSION = "0.1.19";
|
|
64
64
|
var SDK_NAME = "@zoreal/oauth2-js";
|
|
65
65
|
var DEFAULT_ISSUER = "https://id.zoreal.com";
|
|
66
66
|
var POLL_INTERVAL_MS = 2e3;
|
|
@@ -138,11 +138,30 @@ var sleep = (ms, signal) => new Promise((resolve, reject) => {
|
|
|
138
138
|
}, ms);
|
|
139
139
|
signal?.addEventListener("abort", onAbort, { once: true });
|
|
140
140
|
});
|
|
141
|
+
var SETTLE_MS = 1500;
|
|
142
|
+
var NETWORK_FAILURES_TOLERATED = 4;
|
|
141
143
|
async function pollUntilApproved(issuer, requestId, onState, signal, options = {}) {
|
|
144
|
+
const settlingUntil = options.tolerateUnknownUntil ?? 0;
|
|
145
|
+
let networkFailures = 0;
|
|
146
|
+
let last = { status: "pending" };
|
|
147
|
+
if (settlingUntil > Date.now()) await sleep(SETTLE_MS, signal);
|
|
142
148
|
for (; ; ) {
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
149
|
+
let response;
|
|
150
|
+
try {
|
|
151
|
+
response = await fetch(`${issuer}/pair/${encodeURIComponent(requestId)}/status`, {
|
|
152
|
+
signal
|
|
153
|
+
});
|
|
154
|
+
networkFailures = 0;
|
|
155
|
+
} catch (e) {
|
|
156
|
+
if (e instanceof DOMException && e.name === "AbortError") throw e;
|
|
157
|
+
networkFailures += 1;
|
|
158
|
+
if (settlingUntil > Date.now() || networkFailures <= NETWORK_FAILURES_TOLERATED) {
|
|
159
|
+
onState?.(last);
|
|
160
|
+
await sleep(POLL_INTERVAL_MS, signal);
|
|
161
|
+
continue;
|
|
162
|
+
}
|
|
163
|
+
throw e;
|
|
164
|
+
}
|
|
146
165
|
const body = await parseJson(response);
|
|
147
166
|
if (response.status === 404 && (options.tolerateUnknownUntil ?? 0) > Date.now()) {
|
|
148
167
|
onState?.({ status: "pending" });
|
|
@@ -155,11 +174,12 @@ async function pollUntilApproved(issuer, requestId, onState, signal, options = {
|
|
|
155
174
|
body.error_description ?? `Pairing status failed (${response.status})`
|
|
156
175
|
);
|
|
157
176
|
}
|
|
158
|
-
|
|
177
|
+
last = {
|
|
159
178
|
status: body.status,
|
|
160
179
|
expiresIn: body.expires_in,
|
|
161
180
|
enrolmentDeadline: body.enrolment_deadline
|
|
162
|
-
}
|
|
181
|
+
};
|
|
182
|
+
onState?.(last);
|
|
163
183
|
switch (body.status) {
|
|
164
184
|
case "approved":
|
|
165
185
|
if (!body.code) {
|