From c5fec9e780aa89e7076b5ee35234cb5de3c362ce Mon Sep 17 00:00:00 2001 From: Kris Zyp Date: Mon, 2 Aug 2010 15:16:17 -0600 Subject: [PATCH] Remove unnecessary files --- lib/store/README.md | 5 -- lib/store/binary-files.js | 117 -------------------------------------- lib/store/worker-grid.js | 54 ------------------ lib/store/worker-store.js | 49 ---------------- 4 files changed, 225 deletions(-) delete mode 100644 lib/store/README.md delete mode 100644 lib/store/binary-files.js delete mode 100644 lib/store/worker-grid.js delete mode 100644 lib/store/worker-store.js diff --git a/lib/store/README.md b/lib/store/README.md deleted file mode 100644 index 345b6ec..0000000 --- a/lib/store/README.md +++ /dev/null @@ -1,5 +0,0 @@ -This folder contains various data stores and store wrappers that implement -the [WebSimpleDB](http://www.w3.org/TR/WebSimpleDB/) API. These data -stores form the underlying storage for the Pintura framework. Data stores provide -facilities for accessing, querying, and storing data. Data store wrappers can augment -other stores with extra functionality. \ No newline at end of file diff --git a/lib/store/binary-files.js b/lib/store/binary-files.js deleted file mode 100644 index eaa885b..0000000 --- a/lib/store/binary-files.js +++ /dev/null @@ -1,117 +0,0 @@ -/** - * Storage of static binary files - */ -var fs = require("promised-io/fs"), - MIME_TYPES = require("jack/mime").MIME_TYPES, - when = require("promised-io/promise").when; -exports.depth = 1; // depth of file directory paths to use -exports.BinaryFiles = function(path){ - return { - get: function(id){ - if(id.charAt(0) == '.'){ - throw new Error("Invalid ID"); - } - var parts = id.split("~", 2); - var filePath = path + '/' + parts[0]; - var object = new BinaryFile(); - //TODO: maybe put this on the prototype so it is not enumerated - Object.defineProperty(object,"forEach", { - value: function(callback){ - // TODO: read the file in blocks for better scalability - var resultPromise = fs.read(filePath); - callback(resultPromise); - //resultPromise.then(callback); - return resultPromise; - }, - enumerable: false - }); - var stat = fs.statSync(filePath); - if(stat.isDirectory()){ - return exports.BinaryFiles(filePath); - } - var filename = parts[0].split('/'); - filename = filename[filename.length - 1]; - var extension = filename.match(/\.[^\.]+$/); - object["content-type"] = MIME_TYPES[extension]; - object["content-disposition"] = "inline"; - object.alternates = object; - var extraInfo = parts[1] && id.substring(id.indexOf("~") + 1).split("_"); - if(extraInfo){ - if(extraInfo[0]){ - object["content-type"] = extraInfo[0].replace(/~/,'/'); - } - if(extraInfo[1]){ - object["content-disposition"] = "attachment"; - } - } - object["content-disposition"] += "; filename=" + filename; - object["content-length"] = stat.size; - return object; - }, - put: function(object, directives){ - var id = directives.id || generateId(object); - var parts = id.split("~", 2); - var filePath = path + '/' + parts[0]; - fs.makeTree(filePath); - return fs.stat(filePath).then( - function(){ - if(directives.overwrite === false){ - throw new Error("Can not overwrite existing file"); - } - return writeFile(); - }, - function(){ - if(directives.overwrite === true){ - throw new Error("No existing file to overwrite"); - } - return writeFile(); - }); - function writeFile(){ - return fs.open(filePath, "w", 0666).then(function(fd){ - return when(object.forEach(function(buffer){ - fs.write(fd, buffer, 0, buffer.length, null); - }), function(){ - fs.close(fd); - return id; - }); - }); - } - } - }; -}; -var REVERSE_MIME_TYPES = {}; -for(var i in MIME_TYPES){ - REVERSE_MIME_TYPES[MIME_TYPES[i]] = i; -} -function generateId(object){ - var id = []; - for(var i = 0; i < exports.depth; i++){ - id.push(Math.random().toString().substring(2,6)); - } - var filename = object.filename || Math.random().toString().substring(2); - id.push(filename); - id = id.join("/"); - var extension = filename.match(/\.[^\.]+$/); - if(object["content-type"] && object["content-type"] !== MIME_TYPES[extension && extension[0]]){ - if(object.filename || !REVERSE_MIME_TYPES[object["content-type"]]){ - id += "~" + object["content-type"].replace(/[^\w-\+]/,'~'); - if(object["content-disposition"] == "attachment"){ - id += "_attach"; - } - }else{ - id += REVERSE_MIME_TYPES[object["content-type"]]; - if(object["content-disposition"] == "attachment"){ - id += "~_attach"; - } - } - } - return id; -} -function BinaryFile(){ -} -BinaryFile.prototype.getMetadata = function(){ - // TODO: copy all properties except "serialize" and "getMetadata" - return this; -}; - - diff --git a/lib/store/worker-grid.js b/lib/store/worker-grid.js deleted file mode 100644 index 6b3bdc7..0000000 --- a/lib/store/worker-grid.js +++ /dev/null @@ -1,54 +0,0 @@ -/** -* This store funnels requests from multiple workers to a single store instance in a shared worker. This is -* important for stores that must be single threaded and/or share memory. -*/ -var Remote = require("store/remote").Remote, - when = require("promised-io/promise").when, - workerClient = require("jsgi-worker").client, - Replicated = require("store/replicated").Replicated, - replicas = []; - -try{ - // TODO: Check to see if we really need to create a new shared worker if the request is not multi-process - // try to get a shared worker if it is available - var SharedWorker = require("worker").SharedWorker; - // TODO: Use an existing worker like the HTTP server or something if we can to avoid creating extra workers - var trackWorkers = new SharedWorker("util/track-workers", "track-workers"); - trackWorkers.port.postMessage({ - method:"subscribe", - name: name - }); - trackWorkers.port.onmessage = function(e){ - replicas.push(Remote(workerClient(e.port))); - }; -} -catch(e){ - // not all platforms have shared workers, proceed anyway -} -exports.WorkerGrid = function(store, id){ - if(!SharedWorker){ - return store; - } - var restStoreApp = require("../jsgi/error").ErrorHandler( - require("../jsgi/transactional").Transactional(require("stores"), - require("../jsgi/rest-store").RestStore({}))); - global.onconnect = function (e) { - e.port.onmessage = function(event){ - var request = event.data; - request.store = store; - request.jsgi = {version: [0,3], - errors: system.stderr, - multithread: false, - multiprocess: true, - async: true, - runOnce: false - }; - when(restStoreApp(request), - function(){ - e.port.postMessage - }, e.port.postMessage); - }; - }; - return Replicated(store, replicas); -}; - diff --git a/lib/store/worker-store.js b/lib/store/worker-store.js deleted file mode 100644 index 1b39369..0000000 --- a/lib/store/worker-store.js +++ /dev/null @@ -1,49 +0,0 @@ -/** -* This store funnels requests from multiple workers to a single store instance in a shared worker. This is -* important for stores that must be single threaded and/or share memory. -*/ -var Remote = require("perstore/store/remote").Remote, - when = require("promised-io/promise").when, - workerClient = require("commonjs-utils/jsgi-worker").client; -try{ - // TODO: Check to see if we really need to create a new shared worker if the request is not multi-process - // try to get a shared worker if it is available - var SharedWorker = require("worker").SharedWorker; -} -catch(e){ - // not all platforms have shared workers, proceed anyway -} -exports.WorkerStore = function(store, id){ - if(!SharedWorker){ - return; - } - var workerName = "store " + id; - if(require("worker").name == workerName){ - var restStoreApp = require("../jsgi/error").ErrorHandler( - require("../jsgi/transactional").Transactional(require("stores"), - require("../jsgi/rest-store").RestStore({}))); - global.onconnect = function (e) { - e.port.onmessage = function(event){ - var request = event.data; - request.store = store; - request.jsgi = {version: [0,3], - errors: system.stderr, - multithread: false, - multiprocess: true, - async: true, - runOnce: false - }; - when(restStoreApp(request), - function(){ - e.port.postMessage - }, e.port.postMessage); - }; - }; - return {}; - } - else{ - var sharedWorker = new SharedWorker("util/start-app", workerName); - return Remote(workerClient(sharedWorker)); - } -}; -