grm-shared-library 1.1.190 → 1.1.192
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/modules/entitlement/constants/entitlement-defaults.const.js +20 -0
- package/dist/cjs/modules/entitlement/constants/entitlement-defaults.const.js.map +1 -0
- package/dist/cjs/modules/entitlement/dtos/consume-trial-alert.dto.js +53 -0
- package/dist/cjs/modules/entitlement/dtos/consume-trial-alert.dto.js.map +1 -0
- package/dist/cjs/modules/entitlement/dtos/evaluate-entitlement.dto.js +55 -0
- package/dist/cjs/modules/entitlement/dtos/evaluate-entitlement.dto.js.map +1 -0
- package/dist/cjs/modules/entitlement/dtos/grant-premium-trial.dto.js +57 -0
- package/dist/cjs/modules/entitlement/dtos/grant-premium-trial.dto.js.map +1 -0
- package/dist/cjs/modules/entitlement/dtos/revoke-premium-trial.dto.js +26 -0
- package/dist/cjs/modules/entitlement/dtos/revoke-premium-trial.dto.js.map +1 -0
- package/dist/cjs/modules/entitlement/enums/entitlement-decision-reason.enum.js +34 -0
- package/dist/cjs/modules/entitlement/enums/entitlement-decision-reason.enum.js.map +1 -0
- package/dist/cjs/modules/entitlement/enums/incident-entitlement-scope.enum.js +19 -0
- package/dist/cjs/modules/entitlement/enums/incident-entitlement-scope.enum.js.map +1 -0
- package/dist/cjs/modules/entitlement/enums/incident-entitlement-tier.enum.js +27 -0
- package/dist/cjs/modules/entitlement/enums/incident-entitlement-tier.enum.js.map +1 -0
- package/dist/cjs/modules/entitlement/enums/premium-trial-source.enum.js +12 -0
- package/dist/cjs/modules/entitlement/enums/premium-trial-source.enum.js.map +1 -0
- package/dist/cjs/modules/entitlement/enums/premium-trial-status.enum.js +18 -0
- package/dist/cjs/modules/entitlement/enums/premium-trial-status.enum.js.map +1 -0
- package/dist/cjs/modules/entitlement/index.js +34 -0
- package/dist/cjs/modules/entitlement/index.js.map +1 -0
- package/dist/cjs/modules/entitlement/interfaces/entitlement-evaluation.js +3 -0
- package/dist/cjs/modules/entitlement/interfaces/entitlement-evaluation.js.map +1 -0
- package/dist/cjs/modules/entitlement/utils/entitlement.util.js +49 -0
- package/dist/cjs/modules/entitlement/utils/entitlement.util.js.map +1 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/modules/entitlement/constants/entitlement-defaults.const.js +17 -0
- package/dist/esm/modules/entitlement/constants/entitlement-defaults.const.js.map +1 -0
- package/dist/esm/modules/entitlement/dtos/consume-trial-alert.dto.js +49 -0
- package/dist/esm/modules/entitlement/dtos/consume-trial-alert.dto.js.map +1 -0
- package/dist/esm/modules/entitlement/dtos/evaluate-entitlement.dto.js +51 -0
- package/dist/esm/modules/entitlement/dtos/evaluate-entitlement.dto.js.map +1 -0
- package/dist/esm/modules/entitlement/dtos/grant-premium-trial.dto.js +53 -0
- package/dist/esm/modules/entitlement/dtos/grant-premium-trial.dto.js.map +1 -0
- package/dist/esm/modules/entitlement/dtos/revoke-premium-trial.dto.js +22 -0
- package/dist/esm/modules/entitlement/dtos/revoke-premium-trial.dto.js.map +1 -0
- package/dist/esm/modules/entitlement/enums/entitlement-decision-reason.enum.js +31 -0
- package/dist/esm/modules/entitlement/enums/entitlement-decision-reason.enum.js.map +1 -0
- package/dist/esm/modules/entitlement/enums/incident-entitlement-scope.enum.js +16 -0
- package/dist/esm/modules/entitlement/enums/incident-entitlement-scope.enum.js.map +1 -0
- package/dist/esm/modules/entitlement/enums/incident-entitlement-tier.enum.js +24 -0
- package/dist/esm/modules/entitlement/enums/incident-entitlement-tier.enum.js.map +1 -0
- package/dist/esm/modules/entitlement/enums/premium-trial-source.enum.js +9 -0
- package/dist/esm/modules/entitlement/enums/premium-trial-source.enum.js.map +1 -0
- package/dist/esm/modules/entitlement/enums/premium-trial-status.enum.js +15 -0
- package/dist/esm/modules/entitlement/enums/premium-trial-status.enum.js.map +1 -0
- package/dist/esm/modules/entitlement/index.js +18 -0
- package/dist/esm/modules/entitlement/index.js.map +1 -0
- package/dist/esm/modules/entitlement/interfaces/entitlement-evaluation.js +2 -0
- package/dist/esm/modules/entitlement/interfaces/entitlement-evaluation.js.map +1 -0
- package/dist/esm/modules/entitlement/utils/entitlement.util.js +42 -0
- package/dist/esm/modules/entitlement/utils/entitlement.util.js.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/interfaces/pagination.d.ts +10 -0
- package/dist/types/modules/entitlement/constants/entitlement-defaults.const.d.ts +16 -0
- package/dist/types/modules/entitlement/dtos/consume-trial-alert.dto.d.ts +11 -0
- package/dist/types/modules/entitlement/dtos/evaluate-entitlement.dto.d.ts +11 -0
- package/dist/types/modules/entitlement/dtos/grant-premium-trial.dto.d.ts +8 -0
- package/dist/types/modules/entitlement/dtos/revoke-premium-trial.dto.d.ts +4 -0
- package/dist/types/modules/entitlement/enums/entitlement-decision-reason.enum.d.ts +29 -0
- package/dist/types/modules/entitlement/enums/incident-entitlement-scope.enum.d.ts +14 -0
- package/dist/types/modules/entitlement/enums/incident-entitlement-tier.enum.d.ts +22 -0
- package/dist/types/modules/entitlement/enums/premium-trial-source.enum.d.ts +7 -0
- package/dist/types/modules/entitlement/enums/premium-trial-status.enum.d.ts +13 -0
- package/dist/types/modules/entitlement/index.d.ts +12 -0
- package/dist/types/modules/entitlement/interfaces/entitlement-evaluation.d.ts +91 -0
- package/dist/types/modules/entitlement/utils/entitlement.util.d.ts +22 -0
- package/dist/types/modules/incident/intefaces/incident.d.ts +11 -0
- package/package.json +1 -1
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { EntitlementDecisionReason } from '../enums/entitlement-decision-reason.enum';
|
|
2
|
+
import { IncidentEntitlementTier } from '../enums/incident-entitlement-tier.enum';
|
|
3
|
+
import { PremiumTrialSource } from '../enums/premium-trial-source.enum';
|
|
4
|
+
import { PremiumTrialStatus } from '../enums/premium-trial-status.enum';
|
|
5
|
+
/** Compact view of the subscription entitlement backing a premium decision. */
|
|
6
|
+
export interface EntitlementSubscriptionSummary {
|
|
7
|
+
subscriptionId?: number | null;
|
|
8
|
+
packageId?: number | null;
|
|
9
|
+
packageName?: string | null;
|
|
10
|
+
/** `EntitlementSourceType` from clarion-billing (primary / member / beneficiary). */
|
|
11
|
+
sourceType?: string | null;
|
|
12
|
+
startsAt?: string | null;
|
|
13
|
+
expiresAt?: string | null;
|
|
14
|
+
/** Incident type ids the package covers. An empty array means "every type". */
|
|
15
|
+
incidentTypeIds?: number[];
|
|
16
|
+
}
|
|
17
|
+
/** Compact view of a user's premium trial within one organization. */
|
|
18
|
+
export interface EntitlementTrialSummary {
|
|
19
|
+
trialId: number;
|
|
20
|
+
status: PremiumTrialStatus;
|
|
21
|
+
source: PremiumTrialSource;
|
|
22
|
+
/** Alerts the trial grants in total (default 2). */
|
|
23
|
+
maxIncidents: number;
|
|
24
|
+
incidentsUsed: number;
|
|
25
|
+
/** Never negative - clamped at zero once the allotment is spent. */
|
|
26
|
+
incidentsRemaining: number;
|
|
27
|
+
startsAt: string;
|
|
28
|
+
expiresAt: string;
|
|
29
|
+
/** Whole days left in the trial window; zero once elapsed. */
|
|
30
|
+
daysRemaining: number;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* The single answer every caller needs about a user's premium standing.
|
|
34
|
+
*
|
|
35
|
+
* Produced by clarion-billing (`POST /billing/entitlements/evaluate` for
|
|
36
|
+
* service-to-service calls, `GET /billing/entitlements/me` for the mobile app)
|
|
37
|
+
* and consumed by clarion-incident to stamp the incident, and by the mobile app
|
|
38
|
+
* to pick its subscription banner.
|
|
39
|
+
*/
|
|
40
|
+
export interface EntitlementEvaluation {
|
|
41
|
+
userId: number;
|
|
42
|
+
organizationId: number;
|
|
43
|
+
tier: IncidentEntitlementTier;
|
|
44
|
+
/** True for PREMIUM/TRIAL/NOT_APPLICABLE - i.e. the alert reaches the provider. */
|
|
45
|
+
canAlertProvider: boolean;
|
|
46
|
+
reason: EntitlementDecisionReason;
|
|
47
|
+
evaluatedAt: string;
|
|
48
|
+
/** Echoes the incident type the decision was scoped to, when one was supplied. */
|
|
49
|
+
incidentTypeId?: number | null;
|
|
50
|
+
/**
|
|
51
|
+
* True when the answer was produced without a live billing decision (the
|
|
52
|
+
* caller's configured fail-open/fail-closed default applied). Never set by
|
|
53
|
+
* billing itself - only by clients that had to degrade.
|
|
54
|
+
*/
|
|
55
|
+
degraded?: boolean;
|
|
56
|
+
/** Present when an ACTIVE subscription entitlement backs the decision. */
|
|
57
|
+
subscription?: EntitlementSubscriptionSummary | null;
|
|
58
|
+
/** Present whenever the user has a trial record, whatever its status. */
|
|
59
|
+
trial?: EntitlementTrialSummary | null;
|
|
60
|
+
/**
|
|
61
|
+
* Present when the user holds no active entitlement but previously had one
|
|
62
|
+
* that lapsed. Drives the mobile "your subscription expired - renew" banner,
|
|
63
|
+
* which must be distinguishable from a never-subscribed free user.
|
|
64
|
+
*/
|
|
65
|
+
expiredSubscription?: EntitlementSubscriptionSummary | null;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Audit trail persisted alongside every incident (jsonb). Deliberately a
|
|
69
|
+
* point-in-time copy: re-evaluating later can produce a different answer, and
|
|
70
|
+
* incident history must reflect what was true when the alert was raised.
|
|
71
|
+
*/
|
|
72
|
+
export interface IncidentEntitlementSnapshot {
|
|
73
|
+
tier: IncidentEntitlementTier;
|
|
74
|
+
reason: EntitlementDecisionReason;
|
|
75
|
+
evaluatedAt: string;
|
|
76
|
+
/** The user the decision was made for (creator, or the reporter's system user). */
|
|
77
|
+
evaluatedUserId?: number | null;
|
|
78
|
+
degraded?: boolean;
|
|
79
|
+
subscriptionId?: number | null;
|
|
80
|
+
packageId?: number | null;
|
|
81
|
+
sourceType?: string | null;
|
|
82
|
+
trialId?: number | null;
|
|
83
|
+
/** Alerts left on the trial AFTER this incident consumed one, when applicable. */
|
|
84
|
+
trialIncidentsRemaining?: number | null;
|
|
85
|
+
}
|
|
86
|
+
/** Result of consuming one trial alert; idempotent per (trial, incident). */
|
|
87
|
+
export interface TrialConsumptionResult {
|
|
88
|
+
/** False when the incident had already been counted against the trial. */
|
|
89
|
+
consumed: boolean;
|
|
90
|
+
trial: EntitlementTrialSummary | null;
|
|
91
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { IncidentEntitlementScope } from '../enums/incident-entitlement-scope.enum';
|
|
2
|
+
import { IncidentEntitlementTier } from '../enums/incident-entitlement-tier.enum';
|
|
3
|
+
import { PremiumTrialStatus } from '../enums/premium-trial-status.enum';
|
|
4
|
+
/**
|
|
5
|
+
* Whether a tier reaches the provider control room.
|
|
6
|
+
*
|
|
7
|
+
* Everything except `FREE` counts as entitled: `NOT_APPLICABLE` covers
|
|
8
|
+
* grievances and pre-enforcement incidents, which must keep behaving exactly as
|
|
9
|
+
* they did before entitlement gating existed.
|
|
10
|
+
*/
|
|
11
|
+
export declare function isEntitledTier(tier?: IncidentEntitlementTier | string | null): boolean;
|
|
12
|
+
/** Whether an incident was raised by a Free user (no subscription, no trial). */
|
|
13
|
+
export declare function isFreeUserTier(tier?: IncidentEntitlementTier | string | null): boolean;
|
|
14
|
+
/** True while the trial still grants premium behaviour. */
|
|
15
|
+
export declare function isTrialUsable(status?: PremiumTrialStatus | string | null): boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Parses a client-supplied entitlement scope. Unknown/absent values fall back to
|
|
18
|
+
* `ALL` so an unrecognised query string never silently hides incidents.
|
|
19
|
+
*/
|
|
20
|
+
export declare function parseIncidentEntitlementScope(value?: string | null): IncidentEntitlementScope;
|
|
21
|
+
/** Whole days remaining until `expiresAt`, floored at zero. */
|
|
22
|
+
export declare function trialDaysRemaining(expiresAt: Date | string, now?: Date): number;
|
|
@@ -14,6 +14,8 @@ import { IncidentResponseUnitAssignment } from "./incident-response-unit-assignm
|
|
|
14
14
|
import { IncidentType } from "./incident-type";
|
|
15
15
|
import { IncidentReport } from "./incident-report";
|
|
16
16
|
import { IncidentEmergencyType } from "../enums/incident-emergency-type.enum";
|
|
17
|
+
import { IncidentEntitlementSnapshot } from "../../entitlement/interfaces/entitlement-evaluation";
|
|
18
|
+
import { IncidentEntitlementTier } from "../../entitlement/enums/incident-entitlement-tier.enum";
|
|
17
19
|
export interface Incident {
|
|
18
20
|
id?: number;
|
|
19
21
|
appId: IncidentAppId;
|
|
@@ -46,6 +48,15 @@ export interface Incident {
|
|
|
46
48
|
workflowTaskQueueName: IncidentWorkflowTaskQueueName;
|
|
47
49
|
controlCentreId: number;
|
|
48
50
|
organizationId: number;
|
|
51
|
+
/**
|
|
52
|
+
* Premium standing of the reporting user at the moment the incident was
|
|
53
|
+
* raised. Derived server-side by clarion-billing - never accepted from a
|
|
54
|
+
* client payload. `FREE` incidents are withheld from live updates and from
|
|
55
|
+
* the primary admin list/map/kanban views.
|
|
56
|
+
*/
|
|
57
|
+
entitlementTier?: IncidentEntitlementTier;
|
|
58
|
+
/** Point-in-time audit of how `entitlementTier` was decided. */
|
|
59
|
+
entitlementSnapshot?: IncidentEntitlementSnapshot | null;
|
|
49
60
|
createdAt?: string;
|
|
50
61
|
updatedAt?: string;
|
|
51
62
|
category?: IncidentCategory;
|