@workwell-global/toolkit 1.1.41 → 1.1.42

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.
@@ -29,6 +29,52 @@ export declare const SGetCaseBFF: z.ZodObject<import("../../api/_entityTools/Sch
29
29
  readonly type: z.ZodOptional<z.ZodNullable<z.ZodString>>;
30
30
  };
31
31
  }> & {
32
+ status: z.ZodEnum<["open", "closed"]>;
33
+ requiresResponse: z.ZodBoolean;
34
+ latestActivity: z.ZodOptional<z.ZodObject<import("../../api/_entityTools/SchemasEntityTools.js").TPrettyShape<{
35
+ readonly activityid: {
36
+ readonly pretty: "activityId";
37
+ readonly type: z.ZodString;
38
+ };
39
+ readonly activitytypecode: {
40
+ readonly pretty: "activityType";
41
+ readonly type: z.ZodOptional<z.ZodNullable<z.ZodString>>;
42
+ };
43
+ readonly subject: {
44
+ readonly pretty: "subject";
45
+ readonly type: z.ZodOptional<z.ZodNullable<z.ZodString>>;
46
+ };
47
+ readonly description: {
48
+ readonly pretty: "body";
49
+ readonly type: z.ZodOptional<z.ZodNullable<z.ZodString>>;
50
+ };
51
+ readonly createdon: {
52
+ readonly pretty: "createdOn";
53
+ readonly type: z.ZodOptional<z.ZodNullable<z.ZodString>>;
54
+ };
55
+ readonly modifiedon: {
56
+ readonly pretty: "modifiedOn";
57
+ readonly type: z.ZodOptional<z.ZodNullable<z.ZodString>>;
58
+ };
59
+ }> & {
60
+ fromUser: z.ZodBoolean;
61
+ }, z.UnknownKeysParam, z.ZodTypeAny, {
62
+ activityId: string;
63
+ fromUser: boolean;
64
+ createdOn?: string | null | undefined;
65
+ modifiedOn?: string | null | undefined;
66
+ body?: string | null | undefined;
67
+ activityType?: string | null | undefined;
68
+ subject?: string | null | undefined;
69
+ }, {
70
+ activityId: string;
71
+ fromUser: boolean;
72
+ createdOn?: string | null | undefined;
73
+ modifiedOn?: string | null | undefined;
74
+ body?: string | null | undefined;
75
+ activityType?: string | null | undefined;
76
+ subject?: string | null | undefined;
77
+ }>>;
32
78
  activities: z.ZodOptional<z.ZodArray<z.ZodObject<import("../../api/_entityTools/SchemasEntityTools.js").TPrettyShape<{
33
79
  readonly activityid: {
34
80
  readonly pretty: "activityId";
@@ -74,7 +120,9 @@ export declare const SGetCaseBFF: z.ZodObject<import("../../api/_entityTools/Sch
74
120
  subject?: string | null | undefined;
75
121
  }>, "many">>;
76
122
  }, z.UnknownKeysParam, z.ZodTypeAny, {
123
+ status: "open" | "closed";
77
124
  caseId: string;
125
+ requiresResponse: boolean;
78
126
  createdOn?: string | null | undefined;
79
127
  modifiedOn?: string | null | undefined;
80
128
  stateCode?: number | null | undefined;
@@ -90,8 +138,19 @@ export declare const SGetCaseBFF: z.ZodObject<import("../../api/_entityTools/Sch
90
138
  activityType?: string | null | undefined;
91
139
  subject?: string | null | undefined;
92
140
  }[] | undefined;
141
+ latestActivity?: {
142
+ activityId: string;
143
+ fromUser: boolean;
144
+ createdOn?: string | null | undefined;
145
+ modifiedOn?: string | null | undefined;
146
+ body?: string | null | undefined;
147
+ activityType?: string | null | undefined;
148
+ subject?: string | null | undefined;
149
+ } | undefined;
93
150
  }, {
151
+ status: "open" | "closed";
94
152
  caseId: string;
153
+ requiresResponse: boolean;
95
154
  createdOn?: string | null | undefined;
96
155
  modifiedOn?: string | null | undefined;
97
156
  stateCode?: number | null | undefined;
@@ -107,6 +166,15 @@ export declare const SGetCaseBFF: z.ZodObject<import("../../api/_entityTools/Sch
107
166
  activityType?: string | null | undefined;
108
167
  subject?: string | null | undefined;
109
168
  }[] | undefined;
169
+ latestActivity?: {
170
+ activityId: string;
171
+ fromUser: boolean;
172
+ createdOn?: string | null | undefined;
173
+ modifiedOn?: string | null | undefined;
174
+ body?: string | null | undefined;
175
+ activityType?: string | null | undefined;
176
+ subject?: string | null | undefined;
177
+ } | undefined;
110
178
  }>;
111
179
  export declare const SCasePathParamsBFF: z.ZodObject<{
112
180
  caseId: z.ZodString;
@@ -1 +1 @@
1
- {"version":3,"file":"SGetCaseBFF.d.ts","sourceRoot":"","sources":["../../../../../src/models/schemas/bff/caseDetail/SGetCaseBFF.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAA;AAkBnB,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEtB,CAAA;AAEF,eAAO,MAAM,kBAAkB;;;;;;;;;EAG7B,CAAA;AAEF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AACnE,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAA"}
1
+ {"version":3,"file":"SGetCaseBFF.d.ts","sourceRoot":"","sources":["../../../../../src/models/schemas/bff/caseDetail/SGetCaseBFF.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAA;AAqBnB,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKtB,CAAA;AAEF,eAAO,MAAM,kBAAkB;;;;;;;;;EAG7B,CAAA;AAEF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AACnE,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAA"}
@@ -2,6 +2,7 @@ import z from 'zod';
2
2
  import { caseManagementFields } from '../../api/caseManagement/DCaseManagementAPI.js';
3
3
  import { createPrettySchema, pickPrettyFields, } from '../../api/_entityTools/SchemasEntityTools.js';
4
4
  import { SGetCaseActivityBFF } from './SGetCaseActivityBFF.js';
5
+ import { casePortalStatuses } from '../helpers/CaseHelper.js';
5
6
  const filteredFields = pickPrettyFields(caseManagementFields, [
6
7
  'caseTitle',
7
8
  'caseId',
@@ -11,7 +12,12 @@ const filteredFields = pickPrettyFields(caseManagementFields, [
11
12
  'createdOn',
12
13
  'modifiedOn',
13
14
  ]);
15
+ // `status`, `requiresResponse` and `latestActivity` are derived in the BFF
16
+ // (see helpers/CaseHelper.ts); `activities` holds only visible types, newest first.
14
17
  export const SGetCaseBFF = createPrettySchema(filteredFields).extend({
18
+ status: z.enum(casePortalStatuses),
19
+ requiresResponse: z.boolean(),
20
+ latestActivity: SGetCaseActivityBFF.optional(),
15
21
  activities: z.array(SGetCaseActivityBFF).optional(),
16
22
  });
17
23
  export const SCasePathParamsBFF = z.object({
@@ -1 +1 @@
1
- {"version":3,"file":"SGetCaseBFF.js","sourceRoot":"","sources":["../../../../../src/models/schemas/bff/caseDetail/SGetCaseBFF.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAA;AACnB,OAAO,EAAE,oBAAoB,EAAE,MAAM,gDAAgD,CAAA;AACrF,OAAO,EACL,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,8CAA8C,CAAA;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,MAAM,cAAc,GAAG,gBAAgB,CAAC,oBAAoB,EAAE;IAC5D,WAAW;IACX,QAAQ;IACR,cAAc;IACd,WAAW;IACX,YAAY;IACZ,WAAW;IACX,YAAY;CACb,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,kBAAkB,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC;IACnE,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,QAAQ,EAAE;CACpD,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IACzB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;CACrC,CAAC,CAAA"}
1
+ {"version":3,"file":"SGetCaseBFF.js","sourceRoot":"","sources":["../../../../../src/models/schemas/bff/caseDetail/SGetCaseBFF.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAA;AACnB,OAAO,EAAE,oBAAoB,EAAE,MAAM,gDAAgD,CAAA;AACrF,OAAO,EACL,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,8CAA8C,CAAA;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAE7D,MAAM,cAAc,GAAG,gBAAgB,CAAC,oBAAoB,EAAE;IAC5D,WAAW;IACX,QAAQ;IACR,cAAc;IACd,WAAW;IACX,YAAY;IACZ,WAAW;IACX,YAAY;CACb,CAAC,CAAA;AAEF,2EAA2E;AAC3E,oFAAoF;AACpF,MAAM,CAAC,MAAM,WAAW,GAAG,kBAAkB,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC;IACnE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC;IAClC,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE;IAC7B,cAAc,EAAE,mBAAmB,CAAC,QAAQ,EAAE;IAC9C,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,QAAQ,EAAE;CACpD,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IACzB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;CACrC,CAAC,CAAA"}
@@ -28,22 +28,91 @@ export declare const SGetCasesSummaryBFF: z.ZodObject<import("../../api/_entityT
28
28
  readonly pretty: "modifiedOn";
29
29
  readonly type: z.ZodOptional<z.ZodNullable<z.ZodString>>;
30
30
  };
31
- }>, z.UnknownKeysParam, z.ZodTypeAny, {
31
+ }> & {
32
+ status: z.ZodEnum<["open", "closed"]>;
33
+ requiresResponse: z.ZodBoolean;
34
+ latestActivity: z.ZodOptional<z.ZodObject<import("../../api/_entityTools/SchemasEntityTools.js").TPrettyShape<{
35
+ readonly activityid: {
36
+ readonly pretty: "activityId";
37
+ readonly type: z.ZodString;
38
+ };
39
+ readonly activitytypecode: {
40
+ readonly pretty: "activityType";
41
+ readonly type: z.ZodOptional<z.ZodNullable<z.ZodString>>;
42
+ };
43
+ readonly subject: {
44
+ readonly pretty: "subject";
45
+ readonly type: z.ZodOptional<z.ZodNullable<z.ZodString>>;
46
+ };
47
+ readonly description: {
48
+ readonly pretty: "body";
49
+ readonly type: z.ZodOptional<z.ZodNullable<z.ZodString>>;
50
+ };
51
+ readonly createdon: {
52
+ readonly pretty: "createdOn";
53
+ readonly type: z.ZodOptional<z.ZodNullable<z.ZodString>>;
54
+ };
55
+ readonly modifiedon: {
56
+ readonly pretty: "modifiedOn";
57
+ readonly type: z.ZodOptional<z.ZodNullable<z.ZodString>>;
58
+ };
59
+ }> & {
60
+ fromUser: z.ZodBoolean;
61
+ }, z.UnknownKeysParam, z.ZodTypeAny, {
62
+ activityId: string;
63
+ fromUser: boolean;
64
+ createdOn?: string | null | undefined;
65
+ modifiedOn?: string | null | undefined;
66
+ body?: string | null | undefined;
67
+ activityType?: string | null | undefined;
68
+ subject?: string | null | undefined;
69
+ }, {
70
+ activityId: string;
71
+ fromUser: boolean;
72
+ createdOn?: string | null | undefined;
73
+ modifiedOn?: string | null | undefined;
74
+ body?: string | null | undefined;
75
+ activityType?: string | null | undefined;
76
+ subject?: string | null | undefined;
77
+ }>>;
78
+ }, z.UnknownKeysParam, z.ZodTypeAny, {
79
+ status: "open" | "closed";
32
80
  caseId: string;
81
+ requiresResponse: boolean;
33
82
  createdOn?: string | null | undefined;
34
83
  modifiedOn?: string | null | undefined;
35
84
  stateCode?: number | null | undefined;
36
85
  statusCode?: number | null | undefined;
37
86
  caseTitle?: string | null | undefined;
38
87
  ticketNumber?: string | null | undefined;
88
+ latestActivity?: {
89
+ activityId: string;
90
+ fromUser: boolean;
91
+ createdOn?: string | null | undefined;
92
+ modifiedOn?: string | null | undefined;
93
+ body?: string | null | undefined;
94
+ activityType?: string | null | undefined;
95
+ subject?: string | null | undefined;
96
+ } | undefined;
39
97
  }, {
98
+ status: "open" | "closed";
40
99
  caseId: string;
100
+ requiresResponse: boolean;
41
101
  createdOn?: string | null | undefined;
42
102
  modifiedOn?: string | null | undefined;
43
103
  stateCode?: number | null | undefined;
44
104
  statusCode?: number | null | undefined;
45
105
  caseTitle?: string | null | undefined;
46
106
  ticketNumber?: string | null | undefined;
107
+ latestActivity?: {
108
+ activityId: string;
109
+ fromUser: boolean;
110
+ createdOn?: string | null | undefined;
111
+ modifiedOn?: string | null | undefined;
112
+ body?: string | null | undefined;
113
+ activityType?: string | null | undefined;
114
+ subject?: string | null | undefined;
115
+ } | undefined;
47
116
  }>;
48
117
  export declare const SCasesSummaryPathParamsBFF: z.ZodObject<{
49
118
  userId: z.ZodString;
@@ -1 +1 @@
1
- {"version":3,"file":"SGetCasesSummaryBFF.d.ts","sourceRoot":"","sources":["../../../../../src/models/schemas/bff/casesSummary/SGetCasesSummaryBFF.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAA;AAiBnB,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAqC,CAAA;AAErE,eAAO,MAAM,0BAA0B;;;;;;EAErC,CAAA;AAEF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AACrE,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAC9C,OAAO,0BAA0B,CAClC,CAAA"}
1
+ {"version":3,"file":"SGetCasesSummaryBFF.d.ts","sourceRoot":"","sources":["../../../../../src/models/schemas/bff/casesSummary/SGetCasesSummaryBFF.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAA;AAqBnB,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAI9B,CAAA;AAEF,eAAO,MAAM,0BAA0B;;;;;;EAErC,CAAA;AAEF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AACrE,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAC9C,OAAO,0BAA0B,CAClC,CAAA"}
@@ -1,6 +1,8 @@
1
1
  import z from 'zod';
2
2
  import { caseManagementFields } from '../../api/caseManagement/DCaseManagementAPI.js';
3
3
  import { createPrettySchema, pickPrettyFields, } from '../../api/_entityTools/SchemasEntityTools.js';
4
+ import { SGetCaseActivityBFF } from '../caseDetail/SGetCaseActivityBFF.js';
5
+ import { casePortalStatuses } from '../helpers/CaseHelper.js';
4
6
  const filteredFields = pickPrettyFields(caseManagementFields, [
5
7
  'caseTitle',
6
8
  'caseId',
@@ -10,7 +12,13 @@ const filteredFields = pickPrettyFields(caseManagementFields, [
10
12
  'createdOn',
11
13
  'modifiedOn',
12
14
  ]);
13
- export const SGetCasesSummaryBFF = createPrettySchema(filteredFields);
15
+ // `status`, `requiresResponse` and `latestActivity` are derived in the BFF
16
+ // (see helpers/CaseHelper.ts) so the portals never re-implement the rules.
17
+ export const SGetCasesSummaryBFF = createPrettySchema(filteredFields).extend({
18
+ status: z.enum(casePortalStatuses),
19
+ requiresResponse: z.boolean(),
20
+ latestActivity: SGetCaseActivityBFF.optional(),
21
+ });
14
22
  export const SCasesSummaryPathParamsBFF = z.object({
15
23
  userId: z.string().uuid(),
16
24
  });
@@ -1 +1 @@
1
- {"version":3,"file":"SGetCasesSummaryBFF.js","sourceRoot":"","sources":["../../../../../src/models/schemas/bff/casesSummary/SGetCasesSummaryBFF.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAA;AACnB,OAAO,EAAE,oBAAoB,EAAE,MAAM,gDAAgD,CAAA;AACrF,OAAO,EACL,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,8CAA8C,CAAA;AAErD,MAAM,cAAc,GAAG,gBAAgB,CAAC,oBAAoB,EAAE;IAC5D,WAAW;IACX,QAAQ;IACR,cAAc;IACd,WAAW;IACX,YAAY;IACZ,WAAW;IACX,YAAY;CACb,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,kBAAkB,CAAC,cAAc,CAAC,CAAA;AAErE,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;CAC1B,CAAC,CAAA"}
1
+ {"version":3,"file":"SGetCasesSummaryBFF.js","sourceRoot":"","sources":["../../../../../src/models/schemas/bff/casesSummary/SGetCasesSummaryBFF.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAA;AACnB,OAAO,EAAE,oBAAoB,EAAE,MAAM,gDAAgD,CAAA;AACrF,OAAO,EACL,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,8CAA8C,CAAA;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAA;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAE7D,MAAM,cAAc,GAAG,gBAAgB,CAAC,oBAAoB,EAAE;IAC5D,WAAW;IACX,QAAQ;IACR,cAAc;IACd,WAAW;IACX,YAAY;IACZ,WAAW;IACX,YAAY;CACb,CAAC,CAAA;AAEF,2EAA2E;AAC3E,2EAA2E;AAC3E,MAAM,CAAC,MAAM,mBAAmB,GAAG,kBAAkB,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC;IAC3E,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC;IAClC,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE;IAC7B,cAAc,EAAE,mBAAmB,CAAC,QAAQ,EAAE;CAC/C,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;CAC1B,CAAC,CAAA"}
@@ -0,0 +1,38 @@
1
+ /** Portal-facing case status. D365 `resolved` AND `cancelled` both read as closed. */
2
+ export declare const casePortalStatuses: readonly ["open", "closed"];
3
+ export type TCasePortalStatus = (typeof casePortalStatuses)[number];
4
+ export declare const toCasePortalStatus: (stateCode: number | null | undefined) => TCasePortalStatus;
5
+ /** The minimum an activity needs for visibility and sender checks. */
6
+ export type TCaseActivityLike = {
7
+ activityType?: string | null;
8
+ createdOn?: string | null;
9
+ modifiedOn?: string | null;
10
+ parties?: {
11
+ contactId?: string | null;
12
+ activityRole?: number | null;
13
+ }[] | null;
14
+ };
15
+ /**
16
+ * Activity types a portal user may see on a case timeline (#1601). Anything
17
+ * else (phone call, task, appointment, letter...) is internal and dropped.
18
+ */
19
+ export declare const visibleCaseActivityTypes: readonly string[];
20
+ /**
21
+ * An email is visible only when the user is one of its parties (internal-only
22
+ * emails are hidden); web messages and case resolutions are always visible.
23
+ */
24
+ export declare const isVisibleCaseActivity: (activity: TCaseActivityLike, userId: string) => boolean;
25
+ /** The user authored an activity when they are its Sender/From party. */
26
+ export declare const isActivityFromUser: (activity: TCaseActivityLike, userId: string) => boolean;
27
+ /** Visible activities, newest first by createdOn (falling back to modifiedOn). */
28
+ export declare const sortVisibleCaseActivities: <T extends TCaseActivityLike>(activities: T[] | null | undefined, userId: string) => T[];
29
+ export declare const selectLatestVisibleActivity: <T extends TCaseActivityLike>(activities: T[] | null | undefined, userId: string) => T | undefined;
30
+ /**
31
+ * A case requires the user's response when it is open and the latest visible
32
+ * activity was not sent by them (#1595). Closed cases never do, even though
33
+ * the user may still reply to them.
34
+ */
35
+ export declare const isCaseRequiringResponse: (status: TCasePortalStatus, latestActivity: {
36
+ fromUser: boolean;
37
+ } | null | undefined) => boolean;
38
+ //# sourceMappingURL=CaseHelper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CaseHelper.d.ts","sourceRoot":"","sources":["../../../../../src/models/schemas/bff/helpers/CaseHelper.ts"],"names":[],"mappings":"AAOA,sFAAsF;AACtF,eAAO,MAAM,kBAAkB,6BAA8B,CAAA;AAC7D,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAA;AAEnE,eAAO,MAAM,kBAAkB,GAC7B,WAAW,MAAM,GAAG,IAAI,GAAG,SAAS,KACnC,iBAGW,CAAA;AAEd,sEAAsE;AACtE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,EAAE,GAAG,IAAI,CAAA;CAC/E,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,wBAAwB,EAAE,SAAS,MAAM,EAIrD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,qBAAqB,GAChC,UAAU,iBAAiB,EAC3B,QAAQ,MAAM,KACb,OAOF,CAAA;AAED,yEAAyE;AACzE,eAAO,MAAM,kBAAkB,GAC7B,UAAU,iBAAiB,EAC3B,QAAQ,MAAM,KACb,OAIsB,CAAA;AAWzB,kFAAkF;AAClF,eAAO,MAAM,yBAAyB,GAAI,CAAC,SAAS,iBAAiB,EACnE,YAAY,CAAC,EAAE,GAAG,IAAI,GAAG,SAAS,EAClC,QAAQ,MAAM,KACb,CAAC,EAIkD,CAAA;AAEtD,eAAO,MAAM,2BAA2B,GAAI,CAAC,SAAS,iBAAiB,EACrE,YAAY,CAAC,EAAE,GAAG,IAAI,GAAG,SAAS,EAClC,QAAQ,MAAM,KACb,CAAC,GAAG,SAA6D,CAAA;AAEpE;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,GAClC,QAAQ,iBAAiB,EACzB,gBAAgB;IAAE,QAAQ,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,KACvD,OAA4E,CAAA"}
@@ -0,0 +1,55 @@
1
+ import { caseManagementOptions } from '../../api/caseManagement/DCaseManagementAPI.js';
2
+ import { activityPointerOptions } from '../../api/activityPointer/DActivityPointerAPI.js';
3
+ import { activityPartyOptions } from '../../api/activityParty/DActivityPartyAPI.js';
4
+ // Case Management business rules shared by every BFF route (list, detail,
5
+ // metrics) so the portals never re-derive them. Pure functions, no D365 access.
6
+ /** Portal-facing case status. D365 `resolved` AND `cancelled` both read as closed. */
7
+ export const casePortalStatuses = ['open', 'closed'];
8
+ export const toCasePortalStatus = (stateCode) => stateCode == null || stateCode === caseManagementOptions.Status.active
9
+ ? 'open'
10
+ : 'closed';
11
+ /**
12
+ * Activity types a portal user may see on a case timeline (#1601). Anything
13
+ * else (phone call, task, appointment, letter...) is internal and dropped.
14
+ */
15
+ export const visibleCaseActivityTypes = [
16
+ activityPointerOptions.ActivityTypes.email,
17
+ activityPointerOptions.ActivityTypes.webMessage,
18
+ activityPointerOptions.ActivityTypes.incidentResolution,
19
+ ];
20
+ /**
21
+ * An email is visible only when the user is one of its parties (internal-only
22
+ * emails are hidden); web messages and case resolutions are always visible.
23
+ */
24
+ export const isVisibleCaseActivity = (activity, userId) => {
25
+ const type = activity.activityType ?? '';
26
+ if (!visibleCaseActivityTypes.includes(type))
27
+ return false;
28
+ if (type === activityPointerOptions.ActivityTypes.email) {
29
+ return !!activity.parties?.some(party => party.contactId === userId);
30
+ }
31
+ return true;
32
+ };
33
+ /** The user authored an activity when they are its Sender/From party. */
34
+ export const isActivityFromUser = (activity, userId) => activity.parties?.find(party => party.activityRole === activityPartyOptions.ParticipationTypes.Sender)?.contactId === userId;
35
+ // Chronology is createdOn. D365 rewrites modifiedOn whenever an activity's
36
+ // status changes (e.g. every open activity is completed when a case is
37
+ // resolved), so ordering by it scrambles a thread. modifiedOn is only a fallback.
38
+ const activityTime = (activity) => {
39
+ const stamp = activity.createdOn ?? activity.modifiedOn;
40
+ const time = stamp ? new Date(stamp).getTime() : NaN;
41
+ return Number.isNaN(time) ? 0 : time;
42
+ };
43
+ /** Visible activities, newest first by createdOn (falling back to modifiedOn). */
44
+ export const sortVisibleCaseActivities = (activities, userId) => (activities ?? [])
45
+ .filter(activity => isVisibleCaseActivity(activity, userId))
46
+ .slice()
47
+ .sort((a, b) => activityTime(b) - activityTime(a));
48
+ export const selectLatestVisibleActivity = (activities, userId) => sortVisibleCaseActivities(activities, userId)[0];
49
+ /**
50
+ * A case requires the user's response when it is open and the latest visible
51
+ * activity was not sent by them (#1595). Closed cases never do, even though
52
+ * the user may still reply to them.
53
+ */
54
+ export const isCaseRequiringResponse = (status, latestActivity) => status === 'open' && !!latestActivity && !latestActivity.fromUser;
55
+ //# sourceMappingURL=CaseHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CaseHelper.js","sourceRoot":"","sources":["../../../../../src/models/schemas/bff/helpers/CaseHelper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=CaseHelper.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CaseHelper.test.d.ts","sourceRoot":"","sources":["../../../../../src/models/schemas/bff/helpers/CaseHelper.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,113 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { isActivityFromUser, isCaseRequiringResponse, isVisibleCaseActivity, selectLatestVisibleActivity, sortVisibleCaseActivities, toCasePortalStatus, } from './CaseHelper.js';
3
+ const USER = '22222222-2222-4222-8222-222222222222';
4
+ const AGENT = '33333333-3333-4333-8333-333333333333';
5
+ const sender = (contactId) => ({ contactId, activityRole: 1 });
6
+ const recipient = (contactId) => ({ contactId, activityRole: 2 });
7
+ describe('toCasePortalStatus', () => {
8
+ it('maps active to open and both resolved and cancelled to closed', () => {
9
+ expect(toCasePortalStatus(0)).toBe('open');
10
+ expect(toCasePortalStatus(1)).toBe('closed');
11
+ expect(toCasePortalStatus(2)).toBe('closed');
12
+ });
13
+ it('treats a missing state as open', () => {
14
+ expect(toCasePortalStatus(null)).toBe('open');
15
+ expect(toCasePortalStatus(undefined)).toBe('open');
16
+ });
17
+ });
18
+ describe('isVisibleCaseActivity', () => {
19
+ it('shows emails only when the user is a party', () => {
20
+ expect(isVisibleCaseActivity({ activityType: 'email', parties: [sender(AGENT), recipient(USER)] }, USER)).toBe(true);
21
+ expect(isVisibleCaseActivity({ activityType: 'email', parties: [sender(AGENT)] }, USER)).toBe(false);
22
+ });
23
+ it('always shows web messages and case resolutions', () => {
24
+ expect(isVisibleCaseActivity({ activityType: 'ww_webmessage' }, USER)).toBe(true);
25
+ expect(isVisibleCaseActivity({ activityType: 'incidentresolution' }, USER)).toBe(true);
26
+ });
27
+ it('hides every other type, including phone calls', () => {
28
+ expect(isVisibleCaseActivity({ activityType: 'phonecall' }, USER)).toBe(false);
29
+ expect(isVisibleCaseActivity({ activityType: 'task' }, USER)).toBe(false);
30
+ expect(isVisibleCaseActivity({ activityType: null }, USER)).toBe(false);
31
+ });
32
+ });
33
+ describe('isActivityFromUser', () => {
34
+ it('is true only when the user is the Sender party', () => {
35
+ expect(isActivityFromUser({ parties: [sender(USER), recipient(AGENT)] }, USER)).toBe(true);
36
+ expect(isActivityFromUser({ parties: [sender(AGENT), recipient(USER)] }, USER)).toBe(false);
37
+ expect(isActivityFromUser({ parties: [] }, USER)).toBe(false);
38
+ expect(isActivityFromUser({}, USER)).toBe(false);
39
+ });
40
+ });
41
+ describe('sortVisibleCaseActivities / selectLatestVisibleActivity', () => {
42
+ const activities = [
43
+ {
44
+ activityId: 'old-web',
45
+ activityType: 'ww_webmessage',
46
+ createdOn: '2026-09-01T09:00:00Z',
47
+ modifiedOn: '2026-09-01T09:00:00Z',
48
+ parties: [sender(USER)],
49
+ },
50
+ {
51
+ activityId: 'internal-email',
52
+ activityType: 'email',
53
+ createdOn: '2026-09-03T09:00:00Z',
54
+ parties: [sender(AGENT)],
55
+ },
56
+ {
57
+ activityId: 'phone',
58
+ activityType: 'phonecall',
59
+ createdOn: '2026-09-04T09:00:00Z',
60
+ },
61
+ {
62
+ activityId: 'reply-email',
63
+ activityType: 'email',
64
+ createdOn: '2026-09-02T09:00:00Z',
65
+ modifiedOn: '2026-09-02T12:00:00Z',
66
+ parties: [sender(AGENT), recipient(USER)],
67
+ },
68
+ ];
69
+ it('orders by createdOn even when an older activity was modified later (case resolved)', () => {
70
+ const resolvedAt = '2026-09-05T08:00:00Z';
71
+ const thread = [
72
+ {
73
+ activityId: 'first',
74
+ activityType: 'ww_webmessage',
75
+ createdOn: '2026-09-01T09:00:00Z',
76
+ modifiedOn: resolvedAt,
77
+ },
78
+ {
79
+ activityId: 'second',
80
+ activityType: 'email',
81
+ createdOn: '2026-09-02T09:00:00Z',
82
+ modifiedOn: resolvedAt,
83
+ parties: [sender(AGENT), recipient(USER)],
84
+ },
85
+ {
86
+ activityId: 'resolution',
87
+ activityType: 'incidentresolution',
88
+ createdOn: resolvedAt,
89
+ modifiedOn: resolvedAt,
90
+ },
91
+ ];
92
+ expect(sortVisibleCaseActivities(thread, USER).map(a => a.activityId)).toEqual(['resolution', 'second', 'first']);
93
+ });
94
+ it('drops hidden activities and orders newest first by createdOn', () => {
95
+ expect(sortVisibleCaseActivities(activities, USER).map(a => a.activityId)).toEqual(['reply-email', 'old-web']);
96
+ });
97
+ it('selects the newest visible activity, skipping newer hidden ones', () => {
98
+ expect(selectLatestVisibleActivity(activities, USER)?.activityId).toBe('reply-email');
99
+ expect(selectLatestVisibleActivity([], USER)).toBeUndefined();
100
+ expect(selectLatestVisibleActivity(undefined, USER)).toBeUndefined();
101
+ });
102
+ });
103
+ describe('isCaseRequiringResponse', () => {
104
+ it('is true for an open case whose latest visible activity is not from the user', () => {
105
+ expect(isCaseRequiringResponse('open', { fromUser: false })).toBe(true);
106
+ });
107
+ it('is false when the user sent the latest activity, there is none, or the case is closed', () => {
108
+ expect(isCaseRequiringResponse('open', { fromUser: true })).toBe(false);
109
+ expect(isCaseRequiringResponse('open', undefined)).toBe(false);
110
+ expect(isCaseRequiringResponse('closed', { fromUser: false })).toBe(false);
111
+ });
112
+ });
113
+ //# sourceMappingURL=CaseHelper.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CaseHelper.test.js","sourceRoot":"","sources":["../../../../../src/models/schemas/bff/helpers/CaseHelper.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,qBAAqB,EACrB,2BAA2B,EAC3B,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,iBAAiB,CAAA;AAExB,MAAM,IAAI,GAAG,sCAAsC,CAAA;AACnD,MAAM,KAAK,GAAG,sCAAsC,CAAA;AAEpD,MAAM,MAAM,GAAG,CAAC,SAAiB,EAAE,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,CAAA;AACtE,MAAM,SAAS,GAAG,CAAC,SAAiB,EAAE,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,CAAA;AAEzE,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC1C,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC5C,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC9C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC7C,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACpD,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,CACJ,qBAAqB,CACnB,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,EACpE,IAAI,CACL,CACF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACZ,MAAM,CACJ,qBAAqB,CACnB,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EACnD,IAAI,CACL,CACF,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACf,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,CAAC,qBAAqB,CAAC,EAAE,YAAY,EAAE,eAAe,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CACzE,IAAI,CACL,CAAA;QACD,MAAM,CACJ,qBAAqB,CAAC,EAAE,YAAY,EAAE,oBAAoB,EAAE,EAAE,IAAI,CAAC,CACpE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACd,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,CAAC,qBAAqB,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CACrE,KAAK,CACN,CAAA;QACD,MAAM,CAAC,qBAAqB,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACzE,MAAM,CAAC,qBAAqB,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACzE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,CACJ,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CACxE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACZ,MAAM,CACJ,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CACxE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACb,MAAM,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC7D,MAAM,CAAC,kBAAkB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAClD,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,yDAAyD,EAAE,GAAG,EAAE;IACvE,MAAM,UAAU,GAAG;QACjB;YACE,UAAU,EAAE,SAAS;YACrB,YAAY,EAAE,eAAe;YAC7B,SAAS,EAAE,sBAAsB;YACjC,UAAU,EAAE,sBAAsB;YAClC,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SACxB;QACD;YACE,UAAU,EAAE,gBAAgB;YAC5B,YAAY,EAAE,OAAO;YACrB,SAAS,EAAE,sBAAsB;YACjC,OAAO,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SACzB;QACD;YACE,UAAU,EAAE,OAAO;YACnB,YAAY,EAAE,WAAW;YACzB,SAAS,EAAE,sBAAsB;SAClC;QACD;YACE,UAAU,EAAE,aAAa;YACzB,YAAY,EAAE,OAAO;YACrB,SAAS,EAAE,sBAAsB;YACjC,UAAU,EAAE,sBAAsB;YAClC,OAAO,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;SAC1C;KACF,CAAA;IAED,EAAE,CAAC,oFAAoF,EAAE,GAAG,EAAE;QAC5F,MAAM,UAAU,GAAG,sBAAsB,CAAA;QACzC,MAAM,MAAM,GAAG;YACb;gBACE,UAAU,EAAE,OAAO;gBACnB,YAAY,EAAE,eAAe;gBAC7B,SAAS,EAAE,sBAAsB;gBACjC,UAAU,EAAE,UAAU;aACvB;YACD;gBACE,UAAU,EAAE,QAAQ;gBACpB,YAAY,EAAE,OAAO;gBACrB,SAAS,EAAE,sBAAsB;gBACjC,UAAU,EAAE,UAAU;gBACtB,OAAO,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;aAC1C;YACD;gBACE,UAAU,EAAE,YAAY;gBACxB,YAAY,EAAE,oBAAoB;gBAClC,SAAS,EAAE,UAAU;gBACrB,UAAU,EAAE,UAAU;aACvB;SACF,CAAA;QACD,MAAM,CACJ,yBAAyB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAC/D,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAA;IAC9C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,MAAM,CACJ,yBAAyB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CACnE,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC,CAAA;IACvC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACzE,MAAM,CAAC,2BAA2B,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,CACpE,aAAa,CACd,CAAA;QACD,MAAM,CAAC,2BAA2B,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,CAAA;QAC7D,MAAM,CAAC,2BAA2B,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,CAAA;IACtE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,EAAE,CAAC,6EAA6E,EAAE,GAAG,EAAE;QACrF,MAAM,CAAC,uBAAuB,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACzE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uFAAuF,EAAE,GAAG,EAAE;QAC/F,MAAM,CAAC,uBAAuB,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACvE,MAAM,CAAC,uBAAuB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC9D,MAAM,CAAC,uBAAuB,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC5E,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
package/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  "name": "@workwell-global/toolkit",
8
8
  "type": "module",
9
9
  "types": "dist/index.d.ts",
10
- "version": "1.1.41",
10
+ "version": "1.1.42",
11
11
  "files": [
12
12
  "dist"
13
13
  ],