├── metamail-ui ├── .gitignore ├── Procfile ├── node_modules │ ├── ejs │ │ ├── .gitmodules │ │ ├── test │ │ │ └── fixtures │ │ │ │ ├── backslash.ejs │ │ │ │ ├── backslash.html │ │ │ │ ├── para.ejs │ │ │ │ ├── user.ejs │ │ │ │ ├── pet.ejs │ │ │ │ ├── double-quote.html │ │ │ │ ├── single-quote.html │ │ │ │ ├── single-quote.ejs │ │ │ │ ├── style.css │ │ │ │ ├── includes │ │ │ │ ├── menu-item.ejs │ │ │ │ └── menu │ │ │ │ │ └── item.ejs │ │ │ │ ├── double-quote.ejs │ │ │ │ ├── messed.html │ │ │ │ ├── include.css.html │ │ │ │ ├── include.css.ejs │ │ │ │ ├── messed.ejs │ │ │ │ ├── error.ejs │ │ │ │ ├── no.newlines.html │ │ │ │ ├── include.ejs │ │ │ │ ├── menu.html │ │ │ │ ├── include.html │ │ │ │ ├── newlines.ejs │ │ │ │ ├── no.newlines.ejs │ │ │ │ ├── newlines.html │ │ │ │ ├── error.out │ │ │ │ └── menu.ejs │ │ ├── index.js │ │ ├── .npmignore │ │ ├── examples │ │ │ ├── list.ejs │ │ │ ├── list.js │ │ │ └── client.html │ │ ├── benchmark.js │ │ ├── package.json │ │ ├── Makefile │ │ ├── lib │ │ │ └── utils.js │ │ └── History.md │ ├── .bin │ │ └── express │ └── express │ │ ├── testing │ │ ├── views │ │ │ ├── page.html │ │ │ ├── user │ │ │ │ ├── index.jade │ │ │ │ └── list.jade │ │ │ ├── test.md │ │ │ └── page.jade │ │ ├── foo │ │ │ ├── views │ │ │ │ ├── index.jade │ │ │ │ └── layout.jade │ │ │ ├── public │ │ │ │ └── stylesheets │ │ │ │ │ └── style.css │ │ │ ├── package.json │ │ │ ├── routes │ │ │ │ └── index.js │ │ │ └── app.js │ │ └── index.js │ │ ├── node_modules │ │ ├── qs │ │ │ ├── .npmignore │ │ │ ├── test │ │ │ │ └── mocha.opts │ │ │ ├── index.js │ │ │ ├── .travis.yml │ │ │ ├── Makefile │ │ │ ├── .gitmodules │ │ │ ├── benchmark.js │ │ │ ├── package.json │ │ │ ├── examples.js │ │ │ ├── History.md │ │ │ └── Readme.md │ │ ├── mkdirp │ │ │ ├── .npmignore │ │ │ ├── .gitignore.orig │ │ │ ├── .gitignore.rej │ │ │ ├── examples │ │ │ │ ├── pow.js │ │ │ │ ├── pow.js.orig │ │ │ │ └── pow.js.rej │ │ │ ├── package.json │ │ │ ├── test │ │ │ │ ├── sync.js │ │ │ │ ├── clobber.js │ │ │ │ ├── umask_sync.js │ │ │ │ ├── perm.js │ │ │ │ ├── mkdirp.js │ │ │ │ ├── umask.js │ │ │ │ ├── rel.js │ │ │ │ ├── chmod.js │ │ │ │ ├── perm_sync.js │ │ │ │ └── race.js │ │ │ ├── README.markdown │ │ │ ├── LICENSE │ │ │ └── index.js │ │ ├── connect │ │ │ ├── index.js │ │ │ ├── node_modules │ │ │ │ └── formidable │ │ │ │ │ ├── index.js │ │ │ │ │ ├── test │ │ │ │ │ ├── fixture │ │ │ │ │ │ ├── file │ │ │ │ │ │ │ ├── plain.txt │ │ │ │ │ │ │ └── funkyfilename.txt │ │ │ │ │ │ ├── js │ │ │ │ │ │ │ ├── no-filename.js │ │ │ │ │ │ │ └── special-chars-in-filename.js │ │ │ │ │ │ ├── http │ │ │ │ │ │ │ └── special-chars-in-filename │ │ │ │ │ │ │ │ └── info.md │ │ │ │ │ │ └── multipart.js │ │ │ │ │ ├── run.js │ │ │ │ │ ├── common.js │ │ │ │ │ ├── legacy │ │ │ │ │ │ ├── common.js │ │ │ │ │ │ ├── simple │ │ │ │ │ │ │ ├── test-querystring-parser.js │ │ │ │ │ │ │ ├── test-multipart-parser.js │ │ │ │ │ │ │ └── test-file.js │ │ │ │ │ │ ├── integration │ │ │ │ │ │ │ └── test-multipart-parser.js │ │ │ │ │ │ └── system │ │ │ │ │ │ │ └── test-multi-video-upload.js │ │ │ │ │ ├── unit │ │ │ │ │ │ └── test-incoming-form.js │ │ │ │ │ └── integration │ │ │ │ │ │ └── test-fixtures.js │ │ │ │ │ ├── .npmignore │ │ │ │ │ ├── node-gently │ │ │ │ │ ├── index.js │ │ │ │ │ ├── lib │ │ │ │ │ │ └── gently │ │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── test │ │ │ │ │ │ └── common.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── example │ │ │ │ │ │ ├── event_emitter.js │ │ │ │ │ │ └── dog.js │ │ │ │ │ ├── .travis.yml │ │ │ │ │ ├── lib │ │ │ │ │ ├── index.js │ │ │ │ │ ├── util.js │ │ │ │ │ ├── querystring_parser.js │ │ │ │ │ └── file.js │ │ │ │ │ ├── TODO │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── package.json │ │ │ │ │ ├── example │ │ │ │ │ ├── post.js │ │ │ │ │ └── upload.js │ │ │ │ │ ├── tool │ │ │ │ │ └── record.js │ │ │ │ │ └── benchmark │ │ │ │ │ └── bench-multipart-parser.js │ │ │ ├── lib │ │ │ │ ├── public │ │ │ │ │ ├── favicon.ico │ │ │ │ │ ├── icons │ │ │ │ │ │ ├── page.png │ │ │ │ │ │ ├── page_add.png │ │ │ │ │ │ ├── page_code.png │ │ │ │ │ │ ├── page_copy.png │ │ │ │ │ │ ├── page_edit.png │ │ │ │ │ │ ├── page_find.png │ │ │ │ │ │ ├── page_gear.png │ │ │ │ │ │ ├── page_go.png │ │ │ │ │ │ ├── page_key.png │ │ │ │ │ │ ├── page_link.png │ │ │ │ │ │ ├── page_red.png │ │ │ │ │ │ ├── page_save.png │ │ │ │ │ │ ├── page_word.png │ │ │ │ │ │ ├── page_attach.png │ │ │ │ │ │ ├── page_delete.png │ │ │ │ │ │ ├── page_error.png │ │ │ │ │ │ ├── page_excel.png │ │ │ │ │ │ ├── page_green.png │ │ │ │ │ │ ├── page_paste.png │ │ │ │ │ │ ├── page_white.png │ │ │ │ │ │ ├── page_world.png │ │ │ │ │ │ ├── page_lightning.png │ │ │ │ │ │ ├── page_refresh.png │ │ │ │ │ │ ├── page_white_add.png │ │ │ │ │ │ ├── page_white_c.png │ │ │ │ │ │ ├── page_white_cd.png │ │ │ │ │ │ ├── page_white_cup.png │ │ │ │ │ │ ├── page_white_dvd.png │ │ │ │ │ │ ├── page_white_get.png │ │ │ │ │ │ ├── page_white_go.png │ │ │ │ │ │ ├── page_white_h.png │ │ │ │ │ │ ├── page_white_key.png │ │ │ │ │ │ ├── page_white_php.png │ │ │ │ │ │ ├── page_white_put.png │ │ │ │ │ │ ├── page_white_tux.png │ │ │ │ │ │ ├── page_white_zip.png │ │ │ │ │ │ ├── page_paintbrush.png │ │ │ │ │ │ ├── page_white_code.png │ │ │ │ │ │ ├── page_white_copy.png │ │ │ │ │ │ ├── page_white_edit.png │ │ │ │ │ │ ├── page_white_error.png │ │ │ │ │ │ ├── page_white_excel.png │ │ │ │ │ │ ├── page_white_find.png │ │ │ │ │ │ ├── page_white_flash.png │ │ │ │ │ │ ├── page_white_gear.png │ │ │ │ │ │ ├── page_white_link.png │ │ │ │ │ │ ├── page_white_medal.png │ │ │ │ │ │ ├── page_white_paint.png │ │ │ │ │ │ ├── page_white_paste.png │ │ │ │ │ │ ├── page_white_ruby.png │ │ │ │ │ │ ├── page_white_stack.png │ │ │ │ │ │ ├── page_white_star.png │ │ │ │ │ │ ├── page_white_text.png │ │ │ │ │ │ ├── page_white_width.png │ │ │ │ │ │ ├── page_white_word.png │ │ │ │ │ │ ├── page_white_world.png │ │ │ │ │ │ ├── page_white_acrobat.png │ │ │ │ │ │ ├── page_white_camera.png │ │ │ │ │ │ ├── page_white_code_red.png │ │ │ │ │ │ ├── page_white_csharp.png │ │ │ │ │ │ ├── page_white_database.png │ │ │ │ │ │ ├── page_white_delete.png │ │ │ │ │ │ ├── page_white_freehand.png │ │ │ │ │ │ ├── page_white_magnify.png │ │ │ │ │ │ ├── page_white_office.png │ │ │ │ │ │ ├── page_white_picture.png │ │ │ │ │ │ ├── page_white_swoosh.png │ │ │ │ │ │ ├── page_white_vector.png │ │ │ │ │ │ ├── page_white_wrench.png │ │ │ │ │ │ ├── page_white_coldfusion.png │ │ │ │ │ │ ├── page_white_compressed.png │ │ │ │ │ │ ├── page_white_cplusplus.png │ │ │ │ │ │ ├── page_white_horizontal.png │ │ │ │ │ │ ├── page_white_lightning.png │ │ │ │ │ │ ├── page_white_paintbrush.png │ │ │ │ │ │ ├── page_white_powerpoint.png │ │ │ │ │ │ ├── page_white_text_width.png │ │ │ │ │ │ ├── page_white_actionscript.png │ │ │ │ │ │ └── page_white_visualstudio.png │ │ │ │ │ ├── error.html │ │ │ │ │ └── directory.html │ │ │ │ ├── middleware │ │ │ │ │ ├── responseTime.js │ │ │ │ │ ├── query.js │ │ │ │ │ ├── cookieParser.js │ │ │ │ │ ├── methodOverride.js │ │ │ │ │ ├── vhost.js │ │ │ │ │ ├── limit.js │ │ │ │ │ ├── favicon.js │ │ │ │ │ ├── session │ │ │ │ │ │ ├── store.js │ │ │ │ │ │ └── cookie.js │ │ │ │ │ ├── profiler.js │ │ │ │ │ └── basicAuth.js │ │ │ │ ├── https.js │ │ │ │ ├── cache.js │ │ │ │ ├── patch.js │ │ │ │ ├── index.js │ │ │ │ └── connect.js │ │ │ ├── .npmignore │ │ │ ├── test.js │ │ │ ├── package.json │ │ │ └── LICENSE │ │ └── mime │ │ │ ├── package.json │ │ │ ├── LICENSE │ │ │ ├── types │ │ │ └── node.types │ │ │ ├── README.md │ │ │ ├── test.js │ │ │ └── mime.js │ │ ├── index.js │ │ ├── .npmignore │ │ ├── Makefile │ │ ├── lib │ │ ├── view │ │ │ └── partial.js │ │ ├── router │ │ │ ├── collection.js │ │ │ ├── methods.js │ │ │ └── route.js │ │ ├── https.js │ │ └── express.js │ │ ├── LICENSE │ │ └── package.json ├── views │ ├── .scatterchart │ │ ├── main.ejs │ │ ├── index.ejs │ │ └── scatterchart.js │ ├── index.ejs │ └── graphics │ │ └── bar.ejs ├── public │ ├── img │ │ └── igalia-logo-mini.png │ ├── csv │ │ ├── msg-by-year.csv │ │ ├── msg-by-day-week.csv │ │ ├── msg-by-month-2001.csv │ │ ├── msg-by-size.csv │ │ ├── msg-by-hour-day.csv │ │ ├── msg-thread-length.csv │ │ ├── msg-by-month.csv │ │ ├── msg-received.csv │ │ └── msg-sent.csv │ └── stylesheets │ │ ├── style.css │ │ ├── histogram.css │ │ ├── bar.css │ │ └── base.css ├── package.json ├── app.js └── routes │ └── index.js ├── enron-importer ├── .gitignore ├── .settings │ ├── org.eclipse.m2e.core.prefs │ ├── org.eclipse.core.resources.prefs │ └── org.eclipse.jdt.core.prefs ├── .classpath ├── .project ├── src │ └── test │ │ └── java │ │ └── com │ │ └── igalia │ │ └── mail_importer │ │ └── AppTest.java ├── README.rst └── pom.xml ├── mail-analyzer ├── .gitignore ├── src │ ├── main │ │ └── java │ │ │ └── com │ │ │ └── igalia │ │ │ └── metamail │ │ │ ├── utils │ │ │ ├── DBSetup.java │ │ │ └── JobRunner.java │ │ │ └── Main.java │ └── test │ │ └── java │ │ └── com │ │ └── igalia │ │ └── AppTest.java ├── benchmark │ ├── bySize.csv │ ├── msgReceived.csv │ ├── msgSent.csv │ ├── byTimePeriod.csv │ └── byThreadLength.csv └── README.md ├── AUTHORS ├── CHANGELOG └── BENCHMARK.rst /metamail-ui/.gitignore: -------------------------------------------------------------------------------- 1 | *.swp 2 | -------------------------------------------------------------------------------- /metamail-ui/Procfile: -------------------------------------------------------------------------------- 1 | web: node app.js 2 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/ejs/.gitmodules: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /metamail-ui/views/.scatterchart/main.ejs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /enron-importer/.gitignore: -------------------------------------------------------------------------------- 1 | target/ 2 | data/ 3 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/.bin/express: -------------------------------------------------------------------------------- 1 | ../express/bin/express -------------------------------------------------------------------------------- /metamail-ui/node_modules/ejs/test/fixtures/backslash.ejs: -------------------------------------------------------------------------------- 1 | \foo -------------------------------------------------------------------------------- /metamail-ui/node_modules/ejs/test/fixtures/backslash.html: -------------------------------------------------------------------------------- 1 | \foo -------------------------------------------------------------------------------- /metamail-ui/node_modules/ejs/test/fixtures/para.ejs: -------------------------------------------------------------------------------- 1 |

hey

-------------------------------------------------------------------------------- /metamail-ui/node_modules/ejs/test/fixtures/user.ejs: -------------------------------------------------------------------------------- 1 |

{= name}

