vulcan 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/vulcan/version.rb +1 -1
- data/server/Procfile +1 -0
- data/server/bin/make +39 -0
- data/server/lib/on.js +13 -0
- data/server/lib/spawner.js +101 -0
- data/server/node_modules/connect-form/History.md +28 -0
- data/server/node_modules/connect-form/LICENSE +22 -0
- data/server/node_modules/connect-form/Makefile +11 -0
- data/server/node_modules/connect-form/Readme.md +35 -0
- data/server/node_modules/connect-form/index.html +213 -0
- data/server/node_modules/connect-form/index.js +100 -0
- data/server/node_modules/connect-form/lib/connect-form.js +100 -0
- data/server/node_modules/connect-form/node_modules/formidable/Makefile +14 -0
- data/server/node_modules/connect-form/node_modules/formidable/Readme.md +264 -0
- data/server/node_modules/connect-form/node_modules/formidable/TODO +3 -0
- data/server/node_modules/connect-form/node_modules/formidable/benchmark/bench-multipart-parser.js +70 -0
- data/server/node_modules/connect-form/node_modules/formidable/example/post.js +43 -0
- data/server/node_modules/connect-form/node_modules/formidable/example/upload.js +48 -0
- data/server/node_modules/connect-form/node_modules/formidable/index.js +1 -0
- data/server/node_modules/connect-form/node_modules/formidable/lib/file.js +61 -0
- data/server/node_modules/connect-form/node_modules/formidable/lib/incoming_form.js +362 -0
- data/server/node_modules/connect-form/node_modules/formidable/lib/index.js +3 -0
- data/server/node_modules/connect-form/node_modules/formidable/lib/multipart_parser.js +301 -0
- data/server/node_modules/connect-form/node_modules/formidable/lib/querystring_parser.js +25 -0
- data/server/node_modules/connect-form/node_modules/formidable/lib/util.js +6 -0
- data/server/node_modules/connect-form/node_modules/formidable/package.json +19 -0
- data/server/node_modules/connect-form/node_modules/formidable/test/common.js +20 -0
- data/server/node_modules/connect-form/node_modules/formidable/test/fast/test-incoming-form.js +45 -0
- data/server/node_modules/connect-form/node_modules/formidable/test/fixture/file/: // ? % * | /" < > . /342/230/203 ; ' @ # $ ^ & ( ) - _ = + { } [ ] ` ~.txt" +1 -0
- data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/info.md +3 -0
- data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-chrome-13.http +36 -0
- data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-firefox-3.6.http +24 -0
- data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-safari-5.http +23 -0
- data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-chrome-12.http +33 -0
- data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-ie-7.http +22 -0
- data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-ie-8.http +22 -0
- data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-safari-5.http +22 -0
- data/server/node_modules/connect-form/node_modules/formidable/test/fixture/js/special-chars-in-filename.js +21 -0
- data/server/node_modules/connect-form/node_modules/formidable/test/fixture/multi_video.upload +0 -0
- data/server/node_modules/connect-form/node_modules/formidable/test/fixture/multipart.js +72 -0
- data/server/node_modules/connect-form/node_modules/formidable/test/legacy/common.js +24 -0
- data/server/node_modules/connect-form/node_modules/formidable/test/legacy/integration/test-multipart-parser.js +80 -0
- data/server/node_modules/connect-form/node_modules/formidable/test/legacy/simple/test-file.js +104 -0
- data/server/node_modules/connect-form/node_modules/formidable/test/legacy/simple/test-incoming-form.js +715 -0
- data/server/node_modules/connect-form/node_modules/formidable/test/legacy/simple/test-multipart-parser.js +50 -0
- data/server/node_modules/connect-form/node_modules/formidable/test/legacy/simple/test-querystring-parser.js +45 -0
- data/server/node_modules/connect-form/node_modules/formidable/test/legacy/system/test-multi-video-upload.js +72 -0
- data/server/node_modules/connect-form/node_modules/formidable/test/run.js +7 -0
- data/server/node_modules/connect-form/node_modules/formidable/test/slow/test-fixtures.js +84 -0
- data/server/node_modules/connect-form/node_modules/formidable/tool/record.js +47 -0
- data/server/node_modules/connect-form/package.json +9 -0
- data/server/node_modules/connect-form/support/connect/History.md +120 -0
- data/server/node_modules/connect-form/support/connect/Makefile +85 -0
- data/server/node_modules/connect-form/support/connect/README.md +121 -0
- data/server/node_modules/connect-form/support/connect/benchmarks/graph +79 -0
- data/server/node_modules/connect-form/support/connect/benchmarks/hello-world/connect.js +19 -0
- data/server/node_modules/connect-form/support/connect/benchmarks/hello-world/node.js +16 -0
- data/server/node_modules/connect-form/support/connect/benchmarks/hello-world/rack.thin.ru +9 -0
- data/server/node_modules/connect-form/support/connect/benchmarks/hello-world/sinatra.thin.ru +10 -0
- data/server/node_modules/connect-form/support/connect/benchmarks/public/jquery.js +19 -0
- data/server/node_modules/connect-form/support/connect/benchmarks/run +60 -0
- data/server/node_modules/connect-form/support/connect/benchmarks/static/connect.js +10 -0
- data/server/node_modules/connect-form/support/connect/benchmarks/static/node.js +17 -0
- data/server/node_modules/connect-form/support/connect/benchmarks/static/sinatra.thin.ru +10 -0
- data/server/node_modules/connect-form/support/connect/docs/api.html +1973 -0
- data/server/node_modules/connect-form/support/connect/docs/bodyDecoder.1 +27 -0
- data/server/node_modules/connect-form/support/connect/docs/bodyDecoder.html +164 -0
- data/server/node_modules/connect-form/support/connect/docs/bodyDecoder.md +11 -0
- data/server/node_modules/connect-form/support/connect/docs/compiler.1 +66 -0
- data/server/node_modules/connect-form/support/connect/docs/compiler.html +193 -0
- data/server/node_modules/connect-form/support/connect/docs/compiler.md +32 -0
- data/server/node_modules/connect-form/support/connect/docs/conditionalGet.1 +16 -0
- data/server/node_modules/connect-form/support/connect/docs/conditionalGet.html +158 -0
- data/server/node_modules/connect-form/support/connect/docs/conditionalGet.md +7 -0
- data/server/node_modules/connect-form/support/connect/docs/cookieDecoder.1 +27 -0
- data/server/node_modules/connect-form/support/connect/docs/cookieDecoder.html +164 -0
- data/server/node_modules/connect-form/support/connect/docs/cookieDecoder.md +11 -0
- data/server/node_modules/connect-form/support/connect/docs/errorHandler.1 +58 -0
- data/server/node_modules/connect-form/support/connect/docs/errorHandler.html +181 -0
- data/server/node_modules/connect-form/support/connect/docs/errorHandler.md +28 -0
- data/server/node_modules/connect-form/support/connect/docs/format.1 +7 -0
- data/server/node_modules/connect-form/support/connect/docs/format.html +152 -0
- data/server/node_modules/connect-form/support/connect/docs/format.md +3 -0
- data/server/node_modules/connect-form/support/connect/docs/index.1 +260 -0
- data/server/node_modules/connect-form/support/connect/docs/index.html +332 -0
- data/server/node_modules/connect-form/support/connect/docs/index.md +171 -0
- data/server/node_modules/connect-form/support/connect/docs/jsonrpc.1 +62 -0
- data/server/node_modules/connect-form/support/connect/docs/jsonrpc.html +192 -0
- data/server/node_modules/connect-form/support/connect/docs/jsonrpc.md +39 -0
- data/server/node_modules/connect-form/support/connect/docs/layout/api.foot.html +3 -0
- data/server/node_modules/connect-form/support/connect/docs/layout/api.head.html +142 -0
- data/server/node_modules/connect-form/support/connect/docs/lint.1 +102 -0
- data/server/node_modules/connect-form/support/connect/docs/lint.html +232 -0
- data/server/node_modules/connect-form/support/connect/docs/lint.md +79 -0
- data/server/node_modules/connect-form/support/connect/docs/logger.1 +66 -0
- data/server/node_modules/connect-form/support/connect/docs/logger.html +184 -0
- data/server/node_modules/connect-form/support/connect/docs/logger.md +31 -0
- data/server/node_modules/connect-form/support/connect/docs/methodOverride.1 +31 -0
- data/server/node_modules/connect-form/support/connect/docs/methodOverride.html +171 -0
- data/server/node_modules/connect-form/support/connect/docs/methodOverride.md +17 -0
- data/server/node_modules/connect-form/support/connect/docs/responseTime.1 +7 -0
- data/server/node_modules/connect-form/support/connect/docs/responseTime.html +152 -0
- data/server/node_modules/connect-form/support/connect/docs/responseTime.md +3 -0
- data/server/node_modules/connect-form/support/connect/docs/router.1 +75 -0
- data/server/node_modules/connect-form/support/connect/docs/router.html +211 -0
- data/server/node_modules/connect-form/support/connect/docs/router.md +58 -0
- data/server/node_modules/connect-form/support/connect/docs/session.1 +115 -0
- data/server/node_modules/connect-form/support/connect/docs/session.html +214 -0
- data/server/node_modules/connect-form/support/connect/docs/session.md +55 -0
- data/server/node_modules/connect-form/support/connect/docs/staticProvider.1 +28 -0
- data/server/node_modules/connect-form/support/connect/docs/staticProvider.html +162 -0
- data/server/node_modules/connect-form/support/connect/docs/staticProvider.md +11 -0
- data/server/node_modules/connect-form/support/connect/examples/error/app.js +13 -0
- data/server/node_modules/connect-form/support/connect/examples/jsonrpc/app.js +38 -0
- data/server/node_modules/connect-form/support/connect/examples/less/app.js +21 -0
- data/server/node_modules/connect-form/support/connect/examples/less/public/index.html +8 -0
- data/server/node_modules/connect-form/support/connect/examples/less/public/style.less +8 -0
- data/server/node_modules/connect-form/support/connect/examples/lint/app.js +40 -0
- data/server/node_modules/connect-form/support/connect/examples/multitouch/app.js +61 -0
- data/server/node_modules/connect-form/support/connect/examples/multitouch/public/client.js +73 -0
- data/server/node_modules/connect-form/support/connect/examples/multitouch/public/favicon.ico +0 -0
- data/server/node_modules/connect-form/support/connect/examples/multitouch/public/index.html +16 -0
- data/server/node_modules/connect-form/support/connect/examples/multitouch/public/raphael.js +113 -0
- data/server/node_modules/connect-form/support/connect/examples/multitouch/public/style.css +23 -0
- data/server/node_modules/connect-form/support/connect/examples/router/app.js +63 -0
- data/server/node_modules/connect-form/support/connect/examples/sass/app.js +21 -0
- data/server/node_modules/connect-form/support/connect/examples/sass/public/index.html +8 -0
- data/server/node_modules/connect-form/support/connect/examples/sass/public/style.sass +4 -0
- data/server/node_modules/connect-form/support/connect/examples/session/app.js +60 -0
- data/server/node_modules/connect-form/support/connect/examples/stack-middleware/app.js +15 -0
- data/server/node_modules/connect-form/support/connect/examples/stack-middleware/hello.js +13 -0
- data/server/node_modules/connect-form/support/connect/examples/stack-middleware/world.js +13 -0
- data/server/node_modules/connect-form/support/connect/examples/static/app.js +10 -0
- data/server/node_modules/connect-form/support/connect/examples/static/public/style.css +3 -0
- data/server/node_modules/connect-form/support/connect/examples/url-rewrite/app.js +44 -0
- data/server/node_modules/connect-form/support/connect/examples/vhost/app.js +25 -0
- data/server/node_modules/connect-form/support/connect/install.sh +6 -0
- data/server/node_modules/connect-form/support/connect/lib/connect/index.js +309 -0
- data/server/node_modules/connect-form/support/connect/lib/connect/middleware/bodyDecoder.js +69 -0
- data/server/node_modules/connect-form/support/connect/lib/connect/middleware/cache.js +142 -0
- data/server/node_modules/connect-form/support/connect/lib/connect/middleware/cacheManifest.js +71 -0
- data/server/node_modules/connect-form/support/connect/lib/connect/middleware/compiler.js +150 -0
- data/server/node_modules/connect-form/support/connect/lib/connect/middleware/conditionalGet.js +71 -0
- data/server/node_modules/connect-form/support/connect/lib/connect/middleware/cookieDecoder.js +37 -0
- data/server/node_modules/connect-form/support/connect/lib/connect/middleware/errorHandler.js +91 -0
- data/server/node_modules/connect-form/support/connect/lib/connect/middleware/format.js +46 -0
- data/server/node_modules/connect-form/support/connect/lib/connect/middleware/gzip-compress.js +79 -0
- data/server/node_modules/connect-form/support/connect/lib/connect/middleware/gzip-proc.js +73 -0
- data/server/node_modules/connect-form/support/connect/lib/connect/middleware/gzip.js +8 -0
- data/server/node_modules/connect-form/support/connect/lib/connect/middleware/jsonrpc.js +235 -0
- data/server/node_modules/connect-form/support/connect/lib/connect/middleware/lint.js +136 -0
- data/server/node_modules/connect-form/support/connect/lib/connect/middleware/logger.js +107 -0
- data/server/node_modules/connect-form/support/connect/lib/connect/middleware/methodOverride.js +54 -0
- data/server/node_modules/connect-form/support/connect/lib/connect/middleware/pubsub.js +107 -0
- data/server/node_modules/connect-form/support/connect/lib/connect/middleware/repl.js +43 -0
- data/server/node_modules/connect-form/support/connect/lib/connect/middleware/responseTime.js +28 -0
- data/server/node_modules/connect-form/support/connect/lib/connect/middleware/router.js +158 -0
- data/server/node_modules/connect-form/support/connect/lib/connect/middleware/session.js +129 -0
- data/server/node_modules/connect-form/support/connect/lib/connect/middleware/session/memory.js +141 -0
- data/server/node_modules/connect-form/support/connect/lib/connect/middleware/session/session.js +71 -0
- data/server/node_modules/connect-form/support/connect/lib/connect/middleware/session/store.js +59 -0
- data/server/node_modules/connect-form/support/connect/lib/connect/middleware/staticProvider.js +144 -0
- data/server/node_modules/connect-form/support/connect/lib/connect/middleware/vhost.js +43 -0
- data/server/node_modules/connect-form/support/connect/lib/connect/public/error.html +13 -0
- data/server/node_modules/connect-form/support/connect/lib/connect/public/style.css +98 -0
- data/server/node_modules/connect-form/support/connect/lib/connect/response.js +56 -0
- data/server/node_modules/connect-form/support/connect/lib/connect/utils.js +428 -0
- data/server/node_modules/connect-form/support/connect/package.json +21 -0
- data/server/node_modules/connect-form/support/connect/support/highlight.js +26 -0
- data/server/node_modules/connect-form/support/connect/test/bodyDecoder.test.js +69 -0
- data/server/node_modules/connect-form/support/connect/test/compiler.test.js +23 -0
- data/server/node_modules/connect-form/support/connect/test/connect.test.js +187 -0
- data/server/node_modules/connect-form/support/connect/test/cookieDecoder.test.js +31 -0
- data/server/node_modules/connect-form/support/connect/test/errorHandler.test.js +60 -0
- data/server/node_modules/connect-form/support/connect/test/filters/uppercase.js +14 -0
- data/server/node_modules/connect-form/support/connect/test/fixtures/foo.bar.baz.sass +2 -0
- data/server/node_modules/connect-form/support/connect/test/fixtures/index.html +1 -0
- data/server/node_modules/connect-form/support/connect/test/fixtures/some text.txt +1 -0
- data/server/node_modules/connect-form/support/connect/test/fixtures/style.less +2 -0
- data/server/node_modules/connect-form/support/connect/test/fixtures/style.sass +3 -0
- data/server/node_modules/connect-form/support/connect/test/fixtures/user.json +4 -0
- data/server/node_modules/connect-form/support/connect/test/format.test.js +37 -0
- data/server/node_modules/connect-form/support/connect/test/gzip.test.js +55 -0
- data/server/node_modules/connect-form/support/connect/test/helpers/http.js +87 -0
- data/server/node_modules/connect-form/support/connect/test/helpers/index.js +12 -0
- data/server/node_modules/connect-form/support/connect/test/jsonrpc.test.js +225 -0
- data/server/node_modules/connect-form/support/connect/test/logger.test.js +52 -0
- data/server/node_modules/connect-form/support/connect/test/methodOverride.test.js +69 -0
- data/server/node_modules/connect-form/support/connect/test/providers/echo.js +10 -0
- data/server/node_modules/connect-form/support/connect/test/responseTime.test.js +29 -0
- data/server/node_modules/connect-form/support/connect/test/router.test.js +154 -0
- data/server/node_modules/connect-form/support/connect/test/session.test.js +127 -0
- data/server/node_modules/connect-form/support/connect/test/static.test.js +66 -0
- data/server/node_modules/connect-form/support/connect/test/utils.test.js +65 -0
- data/server/node_modules/connect-form/support/connect/test/vhost.test.js +46 -0
- data/server/node_modules/connect-form/support/expresso/History.md +54 -0
- data/server/node_modules/connect-form/support/expresso/Makefile +30 -0
- data/server/node_modules/connect-form/support/expresso/Readme.md +208 -0
- data/server/node_modules/connect-form/support/expresso/bin/expresso +647 -0
- data/server/node_modules/connect-form/support/expresso/lib/bar.js +4 -0
- data/server/node_modules/connect-form/support/expresso/lib/foo.js +16 -0
- data/server/node_modules/connect-form/support/expresso/package.json +9 -0
- data/server/node_modules/connect-form/support/expresso/seed.yml +6 -0
- data/server/node_modules/connect-form/support/expresso/test/assert.test.js +64 -0
- data/server/node_modules/connect-form/support/expresso/test/bar.test.js +12 -0
- data/server/node_modules/connect-form/support/expresso/test/foo.test.js +13 -0
- data/server/node_modules/connect-form/support/expresso/test/http.test.js +61 -0
- data/server/node_modules/connect-form/test/form.test.js +148 -0
- data/server/node_modules/cradle/LICENSE +20 -0
- data/server/node_modules/cradle/Makefile +10 -0
- data/server/node_modules/cradle/README.md +377 -0
- data/server/node_modules/cradle/lib/cradle.js +688 -0
- data/server/node_modules/cradle/lib/cradle/cache.js +102 -0
- data/server/node_modules/cradle/lib/cradle/response.js +127 -0
- data/server/node_modules/cradle/node_modules/vargs/LICENSE +20 -0
- data/server/node_modules/cradle/node_modules/vargs/README.md +34 -0
- data/server/node_modules/cradle/node_modules/vargs/lib/vargs.js +70 -0
- data/server/node_modules/cradle/node_modules/vargs/package.json +12 -0
- data/server/node_modules/cradle/node_modules/vows/LICENSE +20 -0
- data/server/node_modules/cradle/node_modules/vows/Makefile +7 -0
- data/server/node_modules/cradle/node_modules/vows/README.md +39 -0
- data/server/node_modules/cradle/node_modules/vows/bin/vows +515 -0
- data/server/node_modules/cradle/node_modules/vows/lib/assert/error.js +27 -0
- data/server/node_modules/cradle/node_modules/vows/lib/assert/macros.js +215 -0
- data/server/node_modules/cradle/node_modules/vows/lib/assert/utils.js +77 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows.js +193 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/console.js +131 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/context.js +55 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/file.js +29 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/fragments/coverage-foot.html +2 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/fragments/coverage-head.html +61 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/report-html.js +54 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/report-json.js +54 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/report-plain.js +38 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/extras.js +28 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/dot-matrix.js +67 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/json.js +16 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/silent.js +8 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/spec.js +44 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/watch.js +39 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/xunit.js +90 -0
- data/server/node_modules/cradle/node_modules/vows/lib/vows/suite.js +319 -0
- data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/LICENSE +20 -0
- data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/Makefile +4 -0
- data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/README.md +72 -0
- data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/lib/eyes.js +233 -0
- data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/package.json +14 -0
- data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/test/eyes-test.js +55 -0
- data/server/node_modules/cradle/node_modules/vows/package.json +14 -0
- data/server/node_modules/cradle/node_modules/vows/test/assert-test.js +135 -0
- data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/failing.js +18 -0
- data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/log.js +18 -0
- data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/passing.js +17 -0
- data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/stderr.js +18 -0
- data/server/node_modules/cradle/node_modules/vows/test/isolate-test.js +140 -0
- data/server/node_modules/cradle/node_modules/vows/test/testInherit.js +133 -0
- data/server/node_modules/cradle/node_modules/vows/test/vows-error-test.js +51 -0
- data/server/node_modules/cradle/node_modules/vows/test/vows-test.js +374 -0
- data/server/node_modules/cradle/package.json +14 -0
- data/server/node_modules/cradle/test/cache-test.js +102 -0
- data/server/node_modules/cradle/test/cradle-test.js +651 -0
- data/server/node_modules/cradle/test/fixtures/databases.json +25 -0
- data/server/node_modules/cradle/test/helpers/seed.js +56 -0
- data/server/node_modules/cradle/test/response-test.js +73 -0
- data/server/node_modules/express/History.md +743 -0
- data/server/node_modules/express/LICENSE +22 -0
- data/server/node_modules/express/Makefile +35 -0
- data/server/node_modules/express/Readme.md +143 -0
- data/server/node_modules/express/bin/express +417 -0
- data/server/node_modules/express/index.js +2 -0
- data/server/node_modules/express/lib/express.js +79 -0
- data/server/node_modules/express/lib/http.js +583 -0
- data/server/node_modules/express/lib/https.js +52 -0
- data/server/node_modules/express/lib/request.js +309 -0
- data/server/node_modules/express/lib/response.js +459 -0
- data/server/node_modules/express/lib/router/collection.js +53 -0
- data/server/node_modules/express/lib/router/index.js +398 -0
- data/server/node_modules/express/lib/router/methods.js +70 -0
- data/server/node_modules/express/lib/router/route.js +88 -0
- data/server/node_modules/express/lib/utils.js +139 -0
- data/server/node_modules/express/lib/view.js +457 -0
- data/server/node_modules/express/lib/view/partial.js +40 -0
- data/server/node_modules/express/lib/view/view.js +209 -0
- data/server/node_modules/express/node_modules/connect/LICENSE +24 -0
- data/server/node_modules/express/node_modules/connect/index.js +2 -0
- data/server/node_modules/express/node_modules/connect/lib/cache.js +81 -0
- data/server/node_modules/express/node_modules/connect/lib/connect.js +106 -0
- data/server/node_modules/express/node_modules/connect/lib/http.js +215 -0
- data/server/node_modules/express/node_modules/connect/lib/https.js +47 -0
- data/server/node_modules/express/node_modules/connect/lib/index.js +46 -0
- data/server/node_modules/express/node_modules/connect/lib/middleware/basicAuth.js +93 -0
- data/server/node_modules/express/node_modules/connect/lib/middleware/bodyParser.js +92 -0
- data/server/node_modules/express/node_modules/connect/lib/middleware/compiler.js +163 -0
- data/server/node_modules/express/node_modules/connect/lib/middleware/cookieParser.js +46 -0
- data/server/node_modules/express/node_modules/connect/lib/middleware/csrf.js +105 -0
- data/server/node_modules/express/node_modules/connect/lib/middleware/directory.js +222 -0
- data/server/node_modules/express/node_modules/connect/lib/middleware/errorHandler.js +100 -0
- data/server/node_modules/express/node_modules/connect/lib/middleware/favicon.js +76 -0
- data/server/node_modules/express/node_modules/connect/lib/middleware/limit.js +78 -0
- data/server/node_modules/express/node_modules/connect/lib/middleware/logger.js +299 -0
- data/server/node_modules/express/node_modules/connect/lib/middleware/methodOverride.js +38 -0
- data/server/node_modules/express/node_modules/connect/lib/middleware/profiler.js +100 -0
- data/server/node_modules/express/node_modules/connect/lib/middleware/query.js +40 -0
- data/server/node_modules/express/node_modules/connect/lib/middleware/responseTime.js +34 -0
- data/server/node_modules/express/node_modules/connect/lib/middleware/router.js +379 -0
- data/server/node_modules/express/node_modules/connect/lib/middleware/session.js +346 -0
- data/server/node_modules/express/node_modules/connect/lib/middleware/session/cookie.js +126 -0
- data/server/node_modules/express/node_modules/connect/lib/middleware/session/memory.js +131 -0
- data/server/node_modules/express/node_modules/connect/lib/middleware/session/session.js +137 -0
- data/server/node_modules/express/node_modules/connect/lib/middleware/session/store.js +87 -0
- data/server/node_modules/express/node_modules/connect/lib/middleware/static.js +220 -0
- data/server/node_modules/express/node_modules/connect/lib/middleware/staticCache.js +122 -0
- data/server/node_modules/express/node_modules/connect/lib/middleware/vhost.js +44 -0
- data/server/node_modules/express/node_modules/connect/lib/patch.js +79 -0
- data/server/node_modules/express/node_modules/connect/lib/public/directory.html +75 -0
- data/server/node_modules/express/node_modules/connect/lib/public/error.html +13 -0
- data/server/node_modules/express/node_modules/connect/lib/public/favicon.ico +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_add.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_attach.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_code.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_copy.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_delete.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_edit.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_error.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_excel.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_find.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_gear.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_go.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_green.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_key.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_lightning.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_link.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_paintbrush.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_paste.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_red.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_refresh.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_save.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_acrobat.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_actionscript.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_add.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_c.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_camera.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_cd.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_code.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_code_red.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_coldfusion.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_compressed.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_copy.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_cplusplus.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_csharp.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_cup.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_database.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_delete.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_dvd.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_edit.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_error.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_excel.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_find.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_flash.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_freehand.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_gear.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_get.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_go.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_h.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_horizontal.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_key.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_lightning.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_link.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_magnify.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_medal.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_office.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_paint.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_paintbrush.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_paste.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_php.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_picture.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_powerpoint.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_put.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_ruby.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_stack.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_star.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_swoosh.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_text.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_text_width.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_tux.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_vector.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_visualstudio.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_width.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_word.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_world.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_wrench.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_zip.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_word.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/icons/page_world.png +0 -0
- data/server/node_modules/express/node_modules/connect/lib/public/style.css +141 -0
- data/server/node_modules/express/node_modules/connect/lib/utils.js +444 -0
- data/server/node_modules/express/node_modules/connect/package.json +24 -0
- data/server/node_modules/express/node_modules/connect/test.js +39 -0
- data/server/node_modules/express/node_modules/mime/LICENSE +19 -0
- data/server/node_modules/express/node_modules/mime/README.md +50 -0
- data/server/node_modules/express/node_modules/mime/index.js +1 -0
- data/server/node_modules/express/node_modules/mime/mime.js +92 -0
- data/server/node_modules/express/node_modules/mime/mime.types +1479 -0
- data/server/node_modules/express/node_modules/mime/node.types +26 -0
- data/server/node_modules/express/node_modules/mime/package.json +11 -0
- data/server/node_modules/express/node_modules/mime/test.js +80 -0
- data/server/node_modules/express/node_modules/qs/History.md +52 -0
- data/server/node_modules/express/node_modules/qs/Makefile +7 -0
- data/server/node_modules/express/node_modules/qs/Readme.md +49 -0
- data/server/node_modules/express/node_modules/qs/benchmark.js +17 -0
- data/server/node_modules/express/node_modules/qs/examples.js +48 -0
- data/server/node_modules/express/node_modules/qs/index.js +2 -0
- data/server/node_modules/express/node_modules/qs/lib/querystring.js +236 -0
- data/server/node_modules/express/node_modules/qs/package.json +9 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/History.md +128 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/Makefile +53 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/Readme.md +61 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/bin/expresso +856 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/docs/api.html +1080 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/docs/index.html +377 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/docs/index.md +290 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/docs/layout/foot.html +3 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/docs/layout/head.html +42 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/lib/bar.js +4 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/lib/foo.js +16 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/package.json +12 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/test/assert.test.js +91 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/test/async.test.js +12 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/test/bar.test.js +13 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/test/foo.test.js +14 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/test/http.test.js +146 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/test/serial/async.test.js +39 -0
- data/server/node_modules/express/node_modules/qs/support/expresso/test/serial/http.test.js +48 -0
- data/server/node_modules/express/node_modules/qs/support/should/History.md +22 -0
- data/server/node_modules/express/node_modules/qs/support/should/Makefile +6 -0
- data/server/node_modules/express/node_modules/qs/support/should/Readme.md +248 -0
- data/server/node_modules/express/node_modules/qs/support/should/examples/runner.js +53 -0
- data/server/node_modules/express/node_modules/qs/support/should/index.js +2 -0
- data/server/node_modules/express/node_modules/qs/support/should/lib/eql.js +91 -0
- data/server/node_modules/express/node_modules/qs/support/should/lib/should.js +548 -0
- data/server/node_modules/express/node_modules/qs/support/should/package.json +8 -0
- data/server/node_modules/express/node_modules/qs/support/should/test/should.test.js +358 -0
- data/server/node_modules/express/node_modules/qs/test/parse.test.js +156 -0
- data/server/node_modules/express/node_modules/qs/test/stringify.test.js +95 -0
- data/server/node_modules/express/package.json +38 -0
- data/server/node_modules/knox/History.md +41 -0
- data/server/node_modules/knox/Makefile +21 -0
- data/server/node_modules/knox/Readme.md +144 -0
- data/server/node_modules/knox/index.html +483 -0
- data/server/node_modules/knox/index.js +2 -0
- data/server/node_modules/knox/lib/knox/auth.js +190 -0
- data/server/node_modules/knox/lib/knox/client.js +355 -0
- data/server/node_modules/knox/lib/knox/index.js +36 -0
- data/server/node_modules/knox/lib/knox/mime/README.md +19 -0
- data/server/node_modules/knox/lib/knox/mime/index.js +308 -0
- data/server/node_modules/knox/lib/knox/mime/mime.js +308 -0
- data/server/node_modules/knox/lib/knox/mime/package.json +12 -0
- data/server/node_modules/knox/lib/knox/mime/test.js +59 -0
- data/server/node_modules/knox/lib/knox/utils.js +55 -0
- data/server/node_modules/knox/package.json +13 -0
- data/server/node_modules/knox/support/expresso/History.md +87 -0
- data/server/node_modules/knox/support/expresso/Makefile +53 -0
- data/server/node_modules/knox/support/expresso/Readme.md +39 -0
- data/server/node_modules/knox/support/expresso/bin/expresso +835 -0
- data/server/node_modules/knox/support/expresso/docs/api.html +1048 -0
- data/server/node_modules/knox/support/expresso/docs/index.html +373 -0
- data/server/node_modules/knox/support/expresso/docs/index.md +290 -0
- data/server/node_modules/knox/support/expresso/docs/layout/foot.html +3 -0
- data/server/node_modules/knox/support/expresso/docs/layout/head.html +42 -0
- data/server/node_modules/knox/support/expresso/lib/bar.js +4 -0
- data/server/node_modules/knox/support/expresso/lib/foo.js +16 -0
- data/server/node_modules/knox/support/expresso/package.json +9 -0
- data/server/node_modules/knox/support/expresso/test/assert.test.js +84 -0
- data/server/node_modules/knox/support/expresso/test/async.test.js +6 -0
- data/server/node_modules/knox/support/expresso/test/bar.test.js +12 -0
- data/server/node_modules/knox/support/expresso/test/foo.test.js +13 -0
- data/server/node_modules/knox/support/expresso/test/http.test.js +76 -0
- data/server/node_modules/knox/support/expresso/test/serial/async.test.js +38 -0
- data/server/node_modules/knox/support/expresso/test/serial/http.test.js +47 -0
- data/server/node_modules/knox/test/auth.test.js +59 -0
- data/server/node_modules/knox/test/fixtures/user.json +1 -0
- data/server/node_modules/knox/test/knox.test.js +188 -0
- data/server/node_modules/knox/test/utils.test.js +17 -0
- data/server/node_modules/node-uuid/LICENSE.md +3 -0
- data/server/node_modules/node-uuid/README.md +100 -0
- data/server/node_modules/node-uuid/package.json +12 -0
- data/server/node_modules/node-uuid/test/benchmark-native.c +34 -0
- data/server/node_modules/node-uuid/test/benchmark.js +27 -0
- data/server/node_modules/node-uuid/test/test.html +14 -0
- data/server/node_modules/node-uuid/test/test.js +83 -0
- data/server/node_modules/node-uuid/uuid.js +80 -0
- data/server/node_modules/restler/MIT-LICENSE +20 -0
- data/server/node_modules/restler/README.md +147 -0
- data/server/node_modules/restler/bin/restler +23 -0
- data/server/node_modules/restler/index.js +1 -0
- data/server/node_modules/restler/lib/multipartform.js +202 -0
- data/server/node_modules/restler/lib/restler.js +300 -0
- data/server/node_modules/restler/package.json +10 -0
- data/server/node_modules/restler/test/all.js +1 -0
- data/server/node_modules/restler/test/restler.js +148 -0
- data/server/node_modules/restler/test/test_helper.js +144 -0
- data/server/package.json +12 -0
- data/server/vendor/gems/bin/restclient +19 -0
- data/server/vendor/gems/cache/couchrest-1.1.2.gem +0 -0
- data/server/vendor/gems/cache/mime-types-1.16.gem +0 -0
- data/server/vendor/gems/cache/multi_json-1.0.3.gem +0 -0
- data/server/vendor/gems/cache/rest-client-1.6.7.gem +0 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/Gemfile +4 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/LICENSE +176 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/README.md +65 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/Rakefile +38 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/THANKS.md +21 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/VERSION +1 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/couchrest.gemspec +34 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/examples/word_count/markov +38 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/examples/word_count/views/books/chunked-map.js +3 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/examples/word_count/views/books/united-map.js +1 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/examples/word_count/views/markov/chain-map.js +6 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/examples/word_count/views/markov/chain-reduce.js +7 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/examples/word_count/views/word_count/count-map.js +6 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/examples/word_count/views/word_count/count-reduce.js +3 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/examples/word_count/word_count.rb +46 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/examples/word_count/word_count_query.rb +40 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/examples/word_count/word_count_views.rb +26 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/history.txt +194 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/init.rb +1 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest.rb +134 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/attributes.rb +89 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/commands/generate.rb +71 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/commands/push.rb +103 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/database.rb +396 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/design.rb +91 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/document.rb +105 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/helper/attachments.rb +29 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/helper/pager.rb +103 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/helper/streamer.rb +58 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/helper/upgrade.rb +51 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/middlewares/logger.rb +263 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/monkeypatches.rb +25 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/rest_api.rb +159 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/server.rb +90 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/support/inheritable_attributes.rb +107 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/spec/couchrest/couchrest_spec.rb +202 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/spec/couchrest/database_spec.rb +921 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/spec/couchrest/design_spec.rb +206 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/spec/couchrest/document_spec.rb +400 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/spec/couchrest/helpers/pager_spec.rb +115 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/spec/couchrest/helpers/streamer_spec.rb +59 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/spec/couchrest/rest_api_spec.rb +212 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/spec/couchrest/server_spec.rb +35 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/spec/fixtures/attachments/README +3 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/spec/fixtures/attachments/couchdb.png +0 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/spec/fixtures/attachments/test.html +11 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/spec/fixtures/views/lib.js +3 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/spec/fixtures/views/test_view/lib.js +3 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/spec/fixtures/views/test_view/only-map.js +4 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/spec/fixtures/views/test_view/test-map.js +3 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/spec/fixtures/views/test_view/test-reduce.js +3 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/spec/spec.opts +5 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/spec/spec_helper.rb +46 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/utils/remap.rb +27 -0
- data/server/vendor/gems/gems/couchrest-1.1.2/utils/subset.rb +30 -0
- data/server/vendor/gems/gems/mime-types-1.16/History.txt +107 -0
- data/server/vendor/gems/gems/mime-types-1.16/Install.txt +17 -0
- data/server/vendor/gems/gems/mime-types-1.16/Licence.txt +15 -0
- data/server/vendor/gems/gems/mime-types-1.16/Manifest.txt +12 -0
- data/server/vendor/gems/gems/mime-types-1.16/README.txt +28 -0
- data/server/vendor/gems/gems/mime-types-1.16/Rakefile +316 -0
- data/server/vendor/gems/gems/mime-types-1.16/lib/mime/types.rb +751 -0
- data/server/vendor/gems/gems/mime-types-1.16/lib/mime/types.rb.data +1324 -0
- data/server/vendor/gems/gems/mime-types-1.16/mime-types.gemspec +43 -0
- data/server/vendor/gems/gems/mime-types-1.16/setup.rb +1585 -0
- data/server/vendor/gems/gems/mime-types-1.16/test/test_mime_type.rb +356 -0
- data/server/vendor/gems/gems/mime-types-1.16/test/test_mime_types.rb +122 -0
- data/server/vendor/gems/gems/multi_json-1.0.3/Gemfile +7 -0
- data/server/vendor/gems/gems/multi_json-1.0.3/LICENSE.md +20 -0
- data/server/vendor/gems/gems/multi_json-1.0.3/README.md +70 -0
- data/server/vendor/gems/gems/multi_json-1.0.3/Rakefile +23 -0
- data/server/vendor/gems/gems/multi_json-1.0.3/lib/multi_json.rb +74 -0
- data/server/vendor/gems/gems/multi_json-1.0.3/lib/multi_json/engines/json_gem.rb +21 -0
- data/server/vendor/gems/gems/multi_json-1.0.3/lib/multi_json/engines/json_pure.rb +21 -0
- data/server/vendor/gems/gems/multi_json-1.0.3/lib/multi_json/engines/ok_json.rb +48 -0
- data/server/vendor/gems/gems/multi_json-1.0.3/lib/multi_json/engines/yajl.rb +18 -0
- data/server/vendor/gems/gems/multi_json-1.0.3/lib/multi_json/vendor/ok_json.rb +581 -0
- data/server/vendor/gems/gems/multi_json-1.0.3/lib/multi_json/version.rb +3 -0
- data/server/vendor/gems/gems/multi_json-1.0.3/multi_json.gemspec +23 -0
- data/server/vendor/gems/gems/multi_json-1.0.3/spec/helper.rb +11 -0
- data/server/vendor/gems/gems/multi_json-1.0.3/spec/multi_json_spec.rb +134 -0
- data/server/vendor/gems/gems/rest-client-1.6.7/README.rdoc +285 -0
- data/server/vendor/gems/gems/rest-client-1.6.7/Rakefile +66 -0
- data/server/vendor/gems/gems/rest-client-1.6.7/VERSION +1 -0
- data/server/vendor/gems/gems/rest-client-1.6.7/bin/restclient +93 -0
- data/server/vendor/gems/gems/rest-client-1.6.7/history.md +134 -0
- data/server/vendor/gems/gems/rest-client-1.6.7/lib/rest-client.rb +2 -0
- data/server/vendor/gems/gems/rest-client-1.6.7/lib/rest_client.rb +2 -0
- data/server/vendor/gems/gems/rest-client-1.6.7/lib/restclient.rb +174 -0
- data/server/vendor/gems/gems/rest-client-1.6.7/lib/restclient/abstract_response.rb +106 -0
- data/server/vendor/gems/gems/rest-client-1.6.7/lib/restclient/exceptions.rb +193 -0
- data/server/vendor/gems/gems/rest-client-1.6.7/lib/restclient/net_http_ext.rb +55 -0
- data/server/vendor/gems/gems/rest-client-1.6.7/lib/restclient/payload.rb +235 -0
- data/server/vendor/gems/gems/rest-client-1.6.7/lib/restclient/raw_response.rb +34 -0
- data/server/vendor/gems/gems/rest-client-1.6.7/lib/restclient/request.rb +316 -0
- data/server/vendor/gems/gems/rest-client-1.6.7/lib/restclient/resource.rb +169 -0
- data/server/vendor/gems/gems/rest-client-1.6.7/lib/restclient/response.rb +24 -0
- data/server/vendor/gems/gems/rest-client-1.6.7/spec/abstract_response_spec.rb +85 -0
- data/server/vendor/gems/gems/rest-client-1.6.7/spec/base.rb +16 -0
- data/server/vendor/gems/gems/rest-client-1.6.7/spec/exceptions_spec.rb +98 -0
- data/server/vendor/gems/gems/rest-client-1.6.7/spec/integration/certs/equifax.crt +19 -0
- data/server/vendor/gems/gems/rest-client-1.6.7/spec/integration/certs/verisign.crt +14 -0
- data/server/vendor/gems/gems/rest-client-1.6.7/spec/integration/request_spec.rb +25 -0
- data/server/vendor/gems/gems/rest-client-1.6.7/spec/integration_spec.rb +38 -0
- data/server/vendor/gems/gems/rest-client-1.6.7/spec/master_shake.jpg +0 -0
- data/server/vendor/gems/gems/rest-client-1.6.7/spec/payload_spec.rb +234 -0
- data/server/vendor/gems/gems/rest-client-1.6.7/spec/raw_response_spec.rb +17 -0
- data/server/vendor/gems/gems/rest-client-1.6.7/spec/request2_spec.rb +40 -0
- data/server/vendor/gems/gems/rest-client-1.6.7/spec/request_spec.rb +529 -0
- data/server/vendor/gems/gems/rest-client-1.6.7/spec/resource_spec.rb +134 -0
- data/server/vendor/gems/gems/rest-client-1.6.7/spec/response_spec.rb +169 -0
- data/server/vendor/gems/gems/rest-client-1.6.7/spec/restclient_spec.rb +73 -0
- data/server/vendor/gems/specifications/couchrest-1.1.2.gemspec +43 -0
- data/server/vendor/gems/specifications/mime-types-1.16.gemspec +42 -0
- data/server/vendor/gems/specifications/multi_json-1.0.3.gemspec +40 -0
- data/server/vendor/gems/specifications/rest-client-1.6.7.gemspec +37 -0
- data/server/web.js +93 -0
- metadata +633 -7
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require File.join(File.dirname(__FILE__),'lib', 'couchrest.rb')
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
# Copyright 2008 J. Chris Anderson
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
require 'rest_client'
|
|
16
|
+
require 'multi_json'
|
|
17
|
+
|
|
18
|
+
# Not sure why this is required, so removed until a reason is found!
|
|
19
|
+
$:.unshift File.dirname(__FILE__) unless
|
|
20
|
+
$:.include?(File.dirname(__FILE__)) ||
|
|
21
|
+
$:.include?(File.expand_path(File.dirname(__FILE__)))
|
|
22
|
+
|
|
23
|
+
require 'couchrest/monkeypatches'
|
|
24
|
+
require 'couchrest/rest_api'
|
|
25
|
+
require 'couchrest/support/inheritable_attributes'
|
|
26
|
+
|
|
27
|
+
require 'forwardable'
|
|
28
|
+
|
|
29
|
+
# = CouchDB, close to the metal
|
|
30
|
+
module CouchRest
|
|
31
|
+
autoload :Attributes, 'couchrest/attributes'
|
|
32
|
+
autoload :Server, 'couchrest/server'
|
|
33
|
+
autoload :Database, 'couchrest/database'
|
|
34
|
+
autoload :Document, 'couchrest/document'
|
|
35
|
+
autoload :Design, 'couchrest/design'
|
|
36
|
+
autoload :Model, 'couchrest/model'
|
|
37
|
+
autoload :Pager, 'couchrest/helper/pager'
|
|
38
|
+
autoload :Streamer, 'couchrest/helper/streamer'
|
|
39
|
+
autoload :Attachments, 'couchrest/helper/attachments'
|
|
40
|
+
autoload :Upgrade, 'couchrest/helper/upgrade'
|
|
41
|
+
|
|
42
|
+
# we extend CouchRest with the RestAPI module which gives us acess to
|
|
43
|
+
# the get, post, put, delete and copy
|
|
44
|
+
CouchRest.extend(::CouchRest::RestAPI)
|
|
45
|
+
|
|
46
|
+
# The CouchRest module methods handle the basic JSON serialization
|
|
47
|
+
# and deserialization, as well as query parameters. The module also includes
|
|
48
|
+
# some helpers for tasks like instantiating a new Database or Server instance.
|
|
49
|
+
class << self
|
|
50
|
+
|
|
51
|
+
# todo, make this parse the url and instantiate a Server or Database instance
|
|
52
|
+
# depending on the specificity.
|
|
53
|
+
def new(*opts)
|
|
54
|
+
Server.new(*opts)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def parse url
|
|
58
|
+
case url
|
|
59
|
+
when /^(https?:\/\/)(.*)\/(.*)\/(.*)/
|
|
60
|
+
scheme = $1
|
|
61
|
+
host = $2
|
|
62
|
+
db = $3
|
|
63
|
+
docid = $4
|
|
64
|
+
when /^(https?:\/\/)(.*)\/(.*)/
|
|
65
|
+
scheme = $1
|
|
66
|
+
host = $2
|
|
67
|
+
db = $3
|
|
68
|
+
when /^(https?:\/\/)(.*)/
|
|
69
|
+
scheme = $1
|
|
70
|
+
host = $2
|
|
71
|
+
when /(.*)\/(.*)\/(.*)/
|
|
72
|
+
host = $1
|
|
73
|
+
db = $2
|
|
74
|
+
docid = $3
|
|
75
|
+
when /(.*)\/(.*)/
|
|
76
|
+
host = $1
|
|
77
|
+
db = $2
|
|
78
|
+
else
|
|
79
|
+
db = url
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
db = nil if db && db.empty?
|
|
83
|
+
|
|
84
|
+
{
|
|
85
|
+
:host => (scheme || "http://") + (host || "127.0.0.1:5984"),
|
|
86
|
+
:database => db,
|
|
87
|
+
:doc => docid
|
|
88
|
+
}
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
# set proxy to use
|
|
92
|
+
def proxy url
|
|
93
|
+
RestClient.proxy = url
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
# ensure that a database exists
|
|
97
|
+
# creates it if it isn't already there
|
|
98
|
+
# returns it after it's been created
|
|
99
|
+
def database! url
|
|
100
|
+
parsed = parse url
|
|
101
|
+
cr = CouchRest.new(parsed[:host])
|
|
102
|
+
cr.database!(parsed[:database])
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
def database url
|
|
106
|
+
parsed = parse url
|
|
107
|
+
cr = CouchRest.new(parsed[:host])
|
|
108
|
+
cr.database(parsed[:database])
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
def paramify_url url, params = {}
|
|
112
|
+
if params && !params.empty?
|
|
113
|
+
query = params.collect do |k,v|
|
|
114
|
+
v = MultiJson.encode(v) if %w{key startkey endkey}.include?(k.to_s)
|
|
115
|
+
"#{k}=#{CGI.escape(v.to_s)}"
|
|
116
|
+
end.join("&")
|
|
117
|
+
url = "#{url}?#{query}"
|
|
118
|
+
end
|
|
119
|
+
url
|
|
120
|
+
end
|
|
121
|
+
end # class << self
|
|
122
|
+
end
|
|
123
|
+
# For the sake of backwards compatability, generate a dummy ExtendedDocument class
|
|
124
|
+
# which should be replaced by real library: couchrest_extended_document.
|
|
125
|
+
#
|
|
126
|
+
# Added 2010-05-10 by Sam Lown. Please remove at some point in the future.
|
|
127
|
+
#
|
|
128
|
+
class CouchRest::ExtendedDocument < CouchRest::Document
|
|
129
|
+
|
|
130
|
+
def self.inherited(subclass)
|
|
131
|
+
raise "ExtendedDocument is no longer included in CouchRest base driver, see couchrest_extended_document gem"
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
end
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
#
|
|
2
|
+
# CouchRest::Attributes
|
|
3
|
+
#
|
|
4
|
+
# When included, provide the owner with an attributes hash and
|
|
5
|
+
# accessors that forward calls to it.
|
|
6
|
+
#
|
|
7
|
+
# Provides the basic functionality of Hash without actually being
|
|
8
|
+
# a Hash using Ruby's standard Forwardable module.
|
|
9
|
+
#
|
|
10
|
+
module CouchRest
|
|
11
|
+
|
|
12
|
+
module Attributes
|
|
13
|
+
extend Forwardable
|
|
14
|
+
|
|
15
|
+
# Initialize a new CouchRest Document and prepare
|
|
16
|
+
# a hidden attributes hash.
|
|
17
|
+
#
|
|
18
|
+
# When inherting a Document, it is essential that the
|
|
19
|
+
# super method is called before you own changes to ensure
|
|
20
|
+
# that the attributes hash has been initialized before
|
|
21
|
+
# you attempt to use it.
|
|
22
|
+
def initialize(attrs = nil)
|
|
23
|
+
attrs.each{|k,v| self[k] = v} unless attrs.nil?
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# Hash equivilent methods to access the attributes
|
|
27
|
+
def_delegators :_attributes, :to_a, :==, :eql?, :keys, :values, :each,
|
|
28
|
+
:reject, :reject!, :empty?, :clear, :merge, :merge!,
|
|
29
|
+
:encode_json, :as_json, :to_json, :frozen?
|
|
30
|
+
|
|
31
|
+
def []=(key, value)
|
|
32
|
+
_attributes[key.to_s] = value
|
|
33
|
+
end
|
|
34
|
+
def [](key)
|
|
35
|
+
_attributes[key.to_s]
|
|
36
|
+
end
|
|
37
|
+
def has_key?(key)
|
|
38
|
+
_attributes.has_key?(key.to_s)
|
|
39
|
+
end
|
|
40
|
+
def delete(key)
|
|
41
|
+
_attributes.delete(key.to_s)
|
|
42
|
+
end
|
|
43
|
+
def dup
|
|
44
|
+
new = super
|
|
45
|
+
@_attributes = @_attributes.dup
|
|
46
|
+
new
|
|
47
|
+
end
|
|
48
|
+
def clone
|
|
49
|
+
new = super
|
|
50
|
+
@_attributes = @_attributes.dup
|
|
51
|
+
new
|
|
52
|
+
end
|
|
53
|
+
def to_hash
|
|
54
|
+
_attributes
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# Provide JSON data hash that can be stored in the database.
|
|
58
|
+
# Will go through each attribute value and request the `as_couch_json` method
|
|
59
|
+
# on each if available, or return the value as-is.
|
|
60
|
+
def as_couch_json
|
|
61
|
+
_attributes.inject({}) {|h, (k,v)| h[k] = v.respond_to?(:as_couch_json) ? v.as_couch_json : v; h}
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
# Freeze the object's attributes instead of the actual document.
|
|
65
|
+
# This prevents further modifications to stored data, but does allow access
|
|
66
|
+
# to local variables useful for callbacks or cached data.
|
|
67
|
+
def freeze
|
|
68
|
+
_attributes.freeze; self
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
# Provide details of the current keys in the reponse. Based on ActiveRecord::Base.
|
|
72
|
+
def inspect
|
|
73
|
+
attributes_as_nice_string = self.keys.collect { |key|
|
|
74
|
+
"#{key}: #{self[key].inspect}"
|
|
75
|
+
}.compact.join(", ")
|
|
76
|
+
"#<#{self.class} #{attributes_as_nice_string}>"
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
protected
|
|
80
|
+
|
|
81
|
+
# Define accessor for _attributes hash that will instantiate the
|
|
82
|
+
# model if this has not already been done.
|
|
83
|
+
def _attributes
|
|
84
|
+
@_attributes ||= {}
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
end
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
require 'fileutils'
|
|
2
|
+
|
|
3
|
+
module CouchRest
|
|
4
|
+
module Commands
|
|
5
|
+
module Generate
|
|
6
|
+
|
|
7
|
+
def self.run(options)
|
|
8
|
+
directory = options[:directory]
|
|
9
|
+
design_names = options[:trailing_args]
|
|
10
|
+
|
|
11
|
+
FileUtils.mkdir_p(directory)
|
|
12
|
+
filename = File.join(directory, "lib.js")
|
|
13
|
+
self.write(filename, <<-FUNC)
|
|
14
|
+
// Put global functions here.
|
|
15
|
+
// Include in your views with
|
|
16
|
+
//
|
|
17
|
+
// //include-lib
|
|
18
|
+
FUNC
|
|
19
|
+
|
|
20
|
+
design_names.each do |design_name|
|
|
21
|
+
subdirectory = File.join(directory, design_name)
|
|
22
|
+
FileUtils.mkdir_p(subdirectory)
|
|
23
|
+
filename = File.join(subdirectory, "sample-map.js")
|
|
24
|
+
self.write(filename, <<-FUNC)
|
|
25
|
+
function(doc) {
|
|
26
|
+
// Keys is first letter of _id
|
|
27
|
+
emit(doc._id[0], doc);
|
|
28
|
+
}
|
|
29
|
+
FUNC
|
|
30
|
+
|
|
31
|
+
filename = File.join(subdirectory, "sample-reduce.js")
|
|
32
|
+
self.write(filename, <<-FUNC)
|
|
33
|
+
function(keys, values) {
|
|
34
|
+
// Count the number of keys starting with this letter
|
|
35
|
+
return values.length;
|
|
36
|
+
}
|
|
37
|
+
FUNC
|
|
38
|
+
|
|
39
|
+
filename = File.join(subdirectory, "lib.js")
|
|
40
|
+
self.write(filename, <<-FUNC)
|
|
41
|
+
// Put functions specific to '#{design_name}' here.
|
|
42
|
+
// Include in your views with
|
|
43
|
+
//
|
|
44
|
+
// //include-lib
|
|
45
|
+
FUNC
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def self.help
|
|
50
|
+
helpstring = <<-GEN
|
|
51
|
+
|
|
52
|
+
Usage: couchview generate directory design1 design2 design3 ...
|
|
53
|
+
|
|
54
|
+
Couchview will create directories and example views for the design documents you specify.
|
|
55
|
+
|
|
56
|
+
GEN
|
|
57
|
+
helpstring.gsub(/^ /, '')
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def self.write(filename, contents)
|
|
61
|
+
puts "Writing #{filename}"
|
|
62
|
+
File.open(filename, "w") do |f|
|
|
63
|
+
# Remove leading spaces
|
|
64
|
+
contents.gsub!(/^ ( )?/, '')
|
|
65
|
+
f.write contents
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
module CouchRest
|
|
2
|
+
|
|
3
|
+
module Commands
|
|
4
|
+
|
|
5
|
+
module Push
|
|
6
|
+
|
|
7
|
+
def self.run(options)
|
|
8
|
+
directory = options[:directory]
|
|
9
|
+
database = options[:trailing_args].first
|
|
10
|
+
|
|
11
|
+
fm = CouchRest::FileManager.new(database)
|
|
12
|
+
fm.loud = options[:loud]
|
|
13
|
+
|
|
14
|
+
if options[:loud]
|
|
15
|
+
puts "Pushing views from directory #{directory} to database #{fm.db}"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
fm.push_views(directory)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def self.help
|
|
22
|
+
helpstring = <<-GEN
|
|
23
|
+
|
|
24
|
+
== Pushing views with Couchview ==
|
|
25
|
+
|
|
26
|
+
Usage: couchview push directory dbname
|
|
27
|
+
|
|
28
|
+
Couchview expects a specific filesystem layout for your CouchDB views (see
|
|
29
|
+
example below). It also supports advanced features like inlining of library
|
|
30
|
+
code (so you can keep DRY) as well as avoiding unnecessary document
|
|
31
|
+
modification.
|
|
32
|
+
|
|
33
|
+
Couchview also solves a problem with CouchDB's view API, which only provides
|
|
34
|
+
access to the final reduce side of any views which have both a map and a
|
|
35
|
+
reduce function defined. The intermediate map results are often useful for
|
|
36
|
+
development and production. CouchDB is smart enough to reuse map indexes for
|
|
37
|
+
functions duplicated across views within the same design document.
|
|
38
|
+
|
|
39
|
+
For views with a reduce function defined, Couchview creates both a reduce view
|
|
40
|
+
and a map-only view, so that you can browse and query the map side as well as
|
|
41
|
+
the reduction, with no performance penalty.
|
|
42
|
+
|
|
43
|
+
== Example ==
|
|
44
|
+
|
|
45
|
+
couchview push foo-project/bar-views baz-database
|
|
46
|
+
|
|
47
|
+
This will push the views defined in foo-project/bar-views into a database
|
|
48
|
+
called baz-database. Couchview expects the views to be defined in files with
|
|
49
|
+
names like:
|
|
50
|
+
|
|
51
|
+
foo-project/bar-views/my-design/viewname-map.js
|
|
52
|
+
foo-project/bar-views/my-design/viewname-reduce.js
|
|
53
|
+
foo-project/bar-views/my-design/noreduce-map.js
|
|
54
|
+
|
|
55
|
+
Pushed to => http://127.0.0.1:5984/baz-database/_design/my-design
|
|
56
|
+
|
|
57
|
+
And the design document:
|
|
58
|
+
{
|
|
59
|
+
"views" : {
|
|
60
|
+
"viewname-map" : {
|
|
61
|
+
"map" : "### contents of view-name-map.js ###"
|
|
62
|
+
},
|
|
63
|
+
"viewname-reduce" : {
|
|
64
|
+
"map" : "### contents of view-name-map.js ###",
|
|
65
|
+
"reduce" : "### contents of view-name-reduce.js ###"
|
|
66
|
+
},
|
|
67
|
+
"noreduce-map" : {
|
|
68
|
+
"map" : "### contents of noreduce-map.js ###"
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
Couchview will create a design document for each subdirectory of the views
|
|
74
|
+
directory specified on the command line.
|
|
75
|
+
|
|
76
|
+
== Library Inlining ==
|
|
77
|
+
|
|
78
|
+
Couchview can optionally inline library code into your views so you only have
|
|
79
|
+
to maintain it in one place. It looks for any files named lib.* in your
|
|
80
|
+
design-doc directory (for doc specific libs) and in the parent views directory
|
|
81
|
+
(for project global libs). These libraries are only inserted into views which
|
|
82
|
+
include the text
|
|
83
|
+
|
|
84
|
+
// !include lib
|
|
85
|
+
|
|
86
|
+
or
|
|
87
|
+
|
|
88
|
+
# !include lib
|
|
89
|
+
|
|
90
|
+
Couchview is a result of scratching my own itch. I'd be happy to make it more
|
|
91
|
+
general, so please contact me at jchris@grabb.it if you'd like to see anything
|
|
92
|
+
added or changed.
|
|
93
|
+
|
|
94
|
+
GEN
|
|
95
|
+
helpstring.gsub(/^ /, '')
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
end
|
|
@@ -0,0 +1,396 @@
|
|
|
1
|
+
require 'cgi'
|
|
2
|
+
require "base64"
|
|
3
|
+
|
|
4
|
+
module CouchRest
|
|
5
|
+
class Database
|
|
6
|
+
attr_reader :server, :host, :name, :root, :uri
|
|
7
|
+
attr_accessor :bulk_save_cache_limit
|
|
8
|
+
|
|
9
|
+
# Create a CouchRest::Database adapter for the supplied CouchRest::Server
|
|
10
|
+
# and database name.
|
|
11
|
+
#
|
|
12
|
+
# ==== Parameters
|
|
13
|
+
# server<CouchRest::Server>:: database host
|
|
14
|
+
# name<String>:: database name
|
|
15
|
+
#
|
|
16
|
+
def initialize(server, name)
|
|
17
|
+
@name = name
|
|
18
|
+
@server = server
|
|
19
|
+
@host = server.uri
|
|
20
|
+
@uri = "/#{name.gsub('/','%2F')}"
|
|
21
|
+
@root = host + uri
|
|
22
|
+
@streamer = Streamer.new
|
|
23
|
+
@bulk_save_cache = []
|
|
24
|
+
@bulk_save_cache_limit = 500 # must be smaller than the uuid count
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# == Database information and manipulation methods
|
|
28
|
+
|
|
29
|
+
# returns the database's uri
|
|
30
|
+
def to_s
|
|
31
|
+
@root
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# GET the database info from CouchDB
|
|
35
|
+
def info
|
|
36
|
+
CouchRest.get @root
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# Compact the database, removing old document revisions and optimizing space use.
|
|
40
|
+
def compact!
|
|
41
|
+
CouchRest.post "#{@root}/_compact"
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# Create the database
|
|
45
|
+
def create!
|
|
46
|
+
bool = server.create_db(@name) rescue false
|
|
47
|
+
bool && true
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# Delete and re create the database
|
|
51
|
+
def recreate!
|
|
52
|
+
delete!
|
|
53
|
+
create!
|
|
54
|
+
rescue RestClient::ResourceNotFound
|
|
55
|
+
ensure
|
|
56
|
+
create!
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# Replicates via "pulling" from another database to this database. Makes no attempt to deal with conflicts.
|
|
60
|
+
def replicate_from(other_db, continuous = false, create_target = false, doc_ids = nil)
|
|
61
|
+
replicate(other_db, continuous, :target => name, :create_target => create_target, :doc_ids => doc_ids)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
# Replicates via "pushing" to another database. Makes no attempt to deal with conflicts.
|
|
65
|
+
def replicate_to(other_db, continuous = false, create_target = false, doc_ids = nil)
|
|
66
|
+
replicate(other_db, continuous, :source => name, :create_target => create_target, :doc_ids => doc_ids)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# DELETE the database itself. This is not undoable and could be rather
|
|
70
|
+
# catastrophic. Use with care!
|
|
71
|
+
def delete!
|
|
72
|
+
CouchRest.delete @root
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
# == Retrieving and saving single documents
|
|
77
|
+
|
|
78
|
+
# GET a document from CouchDB, by id. Returns a Document or Design.
|
|
79
|
+
def get(id, params = {})
|
|
80
|
+
slug = escape_docid(id)
|
|
81
|
+
url = CouchRest.paramify_url("#{@root}/#{slug}", params)
|
|
82
|
+
result = CouchRest.get(url)
|
|
83
|
+
return result unless result.is_a?(Hash)
|
|
84
|
+
doc = if /^_design/ =~ result["_id"]
|
|
85
|
+
Design.new(result)
|
|
86
|
+
else
|
|
87
|
+
Document.new(result)
|
|
88
|
+
end
|
|
89
|
+
doc.database = self
|
|
90
|
+
doc
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
# Save a document to CouchDB. This will use the <tt>_id</tt> field from
|
|
94
|
+
# the document as the id for PUT, or request a new UUID from CouchDB, if
|
|
95
|
+
# no <tt>_id</tt> is present on the document. IDs are attached to
|
|
96
|
+
# documents on the client side because POST has the curious property of
|
|
97
|
+
# being automatically retried by proxies in the event of network
|
|
98
|
+
# segmentation and lost responses.
|
|
99
|
+
#
|
|
100
|
+
# If <tt>bulk</tt> is true (false by default) the document is cached for bulk-saving later.
|
|
101
|
+
# Bulk saving happens automatically when #bulk_save_cache limit is exceded, or on the next non bulk save.
|
|
102
|
+
#
|
|
103
|
+
# If <tt>batch</tt> is true (false by default) the document is saved in
|
|
104
|
+
# batch mode, "used to achieve higher throughput at the cost of lower
|
|
105
|
+
# guarantees. When [...] sent using this option, it is not immediately
|
|
106
|
+
# written to disk. Instead it is stored in memory on a per-user basis for a
|
|
107
|
+
# second or so (or the number of docs in memory reaches a certain point).
|
|
108
|
+
# After the threshold has passed, the docs are committed to disk. Instead
|
|
109
|
+
# of waiting for the doc to be written to disk before responding, CouchDB
|
|
110
|
+
# sends an HTTP 202 Accepted response immediately. batch=ok is not suitable
|
|
111
|
+
# for crucial data, but it ideal for applications like logging which can
|
|
112
|
+
# accept the risk that a small proportion of updates could be lost due to a
|
|
113
|
+
# crash."
|
|
114
|
+
def save_doc(doc, bulk = false, batch = false)
|
|
115
|
+
if doc['_attachments']
|
|
116
|
+
doc['_attachments'] = encode_attachments(doc['_attachments'])
|
|
117
|
+
end
|
|
118
|
+
if bulk
|
|
119
|
+
@bulk_save_cache << doc
|
|
120
|
+
bulk_save if @bulk_save_cache.length >= @bulk_save_cache_limit
|
|
121
|
+
return {'ok' => true} # Compatibility with Document#save
|
|
122
|
+
elsif !bulk && @bulk_save_cache.length > 0
|
|
123
|
+
bulk_save
|
|
124
|
+
end
|
|
125
|
+
result = if doc['_id']
|
|
126
|
+
slug = escape_docid(doc['_id'])
|
|
127
|
+
begin
|
|
128
|
+
uri = "#{@root}/#{slug}"
|
|
129
|
+
uri << "?batch=ok" if batch
|
|
130
|
+
CouchRest.put uri, doc
|
|
131
|
+
rescue RestClient::ResourceNotFound
|
|
132
|
+
p "resource not found when saving even tho an id was passed"
|
|
133
|
+
slug = doc['_id'] = @server.next_uuid
|
|
134
|
+
CouchRest.put "#{@root}/#{slug}", doc
|
|
135
|
+
end
|
|
136
|
+
else
|
|
137
|
+
begin
|
|
138
|
+
slug = doc['_id'] = @server.next_uuid
|
|
139
|
+
CouchRest.put "#{@root}/#{slug}", doc
|
|
140
|
+
rescue #old version of couchdb
|
|
141
|
+
CouchRest.post @root, doc
|
|
142
|
+
end
|
|
143
|
+
end
|
|
144
|
+
if result['ok']
|
|
145
|
+
doc['_id'] = result['id']
|
|
146
|
+
doc['_rev'] = result['rev']
|
|
147
|
+
doc.database = self if doc.respond_to?(:database=)
|
|
148
|
+
end
|
|
149
|
+
result
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
# Save a document to CouchDB in bulk mode. See #save_doc's +bulk+ argument.
|
|
153
|
+
def bulk_save_doc(doc)
|
|
154
|
+
save_doc(doc, true)
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
# Save a document to CouchDB in batch mode. See #save_doc's +batch+ argument.
|
|
158
|
+
def batch_save_doc(doc)
|
|
159
|
+
save_doc(doc, false, true)
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
# POST an array of documents to CouchDB. If any of the documents are
|
|
163
|
+
# missing ids, supply one from the uuid cache.
|
|
164
|
+
#
|
|
165
|
+
# If called with no arguments, bulk saves the cache of documents to be bulk saved.
|
|
166
|
+
def bulk_save(docs = nil, use_uuids = true)
|
|
167
|
+
if docs.nil?
|
|
168
|
+
docs = @bulk_save_cache
|
|
169
|
+
@bulk_save_cache = []
|
|
170
|
+
end
|
|
171
|
+
if (use_uuids)
|
|
172
|
+
ids, noids = docs.partition{|d|d['_id']}
|
|
173
|
+
uuid_count = [noids.length, @server.uuid_batch_count].max
|
|
174
|
+
noids.each do |doc|
|
|
175
|
+
nextid = @server.next_uuid(uuid_count) rescue nil
|
|
176
|
+
doc['_id'] = nextid if nextid
|
|
177
|
+
end
|
|
178
|
+
end
|
|
179
|
+
CouchRest.post "#{@root}/_bulk_docs", {:docs => docs}
|
|
180
|
+
end
|
|
181
|
+
alias :bulk_delete :bulk_save
|
|
182
|
+
|
|
183
|
+
# DELETE the document from CouchDB that has the given <tt>_id</tt> and
|
|
184
|
+
# <tt>_rev</tt>.
|
|
185
|
+
#
|
|
186
|
+
# If <tt>bulk</tt> is true (false by default) the deletion is recorded for bulk-saving (bulk-deletion :) later.
|
|
187
|
+
# Bulk saving happens automatically when #bulk_save_cache limit is exceded, or on the next non bulk save.
|
|
188
|
+
def delete_doc(doc, bulk = false)
|
|
189
|
+
raise ArgumentError, "_id and _rev required for deleting" unless doc['_id'] && doc['_rev']
|
|
190
|
+
if bulk
|
|
191
|
+
@bulk_save_cache << { '_id' => doc['_id'], '_rev' => doc['_rev'], :_deleted => true }
|
|
192
|
+
return bulk_save if @bulk_save_cache.length >= @bulk_save_cache_limit
|
|
193
|
+
return {'ok' => true} # Mimic the non-deferred version
|
|
194
|
+
end
|
|
195
|
+
slug = escape_docid(doc['_id'])
|
|
196
|
+
CouchRest.delete "#{@root}/#{slug}?rev=#{doc['_rev']}"
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
# COPY an existing document to a new id. If the destination id currently exists, a rev must be provided.
|
|
200
|
+
# <tt>dest</tt> can take one of two forms if overwriting: "id_to_overwrite?rev=revision" or the actual doc
|
|
201
|
+
# hash with a '_rev' key
|
|
202
|
+
def copy_doc(doc, dest)
|
|
203
|
+
raise ArgumentError, "_id is required for copying" unless doc['_id']
|
|
204
|
+
slug = escape_docid(doc['_id'])
|
|
205
|
+
destination = if dest.respond_to?(:has_key?) && dest['_id'] && dest['_rev']
|
|
206
|
+
"#{dest['_id']}?rev=#{dest['_rev']}"
|
|
207
|
+
else
|
|
208
|
+
dest
|
|
209
|
+
end
|
|
210
|
+
CouchRest.copy "#{@root}/#{slug}", destination
|
|
211
|
+
end
|
|
212
|
+
|
|
213
|
+
# Updates the given doc by yielding the current state of the doc
|
|
214
|
+
# and trying to update update_limit times. Returns the doc
|
|
215
|
+
# if successfully updated without hitting the limit.
|
|
216
|
+
# If the limit is reached, the last execption will be raised.
|
|
217
|
+
def update_doc(doc_id, params = {}, update_limit = 10)
|
|
218
|
+
resp = {'ok' => false}
|
|
219
|
+
last_fail = nil
|
|
220
|
+
|
|
221
|
+
until resp['ok'] or update_limit <= 0
|
|
222
|
+
doc = self.get(doc_id, params)
|
|
223
|
+
yield doc
|
|
224
|
+
begin
|
|
225
|
+
resp = self.save_doc doc
|
|
226
|
+
rescue RestClient::RequestFailed => e
|
|
227
|
+
if e.http_code == 409 # Update collision
|
|
228
|
+
update_limit -= 1
|
|
229
|
+
last_fail = e
|
|
230
|
+
else
|
|
231
|
+
raise e
|
|
232
|
+
end
|
|
233
|
+
end
|
|
234
|
+
end
|
|
235
|
+
|
|
236
|
+
raise last_fail unless resp['ok']
|
|
237
|
+
doc
|
|
238
|
+
end
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
# == View and multi-document based queries
|
|
242
|
+
|
|
243
|
+
# Query a CouchDB view as defined by a <tt>_design</tt> document. Accepts
|
|
244
|
+
# paramaters as described in http://wiki.apache.org/couchdb/HttpViewApi
|
|
245
|
+
def view(name, params = {}, payload = {}, &block)
|
|
246
|
+
payload['keys'] = params.delete(:keys) if params[:keys]
|
|
247
|
+
# Try recognising the name, otherwise assume already prepared
|
|
248
|
+
view_path = name_to_view_path(name)
|
|
249
|
+
url = CouchRest.paramify_url "#{@root}/#{view_path}", params
|
|
250
|
+
if block_given?
|
|
251
|
+
if !payload.empty?
|
|
252
|
+
@streamer.post url, payload, &block
|
|
253
|
+
else
|
|
254
|
+
@streamer.get url, &block
|
|
255
|
+
end
|
|
256
|
+
else
|
|
257
|
+
if !payload.empty?
|
|
258
|
+
CouchRest.post url, payload
|
|
259
|
+
else
|
|
260
|
+
CouchRest.get url
|
|
261
|
+
end
|
|
262
|
+
end
|
|
263
|
+
end
|
|
264
|
+
|
|
265
|
+
# POST a temporary view function to CouchDB for querying. This is not
|
|
266
|
+
# recommended, as you don't get any performance benefit from CouchDB's
|
|
267
|
+
# materialized views. Can be quite slow on large databases.
|
|
268
|
+
def temp_view(payload, params = {}, &block)
|
|
269
|
+
view('_temp_view', params, payload, &block)
|
|
270
|
+
end
|
|
271
|
+
alias :slow_view :temp_view
|
|
272
|
+
|
|
273
|
+
|
|
274
|
+
# Query the <tt>_all_docs</tt> view. Accepts all the same arguments as view.
|
|
275
|
+
def all_docs(params = {}, payload = {}, &block)
|
|
276
|
+
view("_all_docs", params, payload, &block)
|
|
277
|
+
end
|
|
278
|
+
alias :documents :all_docs
|
|
279
|
+
|
|
280
|
+
# Query CouchDB's special <tt>_changes</tt> feed for the latest.
|
|
281
|
+
# All standard CouchDB options can be provided.
|
|
282
|
+
#
|
|
283
|
+
# Warning: sending :feed => 'continuous' will cause your code to block
|
|
284
|
+
# indefinetly while waiting for changes. You might want to look-up an
|
|
285
|
+
# alternative to this.
|
|
286
|
+
def changes(params = {}, payload = {}, &block)
|
|
287
|
+
view("_changes", params, payload, &block)
|
|
288
|
+
end
|
|
289
|
+
|
|
290
|
+
# Query a CouchDB-Lucene search view
|
|
291
|
+
def fti(name, params={})
|
|
292
|
+
# -> http://localhost:5984/yourdb/_fti/YourDesign/by_name?include_docs=true&q=plop*'
|
|
293
|
+
view("_fti/#{name}", params)
|
|
294
|
+
end
|
|
295
|
+
alias :search :fti
|
|
296
|
+
|
|
297
|
+
# load a set of documents by passing an array of ids
|
|
298
|
+
def get_bulk(ids)
|
|
299
|
+
all_docs(:keys => ids, :include_docs => true)
|
|
300
|
+
end
|
|
301
|
+
alias :bulk_load :get_bulk
|
|
302
|
+
|
|
303
|
+
|
|
304
|
+
# == Handling attachments
|
|
305
|
+
|
|
306
|
+
# GET an attachment directly from CouchDB
|
|
307
|
+
def fetch_attachment(doc, name)
|
|
308
|
+
uri = url_for_attachment(doc, name)
|
|
309
|
+
CouchRest.get uri, :raw => true
|
|
310
|
+
end
|
|
311
|
+
|
|
312
|
+
# PUT an attachment directly to CouchDB
|
|
313
|
+
def put_attachment(doc, name, file, options = {})
|
|
314
|
+
docid = escape_docid(doc['_id'])
|
|
315
|
+
uri = url_for_attachment(doc, name)
|
|
316
|
+
CouchRest.put(uri, file, options.merge(:raw => true))
|
|
317
|
+
end
|
|
318
|
+
|
|
319
|
+
# DELETE an attachment directly from CouchDB
|
|
320
|
+
def delete_attachment(doc, name, force=false)
|
|
321
|
+
uri = url_for_attachment(doc, name)
|
|
322
|
+
# this needs a rev
|
|
323
|
+
begin
|
|
324
|
+
CouchRest.delete(uri)
|
|
325
|
+
rescue Exception => error
|
|
326
|
+
if force
|
|
327
|
+
# get over a 409
|
|
328
|
+
doc = get(doc['_id'])
|
|
329
|
+
uri = url_for_attachment(doc, name)
|
|
330
|
+
CouchRest.delete(uri)
|
|
331
|
+
else
|
|
332
|
+
error
|
|
333
|
+
end
|
|
334
|
+
end
|
|
335
|
+
end
|
|
336
|
+
|
|
337
|
+
|
|
338
|
+
|
|
339
|
+
private
|
|
340
|
+
|
|
341
|
+
def replicate(other_db, continuous, options)
|
|
342
|
+
raise ArgumentError, "must provide a CouchReset::Database" unless other_db.kind_of?(CouchRest::Database)
|
|
343
|
+
raise ArgumentError, "must provide a target or source option" unless (options.key?(:target) || options.key?(:source))
|
|
344
|
+
payload = options
|
|
345
|
+
if options.has_key?(:target)
|
|
346
|
+
payload['source'] = other_db.root
|
|
347
|
+
else
|
|
348
|
+
payload['target'] = other_db.root
|
|
349
|
+
end
|
|
350
|
+
payload['continuous'] = continuous
|
|
351
|
+
payload['doc_ids'] = options[:doc_ids] if options[:doc_ids]
|
|
352
|
+
CouchRest.post "#{@host}/_replicate", payload
|
|
353
|
+
end
|
|
354
|
+
|
|
355
|
+
def uri_for_attachment(doc, name)
|
|
356
|
+
if doc.is_a?(String)
|
|
357
|
+
puts "CouchRest::Database#fetch_attachment will eventually require a doc as the first argument, not a doc.id"
|
|
358
|
+
docid = doc
|
|
359
|
+
rev = nil
|
|
360
|
+
else
|
|
361
|
+
docid = doc['_id']
|
|
362
|
+
rev = doc['_rev']
|
|
363
|
+
end
|
|
364
|
+
docid = escape_docid(docid)
|
|
365
|
+
name = CGI.escape(name)
|
|
366
|
+
rev = "?rev=#{doc['_rev']}" if rev
|
|
367
|
+
"/#{docid}/#{name}#{rev}"
|
|
368
|
+
end
|
|
369
|
+
|
|
370
|
+
def url_for_attachment(doc, name)
|
|
371
|
+
@root + uri_for_attachment(doc, name)
|
|
372
|
+
end
|
|
373
|
+
|
|
374
|
+
def escape_docid id
|
|
375
|
+
/^_design\/(.*)/ =~ id ? "_design/#{CGI.escape($1)}" : CGI.escape(id)
|
|
376
|
+
end
|
|
377
|
+
|
|
378
|
+
def encode_attachments(attachments)
|
|
379
|
+
attachments.each do |k,v|
|
|
380
|
+
next if v['stub']
|
|
381
|
+
v['data'] = base64(v['data'])
|
|
382
|
+
end
|
|
383
|
+
attachments
|
|
384
|
+
end
|
|
385
|
+
|
|
386
|
+
def base64(data)
|
|
387
|
+
Base64.encode64(data).gsub(/\s/,'')
|
|
388
|
+
end
|
|
389
|
+
|
|
390
|
+
# Convert a simplified view name into a complete view path. If
|
|
391
|
+
# the name already starts with a "_" no alterations will be made.
|
|
392
|
+
def name_to_view_path(name)
|
|
393
|
+
name =~ /^([^_].+?)\/(.*)$/ ? "_design/#{$1}/_view/#{$2}" : name
|
|
394
|
+
end
|
|
395
|
+
end
|
|
396
|
+
end
|