Big News: Socket Selected for OpenAI's Cybersecurity Grant Program.Details
Socket
Book a DemoSign in
Socket

variable-diff

Package Overview
Dependencies
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

variable-diff - npm Package Compare versions

Comparing version
1.1.0
to
2.0.0
.github/screenshot.png

Sorry, the diff of this file is not supported yet

+4
var diff = require('./');
var result = diff({ a: 1, b: 2, d: 'hello' }, { a: 8, b: 2, c: 4});
console.log(result.text);
+1
-4
sudo: false
language: node_js
node_js:
- '0.10'
- '0.12'
- '4'
- '5'
- '10'
+41
-33
'use strict';
var chalk = require('chalk');
var objectAssign = require('object-assign');

@@ -12,16 +11,11 @@ var typeColors = {

var options = {
indent: 2,
indentChar: ' ',
newLineChar: '\n',
var defaultOptions = {
indent: ' ',
newLine: '\n',
wrap: function wrap(type, text) {
return chalk[typeColors[type]](text);
}
},
color: true
};
var indent = '';
for (var i = 0; i < options.indent; i++) {
indent += options.indentChar;
}
function isObject(obj) {

@@ -41,24 +35,24 @@ return typeof obj === 'object' && obj && !Array.isArray(obj);

function indentSubItem(text) {
return text.split(options.newLineChar).map(function onMap(line, index) {
function indentSubItem(text, options) {
return text.split(options.newLine).map(function onMap(line, index) {
if (index === 0) {
return line;
}
return indent + line;
}).join(options.newLineChar);
return options.indent + line;
}).join(options.newLine);
}
function keyChanged(key, text) {
return indent + key + ': ' + indentSubItem(text) + options.newLineChar
function keyChanged(key, text, options) {
return options.indent + key + ': ' + indentSubItem(text, options) + options.newLine
}
function keyRemoved(key, variable) {
return options.wrap('removed', '- ' + key + ': ' + printVar(variable)) + options.newLineChar;
function keyRemoved(key, variable, options) {
return options.wrap('removed', '- ' + key + ': ' + printVar(variable)) + options.newLine;
}
function keyAdded(key, variable) {
return options.wrap('added', '+ ' + key + ': ' + printVar(variable)) + options.newLineChar;
function keyAdded(key, variable, options) {
return options.wrap('added', '+ ' + key + ': ' + printVar(variable)) + options.newLine;
}
function diff(left, right) {
function diffInternal(left, right, options) {
var text = '';

@@ -73,9 +67,9 @@ var changed = false;

if (i < right.length) {
itemDiff = diff(left[i], right[i]);
itemDiff = diffInternal(left[i], right[i], options);
if (itemDiff.changed) {
subOutput += keyChanged(i, itemDiff.text);
subOutput += keyChanged(i, itemDiff.text, options);
changed = true;
}
} else {
subOutput += keyRemoved(i, left[i]);
subOutput += keyRemoved(i, left[i], options);
changed = true;

@@ -86,3 +80,3 @@ }

for (; i < right.length; i++) {
subOutput += keyAdded(i, right[i]);
subOutput += keyAdded(i, right[i], options);
}

@@ -92,7 +86,7 @@ changed = true;

if (changed) {
text = '[' + options.newLineChar + subOutput + ']';
text = '[' + options.newLine + subOutput + ']';
}
} else if (isObject(left) && isObject(right)) {
keys = Object.keys(left);
var rightObj = objectAssign({}, right);
var rightObj = Object.assign({}, right);
var key;

@@ -103,5 +97,5 @@ keys.sort();

if (right.hasOwnProperty(key)) {
itemDiff = diff(left[key], right[key]);
itemDiff = diffInternal(left[key], right[key], options);
if (itemDiff.changed) {
subOutput += keyChanged(key, itemDiff.text);
subOutput += keyChanged(key, itemDiff.text, options);
changed = true;

@@ -111,3 +105,3 @@ }

} else {
subOutput += keyRemoved(key, left[key]);
subOutput += keyRemoved(key, left[key], options);
changed = true;

@@ -119,3 +113,3 @@ }

for (var i = 0; i < addedKeys.length; i++) {
subOutput += keyAdded(addedKeys[i], right[addedKeys[i]]);
subOutput += keyAdded(addedKeys[i], right[addedKeys[i]], options);
changed = true;

@@ -125,3 +119,3 @@ }

if (changed) {
text = '{' + options.newLineChar + subOutput + '}';
text = '{' + options.newLine + subOutput + '}';
}

@@ -140,3 +134,17 @@

function diff(left, right, options) {
options = options || {};
if (!options.color && options.wrap) {
throw new Error('Can\'t specify wrap and color options together.')
}
var combinedOptions = Object.assign({}, defaultOptions, options);
if (!combinedOptions.color) {
combinedOptions.wrap = function(type, text) { return text }
}
return diffInternal(left, right, combinedOptions)
}
module.exports = diff;
{
"name": "variable-diff",
"version": "1.1.0",
"version": "2.0.0",
"description": "Visual diff between javascript variables",

@@ -11,3 +11,3 @@ "main": "index.js",

"devDependencies": {
"tap": "^5.4.2"
"tap": "^14.6.5"
},

@@ -14,0 +14,0 @@ "scripts": {

@@ -14,7 +14,15 @@ # variable-diff

var result = diff({ a: 1, b: 2, d: 'hello' }, { a: 8, b: 2, c: 4});
var defaultOptions = {
indent: ' ',
newLine: '\n',
wrap: function wrap(type, text) {
return chalk[typeColors[type]](text);
},
color: true
};
var result = diff({ a: 1, b: 2, d: 'hello' }, { a: 8, b: 2, c: 4}, defaultOptions);
console.log(result.text);
```
![output](http://i.imgur.com/3cOu6Wr.png?1)

@@ -21,0 +29,0 @@ ### Test

+29
-29

@@ -6,3 +6,3 @@ var tap = require('tap');

test('null no diff', function(t) {
t.same(diff(null, null), {
t.same(diff(null, null, {color: false}), {
changed: false,

@@ -15,3 +15,3 @@ text: ''

test('null and object', function(t) {
t.same(diff(null, { a: 1 }), {
t.same(diff(null, { a: 1 }, {color: false}), {
changed: true,

@@ -24,3 +24,3 @@ text: 'null => {"a":1}'

test('null and string', function(t) {
t.same(diff(null, 'b'), {
t.same(diff(null, 'b', {color: false}), {
changed: true,

@@ -33,3 +33,3 @@ text: 'null => "b"'

test('undefined no diff', function(t) {
t.same(diff(undefined, undefined), {
t.same(diff(undefined, undefined, {color: false}), {
changed: false,

@@ -42,3 +42,3 @@ text: ''

test('undefined and number', function(t) {
t.same(diff(undefined, 21), {
t.same(diff(undefined, 21, {color: false}), {
changed: true,

@@ -51,3 +51,3 @@ text: 'undefined => 21'

test('string no diff', function(t) {
t.same(diff('hello', 'hello'), {
t.same(diff('hello', 'hello', {color: false}), {
changed: false,

@@ -60,3 +60,3 @@ text: ''

test('string changed', function(t) {
t.same(diff('hello', 'hellos'), {
t.same(diff('hello', 'hellos', {color: false}), {
changed: true,

@@ -69,3 +69,3 @@ text: '"hello" => "hellos"'

test('string to number', function(t) {
t.same(diff('fun', 9), {
t.same(diff('fun', 9, {color: false}), {
changed: true,

@@ -78,3 +78,3 @@ text: '"fun" => 9'

test('string to function', function(t) {
t.same(diff('fun', function hello() { console.log('test') }), {
t.same(diff('fun', function hello() { console.log('test') }, {color: false}), {
changed: true,

@@ -87,3 +87,3 @@ text: '"fun" => function hello() {}'

test('string to regex', function(t) {
t.same(diff('fun', /search/), {
t.same(diff('fun', /search/, {color: false}), {
changed: true,

@@ -96,3 +96,3 @@ text: '"fun" => /search/'

test('number not changed', function(t) {
t.same(diff(987, 987), {
t.same(diff(987, 987, {color: false}), {
changed: false,

@@ -104,3 +104,3 @@ text: ''

test('number and string', function(t) {
t.same(diff(1, 'hellos'), {
t.same(diff(1, 'hellos', {color: false}), {
changed: true,

@@ -113,3 +113,3 @@ text: '1 => "hellos"'

test('number and object', function(t) {
t.same(diff(9, { test: 1 }), {
t.same(diff(9, { test: 1 }, {color: false}), {
changed: true,

@@ -123,3 +123,3 @@ text: '9 => {"test":1}'

function myFunc() {}
t.same(diff(myFunc, myFunc), {
t.same(diff(myFunc, myFunc, {color: false}), {
changed: false,

@@ -132,3 +132,3 @@ text: ''

test('function same code different function', function(t) {
t.same(diff(function test() { console.log('1'); } , function test() { console.log('1'); }), {
t.same(diff(function test() { console.log('1'); } , function test() { console.log('1'); }, {color: false}), {
changed: true,

@@ -141,3 +141,3 @@ text: 'function test() {} => function test() {}'

test('function and number', function(t) {
t.same(diff(function () { console.log('1'); } , 2), {
t.same(diff(function () { console.log('1'); } , 2, {color: false}), {
changed: true,

@@ -150,3 +150,3 @@ text: 'function () {} => 2'

test('array switch index', function(t) {
t.same(diff([9,8,1], [8,9,1]), {
t.same(diff([9,8,1], [8,9,1], {color: false}), {
changed: true,

@@ -159,3 +159,3 @@ text: '[\n 0: 9 => 8\n 1: 8 => 9\n]'

test('array add 2 items', function(t) {
t.same(diff([8,9,1], [8,9,1,4,3]), {
t.same(diff([8,9,1], [8,9,1,4,3], {color: false}), {
changed: true,

@@ -168,3 +168,3 @@ text: '[\n+ 3: 4\n+ 4: 3\n]'

test('array remove 2 items', function(t) {
t.same(diff([9,8,7], [9]), {
t.same(diff([9,8,7], [9], {color: false}), {
changed: true,

@@ -177,3 +177,3 @@ text: '[\n- 1: 8\n- 2: 7\n]'

test('array empty', function(t) {
t.same(diff([], []), {
t.same(diff([], [], {color: false}), {
changed: false,

@@ -186,3 +186,3 @@ text: ''

test('array and object', function(t) {
t.same(diff([1,2], { key: 1 }), {
t.same(diff([1,2], { key: 1 }, {color: false}), {
changed: true,

@@ -195,3 +195,3 @@ text: '[1,2] => {"key":1}'

test('array and null', function(t) {
t.same(diff([2], null), {
t.same(diff([2], null, {color: false}), {
changed: true,

@@ -204,3 +204,3 @@ text: '[2] => null'

test('object same structure', function(t) {
t.same(diff({ test: 1, and: 'fun'}, { test: 1, and: 'fun'}), {
t.same(diff({ test: 1, and: 'fun'}, { test: 1, and: 'fun'}, {color: false}), {
changed: false,

@@ -213,3 +213,3 @@ text: ''

test('object nested object', function(t) {
t.same(diff({ test: { a: { b: 3, c: 5}}, and: 'fun'}, { test: { a: { b: 3, c: 5}}, and: 'fun'}), {
t.same(diff({ test: { a: { b: 3, c: 5}}, and: 'fun'}, { test: { a: { b: 3, c: 5}}, and: 'fun'}, {color: false}), {
changed: false,

@@ -222,3 +222,3 @@ text: ''

test('object nested object different', function(t) {
t.same(diff({ test: { a: { b: 3, c: 5}}, and: 'fun'}, { test: { a: { b: 3, c: 'test'}}, and: 'fun'}), {
t.same(diff({ test: { a: { b: 3, c: 5}}, and: 'fun'}, { test: { a: { b: 3, c: 'test'}}, and: 'fun'}, {color: false}), {
changed: true,

@@ -231,3 +231,3 @@ text: '{\n test: {\n a: {\n c: 5 => "test"\n }\n }\n}'

test('object keys removed', function(t) {
t.same(diff({ a: 1, b: 2, c: 3}, { a: 1 }), {
t.same(diff({ a: 1, b: 2, c: 3}, { a: 1 }, {color: false}), {
changed: true,

@@ -240,3 +240,3 @@ text: '{\n- b: 2\n- c: 3\n}'

test('object keys added', function(t) {
t.same(diff({ a: 1 }, { a: 1, b: 9, c: 2 }), {
t.same(diff({ a: 1 }, { a: 1, b: 9, c: 2 }, {color: false}), {
changed: true,

@@ -249,3 +249,3 @@ text: '{\n+ b: 9\n+ c: 2\n}'

test('object with nested array', function(t) {
t.same(diff({ test: { a: [5,6,7]}, and: 'fun'}, { test: { a: [9,8,2,4]}, and: 'fun'}), {
t.same(diff({ test: { a: [5,6,7]}, and: 'fun'}, { test: { a: [9,8,2,4]}, and: 'fun'}, {color: false}), {
changed: true,

@@ -258,3 +258,3 @@ text: '{\n test: {\n a: [\n 0: 5 => 9\n 1: 6 => 8\n 2: 7 => 2\n + 3: 4\n ]\n }\n}'

test('complex nested object difference', function(t) {
t.same(diff({ test: { a: [5,6,7]}, b: { c: 1 }, and: 'fun'}, { test: { a: [9,8,2,4]}, b: {d: 2 }, and: [1,2]}), {
t.same(diff({ test: { a: [5,6,7]}, b: { c: 1 }, and: 'fun'}, { test: { a: [9,8,2,4]}, b: {d: 2 }, and: [1,2]}, {color: false}), {
changed: true,

@@ -261,0 +261,0 @@ text: '{\n and: "fun" => [1,2]\n b: {\n - c: 1\n + d: 2\n }\n test: {\n a: [\n 0: 5 => 9\n 1: 6 => 8\n 2: 7 => 2\n + 3: 4\n ]\n }\n}'

Sorry, the diff of this file is not supported yet

<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding">
<file url="PROJECT" charset="UTF-8" />
</component>
</project>
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="JavaScriptLibraryMappings">
<file url="file://$PROJECT_DIR$" libraries="{variable-diff node_modules}" />
</component>
</project>
<component name="libraryTable">
<library name="variable-diff node_modules" type="javaScript">
<properties>
<option name="frameworkName" value="node_modules" />
<sourceFilesUrls>
<item url="file://$PROJECT_DIR$/node_modules" />
</sourceFilesUrls>
</properties>
<CLASSES>
<root url="file://$PROJECT_DIR$/node_modules" />
</CLASSES>
<SOURCES />
</library>
</component>
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectLevelVcsManager" settingsEditedManually="false">
<OptionsSetting value="true" id="Add" />
<OptionsSetting value="true" id="Remove" />
<OptionsSetting value="true" id="Checkout" />
<OptionsSetting value="true" id="Update" />
<OptionsSetting value="true" id="Status" />
<OptionsSetting value="true" id="Edit" />
<ConfirmationsSetting value="0" id="Add" />
<ConfirmationsSetting value="0" id="Remove" />
</component>
</project>
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/variable-diff.iml" filepath="$PROJECT_DIR$/.idea/variable-diff.iml" />
</modules>
</component>
</project>

Sorry, the diff of this file is not supported yet

<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ChangeListManager">
<list default="true" id="38ce6cf1-655a-4bdc-b969-2c0a996054c7" name="Default" comment="">
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/package.json" afterPath="$PROJECT_DIR$/package.json" />
</list>
<ignored path="variable-diff.iws" />
<ignored path=".idea/workspace.xml" />
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="TRACKING_ENABLED" value="true" />
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="ChangesViewManager" flattened_view="true" show_ignored="false" />
<component name="CreatePatchCommitExecutor">
<option name="PATCH_PATH" value="" />
</component>
<component name="ExecutionTargetManager" SELECTED_TARGET="default_target" />
<component name="FavoritesManager">
<favorites_list name="variable-diff" />
</component>
<component name="FileEditorManager">
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file leaf-file-name="index.js" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/index.js">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="-6.814815">
<caret line="50" column="1" selection-start-line="50" selection-start-column="1" selection-end-line="50" selection-end-column="1" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="package.json" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/package.json">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.05882353">
<caret line="2" column="17" selection-start-line="2" selection-start-column="17" selection-end-line="2" selection-end-column="17" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="README.md" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/README.md">
<provider selected="true" editor-type-id="split-provider[text-editor;MultiMarkdownPreviewEditor]">
<state split_layout="FIRST">
<first_editor vertical-scroll-proportion="0.0">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</first_editor>
<second_editor />
</state>
</provider>
<provider editor-type-id="MultiMarkdownFxPreviewEditor">
<state />
</provider>
</entry>
</file>
<file leaf-file-name=".travis.yml" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/.travis.yml">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="6" column="7" selection-start-line="6" selection-start-column="7" selection-end-line="6" selection-end-column="7" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="test.js" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/test.js">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="231" column="148" selection-start-line="231" selection-start-column="148" selection-end-line="231" selection-end-column="148" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name=".gitignore" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/.gitignore">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="34" column="11" selection-start-line="34" selection-start-column="11" selection-end-line="34" selection-end-column="11" />
<folding />
</state>
</provider>
</entry>
</file>
</leaf>
</component>
<component name="FileTemplateManagerImpl">
<option name="RECENT_TEMPLATES">
<list>
<option value="JavaScript File" />
</list>
</option>
</component>
<component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
</component>
<component name="IdeDocumentHistory">
<option name="CHANGED_PATHS">
<list>
<option value="$PROJECT_DIR$/hello.js" />
<option value="$PROJECT_DIR$/.gitignore" />
<option value="$PROJECT_DIR$/.travis.yml" />
<option value="$PROJECT_DIR$/README.md" />
<option value="$PROJECT_DIR$/index.js" />
<option value="$PROJECT_DIR$/sample.js" />
<option value="$PROJECT_DIR$/test.js" />
<option value="$PROJECT_DIR$/package.json" />
</list>
</option>
</component>
<component name="JsBuildToolGruntFileManager" detection-done="true" />
<component name="JsBuildToolPackageJson" detection-done="true" />
<component name="JsGulpfileManager">
<detection-done>true</detection-done>
</component>
<component name="ProjectFrameBounds">
<option name="x" value="24" />
<option name="y" value="70" />
<option name="width" value="1652" />
<option name="height" value="954" />
</component>
<component name="ProjectLevelVcsManager" settingsEditedManually="false">
<OptionsSetting value="true" id="Add" />
<OptionsSetting value="true" id="Remove" />
<OptionsSetting value="true" id="Checkout" />
<OptionsSetting value="true" id="Update" />
<OptionsSetting value="true" id="Status" />
<OptionsSetting value="true" id="Edit" />
<ConfirmationsSetting value="0" id="Add" />
<ConfirmationsSetting value="0" id="Remove" />
</component>
<component name="ProjectView">
<navigator currentView="ProjectPane" proportions="" version="1">
<flattenPackages />
<showMembers />
<showModules />
<showLibraryContents />
<hideEmptyPackages />
<abbreviatePackageNames />
<autoscrollToSource />
<autoscrollFromSource />
<sortByType />
<manualOrder />
<foldersAlwaysOnTop value="true" />
</navigator>
<panes>
<pane id="Scope" />
<pane id="Scratches" />
<pane id="ProjectPane">
<subPane>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="variable-diff" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="variable-diff" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="variable-diff" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
</subPane>
</pane>
</panes>
</component>
<component name="PropertiesComponent">
<property name="last_opened_file_path" value="$PROJECT_DIR$" />
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="js-jscs-nodeInterpreter" value="/usr/local/bin/node" />
<property name="HbShouldOpenHtmlAsHb" value="" />
</component>
<component name="RunManager">
<configuration default="true" type="DartCommandLineRunConfigurationType" factoryName="Dart Command Line Application">
<method />
</configuration>
<configuration default="true" type="DartTestRunConfigurationType" factoryName="Dart Test">
<method />
</configuration>
<configuration default="true" type="JavaScriptTestRunnerKarma" factoryName="Karma" config-file="">
<envs />
<method />
</configuration>
<configuration default="true" type="JavascriptDebugType" factoryName="JavaScript Debug">
<method />
</configuration>
<configuration default="true" type="NodeJSConfigurationType" factoryName="Node.js" working-dir="">
<method />
</configuration>
<configuration default="true" type="cucumber.js" factoryName="Cucumber.js">
<option name="cucumberJsArguments" value="" />
<option name="executablePath" />
<option name="filePath" />
<method />
</configuration>
<configuration default="true" type="js.build_tools.gulp" factoryName="Gulp.js">
<node-options />
<gulpfile />
<tasks />
<arguments />
<envs />
<method />
</configuration>
<configuration default="true" type="js.build_tools.npm" factoryName="npm">
<command value="run-script" />
<scripts />
<envs />
<method />
</configuration>
<configuration default="true" type="mocha-javascript-test-runner" factoryName="Mocha">
<node-options />
<working-directory>$PROJECT_DIR$</working-directory>
<pass-parent-env>true</pass-parent-env>
<envs />
<ui>bdd</ui>
<extra-mocha-options />
<test-kind>DIRECTORY</test-kind>
<test-directory />
<recursive>false</recursive>
<method />
</configuration>
</component>
<component name="ShelveChangesManager" show_recycled="false" />
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
<changelist id="38ce6cf1-655a-4bdc-b969-2c0a996054c7" name="Default" comment="" />
<created>1454775468538</created>
<option name="number" value="Default" />
<updated>1454775468538</updated>
</task>
<servers />
</component>
<component name="ToolWindowManager">
<frame x="24" y="70" width="1652" height="954" extended-state="0" />
<editor active="true" />
<layout>
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.25260577" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.3293556" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
</layout>
</component>
<component name="VcsContentAnnotationSettings">
<option name="myLimit" value="2678400000" />
</component>
<component name="XDebuggerManager">
<breakpoint-manager />
<watches-manager />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/index.js">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="40" column="20" selection-start-line="40" selection-start-column="20" selection-end-line="40" selection-end-column="20" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/package.json">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="13" column="24" selection-start-line="13" selection-start-column="24" selection-end-line="13" selection-end-column="24" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/README.md">
<provider selected="true" editor-type-id="split-provider[text-editor;MultiMarkdownPreviewEditor]">
<state split_layout="FIRST">
<first_editor vertical-scroll-proportion="0.0">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</first_editor>
<second_editor />
</state>
</provider>
<provider editor-type-id="MultiMarkdownFxPreviewEditor">
<state />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/.travis.yml">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="6" column="7" selection-start-line="6" selection-start-column="7" selection-end-line="6" selection-end-column="7" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/test.js">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="223" column="13" selection-start-line="223" selection-start-column="13" selection-end-line="223" selection-end-column="13" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/.gitignore">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="34" column="11" selection-start-line="34" selection-start-column="11" selection-end-line="34" selection-end-column="11" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/.gitignore">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="34" column="11" selection-start-line="34" selection-start-column="11" selection-end-line="34" selection-end-column="11" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/.travis.yml">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="6" column="7" selection-start-line="6" selection-start-column="7" selection-end-line="6" selection-end-column="7" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/README.md">
<provider selected="true" editor-type-id="split-provider[text-editor;MultiMarkdownPreviewEditor]">
<state split_layout="FIRST">
<first_editor vertical-scroll-proportion="0.0">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</first_editor>
<second_editor />
</state>
</provider>
<provider editor-type-id="MarkdownPreviewEditor">
<state />
</provider>
<provider editor-type-id="MultiMarkdownFxPreviewEditor">
<state />
</provider>
<provider editor-type-id="text-editor">
<state vertical-scroll-proportion="0.08946322">
<caret line="3" column="0" selection-start-line="3" selection-start-column="0" selection-end-line="3" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/index.js">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="-6.814815">
<caret line="50" column="1" selection-start-line="50" selection-start-column="1" selection-end-line="50" selection-end-column="1" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/test.js">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="231" column="148" selection-start-line="231" selection-start-column="148" selection-end-line="231" selection-end-column="148" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/package.json">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.05882353">
<caret line="2" column="17" selection-start-line="2" selection-start-column="17" selection-end-line="2" selection-end-column="17" />
<folding />
</state>
</provider>
</entry>
</component>
</project>

Sorry, the diff of this file is not supported yet