jsxpression 0.1.21 → 0.1.22
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluate.d.ts","sourceRoot":"","sources":["../../src/evaluate/evaluate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAqC,MAAM,cAAc,CAAC;AAEzE,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAEtD,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,GAAG,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAEnG,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEhD,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE/C,MAAM,MAAM,IAAI,GAAG;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,EAAE,IAAI,EAAE,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,GAAG,QAAQ,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;AAE/E,MAAM,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;AAEhD;;;;GAIG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,GAAG;IACtC,2DAA2D;IAC3D,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,gEAAgE;IAChE,UAAU,CAAC,EAAE,aAAa,CAAC;IAC3B,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACrC,qEAAqE;IACrE,aAAa,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;CAClC;AAED,wBAAgB,QAAQ,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"evaluate.d.ts","sourceRoot":"","sources":["../../src/evaluate/evaluate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAqC,MAAM,cAAc,CAAC;AAEzE,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAEtD,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,GAAG,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAEnG,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEhD,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE/C,MAAM,MAAM,IAAI,GAAG;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,EAAE,IAAI,EAAE,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,GAAG,QAAQ,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;AAE/E,MAAM,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;AAEhD;;;;GAIG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,GAAG;IACtC,2DAA2D;IAC3D,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,gEAAgE;IAChE,UAAU,CAAC,EAAE,aAAa,CAAC;IAC3B,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACrC,qEAAqE;IACrE,aAAa,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;CAClC;AAED,wBAAgB,QAAQ,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,CAqBhG"}
|
package/lib/evaluate/evaluate.js
CHANGED
|
@@ -3,9 +3,10 @@ import { isElementAllowed, canHaveChildren } from "../schema.js";
|
|
|
3
3
|
export function evaluate(source, schema, options) {
|
|
4
4
|
const { data = {}, components = {}, functions = {}, createElement } = options;
|
|
5
5
|
const h = createH(components, createElement || defaultCreateElement, schema);
|
|
6
|
+
const frozen = deepFreezeData(data);
|
|
6
7
|
try {
|
|
7
8
|
// eslint-disable-next-line @typescript-eslint/no-implied-eval, no-new-func
|
|
8
|
-
return new Function("h", "
|
|
9
|
+
return new Function("h", "Math", ...Object.keys(frozen), ...Object.keys(functions), source)(h, Math, ...Object.values(frozen), ...Object.values(functions));
|
|
9
10
|
}
|
|
10
11
|
catch (error) {
|
|
11
12
|
// We may have thrown an EvaluationError from createH()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluate.js","sourceRoot":"","sources":["../../src/evaluate/evaluate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAU,gBAAgB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAoCzE,MAAM,UAAU,QAAQ,CAAU,MAAc,EAAE,MAAc,EAAE,OAA2B;IAC3F,MAAM,EAAE,IAAI,GAAG,EAAE,EAAE,UAAU,GAAG,EAAE,EAAE,SAAS,GAAG,EAAE,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC;IAE9E,MAAM,CAAC,GAAG,OAAO,CAAC,UAAU,EAAE,aAAa,IAAI,oBAAoB,EAAE,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"evaluate.js","sourceRoot":"","sources":["../../src/evaluate/evaluate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAU,gBAAgB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAoCzE,MAAM,UAAU,QAAQ,CAAU,MAAc,EAAE,MAAc,EAAE,OAA2B;IAC3F,MAAM,EAAE,IAAI,GAAG,EAAE,EAAE,UAAU,GAAG,EAAE,EAAE,SAAS,GAAG,EAAE,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC;IAE9E,MAAM,CAAC,GAAG,OAAO,CAAC,UAAU,EAAE,aAAa,IAAI,oBAAoB,EAAE,MAAM,CAAC,CAAC;IAC7E,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,CAAC;QACH,2EAA2E;QAC3E,OAAO,IAAI,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CACzF,CAAC,EACD,IAAI,EACJ,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EACxB,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CACvB,CAAC;IACT,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,uDAAuD;QACvD,IAAI,KAAK,YAAY,eAAe,EAAE,CAAC;YACrC,MAAM,KAAK,CAAC;QACd,CAAC;QAED,MAAM,IAAI,eAAe,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;IAC1F,CAAC;AACH,CAAC;AAED,SAAS,OAAO,CAAC,UAAyB,EAAE,aAA4B,EAAE,MAAc;IACtF,OAAO,SAAS,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,QAAQ;QACxC,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAEnC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,IAAI,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;gBACnC,MAAM,gBAAgB,GAAG,CAAC,KAAgB,EAAO,EAAE,CAAC,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBAC5G,OAAO,aAAa,CAAC,gBAAgB,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;YACpF,CAAC;YAED,wCAAwC;YACxC,MAAM,IAAI,eAAe,CAAC,cAAc,IAAI,kBAAkB,CAAC,CAAC;QAClE,CAAC;QAED,OAAO,aAAa,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7E,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,GAA4B;IAClD,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACnB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC9D,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,UAAU,CAAC,KAAU;IAC5B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AACrD,CAAC;AAED,SAAS,oBAAoB,CAAC,SAAoB,EAAE,QAAmB,EAAE,EAAE,GAAG,QAAe;IAC3F,OAAO,SAAS,CAAC,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC3C,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jsxpression",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.22",
|
|
4
4
|
"description": "Validate and safely render JSX expressions",
|
|
5
5
|
"author": "Divid AB <info@divid.se>",
|
|
6
6
|
"repository": "https://github.com/dividab/abstract-visuals/tree/master/packages/jsxpression",
|
|
@@ -26,5 +26,5 @@
|
|
|
26
26
|
"acorn-jsx": "5.3.2",
|
|
27
27
|
"acorn-walk": "8.3.4"
|
|
28
28
|
},
|
|
29
|
-
"gitHead": "
|
|
29
|
+
"gitHead": "97ef8b0e899a4dd128ba6e26b27dba0d2d481702"
|
|
30
30
|
}
|
package/src/evaluate/evaluate.ts
CHANGED
|
@@ -39,20 +39,14 @@ export function evaluate<T = any>(source: string, schema: Schema, options: Evalu
|
|
|
39
39
|
const { data = {}, components = {}, functions = {}, createElement } = options;
|
|
40
40
|
|
|
41
41
|
const h = createH(components, createElement || defaultCreateElement, schema);
|
|
42
|
-
|
|
42
|
+
const frozen = deepFreezeData(data);
|
|
43
43
|
try {
|
|
44
44
|
// eslint-disable-next-line @typescript-eslint/no-implied-eval, no-new-func
|
|
45
|
-
return new Function(
|
|
46
|
-
"h",
|
|
47
|
-
"data",
|
|
48
|
-
"Math",
|
|
49
|
-
...Object.keys(functions),
|
|
50
|
-
source
|
|
51
|
-
)(
|
|
45
|
+
return new Function("h", "Math", ...Object.keys(frozen), ...Object.keys(functions), source)(
|
|
52
46
|
h,
|
|
53
|
-
deepFreezeData(data),
|
|
54
47
|
Math,
|
|
55
|
-
...Object.values(
|
|
48
|
+
...Object.values(frozen),
|
|
49
|
+
...Object.values(functions)
|
|
56
50
|
) as T;
|
|
57
51
|
} catch (error: unknown) {
|
|
58
52
|
// We may have thrown an EvaluationError from createH()
|
|
@@ -82,7 +76,7 @@ function createH(components: ComponentDict, createElement: CreateElement, schema
|
|
|
82
76
|
};
|
|
83
77
|
}
|
|
84
78
|
|
|
85
|
-
function deepFreezeData(obj:
|
|
79
|
+
function deepFreezeData(obj: Record<string, unknown>): Record<string, unknown> {
|
|
86
80
|
Object.freeze(obj);
|
|
87
81
|
Object.values(obj).filter(isDataDict).forEach(deepFreezeData);
|
|
88
82
|
return obj;
|