@overmap-ai/core 1.0.48-tanstack-table.1 → 1.0.49-fix-error-messaging.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 +99 -58
- package/dist/overmap-core.js.map +1 -1
- package/dist/overmap-core.umd.cjs +99 -58
- package/dist/overmap-core.umd.cjs.map +1 -1
- package/dist/sdk/errors.d.ts +6 -3
- 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/slices/componentSlice.d.ts +1 -0
- package/dist/store/slices/componentStageSlice.d.ts +1 -0
- package/dist/store/slices/userFormSlice.d.ts +2 -0
- package/dist/typings/models/base.d.ts +5 -0
- package/dist/typings/models/components.d.ts +2 -3
- package/package.json +152 -152
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# @overmap-ai/core
|
|
2
|
-
|
|
3
|
-
The `core` package contains core functionality for the Overmap platform. It is a peer dependency of all other overmap
|
|
4
|
-
packages.
|
|
1
|
+
# @overmap-ai/core
|
|
2
|
+
|
|
3
|
+
The `core` package contains core functionality for the Overmap platform. It is a peer dependency of all other overmap
|
|
4
|
+
packages.
|
package/dist/overmap-core.js
CHANGED
|
@@ -217,18 +217,54 @@ class OutboxCoordinator {
|
|
|
217
217
|
this.requestAttemptCounter[uuid] = (this.requestAttemptCounter[uuid] || 0) + 1;
|
|
218
218
|
}
|
|
219
219
|
}
|
|
220
|
+
function extractErrorMessage(errorRes, err) {
|
|
221
|
+
if (errorRes == null ? void 0 : errorRes.body) {
|
|
222
|
+
if (typeof errorRes.body === "object") {
|
|
223
|
+
if (typeof errorRes.body.error === "string")
|
|
224
|
+
return errorRes.body.error;
|
|
225
|
+
if (typeof errorRes.body.message === "string")
|
|
226
|
+
return errorRes.body.message;
|
|
227
|
+
try {
|
|
228
|
+
return Object.entries(errorRes.body).map(([key, value]) => {
|
|
229
|
+
if (typeof value === "string") {
|
|
230
|
+
if (key === "non_field_errors")
|
|
231
|
+
return value;
|
|
232
|
+
return `${key}: ${value}`;
|
|
233
|
+
}
|
|
234
|
+
if (Array.isArray(value)) {
|
|
235
|
+
if (key === "non_field_errors")
|
|
236
|
+
return value.join("\n");
|
|
237
|
+
return value.map((v) => `${key}: ${v}`).join("\n");
|
|
238
|
+
}
|
|
239
|
+
return `${key}: ${JSON.stringify(value)}`;
|
|
240
|
+
}).join("\n");
|
|
241
|
+
} catch (e) {
|
|
242
|
+
console.error("Failed to extract error message from response body", e);
|
|
243
|
+
}
|
|
244
|
+
} else if (typeof errorRes.body === "string")
|
|
245
|
+
return errorRes.body;
|
|
246
|
+
} else if (errorRes == null ? void 0 : errorRes.text) {
|
|
247
|
+
return errorRes.text;
|
|
248
|
+
} else if (err instanceof Error) {
|
|
249
|
+
return err.message;
|
|
250
|
+
}
|
|
251
|
+
return void 0;
|
|
252
|
+
}
|
|
220
253
|
class APIError extends Error {
|
|
221
|
-
constructor(
|
|
222
|
-
|
|
254
|
+
constructor(options) {
|
|
255
|
+
const unknownMessage = "An unknown error occurred";
|
|
256
|
+
super(unknownMessage);
|
|
223
257
|
// NOTE: Needs to conform to NetworkError in @redux-offline/redux-offline, which has `status` and `response`.
|
|
224
258
|
__publicField(this, "status");
|
|
225
|
-
__publicField(this, "message");
|
|
226
259
|
__publicField(this, "response");
|
|
260
|
+
__publicField(this, "message");
|
|
227
261
|
__publicField(this, "options");
|
|
228
|
-
|
|
262
|
+
const { response, innerError } = options;
|
|
263
|
+
this.message = options.message ?? extractErrorMessage(response, innerError) ?? unknownMessage;
|
|
229
264
|
this.status = (response == null ? void 0 : response.status) ?? 0;
|
|
230
265
|
this.response = response;
|
|
231
|
-
|
|
266
|
+
options.discard = options.discard ?? false;
|
|
267
|
+
this.options = options;
|
|
232
268
|
}
|
|
233
269
|
}
|
|
234
270
|
class DeferredPromise {
|
|
@@ -1610,6 +1646,7 @@ const selectComponents = (state) => {
|
|
|
1610
1646
|
}
|
|
1611
1647
|
return prevComponents;
|
|
1612
1648
|
};
|
|
1649
|
+
const selectComponentsMapping = (state) => state.componentReducer.components;
|
|
1613
1650
|
const selectComponentsFromComponentType = (componentTypeId) => (state) => {
|
|
1614
1651
|
if (!componentTypeId)
|
|
1615
1652
|
return [];
|
|
@@ -1640,16 +1677,14 @@ const selectComponentTypeFromComponents = (state) => {
|
|
|
1640
1677
|
}
|
|
1641
1678
|
return ret;
|
|
1642
1679
|
};
|
|
1643
|
-
const selectComponentsByType = (
|
|
1644
|
-
|
|
1645
|
-
|
|
1646
|
-
|
|
1647
|
-
|
|
1648
|
-
componentsOfType.push(component);
|
|
1680
|
+
const selectComponentsByType = restructureCreateSelectorWithArgs(
|
|
1681
|
+
createSelector(
|
|
1682
|
+
[selectComponents, (_state, componentTypeId) => componentTypeId],
|
|
1683
|
+
(components, componentTypeId) => {
|
|
1684
|
+
return components.filter((component) => component.component_type === componentTypeId);
|
|
1649
1685
|
}
|
|
1650
|
-
|
|
1651
|
-
|
|
1652
|
-
};
|
|
1686
|
+
)
|
|
1687
|
+
);
|
|
1653
1688
|
const selectNumberOfComponentsOfComponentType = (componentTypeId) => (state) => {
|
|
1654
1689
|
var _a2;
|
|
1655
1690
|
if (!componentTypeId)
|
|
@@ -1839,6 +1874,20 @@ const selectStagesFromComponentTypeIds = restructureCreateSelectorWithArgs(
|
|
|
1839
1874
|
}
|
|
1840
1875
|
)
|
|
1841
1876
|
);
|
|
1877
|
+
const selectComponentTypeStagesMapping = restructureCreateSelectorWithArgs(
|
|
1878
|
+
createSelector(
|
|
1879
|
+
[selectStageMapping, (_state, componentTypeId) => componentTypeId],
|
|
1880
|
+
(stagesMapping, componentTypeId) => {
|
|
1881
|
+
const componentTypeStagesMapping = {};
|
|
1882
|
+
for (const [stageId, stage] of Object.entries(stagesMapping)) {
|
|
1883
|
+
if (stage.component_type === componentTypeId) {
|
|
1884
|
+
componentTypeStagesMapping[stageId] = stage;
|
|
1885
|
+
}
|
|
1886
|
+
}
|
|
1887
|
+
return componentTypeStagesMapping;
|
|
1888
|
+
}
|
|
1889
|
+
)
|
|
1890
|
+
);
|
|
1842
1891
|
const selectStagesFromComponentType = restructureCreateSelectorWithArgs(
|
|
1843
1892
|
createSelector(
|
|
1844
1893
|
[selectStages, (_state, componentTypeId) => componentTypeId],
|
|
@@ -3651,6 +3700,9 @@ const selectUserForm = (formId2) => (state) => {
|
|
|
3651
3700
|
return state.userFormReducer.userForms[formId2];
|
|
3652
3701
|
};
|
|
3653
3702
|
const selectSubmissionMapping = (state) => state.userFormReducer.submissions;
|
|
3703
|
+
const selectUserFormSubmission = (submissionId) => (state) => {
|
|
3704
|
+
return state.userFormReducer.submissions[submissionId];
|
|
3705
|
+
};
|
|
3654
3706
|
const selectSubmissions = createSelector([selectSubmissionMapping], (submissions) => Object.values(submissions));
|
|
3655
3707
|
const selectRevisionMapping = (state) => state.userFormReducer.revisions;
|
|
3656
3708
|
const selectRevisions = createSelector([selectRevisionMapping], (revisions) => Object.values(revisions));
|
|
@@ -3692,6 +3744,23 @@ const selectSubmissionsForComponent = restructureCreateSelectorWithArgs(
|
|
|
3692
3744
|
}
|
|
3693
3745
|
)
|
|
3694
3746
|
);
|
|
3747
|
+
const selectComponentSubmissionMapping = createSelector(
|
|
3748
|
+
[selectSubmissionMapping, selectComponentsMapping],
|
|
3749
|
+
(submissions, components) => {
|
|
3750
|
+
var _a2;
|
|
3751
|
+
const componentSubmissionMapping = {};
|
|
3752
|
+
for (const componentId in components) {
|
|
3753
|
+
componentSubmissionMapping[componentId] = [];
|
|
3754
|
+
}
|
|
3755
|
+
for (const submissionId in submissions) {
|
|
3756
|
+
const submission = submissions[submissionId];
|
|
3757
|
+
if (submission.component) {
|
|
3758
|
+
(_a2 = componentSubmissionMapping[submission.component]) == null ? void 0 : _a2.push(submission);
|
|
3759
|
+
}
|
|
3760
|
+
}
|
|
3761
|
+
return componentSubmissionMapping;
|
|
3762
|
+
}
|
|
3763
|
+
);
|
|
3695
3764
|
const selectUserFormMapping = (state) => {
|
|
3696
3765
|
return state.userFormReducer.userForms;
|
|
3697
3766
|
};
|
|
@@ -4144,35 +4213,6 @@ function extractResponseFromError(error2) {
|
|
|
4144
4213
|
}
|
|
4145
4214
|
return void 0;
|
|
4146
4215
|
}
|
|
4147
|
-
function extractErrorMessage(errorRes, err) {
|
|
4148
|
-
if (errorRes == null ? void 0 : errorRes.body) {
|
|
4149
|
-
if (typeof errorRes.body === "object") {
|
|
4150
|
-
if (typeof errorRes.body.error === "string")
|
|
4151
|
-
return errorRes.body.error;
|
|
4152
|
-
if (typeof errorRes.body.message === "string")
|
|
4153
|
-
return errorRes.body.message;
|
|
4154
|
-
try {
|
|
4155
|
-
return Object.entries(errorRes.body).map(([key, value]) => {
|
|
4156
|
-
if (typeof value === "string") {
|
|
4157
|
-
return `${key}: ${value}`;
|
|
4158
|
-
}
|
|
4159
|
-
if (Array.isArray(value)) {
|
|
4160
|
-
return value.map((v) => `${key}: ${v}`).join("\n");
|
|
4161
|
-
}
|
|
4162
|
-
return `${key}: ${JSON.stringify(value)}`;
|
|
4163
|
-
}).join("\n");
|
|
4164
|
-
} catch (e) {
|
|
4165
|
-
console.error("Failed to extract error message from response body", e);
|
|
4166
|
-
}
|
|
4167
|
-
} else if (typeof errorRes.body === "string")
|
|
4168
|
-
return errorRes.body;
|
|
4169
|
-
} else if (errorRes == null ? void 0 : errorRes.text) {
|
|
4170
|
-
return errorRes.text;
|
|
4171
|
-
} else if (err instanceof Error) {
|
|
4172
|
-
return err.message;
|
|
4173
|
-
}
|
|
4174
|
-
return void 0;
|
|
4175
|
-
}
|
|
4176
4216
|
async function performRequest(action, client) {
|
|
4177
4217
|
async function checkToken() {
|
|
4178
4218
|
if (client.auth.tokenIsExpiringSoon()) {
|
|
@@ -4275,8 +4315,11 @@ async function performRequest(action, client) {
|
|
|
4275
4315
|
console.warn("No signed-in user to sign out.");
|
|
4276
4316
|
}
|
|
4277
4317
|
await client.auth.logout();
|
|
4278
|
-
throw new APIError(
|
|
4279
|
-
|
|
4318
|
+
throw new APIError({
|
|
4319
|
+
message: "You have been signed out due to inactivity.",
|
|
4320
|
+
response: errorResponse,
|
|
4321
|
+
discard: true,
|
|
4322
|
+
innerError: error2
|
|
4280
4323
|
});
|
|
4281
4324
|
}
|
|
4282
4325
|
console.debug("Forbidden; renewing tokens and retrying.");
|
|
@@ -4284,10 +4327,7 @@ async function performRequest(action, client) {
|
|
|
4284
4327
|
console.debug("Successfully renewed tokens; retrying request.");
|
|
4285
4328
|
return requestToSend.query(queryParams);
|
|
4286
4329
|
}
|
|
4287
|
-
|
|
4288
|
-
throw new APIError(apiErrorMessage, errorResponse, {
|
|
4289
|
-
discard: discardStatuses.includes(status)
|
|
4290
|
-
});
|
|
4330
|
+
throw new APIError({ response: errorResponse, innerError: error2, discard: discardStatuses.includes(status) });
|
|
4291
4331
|
}
|
|
4292
4332
|
}
|
|
4293
4333
|
class MiddlewareChainerPrivate {
|
|
@@ -4498,13 +4538,11 @@ class BaseApiService {
|
|
|
4498
4538
|
if (response) {
|
|
4499
4539
|
promise.resolve(response.body);
|
|
4500
4540
|
} else {
|
|
4501
|
-
const error2 = new APIError(
|
|
4502
|
-
"Could not get a response from the server.",
|
|
4541
|
+
const error2 = new APIError({
|
|
4542
|
+
message: "Could not get a response from the server.",
|
|
4503
4543
|
response,
|
|
4504
|
-
|
|
4505
|
-
|
|
4506
|
-
}
|
|
4507
|
-
);
|
|
4544
|
+
discard: true
|
|
4545
|
+
});
|
|
4508
4546
|
promise.reject(error2);
|
|
4509
4547
|
}
|
|
4510
4548
|
};
|
|
@@ -4661,7 +4699,7 @@ class AttachmentService extends BaseApiService {
|
|
|
4661
4699
|
offline_id,
|
|
4662
4700
|
project,
|
|
4663
4701
|
description: description2 ?? "",
|
|
4664
|
-
submitted_at: (/* @__PURE__ */ new Date()).
|
|
4702
|
+
submitted_at: (/* @__PURE__ */ new Date()).toISOString(),
|
|
4665
4703
|
...fileProps
|
|
4666
4704
|
}
|
|
4667
4705
|
});
|
|
@@ -7136,8 +7174,7 @@ class OrganizationAccessService extends BaseApiService {
|
|
|
7136
7174
|
blockers: [],
|
|
7137
7175
|
blocks: []
|
|
7138
7176
|
});
|
|
7139
|
-
|
|
7140
|
-
store.dispatch(setOrganizationAccesses(organizationAccesses));
|
|
7177
|
+
store.dispatch(setOrganizationAccesses(result));
|
|
7141
7178
|
}
|
|
7142
7179
|
}
|
|
7143
7180
|
const cachedRequestPromises = {};
|
|
@@ -15790,11 +15827,13 @@ export {
|
|
|
15790
15827
|
selectCompletedStages,
|
|
15791
15828
|
selectComponent,
|
|
15792
15829
|
selectComponentAttachmentMapping,
|
|
15830
|
+
selectComponentSubmissionMapping,
|
|
15793
15831
|
selectComponentType,
|
|
15794
15832
|
selectComponentTypeAttachmentMapping,
|
|
15795
15833
|
selectComponentTypeForm,
|
|
15796
15834
|
selectComponentTypeFromComponent,
|
|
15797
15835
|
selectComponentTypeFromComponents,
|
|
15836
|
+
selectComponentTypeStagesMapping,
|
|
15798
15837
|
selectComponentTypes,
|
|
15799
15838
|
selectComponentTypesByName,
|
|
15800
15839
|
selectComponentTypesFromIds,
|
|
@@ -15802,6 +15841,7 @@ export {
|
|
|
15802
15841
|
selectComponents,
|
|
15803
15842
|
selectComponentsByType,
|
|
15804
15843
|
selectComponentsFromComponentType,
|
|
15844
|
+
selectComponentsMapping,
|
|
15805
15845
|
selectCreateProjectType,
|
|
15806
15846
|
selectCurrentUser,
|
|
15807
15847
|
selectDeletedRequests,
|
|
@@ -15899,6 +15939,7 @@ export {
|
|
|
15899
15939
|
selectUser,
|
|
15900
15940
|
selectUserForm,
|
|
15901
15941
|
selectUserFormMapping,
|
|
15942
|
+
selectUserFormSubmission,
|
|
15902
15943
|
selectUsersAsMapping,
|
|
15903
15944
|
selectVisibleStatuses,
|
|
15904
15945
|
selectVisibleUserIds,
|