Skip to content
This repository has been archived by the owner on Mar 17, 2021. It is now read-only.

fix(index): escape invalid characters #43

Merged
merged 4 commits into from
Nov 17, 2017
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 10 additions & 6 deletions index.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
/*
MIT License http://www.opensource.org/licenses/mit-license.php
Author Tobias Koppers @sokra
MIT License http://www.opensource.org/licenses/mit-license.php
Author Tobias Koppers @sokra
*/
module.exports = function(content) {
this.cacheable && this.cacheable();
this.value = content;
return "module.exports = " + JSON.stringify(content);
module.exports = function(source) {
this.value = source;

var json = JSON.stringify(source)
.replace(/\u2028/g, '\\u2028')
.replace(/\u2029/g, '\\u2029');

return "module.exports = " + json;
Copy link

@stevemao stevemao Oct 26, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why not just return "module.exports = " + '"' + source + '"'?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So, the problem I had was that I was importing a file which had these special characters and it turns out that they break JSON. See the MDN article I posted above.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah I know. But why converting to json is better than wrapping the string with "?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Really, it's a matter of choice. I've been used to using json stringify for things like this where code gets evaluated. But yeah, you are right, it is the same.

}