Skip to content

Commit d374f8a

Browse files
author
Ives van Hoorne
committed
Overhaul error system
1 parent 994bbcb commit d374f8a

File tree

15 files changed

+189
-57
lines changed

15 files changed

+189
-57
lines changed

config/webpack.prod.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,5 +222,6 @@ module.exports = merge(commonConfig, {
222222
// https://github.com/jmblog/how-to-optimize-momentjs-with-webpack
223223
// You can remove this if you don't use Moment.js:
224224
new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/),
225+
new webpack.IgnorePlugin(/\/src\/node_modules/),
225226
],
226227
});

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@
101101
"babel-standalone": "^6.25.0",
102102
"base64-loader": "^1.0.0",
103103
"codemirror": "^5.27.4",
104-
"codesandbox-api": "^0.0.3",
104+
"codesandbox-api": "0.0.6",
105105
"color": "^0.11.4",
106106
"css-modules-loader-core": "^1.1.0",
107107
"cssnano": "^3.10.0",

src/node_modules/codesandbox-api/package.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/node_modules/codesandbox-api/src/codesandbox.ts

Lines changed: 7 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/node_modules/codesandbox-api/src/errors/index.ts

Lines changed: 46 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/node_modules/codesandbox-api/src/typings/codesandbox.d.ts

Lines changed: 30 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/sandbox/compile.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
import { dispatch } from 'codesandbox-api';
1+
import { dispatch, clearErrorTransformers } from 'codesandbox-api';
22

33
import { getModulePath } from 'app/store/entities/sandboxes/modules/selectors';
44
import type { Module, Directory } from 'common/types';
55

6+
import initializeErrorTransformers from './errors/transformers';
67
import getPreset from './eval';
78
import Manager from './eval/manager';
89
import resolveDependency from './eval/loaders/dependency-resolver';
@@ -82,6 +83,8 @@ async function compile({
8283
template,
8384
}) {
8485
try {
86+
clearErrorTransformers();
87+
initializeErrorTransformers();
8588
uninject();
8689
inject();
8790
} catch (e) {

src/sandbox/errors/dependency-not-found-error.js

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,29 +4,24 @@ import SandboxError from './sandbox-error';
44

55
export default class DependencyNotFoundError extends SandboxError {
66
constructor(dependencyName: string) {
7-
super();
8-
97
const [root, second] = dependencyName.split('/');
108

119
// If the package starts with a @ it's scoped, we should add the second
1210
// part of the name in that case
1311
const parsedName = root.startsWith('@') ? `${root}/${second}` : root;
14-
15-
this.payload = {
16-
dependency: parsedName,
17-
path: dependencyName,
18-
};
19-
this.name = 'DependencyNotFoundError';
20-
this.message = `Could not find dependency: '${parsedName}'`;
21-
22-
this.suggestions = [
12+
const suggestions = [
2313
{
2414
title: `Add ${parsedName} as dependency`,
2515
action: () => {
2616
dispatch(actions.source.dependencies.add(parsedName));
2717
},
2818
},
2919
];
20+
21+
super(suggestions);
22+
23+
this.name = 'DependencyNotFoundError';
24+
this.message = `Could not find dependency: '${parsedName}'`;
3025
}
3126
type = 'dependency-not-found';
3227
severity = 'error';

src/sandbox/errors/raw-react-component-error.js

Lines changed: 0 additions & 35 deletions
This file was deleted.
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { registerErrorTransformer } from 'codesandbox-api';
2+
3+
import rawReactErrorTransformer from './raw-react-component-error';
4+
5+
const transformers = [rawReactErrorTransformer];
6+
7+
export default function registerErrorTransformers() {
8+
transformers.forEach(t => registerErrorTransformer(t));
9+
}

0 commit comments

Comments
 (0)