initial commit

master
jefklak 9 years ago
commit 962764c034

BIN
.DS_Store vendored

Binary file not shown.

@ -0,0 +1,67 @@
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.2.1/moment.min.js"></script>
<script src="lazyload.js"></script>
<style>
img.lazy {
border: 1px solid black;
margin-right: 100px;
}
</style>
<script>
$(function() {
function refresh() {
$("#cam").attr('src', $("#cam").attr('src') + "?" + new Date().getTime());
$("#update").html(moment().format('hh:mm:ss'));
}
function createImageTag(file) {
var time = moment(file.time).format();
return $("<img class='lazy' width='640' height='480'>")
.attr('style', 'display:inline')
.attr('alt', 'time: ' + time)
.attr('title', 'time: ' + time)
.data('original', file.name);
}
function fetchHistory() {
$.getJSON("index.json", function(data) {
$("#history").html("");
data.files.forEach(function(file) {
$("#history").append(createImageTag(file));
});
$("img.lazy").lazyload({
effect: "fadeIn"
});
});
}
refresh();
setTimeout(refresh, 1000 * 60);
fetchHistory();
});
</script>
</head>
<body>
<h2>Cam capture live feed</h2>
<img src="image.jpg" alt="cam" id="cam">
<p>
<strong>DO NOT REFRESH</strong> page, happens automatically every 60 seconds.<br>
Last update: <h3 id="update"></h3>
</p>
<hr>
<h2>HOURLY Cam history</h2>
<div id="history">
Fetching... Please wait.
</div>
<hr>
<script>
</script>
</body>
</html>

@ -0,0 +1 @@
{"files":[{"name":"image.jpg","type":0,"time":1381927500000,"size":"490610","owner":"ftp","group":"ftp","userPermissions":{"read":true,"write":true,"exec":false},"groupPermissions":{"read":true,"write":false,"exec":false},"otherPermissions":{"read":true,"write":false,"exec":false}}]}

@ -0,0 +1,239 @@
/*
* Lazy Load - jQuery plugin for lazy loading images
*
* Copyright (c) 2007-2013 Mika Tuupola
*
* Licensed under the MIT license:
* http://www.opensource.org/licenses/mit-license.php
*
* Project home:
* http://www.appelsiini.net/projects/lazyload
*
* Version: 1.9.0
*
*/
(function($, window, document, undefined) {
var $window = $(window);
$.fn.lazyload = function(options) {
var elements = this;
var $container;
var settings = {
threshold : 0,
failure_limit : 0,
event : "scroll",
effect : "show",
container : window,
data_attribute : "original",
skip_invisible : true,
appear : null,
load : null,
placeholder : "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC"
};
function update() {
var counter = 0;
elements.each(function() {
var $this = $(this);
if (settings.skip_invisible && !$this.is(":visible")) {
return;
}
if ($.abovethetop(this, settings) ||
$.leftofbegin(this, settings)) {
/* Nothing. */
} else if (!$.belowthefold(this, settings) &&
!$.rightoffold(this, settings)) {
$this.trigger("appear");
/* if we found an image we'll load, reset the counter */
counter = 0;
} else {
if (++counter > settings.failure_limit) {
return false;
}
}
});
}
if(options) {
/* Maintain BC for a couple of versions. */
if (undefined !== options.failurelimit) {
options.failure_limit = options.failurelimit;
delete options.failurelimit;
}
if (undefined !== options.effectspeed) {
options.effect_speed = options.effectspeed;
delete options.effectspeed;
}
$.extend(settings, options);
}
/* Cache container as jQuery as object. */
$container = (settings.container === undefined ||
settings.container === window) ? $window : $(settings.container);
/* Fire one scroll event per scroll. Not one scroll event per image. */
if (0 === settings.event.indexOf("scroll")) {
$container.bind(settings.event, function() {
return update();
});
}
this.each(function() {
var self = this;
var $self = $(self);
self.loaded = false;
/* If no src attribute given use data:uri. */
if ($self.attr("src") === undefined || $self.attr("src") === false) {
$self.attr("src", settings.placeholder);
}
/* When appear is triggered load original image. */
$self.one("appear", function() {
if (!this.loaded) {
if (settings.appear) {
var elements_left = elements.length;
settings.appear.call(self, elements_left, settings);
}
$("<img />")
.bind("load", function() {
var original = $self.data(settings.data_attribute);
$self.hide();
if ($self.is("img")) {
$self.attr("src", original);
} else {
$self.css("background-image", "url('" + original + "')");
}
$self[settings.effect](settings.effect_speed);
self.loaded = true;
/* Remove image from array so it is not looped next time. */
var temp = $.grep(elements, function(element) {
return !element.loaded;
});
elements = $(temp);
if (settings.load) {
var elements_left = elements.length;
settings.load.call(self, elements_left, settings);
}
})
.attr("src", $self.data(settings.data_attribute));
}
});
/* When wanted event is triggered load original image */
/* by triggering appear. */
if (0 !== settings.event.indexOf("scroll")) {
$self.bind(settings.event, function() {
if (!self.loaded) {
$self.trigger("appear");
}
});
}
});
/* Check if something appears when window is resized. */
$window.bind("resize", function() {
update();
});
/* With IOS5 force loading images when navigating with back button. */
/* Non optimal workaround. */
if ((/iphone|ipod|ipad.*os 5/gi).test(navigator.appVersion)) {
$window.bind("pageshow", function(event) {
if (event.originalEvent && event.originalEvent.persisted) {
elements.each(function() {
$(this).trigger("appear");
});
}
});
}
/* Force initial check if images should appear. */
$(document).ready(function() {
update();
});
return this;
};
/* Convenience methods in jQuery namespace. */
/* Use as $.belowthefold(element, {threshold : 100, container : window}) */
$.belowthefold = function(element, settings) {
var fold;
if (settings.container === undefined || settings.container === window) {
fold = (window.innerHeight ? window.innerHeight : $window.height()) + $window.scrollTop();
} else {
fold = $(settings.container).offset().top + $(settings.container).height();
}
return fold <= $(element).offset().top - settings.threshold;
};
$.rightoffold = function(element, settings) {
var fold;
if (settings.container === undefined || settings.container === window) {
fold = $window.width() + $window.scrollLeft();
} else {
fold = $(settings.container).offset().left + $(settings.container).width();
}
return fold <= $(element).offset().left - settings.threshold;
};
$.abovethetop = function(element, settings) {
var fold;
if (settings.container === undefined || settings.container === window) {
fold = $window.scrollTop();
} else {
fold = $(settings.container).offset().top;
}
return fold >= $(element).offset().top + settings.threshold + $(element).height();
};
$.leftofbegin = function(element, settings) {
var fold;
if (settings.container === undefined || settings.container === window) {
fold = $window.scrollLeft();
} else {
fold = $(settings.container).offset().left;
}
return fold >= $(element).offset().left + settings.threshold + $(element).width();
};
$.inviewport = function(element, settings) {
return !$.rightoffold(element, settings) && !$.leftofbegin(element, settings) &&
!$.belowthefold(element, settings) && !$.abovethetop(element, settings);
};
/* Custom selectors for your convenience. */
/* Use as $("img:below-the-fold").something() or */
/* $("img").filter(":below-the-fold").something() which is faster */
$.extend($.expr[":"], {
"below-the-fold" : function(a) { return $.belowthefold(a, {threshold : 0}); },
"above-the-top" : function(a) { return !$.belowthefold(a, {threshold : 0}); },
"right-of-screen": function(a) { return $.rightoffold(a, {threshold : 0}); },
"left-of-screen" : function(a) { return !$.rightoffold(a, {threshold : 0}); },
"in-viewport" : function(a) { return $.inviewport(a, {threshold : 0}); },
/* Maintain BC for couple of versions. */
"above-the-fold" : function(a) { return !$.belowthefold(a, {threshold : 0}); },
"right-of-fold" : function(a) { return $.rightoffold(a, {threshold : 0}); },
"left-of-fold" : function(a) { return !$.rightoffold(a, {threshold : 0}); }
});
})(jQuery, window, document);

