Skip to content

Commit

Permalink
Move lib to top level
Browse files Browse the repository at this point in the history
  • Loading branch information
kriszyp committed Aug 16, 2011
1 parent 83a4059 commit cd43a69
Show file tree
Hide file tree
Showing 58 changed files with 643 additions and 182 deletions.
85 changes: 85 additions & 0 deletions compatibility/require-uri.js
@@ -0,0 +1,85 @@
/*
* The require-uri module provides a backwards compatible technique for
* requiring modules with URLs. This is designed to be used at the top of a module:
* require = require("require-uri").getRequire(require);
*/


exports.getRequire = function(require){
return function(id){
if(module.supportsUri || id.charAt(0) === '.'){
// if we support URLs, use the real require
return require(id);
}
id = resolveUri("", id, mappings);
if(id.indexOf(":") === -1){
return require(id);
}
// otherwise pray that required module is in the path
try{
return require(id.split("/lib/")[1]);
}
catch(e){
e.message += " Was trying to load module from " + id +
" and failed, check to ensure it is installed locally or use the web-modules asynchronous loader";
throw e;
}
};
};


function resolveUri(currentId, uri, mappings){
if(uri.charAt(0) === '.'){
currentId = currentId.substring(0, currentId.lastIndexOf('/') + 1);
return [(currentId + uri).replace(/\/\.\.\/[^\/]*/g,'').replace(/\.\//g,'')];
}
else{
return (mappings && mappings.some(function(mapping){
var from = mapping.from;
if(uri.substring(0, from.length) == from){
return mapping.to + uri.substring(from.length);
}
})) || uri;
}
}

var engine = typeof process !== "undefined" ? "node" : "narwhal";
var mappingsArray = [];
var allMappings = {};
exports.installPackage = function(packageData){
function addMappings(mappings){
if(mappings){
mappingsArray = mappingsArray.concat(Object.keys(mappings).filter(function(key){
return !(key in allMappings);
}).map(function(key){
var to = mappings[key];
return {
from: key,
to: resolveUri(packageUri, typeof to == "string" ? to : to.to)
};
}).sort(function(a, b){
return a.from.length < b.from.length ? 1 : -1;
}));
}
}
if(packageData.overlay){
Object.keys(packageData.overlay).forEach(function(condition){
try{
var matches = (engine == condition) || eval(condition);
}catch(e){}
if(matches){
addMappings(packageData.overlay[condition].mappings);
}
});
}
addMappings(packageData.mappings);
}

exports.installPackage({
mappings:{
"perstore/": "",
"commonjs-utils/": "",
"pintura/": "",
"wiky/": ""
}
});
52 changes: 52 additions & 0 deletions facet/jsgi.js
@@ -0,0 +1,52 @@
/** This facet is designed for bundling multiple requests in a single request. This is
* based on the JSGI object structure.
*/

var Facet = require("perstore/facet").Facet,
directApp = require("../pintura").directApp,
defer = require("promised-io/promise").defer,
namedFacets = require("../facet-resolver").namedFacets;

namedFacets["application/jsgi"] = exports.JsgiFacet = Facet(Object, function(store){
return {
forStore: function(requestedStore){
function genericHandler(requests, metadata){
requests.forEach(function(request){
request.store = requestedStore;
(request.headers || (request.headers = {})).__proto__ = metadata;
metadata.clientConnection;
metadata.streamable;
try{
var response = directApp(request);
if(typeof response.body.observe === "function"){
response.body.observe()
}
var response = {

body: directApp(request)
};
}catch(e){
response = {
error: e
};
}
onResponse(response);
});
var responses = [];
var onResponse;
// maybe use lazy-array here
responses.forEach = function(callback){
onResponse = callback;
var deferred = defer();
return deferred.promise;
};
return responses;
}
return {
get: genericHandler,
put: genericHandler,
post: genericHandler
};
}
};
});
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
174 changes: 174 additions & 0 deletions jsgi/mime.js
@@ -0,0 +1,174 @@

// returns MIME type for extension, or fallback, or octet-steam
exports.mimeType = function(ext, fallback) {
return exports.MIME_TYPES[ext.toLowerCase()] || fallback || 'application/octet-stream';
},

// List of most common mime-types, stolen from Rack.
exports.MIME_TYPES = {
".3gp" : "video/3gpp",
".a" : "application/octet-stream",
".ai" : "application/postscript",
".aif" : "audio/x-aiff",
".aiff" : "audio/x-aiff",
".asc" : "application/pgp-signature",
".asf" : "video/x-ms-asf",
".asm" : "text/x-asm",
".asx" : "video/x-ms-asf",
".atom" : "application/atom+xml",
".au" : "audio/basic",
".avi" : "video/x-msvideo",
".bat" : "application/x-msdownload",
".bin" : "application/octet-stream",
".bmp" : "image/bmp",
".bz2" : "application/x-bzip2",
".c" : "text/x-c",
".cab" : "application/vnd.ms-cab-compressed",
".cc" : "text/x-c",
".chm" : "application/vnd.ms-htmlhelp",
".class" : "application/octet-stream",
".com" : "application/x-msdownload",
".conf" : "text/plain",
".cpp" : "text/x-c",
".crt" : "application/x-x509-ca-cert",
".css" : "text/css",
".csv" : "text/csv",
".cxx" : "text/x-c",
".deb" : "application/x-debian-package",
".der" : "application/x-x509-ca-cert",
".diff" : "text/x-diff",
".djv" : "image/vnd.djvu",
".djvu" : "image/vnd.djvu",
".dll" : "application/x-msdownload",
".dmg" : "application/octet-stream",
".doc" : "application/msword",
".dot" : "application/msword",
".dtd" : "application/xml-dtd",
".dvi" : "application/x-dvi",
".ear" : "application/java-archive",
".eml" : "message/rfc822",
".eps" : "application/postscript",
".exe" : "application/x-msdownload",
".f" : "text/x-fortran",
".f77" : "text/x-fortran",
".f90" : "text/x-fortran",
".flv" : "video/x-flv",
".for" : "text/x-fortran",
".gem" : "application/octet-stream",
".gemspec" : "text/x-script.ruby",
".gif" : "image/gif",
".gz" : "application/x-gzip",
".h" : "text/x-c",
".hh" : "text/x-c",
".htm" : "text/html",
".html" : "text/html",
".ico" : "image/vnd.microsoft.icon",
".ics" : "text/calendar",
".ifb" : "text/calendar",
".iso" : "application/octet-stream",
".jar" : "application/java-archive",
".java" : "text/x-java-source",
".jnlp" : "application/x-java-jnlp-file",
".jpeg" : "image/jpeg",
".jpg" : "image/jpeg",
".js" : "application/javascript",
".json" : "application/json",
".log" : "text/plain",
".m3u" : "audio/x-mpegurl",
".m4v" : "video/mp4",
".man" : "text/troff",
".mathml" : "application/mathml+xml",
".mbox" : "application/mbox",
".mdoc" : "text/troff",
".me" : "text/troff",
".mid" : "audio/midi",
".midi" : "audio/midi",
".mime" : "message/rfc822",
".mml" : "application/mathml+xml",
".mng" : "video/x-mng",
".mov" : "video/quicktime",
".mp3" : "audio/mpeg",
".mp4" : "video/mp4",
".mp4v" : "video/mp4",
".mpeg" : "video/mpeg",
".mpg" : "video/mpeg",
".ms" : "text/troff",
".msi" : "application/x-msdownload",
".odp" : "application/vnd.oasis.opendocument.presentation",
".ods" : "application/vnd.oasis.opendocument.spreadsheet",
".odt" : "application/vnd.oasis.opendocument.text",
".ogg" : "application/ogg",
".p" : "text/x-pascal",
".pas" : "text/x-pascal",
".pbm" : "image/x-portable-bitmap",
".pdf" : "application/pdf",
".pem" : "application/x-x509-ca-cert",
".pgm" : "image/x-portable-graymap",
".pgp" : "application/pgp-encrypted",
".pkg" : "application/octet-stream",
".pl" : "text/x-script.perl",
".pm" : "text/x-script.perl-module",
".png" : "image/png",
".pnm" : "image/x-portable-anymap",
".ppm" : "image/x-portable-pixmap",
".pps" : "application/vnd.ms-powerpoint",
".ppt" : "application/vnd.ms-powerpoint",
".ps" : "application/postscript",
".psd" : "image/vnd.adobe.photoshop",
".py" : "text/x-script.python",
".qt" : "video/quicktime",
".ra" : "audio/x-pn-realaudio",
".rake" : "text/x-script.ruby",
".ram" : "audio/x-pn-realaudio",
".rar" : "application/x-rar-compressed",
".rb" : "text/x-script.ruby",
".rdf" : "application/rdf+xml",
".roff" : "text/troff",
".rpm" : "application/x-redhat-package-manager",
".rss" : "application/rss+xml",
".rtf" : "application/rtf",
".ru" : "text/x-script.ruby",
".s" : "text/x-asm",
".sgm" : "text/sgml",
".sgml" : "text/sgml",
".sh" : "application/x-sh",
".sig" : "application/pgp-signature",
".snd" : "audio/basic",
".so" : "application/octet-stream",
".svg" : "image/svg+xml",
".svgz" : "image/svg+xml",
".swf" : "application/x-shockwave-flash",
".t" : "text/troff",
".tar" : "application/x-tar",
".tbz" : "application/x-bzip-compressed-tar",
".tcl" : "application/x-tcl",
".tex" : "application/x-tex",
".texi" : "application/x-texinfo",
".texinfo" : "application/x-texinfo",
".text" : "text/plain",
".tif" : "image/tiff",
".tiff" : "image/tiff",
".torrent" : "application/x-bittorrent",
".tr" : "text/troff",
".txt" : "text/plain",
".vcf" : "text/x-vcard",
".vcs" : "text/x-vcalendar",
".vrml" : "model/vrml",
".war" : "application/java-archive",
".wav" : "audio/x-wav",
".wma" : "audio/x-ms-wma",
".wmv" : "video/x-ms-wmv",
".wmx" : "video/x-ms-wmx",
".wrl" : "model/vrml",
".wsdl" : "application/wsdl+xml",
".xbm" : "image/x-xbitmap",
".xhtml" : "application/xhtml+xml",
".xls" : "application/vnd.ms-excel",
".xml" : "application/xml",
".xpm" : "image/x-xpixmap",
".xsl" : "application/xml",
".xslt" : "application/xslt+xml",
".yaml" : "text/yaml",
".yml" : "text/yaml",
".zip" : "application/zip"
}
File renamed without changes.
23 changes: 23 additions & 0 deletions jsgi/put.js
@@ -0,0 +1,23 @@
var when = require("promised-io/promise").when,
fs = require("promised-io/fs"),
forEachableToString = require("../media").forEachableToString;

module.exports = function(nextApp) {
return function(request) {
if(request.method === "PUT") {
return when(forEachableToString(request.body), function(body){
fs.writeFile(request.filePath, body);
return {
status: 200,
headers: {},
body: ["successful"]
}
});
}
return nextApp ? nextApp(request) : {
status: 404,
headers: {},
body: []
};
};
};

0 comments on commit cd43a69

Please sign in to comment.