@stackfactor/client-api 1.3.4 → 1.3.6
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/cjs/lib/axiosClient.d.ts +14 -0
- package/dist/cjs/lib/axiosClient.d.ts.map +1 -1
- package/dist/cjs/lib/axiosClient.js +74 -1
- package/dist/cjs/lib/axiosClient.js.map +1 -1
- package/dist/cjs/lib/index.d.ts +2 -1
- package/dist/cjs/lib/index.d.ts.map +1 -1
- package/dist/cjs/lib/index.js +3 -2
- package/dist/cjs/lib/index.js.map +1 -1
- package/dist/cjs/lib/integrations/contentGenerator.d.ts.map +1 -1
- package/dist/cjs/lib/integrations/contentGenerator.js +6 -0
- package/dist/cjs/lib/integrations/contentGenerator.js.map +1 -1
- package/dist/cjs/lib/labSessions.d.ts.map +1 -1
- package/dist/cjs/lib/labSessions.js +6 -0
- package/dist/cjs/lib/labSessions.js.map +1 -1
- package/dist/cjs/lib/socketError.d.ts +19 -10
- package/dist/cjs/lib/socketError.d.ts.map +1 -1
- package/dist/cjs/lib/socketError.js +38 -1
- package/dist/cjs/lib/socketError.js.map +1 -1
- package/dist/esm/lib/axiosClient.d.ts +14 -0
- package/dist/esm/lib/axiosClient.d.ts.map +1 -1
- package/dist/esm/lib/axiosClient.js +72 -0
- package/dist/esm/lib/axiosClient.js.map +1 -1
- package/dist/esm/lib/index.d.ts +2 -1
- package/dist/esm/lib/index.d.ts.map +1 -1
- package/dist/esm/lib/index.js +1 -1
- package/dist/esm/lib/index.js.map +1 -1
- package/dist/esm/lib/integrations/contentGenerator.d.ts.map +1 -1
- package/dist/esm/lib/integrations/contentGenerator.js +6 -0
- package/dist/esm/lib/integrations/contentGenerator.js.map +1 -1
- package/dist/esm/lib/labSessions.d.ts.map +1 -1
- package/dist/esm/lib/labSessions.js +6 -0
- package/dist/esm/lib/labSessions.js.map +1 -1
- package/dist/esm/lib/socketError.d.ts +19 -10
- package/dist/esm/lib/socketError.d.ts.map +1 -1
- package/dist/esm/lib/socketError.js +36 -0
- package/dist/esm/lib/socketError.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
import { AxiosError } from "axios";
|
|
2
2
|
export declare const client: import("axios").AxiosInstance;
|
|
3
|
+
/**
|
|
4
|
+
* Recovers a session whose access token the server has refused: exchanges the
|
|
5
|
+
* refresh cookie for a new access token and resolves with it, or resolves null
|
|
6
|
+
* (or rejects) when the session cannot be recovered.
|
|
7
|
+
* @param failedToken The access token the refused request carried
|
|
8
|
+
*/
|
|
9
|
+
export type SessionRefresher = (failedToken: string) => Promise<string | null>;
|
|
10
|
+
/**
|
|
11
|
+
* Registers the function that recovers a session after a 401 (see the response
|
|
12
|
+
* interceptor below). The client knows nothing about where the application keeps
|
|
13
|
+
* its access token, so the application supplies this; pass null to remove it.
|
|
14
|
+
* @param {SessionRefresher | null} refresher
|
|
15
|
+
*/
|
|
16
|
+
export declare const setSessionRefresher: (refresher: SessionRefresher | null) => void;
|
|
3
17
|
export declare const FORBIDDEN_MESSAGE = "You don't have permission to do this. Ask your administrator for access.";
|
|
4
18
|
/**
|
|
5
19
|
* Returns the error as a string. A permission refusal (403) reads as
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"axiosClient.d.ts","sourceRoot":"","sources":["../../../src/lib/axiosClient.ts"],"names":[],"mappings":"AAAA,OAAc,
|
|
1
|
+
{"version":3,"file":"axiosClient.d.ts","sourceRoot":"","sources":["../../../src/lib/axiosClient.ts"],"names":[],"mappings":"AAAA,OAAc,EACZ,UAAU,EAGX,MAAM,OAAO,CAAC;AAuBf,eAAO,MAAM,MAAM,+BAGjB,CAAC;AAEH;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;AAI/E;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,GAAI,WAAW,gBAAgB,GAAG,IAAI,KAAG,IAExE,CAAC;AA6JF,eAAO,MAAM,iBAAiB,6EAC8C,CAAC;AA4D7E;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,UAAU,KAAG,MAejD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,YAAY,GAAI,OAAO,UAAU,KAAG,MAIhD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAC9B,OAAO,UAAU,KAChB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAKnC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAC5B,qBAAqB,OAAO,EAC5B,OAAO,UAAU,KAChB,OAMF,CAAC"}
|
|
@@ -36,7 +36,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
36
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.shouldReturnError = exports.getErrorInformation = exports.getErrorType = exports.errorToString = exports.FORBIDDEN_MESSAGE = exports.client = void 0;
|
|
39
|
+
exports.shouldReturnError = exports.getErrorInformation = exports.getErrorType = exports.errorToString = exports.FORBIDDEN_MESSAGE = exports.setSessionRefresher = exports.client = void 0;
|
|
40
40
|
const axios_1 = __importDefault(require("axios"));
|
|
41
41
|
const constants_js_1 = require("./constants.js");
|
|
42
42
|
const socketError_js_1 = require("./socketError.js");
|
|
@@ -46,6 +46,79 @@ exports.client = axios_1.default.create({
|
|
|
46
46
|
baseURL: baseUrl,
|
|
47
47
|
withCredentials: true,
|
|
48
48
|
});
|
|
49
|
+
let sessionRefresher = null;
|
|
50
|
+
/**
|
|
51
|
+
* Registers the function that recovers a session after a 401 (see the response
|
|
52
|
+
* interceptor below). The client knows nothing about where the application keeps
|
|
53
|
+
* its access token, so the application supplies this; pass null to remove it.
|
|
54
|
+
* @param {SessionRefresher | null} refresher
|
|
55
|
+
*/
|
|
56
|
+
const setSessionRefresher = (refresher) => {
|
|
57
|
+
sessionRefresher = refresher;
|
|
58
|
+
};
|
|
59
|
+
exports.setSessionRefresher = setSessionRefresher;
|
|
60
|
+
//Refreshes started from a given refused token. Every request a page fires at once
|
|
61
|
+
//carries the same token and comes back 401 at once; they must share ONE refresh,
|
|
62
|
+
//because the refresh cookie rotates on every exchange. Kept briefly after settling
|
|
63
|
+
//so a straggler that was refused with the same token reuses the result instead of
|
|
64
|
+
//rotating the cookie again.
|
|
65
|
+
const refreshesByFailedToken = new Map();
|
|
66
|
+
const REFRESH_RESULT_TTL_MS = 30000;
|
|
67
|
+
const refreshOnce = (failedToken) => {
|
|
68
|
+
const pending = refreshesByFailedToken.get(failedToken);
|
|
69
|
+
if (pending) {
|
|
70
|
+
return pending;
|
|
71
|
+
}
|
|
72
|
+
const refresher = sessionRefresher;
|
|
73
|
+
const refresh = Promise.resolve()
|
|
74
|
+
.then(() => refresher(failedToken))
|
|
75
|
+
.catch(() => null)
|
|
76
|
+
.finally(() => {
|
|
77
|
+
const timer = setTimeout(() => refreshesByFailedToken.delete(failedToken), REFRESH_RESULT_TTL_MS);
|
|
78
|
+
//Never hold a Node process (tests, SSR) open just to forget a result
|
|
79
|
+
timer.unref?.();
|
|
80
|
+
});
|
|
81
|
+
refreshesByFailedToken.set(failedToken, refresh);
|
|
82
|
+
return refresh;
|
|
83
|
+
};
|
|
84
|
+
//Marks a request already replayed after a refresh, so a second 401 is final
|
|
85
|
+
const RETRIED_AFTER_REFRESH = "__retriedAfterRefresh";
|
|
86
|
+
//The session's own endpoints answer 401 to mean "this session is over"; replaying
|
|
87
|
+
//them after a refresh is meaningless (and refreshing from a failed refresh loops).
|
|
88
|
+
const isSessionEndpoint = (url) => typeof url === "string" && url.indexOf("/api/v1/auth/") >= 0;
|
|
89
|
+
const authorizationOf = (config) => {
|
|
90
|
+
const headers = config.headers;
|
|
91
|
+
const value = (typeof config.headers?.get === "function"
|
|
92
|
+
? config.headers.get("authorization")
|
|
93
|
+
: undefined) ??
|
|
94
|
+
headers?.authorization ??
|
|
95
|
+
headers?.Authorization;
|
|
96
|
+
return typeof value === "string" && value.length > 0 ? value : undefined;
|
|
97
|
+
};
|
|
98
|
+
//The refused token when this failure is one to recover from, undefined otherwise
|
|
99
|
+
const recoverableToken = (error, config) => {
|
|
100
|
+
if (error?.response?.status !== constants_js_1.RESPONSE_TYPE.UNAUTHORIZED) {
|
|
101
|
+
return undefined;
|
|
102
|
+
}
|
|
103
|
+
if (!sessionRefresher || !config || config[RETRIED_AFTER_REFRESH]) {
|
|
104
|
+
return undefined;
|
|
105
|
+
}
|
|
106
|
+
return isSessionEndpoint(config.url) ? undefined : authorizationOf(config);
|
|
107
|
+
};
|
|
108
|
+
exports.client.interceptors.response.use(undefined, async (error) => {
|
|
109
|
+
const config = error?.config;
|
|
110
|
+
const failedToken = recoverableToken(error, config);
|
|
111
|
+
if (!config || !failedToken) {
|
|
112
|
+
throw error;
|
|
113
|
+
}
|
|
114
|
+
const newToken = await refreshOnce(failedToken);
|
|
115
|
+
if (!newToken) {
|
|
116
|
+
throw error;
|
|
117
|
+
}
|
|
118
|
+
config[RETRIED_AFTER_REFRESH] = true;
|
|
119
|
+
config.headers.set("authorization", newToken);
|
|
120
|
+
return exports.client.request(config);
|
|
121
|
+
});
|
|
49
122
|
//Fields whose value must never be echoed back to the screen. A validation error on
|
|
50
123
|
//one of these used to render the value the user typed — so a rejected password was
|
|
51
124
|
//printed in the error message under it.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"axiosClient.js","sourceRoot":"","sources":["../../../src/lib/axiosClient.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"axiosClient.js","sourceRoot":"","sources":["../../../src/lib/axiosClient.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/lib/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export * as actionNotifications from "./actionNotifications.js";
|
|
2
|
-
export { client, errorToString, getErrorInformation, getErrorType, shouldReturnError, } from "./axiosClient.js";
|
|
2
|
+
export { client, errorToString, getErrorInformation, getErrorType, setSessionRefresher, shouldReturnError, } from "./axiosClient.js";
|
|
3
|
+
export type { SessionRefresher } from "./axiosClient.js";
|
|
3
4
|
export * as aiAssistant from "./aiAssistant.js";
|
|
4
5
|
export * as artifactCatalog from "./artifactCatalog.js";
|
|
5
6
|
export * as billingProfiles from "./billingProfiles.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/lib/index.js
CHANGED
|
@@ -36,14 +36,15 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
36
36
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.
|
|
40
|
-
exports.users = exports.serviceAccounts = exports.userInformation = exports.trainingPlanProficiencyLevel = exports.trainingPlan = exports.tenant = exports.team = exports.onboarding = exports.standardTemplate = exports.standard = exports.skillTemplate = void 0;
|
|
39
|
+
exports.skillAssessment = exports.skill = exports.session = exports.security = exports.sdlcProfiles = exports.sdlcEvaluationRuns = exports.sdlcConfigurations = exports.roleTemplate = exports.role = exports.requirementTemplate = exports.requirement = exports.repositoryPipelines = exports.reports = exports.quotas = exports.policyTemplate = exports.policy = exports.microSkillsQuizes = exports.logger = exports.partnerships = exports.learningPath = exports.learningContent = exports.learnerFeedback = exports.labSessions = exports.knowledgeBaseSourceConnectors = exports.knowledgeBase = exports.incident = exports.groups = exports.integrationConfiguration = exports.integration = exports.dashboard = exports.customFields = exports.controlTemplate = exports.controlResults = exports.control = exports.contentGenerator = exports.isSocketError = exports.config = exports.channelProgrammes = exports.address = exports.avatar = exports.billingProfiles = exports.artifactCatalog = exports.aiAssistant = exports.shouldReturnError = exports.setSessionRefresher = exports.getErrorType = exports.getErrorInformation = exports.errorToString = exports.client = exports.actionNotifications = void 0;
|
|
40
|
+
exports.users = exports.serviceAccounts = exports.userInformation = exports.trainingPlanProficiencyLevel = exports.trainingPlan = exports.tenant = exports.team = exports.onboarding = exports.standardTemplate = exports.standard = exports.skillTemplate = exports.skillAssessmentTestingSession = void 0;
|
|
41
41
|
exports.actionNotifications = __importStar(require("./actionNotifications.js"));
|
|
42
42
|
var axiosClient_js_1 = require("./axiosClient.js");
|
|
43
43
|
Object.defineProperty(exports, "client", { enumerable: true, get: function () { return axiosClient_js_1.client; } });
|
|
44
44
|
Object.defineProperty(exports, "errorToString", { enumerable: true, get: function () { return axiosClient_js_1.errorToString; } });
|
|
45
45
|
Object.defineProperty(exports, "getErrorInformation", { enumerable: true, get: function () { return axiosClient_js_1.getErrorInformation; } });
|
|
46
46
|
Object.defineProperty(exports, "getErrorType", { enumerable: true, get: function () { return axiosClient_js_1.getErrorType; } });
|
|
47
|
+
Object.defineProperty(exports, "setSessionRefresher", { enumerable: true, get: function () { return axiosClient_js_1.setSessionRefresher; } });
|
|
47
48
|
Object.defineProperty(exports, "shouldReturnError", { enumerable: true, get: function () { return axiosClient_js_1.shouldReturnError; } });
|
|
48
49
|
exports.aiAssistant = __importStar(require("./aiAssistant.js"));
|
|
49
50
|
exports.artifactCatalog = __importStar(require("./artifactCatalog.js"));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gFAAgE;AAChE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gFAAgE;AAChE,mDAO0B;AANxB,wGAAA,MAAM,OAAA;AACN,+GAAA,aAAa,OAAA;AACb,qHAAA,mBAAmB,OAAA;AACnB,8GAAA,YAAY,OAAA;AACZ,qHAAA,mBAAmB,OAAA;AACnB,mHAAA,iBAAiB,OAAA;AAGnB,gEAAgD;AAChD,wEAAwD;AACxD,wEAAwD;AACxD,sDAAsC;AACtC,wDAAwC;AACxC,4EAA4D;AAC5D,sDAAsC;AACtC,iDAA+B;AAC/B,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AAEtB,uFAAuE;AACvE,wDAAwC;AACxC,sEAAsD;AACtD,wEAAwD;AACxD,kEAAkD;AAClD,4DAA4C;AAC5C,gEAAgD;AAChD,0FAA0E;AAC1E,sDAAsC;AACtC,0DAA0C;AAC1C,oEAAoD;AACpD,iHAAiG;AACjG,gEAAgD;AAChD,wEAAwD;AACxD,wEAAwD;AACxD,kEAAkD;AAClD,kEAAkD;AAClD,sDAAsC;AACtC,4EAA4D;AAC5D,sDAAsC;AACtC,sEAAsD;AACtD,sDAAsC;AACtC,wDAAwC;AACxC,gFAAgE;AAChE,gEAAgD;AAChD,gFAAgE;AAChE,kDAAkC;AAClC,kEAAkD;AAClD,8EAA8D;AAC9D,8EAA8D;AAC9D,kEAAkD;AAClD,0DAA0C;AAC1C,wDAAwC;AACxC,oDAAoC;AACpC,yEAAyD;AACzD,oGAAoF;AACpF,oEAAoD;AACpD,0DAA0C;AAC1C,0EAA0D;AAC1D,8DAA8C;AAC9C,mDAAmC;AACnC,uDAAuC;AACvC,mEAAmD;AACnD,oGAAoF;AACpF,wEAAwD;AACxD,wEAAwD;AACxD,oDAAoC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contentGenerator.d.ts","sourceRoot":"","sources":["../../../../src/lib/integrations/contentGenerator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"contentGenerator.d.ts","sourceRoot":"","sources":["../../../../src/lib/integrations/contentGenerator.ts"],"names":[],"mappings":"AAuBA,UAAU,YAAY;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,eAAe,GAC1B,MAAM,MAAM,EACZ,aAAa,MAAM,EACnB,eAAe,MAAM,EACrB,OAAO,MAAM,EACb,mBAAkB,CAAC,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAC,GAAG,IAAW,EAClE,YAAW,MAAM,GAAG,IAAW,KAC9B,OAAO,CAAC,MAAM,CAiDhB,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,GAC/B,IAAI,MAAM,EACV,aAAa,MAAM,EACnB,MAAM,MAAM,EACZ,aAAa,MAAM,EACnB,UAAU,MAAM,EAChB,OAAO,MAAM,KACZ,OAAO,CAAC,MAAM,CAwBhB,CAAC"}
|
|
@@ -4,6 +4,7 @@ exports.generateContentAsync = exports.generateContent = void 0;
|
|
|
4
4
|
const axiosClient_js_1 = require("../axiosClient.js");
|
|
5
5
|
const utils_js_1 = require("../utils.js");
|
|
6
6
|
const socket_io_client_1 = require("socket.io-client");
|
|
7
|
+
const socketError_js_1 = require("../socketError.js");
|
|
7
8
|
/**
|
|
8
9
|
* Generate content
|
|
9
10
|
* @param {Array<String>} data
|
|
@@ -51,6 +52,11 @@ const generateContent = (data, contentType, integrationId, token, onProgressStat
|
|
|
51
52
|
socket.disconnect();
|
|
52
53
|
resolve(data);
|
|
53
54
|
});
|
|
55
|
+
// A refused handshake settles nothing on its own — see handshakeRefusal.
|
|
56
|
+
socket.on("connect_error", (err) => {
|
|
57
|
+
socket.disconnect();
|
|
58
|
+
reject((0, socketError_js_1.handshakeRefusal)(err));
|
|
59
|
+
});
|
|
54
60
|
socket.on("error", (err) => {
|
|
55
61
|
socket.disconnect();
|
|
56
62
|
reject(err);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contentGenerator.js","sourceRoot":"","sources":["../../../../src/lib/integrations/contentGenerator.ts"],"names":[],"mappings":";;;AACA,sDAA2C;AAC3C,0CAAyC;AACzC,uDAAsC;
|
|
1
|
+
{"version":3,"file":"contentGenerator.js","sourceRoot":"","sources":["../../../../src/lib/integrations/contentGenerator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"labSessions.d.ts","sourceRoot":"","sources":["../../../src/lib/labSessions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"labSessions.d.ts","sourceRoot":"","sources":["../../../src/lib/labSessions.ts"],"names":[],"mappings":"AAYA,UAAU,YAAY;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAC3B,MAAM,MAAM,EACZ,OAAO,MAAM,KACZ,OAAO,CAAC,MAAM,CAehB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAC3B,IAAI,MAAM,EACV,OAAO,MAAM,KACZ,OAAO,CAAC,MAAM,CAgBhB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,+BAA+B,GAC1C,aAAa,MAAM,EACnB,OAAO,MAAM,KACZ,OAAO,CAAC,MAAM,CAchB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,GACjC,IAAI,MAAM,EACV,OAAO,MAAM,KACZ,OAAO,CAAC,MAAM,CAahB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,GAAI,OAAO,MAAM,KAAG,OAAO,CAAC,MAAM,CAanE,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAC3B,IAAI,MAAM,EACV,MAAM,SAAS,GAAG,SAAS,YAAY,EACvC,OAAO,MAAM,EACb,mBAAkB,CAAC,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAC,GAAG,IAAW,KACjE,OAAO,CAAC,MAAM,CA6ChB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAC3B,IAAI,MAAM,EACV,MAAM,MAAM,EACZ,OAAO,MAAM,KACZ,OAAO,CAAC,MAAM,CAehB,CAAC"}
|
|
@@ -4,6 +4,7 @@ exports.updateLabSession = exports.launchLabSession = exports.getLabSessionsForU
|
|
|
4
4
|
const axiosClient_js_1 = require("./axiosClient.js");
|
|
5
5
|
const utils_js_1 = require("./utils.js");
|
|
6
6
|
const socket_io_client_1 = require("socket.io-client");
|
|
7
|
+
const socketError_js_1 = require("./socketError.js");
|
|
7
8
|
/**
|
|
8
9
|
* Create a lab session
|
|
9
10
|
* @param {object} data The lab session data
|
|
@@ -143,6 +144,11 @@ const launchLabSession = (id, mode = "default", token, onProgressStatus = null)
|
|
|
143
144
|
socket.disconnect();
|
|
144
145
|
resolve(data);
|
|
145
146
|
});
|
|
147
|
+
// A refused handshake settles nothing on its own — see handshakeRefusal.
|
|
148
|
+
socket.on("connect_error", (err) => {
|
|
149
|
+
socket.disconnect();
|
|
150
|
+
reject((0, socketError_js_1.handshakeRefusal)(err));
|
|
151
|
+
});
|
|
146
152
|
socket.on("error", (err) => {
|
|
147
153
|
socket.disconnect();
|
|
148
154
|
reject(err);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"labSessions.js","sourceRoot":"","sources":["../../../src/lib/labSessions.ts"],"names":[],"mappings":";;;AACA,qDAA0C;AAC1C,yCAAwC;AACxC,uDAAsC;
|
|
1
|
+
{"version":3,"file":"labSessions.js","sourceRoot":"","sources":["../../../src/lib/labSessions.ts"],"names":[],"mappings":";;;AACA,qDAA0C;AAC1C,yCAAwC;AACxC,uDAAsC;AAEtC,qDAAoD;AAWpD;;;;;GAKG;AACI,MAAM,gBAAgB,GAAG,CAC9B,IAAY,EACZ,KAAa,EACI,EAAE;IACnB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,OAAO,GAAG,uBAAM,CAAC,IAAI,CACzB,6BAA6B,EAC7B,EAAE,IAAI,EAAE,EACR,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,EAAE,CACtC,CAAC;QACF,OAAO;aACJ,IAAI,CAAC,CAAC,QAAuB,EAAE,EAAE;YAChC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,KAAiB,EAAE,EAAE;YAC3B,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAlBW,QAAA,gBAAgB,oBAkB3B;AAEF;;;;GAIG;AACI,MAAM,gBAAgB,GAAG,CAC9B,EAAU,EACV,KAAa,EACI,EAAE;IACnB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,OAAO,GAAG,uBAAM,CAAC,MAAM,CAAC,6BAA6B,EAAE;YAC3D,OAAO,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE;YACjC,IAAI,EAAE;gBACJ,EAAE,EAAE,EAAE;aACP;SACF,CAAC,CAAC;QACH,OAAO;aACJ,IAAI,CAAC,CAAC,QAAuB,EAAE,EAAE;YAChC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,KAAiB,EAAE,EAAE;YAC3B,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAnBW,QAAA,gBAAgB,oBAmB3B;AAEF;;;;;GAKG;AACI,MAAM,+BAA+B,GAAG,CAC7C,WAAmB,EACnB,KAAa,EACI,EAAE;IACnB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,OAAO,GAAG,uBAAM,CAAC,GAAG,CACxB,iDAAiD,WAAW,EAAE,EAC9D,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,EAAE,CACtC,CAAC;QACF,OAAO;aACJ,IAAI,CAAC,CAAC,QAAuB,EAAE,EAAE;YAChC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,KAAiB,EAAE,EAAE;YAC3B,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAjBW,QAAA,+BAA+B,mCAiB1C;AAEF;;;;;GAKG;AACI,MAAM,sBAAsB,GAAG,CACpC,EAAU,EACV,KAAa,EACI,EAAE;IACnB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,OAAO,GAAG,uBAAM,CAAC,GAAG,CAAC,8BAA8B,EAAE,EAAE,EAAE;YAC7D,OAAO,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE;SAClC,CAAC,CAAC;QACH,OAAO;aACJ,IAAI,CAAC,CAAC,QAAuB,EAAE,EAAE;YAChC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,KAAiB,EAAE,EAAE;YAC3B,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAhBW,QAAA,sBAAsB,0BAgBjC;AAEF;;;;GAIG;AACI,MAAM,qBAAqB,GAAG,CAAC,KAAa,EAAmB,EAAE;IACtE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,OAAO,GAAG,uBAAM,CAAC,GAAG,CAAC,mCAAmC,EAAE;YAC9D,OAAO,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE;SAClC,CAAC,CAAC;QACH,OAAO;aACJ,IAAI,CAAC,CAAC,QAAuB,EAAE,EAAE;YAChC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,KAAiB,EAAE,EAAE;YAC3B,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAbW,QAAA,qBAAqB,yBAahC;AAEF;;;;;;GAMG;AACI,MAAM,gBAAgB,GAAG,CAC9B,EAAU,EACV,OAA8B,SAAS,EACvC,KAAa,EACb,mBAA8D,IAAI,EACjD,EAAE;IACnB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,eAAe;QACf,MAAM,WAAW,GAAyB;YACxC,EAAE;YACF,IAAI;SACL,CAAC;QACF,+CAA+C;QAC/C,MAAM,MAAM,GAAG,IAAA,qBAAE,EAAC,IAAA,qBAAU,GAAE,EAAE;YAC9B,IAAI,EAAE;gBACJ,KAAK,EAAE,KAAK;aACb;YACD,IAAI,EAAE,kBAAkB;YACxB,UAAU,EAAE,CAAC,WAAW,CAAC;YACzB,eAAe,EAAE,IAAI;YACrB,YAAY,EAAE,KAAK;SACpB,CAAC,CAAC;QACH,wBAAwB;QACxB,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;YACxB,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE;YAC7B,IAAI,gBAAgB,EAAE,CAAC;gBACrB,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC;QACH,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE;YAC7B,MAAM,CAAC,UAAU,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,yEAAyE;QACzE,MAAM,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,GAAU,EAAE,EAAE;YACxC,MAAM,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,CAAC,IAAA,iCAAgB,EAAC,GAAG,CAAC,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAgB,EAAE,EAAE;YACtC,MAAM,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,EAAE;YACjC,IAAI,MAAM,KAAK,sBAAsB,EAAE,CAAC;gBACtC,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,MAAM,EAAE,CAAC,CAAC,CAAC;YACtD,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAlDW,QAAA,gBAAgB,oBAkD3B;AAEF;;;;;;GAMG;AACI,MAAM,gBAAgB,GAAG,CAC9B,EAAU,EACV,IAAY,EACZ,KAAa,EACI,EAAE;IACnB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,OAAO,GAAG,uBAAM,CAAC,GAAG,CACxB,8BAA8B,EAAE,EAAE,EAClC,EAAE,IAAI,EAAE,EACR,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,EAAE,CACtC,CAAC;QACF,OAAO;aACJ,IAAI,CAAC,CAAC,QAAuB,EAAE,EAAE;YAChC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,KAAiB,EAAE,EAAE;YAC3B,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAnBW,QAAA,gBAAgB,oBAmB3B"}
|
|
@@ -1,13 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Error payload emitted on the `error` socket event for any long-running
|
|
3
|
-
* realtime flow (role import/create-from-template, content generation,
|
|
4
|
-
* lab session launch, etc.). Mirrors the shape produced by the backend's
|
|
5
|
-
* `errorHandling.processForSocket` helper.
|
|
6
|
-
*
|
|
7
|
-
* `details` is populated for express-validator field errors (i.e. malformed
|
|
8
|
-
* input rejected by the socket validation chain) and for any other error
|
|
9
|
-
* created via `errorHandler.create(code, message, details)`.
|
|
10
|
-
*/
|
|
11
1
|
export interface SocketError {
|
|
12
2
|
code: number;
|
|
13
3
|
message: string;
|
|
@@ -19,4 +9,23 @@ export interface SocketError {
|
|
|
19
9
|
* `unknown`/`any`.
|
|
20
10
|
*/
|
|
21
11
|
export declare const isSocketError: (value: unknown) => value is SocketError;
|
|
12
|
+
/**
|
|
13
|
+
* The error a refused handshake becomes, in the same shape as a refusal the
|
|
14
|
+
* server sends over an established socket.
|
|
15
|
+
*
|
|
16
|
+
* socket.io answers a handshake the backend's `io.use` middleware rejects with
|
|
17
|
+
* a `connect_error` carrying the middleware's message — "UNAUTHORIZED" for a
|
|
18
|
+
* missing, expired or revoked token — and, with reconnection off, nothing
|
|
19
|
+
* else. The socket helpers listened for "error" and "disconnect" only, so a
|
|
20
|
+
* refused connection settled neither way and the caller hung until its own
|
|
21
|
+
* timeout (production, 2026-09-23: a mass quiz generation whose access token
|
|
22
|
+
* expired mid-run left every later task waiting five minutes to report
|
|
23
|
+
* "timed out"). The refusal is now a rejection the caller can act on: 401 when
|
|
24
|
+
* the backend said so, 503 for anything else on the way in.
|
|
25
|
+
* @param error - The `connect_error` payload
|
|
26
|
+
* @returns The refusal as a SocketError
|
|
27
|
+
*/
|
|
28
|
+
export declare const handshakeRefusal: (error: {
|
|
29
|
+
message?: string;
|
|
30
|
+
} | undefined) => SocketError;
|
|
22
31
|
//# sourceMappingURL=socketError.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socketError.d.ts","sourceRoot":"","sources":["../../../src/lib/socketError.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"socketError.d.ts","sourceRoot":"","sources":["../../../src/lib/socketError.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,WAOvD,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,gBAAgB,GAC3B,OAAO;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,KACtC,WASF,CAAC"}
|
|
@@ -1,6 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isSocketError = void 0;
|
|
3
|
+
exports.handshakeRefusal = exports.isSocketError = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Error payload emitted on the `error` socket event for any long-running
|
|
6
|
+
* realtime flow (role import/create-from-template, content generation,
|
|
7
|
+
* lab session launch, etc.). Mirrors the shape produced by the backend's
|
|
8
|
+
* `errorHandling.processForSocket` helper.
|
|
9
|
+
*
|
|
10
|
+
* `details` is populated for express-validator field errors (i.e. malformed
|
|
11
|
+
* input rejected by the socket validation chain) and for any other error
|
|
12
|
+
* created via `errorHandler.create(code, message, details)`.
|
|
13
|
+
*/
|
|
14
|
+
const constants_js_1 = require("./constants.js");
|
|
4
15
|
/**
|
|
5
16
|
* Type guard to narrow an unknown rejection value to a `SocketError`.
|
|
6
17
|
* Useful in consumer `.catch` blocks where the rejection arrives as
|
|
@@ -13,4 +24,30 @@ const isSocketError = (value) => {
|
|
|
13
24
|
typeof value.message === "string");
|
|
14
25
|
};
|
|
15
26
|
exports.isSocketError = isSocketError;
|
|
27
|
+
/**
|
|
28
|
+
* The error a refused handshake becomes, in the same shape as a refusal the
|
|
29
|
+
* server sends over an established socket.
|
|
30
|
+
*
|
|
31
|
+
* socket.io answers a handshake the backend's `io.use` middleware rejects with
|
|
32
|
+
* a `connect_error` carrying the middleware's message — "UNAUTHORIZED" for a
|
|
33
|
+
* missing, expired or revoked token — and, with reconnection off, nothing
|
|
34
|
+
* else. The socket helpers listened for "error" and "disconnect" only, so a
|
|
35
|
+
* refused connection settled neither way and the caller hung until its own
|
|
36
|
+
* timeout (production, 2026-09-23: a mass quiz generation whose access token
|
|
37
|
+
* expired mid-run left every later task waiting five minutes to report
|
|
38
|
+
* "timed out"). The refusal is now a rejection the caller can act on: 401 when
|
|
39
|
+
* the backend said so, 503 for anything else on the way in.
|
|
40
|
+
* @param error - The `connect_error` payload
|
|
41
|
+
* @returns The refusal as a SocketError
|
|
42
|
+
*/
|
|
43
|
+
const handshakeRefusal = (error) => {
|
|
44
|
+
const message = error?.message || "Connection refused";
|
|
45
|
+
return {
|
|
46
|
+
code: message === "UNAUTHORIZED"
|
|
47
|
+
? constants_js_1.RESPONSE_TYPE.UNAUTHORIZED
|
|
48
|
+
: constants_js_1.RESPONSE_TYPE.SERVICE_UNAVAILABLE,
|
|
49
|
+
message,
|
|
50
|
+
};
|
|
51
|
+
};
|
|
52
|
+
exports.handshakeRefusal = handshakeRefusal;
|
|
16
53
|
//# sourceMappingURL=socketError.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socketError.js","sourceRoot":"","sources":["../../../src/lib/socketError.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"socketError.js","sourceRoot":"","sources":["../../../src/lib/socketError.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;GASG;AACH,iDAA+C;AAQ/C;;;;GAIG;AACI,MAAM,aAAa,GAAG,CAAC,KAAc,EAAwB,EAAE;IACpE,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,OAAQ,KAA4B,CAAC,IAAI,KAAK,QAAQ;QACtD,OAAQ,KAA+B,CAAC,OAAO,KAAK,QAAQ,CAC7D,CAAC;AACJ,CAAC,CAAC;AAPW,QAAA,aAAa,iBAOxB;AAEF;;;;;;;;;;;;;;;GAeG;AACI,MAAM,gBAAgB,GAAG,CAC9B,KAAuC,EAC1B,EAAE;IACf,MAAM,OAAO,GAAG,KAAK,EAAE,OAAO,IAAI,oBAAoB,CAAC;IACvD,OAAO;QACL,IAAI,EACF,OAAO,KAAK,cAAc;YACxB,CAAC,CAAC,4BAAa,CAAC,YAAY;YAC5B,CAAC,CAAC,4BAAa,CAAC,mBAAmB;QACvC,OAAO;KACR,CAAC;AACJ,CAAC,CAAC;AAXW,QAAA,gBAAgB,oBAW3B"}
|
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
import { AxiosError } from "axios";
|
|
2
2
|
export declare const client: import("axios").AxiosInstance;
|
|
3
|
+
/**
|
|
4
|
+
* Recovers a session whose access token the server has refused: exchanges the
|
|
5
|
+
* refresh cookie for a new access token and resolves with it, or resolves null
|
|
6
|
+
* (or rejects) when the session cannot be recovered.
|
|
7
|
+
* @param failedToken The access token the refused request carried
|
|
8
|
+
*/
|
|
9
|
+
export type SessionRefresher = (failedToken: string) => Promise<string | null>;
|
|
10
|
+
/**
|
|
11
|
+
* Registers the function that recovers a session after a 401 (see the response
|
|
12
|
+
* interceptor below). The client knows nothing about where the application keeps
|
|
13
|
+
* its access token, so the application supplies this; pass null to remove it.
|
|
14
|
+
* @param {SessionRefresher | null} refresher
|
|
15
|
+
*/
|
|
16
|
+
export declare const setSessionRefresher: (refresher: SessionRefresher | null) => void;
|
|
3
17
|
export declare const FORBIDDEN_MESSAGE = "You don't have permission to do this. Ask your administrator for access.";
|
|
4
18
|
/**
|
|
5
19
|
* Returns the error as a string. A permission refusal (403) reads as
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"axiosClient.d.ts","sourceRoot":"","sources":["../../../src/lib/axiosClient.ts"],"names":[],"mappings":"AAAA,OAAc,
|
|
1
|
+
{"version":3,"file":"axiosClient.d.ts","sourceRoot":"","sources":["../../../src/lib/axiosClient.ts"],"names":[],"mappings":"AAAA,OAAc,EACZ,UAAU,EAGX,MAAM,OAAO,CAAC;AAuBf,eAAO,MAAM,MAAM,+BAGjB,CAAC;AAEH;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;AAI/E;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,GAAI,WAAW,gBAAgB,GAAG,IAAI,KAAG,IAExE,CAAC;AA6JF,eAAO,MAAM,iBAAiB,6EAC8C,CAAC;AA4D7E;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,UAAU,KAAG,MAejD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,YAAY,GAAI,OAAO,UAAU,KAAG,MAIhD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAC9B,OAAO,UAAU,KAChB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAKnC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAC5B,qBAAqB,OAAO,EAC5B,OAAO,UAAU,KAChB,OAMF,CAAC"}
|
|
@@ -7,6 +7,78 @@ export const client = axios.create({
|
|
|
7
7
|
baseURL: baseUrl,
|
|
8
8
|
withCredentials: true,
|
|
9
9
|
});
|
|
10
|
+
let sessionRefresher = null;
|
|
11
|
+
/**
|
|
12
|
+
* Registers the function that recovers a session after a 401 (see the response
|
|
13
|
+
* interceptor below). The client knows nothing about where the application keeps
|
|
14
|
+
* its access token, so the application supplies this; pass null to remove it.
|
|
15
|
+
* @param {SessionRefresher | null} refresher
|
|
16
|
+
*/
|
|
17
|
+
export const setSessionRefresher = (refresher) => {
|
|
18
|
+
sessionRefresher = refresher;
|
|
19
|
+
};
|
|
20
|
+
//Refreshes started from a given refused token. Every request a page fires at once
|
|
21
|
+
//carries the same token and comes back 401 at once; they must share ONE refresh,
|
|
22
|
+
//because the refresh cookie rotates on every exchange. Kept briefly after settling
|
|
23
|
+
//so a straggler that was refused with the same token reuses the result instead of
|
|
24
|
+
//rotating the cookie again.
|
|
25
|
+
const refreshesByFailedToken = new Map();
|
|
26
|
+
const REFRESH_RESULT_TTL_MS = 30000;
|
|
27
|
+
const refreshOnce = (failedToken) => {
|
|
28
|
+
const pending = refreshesByFailedToken.get(failedToken);
|
|
29
|
+
if (pending) {
|
|
30
|
+
return pending;
|
|
31
|
+
}
|
|
32
|
+
const refresher = sessionRefresher;
|
|
33
|
+
const refresh = Promise.resolve()
|
|
34
|
+
.then(() => refresher(failedToken))
|
|
35
|
+
.catch(() => null)
|
|
36
|
+
.finally(() => {
|
|
37
|
+
const timer = setTimeout(() => refreshesByFailedToken.delete(failedToken), REFRESH_RESULT_TTL_MS);
|
|
38
|
+
//Never hold a Node process (tests, SSR) open just to forget a result
|
|
39
|
+
timer.unref?.();
|
|
40
|
+
});
|
|
41
|
+
refreshesByFailedToken.set(failedToken, refresh);
|
|
42
|
+
return refresh;
|
|
43
|
+
};
|
|
44
|
+
//Marks a request already replayed after a refresh, so a second 401 is final
|
|
45
|
+
const RETRIED_AFTER_REFRESH = "__retriedAfterRefresh";
|
|
46
|
+
//The session's own endpoints answer 401 to mean "this session is over"; replaying
|
|
47
|
+
//them after a refresh is meaningless (and refreshing from a failed refresh loops).
|
|
48
|
+
const isSessionEndpoint = (url) => typeof url === "string" && url.indexOf("/api/v1/auth/") >= 0;
|
|
49
|
+
const authorizationOf = (config) => {
|
|
50
|
+
const headers = config.headers;
|
|
51
|
+
const value = (typeof config.headers?.get === "function"
|
|
52
|
+
? config.headers.get("authorization")
|
|
53
|
+
: undefined) ??
|
|
54
|
+
headers?.authorization ??
|
|
55
|
+
headers?.Authorization;
|
|
56
|
+
return typeof value === "string" && value.length > 0 ? value : undefined;
|
|
57
|
+
};
|
|
58
|
+
//The refused token when this failure is one to recover from, undefined otherwise
|
|
59
|
+
const recoverableToken = (error, config) => {
|
|
60
|
+
if (error?.response?.status !== RESPONSE_TYPE.UNAUTHORIZED) {
|
|
61
|
+
return undefined;
|
|
62
|
+
}
|
|
63
|
+
if (!sessionRefresher || !config || config[RETRIED_AFTER_REFRESH]) {
|
|
64
|
+
return undefined;
|
|
65
|
+
}
|
|
66
|
+
return isSessionEndpoint(config.url) ? undefined : authorizationOf(config);
|
|
67
|
+
};
|
|
68
|
+
client.interceptors.response.use(undefined, async (error) => {
|
|
69
|
+
const config = error?.config;
|
|
70
|
+
const failedToken = recoverableToken(error, config);
|
|
71
|
+
if (!config || !failedToken) {
|
|
72
|
+
throw error;
|
|
73
|
+
}
|
|
74
|
+
const newToken = await refreshOnce(failedToken);
|
|
75
|
+
if (!newToken) {
|
|
76
|
+
throw error;
|
|
77
|
+
}
|
|
78
|
+
config[RETRIED_AFTER_REFRESH] = true;
|
|
79
|
+
config.headers.set("authorization", newToken);
|
|
80
|
+
return client.request(config);
|
|
81
|
+
});
|
|
10
82
|
//Fields whose value must never be echoed back to the screen. A validation error on
|
|
11
83
|
//one of these used to render the value the user typed — so a rejected password was
|
|
12
84
|
//printed in the error message under it.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"axiosClient.js","sourceRoot":"","sources":["../../../src/lib/axiosClient.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"axiosClient.js","sourceRoot":"","sources":["../../../src/lib/axiosClient.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/lib/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export * as actionNotifications from "./actionNotifications.js";
|
|
2
|
-
export { client, errorToString, getErrorInformation, getErrorType, shouldReturnError, } from "./axiosClient.js";
|
|
2
|
+
export { client, errorToString, getErrorInformation, getErrorType, setSessionRefresher, shouldReturnError, } from "./axiosClient.js";
|
|
3
|
+
export type { SessionRefresher } from "./axiosClient.js";
|
|
3
4
|
export * as aiAssistant from "./aiAssistant.js";
|
|
4
5
|
export * as artifactCatalog from "./artifactCatalog.js";
|
|
5
6
|
export * as billingProfiles from "./billingProfiles.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/lib/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export * as actionNotifications from "./actionNotifications.js";
|
|
2
|
-
export { client, errorToString, getErrorInformation, getErrorType, shouldReturnError, } from "./axiosClient.js";
|
|
2
|
+
export { client, errorToString, getErrorInformation, getErrorType, setSessionRefresher, shouldReturnError, } from "./axiosClient.js";
|
|
3
3
|
export * as aiAssistant from "./aiAssistant.js";
|
|
4
4
|
export * as artifactCatalog from "./artifactCatalog.js";
|
|
5
5
|
export * as billingProfiles from "./billingProfiles.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,mBAAmB,MAAM,0BAA0B,CAAC;AAChE,OAAO,EACL,MAAM,EACN,aAAa,EACb,mBAAmB,EACnB,YAAY,EACZ,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contentGenerator.d.ts","sourceRoot":"","sources":["../../../../src/lib/integrations/contentGenerator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"contentGenerator.d.ts","sourceRoot":"","sources":["../../../../src/lib/integrations/contentGenerator.ts"],"names":[],"mappings":"AAuBA,UAAU,YAAY;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,eAAe,GAC1B,MAAM,MAAM,EACZ,aAAa,MAAM,EACnB,eAAe,MAAM,EACrB,OAAO,MAAM,EACb,mBAAkB,CAAC,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAC,GAAG,IAAW,EAClE,YAAW,MAAM,GAAG,IAAW,KAC9B,OAAO,CAAC,MAAM,CAiDhB,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,GAC/B,IAAI,MAAM,EACV,aAAa,MAAM,EACnB,MAAM,MAAM,EACZ,aAAa,MAAM,EACnB,UAAU,MAAM,EAChB,OAAO,MAAM,KACZ,OAAO,CAAC,MAAM,CAwBhB,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { client } from "../axiosClient.js";
|
|
2
2
|
import { getBaseUrl } from "../utils.js";
|
|
3
3
|
import { io } from "socket.io-client";
|
|
4
|
+
import { handshakeRefusal } from "../socketError.js";
|
|
4
5
|
/**
|
|
5
6
|
* Generate content
|
|
6
7
|
* @param {Array<String>} data
|
|
@@ -48,6 +49,11 @@ export const generateContent = (data, contentType, integrationId, token, onProgr
|
|
|
48
49
|
socket.disconnect();
|
|
49
50
|
resolve(data);
|
|
50
51
|
});
|
|
52
|
+
// A refused handshake settles nothing on its own — see handshakeRefusal.
|
|
53
|
+
socket.on("connect_error", (err) => {
|
|
54
|
+
socket.disconnect();
|
|
55
|
+
reject(handshakeRefusal(err));
|
|
56
|
+
});
|
|
51
57
|
socket.on("error", (err) => {
|
|
52
58
|
socket.disconnect();
|
|
53
59
|
reject(err);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contentGenerator.js","sourceRoot":"","sources":["../../../../src/lib/integrations/contentGenerator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"contentGenerator.js","sourceRoot":"","sources":["../../../../src/lib/integrations/contentGenerator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"labSessions.d.ts","sourceRoot":"","sources":["../../../src/lib/labSessions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"labSessions.d.ts","sourceRoot":"","sources":["../../../src/lib/labSessions.ts"],"names":[],"mappings":"AAYA,UAAU,YAAY;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAC3B,MAAM,MAAM,EACZ,OAAO,MAAM,KACZ,OAAO,CAAC,MAAM,CAehB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAC3B,IAAI,MAAM,EACV,OAAO,MAAM,KACZ,OAAO,CAAC,MAAM,CAgBhB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,+BAA+B,GAC1C,aAAa,MAAM,EACnB,OAAO,MAAM,KACZ,OAAO,CAAC,MAAM,CAchB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,GACjC,IAAI,MAAM,EACV,OAAO,MAAM,KACZ,OAAO,CAAC,MAAM,CAahB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,GAAI,OAAO,MAAM,KAAG,OAAO,CAAC,MAAM,CAanE,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAC3B,IAAI,MAAM,EACV,MAAM,SAAS,GAAG,SAAS,YAAY,EACvC,OAAO,MAAM,EACb,mBAAkB,CAAC,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAC,GAAG,IAAW,KACjE,OAAO,CAAC,MAAM,CA6ChB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAC3B,IAAI,MAAM,EACV,MAAM,MAAM,EACZ,OAAO,MAAM,KACZ,OAAO,CAAC,MAAM,CAehB,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { client } from "./axiosClient.js";
|
|
2
2
|
import { getBaseUrl } from "./utils.js";
|
|
3
3
|
import { io } from "socket.io-client";
|
|
4
|
+
import { handshakeRefusal } from "./socketError.js";
|
|
4
5
|
/**
|
|
5
6
|
* Create a lab session
|
|
6
7
|
* @param {object} data The lab session data
|
|
@@ -135,6 +136,11 @@ export const launchLabSession = (id, mode = "default", token, onProgressStatus =
|
|
|
135
136
|
socket.disconnect();
|
|
136
137
|
resolve(data);
|
|
137
138
|
});
|
|
139
|
+
// A refused handshake settles nothing on its own — see handshakeRefusal.
|
|
140
|
+
socket.on("connect_error", (err) => {
|
|
141
|
+
socket.disconnect();
|
|
142
|
+
reject(handshakeRefusal(err));
|
|
143
|
+
});
|
|
138
144
|
socket.on("error", (err) => {
|
|
139
145
|
socket.disconnect();
|
|
140
146
|
reject(err);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"labSessions.js","sourceRoot":"","sources":["../../../src/lib/labSessions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"labSessions.js","sourceRoot":"","sources":["../../../src/lib/labSessions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Error payload emitted on the `error` socket event for any long-running
|
|
3
|
-
* realtime flow (role import/create-from-template, content generation,
|
|
4
|
-
* lab session launch, etc.). Mirrors the shape produced by the backend's
|
|
5
|
-
* `errorHandling.processForSocket` helper.
|
|
6
|
-
*
|
|
7
|
-
* `details` is populated for express-validator field errors (i.e. malformed
|
|
8
|
-
* input rejected by the socket validation chain) and for any other error
|
|
9
|
-
* created via `errorHandler.create(code, message, details)`.
|
|
10
|
-
*/
|
|
11
1
|
export interface SocketError {
|
|
12
2
|
code: number;
|
|
13
3
|
message: string;
|
|
@@ -19,4 +9,23 @@ export interface SocketError {
|
|
|
19
9
|
* `unknown`/`any`.
|
|
20
10
|
*/
|
|
21
11
|
export declare const isSocketError: (value: unknown) => value is SocketError;
|
|
12
|
+
/**
|
|
13
|
+
* The error a refused handshake becomes, in the same shape as a refusal the
|
|
14
|
+
* server sends over an established socket.
|
|
15
|
+
*
|
|
16
|
+
* socket.io answers a handshake the backend's `io.use` middleware rejects with
|
|
17
|
+
* a `connect_error` carrying the middleware's message — "UNAUTHORIZED" for a
|
|
18
|
+
* missing, expired or revoked token — and, with reconnection off, nothing
|
|
19
|
+
* else. The socket helpers listened for "error" and "disconnect" only, so a
|
|
20
|
+
* refused connection settled neither way and the caller hung until its own
|
|
21
|
+
* timeout (production, 2026-09-23: a mass quiz generation whose access token
|
|
22
|
+
* expired mid-run left every later task waiting five minutes to report
|
|
23
|
+
* "timed out"). The refusal is now a rejection the caller can act on: 401 when
|
|
24
|
+
* the backend said so, 503 for anything else on the way in.
|
|
25
|
+
* @param error - The `connect_error` payload
|
|
26
|
+
* @returns The refusal as a SocketError
|
|
27
|
+
*/
|
|
28
|
+
export declare const handshakeRefusal: (error: {
|
|
29
|
+
message?: string;
|
|
30
|
+
} | undefined) => SocketError;
|
|
22
31
|
//# sourceMappingURL=socketError.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socketError.d.ts","sourceRoot":"","sources":["../../../src/lib/socketError.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"socketError.d.ts","sourceRoot":"","sources":["../../../src/lib/socketError.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,WAOvD,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,gBAAgB,GAC3B,OAAO;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,KACtC,WASF,CAAC"}
|
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error payload emitted on the `error` socket event for any long-running
|
|
3
|
+
* realtime flow (role import/create-from-template, content generation,
|
|
4
|
+
* lab session launch, etc.). Mirrors the shape produced by the backend's
|
|
5
|
+
* `errorHandling.processForSocket` helper.
|
|
6
|
+
*
|
|
7
|
+
* `details` is populated for express-validator field errors (i.e. malformed
|
|
8
|
+
* input rejected by the socket validation chain) and for any other error
|
|
9
|
+
* created via `errorHandler.create(code, message, details)`.
|
|
10
|
+
*/
|
|
11
|
+
import { RESPONSE_TYPE } from "./constants.js";
|
|
1
12
|
/**
|
|
2
13
|
* Type guard to narrow an unknown rejection value to a `SocketError`.
|
|
3
14
|
* Useful in consumer `.catch` blocks where the rejection arrives as
|
|
@@ -9,4 +20,29 @@ export const isSocketError = (value) => {
|
|
|
9
20
|
typeof value.code === "number" &&
|
|
10
21
|
typeof value.message === "string");
|
|
11
22
|
};
|
|
23
|
+
/**
|
|
24
|
+
* The error a refused handshake becomes, in the same shape as a refusal the
|
|
25
|
+
* server sends over an established socket.
|
|
26
|
+
*
|
|
27
|
+
* socket.io answers a handshake the backend's `io.use` middleware rejects with
|
|
28
|
+
* a `connect_error` carrying the middleware's message — "UNAUTHORIZED" for a
|
|
29
|
+
* missing, expired or revoked token — and, with reconnection off, nothing
|
|
30
|
+
* else. The socket helpers listened for "error" and "disconnect" only, so a
|
|
31
|
+
* refused connection settled neither way and the caller hung until its own
|
|
32
|
+
* timeout (production, 2026-09-23: a mass quiz generation whose access token
|
|
33
|
+
* expired mid-run left every later task waiting five minutes to report
|
|
34
|
+
* "timed out"). The refusal is now a rejection the caller can act on: 401 when
|
|
35
|
+
* the backend said so, 503 for anything else on the way in.
|
|
36
|
+
* @param error - The `connect_error` payload
|
|
37
|
+
* @returns The refusal as a SocketError
|
|
38
|
+
*/
|
|
39
|
+
export const handshakeRefusal = (error) => {
|
|
40
|
+
const message = error?.message || "Connection refused";
|
|
41
|
+
return {
|
|
42
|
+
code: message === "UNAUTHORIZED"
|
|
43
|
+
? RESPONSE_TYPE.UNAUTHORIZED
|
|
44
|
+
: RESPONSE_TYPE.SERVICE_UNAVAILABLE,
|
|
45
|
+
message,
|
|
46
|
+
};
|
|
47
|
+
};
|
|
12
48
|
//# sourceMappingURL=socketError.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socketError.js","sourceRoot":"","sources":["../../../src/lib/socketError.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"socketError.js","sourceRoot":"","sources":["../../../src/lib/socketError.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAQ/C;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAc,EAAwB,EAAE;IACpE,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,OAAQ,KAA4B,CAAC,IAAI,KAAK,QAAQ;QACtD,OAAQ,KAA+B,CAAC,OAAO,KAAK,QAAQ,CAC7D,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,KAAuC,EAC1B,EAAE;IACf,MAAM,OAAO,GAAG,KAAK,EAAE,OAAO,IAAI,oBAAoB,CAAC;IACvD,OAAO;QACL,IAAI,EACF,OAAO,KAAK,cAAc;YACxB,CAAC,CAAC,aAAa,CAAC,YAAY;YAC5B,CAAC,CAAC,aAAa,CAAC,mBAAmB;QACvC,OAAO;KACR,CAAC;AACJ,CAAC,CAAC"}
|