@ -0,0 +1,73 @@
<video autoplay></video>
<img src="" width="640" height="480" id="image">
<canvas style="display:none;" width="640" height="480" ></canvas>
<script>
/**
NodeJS server, Chrome/HTML5 client, WebSockets for transferring
http://francisshanahan.com/index.php/2011/stream-a-webcam-using-javascript-nodejs-android-opera-mobile-web-sockets-and-html5/
*/
function setupWebSocket() {
var ws = new WebSocket("ws://localhost:8080/");
ws.onopen = function() {
console.log("connected");
}
ws.onmessage = function(e) {
document.getElementById("streamed").src = e.data;
}
return ws;
}
var ws = setupWebSocket();
// cross-platform stuff.
window.URL = window.URL || window.webkitURL;
navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia || navigator.msGetUserMedia;
// Note: The file system has been prefixed as of Google Chrome 12:
window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem;
var video = document.querySelector('video');
var canvas = document.querySelector('canvas');
var ctx = canvas.getContext('2d');
var localMediaStream = null;
function snapshot() {
if (localMediaStream) {
ctx.drawImage(video, 0, 0);
// "image/webp" works in Chrome 18. In other browsers, this will fall back to image/png.
var image = canvas.toDataURL('image/png');
document.querySelector('img').src = image;
//tryToSaveIt(image);
ws.send(image);
}
}
function startVideo() {
video.addEventListener('click', snapshot, false);
setInterval(snapshot, 1000 * 60);
// Not showing vendor prefixes or code that works cross-browser.
navigator.getUserMedia({video: true}, function(stream) {
video.src = window.URL.createObjectURL(stream);
localMediaStream = stream;
}, function(e) {
console.log("rejected", e);
});
}
</script>
<h2>hello!</h2>
<a href="#" onclick="startVideo()">klik hier</a> om video te capturen.<br/>
<hr/>
<h2>Streamed image:</h2>
<img src="" width="640" height="480" id="streamed">

@ -0,0 +1,6 @@
var gm = require("gm").subClass({ ImageMagick : true });
gm("image.jpg").quality(60).compress().write("compressed.jpg", function(e) {
if(e) throw e; // Error: spawn ENOENT ? ImageMagick niet op PATH.
console.log("done");
});

@ -0,0 +1,32 @@
var Ftp = require("jsftp"), fs = require("fs");
var user = "FILL ME IN";
var pass = "FILL ME IN";
var root = "/domains/brainbaking.com/public_html";
var ftp = new Ftp({
host: "ftp.brainbaking.com",
port: 21
});
ftp.auth(user, pass, function(err, res) {
var images = { files: [] };
ftp.ls(root + "/cam", function(err, list) {
images.files = list.filter(function(file) {
return file.name.indexOf('.jpg') > 0;
});
console.log("writing " + images);
fs.writeFile("index.json", JSON.stringify(images), function(e) {
if(e) throw e;
ftp.put("index.json", root + "/cam/index.json", function(e) {
if(e) throw e;
console.log("written index JSON file.");
});
});
});
});

Binary file not shown.

After

Width:  |  Height:  |  Size: 332 KiB

