@builder.io/sdk-react-native 0.5.7 → 0.5.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/dist/components/block/components/component-ref/component-ref.js +1 -0
- package/dist/components/content/components/enable-editor.js +2 -1
- package/dist/constants/sdk-version.js +1 -1
- package/dist/functions/evaluate/browser-runtime/browser.js +36 -0
- package/dist/functions/evaluate/browser-runtime/index.js +5 -0
- package/dist/functions/evaluate/evaluate.js +17 -42
- package/dist/functions/evaluate/helpers.js +13 -0
- package/dist/functions/evaluate/index.js +2 -2
- package/dist/functions/evaluate/node-runtime/index.js +5 -0
- package/dist/functions/evaluate/non-node-runtime/non-node-runtime.js +15 -16
- package/dist/functions/get-block-actions-handler.js +2 -2
- package/dist/functions/register-component.js +1 -1
- package/dist/index.js +1 -23
- package/dist/server-index.js +40 -0
- package/package.json +1 -1
- package/src/components/block/components/component-ref/component-ref.jsx +1 -0
- package/src/components/content/components/enable-editor.jsx +2 -1
- package/src/constants/sdk-version.js +1 -1
- package/src/functions/evaluate/browser-runtime/browser.js +40 -0
- package/src/functions/evaluate/browser-runtime/index.js +2 -0
- package/src/functions/evaluate/evaluate.js +14 -44
- package/src/functions/evaluate/helpers.js +15 -0
- package/src/functions/evaluate/index.js +1 -1
- package/src/functions/evaluate/node-runtime/index.js +2 -0
- package/src/functions/evaluate/non-node-runtime/non-node-runtime.js +12 -13
- package/src/functions/get-block-actions-handler.js +1 -1
- package/src/functions/register-component.js +1 -1
- package/src/index.js +1 -10
- package/src/server-index.js +11 -0
- package/dist/functions/evaluate/types.js +0 -1
- package/src/functions/evaluate/types.js +0 -0
- /package/dist/functions/evaluate/{acorn-interpreter.js → non-node-runtime/acorn-interpreter.js} +0 -0
- /package/src/functions/evaluate/{acorn-interpreter.js → non-node-runtime/acorn-interpreter.js} +0 -0
|
@@ -34,6 +34,7 @@ const block_styles_1 = __importDefault(require("../block-styles"));
|
|
|
34
34
|
const block_1 = __importDefault(require("../../block"));
|
|
35
35
|
const interactive_element_1 = __importDefault(require("../interactive-element"));
|
|
36
36
|
const component_ref_helpers_js_1 = require("./component-ref.helpers.js");
|
|
37
|
+
const wrap_component_ref_js_1 = require("../../../content/wrap-component-ref.js");
|
|
37
38
|
const builder_context_js_1 = __importDefault(require("../../../../context/builder.context.js"));
|
|
38
39
|
function ComponentRef(props) {
|
|
39
40
|
var _a, _b;
|
|
@@ -44,6 +44,7 @@ const logger_js_1 = require("../../../helpers/logger.js");
|
|
|
44
44
|
const index_js_3 = require("../../../functions/get-content/index.js");
|
|
45
45
|
const is_previewing_js_1 = require("../../../functions/is-previewing.js");
|
|
46
46
|
const set_js_1 = require("../../../helpers/preview-lru-cache/set.js");
|
|
47
|
+
const fast_clone_js_1 = require("../../../functions/fast-clone.js");
|
|
47
48
|
function EnableEditor(props) {
|
|
48
49
|
var _a, _b, _c, _d, _e;
|
|
49
50
|
const elementRef = (0, react_1.useRef)(null);
|
|
@@ -184,7 +185,7 @@ function EnableEditor(props) {
|
|
|
184
185
|
if ((0, is_editing_js_1.isEditing)()) {
|
|
185
186
|
window.dispatchEvent(new CustomEvent("builder:component:stateChange", {
|
|
186
187
|
detail: {
|
|
187
|
-
state: props.builderContextSignal.rootState,
|
|
188
|
+
state: (0, fast_clone_js_1.fastClone)(props.builderContextSignal.rootState),
|
|
188
189
|
ref: {
|
|
189
190
|
name: props.model,
|
|
190
191
|
},
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runInBrowser = exports.flattenState = void 0;
|
|
4
|
+
const helpers_js_1 = require("../helpers.js");
|
|
5
|
+
const runInBrowser = ({ code, builder, context, event, localState, rootSetState, rootState }) => {
|
|
6
|
+
const functionArgs = (0, helpers_js_1.getFunctionArguments)({
|
|
7
|
+
builder,
|
|
8
|
+
context,
|
|
9
|
+
event,
|
|
10
|
+
state: flattenState(rootState, localState, rootSetState)
|
|
11
|
+
});
|
|
12
|
+
return new Function(...functionArgs.map(([name]) => name), code)(...functionArgs.map(([, value]) => value));
|
|
13
|
+
};
|
|
14
|
+
exports.runInBrowser = runInBrowser;
|
|
15
|
+
function flattenState(rootState, localState, rootSetState) {
|
|
16
|
+
if (rootState === localState) {
|
|
17
|
+
throw new Error("rootState === localState");
|
|
18
|
+
}
|
|
19
|
+
return new Proxy(rootState, {
|
|
20
|
+
get: (_, prop) => {
|
|
21
|
+
if (localState && prop in localState) {
|
|
22
|
+
return localState[prop];
|
|
23
|
+
}
|
|
24
|
+
return rootState[prop];
|
|
25
|
+
},
|
|
26
|
+
set: (_, prop, value) => {
|
|
27
|
+
if (localState && prop in localState) {
|
|
28
|
+
throw new Error("Writing to local state is not allowed as it is read-only.");
|
|
29
|
+
}
|
|
30
|
+
rootState[prop] = value;
|
|
31
|
+
rootSetState == null ? void 0 : rootSetState(rootState);
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
exports.flattenState = flattenState;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.evaluator = void 0;
|
|
4
|
+
const browser_js_1 = require("./browser.js");
|
|
5
|
+
Object.defineProperty(exports, "evaluator", { enumerable: true, get: function () { return browser_js_1.runInBrowser; } });
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.evaluate = void 0;
|
|
4
4
|
const logger_js_1 = require("../../helpers/logger.js");
|
|
5
5
|
const is_browser_js_1 = require("../is-browser.js");
|
|
6
6
|
const is_editing_js_1 = require("../is-editing.js");
|
|
7
|
-
const
|
|
7
|
+
const helpers_js_1 = require("../track/helpers.js");
|
|
8
|
+
const browser_js_1 = require("./browser-runtime/browser.js");
|
|
8
9
|
const index_js_1 = require("./non-node-runtime/index.js");
|
|
10
|
+
const is_non_node_server_js_1 = require("../is-non-node-server.js");
|
|
9
11
|
function evaluate({ code, context, localState, rootState, rootSetState, event, isExpression = true }) {
|
|
10
12
|
if (code === "") {
|
|
11
13
|
logger_js_1.logger.warn("Skipping evaluation of empty code block.");
|
|
@@ -14,12 +16,13 @@ function evaluate({ code, context, localState, rootState, rootSetState, event, i
|
|
|
14
16
|
const builder = {
|
|
15
17
|
isEditing: (0, is_editing_js_1.isEditing)(),
|
|
16
18
|
isBrowser: (0, is_browser_js_1.isBrowser)(),
|
|
17
|
-
isServer: !(0, is_browser_js_1.isBrowser)()
|
|
19
|
+
isServer: !(0, is_browser_js_1.isBrowser)(),
|
|
20
|
+
getUserAttributes: () => (0, helpers_js_1.getUserAttributes)()
|
|
18
21
|
};
|
|
19
22
|
const useReturn = isExpression && !(code.includes(";") || code.includes(" return ") || code.trim().startsWith("return "));
|
|
20
23
|
const useCode = useReturn ? `return (${code});` : code;
|
|
21
24
|
const args = {
|
|
22
|
-
useCode,
|
|
25
|
+
code: useCode,
|
|
23
26
|
builder,
|
|
24
27
|
context,
|
|
25
28
|
event,
|
|
@@ -27,46 +30,18 @@ function evaluate({ code, context, localState, rootState, rootSetState, event, i
|
|
|
27
30
|
rootState,
|
|
28
31
|
localState
|
|
29
32
|
};
|
|
30
|
-
if ((0, is_browser_js_1.isBrowser)())
|
|
31
|
-
return runInBrowser(args);
|
|
32
|
-
if ((0, is_non_node_server_js_1.isNonNodeServer)())
|
|
33
|
-
return (0, index_js_1.runInNonNode)(args);
|
|
34
|
-
return runInNode(args);
|
|
35
|
-
}
|
|
36
|
-
exports.evaluate = evaluate;
|
|
37
|
-
const runInBrowser = ({ useCode, builder, context, event, localState, rootSetState, rootState }) => {
|
|
38
|
-
const state = flattenState(rootState, localState, rootSetState);
|
|
39
33
|
try {
|
|
40
|
-
|
|
34
|
+
if ((0, is_browser_js_1.isBrowser)())
|
|
35
|
+
return (0, browser_js_1.runInBrowser)(args);
|
|
36
|
+
if ((0, is_non_node_server_js_1.isNonNodeServer)())
|
|
37
|
+
return (0, index_js_1.runInNonNode)(args);
|
|
38
|
+
return (0, browser_js_1.runInBrowser)(args);
|
|
41
39
|
}
|
|
42
40
|
catch (e) {
|
|
43
|
-
logger_js_1.logger.
|
|
44
|
-
|
|
45
|
-
};
|
|
46
|
-
|
|
47
|
-
const runInNode = args => {
|
|
48
|
-
return runInBrowser(args);
|
|
49
|
-
};
|
|
50
|
-
exports.runInNode = runInNode;
|
|
51
|
-
function flattenState(rootState, localState, rootSetState) {
|
|
52
|
-
if (rootState === localState) {
|
|
53
|
-
throw new Error("rootState === localState");
|
|
41
|
+
logger_js_1.logger.error("Failed code evaluation: " + e.message, {
|
|
42
|
+
code
|
|
43
|
+
});
|
|
44
|
+
return void 0;
|
|
54
45
|
}
|
|
55
|
-
return new Proxy(rootState, {
|
|
56
|
-
get: (_, prop) => {
|
|
57
|
-
if (localState && prop in localState) {
|
|
58
|
-
return localState[prop];
|
|
59
|
-
}
|
|
60
|
-
return rootState[prop];
|
|
61
|
-
},
|
|
62
|
-
set: (_, prop, value) => {
|
|
63
|
-
if (localState && prop in localState) {
|
|
64
|
-
throw new Error("Writing to local state is not allowed as it is read-only.");
|
|
65
|
-
}
|
|
66
|
-
rootState[prop] = value;
|
|
67
|
-
rootSetState == null ? void 0 : rootSetState(rootState);
|
|
68
|
-
return true;
|
|
69
|
-
}
|
|
70
|
-
});
|
|
71
46
|
}
|
|
72
|
-
exports.
|
|
47
|
+
exports.evaluate = evaluate;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getFunctionArguments = void 0;
|
|
4
|
+
const getFunctionArguments = ({ builder, context, event, state }) => {
|
|
5
|
+
return Object.entries({
|
|
6
|
+
state,
|
|
7
|
+
Builder: builder,
|
|
8
|
+
builder,
|
|
9
|
+
context,
|
|
10
|
+
event
|
|
11
|
+
});
|
|
12
|
+
};
|
|
13
|
+
exports.getFunctionArguments = getFunctionArguments;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.evaluate = void 0;
|
|
4
|
-
const
|
|
5
|
-
Object.defineProperty(exports, "evaluate", { enumerable: true, get: function () { return
|
|
4
|
+
const evaluate_js_1 = require("./evaluate.js");
|
|
5
|
+
Object.defineProperty(exports, "evaluate", { enumerable: true, get: function () { return evaluate_js_1.evaluate; } });
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.evaluator = void 0;
|
|
4
|
+
const index_js_1 = require("../browser-runtime/index.js");
|
|
5
|
+
Object.defineProperty(exports, "evaluator", { enumerable: true, get: function () { return index_js_1.evaluator; } });
|
|
@@ -25,9 +25,10 @@ var __spreadValues = (a, b) => {
|
|
|
25
25
|
}
|
|
26
26
|
return a;
|
|
27
27
|
};
|
|
28
|
-
const
|
|
29
|
-
const
|
|
30
|
-
const acorn_interpreter_js_1 = __importDefault(require("
|
|
28
|
+
const logger_js_1 = require("../../../helpers/logger.js");
|
|
29
|
+
const set_js_1 = require("../../set.js");
|
|
30
|
+
const acorn_interpreter_js_1 = __importDefault(require("./acorn-interpreter.js"));
|
|
31
|
+
const helpers_js_1 = require("../helpers.js");
|
|
31
32
|
const processCode = code => {
|
|
32
33
|
return code.split("\n").map(line => {
|
|
33
34
|
const trimmed = line.trim();
|
|
@@ -46,19 +47,18 @@ const processCode = code => {
|
|
|
46
47
|
}).filter(Boolean).join("\n");
|
|
47
48
|
};
|
|
48
49
|
const getJSONValName = val => val + "JSON";
|
|
49
|
-
const runInNonNode = ({ builder, context, event, rootState, localState, rootSetState,
|
|
50
|
+
const runInNonNode = ({ builder, context, event, rootState, localState, rootSetState, code }) => {
|
|
50
51
|
const state = __spreadValues(__spreadValues({}, rootState), localState);
|
|
51
|
-
const properties = {
|
|
52
|
-
state,
|
|
53
|
-
Builder: builder,
|
|
52
|
+
const properties = (0, helpers_js_1.getFunctionArguments)({
|
|
54
53
|
builder,
|
|
55
54
|
context,
|
|
56
|
-
event
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
const
|
|
55
|
+
event,
|
|
56
|
+
state
|
|
57
|
+
});
|
|
58
|
+
const prependedCode = properties.map(([key]) => `var ${key} = JSON.parse(${getJSONValName(key)});`).join("\n");
|
|
59
|
+
const cleanedCode = processCode(code);
|
|
60
60
|
if (cleanedCode === "") {
|
|
61
|
-
|
|
61
|
+
logger_js_1.logger.warn("Skipping evaluation of empty code block.");
|
|
62
62
|
return;
|
|
63
63
|
}
|
|
64
64
|
const transformed = `
|
|
@@ -70,12 +70,11 @@ function theFunction() {
|
|
|
70
70
|
theFunction();
|
|
71
71
|
`;
|
|
72
72
|
const setRootState = (prop, value) => {
|
|
73
|
-
const newState = (0,
|
|
73
|
+
const newState = (0, set_js_1.set)(state, prop, value);
|
|
74
74
|
rootSetState == null ? void 0 : rootSetState(newState);
|
|
75
75
|
};
|
|
76
76
|
const initFunc = function (interpreter, globalObject) {
|
|
77
|
-
|
|
78
|
-
const val = properties[key] || {};
|
|
77
|
+
properties.forEach(([key, val]) => {
|
|
79
78
|
const jsonVal = JSON.stringify(val);
|
|
80
79
|
interpreter.setProperty(globalObject, getJSONValName(key), jsonVal);
|
|
81
80
|
});
|
|
@@ -88,7 +87,7 @@ theFunction();
|
|
|
88
87
|
return output;
|
|
89
88
|
}
|
|
90
89
|
catch (e) {
|
|
91
|
-
|
|
90
|
+
logger_js_1.logger.warn("Custom code error in non-node runtime. SDK can only execute ES5 JavaScript.", {
|
|
92
91
|
e
|
|
93
92
|
});
|
|
94
93
|
return;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createEventHandler = void 0;
|
|
4
|
-
const
|
|
5
|
-
const createEventHandler = (value, options) => event => (0,
|
|
4
|
+
const index_js_1 = require("./evaluate/index.js");
|
|
5
|
+
const createEventHandler = (value, options) => event => (0, index_js_1.evaluate)({
|
|
6
6
|
code: value,
|
|
7
7
|
context: options.context,
|
|
8
8
|
localState: options.localState,
|
|
@@ -50,7 +50,7 @@ function registerComponent(component, info) {
|
|
|
50
50
|
exports.registerComponent = registerComponent;
|
|
51
51
|
const createRegisterComponentMessage = info => ({
|
|
52
52
|
type: "builder.registerComponent",
|
|
53
|
-
data: info
|
|
53
|
+
data: serializeComponentInfo(info)
|
|
54
54
|
});
|
|
55
55
|
exports.createRegisterComponentMessage = createRegisterComponentMessage;
|
|
56
56
|
const serializeFn = fnValue => {
|
package/dist/index.js
CHANGED
|
@@ -14,28 +14,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.track = exports.setEditorSettings = exports.register = exports.isPreviewing = exports.isEditing = exports.getContent = exports.getBuilderSearchParams = exports.getAllContent = exports.fetchOneEntry = exports.fetchEntries = exports.fetchBuilderProps = exports.createRegisterComponentMessage = exports._processContentResult = void 0;
|
|
18
17
|
__exportStar(require("./index-helpers/top-of-file.js"), exports);
|
|
19
18
|
__exportStar(require("./index-helpers/blocks-exports.js"), exports);
|
|
20
|
-
|
|
21
|
-
Object.defineProperty(exports, "isEditing", { enumerable: true, get: function () { return is_editing_js_1.isEditing; } });
|
|
22
|
-
const is_previewing_js_1 = require("./functions/is-previewing.js");
|
|
23
|
-
Object.defineProperty(exports, "isPreviewing", { enumerable: true, get: function () { return is_previewing_js_1.isPreviewing; } });
|
|
24
|
-
const register_component_js_1 = require("./functions/register-component.js");
|
|
25
|
-
Object.defineProperty(exports, "createRegisterComponentMessage", { enumerable: true, get: function () { return register_component_js_1.createRegisterComponentMessage; } });
|
|
26
|
-
const register_js_1 = require("./functions/register.js");
|
|
27
|
-
Object.defineProperty(exports, "register", { enumerable: true, get: function () { return register_js_1.register; } });
|
|
28
|
-
const set_editor_settings_js_1 = require("./functions/set-editor-settings.js");
|
|
29
|
-
Object.defineProperty(exports, "setEditorSettings", { enumerable: true, get: function () { return set_editor_settings_js_1.setEditorSettings; } });
|
|
30
|
-
const index_js_1 = require("./functions/get-content/index.js");
|
|
31
|
-
Object.defineProperty(exports, "fetchEntries", { enumerable: true, get: function () { return index_js_1.fetchEntries; } });
|
|
32
|
-
Object.defineProperty(exports, "fetchOneEntry", { enumerable: true, get: function () { return index_js_1.fetchOneEntry; } });
|
|
33
|
-
Object.defineProperty(exports, "getAllContent", { enumerable: true, get: function () { return index_js_1.getAllContent; } });
|
|
34
|
-
Object.defineProperty(exports, "getContent", { enumerable: true, get: function () { return index_js_1.getContent; } });
|
|
35
|
-
Object.defineProperty(exports, "_processContentResult", { enumerable: true, get: function () { return index_js_1._processContentResult; } });
|
|
36
|
-
const index_js_2 = require("./functions/get-builder-search-params/index.js");
|
|
37
|
-
Object.defineProperty(exports, "getBuilderSearchParams", { enumerable: true, get: function () { return index_js_2.getBuilderSearchParams; } });
|
|
38
|
-
const index_js_3 = require("./functions/track/index.js");
|
|
39
|
-
Object.defineProperty(exports, "track", { enumerable: true, get: function () { return index_js_3.track; } });
|
|
40
|
-
const fetch_builder_props_js_1 = require("./functions/fetch-builder-props.js");
|
|
41
|
-
Object.defineProperty(exports, "fetchBuilderProps", { enumerable: true, get: function () { return fetch_builder_props_js_1.fetchBuilderProps; } });
|
|
19
|
+
__exportStar(require("./server-index.js"), exports);
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.track = exports.setEditorSettings = exports.register = exports.isPreviewing = exports.isEditing = exports.getContent = exports.getBuilderSearchParams = exports.getAllContent = exports.fetchOneEntry = exports.fetchEntries = exports.fetchBuilderProps = exports.createRegisterComponentMessage = exports._processContentResult = void 0;
|
|
18
|
+
__exportStar(require("./index-helpers/top-of-file.js"), exports);
|
|
19
|
+
const is_editing_js_1 = require("./functions/is-editing.js");
|
|
20
|
+
Object.defineProperty(exports, "isEditing", { enumerable: true, get: function () { return is_editing_js_1.isEditing; } });
|
|
21
|
+
const is_previewing_js_1 = require("./functions/is-previewing.js");
|
|
22
|
+
Object.defineProperty(exports, "isPreviewing", { enumerable: true, get: function () { return is_previewing_js_1.isPreviewing; } });
|
|
23
|
+
const register_component_js_1 = require("./functions/register-component.js");
|
|
24
|
+
Object.defineProperty(exports, "createRegisterComponentMessage", { enumerable: true, get: function () { return register_component_js_1.createRegisterComponentMessage; } });
|
|
25
|
+
const register_js_1 = require("./functions/register.js");
|
|
26
|
+
Object.defineProperty(exports, "register", { enumerable: true, get: function () { return register_js_1.register; } });
|
|
27
|
+
const set_editor_settings_js_1 = require("./functions/set-editor-settings.js");
|
|
28
|
+
Object.defineProperty(exports, "setEditorSettings", { enumerable: true, get: function () { return set_editor_settings_js_1.setEditorSettings; } });
|
|
29
|
+
const index_js_1 = require("./functions/get-content/index.js");
|
|
30
|
+
Object.defineProperty(exports, "fetchEntries", { enumerable: true, get: function () { return index_js_1.fetchEntries; } });
|
|
31
|
+
Object.defineProperty(exports, "fetchOneEntry", { enumerable: true, get: function () { return index_js_1.fetchOneEntry; } });
|
|
32
|
+
Object.defineProperty(exports, "getAllContent", { enumerable: true, get: function () { return index_js_1.getAllContent; } });
|
|
33
|
+
Object.defineProperty(exports, "getContent", { enumerable: true, get: function () { return index_js_1.getContent; } });
|
|
34
|
+
Object.defineProperty(exports, "_processContentResult", { enumerable: true, get: function () { return index_js_1._processContentResult; } });
|
|
35
|
+
const index_js_2 = require("./functions/get-builder-search-params/index.js");
|
|
36
|
+
Object.defineProperty(exports, "getBuilderSearchParams", { enumerable: true, get: function () { return index_js_2.getBuilderSearchParams; } });
|
|
37
|
+
const index_js_3 = require("./functions/track/index.js");
|
|
38
|
+
Object.defineProperty(exports, "track", { enumerable: true, get: function () { return index_js_3.track; } });
|
|
39
|
+
const fetch_builder_props_js_1 = require("./functions/fetch-builder-props.js");
|
|
40
|
+
Object.defineProperty(exports, "fetchBuilderProps", { enumerable: true, get: function () { return fetch_builder_props_js_1.fetchBuilderProps; } });
|
package/package.json
CHANGED
|
@@ -13,6 +13,7 @@ import BlockStyles from "../block-styles";
|
|
|
13
13
|
import Block from "../../block";
|
|
14
14
|
import InteractiveElement from "../interactive-element";
|
|
15
15
|
import { getWrapperProps } from "./component-ref.helpers.js";
|
|
16
|
+
import { wrapComponentRef } from "../../../content/wrap-component-ref.js";
|
|
16
17
|
import BuilderContext from "../../../../context/builder.context.js";
|
|
17
18
|
|
|
18
19
|
function ComponentRef(props) {
|
|
@@ -26,6 +26,7 @@ import { logger } from "../../../helpers/logger.js";
|
|
|
26
26
|
import { fetchOneEntry } from "../../../functions/get-content/index.js";
|
|
27
27
|
import { isPreviewing } from "../../../functions/is-previewing.js";
|
|
28
28
|
import { postPreviewContent } from "../../../helpers/preview-lru-cache/set.js";
|
|
29
|
+
import { fastClone } from "../../../functions/fast-clone.js";
|
|
29
30
|
|
|
30
31
|
function EnableEditor(props) {
|
|
31
32
|
const elementRef = useRef(null);
|
|
@@ -186,7 +187,7 @@ function EnableEditor(props) {
|
|
|
186
187
|
window.dispatchEvent(
|
|
187
188
|
new CustomEvent("builder:component:stateChange", {
|
|
188
189
|
detail: {
|
|
189
|
-
state: props.builderContextSignal.rootState,
|
|
190
|
+
state: fastClone(props.builderContextSignal.rootState),
|
|
190
191
|
ref: {
|
|
191
192
|
name: props.model,
|
|
192
193
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export const SDK_VERSION = "0.5.
|
|
1
|
+
export const SDK_VERSION = "0.5.9"
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { getFunctionArguments } from "../helpers.js";
|
|
2
|
+
const runInBrowser = ({
|
|
3
|
+
code,
|
|
4
|
+
builder,
|
|
5
|
+
context,
|
|
6
|
+
event,
|
|
7
|
+
localState,
|
|
8
|
+
rootSetState,
|
|
9
|
+
rootState
|
|
10
|
+
}) => {
|
|
11
|
+
const functionArgs = getFunctionArguments({
|
|
12
|
+
builder,
|
|
13
|
+
context,
|
|
14
|
+
event,
|
|
15
|
+
state: flattenState(rootState, localState, rootSetState)
|
|
16
|
+
});
|
|
17
|
+
return new Function(...functionArgs.map(([name]) => name), code)(...functionArgs.map(([, value]) => value));
|
|
18
|
+
};
|
|
19
|
+
function flattenState(rootState, localState, rootSetState) {
|
|
20
|
+
if (rootState === localState) {
|
|
21
|
+
throw new Error("rootState === localState");
|
|
22
|
+
}
|
|
23
|
+
return new Proxy(rootState, {
|
|
24
|
+
get: (_, prop) => {
|
|
25
|
+
if (localState && prop in localState) {
|
|
26
|
+
return localState[prop];
|
|
27
|
+
}
|
|
28
|
+
return rootState[prop];
|
|
29
|
+
},
|
|
30
|
+
set: (_, prop, value) => {
|
|
31
|
+
if (localState && prop in localState) {
|
|
32
|
+
throw new Error("Writing to local state is not allowed as it is read-only.");
|
|
33
|
+
}
|
|
34
|
+
rootState[prop] = value;
|
|
35
|
+
rootSetState == null ? void 0 : rootSetState(rootState);
|
|
36
|
+
return true;
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
export { flattenState, runInBrowser }
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { logger } from "../../helpers/logger.js";
|
|
2
2
|
import { isBrowser } from "../is-browser.js";
|
|
3
3
|
import { isEditing } from "../is-editing.js";
|
|
4
|
-
import {
|
|
4
|
+
import { getUserAttributes } from "../track/helpers.js";
|
|
5
|
+
import { runInBrowser } from "./browser-runtime/browser.js";
|
|
5
6
|
import { runInNonNode } from "./non-node-runtime/index.js";
|
|
7
|
+
import { isNonNodeServer } from "../is-non-node-server.js";
|
|
6
8
|
function evaluate({
|
|
7
9
|
code,
|
|
8
10
|
context,
|
|
@@ -19,12 +21,13 @@ function evaluate({
|
|
|
19
21
|
const builder = {
|
|
20
22
|
isEditing: isEditing(),
|
|
21
23
|
isBrowser: isBrowser(),
|
|
22
|
-
isServer: !isBrowser()
|
|
24
|
+
isServer: !isBrowser(),
|
|
25
|
+
getUserAttributes: () => getUserAttributes()
|
|
23
26
|
};
|
|
24
27
|
const useReturn = isExpression && !(code.includes(";") || code.includes(" return ") || code.trim().startsWith("return "));
|
|
25
28
|
const useCode = useReturn ? `return (${code});` : code;
|
|
26
29
|
const args = {
|
|
27
|
-
useCode,
|
|
30
|
+
code: useCode,
|
|
28
31
|
builder,
|
|
29
32
|
context,
|
|
30
33
|
event,
|
|
@@ -32,48 +35,15 @@ function evaluate({
|
|
|
32
35
|
rootState,
|
|
33
36
|
localState
|
|
34
37
|
};
|
|
35
|
-
if (isBrowser()) return runInBrowser(args);
|
|
36
|
-
if (isNonNodeServer()) return runInNonNode(args);
|
|
37
|
-
return runInNode(args);
|
|
38
|
-
}
|
|
39
|
-
const runInBrowser = ({
|
|
40
|
-
useCode,
|
|
41
|
-
builder,
|
|
42
|
-
context,
|
|
43
|
-
event,
|
|
44
|
-
localState,
|
|
45
|
-
rootSetState,
|
|
46
|
-
rootState
|
|
47
|
-
}) => {
|
|
48
|
-
const state = flattenState(rootState, localState, rootSetState);
|
|
49
38
|
try {
|
|
50
|
-
|
|
39
|
+
if (isBrowser()) return runInBrowser(args);
|
|
40
|
+
if (isNonNodeServer()) return runInNonNode(args);
|
|
41
|
+
return runInBrowser(args);
|
|
51
42
|
} catch (e) {
|
|
52
|
-
logger.
|
|
53
|
-
|
|
54
|
-
};
|
|
55
|
-
|
|
56
|
-
return runInBrowser(args);
|
|
57
|
-
};
|
|
58
|
-
function flattenState(rootState, localState, rootSetState) {
|
|
59
|
-
if (rootState === localState) {
|
|
60
|
-
throw new Error("rootState === localState");
|
|
43
|
+
logger.error("Failed code evaluation: " + e.message, {
|
|
44
|
+
code
|
|
45
|
+
});
|
|
46
|
+
return void 0;
|
|
61
47
|
}
|
|
62
|
-
return new Proxy(rootState, {
|
|
63
|
-
get: (_, prop) => {
|
|
64
|
-
if (localState && prop in localState) {
|
|
65
|
-
return localState[prop];
|
|
66
|
-
}
|
|
67
|
-
return rootState[prop];
|
|
68
|
-
},
|
|
69
|
-
set: (_, prop, value) => {
|
|
70
|
-
if (localState && prop in localState) {
|
|
71
|
-
throw new Error("Writing to local state is not allowed as it is read-only.");
|
|
72
|
-
}
|
|
73
|
-
rootState[prop] = value;
|
|
74
|
-
rootSetState == null ? void 0 : rootSetState(rootState);
|
|
75
|
-
return true;
|
|
76
|
-
}
|
|
77
|
-
});
|
|
78
48
|
}
|
|
79
|
-
export { evaluate
|
|
49
|
+
export { evaluate }
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { evaluate } from "./evaluate";
|
|
1
|
+
import { evaluate } from "./evaluate.js";
|
|
2
2
|
export { evaluate }
|
|
@@ -15,9 +15,10 @@ var __spreadValues = (a, b) => {
|
|
|
15
15
|
}
|
|
16
16
|
return a;
|
|
17
17
|
};
|
|
18
|
-
import { logger } from "../../../helpers/logger";
|
|
19
|
-
import { set } from "../../set";
|
|
20
|
-
import Interpreter from "
|
|
18
|
+
import { logger } from "../../../helpers/logger.js";
|
|
19
|
+
import { set } from "../../set.js";
|
|
20
|
+
import Interpreter from "./acorn-interpreter.js";
|
|
21
|
+
import { getFunctionArguments } from "../helpers.js";
|
|
21
22
|
const processCode = code => {
|
|
22
23
|
return code.split("\n").map(line => {
|
|
23
24
|
const trimmed = line.trim();
|
|
@@ -41,18 +42,17 @@ const runInNonNode = ({
|
|
|
41
42
|
rootState,
|
|
42
43
|
localState,
|
|
43
44
|
rootSetState,
|
|
44
|
-
|
|
45
|
+
code
|
|
45
46
|
}) => {
|
|
46
47
|
const state = __spreadValues(__spreadValues({}, rootState), localState);
|
|
47
|
-
const properties = {
|
|
48
|
-
state,
|
|
49
|
-
Builder: builder,
|
|
48
|
+
const properties = getFunctionArguments({
|
|
50
49
|
builder,
|
|
51
50
|
context,
|
|
52
|
-
event
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
const
|
|
51
|
+
event,
|
|
52
|
+
state
|
|
53
|
+
});
|
|
54
|
+
const prependedCode = properties.map(([key]) => `var ${key} = JSON.parse(${getJSONValName(key)});`).join("\n");
|
|
55
|
+
const cleanedCode = processCode(code);
|
|
56
56
|
if (cleanedCode === "") {
|
|
57
57
|
logger.warn("Skipping evaluation of empty code block.");
|
|
58
58
|
return;
|
|
@@ -70,8 +70,7 @@ theFunction();
|
|
|
70
70
|
rootSetState == null ? void 0 : rootSetState(newState);
|
|
71
71
|
};
|
|
72
72
|
const initFunc = function (interpreter, globalObject) {
|
|
73
|
-
|
|
74
|
-
const val = properties[key] || {};
|
|
73
|
+
properties.forEach(([key, val]) => {
|
|
75
74
|
const jsonVal = JSON.stringify(val);
|
|
76
75
|
interpreter.setProperty(globalObject, getJSONValName(key), jsonVal);
|
|
77
76
|
});
|
|
@@ -37,7 +37,7 @@ function registerComponent(component, info) {
|
|
|
37
37
|
}
|
|
38
38
|
const createRegisterComponentMessage = info => ({
|
|
39
39
|
type: "builder.registerComponent",
|
|
40
|
-
data: info
|
|
40
|
+
data: serializeComponentInfo(info)
|
|
41
41
|
});
|
|
42
42
|
const serializeFn = fnValue => {
|
|
43
43
|
const fnStr = fnValue.toString().trim();
|
package/src/index.js
CHANGED
|
@@ -1,12 +1,3 @@
|
|
|
1
1
|
export * from "./index-helpers/top-of-file.js";
|
|
2
2
|
export * from "./index-helpers/blocks-exports.js";
|
|
3
|
-
|
|
4
|
-
import { isPreviewing } from "./functions/is-previewing.js";
|
|
5
|
-
import { createRegisterComponentMessage } from "./functions/register-component.js";
|
|
6
|
-
import { register } from "./functions/register.js";
|
|
7
|
-
import { setEditorSettings } from "./functions/set-editor-settings.js";
|
|
8
|
-
import { fetchEntries, fetchOneEntry, getAllContent, getContent, _processContentResult } from "./functions/get-content/index.js";
|
|
9
|
-
import { getBuilderSearchParams } from "./functions/get-builder-search-params/index.js";
|
|
10
|
-
import { track } from "./functions/track/index.js";
|
|
11
|
-
import { fetchBuilderProps } from "./functions/fetch-builder-props.js";
|
|
12
|
-
export { _processContentResult, createRegisterComponentMessage, fetchBuilderProps, fetchEntries, fetchOneEntry, getAllContent, getBuilderSearchParams, getContent, isEditing, isPreviewing, register, setEditorSettings, track }
|
|
3
|
+
export * from "./server-index.js"
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export * from "./index-helpers/top-of-file.js";
|
|
2
|
+
import { isEditing } from "./functions/is-editing.js";
|
|
3
|
+
import { isPreviewing } from "./functions/is-previewing.js";
|
|
4
|
+
import { createRegisterComponentMessage } from "./functions/register-component.js";
|
|
5
|
+
import { register } from "./functions/register.js";
|
|
6
|
+
import { setEditorSettings } from "./functions/set-editor-settings.js";
|
|
7
|
+
import { fetchEntries, fetchOneEntry, getAllContent, getContent, _processContentResult } from "./functions/get-content/index.js";
|
|
8
|
+
import { getBuilderSearchParams } from "./functions/get-builder-search-params/index.js";
|
|
9
|
+
import { track } from "./functions/track/index.js";
|
|
10
|
+
import { fetchBuilderProps } from "./functions/fetch-builder-props.js";
|
|
11
|
+
export { _processContentResult, createRegisterComponentMessage, fetchBuilderProps, fetchEntries, fetchOneEntry, getAllContent, getBuilderSearchParams, getContent, isEditing, isPreviewing, register, setEditorSettings, track }
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
File without changes
|
/package/dist/functions/evaluate/{acorn-interpreter.js → non-node-runtime/acorn-interpreter.js}
RENAMED
|
File without changes
|
/package/src/functions/evaluate/{acorn-interpreter.js → non-node-runtime/acorn-interpreter.js}
RENAMED
|
File without changes
|