Skip to content

Commit 1512e54

Browse files
author
Ives van Hoorne
committed
Support for JSON
1 parent d2dd4a1 commit 1512e54

File tree

7 files changed

+65
-78
lines changed

7 files changed

+65
-78
lines changed

src/sandbox/eval/css.js

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,6 @@ function createStyleNode(id: string, content: string) {
2323
}
2424
document.head.appendChild(styleNode);
2525
}
26-
27-
function getGeneratedClassNames(id: string, classNames: Array<string>) {
28-
return classNames
29-
.map(t => t.replace('.', ''))
30-
.reduce((prev, next) => ({ ...prev, [next]: `cs-${id}-${next}` }), {});
31-
}
32-
3326
/**
3427
* Adds CSS to HEAD and creates a mapping of classname -> generatedClassname
3528
*/

src/sandbox/eval/index.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,14 @@ import type {
88
import evalJS, { deleteCache as deleteJSCache } from './js';
99
import evalHTML from './html';
1010
import evalCSS from './css';
11+
import evalJson from './json';
1112

1213
const MAX_DEPTH = 20;
1314

1415
function doEval(mainModule, sandboxId, modules, directories, manifest, depth) {
1516
const html = /\.html$/;
1617
const css = /\.css$/;
18+
const json = /\.json$/;
1719

1820
if (html.test(mainModule.title)) {
1921
return evalHTML(
@@ -37,6 +39,17 @@ function doEval(mainModule, sandboxId, modules, directories, manifest, depth) {
3739
);
3840
}
3941

42+
if (json.test(mainModule.title)) {
43+
return evalJson(
44+
mainModule,
45+
sandboxId,
46+
modules,
47+
directories,
48+
manifest,
49+
depth
50+
);
51+
}
52+
4053
return evalJS(mainModule, sandboxId, modules, directories, manifest, depth);
4154
}
4255

src/sandbox/eval/index.test.js

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import evaller from './';
2+
3+
describe('eval', () => {
4+
// just evaluate if the right evallers are called
5+
test('js', () => {
6+
const mainModule = {
7+
title: 'test.js',
8+
code: `
9+
export default 3;
10+
`,
11+
};
12+
13+
expect(evaller(mainModule)).toEqual({ __esModule: true, default: 3 });
14+
});
15+
16+
test('css', () => {
17+
const mainModule = {
18+
title: 'test.css',
19+
code: `
20+
.test {
21+
color: blue;
22+
}
23+
`,
24+
};
25+
26+
expect(evaller(mainModule)).toEqual(['.test']);
27+
});
28+
29+
test('html', () => {
30+
const mainModule = {
31+
title: 'test.html',
32+
code: `<div>Hello</div>`,
33+
};
34+
35+
expect(evaller(mainModule)).toEqual(`<div>Hello</div>`);
36+
});
37+
38+
test('json', () => {
39+
const mainModule = {
40+
title: 'test.json',
41+
code: `{"test":"test"}`,
42+
};
43+
44+
expect(evaller(mainModule)).toEqual({ test: 'test' });
45+
});
46+
});

src/sandbox/eval/json.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export default module => JSON.parse(module.code);

src/sandbox/eval/json.test.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import json from './json';
2+
3+
test('json parses code', () => {
4+
expect(json({ code: `{"test": "test"}` })).toEqual({ test: 'test' });
5+
});

src/sandbox/modes/FunctionMode.js

Lines changed: 0 additions & 56 deletions
This file was deleted.

src/sandbox/modes/ReactMode.js

Lines changed: 0 additions & 15 deletions
This file was deleted.

0 commit comments

Comments
 (0)