@builder.io/sdk-svelte 0.12.5 → 0.12.6
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/lib/browser/components/content/components/enable-editor.svelte +9 -6
- package/lib/browser/constants/sdk-version.d.ts +1 -1
- package/lib/browser/constants/sdk-version.js +1 -1
- package/lib/browser/functions/evaluate/browser-runtime/browser.d.ts +5 -1
- package/lib/browser/functions/evaluate/browser-runtime/browser.js +22 -10
- package/lib/browser/functions/evaluate/should-force-browser-runtime-in-node.js +0 -4
- package/lib/edge/components/content/components/enable-editor.svelte +9 -6
- package/lib/edge/constants/sdk-version.d.ts +1 -1
- package/lib/edge/constants/sdk-version.js +1 -1
- package/lib/edge/functions/evaluate/browser-runtime/browser.d.ts +5 -1
- package/lib/edge/functions/evaluate/browser-runtime/browser.js +22 -10
- package/lib/edge/functions/evaluate/should-force-browser-runtime-in-node.js +0 -4
- package/lib/node/components/content/components/enable-editor.svelte +9 -6
- package/lib/node/constants/sdk-version.d.ts +1 -1
- package/lib/node/constants/sdk-version.js +1 -1
- package/lib/node/functions/evaluate/browser-runtime/browser.d.ts +5 -1
- package/lib/node/functions/evaluate/browser-runtime/browser.js +22 -10
- package/lib/node/functions/evaluate/should-force-browser-runtime-in-node.js +0 -4
- package/package.json +1 -1
- package/src/blocks/embed/embed.svelte +1 -0
- package/src/blocks/symbol/symbol.svelte +1 -0
- package/src/components/content/components/enable-editor.svelte +15 -8
- package/src/constants/sdk-version.ts +1 -1
- package/src/functions/evaluate/browser-runtime/browser.ts +30 -10
- package/src/functions/evaluate/should-force-browser-runtime-in-node.ts +0 -6
|
@@ -289,18 +289,21 @@ $: onUpdateFn_1(...[shouldSendResetCookie]);
|
|
|
289
289
|
function onUpdateFn_2(..._args) {
|
|
290
290
|
evaluateJsCode();
|
|
291
291
|
}
|
|
292
|
-
$:
|
|
293
|
-
$builderContextSignal.content?.data?.jsCode
|
|
294
|
-
|
|
295
|
-
]);
|
|
292
|
+
$: onUpdateFn_2_builderContextSignal_content__data__jsCode =
|
|
293
|
+
$builderContextSignal.content?.data?.jsCode;
|
|
294
|
+
$: onUpdateFn_2(...[onUpdateFn_2_builderContextSignal_content__data__jsCode]);
|
|
296
295
|
function onUpdateFn_3(..._args) {
|
|
297
296
|
runHttpRequests();
|
|
298
297
|
}
|
|
299
|
-
$:
|
|
298
|
+
$: onUpdateFn_3_builderContextSignal_content__data__httpRequests =
|
|
299
|
+
$builderContextSignal.content?.data?.httpRequests;
|
|
300
|
+
$: onUpdateFn_3(...[onUpdateFn_3_builderContextSignal_content__data__httpRequests]);
|
|
300
301
|
function onUpdateFn_4(..._args) {
|
|
301
302
|
emitStateUpdate();
|
|
302
303
|
}
|
|
303
|
-
$:
|
|
304
|
+
$: onUpdateFn_4_builderContextSignal_rootState =
|
|
305
|
+
$builderContextSignal.rootState;
|
|
306
|
+
$: onUpdateFn_4(...[onUpdateFn_4_builderContextSignal_rootState]);
|
|
304
307
|
function onUpdateFn_5(..._args) {
|
|
305
308
|
if (data) {
|
|
306
309
|
mergeNewRootState(data);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const SDK_VERSION = "0.12.
|
|
1
|
+
export declare const SDK_VERSION = "0.12.6";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export const SDK_VERSION = "0.12.
|
|
1
|
+
export const SDK_VERSION = "0.12.6";
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import type { BuilderRenderState } from '../../../context/types.js';
|
|
2
2
|
import type { ExecutorArgs } from '../helpers.js';
|
|
3
3
|
export declare const runInBrowser: ({ code, builder, context, event, localState, rootSetState, rootState }: ExecutorArgs) => any;
|
|
4
|
-
export declare function flattenState(rootState
|
|
4
|
+
export declare function flattenState({ rootState, localState, rootSetState }: {
|
|
5
|
+
rootState: Record<string | symbol, any>;
|
|
6
|
+
localState: Record<string | symbol, any> | undefined;
|
|
7
|
+
rootSetState: ((rootState: BuilderRenderState) => void) | undefined;
|
|
8
|
+
}): BuilderRenderState;
|
|
@@ -4,27 +4,39 @@ export const runInBrowser = ({ code, builder, context, event, localState, rootSe
|
|
|
4
4
|
builder,
|
|
5
5
|
context,
|
|
6
6
|
event,
|
|
7
|
-
state: flattenState(
|
|
7
|
+
state: flattenState({
|
|
8
|
+
rootState,
|
|
9
|
+
localState,
|
|
10
|
+
rootSetState
|
|
11
|
+
})
|
|
8
12
|
});
|
|
9
13
|
return new Function(...functionArgs.map(([name]) => name), code)(...functionArgs.map(([, value]) => value));
|
|
10
14
|
};
|
|
11
|
-
export function flattenState(rootState, localState, rootSetState) {
|
|
12
|
-
if (rootState === localState) {
|
|
13
|
-
throw new Error('rootState === localState');
|
|
14
|
-
}
|
|
15
|
+
export function flattenState({ rootState, localState, rootSetState }) {
|
|
15
16
|
return new Proxy(rootState, {
|
|
16
|
-
get: (
|
|
17
|
+
get: (target, prop) => {
|
|
17
18
|
if (localState && prop in localState) {
|
|
18
19
|
return localState[prop];
|
|
19
20
|
}
|
|
20
|
-
|
|
21
|
+
const val = target[prop];
|
|
22
|
+
if (typeof val === 'object') {
|
|
23
|
+
return flattenState({
|
|
24
|
+
rootState: val,
|
|
25
|
+
localState: undefined,
|
|
26
|
+
rootSetState: rootSetState ? subState => {
|
|
27
|
+
target[prop] = subState;
|
|
28
|
+
rootSetState(target);
|
|
29
|
+
} : undefined
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
return val;
|
|
21
33
|
},
|
|
22
|
-
set: (
|
|
34
|
+
set: (target, prop, value) => {
|
|
23
35
|
if (localState && prop in localState) {
|
|
24
36
|
throw new Error('Writing to local state is not allowed as it is read-only.');
|
|
25
37
|
}
|
|
26
|
-
|
|
27
|
-
rootSetState?.(
|
|
38
|
+
target[prop] = value;
|
|
39
|
+
rootSetState?.(target);
|
|
28
40
|
return true;
|
|
29
41
|
}
|
|
30
42
|
});
|
|
@@ -5,11 +5,7 @@ export const shouldForceBrowserRuntimeInNode = () => {
|
|
|
5
5
|
return false;
|
|
6
6
|
const isArm64 = process.arch === 'arm64';
|
|
7
7
|
const isNode20 = process.version.startsWith('v20');
|
|
8
|
-
// if the user passed this node option, then the `isolated-vm` package will work
|
|
9
8
|
const hasNoNodeSnapshotNodeOption = process.env.NODE_OPTIONS?.includes('--no-node-snapshot');
|
|
10
|
-
/**
|
|
11
|
-
* https://github.com/laverdet/isolated-vm/issues/424
|
|
12
|
-
*/
|
|
13
9
|
if (isArm64 && isNode20 && !hasNoNodeSnapshotNodeOption) {
|
|
14
10
|
logger.log(`Skipping usage of \`isolated-vm\` to avoid crashes in Node v20 on an arm64 machine.
|
|
15
11
|
If you would like to use the \`isolated-vm\` package on this machine, please provide the \`NODE_OPTIONS=--no-node-snapshot\` config to your Node process.
|
|
@@ -289,18 +289,21 @@ $: onUpdateFn_1(...[shouldSendResetCookie]);
|
|
|
289
289
|
function onUpdateFn_2(..._args) {
|
|
290
290
|
evaluateJsCode();
|
|
291
291
|
}
|
|
292
|
-
$:
|
|
293
|
-
$builderContextSignal.content?.data?.jsCode
|
|
294
|
-
|
|
295
|
-
]);
|
|
292
|
+
$: onUpdateFn_2_builderContextSignal_content__data__jsCode =
|
|
293
|
+
$builderContextSignal.content?.data?.jsCode;
|
|
294
|
+
$: onUpdateFn_2(...[onUpdateFn_2_builderContextSignal_content__data__jsCode]);
|
|
296
295
|
function onUpdateFn_3(..._args) {
|
|
297
296
|
runHttpRequests();
|
|
298
297
|
}
|
|
299
|
-
$:
|
|
298
|
+
$: onUpdateFn_3_builderContextSignal_content__data__httpRequests =
|
|
299
|
+
$builderContextSignal.content?.data?.httpRequests;
|
|
300
|
+
$: onUpdateFn_3(...[onUpdateFn_3_builderContextSignal_content__data__httpRequests]);
|
|
300
301
|
function onUpdateFn_4(..._args) {
|
|
301
302
|
emitStateUpdate();
|
|
302
303
|
}
|
|
303
|
-
$:
|
|
304
|
+
$: onUpdateFn_4_builderContextSignal_rootState =
|
|
305
|
+
$builderContextSignal.rootState;
|
|
306
|
+
$: onUpdateFn_4(...[onUpdateFn_4_builderContextSignal_rootState]);
|
|
304
307
|
function onUpdateFn_5(..._args) {
|
|
305
308
|
if (data) {
|
|
306
309
|
mergeNewRootState(data);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const SDK_VERSION = "0.12.
|
|
1
|
+
export declare const SDK_VERSION = "0.12.6";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export const SDK_VERSION = "0.12.
|
|
1
|
+
export const SDK_VERSION = "0.12.6";
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import type { BuilderRenderState } from '../../../context/types.js';
|
|
2
2
|
import type { ExecutorArgs } from '../helpers.js';
|
|
3
3
|
export declare const runInBrowser: ({ code, builder, context, event, localState, rootSetState, rootState }: ExecutorArgs) => any;
|
|
4
|
-
export declare function flattenState(rootState
|
|
4
|
+
export declare function flattenState({ rootState, localState, rootSetState }: {
|
|
5
|
+
rootState: Record<string | symbol, any>;
|
|
6
|
+
localState: Record<string | symbol, any> | undefined;
|
|
7
|
+
rootSetState: ((rootState: BuilderRenderState) => void) | undefined;
|
|
8
|
+
}): BuilderRenderState;
|
|
@@ -4,27 +4,39 @@ export const runInBrowser = ({ code, builder, context, event, localState, rootSe
|
|
|
4
4
|
builder,
|
|
5
5
|
context,
|
|
6
6
|
event,
|
|
7
|
-
state: flattenState(
|
|
7
|
+
state: flattenState({
|
|
8
|
+
rootState,
|
|
9
|
+
localState,
|
|
10
|
+
rootSetState
|
|
11
|
+
})
|
|
8
12
|
});
|
|
9
13
|
return new Function(...functionArgs.map(([name]) => name), code)(...functionArgs.map(([, value]) => value));
|
|
10
14
|
};
|
|
11
|
-
export function flattenState(rootState, localState, rootSetState) {
|
|
12
|
-
if (rootState === localState) {
|
|
13
|
-
throw new Error('rootState === localState');
|
|
14
|
-
}
|
|
15
|
+
export function flattenState({ rootState, localState, rootSetState }) {
|
|
15
16
|
return new Proxy(rootState, {
|
|
16
|
-
get: (
|
|
17
|
+
get: (target, prop) => {
|
|
17
18
|
if (localState && prop in localState) {
|
|
18
19
|
return localState[prop];
|
|
19
20
|
}
|
|
20
|
-
|
|
21
|
+
const val = target[prop];
|
|
22
|
+
if (typeof val === 'object') {
|
|
23
|
+
return flattenState({
|
|
24
|
+
rootState: val,
|
|
25
|
+
localState: undefined,
|
|
26
|
+
rootSetState: rootSetState ? subState => {
|
|
27
|
+
target[prop] = subState;
|
|
28
|
+
rootSetState(target);
|
|
29
|
+
} : undefined
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
return val;
|
|
21
33
|
},
|
|
22
|
-
set: (
|
|
34
|
+
set: (target, prop, value) => {
|
|
23
35
|
if (localState && prop in localState) {
|
|
24
36
|
throw new Error('Writing to local state is not allowed as it is read-only.');
|
|
25
37
|
}
|
|
26
|
-
|
|
27
|
-
rootSetState?.(
|
|
38
|
+
target[prop] = value;
|
|
39
|
+
rootSetState?.(target);
|
|
28
40
|
return true;
|
|
29
41
|
}
|
|
30
42
|
});
|
|
@@ -5,11 +5,7 @@ export const shouldForceBrowserRuntimeInNode = () => {
|
|
|
5
5
|
return false;
|
|
6
6
|
const isArm64 = process.arch === 'arm64';
|
|
7
7
|
const isNode20 = process.version.startsWith('v20');
|
|
8
|
-
// if the user passed this node option, then the `isolated-vm` package will work
|
|
9
8
|
const hasNoNodeSnapshotNodeOption = process.env.NODE_OPTIONS?.includes('--no-node-snapshot');
|
|
10
|
-
/**
|
|
11
|
-
* https://github.com/laverdet/isolated-vm/issues/424
|
|
12
|
-
*/
|
|
13
9
|
if (isArm64 && isNode20 && !hasNoNodeSnapshotNodeOption) {
|
|
14
10
|
logger.log(`Skipping usage of \`isolated-vm\` to avoid crashes in Node v20 on an arm64 machine.
|
|
15
11
|
If you would like to use the \`isolated-vm\` package on this machine, please provide the \`NODE_OPTIONS=--no-node-snapshot\` config to your Node process.
|
|
@@ -289,18 +289,21 @@ $: onUpdateFn_1(...[shouldSendResetCookie]);
|
|
|
289
289
|
function onUpdateFn_2(..._args) {
|
|
290
290
|
evaluateJsCode();
|
|
291
291
|
}
|
|
292
|
-
$:
|
|
293
|
-
$builderContextSignal.content?.data?.jsCode
|
|
294
|
-
|
|
295
|
-
]);
|
|
292
|
+
$: onUpdateFn_2_builderContextSignal_content__data__jsCode =
|
|
293
|
+
$builderContextSignal.content?.data?.jsCode;
|
|
294
|
+
$: onUpdateFn_2(...[onUpdateFn_2_builderContextSignal_content__data__jsCode]);
|
|
296
295
|
function onUpdateFn_3(..._args) {
|
|
297
296
|
runHttpRequests();
|
|
298
297
|
}
|
|
299
|
-
$:
|
|
298
|
+
$: onUpdateFn_3_builderContextSignal_content__data__httpRequests =
|
|
299
|
+
$builderContextSignal.content?.data?.httpRequests;
|
|
300
|
+
$: onUpdateFn_3(...[onUpdateFn_3_builderContextSignal_content__data__httpRequests]);
|
|
300
301
|
function onUpdateFn_4(..._args) {
|
|
301
302
|
emitStateUpdate();
|
|
302
303
|
}
|
|
303
|
-
$:
|
|
304
|
+
$: onUpdateFn_4_builderContextSignal_rootState =
|
|
305
|
+
$builderContextSignal.rootState;
|
|
306
|
+
$: onUpdateFn_4(...[onUpdateFn_4_builderContextSignal_rootState]);
|
|
304
307
|
function onUpdateFn_5(..._args) {
|
|
305
308
|
if (data) {
|
|
306
309
|
mergeNewRootState(data);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const SDK_VERSION = "0.12.
|
|
1
|
+
export declare const SDK_VERSION = "0.12.6";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export const SDK_VERSION = "0.12.
|
|
1
|
+
export const SDK_VERSION = "0.12.6";
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import type { BuilderRenderState } from '../../../context/types.js';
|
|
2
2
|
import type { ExecutorArgs } from '../helpers.js';
|
|
3
3
|
export declare const runInBrowser: ({ code, builder, context, event, localState, rootSetState, rootState }: ExecutorArgs) => any;
|
|
4
|
-
export declare function flattenState(rootState
|
|
4
|
+
export declare function flattenState({ rootState, localState, rootSetState }: {
|
|
5
|
+
rootState: Record<string | symbol, any>;
|
|
6
|
+
localState: Record<string | symbol, any> | undefined;
|
|
7
|
+
rootSetState: ((rootState: BuilderRenderState) => void) | undefined;
|
|
8
|
+
}): BuilderRenderState;
|
|
@@ -4,27 +4,39 @@ export const runInBrowser = ({ code, builder, context, event, localState, rootSe
|
|
|
4
4
|
builder,
|
|
5
5
|
context,
|
|
6
6
|
event,
|
|
7
|
-
state: flattenState(
|
|
7
|
+
state: flattenState({
|
|
8
|
+
rootState,
|
|
9
|
+
localState,
|
|
10
|
+
rootSetState
|
|
11
|
+
})
|
|
8
12
|
});
|
|
9
13
|
return new Function(...functionArgs.map(([name]) => name), code)(...functionArgs.map(([, value]) => value));
|
|
10
14
|
};
|
|
11
|
-
export function flattenState(rootState, localState, rootSetState) {
|
|
12
|
-
if (rootState === localState) {
|
|
13
|
-
throw new Error('rootState === localState');
|
|
14
|
-
}
|
|
15
|
+
export function flattenState({ rootState, localState, rootSetState }) {
|
|
15
16
|
return new Proxy(rootState, {
|
|
16
|
-
get: (
|
|
17
|
+
get: (target, prop) => {
|
|
17
18
|
if (localState && prop in localState) {
|
|
18
19
|
return localState[prop];
|
|
19
20
|
}
|
|
20
|
-
|
|
21
|
+
const val = target[prop];
|
|
22
|
+
if (typeof val === 'object') {
|
|
23
|
+
return flattenState({
|
|
24
|
+
rootState: val,
|
|
25
|
+
localState: undefined,
|
|
26
|
+
rootSetState: rootSetState ? subState => {
|
|
27
|
+
target[prop] = subState;
|
|
28
|
+
rootSetState(target);
|
|
29
|
+
} : undefined
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
return val;
|
|
21
33
|
},
|
|
22
|
-
set: (
|
|
34
|
+
set: (target, prop, value) => {
|
|
23
35
|
if (localState && prop in localState) {
|
|
24
36
|
throw new Error('Writing to local state is not allowed as it is read-only.');
|
|
25
37
|
}
|
|
26
|
-
|
|
27
|
-
rootSetState?.(
|
|
38
|
+
target[prop] = value;
|
|
39
|
+
rootSetState?.(target);
|
|
28
40
|
return true;
|
|
29
41
|
}
|
|
30
42
|
});
|
|
@@ -5,11 +5,7 @@ export const shouldForceBrowserRuntimeInNode = () => {
|
|
|
5
5
|
return false;
|
|
6
6
|
const isArm64 = process.arch === 'arm64';
|
|
7
7
|
const isNode20 = process.version.startsWith('v20');
|
|
8
|
-
// if the user passed this node option, then the `isolated-vm` package will work
|
|
9
8
|
const hasNoNodeSnapshotNodeOption = process.env.NODE_OPTIONS?.includes('--no-node-snapshot');
|
|
10
|
-
/**
|
|
11
|
-
* https://github.com/laverdet/isolated-vm/issues/424
|
|
12
|
-
*/
|
|
13
9
|
if (isArm64 && isNode20 && !hasNoNodeSnapshotNodeOption) {
|
|
14
10
|
logger.log(`Skipping usage of \`isolated-vm\` to avoid crashes in Node v20 on an arm64 machine.
|
|
15
11
|
If you would like to use the \`isolated-vm\` package on this machine, please provide the \`NODE_OPTIONS=--no-node-snapshot\` config to your Node process.
|
package/package.json
CHANGED
|
@@ -343,31 +343,37 @@
|
|
|
343
343
|
mergeNewContent(content);
|
|
344
344
|
}
|
|
345
345
|
}
|
|
346
|
+
|
|
346
347
|
$: onUpdateFn_0(...[content]);
|
|
347
348
|
function onUpdateFn_1(..._args: any[]) {}
|
|
349
|
+
|
|
348
350
|
$: onUpdateFn_1(...[shouldSendResetCookie]);
|
|
349
351
|
function onUpdateFn_2(..._args: any[]) {
|
|
350
352
|
evaluateJsCode();
|
|
351
353
|
}
|
|
352
|
-
$:
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
$builderContextSignal.rootState,
|
|
356
|
-
]
|
|
357
|
-
);
|
|
354
|
+
$: onUpdateFn_2_builderContextSignal_content__data__jsCode =
|
|
355
|
+
$builderContextSignal.content?.data?.jsCode;
|
|
356
|
+
$: onUpdateFn_2(...[onUpdateFn_2_builderContextSignal_content__data__jsCode]);
|
|
358
357
|
function onUpdateFn_3(..._args: any[]) {
|
|
359
358
|
runHttpRequests();
|
|
360
359
|
}
|
|
361
|
-
$:
|
|
360
|
+
$: onUpdateFn_3_builderContextSignal_content__data__httpRequests =
|
|
361
|
+
$builderContextSignal.content?.data?.httpRequests;
|
|
362
|
+
$: onUpdateFn_3(
|
|
363
|
+
...[onUpdateFn_3_builderContextSignal_content__data__httpRequests]
|
|
364
|
+
);
|
|
362
365
|
function onUpdateFn_4(..._args: any[]) {
|
|
363
366
|
emitStateUpdate();
|
|
364
367
|
}
|
|
365
|
-
$:
|
|
368
|
+
$: onUpdateFn_4_builderContextSignal_rootState =
|
|
369
|
+
$builderContextSignal.rootState;
|
|
370
|
+
$: onUpdateFn_4(...[onUpdateFn_4_builderContextSignal_rootState]);
|
|
366
371
|
function onUpdateFn_5(..._args: any[]) {
|
|
367
372
|
if (data) {
|
|
368
373
|
mergeNewRootState(data);
|
|
369
374
|
}
|
|
370
375
|
}
|
|
376
|
+
|
|
371
377
|
$: onUpdateFn_5(...[data]);
|
|
372
378
|
function onUpdateFn_6(..._args: any[]) {
|
|
373
379
|
if (locale) {
|
|
@@ -376,6 +382,7 @@
|
|
|
376
382
|
});
|
|
377
383
|
}
|
|
378
384
|
}
|
|
385
|
+
|
|
379
386
|
$: onUpdateFn_6(...[locale]);
|
|
380
387
|
|
|
381
388
|
setContext(builderContext.key, builderContextSignal);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export const SDK_VERSION = "0.12.
|
|
1
|
+
export const SDK_VERSION = "0.12.6"
|
|
@@ -14,27 +14,47 @@ export const runInBrowser = ({
|
|
|
14
14
|
builder,
|
|
15
15
|
context,
|
|
16
16
|
event,
|
|
17
|
-
state: flattenState(
|
|
17
|
+
state: flattenState({
|
|
18
|
+
rootState,
|
|
19
|
+
localState,
|
|
20
|
+
rootSetState
|
|
21
|
+
})
|
|
18
22
|
});
|
|
19
23
|
return new Function(...functionArgs.map(([name]) => name), code)(...functionArgs.map(([, value]) => value));
|
|
20
24
|
};
|
|
21
|
-
export function flattenState(
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
+
export function flattenState({
|
|
26
|
+
rootState,
|
|
27
|
+
localState,
|
|
28
|
+
rootSetState
|
|
29
|
+
}: {
|
|
30
|
+
rootState: Record<string | symbol, any>;
|
|
31
|
+
localState: Record<string | symbol, any> | undefined;
|
|
32
|
+
rootSetState: ((rootState: BuilderRenderState) => void) | undefined;
|
|
33
|
+
}): BuilderRenderState {
|
|
25
34
|
return new Proxy(rootState, {
|
|
26
|
-
get: (
|
|
35
|
+
get: (target, prop) => {
|
|
27
36
|
if (localState && prop in localState) {
|
|
28
37
|
return localState[prop];
|
|
29
38
|
}
|
|
30
|
-
|
|
39
|
+
const val = target[prop];
|
|
40
|
+
if (typeof val === 'object') {
|
|
41
|
+
return flattenState({
|
|
42
|
+
rootState: val,
|
|
43
|
+
localState: undefined,
|
|
44
|
+
rootSetState: rootSetState ? subState => {
|
|
45
|
+
target[prop] = subState;
|
|
46
|
+
rootSetState(target);
|
|
47
|
+
} : undefined
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
return val;
|
|
31
51
|
},
|
|
32
|
-
set: (
|
|
52
|
+
set: (target, prop, value) => {
|
|
33
53
|
if (localState && prop in localState) {
|
|
34
54
|
throw new Error('Writing to local state is not allowed as it is read-only.');
|
|
35
55
|
}
|
|
36
|
-
|
|
37
|
-
rootSetState?.(
|
|
56
|
+
target[prop] = value;
|
|
57
|
+
rootSetState?.(target);
|
|
38
58
|
return true;
|
|
39
59
|
}
|
|
40
60
|
});
|
|
@@ -4,13 +4,7 @@ export const shouldForceBrowserRuntimeInNode = () => {
|
|
|
4
4
|
if (!isNodeRuntime()) return false;
|
|
5
5
|
const isArm64 = process.arch === 'arm64';
|
|
6
6
|
const isNode20 = process.version.startsWith('v20');
|
|
7
|
-
|
|
8
|
-
// if the user passed this node option, then the `isolated-vm` package will work
|
|
9
7
|
const hasNoNodeSnapshotNodeOption = process.env.NODE_OPTIONS?.includes('--no-node-snapshot');
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* https://github.com/laverdet/isolated-vm/issues/424
|
|
13
|
-
*/
|
|
14
8
|
if (isArm64 && isNode20 && !hasNoNodeSnapshotNodeOption) {
|
|
15
9
|
logger.log(`Skipping usage of \`isolated-vm\` to avoid crashes in Node v20 on an arm64 machine.
|
|
16
10
|
If you would like to use the \`isolated-vm\` package on this machine, please provide the \`NODE_OPTIONS=--no-node-snapshot\` config to your Node process.
|