@dreamboard-games/cli 0.1.30-alpha.30 → 0.1.30-alpha.31
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/agent-verifier/agent-workspace-verifier.mjs +226 -93
- package/dist/agent-verifier/agent-workspace-verifier.mjs.map +1 -1
- package/dist/agent-verifier/{chunk-FNSHNMDY.mjs → chunk-MIRGCMUC.mjs} +3 -10
- package/dist/agent-verifier/chunk-MIRGCMUC.mjs.map +1 -0
- package/dist/agent-verifier/{chunk-QMOBTQ5G.mjs → chunk-NBRUEJUK.mjs} +3 -3
- package/dist/agent-verifier/{chunk-QMOBTQ5G.mjs.map → chunk-NBRUEJUK.mjs.map} +1 -1
- package/dist/agent-verifier/{global-config-SWWR2LP4.mjs → global-config-2NUESNEQ.mjs} +2 -2
- package/dist/agent-verifier/{keychain-backend-UF3Z26JM.mjs → keychain-backend-FF4I6ODB.mjs} +1 -1
- package/dist/agent-verifier/{keychain-backend-UF3Z26JM.mjs.map → keychain-backend-FF4I6ODB.mjs.map} +1 -1
- package/dist/agent-verifier/{materialize-workspace-K4WYFG5E.mjs → materialize-workspace-MAGKDMK5.mjs} +2 -2
- package/dist/agent-verifier/{static-scaffold-MHVM63HU.mjs → static-scaffold-CLRRWXON.mjs} +2 -2
- package/dist/authoring-compatibility-internal.js +1 -1
- package/dist/{chunk-UI7NWSYA.js → chunk-6NYVJYN4.js} +7 -28
- package/dist/chunk-6NYVJYN4.js.map +1 -0
- package/dist/{chunk-RTNKVNQA.js → chunk-X244CUU4.js} +228 -148
- package/dist/chunk-X244CUU4.js.map +1 -0
- package/dist/{chunk-I4SZ7FA4.js → chunk-YNJVKC2T.js} +3 -9
- package/dist/{chunk-I4SZ7FA4.js.map → chunk-YNJVKC2T.js.map} +1 -1
- package/dist/{global-config-GK2UC2X6.js → global-config-RBMW7IVA.js} +2 -2
- package/dist/index.js +110 -295
- package/dist/index.js.map +1 -1
- package/dist/internal.js +3 -3
- package/dist/internal.js.map +1 -1
- package/dist/{keychain-backend-GO34KGTG.js → keychain-backend-FSNTNTZE.js} +1 -1
- package/dist/{keychain-backend-GO34KGTG.js.map → keychain-backend-FSNTNTZE.js.map} +1 -1
- package/package.json +1 -1
- package/release/authoring-release-set.json +2 -2
- package/dist/agent-verifier/chunk-FNSHNMDY.mjs.map +0 -1
- package/dist/chunk-RTNKVNQA.js.map +0 -1
- package/dist/chunk-UI7NWSYA.js.map +0 -1
- /package/dist/agent-verifier/{global-config-SWWR2LP4.mjs.map → global-config-2NUESNEQ.mjs.map} +0 -0
- /package/dist/agent-verifier/{materialize-workspace-K4WYFG5E.mjs.map → materialize-workspace-MAGKDMK5.mjs.map} +0 -0
- /package/dist/agent-verifier/{static-scaffold-MHVM63HU.mjs.map → static-scaffold-CLRRWXON.mjs.map} +0 -0
- /package/dist/{global-config-GK2UC2X6.js.map → global-config-RBMW7IVA.js.map} +0 -0
|
@@ -24,14 +24,12 @@ import {
|
|
|
24
24
|
writeWorkspaceJsonFile,
|
|
25
25
|
writeWorkspaceTextFile,
|
|
26
26
|
zProblemDetails
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-YNJVKC2T.js";
|
|
28
28
|
import {
|
|
29
|
-
clearCredentials,
|
|
30
29
|
getStoredSession,
|
|
31
30
|
loadGlobalConfig,
|
|
32
|
-
setCredentials,
|
|
33
31
|
withCredentialLock
|
|
34
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-6NYVJYN4.js";
|
|
35
33
|
import {
|
|
36
34
|
DEFAULT_API_BASE_URL,
|
|
37
35
|
DEFAULT_WEB_BASE_URL,
|
|
@@ -47,6 +45,18 @@ var BUILD_CHANNEL = injectedBuildChannel === "published" ? "published" : "develo
|
|
|
47
45
|
var IS_PUBLISHED_BUILD = BUILD_CHANNEL === "published";
|
|
48
46
|
var PUBLISHED_ENVIRONMENT = "prod";
|
|
49
47
|
|
|
48
|
+
// src/auth/refresh-error.ts
|
|
49
|
+
function classifyRefreshError(error) {
|
|
50
|
+
const message = error.message?.toLowerCase() ?? "";
|
|
51
|
+
if (error.status === 400 || error.status === 401 || message.includes("invalid_grant") || message.includes("refresh token") || message.includes("expired") || message.includes("revoked")) {
|
|
52
|
+
return { kind: "permanent_invalid", reason: error.message };
|
|
53
|
+
}
|
|
54
|
+
if (error.status === 408 || error.status === 429 || typeof error.status === "number" && error.status >= 500 || message.includes("timeout") || message.includes("network") || message.includes("fetch failed")) {
|
|
55
|
+
return { kind: "transient", reason: error.message };
|
|
56
|
+
}
|
|
57
|
+
return { kind: "unknown", reason: error.message };
|
|
58
|
+
}
|
|
59
|
+
|
|
50
60
|
// src/auth/clerk-oauth.ts
|
|
51
61
|
import crypto from "crypto";
|
|
52
62
|
function createPkcePair() {
|
|
@@ -187,75 +197,183 @@ async function exchangeDreamboardUserToken(input) {
|
|
|
187
197
|
};
|
|
188
198
|
}
|
|
189
199
|
|
|
190
|
-
// src/auth/user-
|
|
191
|
-
var
|
|
192
|
-
function
|
|
200
|
+
// src/auth/user-session-manager.ts
|
|
201
|
+
var DEFAULT_TOKEN_MIN_VALIDITY_MS = 60 * 1e3;
|
|
202
|
+
function createUserSessionManager(config) {
|
|
193
203
|
return {
|
|
194
|
-
async
|
|
195
|
-
const localOrInjected = resolveNonStoredToken(config, "dreamboard-api");
|
|
196
|
-
if (localOrInjected) return localOrInjected;
|
|
197
|
-
if (!usesStoredSession(config)) return null;
|
|
204
|
+
async establishRefreshableSession(session) {
|
|
198
205
|
return withCredentialLock(async (ops) => {
|
|
199
|
-
const
|
|
200
|
-
|
|
201
|
-
if (apiToken) return apiToken;
|
|
202
|
-
const clerk = await resolveFreshClerkAccessToken(config, stored);
|
|
206
|
+
const credentials = credentialsFromRefreshableSession(session);
|
|
207
|
+
await ops.writeFull(credentials);
|
|
203
208
|
const exchanged = await exchangeDreamboardUserToken({
|
|
204
209
|
apiBaseUrl: config.apiBaseUrl,
|
|
205
|
-
clerkAccessToken:
|
|
210
|
+
clerkAccessToken: credentials.accessToken,
|
|
206
211
|
audience: "dreamboard-api"
|
|
207
212
|
});
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
213
|
+
const apiToken = toAccessToken(exchanged);
|
|
214
|
+
await ops.writeFull(withApiToken(credentials, apiToken));
|
|
215
|
+
return apiToken;
|
|
216
|
+
});
|
|
217
|
+
},
|
|
218
|
+
async establishAccessOnlySession(accessToken) {
|
|
219
|
+
await withCredentialLock((ops) => ops.writeAccessOnly(accessToken));
|
|
220
|
+
},
|
|
221
|
+
async resolveApiToken(options) {
|
|
222
|
+
const localOrInjected = resolveNonStoredToken(config, "dreamboard-api");
|
|
223
|
+
if (localOrInjected) return localOrInjected;
|
|
224
|
+
if (!usesStoredSession(config)) return null;
|
|
225
|
+
const minValidityMs = options?.minValiditySeconds === void 0 ? DEFAULT_TOKEN_MIN_VALIDITY_MS : Math.max(0, options.minValiditySeconds * 1e3);
|
|
226
|
+
return withCredentialLock(async (ops) => {
|
|
227
|
+
const stored = await ops.read();
|
|
228
|
+
return resolveStoredApiToken(ops, config, stored, minValidityMs);
|
|
218
229
|
});
|
|
219
230
|
},
|
|
220
231
|
async resolveGitToken() {
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
apiBaseUrl: config.apiBaseUrl,
|
|
224
|
-
clerkAccessToken: config.authToken,
|
|
225
|
-
audience: "dreamboard-git"
|
|
226
|
-
});
|
|
227
|
-
return {
|
|
228
|
-
token: exchanged.accessToken,
|
|
229
|
-
expiresAt: exchanged.expiresAt,
|
|
230
|
-
audience: "dreamboard-git"
|
|
231
|
-
};
|
|
232
|
-
}
|
|
232
|
+
const localOrInjected = resolveNonStoredToken(config, "dreamboard-git");
|
|
233
|
+
if (localOrInjected) return localOrInjected;
|
|
233
234
|
if (!usesStoredSession(config)) {
|
|
234
|
-
throw
|
|
235
|
-
|
|
235
|
+
throw missingSessionError();
|
|
236
|
+
}
|
|
237
|
+
return withCredentialLock(async (ops) => {
|
|
238
|
+
const stored = await ops.read();
|
|
239
|
+
const clerk = await resolveFreshClerkSession(ops, config, stored);
|
|
240
|
+
return toAccessToken(
|
|
241
|
+
await exchangeDreamboardUserToken({
|
|
242
|
+
apiBaseUrl: config.apiBaseUrl,
|
|
243
|
+
clerkAccessToken: clerk.accessToken,
|
|
244
|
+
audience: "dreamboard-git"
|
|
245
|
+
})
|
|
236
246
|
);
|
|
247
|
+
});
|
|
248
|
+
},
|
|
249
|
+
async inspectSession() {
|
|
250
|
+
const localOrInjected = resolveNonStoredToken(config, "dreamboard-api");
|
|
251
|
+
if (localOrInjected) {
|
|
252
|
+
return inspectAccessOnlyToken(localOrInjected);
|
|
253
|
+
}
|
|
254
|
+
if (!usesStoredSession(config)) {
|
|
255
|
+
return { kind: "none" };
|
|
237
256
|
}
|
|
238
257
|
return withCredentialLock(async (ops) => {
|
|
239
258
|
const stored = await ops.read();
|
|
240
|
-
|
|
241
|
-
const
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
259
|
+
if (!stored) return { kind: "none" };
|
|
260
|
+
const cached = freshStoredApiToken(
|
|
261
|
+
stored,
|
|
262
|
+
DEFAULT_TOKEN_MIN_VALIDITY_MS
|
|
263
|
+
);
|
|
264
|
+
if (cached) {
|
|
265
|
+
return activeStatus("refreshable", cached, false);
|
|
266
|
+
}
|
|
267
|
+
try {
|
|
268
|
+
const token = await resolveStoredApiToken(
|
|
269
|
+
ops,
|
|
270
|
+
config,
|
|
271
|
+
stored,
|
|
272
|
+
DEFAULT_TOKEN_MIN_VALIDITY_MS
|
|
273
|
+
);
|
|
274
|
+
return activeStatus("refreshable", token, true);
|
|
275
|
+
} catch (error) {
|
|
276
|
+
return failedRefreshableStatus(error);
|
|
277
|
+
}
|
|
252
278
|
});
|
|
253
279
|
},
|
|
254
280
|
async logout() {
|
|
255
|
-
await
|
|
281
|
+
await withCredentialLock((ops) => ops.clear("logout_command"));
|
|
256
282
|
}
|
|
257
283
|
};
|
|
258
284
|
}
|
|
285
|
+
async function resolveStoredApiToken(ops, config, stored, minValidityMs) {
|
|
286
|
+
const cached = freshStoredApiToken(stored, minValidityMs);
|
|
287
|
+
if (cached) return cached;
|
|
288
|
+
const clerk = await resolveFreshClerkSession(ops, config, stored);
|
|
289
|
+
const exchanged = await exchangeDreamboardUserToken({
|
|
290
|
+
apiBaseUrl: config.apiBaseUrl,
|
|
291
|
+
clerkAccessToken: clerk.accessToken,
|
|
292
|
+
audience: "dreamboard-api"
|
|
293
|
+
});
|
|
294
|
+
const apiToken = toAccessToken(exchanged);
|
|
295
|
+
await ops.writeFull(withApiToken(clerk, apiToken));
|
|
296
|
+
return apiToken;
|
|
297
|
+
}
|
|
298
|
+
async function resolveFreshClerkSession(ops, config, stored) {
|
|
299
|
+
if (!stored) {
|
|
300
|
+
throw missingSessionError();
|
|
301
|
+
}
|
|
302
|
+
if (!stored.refreshToken) {
|
|
303
|
+
throw new Error(
|
|
304
|
+
"Stored Dreamboard session is missing its refresh token. Run `dreamboard auth login` to authenticate again."
|
|
305
|
+
);
|
|
306
|
+
}
|
|
307
|
+
if (stored.accessToken && isFresh(
|
|
308
|
+
stored.tokenExpiresAt,
|
|
309
|
+
stored.accessToken,
|
|
310
|
+
DEFAULT_TOKEN_MIN_VALIDITY_MS
|
|
311
|
+
)) {
|
|
312
|
+
return credentialsFromStored(config, stored);
|
|
313
|
+
}
|
|
314
|
+
const payload = await refreshClerkOAuthToken({
|
|
315
|
+
config: {
|
|
316
|
+
issuer: stored.clerkOAuthIssuer ?? config.clerkOAuthIssuer,
|
|
317
|
+
clientId: stored.clerkOAuthClientId ?? config.clerkOAuthClientId,
|
|
318
|
+
tokenUrl: stored.clerkOAuthTokenUrl ?? config.clerkOAuthTokenUrl
|
|
319
|
+
},
|
|
320
|
+
refreshToken: stored.refreshToken
|
|
321
|
+
});
|
|
322
|
+
const refreshed = {
|
|
323
|
+
accessToken: payload.accessToken,
|
|
324
|
+
refreshToken: payload.refreshToken,
|
|
325
|
+
tokenExpiresAt: payload.expiresAt,
|
|
326
|
+
dreamboardApiToken: stored.dreamboardApiToken,
|
|
327
|
+
dreamboardApiExpiresAt: stored.dreamboardApiExpiresAt,
|
|
328
|
+
clerkOAuthIssuer: stored.clerkOAuthIssuer ?? config.clerkOAuthIssuer,
|
|
329
|
+
clerkOAuthClientId: stored.clerkOAuthClientId ?? config.clerkOAuthClientId,
|
|
330
|
+
clerkOAuthTokenUrl: payload.tokenUrl,
|
|
331
|
+
environment: stored.environment ?? config.environment
|
|
332
|
+
};
|
|
333
|
+
await ops.writeFull(refreshed);
|
|
334
|
+
return refreshed;
|
|
335
|
+
}
|
|
336
|
+
function credentialsFromStored(config, stored) {
|
|
337
|
+
if (!stored.accessToken || !stored.refreshToken) {
|
|
338
|
+
throw missingSessionError();
|
|
339
|
+
}
|
|
340
|
+
return {
|
|
341
|
+
accessToken: stored.accessToken,
|
|
342
|
+
refreshToken: stored.refreshToken,
|
|
343
|
+
tokenExpiresAt: stored.tokenExpiresAt,
|
|
344
|
+
dreamboardApiToken: stored.dreamboardApiToken,
|
|
345
|
+
dreamboardApiExpiresAt: stored.dreamboardApiExpiresAt,
|
|
346
|
+
clerkOAuthIssuer: stored.clerkOAuthIssuer ?? config.clerkOAuthIssuer,
|
|
347
|
+
clerkOAuthClientId: stored.clerkOAuthClientId ?? config.clerkOAuthClientId,
|
|
348
|
+
clerkOAuthTokenUrl: stored.clerkOAuthTokenUrl ?? config.clerkOAuthTokenUrl,
|
|
349
|
+
environment: stored.environment ?? config.environment
|
|
350
|
+
};
|
|
351
|
+
}
|
|
352
|
+
function credentialsFromRefreshableSession(session) {
|
|
353
|
+
return {
|
|
354
|
+
accessToken: session.clerkAccessToken,
|
|
355
|
+
refreshToken: session.refreshToken,
|
|
356
|
+
tokenExpiresAt: session.clerkAccessExpiresAt,
|
|
357
|
+
clerkOAuthIssuer: session.clerkOAuthIssuer,
|
|
358
|
+
clerkOAuthClientId: session.clerkOAuthClientId,
|
|
359
|
+
clerkOAuthTokenUrl: session.clerkOAuthTokenUrl,
|
|
360
|
+
environment: session.environment
|
|
361
|
+
};
|
|
362
|
+
}
|
|
363
|
+
function withApiToken(credentials, token) {
|
|
364
|
+
return {
|
|
365
|
+
...credentials,
|
|
366
|
+
dreamboardApiToken: token.token,
|
|
367
|
+
dreamboardApiExpiresAt: token.expiresAt
|
|
368
|
+
};
|
|
369
|
+
}
|
|
370
|
+
function toAccessToken(token) {
|
|
371
|
+
return {
|
|
372
|
+
token: token.accessToken,
|
|
373
|
+
expiresAt: token.expiresAt,
|
|
374
|
+
audience: token.audience
|
|
375
|
+
};
|
|
376
|
+
}
|
|
259
377
|
function resolveNonStoredToken(config, audience) {
|
|
260
378
|
if (usesStoredSession(config)) return null;
|
|
261
379
|
if (!config.authToken) return null;
|
|
@@ -265,9 +383,13 @@ function resolveNonStoredToken(config, audience) {
|
|
|
265
383
|
audience
|
|
266
384
|
};
|
|
267
385
|
}
|
|
268
|
-
function freshStoredApiToken(stored) {
|
|
386
|
+
function freshStoredApiToken(stored, minValidityMs) {
|
|
269
387
|
if (!stored?.dreamboardApiToken) return null;
|
|
270
|
-
if (isFresh(
|
|
388
|
+
if (isFresh(
|
|
389
|
+
stored.dreamboardApiExpiresAt,
|
|
390
|
+
stored.dreamboardApiToken,
|
|
391
|
+
minValidityMs
|
|
392
|
+
)) {
|
|
271
393
|
return {
|
|
272
394
|
token: stored.dreamboardApiToken,
|
|
273
395
|
expiresAt: stored.dreamboardApiExpiresAt,
|
|
@@ -276,49 +398,60 @@ function freshStoredApiToken(stored) {
|
|
|
276
398
|
}
|
|
277
399
|
return null;
|
|
278
400
|
}
|
|
279
|
-
|
|
280
|
-
const
|
|
281
|
-
|
|
282
|
-
const tokenExpiresAt = stored?.tokenExpiresAt ?? config.clerkAccessExpiresAt;
|
|
283
|
-
if (!refreshToken) {
|
|
284
|
-
throw new Error(
|
|
285
|
-
"Stored Dreamboard session is missing its refresh token. Run `dreamboard auth login` to authenticate again."
|
|
286
|
-
);
|
|
287
|
-
}
|
|
288
|
-
if (accessToken && isFresh(tokenExpiresAt, accessToken)) {
|
|
401
|
+
function inspectAccessOnlyToken(token) {
|
|
402
|
+
const expiry = resolveExpiry(token.expiresAt, token.token);
|
|
403
|
+
if (expiry && expiry.getTime() <= Date.now()) {
|
|
289
404
|
return {
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
dreamboardApiToken: stored?.dreamboardApiToken,
|
|
294
|
-
dreamboardApiExpiresAt: stored?.dreamboardApiExpiresAt,
|
|
295
|
-
clerkOAuthIssuer: stored?.clerkOAuthIssuer ?? config.clerkOAuthIssuer,
|
|
296
|
-
clerkOAuthClientId: stored?.clerkOAuthClientId ?? config.clerkOAuthClientId,
|
|
297
|
-
clerkOAuthTokenUrl: stored?.clerkOAuthTokenUrl ?? config.clerkOAuthTokenUrl,
|
|
298
|
-
environment: stored?.environment ?? config.environment
|
|
405
|
+
kind: "invalid",
|
|
406
|
+
sessionKind: "access-only",
|
|
407
|
+
message: "Stored Dreamboard access token is expired. Run `dreamboard auth login` to authenticate again."
|
|
299
408
|
};
|
|
300
409
|
}
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
410
|
+
return activeStatus("access-only", token, false);
|
|
411
|
+
}
|
|
412
|
+
function failedRefreshableStatus(error) {
|
|
413
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
414
|
+
const errorStatus = typeof error === "object" && error !== null && "status" in error ? error.status : void 0;
|
|
415
|
+
const classification = classifyRefreshError({
|
|
416
|
+
message,
|
|
417
|
+
status: typeof errorStatus === "number" ? errorStatus : void 0
|
|
308
418
|
});
|
|
419
|
+
if (classification.kind === "permanent_invalid") {
|
|
420
|
+
return {
|
|
421
|
+
kind: "invalid",
|
|
422
|
+
sessionKind: "refreshable",
|
|
423
|
+
message
|
|
424
|
+
};
|
|
425
|
+
}
|
|
309
426
|
return {
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
clerkOAuthIssuer: stored?.clerkOAuthIssuer ?? config.clerkOAuthIssuer,
|
|
314
|
-
clerkOAuthClientId: stored?.clerkOAuthClientId ?? config.clerkOAuthClientId,
|
|
315
|
-
clerkOAuthTokenUrl: payload.tokenUrl,
|
|
316
|
-
environment: stored?.environment ?? config.environment
|
|
427
|
+
kind: "degraded",
|
|
428
|
+
sessionKind: "refreshable",
|
|
429
|
+
message
|
|
317
430
|
};
|
|
318
431
|
}
|
|
319
|
-
function
|
|
320
|
-
|
|
321
|
-
|
|
432
|
+
function activeStatus(sessionKind, apiToken, repaired) {
|
|
433
|
+
return {
|
|
434
|
+
kind: "active",
|
|
435
|
+
sessionKind,
|
|
436
|
+
apiToken,
|
|
437
|
+
repaired
|
|
438
|
+
};
|
|
439
|
+
}
|
|
440
|
+
function missingSessionError() {
|
|
441
|
+
return new Error(
|
|
442
|
+
"Missing Dreamboard session. Run `dreamboard auth login` to authenticate."
|
|
443
|
+
);
|
|
444
|
+
}
|
|
445
|
+
function isFresh(expiresAt, token, minValidityMs) {
|
|
446
|
+
const expiry = resolveExpiry(expiresAt, token);
|
|
447
|
+
return expiry !== null && Number.isFinite(expiry.getTime()) && expiry.getTime() > Date.now() + minValidityMs;
|
|
448
|
+
}
|
|
449
|
+
function resolveExpiry(expiresAt, token) {
|
|
450
|
+
if (expiresAt) {
|
|
451
|
+
const parsed = new Date(expiresAt);
|
|
452
|
+
return Number.isFinite(parsed.getTime()) ? parsed : null;
|
|
453
|
+
}
|
|
454
|
+
return getJwtExpiry(token);
|
|
322
455
|
}
|
|
323
456
|
function getJwtExpiry(accessToken) {
|
|
324
457
|
if (!accessToken) return null;
|
|
@@ -425,7 +558,6 @@ function isLocalAwsUrl(rawUrl) {
|
|
|
425
558
|
}
|
|
426
559
|
|
|
427
560
|
// src/config/resolve.ts
|
|
428
|
-
var DEFAULT_REFRESH_WINDOW_MS = 5 * 60 * 1e3;
|
|
429
561
|
var TRANSIENT_READ_RETRY_DELAYS_MS = [100, 300];
|
|
430
562
|
function resolveConfig(globalConfig, flags, project, credentials) {
|
|
431
563
|
if (IS_PUBLISHED_BUILD) {
|
|
@@ -564,7 +696,7 @@ function assertPublicRuntimeFlags(flags) {
|
|
|
564
696
|
}
|
|
565
697
|
async function configureClient(config) {
|
|
566
698
|
const localHarnessToken = resolveLocalHarnessAccessToken(config);
|
|
567
|
-
const resolvedToken = localHarnessToken ? { token: localHarnessToken } : await
|
|
699
|
+
const resolvedToken = localHarnessToken ? { token: localHarnessToken } : await createUserSessionManager(config).resolveApiToken();
|
|
568
700
|
const effectiveAccessToken = resolvedToken?.token;
|
|
569
701
|
client.setConfig({
|
|
570
702
|
baseUrl: config.apiBaseUrl,
|
|
@@ -605,35 +737,6 @@ function isTransientFetchError(error) {
|
|
|
605
737
|
function sleep(ms) {
|
|
606
738
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
607
739
|
}
|
|
608
|
-
async function refreshResolvedAuthSession(config) {
|
|
609
|
-
if (!usesStoredSession2(config)) return null;
|
|
610
|
-
if (config.refreshToken) {
|
|
611
|
-
return refreshClerkOAuthSession(config);
|
|
612
|
-
}
|
|
613
|
-
return null;
|
|
614
|
-
}
|
|
615
|
-
async function refreshClerkOAuthSession(config) {
|
|
616
|
-
if (!config.refreshToken) return null;
|
|
617
|
-
const payload = await refreshClerkOAuthToken({
|
|
618
|
-
config: {
|
|
619
|
-
issuer: config.clerkOAuthIssuer,
|
|
620
|
-
clientId: config.clerkOAuthClientId,
|
|
621
|
-
tokenUrl: config.clerkOAuthTokenUrl
|
|
622
|
-
},
|
|
623
|
-
refreshToken: config.refreshToken
|
|
624
|
-
});
|
|
625
|
-
const credentials = {
|
|
626
|
-
accessToken: payload.accessToken,
|
|
627
|
-
refreshToken: payload.refreshToken,
|
|
628
|
-
tokenExpiresAt: payload.expiresAt,
|
|
629
|
-
clerkOAuthIssuer: config.clerkOAuthIssuer,
|
|
630
|
-
clerkOAuthClientId: config.clerkOAuthClientId,
|
|
631
|
-
clerkOAuthTokenUrl: payload.tokenUrl,
|
|
632
|
-
environment: config.environment
|
|
633
|
-
};
|
|
634
|
-
await setCredentials(credentials);
|
|
635
|
-
return credentials;
|
|
636
|
-
}
|
|
637
740
|
function requireAuth(config) {
|
|
638
741
|
if (!config.authToken && !config.refreshToken && !resolveLocalHarnessAccessToken(config)) {
|
|
639
742
|
throw new Error(
|
|
@@ -660,9 +763,6 @@ function getAuthTokenExpiry(accessToken) {
|
|
|
660
763
|
return null;
|
|
661
764
|
}
|
|
662
765
|
}
|
|
663
|
-
function usesStoredSession2(config) {
|
|
664
|
-
return config.refreshTokenSource === "global";
|
|
665
|
-
}
|
|
666
766
|
async function loadProjectContextCredentials(requireAuth2, loadCredentials = getStoredSession) {
|
|
667
767
|
return requireAuth2 ? loadCredentials() : void 0;
|
|
668
768
|
}
|
|
@@ -733,13 +833,6 @@ var commitScopedCommandArgsSchema = configFlagsSchema.extend({
|
|
|
733
833
|
commit: external_exports.string().min(1),
|
|
734
834
|
json: external_exports.boolean().default(false)
|
|
735
835
|
});
|
|
736
|
-
var projectRepositoryCommandArgsSchema = configFlagsSchema.extend({
|
|
737
|
-
project: external_exports.string().min(1),
|
|
738
|
-
wait: external_exports.boolean().default(false),
|
|
739
|
-
"wait-timeout-ms": external_exports.string().optional(),
|
|
740
|
-
"repository-poll-interval-ms": external_exports.string().optional(),
|
|
741
|
-
json: external_exports.boolean().default(false)
|
|
742
|
-
});
|
|
743
836
|
var buildCommandArgsSchema = commitScopedCommandArgsSchema.extend({
|
|
744
837
|
profile: external_exports.enum(["preview", "release"]).optional().default("preview")
|
|
745
838
|
});
|
|
@@ -770,14 +863,7 @@ var configCommandArgsSchema = configFlagsSchema.extend({
|
|
|
770
863
|
scope: external_exports.enum(["global", "workspace"]).optional().default("global")
|
|
771
864
|
});
|
|
772
865
|
var authCommandArgsSchema = external_exports.object({
|
|
773
|
-
action: external_exports.enum([
|
|
774
|
-
"set",
|
|
775
|
-
"login",
|
|
776
|
-
"logout",
|
|
777
|
-
"env",
|
|
778
|
-
"status",
|
|
779
|
-
"git-credential"
|
|
780
|
-
]),
|
|
866
|
+
action: external_exports.enum(["set", "login", "logout", "env", "status", "git-credential"]),
|
|
781
867
|
tokenValue: external_exports.string().optional(),
|
|
782
868
|
token: external_exports.string().optional(),
|
|
783
869
|
jwt: external_exports.boolean().optional(),
|
|
@@ -809,9 +895,6 @@ function parseCloneCommandArgs(args) {
|
|
|
809
895
|
function parseCommitScopedCommandArgs(commandName, args) {
|
|
810
896
|
return parseArgs(commandName, commitScopedCommandArgsSchema, args);
|
|
811
897
|
}
|
|
812
|
-
function parseProjectRepositoryCommandArgs(commandName, args) {
|
|
813
|
-
return parseArgs(commandName, projectRepositoryCommandArgsSchema, args);
|
|
814
|
-
}
|
|
815
898
|
function parseBuildCommandArgs(args) {
|
|
816
899
|
return parseArgs("build", buildCommandArgsSchema, args);
|
|
817
900
|
}
|
|
@@ -3683,14 +3766,12 @@ export {
|
|
|
3683
3766
|
createPkcePair,
|
|
3684
3767
|
buildClerkAuthorizationUrl,
|
|
3685
3768
|
exchangeClerkOAuthCode,
|
|
3686
|
-
|
|
3769
|
+
createUserSessionManager,
|
|
3687
3770
|
IS_PUBLISHED_BUILD,
|
|
3688
3771
|
PUBLISHED_ENVIRONMENT,
|
|
3689
|
-
createUserTokenManager,
|
|
3690
3772
|
resolveLocalHarnessAccessToken,
|
|
3691
3773
|
resolveConfig,
|
|
3692
3774
|
configureClient,
|
|
3693
|
-
refreshResolvedAuthSession,
|
|
3694
3775
|
requireAuth,
|
|
3695
3776
|
getAuthTokenExpiry,
|
|
3696
3777
|
resolveProjectContext,
|
|
@@ -3699,7 +3780,6 @@ export {
|
|
|
3699
3780
|
parseNewCommandArgs,
|
|
3700
3781
|
parseCloneCommandArgs,
|
|
3701
3782
|
parseCommitScopedCommandArgs,
|
|
3702
|
-
parseProjectRepositoryCommandArgs,
|
|
3703
3783
|
parseBuildCommandArgs,
|
|
3704
3784
|
parseReleasePublishCommandArgs,
|
|
3705
3785
|
parseDevCommandArgs,
|
|
@@ -3732,4 +3812,4 @@ export {
|
|
|
3732
3812
|
isLocalMaintainerRegistryEnabled,
|
|
3733
3813
|
didLocalMaintainerSnapshotChange
|
|
3734
3814
|
};
|
|
3735
|
-
//# sourceMappingURL=chunk-
|
|
3815
|
+
//# sourceMappingURL=chunk-X244CUU4.js.map
|