1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- /**
- * @method FS.Utility.binaryToBuffer
- * @public
- * @param {Uint8Array} data
- * @returns {Buffer}
- *
- * Converts a Uint8Array instance to a Node Buffer instance
- */
- FS.Utility.binaryToBuffer = function(data) {
- var len = data.length;
- var buffer = new Buffer(len);
- for (var i = 0; i < len; i++) {
- buffer[i] = data[i];
- }
- return buffer;
- };
- /**
- * @method FS.Utility.bufferToBinary
- * @public
- * @param {Buffer} data
- * @returns {Uint8Array}
- *
- * Converts a Node Buffer instance to a Uint8Array instance
- */
- FS.Utility.bufferToBinary = function(data) {
- var len = data.length;
- var binary = EJSON.newBinary(len);
- for (var i = 0; i < len; i++) {
- binary[i] = data[i];
- }
- return binary;
- };
- /**
- * @method FS.Utility.safeCallback
- * @public
- * @param {Function} callback
- * @returns {Function}
- *
- * Makes a callback safe for Meteor code
- */
- FS.Utility.safeCallback = function (callback) {
- return Meteor.bindEnvironment(callback, function(err) { throw err; });
- };
- /**
- * @method FS.Utility.safeStream
- * @public
- * @param {Stream} nodestream
- * @returns {Stream}
- *
- * Adds `safeOn` and `safeOnce` methods to a NodeJS Stream
- * object. These are the same as `on` and `once`, except
- * that the callback is wrapped for use in Meteor.
- */
- FS.Utility.safeStream = function(nodestream) {
- if (!nodestream || typeof nodestream.on !== 'function')
- throw new Error('FS.Utility.safeStream requires a NodeJS Stream');
- // Create Meteor safe events
- nodestream.safeOn = function(name, callback) {
- return nodestream.on(name, FS.Utility.safeCallback(callback));
- };
- // Create Meteor safe events
- nodestream.safeOnce = function(name, callback) {
- return nodestream.once(name, FS.Utility.safeCallback(callback));
- };
- // Return the modified stream - modified anyway
- return nodestream;
- };
- /**
- * @method FS.Utility.eachFileFromPath
- * @public
- * @param {String} p - Server path
- * @param {Function} f - Function to run for each file found in the path.
- * @returns {undefined}
- *
- * Utility for iteration over files from path on server
- */
- FS.Utility.eachFileFromPath = function(p, f) {
- var fs = Npm.require('fs');
- var path = Npm.require('path');
- var files = fs.readdirSync(p);
- files.map(function (file) {
- return path.join(p, file);
- }).filter(function (filePath) {
- return fs.statSync(filePath).isFile() && path.basename(filePath)[0] !== '.';
- }).forEach(function (filePath) {
- f(filePath);
- });
- };
|