@builder.io/react 8.2.1 → 8.2.2-1

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.
Files changed (49) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/builder-react-lite.cjs.js +1 -1
  3. package/dist/builder-react-lite.cjs.js.map +1 -1
  4. package/dist/builder-react-lite.esm.js +1 -1
  5. package/dist/builder-react-lite.esm.js.map +1 -1
  6. package/dist/builder-react.browser.js +2 -2
  7. package/dist/builder-react.browser.js.map +1 -1
  8. package/dist/builder-react.cjs.js +1 -1
  9. package/dist/builder-react.cjs.js.map +1 -1
  10. package/dist/builder-react.es5.js +1 -1
  11. package/dist/builder-react.es5.js.map +1 -1
  12. package/dist/builder-react.unpkg.js +2 -2
  13. package/dist/builder-react.unpkg.js.map +1 -1
  14. package/dist/lib/package.json +4 -3
  15. package/dist/lib/src/blocks/PersonalizationContainer.js +3 -3
  16. package/dist/lib/src/blocks/PersonalizationContainer.js.map +1 -1
  17. package/dist/lib/src/blocks/Router.js +2 -2
  18. package/dist/lib/src/blocks/Router.js.map +1 -1
  19. package/dist/lib/src/blocks/Symbol.js +1 -1
  20. package/dist/lib/src/blocks/Symbol.js.map +1 -1
  21. package/dist/lib/src/components/builder-component.component.js +3 -3
  22. package/dist/lib/src/components/builder-component.component.js.map +1 -1
  23. package/dist/lib/src/components/builder-content.component.js +1 -1
  24. package/dist/lib/src/components/builder-content.component.js.map +1 -1
  25. package/dist/lib/src/components/variants-provider.component.js +2 -2
  26. package/dist/lib/src/components/variants-provider.component.js.map +1 -1
  27. package/dist/lib/src/functions/should-force-browser-runtime-in-node.test.js +59 -0
  28. package/dist/lib/src/functions/should-force-browser-runtime-in-node.test.js.map +1 -0
  29. package/dist/lib/src/functions/string-to-function.js +4 -1
  30. package/dist/lib/src/functions/string-to-function.js.map +1 -1
  31. package/dist/lib/src/functions/string-to-function.test.js +289 -0
  32. package/dist/lib/src/functions/string-to-function.test.js.map +1 -0
  33. package/dist/lib/src/sdk-version.js +1 -1
  34. package/dist/types/src/components/builder-component.component.d.ts +5 -0
  35. package/dist/types/src/components/builder-content.component.d.ts +4 -0
  36. package/dist/types/src/components/variants-provider.component.d.ts +2 -1
  37. package/dist/types/src/functions/should-force-browser-runtime-in-node.test.d.ts +1 -0
  38. package/dist/types/src/functions/string-to-function.test.d.ts +1 -0
  39. package/dist/types/src/sdk-version.d.ts +1 -1
  40. package/package.json +3 -2
  41. package/src/blocks/PersonalizationContainer.tsx +3 -0
  42. package/src/blocks/Router.tsx +2 -1
  43. package/src/blocks/Symbol.tsx +1 -0
  44. package/src/components/builder-component.component.tsx +8 -0
  45. package/src/components/builder-content.component.tsx +5 -1
  46. package/src/components/variants-provider.component.tsx +3 -1
  47. package/src/functions/should-force-browser-runtime-in-node.test.ts +67 -0
  48. package/src/functions/string-to-function.test.ts +335 -0
  49. package/src/functions/string-to-function.ts +8 -0
