@builder.io/sdk-solid 0.5.8 → 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/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ### 0.5.9
2
+
3
+ No Changes.
4
+
1
5
  ### 0.5.8
2
6
 
3
7
  - Fix: properly serialize messages sent to visual editor.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@builder.io/sdk-solid",
3
- "version": "0.5.8",
3
+ "version": "0.5.9",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "main": "./solid-index.jsx",
@@ -5,6 +5,7 @@ import BlockStyles from "../block-styles";
5
5
  import Block from "../../block";
6
6
  import InteractiveElement from "../interactive-element";
7
7
  import { getWrapperProps } from "./component-ref.helpers.js";
8
+ import { wrapComponentRef } from "../../../content/wrap-component-ref.js";
8
9
 
9
10
  function ComponentRef(props) {
10
11
  const [Wrapper, setWrapper] = createSignal(
@@ -1 +1 @@
1
- export const SDK_VERSION = "0.5.8"
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 }
@@ -0,0 +1,2 @@
1
+ import { runInBrowser } from "./browser.js";
2
+ export { runInBrowser as evaluator }
@@ -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 { isNonNodeServer } from "../is-non-node-server.js";
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
- return new Function("builder", "Builder", "state", "context", "event", useCode)(builder, builder, state, context, event);
39
+ if (isBrowser()) return runInBrowser(args);
40
+ if (isNonNodeServer()) return runInNonNode(args);
41
+ return runInBrowser(args);
51
42
  } catch (e) {
52
- logger.warn("Builder custom code error: \n While Evaluating: \n ", useCode, "\n", e);
53
- }
54
- };
55
- const runInNode = args => {
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, flattenState, runInBrowser, runInNode }
49
+ export { evaluate }
@@ -0,0 +1,15 @@
1
+ const getFunctionArguments = ({
2
+ builder,
3
+ context,
4
+ event,
5
+ state
6
+ }) => {
7
+ return Object.entries({
8
+ state,
9
+ Builder: builder,
10
+ builder,
11
+ context,
12
+ event
13
+ });
14
+ };
15
+ export { getFunctionArguments }
@@ -1,2 +1,2 @@
1
- import { evaluate } from "./evaluate";
1
+ import { evaluate } from "./evaluate.js";
2
2
  export { evaluate }
@@ -0,0 +1,2 @@
1
+ import { evaluator } from "../browser-runtime/index.js";
2
+ export { evaluator }
@@ -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 "../acorn-interpreter.js";
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
- useCode
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
- const prependedCode = Object.keys(properties).map(key => `var ${key} = JSON.parse(${getJSONValName(key)});`).join("\n");
55
- const cleanedCode = processCode(useCode);
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
- Object.keys(properties).forEach(key => {
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
  });
@@ -1,4 +1,4 @@
1
- import { evaluate } from "./evaluate";
1
+ import { evaluate } from "./evaluate/index.js";
2
2
  const createEventHandler = (value, options) => event => evaluate({
3
3
  code: value,
4
4
  context: options.context,
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
- import { isEditing } from "./functions/is-editing.js";
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 }
File without changes