@iapps/d2-web-sdk 1.1.8 → 1.1.9

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iapps/d2-web-sdk",
3
- "version": "1.1.8",
3
+ "version": "1.1.9",
4
4
  "dependencies": {
5
5
  "axios": "^1.8.1",
6
6
  "date-fns": "^4.1.0",
@@ -1,8 +1,36 @@
1
+ import { Option } from '../../option-set';
2
+ export interface IMetadataRuleAction {
3
+ field: string;
4
+ actionType: string;
5
+ assignedData?: string;
6
+ displayedContent?: string;
7
+ options?: Partial<Option>[];
8
+ programRule?: {
9
+ id: string;
10
+ };
11
+ evaluationTime?: 'ALWAYS' | 'ON_COMPLETE' | 'ON_CREATE' | string;
12
+ }
13
+ type Rule = {
14
+ condition?: string;
15
+ actions?: IMetadataRuleAction[];
16
+ };
17
+ type ExecuteOptions = {
18
+ /** return only triggered actions */
19
+ triggeredOnly?: boolean;
20
+ /** resolve duplicates by field (last wins) */
21
+ dedupeByField?: boolean;
22
+ /** include debug metadata */
23
+ debug?: boolean;
24
+ };
1
25
  export declare class ProgramRuleEngine {
2
- rules: any[];
3
- dataValues: Record<string, unknown>;
4
- setRules(rules: any[]): this;
26
+ private rules;
27
+ private dataValues;
28
+ setRules(rules: Rule[]): this;
5
29
  setDataValues(dataValues: Record<string, unknown>): this;
6
- getAssignedData(assignedDataExpression: string): string | undefined;
7
- execute(): any[];
30
+ execute(options?: ExecuteOptions): IMetadataRuleAction[];
31
+ /** Replace {var} with safe JS literals + resolve d2: functions */
32
+ private prepareExpression;
33
+ private safeEvalBoolean;
34
+ private safeEvalAny;
8
35
  }
36
+ export {};
@@ -1,15 +1,92 @@
1
1
  "use strict";
2
- // Copyright 2024 UDSM DHIS2 Lab. All rights reserved.
3
- // Use of this source code is governed by a BSD-style
2
+ // /* eslint-disable no-constant-condition */
3
+ // // Copyright 2024 UDSM DHIS2 Lab. All rights reserved.
4
+ // // Use of this source code is governed by a BSD-style
4
5
  Object.defineProperty(exports, "__esModule", { value: true });
5
6
  exports.ProgramRuleEngine = void 0;
6
- const lodash_1 = require("lodash");
7
- const utils_1 = require("./utils");
7
+ // import { flatten } from 'lodash';
8
+ // import { dhisD2Functions } from './utils';
9
+ // import { format } from 'date-fns';
10
+ // // license that can be found in the LICENSE file.
11
+ // export class ProgramRuleEngine {
12
+ // rules!: any[];
13
+ // dataValues!: Record<string, unknown>;
14
+ // setRules(rules: any[]) {
15
+ // this.rules = rules;
16
+ // return this;
17
+ // }
18
+ // setDataValues(dataValues: Record<string, unknown>) {
19
+ // const currentDate = format(new Date(), 'yyyy-MM-dd');
20
+ // this.dataValues = { ...(dataValues || {}), current_date: currentDate };
21
+ // return this;
22
+ // }
23
+ // getAssignedData(assignedDataExpression: string): string | undefined {
24
+ // let assignedData = assignedDataExpression || '';
25
+ // try {
26
+ // Object.keys(this.dataValues).forEach((key) => {
27
+ // assignedData = assignedData.replace(
28
+ // new RegExp(`{${key}}`, 'g'),
29
+ // `'${this.dataValues[key]}'`
30
+ // );
31
+ // });
32
+ // if (assignedData.includes('d2:')) {
33
+ // assignedData = dhisD2Functions(assignedData, {});
34
+ // }
35
+ // } catch (err: any) {
36
+ // console.warn('Problem processing assigned value', err);
37
+ // return undefined;
38
+ // }
39
+ // return assignedData !== 'NaN' ? assignedData : undefined;
40
+ // }
41
+ // execute(): any[] {
42
+ // return flatten(
43
+ // (this.rules || []).map((rule) => {
44
+ // if (!rule) {
45
+ // return [];
46
+ // }
47
+ // let ruleCondition = rule.condition || '';
48
+ // Object.keys(this.dataValues).forEach((key) => {
49
+ // ruleCondition = ruleCondition.replace(
50
+ // new RegExp(`{${key}}`, 'g'),
51
+ // `'${this.dataValues[key]}'`
52
+ // );
53
+ // });
54
+ // if (ruleCondition.includes('d2:')) {
55
+ // ruleCondition = dhisD2Functions(ruleCondition, {});
56
+ // }
57
+ // let evaluationResult: boolean;
58
+ // try {
59
+ // evaluationResult = eval(ruleCondition);
60
+ // } catch (e) {
61
+ // //
62
+ // }
63
+ // return (rule.actions || []).map((action: Record<string, unknown>) => {
64
+ // const actionType = evaluationResult ? action['actionType'] : '';
65
+ // let assignedData;
66
+ // if (actionType === 'ASSIGN') {
67
+ // assignedData = this.getAssignedData(
68
+ // action['assignedData'] as string
69
+ // );
70
+ // }
71
+ // return {
72
+ // ...action,
73
+ // assignedData,
74
+ // actionType,
75
+ // };
76
+ // });
77
+ // })
78
+ // );
79
+ // }
80
+ // }
8
81
  const date_fns_1 = require("date-fns");
9
- // license that can be found in the LICENSE file.
82
+ const run_d2_expression_util_1 = require("./utils/run-d2-expression.util");
10
83
  class ProgramRuleEngine {
84
+ constructor() {
85
+ this.rules = [];
86
+ this.dataValues = {};
87
+ }
11
88
  setRules(rules) {
12
- this.rules = rules;
89
+ this.rules = Array.isArray(rules) ? rules : [];
13
90
  return this;
14
91
  }
15
92
  setDataValues(dataValues) {
@@ -17,52 +94,111 @@ class ProgramRuleEngine {
17
94
  this.dataValues = Object.assign(Object.assign({}, (dataValues || {})), { current_date: currentDate });
18
95
  return this;
19
96
  }
20
- getAssignedData(assignedDataExpression) {
21
- let assignedData = assignedDataExpression || '';
22
- try {
23
- Object.keys(this.dataValues).forEach((key) => {
24
- assignedData = assignedData.replace(new RegExp(`{${key}}`, 'g'), `'${this.dataValues[key]}'`);
25
- });
26
- if (assignedData.includes('d2:')) {
27
- assignedData = (0, utils_1.dhisD2Functions)(assignedData, {});
97
+ execute(options = {}) {
98
+ var _a, _b, _c, _d;
99
+ const triggeredOnly = options.triggeredOnly !== false;
100
+ const dedupeByField = options.dedupeByField !== false;
101
+ const debug = !!options.debug;
102
+ const out = [];
103
+ const byField = new Map();
104
+ for (const rule of this.rules) {
105
+ if (!rule)
106
+ continue;
107
+ const rawCond = ((_a = rule.condition) !== null && _a !== void 0 ? _a : '').trim();
108
+ const preparedCond = this.prepareExpression(rawCond);
109
+ const evalRes = this.safeEvalBoolean(preparedCond);
110
+ for (const action of (_b = rule.actions) !== null && _b !== void 0 ? _b : []) {
111
+ if (!action)
112
+ continue;
113
+ const triggered = evalRes.ok ? evalRes.value : false;
114
+ if (triggeredOnly && !triggered)
115
+ continue;
116
+ const actionType = triggered ? (_c = action.actionType) !== null && _c !== void 0 ? _c : '' : '';
117
+ let assignedData = undefined;
118
+ if (triggered && actionType === 'ASSIGN') {
119
+ const expr = this.prepareExpression(String((_d = action.assignedData) !== null && _d !== void 0 ? _d : ''));
120
+ // If you want the computed VALUE, evaluate it:
121
+ const valRes = this.safeEvalAny(expr);
122
+ assignedData = valRes.ok ? valRes.value : undefined;
123
+ }
124
+ const result = Object.assign(Object.assign(Object.assign(Object.assign({}, action), { actionType }), (actionType === 'ASSIGN' ? { assignedData } : {})), (debug
125
+ ? {
126
+ __debug: {
127
+ rawCondition: rawCond,
128
+ preparedCondition: preparedCond,
129
+ evalOk: evalRes.ok,
130
+ evalError: evalRes.ok ? undefined : evalRes.error,
131
+ triggered,
132
+ },
133
+ }
134
+ : {}));
135
+ // dedupe by field if field exists
136
+ const field = action.field;
137
+ if (dedupeByField && field) {
138
+ byField.set(field, result);
139
+ }
140
+ else {
141
+ out.push(result);
142
+ }
28
143
  }
29
144
  }
30
- catch (err) {
31
- console.warn('Problem processing assigned value', err);
32
- return undefined;
145
+ return dedupeByField ? [...byField.values()] : out;
146
+ // const resolvedActions = dedupeByField ? [...byField.values()] : out;
147
+ // return resolvedActions.filter((action) => {
148
+ // const normalizedActionType = String(action.actionType ?? '').trim();
149
+ // return normalizedActionType.length > 0;
150
+ // });
151
+ }
152
+ /** Replace {var} with safe JS literals + resolve d2: functions */
153
+ prepareExpression(expression) {
154
+ let exp = expression !== null && expression !== void 0 ? expression : '';
155
+ // Replace {key} placeholders
156
+ exp = exp.replace(/\{([^}]+)\}/g, (_m, keyRaw) => {
157
+ const key = String(keyRaw).trim();
158
+ const val = this.dataValues[key];
159
+ // Decide how to treat missing values:
160
+ // In DHIS2 rules, missing often behaves like empty string
161
+ if (val === undefined)
162
+ return "''";
163
+ return toJsLiteral(val);
164
+ });
165
+ // Resolve d2: functions (after placeholders are resolved)
166
+ if (exp.includes('d2:')) {
167
+ exp = (0, run_d2_expression_util_1.dhisD2Functions)(exp, {}); // your util (fix its bugs below)
33
168
  }
34
- return assignedData !== 'NaN' ? assignedData : undefined;
169
+ return exp;
35
170
  }
36
- execute() {
37
- return (0, lodash_1.flatten)((this.rules || []).map((rule) => {
38
- if (!rule) {
39
- return [];
40
- }
41
- let ruleCondition = rule.condition || '';
42
- Object.keys(this.dataValues).forEach((key) => {
43
- ruleCondition = ruleCondition.replace(new RegExp(`{${key}}`, 'g'), `'${this.dataValues[key]}'`);
44
- });
45
- if (ruleCondition.includes('d2:')) {
46
- ruleCondition = (0, utils_1.dhisD2Functions)(ruleCondition, {});
47
- }
48
- let evaluationResult;
49
- try {
50
- evaluationResult = eval(ruleCondition);
51
- }
52
- catch (e) {
53
- //
54
- }
55
- return (rule.actions || []).map((action) => {
56
- const actionType = evaluationResult ? action['actionType'] : '';
57
- let assignedData;
58
- if (actionType === 'ASSIGN') {
59
- assignedData = this.getAssignedData(action['assignedData']);
60
- }
61
- return Object.assign(Object.assign({}, action), { assignedData,
62
- actionType });
63
- });
64
- }));
171
+ safeEvalBoolean(expression) {
172
+ const res = this.safeEvalAny(expression);
173
+ return res.ok
174
+ ? { ok: true, value: !!res.value }
175
+ : { ok: false, error: res.error };
176
+ }
177
+ safeEvalAny(expression) {
178
+ var _a;
179
+ try {
180
+ // NOTE: still evaluates JS, but does not capture outer scope.
181
+ // Upgrade later to AST evaluation for full safety.
182
+ const fn = new Function(`"use strict"; return (${expression});`);
183
+ return { ok: true, value: fn() };
184
+ }
185
+ catch (e) {
186
+ return { ok: false, error: (_a = e === null || e === void 0 ? void 0 : e.message) !== null && _a !== void 0 ? _a : String(e) };
187
+ }
65
188
  }
66
189
  }
67
190
  exports.ProgramRuleEngine = ProgramRuleEngine;
191
+ function toJsLiteral(v) {
192
+ if (v === null)
193
+ return 'null';
194
+ if (v === undefined)
195
+ return "''";
196
+ if (typeof v === 'number' || typeof v === 'boolean')
197
+ return String(v);
198
+ // Date strings and normal strings → quoted & escaped
199
+ const s = String(v);
200
+ // escape backslash and single quotes
201
+ const escaped = s.replace(/\\/g, '\\\\').replace(/'/g, "\\'");
202
+ return `'${escaped}'`;
203
+ }
68
204
  //# sourceMappingURL=program-rule.engine.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"program-rule.engine.js","sourceRoot":"","sources":["../../../../../../../../packages/dhis2-web-sdk/src/lib/modules/engine/program-rule/program-rule.engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"program-rule.engine.js","sourceRoot":"","sources":["../../../../../../../../packages/dhis2-web-sdk/src/lib/modules/engine/program-rule/program-rule.engine.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,10 @@ export declare const d2FuctionsVariables: Array<{
2
2
  name: string;
3
3
  parameters?: number;
4
4
  }>;
5
- export declare const d2FunctionsEval: {
6
- [x: string]: Function;
5
+ type D2EvalResult = {
6
+ expression: string;
7
+ expressionUpdated: boolean;
7
8
  };
9
+ type D2EvalFn = (expression: string, parameters: string[], variableHash: Record<string, any>, regexFunct: string) => D2EvalResult;
10
+ export declare const d2FunctionsEval: Record<string, D2EvalFn>;
11
+ export {};