@@ -1 +1 @@
1
- {"version":3,"file":"string-to-function.js","sourceRoot":"","sources":["../../../../src/functions/string-to-function.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"string-to-function.js","sourceRoot":"","sources":["../../../../src/functions/string-to-function.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,289 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ var sdk_1 = require("@builder.io/sdk");
27
+ var string_to_function_1 = require("./string-to-function");
28
+ var shouldForceModule = __importStar(require("./should-force-browser-runtime-in-node"));
29
+ jest.mock('./is-debug', function () { return ({
30
+ isDebug: jest.fn().mockReturnValue(true),
31
+ }); });
32
+ var mockEvalClosureSync = jest.fn().mockReturnValue('"test"');
33
+ jest.mock('./safe-dynamic-require', function () { return ({
34
+ safeDynamicRequire: jest.fn().mockImplementation(function () { return ({
35
+ Isolate: /** @class */ (function () {
36
+ function Isolate() {
37
+ }
38
+ Isolate.prototype.createContextSync = function () {
39
+ return {
40
+ global: {
41
+ setSync: jest.fn(),
42
+ derefInto: jest.fn(),
43
+ },
44
+ evalClosureSync: mockEvalClosureSync,
45
+ };
46
+ };
47
+ return Isolate;
48
+ }()),
49
+ Reference: /** @class */ (function () {
50
+ function class_1(val) {
51
+ this.value = val;
52
+ }
53
+ return class_1;
54
+ }()),
55
+ }); }),
56
+ }); });
57
+ describe('makeFn', function () {
58
+ it('should create a function string with default arguments', function () {
59
+ var result = (0, string_to_function_1.makeFn)('state.value', true);
60
+ expect(result).toContain('var state = refToProxy($0);');
61
+ expect(result).toContain('var event = refToProxy($1);');
62
+ expect(result).toContain('var block = refToProxy($2);');
63
+ expect(result).toContain('var builder = refToProxy($3);');
64
+ expect(result).toContain('var Device = refToProxy($4);');
65
+ expect(result).toContain('var update = refToProxy($5);');
66
+ expect(result).toContain('var Builder = refToProxy($6);');
67
+ expect(result).toContain('var context = refToProxy($7);');
68
+ expect(result).toContain('var ctx = context;');
69
+ expect(result).toContain('return (state.value);');
70
+ });
71
+ it('should create a function string with custom arguments', function () {
72
+ var result = (0, string_to_function_1.makeFn)('custom.value', true, ['custom']);
73
+ expect(result).toContain('var custom = refToProxy($0);');
74
+ expect(result).not.toContain('var state = refToProxy($0);');
75
+ expect(result).toContain('return (custom.value);');
76
+ });
77
+ it('should handle non-return expressions', function () {
78
+ var result = (0, string_to_function_1.makeFn)('state.value', false);
79
+ expect(result).toContain('state.value');
80
+ expect(result).not.toContain('return (state.value);');
81
+ });
82
+ it('should include refToProxy function definition', function () {
83
+ var result = (0, string_to_function_1.makeFn)('state.value', true);
84
+ expect(result).toContain('var refToProxy = (obj) => {');
85
+ expect(result).toContain("if (typeof obj !== 'object' || obj === null) {");
86
+ expect(result).toContain('return obj;');
87
+ expect(result).toContain('return new Proxy({}, {');
88
+ });
89
+ it('should include stringify function definition', function () {
90
+ var result = (0, string_to_function_1.makeFn)('state.value', true);
91
+ expect(result).toContain('var stringify = (val) => {');
92
+ expect(result).toContain("if (typeof val === 'object' && val !== null) {");
93
+ expect(result).toContain('return JSON.stringify(val.copySync ? val.copySync() : val);');
94
+ });
95
+ it('should handle context alias correctly', function () {
96
+ var result = (0, string_to_function_1.makeFn)('ctx.value', true, ['state', 'context']);
97
+ expect(result).toContain('var ctx = context;');
98
+ });
99
+ it('should not include context alias when context is not in arguments', function () {
100
+ var result = (0, string_to_function_1.makeFn)('state.value', true, ['state']);
101
+ expect(result).not.toContain('var ctx = context;');
102
+ });
103
+ it('should properly wrap the code in endResult function', function () {
104
+ var result = (0, string_to_function_1.makeFn)('state.value', true);
105
+ expect(result).toContain('var endResult = function() {');
106
+ expect(result).toContain('return stringify(endResult());');
107
+ });
108
+ });
109
+ describe('getIsolateContext', function () {
110
+ beforeEach(function () {
111
+ sdk_1.Builder.serverContext = undefined;
112
+ });
113
+ it('should create a new context if none exists', function () {
114
+ var context = (0, string_to_function_1.getIsolateContext)();
115
+ expect(context).toBeDefined();
116
+ expect(sdk_1.Builder.serverContext).toBe(context);
117
+ });
118
+ it('should reuse existing context', function () {
119
+ var firstContext = (0, string_to_function_1.getIsolateContext)();
120
+ var secondContext = (0, string_to_function_1.getIsolateContext)();
121
+ expect(secondContext).toBe(firstContext);
122
+ });
123
+ });
124
+ describe('stringToFunction', function () {
125
+ beforeEach(function () {
126
+ // Reset Builder.isBrowser before each test
127
+ sdk_1.Builder.isBrowser = true;
128
+ jest.clearAllMocks();
129
+ });
130
+ it('should return undefined for empty string', function () {
131
+ var fn = (0, string_to_function_1.stringToFunction)('');
132
+ expect(fn({})).toBeUndefined();
133
+ });
134
+ it('should handle basic expressions', function () {
135
+ var fn = (0, string_to_function_1.stringToFunction)('state.value + 1');
136
+ expect(fn({ value: 1 })).toBe(2);
137
+ });
138
+ it('should handle statements', function () {
139
+ var fn = (0, string_to_function_1.stringToFunction)('let x = state.value; return x + 1;');
140
+ expect(fn({ value: 1 })).toBe(2);
141
+ });
142
+ it('should handle return statements', function () {
143
+ var fn = (0, string_to_function_1.stringToFunction)('return state.value + 1;');
144
+ expect(fn({ value: 1 })).toBe(2);
145
+ });
146
+ it('should handle functions that start with builder.run', function () {
147
+ var mockBuilderObj = {
148
+ getUserAttributes: jest.fn(),
149
+ run: jest.fn().mockReturnValue('ran'),
150
+ };
151
+ var fn = (0, string_to_function_1.stringToFunction)('builder.run()');
152
+ expect(fn({}, undefined, undefined, mockBuilderObj)).toBe('ran');
153
+ });
154
+ it('should handle event parameter', function () {
155
+ var fn = (0, string_to_function_1.stringToFunction)('event.target.value');
156
+ var mockEvent = { target: { value: 'test' } };
157
+ expect(fn({}, mockEvent)).toBe('test');
158
+ });
159
+ it('should handle builder parameter', function () {
160
+ var fn = (0, string_to_function_1.stringToFunction)('builder.getUserAttributes()');
161
+ var mockBuilder = { getUserAttributes: function () { return ({ name: 'test' }); } };
162
+ expect(fn({}, undefined, undefined, mockBuilder)).toEqual({ name: 'test' });
163
+ });
164
+ it('should handle context parameter', function () {
165
+ var fn = (0, string_to_function_1.stringToFunction)('ctx.value');
166
+ expect(fn({}, undefined, undefined, undefined, undefined, undefined, undefined, { value: 'test' })).toBe('test');
167
+ });
168
+ it('should cache function results', function () {
169
+ var str = 'state.value + 1';
170
+ var fn1 = (0, string_to_function_1.stringToFunction)(str);
171
+ var fn2 = (0, string_to_function_1.stringToFunction)(str);
172
+ expect(fn1).toBe(fn2);
173
+ });
174
+ it('should handle errors gracefully', function () {
175
+ var errors = [];
176
+ var fn = (0, string_to_function_1.stringToFunction)('invalid code', true, errors);
177
+ fn({});
178
+ expect(errors.length).toBeGreaterThan(0);
179
+ });
180
+ it('should push error messages to logs array', function () {
181
+ var logs = [];
182
+ var errors = [];
183
+ // Creating a runtime error by accessing an undefined property
184
+ var fn = (0, string_to_function_1.stringToFunction)('state.undefinedProp.accessSomething', true, errors, logs);
185
+ fn({});
186
+ expect(logs.length).toBeGreaterThan(0);
187
+ });
188
+ it('should handle compilation errors', function () {
189
+ var errors = [];
190
+ // Invalid JavaScript that will cause a compilation error
191
+ var fn = (0, string_to_function_1.stringToFunction)('for() {}', true, errors);
192
+ expect(errors.length).toBeGreaterThan(0);
193
+ });
194
+ it('should handle functions in contentData', function () {
195
+ var fn = (0, string_to_function_1.stringToFunction)('state.contentData.exampleFunction()');
196
+ expect(fn({
197
+ contentData: {
198
+ someString: 'test',
199
+ exampleFunction: function () { return 'exampleFunctionInvoked'; },
200
+ },
201
+ })).toBe('exampleFunctionInvoked');
202
+ });
203
+ it('should pass all parameters correctly to the function', function () {
204
+ var fn = (0, string_to_function_1.stringToFunction)('state.value + (event ? 1 : 0) + (block ? 1 : 0) + (builder ? 1 : 0) + (Device ? 1 : 0) + (update ? 1 : 0) + (Builder ? 1 : 0) + (context ? 1 : 0)');
205
+ var mockUpdate = jest.fn();
206
+ var mockDevice = { isMobile: true };
207
+ var mockBlock = { id: 'test-block' };
208
+ var mockEvent = { type: 'click' };
209
+ var mockContext = { foo: 'bar' };
210
+ var result = fn({ value: 1 }, mockEvent, mockBlock, {}, mockDevice, mockUpdate, sdk_1.Builder, mockContext);
211
+ // All parameters present = 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 = 8
212
+ expect(result).toBe(8);
213
+ });
214
+ it('should handle the getIsolateContext with existing context', function () {
215
+ // Setup a fake serverContext
216
+ var mockContext = {
217
+ global: {
218
+ setSync: jest.fn(),
219
+ derefInto: jest.fn(),
220
+ },
221
+ };
222
+ sdk_1.Builder.serverContext = mockContext;
223
+ // Get the context
224
+ var context = (0, string_to_function_1.getIsolateContext)();
225
+ // Should return the existing context
226
+ expect(context).toBe(mockContext);
227
+ // Reset the context
228
+ sdk_1.Builder.serverContext = undefined;
229
+ });
230
+ it('should handle complex isolated VM execution', function () {
231
+ // Setup a customized mock for evalClosureSync
232
+ mockEvalClosureSync.mockImplementationOnce(function (code, args) {
233
+ // Verify that makeFn was called with correct parameters
234
+ expect(code).toContain('refToProxy');
235
+ expect(args.length).toBeGreaterThan(0);
236
+ // Return a valid JSON string to test the JSON.parse path
237
+ return '{"value":"test"}';
238
+ });
239
+ var fn = (0, string_to_function_1.stringToFunction)('state');
240
+ var result = fn({ value: 'test' });
241
+ expect(result).toEqual({ value: 'test' });
242
+ });
243
+ describe('server-side execution', function () {
244
+ beforeEach(function () {
245
+ sdk_1.Builder.isBrowser = false;
246
+ jest.spyOn(shouldForceModule, 'shouldForceBrowserRuntimeInNode').mockReturnValue(false);
247
+ mockEvalClosureSync.mockReset();
248
+ mockEvalClosureSync.mockReturnValue('"test"');
249
+ });
250
+ afterEach(function () {
251
+ jest.restoreAllMocks();
252
+ });
253
+ it('should use isolated VM when not in browser', function () {
254
+ var fn = (0, string_to_function_1.stringToFunction)('state.value');
255
+ expect(fn({ value: 'test' })).toBe('test');
256
+ });
257
+ it('should handle JSON parse errors in server context', function () {
258
+ mockEvalClosureSync.mockReturnValue('not valid json');
259
+ var fn = (0, string_to_function_1.stringToFunction)('state.value');
260
+ expect(fn({ value: 'test' })).toBe('not valid json');
261
+ });
262
+ it('should handle error in server-side execution', function () {
263
+ // Mock the evalClosureSync to throw an error
264
+ var testError = new Error('Server error');
265
+ mockEvalClosureSync.mockImplementation(function () {
266
+ throw testError;
267
+ });
268
+ var consoleSpy = jest.spyOn(console, 'debug').mockImplementation(function () { });
269
+ var errors = [];
270
+ var fn = (0, string_to_function_1.stringToFunction)('state.value', true, errors);
271
+ var result = fn({ value: 'test' });
272
+ expect(result).toBeNull();
273
+ expect(errors).toContain(testError);
274
+ expect(consoleSpy).toHaveBeenCalled();
275
+ consoleSpy.mockReset();
276
+ });
277
+ it('should use browser runtime when shouldForceBrowserRuntimeInNode returns true', function () {
278
+ // Instead of testing the warn functionality which is hard to mock properly,
279
+ // let's verify the code path by checking that the browser runtime path works
280
+ // when shouldForceBrowserRuntimeInNode returns true
281
+ jest.spyOn(shouldForceModule, 'shouldForceBrowserRuntimeInNode').mockReturnValue(true);
282
+ sdk_1.Builder.isBrowser = false; // Ensure we're in "server" mode
283
+ // Simple expression that will work in browser mode
284
+ var fn = (0, string_to_function_1.stringToFunction)('state.value + 1');
285
+ expect(fn({ value: 1 })).toBe(2);
286
+ });
287
+ });
288
+ });
289
+ //# sourceMappingURL=string-to-function.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string-to-function.test.js","sourceRoot":"","sources":["../../../../src/functions/string-to-function.test.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SDK_VERSION = void 0;
4
- exports.SDK_VERSION = '8.2.1';
4
+ exports.SDK_VERSION = '8.2.2-1';
5
5
  //# sourceMappingURL=sdk-version.js.map
@@ -194,6 +194,10 @@ export interface BuilderComponentProps {
194
194
  * Pass a list of custom components to register with Builder.io.
195
195
  */
196
196
  customComponents?: Array<RegisteredComponent>;
197
+ /**
198
+ * CSP nonce to allow the loading and execution of a script or style tag when Content-Security-Policy is enabled.
199
+ */
200
+ nonce?: string;
197
201
  }
198
202
  export interface BuilderComponentState {
199
203
  state: any;
@@ -263,6 +267,7 @@ export declare class BuilderComponent extends React.Component<PropsWithChildren<
263
267
  stopClickPropagationWhenEditing?: boolean | undefined;
264
268
  locale?: string | undefined;
265
269
  customComponents?: RegisteredComponent[] | undefined;
270
+ nonce?: string | undefined;
266
271
  children?: React.ReactNode;
267
272
  };
268
273
  get name(): string | undefined;
@@ -39,6 +39,10 @@ export type BuilderContentProps<ContentType> = {
39
39
  * Required if `inline` is set to `true`.
40
40
  */
41
41
  content?: Content;
42
+ /**
43
+ * CSP nonce to allow the loading and execution of a script or style tag when Content-Security-Policy is enabled.
44
+ */
45
+ nonce?: string;
42
46
  } & ({
43
47
  model: string;
44
48
  } | {
@@ -3,6 +3,7 @@ import { BuilderContent } from '@builder.io/sdk';
3
3
  interface VariantsProviderProps {
4
4
  initialContent: BuilderContent;
5
5
  children: (variants: BuilderContent[], renderScript?: () => JSX.Element) => JSX.Element;
6
+ nonce?: string;
6
7
  }
7
- export declare const VariantsProvider: ({ initialContent, children }: VariantsProviderProps) => React.JSX.Element;
8
+ export declare const VariantsProvider: ({ initialContent, children, nonce }: VariantsProviderProps) => React.JSX.Element;
8
9
  export {};
@@ -1 +1 @@
1
- export declare const SDK_VERSION = "8.2.1";
1
+ export declare const SDK_VERSION = "8.2.2-1";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@builder.io/react",
3
- "version": "8.2.1",
3
+ "version": "8.2.2-1",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "main": "dist/builder-react.cjs.js",
@@ -105,5 +105,6 @@
105
105
  },
106
106
  "installConfig": {
107
107
  "hoistingLimits": "workspaces"
108
- }
108
+ },
109
+ "stableVersion": "8.2.2"
109
110
  }
@@ -106,6 +106,7 @@ export function PersonalizationContainer(props: PersonalizationContainerProps) {
106
106
  </template>
107
107
  ))}