@ -0,0 +1 @@
{"files":[{"name":"1381937362359_image.jpg","type":0,"time":1381937340000,"size":"550409","owner":"ftp","group":"ftp","userPermissions":{"read":true,"write":true,"exec":false},"groupPermissions":{"read":true,"write":false,"exec":false},"otherPermissions":{"read":true,"write":false,"exec":false}},{"name":"1381937569375_image.jpg","type":0,"time":1381937520000,"size":"586258","owner":"ftp","group":"ftp","userPermissions":{"read":true,"write":true,"exec":false},"groupPermissions":{"read":true,"write":false,"exec":false},"otherPermissions":{"read":true,"write":false,"exec":false}},{"name":"1381989036320_image.jpg","type":0,"time":1381989000000,"size":"533100","owner":"ftp","group":"ftp","userPermissions":{"read":true,"write":true,"exec":false},"groupPermissions":{"read":true,"write":false,"exec":false},"otherPermissions":{"read":true,"write":false,"exec":false}},{"name":"1381989636744_image.jpg","type":0,"time":1381989600000,"size":"633357","owner":"ftp","group":"ftp","userPermissions":{"read":true,"write":true,"exec":false},"groupPermissions":{"read":true,"write":false,"exec":false},"otherPermissions":{"read":true,"write":false,"exec":false}},{"name":"1381993235977_image.jpg","type":0,"time":1381993200000,"size":"545913","owner":"ftp","group":"ftp","userPermissions":{"read":true,"write":true,"exec":false},"groupPermissions":{"read":true,"write":false,"exec":false},"otherPermissions":{"read":true,"write":false,"exec":false}},{"name":"1381996835944_image.jpg","type":0,"time":1381996800000,"size":"543081","owner":"ftp","group":"ftp","userPermissions":{"read":true,"write":true,"exec":false},"groupPermissions":{"read":true,"write":false,"exec":false},"otherPermissions":{"read":true,"write":false,"exec":false}},{"name":"1382000435066_image.jpg","type":0,"time":1382000400000,"size":"534940","owner":"ftp","group":"ftp","userPermissions":{"read":true,"write":true,"exec":false},"groupPermissions":{"read":true,"write":false,"exec":false},"otherPermissions":{"read":true,"write":false,"exec":false}},{"name":"1382004035158_image.jpg","type":0,"time":1382004000000,"size":"543900","owner":"ftp","group":"ftp","userPermissions":{"read":true,"write":true,"exec":false},"groupPermissions":{"read":true,"write":false,"exec":false},"otherPermissions":{"read":true,"write":false,"exec":false}},{"name":"1382007635067_image.jpg","type":0,"time":1382007600000,"size":"534479","owner":"ftp","group":"ftp","userPermissions":{"read":true,"write":true,"exec":false},"groupPermissions":{"read":true,"write":false,"exec":false},"otherPermissions":{"read":true,"write":false,"exec":false}},{"name":"1382011234993_image.jpg","type":0,"time":1382011200000,"size":"535949","owner":"ftp","group":"ftp","userPermissions":{"read":true,"write":true,"exec":false},"groupPermissions":{"read":true,"write":false,"exec":false},"otherPermissions":{"read":true,"write":false,"exec":false}},{"name":"1382014835242_image.jpg","type":0,"time":1382014800000,"size":"550919","owner":"ftp","group":"ftp","userPermissions":{"read":true,"write":true,"exec":false},"groupPermissions":{"read":true,"write":false,"exec":false},"otherPermissions":{"read":true,"write":false,"exec":false}},{"name":"1382018434860_image.jpg","type":0,"time":1382018400000,"size":"523887","owner":"ftp","group":"ftp","userPermissions":{"read":true,"write":true,"exec":false},"groupPermissions":{"read":true,"write":false,"exec":false},"otherPermissions":{"read":true,"write":false,"exec":false}},{"name":"1382022034866_image.jpg","type":0,"time":1382022000000,"size":"520789","owner":"ftp","group":"ftp","userPermissions":{"read":true,"write":true,"exec":false},"groupPermissions":{"read":true,"write":false,"exec":false},"otherPermissions":{"read":true,"write":false,"exec":false}}]}

1
node_modules/.bin/wscat generated vendored

@ -0,0 +1 @@
../ws/bin/wscat

1
node_modules/jsftp/.idea/.name generated vendored

@ -0,0 +1 @@
jsftp

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectCodeStyleSettingsManager">
<option name="PER_PROJECT_SETTINGS">
<value>
<XML>
<option name="XML_LEGACY_SETTINGS_IMPORTED" value="true" />
</XML>
</value>
</option>
</component>
</project>

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false" />
</project>

@ -0,0 +1,12 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0" is_locked="false">
<option name="myName" value="Project Default" />
<option name="myLocal" value="false" />
<inspection_tool class="JasmineAdapterSupport" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="SpellCheckingInspection" enabled="false" level="TYPO" enabled_by_default="false">
<option name="processCode" value="true" />
<option name="processLiterals" value="true" />
<option name="processComments" value="true" />
</inspection_tool>
</profile>
</component>

@ -0,0 +1,7 @@
<component name="InspectionProjectProfileManager">
<settings>
<option name="PROJECT_PROFILE" value="Project Default" />
<option name="USE_PROJECT_PROFILE" value="true" />
<version value="1.0" />
</settings>
</component>

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="JavaScriptLibraryMappings">
<file url="file://$PROJECT_DIR$" libraries="{Node.js Dependencies for jsftp}" />
<excludedPredefinedLibrary name="HTML" />
<excludedPredefinedLibrary name="HTML5 / EcmaScript 5" />
</component>
</project>

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Node.js v0.8.23 Core Modules" level="application" />
<orderEntry type="library" name="Node.js Dependencies for jsftp" level="project" />
</component>
</module>

@ -0,0 +1,13 @@
<component name="libraryTable">
<library name="Node.js Dependencies for jsftp" type="javaScript">
<properties>
<sourceFilesUrls>
<item url="file://$PROJECT_DIR$/node_modules" />
</sourceFilesUrls>
</properties>
<CLASSES>
<root url="file://$PROJECT_DIR$/node_modules" />
</CLASSES>
<SOURCES />
</library>
</component>

22
node_modules/jsftp/.idea/misc.xml generated vendored

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" />
<component name="SvnConfiguration" maxAnnotateRevisions="500" myUseAcceleration="nothing" myAutoUpdateAfterCommit="false" cleanupOnStartRun="false" SSL_PROTOCOLS="sslv3">
<option name="USER" value="" />
<option name="PASSWORD" value="" />
<option name="mySSHConnectionTimeout" value="30000" />
<option name="mySSHReadTimeout" value="30000" />
<option name="LAST_MERGED_REVISION" />
<option name="MERGE_DRY_RUN" value="false" />
<option name="MERGE_DIFF_USE_ANCESTRY" value="true" />
<option name="UPDATE_LOCK_ON_DEMAND" value="false" />
<option name="IGNORE_SPACES_IN_MERGE" value="false" />
<option name="CHECK_NESTED_FOR_QUICK_MERGE" value="false" />
<option name="IGNORE_SPACES_IN_ANNOTATE" value="true" />
<option name="SHOW_MERGE_SOURCES_IN_ANNOTATE" value="true" />
<option name="FORCE_UPDATE" value="false" />
<option name="IGNORE_EXTERNALS" value="false" />
<myIsUseDefaultProxy>false</myIsUseDefaultProxy>
</component>
</project>

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/jsftp.iml" filepath="$PROJECT_DIR$/.idea/jsftp.iml" />
</modules>
</component>
</project>

