@rsuci/shared-form-components 1.0.103 → 1.0.104
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.
|
@@ -25,7 +25,6 @@ export interface RosterVariableRef {
|
|
|
25
25
|
* Toutes les méthodes sont statiques pour une utilisation sans état
|
|
26
26
|
*/
|
|
27
27
|
export declare class RosterConditionEngine {
|
|
28
|
-
private static sharedEngine;
|
|
29
28
|
/**
|
|
30
29
|
* Valide une condition au moment du design (admin)
|
|
31
30
|
* Vérifie que les références sont dans le scope et que les jumps sont valides
|
|
@@ -34,13 +33,10 @@ export declare class RosterConditionEngine {
|
|
|
34
33
|
/**
|
|
35
34
|
* Évalue une condition au runtime (rendu)
|
|
36
35
|
* Utilise les valeurs de la ligne courante du roster
|
|
37
|
-
*
|
|
36
|
+
* Crée un ConditionEngine isolé pour chaque évaluation afin d'éviter
|
|
37
|
+
* la fuite de données entre les différentes lignes du roster.
|
|
38
38
|
*/
|
|
39
39
|
static evaluate(condition: string, lineValues: Record<string, any>): boolean;
|
|
40
|
-
/**
|
|
41
|
-
* Réinitialise l'engine partagé (utile pour les tests ou pour forcer un nettoyage)
|
|
42
|
-
*/
|
|
43
|
-
static resetSharedEngine(): void;
|
|
44
40
|
/**
|
|
45
41
|
* Extrait toutes les références de variables d'une condition
|
|
46
42
|
* Format: ${VAR_CODE}
|
|
@@ -72,7 +68,7 @@ export declare class RosterConditionEngine {
|
|
|
72
68
|
static computeJumpedVariables(sortedVariables: RosterVariableRef[], lineValues: Record<string, any>): Set<string>;
|
|
73
69
|
/**
|
|
74
70
|
* Évalue une condition interne (sans le wrapper jump())
|
|
75
|
-
*
|
|
71
|
+
* Crée un engine isolé pour éviter la fuite de données entre lignes.
|
|
76
72
|
*/
|
|
77
73
|
private static evaluateInnerCondition;
|
|
78
74
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"roster-condition-engine.d.ts","sourceRoot":"","sources":["../../src/lib/roster-condition-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,MAAM,MAAM,wBAAwB,GAChC,uBAAuB,GACvB,mBAAmB,GACnB,eAAe,GACf,gBAAgB,GAChB,cAAc,CAAC;AAEnB,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,wBAAwB,CAAC;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,+BAA+B;IAC9C,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,oBAAoB,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,qBAAa,qBAAqB;IAChC
|
|
1
|
+
{"version":3,"file":"roster-condition-engine.d.ts","sourceRoot":"","sources":["../../src/lib/roster-condition-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,MAAM,MAAM,wBAAwB,GAChC,uBAAuB,GACvB,mBAAmB,GACnB,eAAe,GACf,gBAAgB,GAChB,cAAc,CAAC;AAEnB,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,wBAAwB,CAAC;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,+BAA+B;IAC9C,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,oBAAoB,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,qBAAa,qBAAqB;IAChC;;;OAGG;IACH,MAAM,CAAC,iBAAiB,CACtB,SAAS,EAAE,MAAM,EACjB,kBAAkB,EAAE,iBAAiB,EAAE,EACvC,mBAAmB,EAAE,MAAM,EAC3B,oBAAoB,EAAE,MAAM,GAC3B,+BAA+B;IA6ElC;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO;IAyB5E;;;OAGG;IACH,MAAM,CAAC,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE;IAO7D;;;;OAIG;IACH,MAAM,CAAC,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAO1D;;;;OAIG;IACH,MAAM,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,KAAK,CAAC;QAC/C,cAAc,EAAE,MAAM,CAAC;QACvB,cAAc,EAAE,MAAM,CAAC;QACvB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IAoBF;;;;;;OAMG;IACH,MAAM,CAAC,sBAAsB,CAC3B,eAAe,EAAE,iBAAiB,EAAE,EACpC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC9B,GAAG,CAAC,MAAM,CAAC;IAyCd;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;IA8BrC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;CAsD9B"}
|
|
@@ -89,7 +89,8 @@ export class RosterConditionEngine {
|
|
|
89
89
|
/**
|
|
90
90
|
* Évalue une condition au runtime (rendu)
|
|
91
91
|
* Utilise les valeurs de la ligne courante du roster
|
|
92
|
-
*
|
|
92
|
+
* Crée un ConditionEngine isolé pour chaque évaluation afin d'éviter
|
|
93
|
+
* la fuite de données entre les différentes lignes du roster.
|
|
93
94
|
*/
|
|
94
95
|
static evaluate(condition, lineValues) {
|
|
95
96
|
if (!condition?.trim()) {
|
|
@@ -105,26 +106,15 @@ export class RosterConditionEngine {
|
|
|
105
106
|
dateModification: new Date()
|
|
106
107
|
};
|
|
107
108
|
}
|
|
108
|
-
//
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
}
|
|
112
|
-
else {
|
|
113
|
-
this.sharedEngine.updateContext(responses);
|
|
114
|
-
}
|
|
115
|
-
return this.sharedEngine.evaluate(condition);
|
|
109
|
+
// Créer un engine isolé pour cette évaluation
|
|
110
|
+
const engine = new ConditionEngine(responses);
|
|
111
|
+
return engine.evaluate(condition);
|
|
116
112
|
}
|
|
117
113
|
catch (error) {
|
|
118
114
|
console.warn('[RosterConditionEngine] Erreur évaluation:', condition, error);
|
|
119
115
|
return true; // En cas d'erreur, afficher par défaut
|
|
120
116
|
}
|
|
121
117
|
}
|
|
122
|
-
/**
|
|
123
|
-
* Réinitialise l'engine partagé (utile pour les tests ou pour forcer un nettoyage)
|
|
124
|
-
*/
|
|
125
|
-
static resetSharedEngine() {
|
|
126
|
-
this.sharedEngine = null;
|
|
127
|
-
}
|
|
128
118
|
/**
|
|
129
119
|
* Extrait toutes les références de variables d'une condition
|
|
130
120
|
* Format: ${VAR_CODE}
|
|
@@ -212,7 +202,7 @@ export class RosterConditionEngine {
|
|
|
212
202
|
}
|
|
213
203
|
/**
|
|
214
204
|
* Évalue une condition interne (sans le wrapper jump())
|
|
215
|
-
*
|
|
205
|
+
* Crée un engine isolé pour éviter la fuite de données entre lignes.
|
|
216
206
|
*/
|
|
217
207
|
static evaluateInnerCondition(innerCondition, lineValues) {
|
|
218
208
|
if (!innerCondition?.trim())
|
|
@@ -227,19 +217,14 @@ export class RosterConditionEngine {
|
|
|
227
217
|
dateModification: new Date()
|
|
228
218
|
};
|
|
229
219
|
}
|
|
230
|
-
//
|
|
231
|
-
|
|
232
|
-
this.sharedEngine = new ConditionEngine(responses);
|
|
233
|
-
}
|
|
234
|
-
else {
|
|
235
|
-
this.sharedEngine.updateContext(responses);
|
|
236
|
-
}
|
|
220
|
+
// Créer un engine isolé pour cette évaluation
|
|
221
|
+
const engine = new ConditionEngine(responses);
|
|
237
222
|
// Si c'est déjà un showMe(), l'évaluer directement
|
|
238
223
|
if (innerCondition.trim().startsWith('showMe(')) {
|
|
239
|
-
return
|
|
224
|
+
return engine.evaluate(innerCondition);
|
|
240
225
|
}
|
|
241
226
|
// Sinon, wrapper dans showMe pour évaluation
|
|
242
|
-
return
|
|
227
|
+
return engine.evaluate(`showMe(${innerCondition})`);
|
|
243
228
|
}
|
|
244
229
|
catch (error) {
|
|
245
230
|
console.warn('[RosterConditionEngine] Erreur évaluation condition interne:', innerCondition, error);
|
|
@@ -302,4 +287,3 @@ export class RosterConditionEngine {
|
|
|
302
287
|
}
|
|
303
288
|
}
|
|
304
289
|
}
|
|
305
|
-
RosterConditionEngine.sharedEngine = null;
|
package/package.json
CHANGED