@techextensor/tab-core-utility 2.2.193 → 2.2.194
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/esm2022/index.mjs +1 -6
- package/esm2022/lib/tab-core-utility/app/constants/api-constants.mjs +22 -38
- package/esm2022/lib/tab-core-utility/app/constants/common.mjs +50 -14
- package/esm2022/lib/tab-core-utility/app/constants/storage-constants.mjs +2 -2
- package/esm2022/lib/tab-core-utility/app/crud/tab-blueprint.service.mjs +14 -41
- package/esm2022/lib/tab-core-utility/app/crud/tab-crud.service.mjs +68 -47
- package/esm2022/lib/tab-core-utility/app/crud/tab-delete.service.mjs +30 -84
- package/esm2022/lib/tab-core-utility/app/crud/tab-formio.service.mjs +12 -141
- package/esm2022/lib/tab-core-utility/app/crud/tab-get.service.mjs +42 -137
- package/esm2022/lib/tab-core-utility/app/crud/tab-insert.service.mjs +38 -89
- package/esm2022/lib/tab-core-utility/app/crud/tab-update.service.mjs +128 -156
- package/esm2022/lib/tab-core-utility/app/enums/query.enum.mjs +7 -7
- package/esm2022/lib/tab-core-utility/app/helpers/common/app.helpers.mjs +23 -28
- package/esm2022/lib/tab-core-utility/app/helpers/common/dsq.helpers.mjs +11 -9
- package/esm2022/lib/tab-core-utility/app/helpers/common/meta-data.helpers.mjs +13 -13
- package/esm2022/lib/tab-core-utility/app/helpers/common/req-res.helpers.mjs +45 -7
- package/esm2022/lib/tab-core-utility/app/helpers/common/where-clause.helpers.mjs +76 -79
- package/esm2022/lib/tab-core-utility/app/helpers/screen/grid.helpers.mjs +4 -8
- package/esm2022/lib/tab-core-utility/app/helpers/screen/screen.helpers.mjs +33 -8
- package/esm2022/lib/tab-core-utility/app/interfaces/auth.interface.mjs +1 -1
- package/esm2022/lib/tab-core-utility/app/interfaces/common.interface.mjs +1 -1
- package/esm2022/lib/tab-core-utility/app/models/api-query.class.mjs +1 -39
- package/esm2022/lib/tab-core-utility/app/models/app-field.model.mjs +7 -36
- package/esm2022/lib/tab-core-utility/app/models/app-object.model.mjs +47 -84
- package/esm2022/lib/tab-core-utility/app/models/app-screen.model.mjs +13 -24
- package/esm2022/lib/tab-core-utility/app/models/data-source-query.model.mjs +23 -57
- package/esm2022/lib/tab-core-utility/app/models/filter.model.mjs +10 -21
- package/esm2022/lib/tab-core-utility/app/models/parameter.model.mjs +6 -12
- package/esm2022/lib/tab-core-utility/app/models/sort.model.mjs +4 -11
- package/esm2022/lib/tab-core-utility/app/utils/json.util.mjs +16 -17
- package/esm2022/lib/tab-core-utility/app/utils/req-res.util.mjs +55 -1
- package/esm2022/lib/tab-core-utility/app/utils/tab-app.util.mjs +164 -1
- package/esm2022/lib/tab-core-utility/auth/auth.service.mjs +11 -36
- package/esm2022/lib/tab-core-utility/core/http-client/api.service.mjs +1 -78
- package/index.d.ts +0 -5
- package/lib/tab-core-utility/app/constants/api-constants.d.ts +18 -25
- package/lib/tab-core-utility/app/constants/common.d.ts +0 -9
- package/lib/tab-core-utility/app/constants/storage-constants.d.ts +1 -1
- package/lib/tab-core-utility/app/crud/tab-blueprint.service.d.ts +8 -14
- package/lib/tab-core-utility/app/crud/tab-crud.service.d.ts +7 -9
- package/lib/tab-core-utility/app/crud/tab-delete.service.d.ts +10 -20
- package/lib/tab-core-utility/app/crud/tab-formio.service.d.ts +6 -33
- package/lib/tab-core-utility/app/crud/tab-get.service.d.ts +8 -50
- package/lib/tab-core-utility/app/crud/tab-insert.service.d.ts +21 -16
- package/lib/tab-core-utility/app/crud/tab-update.service.d.ts +19 -34
- package/lib/tab-core-utility/app/enums/query.enum.d.ts +6 -3
- package/lib/tab-core-utility/app/helpers/common/app.helpers.d.ts +8 -5
- package/lib/tab-core-utility/app/helpers/common/dsq.helpers.d.ts +0 -3
- package/lib/tab-core-utility/app/helpers/common/meta-data.helpers.d.ts +3 -3
- package/lib/tab-core-utility/app/helpers/common/req-res.helpers.d.ts +51 -7
- package/lib/tab-core-utility/app/helpers/common/where-clause.helpers.d.ts +0 -1
- package/lib/tab-core-utility/app/helpers/screen/grid.helpers.d.ts +1 -2
- package/lib/tab-core-utility/app/helpers/screen/screen.helpers.d.ts +0 -1
- package/lib/tab-core-utility/app/interfaces/auth.interface.d.ts +1 -1
- package/lib/tab-core-utility/app/interfaces/common.interface.d.ts +6 -56
- package/lib/tab-core-utility/app/models/api-query.class.d.ts +9 -54
- package/lib/tab-core-utility/app/models/app-field.model.d.ts +2 -4
- package/lib/tab-core-utility/app/models/app-object.model.d.ts +3 -5
- package/lib/tab-core-utility/app/models/app-screen.model.d.ts +2 -2
- package/lib/tab-core-utility/app/models/data-source-query.model.d.ts +2 -7
- package/lib/tab-core-utility/app/models/filter.model.d.ts +2 -2
- package/lib/tab-core-utility/app/models/parameter.model.d.ts +2 -2
- package/lib/tab-core-utility/app/models/sort.model.d.ts +1 -1
- package/lib/tab-core-utility/app/utils/json.util.d.ts +2 -3
- package/lib/tab-core-utility/app/utils/req-res.util.d.ts +9 -1
- package/lib/tab-core-utility/app/utils/tab-app.util.d.ts +61 -0
- package/lib/tab-core-utility/auth/auth.service.d.ts +0 -6
- package/lib/tab-core-utility/core/http-client/api.service.d.ts +0 -46
- package/package.json +2 -3
- package/esm2022/lib/tab-core-utility/app/helpers/auth-response.adapter.mjs +0 -79
- package/esm2022/lib/tab-core-utility/app/helpers/login-response.adapter.mjs +0 -76
- package/esm2022/lib/tab-core-utility/app/helpers/response.adapter.mjs +0 -38
- package/esm2022/lib/tab-core-utility/app/helpers/transition-response.adapter.mjs +0 -83
- package/esm2022/lib/tab-core-utility/app/interfaces/signalr.interface.mjs +0 -42
- package/esm2022/lib/tab-core-utility/core/service/signalr/operation-tracker.service.mjs +0 -90
- package/esm2022/lib/tab-core-utility/core/service/signalr/signalr-infrastructure.service.mjs +0 -268
- package/esm2022/lib/tab-core-utility/core/service/signalr/signalr.service.mjs +0 -207
- package/lib/tab-core-utility/app/helpers/auth-response.adapter.d.ts +0 -32
- package/lib/tab-core-utility/app/helpers/login-response.adapter.d.ts +0 -29
- package/lib/tab-core-utility/app/helpers/response.adapter.d.ts +0 -22
- package/lib/tab-core-utility/app/helpers/transition-response.adapter.d.ts +0 -30
- package/lib/tab-core-utility/app/interfaces/signalr.interface.d.ts +0 -84
- package/lib/tab-core-utility/core/service/signalr/operation-tracker.service.d.ts +0 -40
- package/lib/tab-core-utility/core/service/signalr/signalr-infrastructure.service.d.ts +0 -73
- package/lib/tab-core-utility/core/service/signalr/signalr.service.d.ts +0 -122
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* LoginResponseAdapter - Transforms new login API response to legacy format
|
|
3
|
-
*
|
|
4
|
-
* The new identity service returns a flat response structure with camelCase fields.
|
|
5
|
-
* This adapter converts it to the old nested structure expected by the application.
|
|
6
|
-
*
|
|
7
|
-
* New format (flat):
|
|
8
|
-
* { userId, email, userName, accessToken, refreshToken, expiresIn, roles, ... }
|
|
9
|
-
*
|
|
10
|
-
* Old format (nested):
|
|
11
|
-
* { user: { Id, UserName, Roles, PersonData, Attributes, ... }, Token, RefreshToken, RefreshTokenExpiry }
|
|
12
|
-
*/
|
|
13
|
-
export class LoginResponseAdapter {
|
|
14
|
-
/**
|
|
15
|
-
* Transforms the normalized CommonApiResponse's Result from new flat format to old nested format.
|
|
16
|
-
* If the Result is already in old format (has .user or .Token), returns as-is.
|
|
17
|
-
*
|
|
18
|
-
* @param response - The CommonApiResponse (already top-level normalized by ResponseAdapter)
|
|
19
|
-
* @returns The response with Result transformed to legacy nested format
|
|
20
|
-
*/
|
|
21
|
-
static normalize(response) {
|
|
22
|
-
const result = response?.Result;
|
|
23
|
-
// If null, already old format (has .user wrapper or .Token), return as-is
|
|
24
|
-
if (!result || result.user || result.Token) {
|
|
25
|
-
return response;
|
|
26
|
-
}
|
|
27
|
-
// Transform new flat format to old nested format
|
|
28
|
-
response.Result = {
|
|
29
|
-
user: {
|
|
30
|
-
Id: result.userId ?? null,
|
|
31
|
-
UserName: result.email ?? result.userName ?? null,
|
|
32
|
-
DefaultTenantId: result.defaultTenantId ?? null,
|
|
33
|
-
DefaultAppId: result.defaultAppId ?? null,
|
|
34
|
-
Roles: LoginResponseAdapter.transformRoles(result.roles),
|
|
35
|
-
Teams: null,
|
|
36
|
-
PersonData: null,
|
|
37
|
-
MailingAddress: null,
|
|
38
|
-
Locale: null,
|
|
39
|
-
Attributes: null,
|
|
40
|
-
},
|
|
41
|
-
Token: result.accessToken ?? null,
|
|
42
|
-
RefreshToken: result.refreshToken ?? null,
|
|
43
|
-
RefreshTokenExpiry: result.expiresIn
|
|
44
|
-
? new Date(Date.now() + result.expiresIn * 1000).toISOString()
|
|
45
|
-
: null,
|
|
46
|
-
Success: result.succeeded ?? false,
|
|
47
|
-
Errors: result.error ?? null,
|
|
48
|
-
};
|
|
49
|
-
return response;
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Transforms roles from new camelCase format to old PascalCase format.
|
|
53
|
-
* Structure: { tenantId: { appId: { envId: [{ id, roleName, description }] } } }
|
|
54
|
-
* becomes: { tenantId: { appId: { envId: [{ ID, RoleName, Description }] } } }
|
|
55
|
-
*/
|
|
56
|
-
static transformRoles(roles) {
|
|
57
|
-
if (!roles)
|
|
58
|
-
return {};
|
|
59
|
-
const transformed = {};
|
|
60
|
-
for (const [tenantId, tenantData] of Object.entries(roles)) {
|
|
61
|
-
transformed[tenantId] = {};
|
|
62
|
-
for (const [appId, appData] of Object.entries(tenantData)) {
|
|
63
|
-
transformed[tenantId][appId] = {};
|
|
64
|
-
for (const [envId, envRoles] of Object.entries(appData)) {
|
|
65
|
-
transformed[tenantId][appId][envId] = envRoles.map(role => ({
|
|
66
|
-
ID: role.id ?? role.ID,
|
|
67
|
-
RoleName: role.roleName ?? role.RoleName,
|
|
68
|
-
Description: role.description ?? role.Description,
|
|
69
|
-
}));
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
return transformed;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4tcmVzcG9uc2UuYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9oZWxwZXJzL2xvZ2luLXJlc3BvbnNlLmFkYXB0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0E7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLE9BQU8sb0JBQW9CO0lBRS9COzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBMkI7UUFDMUMsTUFBTSxNQUFNLEdBQUcsUUFBUSxFQUFFLE1BQU0sQ0FBQztRQUVoQywwRUFBMEU7UUFDMUUsSUFBSSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMzQyxPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDO1FBRUQsaURBQWlEO1FBQ2pELFFBQVEsQ0FBQyxNQUFNLEdBQUc7WUFDaEIsSUFBSSxFQUFFO2dCQUNKLEVBQUUsRUFBRSxNQUFNLENBQUMsTUFBTSxJQUFJLElBQUk7Z0JBQ3pCLFFBQVEsRUFBRSxNQUFNLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxRQUFRLElBQUksSUFBSTtnQkFDakQsZUFBZSxFQUFFLE1BQU0sQ0FBQyxlQUFlLElBQUksSUFBSTtnQkFDL0MsWUFBWSxFQUFFLE1BQU0sQ0FBQyxZQUFZLElBQUksSUFBSTtnQkFDekMsS0FBSyxFQUFFLG9CQUFvQixDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO2dCQUN4RCxLQUFLLEVBQUUsSUFBSTtnQkFDWCxVQUFVLEVBQUUsSUFBSTtnQkFDaEIsY0FBYyxFQUFFLElBQUk7Z0JBQ3BCLE1BQU0sRUFBRSxJQUFJO2dCQUNaLFVBQVUsRUFBRSxJQUFJO2FBQ2pCO1lBQ0QsS0FBSyxFQUFFLE1BQU0sQ0FBQyxXQUFXLElBQUksSUFBSTtZQUNqQyxZQUFZLEVBQUUsTUFBTSxDQUFDLFlBQVksSUFBSSxJQUFJO1lBQ3pDLGtCQUFrQixFQUFFLE1BQU0sQ0FBQyxTQUFTO2dCQUNsQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFO2dCQUM5RCxDQUFDLENBQUMsSUFBSTtZQUNSLE9BQU8sRUFBRSxNQUFNLENBQUMsU0FBUyxJQUFJLEtBQUs7WUFDbEMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLElBQUksSUFBSTtTQUM3QixDQUFDO1FBRUYsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQVU7UUFDdEMsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUV0QixNQUFNLFdBQVcsR0FBUSxFQUFFLENBQUM7UUFFNUIsS0FBSyxNQUFNLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMzRCxXQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBRTNCLEtBQUssTUFBTSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQWlCLENBQUMsRUFBRSxDQUFDO2dCQUNqRSxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUVsQyxLQUFLLE1BQU0sQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFjLENBQUMsRUFBRSxDQUFDO29CQUMvRCxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUksUUFBa0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO3dCQUNyRSxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsRUFBRTt3QkFDdEIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVE7d0JBQ3hDLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxXQUFXO3FCQUNsRCxDQUFDLENBQUMsQ0FBQztnQkFDTixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXHJcbmltcG9ydCB7IENvbW1vbkFwaVJlc3BvbnNlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jb21tb24uaW50ZXJmYWNlJztcclxuXHJcbi8qKlxyXG4gKiBMb2dpblJlc3BvbnNlQWRhcHRlciAtIFRyYW5zZm9ybXMgbmV3IGxvZ2luIEFQSSByZXNwb25zZSB0byBsZWdhY3kgZm9ybWF0XHJcbiAqXHJcbiAqIFRoZSBuZXcgaWRlbnRpdHkgc2VydmljZSByZXR1cm5zIGEgZmxhdCByZXNwb25zZSBzdHJ1Y3R1cmUgd2l0aCBjYW1lbENhc2UgZmllbGRzLlxyXG4gKiBUaGlzIGFkYXB0ZXIgY29udmVydHMgaXQgdG8gdGhlIG9sZCBuZXN0ZWQgc3RydWN0dXJlIGV4cGVjdGVkIGJ5IHRoZSBhcHBsaWNhdGlvbi5cclxuICpcclxuICogTmV3IGZvcm1hdCAoZmxhdCk6XHJcbiAqICAgeyB1c2VySWQsIGVtYWlsLCB1c2VyTmFtZSwgYWNjZXNzVG9rZW4sIHJlZnJlc2hUb2tlbiwgZXhwaXJlc0luLCByb2xlcywgLi4uIH1cclxuICpcclxuICogT2xkIGZvcm1hdCAobmVzdGVkKTpcclxuICogICB7IHVzZXI6IHsgSWQsIFVzZXJOYW1lLCBSb2xlcywgUGVyc29uRGF0YSwgQXR0cmlidXRlcywgLi4uIH0sIFRva2VuLCBSZWZyZXNoVG9rZW4sIFJlZnJlc2hUb2tlbkV4cGlyeSB9XHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgTG9naW5SZXNwb25zZUFkYXB0ZXIge1xyXG5cclxuICAvKipcclxuICAgKiBUcmFuc2Zvcm1zIHRoZSBub3JtYWxpemVkIENvbW1vbkFwaVJlc3BvbnNlJ3MgUmVzdWx0IGZyb20gbmV3IGZsYXQgZm9ybWF0IHRvIG9sZCBuZXN0ZWQgZm9ybWF0LlxyXG4gICAqIElmIHRoZSBSZXN1bHQgaXMgYWxyZWFkeSBpbiBvbGQgZm9ybWF0IChoYXMgLnVzZXIgb3IgLlRva2VuKSwgcmV0dXJucyBhcy1pcy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSByZXNwb25zZSAtIFRoZSBDb21tb25BcGlSZXNwb25zZSAoYWxyZWFkeSB0b3AtbGV2ZWwgbm9ybWFsaXplZCBieSBSZXNwb25zZUFkYXB0ZXIpXHJcbiAgICogQHJldHVybnMgVGhlIHJlc3BvbnNlIHdpdGggUmVzdWx0IHRyYW5zZm9ybWVkIHRvIGxlZ2FjeSBuZXN0ZWQgZm9ybWF0XHJcbiAgICovXHJcbiAgc3RhdGljIG5vcm1hbGl6ZShyZXNwb25zZTogQ29tbW9uQXBpUmVzcG9uc2UpOiBDb21tb25BcGlSZXNwb25zZSB7XHJcbiAgICBjb25zdCByZXN1bHQgPSByZXNwb25zZT8uUmVzdWx0O1xyXG5cclxuICAgIC8vIElmIG51bGwsIGFscmVhZHkgb2xkIGZvcm1hdCAoaGFzIC51c2VyIHdyYXBwZXIgb3IgLlRva2VuKSwgcmV0dXJuIGFzLWlzXHJcbiAgICBpZiAoIXJlc3VsdCB8fCByZXN1bHQudXNlciB8fCByZXN1bHQuVG9rZW4pIHtcclxuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFRyYW5zZm9ybSBuZXcgZmxhdCBmb3JtYXQgdG8gb2xkIG5lc3RlZCBmb3JtYXRcclxuICAgIHJlc3BvbnNlLlJlc3VsdCA9IHtcclxuICAgICAgdXNlcjoge1xyXG4gICAgICAgIElkOiByZXN1bHQudXNlcklkID8/IG51bGwsXHJcbiAgICAgICAgVXNlck5hbWU6IHJlc3VsdC5lbWFpbCA/PyByZXN1bHQudXNlck5hbWUgPz8gbnVsbCxcclxuICAgICAgICBEZWZhdWx0VGVuYW50SWQ6IHJlc3VsdC5kZWZhdWx0VGVuYW50SWQgPz8gbnVsbCxcclxuICAgICAgICBEZWZhdWx0QXBwSWQ6IHJlc3VsdC5kZWZhdWx0QXBwSWQgPz8gbnVsbCxcclxuICAgICAgICBSb2xlczogTG9naW5SZXNwb25zZUFkYXB0ZXIudHJhbnNmb3JtUm9sZXMocmVzdWx0LnJvbGVzKSxcclxuICAgICAgICBUZWFtczogbnVsbCxcclxuICAgICAgICBQZXJzb25EYXRhOiBudWxsLFxyXG4gICAgICAgIE1haWxpbmdBZGRyZXNzOiBudWxsLFxyXG4gICAgICAgIExvY2FsZTogbnVsbCxcclxuICAgICAgICBBdHRyaWJ1dGVzOiBudWxsLFxyXG4gICAgICB9LFxyXG4gICAgICBUb2tlbjogcmVzdWx0LmFjY2Vzc1Rva2VuID8/IG51bGwsXHJcbiAgICAgIFJlZnJlc2hUb2tlbjogcmVzdWx0LnJlZnJlc2hUb2tlbiA/PyBudWxsLFxyXG4gICAgICBSZWZyZXNoVG9rZW5FeHBpcnk6IHJlc3VsdC5leHBpcmVzSW5cclxuICAgICAgICA/IG5ldyBEYXRlKERhdGUubm93KCkgKyByZXN1bHQuZXhwaXJlc0luICogMTAwMCkudG9JU09TdHJpbmcoKVxyXG4gICAgICAgIDogbnVsbCxcclxuICAgICAgU3VjY2VzczogcmVzdWx0LnN1Y2NlZWRlZCA/PyBmYWxzZSxcclxuICAgICAgRXJyb3JzOiByZXN1bHQuZXJyb3IgPz8gbnVsbCxcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVHJhbnNmb3JtcyByb2xlcyBmcm9tIG5ldyBjYW1lbENhc2UgZm9ybWF0IHRvIG9sZCBQYXNjYWxDYXNlIGZvcm1hdC5cclxuICAgKiBTdHJ1Y3R1cmU6IHsgdGVuYW50SWQ6IHsgYXBwSWQ6IHsgZW52SWQ6IFt7IGlkLCByb2xlTmFtZSwgZGVzY3JpcHRpb24gfV0gfSB9IH1cclxuICAgKiBiZWNvbWVzOiAgIHsgdGVuYW50SWQ6IHsgYXBwSWQ6IHsgZW52SWQ6IFt7IElELCBSb2xlTmFtZSwgRGVzY3JpcHRpb24gfV0gfSB9IH1cclxuICAgKi9cclxuICBwcml2YXRlIHN0YXRpYyB0cmFuc2Zvcm1Sb2xlcyhyb2xlczogYW55KTogYW55IHtcclxuICAgIGlmICghcm9sZXMpIHJldHVybiB7fTtcclxuXHJcbiAgICBjb25zdCB0cmFuc2Zvcm1lZDogYW55ID0ge307XHJcblxyXG4gICAgZm9yIChjb25zdCBbdGVuYW50SWQsIHRlbmFudERhdGFdIG9mIE9iamVjdC5lbnRyaWVzKHJvbGVzKSkge1xyXG4gICAgICB0cmFuc2Zvcm1lZFt0ZW5hbnRJZF0gPSB7fTtcclxuXHJcbiAgICAgIGZvciAoY29uc3QgW2FwcElkLCBhcHBEYXRhXSBvZiBPYmplY3QuZW50cmllcyh0ZW5hbnREYXRhIGFzIGFueSkpIHtcclxuICAgICAgICB0cmFuc2Zvcm1lZFt0ZW5hbnRJZF1bYXBwSWRdID0ge307XHJcblxyXG4gICAgICAgIGZvciAoY29uc3QgW2VudklkLCBlbnZSb2xlc10gb2YgT2JqZWN0LmVudHJpZXMoYXBwRGF0YSBhcyBhbnkpKSB7XHJcbiAgICAgICAgICB0cmFuc2Zvcm1lZFt0ZW5hbnRJZF1bYXBwSWRdW2VudklkXSA9IChlbnZSb2xlcyBhcyBhbnlbXSkubWFwKHJvbGUgPT4gKHtcclxuICAgICAgICAgICAgSUQ6IHJvbGUuaWQgPz8gcm9sZS5JRCxcclxuICAgICAgICAgICAgUm9sZU5hbWU6IHJvbGUucm9sZU5hbWUgPz8gcm9sZS5Sb2xlTmFtZSxcclxuICAgICAgICAgICAgRGVzY3JpcHRpb246IHJvbGUuZGVzY3JpcHRpb24gPz8gcm9sZS5EZXNjcmlwdGlvbixcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdHJhbnNmb3JtZWQ7XHJcbiAgfVxyXG59Il19
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ResponseAdapter - Transforms new API response format to legacy format
|
|
3
|
-
*
|
|
4
|
-
* This adapter maintains backward compatibility by converting the new camelCase
|
|
5
|
-
* response format from the backend to the old PascalCase format expected by
|
|
6
|
-
* existing application code.
|
|
7
|
-
*
|
|
8
|
-
* @example
|
|
9
|
-
* // Auto-detect and normalize response
|
|
10
|
-
* return this.apiService.postToService(...).pipe(
|
|
11
|
-
* map(response => ResponseAdapter.normalize(response))
|
|
12
|
-
* );
|
|
13
|
-
*/
|
|
14
|
-
export class ResponseAdapter {
|
|
15
|
-
/**
|
|
16
|
-
* Normalizes a StandardApiResponse to CommonApiResponse format.
|
|
17
|
-
* @param newResponse The response object in the new API format.
|
|
18
|
-
* @returns The normalized response in the legacy format.
|
|
19
|
-
*/
|
|
20
|
-
static normalize(newResponse) {
|
|
21
|
-
return {
|
|
22
|
-
IsSuccess: newResponse?.isSuccess || false,
|
|
23
|
-
Result: newResponse?.result || null,
|
|
24
|
-
RecordAffectted: newResponse?.affectedRecords ?? 0,
|
|
25
|
-
TotalRecords: newResponse?.totalRecords ?? 0,
|
|
26
|
-
TotalExecutionTime: newResponse?.executionTimeMs ?? 0,
|
|
27
|
-
Log: newResponse?.logs ?? [],
|
|
28
|
-
Errors: newResponse?.error
|
|
29
|
-
? [
|
|
30
|
-
newResponse.error?.message,
|
|
31
|
-
...(newResponse.error?.details ? [newResponse.error?.details] : [])
|
|
32
|
-
]
|
|
33
|
-
: [],
|
|
34
|
-
CorrelationId: newResponse?.correlationId // Preserve correlationId for async operations
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2UuYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9oZWxwZXJzL3Jlc3BvbnNlLmFkYXB0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0E7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBTSxPQUFPLGVBQWU7SUFFMUI7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxTQUFTLENBQUMsV0FBZ0M7UUFDL0MsT0FBTztZQUNMLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxJQUFJLEtBQUs7WUFDMUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLElBQUksSUFBSTtZQUNuQyxlQUFlLEVBQUUsV0FBVyxFQUFFLGVBQWUsSUFBSSxDQUFDO1lBQ2xELFlBQVksRUFBRSxXQUFXLEVBQUUsWUFBWSxJQUFJLENBQUM7WUFDNUMsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLGVBQWUsSUFBSSxDQUFDO1lBQ3JELEdBQUcsRUFBRSxXQUFXLEVBQUUsSUFBSSxJQUFJLEVBQUU7WUFDNUIsTUFBTSxFQUFFLFdBQVcsRUFBRSxLQUFLO2dCQUN4QixDQUFDLENBQUM7b0JBQ0UsV0FBVyxDQUFDLEtBQUssRUFBRSxPQUFPO29CQUMxQixHQUFHLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2lCQUNwRTtnQkFDSCxDQUFDLENBQUMsRUFBRTtZQUNOLGFBQWEsRUFBRSxXQUFXLEVBQUUsYUFBYSxDQUFFLDhDQUE4QztTQUMxRixDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xyXG5pbXBvcnQgeyBDb21tb25BcGlSZXNwb25zZSwgU3RhbmRhcmRBcGlSZXNwb25zZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvY29tbW9uLmludGVyZmFjZSc7XHJcblxyXG4vKipcclxuICogUmVzcG9uc2VBZGFwdGVyIC0gVHJhbnNmb3JtcyBuZXcgQVBJIHJlc3BvbnNlIGZvcm1hdCB0byBsZWdhY3kgZm9ybWF0XHJcbiAqXHJcbiAqIFRoaXMgYWRhcHRlciBtYWludGFpbnMgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBieSBjb252ZXJ0aW5nIHRoZSBuZXcgY2FtZWxDYXNlXHJcbiAqIHJlc3BvbnNlIGZvcm1hdCBmcm9tIHRoZSBiYWNrZW5kIHRvIHRoZSBvbGQgUGFzY2FsQ2FzZSBmb3JtYXQgZXhwZWN0ZWQgYnlcclxuICogZXhpc3RpbmcgYXBwbGljYXRpb24gY29kZS5cclxuICpcclxuICogQGV4YW1wbGVcclxuICogLy8gQXV0by1kZXRlY3QgYW5kIG5vcm1hbGl6ZSByZXNwb25zZVxyXG4gKiByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3RUb1NlcnZpY2UoLi4uKS5waXBlKFxyXG4gKiAgIG1hcChyZXNwb25zZSA9PiBSZXNwb25zZUFkYXB0ZXIubm9ybWFsaXplKHJlc3BvbnNlKSlcclxuICogKTtcclxuICovXHJcbmV4cG9ydCBjbGFzcyBSZXNwb25zZUFkYXB0ZXIge1xyXG5cclxuICAvKipcclxuICAgKiBOb3JtYWxpemVzIGEgU3RhbmRhcmRBcGlSZXNwb25zZSB0byBDb21tb25BcGlSZXNwb25zZSBmb3JtYXQuXHJcbiAgICogQHBhcmFtIG5ld1Jlc3BvbnNlIFRoZSByZXNwb25zZSBvYmplY3QgaW4gdGhlIG5ldyBBUEkgZm9ybWF0LlxyXG4gICAqIEByZXR1cm5zIFRoZSBub3JtYWxpemVkIHJlc3BvbnNlIGluIHRoZSBsZWdhY3kgZm9ybWF0LlxyXG4gICAqL1xyXG4gIHN0YXRpYyBub3JtYWxpemUobmV3UmVzcG9uc2U6IFN0YW5kYXJkQXBpUmVzcG9uc2UpOiBDb21tb25BcGlSZXNwb25zZSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBJc1N1Y2Nlc3M6IG5ld1Jlc3BvbnNlPy5pc1N1Y2Nlc3MgfHwgZmFsc2UsXHJcbiAgICAgIFJlc3VsdDogbmV3UmVzcG9uc2U/LnJlc3VsdCB8fCBudWxsLFxyXG4gICAgICBSZWNvcmRBZmZlY3R0ZWQ6IG5ld1Jlc3BvbnNlPy5hZmZlY3RlZFJlY29yZHMgPz8gMCxcclxuICAgICAgVG90YWxSZWNvcmRzOiBuZXdSZXNwb25zZT8udG90YWxSZWNvcmRzID8/IDAsXHJcbiAgICAgIFRvdGFsRXhlY3V0aW9uVGltZTogbmV3UmVzcG9uc2U/LmV4ZWN1dGlvblRpbWVNcyA/PyAwLFxyXG4gICAgICBMb2c6IG5ld1Jlc3BvbnNlPy5sb2dzID8/IFtdLFxyXG4gICAgICBFcnJvcnM6IG5ld1Jlc3BvbnNlPy5lcnJvclxyXG4gICAgICAgID8gW1xyXG4gICAgICAgICAgICBuZXdSZXNwb25zZS5lcnJvcj8ubWVzc2FnZSxcclxuICAgICAgICAgICAgLi4uKG5ld1Jlc3BvbnNlLmVycm9yPy5kZXRhaWxzID8gW25ld1Jlc3BvbnNlLmVycm9yPy5kZXRhaWxzXSA6IFtdKVxyXG4gICAgICAgICAgXVxyXG4gICAgICAgIDogW10sXHJcbiAgICAgIENvcnJlbGF0aW9uSWQ6IG5ld1Jlc3BvbnNlPy5jb3JyZWxhdGlvbklkICAvLyBQcmVzZXJ2ZSBjb3JyZWxhdGlvbklkIGZvciBhc3luYyBvcGVyYXRpb25zXHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* TransitionResponseAdapter - Transforms new transition API response (camelCase)
|
|
3
|
-
* to legacy PascalCase format expected by existing application code.
|
|
4
|
-
*
|
|
5
|
-
* Handles both GetNextStatus and UpdateStatus responses from the new
|
|
6
|
-
* crud.techextensor.com/api/v1/status/* endpoints.
|
|
7
|
-
*/
|
|
8
|
-
export class TransitionResponseAdapter {
|
|
9
|
-
/**
|
|
10
|
-
* Normalizes the inner Result of a GetNextStatus response from camelCase to PascalCase.
|
|
11
|
-
* @param response - The CommonApiResponse (already wrapper-normalized by ResponseAdapter)
|
|
12
|
-
* @returns The response with inner Result transformed to legacy PascalCase format
|
|
13
|
-
*/
|
|
14
|
-
static normalize(response) {
|
|
15
|
-
const result = response?.Result;
|
|
16
|
-
if (!result)
|
|
17
|
-
return response;
|
|
18
|
-
// If already in old PascalCase format (has FromStatusId), skip transformation
|
|
19
|
-
if (result.FromStatusId)
|
|
20
|
-
return response;
|
|
21
|
-
response.Result = {
|
|
22
|
-
FromStatusId: result.fromStatusId ?? null,
|
|
23
|
-
FromStatusName: result.fromStatusName ?? null,
|
|
24
|
-
ToStatusList: TransitionResponseAdapter.transformToStatusList(result.toStatusList)
|
|
25
|
-
};
|
|
26
|
-
return response;
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Transforms the toStatusList array from camelCase to PascalCase.
|
|
30
|
-
*/
|
|
31
|
-
static transformToStatusList(toStatusList) {
|
|
32
|
-
if (!Array.isArray(toStatusList))
|
|
33
|
-
return [];
|
|
34
|
-
return toStatusList.map((status) => ({
|
|
35
|
-
Id: status.id ?? status.Id ?? null,
|
|
36
|
-
ToStatusId: status.toStatusId ?? status.ToStatusId ?? null,
|
|
37
|
-
ToStatusName: status.toStatusName ?? status.ToStatusName ?? null,
|
|
38
|
-
TransitionHooks_Before: TransitionResponseAdapter.transformHook(status.transitionHooks_Before ?? status.TransitionHooks_Before),
|
|
39
|
-
TransitionHooks_During: TransitionResponseAdapter.transformHook(status.transitionHooks_During ?? status.TransitionHooks_During),
|
|
40
|
-
TransitionHooks_After: TransitionResponseAdapter.transformHook(status.transitionHooks_After ?? status.TransitionHooks_After)
|
|
41
|
-
}));
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Transforms a single transition hook from new format to old format.
|
|
45
|
-
* New format: { filters: null, actions: [] }
|
|
46
|
-
* Old format: null (when empty) or { Actions: [...] }
|
|
47
|
-
*/
|
|
48
|
-
static transformHook(hook) {
|
|
49
|
-
if (!hook)
|
|
50
|
-
return null;
|
|
51
|
-
const actions = hook.actions ?? hook.Actions;
|
|
52
|
-
if (!actions || (Array.isArray(actions) && actions.length === 0)) {
|
|
53
|
-
// If hook has filters, preserve the structure
|
|
54
|
-
if (hook.filters || hook.Filters) {
|
|
55
|
-
return {
|
|
56
|
-
Filters: hook.filters ?? hook.Filters ?? null,
|
|
57
|
-
Actions: []
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
return null;
|
|
61
|
-
}
|
|
62
|
-
return {
|
|
63
|
-
Filters: hook.filters ?? hook.Filters ?? null,
|
|
64
|
-
Actions: TransitionResponseAdapter.transformActions(actions)
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Transforms actions array from camelCase to PascalCase.
|
|
69
|
-
*/
|
|
70
|
-
static transformActions(actions) {
|
|
71
|
-
if (!Array.isArray(actions))
|
|
72
|
-
return [];
|
|
73
|
-
return actions.map((action) => ({
|
|
74
|
-
ActionName: action.actionName ?? action.ActionName ?? null,
|
|
75
|
-
Description: action.description ?? action.Description ?? null,
|
|
76
|
-
ActionId: action.actionId ?? action.ActionId ?? null,
|
|
77
|
-
ActionParametersScreenID: action.actionParametersScreenID ?? action.ActionParametersScreenID ?? '',
|
|
78
|
-
$type: action.$type ?? null,
|
|
79
|
-
tokens: action.tokens ?? null
|
|
80
|
-
}));
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNpdGlvbi1yZXNwb25zZS5hZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL2hlbHBlcnMvdHJhbnNpdGlvbi1yZXNwb25zZS5hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBOzs7Ozs7R0FNRztBQUNILE1BQU0sT0FBTyx5QkFBeUI7SUFFcEM7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBMkI7UUFDMUMsTUFBTSxNQUFNLEdBQUcsUUFBUSxFQUFFLE1BQU0sQ0FBQztRQUNoQyxJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU8sUUFBUSxDQUFDO1FBRTdCLDhFQUE4RTtRQUM5RSxJQUFJLE1BQU0sQ0FBQyxZQUFZO1lBQUUsT0FBTyxRQUFRLENBQUM7UUFFekMsUUFBUSxDQUFDLE1BQU0sR0FBRztZQUNoQixZQUFZLEVBQUUsTUFBTSxDQUFDLFlBQVksSUFBSSxJQUFJO1lBQ3pDLGNBQWMsRUFBRSxNQUFNLENBQUMsY0FBYyxJQUFJLElBQUk7WUFDN0MsWUFBWSxFQUFFLHlCQUF5QixDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUM7U0FDbkYsQ0FBQztRQUVGLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRDs7T0FFRztJQUNLLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxZQUFtQjtRQUN0RCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUU1QyxPQUFPLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDeEMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFLElBQUksTUFBTSxDQUFDLEVBQUUsSUFBSSxJQUFJO1lBQ2xDLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVSxJQUFJLE1BQU0sQ0FBQyxVQUFVLElBQUksSUFBSTtZQUMxRCxZQUFZLEVBQUUsTUFBTSxDQUFDLFlBQVksSUFBSSxNQUFNLENBQUMsWUFBWSxJQUFJLElBQUk7WUFDaEUsc0JBQXNCLEVBQUUseUJBQXlCLENBQUMsYUFBYSxDQUM3RCxNQUFNLENBQUMsc0JBQXNCLElBQUksTUFBTSxDQUFDLHNCQUFzQixDQUMvRDtZQUNELHNCQUFzQixFQUFFLHlCQUF5QixDQUFDLGFBQWEsQ0FDN0QsTUFBTSxDQUFDLHNCQUFzQixJQUFJLE1BQU0sQ0FBQyxzQkFBc0IsQ0FDL0Q7WUFDRCxxQkFBcUIsRUFBRSx5QkFBeUIsQ0FBQyxhQUFhLENBQzVELE1BQU0sQ0FBQyxxQkFBcUIsSUFBSSxNQUFNLENBQUMscUJBQXFCLENBQzdEO1NBQ0YsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBUztRQUNwQyxJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRXZCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUM3QyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDakUsOENBQThDO1lBQzlDLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2pDLE9BQU87b0JBQ0wsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJO29CQUM3QyxPQUFPLEVBQUUsRUFBRTtpQkFDWixDQUFDO1lBQ0osQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELE9BQU87WUFDTCxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUk7WUFDN0MsT0FBTyxFQUFFLHlCQUF5QixDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQztTQUM3RCxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0ssTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQWM7UUFDNUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFFdkMsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ25DLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVSxJQUFJLE1BQU0sQ0FBQyxVQUFVLElBQUksSUFBSTtZQUMxRCxXQUFXLEVBQUUsTUFBTSxDQUFDLFdBQVcsSUFBSSxNQUFNLENBQUMsV0FBVyxJQUFJLElBQUk7WUFDN0QsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRLElBQUksTUFBTSxDQUFDLFFBQVEsSUFBSSxJQUFJO1lBQ3BELHdCQUF3QixFQUFFLE1BQU0sQ0FBQyx3QkFBd0IsSUFBSSxNQUFNLENBQUMsd0JBQXdCLElBQUksRUFBRTtZQUNsRyxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssSUFBSSxJQUFJO1lBQzNCLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxJQUFJLElBQUk7U0FDOUIsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXHJcbmltcG9ydCB7IENvbW1vbkFwaVJlc3BvbnNlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jb21tb24uaW50ZXJmYWNlJztcclxuXHJcbi8qKlxyXG4gKiBUcmFuc2l0aW9uUmVzcG9uc2VBZGFwdGVyIC0gVHJhbnNmb3JtcyBuZXcgdHJhbnNpdGlvbiBBUEkgcmVzcG9uc2UgKGNhbWVsQ2FzZSlcclxuICogdG8gbGVnYWN5IFBhc2NhbENhc2UgZm9ybWF0IGV4cGVjdGVkIGJ5IGV4aXN0aW5nIGFwcGxpY2F0aW9uIGNvZGUuXHJcbiAqXHJcbiAqIEhhbmRsZXMgYm90aCBHZXROZXh0U3RhdHVzIGFuZCBVcGRhdGVTdGF0dXMgcmVzcG9uc2VzIGZyb20gdGhlIG5ld1xyXG4gKiBjcnVkLnRlY2hleHRlbnNvci5jb20vYXBpL3YxL3N0YXR1cy8qIGVuZHBvaW50cy5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBUcmFuc2l0aW9uUmVzcG9uc2VBZGFwdGVyIHtcclxuXHJcbiAgLyoqXHJcbiAgICogTm9ybWFsaXplcyB0aGUgaW5uZXIgUmVzdWx0IG9mIGEgR2V0TmV4dFN0YXR1cyByZXNwb25zZSBmcm9tIGNhbWVsQ2FzZSB0byBQYXNjYWxDYXNlLlxyXG4gICAqIEBwYXJhbSByZXNwb25zZSAtIFRoZSBDb21tb25BcGlSZXNwb25zZSAoYWxyZWFkeSB3cmFwcGVyLW5vcm1hbGl6ZWQgYnkgUmVzcG9uc2VBZGFwdGVyKVxyXG4gICAqIEByZXR1cm5zIFRoZSByZXNwb25zZSB3aXRoIGlubmVyIFJlc3VsdCB0cmFuc2Zvcm1lZCB0byBsZWdhY3kgUGFzY2FsQ2FzZSBmb3JtYXRcclxuICAgKi9cclxuICBzdGF0aWMgbm9ybWFsaXplKHJlc3BvbnNlOiBDb21tb25BcGlSZXNwb25zZSk6IENvbW1vbkFwaVJlc3BvbnNlIHtcclxuICAgIGNvbnN0IHJlc3VsdCA9IHJlc3BvbnNlPy5SZXN1bHQ7XHJcbiAgICBpZiAoIXJlc3VsdCkgcmV0dXJuIHJlc3BvbnNlO1xyXG5cclxuICAgIC8vIElmIGFscmVhZHkgaW4gb2xkIFBhc2NhbENhc2UgZm9ybWF0IChoYXMgRnJvbVN0YXR1c0lkKSwgc2tpcCB0cmFuc2Zvcm1hdGlvblxyXG4gICAgaWYgKHJlc3VsdC5Gcm9tU3RhdHVzSWQpIHJldHVybiByZXNwb25zZTtcclxuXHJcbiAgICByZXNwb25zZS5SZXN1bHQgPSB7XHJcbiAgICAgIEZyb21TdGF0dXNJZDogcmVzdWx0LmZyb21TdGF0dXNJZCA/PyBudWxsLFxyXG4gICAgICBGcm9tU3RhdHVzTmFtZTogcmVzdWx0LmZyb21TdGF0dXNOYW1lID8/IG51bGwsXHJcbiAgICAgIFRvU3RhdHVzTGlzdDogVHJhbnNpdGlvblJlc3BvbnNlQWRhcHRlci50cmFuc2Zvcm1Ub1N0YXR1c0xpc3QocmVzdWx0LnRvU3RhdHVzTGlzdClcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVHJhbnNmb3JtcyB0aGUgdG9TdGF0dXNMaXN0IGFycmF5IGZyb20gY2FtZWxDYXNlIHRvIFBhc2NhbENhc2UuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzdGF0aWMgdHJhbnNmb3JtVG9TdGF0dXNMaXN0KHRvU3RhdHVzTGlzdDogYW55W10pOiBhbnlbXSB7XHJcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodG9TdGF0dXNMaXN0KSkgcmV0dXJuIFtdO1xyXG5cclxuICAgIHJldHVybiB0b1N0YXR1c0xpc3QubWFwKChzdGF0dXM6IGFueSkgPT4gKHtcclxuICAgICAgSWQ6IHN0YXR1cy5pZCA/PyBzdGF0dXMuSWQgPz8gbnVsbCxcclxuICAgICAgVG9TdGF0dXNJZDogc3RhdHVzLnRvU3RhdHVzSWQgPz8gc3RhdHVzLlRvU3RhdHVzSWQgPz8gbnVsbCxcclxuICAgICAgVG9TdGF0dXNOYW1lOiBzdGF0dXMudG9TdGF0dXNOYW1lID8/IHN0YXR1cy5Ub1N0YXR1c05hbWUgPz8gbnVsbCxcclxuICAgICAgVHJhbnNpdGlvbkhvb2tzX0JlZm9yZTogVHJhbnNpdGlvblJlc3BvbnNlQWRhcHRlci50cmFuc2Zvcm1Ib29rKFxyXG4gICAgICAgIHN0YXR1cy50cmFuc2l0aW9uSG9va3NfQmVmb3JlID8/IHN0YXR1cy5UcmFuc2l0aW9uSG9va3NfQmVmb3JlXHJcbiAgICAgICksXHJcbiAgICAgIFRyYW5zaXRpb25Ib29rc19EdXJpbmc6IFRyYW5zaXRpb25SZXNwb25zZUFkYXB0ZXIudHJhbnNmb3JtSG9vayhcclxuICAgICAgICBzdGF0dXMudHJhbnNpdGlvbkhvb2tzX0R1cmluZyA/PyBzdGF0dXMuVHJhbnNpdGlvbkhvb2tzX0R1cmluZ1xyXG4gICAgICApLFxyXG4gICAgICBUcmFuc2l0aW9uSG9va3NfQWZ0ZXI6IFRyYW5zaXRpb25SZXNwb25zZUFkYXB0ZXIudHJhbnNmb3JtSG9vayhcclxuICAgICAgICBzdGF0dXMudHJhbnNpdGlvbkhvb2tzX0FmdGVyID8/IHN0YXR1cy5UcmFuc2l0aW9uSG9va3NfQWZ0ZXJcclxuICAgICAgKVxyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVHJhbnNmb3JtcyBhIHNpbmdsZSB0cmFuc2l0aW9uIGhvb2sgZnJvbSBuZXcgZm9ybWF0IHRvIG9sZCBmb3JtYXQuXHJcbiAgICogTmV3IGZvcm1hdDogeyBmaWx0ZXJzOiBudWxsLCBhY3Rpb25zOiBbXSB9XHJcbiAgICogT2xkIGZvcm1hdDogbnVsbCAod2hlbiBlbXB0eSkgb3IgeyBBY3Rpb25zOiBbLi4uXSB9XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzdGF0aWMgdHJhbnNmb3JtSG9vayhob29rOiBhbnkpOiBhbnkge1xyXG4gICAgaWYgKCFob29rKSByZXR1cm4gbnVsbDtcclxuXHJcbiAgICBjb25zdCBhY3Rpb25zID0gaG9vay5hY3Rpb25zID8/IGhvb2suQWN0aW9ucztcclxuICAgIGlmICghYWN0aW9ucyB8fCAoQXJyYXkuaXNBcnJheShhY3Rpb25zKSAmJiBhY3Rpb25zLmxlbmd0aCA9PT0gMCkpIHtcclxuICAgICAgLy8gSWYgaG9vayBoYXMgZmlsdGVycywgcHJlc2VydmUgdGhlIHN0cnVjdHVyZVxyXG4gICAgICBpZiAoaG9vay5maWx0ZXJzIHx8IGhvb2suRmlsdGVycykge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBGaWx0ZXJzOiBob29rLmZpbHRlcnMgPz8gaG9vay5GaWx0ZXJzID8/IG51bGwsXHJcbiAgICAgICAgICBBY3Rpb25zOiBbXVxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgRmlsdGVyczogaG9vay5maWx0ZXJzID8/IGhvb2suRmlsdGVycyA/PyBudWxsLFxyXG4gICAgICBBY3Rpb25zOiBUcmFuc2l0aW9uUmVzcG9uc2VBZGFwdGVyLnRyYW5zZm9ybUFjdGlvbnMoYWN0aW9ucylcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUcmFuc2Zvcm1zIGFjdGlvbnMgYXJyYXkgZnJvbSBjYW1lbENhc2UgdG8gUGFzY2FsQ2FzZS5cclxuICAgKi9cclxuICBwcml2YXRlIHN0YXRpYyB0cmFuc2Zvcm1BY3Rpb25zKGFjdGlvbnM6IGFueVtdKTogYW55W10ge1xyXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGFjdGlvbnMpKSByZXR1cm4gW107XHJcblxyXG4gICAgcmV0dXJuIGFjdGlvbnMubWFwKChhY3Rpb246IGFueSkgPT4gKHtcclxuICAgICAgQWN0aW9uTmFtZTogYWN0aW9uLmFjdGlvbk5hbWUgPz8gYWN0aW9uLkFjdGlvbk5hbWUgPz8gbnVsbCxcclxuICAgICAgRGVzY3JpcHRpb246IGFjdGlvbi5kZXNjcmlwdGlvbiA/PyBhY3Rpb24uRGVzY3JpcHRpb24gPz8gbnVsbCxcclxuICAgICAgQWN0aW9uSWQ6IGFjdGlvbi5hY3Rpb25JZCA/PyBhY3Rpb24uQWN0aW9uSWQgPz8gbnVsbCxcclxuICAgICAgQWN0aW9uUGFyYW1ldGVyc1NjcmVlbklEOiBhY3Rpb24uYWN0aW9uUGFyYW1ldGVyc1NjcmVlbklEID8/IGFjdGlvbi5BY3Rpb25QYXJhbWV0ZXJzU2NyZWVuSUQgPz8gJycsXHJcbiAgICAgICR0eXBlOiBhY3Rpb24uJHR5cGUgPz8gbnVsbCxcclxuICAgICAgdG9rZW5zOiBhY3Rpb24udG9rZW5zID8/IG51bGxcclxuICAgIH0pKTtcclxuICB9XHJcbn0iXX0=
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
// ============= CONSTANTS =============
|
|
2
|
-
/**
|
|
3
|
-
* SignalR hub method names
|
|
4
|
-
*/
|
|
5
|
-
export const SIGNALR_HUB_METHODS = {
|
|
6
|
-
JOIN_GROUP: 'JoinGroupAsync',
|
|
7
|
-
LEAVE_GROUP: 'LeaveGroupAsync',
|
|
8
|
-
};
|
|
9
|
-
/**
|
|
10
|
-
* SignalR event names from backend
|
|
11
|
-
*/
|
|
12
|
-
export const SIGNALR_EVENTS = {
|
|
13
|
-
INSERT_COMPLETED: 'InsertOperationCompleted',
|
|
14
|
-
UPDATE_COMPLETED: 'UpdateOperationCompleted',
|
|
15
|
-
DELETE_COMPLETED: 'DeleteOperationCompleted',
|
|
16
|
-
};
|
|
17
|
-
/**
|
|
18
|
-
* CRUD operation types
|
|
19
|
-
*/
|
|
20
|
-
export const CRUD_OPERATION = {
|
|
21
|
-
INSERT: 'INSERT',
|
|
22
|
-
UPDATE: 'UPDATE',
|
|
23
|
-
DELETE: 'DELETE',
|
|
24
|
-
};
|
|
25
|
-
/**
|
|
26
|
-
* SignalR connection states
|
|
27
|
-
*/
|
|
28
|
-
export const CONNECTION_STATE = {
|
|
29
|
-
DISCONNECTED: 'Disconnected',
|
|
30
|
-
CONNECTING: 'Connecting',
|
|
31
|
-
CONNECTED: 'Connected',
|
|
32
|
-
RECONNECTING: 'Reconnecting',
|
|
33
|
-
FAILED: 'Failed',
|
|
34
|
-
};
|
|
35
|
-
/**
|
|
36
|
-
* SignalR configuration constants
|
|
37
|
-
*/
|
|
38
|
-
export const SIGNALR_CONFIG = {
|
|
39
|
-
DEFAULT_TIMEOUT: 120000, // 2 minutes
|
|
40
|
-
RECONNECT_DELAYS: [0, 2000, 10000, 30000, 60000], // Exponential backoff
|
|
41
|
-
};
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFsci5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvaW50ZXJmYWNlcy9zaWduYWxyLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFxREEsd0NBQXdDO0FBRXhDOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUc7SUFDakMsVUFBVSxFQUFFLGdCQUFnQjtJQUM1QixXQUFXLEVBQUUsaUJBQWlCO0NBQ3RCLENBQUM7QUFFWDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRztJQUM1QixnQkFBZ0IsRUFBRSwwQkFBMEI7SUFDNUMsZ0JBQWdCLEVBQUUsMEJBQTBCO0lBQzVDLGdCQUFnQixFQUFFLDBCQUEwQjtDQUNwQyxDQUFDO0FBRVg7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDNUIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsTUFBTSxFQUFFLFFBQVE7Q0FDUixDQUFDO0FBRVg7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRztJQUM5QixZQUFZLEVBQUUsY0FBYztJQUM1QixVQUFVLEVBQUUsWUFBWTtJQUN4QixTQUFTLEVBQUUsV0FBVztJQUN0QixZQUFZLEVBQUUsY0FBYztJQUM1QixNQUFNLEVBQUUsUUFBUTtDQUNSLENBQUM7QUFFWDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRztJQUM1QixlQUFlLEVBQUUsTUFBTSxFQUFFLFlBQVk7SUFDckMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUUsc0JBQXNCO0NBQ2hFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogUmF3IFNpZ25hbFIgbWVzc2FnZSB3cmFwcGVyXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFNpZ25hbFJNZXNzYWdlIHtcclxuICB0eXBlOiBudW1iZXI7XHJcbiAgdGFyZ2V0OiBzdHJpbmc7XHJcbiAgYXJndW1lbnRzOiBDcnVkTm90aWZpY2F0aW9uW107XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDUlVEIG5vdGlmaWNhdGlvbiBwYXlsb2FkIHJlY2VpdmVkIGZyb20gU2lnbmFsUiBodWJcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ3J1ZE5vdGlmaWNhdGlvbiB7XHJcbiAgLy8gQmFja2VuZCBmaWVsZHNcclxuICBjb3JyZWxhdGlvbklkOiBzdHJpbmc7XHJcbiAgcmVzdWx0OiBhbnk7XHJcbiAgZW50aXR5TmFtZTogc3RyaW5nO1xyXG4gIGFwcE9iamVjdElkOiBzdHJpbmc7XHJcbiAgaXNTdWNjZXNzOiBib29sZWFuO1xyXG4gIGVycm9yTWVzc2FnZTogc3RyaW5nIHwgbnVsbDtcclxuICBlcnJvckNvZGU6IHN0cmluZyB8IG51bGw7XHJcbiAgZXhlY3V0aW9uVGltZU1zOiBudW1iZXI7XHJcbiAgYWZmZWN0ZWRSZWNvcmRzOiBudW1iZXIgfCBudWxsO1xyXG5cclxuICAvLyBGcm9udGVuZCBhZGRpdGlvbnNcclxuICBvcGVyYXRpb24/OiBDcnVkT3BlcmF0aW9uO1xyXG4gIHJlY2VpdmVkQXQ/OiBEYXRlO1xyXG59XHJcblxyXG4vKipcclxuICogUGVuZGluZyBhc3luYyBvcGVyYXRpb24gdHJhY2tlZCBieSBPcGVyYXRpb25UcmFja2VyU2VydmljZVxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBQZW5kaW5nT3BlcmF0aW9uIHtcclxuICBjb3JyZWxhdGlvbklkOiBzdHJpbmc7XHJcbiAgdGltZXN0YW1wOiBEYXRlO1xyXG4gIHRpbWVvdXQ6IG51bWJlcjtcclxufVxyXG5cclxuLyoqXHJcbiAqIENhbGxiYWNrIGZ1bmN0aW9uIHR5cGUgZm9yIGNvbXBvbmVudCBub3RpZmljYXRpb25zXHJcbiAqL1xyXG5leHBvcnQgdHlwZSBOb3RpZmljYXRpb25DYWxsYmFjayA9IChub3RpZmljYXRpb246IENydWROb3RpZmljYXRpb24pID0+IHZvaWQ7XHJcblxyXG4vKipcclxuICogQ1JVRCBvcGVyYXRpb24gdHlwZXNcclxuICovXHJcbmV4cG9ydCB0eXBlIENydWRPcGVyYXRpb24gPSB0eXBlb2YgQ1JVRF9PUEVSQVRJT05ba2V5b2YgdHlwZW9mIENSVURfT1BFUkFUSU9OXTtcclxuXHJcbi8qKlxyXG4gKiBTaWduYWxSIGNvbm5lY3Rpb24gc3RhdGUgdHlwZXNcclxuICovXHJcbmV4cG9ydCB0eXBlIENvbm5lY3Rpb25TdGF0ZSA9IHR5cGVvZiBDT05ORUNUSU9OX1NUQVRFW2tleW9mIHR5cGVvZiBDT05ORUNUSU9OX1NUQVRFXTtcclxuXHJcbi8vID09PT09PT09PT09PT0gQ09OU1RBTlRTID09PT09PT09PT09PT1cclxuXHJcbi8qKlxyXG4gKiBTaWduYWxSIGh1YiBtZXRob2QgbmFtZXNcclxuICovXHJcbmV4cG9ydCBjb25zdCBTSUdOQUxSX0hVQl9NRVRIT0RTID0ge1xyXG4gIEpPSU5fR1JPVVA6ICdKb2luR3JvdXBBc3luYycsXHJcbiAgTEVBVkVfR1JPVVA6ICdMZWF2ZUdyb3VwQXN5bmMnLFxyXG59IGFzIGNvbnN0O1xyXG5cclxuLyoqXHJcbiAqIFNpZ25hbFIgZXZlbnQgbmFtZXMgZnJvbSBiYWNrZW5kXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgU0lHTkFMUl9FVkVOVFMgPSB7XHJcbiAgSU5TRVJUX0NPTVBMRVRFRDogJ0luc2VydE9wZXJhdGlvbkNvbXBsZXRlZCcsXHJcbiAgVVBEQVRFX0NPTVBMRVRFRDogJ1VwZGF0ZU9wZXJhdGlvbkNvbXBsZXRlZCcsXHJcbiAgREVMRVRFX0NPTVBMRVRFRDogJ0RlbGV0ZU9wZXJhdGlvbkNvbXBsZXRlZCcsXHJcbn0gYXMgY29uc3Q7XHJcblxyXG4vKipcclxuICogQ1JVRCBvcGVyYXRpb24gdHlwZXNcclxuICovXHJcbmV4cG9ydCBjb25zdCBDUlVEX09QRVJBVElPTiA9IHtcclxuICBJTlNFUlQ6ICdJTlNFUlQnLFxyXG4gIFVQREFURTogJ1VQREFURScsXHJcbiAgREVMRVRFOiAnREVMRVRFJyxcclxufSBhcyBjb25zdDtcclxuXHJcbi8qKlxyXG4gKiBTaWduYWxSIGNvbm5lY3Rpb24gc3RhdGVzXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgQ09OTkVDVElPTl9TVEFURSA9IHtcclxuICBESVNDT05ORUNURUQ6ICdEaXNjb25uZWN0ZWQnLFxyXG4gIENPTk5FQ1RJTkc6ICdDb25uZWN0aW5nJyxcclxuICBDT05ORUNURUQ6ICdDb25uZWN0ZWQnLFxyXG4gIFJFQ09OTkVDVElORzogJ1JlY29ubmVjdGluZycsXHJcbiAgRkFJTEVEOiAnRmFpbGVkJyxcclxufSBhcyBjb25zdDtcclxuXHJcbi8qKlxyXG4gKiBTaWduYWxSIGNvbmZpZ3VyYXRpb24gY29uc3RhbnRzXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgU0lHTkFMUl9DT05GSUcgPSB7XHJcbiAgREVGQVVMVF9USU1FT1VUOiAxMjAwMDAsIC8vIDIgbWludXRlc1xyXG4gIFJFQ09OTkVDVF9ERUxBWVM6IFswLCAyMDAwLCAxMDAwMCwgMzAwMDAsIDYwMDAwXSwgLy8gRXhwb25lbnRpYWwgYmFja29mZlxyXG59IGFzIGNvbnN0OyJdfQ==
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { Subject, throwError, TimeoutError } from 'rxjs';
|
|
3
|
-
import { filter, take, timeout, catchError } from 'rxjs/operators';
|
|
4
|
-
import { SIGNALR_CONFIG, } from '../../../app/interfaces/signalr.interface';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
/**
|
|
7
|
-
* Operation Tracker Service
|
|
8
|
-
* Tracks async operations by correlationId and matches them with SignalR notifications
|
|
9
|
-
* Used by TabFormioService for handling async processRequest operations
|
|
10
|
-
*/
|
|
11
|
-
export class OperationTrackerService {
|
|
12
|
-
constructor() {
|
|
13
|
-
// Map<correlationId, PendingOperation>
|
|
14
|
-
this.pendingOperations = new Map();
|
|
15
|
-
// Observable for completed operations
|
|
16
|
-
this.operationCompleted$ = new Subject();
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Register an async operation for tracking
|
|
20
|
-
*/
|
|
21
|
-
registerOperation(operation) {
|
|
22
|
-
this.pendingOperations.set(operation.correlationId, operation);
|
|
23
|
-
// Auto-cleanup after timeout
|
|
24
|
-
setTimeout(() => {
|
|
25
|
-
if (this.pendingOperations.has(operation.correlationId)) {
|
|
26
|
-
this.pendingOperations.delete(operation.correlationId);
|
|
27
|
-
}
|
|
28
|
-
}, operation.timeout || SIGNALR_CONFIG.DEFAULT_TIMEOUT);
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Wait for operation to complete via SignalR notification
|
|
32
|
-
* Returns Observable that emits when notification with matching correlationId is received
|
|
33
|
-
*/
|
|
34
|
-
waitForOperation(correlationId, timeoutMs = SIGNALR_CONFIG.DEFAULT_TIMEOUT) {
|
|
35
|
-
// Auto-register so handleNotification can match it
|
|
36
|
-
if (!this.pendingOperations.has(correlationId)) {
|
|
37
|
-
this.registerOperation({
|
|
38
|
-
correlationId,
|
|
39
|
-
timestamp: new Date(),
|
|
40
|
-
timeout: timeoutMs
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
return this.operationCompleted$.pipe(filter((notification) => notification.correlationId === correlationId), take(1), timeout(timeoutMs), catchError((error) => {
|
|
44
|
-
// Cleanup on timeout
|
|
45
|
-
this.pendingOperations.delete(correlationId);
|
|
46
|
-
if (error instanceof TimeoutError) {
|
|
47
|
-
return throwError(() => new Error('Operation timed out'));
|
|
48
|
-
}
|
|
49
|
-
return throwError(() => error);
|
|
50
|
-
}));
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Handle incoming SignalR notification
|
|
54
|
-
* Called by SignalRService when notification is received
|
|
55
|
-
*/
|
|
56
|
-
handleNotification(notification) {
|
|
57
|
-
const operation = this.pendingOperations.get(notification.correlationId);
|
|
58
|
-
if (operation) {
|
|
59
|
-
// Emit to observers waiting for this operation
|
|
60
|
-
this.operationCompleted$.next(notification);
|
|
61
|
-
// Cleanup
|
|
62
|
-
this.pendingOperations.delete(notification.correlationId);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Check if operation is pending
|
|
67
|
-
*/
|
|
68
|
-
isPending(correlationId) {
|
|
69
|
-
return this.pendingOperations.has(correlationId);
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Get pending operations count (for debugging)
|
|
73
|
-
*/
|
|
74
|
-
getPendingCount() {
|
|
75
|
-
return this.pendingOperations.size;
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Get all pending operations (for debugging)
|
|
79
|
-
*/
|
|
80
|
-
getAllPending() {
|
|
81
|
-
return Array.from(this.pendingOperations.values());
|
|
82
|
-
}
|
|
83
|
-
static { this.ɵfac = function OperationTrackerService_Factory(t) { return new (t || OperationTrackerService)(); }; }
|
|
84
|
-
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: OperationTrackerService, factory: OperationTrackerService.ɵfac, providedIn: 'root' }); }
|
|
85
|
-
}
|
|
86
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(OperationTrackerService, [{
|
|
87
|
-
type: Injectable,
|
|
88
|
-
args: [{ providedIn: 'root' }]
|
|
89
|
-
}], null, null); })();
|
|
90
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0aW9uLXRyYWNrZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi90YWItY29yZS11dGlsaXR5L2NvcmUvc2VydmljZS9zaWduYWxyL29wZXJhdGlvbi10cmFja2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWMsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckUsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25FLE9BQU8sRUFHTCxjQUFjLEdBQ2YsTUFBTSwyQ0FBMkMsQ0FBQzs7QUFFbkQ7Ozs7R0FJRztBQUVILE1BQU0sT0FBTyx1QkFBdUI7SUFEcEM7UUFFRSx1Q0FBdUM7UUFDL0Isc0JBQWlCLEdBQUcsSUFBSSxHQUFHLEVBQTRCLENBQUM7UUFFaEUsc0NBQXNDO1FBQzlCLHdCQUFtQixHQUFHLElBQUksT0FBTyxFQUFvQixDQUFDO0tBZ0YvRDtJQTlFQzs7T0FFRztJQUNILGlCQUFpQixDQUFDLFNBQTJCO1FBQzNDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUUvRCw2QkFBNkI7UUFDN0IsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztnQkFDeEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDekQsQ0FBQztRQUNILENBQUMsRUFBRSxTQUFTLENBQUMsT0FBTyxJQUFJLGNBQWMsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsZ0JBQWdCLENBQUMsYUFBcUIsRUFBRSxZQUFvQixjQUFjLENBQUMsZUFBZTtRQUN4RixtREFBbUQ7UUFDbkQsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztZQUMvQyxJQUFJLENBQUMsaUJBQWlCLENBQUM7Z0JBQ3JCLGFBQWE7Z0JBQ2IsU0FBUyxFQUFFLElBQUksSUFBSSxFQUFFO2dCQUNyQixPQUFPLEVBQUUsU0FBUzthQUNuQixDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUNsQyxNQUFNLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxhQUFhLEtBQUssYUFBYSxDQUFDLEVBQ3RFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQ2xCLFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ25CLHFCQUFxQjtZQUNyQixJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBRTdDLElBQUksS0FBSyxZQUFZLFlBQVksRUFBRSxDQUFDO2dCQUNsQyxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUM7WUFDNUQsQ0FBQztZQUNELE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsa0JBQWtCLENBQUMsWUFBOEI7UUFDL0MsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDekUsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNkLCtDQUErQztZQUMvQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBRTVDLFVBQVU7WUFDVixJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM1RCxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsU0FBUyxDQUFDLGFBQXFCO1FBQzdCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7T0FFRztJQUNILGFBQWE7UUFDWCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDckQsQ0FBQzt3RkFwRlUsdUJBQXVCO3VFQUF2Qix1QkFBdUIsV0FBdkIsdUJBQXVCLG1CQURWLE1BQU07O2lGQUNuQix1QkFBdUI7Y0FEbkMsVUFBVTtlQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdGhyb3dFcnJvciwgVGltZW91dEVycm9yIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGZpbHRlciwgdGFrZSwgdGltZW91dCwgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHtcclxuICBDcnVkTm90aWZpY2F0aW9uLFxyXG4gIFBlbmRpbmdPcGVyYXRpb24sXHJcbiAgU0lHTkFMUl9DT05GSUcsXHJcbn0gZnJvbSAnLi4vLi4vLi4vYXBwL2ludGVyZmFjZXMvc2lnbmFsci5pbnRlcmZhY2UnO1xyXG5cclxuLyoqXHJcbiAqIE9wZXJhdGlvbiBUcmFja2VyIFNlcnZpY2VcclxuICogVHJhY2tzIGFzeW5jIG9wZXJhdGlvbnMgYnkgY29ycmVsYXRpb25JZCBhbmQgbWF0Y2hlcyB0aGVtIHdpdGggU2lnbmFsUiBub3RpZmljYXRpb25zXHJcbiAqIFVzZWQgYnkgVGFiRm9ybWlvU2VydmljZSBmb3IgaGFuZGxpbmcgYXN5bmMgcHJvY2Vzc1JlcXVlc3Qgb3BlcmF0aW9uc1xyXG4gKi9cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIE9wZXJhdGlvblRyYWNrZXJTZXJ2aWNlIHtcclxuICAvLyBNYXA8Y29ycmVsYXRpb25JZCwgUGVuZGluZ09wZXJhdGlvbj5cclxuICBwcml2YXRlIHBlbmRpbmdPcGVyYXRpb25zID0gbmV3IE1hcDxzdHJpbmcsIFBlbmRpbmdPcGVyYXRpb24+KCk7XHJcblxyXG4gIC8vIE9ic2VydmFibGUgZm9yIGNvbXBsZXRlZCBvcGVyYXRpb25zXHJcbiAgcHJpdmF0ZSBvcGVyYXRpb25Db21wbGV0ZWQkID0gbmV3IFN1YmplY3Q8Q3J1ZE5vdGlmaWNhdGlvbj4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogUmVnaXN0ZXIgYW4gYXN5bmMgb3BlcmF0aW9uIGZvciB0cmFja2luZ1xyXG4gICAqL1xyXG4gIHJlZ2lzdGVyT3BlcmF0aW9uKG9wZXJhdGlvbjogUGVuZGluZ09wZXJhdGlvbik6IHZvaWQge1xyXG4gICAgdGhpcy5wZW5kaW5nT3BlcmF0aW9ucy5zZXQob3BlcmF0aW9uLmNvcnJlbGF0aW9uSWQsIG9wZXJhdGlvbik7XHJcblxyXG4gICAgLy8gQXV0by1jbGVhbnVwIGFmdGVyIHRpbWVvdXRcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5wZW5kaW5nT3BlcmF0aW9ucy5oYXMob3BlcmF0aW9uLmNvcnJlbGF0aW9uSWQpKSB7XHJcbiAgICAgICAgdGhpcy5wZW5kaW5nT3BlcmF0aW9ucy5kZWxldGUob3BlcmF0aW9uLmNvcnJlbGF0aW9uSWQpO1xyXG4gICAgICB9XHJcbiAgICB9LCBvcGVyYXRpb24udGltZW91dCB8fCBTSUdOQUxSX0NPTkZJRy5ERUZBVUxUX1RJTUVPVVQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogV2FpdCBmb3Igb3BlcmF0aW9uIHRvIGNvbXBsZXRlIHZpYSBTaWduYWxSIG5vdGlmaWNhdGlvblxyXG4gICAqIFJldHVybnMgT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHdoZW4gbm90aWZpY2F0aW9uIHdpdGggbWF0Y2hpbmcgY29ycmVsYXRpb25JZCBpcyByZWNlaXZlZFxyXG4gICAqL1xyXG4gIHdhaXRGb3JPcGVyYXRpb24oY29ycmVsYXRpb25JZDogc3RyaW5nLCB0aW1lb3V0TXM6IG51bWJlciA9IFNJR05BTFJfQ09ORklHLkRFRkFVTFRfVElNRU9VVCk6IE9ic2VydmFibGU8Q3J1ZE5vdGlmaWNhdGlvbj4ge1xyXG4gICAgLy8gQXV0by1yZWdpc3RlciBzbyBoYW5kbGVOb3RpZmljYXRpb24gY2FuIG1hdGNoIGl0XHJcbiAgICBpZiAoIXRoaXMucGVuZGluZ09wZXJhdGlvbnMuaGFzKGNvcnJlbGF0aW9uSWQpKSB7XHJcbiAgICAgIHRoaXMucmVnaXN0ZXJPcGVyYXRpb24oe1xyXG4gICAgICAgIGNvcnJlbGF0aW9uSWQsXHJcbiAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLFxyXG4gICAgICAgIHRpbWVvdXQ6IHRpbWVvdXRNc1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLm9wZXJhdGlvbkNvbXBsZXRlZCQucGlwZShcclxuICAgICAgZmlsdGVyKChub3RpZmljYXRpb24pID0+IG5vdGlmaWNhdGlvbi5jb3JyZWxhdGlvbklkID09PSBjb3JyZWxhdGlvbklkKSxcclxuICAgICAgdGFrZSgxKSxcclxuICAgICAgdGltZW91dCh0aW1lb3V0TXMpLFxyXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgIC8vIENsZWFudXAgb24gdGltZW91dFxyXG4gICAgICAgIHRoaXMucGVuZGluZ09wZXJhdGlvbnMuZGVsZXRlKGNvcnJlbGF0aW9uSWQpO1xyXG5cclxuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBUaW1lb3V0RXJyb3IpIHtcclxuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcignT3BlcmF0aW9uIHRpbWVkIG91dCcpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZSBpbmNvbWluZyBTaWduYWxSIG5vdGlmaWNhdGlvblxyXG4gICAqIENhbGxlZCBieSBTaWduYWxSU2VydmljZSB3aGVuIG5vdGlmaWNhdGlvbiBpcyByZWNlaXZlZFxyXG4gICAqL1xyXG4gIGhhbmRsZU5vdGlmaWNhdGlvbihub3RpZmljYXRpb246IENydWROb3RpZmljYXRpb24pOiB2b2lkIHtcclxuICAgIGNvbnN0IG9wZXJhdGlvbiA9IHRoaXMucGVuZGluZ09wZXJhdGlvbnMuZ2V0KG5vdGlmaWNhdGlvbi5jb3JyZWxhdGlvbklkKTtcclxuICAgIGlmIChvcGVyYXRpb24pIHtcclxuICAgICAgLy8gRW1pdCB0byBvYnNlcnZlcnMgd2FpdGluZyBmb3IgdGhpcyBvcGVyYXRpb25cclxuICAgICAgdGhpcy5vcGVyYXRpb25Db21wbGV0ZWQkLm5leHQobm90aWZpY2F0aW9uKTtcclxuXHJcbiAgICAgIC8vIENsZWFudXBcclxuICAgICAgdGhpcy5wZW5kaW5nT3BlcmF0aW9ucy5kZWxldGUobm90aWZpY2F0aW9uLmNvcnJlbGF0aW9uSWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2sgaWYgb3BlcmF0aW9uIGlzIHBlbmRpbmdcclxuICAgKi9cclxuICBpc1BlbmRpbmcoY29ycmVsYXRpb25JZDogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5wZW5kaW5nT3BlcmF0aW9ucy5oYXMoY29ycmVsYXRpb25JZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgcGVuZGluZyBvcGVyYXRpb25zIGNvdW50IChmb3IgZGVidWdnaW5nKVxyXG4gICAqL1xyXG4gIGdldFBlbmRpbmdDb3VudCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMucGVuZGluZ09wZXJhdGlvbnMuc2l6ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBhbGwgcGVuZGluZyBvcGVyYXRpb25zIChmb3IgZGVidWdnaW5nKVxyXG4gICAqL1xyXG4gIGdldEFsbFBlbmRpbmcoKTogUGVuZGluZ09wZXJhdGlvbltdIHtcclxuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMucGVuZGluZ09wZXJhdGlvbnMudmFsdWVzKCkpO1xyXG4gIH1cclxufSJdfQ==
|