@ -0,0 +1,5 @@
<component name="DependencyValidationManager">
<state>
<option name="SKIP_IMPORT_STATEMENTS" value="false" />
</state>
</component>

7
node_modules/jsftp/.idea/vcs.xml generated vendored

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

@ -0,0 +1,588 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ChangeListManager">
<list default="true" id="d32c0353-5fda-4818-910e-4e89fc5cbd7e" name="Default" comment="" />
<ignored path="jsftp.iws" />
<ignored path=".idea/workspace.xml" />
<file path="/Dummy.txt" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1374064945921" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/apps/communications/contacts/test/unit/vcard_parsing_test.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1373460050024" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/shared/test/unit/mocks/mock_navigator_moz_contact.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372423043906" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/apps/communications/contacts/test/unit/mock_mozContacts.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372423043906" ignored="false" />
<file path="/vcard_parsing_test.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372235488488" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/apps/communications/contacts/js/utilities/vcard_parser.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1373460050024" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/apps/system/camera/js/camera.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372235729806" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/apps/browser/js/browser.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372240712933" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/apps/settings/js/simcard_dialog.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372423043906" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/apps/sms/test/unit/compose_test.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372240712933" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/apps/sms/test/unit/utils_test.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372240712933" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/apps/sms/test/unit/thread_ui_test.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372240712933" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/apps/communications/ftu/js/sim_manager.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372423043906" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/apps/communications/ftu/js/sd_manager.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372423282581" ignored="false" />
<file path="/vcard_parser.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372324540585" ignored="false" />
<file path="$PROJECT_DIR$/../chords/package.json" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372337765374" ignored="false" />
<file path="$PROJECT_DIR$/../chords/app/scripts/lib/chord.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372337656353" ignored="false" />
<file path="$PROJECT_DIR$/../chords/app/scripts/lib/chord-simple.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372337656353" ignored="false" />
<file path="$PROJECT_DIR$/../chords/app/index.html" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372338042258" ignored="false" />
<file path="$PROJECT_DIR$/../chords/app/scripts/lib/angular.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372338209588" ignored="false" />
<file path="/jsftp_test.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372416768241" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/apps/sms/test/unit/contacts_test.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372423043906" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/apps/communications/ftu/test/unit/sim_manager_test.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372423043906" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/apps/communications/contacts/js/contacts.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372772200228" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/apps/communications/ftu/index.html" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372772200228" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/apps/settings/js/wifi.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372423043906" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/apps/communications/contacts/test/unit/contacts_list_test.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372423043906" ignored="false" />
<file path="/a.dummy" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372423257725" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/apps/communications/contacts/index.html" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372772200229" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/apps/communications/contacts/js/contacts_settings.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372772200228" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/apps/communications/contacts/style/contacts.css" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372423099652" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/apps/communications/contacts/test/unit/contacts_settings_test.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372452507439" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/apps/communications/contacts/test/unit/contacts_settings_test.js.orig" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372423116450" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/apps/communications/contacts/test/unit/mock_contacts_index.html" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372452507439" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/apps/communications/ftu/css/style.css" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372452507439" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/apps/communications/ftu/js/ui.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372452507439" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/apps/communications/ftu/test/unit/mock_ui_manager.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372423128215" ignored="false" />
<file path="/jsftp.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372452681250" ignored="false" />
<file path="$PROJECT_DIR$/../komposer/resources/beta/scripts/note_render.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372612711824" ignored="false" />
<file path="$USER_HOME$/Dropbox/Jen_Sergi/Wedding!/website/index.html" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1373386578888" ignored="false" />
<file path="$PROJECT_DIR$/../komposer/resources/beta/scripts/note.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372613124837" ignored="false" />
<file path="$PROJECT_DIR$/../komposer/resources/beta/public/BeetAnGeSample.json" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372625387169" ignored="false" />
<file path="$PROJECT_DIR$/../komposer/src/noterious.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372669425649" ignored="false" />
<file path="$PROJECT_DIR$/../komposer/src/note.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372669425649" ignored="false" />
<file path="$PROJECT_DIR$/../komposer/resources/beta/public/bundle.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372669425649" ignored="false" />
<file path="$PROJECT_DIR$/../komposer/resources/beta/scripts/lib/svg.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372669425649" ignored="false" />
<file path="$PROJECT_DIR$/../komposer/public/js/noterious.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372669425649" ignored="false" />
<file path="$PROJECT_DIR$/../komposer/public/js/0259ffc935b.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372669425649" ignored="false" />
<file path="$PROJECT_DIR$/../komposer/src/measure.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372669425649" ignored="false" />
<file path="$PROJECT_DIR$/../komposer/resources/beta/node_modules/musicjson/node_modules/sax/examples/strict.dtd" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372669425649" ignored="false" />
<file path="$PROJECT_DIR$/../komposer/resources/beta/scripts/staff.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372674945758" ignored="false" />
<file path="$PROJECT_DIR$/../komposer/resources/beta/scripts/main.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372669691161" ignored="false" />
<file path="$PROJECT_DIR$/../komposer/resources/beta/scripts/stave.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372672058857" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/apps/communications/ftu/js/memcard_manager.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372673473010" ignored="false" />
<file path="$USER_HOME$/Dropbox/Jen_Sergi/Wedding!/website/cat/index.html" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372942321416" ignored="false" />
<file path="$PROJECT_DIR$/../komposer/resources/beta/package.json" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372674737893" ignored="false" />
<file path="$PROJECT_DIR$/../music/scripts/staff.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372681432097" ignored="false" />
<file path="/staff.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372681252933" ignored="false" />
<file path="$PROJECT_DIR$/../music/scripts/main.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1373460998794" ignored="false" />
<file path="$PROJECT_DIR$/../music/public/bundle.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1373461533627" ignored="false" />
<file path="$PROJECT_DIR$/../music/scripts/score.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1373460980383" ignored="false" />
<file path="$PROJECT_DIR$/../music/scripts/stave.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1373463732260" ignored="false" />
<file path="$PROJECT_DIR$/../music/public/index.html" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1373460544087" ignored="false" />
<file path="$PROJECT_DIR$/../music/public/.bundle.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372690238813" ignored="false" />
<file path="/score.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372693216722" ignored="false" />
<file path="$PROJECT_DIR$/../music/package.json" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1373459098564" ignored="false" />
<file path="$PROJECT_DIR$/../sergi.github.com/css/screen.css" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372698454754" ignored="false" />
<file path="$PROJECT_DIR$/../sergi.github.com/_layouts/post.html" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372698916802" ignored="false" />
<file path="$PROJECT_DIR$/../sergi.github.com/_site/blog/atom.xml" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372698949444" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/apps/keyboard/js/keyboard.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372942309327" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/apps/communications/contacts/js/contacts_details.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372772200228" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/apps/communications/contacts/js/contacts_form.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372772200228" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/shared/resources/apn/apns_conf_local.xml" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372758302283" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/shared/resources/apn/operator_variant.xml" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372758302283" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/apps/communications/contacts/js/search.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372772200228" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/apps/communications/contacts/js/contacts_shortcuts.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372772200228" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/test_apps/uitest/tests/keyboard_api.html" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372770223364" ignored="false" />
<file path="/keyboard_api.html" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372768556549" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/test_apps/uitest/index.html" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372772200229" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/test_apps/uitest/tests/keyboard_api.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372768791173" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/profile/user.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372769834060" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/test_apps/uitest/manifest.webapp" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372772200228" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/test_apps/uitest/js/keyboard_api.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372769814931" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/test_apps/uitest/js/alert.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372772200228" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/test_apps/uitest/tests/audiotag.html" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372772200228" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/test_apps/uitest/js/contextmenu.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372772200228" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/apps/communications/ftu/js/language.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372772200228" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/test_apps/uitest/js/notification.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372772200228" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/test_apps/uitest/js/audiotag.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372772200228" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/test_apps/uitest/js/browseractivities.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372772200228" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/test_apps/uitest/js/empty.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372772200228" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/test_apps/uitest/js/identity-get.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372772200228" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/apps/communications/ftu/js/wifi.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372772200228" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/test_apps/uitest/tests/inputmode.html" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372772200228" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/apps/keyboard/js/layout.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372772200229" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/test_apps/uitest/tests/keyboard.html" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372772200229" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/test_apps/uitest/js/fullscreen.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372772200229" ignored="false" />
<file path="$PROJECT_DIR$/../gaia-comoyo/apps/keyboard/js/render.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372772200229" ignored="false" />
<file path="$PROJECT_DIR$/../music/scripts/lib/svg.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1373281203174" ignored="false" />
<file path="$PROJECT_DIR$/../music/scripts/music_json_parser.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372850628118" ignored="false" />
<file path="$PROJECT_DIR$/../music/scripts/utils.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1372850628118" ignored="false" />
<file path="$PROJECT_DIR$/../music/scripts/note.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1373461015407" ignored="false" />
<file path="$PROJECT_DIR$/../music/scripts/entity.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1373461015407" ignored="false" />
<file path="$PROJECT_DIR$/../music/scripts/templates.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1373463310787" ignored="false" />
<file path="/stave.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1373276446450" ignored="false" />
<file path="$PROJECT_DIR$/../music/scripts/test.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1373281169929" ignored="false" />
<file path="/templates.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1373282058849" ignored="false" />
<file path="/main.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1373282967791" ignored="false" />
<file path="$PROJECT_DIR$/../music/index.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1373366191121" ignored="false" />
<file path="$PROJECT_DIR$/../music/public/svg.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1373371586935" ignored="false" />
<file path="$PROJECT_DIR$/../music/public/lib/lib_bundle.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1373366941371" ignored="false" />
<file path="$PROJECT_DIR$/../music/public/lib/musicjson" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1373367620732" ignored="false" />
<file path="$PROJECT_DIR$/../music/build.sh" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1373461533627" ignored="false" />
<file path="$PROJECT_DIR$/../music/public/lib/musicjson.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1373370145263" ignored="false" />
<file path="$PROJECT_DIR$/../music/scripts/score_.ts" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1373458708109" ignored="false" />
<file path="/score_.ts" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1373458621915" ignored="false" />
<file path="$PROJECT_DIR$/../music/scripts/score_.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1373459344903" ignored="false" />
<file path="$PROJECT_DIR$/../music/scripts/score_.js.map" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1373459344903" ignored="false" />
<file path="$PROJECT_DIR$/../music/scripts/entity_.ts" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1373451511732" ignored="false" />
<file path="$PROJECT_DIR$/../music/scripts/entity_.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1373453450283" ignored="false" />
<file path="$PROJECT_DIR$/../music/scripts/stave_.ts" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1373458744255" ignored="false" />
<file path="$PROJECT_DIR$/../music/scripts/stave_.js.map" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1373459344903" ignored="false" />
<file path="$PROJECT_DIR$/../music/scripts/stave_.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1373458684799" ignored="false" />
<file path="$PROJECT_DIR$/../music/scripts/main_.ts" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1373459179347" ignored="false" />
<file path="$PROJECT_DIR$/../music/scripts/main_.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1373459344903" ignored="false" />
<file path="$PROJECT_DIR$/../music/scripts/svg.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1373460648811" ignored="false" />
<file path="$PROJECT_DIR$/../music/scripts/templates.ts" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1373463306105" ignored="false" />
<file path="$PROJECT_DIR$/../music/scripts/templates.js.map" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1373463310787" ignored="false" />
<file path="$PROJECT_DIR$/../music/scripts/entity_.js.map" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1373459344903" ignored="false" />
<file path="$PROJECT_DIR$/../music/scripts/main.ts" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1373460998794" ignored="false" />
<file path="$PROJECT_DIR$/../music/scripts/score.ts" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1373463460981" ignored="false" />
<file path="$PROJECT_DIR$/../music/scripts/stave.ts" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1373463727892" ignored="false" />
<file path="$PROJECT_DIR$/../music/scripts/entity.ts" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1373461015407" ignored="false" />
<file path="$PROJECT_DIR$/../music/test/score.test.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1373460980383" ignored="false" />
<file path="$PROJECT_DIR$/../music/scripts/entity.js.map" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1373461018538" ignored="false" />
<file path="$PROJECT_DIR$/../music/scripts/stave.js.map" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1373463732260" ignored="false" />
<file path="$PROJECT_DIR$/../music/scripts/score.js.map" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1373462552872" ignored="false" />
<file path="/stave.ts" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1373463718951" ignored="false" />
<file path="$PROJECT_DIR$/../birch/main.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1373978563706" ignored="false" />
<file path="$PROJECT_DIR$/../birch/js/user_list.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1373978497302" ignored="false" />
<file path="$PROJECT_DIR$/../birch/js/filter_basic.js" changelist="d32c0353-5fda-4818-910e-4e89fc5cbd7e" time="1374064948177" ignored="false" />
<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="DaemonCodeAnalyzer">
<disable_hints />
</component>
<component name="ExecutionTargetManager" SELECTED_TARGET="default_target" />
<component name="FavoritesManager">
<favorites_list name="jsftp" />
</component>
<component name="FileEditorManager">
<leaf>
<file leaf-file-name="jsftp.js" pinned="false" current="true" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/lib/jsftp.js">
<provider selected="true" editor-type-id="text-editor">
<state line="98" column="22" selection-start="2978" selection-end="2978" vertical-scroll-proportion="2.2095492">
<folding>
<element signature="e#5992#6447#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="response.js" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/lib/response.js">
<provider selected="true" editor-type-id="text-editor">
<state line="23" column="2" selection-start="567" selection-end="567" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name=".travis.yml" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/.travis.yml">
<provider selected="true" editor-type-id="text-editor">
<state line="8" column="0" selection-start="106" selection-end="106" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="README.md" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/README.md">
<provider selected="true" editor-type-id="text-editor">
<state line="167" column="0" selection-start="5362" selection-end="5362" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="test.js" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/test.js">
<provider selected="true" editor-type-id="text-editor">
<state line="15" column="0" selection-start="490" selection-end="490" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="utils.js" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/lib/utils.js">
<provider selected="true" editor-type-id="text-editor">
<state line="65" column="33" selection-start="1999" selection-end="1999" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="package.json" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/package.json">
<provider selected="true" editor-type-id="text-editor">
<state line="2" column="16" selection-start="37" selection-end="37" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
</leaf>
</component>
<component name="FindManager">
<FindUsagesManager>
<setting name="OPEN_NEW_TAB" value="false" />
</FindUsagesManager>
</component>
<component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
</component>
<component name="GitLogSettings">
<option name="myDateState">
<MyDateState />
</option>
</component>
<component name="IdeDocumentHistory">
<option name="changedFiles">
<list>
<option value="$PROJECT_DIR$/test/parser_test.js" />
<option value="$PROJECT_DIR$/.gitignore" />
<option value="$PROJECT_DIR$/lib/ftpParser.js" />
<option value="$PROJECT_DIR$/lib/handle_response.js" />
<option value="$PROJECT_DIR$/test.js" />
<option value="$PROJECT_DIR$/lib/utils.js" />
<option value="$PROJECT_DIR$/.travis.yml" />
<option value="$PROJECT_DIR$/test/basic_ftpd.py" />
<option value="$PROJECT_DIR$/.npmignore" />
<option value="$PROJECT_DIR$/lib/response.js" />
<option value="$PROJECT_DIR$/Makefile" />
<option value="$PROJECT_DIR$/LICENSE" />
<option value="$PROJECT_DIR$/README.md" />
<option value="$PROJECT_DIR$/package.json" />
<option value="$PROJECT_DIR$/test/jsftp_test.js" />
<option value="$PROJECT_DIR$/lib/jsftp.js" />
</list>
</option>
</component>
<component name="ProjectFrameBounds">
<option name="y" value="22" />
<option name="width" value="1440" />
<option name="height" value="874" />
</component>
<component name="ProjectInspectionProfilesVisibleTreeState">
<entry key="Project Default">
<profile-state>
<expanded-state>
<State>
<id />
</State>
<State>
<id>Bitwise operation issuesJavaScript</id>
</State>
<State>
<id>Control flow issuesJavaScript</id>
</State>
<State>
<id>GeneralJavaScript</id>
</State>
<State>
<id>JavaScript</id>
</State>
<State>
<id>Potentially confusing code constructsJavaScript</id>
</State>
</expanded-state>
</profile-state>
</entry>
</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="1" id="Add" />
<ConfirmationsSetting value="0" id="Remove" />
</component>
<component name="ProjectReloadState">
<option name="STATE" value="0" />
</component>
<component name="ProjectView">
<navigator currentView="ProjectPane" proportions="" version="1" splitterProportion="0.5">
<flattenPackages />
<showMembers />
<showModules />
<showLibraryContents ProjectPane="true" />
<hideEmptyPackages />
<abbreviatePackageNames />
<autoscrollToSource />
<autoscrollFromSource />
<sortByType />
</navigator>
<panes>
<pane id="Scope" />
<pane id="ProjectPane">
<subPane>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="jsftp" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="jsftp" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="jsftp" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="jsftp" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="jsftp" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="test" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="jsftp" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="jsftp" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="lib" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
</subPane>
</pane>
</panes>
</component>
<component name="PropertiesComponent">
<property name="options.splitter.main.proportions" value="0.3" />
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="options.lastSelected" value="preferences.sourceCode.HTML" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/../birch" />
<property name="FullScreen" value="false" />
<property name="options.searchVisible" value="true" />
<property name="options.splitter.details.proportions" value="0.2" />
<property name="GoToClass.includeJavaFiles" value="false" />
</component>
<component name="RunManager">
<configuration default="true" type="NodeJSConfigurationType" factoryName="Node.js" working-dir="$PROJECT_DIR$">
<method />
</configuration>
<list size="0" />
</component>
<component name="ShelveChangesManager" show_recycled="false" />
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
<changelist id="d32c0353-5fda-4818-910e-4e89fc5cbd7e" name="Default" comment="" />
<created>1366213834349</created>
<updated>1366213834349</updated>
</task>
<servers />
</component>
<component name="ToolWindowManager">
<frame x="0" y="22" width="1440" height="874" extended-state="6" />
<editor active="false" />
<layout>
<window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.24982357" sideWeight="0.6700767" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Project" active="true" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.10726888" sideWeight="0.6700767" order="0" side_tool="false" content_ui="combo" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32956952" sideWeight="0.5" order="2" 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" weight="0.33" 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" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" 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" weight="0.33" sideWeight="0.5" order="0" 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" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32992327" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="SLIDING" type="SLIDING" visible="false" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
<window_info id="JsTestDriver Server" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
</layout>
</component>
<component name="VcsContentAnnotationSettings">
<option name="myLimit" value="2678400000" />
</component>
<component name="VcsManagerConfiguration">
<option name="OFFER_MOVE_TO_ANOTHER_CHANGELIST_ON_PARTIAL_COMMIT" value="true" />
<option name="CHECK_CODE_SMELLS_BEFORE_PROJECT_COMMIT" value="true" />
<option name="CHECK_NEW_TODO" value="true" />
<option name="myTodoPanelSettings">
<value>
<are-packages-shown value="false" />
<are-modules-shown value="false" />
<flatten-packages value="false" />
<is-autoscroll-to-source value="false" />
</value>
</option>
<option name="PERFORM_UPDATE_IN_BACKGROUND" value="true" />
<option name="PERFORM_COMMIT_IN_BACKGROUND" value="true" />
<option name="PERFORM_EDIT_IN_BACKGROUND" value="true" />
<option name="PERFORM_CHECKOUT_IN_BACKGROUND" value="true" />
<option name="PERFORM_ADD_REMOVE_IN_BACKGROUND" value="true" />
<option name="PERFORM_ROLLBACK_IN_BACKGROUND" value="false" />
<option name="CHECK_LOCALLY_CHANGED_CONFLICTS_IN_BACKGROUND" value="false" />
<option name="CHANGED_ON_SERVER_INTERVAL" value="60" />
<option name="SHOW_ONLY_CHANGED_IN_SELECTION_DIFF" value="true" />
<option name="CHECK_COMMIT_MESSAGE_SPELLING" value="true" />
<option name="DEFAULT_PATCH_EXTENSION" value="patch" />
<option name="SHORT_DIFF_HORISONTALLY" value="true" />
<option name="SHORT_DIFF_EXTRA_LINES" value="2" />
<option name="SOFT_WRAPS_IN_SHORT_DIFF" value="true" />
<option name="INCLUDE_TEXT_INTO_PATCH" value="false" />
<option name="INCLUDE_TEXT_INTO_SHELF" value="false" />
<option name="SHOW_FILE_HISTORY_DETAILS" value="true" />
<option name="SHOW_VCS_ERROR_NOTIFICATIONS" value="true" />
<option name="SHOW_DIRTY_RECURSIVELY" value="false" />
<option name="LIMIT_HISTORY" value="true" />
<option name="MAXIMUM_HISTORY_ROWS" value="1000" />
<option name="UPDATE_FILTER_SCOPE_NAME" />
<option name="USE_COMMIT_MESSAGE_MARGIN" value="false" />
<option name="COMMIT_MESSAGE_MARGIN_SIZE" value="72" />
<option name="WRAP_WHEN_TYPING_REACHES_RIGHT_MARGIN" value="false" />
<option name="FORCE_NON_EMPTY_COMMENT" value="false" />
<option name="CLEAR_INITIAL_COMMIT_MESSAGE" value="false" />
<option name="LAST_COMMIT_MESSAGE" />
<option name="MAKE_NEW_CHANGELIST_ACTIVE" value="false" />
<option name="OPTIMIZE_IMPORTS_BEFORE_PROJECT_COMMIT" value="false" />
<option name="CHECK_FILES_UP_TO_DATE_BEFORE_COMMIT" value="false" />
<option name="REFORMAT_BEFORE_PROJECT_COMMIT" value="false" />
<option name="REFORMAT_BEFORE_FILE_COMMIT" value="false" />
<option name="FILE_HISTORY_DIALOG_COMMENTS_SPLITTER_PROPORTION" value="0.8" />
<option name="FILE_HISTORY_DIALOG_SPLITTER_PROPORTION" value="0.5" />
<option name="ACTIVE_VCS_NAME" />
<option name="UPDATE_GROUP_BY_PACKAGES" value="false" />
<option name="UPDATE_GROUP_BY_CHANGELIST" value="false" />
<option name="UPDATE_FILTER_BY_SCOPE" value="false" />
<option name="SHOW_FILE_HISTORY_AS_TREE" value="false" />
<option name="FILE_HISTORY_SPLITTER_PROPORTION" value="0.6" />
</component>
<component name="XDebuggerManager">
<breakpoint-manager>
<option name="time" value="2" />
</breakpoint-manager>
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/node_modules/mocha/node_modules/jade/lib/parser.js">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/.gitignore">
<provider selected="true" editor-type-id="text-editor">
<state line="1" column="4" selection-start="13" selection-end="13" vertical-scroll-proportion="0.0" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/.npmignore">
<provider selected="true" editor-type-id="text-editor">
<state line="4" column="11" selection-start="47" selection-end="47" vertical-scroll-proportion="0.093023255" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/node_modules/mocha/lib/browser/events.js">
<provider selected="true" editor-type-id="text-editor">
<state line="5" column="0" selection-start="29" selection-end="29" vertical-scroll-proportion="0.067639254" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Makefile">
<provider selected="true" editor-type-id="text-editor">
<state line="20" column="0" selection-start="607" selection-end="607" vertical-scroll-proportion="0.0" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/node_modules/event-stream/node_modules/split/test/split.asynct.js">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/LICENSE">
<provider selected="true" editor-type-id="text-editor">
<state line="2" column="16" selection-start="33" selection-end="33" vertical-scroll-proportion="0.0" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/test/keycert.pem">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/test/jsftp_test.js">
<provider selected="true" editor-type-id="text-editor">
<state line="108" column="11" selection-start="2561" selection-end="2561" vertical-scroll-proportion="0.022941971">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/lib/jsftp.js">
<provider selected="true" editor-type-id="text-editor">
<state line="98" column="22" selection-start="2978" selection-end="2978" vertical-scroll-proportion="2.2095492">
<folding>
<element signature="e#5992#6447#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/lib/response.js">
<provider selected="true" editor-type-id="text-editor">
<state line="23" column="2" selection-start="567" selection-end="567" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/.travis.yml">
<provider selected="true" editor-type-id="text-editor">
<state line="8" column="0" selection-start="106" selection-end="106" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/README.md">
<provider selected="true" editor-type-id="text-editor">
<state line="167" column="0" selection-start="5362" selection-end="5362" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/test.js">
<provider selected="true" editor-type-id="text-editor">
<state line="15" column="0" selection-start="490" selection-end="490" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/lib/utils.js">
<provider selected="true" editor-type-id="text-editor">
<state line="65" column="33" selection-start="1999" selection-end="1999" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/package.json">
<provider selected="true" editor-type-id="text-editor">
<state line="2" column="16" selection-start="37" selection-end="37" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</component>
</project>

