Permalink
Browse files

Move lib to top level

  • Loading branch information...
1 parent 83a4059 commit cd43a69d4e419474198d0e280dde7cfe962e38f3 @kriszyp kriszyp committed Aug 16, 2011
Showing with 643 additions and 182 deletions.
  1. +85 −0 compatibility/require-uri.js
  2. +52 −0 facet/jsgi.js
  3. 0 {lib → }/html-transform.js
  4. 0 {lib → }/jsgi/README.md
  5. 0 {lib → }/jsgi/auth.js
  6. 0 {lib → }/jsgi/cache.js
  7. 0 {lib → }/jsgi/cascade.js
  8. 0 {lib → }/jsgi/class-alias.js
  9. 0 {lib → }/jsgi/compress.js
  10. 0 {lib → }/jsgi/conditional.js
  11. 0 {lib → }/jsgi/context.js
  12. 0 {lib → }/jsgi/csrf.js
  13. 0 {lib → }/jsgi/error.js
  14. 0 {lib → }/jsgi/extension.js
  15. 0 {lib → }/jsgi/head.js
  16. 0 {lib → }/jsgi/http-params.js
  17. 0 {lib → }/jsgi/media.js
  18. 0 {lib → }/jsgi/metadata.js
  19. 0 {lib → }/jsgi/methods.js
  20. +174 −0 jsgi/mime.js
  21. 0 {lib → }/jsgi/pintura-headers.js
  22. +23 −0 jsgi/put.js
  23. +127 −0 jsgi/querystring.js
  24. 0 {lib → }/jsgi/response.js
  25. 0 {lib → }/jsgi/rest-store.js
  26. 0 {lib → }/jsgi/rewriter.js
  27. 0 {lib → }/jsgi/routes.js
  28. 0 {lib → }/jsgi/session.js
  29. +174 −0 jsgi/static.js
  30. 0 {lib → }/jsgi/templated.js
  31. +1 −1 {lib → }/jsgi/xsite.js
  32. +0 −174 lib/jsgi/static.js
  33. 0 {lib → }/media.js
  34. 0 {lib → }/media/README.md
  35. 0 {lib → }/media/atom.js
  36. 0 {lib → }/media/auto-type.js
  37. 0 {lib → }/media/css.js
  38. 0 {lib → }/media/csv.js
  39. 0 {lib → }/media/hatom.js
  40. +2 −2 {lib → }/media/html.js
  41. 0 {lib → }/media/http.js
  42. 0 {lib → }/media/javascript.js
  43. 0 {lib → }/media/json.js
  44. 0 {lib → }/media/message/json.js
  45. +1 −1 {lib → }/media/multipart-form-data.js
  46. 0 {lib → }/media/plain.js
  47. 0 {lib → }/media/uri-list.js
  48. 0 {lib → }/media/url-encoded.js
  49. 0 {lib → }/media/xml.js
  50. +2 −2 package.json
  51. 0 {lib → }/pintura.js
  52. 0 {lib → }/require.js
  53. 0 {lib → }/security.js
  54. +2 −2 {lib → }/start-node.js
  55. 0 {lib → }/util/README.md
  56. 0 {lib → }/util/atom-util.js
  57. 0 {lib → }/util/html.js
  58. 0 {lib → }/util/repl.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/": ""
+ }
+});
View
@@ -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.
View
@@ -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.
View
@@ -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: []
+ };
+ };
+};
Oops, something went wrong.

0 comments on commit cd43a69

Please sign in to comment.