@aemforms/af-core 0.22.169 → 0.22.171
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/esm/afb-runtime.js +15 -34
- package/esm/types/src/BaseNode.d.ts +1 -0
- package/lib/BaseNode.d.ts +1 -0
- package/lib/BaseNode.js +8 -0
- package/lib/Scriptable.js +5 -6
- package/lib/rules/FunctionRuntime.js +1 -0
- package/lib/rules/RuleEngine.js +2 -1
- package/package.json +2 -2
package/esm/afb-runtime.js
CHANGED
|
@@ -1037,34 +1037,6 @@ const replaceTemplatePlaceholders = (str, values = []) => {
|
|
|
1037
1037
|
return typeof replacement !== 'undefined' ? replacement : match;
|
|
1038
1038
|
});
|
|
1039
1039
|
};
|
|
1040
|
-
const sanitizeName = (name) => {
|
|
1041
|
-
const nameRegex = /^[A-Za-z0-9_$][A-Za-z0-9_.[\]]*$/;
|
|
1042
|
-
if (name.includes('.')) {
|
|
1043
|
-
const parts = name.split('.');
|
|
1044
|
-
const sanitizedParts = parts.map((part) => {
|
|
1045
|
-
if (part.includes('[')) {
|
|
1046
|
-
const bracketIndex = part.indexOf('[');
|
|
1047
|
-
const namePart = part.substring(0, bracketIndex);
|
|
1048
|
-
const bracketPart = part.substring(bracketIndex);
|
|
1049
|
-
if (!nameRegex.test(namePart)) {
|
|
1050
|
-
return `"${namePart}"${bracketPart}`;
|
|
1051
|
-
}
|
|
1052
|
-
return part;
|
|
1053
|
-
}
|
|
1054
|
-
else {
|
|
1055
|
-
if (!nameRegex.test(part)) {
|
|
1056
|
-
return `"${part}"`;
|
|
1057
|
-
}
|
|
1058
|
-
return part;
|
|
1059
|
-
}
|
|
1060
|
-
});
|
|
1061
|
-
return sanitizedParts.join('.');
|
|
1062
|
-
}
|
|
1063
|
-
if (!nameRegex.test(name)) {
|
|
1064
|
-
return `"${name}"`;
|
|
1065
|
-
}
|
|
1066
|
-
return name;
|
|
1067
|
-
};
|
|
1068
1040
|
|
|
1069
1041
|
const dateRegex = /^(\d{4})-(\d{1,2})-(\d{1,2})$/;
|
|
1070
1042
|
const emailRegex = /^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/;
|
|
@@ -1490,6 +1462,13 @@ class BaseNode {
|
|
|
1490
1462
|
get fragment() {
|
|
1491
1463
|
return this._fragment;
|
|
1492
1464
|
}
|
|
1465
|
+
getFragmentRuleNode() {
|
|
1466
|
+
if (this.fragment === '$form') {
|
|
1467
|
+
return this.form.getRuleNode();
|
|
1468
|
+
}
|
|
1469
|
+
const fragmentContainer = this.form.resolveQualifiedName(this.fragment);
|
|
1470
|
+
return fragmentContainer?.getRuleNode() ?? this.form.getRuleNode();
|
|
1471
|
+
}
|
|
1493
1472
|
setupRuleNode() {
|
|
1494
1473
|
const self = this;
|
|
1495
1474
|
this._ruleNode = new Proxy(this.ruleNodeReference(), {
|
|
@@ -1984,8 +1963,7 @@ class Scriptable extends BaseNode {
|
|
|
1984
1963
|
let updatedRule = eString;
|
|
1985
1964
|
try {
|
|
1986
1965
|
if (this.fragment !== '$form') {
|
|
1987
|
-
|
|
1988
|
-
updatedRule = eString.replaceAll('$form', sanitizedFragment);
|
|
1966
|
+
updatedRule = eString.replaceAll('$form', '$fragment');
|
|
1989
1967
|
}
|
|
1990
1968
|
this._rules[eName] = this.ruleEngine.compileRule(updatedRule, this.lang);
|
|
1991
1969
|
}
|
|
@@ -2022,8 +2000,7 @@ class Scriptable extends BaseNode {
|
|
|
2022
2000
|
let updatedExpr = x;
|
|
2023
2001
|
try {
|
|
2024
2002
|
if (this.fragment !== '$form') {
|
|
2025
|
-
|
|
2026
|
-
updatedExpr = x.replaceAll('$form', sanitizedFragment);
|
|
2003
|
+
updatedExpr = x.replaceAll('$form', '$fragment');
|
|
2027
2004
|
}
|
|
2028
2005
|
return this.ruleEngine.compileRule(updatedExpr, this.lang);
|
|
2029
2006
|
}
|
|
@@ -2153,7 +2130,8 @@ class Scriptable extends BaseNode {
|
|
|
2153
2130
|
'form': this.form,
|
|
2154
2131
|
'$form': this.form.getRuleNode(),
|
|
2155
2132
|
'$field': this.getRuleNode(),
|
|
2156
|
-
'field': this
|
|
2133
|
+
'field': this,
|
|
2134
|
+
'$fragment': this.getFragmentRuleNode()
|
|
2157
2135
|
};
|
|
2158
2136
|
const node = this.ruleEngine.compileRule(expr, this.lang);
|
|
2159
2137
|
return this.ruleEngine.execute(node, this.getExpressionScope(), ruleContext, false, expr);
|
|
@@ -2169,6 +2147,7 @@ class Scriptable extends BaseNode {
|
|
|
2169
2147
|
'$form': this.form.getRuleNode(),
|
|
2170
2148
|
'$field': this.getRuleNode(),
|
|
2171
2149
|
'field': this,
|
|
2150
|
+
'$fragment': this.getFragmentRuleNode(),
|
|
2172
2151
|
'$event': {
|
|
2173
2152
|
type: action.type,
|
|
2174
2153
|
payload: action.payload,
|
|
@@ -3206,6 +3185,7 @@ class FunctionRuntimeImpl {
|
|
|
3206
3185
|
form: interpreter.globals.$form,
|
|
3207
3186
|
field: interpreter.globals.$field,
|
|
3208
3187
|
event: interpreter.globals.$event,
|
|
3188
|
+
$fragment: interpreter.globals.$fragment,
|
|
3209
3189
|
functions: {
|
|
3210
3190
|
setProperty: (target, payload) => {
|
|
3211
3191
|
const eventName = 'custom:setProperty';
|
|
@@ -4403,7 +4383,8 @@ class RuleEngine {
|
|
|
4403
4383
|
_globalNames = [
|
|
4404
4384
|
'$form',
|
|
4405
4385
|
'$field',
|
|
4406
|
-
'$event'
|
|
4386
|
+
'$event',
|
|
4387
|
+
'$fragment'
|
|
4407
4388
|
];
|
|
4408
4389
|
customFunctions;
|
|
4409
4390
|
debugInfo = [];
|
|
@@ -33,6 +33,7 @@ export declare abstract class BaseNode<T extends BaseJson> implements BaseModel
|
|
|
33
33
|
mode?: 'create' | 'restore';
|
|
34
34
|
});
|
|
35
35
|
get fragment(): string;
|
|
36
|
+
protected getFragmentRuleNode(): any;
|
|
36
37
|
abstract value: Primitives;
|
|
37
38
|
abstract reset(): any;
|
|
38
39
|
protected setupRuleNode(): void;
|
package/lib/BaseNode.d.ts
CHANGED
|
@@ -33,6 +33,7 @@ export declare abstract class BaseNode<T extends BaseJson> implements BaseModel
|
|
|
33
33
|
mode?: 'create' | 'restore';
|
|
34
34
|
});
|
|
35
35
|
get fragment(): string;
|
|
36
|
+
protected getFragmentRuleNode(): any;
|
|
36
37
|
abstract value: Primitives;
|
|
37
38
|
abstract reset(): any;
|
|
38
39
|
protected setupRuleNode(): void;
|
package/lib/BaseNode.js
CHANGED
|
@@ -149,6 +149,14 @@ class BaseNode {
|
|
|
149
149
|
get fragment() {
|
|
150
150
|
return this._fragment;
|
|
151
151
|
}
|
|
152
|
+
getFragmentRuleNode() {
|
|
153
|
+
var _a;
|
|
154
|
+
if (this.fragment === '$form') {
|
|
155
|
+
return this.form.getRuleNode();
|
|
156
|
+
}
|
|
157
|
+
const fragmentContainer = this.form.resolveQualifiedName(this.fragment);
|
|
158
|
+
return (_a = fragmentContainer === null || fragmentContainer === void 0 ? void 0 : fragmentContainer.getRuleNode()) !== null && _a !== void 0 ? _a : this.form.getRuleNode();
|
|
159
|
+
}
|
|
152
160
|
setupRuleNode() {
|
|
153
161
|
const self = this;
|
|
154
162
|
this._ruleNode = new Proxy(this.ruleNodeReference(), {
|
package/lib/Scriptable.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const BaseNode_1 = require("./BaseNode");
|
|
4
|
-
const FormUtils_1 = require("./utils/FormUtils");
|
|
5
4
|
const Events_1 = require("./controller/Events");
|
|
6
5
|
class Scriptable extends BaseNode_1.BaseNode {
|
|
7
6
|
constructor() {
|
|
@@ -19,8 +18,7 @@ class Scriptable extends BaseNode_1.BaseNode {
|
|
|
19
18
|
let updatedRule = eString;
|
|
20
19
|
try {
|
|
21
20
|
if (this.fragment !== '$form') {
|
|
22
|
-
|
|
23
|
-
updatedRule = eString.replaceAll('$form', sanitizedFragment);
|
|
21
|
+
updatedRule = eString.replaceAll('$form', '$fragment');
|
|
24
22
|
}
|
|
25
23
|
this._rules[eName] = this.ruleEngine.compileRule(updatedRule, this.lang);
|
|
26
24
|
}
|
|
@@ -58,8 +56,7 @@ class Scriptable extends BaseNode_1.BaseNode {
|
|
|
58
56
|
let updatedExpr = x;
|
|
59
57
|
try {
|
|
60
58
|
if (this.fragment !== '$form') {
|
|
61
|
-
|
|
62
|
-
updatedExpr = x.replaceAll('$form', sanitizedFragment);
|
|
59
|
+
updatedExpr = x.replaceAll('$form', '$fragment');
|
|
63
60
|
}
|
|
64
61
|
return this.ruleEngine.compileRule(updatedExpr, this.lang);
|
|
65
62
|
}
|
|
@@ -189,7 +186,8 @@ class Scriptable extends BaseNode_1.BaseNode {
|
|
|
189
186
|
'form': this.form,
|
|
190
187
|
'$form': this.form.getRuleNode(),
|
|
191
188
|
'$field': this.getRuleNode(),
|
|
192
|
-
'field': this
|
|
189
|
+
'field': this,
|
|
190
|
+
'$fragment': this.getFragmentRuleNode()
|
|
193
191
|
};
|
|
194
192
|
const node = this.ruleEngine.compileRule(expr, this.lang);
|
|
195
193
|
return this.ruleEngine.execute(node, this.getExpressionScope(), ruleContext, false, expr);
|
|
@@ -206,6 +204,7 @@ class Scriptable extends BaseNode_1.BaseNode {
|
|
|
206
204
|
'$form': this.form.getRuleNode(),
|
|
207
205
|
'$field': this.getRuleNode(),
|
|
208
206
|
'field': this,
|
|
207
|
+
'$fragment': this.getFragmentRuleNode(),
|
|
209
208
|
'$event': {
|
|
210
209
|
type: action.type,
|
|
211
210
|
payload: action.payload,
|
|
@@ -265,6 +265,7 @@ class FunctionRuntimeImpl {
|
|
|
265
265
|
form: interpreter.globals.$form,
|
|
266
266
|
field: interpreter.globals.$field,
|
|
267
267
|
event: interpreter.globals.$event,
|
|
268
|
+
$fragment: interpreter.globals.$fragment,
|
|
268
269
|
functions: {
|
|
269
270
|
setProperty: (target, payload) => {
|
|
270
271
|
const eventName = 'custom:setProperty';
|
package/lib/rules/RuleEngine.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aemforms/af-core",
|
|
3
|
-
"version": "0.22.
|
|
3
|
+
"version": "0.22.171",
|
|
4
4
|
"description": "Core Module for Forms Runtime",
|
|
5
5
|
"author": "Adobe Systems",
|
|
6
6
|
"license": "Adobe Proprietary",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
39
|
"@adobe/json-formula": "0.1.50",
|
|
40
|
-
"@aemforms/af-formatters": "^0.22.
|
|
40
|
+
"@aemforms/af-formatters": "^0.22.171"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"@babel/preset-env": "^7.20.2",
|