5
node_modules/jsftp/.npmignore generated vendored

@ -0,0 +1,5 @@
coverage.html
*.un~
lib-cov
reports
.c9revisions

9
node_modules/jsftp/.travis.yml generated vendored

@ -0,0 +1,9 @@
language: node_js
node_js:
- "0.10"
- "0.8"
- "0.6"
before_script:
- "npm install --dev"

22
node_modules/jsftp/LICENSE generated vendored

@ -0,0 +1,22 @@
The MIT License
Copyright(c) 2011 Ajax.org B.V. <info AT ajax DOT org>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

31
node_modules/jsftp/Makefile generated vendored

@ -0,0 +1,31 @@
# use the tools as dev dependencies rather than installing them globaly
# it lets you handle specific versions of the tooling for each of your projects
MOCHA=node_modules/.bin/mocha
ISTANBUL=node_modules/.bin/istanbul
JSHINT=node_modules/.bin/jshint
# test files must end with ".test.js"
TESTS=$(shell find test/ -name "*.test.js")
clean:
rm -rf reports
test:
$(MOCHA) -R spec $(TESTS)
_MOCHA="node_modules/.bin/_mocha"
coverage:
@# check if reports folder exists, if not create it
@test -d reports || mkdir reports
$(ISTANBUL) cover --report lcovonly --dir ./reports $(_MOCHA) -- -R spec $(TESTS)
genhtml reports/lcov.info --output-directory reports/
jshint:
$(JSHINT) lib test --show-non-errors
checkstyle:
@# check if reports folder exists, if not create it
@test -d reports || mkdir reports
$(JSHINT) lib test --reporter=checkstyle > reports/checkstyle.xml
.PHONY: clean test coverage jshint checkstyle