-------------------------------------------------------------------------------- /metamail-ui/node_modules/express/testing/views/page.html: -------------------------------------------------------------------------------- 1 | p register test -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/testing/views/user/index.jade: -------------------------------------------------------------------------------- 1 | p user page -------------------------------------------------------------------------------- /metamail-ui/node_modules/ejs/test/fixtures/pet.ejs: -------------------------------------------------------------------------------- 1 |
  • <%= pet.name %>
  • -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/qs/.npmignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/testing/views/test.md: -------------------------------------------------------------------------------- 1 | testing _some_ markdown -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/testing/views/user/list.jade: -------------------------------------------------------------------------------- 1 | p user list page -------------------------------------------------------------------------------- /mail-analyzer/.gitignore: -------------------------------------------------------------------------------- 1 | .classpath 2 | .project 3 | .settings/ 4 | target/ 5 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/ejs/index.js: -------------------------------------------------------------------------------- 1 | 2 | module.exports = require('./lib/ejs'); -------------------------------------------------------------------------------- /metamail-ui/node_modules/ejs/test/fixtures/double-quote.html: -------------------------------------------------------------------------------- 1 |

    loki's "wheelchair"

    -------------------------------------------------------------------------------- /metamail-ui/node_modules/ejs/test/fixtures/single-quote.html: -------------------------------------------------------------------------------- 1 |

    loki's wheelchair

    -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/index.js: -------------------------------------------------------------------------------- 1 | 2 | module.exports = require('./lib/express'); -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/testing/views/page.jade: -------------------------------------------------------------------------------- 1 | html 2 | body 3 | h1 test -------------------------------------------------------------------------------- /metamail-ui/node_modules/ejs/test/fixtures/single-quote.ejs: -------------------------------------------------------------------------------- 1 |

    <%= 'loki' %>'s wheelchair

    -------------------------------------------------------------------------------- /metamail-ui/node_modules/ejs/test/fixtures/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | foo: '<%= value %>'; 3 | } -------------------------------------------------------------------------------- /metamail-ui/node_modules/ejs/test/fixtures/includes/menu-item.ejs: -------------------------------------------------------------------------------- 1 |
  • <% include menu/item %>
  • -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/mkdirp/.npmignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | npm-debug.log -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/testing/foo/views/index.jade: -------------------------------------------------------------------------------- 1 | h1= title 2 | p Welcome to #{title} -------------------------------------------------------------------------------- /metamail-ui/node_modules/ejs/test/fixtures/double-quote.ejs: -------------------------------------------------------------------------------- 1 |

    <%= "lo" + 'ki' %>'s "wheelchair"

    -------------------------------------------------------------------------------- /metamail-ui/node_modules/ejs/test/fixtures/includes/menu/item.ejs: -------------------------------------------------------------------------------- 1 | <%= title %> -------------------------------------------------------------------------------- /metamail-ui/node_modules/ejs/test/fixtures/messed.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/mkdirp/.gitignore.orig: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | npm-debug.log -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/qs/test/mocha.opts: -------------------------------------------------------------------------------- 1 | --require should 2 | --ui exports 3 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/ejs/test/fixtures/include.css.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/qs/index.js: -------------------------------------------------------------------------------- 1 | 2 | module.exports = require('./lib/querystring'); -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/index.js: -------------------------------------------------------------------------------- 1 | 2 | module.exports = require('./lib/connect'); -------------------------------------------------------------------------------- /metamail-ui/node_modules/ejs/.npmignore: -------------------------------------------------------------------------------- 1 | # ignore any vim files: 2 | *.sw[a-z] 3 | vim/.netrwhist 4 | node_modules 5 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/qs/.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - 0.6 4 | - 0.4 -------------------------------------------------------------------------------- /metamail-ui/node_modules/ejs/test/fixtures/include.css.ejs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/qs/Makefile: -------------------------------------------------------------------------------- 1 | 2 | test: 3 | @./node_modules/.bin/mocha 4 | 5 | .PHONY: test -------------------------------------------------------------------------------- /metamail-ui/node_modules/ejs/test/fixtures/messed.ejs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/ejs/test/fixtures/error.ejs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/.npmignore: -------------------------------------------------------------------------------- 1 | .git* 2 | docs/ 3 | examples/ 4 | support/ 5 | test/ 6 | testing.js 7 | .DS_Store 8 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/node_modules/formidable/index.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./lib/formidable'); -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/plain.txt: -------------------------------------------------------------------------------- 1 | I am a plain text file 2 | -------------------------------------------------------------------------------- /AUTHORS: -------------------------------------------------------------------------------- 1 | # Authors ordered by first contribution. 2 | Diego Pino 3 | Dustin Saunders 4 | -------------------------------------------------------------------------------- /CHANGELOG: -------------------------------------------------------------------------------- 1 | CHANGELOG 2 | 3 | 2015-11-10: Updated enron-importer with dependency and API updates 4 | 5 | 2012-08-01: Initial release 6 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/node_modules/formidable/.npmignore: -------------------------------------------------------------------------------- 1 | /test/tmp/ 2 | *.upload 3 | *.un~ 4 | *.http 5 | -------------------------------------------------------------------------------- /metamail-ui/public/img/igalia-logo-mini.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/public/img/igalia-logo-mini.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/ejs/test/fixtures/no.newlines.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/index.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./lib/gently'); -------------------------------------------------------------------------------- /metamail-ui/public/csv/msg-by-year.csv: -------------------------------------------------------------------------------- 1 | label,value 2 | 1997,437 3 | 1998,177 4 | 1999,11144 5 | 2000,196094 6 | 2001,272956 7 | 2002,36011 8 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/node_modules/formidable/.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - 0.4 4 | - 0.6 5 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/lib/gently/index.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./gently'); -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/node_modules/formidable/test/run.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | require('urun')(__dirname) 3 | -------------------------------------------------------------------------------- /enron-importer/.settings/org.eclipse.m2e.core.prefs: -------------------------------------------------------------------------------- 1 | activeProfiles= 2 | eclipse.preferences.version=1 3 | resolveWorkspaceProjects=true 4 | version=1 5 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/ejs/test/fixtures/include.ejs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/funkyfilename.txt: -------------------------------------------------------------------------------- 1 | I am a text file with a funky name! 2 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/ejs/test/fixtures/menu.html: -------------------------------------------------------------------------------- 1 |
  • Foo
  • 2 |
  • Bar
  • 3 |
  • Baz
  • -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/mkdirp/.gitignore.rej: -------------------------------------------------------------------------------- 1 | --- /dev/null 2 | +++ .gitignore 3 | @@ -0,0 +1,2 @@ 4 | +node_modules/ 5 | +npm-debug.log -------------------------------------------------------------------------------- /metamail-ui/node_modules/ejs/test/fixtures/include.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/ejs/test/fixtures/newlines.ejs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/ejs/test/fixtures/no.newlines.ejs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/ejs/test/fixtures/newlines.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /metamail-ui/public/stylesheets/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | padding: 50px; 3 | font: 14px "Lucida Grande", Helvetica, Arial, sans-serif; 4 | } 5 | 6 | a { 7 | color: #00B7FF; 8 | } -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/Makefile: -------------------------------------------------------------------------------- 1 | test: 2 | @find test/simple/test-*.js | xargs -n 1 -t node 3 | 4 | .PHONY: test -------------------------------------------------------------------------------- /enron-importer/.settings/org.eclipse.core.resources.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | encoding//src/main/java=UTF-8 3 | encoding//src/test/java=UTF-8 4 | encoding/=UTF-8 5 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/testing/foo/views/layout.jade: -------------------------------------------------------------------------------- 1 | !!! 2 | html 3 | head 4 | title= title 5 | link(rel='stylesheet', href='/stylesheets/style.css') 6 | body!= body -------------------------------------------------------------------------------- /metamail-ui/public/csv/msg-by-day-week.csv: -------------------------------------------------------------------------------- 1 | label,value 2 | Sunday,10106 3 | Monday,94382 4 | Tuesday,105763 5 | Wednesday,106812 6 | Thursday,97535 7 | Friday,91445 8 | Saturday,11381 9 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/ejs/examples/list.ejs: -------------------------------------------------------------------------------- 1 | <% if (names.length) { %> 2 |
      3 | <% names.forEach(function(name){ %> 4 |
    • <%= name %>
    • 5 | <% }) %> 6 |
    7 | <% } %> -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/favicon.ico -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page.png -------------------------------------------------------------------------------- /mail-analyzer/src/main/java/com/igalia/metamail/utils/DBSetup.java: -------------------------------------------------------------------------------- 1 | package com.igalia.metamail.utils; 2 | 3 | public class DBSetup { 4 | 5 | public static final String tablename = "enron"; 6 | 7 | } 8 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/testing/foo/public/stylesheets/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | padding: 50px; 3 | font: 14px "Lucida Grande", Helvetica, Arial, sans-serif; 4 | } 5 | 6 | a { 7 | color: #00B7FF; 8 | } -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/.npmignore: -------------------------------------------------------------------------------- 1 | *.markdown 2 | *.md 3 | .git* 4 | Makefile 5 | benchmarks/ 6 | docs/ 7 | examples/ 8 | install.sh 9 | support/ 10 | test/ 11 | .DS_Store 12 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_add.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_code.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_code.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_copy.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_edit.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_find.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_find.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_gear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_gear.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_go.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_go.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_key.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_key.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_link.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_red.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_save.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_word.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_word.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_attach.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_attach.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_delete.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_error.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_excel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_excel.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_green.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_paste.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_paste.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_world.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_world.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/ejs/test/fixtures/error.out: -------------------------------------------------------------------------------- 1 | ReferenceError: error.ejs:2 2 | 1|
      3 | >> 2| <% if (users) { %> 4 | 3|

      Has users

      5 | 4| <% } %> 6 | 5|
    7 | 8 | users is not defined -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_lightning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_lightning.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_refresh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_refresh.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_add.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_c.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_cd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_cd.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_cup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_cup.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_dvd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_dvd.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_get.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_get.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_go.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_go.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_h.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_key.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_key.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_php.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_php.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_put.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_put.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_tux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_tux.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_zip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_zip.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/no-filename.js: -------------------------------------------------------------------------------- 1 | module.exports['generic.http'] = [ 2 | {type: 'file', name: 'upload', filename: '', fixture: 'plain.txt'}, 3 | ]; 4 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_paintbrush.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_paintbrush.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_code.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_code.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_copy.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_edit.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_error.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_excel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_excel.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_find.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_find.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_flash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_flash.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_gear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_gear.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_link.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_medal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_medal.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_paint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_paint.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_paste.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_paste.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_ruby.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_ruby.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_stack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_stack.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_star.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_text.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_width.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_width.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_word.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_word.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_world.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_world.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_acrobat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_acrobat.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_camera.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_camera.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_code_red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_code_red.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_csharp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_csharp.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_database.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_database.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_delete.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_freehand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_freehand.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_magnify.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_magnify.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_office.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_office.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_picture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_picture.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_swoosh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_swoosh.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_vector.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_vector.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_wrench.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_wrench.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/node_modules/formidable/lib/index.js: -------------------------------------------------------------------------------- 1 | var IncomingForm = require('./incoming_form').IncomingForm; 2 | IncomingForm.IncomingForm = IncomingForm; 3 | module.exports = IncomingForm; 4 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/node_modules/formidable/lib/util.js: -------------------------------------------------------------------------------- 1 | // Backwards compatibility ... 2 | try { 3 | module.exports = require('util'); 4 | } catch (e) { 5 | module.exports = require('sys'); 6 | } 7 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/mkdirp/examples/pow.js: -------------------------------------------------------------------------------- 1 | var mkdirp = require('mkdirp'); 2 | 3 | mkdirp('/tmp/foo/bar/baz', function (err) { 4 | if (err) console.error(err) 5 | else console.log('pow!') 6 | }); 7 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_coldfusion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_coldfusion.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_compressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_compressed.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_cplusplus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_cplusplus.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_horizontal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_horizontal.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_lightning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_lightning.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_paintbrush.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_paintbrush.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_powerpoint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_powerpoint.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_text_width.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_text_width.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/testing/foo/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "application-name" 3 | , "version": "0.0.1" 4 | , "private": true 5 | , "dependencies": { 6 | "express": "2.5.0" 7 | , "jade": ">= 0.0.1" 8 | } 9 | } -------------------------------------------------------------------------------- /metamail-ui/public/csv/msg-by-month-2001.csv: -------------------------------------------------------------------------------- 1 | label,value 2 | Jan,24013 3 | Feb,23150 4 | Mar,28522 5 | Apr,35645 6 | May,35665 7 | Jun,18890 8 | Jul,10160 9 | Aug,8918 10 | Sep,10890 11 | Oct,37083 12 | Nov,28594 13 | Dec,11426 14 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_actionscript.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_actionscript.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_visualstudio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dpino/Metamail/HEAD/metamail-ui/node_modules/express/node_modules/connect/lib/public/icons/page_white_visualstudio.png -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/mkdirp/examples/pow.js.orig: -------------------------------------------------------------------------------- 1 | var mkdirp = require('mkdirp'); 2 | 3 | mkdirp('/tmp/foo/bar/baz', 0755, function (err) { 4 | if (err) console.error(err) 5 | else console.log('pow!') 6 | }); 7 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/node_modules/formidable/TODO: -------------------------------------------------------------------------------- 1 | - Better bufferMaxSize handling approach 2 | - Add tests for JSON parser pull request and merge it 3 | - Implement QuerystringParser the same way as MultipartParser 4 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/testing/foo/routes/index.js: -------------------------------------------------------------------------------- 1 | 2 | /* 3 | * GET home page. 4 | */ 5 | 6 | exports.index = function(req, res){ 7 | res.writeHead(200); 8 | req.doesnotexist(); 9 | // res.render('index', { title: 'Express' }) 10 | }; -------------------------------------------------------------------------------- /metamail-ui/public/stylesheets/histogram.css: -------------------------------------------------------------------------------- 1 | svg { 2 | font: 10px sans-serif; 3 | } 4 | 5 | rect { 6 | fill: steelblue; 7 | } 8 | 9 | .axis path, .axis line { 10 | fill: none; 11 | stroke: #000; 12 | shape-rendering: crispEdges; 13 | } 14 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/node_modules/formidable/Makefile: -------------------------------------------------------------------------------- 1 | SHELL := /bin/bash 2 | 3 | test: 4 | @./test/run.js 5 | 6 | build: npm test 7 | 8 | npm: 9 | npm install . 10 | 11 | clean: 12 | rm test/tmp/* 13 | 14 | .PHONY: test clean build 15 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/qs/.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "support/expresso"] 2 | path = support/expresso 3 | url = git://github.com/visionmedia/expresso.git 4 | [submodule "support/should"] 5 | path = support/should 6 | url = git://github.com/visionmedia/should.js.git 7 | -------------------------------------------------------------------------------- /metamail-ui/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "metamail" 3 | , "version": "0.0.1" 4 | , "private": true 5 | , "dependencies": { 6 | "express": "3.21.2" 7 | , "ejs": ">= 0.0.1" 8 | } 9 | , "engines": { 10 | "node": "0.6.8", 11 | "npm": "1.1.1" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /enron-importer/.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 3 | org.eclipse.jdt.core.compiler.compliance=1.5 4 | org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning 5 | org.eclipse.jdt.core.compiler.source=1.5 6 | -------------------------------------------------------------------------------- /metamail-ui/public/csv/msg-by-size.csv: -------------------------------------------------------------------------------- 1 | label,value 2 | 20,2156 3 | 40,519 4 | 60,321 5 | 80,177 6 | 100,108 7 | 120,67 8 | 140,64 9 | 160,43 10 | 180,16 11 | 200,19 12 | 220,2 13 | 240,5 14 | 260,4 15 | 280,2 16 | 300,1 17 | 320,2 18 | 380,1 19 | 520,2 20 | 800,1 21 | 1320,1 22 | 1600,1 23 | 1640,3 24 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/ejs/examples/list.js: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * Module dependencies. 4 | */ 5 | 6 | var ejs = require('../') 7 | , fs = require('fs') 8 | , str = fs.readFileSync(__dirname + '/list.ejs', 'utf8'); 9 | 10 | var ret = ejs.render(str, { 11 | names: ['foo', 'bar', 'baz'] 12 | }); 13 | 14 | console.log(ret); -------------------------------------------------------------------------------- /metamail-ui/node_modules/ejs/test/fixtures/menu.ejs: -------------------------------------------------------------------------------- 1 | <% var url = '/foo' -%> 2 | <% var title = 'Foo' -%> 3 | <% include includes/menu-item -%> 4 | 5 | <% var url = '/bar' -%> 6 | <% var title = 'Bar' -%> 7 | <% include includes/menu-item -%> 8 | 9 | <% var url = '/baz' -%> 10 | <% var title = 'Baz' -%> 11 | <% include includes/menu-item -%> -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/info.md: -------------------------------------------------------------------------------- 1 | * Opera does not allow submitting this file, it shows a warning to the 2 | user that the file could not be found instead. Tested in 9.8, 11.51 on OSX. 3 | Reported to Opera on 08.09.2011 (tracking email DSK-346009@bugs.opera.com). 4 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/test/common.js: -------------------------------------------------------------------------------- 1 | var path = require('path') 2 | , sys = require('sys'); 3 | 4 | require.paths.unshift(path.dirname(__dirname)+'/lib'); 5 | 6 | global.puts = sys.puts; 7 | global.p = function() {sys.error(sys.inspect.apply(null, arguments))};; 8 | global.assert = require('assert'); -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/error.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | {error} 4 | 5 | 6 | 7 |
    8 |

    {title}

    9 |

    500 {error}

    10 |
      {stack}
    11 |
    12 | 13 | -------------------------------------------------------------------------------- /metamail-ui/public/csv/msg-by-hour-day.csv: -------------------------------------------------------------------------------- 1 | label,value 2 | 0,14706 3 | 1,10950 4 | 2,7046 5 | 3,4877 6 | 4,4420 7 | 5,3600 8 | 6,3486 9 | 7,4029 10 | 8,7318 11 | 9,18276 12 | 10,29166 13 | 11,34286 14 | 12,33563 15 | 13,29351 16 | 14,30385 17 | 15,38760 18 | 16,43415 19 | 17,45162 20 | 18,41652 21 | 19,32227 22 | 20,25005 23 | 21,19558 24 | 22,18612 25 | 23,17574 26 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/test.js: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * Module dependencies. 4 | */ 5 | 6 | var connect = require('./'); 7 | 8 | var app = connect() 9 | .use(connect.logger('dev')) 10 | .use(function(req, res){ 11 | var body = Array(3222).join('hey'); 12 | res.setHeader('Content-Length', body.length); 13 | res.end(body); 14 | }) 15 | .listen(3000); -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "gently", 3 | "version": "0.9.2", 4 | "directories": { 5 | "lib": "./lib/gently" 6 | }, 7 | "main": "./lib/gently/index", 8 | "dependencies": {}, 9 | "devDependencies": {}, 10 | "engines": { 11 | "node": "*" 12 | }, 13 | "optionalDependencies": {} 14 | } 15 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/ejs/benchmark.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | var ejs = require('./lib/ejs'), 4 | str = '<% if (foo) { %>

    <%= foo %>

    <% } %>', 5 | times = 50000; 6 | 7 | console.log('rendering ' + times + ' times'); 8 | 9 | var start = new Date; 10 | while (times--) { 11 | ejs.render(str, { cache: true, filename: 'test', locals: { foo: 'bar' }}); 12 | } 13 | 14 | console.log('took ' + (new Date - start) + 'ms'); -------------------------------------------------------------------------------- /metamail-ui/node_modules/ejs/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ejs", 3 | "description": "Embedded JavaScript templates", 4 | "version": "0.8.0", 5 | "author": "TJ Holowaychuk ", 6 | "keywords": ["template", "engine", "ejs"], 7 | "devDependencies": { 8 | "mocha": "*", 9 | "should": "*" 10 | }, 11 | "main": "./lib/ejs.js", 12 | "repository": "git://github.com/visionmedia/ejs.git" 13 | } -------------------------------------------------------------------------------- /metamail-ui/public/stylesheets/bar.css: -------------------------------------------------------------------------------- 1 | body { 2 | font: 10px sans-serif; 3 | } 4 | 5 | .bar rect { 6 | fill: steelblue; 7 | } 8 | 9 | .bar text.value { 10 | fill: white; 11 | } 12 | 13 | .axis { 14 | shape-rendering: crispEdges; 15 | } 16 | 17 | .axis path { 18 | fill: none; 19 | } 20 | 21 | .x.axis line { 22 | stroke: #fff; 23 | stroke-opacity: .8; 24 | } 25 | 26 | .y.axis path { 27 | stroke: black; 28 | } 29 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/example/event_emitter.js: -------------------------------------------------------------------------------- 1 | require('../test/common'); 2 | var gently = new (require('gently')) 3 | , stream = new (require('fs').WriteStream)('my_file.txt'); 4 | 5 | gently.expect(stream, 'emit', function(event) { 6 | assert.equal(event, 'open'); 7 | }); 8 | 9 | gently.expect(stream, 'emit', function(event) { 10 | assert.equal(event, 'drain'); 11 | }); -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/qs/benchmark.js: -------------------------------------------------------------------------------- 1 | 2 | var qs = require('./'); 3 | 4 | var times = 100000 5 | , start = new Date 6 | , n = times; 7 | 8 | console.log('times: %d', times); 9 | 10 | while (n--) qs.parse('foo=bar'); 11 | console.log('simple: %dms', new Date - start); 12 | 13 | var start = new Date 14 | , n = times; 15 | 16 | while (n--) qs.parse('user[name][first]=tj&user[name][last]=holowaychuk'); 17 | console.log('nested: %dms', new Date - start); -------------------------------------------------------------------------------- /metamail-ui/node_modules/ejs/Makefile: -------------------------------------------------------------------------------- 1 | 2 | SRC = $(shell find lib -name "*.js" -type f) 3 | UGLIFY_FLAGS = --no-mangle 4 | 5 | all: ejs.min.js 6 | 7 | test: 8 | @./node_modules/.bin/mocha \ 9 | --require should \ 10 | --reporter spec 11 | 12 | ejs.js: $(SRC) 13 | @node support/compile.js $^ 14 | 15 | ejs.min.js: ejs.js 16 | @uglifyjs $(UGLIFY_FLAGS) $< > $@ \ 17 | && du ejs.min.js \ 18 | && du ejs.js 19 | 20 | clean: 21 | rm -f ejs.js 22 | rm -f ejs.min.js 23 | 24 | .PHONY: test -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/qs/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "qs", 3 | "description": "querystring parser", 4 | "version": "0.4.2", 5 | "repository": { 6 | "type" : "git", 7 | "url" : "git://github.com/visionmedia/node-querystring.git" 8 | }, 9 | "devDependencies": { 10 | "mocha": "*" 11 | , "should": "*" 12 | }, 13 | "author": "TJ Holowaychuk (http://tjholowaychuk.com)", 14 | "main": "index", 15 | "engines": { "node": "*" } 16 | } -------------------------------------------------------------------------------- /metamail-ui/node_modules/ejs/lib/utils.js: -------------------------------------------------------------------------------- 1 | 2 | /*! 3 | * EJS 4 | * Copyright(c) 2010 TJ Holowaychuk 5 | * MIT Licensed 6 | */ 7 | 8 | /** 9 | * Escape the given string of `html`. 10 | * 11 | * @param {String} html 12 | * @return {String} 13 | * @api private 14 | */ 15 | 16 | exports.escape = function(html){ 17 | return String(html) 18 | .replace(/&(?!\w+;)/g, '&') 19 | .replace(//g, '>') 21 | .replace(/"/g, '"'); 22 | }; 23 | -------------------------------------------------------------------------------- /enron-importer/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/mkdirp/examples/pow.js.rej: -------------------------------------------------------------------------------- 1 | --- examples/pow.js 2 | +++ examples/pow.js 3 | @@ -1,6 +1,15 @@ 4 | -var mkdirp = require('mkdirp').mkdirp; 5 | +var mkdirp = require('../').mkdirp, 6 | + mkdirpSync = require('../').mkdirpSync; 7 | 8 | mkdirp('/tmp/foo/bar/baz', 0755, function (err) { 9 | if (err) console.error(err) 10 | else console.log('pow!') 11 | }); 12 | + 13 | +try { 14 | + mkdirpSync('/tmp/bar/foo/baz', 0755); 15 | + console.log('double pow!'); 16 | +} 17 | +catch (ex) { 18 | + console.log(ex); 19 | +} -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/node_modules/formidable/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "formidable", 3 | "version": "1.0.11", 4 | "dependencies": {}, 5 | "devDependencies": { 6 | "gently": "0.8.0", 7 | "findit": "0.1.1", 8 | "hashish": "0.0.4", 9 | "urun": "0.0.4", 10 | "utest": "0.0.3" 11 | }, 12 | "directories": { 13 | "lib": "./lib" 14 | }, 15 | "main": "./lib/index", 16 | "scripts": { 17 | "test": "make test" 18 | }, 19 | "engines": { 20 | "node": "*" 21 | }, 22 | "optionalDependencies": {} 23 | } 24 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/node_modules/formidable/test/common.js: -------------------------------------------------------------------------------- 1 | var mysql = require('..'); 2 | var path = require('path'); 3 | 4 | var root = path.join(__dirname, '../'); 5 | exports.dir = { 6 | root : root, 7 | lib : root + '/lib', 8 | fixture : root + '/test/fixture', 9 | tmp : root + '/test/tmp', 10 | }; 11 | 12 | exports.port = 13532; 13 | 14 | exports.formidable = require('..'); 15 | exports.assert = require('assert'); 16 | 17 | exports.require = function(lib) { 18 | return require(exports.dir.lib + '/' + lib); 19 | }; 20 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/example/dog.js: -------------------------------------------------------------------------------- 1 | require('../test/common'); 2 | function Dog() {} 3 | 4 | Dog.prototype.seeCat = function() { 5 | this.bark('whuf, whuf'); 6 | this.run(); 7 | } 8 | 9 | Dog.prototype.bark = function(bark) { 10 | require('sys').puts(bark); 11 | } 12 | 13 | var gently = new (require('gently')) 14 | , assert = require('assert') 15 | , dog = new Dog(); 16 | 17 | gently.expect(dog, 'bark', function(bark) { 18 | assert.equal(bark, 'whuf, whuf'); 19 | }); 20 | gently.expect(dog, 'run'); 21 | 22 | dog.seeCat(); -------------------------------------------------------------------------------- /enron-importer/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | mail-importer 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | org.eclipse.m2e.core.maven2Builder 15 | 16 | 17 | 18 | 19 | 20 | org.eclipse.jdt.core.javanature 21 | org.eclipse.m2e.core.maven2Nature 22 | 23 | 24 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/Makefile: -------------------------------------------------------------------------------- 1 | 2 | DOCS = $(shell find docs/*.md) 3 | HTMLDOCS = $(DOCS:.md=.html) 4 | TESTS = $(shell find test/*.test.js) 5 | 6 | test: 7 | @NODE_ENV=test ./node_modules/.bin/expresso $(TESTS) 8 | 9 | docs: $(HTMLDOCS) 10 | @ echo "... generating TOC" 11 | @./support/toc.js docs/guide.html 12 | 13 | %.html: %.md 14 | @echo "... $< -> $@" 15 | @markdown $< \ 16 | | cat docs/layout/head.html - docs/layout/foot.html \ 17 | > $@ 18 | 19 | site: 20 | rm -fr /tmp/docs \ 21 | && cp -fr docs /tmp/docs \ 22 | && git checkout gh-pages \ 23 | && cp -fr /tmp/docs/* . \ 24 | && echo "done" 25 | 26 | docclean: 27 | rm -f docs/*.{1,html} 28 | 29 | .PHONY: site test docs docclean -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/mkdirp/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "mkdirp", 3 | "description" : "Recursively mkdir, like `mkdir -p`", 4 | "version" : "0.3.0", 5 | "author" : "James Halliday (http://substack.net)", 6 | "main" : "./index", 7 | "keywords" : [ 8 | "mkdir", 9 | "directory" 10 | ], 11 | "repository" : { 12 | "type" : "git", 13 | "url" : "http://github.com/substack/node-mkdirp.git" 14 | }, 15 | "scripts" : { 16 | "test" : "tap test/*.js" 17 | }, 18 | "devDependencies" : { 19 | "tap" : "0.0.x" 20 | }, 21 | "license" : "MIT/X11", 22 | "engines": { "node": "*" } 23 | } 24 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/ejs/examples/client.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 13 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/mime/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "author": { 3 | "name": "Robert Kieffer", 4 | "url": "http://github.com/broofa", 5 | "email": "robert@broofa.com" 6 | }, 7 | "contributors": [ 8 | { 9 | "name": "Benjamin Thomas", 10 | "url": "http://github.com/bentomas", 11 | "email": "benjamin@benjaminthomas.org" 12 | } 13 | ], 14 | "dependencies": {}, 15 | "description": "A comprehensive library for mime-type mapping", 16 | "devDependencies": {"async_testing": ""}, 17 | "keywords": ["util", "mime"], 18 | "main": "mime.js", 19 | "name": "mime", 20 | "repository": {"url": "http://github.com/bentomas/node-mime", "type": "git"}, 21 | "version": "1.2.4" 22 | } 23 | -------------------------------------------------------------------------------- /metamail-ui/views/.scatterchart/index.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | The d3 test 5 | 18 | 19 | 20 | 21 |
    22 | 23 |
    24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /metamail-ui/views/index.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | <%= title %> 6 | 7 | 8 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /mail-analyzer/src/test/java/com/igalia/AppTest.java: -------------------------------------------------------------------------------- 1 | package com.igalia; 2 | 3 | import junit.framework.Test; 4 | import junit.framework.TestCase; 5 | import junit.framework.TestSuite; 6 | 7 | /** 8 | * Unit test for simple App. 9 | */ 10 | public class AppTest 11 | extends TestCase 12 | { 13 | /** 14 | * Create the test case 15 | * 16 | * @param testName name of the test case 17 | */ 18 | public AppTest( String testName ) 19 | { 20 | super( testName ); 21 | } 22 | 23 | /** 24 | * @return the suite of tests being tested 25 | */ 26 | public static Test suite() 27 | { 28 | return new TestSuite( AppTest.class ); 29 | } 30 | 31 | /** 32 | * Rigourous Test :-) 33 | */ 34 | public void testApp() 35 | { 36 | assertTrue( true ); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "connect", 3 | "version": "1.9.2", 4 | "description": "High performance middleware framework", 5 | "keywords": ["framework", "web", "middleware", "connect", "rack"], 6 | "repository": "git://github.com/senchalabs/connect.git", 7 | "author": "TJ Holowaychuk (http://tjholowaychuk.com)", 8 | "repository": "git://github.com/senchalabs/connect", 9 | "dependencies": { 10 | "qs": ">= 0.4.0", 11 | "mime": ">= 0.0.1", 12 | "formidable": "1.0.x" 13 | }, 14 | "devDependencies": { 15 | "expresso": "0.9.2", 16 | "koala": "0.1.2", 17 | "less": "1.1.1", 18 | "sass": "0.5.0", 19 | "markdown": "0.2.1", 20 | "ejs": "0.4.3", 21 | "should": "0.3.2" 22 | }, 23 | "publishConfig": { "tag": "1.8" }, 24 | "main": "index" 25 | } -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/node_modules/formidable/lib/querystring_parser.js: -------------------------------------------------------------------------------- 1 | if (global.GENTLY) require = GENTLY.hijack(require); 2 | 3 | // This is a buffering parser, not quite as nice as the multipart one. 4 | // If I find time I'll rewrite this to be fully streaming as well 5 | var querystring = require('querystring'); 6 | 7 | function QuerystringParser() { 8 | this.buffer = ''; 9 | }; 10 | exports.QuerystringParser = QuerystringParser; 11 | 12 | QuerystringParser.prototype.write = function(buffer) { 13 | this.buffer += buffer.toString('ascii'); 14 | return buffer.length; 15 | }; 16 | 17 | QuerystringParser.prototype.end = function() { 18 | var fields = querystring.parse(this.buffer); 19 | for (var field in fields) { 20 | this.onField(field, fields[field]); 21 | } 22 | this.buffer = ''; 23 | 24 | this.onEnd(); 25 | }; -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/common.js: -------------------------------------------------------------------------------- 1 | var path = require('path'), 2 | fs = require('fs'); 3 | 4 | try { 5 | global.Gently = require('gently'); 6 | } catch (e) { 7 | throw new Error('this test suite requires node-gently'); 8 | } 9 | 10 | exports.lib = path.join(__dirname, '../../lib'); 11 | 12 | global.GENTLY = new Gently(); 13 | 14 | global.assert = require('assert'); 15 | global.TEST_PORT = 13532; 16 | global.TEST_FIXTURES = path.join(__dirname, '../fixture'); 17 | global.TEST_TMP = path.join(__dirname, '../tmp'); 18 | 19 | // Stupid new feature in node that complains about gently attaching too many 20 | // listeners to process 'exit'. This is a workaround until I can think of a 21 | // better way to deal with this. 22 | if (process.setMaxListeners) { 23 | process.setMaxListeners(10000); 24 | } 25 | -------------------------------------------------------------------------------- /enron-importer/src/test/java/com/igalia/mail_importer/AppTest.java: -------------------------------------------------------------------------------- 1 | package com.igalia.mail_importer; 2 | 3 | import junit.framework.Test; 4 | import junit.framework.TestCase; 5 | import junit.framework.TestSuite; 6 | 7 | /** 8 | * Unit test for simple App. 9 | */ 10 | public class AppTest 11 | extends TestCase 12 | { 13 | /** 14 | * Create the test case 15 | * 16 | * @param testName name of the test case 17 | */ 18 | public AppTest( String testName ) 19 | { 20 | super( testName ); 21 | } 22 | 23 | /** 24 | * @return the suite of tests being tested 25 | */ 26 | public static Test suite() 27 | { 28 | return new TestSuite( AppTest.class ); 29 | } 30 | 31 | /** 32 | * Rigourous Test :-) 33 | */ 34 | public void testApp() 35 | { 36 | assertTrue( true ); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /mail-analyzer/benchmark/bySize.csv: -------------------------------------------------------------------------------- 1 | -- msgBySize 2 | com.igalia.metamail.jobs.MessagesBySize,50.00 3 | com.igalia.metamail.jobs.MessagesBySize,50.00 4 | com.igalia.metamail.jobs.MessagesBySize,42.00 5 | com.igalia.metamail.jobs.MessagesBySize,38.00 6 | com.igalia.metamail.jobs.MessagesBySize,41.00 7 | com.igalia.metamail.jobs.MessagesBySize,38.00 8 | com.igalia.metamail.jobs.MessagesBySize,38.00 9 | com.igalia.metamail.jobs.MessagesBySize,38.00 10 | com.igalia.metamail.jobs.MessagesBySize,39.00 11 | com.igalia.metamail.jobs.MessagesBySize,38.00 12 | com.igalia.metamail.jobs.MessagesBySize,36.00 13 | com.igalia.metamail.jobs.MessagesBySize,38.00 14 | com.igalia.metamail.jobs.MessagesBySize,39.00 15 | com.igalia.metamail.jobs.MessagesBySize,37.00 16 | com.igalia.metamail.jobs.MessagesBySize,38.00 17 | com.igalia.metamail.jobs.MessagesBySize,39.00 18 | com.igalia.metamail.jobs.MessagesBySize,40.00 19 | 20 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/special-chars-in-filename.js: -------------------------------------------------------------------------------- 1 | var properFilename = 'funkyfilename.txt'; 2 | 3 | function expect(filename) { 4 | return [ 5 | {type: 'field', name: 'title', value: 'Weird filename'}, 6 | {type: 'file', name: 'upload', filename: filename, fixture: properFilename}, 7 | ]; 8 | }; 9 | 10 | var webkit = " ? % * | \" < > . ? ; ' @ # $ ^ & ( ) - _ = + { } [ ] ` ~.txt"; 11 | var ffOrIe = " ? % * | \" < > . ☃ ; ' @ # $ ^ & ( ) - _ = + { } [ ] ` ~.txt"; 12 | 13 | module.exports = { 14 | 'osx-chrome-13.http' : expect(webkit), 15 | 'osx-firefox-3.6.http' : expect(ffOrIe), 16 | 'osx-safari-5.http' : expect(webkit), 17 | 'xp-chrome-12.http' : expect(webkit), 18 | 'xp-ie-7.http' : expect(ffOrIe), 19 | 'xp-ie-8.http' : expect(ffOrIe), 20 | 'xp-safari-5.http' : expect(webkit), 21 | }; 22 | -------------------------------------------------------------------------------- /mail-analyzer/README.md: -------------------------------------------------------------------------------- 1 | -- Mail Analyzer 2 | 3 | This is a mail analyzer based in Hadoop. Mail to be analyzed should be stored in directory. 4 | Results are written in directory. 5 | 6 | Mail files should be stored in mbox format. Every file may have one or mail emails.: 7 | 8 | -- Compile 9 | 10 | $ mvn clean install 11 | 12 | This generates a .jar file in target/ 13 | 14 | -- Run 15 | 16 | $ hadoop jar ./target/metamail-0.0.1-SNAPSHOT.jar com.igalia.metamail.jobs.MessagesByTimePeriod 17 | 18 | This job counts the number of mails by year, month, day, date and hour. Result is stored in mail/out. 19 | Before running the directory mail/out should not exist. 20 | 21 | -- Dependencies 22 | 23 | This tool uses Java Mail. Hadoop tries to find dependency libraries at /usr/share/hadoop/lib. Please, 24 | place a copy of Java Mail jar at that directory, otherwise you will get a NoClassDefFoundError at runtime. 25 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/middleware/responseTime.js: -------------------------------------------------------------------------------- 1 | 2 | /*! 3 | * Connect - responseTime 4 | * Copyright(c) 2011 TJ Holowaychuk 5 | * MIT Licensed 6 | */ 7 | 8 | /** 9 | * Adds the `X-Response-Time` header displaying the response 10 | * duration in milliseconds. 11 | * 12 | * @return {Function} 13 | * @api public 14 | */ 15 | 16 | module.exports = function responseTime(){ 17 | return function(req, res, next){ 18 | var writeHead = res.writeHead 19 | , start = new Date; 20 | 21 | if (res._responseTime) return next(); 22 | res._responseTime = true; 23 | 24 | // proxy writeHead to calculate duration 25 | res.writeHead = function(status, headers){ 26 | var duration = new Date - start; 27 | res.setHeader('X-Response-Time', duration + 'ms'); 28 | res.writeHead = writeHead; 29 | res.writeHead(status, headers); 30 | }; 31 | 32 | next(); 33 | }; 34 | }; 35 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/middleware/query.js: -------------------------------------------------------------------------------- 1 | 2 | /*! 3 | * Connect - query 4 | * Copyright(c) 2011 TJ Holowaychuk 5 | * Copyright(c) 2011 Sencha Inc. 6 | * MIT Licensed 7 | */ 8 | 9 | /** 10 | * Module dependencies. 11 | */ 12 | 13 | var qs = require('qs') 14 | , parse = require('url').parse; 15 | 16 | /** 17 | * Automatically parse the query-string when available, 18 | * populating the `req.query` object. 19 | * 20 | * Examples: 21 | * 22 | * connect( 23 | * connect.query() 24 | * , function(req, res){ 25 | * res.end(JSON.stringify(req.query)); 26 | * } 27 | * ).listen(3000); 28 | * 29 | * @return {Function} 30 | * @api public 31 | */ 32 | 33 | module.exports = function query(){ 34 | return function query(req, res, next){ 35 | req.query = ~req.url.indexOf('?') 36 | ? qs.parse(parse(req.url).query) 37 | : {}; 38 | next(); 39 | }; 40 | }; 41 | -------------------------------------------------------------------------------- /mail-analyzer/src/main/java/com/igalia/metamail/utils/JobRunner.java: -------------------------------------------------------------------------------- 1 | package com.igalia.metamail.utils; 2 | 3 | import java.io.IOException; 4 | 5 | import org.apache.hadoop.mapreduce.Job; 6 | 7 | /** 8 | * 9 | * @author Diego Pino García 10 | * 11 | */ 12 | public class JobRunner { 13 | 14 | public static boolean run(Job job) throws IOException, 15 | InterruptedException, ClassNotFoundException { 16 | try { 17 | return job.waitForCompletion(true); 18 | } catch (IOException e) { 19 | // TODO Auto-generated catch block 20 | e.printStackTrace(); 21 | } catch (InterruptedException e) { 22 | // TODO Auto-generated catch block 23 | e.printStackTrace(); 24 | } catch (ClassNotFoundException e) { 25 | // TODO Auto-generated catch block 26 | e.printStackTrace(); 27 | } 28 | return false; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/testing/foo/app.js: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * Module dependencies. 4 | */ 5 | 6 | var express = require('express') 7 | , routes = require('./routes') 8 | 9 | var app = module.exports = express.createServer(); 10 | 11 | // Configuration 12 | 13 | app.configure(function(){ 14 | app.set('views', __dirname + '/views'); 15 | app.set('view engine', 'jade'); 16 | app.use(express.bodyParser()); 17 | app.use(express.methodOverride()); 18 | app.use(app.router); 19 | app.use(express.static(__dirname + '/public')); 20 | }); 21 | 22 | app.configure('development', function(){ 23 | app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); 24 | }); 25 | 26 | app.configure('production', function(){ 27 | app.use(express.errorHandler()); 28 | }); 29 | 30 | // Routes 31 | 32 | app.get('/', routes.index); 33 | 34 | app.listen(3000); 35 | console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env); 36 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/lib/view/partial.js: -------------------------------------------------------------------------------- 1 | 2 | /*! 3 | * Express - view - Partial 4 | * Copyright(c) 2010 TJ Holowaychuk 5 | * MIT Licensed 6 | */ 7 | 8 | /** 9 | * Memory cache. 10 | */ 11 | 12 | var cache = {}; 13 | 14 | /** 15 | * Resolve partial object name from the view path. 16 | * 17 | * Examples: 18 | * 19 | * "user.ejs" becomes "user" 20 | * "forum thread.ejs" becomes "forumThread" 21 | * "forum/thread/post.ejs" becomes "post" 22 | * "blog-post.ejs" becomes "blogPost" 23 | * 24 | * @return {String} 25 | * @api private 26 | */ 27 | 28 | exports.resolveObjectName = function(view){ 29 | return cache[view] || (cache[view] = view 30 | .split('/') 31 | .slice(-1)[0] 32 | .split('.')[0] 33 | .replace(/^_/, '') 34 | .replace(/[^a-zA-Z0-9 ]+/g, ' ') 35 | .split(/ +/).map(function(word, i){ 36 | return i 37 | ? word[0].toUpperCase() + word.substr(1) 38 | : word; 39 | }).join('')); 40 | }; -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/mkdirp/test/sync.js: -------------------------------------------------------------------------------- 1 | var mkdirp = require('../'); 2 | var path = require('path'); 3 | var fs = require('fs'); 4 | var test = require('tap').test; 5 | 6 | test('sync', function (t) { 7 | t.plan(2); 8 | var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); 9 | var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); 10 | var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); 11 | 12 | var file = '/tmp/' + [x,y,z].join('/'); 13 | 14 | var err = mkdirp.sync(file, 0755); 15 | if (err) t.fail(err); 16 | else path.exists(file, function (ex) { 17 | if (!ex) t.fail('file not created') 18 | else fs.stat(file, function (err, stat) { 19 | if (err) t.fail(err) 20 | else { 21 | t.equal(stat.mode & 0777, 0755); 22 | t.ok(stat.isDirectory(), 'target not a directory'); 23 | t.end(); 24 | } 25 | }) 26 | }) 27 | }); 28 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/testing/index.js: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * Module dependencies. 4 | */ 5 | 6 | var express = require('../') 7 | , http = require('http') 8 | , connect = require('connect'); 9 | 10 | var app = express.createServer(); 11 | 12 | app.get('/', function(req, res){ 13 | req.foo(); 14 | res.send('test'); 15 | }); 16 | 17 | // app.set('views', __dirname + '/views'); 18 | // app.set('view engine', 'jade'); 19 | // 20 | // app.configure(function(){ 21 | // app.use(function(req, res, next){ 22 | // debugger 23 | // res.write('first'); 24 | // console.error('first'); 25 | // next(); 26 | // }); 27 | // 28 | // app.use(app.router); 29 | // 30 | // app.use(function(req, res, next){ 31 | // console.error('last'); 32 | // res.end('last'); 33 | // }); 34 | // }); 35 | // 36 | // app.get('/', function(req, res, next){ 37 | // console.error('middle'); 38 | // res.write(' route '); 39 | // next(); 40 | // }); 41 | 42 | app.listen(3000); 43 | console.log('listening on port 3000'); -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/mkdirp/test/clobber.js: -------------------------------------------------------------------------------- 1 | var mkdirp = require('../').mkdirp; 2 | var path = require('path'); 3 | var fs = require('fs'); 4 | var test = require('tap').test; 5 | 6 | var ps = [ '', 'tmp' ]; 7 | 8 | for (var i = 0; i < 25; i++) { 9 | var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16); 10 | ps.push(dir); 11 | } 12 | 13 | var file = ps.join('/'); 14 | 15 | // a file in the way 16 | var itw = ps.slice(0, 3).join('/'); 17 | 18 | 19 | test('clobber-pre', function (t) { 20 | console.error("about to write to "+itw) 21 | fs.writeFileSync(itw, 'I AM IN THE WAY, THE TRUTH, AND THE LIGHT.'); 22 | 23 | fs.stat(itw, function (er, stat) { 24 | t.ifError(er) 25 | t.ok(stat && stat.isFile(), 'should be file') 26 | t.end() 27 | }) 28 | }) 29 | 30 | test('clobber', function (t) { 31 | t.plan(2); 32 | mkdirp(file, 0755, function (err) { 33 | t.ok(err); 34 | t.equal(err.code, 'ENOTDIR'); 35 | t.end(); 36 | }); 37 | }); 38 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/mkdirp/test/umask_sync.js: -------------------------------------------------------------------------------- 1 | var mkdirp = require('../'); 2 | var path = require('path'); 3 | var fs = require('fs'); 4 | var test = require('tap').test; 5 | 6 | test('umask sync modes', function (t) { 7 | t.plan(2); 8 | var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); 9 | var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); 10 | var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); 11 | 12 | var file = '/tmp/' + [x,y,z].join('/'); 13 | 14 | var err = mkdirp.sync(file); 15 | if (err) t.fail(err); 16 | else path.exists(file, function (ex) { 17 | if (!ex) t.fail('file not created') 18 | else fs.stat(file, function (err, stat) { 19 | if (err) t.fail(err) 20 | else { 21 | t.equal(stat.mode & 0777, (0777 & (~process.umask()))); 22 | t.ok(stat.isDirectory(), 'target not a directory'); 23 | t.end(); 24 | } 25 | }) 26 | }) 27 | }); 28 | -------------------------------------------------------------------------------- /mail-analyzer/benchmark/msgReceived.csv: -------------------------------------------------------------------------------- 1 | com.igalia.metamail.jobs.MessagesReceived,44.00 2 | com.igalia.metamail.jobs.MessagesReceived,45.00 3 | com.igalia.metamail.jobs.MessagesReceived,45.00 4 | com.igalia.metamail.jobs.MessagesReceived,42.00 5 | com.igalia.metamail.jobs.MessagesReceived,42.00 6 | com.igalia.metamail.jobs.MessagesReceived,42.00 7 | com.igalia.metamail.jobs.MessagesReceived,43.00 8 | com.igalia.metamail.jobs.MessagesReceived,41.00 9 | com.igalia.metamail.jobs.MessagesReceived,43.00 10 | com.igalia.metamail.jobs.MessagesReceived,43.00 11 | com.igalia.metamail.jobs.MessagesReceived,43.00 12 | com.igalia.metamail.jobs.MessagesReceived,42.00 13 | com.igalia.metamail.jobs.MessagesReceived,43.00 14 | com.igalia.metamail.jobs.MessagesReceived,43.00 15 | com.igalia.metamail.jobs.MessagesReceived,42.00 16 | com.igalia.metamail.jobs.MessagesReceived,43.00 17 | com.igalia.metamail.jobs.MessagesReceived,47.00 18 | com.igalia.metamail.jobs.MessagesReceived,43.00 19 | com.igalia.metamail.jobs.MessagesReceived,42.00 20 | com.igalia.metamail.jobs.MessagesReceived,44.00 21 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/mkdirp/test/perm.js: -------------------------------------------------------------------------------- 1 | var mkdirp = require('../'); 2 | var path = require('path'); 3 | var fs = require('fs'); 4 | var test = require('tap').test; 5 | 6 | test('async perm', function (t) { 7 | t.plan(2); 8 | var file = '/tmp/' + (Math.random() * (1<<30)).toString(16); 9 | 10 | mkdirp(file, 0755, function (err) { 11 | if (err) t.fail(err); 12 | else path.exists(file, function (ex) { 13 | if (!ex) t.fail('file not created') 14 | else fs.stat(file, function (err, stat) { 15 | if (err) t.fail(err) 16 | else { 17 | t.equal(stat.mode & 0777, 0755); 18 | t.ok(stat.isDirectory(), 'target not a directory'); 19 | t.end(); 20 | } 21 | }) 22 | }) 23 | }); 24 | }); 25 | 26 | test('async root perm', function (t) { 27 | mkdirp('/tmp', 0755, function (err) { 28 | if (err) t.fail(err); 29 | t.end(); 30 | }); 31 | t.end(); 32 | }); 33 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/mkdirp/test/mkdirp.js: -------------------------------------------------------------------------------- 1 | var mkdirp = require('../'); 2 | var path = require('path'); 3 | var fs = require('fs'); 4 | var test = require('tap').test; 5 | 6 | test('woo', function (t) { 7 | t.plan(2); 8 | var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); 9 | var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); 10 | var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); 11 | 12 | var file = '/tmp/' + [x,y,z].join('/'); 13 | 14 | mkdirp(file, 0755, function (err) { 15 | if (err) t.fail(err); 16 | else path.exists(file, function (ex) { 17 | if (!ex) t.fail('file not created') 18 | else fs.stat(file, function (err, stat) { 19 | if (err) t.fail(err) 20 | else { 21 | t.equal(stat.mode & 0777, 0755); 22 | t.ok(stat.isDirectory(), 'target not a directory'); 23 | t.end(); 24 | } 25 | }) 26 | }) 27 | }); 28 | }); 29 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/mkdirp/test/umask.js: -------------------------------------------------------------------------------- 1 | var mkdirp = require('../'); 2 | var path = require('path'); 3 | var fs = require('fs'); 4 | var test = require('tap').test; 5 | 6 | test('implicit mode from umask', function (t) { 7 | t.plan(2); 8 | var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); 9 | var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); 10 | var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); 11 | 12 | var file = '/tmp/' + [x,y,z].join('/'); 13 | 14 | mkdirp(file, function (err) { 15 | if (err) t.fail(err); 16 | else path.exists(file, function (ex) { 17 | if (!ex) t.fail('file not created') 18 | else fs.stat(file, function (err, stat) { 19 | if (err) t.fail(err) 20 | else { 21 | t.equal(stat.mode & 0777, 0777 & (~process.umask())); 22 | t.ok(stat.isDirectory(), 'target not a directory'); 23 | t.end(); 24 | } 25 | }) 26 | }) 27 | }); 28 | }); 29 | -------------------------------------------------------------------------------- /mail-analyzer/benchmark/msgSent.csv: -------------------------------------------------------------------------------- 1 | com.igalia.metamail.jobs.MessagesSentByPerson,40.00 2 | com.igalia.metamail.jobs.MessagesSentByPerson,37.00 3 | com.igalia.metamail.jobs.MessagesSentByPerson,38.00 4 | com.igalia.metamail.jobs.MessagesSentByPerson,37.00 5 | com.igalia.metamail.jobs.MessagesSentByPerson,38.00 6 | com.igalia.metamail.jobs.MessagesSentByPerson,37.00 7 | com.igalia.metamail.jobs.MessagesSentByPerson,37.00 8 | com.igalia.metamail.jobs.MessagesSentByPerson,38.00 9 | com.igalia.metamail.jobs.MessagesSentByPerson,38.00 10 | com.igalia.metamail.jobs.MessagesSentByPerson,37.00 11 | com.igalia.metamail.jobs.MessagesSentByPerson,38.00 12 | com.igalia.metamail.jobs.MessagesSentByPerson,39.00 13 | com.igalia.metamail.jobs.MessagesSentByPerson,38.00 14 | com.igalia.metamail.jobs.MessagesSentByPerson,38.00 15 | com.igalia.metamail.jobs.MessagesSentByPerson,38.00 16 | com.igalia.metamail.jobs.MessagesSentByPerson,38.00 17 | com.igalia.metamail.jobs.MessagesSentByPerson,37.00 18 | com.igalia.metamail.jobs.MessagesSentByPerson,38.00 19 | com.igalia.metamail.jobs.MessagesSentByPerson,38.00 20 | com.igalia.metamail.jobs.MessagesSentByPerson,37.00 21 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/lib/router/collection.js: -------------------------------------------------------------------------------- 1 | 2 | /*! 3 | * Express - router - Collection 4 | * Copyright(c) 2010 TJ Holowaychuk 5 | * MIT Licensed 6 | */ 7 | 8 | /** 9 | * Expose `Collection`. 10 | */ 11 | 12 | module.exports = Collection; 13 | 14 | /** 15 | * Initialize a new route `Collection` 16 | * with the given `router`. 17 | * 18 | * @param {Router} router 19 | * @api private 20 | */ 21 | 22 | function Collection(router) { 23 | Array.apply(this, arguments); 24 | this.router = router; 25 | } 26 | 27 | /** 28 | * Inherit from `Array.prototype`. 29 | */ 30 | 31 | Collection.prototype.__proto__ = Array.prototype; 32 | 33 | /** 34 | * Remove the routes in this collection. 35 | * 36 | * @return {Collection} of routes removed 37 | * @api public 38 | */ 39 | 40 | Collection.prototype.remove = function(){ 41 | var router = this.router 42 | , len = this.length 43 | , ret = new Collection(this.router); 44 | 45 | for (var i = 0; i < len; ++i) { 46 | if (router.remove(this[i])) { 47 | ret.push(this[i]); 48 | } 49 | } 50 | 51 | return ret; 52 | }; 53 | 54 | -------------------------------------------------------------------------------- /mail-analyzer/benchmark/byTimePeriod.csv: -------------------------------------------------------------------------------- 1 | com.igalia.metamail.jobs.MessagesByTimePeriod,41.00 2 | com.igalia.metamail.jobs.MessagesByTimePeriod,40.00 3 | com.igalia.metamail.jobs.MessagesByTimePeriod,42.00 4 | com.igalia.metamail.jobs.MessagesByTimePeriod,42.00 5 | com.igalia.metamail.jobs.MessagesByTimePeriod,52.00 6 | com.igalia.metamail.jobs.MessagesByTimePeriod,51.00 7 | com.igalia.metamail.jobs.MessagesByTimePeriod,46.00 8 | com.igalia.metamail.jobs.MessagesByTimePeriod,48.00 9 | com.igalia.metamail.jobs.MessagesByTimePeriod,46.00 10 | com.igalia.metamail.jobs.MessagesByTimePeriod,45.00 11 | com.igalia.metamail.jobs.MessagesByTimePeriod,43.00 12 | com.igalia.metamail.jobs.MessagesByTimePeriod,44.00 13 | com.igalia.metamail.jobs.MessagesByTimePeriod,44.00 14 | com.igalia.metamail.jobs.MessagesByTimePeriod,43.00 15 | com.igalia.metamail.jobs.MessagesByTimePeriod,42.00 16 | com.igalia.metamail.jobs.MessagesByTimePeriod,45.00 17 | com.igalia.metamail.jobs.MessagesByTimePeriod,44.00 18 | com.igalia.metamail.jobs.MessagesByTimePeriod,43.00 19 | com.igalia.metamail.jobs.MessagesByTimePeriod,44.00 20 | com.igalia.metamail.jobs.MessagesByTimePeriod,44.00 21 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/middleware/cookieParser.js: -------------------------------------------------------------------------------- 1 | 2 | /*! 3 | * Connect - cookieParser 4 | * Copyright(c) 2010 Sencha Inc. 5 | * Copyright(c) 2011 TJ Holowaychuk 6 | * MIT Licensed 7 | */ 8 | 9 | /** 10 | * Module dependencies. 11 | */ 12 | 13 | var utils = require('./../utils'); 14 | 15 | /** 16 | * Parse _Cookie_ header and populate `req.cookies` 17 | * with an object keyed by the cookie names. 18 | * 19 | * Examples: 20 | * 21 | * connect.createServer( 22 | * connect.cookieParser() 23 | * , function(req, res, next){ 24 | * res.end(JSON.stringify(req.cookies)); 25 | * } 26 | * ); 27 | * 28 | * @return {Function} 29 | * @api public 30 | */ 31 | 32 | module.exports = function cookieParser(){ 33 | return function cookieParser(req, res, next) { 34 | var cookie = req.headers.cookie; 35 | if (req.cookies) return next(); 36 | req.cookies = {}; 37 | if (cookie) { 38 | try { 39 | req.cookies = utils.parseCookie(cookie); 40 | } catch (err) { 41 | return next(err); 42 | } 43 | } 44 | next(); 45 | }; 46 | }; -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/middleware/methodOverride.js: -------------------------------------------------------------------------------- 1 | 2 | /*! 3 | * Connect - methodOverride 4 | * Copyright(c) 2010 Sencha Inc. 5 | * Copyright(c) 2011 TJ Holowaychuk 6 | * MIT Licensed 7 | */ 8 | 9 | /** 10 | * Provides faux HTTP method support. 11 | * 12 | * Pass an optional `key` to use when checking for 13 | * a method override, othewise defaults to _\_method_. 14 | * The original method is available via `req.originalMethod`. 15 | * 16 | * @param {String} key 17 | * @return {Function} 18 | * @api public 19 | */ 20 | 21 | module.exports = function methodOverride(key){ 22 | key = key || "_method"; 23 | return function methodOverride(req, res, next) { 24 | req.originalMethod = req.originalMethod || req.method; 25 | 26 | // req.body 27 | if (req.body && key in req.body) { 28 | req.method = req.body[key].toUpperCase(); 29 | delete req.body[key]; 30 | // check X-HTTP-Method-Override 31 | } else if (req.headers['x-http-method-override']) { 32 | req.method = req.headers['x-http-method-override'].toUpperCase(); 33 | } 34 | 35 | next(); 36 | }; 37 | }; 38 | 39 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/lib/https.js: -------------------------------------------------------------------------------- 1 | 2 | /*! 3 | * Express - HTTPSServer 4 | * Copyright(c) 2010 TJ Holowaychuk 5 | * MIT Licensed 6 | */ 7 | 8 | /** 9 | * Module dependencies. 10 | */ 11 | 12 | var connect = require('connect') 13 | , HTTPServer = require('./http') 14 | , https = require('https'); 15 | 16 | /** 17 | * Expose `HTTPSServer`. 18 | */ 19 | 20 | exports = module.exports = HTTPSServer; 21 | 22 | /** 23 | * Server proto. 24 | */ 25 | 26 | var app = HTTPSServer.prototype; 27 | 28 | /** 29 | * Initialize a new `HTTPSServer` with the 30 | * given `options`, and optional `middleware`. 31 | * 32 | * @param {Object} options 33 | * @param {Array} middleware 34 | * @api public 35 | */ 36 | 37 | function HTTPSServer(options, middleware){ 38 | connect.HTTPSServer.call(this, options, []); 39 | this.init(middleware); 40 | }; 41 | 42 | /** 43 | * Inherit from `connect.HTTPSServer`. 44 | */ 45 | 46 | app.__proto__ = connect.HTTPSServer.prototype; 47 | 48 | // mixin HTTPServer methods 49 | 50 | Object.keys(HTTPServer.prototype).forEach(function(method){ 51 | app[method] = HTTPServer.prototype[method]; 52 | }); 53 | -------------------------------------------------------------------------------- /mail-analyzer/benchmark/byThreadLength.csv: -------------------------------------------------------------------------------- 1 | com.igalia.metamail.jobs.MessagesByThreadLength,36.00 2 | com.igalia.metamail.jobs.MessagesByThreadLength,38.00 3 | com.igalia.metamail.jobs.MessagesByThreadLength,36.00 4 | com.igalia.metamail.jobs.MessagesByThreadLength,38.00 5 | com.igalia.metamail.jobs.MessagesByThreadLength,39.00 6 | com.igalia.metamail.jobs.MessagesByThreadLength,39.00 7 | com.igalia.metamail.jobs.MessagesByThreadLength,40.00 8 | com.igalia.metamail.jobs.MessagesByThreadLength,39.00 9 | com.igalia.metamail.jobs.MessagesByThreadLength,38.00 10 | com.igalia.metamail.jobs.MessagesByThreadLength,39.00 11 | com.igalia.metamail.jobs.MessagesByThreadLength,40.00 12 | com.igalia.metamail.jobs.MessagesByThreadLength,40.00 13 | com.igalia.metamail.jobs.MessagesByThreadLength,40.00 14 | com.igalia.metamail.jobs.MessagesByThreadLength,40.00 15 | com.igalia.metamail.jobs.MessagesByThreadLength,40.00 16 | com.igalia.metamail.jobs.MessagesByThreadLength,40.00 17 | com.igalia.metamail.jobs.MessagesByThreadLength,43.00 18 | com.igalia.metamail.jobs.MessagesByThreadLength,40.00 19 | com.igalia.metamail.jobs.MessagesByThreadLength,41.00 20 | com.igalia.metamail.jobs.MessagesByThreadLength,41.00 21 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/mkdirp/test/rel.js: -------------------------------------------------------------------------------- 1 | var mkdirp = require('../'); 2 | var path = require('path'); 3 | var fs = require('fs'); 4 | var test = require('tap').test; 5 | 6 | test('rel', function (t) { 7 | t.plan(2); 8 | var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); 9 | var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); 10 | var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); 11 | 12 | var cwd = process.cwd(); 13 | process.chdir('/tmp'); 14 | 15 | var file = [x,y,z].join('/'); 16 | 17 | mkdirp(file, 0755, function (err) { 18 | if (err) t.fail(err); 19 | else path.exists(file, function (ex) { 20 | if (!ex) t.fail('file not created') 21 | else fs.stat(file, function (err, stat) { 22 | if (err) t.fail(err) 23 | else { 24 | process.chdir(cwd); 25 | t.equal(stat.mode & 0777, 0755); 26 | t.ok(stat.isDirectory(), 'target not a directory'); 27 | t.end(); 28 | } 29 | }) 30 | }) 31 | }); 32 | }); 33 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/mime/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2010 Benjamin Thomas, Robert Kieffer 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/LICENSE: -------------------------------------------------------------------------------- 1 | (The MIT License) 2 | 3 | Copyright (c) 2009-2011 TJ Holowaychuk 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining 6 | a copy of this software and associated documentation files (the 7 | 'Software'), to deal in the Software without restriction, including 8 | without limitation the rights to use, copy, modify, merge, publish, 9 | distribute, sublicense, and/or sell copies of the Software, and to 10 | permit persons to whom the Software is furnished to do so, subject to 11 | the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be 14 | included in all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 19 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 20 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 21 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 22 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/mkdirp/README.markdown: -------------------------------------------------------------------------------- 1 | mkdirp 2 | ====== 3 | 4 | Like `mkdir -p`, but in node.js! 5 | 6 | example 7 | ======= 8 | 9 | pow.js 10 | ------ 11 | var mkdirp = require('mkdirp'); 12 | 13 | mkdirp('/tmp/foo/bar/baz', function (err) { 14 | if (err) console.error(err) 15 | else console.log('pow!') 16 | }); 17 | 18 | Output 19 | pow! 20 | 21 | And now /tmp/foo/bar/baz exists, huzzah! 22 | 23 | methods 24 | ======= 25 | 26 | var mkdirp = require('mkdirp'); 27 | 28 | mkdirp(dir, mode, cb) 29 | --------------------- 30 | 31 | Create a new directory and any necessary subdirectories at `dir` with octal 32 | permission string `mode`. 33 | 34 | If `mode` isn't specified, it defaults to `0777 & (~process.umask())`. 35 | 36 | mkdirp.sync(dir, mode) 37 | ---------------------- 38 | 39 | Synchronously create a new directory and any necessary subdirectories at `dir` 40 | with octal permission string `mode`. 41 | 42 | If `mode` isn't specified, it defaults to `0777 & (~process.umask())`. 43 | 44 | install 45 | ======= 46 | 47 | With [npm](http://npmjs.org) do: 48 | 49 | npm install mkdirp 50 | 51 | license 52 | ======= 53 | 54 | MIT/X11 55 | -------------------------------------------------------------------------------- /enron-importer/README.rst: -------------------------------------------------------------------------------- 1 | Enron Email Importer 2 | -------------------- 3 | 4 | This is a program for importing the Enron Email Dataset into a HBase database. You can download the Enron Email Dataset from http://www.cs.cmu.edu/~enron/enron_mail_20110402.tgz 5 | 6 | This program works fine with the Enron Email Dataset. Once you have download and uncompressed the dataset, create a folder called 'data' and place the emails there. The structure should be as follows: 7 | 8 | :: 9 | 10 | + enron-importer 11 | -+ data 12 | - DELETIONS.txt 13 | -+ maildir 14 | 15 | You can use this program to import your own dataset, although it may not fully work. 16 | 17 | In order to run this program succesfully you also need to install HBase. The program has been tested successfully against 'HBase 0.90.6'. 18 | 19 | Run it 20 | ------ 21 | 22 | Before running the program, check HBase is running: 23 | 24 | :: 25 | 26 | $ cd /usr/local/share/hbase/bin 27 | $ sudo ./start-hbase.sh 28 | 29 | 30 | Now build the program with Maven: 31 | 32 | :: 33 | 34 | $ mvn clean install 35 | 36 | Then run it: 37 | 38 | :: 39 | 40 | $ mvn exec:java -Dexec.mainClass="com.igalia.enron_importer.Main" 41 | -------------------------------------------------------------------------------- /metamail-ui/public/csv/msg-thread-length.csv: -------------------------------------------------------------------------------- 1 | name,value 2 | Pueblo,59 3 | Test,59 4 | Deferral Enrollment 2001,61 5 | test,61 6 | WP-02 Data Response,61 7 | California,63 8 | Yahoo! Breaking News,63 9 | Reminder,64 10 | Update,67 11 | Succession Plan,68 12 | meeting,69 13 | RE: Hello,70 14 | Synchronization Log:,70 15 | Vacation,72 16 | GISB,77 17 | Confidentiality Agreement,78 18 | All-Employee Meeting,83 19 | natsource checkout,89 20 | Datek Online execution report,95 21 | Year End 2000 Performance Feedback,95 22 | Gas Indices,103 23 | Meeting,104 24 | FYI,114 25 | WARNING: Your mailbox is approaching the size limit,115 26 | Lunch,118 27 | RIGZONE Industry News,118 28 | Organization Announcement,122 29 | Power Indices,129 30 | Hi,130 31 | Mid-Year 2001 Performance Feedback,131 32 | apb,135 33 | Hey,143 34 | Congratulations,144 35 | Williams Energy News Live -- today's video newscast,150 36 | Organizational Announcement,152 37 | Organizational Changes,156 38 | apb checkout,185 39 | Energy Issues,193 40 | EnTouch Newsletter,196 41 | (no subject),204 42 | Enron Mentions,385 43 | Schedule Crawler: HourAhead Failure ,405 44 | FW:,434 45 | Schedule Crawler: HourAhead Failure,466 46 | Demand Ken Lay Donate Proceeds from Enron Stock Sales,582 47 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/mkdirp/test/chmod.js: -------------------------------------------------------------------------------- 1 | var mkdirp = require('../').mkdirp; 2 | var path = require('path'); 3 | var fs = require('fs'); 4 | var test = require('tap').test; 5 | 6 | var ps = [ '', 'tmp' ]; 7 | 8 | for (var i = 0; i < 25; i++) { 9 | var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16); 10 | ps.push(dir); 11 | } 12 | 13 | var file = ps.join('/'); 14 | 15 | test('chmod-pre', function (t) { 16 | var mode = 0744 17 | mkdirp(file, mode, function (er) { 18 | t.ifError(er, 'should not error'); 19 | fs.stat(file, function (er, stat) { 20 | t.ifError(er, 'should exist'); 21 | t.ok(stat && stat.isDirectory(), 'should be directory'); 22 | t.equal(stat && stat.mode & 0777, mode, 'should be 0744'); 23 | t.end(); 24 | }); 25 | }); 26 | }); 27 | 28 | test('chmod', function (t) { 29 | var mode = 0755 30 | mkdirp(file, mode, function (er) { 31 | t.ifError(er, 'should not error'); 32 | fs.stat(file, function (er, stat) { 33 | t.ifError(er, 'should exist'); 34 | t.ok(stat && stat.isDirectory(), 'should be directory'); 35 | t.end(); 36 | }); 37 | }); 38 | }); 39 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/mkdirp/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2010 James Halliday (mail@substack.net) 2 | 3 | This project is free software released under the MIT/X11 license: 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/LICENSE: -------------------------------------------------------------------------------- 1 | (The MIT License) 2 | 3 | Copyright (c) 2010 Sencha Inc. 4 | Copyright (c) 2011 LearnBoost 5 | Copyright (c) 2011 TJ Holowaychuk 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining 8 | a copy of this software and associated documentation files (the 9 | 'Software'), to deal in the Software without restriction, including 10 | without limitation the rights to use, copy, modify, merge, publish, 11 | distribute, sublicense, and/or sell copies of the Software, and to 12 | permit persons to whom the Software is furnished to do so, subject to 13 | the following conditions: 14 | 15 | The above copyright notice and this permission notice shall be 16 | included in all copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 19 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 21 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 22 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/https.js: -------------------------------------------------------------------------------- 1 | 2 | /*! 3 | * Connect - HTTPServer 4 | * Copyright(c) 2010 Sencha Inc. 5 | * Copyright(c) 2011 TJ Holowaychuk 6 | * MIT Licensed 7 | */ 8 | 9 | /** 10 | * Module dependencies. 11 | */ 12 | 13 | var HTTPServer = require('./http').Server 14 | , https = require('https'); 15 | 16 | /** 17 | * Initialize a new `Server` with the given 18 | *`options` and `middleware`. The HTTPS api 19 | * is identical to the [HTTP](http.html) server, 20 | * however TLS `options` must be provided before 21 | * passing in the optional middleware. 22 | * 23 | * @params {Object} options 24 | * @params {Array} middleawre 25 | * @return {Server} 26 | * @api public 27 | */ 28 | 29 | var Server = exports.Server = function HTTPSServer(options, middleware) { 30 | this.stack = []; 31 | middleware.forEach(function(fn){ 32 | this.use(fn); 33 | }, this); 34 | https.Server.call(this, options, this.handle); 35 | }; 36 | 37 | /** 38 | * Inherit from `http.Server.prototype`. 39 | */ 40 | 41 | Server.prototype.__proto__ = https.Server.prototype; 42 | 43 | // mixin HTTPServer methods 44 | 45 | Object.keys(HTTPServer.prototype).forEach(function(method){ 46 | Server.prototype[method] = HTTPServer.prototype[method]; 47 | }); -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/mkdirp/test/perm_sync.js: -------------------------------------------------------------------------------- 1 | var mkdirp = require('../'); 2 | var path = require('path'); 3 | var fs = require('fs'); 4 | var test = require('tap').test; 5 | 6 | test('sync perm', function (t) { 7 | t.plan(2); 8 | var file = '/tmp/' + (Math.random() * (1<<30)).toString(16) + '.json'; 9 | 10 | mkdirp.sync(file, 0755); 11 | path.exists(file, function (ex) { 12 | if (!ex) t.fail('file not created') 13 | else fs.stat(file, function (err, stat) { 14 | if (err) t.fail(err) 15 | else { 16 | t.equal(stat.mode & 0777, 0755); 17 | t.ok(stat.isDirectory(), 'target not a directory'); 18 | t.end(); 19 | } 20 | }) 21 | }); 22 | }); 23 | 24 | test('sync root perm', function (t) { 25 | t.plan(1); 26 | 27 | var file = '/tmp'; 28 | mkdirp.sync(file, 0755); 29 | path.exists(file, function (ex) { 30 | if (!ex) t.fail('file not created') 31 | else fs.stat(file, function (err, stat) { 32 | if (err) t.fail(err) 33 | else { 34 | t.ok(stat.isDirectory(), 'target not a directory'); 35 | t.end(); 36 | } 37 | }) 38 | }); 39 | }); 40 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/mkdirp/test/race.js: -------------------------------------------------------------------------------- 1 | var mkdirp = require('../').mkdirp; 2 | var path = require('path'); 3 | var fs = require('fs'); 4 | var test = require('tap').test; 5 | 6 | test('race', function (t) { 7 | t.plan(4); 8 | var ps = [ '', 'tmp' ]; 9 | 10 | for (var i = 0; i < 25; i++) { 11 | var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16); 12 | ps.push(dir); 13 | } 14 | var file = ps.join('/'); 15 | 16 | var res = 2; 17 | mk(file, function () { 18 | if (--res === 0) t.end(); 19 | }); 20 | 21 | mk(file, function () { 22 | if (--res === 0) t.end(); 23 | }); 24 | 25 | function mk (file, cb) { 26 | mkdirp(file, 0755, function (err) { 27 | if (err) t.fail(err); 28 | else path.exists(file, function (ex) { 29 | if (!ex) t.fail('file not created') 30 | else fs.stat(file, function (err, stat) { 31 | if (err) t.fail(err) 32 | else { 33 | t.equal(stat.mode & 0777, 0755); 34 | t.ok(stat.isDirectory(), 'target not a directory'); 35 | if (cb) cb(); 36 | } 37 | }) 38 | }) 39 | }); 40 | } 41 | }); 42 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "express", 3 | "description": "Sinatra inspired web development framework", 4 | "version": "2.5.8", 5 | "author": "TJ Holowaychuk ", 6 | "contributors": [ 7 | { "name": "TJ Holowaychuk", "email": "tj@vision-media.ca" }, 8 | { "name": "Aaron Heckmann", "email": "aaron.heckmann+github@gmail.com" }, 9 | { "name": "Ciaran Jessup", "email": "ciaranj@gmail.com" }, 10 | { "name": "Guillermo Rauch", "email": "rauchg@gmail.com" } 11 | ], 12 | "dependencies": { 13 | "connect": "1.x", 14 | "mime": "1.2.4", 15 | "qs": "0.4.x", 16 | "mkdirp": "0.3.0" 17 | }, 18 | "devDependencies": { 19 | "connect-form": "0.2.1", 20 | "ejs": "0.4.2", 21 | "expresso": "0.9.2", 22 | "hamljs": "0.6.x", 23 | "jade": "0.16.2", 24 | "stylus": "0.13.0", 25 | "should": "0.3.2", 26 | "express-messages": "0.0.2", 27 | "node-markdown": ">= 0.0.1", 28 | "connect-redis": ">= 0.0.1" 29 | }, 30 | "keywords": ["framework", "sinatra", "web", "rest", "restful"], 31 | "repository": "git://github.com/visionmedia/express", 32 | "main": "index", 33 | "bin": { "express": "./bin/express" }, 34 | "scripts": { 35 | "test": "make test", 36 | "prepublish" : "npm prune" 37 | }, 38 | "engines": { "node": ">= 0.4.1 < 0.7.0" } 39 | } -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/middleware/vhost.js: -------------------------------------------------------------------------------- 1 | 2 | /*! 3 | * Connect - vhost 4 | * Copyright(c) 2010 Sencha Inc. 5 | * Copyright(c) 2011 TJ Holowaychuk 6 | * MIT Licensed 7 | */ 8 | 9 | /** 10 | * Setup vhost for the given `hostname` and `server`. 11 | * 12 | * Examples: 13 | * 14 | * connect( 15 | * connect.vhost('foo.com', 16 | * connect.createServer(...middleware...) 17 | * ), 18 | * connect.vhost('bar.com', 19 | * connect.createServer(...middleware...) 20 | * ) 21 | * ); 22 | * 23 | * @param {String} hostname 24 | * @param {Server} server 25 | * @return {Function} 26 | * @api public 27 | */ 28 | 29 | module.exports = function vhost(hostname, server){ 30 | if (!hostname) throw new Error('vhost hostname required'); 31 | if (!server) throw new Error('vhost server required'); 32 | var regexp = new RegExp('^' + hostname.replace(/[*]/g, '(.*?)') + '$'); 33 | if (server.onvhost) server.onvhost(hostname); 34 | return function vhost(req, res, next){ 35 | if (!req.headers.host) return next(); 36 | var host = req.headers.host.split(':')[0]; 37 | if (req.subdomains = regexp.exec(host)) { 38 | req.subdomains = req.subdomains[0].split('.').slice(0, -1); 39 | server.emit("request", req, res); 40 | } else { 41 | next(); 42 | } 43 | }; 44 | }; 45 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-querystring-parser.js: -------------------------------------------------------------------------------- 1 | var common = require('../common'); 2 | var QuerystringParser = require(common.lib + '/querystring_parser').QuerystringParser, 3 | Buffer = require('buffer').Buffer, 4 | gently, 5 | parser; 6 | 7 | function test(test) { 8 | gently = new Gently(); 9 | parser = new QuerystringParser(); 10 | test(); 11 | gently.verify(test.name); 12 | } 13 | 14 | test(function constructor() { 15 | assert.equal(parser.buffer, ''); 16 | assert.equal(parser.constructor.name, 'QuerystringParser'); 17 | }); 18 | 19 | test(function write() { 20 | var a = new Buffer('a=1'); 21 | assert.equal(parser.write(a), a.length); 22 | 23 | var b = new Buffer('&b=2'); 24 | parser.write(b); 25 | assert.equal(parser.buffer, a + b); 26 | }); 27 | 28 | test(function end() { 29 | var FIELDS = {a: ['b', {c: 'd'}], e: 'f'}; 30 | 31 | gently.expect(GENTLY.hijacked.querystring, 'parse', function(str) { 32 | assert.equal(str, parser.buffer); 33 | return FIELDS; 34 | }); 35 | 36 | gently.expect(parser, 'onField', Object.keys(FIELDS).length, function(key, val) { 37 | assert.deepEqual(FIELDS[key], val); 38 | }); 39 | 40 | gently.expect(parser, 'onEnd'); 41 | 42 | parser.buffer = 'my buffer'; 43 | parser.end(); 44 | assert.equal(parser.buffer, ''); 45 | }); 46 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/qs/examples.js: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * Module dependencies. 4 | */ 5 | 6 | var qs = require('./'); 7 | 8 | var obj = qs.parse('foo'); 9 | console.log(obj) 10 | 11 | var obj = qs.parse('foo=bar=baz'); 12 | console.log(obj) 13 | 14 | var obj = qs.parse('users[]'); 15 | console.log(obj) 16 | 17 | var obj = qs.parse('name=tj&email=tj@vision-media.ca'); 18 | console.log(obj) 19 | 20 | var obj = qs.parse('users[]=tj&users[]=tobi&users[]=jane'); 21 | console.log(obj) 22 | 23 | var obj = qs.parse('user[name][first]=tj&user[name][last]=holowaychuk'); 24 | console.log(obj) 25 | 26 | var obj = qs.parse('users[][name][first]=tj&users[][name][last]=holowaychuk'); 27 | console.log(obj) 28 | 29 | var obj = qs.parse('a=a&a=b&a=c'); 30 | console.log(obj) 31 | 32 | var obj = qs.parse('user[tj]=tj&user[tj]=TJ'); 33 | console.log(obj) 34 | 35 | var obj = qs.parse('user[names]=tj&user[names]=TJ&user[names]=Tyler'); 36 | console.log(obj) 37 | 38 | var obj = qs.parse('user[name][first]=tj&user[name][first]=TJ'); 39 | console.log(obj) 40 | 41 | var obj = qs.parse('user[0]=tj&user[1]=TJ'); 42 | console.log(obj) 43 | 44 | var obj = qs.parse('user[0]=tj&user[]=TJ'); 45 | console.log(obj) 46 | 47 | var obj = qs.parse('user[0]=tj&user[foo]=TJ'); 48 | console.log(obj) 49 | 50 | var str = qs.stringify({ user: { name: 'Tobi', email: 'tobi@learnboost.com' }}); 51 | console.log(str); -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/node_modules/formidable/example/post.js: -------------------------------------------------------------------------------- 1 | require('../test/common'); 2 | var http = require('http'), 3 | util = require('util'), 4 | formidable = require('formidable'), 5 | server; 6 | 7 | server = http.createServer(function(req, res) { 8 | if (req.url == '/') { 9 | res.writeHead(200, {'content-type': 'text/html'}); 10 | res.end( 11 | '
    '+ 12 | '
    '+ 13 | '
    '+ 14 | ''+ 15 | '
    ' 16 | ); 17 | } else if (req.url == '/post') { 18 | var form = new formidable.IncomingForm(), 19 | fields = []; 20 | 21 | form 22 | .on('error', function(err) { 23 | res.writeHead(200, {'content-type': 'text/plain'}); 24 | res.end('error:\n\n'+util.inspect(err)); 25 | }) 26 | .on('field', function(field, value) { 27 | console.log(field, value); 28 | fields.push([field, value]); 29 | }) 30 | .on('end', function() { 31 | console.log('-> post done'); 32 | res.writeHead(200, {'content-type': 'text/plain'}); 33 | res.end('received fields:\n\n '+util.inspect(fields)); 34 | }); 35 | form.parse(req); 36 | } else { 37 | res.writeHead(404, {'content-type': 'text/plain'}); 38 | res.end('404'); 39 | } 40 | }); 41 | server.listen(TEST_PORT); 42 | 43 | console.log('listening on http://localhost:'+TEST_PORT+'/'); 44 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/node_modules/formidable/tool/record.js: -------------------------------------------------------------------------------- 1 | var http = require('http'); 2 | var fs = require('fs'); 3 | var connections = 0; 4 | 5 | var server = http.createServer(function(req, res) { 6 | var socket = req.socket; 7 | console.log('Request: %s %s -> %s', req.method, req.url, socket.filename); 8 | 9 | req.on('end', function() { 10 | if (req.url !== '/') { 11 | res.end(JSON.stringify({ 12 | method: req.method, 13 | url: req.url, 14 | filename: socket.filename, 15 | })); 16 | return; 17 | } 18 | 19 | res.writeHead(200, {'content-type': 'text/html'}); 20 | res.end( 21 | '
    '+ 22 | '
    '+ 23 | '
    '+ 24 | ''+ 25 | '
    ' 26 | ); 27 | }); 28 | }); 29 | 30 | server.on('connection', function(socket) { 31 | connections++; 32 | 33 | socket.id = connections; 34 | socket.filename = 'connection-' + socket.id + '.http'; 35 | socket.file = fs.createWriteStream(socket.filename); 36 | socket.pipe(socket.file); 37 | 38 | console.log('--> %s', socket.filename); 39 | socket.on('close', function() { 40 | console.log('<-- %s', socket.filename); 41 | }); 42 | }); 43 | 44 | var port = process.env.PORT || 8080; 45 | server.listen(port, function() { 46 | console.log('Recording connections on port %s', port); 47 | }); 48 | -------------------------------------------------------------------------------- /metamail-ui/app.js: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * Module dependencies. 4 | */ 5 | 6 | var express = require('express'), 7 | routes = require('./routes'); 8 | 9 | var app = module.exports = express.createServer(); 10 | 11 | // Configuration 12 | 13 | app.configure(function(){ 14 | app.set('views', __dirname + '/views'); 15 | app.set('view engine', 'ejs'); 16 | app.use(express.bodyParser()); 17 | app.use(express.methodOverride()); 18 | app.use(app.router); 19 | app.use(express.static(__dirname + '/public')); 20 | }); 21 | 22 | app.configure('development', function(){ 23 | app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); 24 | }); 25 | 26 | app.configure('production', function(){ 27 | app.use(express.errorHandler()); 28 | }); 29 | 30 | // Routes 31 | 32 | app.get('/', routes.index); 33 | app.get('/graphics/msg-by-size', routes.msg_by_size); 34 | app.get('/graphics/msg-by-day-week', routes.msg_by_day_week); 35 | app.get('/graphics/msg-by-hour-day', routes.msg_by_hour_day); 36 | app.get('/graphics/msg-by-month', routes.msg_by_month); 37 | app.get('/graphics/msg-by-year', routes.msg_by_year); 38 | app.get('/graphics/msg-received', routes.msg_received); 39 | app.get('/graphics/msg-sent', routes.msg_sent); 40 | app.get('/graphics/msg-thread-length', routes.msg_thread_length); 41 | 42 | // Listen to env.PORT if it's defined (needed to deploy in Heroku) 43 | var port = process.env.PORT || 3000; 44 | app.listen(port, function() { 45 | console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env); 46 | }); 47 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/cache.js: -------------------------------------------------------------------------------- 1 | 2 | /*! 3 | * Connect - Cache 4 | * Copyright(c) 2011 Sencha Inc. 5 | * MIT Licensed 6 | */ 7 | 8 | /** 9 | * Expose `Cache`. 10 | */ 11 | 12 | module.exports = Cache; 13 | 14 | /** 15 | * LRU cache store. 16 | * 17 | * @param {Number} limit 18 | * @api private 19 | */ 20 | 21 | function Cache(limit) { 22 | this.store = {}; 23 | this.keys = []; 24 | this.limit = limit; 25 | } 26 | 27 | /** 28 | * Touch `key`, promoting the object. 29 | * 30 | * @param {String} key 31 | * @param {Number} i 32 | * @api private 33 | */ 34 | 35 | Cache.prototype.touch = function(key, i){ 36 | this.keys.splice(i,1); 37 | this.keys.push(key); 38 | }; 39 | 40 | /** 41 | * Remove `key`. 42 | * 43 | * @param {String} key 44 | * @api private 45 | */ 46 | 47 | Cache.prototype.remove = function(key){ 48 | delete this.store[key]; 49 | }; 50 | 51 | /** 52 | * Get the object stored for `key`. 53 | * 54 | * @param {String} key 55 | * @return {Array} 56 | * @api private 57 | */ 58 | 59 | Cache.prototype.get = function(key){ 60 | return this.store[key]; 61 | }; 62 | 63 | /** 64 | * Add a cache `key`. 65 | * 66 | * @param {String} key 67 | * @return {Array} 68 | * @api private 69 | */ 70 | 71 | Cache.prototype.add = function(key){ 72 | // initialize store 73 | var len = this.keys.push(key); 74 | 75 | // limit reached, invalid LRU 76 | if (len > this.limit) this.remove(this.keys.shift()); 77 | 78 | var arr = this.store[key] = []; 79 | arr.createdAt = new Date; 80 | return arr; 81 | }; 82 | -------------------------------------------------------------------------------- /metamail-ui/public/csv/msg-by-month.csv: -------------------------------------------------------------------------------- 1 | MONTH:1-1980 522 2 | MONTH:1-1997 1 3 | MONTH:1-1998 4 4 | MONTH:1-1999 130 5 | MONTH:1-2000 6357 6 | MONTH:1-2001 24013 7 | MONTH:1-2002 21013 8 | MONTH:1-2044 3 9 | MONTH:10-1997 28 10 | MONTH:10-1998 8 11 | MONTH:10-1999 1394 12 | MONTH:10-2000 24720 13 | MONTH:10-2001 37083 14 | MONTH:10-2002 1 15 | MONTH:11-1997 32 16 | MONTH:11-1998 56 17 | MONTH:11-1999 1310 18 | MONTH:11-2000 32494 19 | MONTH:11-2001 28594 20 | MONTH:11-2012 2 21 | MONTH:12-1998 107 22 | MONTH:12-1999 3545 23 | MONTH:12-2000 31403 24 | MONTH:12-2001 11426 25 | MONTH:12-2002 1 26 | MONTH:12-2005 1 27 | MONTH:12-2020 2 28 | MONTH:12-2043 1 29 | MONTH:2-1999 91 30 | MONTH:2-2000 7191 31 | MONTH:2-2001 23150 32 | MONTH:2-2002 8282 33 | MONTH:2-2004 70 34 | MONTH:2-2007 1 35 | MONTH:3-1997 39 36 | MONTH:3-1999 112 37 | MONTH:3-2000 8744 38 | MONTH:3-2001 28522 39 | MONTH:3-2002 3475 40 | MONTH:4-1986 1 41 | MONTH:4-1997 36 42 | MONTH:4-1999 97 43 | MONTH:4-2000 8626 44 | MONTH:4-2001 35645 45 | MONTH:4-2002 1156 46 | MONTH:5-1986 1 47 | MONTH:5-1997 32 48 | MONTH:5-1998 1 49 | MONTH:5-1999 662 50 | MONTH:5-2000 10242 51 | MONTH:5-2001 35665 52 | MONTH:5-2002 906 53 | MONTH:5-2024 1 54 | MONTH:6-1997 64 55 | MONTH:6-1999 645 56 | MONTH:6-2000 13703 57 | MONTH:6-2001 18890 58 | MONTH:6-2002 927 59 | MONTH:7-1997 56 60 | MONTH:7-1999 859 61 | MONTH:7-2000 13617 62 | MONTH:7-2001 10160 63 | MONTH:7-2002 244 64 | MONTH:8-1997 77 65 | MONTH:8-1999 1060 66 | MONTH:8-2000 19058 67 | MONTH:8-2001 8918 68 | MONTH:9-1997 72 69 | MONTH:9-1998 1 70 | MONTH:9-1999 1239 71 | MONTH:9-2000 19939 72 | MONTH:9-2001 10890 73 | MONTH:9-2002 6 74 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/mime/types/node.types: -------------------------------------------------------------------------------- 1 | # What: Google Chrome Extension 2 | # Why: To allow apps to (work) be served with the right content type header. 3 | # http://codereview.chromium.org/2830017 4 | # Added by: niftylettuce 5 | application/x-chrome-extension crx 6 | 7 | # What: OTF Message Silencer 8 | # Why: To silence the "Resource interpreted as font but transferred with MIME 9 | # type font/otf" message that occurs in Google Chrome 10 | # Added by: niftylettuce 11 | font/opentype otf 12 | 13 | # What: HTC support 14 | # Why: To properly render .htc files such as CSS3PIE 15 | # Added by: niftylettuce 16 | text/x-component htc 17 | 18 | # What: HTML5 application cache manifest 19 | # Why: De-facto standard. Required by Mozilla browser when serving HTML5 apps 20 | # per https://developer.mozilla.org/en/offline_resources_in_firefox 21 | # Added by: louisremi 22 | text/cache-manifest appcache manifest 23 | 24 | # What: node binary buffer format 25 | # Why: semi-standard extension w/in the node community 26 | # Added by: tootallnate 27 | application/octet-stream buffer 28 | 29 | # What: The "protected" MP-4 formats used by iTunes. 30 | # Why: Required for streaming music to browsers (?) 31 | # Added by: broofa 32 | application/mp4 m4p 33 | audio/mp4 m4a 34 | 35 | # What: Music playlist format (http://en.wikipedia.org/wiki/M3U) 36 | # Why: See https://github.com/bentomas/node-mime/pull/6 37 | # Added by: mjrusso 38 | application/x-mpegURL m3u8 39 | 40 | # What: Video format, Part of RFC1890 41 | # Why: See https://github.com/bentomas/node-mime/pull/6 42 | # Added by: mjrusso 43 | video/MP2T ts 44 | -------------------------------------------------------------------------------- /metamail-ui/public/csv/msg-received.csv: -------------------------------------------------------------------------------- 1 | name,value 2 | richard.shapiro@enron.com,7442 3 | jeff.dasovich@enron.com,6965 4 | steven.kean@enron.com,6184 5 | tana.jones@enron.com,5667 6 | james.steffes@enron.com,5086 7 | pete.davis@enron.com,4631 8 | susan.mara@enron.com,4452 9 | paul.kaufman@enron.com,4177 10 | louise.kitchen@enron.com,3739 11 | tim.belden@enron.com,3703 12 | sally.beck@enron.com,3414 13 | harry.kingerski@enron.com,3250 14 | gerald.nemec@enron.com,3137 15 | karen.denne@enron.com,3052 16 | mark.taylor@enron.com,3045 17 | john.lavorato@enron.com,3045 18 | joe.hartsoe@enron.com,2994 19 | sandra.mccubbin@enron.com,2988 20 | sarah.novosel@enron.com,2868 21 | alan.comnes@enron.com,2801 22 | daren.farmer@enron.com,2722 23 | kate.symes@enron.com,2717 24 | sara.shackleton@enron.com,2696 25 | elizabeth.sager@enron.com,2645 26 | richard.sanders@enron.com,2623 27 | linda.robertson@enron.com,2472 28 | greg.whalley@enron.com,2316 29 | william.bradford@enron.com,2259 30 | mark.palmer@enron.com,2237 31 | benjamin.rogers@enron.com,2171 32 | mary.hain@enron.com,2113 33 | don.baughman@enron.com,2101 34 | skean@enron.com,2082 35 | chris.germany@enron.com,2017 36 | kenneth.lay@enron.com,1997 37 | michelle.lokay@enron.com,1828 38 | susan.bailey@enron.com,1826 39 | janel.guerrero@enron.com,1824 40 | mike.grigsby@enron.com,1817 41 | steven.harris@enron.com,1810 42 | christian.yoder@enron.com,1804 43 | robert.badeer@enron.com,1790 44 | dana.davis@enron.com,1756 45 | mark.haedicke@enron.com,1716 46 | jdasovic@enron.com,1691 47 | jeff.skilling@enron.com,1690 48 | matthew.lenhart@enron.com,1676 49 | scott.neal@enron.com,1675 50 | lorraine.lindberg@enron.com,1653 51 | edward.sacks@enron.com,1642 52 | -------------------------------------------------------------------------------- /metamail-ui/public/csv/msg-sent.csv: -------------------------------------------------------------------------------- 1 | name,value 2 | jeff.dasovich@enron.com,11385 3 | chris.germany@enron.com,8781 4 | pete.davis@enron.com,8496 5 | tana.jones@enron.com,8140 6 | enron.announcements@enron.com,7651 7 | vince.kaminski@enron.com,6718 8 | steven.kean@enron.com,6477 9 | kate.symes@enron.com,5415 10 | matthew.lenhart@enron.com,5265 11 | eric.bass@enron.com,5158 12 | no.address@enron.com,4480 13 | debra.perlingiere@enron.com,4340 14 | sally.beck@enron.com,4336 15 | kay.mann@enron.com,4308 16 | susan.scott@enron.com,3998 17 | gerald.nemec@enron.com,3861 18 | drew.fossum@enron.com,3702 19 | benjamin.rogers@enron.com,3425 20 | richard.sanders@enron.com,3255 21 | phillip.love@enron.com,3112 22 | carol.clair@enron.com,3069 23 | daren.farmer@enron.com,2812 24 | jeffrey.shankman@enron.com,2628 25 | elizabeth.sager@enron.com,2617 26 | john.lavorato@enron.com,2541 27 | sara.shackleton@enron.com,2328 28 | 40enron@enron.com,2230 29 | phillip.allen@enron.com,2193 30 | mark.haedicke@enron.com,1903 31 | scott.neal@enron.com,1826 32 | michelle.cash@enron.com,1815 33 | outlook.team@enron.com,1750 34 | mike.grigsby@enron.com,1691 35 | susan.mara@enron.com,1683 36 | d..steffes@enron.com,1636 37 | louise.kitchen@enron.com,1560 38 | john.arnold@enron.com,1521 39 | mary.hain@enron.com,1455 40 | arsystem@mailman.enron.com,1445 41 | larry.campbell@enron.com,1387 42 | james.steffes@enron.com,1326 43 | errol.mclaughlin@enron.com,1307 44 | j.kaminski@enron.com,1228 45 | lynn.blair@enron.com,1210 46 | richard.shapiro@enron.com,1206 47 | mark.taylor@enron.com,1201 48 | kimberly.watson@enron.com,1169 49 | maureen.mcvicker@enron.com,1133 50 | rosalee.fleming@enron.com,1091 51 | stanley.horton@enron.com,1071 52 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/lib/express.js: -------------------------------------------------------------------------------- 1 | 2 | /*! 3 | * Express 4 | * Copyright(c) 2010 TJ Holowaychuk 5 | * MIT Licensed 6 | */ 7 | 8 | /** 9 | * Module dependencies. 10 | */ 11 | 12 | var connect = require('connect') 13 | , HTTPSServer = require('./https') 14 | , HTTPServer = require('./http') 15 | , Route = require('./router/route') 16 | 17 | /** 18 | * Re-export connect auto-loaders. 19 | * 20 | * This prevents the need to `require('connect')` in order 21 | * to access core middleware, so for example `express.logger()` instead 22 | * of `require('connect').logger()`. 23 | */ 24 | 25 | var exports = module.exports = connect.middleware; 26 | 27 | /** 28 | * Framework version. 29 | */ 30 | 31 | exports.version = '2.5.8'; 32 | 33 | /** 34 | * Shortcut for `new Server(...)`. 35 | * 36 | * @param {Function} ... 37 | * @return {Server} 38 | * @api public 39 | */ 40 | 41 | exports.createServer = function(options){ 42 | if ('object' == typeof options) { 43 | return new HTTPSServer(options, Array.prototype.slice.call(arguments, 1)); 44 | } else { 45 | return new HTTPServer(Array.prototype.slice.call(arguments)); 46 | } 47 | }; 48 | 49 | /** 50 | * Expose constructors. 51 | */ 52 | 53 | exports.HTTPServer = HTTPServer; 54 | exports.HTTPSServer = HTTPSServer; 55 | exports.Route = Route; 56 | 57 | /** 58 | * View extensions. 59 | */ 60 | 61 | exports.View = 62 | exports.view = require('./view'); 63 | 64 | /** 65 | * Response extensions. 66 | */ 67 | 68 | require('./response'); 69 | 70 | /** 71 | * Request extensions. 72 | */ 73 | 74 | require('./request'); 75 | 76 | // Error handler title 77 | 78 | exports.errorHandler.title = 'Express'; 79 | 80 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/node_modules/formidable/example/upload.js: -------------------------------------------------------------------------------- 1 | require('../test/common'); 2 | var http = require('http'), 3 | util = require('util'), 4 | formidable = require('formidable'), 5 | server; 6 | 7 | server = http.createServer(function(req, res) { 8 | if (req.url == '/') { 9 | res.writeHead(200, {'content-type': 'text/html'}); 10 | res.end( 11 | '
    '+ 12 | '
    '+ 13 | '
    '+ 14 | ''+ 15 | '
    ' 16 | ); 17 | } else if (req.url == '/upload') { 18 | var form = new formidable.IncomingForm(), 19 | files = [], 20 | fields = []; 21 | 22 | form.uploadDir = TEST_TMP; 23 | 24 | form 25 | .on('field', function(field, value) { 26 | console.log(field, value); 27 | fields.push([field, value]); 28 | }) 29 | .on('file', function(field, file) { 30 | console.log(field, file); 31 | files.push([field, file]); 32 | }) 33 | .on('end', function() { 34 | console.log('-> upload done'); 35 | res.writeHead(200, {'content-type': 'text/plain'}); 36 | res.write('received fields:\n\n '+util.inspect(fields)); 37 | res.write('\n\n'); 38 | res.end('received files:\n\n '+util.inspect(files)); 39 | }); 40 | form.parse(req); 41 | } else { 42 | res.writeHead(404, {'content-type': 'text/plain'}); 43 | res.end('404'); 44 | } 45 | }); 46 | server.listen(TEST_PORT); 47 | 48 | console.log('listening on http://localhost:'+TEST_PORT+'/'); 49 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/qs/History.md: -------------------------------------------------------------------------------- 1 | 2 | 0.4.2 / 2012-02-08 3 | ================== 4 | 5 | * Fixed: ensure objects are created when appropriate not arrays [aheckmann] 6 | 7 | 0.4.1 / 2012-01-26 8 | ================== 9 | 10 | * Fixed stringify()ing numbers. Closes #23 11 | 12 | 0.4.0 / 2011-11-21 13 | ================== 14 | 15 | * Allow parsing of an existing object (for `bodyParser()`) [jackyz] 16 | * Replaced expresso with mocha 17 | 18 | 0.3.2 / 2011-11-08 19 | ================== 20 | 21 | * Fixed global variable leak 22 | 23 | 0.3.1 / 2011-08-17 24 | ================== 25 | 26 | * Added `try/catch` around malformed uri components 27 | * Add test coverage for Array native method bleed-though 28 | 29 | 0.3.0 / 2011-07-19 30 | ================== 31 | 32 | * Allow `array[index]` and `object[property]` syntaxes [Aria Stewart] 33 | 34 | 0.2.0 / 2011-06-29 35 | ================== 36 | 37 | * Added `qs.stringify()` [Cory Forsyth] 38 | 39 | 0.1.0 / 2011-04-13 40 | ================== 41 | 42 | * Added jQuery-ish array support 43 | 44 | 0.0.7 / 2011-03-13 45 | ================== 46 | 47 | * Fixed; handle empty string and `== null` in `qs.parse()` [dmit] 48 | allows for convenient `qs.parse(url.parse(str).query)` 49 | 50 | 0.0.6 / 2011-02-14 51 | ================== 52 | 53 | * Fixed; support for implicit arrays 54 | 55 | 0.0.4 / 2011-02-09 56 | ================== 57 | 58 | * Fixed `+` as a space 59 | 60 | 0.0.3 / 2011-02-08 61 | ================== 62 | 63 | * Fixed case when right-hand value contains "]" 64 | 65 | 0.0.2 / 2011-02-07 66 | ================== 67 | 68 | * Fixed "=" presence in key 69 | 70 | 0.0.1 / 2011-02-07 71 | ================== 72 | 73 | * Initial release -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/lib/router/methods.js: -------------------------------------------------------------------------------- 1 | 2 | /*! 3 | * Express - router - methods 4 | * Copyright(c) 2010 TJ Holowaychuk 5 | * MIT Licensed 6 | */ 7 | 8 | /** 9 | * Hypertext Transfer Protocol -- HTTP/1.1 10 | * http://www.ietf.org/rfc/rfc2616.txt 11 | */ 12 | 13 | var RFC2616 = ['OPTIONS', 'GET', 'POST', 'PUT', 'DELETE', 'TRACE', 'CONNECT']; 14 | 15 | /** 16 | * HTTP Extensions for Distributed Authoring -- WEBDAV 17 | * http://www.ietf.org/rfc/rfc2518.txt 18 | */ 19 | 20 | var RFC2518 = ['PROPFIND', 'PROPPATCH', 'MKCOL', 'COPY', 'MOVE', 'LOCK', 'UNLOCK']; 21 | 22 | /** 23 | * Versioning Extensions to WebDAV 24 | * http://www.ietf.org/rfc/rfc3253.txt 25 | */ 26 | 27 | var RFC3253 = ['VERSION-CONTROL', 'REPORT', 'CHECKOUT', 'CHECKIN', 'UNCHECKOUT', 'MKWORKSPACE', 'UPDATE', 'LABEL', 'MERGE', 'BASELINE-CONTROL', 'MKACTIVITY']; 28 | 29 | /** 30 | * Ordered Collections Protocol (WebDAV) 31 | * http://www.ietf.org/rfc/rfc3648.txt 32 | */ 33 | 34 | var RFC3648 = ['ORDERPATCH']; 35 | 36 | /** 37 | * Web Distributed Authoring and Versioning (WebDAV) Access Control Protocol 38 | * http://www.ietf.org/rfc/rfc3744.txt 39 | */ 40 | 41 | var RFC3744 = ['ACL']; 42 | 43 | /** 44 | * Web Distributed Authoring and Versioning (WebDAV) SEARCH 45 | * http://www.ietf.org/rfc/rfc5323.txt 46 | */ 47 | 48 | var RFC5323 = ['SEARCH']; 49 | 50 | /** 51 | * PATCH Method for HTTP 52 | * http://www.ietf.org/rfc/rfc5789.txt 53 | */ 54 | 55 | var RFC5789 = ['PATCH']; 56 | 57 | /** 58 | * Expose the methods. 59 | */ 60 | 61 | module.exports = [].concat( 62 | RFC2616 63 | , RFC2518 64 | , RFC3253 65 | , RFC3648 66 | , RFC3744 67 | , RFC5323 68 | , RFC5789).map(function(method){ 69 | return method.toLowerCase(); 70 | }); 71 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-multipart-parser.js: -------------------------------------------------------------------------------- 1 | var common = require('../common'); 2 | var multipartParser = require(common.lib + '/multipart_parser'), 3 | MultipartParser = multipartParser.MultipartParser, 4 | events = require('events'), 5 | Buffer = require('buffer').Buffer, 6 | parser; 7 | 8 | function test(test) { 9 | parser = new MultipartParser(); 10 | test(); 11 | } 12 | 13 | test(function constructor() { 14 | assert.equal(parser.boundary, null); 15 | assert.equal(parser.state, 0); 16 | assert.equal(parser.flags, 0); 17 | assert.equal(parser.boundaryChars, null); 18 | assert.equal(parser.index, null); 19 | assert.equal(parser.lookbehind, null); 20 | assert.equal(parser.constructor.name, 'MultipartParser'); 21 | }); 22 | 23 | test(function initWithBoundary() { 24 | var boundary = 'abc'; 25 | parser.initWithBoundary(boundary); 26 | assert.deepEqual(Array.prototype.slice.call(parser.boundary), [13, 10, 45, 45, 97, 98, 99]); 27 | assert.equal(parser.state, multipartParser.START); 28 | 29 | assert.deepEqual(parser.boundaryChars, {10: true, 13: true, 45: true, 97: true, 98: true, 99: true}); 30 | }); 31 | 32 | test(function parserError() { 33 | var boundary = 'abc', 34 | buffer = new Buffer(5); 35 | 36 | parser.initWithBoundary(boundary); 37 | buffer.write('--ad', 'ascii', 0); 38 | assert.equal(parser.write(buffer), 3); 39 | }); 40 | 41 | test(function end() { 42 | (function testError() { 43 | assert.equal(parser.end().message, 'MultipartParser.end(): stream ended unexpectedly: ' + parser.explain()); 44 | })(); 45 | 46 | (function testRegular() { 47 | parser.state = multipartParser.END; 48 | assert.strictEqual(parser.end(), undefined); 49 | })(); 50 | }); 51 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/patch.js: -------------------------------------------------------------------------------- 1 | 2 | /*! 3 | * Connect 4 | * Copyright(c) 2011 TJ Holowaychuk 5 | * MIT Licensed 6 | */ 7 | 8 | /** 9 | * Module dependencies. 10 | */ 11 | 12 | var http = require('http') 13 | , res = http.OutgoingMessage.prototype; 14 | 15 | // original setHeader() 16 | 17 | var setHeader = res.setHeader; 18 | 19 | // original _renderHeaders() 20 | 21 | var _renderHeaders = res._renderHeaders; 22 | 23 | if (res._hasConnectPatch) return; 24 | 25 | /** 26 | * Provide a public "header sent" flag 27 | * until node does. 28 | * 29 | * @return {Boolean} 30 | * @api public 31 | */ 32 | 33 | res.__defineGetter__('headerSent', function(){ 34 | return this._headerSent; 35 | }); 36 | 37 | /** 38 | * Set header `field` to `val`, special-casing 39 | * the `Set-Cookie` field for multiple support. 40 | * 41 | * @param {String} field 42 | * @param {String} val 43 | * @api public 44 | */ 45 | 46 | res.setHeader = function(field, val){ 47 | var key = field.toLowerCase() 48 | , prev; 49 | 50 | // special-case Set-Cookie 51 | if (this._headers && 'set-cookie' == key) { 52 | if (prev = this.getHeader(field)) { 53 | val = Array.isArray(prev) 54 | ? prev.concat(val) 55 | : [prev, val]; 56 | } 57 | // charset 58 | } else if ('content-type' == key && this.charset) { 59 | val += '; charset=' + this.charset; 60 | } 61 | 62 | return setHeader.call(this, field, val); 63 | }; 64 | 65 | /** 66 | * Proxy `res.end()` to expose a 'header' event, 67 | * allowing arbitrary augmentation before the header 68 | * fields are written to the socket. 69 | * 70 | * NOTE: this _only_ supports node's progressive header 71 | * field API aka `res.setHeader()`. 72 | */ 73 | 74 | res._renderHeaders = function(){ 75 | this.emit('header'); 76 | return _renderHeaders.call(this); 77 | }; 78 | 79 | res._hasConnectPatch = true; 80 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/middleware/limit.js: -------------------------------------------------------------------------------- 1 | 2 | /*! 3 | * Connect - limit 4 | * Copyright(c) 2011 TJ Holowaychuk 5 | * MIT Licensed 6 | */ 7 | 8 | /** 9 | * Limit request bodies to the given size in `bytes`. 10 | * 11 | * A string representation of the bytesize may also be passed, 12 | * for example "5mb", "200kb", "1gb", etc. 13 | * 14 | * Examples: 15 | * 16 | * var server = connect( 17 | * connect.limit('5.5mb') 18 | * ).listen(3000); 19 | * 20 | * @param {Number|String} bytes 21 | * @return {Function} 22 | * @api public 23 | */ 24 | 25 | module.exports = function limit(bytes){ 26 | if ('string' == typeof bytes) bytes = parse(bytes); 27 | if ('number' != typeof bytes) throw new Error('limit() bytes required'); 28 | return function limit(req, res, next){ 29 | var received = 0 30 | , len = req.headers['content-length'] 31 | ? parseInt(req.headers['content-length'], 10) 32 | : null; 33 | 34 | // deny the request 35 | function deny() { 36 | req.destroy(); 37 | } 38 | 39 | // self-awareness 40 | if (req._limit) return next(); 41 | req._limit = true; 42 | 43 | // limit by content-length 44 | if (len && len > bytes) { 45 | res.statusCode = 413; 46 | res.end('Request Entity Too Large'); 47 | return; 48 | } 49 | 50 | // limit 51 | req.on('data', function(chunk){ 52 | received += chunk.length; 53 | if (received > bytes) deny(); 54 | }); 55 | 56 | next(); 57 | }; 58 | }; 59 | 60 | /** 61 | * Parse byte `size` string. 62 | * 63 | * @param {String} size 64 | * @return {Number} 65 | * @api private 66 | */ 67 | 68 | function parse(size) { 69 | var parts = size.match(/^(\d+(?:\.\d+)?) *(kb|mb|gb)$/) 70 | , n = parseFloat(parts[1]) 71 | , type = parts[2]; 72 | 73 | var map = { 74 | kb: 1024 75 | , mb: 1024 * 1024 76 | , gb: 1024 * 1024 * 1024 77 | }; 78 | 79 | return map[type] * n; 80 | } -------------------------------------------------------------------------------- /metamail-ui/public/stylesheets/base.css: -------------------------------------------------------------------------------- 1 | body { 2 | height: 100%; 3 | margin: 0px auto; 4 | padding: 0px; 5 | padding-bottom: 80px; 6 | background: white; 7 | font: 14px "Lucida Grande", Helvetica, Arial, sans-serif; 8 | } 9 | 10 | #header { 11 | color: white; 12 | background: black; 13 | padding: 0px; 14 | padding-top: 10px; 15 | padding-left: 150px; 16 | padding-right: 150px; 17 | height: 80px; 18 | } 19 | 20 | #header a.title, a.title:visited { 21 | font-size: 36px; 22 | font-weight: bold; 23 | text-decoration: none; 24 | color: white; 25 | } 26 | 27 | #header .subtitle { 28 | display: block; 29 | font-size: 12px; 30 | margin-left: 5px; 31 | margin-top: -5px; 32 | } 33 | 34 | ul.menu { 35 | float: left; 36 | list-style-type: none; 37 | display: block; 38 | width: 200px; 39 | background-color: #eee; 40 | padding-left: 0px; 41 | } 42 | 43 | ul.menu > li { 44 | border-bottom: 1px solid black; 45 | } 46 | 47 | ul.menu > li:first-child { 48 | border-top: 1px solid black; 49 | } 50 | 51 | ul.menu > li > a { 52 | color: black; 53 | text-decoration: none; 54 | } 55 | 56 | ul.menu > li:hover { 57 | background: #ed0; 58 | } 59 | 60 | #center { 61 | width: 65%; 62 | margin: 0 auto; 63 | } 64 | 65 | div.chart { 66 | width: 65%; 67 | margin: 0 auto; 68 | } 69 | 70 | div.content { 71 | overflow: hidden; 72 | padding-left: 30px; 73 | } 74 | 75 | #container { 76 | min-height:100%; 77 | position:relative; 78 | } 79 | 80 | #footer { 81 | position: absolute; 82 | bottom: 0px; 83 | padding: 0px; 84 | padding-top: 4px; 85 | width: 100%; 86 | height: 80px; 87 | color: white; 88 | background: black; 89 | } 90 | 91 | #footer > p { 92 | font-size: 10px; 93 | text-align: center; 94 | vertical-align: text-bottom; 95 | } 96 | 97 | #footer > p > a:visited { 98 | color: white; 99 | } 100 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/middleware/favicon.js: -------------------------------------------------------------------------------- 1 | 2 | /*! 3 | * Connect - favicon 4 | * Copyright(c) 2010 Sencha Inc. 5 | * Copyright(c) 2011 TJ Holowaychuk 6 | * MIT Licensed 7 | */ 8 | 9 | /** 10 | * Module dependencies. 11 | */ 12 | 13 | var fs = require('fs') 14 | , utils = require('../utils'); 15 | 16 | /** 17 | * Favicon cache. 18 | */ 19 | 20 | var icon; 21 | 22 | /** 23 | * By default serves the connect favicon, or the favicon 24 | * located by the given `path`. 25 | * 26 | * Options: 27 | * 28 | * - `maxAge` cache-control max-age directive, defaulting to 1 day 29 | * 30 | * Examples: 31 | * 32 | * connect.createServer( 33 | * connect.favicon() 34 | * ); 35 | * 36 | * connect.createServer( 37 | * connect.favicon(__dirname + '/public/favicon.ico') 38 | * ); 39 | * 40 | * @param {String} path 41 | * @param {Object} options 42 | * @return {Function} 43 | * @api public 44 | */ 45 | 46 | module.exports = function favicon(path, options){ 47 | var options = options || {} 48 | , path = path || __dirname + '/../public/favicon.ico' 49 | , maxAge = options.maxAge || 86400000; 50 | 51 | return function favicon(req, res, next){ 52 | if ('/favicon.ico' == req.url) { 53 | if (icon) { 54 | res.writeHead(200, icon.headers); 55 | res.end(icon.body); 56 | } else { 57 | fs.readFile(path, function(err, buf){ 58 | if (err) return next(err); 59 | icon = { 60 | headers: { 61 | 'Content-Type': 'image/x-icon' 62 | , 'Content-Length': buf.length 63 | , 'ETag': '"' + utils.md5(buf) + '"' 64 | , 'Cache-Control': 'public, max-age=' + (maxAge / 1000) 65 | }, 66 | body: buf 67 | }; 68 | res.writeHead(200, icon.headers); 69 | res.end(icon.body); 70 | }); 71 | } 72 | } else { 73 | next(); 74 | } 75 | }; 76 | }; -------------------------------------------------------------------------------- /enron-importer/pom.xml: -------------------------------------------------------------------------------- 1 | 3 | 4.0.0 4 | 5 | com.igalia 6 | mail-importer 7 | 0.0.1-SNAPSHOT 8 | jar 9 | 10 | enron-importer 11 | http://maven.apache.org 12 | 13 | 14 | UTF-8 15 | 16 | 17 | 18 | 19 | junit 20 | junit 21 | 4.13.1 22 | test 23 | 24 | 25 | org.apache.hbase 26 | hbase-client 27 | 1.1.2 28 | 29 | 30 | org.apache.hbase 31 | hbase-common 32 | 1.1.2 33 | 34 | 35 | commons-io 36 | commons-io 37 | 2.4 38 | 39 | 40 | commons-lang 41 | commons-lang 42 | 2.6 43 | 44 | 45 | 46 | 47 | 48 | org.apache.maven.plugins 49 | maven-compiler-plugin 50 | 3.3 51 | 52 | 1.6 53 | 1.6 54 | 55 | 56 | 57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /metamail-ui/views/.scatterchart/scatterchart.js: -------------------------------------------------------------------------------- 1 | /* 2 | var xdata = [5, 10, 15, 20], 3 | ydata = [3, 17, 4, 6]; 4 | */ 5 | var xdata = [1998,1998,1998,1999,1999,1999,2000,2000,2000,2001,2001,2001,2002,2002,2002,2003,2003,2003]; 6 | var ydata = []; 7 | for (var i = 1998; i <= 2003; i++) { 8 | for (var j = 0; j < 3; j++) { 9 | ydata.push(Math.floor(Math.random()*101)); 10 | } 11 | } 12 | 13 | 14 | var margin = {top: 20, right: 15, bottom: 60, left: 60} 15 | , width = 960 - margin.left - margin.right 16 | , height = 500 - margin.top - margin.bottom; 17 | 18 | var x = d3.scale.linear() 19 | .domain([d3.min(xdata), d3.max(xdata)]) 20 | .range([ 0, width ]); 21 | 22 | var y = d3.scale.linear() 23 | .domain([0, d3.max(ydata)]) 24 | .range([ height, 0 ]); 25 | 26 | var chart = d3.select('body') 27 | .append('svg:svg') 28 | .attr('width', width + margin.right + margin.left) 29 | .attr('height', height + margin.top + margin.bottom) 30 | .attr('class', 'chart') 31 | 32 | var main = chart.append('g') 33 | .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')') 34 | .attr('width', width) 35 | .attr('height', height) 36 | .attr('class', 'main') 37 | 38 | // draw the x axis 39 | var xAxis = d3.svg.axis() 40 | .scale(x) 41 | .orient('bottom'); 42 | 43 | main.append('g') 44 | .attr('transform', 'translate(0,' + height + ')') 45 | .attr('class', 'main axis date') 46 | .call(xAxis); 47 | 48 | // draw the y axis 49 | var yAxis = d3.svg.axis() 50 | .scale(y) 51 | .orient('left'); 52 | 53 | main.append('g') 54 | .attr('transform', 'translate(0,0)') 55 | .attr('class', 'main axis date') 56 | .call(yAxis); 57 | 58 | var g = main.append("svg:g"); 59 | 60 | g.selectAll("scatter-dots") 61 | .data(ydata) 62 | .enter().append("svg:circle") 63 | .attr("cy", function (d) { return y(d); } ) 64 | .attr("cx", function (d,i) { return x(xdata[i]); } ) 65 | .attr("r", 10) 66 | .style("opacity", 0.6); 67 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/node_modules/formidable/lib/file.js: -------------------------------------------------------------------------------- 1 | if (global.GENTLY) require = GENTLY.hijack(require); 2 | 3 | var util = require('./util'), 4 | WriteStream = require('fs').WriteStream, 5 | EventEmitter = require('events').EventEmitter, 6 | crypto = require('crypto'); 7 | 8 | function File(properties) { 9 | EventEmitter.call(this); 10 | 11 | this.size = 0; 12 | this.path = null; 13 | this.name = null; 14 | this.type = null; 15 | this.hash = null; 16 | this.lastModifiedDate = null; 17 | 18 | this._writeStream = null; 19 | 20 | for (var key in properties) { 21 | this[key] = properties[key]; 22 | } 23 | 24 | if(typeof this.hash === 'string') { 25 | this.hash = crypto.createHash(properties.hash); 26 | } 27 | 28 | this._backwardsCompatibility(); 29 | } 30 | module.exports = File; 31 | util.inherits(File, EventEmitter); 32 | 33 | // @todo Next release: Show error messages when accessing these 34 | File.prototype._backwardsCompatibility = function() { 35 | var self = this; 36 | this.__defineGetter__('length', function() { 37 | return self.size; 38 | }); 39 | this.__defineGetter__('filename', function() { 40 | return self.name; 41 | }); 42 | this.__defineGetter__('mime', function() { 43 | return self.type; 44 | }); 45 | }; 46 | 47 | File.prototype.open = function() { 48 | this._writeStream = new WriteStream(this.path); 49 | }; 50 | 51 | File.prototype.write = function(buffer, cb) { 52 | var self = this; 53 | this._writeStream.write(buffer, function() { 54 | if(self.hash) { 55 | self.hash.update(buffer); 56 | } 57 | self.lastModifiedDate = new Date(); 58 | self.size += buffer.length; 59 | self.emit('progress', self.size); 60 | cb(); 61 | }); 62 | }; 63 | 64 | File.prototype.end = function(cb) { 65 | var self = this; 66 | this._writeStream.end(function() { 67 | if(self.hash) { 68 | self.hash = self.hash.digest('hex'); 69 | } 70 | self.emit('end'); 71 | cb(); 72 | }); 73 | }; 74 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/node_modules/formidable/benchmark/bench-multipart-parser.js: -------------------------------------------------------------------------------- 1 | require('../test/common'); 2 | var multipartParser = require('../lib/multipart_parser'), 3 | MultipartParser = multipartParser.MultipartParser, 4 | parser = new MultipartParser(), 5 | Buffer = require('buffer').Buffer, 6 | boundary = '-----------------------------168072824752491622650073', 7 | mb = 100, 8 | buffer = createMultipartBuffer(boundary, mb * 1024 * 1024), 9 | callbacks = 10 | { partBegin: -1, 11 | partEnd: -1, 12 | headerField: -1, 13 | headerValue: -1, 14 | partData: -1, 15 | end: -1, 16 | }; 17 | 18 | 19 | parser.initWithBoundary(boundary); 20 | parser.onHeaderField = function() { 21 | callbacks.headerField++; 22 | }; 23 | 24 | parser.onHeaderValue = function() { 25 | callbacks.headerValue++; 26 | }; 27 | 28 | parser.onPartBegin = function() { 29 | callbacks.partBegin++; 30 | }; 31 | 32 | parser.onPartData = function() { 33 | callbacks.partData++; 34 | }; 35 | 36 | parser.onPartEnd = function() { 37 | callbacks.partEnd++; 38 | }; 39 | 40 | parser.onEnd = function() { 41 | callbacks.end++; 42 | }; 43 | 44 | var start = +new Date(), 45 | nparsed = parser.write(buffer), 46 | duration = +new Date - start, 47 | mbPerSec = (mb / (duration / 1000)).toFixed(2); 48 | 49 | console.log(mbPerSec+' mb/sec'); 50 | 51 | assert.equal(nparsed, buffer.length); 52 | 53 | function createMultipartBuffer(boundary, size) { 54 | var head = 55 | '--'+boundary+'\r\n' 56 | + 'content-disposition: form-data; name="field1"\r\n' 57 | + '\r\n' 58 | , tail = '\r\n--'+boundary+'--\r\n' 59 | , buffer = new Buffer(size); 60 | 61 | buffer.write(head, 'ascii', 0); 62 | buffer.write(tail, 'ascii', buffer.length - tail.length); 63 | return buffer; 64 | } 65 | 66 | process.on('exit', function() { 67 | for (var k in callbacks) { 68 | assert.equal(0, callbacks[k], k+' count off by '+callbacks[k]); 69 | } 70 | }); 71 | -------------------------------------------------------------------------------- /mail-analyzer/src/main/java/com/igalia/metamail/Main.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of Metamail 3 | * 4 | * Copyright (C) 2012 Igalia, S.L. 5 | * 6 | * This program is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU Affero General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU Affero General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Affero General Public License 17 | * along with this program. If not, see . 18 | */ 19 | 20 | package com.igalia.metamail; 21 | 22 | import java.io.ByteArrayInputStream; 23 | import java.io.File; 24 | import java.io.IOException; 25 | import java.io.InputStream; 26 | import java.util.Properties; 27 | 28 | import javax.mail.MessagingException; 29 | import javax.mail.Session; 30 | 31 | import org.apache.commons.io.FileUtils; 32 | 33 | import com.igalia.metamail.utils.MailRecord; 34 | 35 | 36 | /** 37 | * 38 | * @author Diego Pino García 39 | * 40 | */ 41 | public class Main { 42 | 43 | public static void main( String[] args ) { 44 | try { 45 | String filename = "../enron-importer/data/maildir/lay-k/sent/1."; 46 | byte[] body = FileUtils.readFileToByteArray(new File(filename)); 47 | InputStream input = new ByteArrayInputStream(body); 48 | Session s = Session.getDefaultInstance(new Properties()); 49 | 50 | MailRecord mail = MailRecord.create(s, input); 51 | System.out.println( "To: " + mail.getTo()); 52 | } catch (IOException e) { 53 | e.printStackTrace(); 54 | } catch (MessagingException e) { 55 | e.printStackTrace(); 56 | } 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /BENCHMARK.rst: -------------------------------------------------------------------------------- 1 | BENCHMARK 2 | ========= 3 | 4 | MapReduce Jobs 5 | -------------- 6 | 7 | Each job was executed 20 times and later the average time was calculated. Check results of each execution in the attached .csv files (mail-analyzer/benchmark). 8 | 9 | +---------------------------+------------------------+--------------------+ 10 | | Job | Average Time (seconds) | Standard Deviation | 11 | +===========================+========================+====================+ 12 | | Messages By Size | 39.94 | 3.91 | 13 | +---------------------------+------------------------+--------------------+ 14 | | Messages By Thread Length | 39.12 | 1.60 | 15 | +---------------------------+------------------------+--------------------+ 16 | | Messages By Time Period | 44.58 | 3.18 | 17 | +---------------------------+------------------------+--------------------+ 18 | | Messages Received | 43.12 | 1.41 | 19 | +---------------------------+------------------------+--------------------+ 20 | | Messages Sent | 37.82 | 0.78 | 21 | +---------------------------+------------------------+--------------------+ 22 | 23 | Hardare settings 24 | ---------------- 25 | 26 | +---------+----------------------------------------------------+ 27 | | Laptop: | Lenovo X220 | 28 | +---------+----------------------------------------------------+ 29 | | OS: | Fedora 16 | 30 | +---------+----------------------------------------------------+ 31 | | CPU: | Intel(R) Core(TM) i7-2620M CPU @ 2.70GHz (4 CPUs) | 32 | +---------+----------------------------------------------------+ 33 | | RAM: | 8GB DD3 | 34 | +---------+----------------------------------------------------+ 35 | | HD: | INTEL SSDSA2M160G2LE | 36 | +---------+----------------------------------------------------+ 37 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/qs/Readme.md: -------------------------------------------------------------------------------- 1 | # node-querystring 2 | 3 | query string parser for node supporting nesting, as it was removed from `0.3.x`, so this library provides the previous and commonly desired behaviour (and twice as fast). Used by [express](http://expressjs.com), [connect](http://senchalabs.github.com/connect) and others. 4 | 5 | ## Installation 6 | 7 | $ npm install qs 8 | 9 | ## Examples 10 | 11 | ```js 12 | var qs = require('qs'); 13 | 14 | qs.parse('user[name][first]=Tobi&user[email]=tobi@learnboost.com'); 15 | // => { user: { name: { first: 'Tobi' }, email: 'tobi@learnboost.com' } } 16 | 17 | qs.stringify({ user: { name: 'Tobi', email: 'tobi@learnboost.com' }}) 18 | // => user[name]=Tobi&user[email]=tobi%40learnboost.com 19 | ``` 20 | 21 | ## Testing 22 | 23 | Install dev dependencies: 24 | 25 | $ npm install -d 26 | 27 | and execute: 28 | 29 | $ make test 30 | 31 | ## License 32 | 33 | (The MIT License) 34 | 35 | Copyright (c) 2010 TJ Holowaychuk <tj@vision-media.ca> 36 | 37 | Permission is hereby granted, free of charge, to any person obtaining 38 | a copy of this software and associated documentation files (the 39 | 'Software'), to deal in the Software without restriction, including 40 | without limitation the rights to use, copy, modify, merge, publish, 41 | distribute, sublicense, and/or sell copies of the Software, and to 42 | permit persons to whom the Software is furnished to do so, subject to 43 | the following conditions: 44 | 45 | The above copyright notice and this permission notice shall be 46 | included in all copies or substantial portions of the Software. 47 | 48 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 49 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 50 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 51 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 52 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 53 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 54 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/mime/README.md: -------------------------------------------------------------------------------- 1 | # mime 2 | 3 | Support for mapping between file extensions and MIME types. This module uses the latest version of the Apache "mime.types" file (maps over 620 types to 800+ extensions). It is also trivially easy to add your own types and extensions, should you need to do that. 4 | 5 | ## Install 6 | 7 | Install with [npm](http://github.com/isaacs/npm): 8 | 9 | npm install mime 10 | 11 | ## API - Queries 12 | 13 | ### mime.lookup(path) 14 | Get the mime type associated with a file. This is method is case-insensitive. Everything in path up to and including the last '/' or '.' is ignored, so you can pass it paths, filenames, or extensions, like so: 15 | 16 | var mime = require('mime'); 17 | 18 | mime.lookup('/path/to/file.txt'); // => 'text/plain' 19 | mime.lookup('file.txt'); // => 'text/plain' 20 | mime.lookup('.txt'); // => 'text/plain' 21 | mime.lookup('htm'); // => 'text/html' 22 | 23 | ### mime.extension(type) - lookup the default extension for type 24 | 25 | mime.extension('text/html'); // => 'html' 26 | mime.extension('application/octet-stream'); // => 'bin' 27 | 28 | ### mime.charsets.lookup() - map mime-type to charset 29 | 30 | mime.charsets.lookup('text/plain'); // => 'UTF-8' 31 | 32 | (The logic for charset lookups is pretty rudimentary. Feel free to suggest improvements.) 33 | 34 | ## API - Customizing 35 | 36 | The following APIs allow you to add your own type mappings within your project. If you feel a type should be included as part of node-mime, see [requesting new types](https://github.com/bentomas/node-mime/wiki/Requesting-New-Types). 37 | ### mime.define() - Add custom mime/extension mappings 38 | 39 | mime.define({ 40 | 'text/x-some-format': ['x-sf', 'x-sft', 'x-sfml'], 41 | 'application/x-my-type': ['x-mt', 'x-mtt'], 42 | // etc ... 43 | }); 44 | 45 | mime.lookup('x-sft'); // => 'text/x-some-format' 46 | mime.extension('text/x-some-format'); // => 'x-sf' 47 | 48 | ### mime.load(filepath) - Load mappings from an Apache ".types" format file 49 | 50 | mime.load('./my_project.types'); 51 | -------------------------------------------------------------------------------- /metamail-ui/routes/index.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Configure all routes 3 | */ 4 | 5 | exports.index = function(req, res){ 6 | res.render('index', { title: 'Metamail' }) 7 | }; 8 | 9 | exports.msg_by_size = function(req, res) { 10 | res.render('graphics/msg-by-size.ejs', { 11 | title: 'Messages by Size', 12 | css_files: ['histogram.css'], 13 | csv_file: 'msg-by-size.csv' 14 | }); 15 | } 16 | 17 | exports.msg_by_day_week = function(req, res) { 18 | res.render('graphics/histogram.ejs', { 19 | title: 'Messages by Day of Week', 20 | css_files: ['histogram.css'], 21 | csv_file: 'msg-by-day-week.csv' 22 | }); 23 | } 24 | 25 | exports.msg_by_hour_day = function(req, res) { 26 | res.render('graphics/histogram.ejs', { 27 | title: 'Messages by Hour of Day', 28 | css_files: ['histogram.css'], 29 | csv_file: 'msg-by-hour-day.csv', 30 | w: 820, 31 | h: 320 32 | }); 33 | } 34 | 35 | exports.msg_by_month = function(req, res) { 36 | res.render('graphics/histogram.ejs', { 37 | title: 'Messages by Month (Year 2001)', 38 | css_files: ['histogram.css'], 39 | csv_file: 'msg-by-month-2001.csv', 40 | w: 820, 41 | h: 320 42 | }); 43 | } 44 | 45 | exports.msg_by_year = function(req, res) { 46 | res.render('graphics/msg-by-year.ejs', { 47 | title: 'Messages by Year', 48 | css_files: ['histogram.css'], 49 | csv_file: 'msg-by-year.csv' 50 | }); 51 | } 52 | 53 | exports.msg_received = function(req, res) { 54 | res.render('graphics/bar.ejs', { 55 | title: 'Messages Received', 56 | css_files: ['bar.css'], 57 | csv_file: 'msg-received.csv', 58 | w: 820 59 | }); 60 | } 61 | 62 | exports.msg_sent = function(req, res) { 63 | res.render('graphics/bar.ejs', { 64 | title: 'Messages Sent', 65 | css_files: ['bar.css'], 66 | csv_file: 'msg-sent.csv', 67 | w: 820 68 | }); 69 | } 70 | 71 | exports.msg_thread_length = function(req, res) { 72 | res.render('graphics/bar.ejs', { 73 | title: 'Messages by Thread Length', 74 | css_files: ['bar.css'], 75 | csv_file: 'msg-thread-length.csv', 76 | w: 820 77 | }); 78 | } 79 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/node_modules/formidable/test/unit/test-incoming-form.js: -------------------------------------------------------------------------------- 1 | var common = require('../common'); 2 | var test = require('utest'); 3 | var assert = common.assert; 4 | var IncomingForm = common.require('incoming_form').IncomingForm; 5 | var path = require('path'); 6 | 7 | var form; 8 | test('IncomingForm', { 9 | before: function() { 10 | form = new IncomingForm(); 11 | }, 12 | 13 | '#_fileName with regular characters': function() { 14 | var filename = 'foo.txt'; 15 | assert.equal(form._fileName(makeHeader(filename)), 'foo.txt'); 16 | }, 17 | 18 | '#_fileName with unescaped quote': function() { 19 | var filename = 'my".txt'; 20 | assert.equal(form._fileName(makeHeader(filename)), 'my".txt'); 21 | }, 22 | 23 | '#_fileName with escaped quote': function() { 24 | var filename = 'my%22.txt'; 25 | assert.equal(form._fileName(makeHeader(filename)), 'my".txt'); 26 | }, 27 | 28 | '#_fileName with bad quote and additional sub-header': function() { 29 | var filename = 'my".txt'; 30 | var header = makeHeader(filename) + '; foo="bar"'; 31 | assert.equal(form._fileName(header), filename); 32 | }, 33 | 34 | '#_fileName with semicolon': function() { 35 | var filename = 'my;.txt'; 36 | assert.equal(form._fileName(makeHeader(filename)), 'my;.txt'); 37 | }, 38 | 39 | '#_fileName with utf8 character': function() { 40 | var filename = 'my☃.txt'; 41 | assert.equal(form._fileName(makeHeader(filename)), 'my☃.txt'); 42 | }, 43 | 44 | '#_uploadPath strips harmful characters from extension when keepExtensions': function() { 45 | form.keepExtensions = true; 46 | 47 | var ext = path.extname(form._uploadPath('fine.jpg?foo=bar')); 48 | assert.equal(ext, '.jpg'); 49 | 50 | var ext = path.extname(form._uploadPath('fine?foo=bar')); 51 | assert.equal(ext, ''); 52 | 53 | var ext = path.extname(form._uploadPath('super.cr2+dsad')); 54 | assert.equal(ext, '.cr2'); 55 | 56 | var ext = path.extname(form._uploadPath('super.bar')); 57 | assert.equal(ext, '.bar'); 58 | }, 59 | }); 60 | 61 | function makeHeader(filename) { 62 | return 'Content-Disposition: form-data; name="upload"; filename="' + filename + '"'; 63 | } 64 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/public/directory.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | listing directory {directory} 4 | 5 | 67 | 68 | 69 | 70 |
    71 |

    {linked-path}

    72 | {files} 73 |
    74 | 75 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/middleware/session/store.js: -------------------------------------------------------------------------------- 1 | 2 | /*! 3 | * Connect - session - Store 4 | * Copyright(c) 2010 Sencha Inc. 5 | * Copyright(c) 2011 TJ Holowaychuk 6 | * MIT Licensed 7 | */ 8 | 9 | /** 10 | * Module dependencies. 11 | */ 12 | 13 | var EventEmitter = require('events').EventEmitter 14 | , Session = require('./session') 15 | , Cookie = require('./cookie') 16 | , utils = require('../../utils'); 17 | 18 | /** 19 | * Initialize abstract `Store`. 20 | * 21 | * @api private 22 | */ 23 | 24 | var Store = module.exports = function Store(options){}; 25 | 26 | /** 27 | * Inherit from `EventEmitter.prototype`. 28 | */ 29 | 30 | Store.prototype.__proto__ = EventEmitter.prototype; 31 | 32 | /** 33 | * Re-generate the given requests's session. 34 | * 35 | * @param {IncomingRequest} req 36 | * @return {Function} fn 37 | * @api public 38 | */ 39 | 40 | Store.prototype.regenerate = function(req, fn){ 41 | var self = this; 42 | this.destroy(req.sessionID, function(err){ 43 | self.generate(req); 44 | fn(err); 45 | }); 46 | }; 47 | 48 | /** 49 | * Load a `Session` instance via the given `sid` 50 | * and invoke the callback `fn(err, sess)`. 51 | * 52 | * @param {String} sid 53 | * @param {Function} fn 54 | * @api public 55 | */ 56 | 57 | Store.prototype.load = function(sid, fn){ 58 | var self = this; 59 | this.get(sid, function(err, sess){ 60 | if (err) return fn(err); 61 | if (!sess) return fn(); 62 | var req = { sessionID: sid, sessionStore: self }; 63 | sess = self.createSession(req, sess, false); 64 | fn(null, sess); 65 | }); 66 | }; 67 | 68 | /** 69 | * Create session from JSON `sess` data. 70 | * 71 | * @param {IncomingRequest} req 72 | * @param {Object} sess 73 | * @return {Session} 74 | * @api private 75 | */ 76 | 77 | Store.prototype.createSession = function(req, sess, update){ 78 | var expires = sess.cookie.expires 79 | , orig = sess.cookie.originalMaxAge 80 | , update = null == update ? true : false; 81 | sess.cookie = new Cookie(sess.cookie); 82 | if ('string' == typeof expires) sess.cookie.expires = new Date(expires); 83 | sess.cookie.originalMaxAge = orig; 84 | req.session = new Session(req, sess); 85 | if (update) req.session.resetLastAccess(); 86 | return req.session; 87 | }; -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/mime/test.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Requires the async_testing module 3 | * 4 | * Usage: node test.js 5 | */ 6 | var mime = require('./mime'); 7 | exports["test mime lookup"] = function(test) { 8 | // easy 9 | test.equal('text/plain', mime.lookup('text.txt')); 10 | 11 | // hidden file or multiple periods 12 | test.equal('text/plain', mime.lookup('.text.txt')); 13 | 14 | // just an extension 15 | test.equal('text/plain', mime.lookup('.txt')); 16 | 17 | // just an extension without a dot 18 | test.equal('text/plain', mime.lookup('txt')); 19 | 20 | // default 21 | test.equal('application/octet-stream', mime.lookup('text.nope')); 22 | 23 | // fallback 24 | test.equal('fallback', mime.lookup('text.fallback', 'fallback')); 25 | 26 | test.finish(); 27 | }; 28 | 29 | exports["test extension lookup"] = function(test) { 30 | // easy 31 | test.equal('txt', mime.extension(mime.types.text)); 32 | test.equal('html', mime.extension(mime.types.htm)); 33 | test.equal('bin', mime.extension('application/octet-stream')); 34 | 35 | test.finish(); 36 | }; 37 | 38 | exports["test mime lookup uppercase"] = function(test) { 39 | // easy 40 | test.equal('text/plain', mime.lookup('TEXT.TXT')); 41 | 42 | // just an extension 43 | test.equal('text/plain', mime.lookup('.TXT')); 44 | 45 | // just an extension without a dot 46 | test.equal('text/plain', mime.lookup('TXT')); 47 | 48 | // default 49 | test.equal('application/octet-stream', mime.lookup('TEXT.NOPE')); 50 | 51 | // fallback 52 | test.equal('fallback', mime.lookup('TEXT.FALLBACK', 'fallback')); 53 | 54 | test.finish(); 55 | }; 56 | 57 | exports["test custom types"] = function(test) { 58 | test.equal('application/octet-stream', mime.lookup('file.buffer')); 59 | test.equal('audio/mp4', mime.lookup('file.m4a')); 60 | 61 | test.finish(); 62 | }; 63 | 64 | exports["test charset lookup"] = function(test) { 65 | // easy 66 | test.equal('UTF-8', mime.charsets.lookup('text/plain')); 67 | 68 | // none 69 | test.ok(typeof mime.charsets.lookup(mime.types.js) == 'undefined'); 70 | 71 | // fallback 72 | test.equal('fallback', mime.charsets.lookup('application/octet-stream', 'fallback')); 73 | 74 | test.finish(); 75 | }; 76 | 77 | if (module == require.main) { 78 | require('async_testing').run(__filename, process.ARGV); 79 | } 80 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/index.js: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * # Connect 4 | * 5 | * Connect is a middleware framework for node, 6 | * shipping with over 11 bundled middleware and a rich choice of 7 | * [3rd-party middleware](https://github.com/senchalabs/connect/wiki). 8 | * 9 | * Installation: 10 | * 11 | * $ npm install connect 12 | * 13 | * API: 14 | * 15 | * - [connect](connect.html) general 16 | * - [http](http.html) http server 17 | * - [https](https.html) https server 18 | * 19 | * Middleware: 20 | * 21 | * - [logger](middleware-logger.html) request logger with custom format support 22 | * - [csrf](middleware-csrf.html) Cross-site request forgery protection 23 | * - [basicAuth](middleware-basicAuth.html) basic http authentication 24 | * - [bodyParser](middleware-bodyParser.html) extensible request body parser 25 | * - [cookieParser](middleware-cookieParser.html) cookie parser 26 | * - [session](middleware-session.html) session management support with bundled [MemoryStore](middleware-session-memory.html) 27 | * - [compiler](middleware-compiler.html) static asset compiler (sass, less, coffee-script, etc) 28 | * - [methodOverride](middleware-methodOverride.html) faux HTTP method support 29 | * - [responseTime](middleware-responseTime.html) calculates response-time and exposes via X-Response-Time 30 | * - [router](middleware-router.html) provides rich Sinatra / Express-like routing 31 | * - [staticCache](middleware-staticCache.html) memory cache layer for the static() middleware 32 | * - [static](middleware-static.html) streaming static file server supporting `Range` and more 33 | * - [directory](middleware-directory.html) directory listing middleware 34 | * - [vhost](middleware-vhost.html) virtual host sub-domain mapping middleware 35 | * - [favicon](middleware-favicon.html) efficient favicon server (with default icon) 36 | * - [limit](middleware-limit.html) limit the bytesize of request bodies 37 | * - [profiler](middleware-profiler.html) request profiler reporting response-time, memory usage, etc 38 | * - [query](middleware-query.html) automatic querystring parser, populating `req.query` 39 | * - [errorHandler](middleware-errorHandler.html) flexible error handler 40 | * 41 | * Internals: 42 | * 43 | * - connect [utilities](utils.html) 44 | * - node monkey [patches](patch.html) 45 | * 46 | */ -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/multipart.js: -------------------------------------------------------------------------------- 1 | exports['rfc1867'] = 2 | { boundary: 'AaB03x', 3 | raw: 4 | '--AaB03x\r\n'+ 5 | 'content-disposition: form-data; name="field1"\r\n'+ 6 | '\r\n'+ 7 | 'Joe Blow\r\nalmost tricked you!\r\n'+ 8 | '--AaB03x\r\n'+ 9 | 'content-disposition: form-data; name="pics"; filename="file1.txt"\r\n'+ 10 | 'Content-Type: text/plain\r\n'+ 11 | '\r\n'+ 12 | '... contents of file1.txt ...\r\r\n'+ 13 | '--AaB03x--\r\n', 14 | parts: 15 | [ { headers: { 16 | 'content-disposition': 'form-data; name="field1"', 17 | }, 18 | data: 'Joe Blow\r\nalmost tricked you!', 19 | }, 20 | { headers: { 21 | 'content-disposition': 'form-data; name="pics"; filename="file1.txt"', 22 | 'Content-Type': 'text/plain', 23 | }, 24 | data: '... contents of file1.txt ...\r', 25 | } 26 | ] 27 | }; 28 | 29 | exports['noTrailing\r\n'] = 30 | { boundary: 'AaB03x', 31 | raw: 32 | '--AaB03x\r\n'+ 33 | 'content-disposition: form-data; name="field1"\r\n'+ 34 | '\r\n'+ 35 | 'Joe Blow\r\nalmost tricked you!\r\n'+ 36 | '--AaB03x\r\n'+ 37 | 'content-disposition: form-data; name="pics"; filename="file1.txt"\r\n'+ 38 | 'Content-Type: text/plain\r\n'+ 39 | '\r\n'+ 40 | '... contents of file1.txt ...\r\r\n'+ 41 | '--AaB03x--', 42 | parts: 43 | [ { headers: { 44 | 'content-disposition': 'form-data; name="field1"', 45 | }, 46 | data: 'Joe Blow\r\nalmost tricked you!', 47 | }, 48 | { headers: { 49 | 'content-disposition': 'form-data; name="pics"; filename="file1.txt"', 50 | 'Content-Type': 'text/plain', 51 | }, 52 | data: '... contents of file1.txt ...\r', 53 | } 54 | ] 55 | }; 56 | 57 | exports['emptyHeader'] = 58 | { boundary: 'AaB03x', 59 | raw: 60 | '--AaB03x\r\n'+ 61 | 'content-disposition: form-data; name="field1"\r\n'+ 62 | ': foo\r\n'+ 63 | '\r\n'+ 64 | 'Joe Blow\r\nalmost tricked you!\r\n'+ 65 | '--AaB03x\r\n'+ 66 | 'content-disposition: form-data; name="pics"; filename="file1.txt"\r\n'+ 67 | 'Content-Type: text/plain\r\n'+ 68 | '\r\n'+ 69 | '... contents of file1.txt ...\r\r\n'+ 70 | '--AaB03x--\r\n', 71 | expectError: true, 72 | }; 73 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/mkdirp/index.js: -------------------------------------------------------------------------------- 1 | var path = require('path'); 2 | var fs = require('fs'); 3 | 4 | module.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP; 5 | 6 | function mkdirP (p, mode, f) { 7 | if (typeof mode === 'function' || mode === undefined) { 8 | f = mode; 9 | mode = 0777 & (~process.umask()); 10 | } 11 | 12 | var cb = f || function () {}; 13 | if (typeof mode === 'string') mode = parseInt(mode, 8); 14 | p = path.resolve(p); 15 | 16 | fs.mkdir(p, mode, function (er) { 17 | if (!er) return cb(); 18 | switch (er.code) { 19 | case 'ENOENT': 20 | mkdirP(path.dirname(p), mode, function (er) { 21 | if (er) cb(er); 22 | else mkdirP(p, mode, cb); 23 | }); 24 | break; 25 | 26 | case 'EEXIST': 27 | fs.stat(p, function (er2, stat) { 28 | // if the stat fails, then that's super weird. 29 | // let the original EEXIST be the failure reason. 30 | if (er2 || !stat.isDirectory()) cb(er) 31 | else cb(); 32 | }); 33 | break; 34 | 35 | default: 36 | cb(er); 37 | break; 38 | } 39 | }); 40 | } 41 | 42 | mkdirP.sync = function sync (p, mode) { 43 | if (mode === undefined) { 44 | mode = 0777 & (~process.umask()); 45 | } 46 | 47 | if (typeof mode === 'string') mode = parseInt(mode, 8); 48 | p = path.resolve(p); 49 | 50 | try { 51 | fs.mkdirSync(p, mode) 52 | } 53 | catch (err0) { 54 | switch (err0.code) { 55 | case 'ENOENT' : 56 | var err1 = sync(path.dirname(p), mode) 57 | if (err1) throw err1; 58 | else return sync(p, mode); 59 | break; 60 | 61 | case 'EEXIST' : 62 | var stat; 63 | try { 64 | stat = fs.statSync(p); 65 | } 66 | catch (err1) { 67 | throw err0 68 | } 69 | if (!stat.isDirectory()) throw err0; 70 | else return null; 71 | break; 72 | default : 73 | throw err0 74 | break; 75 | } 76 | } 77 | 78 | return null; 79 | }; 80 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/lib/router/route.js: -------------------------------------------------------------------------------- 1 | 2 | /*! 3 | * Express - router - Route 4 | * Copyright(c) 2010 TJ Holowaychuk 5 | * MIT Licensed 6 | */ 7 | 8 | /** 9 | * Expose `Route`. 10 | */ 11 | 12 | module.exports = Route; 13 | 14 | /** 15 | * Initialize `Route` with the given HTTP `method`, `path`, 16 | * and an array of `callbacks` and `options`. 17 | * 18 | * Options: 19 | * 20 | * - `sensitive` enable case-sensitive routes 21 | * - `strict` enable strict matching for trailing slashes 22 | * 23 | * @param {String} method 24 | * @param {String} path 25 | * @param {Array} callbacks 26 | * @param {Object} options. 27 | * @api private 28 | */ 29 | 30 | function Route(method, path, callbacks, options) { 31 | options = options || {}; 32 | this.path = path; 33 | this.method = method; 34 | this.callbacks = callbacks; 35 | this.regexp = normalize(path 36 | , this.keys = [] 37 | , options.sensitive 38 | , options.strict); 39 | } 40 | 41 | /** 42 | * Check if this route matches `path` and return captures made. 43 | * 44 | * @param {String} path 45 | * @return {Array} 46 | * @api private 47 | */ 48 | 49 | Route.prototype.match = function(path){ 50 | return this.regexp.exec(path); 51 | }; 52 | 53 | /** 54 | * Normalize the given path string, 55 | * returning a regular expression. 56 | * 57 | * An empty array should be passed, 58 | * which will contain the placeholder 59 | * key names. For example "/user/:id" will 60 | * then contain ["id"]. 61 | * 62 | * @param {String|RegExp} path 63 | * @param {Array} keys 64 | * @param {Boolean} sensitive 65 | * @param {Boolean} strict 66 | * @return {RegExp} 67 | * @api private 68 | */ 69 | 70 | function normalize(path, keys, sensitive, strict) { 71 | if (path instanceof RegExp) return path; 72 | path = path 73 | .concat(strict ? '' : '/?') 74 | .replace(/\/\(/g, '(?:/') 75 | .replace(/(\/)?(\.)?:(\w+)(?:(\(.*?\)))?(\?)?/g, function(_, slash, format, key, capture, optional){ 76 | keys.push({ name: key, optional: !! optional }); 77 | slash = slash || ''; 78 | return '' 79 | + (optional ? '' : slash) 80 | + '(?:' 81 | + (optional ? slash : '') 82 | + (format || '') + (capture || (format && '([^/.]+?)' || '([^/]+?)')) + ')' 83 | + (optional || ''); 84 | }) 85 | .replace(/([\/.])/g, '\\$1') 86 | .replace(/\*/g, '(.*)'); 87 | return new RegExp('^' + path + '$', sensitive ? '' : 'i'); 88 | } 89 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/integration/test-multipart-parser.js: -------------------------------------------------------------------------------- 1 | var common = require('../common'); 2 | var CHUNK_LENGTH = 10, 3 | multipartParser = require(common.lib + '/multipart_parser'), 4 | MultipartParser = multipartParser.MultipartParser, 5 | parser = new MultipartParser(), 6 | fixtures = require(TEST_FIXTURES + '/multipart'), 7 | Buffer = require('buffer').Buffer; 8 | 9 | Object.keys(fixtures).forEach(function(name) { 10 | var fixture = fixtures[name], 11 | buffer = new Buffer(Buffer.byteLength(fixture.raw, 'binary')), 12 | offset = 0, 13 | chunk, 14 | nparsed, 15 | 16 | parts = [], 17 | part = null, 18 | headerField, 19 | headerValue, 20 | endCalled = ''; 21 | 22 | parser.initWithBoundary(fixture.boundary); 23 | parser.onPartBegin = function() { 24 | part = {headers: {}, data: ''}; 25 | parts.push(part); 26 | headerField = ''; 27 | headerValue = ''; 28 | }; 29 | 30 | parser.onHeaderField = function(b, start, end) { 31 | headerField += b.toString('ascii', start, end); 32 | }; 33 | 34 | parser.onHeaderValue = function(b, start, end) { 35 | headerValue += b.toString('ascii', start, end); 36 | } 37 | 38 | parser.onHeaderEnd = function() { 39 | part.headers[headerField] = headerValue; 40 | headerField = ''; 41 | headerValue = ''; 42 | }; 43 | 44 | parser.onPartData = function(b, start, end) { 45 | var str = b.toString('ascii', start, end); 46 | part.data += b.slice(start, end); 47 | } 48 | 49 | parser.onEnd = function() { 50 | endCalled = true; 51 | } 52 | 53 | buffer.write(fixture.raw, 'binary', 0); 54 | 55 | while (offset < buffer.length) { 56 | if (offset + CHUNK_LENGTH < buffer.length) { 57 | chunk = buffer.slice(offset, offset+CHUNK_LENGTH); 58 | } else { 59 | chunk = buffer.slice(offset, buffer.length); 60 | } 61 | offset = offset + CHUNK_LENGTH; 62 | 63 | nparsed = parser.write(chunk); 64 | if (nparsed != chunk.length) { 65 | if (fixture.expectError) { 66 | return; 67 | } 68 | puts('-- ERROR --'); 69 | p(chunk.toString('ascii')); 70 | throw new Error(chunk.length+' bytes written, but only '+nparsed+' bytes parsed!'); 71 | } 72 | } 73 | 74 | if (fixture.expectError) { 75 | throw new Error('expected parse error did not happen'); 76 | } 77 | 78 | assert.ok(endCalled); 79 | assert.deepEqual(parts, fixture.parts); 80 | }); 81 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/ejs/History.md: -------------------------------------------------------------------------------- 1 | 2 | 0.8.0 / 2012-07-25 3 | ================== 4 | 5 | * add `<% include file %>` support 6 | * fix wrapping of custom require in build step. Closes #57 7 | 8 | 0.7.3 / 2012-04-25 9 | ================== 10 | 11 | * Added repository to package.json [isaacs] 12 | 13 | 0.7.1 / 2012-03-26 14 | ================== 15 | 16 | * Fixed exception when using express in production caused by typo. [slaskis] 17 | 18 | 0.7.0 / 2012-03-24 19 | ================== 20 | 21 | * Added newline consumption support (`-%>`) [whoatemydomain] 22 | 23 | 0.6.1 / 2011-12-09 24 | ================== 25 | 26 | * Fixed `ejs.renderFile()` 27 | 28 | 0.6.0 / 2011-12-09 29 | ================== 30 | 31 | * Changed: you no longer need `{ locals: {} }` 32 | 33 | 0.5.0 / 2011-11-20 34 | ================== 35 | 36 | * Added express 3.x support 37 | * Added ejs.renderFile() 38 | * Added 'json' filter 39 | * Fixed tests for 0.5.x 40 | 41 | 0.4.3 / 2011-06-20 42 | ================== 43 | 44 | * Fixed stacktraces line number when used multiline js expressions [Octave] 45 | 46 | 0.4.2 / 2011-05-11 47 | ================== 48 | 49 | * Added client side support 50 | 51 | 0.4.1 / 2011-04-21 52 | ================== 53 | 54 | * Fixed error context 55 | 56 | 0.4.0 / 2011-04-21 57 | ================== 58 | 59 | * Added; ported jade's error reporting to ejs. [slaskis] 60 | 61 | 0.3.1 / 2011-02-23 62 | ================== 63 | 64 | * Fixed optional `compile()` options 65 | 66 | 0.3.0 / 2011-02-14 67 | ================== 68 | 69 | * Added 'json' filter [Yuriy Bogdanov] 70 | * Use exported version of parse function to allow monkey-patching [Anatoliy Chakkaev] 71 | 72 | 0.2.1 / 2010-10-07 73 | ================== 74 | 75 | * Added filter support 76 | * Fixed _cache_ option. ~4x performance increase 77 | 78 | 0.2.0 / 2010-08-05 79 | ================== 80 | 81 | * Added support for global tag config 82 | * Added custom tag support. Closes #5 83 | * Fixed whitespace bug. Closes #4 84 | 85 | 0.1.0 / 2010-08-04 86 | ================== 87 | 88 | * Faster implementation [ashleydev] 89 | 90 | 0.0.4 / 2010-08-02 91 | ================== 92 | 93 | * Fixed single quotes for content outside of template tags. [aniero] 94 | * Changed; `exports.compile()` now expects only "locals" 95 | 96 | 0.0.3 / 2010-07-15 97 | ================== 98 | 99 | * Fixed single quotes 100 | 101 | 0.0.2 / 2010-07-09 102 | ================== 103 | 104 | * Fixed newline preservation 105 | 106 | 0.0.1 / 2010-07-09 107 | ================== 108 | 109 | * Initial release 110 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-fixtures.js: -------------------------------------------------------------------------------- 1 | var hashish = require('hashish'); 2 | var fs = require('fs'); 3 | var findit = require('findit'); 4 | var path = require('path'); 5 | var http = require('http'); 6 | var net = require('net'); 7 | var assert = require('assert'); 8 | 9 | var common = require('../common'); 10 | var formidable = common.formidable; 11 | 12 | var server = http.createServer(); 13 | server.listen(common.port, findFixtures); 14 | 15 | function findFixtures() { 16 | var fixtures = []; 17 | findit 18 | .sync(common.dir.fixture + '/js') 19 | .forEach(function(jsPath) { 20 | if (!/\.js$/.test(jsPath)) return; 21 | 22 | var group = path.basename(jsPath, '.js'); 23 | hashish.forEach(require(jsPath), function(fixture, name) { 24 | fixtures.push({ 25 | name : group + '/' + name, 26 | fixture : fixture, 27 | }); 28 | }); 29 | }); 30 | 31 | testNext(fixtures); 32 | } 33 | 34 | function testNext(fixtures) { 35 | var fixture = fixtures.shift(); 36 | if (!fixture) return server.close(); 37 | 38 | var name = fixture.name; 39 | var fixture = fixture.fixture; 40 | 41 | uploadFixture(name, function(err, parts) { 42 | if (err) throw err; 43 | 44 | fixture.forEach(function(expectedPart, i) { 45 | var parsedPart = parts[i]; 46 | assert.equal(parsedPart.type, expectedPart.type); 47 | assert.equal(parsedPart.name, expectedPart.name); 48 | 49 | if (parsedPart.type === 'file') { 50 | var filename = parsedPart.value.name; 51 | assert.equal(filename, expectedPart.filename); 52 | } 53 | }); 54 | 55 | testNext(fixtures); 56 | }); 57 | }; 58 | 59 | function uploadFixture(name, cb) { 60 | server.once('request', function(req, res) { 61 | var form = new formidable.IncomingForm(); 62 | form.uploadDir = common.dir.tmp; 63 | form.parse(req); 64 | 65 | function callback() { 66 | var realCallback = cb; 67 | cb = function() {}; 68 | realCallback.apply(null, arguments); 69 | } 70 | 71 | var parts = []; 72 | form 73 | .on('error', callback) 74 | .on('fileBegin', function(name, value) { 75 | parts.push({type: 'file', name: name, value: value}); 76 | }) 77 | .on('field', function(name, value) { 78 | parts.push({type: 'field', name: name, value: value}); 79 | }) 80 | .on('end', function() { 81 | callback(null, parts); 82 | }); 83 | }); 84 | 85 | var socket = net.createConnection(common.port); 86 | var file = fs.createReadStream(common.dir.fixture + '/http/' + name); 87 | 88 | file.pipe(socket); 89 | } 90 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/middleware/profiler.js: -------------------------------------------------------------------------------- 1 | 2 | /*! 3 | * Connect - profiler 4 | * Copyright(c) 2011 TJ Holowaychuk 5 | * MIT Licensed 6 | */ 7 | 8 | /** 9 | * Profile the duration of a request. 10 | * 11 | * Typically this middleware should be utilized 12 | * _above_ all others, as it proxies the `res.end()` 13 | * method, being first allows it to encapsulate all 14 | * other middleware. 15 | * 16 | * Example Output: 17 | * 18 | * GET / 19 | * response time 2ms 20 | * memory rss 52.00kb 21 | * memory vsize 2.07mb 22 | * heap before 3.76mb / 8.15mb 23 | * heap after 3.80mb / 8.15mb 24 | * 25 | * @api public 26 | */ 27 | 28 | module.exports = function profiler(){ 29 | return function(req, res, next){ 30 | var end = res.end 31 | , start = snapshot(); 32 | 33 | // state snapshot 34 | function snapshot() { 35 | return { 36 | mem: process.memoryUsage() 37 | , time: new Date 38 | }; 39 | } 40 | 41 | // proxy res.end() 42 | res.end = function(data, encoding){ 43 | res.end = end; 44 | res.end(data, encoding); 45 | compare(req, start, snapshot()) 46 | }; 47 | 48 | next(); 49 | } 50 | }; 51 | 52 | /** 53 | * Compare `start` / `end` snapshots. 54 | * 55 | * @param {IncomingRequest} req 56 | * @param {Object} start 57 | * @param {Object} end 58 | * @api private 59 | */ 60 | 61 | function compare(req, start, end) { 62 | console.log(); 63 | row(req.method, req.url); 64 | row('response time:', (end.time - start.time) + 'ms'); 65 | row('memory rss:', formatBytes(end.mem.rss - start.mem.rss)); 66 | row('memory vsize:', formatBytes(end.mem.vsize - start.mem.vsize)); 67 | row('heap before:', formatBytes(start.mem.heapUsed) + ' / ' + formatBytes(start.mem.heapTotal)); 68 | row('heap after:', formatBytes(end.mem.heapUsed) + ' / ' + formatBytes(end.mem.heapTotal)); 69 | console.log(); 70 | } 71 | 72 | /** 73 | * Row helper 74 | * 75 | * @param {String} key 76 | * @param {String} val 77 | * @api private 78 | */ 79 | 80 | function row(key, val) { 81 | console.log(' \033[90m%s\033[0m \033[36m%s\033[0m', key, val); 82 | } 83 | 84 | /** 85 | * Format byte-size. 86 | * 87 | * @param {Number} bytes 88 | * @return {String} 89 | * @api private 90 | */ 91 | 92 | function formatBytes(bytes) { 93 | var kb = 1024 94 | , mb = 1024 * kb 95 | , gb = 1024 * mb; 96 | if (bytes < kb) return bytes + 'b'; 97 | if (bytes < mb) return (bytes / kb).toFixed(2) + 'kb'; 98 | if (bytes < gb) return (bytes / mb).toFixed(2) + 'mb'; 99 | return (bytes / gb).toFixed(2) + 'gb'; 100 | }; 101 | -------------------------------------------------------------------------------- /metamail-ui/views/graphics/bar.ejs: -------------------------------------------------------------------------------- 1 | 86 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/middleware/session/cookie.js: -------------------------------------------------------------------------------- 1 | 2 | /*! 3 | * Connect - session - Cookie 4 | * Copyright(c) 2010 Sencha Inc. 5 | * Copyright(c) 2011 TJ Holowaychuk 6 | * MIT Licensed 7 | */ 8 | 9 | /** 10 | * Module dependencies. 11 | */ 12 | 13 | var utils = require('../../utils'); 14 | 15 | /** 16 | * Initialize a new `Cookie` with the given `options`. 17 | * 18 | * @param {Object} options 19 | * @api private 20 | */ 21 | 22 | var Cookie = module.exports = function Cookie(options) { 23 | this.path = '/'; 24 | this.httpOnly = true; 25 | this.maxAge = 14400000; 26 | if (options) utils.merge(this, options); 27 | this.originalMaxAge = undefined == this.originalMaxAge 28 | ? this.maxAge 29 | : this.originalMaxAge; 30 | }; 31 | 32 | /** 33 | * Prototype. 34 | */ 35 | 36 | Cookie.prototype = { 37 | 38 | /** 39 | * Set expires `date`. 40 | * 41 | * @param {Date} date 42 | * @api public 43 | */ 44 | 45 | set expires(date) { 46 | this._expires = date; 47 | this.originalMaxAge = this.maxAge; 48 | }, 49 | 50 | /** 51 | * Get expires `date`. 52 | * 53 | * @return {Date} 54 | * @api public 55 | */ 56 | 57 | get expires() { 58 | return this._expires; 59 | }, 60 | 61 | /** 62 | * Set expires via max-age in `ms`. 63 | * 64 | * @param {Number} ms 65 | * @api public 66 | */ 67 | 68 | set maxAge(ms) { 69 | this.expires = 'number' == typeof ms 70 | ? new Date(Date.now() + ms) 71 | : ms; 72 | }, 73 | 74 | /** 75 | * Get expires max-age in `ms`. 76 | * 77 | * @return {Number} 78 | * @api public 79 | */ 80 | 81 | get maxAge() { 82 | return this.expires instanceof Date 83 | ? this.expires.valueOf() - Date.now() 84 | : this.expires; 85 | }, 86 | 87 | /** 88 | * Return cookie data object. 89 | * 90 | * @return {Object} 91 | * @api private 92 | */ 93 | 94 | get data() { 95 | return { 96 | originalMaxAge: this.originalMaxAge 97 | , expires: this._expires 98 | , secure: this.secure 99 | , httpOnly: this.httpOnly 100 | , domain: this.domain 101 | , path: this.path 102 | } 103 | }, 104 | 105 | /** 106 | * Return a serialized cookie string. 107 | * 108 | * @return {String} 109 | * @api public 110 | */ 111 | 112 | serialize: function(name, val){ 113 | return utils.serializeCookie(name, val, this.data); 114 | }, 115 | 116 | /** 117 | * Return JSON representation of this cookie. 118 | * 119 | * @return {Object} 120 | * @api private 121 | */ 122 | 123 | toJSON: function(){ 124 | return this.data; 125 | } 126 | }; 127 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/middleware/basicAuth.js: -------------------------------------------------------------------------------- 1 | 2 | /*! 3 | * Connect - basicAuth 4 | * Copyright(c) 2010 Sencha Inc. 5 | * Copyright(c) 2011 TJ Holowaychuk 6 | * MIT Licensed 7 | */ 8 | 9 | /** 10 | * Module dependencies. 11 | */ 12 | 13 | var utils = require('../utils') 14 | , unauthorized = utils.unauthorized 15 | , badRequest = utils.badRequest; 16 | 17 | /** 18 | * Enfore basic authentication by providing a `callback(user, pass)`, 19 | * which must return `true` in order to gain access. Alternatively an async 20 | * method is provided as well, invoking `callback(user, pass, callback)`. Populates 21 | * `req.remoteUser`. The final alternative is simply passing username / password 22 | * strings. 23 | * 24 | * Examples: 25 | * 26 | * connect(connect.basicAuth('username', 'password')); 27 | * 28 | * connect( 29 | * connect.basicAuth(function(user, pass){ 30 | * return 'tj' == user & 'wahoo' == pass; 31 | * }) 32 | * ); 33 | * 34 | * connect( 35 | * connect.basicAuth(function(user, pass, fn){ 36 | * User.authenticate({ user: user, pass: pass }, fn); 37 | * }) 38 | * ); 39 | * 40 | * @param {Function|String} callback or username 41 | * @param {String} realm 42 | * @api public 43 | */ 44 | 45 | module.exports = function basicAuth(callback, realm) { 46 | var username, password; 47 | 48 | // user / pass strings 49 | if ('string' == typeof callback) { 50 | username = callback; 51 | password = realm; 52 | if ('string' != typeof password) throw new Error('password argument required'); 53 | realm = arguments[2]; 54 | callback = function(user, pass){ 55 | return user == username && pass == password; 56 | } 57 | } 58 | 59 | realm = realm || 'Authorization Required'; 60 | 61 | return function(req, res, next) { 62 | var authorization = req.headers.authorization; 63 | 64 | if (req.remoteUser) return next(); 65 | if (!authorization) return unauthorized(res, realm); 66 | 67 | var parts = authorization.split(' ') 68 | , scheme = parts[0] 69 | , credentials = new Buffer(parts[1], 'base64').toString().split(':'); 70 | 71 | if ('Basic' != scheme) return badRequest(res); 72 | 73 | // async 74 | if (callback.length >= 3) { 75 | var pause = utils.pause(req); 76 | callback(credentials[0], credentials[1], function(err, user){ 77 | if (err || !user) return unauthorized(res, realm); 78 | req.remoteUser = user; 79 | next(); 80 | pause.resume(); 81 | }); 82 | // sync 83 | } else { 84 | if (callback(credentials[0], credentials[1])) { 85 | req.remoteUser = credentials[0]; 86 | next(); 87 | } else { 88 | unauthorized(res, realm); 89 | } 90 | } 91 | } 92 | }; 93 | 94 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/lib/connect.js: -------------------------------------------------------------------------------- 1 | 2 | /*! 3 | * Connect 4 | * Copyright(c) 2010 Sencha Inc. 5 | * Copyright(c) 2011 TJ Holowaychuk 6 | * MIT Licensed 7 | */ 8 | 9 | /** 10 | * Module dependencies. 11 | */ 12 | 13 | var HTTPServer = require('./http').Server 14 | , HTTPSServer = require('./https').Server 15 | , fs = require('fs'); 16 | 17 | // node patches 18 | 19 | require('./patch'); 20 | 21 | // expose createServer() as the module 22 | 23 | exports = module.exports = createServer; 24 | 25 | /** 26 | * Framework version. 27 | */ 28 | 29 | exports.version = '1.9.2'; 30 | 31 | /** 32 | * Initialize a new `connect.HTTPServer` with the middleware 33 | * passed to this function. When an object is passed _first_, 34 | * we assume these are the tls options, and return a `connect.HTTPSServer`. 35 | * 36 | * Examples: 37 | * 38 | * An example HTTP server, accepting several middleware. 39 | * 40 | * var server = connect.createServer( 41 | * connect.logger() 42 | * , connect.static(__dirname + '/public') 43 | * ); 44 | * 45 | * An HTTPS server, utilizing the same middleware as above. 46 | * 47 | * var server = connect.createServer( 48 | * { key: key, cert: cert } 49 | * , connect.logger() 50 | * , connect.static(__dirname + '/public') 51 | * ); 52 | * 53 | * Alternatively with connect 1.0 we may omit `createServer()`. 54 | * 55 | * connect( 56 | * connect.logger() 57 | * , connect.static(__dirname + '/public') 58 | * ).listen(3000); 59 | * 60 | * @param {Object|Function} ... 61 | * @return {Server} 62 | * @api public 63 | */ 64 | 65 | function createServer() { 66 | if ('object' == typeof arguments[0]) { 67 | return new HTTPSServer(arguments[0], Array.prototype.slice.call(arguments, 1)); 68 | } else { 69 | return new HTTPServer(Array.prototype.slice.call(arguments)); 70 | } 71 | }; 72 | 73 | // support connect.createServer() 74 | 75 | exports.createServer = createServer; 76 | 77 | // auto-load getters 78 | 79 | exports.middleware = {}; 80 | 81 | /** 82 | * Auto-load bundled middleware with getters. 83 | */ 84 | 85 | fs.readdirSync(__dirname + '/middleware').forEach(function(filename){ 86 | if (/\.js$/.test(filename)) { 87 | var name = filename.substr(0, filename.lastIndexOf('.')); 88 | exports.middleware.__defineGetter__(name, function(){ 89 | return require('./middleware/' + name); 90 | }); 91 | } 92 | }); 93 | 94 | // expose utils 95 | 96 | exports.utils = require('./utils'); 97 | 98 | // expose getters as first-class exports 99 | 100 | exports.utils.merge(exports, exports.middleware); 101 | 102 | // expose constructors 103 | 104 | exports.HTTPServer = HTTPServer; 105 | exports.HTTPSServer = HTTPSServer; 106 | 107 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/system/test-multi-video-upload.js: -------------------------------------------------------------------------------- 1 | var common = require('../common'); 2 | var BOUNDARY = '---------------------------10102754414578508781458777923', 3 | FIXTURE = TEST_FIXTURES+'/multi_video.upload', 4 | fs = require('fs'), 5 | util = require(common.lib + '/util'), 6 | http = require('http'), 7 | formidable = require(common.lib + '/index'), 8 | server = http.createServer(); 9 | 10 | server.on('request', function(req, res) { 11 | var form = new formidable.IncomingForm(), 12 | uploads = {}; 13 | 14 | form.uploadDir = TEST_TMP; 15 | form.hash = 'sha1'; 16 | form.parse(req); 17 | 18 | form 19 | .on('fileBegin', function(field, file) { 20 | assert.equal(field, 'upload'); 21 | 22 | var tracker = {file: file, progress: [], ended: false}; 23 | uploads[file.filename] = tracker; 24 | file 25 | .on('progress', function(bytesReceived) { 26 | tracker.progress.push(bytesReceived); 27 | assert.equal(bytesReceived, file.length); 28 | }) 29 | .on('end', function() { 30 | tracker.ended = true; 31 | }); 32 | }) 33 | .on('field', function(field, value) { 34 | assert.equal(field, 'title'); 35 | assert.equal(value, ''); 36 | }) 37 | .on('file', function(field, file) { 38 | assert.equal(field, 'upload'); 39 | assert.strictEqual(uploads[file.filename].file, file); 40 | }) 41 | .on('end', function() { 42 | assert.ok(uploads['shortest_video.flv']); 43 | assert.ok(uploads['shortest_video.flv'].ended); 44 | assert.ok(uploads['shortest_video.flv'].progress.length > 3); 45 | assert.equal(uploads['shortest_video.flv'].file.hash, 'd6a17616c7143d1b1438ceeef6836d1a09186b3a'); 46 | assert.equal(uploads['shortest_video.flv'].progress.slice(-1), uploads['shortest_video.flv'].file.length); 47 | assert.ok(uploads['shortest_video.mp4']); 48 | assert.ok(uploads['shortest_video.mp4'].ended); 49 | assert.ok(uploads['shortest_video.mp4'].progress.length > 3); 50 | assert.equal(uploads['shortest_video.mp4'].file.hash, '937dfd4db263f4887ceae19341dcc8d63bcd557f'); 51 | 52 | server.close(); 53 | res.writeHead(200); 54 | res.end('good'); 55 | }); 56 | }); 57 | 58 | server.listen(TEST_PORT, function() { 59 | var client = http.createClient(TEST_PORT), 60 | stat = fs.statSync(FIXTURE), 61 | headers = { 62 | 'content-type': 'multipart/form-data; boundary='+BOUNDARY, 63 | 'content-length': stat.size, 64 | } 65 | request = client.request('POST', '/', headers), 66 | fixture = new fs.ReadStream(FIXTURE); 67 | 68 | fixture 69 | .on('data', function(b) { 70 | request.write(b); 71 | }) 72 | .on('end', function() { 73 | request.end(); 74 | }); 75 | }); 76 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/mime/mime.js: -------------------------------------------------------------------------------- 1 | var path = require('path'), 2 | fs = require('fs'); 3 | 4 | var mime = module.exports = { 5 | /** Map of extension to mime type */ 6 | types: {}, 7 | 8 | /** Map of mime type to extension */ 9 | extensions :{}, 10 | 11 | /** 12 | * Define mimetype -> extension mappings. Each key is a mime-type that maps 13 | * to an array of extensions associated with the type. The first extension is 14 | * used as the default extension for the type. 15 | * 16 | * e.g. mime.define({'audio/ogg', ['oga', 'ogg', 'spx']}); 17 | * 18 | * @param map (Object) type definitions 19 | */ 20 | define: function(map) { 21 | for (var type in map) { 22 | var exts = map[type]; 23 | 24 | for (var i = 0; i < exts.length; i++) { 25 | mime.types[exts[i]] = type; 26 | } 27 | 28 | // Default extension is the first one we encounter 29 | if (!mime.extensions[type]) { 30 | mime.extensions[type] = exts[0]; 31 | } 32 | } 33 | }, 34 | 35 | /** 36 | * Load an Apache2-style ".types" file 37 | * 38 | * This may be called multiple times (it's expected). Where files declare 39 | * overlapping types/extensions, the last file wins. 40 | * 41 | * @param file (String) path of file to load. 42 | */ 43 | load: function(file) { 44 | // Read file and split into lines 45 | var map = {}, 46 | content = fs.readFileSync(file, 'ascii'), 47 | lines = content.split(/[\r\n]+/); 48 | 49 | lines.forEach(function(line, lineno) { 50 | // Clean up whitespace/comments, and split into fields 51 | var fields = line.replace(/\s*#.*|^\s*|\s*$/g, '').split(/\s+/); 52 | map[fields.shift()] = fields; 53 | }); 54 | 55 | mime.define(map); 56 | }, 57 | 58 | /** 59 | * Lookup a mime type based on extension 60 | */ 61 | lookup: function(path, fallback) { 62 | var ext = path.replace(/.*[\.\/]/, '').toLowerCase(); 63 | return mime.types[ext] || fallback || mime.default_type; 64 | }, 65 | 66 | /** 67 | * Return file extension associated with a mime type 68 | */ 69 | extension: function(mimeType) { 70 | return mime.extensions[mimeType]; 71 | }, 72 | 73 | /** 74 | * Lookup a charset based on mime type. 75 | */ 76 | charsets: { 77 | lookup: function (mimeType, fallback) { 78 | // Assume text types are utf8. Modify mime logic as needed. 79 | return (/^text\//).test(mimeType) ? 'UTF-8' : fallback; 80 | } 81 | } 82 | }; 83 | 84 | // Load our local copy of 85 | // http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types 86 | mime.load(path.join(__dirname, 'types/mime.types')); 87 | 88 | // Overlay enhancements submitted by the node.js community 89 | mime.load(path.join(__dirname, 'types/node.types')); 90 | 91 | // Set the default type 92 | mime.default_type = mime.types.bin; 93 | -------------------------------------------------------------------------------- /metamail-ui/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-file.js: -------------------------------------------------------------------------------- 1 | var common = require('../common'); 2 | var WriteStreamStub = GENTLY.stub('fs', 'WriteStream'); 3 | 4 | var File = require(common.lib + '/file'), 5 | EventEmitter = require('events').EventEmitter, 6 | file, 7 | gently; 8 | 9 | function test(test) { 10 | gently = new Gently(); 11 | file = new File(); 12 | test(); 13 | gently.verify(test.name); 14 | } 15 | 16 | test(function constructor() { 17 | assert.ok(file instanceof EventEmitter); 18 | assert.strictEqual(file.size, 0); 19 | assert.strictEqual(file.path, null); 20 | assert.strictEqual(file.name, null); 21 | assert.strictEqual(file.type, null); 22 | assert.strictEqual(file.lastModifiedDate, null); 23 | 24 | assert.strictEqual(file._writeStream, null); 25 | 26 | (function testSetProperties() { 27 | var file2 = new File({foo: 'bar'}); 28 | assert.equal(file2.foo, 'bar'); 29 | })(); 30 | }); 31 | 32 | test(function open() { 33 | var WRITE_STREAM; 34 | file.path = '/foo'; 35 | 36 | gently.expect(WriteStreamStub, 'new', function (path) { 37 | WRITE_STREAM = this; 38 | assert.strictEqual(path, file.path); 39 | }); 40 | 41 | file.open(); 42 | assert.strictEqual(file._writeStream, WRITE_STREAM); 43 | }); 44 | 45 | test(function write() { 46 | var BUFFER = {length: 10}, 47 | CB_STUB, 48 | CB = function() { 49 | CB_STUB.apply(this, arguments); 50 | }; 51 | 52 | file._writeStream = {}; 53 | 54 | gently.expect(file._writeStream, 'write', function (buffer, cb) { 55 | assert.strictEqual(buffer, BUFFER); 56 | 57 | gently.expect(file, 'emit', function (event, bytesWritten) { 58 | assert.ok(file.lastModifiedDate instanceof Date); 59 | assert.equal(event, 'progress'); 60 | assert.equal(bytesWritten, file.size); 61 | }); 62 | 63 | CB_STUB = gently.expect(function writeCb() { 64 | assert.equal(file.size, 10); 65 | }); 66 | 67 | cb(); 68 | 69 | gently.expect(file, 'emit', function (event, bytesWritten) { 70 | assert.equal(event, 'progress'); 71 | assert.equal(bytesWritten, file.size); 72 | }); 73 | 74 | CB_STUB = gently.expect(function writeCb() { 75 | assert.equal(file.size, 20); 76 | }); 77 | 78 | cb(); 79 | }); 80 | 81 | file.write(BUFFER, CB); 82 | }); 83 | 84 | test(function end() { 85 | var CB_STUB, 86 | CB = function() { 87 | CB_STUB.apply(this, arguments); 88 | }; 89 | 90 | file._writeStream = {}; 91 | 92 | gently.expect(file._writeStream, 'end', function (cb) { 93 | gently.expect(file, 'emit', function (event) { 94 | assert.equal(event, 'end'); 95 | }); 96 | 97 | CB_STUB = gently.expect(function endCb() { 98 | }); 99 | 100 | cb(); 101 | }); 102 | 103 | file.end(CB); 104 | }); 105 | --------------------------------------------------------------------------------