108
108
  <script
109
+ nonce={builderStore.context.nonce}
109
110
  id={`variants-script-${props.builderBlock?.id}`}
110
111
  dangerouslySetInnerHTML={{
111
112
  __html: getPersonalizationScript(
@@ -123,6 +124,7 @@ export function PersonalizationContainer(props: PersonalizationContainerProps) {
123
124
  />
124
125
  </div>
125
126
  <script
127
+ nonce={builderStore.context.nonce}
126
128
  dangerouslySetInnerHTML={{
127
129
  __html: `
128
130
  window.__hydrated = window.__hydrated || {};
@@ -194,6 +196,7 @@ export function PersonalizationContainer(props: PersonalizationContainerProps) {
194
196
  )}
195
197
  </div>
196
198
  <script
199
+ nonce={builderStore.context.nonce}
197
200
  dangerouslySetInnerHTML={{
198
201
  __html: `
199
202
  window.__hydrated = window.__hydrated || {};
@@ -262,7 +262,7 @@ class RouterComponent extends React.Component<PropsWithChildren<RouterProps>> {
262
262
  return (
263
263
  <div className="builder-router" data-model={model}>
264
264
  {/* TODO: move to emotion */}
265
- <style>{`
265
+ <style nonce={state.context.nonce}>{`
266
266
  @keyframes builderLoadingSpinner {
267
267
  0% {
268
268
  transform: rotate(0deg);
@@ -297,6 +297,7 @@ class RouterComponent extends React.Component<PropsWithChildren<RouterProps>> {
297
297
  options={{
298
298
  key: Builder.isEditing ? undefined : this.model + ':' + url, // TODO: other custom targets specify if should refetch components on change
299
299
  }}
300
+ nonce={state.context.nonce}
300
301
  >
301
302
  {/* TODO: builder blocks option for loading stuff */}
302
303
  {/* TODO: input for builder blocks for this */}
@@ -172,6 +172,7 @@ class SymbolComponent extends React.Component<PropsWithChildren<SymbolProps>> {
172
172
  hydrate={state.state?._hydrate}
173
173
  builderBlock={this.props.builderBlock}
174
174
  dataOnly={this.props.dataOnly}
175
+ nonce={state.context.nonce}
175
176
  >
176
177
  {/* TODO: builder blocks option for loading stuff */}
177
178
  {this.props.children}
@@ -298,6 +298,11 @@ export interface BuilderComponentProps {
298
298
  * Pass a list of custom components to register with Builder.io.
299
299
  */
300
300
  customComponents?: Array<RegisteredComponent>;
301
+
302
+ /**
303
+ * CSP nonce to allow the loading and execution of a script or style tag when Content-Security-Policy is enabled.
304
+ */
305
+ nonce?: string;
301
306
  }
302
307
 
303
308
  export interface BuilderComponentState {
@@ -439,6 +444,7 @@ export class BuilderComponent extends React.Component<
439
444
  context: {
440
445
  ...props.context,
441
446
  apiKey: this.props.apiKey || builder.apiKey,
447
+ nonce: this.props.nonce,
442
448
  },
443
449
  state: Object.assign(this.rootState, {
444
450
  ...(this.inlinedContent && this.inlinedContent.data && this.inlinedContent.data.state),
@@ -1097,6 +1103,7 @@ export class BuilderComponent extends React.Component<
1097
1103
  }
1098
1104
  contentError={this.props.contentError}
1099
1105
  modelName={this.name || 'page'}
1106
+ nonce={this.props.nonce}
1100
1107
  >
1101
1108
  {(data, loading, fullData) => {
1102
1109
  if (this.props.dataOnly) {
@@ -1191,6 +1198,7 @@ export class BuilderComponent extends React.Component<
1191
1198
  >
1192
1199
  {!codegen && this.getCss(data) && (
1193
1200
  <style
1201
+ nonce={this.props.nonce}
1194
1202
  ref={ref => (this.styleRef = ref)}
1195
1203
  className="builder-custom-styles"
1196
1204
  dangerouslySetInnerHTML={{
@@ -50,6 +50,10 @@ export type BuilderContentProps<ContentType> = {
50
50
  * Required if `inline` is set to `true`.
51
51
  */
52
52
  content?: Content;
53
+ /**
54
+ * CSP nonce to allow the loading and execution of a script or style tag when Content-Security-Policy is enabled.
55
+ */
56
+ nonce?: string;
53
57
  } & ({ model: string } | { modelName: string }); // model and modelName are aliases of the same thing¸
54
58
 
55
59
  /**
@@ -314,7 +318,7 @@ export class BuilderContent<ContentType extends object = any> extends React.Comp
314
318
  const useData: any = this.data;
315
319
  const TagName = this.props.dataOnly ? NoWrap : 'div';
316
320
  return (
317
- <VariantsProvider initialContent={useData}>
321
+ <VariantsProvider initialContent={useData} nonce={this.props.nonce}>
318
322
  {(variants, renderScript) => {
319
323
  return (
320
324
  <React.Fragment>
@@ -99,9 +99,10 @@ const variantsScript = (variantsString: string, contentId: string) =>
99
99
  interface VariantsProviderProps {
100
100
  initialContent: BuilderContent;
101
101
  children: (variants: BuilderContent[], renderScript?: () => JSX.Element) => JSX.Element;
102
+ nonce?: string;
102
103
  }
103
104
 
104
- export const VariantsProvider = ({ initialContent, children }: VariantsProviderProps) => {
105
+ export const VariantsProvider = ({ initialContent, children, nonce }: VariantsProviderProps) => {
105
106
  if (Builder.isBrowser && !builder.canTrack) {
106
107
  return children([initialContent]);
107
108
  }
@@ -126,6 +127,7 @@ export const VariantsProvider = ({ initialContent, children }: VariantsProviderP
126
127
  );
127
128
  const renderScript = () => (
128
129
  <script
130
+ nonce={nonce}
129
131
  id={`variants-script-${initialContent.id}`}
130
132
  dangerouslySetInnerHTML={{
131
133
  __html: variantsScript(variantsJson, initialContent.id!),
@@ -0,0 +1,67 @@
1
+ import { shouldForceBrowserRuntimeInNode } from './should-force-browser-runtime-in-node';
2
+
3
+ describe('shouldForceBrowserRuntimeInNode', () => {
4
+ const originalArch = process.arch;
5
+ const originalVersion = process.version;
6
+ const originalNodeOptions = process.env.NODE_OPTIONS;
7
+ const originalConsoleLog = console.log;
8
+
9
+ beforeEach(() => {
10
+ // Mock console.log to prevent actual logging during tests
11
+ console.log = jest.fn();
12
+ });
13
+
14
+ afterEach(() => {
15
+ // Restore original process properties
16
+ Object.defineProperty(process, 'arch', { value: originalArch });
17
+ Object.defineProperty(process, 'version', { value: originalVersion });
18
+ process.env.NODE_OPTIONS = originalNodeOptions;
19
+ console.log = originalConsoleLog;
20
+ });
21
+
22
+ it('should return false when not in Node runtime', () => {
23
+ // Save original process
24
+ const originalProcess = global.process;
25
+
26
+ try {
27
+ // Mock not being in Node runtime
28
+ // @ts-ignore - Intentionally modifying global.process for test
29
+ global.process = undefined;
30
+
31
+ expect(shouldForceBrowserRuntimeInNode()).toBe(false);
32
+ } finally {
33
+ // Restore original process
34
+ global.process = originalProcess;
35
+ }
36
+ });
37
+
38
+ it('should return false when not on arm64 architecture', () => {
39
+ Object.defineProperty(process, 'arch', { value: 'x64' });
40
+ Object.defineProperty(process, 'version', { value: 'v20.0.0' });
41
+ expect(shouldForceBrowserRuntimeInNode()).toBe(false);
42
+ });
43
+
44
+ it('should return false when not on Node 20', () => {
45
+ Object.defineProperty(process, 'arch', { value: 'arm64' });
46
+ Object.defineProperty(process, 'version', { value: 'v18.0.0' });
47
+ expect(shouldForceBrowserRuntimeInNode()).toBe(false);
48
+ });
49
+
50
+ it('should return false when on arm64 and Node 20 but has no-node-snapshot option', () => {
51
+ Object.defineProperty(process, 'arch', { value: 'arm64' });
52
+ Object.defineProperty(process, 'version', { value: 'v20.0.0' });
53
+ process.env.NODE_OPTIONS = '--no-node-snapshot';
54
+ expect(shouldForceBrowserRuntimeInNode()).toBe(false);
55
+ });
56
+
57
+ it('should return true and log warning when on arm64, Node 20, and no snapshot option flag', () => {
58
+ Object.defineProperty(process, 'arch', { value: 'arm64' });
59
+ Object.defineProperty(process, 'version', { value: 'v20.0.0' });
60
+ process.env.NODE_OPTIONS = '';
61
+
62
+ const result = shouldForceBrowserRuntimeInNode();
63
+
64
+ expect(result).toBe(true);
65
+ expect(console.log).toHaveBeenCalled();
66
+ });
67
+ });