@overmap-ai/core 1.0.49-fix-error-messaging.3 → 1.0.49-update-presigned-url-payload.0
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/README.md +4 -4
- package/dist/overmap-core.js +74 -95
- package/dist/overmap-core.js.map +1 -1
- package/dist/overmap-core.umd.cjs +74 -95
- package/dist/overmap-core.umd.cjs.map +1 -1
- package/dist/sdk/errors.d.ts +3 -6
- package/dist/sdk/services/CategoryService.d.ts +2 -2
- package/dist/sdk/services/ComponentStageCompletionService.d.ts +2 -2
- package/dist/sdk/services/WorkspaceService.d.ts +2 -2
- package/dist/store/store.d.ts +1 -1
- package/package.json +152 -152
|
@@ -208,54 +208,18 @@ var __publicField = (obj, key, value) => {
|
|
|
208
208
|
this.requestAttemptCounter[uuid2] = (this.requestAttemptCounter[uuid2] || 0) + 1;
|
|
209
209
|
}
|
|
210
210
|
}
|
|
211
|
-
function extractErrorMessage(errorRes, err) {
|
|
212
|
-
if (errorRes == null ? void 0 : errorRes.body) {
|
|
213
|
-
if (typeof errorRes.body === "object") {
|
|
214
|
-
if (typeof errorRes.body.error === "string")
|
|
215
|
-
return errorRes.body.error;
|
|
216
|
-
if (typeof errorRes.body.message === "string")
|
|
217
|
-
return errorRes.body.message;
|
|
218
|
-
try {
|
|
219
|
-
return Object.entries(errorRes.body).map(([key, value]) => {
|
|
220
|
-
if (typeof value === "string") {
|
|
221
|
-
if (key === "non_field_errors")
|
|
222
|
-
return value;
|
|
223
|
-
return `${key}: ${value}`;
|
|
224
|
-
}
|
|
225
|
-
if (Array.isArray(value)) {
|
|
226
|
-
if (key === "non_field_errors")
|
|
227
|
-
return value.join("\n");
|
|
228
|
-
return value.map((v) => `${key}: ${v}`).join("\n");
|
|
229
|
-
}
|
|
230
|
-
return `${key}: ${JSON.stringify(value)}`;
|
|
231
|
-
}).join("\n");
|
|
232
|
-
} catch (e) {
|
|
233
|
-
console.error("Failed to extract error message from response body", e);
|
|
234
|
-
}
|
|
235
|
-
} else if (typeof errorRes.body === "string")
|
|
236
|
-
return errorRes.body;
|
|
237
|
-
} else if (errorRes == null ? void 0 : errorRes.text) {
|
|
238
|
-
return errorRes.text;
|
|
239
|
-
} else if (err instanceof Error) {
|
|
240
|
-
return err.message;
|
|
241
|
-
}
|
|
242
|
-
return void 0;
|
|
243
|
-
}
|
|
244
211
|
class APIError extends Error {
|
|
245
|
-
constructor(options) {
|
|
246
|
-
|
|
247
|
-
super(unknownMessage);
|
|
212
|
+
constructor(message, response, options) {
|
|
213
|
+
super(response == null ? void 0 : response.text);
|
|
248
214
|
// NOTE: Needs to conform to NetworkError in @redux-offline/redux-offline, which has `status` and `response`.
|
|
249
215
|
__publicField(this, "status");
|
|
250
|
-
__publicField(this, "response");
|
|
251
216
|
__publicField(this, "message");
|
|
217
|
+
__publicField(this, "response");
|
|
252
218
|
__publicField(this, "options");
|
|
253
|
-
|
|
254
|
-
this.message = options.message ?? extractErrorMessage(response, innerError) ?? unknownMessage;
|
|
219
|
+
this.message = message;
|
|
255
220
|
this.status = (response == null ? void 0 : response.status) ?? 0;
|
|
256
221
|
this.response = response;
|
|
257
|
-
options
|
|
258
|
-
this.options = options;
|
|
222
|
+
this.options = options ?? { discard: false };
|
|
259
223
|
}
|
|
260
224
|
}
|
|
261
225
|
class DeferredPromise {
|
|
@@ -4204,6 +4168,35 @@ var __publicField = (obj, key, value) => {
|
|
|
4204
4168
|
}
|
|
4205
4169
|
return void 0;
|
|
4206
4170
|
}
|
|
4171
|
+
function extractErrorMessage(errorRes, err) {
|
|
4172
|
+
if (errorRes == null ? void 0 : errorRes.body) {
|
|
4173
|
+
if (typeof errorRes.body === "object") {
|
|
4174
|
+
if (typeof errorRes.body.error === "string")
|
|
4175
|
+
return errorRes.body.error;
|
|
4176
|
+
if (typeof errorRes.body.message === "string")
|
|
4177
|
+
return errorRes.body.message;
|
|
4178
|
+
try {
|
|
4179
|
+
return Object.entries(errorRes.body).map(([key, value]) => {
|
|
4180
|
+
if (typeof value === "string") {
|
|
4181
|
+
return `${key}: ${value}`;
|
|
4182
|
+
}
|
|
4183
|
+
if (Array.isArray(value)) {
|
|
4184
|
+
return value.map((v) => `${key}: ${v}`).join("\n");
|
|
4185
|
+
}
|
|
4186
|
+
return `${key}: ${JSON.stringify(value)}`;
|
|
4187
|
+
}).join("\n");
|
|
4188
|
+
} catch (e) {
|
|
4189
|
+
console.error("Failed to extract error message from response body", e);
|
|
4190
|
+
}
|
|
4191
|
+
} else if (typeof errorRes.body === "string")
|
|
4192
|
+
return errorRes.body;
|
|
4193
|
+
} else if (errorRes == null ? void 0 : errorRes.text) {
|
|
4194
|
+
return errorRes.text;
|
|
4195
|
+
} else if (err instanceof Error) {
|
|
4196
|
+
return err.message;
|
|
4197
|
+
}
|
|
4198
|
+
return void 0;
|
|
4199
|
+
}
|
|
4207
4200
|
async function performRequest(action, client) {
|
|
4208
4201
|
async function checkToken() {
|
|
4209
4202
|
if (client.auth.tokenIsExpiringSoon()) {
|
|
@@ -4306,29 +4299,19 @@ var __publicField = (obj, key, value) => {
|
|
|
4306
4299
|
console.warn("No signed-in user to sign out.");
|
|
4307
4300
|
}
|
|
4308
4301
|
await client.auth.logout();
|
|
4309
|
-
throw new APIError({
|
|
4310
|
-
|
|
4311
|
-
response: errorResponse,
|
|
4312
|
-
discard: true,
|
|
4313
|
-
innerError: error2
|
|
4314
|
-
});
|
|
4315
|
-
}
|
|
4316
|
-
if (state.authReducer.isLoggedIn) {
|
|
4317
|
-
console.debug("Forbidden; renewing tokens and retrying.");
|
|
4318
|
-
await client.auth.renewTokens();
|
|
4319
|
-
console.debug("Successfully renewed tokens; retrying request.");
|
|
4320
|
-
return requestToSend.query(queryParams);
|
|
4321
|
-
} else {
|
|
4322
|
-
console.debug("Forbidden; user is not logged in.");
|
|
4323
|
-
throw new APIError({
|
|
4324
|
-
message: "Incorrect username or password.",
|
|
4325
|
-
response: errorResponse,
|
|
4326
|
-
discard: true,
|
|
4327
|
-
innerError: error2
|
|
4302
|
+
throw new APIError("You have been signed out due to inactivity.", errorResponse, {
|
|
4303
|
+
discard: true
|
|
4328
4304
|
});
|
|
4329
4305
|
}
|
|
4306
|
+
console.debug("Forbidden; renewing tokens and retrying.");
|
|
4307
|
+
await client.auth.renewTokens();
|
|
4308
|
+
console.debug("Successfully renewed tokens; retrying request.");
|
|
4309
|
+
return requestToSend.query(queryParams);
|
|
4330
4310
|
}
|
|
4331
|
-
|
|
4311
|
+
const apiErrorMessage = extractErrorMessage(errorResponse, error2) || "An unexpected error occurred.";
|
|
4312
|
+
throw new APIError(apiErrorMessage, errorResponse, {
|
|
4313
|
+
discard: discardStatuses.includes(status)
|
|
4314
|
+
});
|
|
4332
4315
|
}
|
|
4333
4316
|
}
|
|
4334
4317
|
class MiddlewareChainerPrivate {
|
|
@@ -4539,29 +4522,18 @@ var __publicField = (obj, key, value) => {
|
|
|
4539
4522
|
if (response) {
|
|
4540
4523
|
promise.resolve(response.body);
|
|
4541
4524
|
} else {
|
|
4542
|
-
const error2 = new APIError(
|
|
4543
|
-
|
|
4525
|
+
const error2 = new APIError(
|
|
4526
|
+
"Could not get a response from the server.",
|
|
4544
4527
|
response,
|
|
4545
|
-
|
|
4546
|
-
|
|
4528
|
+
{
|
|
4529
|
+
discard: true
|
|
4530
|
+
}
|
|
4531
|
+
);
|
|
4547
4532
|
promise.reject(error2);
|
|
4548
4533
|
}
|
|
4549
4534
|
};
|
|
4550
4535
|
const errorHandler = (error2) => {
|
|
4551
|
-
|
|
4552
|
-
error2.options.discard = true;
|
|
4553
|
-
} else {
|
|
4554
|
-
console.error(
|
|
4555
|
-
"Received an unexpected error while processing a request:",
|
|
4556
|
-
error2,
|
|
4557
|
-
"\nConverting error to APIError and discarding."
|
|
4558
|
-
);
|
|
4559
|
-
error2 = new APIError({
|
|
4560
|
-
message: "An error occurred while processing the request.",
|
|
4561
|
-
innerError: error2,
|
|
4562
|
-
discard: true
|
|
4563
|
-
});
|
|
4564
|
-
}
|
|
4536
|
+
error2.options.discard = true;
|
|
4565
4537
|
promise.reject(error2);
|
|
4566
4538
|
};
|
|
4567
4539
|
innerPromise.then(successOrUndefinedHandler, errorHandler);
|
|
@@ -5141,23 +5113,24 @@ var __publicField = (obj, key, value) => {
|
|
|
5141
5113
|
*/
|
|
5142
5114
|
__publicField(this, "_getTokenPair", (credentials, logoutOnFailure = true) => {
|
|
5143
5115
|
const uuid$1 = uuid.v4();
|
|
5144
|
-
|
|
5145
|
-
|
|
5146
|
-
|
|
5147
|
-
|
|
5148
|
-
|
|
5149
|
-
|
|
5150
|
-
|
|
5151
|
-
|
|
5152
|
-
|
|
5153
|
-
|
|
5154
|
-
|
|
5116
|
+
try {
|
|
5117
|
+
const responsePromise = this.enqueueRequest({
|
|
5118
|
+
uuid: uuid$1,
|
|
5119
|
+
description: "Get token pair",
|
|
5120
|
+
method: HttpMethod.POST,
|
|
5121
|
+
url: "/api/token/",
|
|
5122
|
+
payload: credentials,
|
|
5123
|
+
isAuthNeeded: false,
|
|
5124
|
+
blockers: [],
|
|
5125
|
+
blocks: []
|
|
5126
|
+
});
|
|
5127
|
+
return [responsePromise.then(parseTokens), uuid$1];
|
|
5128
|
+
} catch (e) {
|
|
5155
5129
|
if (logoutOnFailure) {
|
|
5156
5130
|
void this.logout().then();
|
|
5157
5131
|
}
|
|
5158
5132
|
throw e;
|
|
5159
|
-
}
|
|
5160
|
-
return [responsePromise, uuid$1];
|
|
5133
|
+
}
|
|
5161
5134
|
});
|
|
5162
5135
|
/**
|
|
5163
5136
|
* Takes refresh token and gets a new token pair
|
|
@@ -5218,7 +5191,7 @@ var __publicField = (obj, key, value) => {
|
|
|
5218
5191
|
timedOut = true;
|
|
5219
5192
|
store.dispatch(markForDeletion(uuid$1));
|
|
5220
5193
|
store.dispatch(markForDeletion(initialDataUuid));
|
|
5221
|
-
reject(new
|
|
5194
|
+
reject(new Error(`Request timed out after ${timeout} seconds`));
|
|
5222
5195
|
}, timeout * 1e3);
|
|
5223
5196
|
});
|
|
5224
5197
|
const successPromise = promise.then((tokens) => {
|
|
@@ -7187,7 +7160,8 @@ var __publicField = (obj, key, value) => {
|
|
|
7187
7160
|
blockers: [],
|
|
7188
7161
|
blocks: []
|
|
7189
7162
|
});
|
|
7190
|
-
|
|
7163
|
+
const organizationAccesses = result;
|
|
7164
|
+
store.dispatch(setOrganizationAccesses(organizationAccesses));
|
|
7191
7165
|
}
|
|
7192
7166
|
}
|
|
7193
7167
|
const cachedRequestPromises = {};
|
|
@@ -7216,7 +7190,12 @@ var __publicField = (obj, key, value) => {
|
|
|
7216
7190
|
description: "Get S3 URL",
|
|
7217
7191
|
method: HttpMethod.GET,
|
|
7218
7192
|
url: "/authentication/files/presigned-upload-url/",
|
|
7219
|
-
queryParams: {
|
|
7193
|
+
queryParams: {
|
|
7194
|
+
sha1: await hashFile(file),
|
|
7195
|
+
file_type: file.type,
|
|
7196
|
+
extension: file.name.split(".").pop(),
|
|
7197
|
+
size: file.size.toString()
|
|
7198
|
+
},
|
|
7220
7199
|
blockers: [],
|
|
7221
7200
|
blocks: [`s3-${key}`]
|
|
7222
7201
|
});
|