@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.
- package/CHANGELOG.md +6 -0
- package/dist/builder-react-lite.cjs.js +1 -1
- package/dist/builder-react-lite.cjs.js.map +1 -1
- package/dist/builder-react-lite.esm.js +1 -1
- package/dist/builder-react-lite.esm.js.map +1 -1
- package/dist/builder-react.browser.js +2 -2
- package/dist/builder-react.browser.js.map +1 -1
- package/dist/builder-react.cjs.js +1 -1
- package/dist/builder-react.cjs.js.map +1 -1
- package/dist/builder-react.es5.js +1 -1
- package/dist/builder-react.es5.js.map +1 -1
- package/dist/builder-react.unpkg.js +2 -2
- package/dist/builder-react.unpkg.js.map +1 -1
- package/dist/lib/package.json +4 -3
- package/dist/lib/src/blocks/PersonalizationContainer.js +3 -3
- package/dist/lib/src/blocks/PersonalizationContainer.js.map +1 -1
- package/dist/lib/src/blocks/Router.js +2 -2
- package/dist/lib/src/blocks/Router.js.map +1 -1
- package/dist/lib/src/blocks/Symbol.js +1 -1
- package/dist/lib/src/blocks/Symbol.js.map +1 -1
- package/dist/lib/src/components/builder-component.component.js +3 -3
- package/dist/lib/src/components/builder-component.component.js.map +1 -1
- package/dist/lib/src/components/builder-content.component.js +1 -1
- package/dist/lib/src/components/builder-content.component.js.map +1 -1
- package/dist/lib/src/components/variants-provider.component.js +2 -2
- package/dist/lib/src/components/variants-provider.component.js.map +1 -1
- package/dist/lib/src/functions/should-force-browser-runtime-in-node.test.js +59 -0
- package/dist/lib/src/functions/should-force-browser-runtime-in-node.test.js.map +1 -0
- package/dist/lib/src/functions/string-to-function.js +4 -1
- package/dist/lib/src/functions/string-to-function.js.map +1 -1
- package/dist/lib/src/functions/string-to-function.test.js +289 -0
- package/dist/lib/src/functions/string-to-function.test.js.map +1 -0
- package/dist/lib/src/sdk-version.js +1 -1
- package/dist/types/src/components/builder-component.component.d.ts +5 -0
- package/dist/types/src/components/builder-content.component.d.ts +4 -0
- package/dist/types/src/components/variants-provider.component.d.ts +2 -1
- package/dist/types/src/functions/should-force-browser-runtime-in-node.test.d.ts +1 -0
- package/dist/types/src/functions/string-to-function.test.d.ts +1 -0
- package/dist/types/src/sdk-version.d.ts +1 -1
- package/package.json +3 -2
- package/src/blocks/PersonalizationContainer.tsx +3 -0
- package/src/blocks/Router.tsx +2 -1
- package/src/blocks/Symbol.tsx +1 -0
- package/src/components/builder-component.component.tsx +8 -0
- package/src/components/builder-content.component.tsx +5 -1
- package/src/components/variants-provider.component.tsx +3 -1
- package/src/functions/should-force-browser-runtime-in-node.test.ts +67 -0
- package/src/functions/string-to-function.test.ts +335 -0
- 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":";;;;;;;;;;;;;;AAAA,uCAAmD;AACnD,+DAA4D;AAC5D,uCAAqC;AACrC,+FAAyF;AAEzF,IAAM,OAAO,GAAuD,EAAE,CAAC;AAahE,IAAM,GAAG,GAAG,UAAC,KAAU,IAAK,OAAA,aAAO,EAAP,CAAO,CAAC;AAA9B,QAAA,GAAG,OAA2B;AAE3C,SAAgB,gBAAgB,CAC9B,GAAW,EACX,UAAiB,EACjB,MAAgB,EAChB,IAAe;IAFf,2BAAA,EAAA,iBAAiB;IAIjB,mBAAmB;IACnB,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE;QACvB,OAAO,cAAM,OAAA,SAAS,EAAT,CAAS,CAAC;KACxB;IAED,IAAM,QAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,UAAU,CAAC;IACxC,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;QACrB,OAAO,OAAO,CAAC,QAAQ,CAAE,CAAC;KAC3B;IAED,oBAAoB;IACpB,IAAM,SAAS,GACb,CAAC,UAAU;QACT,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;QACvF,GAAG,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IACvC,IAAI,EAAE,GAAa;QACjB,yBAAyB;IAC3B,CAAC,CAAC;IAEF,IAAI;QACF,oEAAoE;QACpE,IAAI,aAAO,CAAC,SAAS,EAAE;YACrB,4BAA4B;YAC5B,EAAE,GAAG,IAAI,QAAQ,CACf,OAAO,EACP,OAAO,EACP,OAAO,EACP,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,SAAS;YACT,qEAAqE;YACrE,kDAAkD;YAClD,kzBA6BM,SAAS,CAAC,CAAC,CAAC,kBAAW,GAAG,OAAI,CAAC,CAAC,CAAC,GAAG,6BAEzC,CACF,CAAC;SACH;KACF;IAAC,OAAO,KAAU,EAAE;QACnB,IAAI,MAAM,EAAE;YACV,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACpB;QACD,IAAM,OAAO,GAAG,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC;QACvC,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;YAC1C,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;gBACxC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aACpB;SACF;QACD,IAAI,aAAO,CAAC,SAAS,EAAE;YACrB,OAAO,CAAC,IAAI,CAAC,oCAA6B,GAAG,CAAE,EAAE,KAAK,CAAC,CAAC;SACzD;KACF;IAED,IAAM,KAAK,GAAG;QAAC,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,yBAAc;;QAC3B,IAAI;YACF,IAAI,aAAO,CAAC,SAAS,IAAI,IAAA,sEAA+B,GAAE,EAAE;gBAC1D,OAAO,EAAE,eAAI,IAAI,EAAE;aACpB;iBAAM;gBACL,0BAA0B;gBAC1B,iGAAiG;gBACjG,4CAA4C;gBAC5C,6HAA6H;gBAC7H,4FAA4F;gBAC5F,0FAA0F;gBAC1F,uBAAuB;gBACvB,6DAA6D;gBAC7D,IAAM,cAAc,GAAkC,IAAA,yBAAiB,GAAE,CAAC;gBAC1E,IAAM,KAAG,GAAG,IAAA,yCAAkB,EAAC,aAAa,CAAiC,CAAC;gBAC9E,IAAM,SAAS,GAAG,cAAc,CAAC,eAAe,CAC9C,IAAA,cAAM,EAAC,GAAG,EAAE,SAAS,CAAC,EACtB,IAAI,CAAC,GAAG,CAAC,UAAC,GAAG,EAAE,KAAK;oBAClB,OAAA,OAAO,GAAG,KAAK,QAAQ;wBACrB,CAAC,CAAC,IAAI,KAAG,CAAC,SAAS,CACf,KAAK,KAAK,sBAAsB;4BAC9B,CAAC,uBAEM,GAAG,KACN,iBAAiB,EAAE,cAAM,OAAA,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAzB,CAAyB,IAEtD,CAAC,CAAC,GAAG,CACR;wBACH,CAAC,CAAC,IAAI;gBAVR,CAUQ,CACT,CACF,CAAC;gBACF,IAAI;oBACF,sFAAsF;oBACtF,IAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;oBAClC,OAAO,GAAG,CAAC;iBACZ;gBAAC,OAAO,MAAW,EAAE;oBACpB,OAAO,SAAS,CAAC;iBAClB;aACF;SACF;QAAC,OAAO,KAAU,EAAE;YACnB,IAAI,aAAO,CAAC,SAAS,EAAE;gBACrB,OAAO,CAAC,IAAI,CACV,4BAA4B,EAC5B,KAAK,CAAC,OAAO,IAAI,KAAK,EACtB,IAAI,EACJ,GAAG,EACH,KAAK,CAAC,KAAK,IAAI,KAAK,CACrB,CAAC;aACH;iBAAM;gBACL,IAAI,IAAA,kBAAO,GAAE,EAAE;oBACb,OAAO,CAAC,KAAK,CACX,4BAA4B,EAC5B,KAAK,CAAC,OAAO,IAAI,KAAK,EACtB,IAAI,EACJ,GAAG,EACH,KAAK,CAAC,KAAK,IAAI,KAAK,CACrB,CAAC;iBACH;aACF;YACD,IAAI,MAAM,EAAE;gBACV,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACpB;YACD,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,EAAE;gBAC9D,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;aAC1B;YACD,OAAO,IAAI,CAAC;SACb;IACH,CAAC,CAAC;IAEF,IAAI,aAAO,CAAC,SAAS,EAAE;QACrB,OAAO,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;KAC3B;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAnKD,4CAmKC;AAED,IAAM,sBAAsB,GAAG,CAAC,CAAC;AAE1B,IAAM,MAAM,GAAG,UAAC,IAAY,EAAE,SAAkB,EAAE,IAAe;IACtE,8DAA8D;IAC9D,IAAM,KAAK,GAAG,IAAI,IAAI;QACpB,OAAO;QACP,OAAO;QACP,OAAO;QACP,SAAS;QACT,QAAQ;QACR,QAAQ;QACR,SAAS;QACT,SAAS;KACV,CAAC;IAEF,sIAAsI;IACtI,4DAA4D;IAC5D,IAAM,YAAY,GAAG,6xBA6BtB,CAAC;IACA,6EAA6E;IAC7E,IAAM,WAAW,GAAG,oMAOnB,CAAC;IAEF,OAAO,YACP,YAAY,eACZ,WAAW,OACZ,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,UAAC,GAAG,EAAE,KAAK,IAAK,OAAA,cAAO,GAAG,4BAAkB,KAAK,OAAI,EAArC,CAAqC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,YAC3F,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,+CAEnD,SAAS,CAAC,CAAC,CAAC,kBAAW,IAAI,OAAI,CAAC,CAAC,CAAC,IAAI,8CAIzC,CAAC,CAAC;AACH,CAAC,CAAC;AAlEW,QAAA,MAAM,UAkEjB;AAEK,IAAM,iBAAiB,GAAG;IAC/B,IAAI,eAAe,GAAG,aAAO,CAAC,aAAa,CAAC;IAE5C,IAAI,CAAC,eAAe,EAAE;QACpB,IAAM,GAAG,GAAG,IAAA,yCAAkB,EAAC,aAAa,CAAiC,CAAC;QAC9E,IAAM,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;QACtD,eAAe,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC9C,aAAO,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;KAC3C;IACD,IAAM,IAAI,GAAG,eAAgB,CAAC,MAAM,CAAC;IACrC,+FAA+F;IAC/F,wFAAwF;IACxF,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IACzC,oEAAoE;IACpE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;QAAU,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,yBAAc;;QAC1C,IAAI,IAAA,kBAAO,GAAE,EAAE;YACb,OAAO,CAAC,GAAG,OAAX,OAAO,EAAQ,IAAI,EAAE;SACtB;IACH,CAAC,CAAC,CAAC;IACH,OAAO,eAAe,CAAC;AACzB,CAAC,CAAC;AApBW,QAAA,iBAAiB,qBAoB5B"}
|
|
@@ -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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"}
|
|
@@ -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 {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
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 || {};
|
package/src/blocks/Router.tsx
CHANGED
|
@@ -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 */}
|
package/src/blocks/Symbol.tsx
CHANGED
|
@@ -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
|
+
});
|