@builder.io/react 2.0.1 → 2.0.2-2
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/README.md +7 -0
- package/dist/builder-react-lite.cjs.js +2 -2
- package/dist/builder-react-lite.cjs.js.map +1 -1
- package/dist/builder-react-lite.esm.js +2 -2
- package/dist/builder-react-lite.esm.js.map +1 -1
- package/dist/builder-react.browser.js +3 -3
- package/dist/builder-react.browser.js.map +1 -1
- package/dist/builder-react.cjs.js +2 -2
- package/dist/builder-react.cjs.js.map +1 -1
- package/dist/builder-react.es5.js +2 -2
- package/dist/builder-react.es5.js.map +1 -1
- package/dist/builder-react.unpkg.js +3 -3
- package/dist/builder-react.unpkg.js.map +1 -1
- package/dist/lib/package.json +2 -2
- package/dist/lib/src/blocks/Text.js +5 -1
- package/dist/lib/src/blocks/Text.js.map +1 -1
- package/dist/lib/src/components/builder-component.component.js +3 -63
- package/dist/lib/src/components/builder-component.component.js.map +1 -1
- package/dist/lib/src/components/variants-provider.component.js +1 -1
- package/dist/lib/src/components/variants-provider.component.js.map +1 -1
- package/dist/lib/src/functions/try-eval.js +78 -0
- package/dist/lib/src/functions/try-eval.js.map +1 -0
- package/dist/types/src/functions/try-eval.d.ts +1 -0
- package/package.json +2 -2
- package/src/blocks/Text.tsx +10 -1
- package/src/components/builder-component.component.tsx +1 -79
- package/src/components/variants-provider.component.tsx +1 -1
- package/src/functions/try-eval.tsx +80 -0
- package/=16.8 +0 -15
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { Builder } from '@builder.io/sdk';
|
|
2
|
+
import { safeDynamicRequire } from './safe-dynamic-require';
|
|
3
|
+
|
|
4
|
+
export const tryEval = (str?: string, data: any = {}, errors?: Error[]): any => {
|
|
5
|
+
const value = str;
|
|
6
|
+
if (!(typeof value === 'string' && value.trim())) {
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
const useReturn = !(value.includes(';') || value.includes(' return '));
|
|
10
|
+
let fn: Function = () => {
|
|
11
|
+
/* Intentionally empty */
|
|
12
|
+
};
|
|
13
|
+
try {
|
|
14
|
+
if (Builder.isBrowser) {
|
|
15
|
+
// tslint:disable-next-line:no-function-constructor-with-string-args
|
|
16
|
+
// TODO: VM in node......
|
|
17
|
+
fn = new Function(
|
|
18
|
+
'state',
|
|
19
|
+
// TODO: remove the with () {} - make a page v3 that doesn't use this
|
|
20
|
+
`var rootState = state;
|
|
21
|
+
if (typeof Proxy !== 'undefined') {
|
|
22
|
+
rootState = new Proxy(rootState, {
|
|
23
|
+
set: function () {
|
|
24
|
+
return false;
|
|
25
|
+
},
|
|
26
|
+
get: function (target, key) {
|
|
27
|
+
if (key === 'state') {
|
|
28
|
+
return state;
|
|
29
|
+
}
|
|
30
|
+
return target[key]
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
with (rootState) {
|
|
35
|
+
${useReturn ? `return (${str});` : str};
|
|
36
|
+
}`
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
} catch (error) {
|
|
40
|
+
if (Builder.isBrowser) {
|
|
41
|
+
console.warn('Could not compile javascript', error);
|
|
42
|
+
} else {
|
|
43
|
+
// Add to req.options.errors to return to client
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
try {
|
|
47
|
+
if (Builder.isBrowser) {
|
|
48
|
+
return fn(data || {});
|
|
49
|
+
} else {
|
|
50
|
+
// Below is a hack to get certain code to *only* load in the server build, to not screw with
|
|
51
|
+
// browser bundler's like rollup and webpack. Our rollup plugin strips these comments only
|
|
52
|
+
// for the server build
|
|
53
|
+
// tslint:disable:comment-format
|
|
54
|
+
const { VM } = safeDynamicRequire('vm2');
|
|
55
|
+
return new VM({
|
|
56
|
+
sandbox: {
|
|
57
|
+
...data,
|
|
58
|
+
...{ state: data },
|
|
59
|
+
},
|
|
60
|
+
// TODO: convert reutrn to module.exports on server
|
|
61
|
+
}).run(value.replace(/(^|;)return /, '$1'));
|
|
62
|
+
// tslint:enable:comment-format
|
|
63
|
+
}
|
|
64
|
+
} catch (error: any) {
|
|
65
|
+
if (errors) {
|
|
66
|
+
errors.push(error);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
if (Builder.isBrowser) {
|
|
70
|
+
console.warn('Builder custom code error:', error.message, 'in', str, error.stack);
|
|
71
|
+
} else {
|
|
72
|
+
if (process.env.DEBUG) {
|
|
73
|
+
console.debug('Builder custom code error:', error.message, 'in', str, error.stack);
|
|
74
|
+
}
|
|
75
|
+
// Add to req.options.errors to return to client
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
return;
|
|
80
|
+
};
|
package/=16.8
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
up to date, audited 1914 packages in 4s
|
|
3
|
-
|
|
4
|
-
46 packages are looking for funding
|
|
5
|
-
run `npm fund` for details
|
|
6
|
-
|
|
7
|
-
39 vulnerabilities (15 moderate, 21 high, 3 critical)
|
|
8
|
-
|
|
9
|
-
To address issues that do not require attention, run:
|
|
10
|
-
npm audit fix
|
|
11
|
-
|
|
12
|
-
To address all issues (including breaking changes), run:
|
|
13
|
-
npm audit fix --force
|
|
14
|
-
|
|
15
|
-
Run `npm audit` for details.
|