235
node_modules/jsftp/README.md generated vendored

@ -0,0 +1,235 @@
jsftp <a href="http://flattr.com/thing/1452098/" target="_blank"><img src="http://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" border="0" /></a>
=====
A client FTP library for NodeJS that focuses on correctness, clarity
and conciseness. It doesn't get in the way and plays nice with streaming APIs.
[![NPM](https://nodei.co/npm/jsftp.png)](https://nodei.co/npm/jsftp/)
**Warning: The latest version (1.0.0) of jsftp breaks API compatibility with previous
versions, it is NOT a drop-in replacement. Please be careful when upgrading. The
API changes are not drastic at all and it is all documented below. If you do not
want to upgrade yet you should stay with version 0.6.0, the last one before the
upgrade. The API docs below are updated for 1.0.**
Starting it up
--------------
```javascript
var JSFtp = require("jsftp");
var Ftp = new JSFtp({
host: "myserver.com",
port: 3331, // defaults to 21
user: "user", // defaults to "anonymous"
pass: "1234" // defaults to "@anonymous"
};
```
jsftp gives you access to all the raw commands of the FTP protocol in form of
methods in the `Ftp` object. It also provides several convenience methods for
actions that require complex chains of commands (e.g. uploading and retrieving
files, passive operations), as shown below.
When raw commands succeed they always pass the response of the server to the
callback, in the form of an object that contains two properties: `code`, which
is the response code of the FTP operation, and `text`, which is the complete
text of the response.
Raw (or native) commands are accessible in the form `Ftp.raw["command"](params, callback)`
Thus, a command like `QUIT` will be called like this:
```javascript
Ftp.raw.quit(function(err, data) {
if (err) return console.error(err);
console.log("Bye!");
});
```
and a command like `MKD` (make directory), which accepts parameters, looks like this:
```javascript
Ftp.raw.mkd("/new_dir", function(err, data) {
if (err) return console.error(err);
console.log(data.text); // Show the FTP response text to the user
console.log(data.code); // Show the FTP response code to the user
});
```
API and examples
----------------
#### new Ftp(options)
- `options` is an object with the following properties:
```javascript
{
host: 'localhost', // Host name for the current FTP server.
port: 3333, // Port number for the current FTP server (defaults to 21).
user: 'user', // Username
pass: 'pass', // Password
}
```
Creates a new Ftp instance.
#### Ftp.host
Host name for the current FTP server.
#### Ftp.port
Port number for the current FTP server (defaults to 21).
#### Ftp.socket
NodeJS socket for the current FTP server.
#### Ftp.features
Array of feature names for the current FTP server. It is
generated when the user authenticates with the `auth` method.
#### Ftp.system
Contains the system identification string for the remote FTP server.
### Methods
#### Ftp.raw.FTP_COMMAND([params], callback)
All the standard FTP commands are available under the `raw` namespace. These
commands might accept parameters or not, but they always accept a callback
with the signature `err, data`, in which `err` is the error response coming
from the server (usually a 4xx or 5xx error code) and the data is an object
that contains two properties: `code` and `text`. `code` is an integer indicating