├── .nvmrc ├── Procfile ├── .gitignore ├── bower_components ├── cs_console │ ├── Version │ ├── bin │ │ ├── .gitkeep │ │ └── cs_console │ ├── app │ │ ├── stylesheets │ │ │ └── application.css │ │ └── vendor │ │ │ ├── javascripts │ │ │ └── codemirror │ │ │ │ └── mode │ │ │ │ ├── rpm │ │ │ │ ├── spec │ │ │ │ │ └── spec.css │ │ │ │ └── changes │ │ │ │ │ └── changes.js │ │ │ │ ├── tiddlywiki │ │ │ │ └── tiddlywiki.css │ │ │ │ ├── tiki │ │ │ │ └── tiki.css │ │ │ │ ├── diff │ │ │ │ └── diff.js │ │ │ │ ├── vbscript │ │ │ │ └── vbscript.js │ │ │ │ ├── pascal │ │ │ │ └── LICENSE │ │ │ │ ├── rst │ │ │ │ └── LICENSE.txt │ │ │ │ ├── sieve │ │ │ │ └── LICENSE │ │ │ │ ├── python │ │ │ │ └── LICENSE.txt │ │ │ │ ├── perl │ │ │ │ └── LICENSE │ │ │ │ ├── ntriples │ │ │ │ └── index.html │ │ │ │ └── xquery │ │ │ │ └── LICENSE │ │ │ └── stylesheets │ │ │ └── codemirror │ │ │ └── theme │ │ │ ├── neat.css │ │ │ ├── elegant.css │ │ │ ├── cobalt.css │ │ │ └── eclipse.css │ ├── .gitignore │ ├── test │ │ ├── resources │ │ │ ├── favicon.ico │ │ │ └── test_helper.js │ │ └── test.html │ ├── CHANGE_LOG.md │ ├── Gemfile │ ├── .bower.json │ ├── tasks │ │ └── recipes.rb │ ├── Gemfile.lock │ ├── LICENSE │ └── config.ru ├── jquery │ ├── src │ │ ├── outro.js │ │ ├── selector.js │ │ ├── var │ │ │ ├── arr.js │ │ │ ├── rnotwhite.js │ │ │ ├── strundefined.js │ │ │ ├── push.js │ │ │ ├── slice.js │ │ │ ├── class2type.js │ │ │ ├── concat.js │ │ │ ├── indexOf.js │ │ │ ├── pnum.js │ │ │ ├── hasOwn.js │ │ │ ├── toString.js │ │ │ └── support.js │ │ ├── ajax │ │ │ ├── var │ │ │ │ ├── rquery.js │ │ │ │ └── nonce.js │ │ │ ├── parseJSON.js │ │ │ └── parseXML.js │ │ ├── css │ │ │ ├── var │ │ │ │ ├── rmargin.js │ │ │ │ ├── cssExpand.js │ │ │ │ ├── rnumnonpx.js │ │ │ │ ├── isHidden.js │ │ │ │ └── getStyles.js │ │ │ ├── hiddenVisibleSelectors.js │ │ │ ├── addGetHookIf.js │ │ │ └── swap.js │ │ ├── manipulation │ │ │ ├── var │ │ │ │ └── rcheckableType.js │ │ │ ├── _evalUrl.js │ │ │ └── support.js │ │ ├── data │ │ │ ├── var │ │ │ │ ├── data_priv.js │ │ │ │ └── data_user.js │ │ │ └── accepts.js │ │ ├── core │ │ │ ├── var │ │ │ │ └── rsingleTag.js │ │ │ └── parseHTML.js │ │ ├── traversing │ │ │ └── var │ │ │ │ └── rneedsContext.js │ │ ├── event │ │ │ ├── support.js │ │ │ └── ajax.js │ │ ├── attributes.js │ │ ├── deprecated.js │ │ ├── effects │ │ │ └── animatedSelector.js │ │ ├── selector-sizzle.js │ │ ├── queue │ │ │ └── delay.js │ │ ├── jquery.js │ │ ├── exports │ │ │ ├── global.js │ │ │ └── amd.js │ │ └── attributes │ │ │ └── support.js │ ├── bower.json │ ├── .bower.json │ └── MIT-LICENSE.txt ├── marked │ ├── doc │ │ └── todo.md │ ├── index.js │ ├── Makefile │ ├── component.json │ ├── bower.json │ ├── package.json │ ├── .bower.json │ └── LICENSE ├── abecedary │ ├── example │ │ ├── lib │ │ │ ├── javascript │ │ │ │ ├── code.html │ │ │ │ ├── code.js │ │ │ │ ├── answer.html │ │ │ │ ├── answer.js │ │ │ │ ├── iframe.js │ │ │ │ ├── iframe.html │ │ │ │ ├── index.html │ │ │ │ ├── component.json │ │ │ │ ├── index.js │ │ │ │ ├── package.json │ │ │ │ ├── Gruntfile.js │ │ │ │ ├── tests.js │ │ │ │ └── tests.html │ │ │ ├── javascript-logging │ │ │ │ ├── code.html │ │ │ │ ├── code.js │ │ │ │ ├── answer.html │ │ │ │ ├── answer.js │ │ │ │ ├── iframe.js │ │ │ │ ├── iframe.html │ │ │ │ ├── component.json │ │ │ │ ├── index.js │ │ │ │ ├── package.json │ │ │ │ ├── Gruntfile.js │ │ │ │ ├── tests.js │ │ │ │ └── tests.html │ │ │ └── boot │ │ │ │ └── component.json │ │ ├── component.json │ │ └── Makefile │ ├── index.html │ ├── .gitignore │ ├── test │ │ ├── test.js │ │ └── test.html │ ├── bower.json │ ├── .bower.json │ ├── component.json │ ├── Gruntfile.js │ ├── lib │ │ └── runner.js │ └── package.json ├── autosize │ ├── .gitignore │ ├── bower.json │ ├── .bower.json │ └── readme.md ├── mocha │ ├── .mailmap │ ├── .editorconfig │ ├── media │ │ └── logo.svg │ ├── README.md │ ├── LICENSE │ └── bower.json ├── angular │ ├── index.js │ ├── angular.min.js.gzip │ ├── bower.json │ ├── angular-csp.css │ ├── .bower.json │ └── package.json ├── angular-animate │ ├── index.js │ ├── bower.json │ ├── .bower.json │ └── package.json ├── angular-cookies │ ├── index.js │ ├── bower.json │ ├── .bower.json │ └── package.json ├── angular-resource │ ├── index.js │ ├── bower.json │ ├── .bower.json │ └── package.json ├── codemirror │ ├── theme │ │ ├── ambiance-mobile.css │ │ ├── neat.css │ │ ├── elegant.css │ │ └── eclipse.css │ ├── addon │ │ ├── display │ │ │ ├── fullscreen.css │ │ │ └── fullscreen.js │ │ ├── lint │ │ │ ├── json-lint.js │ │ │ └── coffeescript-lint.js │ │ ├── edit │ │ │ ├── trailingspace.js │ │ │ └── continuelist.js │ │ ├── dialog │ │ │ └── dialog.css │ │ ├── fold │ │ │ └── indent-fold.js │ │ ├── mode │ │ │ └── multiplex_test.js │ │ ├── hint │ │ │ └── show-hint.css │ │ ├── runmode │ │ │ └── colorize.js │ │ ├── scroll │ │ │ └── scrollpastend.js │ │ └── tern │ │ │ └── worker.js │ ├── mode │ │ ├── rpm │ │ │ ├── spec │ │ │ │ └── spec.css │ │ │ └── changes │ │ │ │ └── changes.js │ │ ├── tiddlywiki │ │ │ └── tiddlywiki.css │ │ ├── javascript │ │ │ └── test.js │ │ ├── tiki │ │ │ └── tiki.css │ │ └── diff │ │ │ └── diff.js │ ├── bower.json │ ├── README.md │ └── .bower.json ├── bootstrap │ ├── grunt │ │ ├── .jshintrc │ │ └── bs-commonjs-generator.js │ ├── less │ │ ├── mixins │ │ │ ├── center-block.less │ │ │ ├── text-emphasis.less │ │ │ ├── size.less │ │ │ ├── background-variant.less │ │ │ ├── opacity.less │ │ │ ├── text-overflow.less │ │ │ ├── tab-focus.less │ │ │ ├── labels.less │ │ │ ├── resize.less │ │ │ ├── progress-bar.less │ │ │ ├── nav-divider.less │ │ │ ├── reset-filter.less │ │ │ ├── alerts.less │ │ │ ├── nav-vertical-align.less │ │ │ ├── responsive-visibility.less │ │ │ ├── pagination.less │ │ │ ├── border-radius.less │ │ │ ├── panels.less │ │ │ ├── list-group.less │ │ │ ├── hide-text.less │ │ │ ├── clearfix.less │ │ │ ├── table-row.less │ │ │ └── image.less │ │ ├── .csslintrc │ │ ├── wells.less │ │ ├── breadcrumbs.less │ │ ├── responsive-embed.less │ │ ├── component-animations.less │ │ ├── close.less │ │ ├── thumbnails.less │ │ ├── utilities.less │ │ ├── media.less │ │ ├── pager.less │ │ └── jumbotron.less │ ├── fonts │ │ ├── glyphicons-halflings-regular.eot │ │ ├── glyphicons-halflings-regular.ttf │ │ ├── glyphicons-halflings-regular.woff │ │ └── glyphicons-halflings-regular.woff2 │ ├── dist │ │ ├── fonts │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ └── glyphicons-halflings-regular.woff2 │ │ └── js │ │ │ └── npm.js │ ├── js │ │ └── .jshintrc │ ├── package.js │ ├── bower.json │ └── LICENSE └── lodash │ ├── bower.json │ └── .bower.json ├── public ├── images │ ├── fb.png │ ├── favicon.ico │ ├── resources │ │ ├── img-mdn.jpg │ │ ├── img-jsrt.jpg │ │ ├── img-try-js.jpg │ │ ├── img-js-books.png │ │ ├── img-codecademy.jpg │ │ ├── img-eloquent-js.jpg │ │ ├── img-js-for-cats.jpg │ │ ├── img-pluralsight.jpg │ │ ├── img-try-jquery.jpg │ │ └── img-you-dont-know-js.jpg │ ├── icons │ │ ├── icon-calendar.svg │ │ ├── icon-twitter.svg │ │ ├── icon-rss.svg │ │ ├── icon-play.svg │ │ ├── icon-mail.svg │ │ ├── icon-check.svg │ │ ├── icon-external.svg │ │ ├── icon-star.svg │ │ └── icon-submit.svg │ ├── img-console.svg │ ├── logo-monochrome.svg │ ├── brand │ │ └── logo-mark.svg │ ├── logo-mark-dotless.svg │ ├── logo-mark.svg │ └── img-feedback.svg ├── downloads │ ├── package.zip │ └── JavaScript.com Asset Downloads │ │ ├── logo.eps │ │ ├── logo.png │ │ ├── logo-light.eps │ │ ├── logo-light.png │ │ ├── logo-mark.eps │ │ └── logo-mark.png └── templates │ ├── console.html │ ├── instructions.html │ └── challenge.html ├── client ├── javascriptcom │ ├── vendor │ │ ├── jquery.js │ │ ├── lodash.js │ │ ├── marked.js │ │ ├── abecedary.js │ │ └── cs_console.js │ ├── resources │ │ ├── course.resource.js │ │ └── challenge.resource.js │ ├── filters │ │ ├── markdown.filter.js │ │ └── stateify.filter.js │ ├── app.js │ ├── services │ │ ├── jsCourseState.factory.js │ │ ├── executor.factory.js │ │ ├── commandFactory.factory.js │ │ └── jsSuccessCloud.factory.js │ └── directives │ │ ├── challenge.directive.js │ │ ├── safeHtml.directive.js │ │ └── tooltip.directive.js ├── stylesheets │ ├── structures │ │ ├── _icon.sass │ │ ├── _state.sass │ │ ├── _externalLink.sass │ │ ├── _emblem.sass │ │ ├── _link.sass │ │ ├── _label.sass │ │ ├── _header.sass │ │ └── _inlineCode.sass │ └── components │ │ ├── _thumb.sass │ │ ├── _handle.sass │ │ ├── _card.sass │ │ ├── _cell.sass │ │ ├── _row.sass │ │ └── _pillar.sass └── javascripts │ └── components │ ├── dispatcher │ ├── news │ │ ├── show.js │ │ └── new.js │ ├── feedback.js │ ├── course.js │ ├── news.js │ └── home.js │ └── services │ ├── injectSvg.js │ └── expel.js ├── server ├── views │ ├── partials │ │ ├── _hero_img.jade │ │ ├── _flash.jade │ │ ├── _newsletter_form.jade │ │ ├── _icon.jade │ │ ├── _hero_console.jade │ │ └── _header.jade │ ├── news │ │ └── _data_separator.jade │ ├── error.jade │ ├── learn │ │ └── index.jade │ ├── 404.jade │ ├── layouts │ │ ├── layout.jade │ │ └── layout-bleed.jade │ ├── feedback │ │ └── success.jade │ ├── users │ │ └── sign_in.jade │ └── resources │ │ └── _resource.jade ├── controllers │ ├── about.js │ ├── learn.js │ ├── assets.js │ ├── guidelines.js │ ├── notFound.js │ ├── resources.js │ ├── styleguide.js │ ├── users.js │ ├── index.js │ ├── feedback.js │ ├── sessions.js │ └── courses.js ├── services │ ├── slug-generator.js │ ├── dbConnection.js │ └── course.js └── config.js ├── setup.sh ├── courses └── intro │ └── index.js └── bower.json /.nvmrc: -------------------------------------------------------------------------------- 1 | 4.2.1 2 | -------------------------------------------------------------------------------- /Procfile: -------------------------------------------------------------------------------- 1 | web: npm start 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/* 2 | -------------------------------------------------------------------------------- /bower_components/cs_console/Version: -------------------------------------------------------------------------------- 1 | 1.1.1 -------------------------------------------------------------------------------- /bower_components/cs_console/bin/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /bower_components/jquery/src/outro.js: -------------------------------------------------------------------------------- 1 | })); 2 | -------------------------------------------------------------------------------- /bower_components/marked/doc/todo.md: -------------------------------------------------------------------------------- 1 | # Todo 2 | 3 | -------------------------------------------------------------------------------- /bower_components/abecedary/example/lib/javascript/code.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /bower_components/autosize/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/* 2 | test/* -------------------------------------------------------------------------------- /bower_components/cs_console/app/stylesheets/application.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /bower_components/abecedary/example/lib/javascript-logging/code.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /bower_components/mocha/.mailmap: -------------------------------------------------------------------------------- 1 | TJ Holowaychuk -------------------------------------------------------------------------------- /bower_components/cs_console/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | tmp/ 3 | compiled/ -------------------------------------------------------------------------------- /bower_components/abecedary/example/lib/javascript/code.js: -------------------------------------------------------------------------------- 1 | module.exports = ''; -------------------------------------------------------------------------------- /bower_components/jquery/src/selector.js: -------------------------------------------------------------------------------- 1 | define([ "./selector-sizzle" ]); 2 | -------------------------------------------------------------------------------- /bower_components/marked/index.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./lib/marked'); 2 | -------------------------------------------------------------------------------- /bower_components/abecedary/index.html: -------------------------------------------------------------------------------- 1 | Go see the Example. -------------------------------------------------------------------------------- /bower_components/abecedary/example/lib/javascript-logging/code.js: -------------------------------------------------------------------------------- 1 | module.exports = ''; -------------------------------------------------------------------------------- /bower_components/jquery/src/var/arr.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return []; 3 | }); 4 | -------------------------------------------------------------------------------- /bower_components/angular/index.js: -------------------------------------------------------------------------------- 1 | require('./angular'); 2 | module.exports = angular; 3 | -------------------------------------------------------------------------------- /bower_components/abecedary/example/lib/javascript-logging/answer.html: -------------------------------------------------------------------------------- 1 | console.log("Hello, World!"); -------------------------------------------------------------------------------- /bower_components/jquery/src/ajax/var/rquery.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return (/\?/); 3 | }); 4 | -------------------------------------------------------------------------------- /bower_components/jquery/src/var/rnotwhite.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return (/\S+/g); 3 | }); 4 | -------------------------------------------------------------------------------- /bower_components/jquery/src/css/var/rmargin.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return (/^margin/); 3 | }); 4 | -------------------------------------------------------------------------------- /bower_components/angular-animate/index.js: -------------------------------------------------------------------------------- 1 | require('./angular-animate'); 2 | module.exports = 'ngAnimate'; 3 | -------------------------------------------------------------------------------- /bower_components/angular-cookies/index.js: -------------------------------------------------------------------------------- 1 | require('./angular-cookies'); 2 | module.exports = 'ngCookies'; 3 | -------------------------------------------------------------------------------- /bower_components/angular-resource/index.js: -------------------------------------------------------------------------------- 1 | require('./angular-resource'); 2 | module.exports = 'ngResource'; 3 | -------------------------------------------------------------------------------- /bower_components/jquery/src/var/strundefined.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return typeof undefined; 3 | }); 4 | -------------------------------------------------------------------------------- /bower_components/abecedary/example/lib/javascript-logging/answer.js: -------------------------------------------------------------------------------- 1 | module.exports = 'console.log("Hello, World!");'; -------------------------------------------------------------------------------- /bower_components/abecedary/example/lib/javascript/answer.html: -------------------------------------------------------------------------------- 1 | function add(one, two) { 2 | return one + two; 3 | } -------------------------------------------------------------------------------- /bower_components/jquery/src/var/push.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./arr" 3 | ], function( arr ) { 4 | return arr.push; 5 | }); 6 | -------------------------------------------------------------------------------- /bower_components/jquery/src/var/slice.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./arr" 3 | ], function( arr ) { 4 | return arr.slice; 5 | }); 6 | -------------------------------------------------------------------------------- /public/images/fb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codeschool/WatchUsBuild-ConvertSQLAppToMongoDB/HEAD/public/images/fb.png -------------------------------------------------------------------------------- /bower_components/abecedary/example/lib/javascript/answer.js: -------------------------------------------------------------------------------- 1 | module.exports = 'function add(one, two) {\n return one + two;\n}'; -------------------------------------------------------------------------------- /bower_components/jquery/src/var/class2type.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | // [[Class]] -> type pairs 3 | return {}; 4 | }); 5 | -------------------------------------------------------------------------------- /bower_components/jquery/src/var/concat.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./arr" 3 | ], function( arr ) { 4 | return arr.concat; 5 | }); 6 | -------------------------------------------------------------------------------- /bower_components/jquery/src/var/indexOf.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./arr" 3 | ], function( arr ) { 4 | return arr.indexOf; 5 | }); 6 | -------------------------------------------------------------------------------- /bower_components/cs_console/bin/cs_console: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | 3 | require_relative "../tasks/cli" 4 | CSConsole::CLI.start 5 | -------------------------------------------------------------------------------- /bower_components/jquery/src/css/var/cssExpand.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return [ "Top", "Right", "Bottom", "Left" ]; 3 | }); 4 | -------------------------------------------------------------------------------- /bower_components/jquery/src/manipulation/var/rcheckableType.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return (/^(?:checkbox|radio)$/i); 3 | }); 4 | -------------------------------------------------------------------------------- /bower_components/jquery/src/var/pnum.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source; 3 | }); 4 | -------------------------------------------------------------------------------- /public/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codeschool/WatchUsBuild-ConvertSQLAppToMongoDB/HEAD/public/images/favicon.ico -------------------------------------------------------------------------------- /bower_components/abecedary/.gitignore: -------------------------------------------------------------------------------- 1 | components/ 2 | node_modules/ 3 | example/lib/*/node_modules/ 4 | example/build/sandbox_vendor.js -------------------------------------------------------------------------------- /bower_components/jquery/src/ajax/var/nonce.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../../core" 3 | ], function( jQuery ) { 4 | return jQuery.now(); 5 | }); 6 | -------------------------------------------------------------------------------- /bower_components/jquery/src/data/var/data_priv.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../Data" 3 | ], function( Data ) { 4 | return new Data(); 5 | }); 6 | -------------------------------------------------------------------------------- /bower_components/jquery/src/data/var/data_user.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../Data" 3 | ], function( Data ) { 4 | return new Data(); 5 | }); 6 | -------------------------------------------------------------------------------- /public/downloads/package.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codeschool/WatchUsBuild-ConvertSQLAppToMongoDB/HEAD/public/downloads/package.zip -------------------------------------------------------------------------------- /bower_components/jquery/src/var/hasOwn.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./class2type" 3 | ], function( class2type ) { 4 | return class2type.hasOwnProperty; 5 | }); 6 | -------------------------------------------------------------------------------- /bower_components/jquery/src/var/toString.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./class2type" 3 | ], function( class2type ) { 4 | return class2type.toString; 5 | }); 6 | -------------------------------------------------------------------------------- /public/images/resources/img-mdn.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codeschool/WatchUsBuild-ConvertSQLAppToMongoDB/HEAD/public/images/resources/img-mdn.jpg -------------------------------------------------------------------------------- /bower_components/jquery/src/core/var/rsingleTag.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | // Match a standalone tag 3 | return (/^<(\w+)\s*\/?>(?:<\/\1>|)$/); 4 | }); 5 | -------------------------------------------------------------------------------- /bower_components/jquery/src/var/support.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | // All support tests are defined in their respective modules. 3 | return {}; 4 | }); 5 | -------------------------------------------------------------------------------- /public/images/resources/img-jsrt.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codeschool/WatchUsBuild-ConvertSQLAppToMongoDB/HEAD/public/images/resources/img-jsrt.jpg -------------------------------------------------------------------------------- /public/images/resources/img-try-js.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codeschool/WatchUsBuild-ConvertSQLAppToMongoDB/HEAD/public/images/resources/img-try-js.jpg -------------------------------------------------------------------------------- /public/images/resources/img-js-books.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codeschool/WatchUsBuild-ConvertSQLAppToMongoDB/HEAD/public/images/resources/img-js-books.png -------------------------------------------------------------------------------- /public/images/resources/img-codecademy.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codeschool/WatchUsBuild-ConvertSQLAppToMongoDB/HEAD/public/images/resources/img-codecademy.jpg -------------------------------------------------------------------------------- /public/images/resources/img-eloquent-js.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codeschool/WatchUsBuild-ConvertSQLAppToMongoDB/HEAD/public/images/resources/img-eloquent-js.jpg -------------------------------------------------------------------------------- /public/images/resources/img-js-for-cats.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codeschool/WatchUsBuild-ConvertSQLAppToMongoDB/HEAD/public/images/resources/img-js-for-cats.jpg -------------------------------------------------------------------------------- /public/images/resources/img-pluralsight.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codeschool/WatchUsBuild-ConvertSQLAppToMongoDB/HEAD/public/images/resources/img-pluralsight.jpg -------------------------------------------------------------------------------- /public/images/resources/img-try-jquery.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codeschool/WatchUsBuild-ConvertSQLAppToMongoDB/HEAD/public/images/resources/img-try-jquery.jpg -------------------------------------------------------------------------------- /bower_components/angular/angular.min.js.gzip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codeschool/WatchUsBuild-ConvertSQLAppToMongoDB/HEAD/bower_components/angular/angular.min.js.gzip -------------------------------------------------------------------------------- /client/javascriptcom/vendor/jquery.js: -------------------------------------------------------------------------------- 1 | angular.module('javascriptcom').factory('$', ['$window', 2 | function jQuery($window) { 3 | return $window.$; 4 | } 5 | ]); 6 | -------------------------------------------------------------------------------- /client/javascriptcom/vendor/lodash.js: -------------------------------------------------------------------------------- 1 | angular.module('javascriptcom').factory('_', ['$window', 2 | function lodash($window) { 3 | return $window._; 4 | } 5 | ]); 6 | -------------------------------------------------------------------------------- /public/templates/console.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | -------------------------------------------------------------------------------- /bower_components/abecedary/test/test.js: -------------------------------------------------------------------------------- 1 | var Sandbox = require('abecedary'); 2 | var assert = chai.assert; 3 | 4 | describe("Abecedary", function() { 5 | var sandbox; 6 | }); -------------------------------------------------------------------------------- /bower_components/codemirror/theme/ambiance-mobile.css: -------------------------------------------------------------------------------- 1 | .cm-s-ambiance.CodeMirror { 2 | -webkit-box-shadow: none; 3 | -moz-box-shadow: none; 4 | box-shadow: none; 5 | } 6 | -------------------------------------------------------------------------------- /public/images/resources/img-you-dont-know-js.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codeschool/WatchUsBuild-ConvertSQLAppToMongoDB/HEAD/public/images/resources/img-you-dont-know-js.jpg -------------------------------------------------------------------------------- /bower_components/jquery/src/css/var/rnumnonpx.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../../var/pnum" 3 | ], function( pnum ) { 4 | return new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); 5 | }); 6 | -------------------------------------------------------------------------------- /client/javascriptcom/vendor/marked.js: -------------------------------------------------------------------------------- 1 | angular.module('javascriptcom').factory('marked', ['$window', 2 | function marked($window) { 3 | return $window.marked; 4 | } 5 | ]); 6 | -------------------------------------------------------------------------------- /bower_components/angular/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular", 3 | "version": "1.4.0-beta.6", 4 | "main": "./angular.js", 5 | "ignore": [], 6 | "dependencies": { 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /server/views/partials/_hero_img.jade: -------------------------------------------------------------------------------- 1 | .hero-img.hero-img--clouds 2 | 3 | include /public/images/img-hero-cloud.svg 4 | 5 | .hero-img 6 | 7 | include /public/images/img-hero.svg 8 | -------------------------------------------------------------------------------- /bower_components/bootstrap/grunt/.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends" : "../js/.jshintrc", 3 | "asi" : false, 4 | "browser" : false, 5 | "es3" : false, 6 | "node" : true 7 | } 8 | -------------------------------------------------------------------------------- /bower_components/cs_console/test/resources/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codeschool/WatchUsBuild-ConvertSQLAppToMongoDB/HEAD/bower_components/cs_console/test/resources/favicon.ico -------------------------------------------------------------------------------- /bower_components/jquery/src/traversing/var/rneedsContext.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../../core", 3 | "../../selector" 4 | ], function( jQuery ) { 5 | return jQuery.expr.match.needsContext; 6 | }); 7 | -------------------------------------------------------------------------------- /client/javascriptcom/vendor/abecedary.js: -------------------------------------------------------------------------------- 1 | angular.module('javascriptcom').factory('Abecedary', ['$window', 2 | function Abecedary($window) { 3 | return $window.Abecedary; 4 | } 5 | ]); 6 | -------------------------------------------------------------------------------- /client/javascriptcom/vendor/cs_console.js: -------------------------------------------------------------------------------- 1 | angular.module('javascriptcom').factory('CSConsole', ['$window', 2 | function CSConsole($window) { 3 | return $window.CSConsole; 4 | } 5 | ]); 6 | -------------------------------------------------------------------------------- /public/downloads/JavaScript.com Asset Downloads/logo.eps: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codeschool/WatchUsBuild-ConvertSQLAppToMongoDB/HEAD/public/downloads/JavaScript.com Asset Downloads/logo.eps -------------------------------------------------------------------------------- /public/downloads/JavaScript.com Asset Downloads/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codeschool/WatchUsBuild-ConvertSQLAppToMongoDB/HEAD/public/downloads/JavaScript.com Asset Downloads/logo.png -------------------------------------------------------------------------------- /bower_components/codemirror/addon/display/fullscreen.css: -------------------------------------------------------------------------------- 1 | .CodeMirror-fullscreen { 2 | position: fixed; 3 | top: 0; left: 0; right: 0; bottom: 0; 4 | height: auto; 5 | z-index: 9999; 6 | } 7 | -------------------------------------------------------------------------------- /client/javascriptcom/resources/course.resource.js: -------------------------------------------------------------------------------- 1 | angular.module('javascriptcom').factory('jsCourseResource', function($resource) { 2 | return $resource('/courses/:course.json', {}, {}); 3 | }); 4 | -------------------------------------------------------------------------------- /bower_components/bootstrap/less/mixins/center-block.less: -------------------------------------------------------------------------------- 1 | // Center-align a block level element 2 | 3 | .center-block() { 4 | display: block; 5 | margin-left: auto; 6 | margin-right: auto; 7 | } 8 | -------------------------------------------------------------------------------- /bower_components/bootstrap/less/mixins/text-emphasis.less: -------------------------------------------------------------------------------- 1 | // Typography 2 | 3 | .text-emphasis-variant(@color) { 4 | color: @color; 5 | a&:hover { 6 | color: darken(@color, 10%); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /public/downloads/JavaScript.com Asset Downloads/logo-light.eps: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codeschool/WatchUsBuild-ConvertSQLAppToMongoDB/HEAD/public/downloads/JavaScript.com Asset Downloads/logo-light.eps -------------------------------------------------------------------------------- /public/downloads/JavaScript.com Asset Downloads/logo-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codeschool/WatchUsBuild-ConvertSQLAppToMongoDB/HEAD/public/downloads/JavaScript.com Asset Downloads/logo-light.png -------------------------------------------------------------------------------- /public/downloads/JavaScript.com Asset Downloads/logo-mark.eps: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codeschool/WatchUsBuild-ConvertSQLAppToMongoDB/HEAD/public/downloads/JavaScript.com Asset Downloads/logo-mark.eps -------------------------------------------------------------------------------- /public/downloads/JavaScript.com Asset Downloads/logo-mark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codeschool/WatchUsBuild-ConvertSQLAppToMongoDB/HEAD/public/downloads/JavaScript.com Asset Downloads/logo-mark.png -------------------------------------------------------------------------------- /bower_components/bootstrap/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codeschool/WatchUsBuild-ConvertSQLAppToMongoDB/HEAD/bower_components/bootstrap/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /bower_components/bootstrap/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codeschool/WatchUsBuild-ConvertSQLAppToMongoDB/HEAD/bower_components/bootstrap/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /bower_components/jquery/src/event/support.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../var/support" 3 | ], function( support ) { 4 | 5 | support.focusinBubbles = "onfocusin" in window; 6 | 7 | return support; 8 | 9 | }); 10 | -------------------------------------------------------------------------------- /client/javascriptcom/filters/markdown.filter.js: -------------------------------------------------------------------------------- 1 | angular.module('javascriptcom').filter('markdown', ['marked', function(marked) { 2 | return function(text) { 3 | return marked(text); 4 | }; 5 | }]); 6 | -------------------------------------------------------------------------------- /public/templates/instructions.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | -------------------------------------------------------------------------------- /bower_components/abecedary/example/component.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "demo", 3 | "description": "Abecedary demo", 4 | "version": "0.0.1", 5 | "keywords": [], 6 | "paths": ["lib"], 7 | "local": ["boot"] 8 | } 9 | -------------------------------------------------------------------------------- /bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codeschool/WatchUsBuild-ConvertSQLAppToMongoDB/HEAD/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codeschool/WatchUsBuild-ConvertSQLAppToMongoDB/HEAD/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codeschool/WatchUsBuild-ConvertSQLAppToMongoDB/HEAD/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codeschool/WatchUsBuild-ConvertSQLAppToMongoDB/HEAD/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /client/javascriptcom/resources/challenge.resource.js: -------------------------------------------------------------------------------- 1 | angular.module('javascriptcom').factory('jsCourseChallengeResource', function($resource) { 2 | return $resource('/courses/:course/challenges.json', {}, {}); 3 | }); 4 | -------------------------------------------------------------------------------- /server/views/news/_data_separator.jade: -------------------------------------------------------------------------------- 1 | li.list-item.list-item--header.bdrbl.pbs 2 | span.mrs.por.pot2n 3 | - iconPartial = { name: 'calendar', size: 16 } 4 | include /views/partials/_icon 5 | span= dateText 6 | -------------------------------------------------------------------------------- /server/views/partials/_flash.jade: -------------------------------------------------------------------------------- 1 | while message = flash.shift() 2 | .alert.in.js-alert(class='alert--' + message.type) 3 | a.alert-msg-close.js-alert-close(href='#') × 4 | p.alert-msg= message.message 5 | -------------------------------------------------------------------------------- /bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codeschool/WatchUsBuild-ConvertSQLAppToMongoDB/HEAD/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codeschool/WatchUsBuild-ConvertSQLAppToMongoDB/HEAD/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /bower_components/bootstrap/less/mixins/size.less: -------------------------------------------------------------------------------- 1 | // Sizing shortcuts 2 | 3 | .size(@width; @height) { 4 | width: @width; 5 | height: @height; 6 | } 7 | 8 | .square(@size) { 9 | .size(@size; @size); 10 | } 11 | -------------------------------------------------------------------------------- /client/javascriptcom/app.js: -------------------------------------------------------------------------------- 1 | angular.module('javascriptcom', ['ngResource', 'ngAnimate', 'ngCookies']) 2 | .config(['$httpProvider', function config($httpProvider) { 3 | $httpProvider.defaults.cache = true; 4 | }]); 5 | -------------------------------------------------------------------------------- /bower_components/bootstrap/less/mixins/background-variant.less: -------------------------------------------------------------------------------- 1 | // Contextual backgrounds 2 | 3 | .bg-variant(@color) { 4 | background-color: @color; 5 | a&:hover { 6 | background-color: darken(@color, 10%); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /bower_components/bootstrap/less/mixins/opacity.less: -------------------------------------------------------------------------------- 1 | // Opacity 2 | 3 | .opacity(@opacity) { 4 | opacity: @opacity; 5 | // IE8 filter 6 | @opacity-ie: (@opacity * 100); 7 | filter: ~"alpha(opacity=@{opacity-ie})"; 8 | } 9 | -------------------------------------------------------------------------------- /client/javascriptcom/filters/stateify.filter.js: -------------------------------------------------------------------------------- 1 | angular.module('javascriptcom').filter('stateify', ['$interpolate', function($interpolate) { 2 | return function(text, scope) { 3 | return $interpolate(text)(scope); 4 | }; 5 | }]); 6 | -------------------------------------------------------------------------------- /bower_components/abecedary/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "abecedary", 3 | "version": "0.0.4", 4 | "main": "dist/abecedary.js", 5 | "ignore": [ 6 | "**/*.txt" 7 | ], 8 | "dependencies": { }, 9 | "devDependencies": { } 10 | } 11 | -------------------------------------------------------------------------------- /bower_components/bootstrap/less/mixins/text-overflow.less: -------------------------------------------------------------------------------- 1 | // Text overflow 2 | // Requires inline-block or block for proper styling 3 | 4 | .text-overflow() { 5 | overflow: hidden; 6 | text-overflow: ellipsis; 7 | white-space: nowrap; 8 | } 9 | -------------------------------------------------------------------------------- /bower_components/abecedary/example/lib/javascript/iframe.js: -------------------------------------------------------------------------------- 1 | module.exports = '\n\n \n Abecedary Tests\n \n \n \n \n'; -------------------------------------------------------------------------------- /bower_components/angular-animate/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-animate", 3 | "version": "1.4.0-beta.6", 4 | "main": "./angular-animate.js", 5 | "ignore": [], 6 | "dependencies": { 7 | "angular": "1.4.0-beta.6" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /bower_components/angular-cookies/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-cookies", 3 | "version": "1.4.0-beta.6", 4 | "main": "./angular-cookies.js", 5 | "ignore": [], 6 | "dependencies": { 7 | "angular": "1.4.0-beta.6" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /bower_components/angular-resource/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-resource", 3 | "version": "1.4.0-beta.6", 4 | "main": "./angular-resource.js", 5 | "ignore": [], 6 | "dependencies": { 7 | "angular": "1.4.0-beta.6" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /bower_components/bootstrap/less/mixins/tab-focus.less: -------------------------------------------------------------------------------- 1 | // WebKit-style focus 2 | 3 | .tab-focus() { 4 | // Default 5 | outline: thin dotted; 6 | // WebKit 7 | outline: 5px auto -webkit-focus-ring-color; 8 | outline-offset: -2px; 9 | } 10 | -------------------------------------------------------------------------------- /bower_components/cs_console/CHANGE_LOG.md: -------------------------------------------------------------------------------- 1 | * 1.1.1 - Remove the code highlighting from the welcome message 2 | 3 | * 1.1.0 - Remove `
` elements in favor of `

` so that spacing is easier to control with css -------------------------------------------------------------------------------- /server/controllers/about.js: -------------------------------------------------------------------------------- 1 | var express = require('express'); 2 | var router = express.Router(); 3 | 4 | /* GET /about page */ 5 | router.get('/', function(req, res) { 6 | res.render('about/index'); 7 | }); 8 | 9 | module.exports = router; 10 | -------------------------------------------------------------------------------- /server/controllers/learn.js: -------------------------------------------------------------------------------- 1 | var express = require('express'); 2 | var router = express.Router(); 3 | 4 | /* GET /learn page */ 5 | router.get('/', function(req, res) { 6 | res.render('learn/index'); 7 | }); 8 | 9 | module.exports = router; 10 | -------------------------------------------------------------------------------- /bower_components/abecedary/example/lib/javascript/iframe.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Abecedary Tests 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /server/controllers/assets.js: -------------------------------------------------------------------------------- 1 | var express = require('express'); 2 | var router = express.Router(); 3 | 4 | /* GET /assets page */ 5 | router.get('/', function(req, res) { 6 | res.render('assets/index'); 7 | }); 8 | 9 | module.exports = router; 10 | -------------------------------------------------------------------------------- /server/views/error.jade: -------------------------------------------------------------------------------- 1 | extends /views/layouts/layout 2 | 3 | block content 4 | 5 | .row 6 | .well.well--l.cell 7 | 8 | h1.h.h--1= message 9 | 10 | if error.status 11 | p= error.status 12 | 13 | pre= error.stack 14 | -------------------------------------------------------------------------------- /server/controllers/guidelines.js: -------------------------------------------------------------------------------- 1 | var express = require('express'); 2 | var router = express.Router(); 3 | 4 | /* GET /brand page */ 5 | router.get('/', function(req, res) { 6 | res.render('guidelines/index'); 7 | }); 8 | 9 | module.exports = router; 10 | -------------------------------------------------------------------------------- /server/controllers/notFound.js: -------------------------------------------------------------------------------- 1 | var express = require('express'); 2 | var router = express.Router(); 3 | 4 | /* GET /notFound page */ 5 | router.get('/', function(req, res) { 6 | res.render('notFound/index'); 7 | }); 8 | 9 | module.exports = router; 10 | -------------------------------------------------------------------------------- /bower_components/abecedary/example/lib/javascript-logging/iframe.js: -------------------------------------------------------------------------------- 1 | module.exports = '\n\n \n Abecedary Tests\n \n \n \n \n'; -------------------------------------------------------------------------------- /bower_components/bootstrap/less/mixins/labels.less: -------------------------------------------------------------------------------- 1 | // Labels 2 | 3 | .label-variant(@color) { 4 | background-color: @color; 5 | 6 | &[href] { 7 | &:hover, 8 | &:focus { 9 | background-color: darken(@color, 10%); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /bower_components/bootstrap/less/mixins/resize.less: -------------------------------------------------------------------------------- 1 | // Resize anything 2 | 3 | .resizable(@direction) { 4 | resize: @direction; // Options: horizontal, vertical, both 5 | overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible` 6 | } 7 | -------------------------------------------------------------------------------- /server/controllers/resources.js: -------------------------------------------------------------------------------- 1 | var express = require('express'); 2 | var router = express.Router(); 3 | 4 | /* GET /resources page */ 5 | router.get('/', function(req, res) { 6 | res.render('resources/index'); 7 | }); 8 | 9 | module.exports = router; 10 | -------------------------------------------------------------------------------- /server/controllers/styleguide.js: -------------------------------------------------------------------------------- 1 | var express = require('express'); 2 | var router = express.Router(); 3 | 4 | /* GET /styleguide page */ 5 | router.get('/', function(req, res) { 6 | res.render('styleguide/index'); 7 | }); 8 | 9 | module.exports = router; 10 | -------------------------------------------------------------------------------- /bower_components/abecedary/example/lib/javascript-logging/iframe.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Abecedary Tests 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /client/javascriptcom/services/jsCourseState.factory.js: -------------------------------------------------------------------------------- 1 | angular.module('javascriptcom').factory('jsCourseState', ['_', function(_) { 2 | return { 3 | state: {}, 4 | update: function(newState) { 5 | this.state = _.merge(this.state, newState) 6 | } 7 | }; 8 | }]); 9 | -------------------------------------------------------------------------------- /bower_components/bootstrap/less/mixins/progress-bar.less: -------------------------------------------------------------------------------- 1 | // Progress bars 2 | 3 | .progress-bar-variant(@color) { 4 | background-color: @color; 5 | 6 | // Deprecated parent class requirement as of v3.2.0 7 | .progress-striped & { 8 | #gradient > .striped(); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /bower_components/jquery/src/attributes.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./core", 3 | "./attributes/attr", 4 | "./attributes/prop", 5 | "./attributes/classes", 6 | "./attributes/val" 7 | ], function( jQuery ) { 8 | 9 | // Return jQuery for attributes-only inclusion 10 | return jQuery; 11 | }); 12 | -------------------------------------------------------------------------------- /bower_components/marked/Makefile: -------------------------------------------------------------------------------- 1 | all: 2 | @cp lib/marked.js marked.js 3 | @uglifyjs --comments '/\*[^\0]+?Copyright[^\0]+?\*/' -o marked.min.js lib/marked.js 4 | 5 | clean: 6 | @rm marked.js 7 | @rm marked.min.js 8 | 9 | bench: 10 | @node test --bench 11 | 12 | .PHONY: clean all 13 | -------------------------------------------------------------------------------- /server/services/slug-generator.js: -------------------------------------------------------------------------------- 1 | var slug = require('slug'); 2 | var shortid = require('shortid'); 3 | 4 | function createSlug(title) { 5 | var slugTitle = slug(title) + "-" + shortid.generate(); 6 | return slugTitle.toLowerCase(); 7 | }; 8 | 9 | module.exports = {createSlug: createSlug}; 10 | -------------------------------------------------------------------------------- /bower_components/cs_console/Gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | 3 | group :development do 4 | gem 'coffee-script' 5 | gem 'compass' 6 | gem 'rake-pipeline' 7 | gem 'rake-pipeline-web-filters' 8 | gem 'sass' 9 | gem 'thor' 10 | gem 'pry' 11 | gem 'activesupport' 12 | gem 'i18n' 13 | end 14 | -------------------------------------------------------------------------------- /server/config.js: -------------------------------------------------------------------------------- 1 | // Set baseURL depending on enviornment 2 | var env = process.env.NODE_ENV; 3 | if (env === 'production') { 4 | baseURL = "https://www.javascript.com/"; 5 | }else if(env === 'staging'){ 6 | baseURL = "http://javascript.preschool.io/"; 7 | }else{ 8 | baseURL = "http://localhost:3000/"; 9 | } 10 | -------------------------------------------------------------------------------- /bower_components/jquery/src/ajax/parseJSON.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core" 3 | ], function( jQuery ) { 4 | 5 | // Support: Android 2.3 6 | // Workaround failure to string-cast null input 7 | jQuery.parseJSON = function( data ) { 8 | return JSON.parse( data + "" ); 9 | }; 10 | 11 | return jQuery.parseJSON; 12 | 13 | }); 14 | -------------------------------------------------------------------------------- /bower_components/jquery/src/deprecated.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./core", 3 | "./traversing" 4 | ], function( jQuery ) { 5 | 6 | // The number of elements contained in the matched element set 7 | jQuery.fn.size = function() { 8 | return this.length; 9 | }; 10 | 11 | jQuery.fn.andSelf = jQuery.fn.addBack; 12 | 13 | }); 14 | -------------------------------------------------------------------------------- /bower_components/bootstrap/less/mixins/nav-divider.less: -------------------------------------------------------------------------------- 1 | // Horizontal dividers 2 | // 3 | // Dividers (basically an hr) within dropdowns and nav lists 4 | 5 | .nav-divider(@color: #e5e5e5) { 6 | height: 1px; 7 | margin: ((@line-height-computed / 2) - 1) 0; 8 | overflow: hidden; 9 | background-color: @color; 10 | } 11 | -------------------------------------------------------------------------------- /bower_components/bootstrap/less/mixins/reset-filter.less: -------------------------------------------------------------------------------- 1 | // Reset filters for IE 2 | // 3 | // When you need to remove a gradient background, do not forget to use this to reset 4 | // the IE filter for IE9 and below. 5 | 6 | .reset-filter() { 7 | filter: e(%("progid:DXImageTransform.Microsoft.gradient(enabled = false)")); 8 | } 9 | -------------------------------------------------------------------------------- /bower_components/codemirror/mode/rpm/spec/spec.css: -------------------------------------------------------------------------------- 1 | .cm-s-default span.cm-preamble {color: #b26818; font-weight: bold;} 2 | .cm-s-default span.cm-macro {color: #b218b2;} 3 | .cm-s-default span.cm-section {color: green; font-weight: bold;} 4 | .cm-s-default span.cm-script {color: red;} 5 | .cm-s-default span.cm-issue {color: yellow;} 6 | -------------------------------------------------------------------------------- /bower_components/marked/component.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "marked", 3 | "version": "0.3.2", 4 | "repo": "chjj/marked", 5 | "description": "A markdown parser built for speed", 6 | "keywords": ["markdown", "markup", "html"], 7 | "scripts": ["lib/marked.js"], 8 | "main": "lib/marked.js", 9 | "license": "MIT" 10 | } 11 | -------------------------------------------------------------------------------- /public/templates/challenge.html: -------------------------------------------------------------------------------- 1 |
2 |

{{::ctrl.challenge.id}}. {{::ctrl.challenge.title}}

3 | 4 | 5 |
6 | -------------------------------------------------------------------------------- /bower_components/abecedary/example/lib/javascript/index.html: -------------------------------------------------------------------------------- 1 | var iframeTemplate = require('./iframe'); 2 | var code = require('./code'); 3 | var tests = require('./tests'); 4 | var answer = require('./answer'); 5 | 6 | module.exports = { 7 | iframe: iframeTemplate, 8 | code: code, 9 | tests: tests, 10 | answer: answer 11 | } -------------------------------------------------------------------------------- /bower_components/jquery/src/effects/animatedSelector.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core", 3 | "../selector", 4 | "../effects" 5 | ], function( jQuery ) { 6 | 7 | jQuery.expr.filters.animated = function( elem ) { 8 | return jQuery.grep(jQuery.timers, function( fn ) { 9 | return elem === fn.elem; 10 | }).length; 11 | }; 12 | 13 | }); 14 | -------------------------------------------------------------------------------- /bower_components/codemirror/mode/tiddlywiki/tiddlywiki.css: -------------------------------------------------------------------------------- 1 | span.cm-underlined { 2 | text-decoration: underline; 3 | } 4 | span.cm-strikethrough { 5 | text-decoration: line-through; 6 | } 7 | span.cm-brace { 8 | color: #170; 9 | font-weight: bold; 10 | } 11 | span.cm-table { 12 | color: blue; 13 | font-weight: bold; 14 | } 15 | -------------------------------------------------------------------------------- /server/controllers/users.js: -------------------------------------------------------------------------------- 1 | var express = require('express'); 2 | var router = express.Router(); 3 | 4 | router 5 | .get('/signout', function(req, res){ 6 | req.logout(); 7 | res.redirect('/news'); 8 | }) 9 | 10 | .get('/sign_in', function(req, res) { 11 | res.render('users/sign_in'); 12 | }); 13 | 14 | module.exports = router; 15 | -------------------------------------------------------------------------------- /bower_components/angular/angular-csp.css: -------------------------------------------------------------------------------- 1 | /* Include this file in your html if you are using the CSP mode. */ 2 | 3 | @charset "UTF-8"; 4 | 5 | [ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], 6 | .ng-cloak, .x-ng-cloak, 7 | .ng-hide:not(.ng-hide-animate) { 8 | display: none !important; 9 | } 10 | 11 | ng\:form { 12 | display: block; 13 | } 14 | -------------------------------------------------------------------------------- /bower_components/cs_console/app/vendor/javascripts/codemirror/mode/rpm/spec/spec.css: -------------------------------------------------------------------------------- 1 | .cm-s-default span.cm-preamble {color: #b26818; font-weight: bold;} 2 | .cm-s-default span.cm-macro {color: #b218b2;} 3 | .cm-s-default span.cm-section {color: green; font-weight: bold;} 4 | .cm-s-default span.cm-script {color: red;} 5 | .cm-s-default span.cm-issue {color: yellow;} 6 | -------------------------------------------------------------------------------- /bower_components/bootstrap/less/mixins/alerts.less: -------------------------------------------------------------------------------- 1 | // Alerts 2 | 3 | .alert-variant(@background; @border; @text-color) { 4 | background-color: @background; 5 | border-color: @border; 6 | color: @text-color; 7 | 8 | hr { 9 | border-top-color: darken(@border, 5%); 10 | } 11 | .alert-link { 12 | color: darken(@text-color, 10%); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /bower_components/codemirror/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "CodeMirror", 3 | "version": "3.16.0", 4 | "main": ["lib/codemirror.js", "lib/codemirror.css"], 5 | "ignore": [ 6 | "**/.*", 7 | "node_modules", 8 | "components", 9 | "bin", 10 | "demo", 11 | "doc", 12 | "test", 13 | "index.html", 14 | "package.json" 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /bower_components/cs_console/app/vendor/javascripts/codemirror/mode/tiddlywiki/tiddlywiki.css: -------------------------------------------------------------------------------- 1 | span.cm-underlined { 2 | text-decoration: underline; 3 | } 4 | span.cm-strikethrough { 5 | text-decoration: line-through; 6 | } 7 | span.cm-brace { 8 | color: #170; 9 | font-weight: bold; 10 | } 11 | span.cm-table { 12 | color: blue; 13 | font-weight: bold; 14 | } 15 | -------------------------------------------------------------------------------- /bower_components/jquery/src/manipulation/_evalUrl.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../ajax" 3 | ], function( jQuery ) { 4 | 5 | jQuery._evalUrl = function( url ) { 6 | return jQuery.ajax({ 7 | url: url, 8 | type: "GET", 9 | dataType: "script", 10 | async: false, 11 | global: false, 12 | "throws": true 13 | }); 14 | }; 15 | 16 | return jQuery._evalUrl; 17 | 18 | }); 19 | -------------------------------------------------------------------------------- /server/controllers/index.js: -------------------------------------------------------------------------------- 1 | var express = require('express'); 2 | var router = express.Router(); 3 | var bodyParser = require('body-parser'); 4 | var parseForm = bodyParser.urlencoded({ extended: false }); 5 | 6 | /* GET home page. */ 7 | router. 8 | get('/', function(req, res, next) { 9 | res.render('index'); 10 | }); 11 | 12 | module.exports = router; 13 | -------------------------------------------------------------------------------- /bower_components/abecedary/example/lib/javascript/component.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "javascript", 3 | "description": "Demo using JavaScript", 4 | "keywords": [], 5 | "dependencies": { }, 6 | "license": "AAL", 7 | "main": "index.js", 8 | "scripts": [ 9 | "index.js", 10 | "code.js", 11 | "tests.js", 12 | "answer.js", 13 | "iframe.js" 14 | ] 15 | } -------------------------------------------------------------------------------- /bower_components/bootstrap/js/.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "asi" : true, 3 | "browser" : true, 4 | "eqeqeq" : false, 5 | "eqnull" : true, 6 | "es3" : true, 7 | "expr" : true, 8 | "jquery" : true, 9 | "latedef" : true, 10 | "laxbreak" : true, 11 | "nonbsp" : true, 12 | "strict" : true, 13 | "undef" : true, 14 | "unused" : true 15 | } 16 | -------------------------------------------------------------------------------- /server/controllers/feedback.js: -------------------------------------------------------------------------------- 1 | var express = require('express'); 2 | var router = express.Router(); 3 | 4 | /* GET /feedback page */ 5 | router.get('/', function(req, res) { 6 | res.render('feedback/index'); 7 | }); 8 | 9 | /* GET /feedback/success page */ 10 | router.get('/success', function(req, res) { 11 | res.render('feedback/success'); 12 | }); 13 | 14 | module.exports = router; 15 | -------------------------------------------------------------------------------- /bower_components/jquery/src/selector-sizzle.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./core", 3 | "sizzle" 4 | ], function( jQuery, Sizzle ) { 5 | 6 | jQuery.find = Sizzle; 7 | jQuery.expr = Sizzle.selectors; 8 | jQuery.expr[":"] = jQuery.expr.pseudos; 9 | jQuery.unique = Sizzle.uniqueSort; 10 | jQuery.text = Sizzle.getText; 11 | jQuery.isXMLDoc = Sizzle.isXML; 12 | jQuery.contains = Sizzle.contains; 13 | 14 | }); 15 | -------------------------------------------------------------------------------- /client/stylesheets/structures/_icon.sass: -------------------------------------------------------------------------------- 1 | // ************************************* 2 | // 3 | // Icon 4 | // -> Single-color vector 5 | // 6 | // ------------------------------------- 7 | // Template (Haml) 8 | // ------------------------------------- 9 | // 10 | // %svg.icon 11 | // 12 | // ************************************* 13 | 14 | .icon 15 | fill: currentColor 16 | max-width: none 17 | -------------------------------------------------------------------------------- /bower_components/abecedary/example/lib/javascript-logging/component.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "javascript-logging", 3 | "description": "Demo using JavaScript with console.log.", 4 | "keywords": [], 5 | "dependencies": { }, 6 | "license": "AAL", 7 | "main": "index.js", 8 | "scripts": [ 9 | "index.js", 10 | "code.js", 11 | "tests.js", 12 | "answer.js", 13 | "iframe.js" 14 | ] 15 | } -------------------------------------------------------------------------------- /bower_components/lodash/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "lodash", 3 | "version": "3.5.0", 4 | "main": "lodash.js", 5 | "ignore": [ 6 | ".*", 7 | "*.custom.*", 8 | "*.log", 9 | "*.map", 10 | "*.md", 11 | "lodash.src.js", 12 | "component.json", 13 | "package.json", 14 | "doc", 15 | "node_modules", 16 | "perf", 17 | "test", 18 | "vendor" 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /client/javascriptcom/directives/challenge.directive.js: -------------------------------------------------------------------------------- 1 | angular.module('javascriptcom').directive('jsChallenge', function() { 2 | return { 3 | templateUrl: 'templates/challenge.html', 4 | replace: true, 5 | scope: { 6 | challenge: '=' 7 | }, 8 | bindToController: true, 9 | controllerAs: 'ctrl', 10 | controller: function jsChallengeController() { 11 | } 12 | }; 13 | }); 14 | -------------------------------------------------------------------------------- /bower_components/jquery/src/event/ajax.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core", 3 | "../event" 4 | ], function( jQuery ) { 5 | 6 | // Attach a bunch of functions for handling common AJAX events 7 | jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ) { 8 | jQuery.fn[ type ] = function( fn ) { 9 | return this.on( type, fn ); 10 | }; 11 | }); 12 | 13 | }); 14 | -------------------------------------------------------------------------------- /bower_components/mocha/.editorconfig: -------------------------------------------------------------------------------- 1 | # This file is for unifying the coding style for different editors and IDEs 2 | # editorconfig.org 3 | 4 | root = true 5 | 6 | [*] 7 | end_of_line = lf 8 | charset = utf-8 9 | insert_final_newline = true 10 | trim_trailing_whitespace = true 11 | indent_style = space 12 | indent_size = 2 13 | 14 | [Makefile] 15 | indent_style = tab 16 | 17 | [*.md] 18 | trim_trailing_whitespace = false 19 | -------------------------------------------------------------------------------- /server/views/learn/index.jade: -------------------------------------------------------------------------------- 1 | block layout_variables 2 | - dispatcher = 'course' 3 | - pageTitle = 'JavaScript Tutorial' 4 | - metaDescription = 'Start learning JavaScript right in your browser and then check out free resources to continue learning.' 5 | - headPartial = { fixedViewport: true } 6 | 7 | extends /views/layouts/layout-course 8 | 9 | block content 10 | div(ng-app='javascriptcom') 11 | js-course(course='intro') 12 | -------------------------------------------------------------------------------- /setup.sh: -------------------------------------------------------------------------------- 1 | # How do we only run this if the javascriptcom database doesn't exist? 2 | 3 | if psql javascriptcom -c '\q' 2>&1 4 | then 5 | # The database exists 6 | echo "javascriptcom database already loaded" 7 | else 8 | createdb javascriptcom 9 | ./node_modules/node-pg-migrate/bin/pg-migrate up 10 | fi 11 | 12 | echo "installing bower assets" 13 | npm run bower install 14 | 15 | echo "compiling assets" 16 | npm run gulp build 17 | -------------------------------------------------------------------------------- /bower_components/jquery/src/css/var/isHidden.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../../core", 3 | "../../selector" 4 | // css is assumed 5 | ], function( jQuery ) { 6 | 7 | return function( elem, el ) { 8 | // isHidden might be called from jQuery#filter function; 9 | // in that case, element will be second argument 10 | elem = el || elem; 11 | return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); 12 | }; 13 | }); 14 | -------------------------------------------------------------------------------- /courses/intro/index.js: -------------------------------------------------------------------------------- 1 | var fs = require('fs'); 2 | var path = require('path'); 3 | 4 | challenges = [ 5 | '1_string', 6 | '2_functions', 7 | '3_string_function_parameter', 8 | '4_variables', 9 | '5_variable_value', 10 | '6_numbers', 11 | '7_combining_numbers', 12 | '8_combining_strings' 13 | ]; 14 | 15 | module.exports = challenges.map(function(challenge) { 16 | return require(path.join(__dirname, challenge + '.js')); 17 | }); 18 | -------------------------------------------------------------------------------- /bower_components/bootstrap/less/mixins/nav-vertical-align.less: -------------------------------------------------------------------------------- 1 | // Navbar vertical align 2 | // 3 | // Vertically center elements in the navbar. 4 | // Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin. 5 | 6 | .navbar-vertical-align(@element-height) { 7 | margin-top: ((@navbar-height - @element-height) / 2); 8 | margin-bottom: ((@navbar-height - @element-height) / 2); 9 | } 10 | -------------------------------------------------------------------------------- /client/javascripts/components/dispatcher/news/show.js: -------------------------------------------------------------------------------- 1 | // ************************************* 2 | // 3 | // News Show 4 | // -> Dispatch events 5 | // 6 | // ************************************* 7 | 8 | JS.Pages.News.Show = function() { 9 | 10 | // ------------------------------------- 11 | // Modules 12 | // ------------------------------------- 13 | 14 | JS.Modules.CreateComment.init(); 15 | JS.Modules.EditComment.init(); 16 | 17 | }; 18 | -------------------------------------------------------------------------------- /bower_components/bootstrap/less/mixins/responsive-visibility.less: -------------------------------------------------------------------------------- 1 | // Responsive utilities 2 | 3 | // 4 | // More easily include all the states for responsive-utilities.less. 5 | .responsive-visibility() { 6 | display: block !important; 7 | table& { display: table; } 8 | tr& { display: table-row !important; } 9 | th&, 10 | td& { display: table-cell !important; } 11 | } 12 | 13 | .responsive-invisibility() { 14 | display: none !important; 15 | } 16 | -------------------------------------------------------------------------------- /server/services/dbConnection.js: -------------------------------------------------------------------------------- 1 | var mongo = require('mongodb'); 2 | var mongoClient = mongo.MongoClient; 3 | 4 | exports.connect = function() { 5 | if(mongo.DB) { return mongo.DB } 6 | mongoClient.connect('mongodb://localhost:27017/jscom', function(err, db) { 7 | if(err){ 8 | console.log("Problem with mongo, help!"); 9 | process.exit(1) 10 | }else{ 11 | console.log("Yay, mongo!") 12 | mongo.DB = db 13 | } 14 | }); 15 | } 16 | -------------------------------------------------------------------------------- /server/views/404.jade: -------------------------------------------------------------------------------- 1 | block current_nav 2 | - current_page = '404' 3 | 4 | extends /views/layouts/layout 5 | 6 | block content 7 | 8 | section.row.errorHero 9 | 10 | include /../public/images/img-404-hero.svg 11 | 12 | .cell.well.well--l.well--m--xl.tac.tci 13 | 14 | h1.h.h--l Oh, hey there. 15 | 16 | p.tsxl Looks like the page you're looking for isn't here. Why not enjoy the view? 17 | 18 | a.btn.btn--a--bordered.btn--l(href='/') Go Back Home 19 | -------------------------------------------------------------------------------- /bower_components/jquery/src/css/hiddenVisibleSelectors.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core", 3 | "../selector" 4 | ], function( jQuery ) { 5 | 6 | jQuery.expr.filters.hidden = function( elem ) { 7 | // Support: Opera <= 12.12 8 | // Opera reports offsetWidths and offsetHeights less than zero on some elements 9 | return elem.offsetWidth <= 0 && elem.offsetHeight <= 0; 10 | }; 11 | jQuery.expr.filters.visible = function( elem ) { 12 | return !jQuery.expr.filters.hidden( elem ); 13 | }; 14 | 15 | }); 16 | -------------------------------------------------------------------------------- /bower_components/cs_console/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cs_console", 3 | "_cacheHeaders": { 4 | "ETag": "\"8e3d2722e53a8605641e755bb6b71810da145c30\"", 5 | "Content-Type": "application/zip", 6 | "Content-Disposition": "attachment; filename=cs_console-master.zip" 7 | }, 8 | "_release": "e-tag:8e3d2722e", 9 | "_source": "https://github.com/renz45/cs_console/archive/master.zip", 10 | "_target": "*", 11 | "_originalSource": "https://github.com/renz45/cs_console/archive/master.zip" 12 | } -------------------------------------------------------------------------------- /bower_components/jquery/src/css/var/getStyles.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return function( elem ) { 3 | // Support: IE<=11+, Firefox<=30+ (#15098, #14150) 4 | // IE throws on elements created in popups 5 | // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" 6 | if ( elem.ownerDocument.defaultView.opener ) { 7 | return elem.ownerDocument.defaultView.getComputedStyle( elem, null ); 8 | } 9 | 10 | return window.getComputedStyle( elem, null ); 11 | }; 12 | }); 13 | -------------------------------------------------------------------------------- /bower_components/jquery/src/data/accepts.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core" 3 | ], function( jQuery ) { 4 | 5 | /** 6 | * Determines whether an object can have data 7 | */ 8 | jQuery.acceptData = function( owner ) { 9 | // Accepts only: 10 | // - Node 11 | // - Node.ELEMENT_NODE 12 | // - Node.DOCUMENT_NODE 13 | // - Object 14 | // - Any 15 | /* jshint -W018 */ 16 | return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); 17 | }; 18 | 19 | return jQuery.acceptData; 20 | }); 21 | -------------------------------------------------------------------------------- /public/images/icons/icon-calendar.svg: -------------------------------------------------------------------------------- 1 | Imported LayersCreated with Sketch. -------------------------------------------------------------------------------- /public/images/icons/icon-twitter.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /bower_components/abecedary/example/lib/javascript-logging/index.js: -------------------------------------------------------------------------------- 1 | var iframeTemplate = require('./iframe'); 2 | var code = require('./code'); 3 | var tests = require('./tests'); 4 | var answer = require('./answer'); 5 | 6 | module.exports = { 7 | name: "Sample JavaScript Challenge With Logging", 8 | iframe: iframeTemplate, 9 | code: code, 10 | tests: tests, 11 | answer: answer, 12 | syntax: 'javascript', 13 | question: "Log the message `Hello, World!` to the console.", 14 | options: { 15 | bail: true 16 | } 17 | } -------------------------------------------------------------------------------- /bower_components/abecedary/example/lib/javascript/index.js: -------------------------------------------------------------------------------- 1 | var iframeTemplate = require('./iframe'); 2 | var code = require('./code'); 3 | var tests = require('./tests'); 4 | var answer = require('./answer'); 5 | 6 | module.exports = { 7 | name: "Sample JavaScript Challenge", 8 | iframe: iframeTemplate, 9 | code: code, 10 | tests: tests, 11 | answer: answer, 12 | syntax: 'javascript', 13 | question: "Write an add function that adds two numbers and returns the result.", 14 | options: { 15 | bail: true 16 | } 17 | } -------------------------------------------------------------------------------- /server/views/layouts/layout.jade: -------------------------------------------------------------------------------- 1 | doctype html 2 | html(lang='en') 3 | 4 | block layout_variables 5 | include /views/layouts/_head 6 | 7 | - dispatcher = dispatcher ? dispatcher : '' 8 | body.js-dispatcher(data-dispatcher-page=dispatcher) 9 | 10 | include /views/partials/_header 11 | 12 | main(role='main') 13 | block content 14 | 15 | include /views/partials/_footer 16 | 17 | script(src='/javascripts/vendor.js') 18 | script(src='/javascripts/application.js') 19 | 20 | block inline_javascript 21 | -------------------------------------------------------------------------------- /server/views/partials/_newsletter_form.jade: -------------------------------------------------------------------------------- 1 | .newsletter.js-newsletter 2 | form.form.newsletter-form.mtm.js-newsletter-form 3 | fieldset.form-field.form-field--inline.mbf 4 | .g.g--xs 5 | .g-b.g-b--s--3of5 6 | 7 | input.form-input.form-input--inline.mbs.mbf--m(type='email' name='email' placeholder='Email Address' required) 8 | p.mbf.mts.tce.tsxs.is-hidden.js-newsletter-error 9 | 10 | .g-b.g-b--s--2of5 11 | 12 | input.btn.btn--b.form-btn(type='submit' value='Sign Up' href="#") 13 | -------------------------------------------------------------------------------- /server/views/feedback/success.jade: -------------------------------------------------------------------------------- 1 | block current_nav 2 | - current_page = 'Feedback' 3 | 4 | block layout_variables 5 | - pageTitle = 'Feedback' 6 | 7 | extends /views/layouts/layout 8 | 9 | block content 10 | 11 | section.row 12 | .cell.cell--s.well.well--l.well--m--xl 13 | 14 | .tac 15 | img.mbm(src='/images/img-feedback.svg' alt='Feedback' width='112') 16 | h1.h.h--1 Success! 17 | p Thanks for your feedback! We'll get back to you as soon as possible. 18 | a.btn(href='/') Head Back Home 19 | -------------------------------------------------------------------------------- /server/services/course.js: -------------------------------------------------------------------------------- 1 | var fs = require('fs'); 2 | var path = require('path'); 3 | 4 | var Course = { 5 | all() { 6 | return fs.readdirSync(path.join(__dirname, '..', '..', 'courses')); 7 | }, 8 | find(id) { 9 | if (this.all().indexOf(id) > -1) { 10 | return { 11 | name: id, 12 | challenges: require(path.join(__dirname, '..', '..', 'courses', id, 'index.js')) 13 | }; 14 | } else { 15 | return { error: `invalid course ${id}` }; 16 | } 17 | } 18 | } 19 | 20 | module.exports = Course; 21 | -------------------------------------------------------------------------------- /server/views/layouts/layout-bleed.jade: -------------------------------------------------------------------------------- 1 | doctype html 2 | html(lang='en') 3 | 4 | block layout_variables 5 | include /views/layouts/_head 6 | 7 | - dispatcher = dispatcher ? dispatcher : '' 8 | body.js-dispatcher(data-dispatcher-page=dispatcher) 9 | 10 | - headerPartial = { bleed: true } 11 | include /views/partials/_header 12 | 13 | main(role='main') 14 | block content 15 | 16 | include /views/partials/_footer 17 | 18 | script(src='/javascripts/vendor.js') 19 | script(src='/javascripts/application.js') 20 | -------------------------------------------------------------------------------- /bower_components/angular/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular", 3 | "version": "1.4.0-beta.6", 4 | "main": "./angular.js", 5 | "ignore": [], 6 | "dependencies": {}, 7 | "homepage": "https://github.com/angular/bower-angular", 8 | "_release": "1.4.0-beta.6", 9 | "_resolution": { 10 | "type": "version", 11 | "tag": "v1.4.0-beta.6", 12 | "commit": "e75198837e87a1ef5ebc8d90e3b47b228869f7c5" 13 | }, 14 | "_source": "git://github.com/angular/bower-angular.git", 15 | "_target": "1.4.0-beta.6", 16 | "_originalSource": "angular" 17 | } -------------------------------------------------------------------------------- /server/views/partials/_icon.jade: -------------------------------------------------------------------------------- 1 | - iconPartial = iconPartial || { } 2 | - iconPartial.className = iconPartial.className || undefined 3 | - iconPartial.name = iconPartial.name || undefined 4 | - iconPartial.size = iconPartial.size || 40 5 | - iconPartial.width = iconPartial.width || iconPartial.size 6 | - iconPartial.height = iconPartial.height || iconPartial.size 7 | 8 | span.srt= iconPartial.name 9 | 10 | svg.icon( class=iconPartial.className width=iconPartial.width height=iconPartial.height ) 11 | use( 'xlink:href'='#icon-#{iconPartial.name}' ) 12 | -------------------------------------------------------------------------------- /bower_components/codemirror/mode/javascript/test.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | var mode = CodeMirror.getMode({indentUnit: 2}, "javascript"); 3 | function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } 4 | 5 | MT("locals", 6 | "[keyword function] [variable foo]([def a], [def b]) { [keyword var] [def c] = [number 10]; [keyword return] [variable-2 a] + [variable-2 c] + [variable d]; }"); 7 | 8 | MT("comma-and-binop", 9 | "[keyword function](){ [keyword var] [def x] = [number 1] + [number 2], [def y]; }"); 10 | })(); 11 | -------------------------------------------------------------------------------- /client/javascriptcom/services/executor.factory.js: -------------------------------------------------------------------------------- 1 | angular.module('javascriptcom').factory('jsExecutor', ['Abecedary', function(Abecedary) { 2 | var iframeTemplate = [ 3 | '', 4 | '', 5 | ' ', 6 | ' Abecedary Tests', 7 | ' ', 8 | ' ', 9 | ' ', 10 | ' ', 11 | '' 12 | ].join('\n'); 13 | var sandbox = new Abecedary('/iframe.html', iframeTemplate); 14 | return sandbox; 15 | }]); 16 | -------------------------------------------------------------------------------- /bower_components/bootstrap/dist/js/npm.js: -------------------------------------------------------------------------------- 1 | // This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment. 2 | require('../../js/transition.js') 3 | require('../../js/alert.js') 4 | require('../../js/button.js') 5 | require('../../js/carousel.js') 6 | require('../../js/collapse.js') 7 | require('../../js/dropdown.js') 8 | require('../../js/modal.js') 9 | require('../../js/tooltip.js') 10 | require('../../js/popover.js') 11 | require('../../js/scrollspy.js') 12 | require('../../js/tab.js') 13 | require('../../js/affix.js') -------------------------------------------------------------------------------- /bower_components/bootstrap/less/.csslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "adjoining-classes": false, 3 | "box-sizing": false, 4 | "box-model": false, 5 | "compatible-vendor-prefixes": false, 6 | "floats": false, 7 | "font-sizes": false, 8 | "gradients": false, 9 | "important": false, 10 | "known-properties": false, 11 | "outline-none": false, 12 | "qualified-headings": false, 13 | "regex-selectors": false, 14 | "shorthand": false, 15 | "text-indent": false, 16 | "unique-headings": false, 17 | "universal-selector": false, 18 | "unqualified-attributes": false 19 | } 20 | -------------------------------------------------------------------------------- /server/controllers/sessions.js: -------------------------------------------------------------------------------- 1 | var express = require('express'); 2 | var passport = require('passport'); 3 | var router = express.Router(); 4 | 5 | router. 6 | get('/auth/github', passport.authenticate('github'), function(req, res){ 7 | // Request gets send to Github 8 | }) 9 | .get('/auth/github/callback', passport.authenticate('github', { failureRedirect: '/news/new' }), function(req, res) { 10 | // Callback that we set in Github 11 | res.redirect('/'); 12 | // res.redirect(req.session.returnTo || '/news'); 13 | }) 14 | 15 | module.exports = router; 16 | -------------------------------------------------------------------------------- /bower_components/bootstrap/less/mixins/pagination.less: -------------------------------------------------------------------------------- 1 | // Pagination 2 | 3 | .pagination-size(@padding-vertical; @padding-horizontal; @font-size; @border-radius) { 4 | > li { 5 | > a, 6 | > span { 7 | padding: @padding-vertical @padding-horizontal; 8 | font-size: @font-size; 9 | } 10 | &:first-child { 11 | > a, 12 | > span { 13 | .border-left-radius(@border-radius); 14 | } 15 | } 16 | &:last-child { 17 | > a, 18 | > span { 19 | .border-right-radius(@border-radius); 20 | } 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /bower_components/marked/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "marked", 3 | "version": "0.3.2", 4 | "homepage": "https://github.com/chjj/marked", 5 | "authors": [ 6 | "Christopher Jeffrey " 7 | ], 8 | "description": "A markdown parser built for speed", 9 | "keywords": [ 10 | "markdown", 11 | "markup", 12 | "html" 13 | ], 14 | "main": "lib/marked.js", 15 | "license": "MIT", 16 | "ignore": [ 17 | "**/.*", 18 | "node_modules", 19 | "bower_components", 20 | "app/bower_components", 21 | "test", 22 | "tests" 23 | ] 24 | } 25 | -------------------------------------------------------------------------------- /bower_components/abecedary/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "abecedary", 3 | "version": "0.0.5", 4 | "main": "dist/abecedary.js", 5 | "ignore": [ 6 | "**/*.txt" 7 | ], 8 | "dependencies": {}, 9 | "devDependencies": {}, 10 | "homepage": "https://github.com/codeschool/abecedary", 11 | "_release": "0.0.5", 12 | "_resolution": { 13 | "type": "version", 14 | "tag": "v0.0.5", 15 | "commit": "cece490a13f9ff769c9e22dbc9cf5e22dc571cbf" 16 | }, 17 | "_source": "git://github.com/codeschool/abecedary.git", 18 | "_target": "~0.0.5", 19 | "_originalSource": "abecedary" 20 | } -------------------------------------------------------------------------------- /bower_components/codemirror/mode/tiki/tiki.css: -------------------------------------------------------------------------------- 1 | .cm-tw-syntaxerror { 2 | color: #FFF; 3 | background-color: #900; 4 | } 5 | 6 | .cm-tw-deleted { 7 | text-decoration: line-through; 8 | } 9 | 10 | .cm-tw-header5 { 11 | font-weight: bold; 12 | } 13 | .cm-tw-listitem:first-child { /*Added first child to fix duplicate padding when highlighting*/ 14 | padding-left: 10px; 15 | } 16 | 17 | .cm-tw-box { 18 | border-top-width: 0px ! important; 19 | border-style: solid; 20 | border-width: 1px; 21 | border-color: inherit; 22 | } 23 | 24 | .cm-tw-underline { 25 | text-decoration: underline; 26 | } -------------------------------------------------------------------------------- /bower_components/bootstrap/less/mixins/border-radius.less: -------------------------------------------------------------------------------- 1 | // Single side border-radius 2 | 3 | .border-top-radius(@radius) { 4 | border-top-right-radius: @radius; 5 | border-top-left-radius: @radius; 6 | } 7 | .border-right-radius(@radius) { 8 | border-bottom-right-radius: @radius; 9 | border-top-right-radius: @radius; 10 | } 11 | .border-bottom-radius(@radius) { 12 | border-bottom-right-radius: @radius; 13 | border-bottom-left-radius: @radius; 14 | } 15 | .border-left-radius(@radius) { 16 | border-bottom-left-radius: @radius; 17 | border-top-left-radius: @radius; 18 | } 19 | -------------------------------------------------------------------------------- /bower_components/jquery/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jquery", 3 | "version": "2.1.4", 4 | "main": "dist/jquery.js", 5 | "license": "MIT", 6 | "ignore": [ 7 | "**/.*", 8 | "build", 9 | "dist/cdn", 10 | "speed", 11 | "test", 12 | "*.md", 13 | "AUTHORS.txt", 14 | "Gruntfile.js", 15 | "package.json" 16 | ], 17 | "devDependencies": { 18 | "sizzle": "2.1.1-jquery.2.1.2", 19 | "requirejs": "2.1.10", 20 | "qunit": "1.14.0", 21 | "sinon": "1.8.1" 22 | }, 23 | "keywords": [ 24 | "jquery", 25 | "javascript", 26 | "library" 27 | ] 28 | } 29 | -------------------------------------------------------------------------------- /public/images/icons/icon-rss.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /bower_components/abecedary/component.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "abecedary", 3 | "repo": "codeschool/abecedary", 4 | "description": "Crossdomain JavaScript test runner for Mocha.", 5 | "version": "0.0.5", 6 | "keywords": ["mocha", "stuff.js", "iframe", "test"], 7 | "dependencies": { }, 8 | "development": { 9 | "visionmedia/mocha": "*", 10 | "component/emitter": "*", 11 | "then/promise": "*", 12 | "segmentio/extend": "*", 13 | "adamfortuna/stuff.js": "*" 14 | }, 15 | "license": "MIT", 16 | "main": "dist/abecedary.js", 17 | "scripts": [ 18 | "dist/abecedary.js" 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /client/javascriptcom/directives/safeHtml.directive.js: -------------------------------------------------------------------------------- 1 | angular.module('javascriptcom').directive('jsSafeHtml', ['$sce', function($sce) { 2 | return { 3 | restrict: 'A', 4 | scope: { 5 | jsSafeHtml: "@" 6 | }, 7 | template: "
", 8 | link: function(scope, element, attrs) { 9 | var unregister = scope.$watch('jsSafeHtml', setHtml); 10 | 11 | function setHtml(value) { 12 | if(!value) { return; } 13 | scope.safeHtml = $sce.trustAsHtml(value.replace(/^\s+|\s+$/g, '')); 14 | unregister(); 15 | } 16 | } 17 | }; 18 | }]); 19 | -------------------------------------------------------------------------------- /client/javascriptcom/services/commandFactory.factory.js: -------------------------------------------------------------------------------- 1 | // Maps a specific command to a specific handler. 2 | // If none are found, runs as JavaScript. 3 | 4 | angular.module('javascriptcom').factory('jsCommandFactory', ['_', 'jsJavaScriptCommand', function(_, jsJavaScriptCommand) { 5 | var matchers = [ 6 | { 7 | pattern: /[.|\s]*/, 8 | handler: jsJavaScriptCommand 9 | } 10 | ]; 11 | 12 | function jsCommandFactory(command) { 13 | return _.find(matchers, function(m) { 14 | return command.match(m.pattern); 15 | }).handler; 16 | } 17 | 18 | return jsCommandFactory; 19 | }]); 20 | -------------------------------------------------------------------------------- /bower_components/cs_console/app/vendor/javascripts/codemirror/mode/tiki/tiki.css: -------------------------------------------------------------------------------- 1 | .cm-tw-syntaxerror { 2 | color: #FFF; 3 | background-color: #900; 4 | } 5 | 6 | .cm-tw-deleted { 7 | text-decoration: line-through; 8 | } 9 | 10 | .cm-tw-header5 { 11 | font-weight: bold; 12 | } 13 | .cm-tw-listitem:first-child { /*Added first child to fix duplicate padding when highlighting*/ 14 | padding-left: 10px; 15 | } 16 | 17 | .cm-tw-box { 18 | border-top-width: 0px ! important; 19 | border-style: solid; 20 | border-width: 1px; 21 | border-color: inherit; 22 | } 23 | 24 | .cm-tw-underline { 25 | text-decoration: underline; 26 | } -------------------------------------------------------------------------------- /bower_components/cs_console/app/vendor/stylesheets/codemirror/theme/neat.css: -------------------------------------------------------------------------------- 1 | .cm-s-neat span.cm-comment { color: #a86; } 2 | .cm-s-neat span.cm-keyword { line-height: 1em; font-weight: bold; color: blue; } 3 | .cm-s-neat span.cm-string { color: #a22; } 4 | .cm-s-neat span.cm-builtin { line-height: 1em; font-weight: bold; color: #077; } 5 | .cm-s-neat span.cm-special { line-height: 1em; font-weight: bold; color: #0aa; } 6 | .cm-s-neat span.cm-variable { color: black; } 7 | .cm-s-neat span.cm-number, .cm-s-neat span.cm-atom { color: #3a3; } 8 | .cm-s-neat span.cm-meta {color: #555;} 9 | .cm-s-neat span.cm-link { color: #3a3; } 10 | -------------------------------------------------------------------------------- /bower_components/cs_console/tasks/recipes.rb: -------------------------------------------------------------------------------- 1 | require 'active_support/all' 2 | 3 | module CSConsole 4 | class Recipes 5 | def self.list 6 | [ 7 | :all, 8 | :no_cm 9 | ] 10 | end 11 | 12 | def self.get_recipe(recipe) 13 | begin 14 | "CSConsole::Recipes::#{recipe.to_s.camelize}".constantize 15 | rescue 16 | raise StandardError, "The recipe #{recipe} does not exist" 17 | end 18 | end 19 | end 20 | end 21 | 22 | # Must stay at the bottom 23 | CSConsole::Recipes.list.each do |recipe| 24 | require_relative "./recipes/#{recipe.to_s}.rb" 25 | end 26 | -------------------------------------------------------------------------------- /bower_components/abecedary/Gruntfile.js: -------------------------------------------------------------------------------- 1 | module.exports = function(grunt) { 2 | grunt.initConfig({ 3 | shell: { 4 | browserify: { 5 | command: 'browserify -s Abecedary -t decomponentify -t brfs index.js > dist/abecedary.js' 6 | } 7 | }, 8 | watch: { 9 | scripts: { 10 | files: ['index.js', 'lib/runner.js'], 11 | tasks: ['default'] 12 | } 13 | } 14 | }); 15 | 16 | grunt.loadNpmTasks('grunt-contrib-watch'); 17 | grunt.loadNpmTasks('grunt-shell'); 18 | 19 | grunt.registerTask('default', ['shell:browserify']); 20 | grunt.registerTask('w', ['watch']); 21 | }; 22 | -------------------------------------------------------------------------------- /public/images/icons/icon-play.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /bower_components/codemirror/addon/lint/json-lint.js: -------------------------------------------------------------------------------- 1 | // Depends on jsonlint.js from https://github.com/zaach/jsonlint 2 | 3 | CodeMirror.registerHelper("lint", "json", function(text) { 4 | var found = []; 5 | jsonlint.parseError = function(str, hash) { 6 | var loc = hash.loc; 7 | found.push({from: CodeMirror.Pos(loc.first_line - 1, loc.first_column), 8 | to: CodeMirror.Pos(loc.last_line - 1, loc.last_column), 9 | message: str}); 10 | }; 11 | try { jsonlint.parse(text); } 12 | catch(e) {} 13 | return found; 14 | }); 15 | CodeMirror.jsonValidator = CodeMirror.lint.json; // deprecated 16 | -------------------------------------------------------------------------------- /client/stylesheets/components/_thumb.sass: -------------------------------------------------------------------------------- 1 | // ************************************* 2 | // 3 | // Thumb 4 | // -> Media element 5 | // CodePen: http://codepen.io/drewbarontini/pen/acGmE 6 | // 7 | // ------------------------------------- 8 | // Template (Haml) 9 | // ------------------------------------- 10 | // 11 | // %img.thumb[m] 12 | // 13 | // ************************************* 14 | 15 | .thumb 16 | border-radius: 50% 17 | display: block 18 | 19 | // ------------------------------------- 20 | // Modifiers 21 | // ------------------------------------- 22 | 23 | .thumb--m 24 | border-radius: $b-borderRadius 25 | -------------------------------------------------------------------------------- /bower_components/abecedary/example/lib/javascript/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "javascript", 3 | "description": "", 4 | "main": "abecedary-javascript.js", 5 | "author": "Code School", 6 | "license": "AAL", 7 | "dependencies": { 8 | "abecedary": "https://github.com/codeschool/abecedary/tarball/master", 9 | "mocha": "~1.17.0", 10 | "chai": "~1.8.1", 11 | "javascript-sandbox": "https://github.com/codeschool/javascript-sandbox/tarball/master", 12 | "jshint": "~2.4.3" 13 | }, 14 | "devDependencies": { 15 | "grunt": "~0.4.2", 16 | "grunt-shell": "~0.6.4", 17 | "grunt-contrib-concat": "~0.3.0" 18 | } 19 | } -------------------------------------------------------------------------------- /bower_components/codemirror/addon/edit/trailingspace.js: -------------------------------------------------------------------------------- 1 | CodeMirror.defineOption("showTrailingSpace", false, function(cm, val, prev) { 2 | if (prev == CodeMirror.Init) prev = false; 3 | if (prev && !val) 4 | cm.removeOverlay("trailingspace"); 5 | else if (!prev && val) 6 | cm.addOverlay({ 7 | token: function(stream) { 8 | for (var l = stream.string.length, i = l; i && /\s/.test(stream.string.charAt(i - 1)); --i) {} 9 | if (i > stream.pos) { stream.pos = i; return null; } 10 | stream.pos = l; 11 | return "trailingspace"; 12 | }, 13 | name: "trailingspace" 14 | }); 15 | }); 16 | -------------------------------------------------------------------------------- /client/stylesheets/components/_handle.sass: -------------------------------------------------------------------------------- 1 | // ************************************* 2 | // 3 | // Handle 4 | // -> Positioning context 5 | // 6 | // ------------------------------------- 7 | // Template (Haml) 8 | // ------------------------------------- 9 | // 10 | // .has-handle 11 | // 12 | // .handle 13 | // 14 | // ************************************* 15 | 16 | .handle 17 | left: 50% 18 | position: absolute 19 | top: 50% 20 | transform: translate(-50%, -50%) 21 | 22 | // ------------------------------------- 23 | // Context 24 | // ------------------------------------- 25 | 26 | .has-handle 27 | position: relative 28 | -------------------------------------------------------------------------------- /bower_components/angular-animate/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-animate", 3 | "version": "1.4.0-beta.6", 4 | "main": "./angular-animate.js", 5 | "ignore": [], 6 | "dependencies": { 7 | "angular": "1.4.0-beta.6" 8 | }, 9 | "homepage": "https://github.com/angular/bower-angular-animate", 10 | "_release": "1.4.0-beta.6", 11 | "_resolution": { 12 | "type": "version", 13 | "tag": "v1.4.0-beta.6", 14 | "commit": "9152fe45d40f89909656d22712900485ce56859a" 15 | }, 16 | "_source": "git://github.com/angular/bower-angular-animate.git", 17 | "_target": "1.4.0-beta.6", 18 | "_originalSource": "angular-animate" 19 | } -------------------------------------------------------------------------------- /bower_components/angular-cookies/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-cookies", 3 | "version": "1.4.0-beta.6", 4 | "main": "./angular-cookies.js", 5 | "ignore": [], 6 | "dependencies": { 7 | "angular": "1.4.0-beta.6" 8 | }, 9 | "homepage": "https://github.com/angular/bower-angular-cookies", 10 | "_release": "1.4.0-beta.6", 11 | "_resolution": { 12 | "type": "version", 13 | "tag": "v1.4.0-beta.6", 14 | "commit": "04bb418231b2c6dbeb2a73336bb4699ba94e90c5" 15 | }, 16 | "_source": "git://github.com/angular/bower-angular-cookies.git", 17 | "_target": "1.4.0-beta.6", 18 | "_originalSource": "angular-cookies" 19 | } -------------------------------------------------------------------------------- /bower_components/jquery/src/css/addGetHookIf.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | 3 | function addGetHookIf( conditionFn, hookFn ) { 4 | // Define the hook, we'll check on the first run if it's really needed. 5 | return { 6 | get: function() { 7 | if ( conditionFn() ) { 8 | // Hook not needed (or it's not possible to use it due 9 | // to missing dependency), remove it. 10 | delete this.get; 11 | return; 12 | } 13 | 14 | // Hook needed; redefine it so that the support test is not executed again. 15 | return (this.get = hookFn).apply( this, arguments ); 16 | } 17 | }; 18 | } 19 | 20 | return addGetHookIf; 21 | 22 | }); 23 | -------------------------------------------------------------------------------- /client/javascriptcom/directives/tooltip.directive.js: -------------------------------------------------------------------------------- 1 | angular.module('javascriptcom').directive('tooltip', function() { 2 | return { 3 | restrict: 'A', 4 | scope: { 5 | tooltip: '@' 6 | }, 7 | link: function(scope, element, attrs) { 8 | $(element).tooltip({ 9 | animation: false, 10 | container: 'body', 11 | trigger: 'hover', 12 | placement: 'bottom', 13 | title: function() { 14 | return scope.tooltip; 15 | }, 16 | viewport: { 17 | selector: 'body', 18 | padding: 10 19 | } 20 | }); 21 | } 22 | }; 23 | }); 24 | -------------------------------------------------------------------------------- /bower_components/angular-resource/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-resource", 3 | "version": "1.4.0-beta.6", 4 | "main": "./angular-resource.js", 5 | "ignore": [], 6 | "dependencies": { 7 | "angular": "1.4.0-beta.6" 8 | }, 9 | "homepage": "https://github.com/angular/bower-angular-resource", 10 | "_release": "1.4.0-beta.6", 11 | "_resolution": { 12 | "type": "version", 13 | "tag": "v1.4.0-beta.6", 14 | "commit": "c0e964128bda203e9757f5dade4b039567403a01" 15 | }, 16 | "_source": "git://github.com/angular/bower-angular-resource.git", 17 | "_target": "1.4.0-beta.6", 18 | "_originalSource": "angular-resource" 19 | } -------------------------------------------------------------------------------- /bower_components/jquery/src/ajax/parseXML.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core" 3 | ], function( jQuery ) { 4 | 5 | // Cross-browser xml parsing 6 | jQuery.parseXML = function( data ) { 7 | var xml, tmp; 8 | if ( !data || typeof data !== "string" ) { 9 | return null; 10 | } 11 | 12 | // Support: IE9 13 | try { 14 | tmp = new DOMParser(); 15 | xml = tmp.parseFromString( data, "text/xml" ); 16 | } catch ( e ) { 17 | xml = undefined; 18 | } 19 | 20 | if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { 21 | jQuery.error( "Invalid XML: " + data ); 22 | } 23 | return xml; 24 | }; 25 | 26 | return jQuery.parseXML; 27 | 28 | }); 29 | -------------------------------------------------------------------------------- /public/images/img-console.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /server/views/users/sign_in.jade: -------------------------------------------------------------------------------- 1 | block layout_variables 2 | - pageTitle = 'Users' 3 | - metaDescription = 'The latest news from the JavaScript community and the fine folks at 5 Minutes of JavaScript.' 4 | - dispatcher = 'users:authenticate' 5 | 6 | extends /views/layouts/layout 7 | 8 | block content 9 | 10 | section.row 11 | .cell.cell--s.well.well--xl 12 | 13 | img.db.mbl.mhc(src='/images/img-authentication.svg' alt='' width='221') 14 | 15 | .tac 16 | h1.h.h--1 Authenticate 17 | p To create a post, sign in with GitHub by clicking the button below. 18 | a.btn.btn--a(href='/sessions/auth/github') Sign In with GitHub 19 | -------------------------------------------------------------------------------- /bower_components/abecedary/example/Makefile: -------------------------------------------------------------------------------- 1 | SRC = $(wildcard lib/**/*.js) 2 | CSS = $(wildcard lib/**/*.css) 3 | HTML = $(wildcard lib/**/*.html) 4 | COMPONENTJSON = $(wildcard lib/*/component.json) 5 | TEMPLATES = $(HTML:.html=.js) 6 | 7 | build: components $(SRC) $(CSS) $(TEMPLATES) 8 | @echo building 9 | @component build 10 | 11 | components: component.json $(COMPONENTJSON) 12 | @echo installing 13 | @component install 14 | 15 | %.js: %.html 16 | @echo converting 17 | @component convert $< 18 | 19 | minify: 20 | @component build --use component-minify 21 | 22 | clean: 23 | @echo cleaning 24 | rm -fr build components $(TEMPLATES) 25 | 26 | .PHONY: clean minify 27 | -------------------------------------------------------------------------------- /public/images/logo-monochrome.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /bower_components/abecedary/test/test.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Mocha Tests 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 17 | 18 | 19 |
20 | 21 | -------------------------------------------------------------------------------- /bower_components/bootstrap/less/mixins/panels.less: -------------------------------------------------------------------------------- 1 | // Panels 2 | 3 | .panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) { 4 | border-color: @border; 5 | 6 | & > .panel-heading { 7 | color: @heading-text-color; 8 | background-color: @heading-bg-color; 9 | border-color: @heading-border; 10 | 11 | + .panel-collapse > .panel-body { 12 | border-top-color: @border; 13 | } 14 | .badge { 15 | color: @heading-bg-color; 16 | background-color: @heading-text-color; 17 | } 18 | } 19 | & > .panel-footer { 20 | + .panel-collapse > .panel-body { 21 | border-bottom-color: @border; 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /bower_components/abecedary/lib/runner.js: -------------------------------------------------------------------------------- 1 | // This runs the code in the stuff.js iframe 2 | // There is some error handling in here in case the tests themselves throw an erorr 3 | 4 | module.exports = function(code, tests) { 5 | return [ 6 | 'try {', 7 | ' window.code = JSON.parse('+JSON.stringify(JSON.stringify(code))+');', 8 | ' mocha.suite.suites.splice(0, mocha.suite.suites.length)', 9 | '', 10 | '// Begin Tests', 11 | tests, 12 | '// End Tests', 13 | '', 14 | ' window.mocha.run();', 15 | '} catch(e) {', 16 | ' rethrow(e, JSON.parse('+JSON.stringify(JSON.stringify(tests))+'), 6);', 17 | '}', 18 | true 19 | ].join('\n'); 20 | } 21 | -------------------------------------------------------------------------------- /bower_components/abecedary/example/lib/boot/component.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "boot", 3 | "description": "Abecedary demo", 4 | "version": "0.0.1", 5 | "keywords": [], 6 | "dependencies": { 7 | "amasad/codemirror": "*", 8 | "benatkin/codemirror-mode-javascript": "*", 9 | "component/debounce": "*", 10 | "component/dom": "*", 11 | "brighthas/bootstrap" : "*", 12 | "segmentio/extend": "*", 13 | "codeschool/abecedary": "*" 14 | }, 15 | "license": "AAL", 16 | "main": "index.js", 17 | "local": [ 18 | "javascript", 19 | "javascript-logging" 20 | ], 21 | "scripts": [ 22 | "index.js" 23 | ], 24 | "styles": [ 25 | "index.css" 26 | ] 27 | } 28 | -------------------------------------------------------------------------------- /bower_components/bootstrap/less/wells.less: -------------------------------------------------------------------------------- 1 | // 2 | // Wells 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base class 7 | .well { 8 | min-height: 20px; 9 | padding: 19px; 10 | margin-bottom: 20px; 11 | background-color: @well-bg; 12 | border: 1px solid @well-border; 13 | border-radius: @border-radius-base; 14 | .box-shadow(inset 0 1px 1px rgba(0,0,0,.05)); 15 | blockquote { 16 | border-color: #ddd; 17 | border-color: rgba(0,0,0,.15); 18 | } 19 | } 20 | 21 | // Sizes 22 | .well-lg { 23 | padding: 24px; 24 | border-radius: @border-radius-large; 25 | } 26 | .well-sm { 27 | padding: 9px; 28 | border-radius: @border-radius-small; 29 | } 30 | -------------------------------------------------------------------------------- /bower_components/codemirror/addon/dialog/dialog.css: -------------------------------------------------------------------------------- 1 | .CodeMirror-dialog { 2 | position: absolute; 3 | left: 0; right: 0; 4 | background: white; 5 | z-index: 15; 6 | padding: .1em .8em; 7 | overflow: hidden; 8 | color: #333; 9 | } 10 | 11 | .CodeMirror-dialog-top { 12 | border-bottom: 1px solid #eee; 13 | top: 0; 14 | } 15 | 16 | .CodeMirror-dialog-bottom { 17 | border-top: 1px solid #eee; 18 | bottom: 0; 19 | } 20 | 21 | .CodeMirror-dialog input { 22 | border: none; 23 | outline: none; 24 | background: transparent; 25 | width: 20em; 26 | color: inherit; 27 | font-family: monospace; 28 | } 29 | 30 | .CodeMirror-dialog button { 31 | font-size: 70%; 32 | } 33 | -------------------------------------------------------------------------------- /bower_components/jquery/src/queue/delay.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core", 3 | "../queue", 4 | "../effects" // Delay is optional because of this dependency 5 | ], function( jQuery ) { 6 | 7 | // Based off of the plugin by Clint Helfers, with permission. 8 | // http://blindsignals.com/index.php/2009/07/jquery-delay/ 9 | jQuery.fn.delay = function( time, type ) { 10 | time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; 11 | type = type || "fx"; 12 | 13 | return this.queue( type, function( next, hooks ) { 14 | var timeout = setTimeout( next, time ); 15 | hooks.stop = function() { 16 | clearTimeout( timeout ); 17 | }; 18 | }); 19 | }; 20 | 21 | return jQuery.fn.delay; 22 | }); 23 | -------------------------------------------------------------------------------- /client/stylesheets/components/_card.sass: -------------------------------------------------------------------------------- 1 | // ************************************* 2 | // 3 | // Card 4 | // -> Individual style containers 5 | // 6 | // ------------------------------------- 7 | // Template (Haml) 8 | // ------------------------------------- 9 | // 10 | // .card[l] 11 | // / ... 12 | // 13 | // ************************************* 14 | 15 | .card 16 | background: $card-background 17 | border-radius: $b-borderRadius-l 18 | padding: $b-space 19 | position: relative 20 | 21 | // ------------------------------------- 22 | // Modifiers 23 | // ------------------------------------- 24 | 25 | // ----- Sizes ----- // 26 | 27 | .card--l 28 | padding: $b-space-l 29 | -------------------------------------------------------------------------------- /bower_components/cs_console/app/vendor/stylesheets/codemirror/theme/elegant.css: -------------------------------------------------------------------------------- 1 | .cm-s-elegant span.cm-number, .cm-s-elegant span.cm-string, .cm-s-elegant span.cm-atom {color: #762;} 2 | .cm-s-elegant span.cm-comment {color: #262; font-style: italic; line-height: 1em;} 3 | .cm-s-elegant span.cm-meta {color: #555; font-style: italic; line-height: 1em;} 4 | .cm-s-elegant span.cm-variable {color: black;} 5 | .cm-s-elegant span.cm-variable-2 {color: #b11;} 6 | .cm-s-elegant span.cm-qualifier {color: #555;} 7 | .cm-s-elegant span.cm-keyword {color: #730;} 8 | .cm-s-elegant span.cm-builtin {color: #30a;} 9 | .cm-s-elegant span.cm-error {background-color: #fdd;} 10 | .cm-s-elegant span.cm-link {color: #762;} 11 | -------------------------------------------------------------------------------- /bower_components/mocha/media/logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | mocha 7 | 8 | -------------------------------------------------------------------------------- /client/stylesheets/structures/_state.sass: -------------------------------------------------------------------------------- 1 | // ************************************* 2 | // 3 | // State 4 | // -> Global application state 5 | // 6 | // ------------------------------------- 7 | // Template (Haml) 8 | // ------------------------------------- 9 | // 10 | // (hidden) 11 | // 12 | // ************************************* 13 | 14 | // ------------------------------------- 15 | // Added 16 | // ------------------------------------- 17 | 18 | .is-added 19 | animation: flash 0.6s linear 20 | animation-fill-mode: forwards 21 | 22 | // ------------------------------------- 23 | // Hidden 24 | // ------------------------------------- 25 | 26 | .is-hidden 27 | display: none 28 | -------------------------------------------------------------------------------- /bower_components/abecedary/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "abecedary", 3 | "version": "0.0.5", 4 | "description": "Crossdomain JavaScript test runner for Mocha.", 5 | "author": "Adam Fortuna", 6 | "repository": { 7 | "type": "git", 8 | "url": "https://github.com/codeschool/abecedary.git" 9 | }, 10 | "main": "index.js", 11 | "license": "AAL", 12 | "dependencies": {}, 13 | "devDependencies": { 14 | "brfs": "^1.2.0", 15 | "browserify": "3.32.0", 16 | "chai": "~1.8.1", 17 | "decomponentify": "~0.0.3", 18 | "grunt": "~0.4.2", 19 | "grunt-contrib-watch": "~0.5.3", 20 | "grunt-shell": "~0.6.4", 21 | "mocha": "~1.17.0", 22 | "sinon": "~1.7.3" 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /bower_components/bootstrap/less/mixins/list-group.less: -------------------------------------------------------------------------------- 1 | // List Groups 2 | 3 | .list-group-item-variant(@state; @background; @color) { 4 | .list-group-item-@{state} { 5 | color: @color; 6 | background-color: @background; 7 | 8 | a& { 9 | color: @color; 10 | 11 | .list-group-item-heading { 12 | color: inherit; 13 | } 14 | 15 | &:hover, 16 | &:focus { 17 | color: @color; 18 | background-color: darken(@background, 5%); 19 | } 20 | &.active, 21 | &.active:hover, 22 | &.active:focus { 23 | color: #fff; 24 | background-color: @color; 25 | border-color: @color; 26 | } 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /public/images/brand/logo-mark.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /bower_components/bootstrap/less/mixins/hide-text.less: -------------------------------------------------------------------------------- 1 | // CSS image replacement 2 | // 3 | // Heads up! v3 launched with with only `.hide-text()`, but per our pattern for 4 | // mixins being reused as classes with the same name, this doesn't hold up. As 5 | // of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`. 6 | // 7 | // Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 8 | 9 | // Deprecated as of v3.0.1 (will be removed in v4) 10 | .hide-text() { 11 | font: ~"0/0" a; 12 | color: transparent; 13 | text-shadow: none; 14 | background-color: transparent; 15 | border: 0; 16 | } 17 | 18 | // New mixin to use as of v3.0.1 19 | .text-hide() { 20 | .hide-text(); 21 | } 22 | -------------------------------------------------------------------------------- /bower_components/jquery/src/css/swap.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core" 3 | ], function( jQuery ) { 4 | 5 | // A method for quickly swapping in/out CSS properties to get correct calculations. 6 | jQuery.swap = function( elem, options, callback, args ) { 7 | var ret, name, 8 | old = {}; 9 | 10 | // Remember the old values, and insert the new ones 11 | for ( name in options ) { 12 | old[ name ] = elem.style[ name ]; 13 | elem.style[ name ] = options[ name ]; 14 | } 15 | 16 | ret = callback.apply( elem, args || [] ); 17 | 18 | // Revert the old values 19 | for ( name in options ) { 20 | elem.style[ name ] = old[ name ]; 21 | } 22 | 23 | return ret; 24 | }; 25 | 26 | return jQuery.swap; 27 | 28 | }); 29 | -------------------------------------------------------------------------------- /bower_components/angular/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular", 3 | "version": "1.4.0-beta.6", 4 | "description": "HTML enhanced for web apps", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "https://github.com/angular/angular.js.git" 12 | }, 13 | "keywords": [ 14 | "angular", 15 | "framework", 16 | "browser", 17 | "client-side" 18 | ], 19 | "author": "Angular Core Team ", 20 | "license": "MIT", 21 | "bugs": { 22 | "url": "https://github.com/angular/angular.js/issues" 23 | }, 24 | "homepage": "http://angularjs.org" 25 | } 26 | -------------------------------------------------------------------------------- /client/stylesheets/components/_cell.sass: -------------------------------------------------------------------------------- 1 | // ************************************* 2 | // 3 | // Cell 4 | // -> Width-limiting blocks 5 | // 6 | // ------------------------------------- 7 | // Template (Haml) 8 | // ------------------------------------- 9 | // 10 | // .cell[s] 11 | // / ... 12 | // 13 | // ************************************* 14 | 15 | .cell 16 | margin-left: auto 17 | margin-right: auto 18 | max-width: $b-maxWidth-l 19 | position: relative 20 | 21 | // ------------------------------------- 22 | // Modifiers 23 | // ------------------------------------- 24 | 25 | // ----- Sizes ----- // 26 | 27 | .cell--m 28 | max-width: $b-maxWidth 29 | 30 | .cell--s 31 | max-width: $b-maxWidth-s 32 | -------------------------------------------------------------------------------- /bower_components/autosize/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "autosize", 3 | "description": "Autosize is a small, stand-alone script to automatically adjust textarea height to fit text.", 4 | "dependencies": {}, 5 | "keywords": [ 6 | "textarea", 7 | "form", 8 | "ui" 9 | ], 10 | "authors": [ 11 | { 12 | "name": "Jack Moore", 13 | "url": "http://www.jacklmoore.com", 14 | "email": "hello@jacklmoore.com" 15 | } 16 | ], 17 | "license": "MIT", 18 | "homepage": "http://www.jacklmoore.com/autosize", 19 | "ignore": [], 20 | "repository": { 21 | "type": "git", 22 | "url": "http://github.com/jackmoore/autosize.git" 23 | }, 24 | "main": "dist/autosize.js", 25 | "moduleType": [ 26 | "amd", 27 | "node" 28 | ] 29 | } -------------------------------------------------------------------------------- /bower_components/codemirror/README.md: -------------------------------------------------------------------------------- 1 | # CodeMirror 2 | [![Build Status](https://secure.travis-ci.org/marijnh/CodeMirror.png?branch=master)](http://travis-ci.org/marijnh/CodeMirror) 3 | [![NPM version](https://badge.fury.io/js/codemirror.png)](http://badge.fury.io/js/codemirror) 4 | 5 | CodeMirror is a JavaScript component that provides a code editor in 6 | the browser. When a mode is available for the language you are coding 7 | in, it will color your code, and optionally help with indentation. 8 | 9 | The project page is http://codemirror.net 10 | The manual is at http://codemirror.net/doc/manual.html 11 | The contributing guidelines are in [CONTRIBUTING.md](https://github.com/marijnh/CodeMirror/blob/master/CONTRIBUTING.md) 12 | -------------------------------------------------------------------------------- /bower_components/abecedary/example/lib/javascript/Gruntfile.js: -------------------------------------------------------------------------------- 1 | module.exports = function(grunt) { 2 | grunt.initConfig({ 3 | shell: { 4 | browserify: { 5 | command: 'browserify -r chai -r javascript-sandbox -r jshint -o ../../build/sandbox_vendor.js' 6 | } 7 | }, 8 | concat: { 9 | '../../build/demos/javascript.js': ['../../build/sandbox_vendor.js', 'node_modules/mocha/mocha.js', '../../../dist/reporter.js'] 10 | } 11 | }); 12 | 13 | // Load the npm installed tasks 14 | grunt.loadNpmTasks('grunt-contrib-concat'); 15 | grunt.loadNpmTasks('grunt-shell'); 16 | 17 | // The default tasks to run when you type: grunt 18 | grunt.registerTask('default', ['shell:browserify', 'concat']); 19 | }; 20 | -------------------------------------------------------------------------------- /bower_components/bootstrap/less/mixins/clearfix.less: -------------------------------------------------------------------------------- 1 | // Clearfix 2 | // 3 | // For modern browsers 4 | // 1. The space content is one way to avoid an Opera bug when the 5 | // contenteditable attribute is included anywhere else in the document. 6 | // Otherwise it causes space to appear at the top and bottom of elements 7 | // that are clearfixed. 8 | // 2. The use of `table` rather than `block` is only necessary if using 9 | // `:before` to contain the top-margins of child elements. 10 | // 11 | // Source: http://nicolasgallagher.com/micro-clearfix-hack/ 12 | 13 | .clearfix() { 14 | &:before, 15 | &:after { 16 | content: " "; // 1 17 | display: table; // 2 18 | } 19 | &:after { 20 | clear: both; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /bower_components/codemirror/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "CodeMirror", 3 | "version": "3.16.0", 4 | "main": [ 5 | "lib/codemirror.js", 6 | "lib/codemirror.css" 7 | ], 8 | "ignore": [ 9 | "**/.*", 10 | "node_modules", 11 | "components", 12 | "bin", 13 | "demo", 14 | "doc", 15 | "test", 16 | "index.html", 17 | "package.json" 18 | ], 19 | "homepage": "https://github.com/marijnh/CodeMirror", 20 | "_release": "3.16.0", 21 | "_resolution": { 22 | "type": "version", 23 | "tag": "3.16.0", 24 | "commit": "633bd90072a034782ac2f6ef2ce97910c6bf03a7" 25 | }, 26 | "_source": "git://github.com/marijnh/CodeMirror.git", 27 | "_target": "~3.16.0", 28 | "_originalSource": "codemirror" 29 | } -------------------------------------------------------------------------------- /bower_components/codemirror/addon/fold/indent-fold.js: -------------------------------------------------------------------------------- 1 | CodeMirror.registerHelper("fold", "indent", function(cm, start) { 2 | var tabSize = cm.getOption("tabSize"), firstLine = cm.getLine(start.line); 3 | var myIndent = CodeMirror.countColumn(firstLine, null, tabSize); 4 | for (var i = start.line + 1, end = cm.lineCount(); i < end; ++i) { 5 | var curLine = cm.getLine(i); 6 | if (CodeMirror.countColumn(curLine, null, tabSize) < myIndent && 7 | CodeMirror.countColumn(cm.getLine(i-1), null, tabSize) > myIndent) 8 | return {from: CodeMirror.Pos(start.line, firstLine.length), 9 | to: CodeMirror.Pos(i, curLine.length)}; 10 | } 11 | }); 12 | CodeMirror.indentRangeFinder = CodeMirror.fold.indent; // deprecated 13 | -------------------------------------------------------------------------------- /bower_components/lodash/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "lodash", 3 | "version": "3.5.0", 4 | "main": "lodash.js", 5 | "ignore": [ 6 | ".*", 7 | "*.custom.*", 8 | "*.log", 9 | "*.map", 10 | "*.md", 11 | "lodash.src.js", 12 | "component.json", 13 | "package.json", 14 | "doc", 15 | "node_modules", 16 | "perf", 17 | "test", 18 | "vendor" 19 | ], 20 | "homepage": "https://github.com/lodash/lodash", 21 | "_release": "3.5.0", 22 | "_resolution": { 23 | "type": "version", 24 | "tag": "3.5.0", 25 | "commit": "a3d504123969a4c783c2ecb6737d55b6da1c83c6" 26 | }, 27 | "_source": "git://github.com/lodash/lodash.git", 28 | "_target": "~3.5.0", 29 | "_originalSource": "lodash" 30 | } -------------------------------------------------------------------------------- /bower_components/bootstrap/less/breadcrumbs.less: -------------------------------------------------------------------------------- 1 | // 2 | // Breadcrumbs 3 | // -------------------------------------------------- 4 | 5 | 6 | .breadcrumb { 7 | padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal; 8 | margin-bottom: @line-height-computed; 9 | list-style: none; 10 | background-color: @breadcrumb-bg; 11 | border-radius: @border-radius-base; 12 | 13 | > li { 14 | display: inline-block; 15 | 16 | + li:before { 17 | content: "@{breadcrumb-separator}\00a0"; // Unicode space added since inline-block means non-collapsing white-space 18 | padding: 0 5px; 19 | color: @breadcrumb-color; 20 | } 21 | } 22 | 23 | > .active { 24 | color: @breadcrumb-active-color; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /bower_components/bootstrap/less/responsive-embed.less: -------------------------------------------------------------------------------- 1 | // Embeds responsive 2 | // 3 | // Credit: Nicolas Gallagher and SUIT CSS. 4 | 5 | .embed-responsive { 6 | position: relative; 7 | display: block; 8 | height: 0; 9 | padding: 0; 10 | overflow: hidden; 11 | 12 | .embed-responsive-item, 13 | iframe, 14 | embed, 15 | object, 16 | video { 17 | position: absolute; 18 | top: 0; 19 | left: 0; 20 | bottom: 0; 21 | height: 100%; 22 | width: 100%; 23 | border: 0; 24 | } 25 | } 26 | 27 | // Modifier class for 16:9 aspect ratio 28 | .embed-responsive-16by9 { 29 | padding-bottom: 56.25%; 30 | } 31 | 32 | // Modifier class for 4:3 aspect ratio 33 | .embed-responsive-4by3 { 34 | padding-bottom: 75%; 35 | } 36 | -------------------------------------------------------------------------------- /bower_components/angular-cookies/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-cookies", 3 | "version": "1.4.0-beta.6", 4 | "description": "AngularJS module for cookies", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "https://github.com/angular/angular.js.git" 12 | }, 13 | "keywords": [ 14 | "angular", 15 | "framework", 16 | "browser", 17 | "cookies", 18 | "client-side" 19 | ], 20 | "author": "Angular Core Team ", 21 | "license": "MIT", 22 | "bugs": { 23 | "url": "https://github.com/angular/angular.js/issues" 24 | }, 25 | "homepage": "http://angularjs.org" 26 | } 27 | -------------------------------------------------------------------------------- /client/javascripts/components/dispatcher/feedback.js: -------------------------------------------------------------------------------- 1 | // ************************************* 2 | // 3 | // Feedback 4 | // -> Dispatch events 5 | // 6 | // ************************************* 7 | 8 | JS.Pages.Feedback = function() { 9 | 10 | // ------------------------------------- 11 | // Classes 12 | // ------------------------------------- 13 | 14 | new JS.Classes.FormValidator(); 15 | 16 | // ------------------------------------- 17 | // Modules 18 | // ------------------------------------- 19 | 20 | JS.Modules.SaveProgress.init(); 21 | 22 | // ------------------------------------- 23 | // Vendor 24 | // ------------------------------------- 25 | 26 | autosize($(JS.Globals.Vendor.autosizeQuery)); 27 | 28 | }; 29 | -------------------------------------------------------------------------------- /bower_components/angular-animate/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-animate", 3 | "version": "1.4.0-beta.6", 4 | "description": "AngularJS module for animations", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "https://github.com/angular/angular.js.git" 12 | }, 13 | "keywords": [ 14 | "angular", 15 | "framework", 16 | "browser", 17 | "animation", 18 | "client-side" 19 | ], 20 | "author": "Angular Core Team ", 21 | "license": "MIT", 22 | "bugs": { 23 | "url": "https://github.com/angular/angular.js/issues" 24 | }, 25 | "homepage": "http://angularjs.org" 26 | } 27 | -------------------------------------------------------------------------------- /bower_components/codemirror/mode/rpm/changes/changes.js: -------------------------------------------------------------------------------- 1 | CodeMirror.defineMode("changes", function() { 2 | var headerSeperator = /^-+$/; 3 | var headerLine = /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ?\d{1,2} \d{2}:\d{2}(:\d{2})? [A-Z]{3,4} \d{4} - /; 4 | var simpleEmail = /^[\w+.-]+@[\w.-]+/; 5 | 6 | return { 7 | token: function(stream) { 8 | if (stream.sol()) { 9 | if (stream.match(headerSeperator)) { return 'tag'; } 10 | if (stream.match(headerLine)) { return 'tag'; } 11 | } 12 | if (stream.match(simpleEmail)) { return 'string'; } 13 | stream.next(); 14 | return null; 15 | } 16 | }; 17 | }); 18 | 19 | CodeMirror.defineMIME("text/x-rpm-changes", "changes"); 20 | -------------------------------------------------------------------------------- /bower_components/cs_console/test/resources/test_helper.js: -------------------------------------------------------------------------------- 1 | /* 2 | This file contains any helper methods used in tests. Any external test files 3 | should be loaded after this file and be self executing functions 4 | */ 5 | 6 | createConsole = function(options){ 7 | var el = document.getElementById('console'); 8 | el.className = 'console' 9 | el.innerHTML = '' 10 | 11 | options = options ? options : {} 12 | 13 | return new CSConsole(el,{ 14 | prompt: options.prompt, 15 | historyLabel: options.historyLabel, 16 | syntax: options.syntax, 17 | welcomeMessage: options.welcomeMessage, 18 | autoFocus: options.autoFocus, 19 | commandValidate: options.commandValidate, 20 | commandHandle: options.commandHandle 21 | }); 22 | } 23 | 24 | -------------------------------------------------------------------------------- /server/views/resources/_resource.jade: -------------------------------------------------------------------------------- 1 | - item = item || {} 2 | - item.title = item.title || 'Placeholder Title' 3 | - item.url = item.url || '#' 4 | - item.media = item.media || 'https://placehold.it/220x120' 5 | - item.description = item.description || '' 6 | 7 | li.list-item 8 | article.g 9 | .g-b.g-b--s--2of5.g-b--m--1of3 10 | a(href="#{item.url}") 11 | img.thumb.thumb--m(src="#{item.media}" alt="#{item.title}") 12 | .g-b.g-b--s--3of5.g-b--m--2of3.mtm.mtf--s 13 | h2.h.h--3 14 | a.externalLink.tct.twb(href="#{item.url}") 15 | = item.title 16 | - iconPartial = { name: 'external', className: 'externalLink-icon', size: 16 } 17 | include /views/partials/_icon 18 | 19 | p.mbf= item.description 20 | -------------------------------------------------------------------------------- /bower_components/abecedary/example/lib/javascript-logging/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "javascript", 3 | "description": "", 4 | "main": "abecedary-javascript.js", 5 | "author": "Code School", 6 | "license": "AAL", 7 | "dependencies": { 8 | "abecedary": "https://github.com/codeschool/abecedary/tarball/master", 9 | "mocha": "~1.17.0", 10 | "sinon": "https://github.com/cjohansen/Sinon.JS/tarball/browserify", 11 | "chai": "~1.8.1", 12 | "javascript-sandbox": "https://github.com/codeschool/javascript-sandbox/tarball/master", 13 | "jshint": "~2.4.3" 14 | }, 15 | "devDependencies": { 16 | "grunt": "~0.4.2", 17 | "grunt-shell": "~0.6.4", 18 | "grunt-contrib-concat": "~0.3.0", 19 | "grunt-contrib-watch": "~0.5.3" 20 | } 21 | } -------------------------------------------------------------------------------- /client/stylesheets/components/_row.sass: -------------------------------------------------------------------------------- 1 | // ************************************* 2 | // 3 | // Row 4 | // -> Width-spanning blocks 5 | // 6 | // ------------------------------------- 7 | // Template (Haml) 8 | // ------------------------------------- 9 | // 10 | // .row[a|b] 11 | // / ... 12 | // 13 | // ************************************* 14 | 15 | .row 16 | overflow: hidden 17 | padding: 0 $b-space-s 18 | 19 | +respond-to($g-s) 20 | padding: 0 $b-space 21 | 22 | // ------------------------------------- 23 | // Modifiers 24 | // ------------------------------------- 25 | 26 | // ----- Theme ----- // 27 | 28 | // Primary 29 | 30 | .row--a 31 | background: $c-highlight 32 | 33 | // Secondary 34 | 35 | .row--b 36 | background: $c-subdue 37 | -------------------------------------------------------------------------------- /bower_components/codemirror/theme/neat.css: -------------------------------------------------------------------------------- 1 | .cm-s-neat span.cm-comment { color: #a86; } 2 | .cm-s-neat span.cm-keyword { line-height: 1em; font-weight: bold; color: blue; } 3 | .cm-s-neat span.cm-string { color: #a22; } 4 | .cm-s-neat span.cm-builtin { line-height: 1em; font-weight: bold; color: #077; } 5 | .cm-s-neat span.cm-special { line-height: 1em; font-weight: bold; color: #0aa; } 6 | .cm-s-neat span.cm-variable { color: black; } 7 | .cm-s-neat span.cm-number, .cm-s-neat span.cm-atom { color: #3a3; } 8 | .cm-s-neat span.cm-meta {color: #555;} 9 | .cm-s-neat span.cm-link { color: #3a3; } 10 | 11 | .cm-s-neat .CodeMirror-activeline-background {background: #e8f2ff !important;} 12 | .cm-s-neat .CodeMirror-matchingbracket {outline:1px solid grey; color:black !important;} 13 | -------------------------------------------------------------------------------- /bower_components/jquery/src/jquery.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./core", 3 | "./selector", 4 | "./traversing", 5 | "./callbacks", 6 | "./deferred", 7 | "./core/ready", 8 | "./data", 9 | "./queue", 10 | "./queue/delay", 11 | "./attributes", 12 | "./event", 13 | "./event/alias", 14 | "./manipulation", 15 | "./manipulation/_evalUrl", 16 | "./wrap", 17 | "./css", 18 | "./css/hiddenVisibleSelectors", 19 | "./serialize", 20 | "./ajax", 21 | "./ajax/xhr", 22 | "./ajax/script", 23 | "./ajax/jsonp", 24 | "./ajax/load", 25 | "./event/ajax", 26 | "./effects", 27 | "./effects/animatedSelector", 28 | "./offset", 29 | "./dimensions", 30 | "./deprecated", 31 | "./exports/amd", 32 | "./exports/global" 33 | ], function( jQuery ) { 34 | 35 | return jQuery; 36 | 37 | }); 38 | -------------------------------------------------------------------------------- /client/javascripts/components/dispatcher/news/new.js: -------------------------------------------------------------------------------- 1 | // ************************************* 2 | // 3 | // News New 4 | // -> Dispatch events 5 | // 6 | // ************************************* 7 | 8 | JS.Pages.News.New = function() { 9 | 10 | // ------------------------------------- 11 | // Modules 12 | // ------------------------------------- 13 | 14 | JS.Modules.Counter.init({ 15 | onMaxExceeded: function(settings) { 16 | $('.js-counter-message-max').removeClass('is-hidden'); 17 | $('.js-counter-message-min').addClass('is-hidden'); 18 | }, 19 | onConditionsMet: function(settings){ 20 | $('.js-counter-message-min').addClass('is-hidden'); 21 | $('.js-counter-message-max').addClass('is-hidden'); 22 | } 23 | }); 24 | 25 | }; 26 | -------------------------------------------------------------------------------- /bower_components/marked/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "marked", 3 | "description": "A markdown parser built for speed", 4 | "author": "Christopher Jeffrey", 5 | "version": "0.3.3", 6 | "main": "./lib/marked.js", 7 | "bin": "./bin/marked", 8 | "man": "./man/marked.1", 9 | "preferGlobal": true, 10 | "repository": "git://github.com/chjj/marked.git", 11 | "homepage": "https://github.com/chjj/marked", 12 | "bugs": { "url": "http://github.com/chjj/marked/issues" }, 13 | "license": "MIT", 14 | "keywords": ["markdown", "markup", "html"], 15 | "tags": ["markdown", "markup", "html"], 16 | "devDependencies": { 17 | "markdown": "*", 18 | "showdown": "*", 19 | "robotskirt": "*" 20 | }, 21 | "scripts": { "test": "node test", "bench": "node test --bench" } 22 | } 23 | -------------------------------------------------------------------------------- /bower_components/angular-resource/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-resource", 3 | "version": "1.4.0-beta.6", 4 | "description": "AngularJS module for interacting with RESTful server-side data sources", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "https://github.com/angular/angular.js.git" 12 | }, 13 | "keywords": [ 14 | "angular", 15 | "framework", 16 | "browser", 17 | "rest", 18 | "client-side" 19 | ], 20 | "author": "Angular Core Team ", 21 | "license": "MIT", 22 | "bugs": { 23 | "url": "https://github.com/angular/angular.js/issues" 24 | }, 25 | "homepage": "http://angularjs.org" 26 | } 27 | -------------------------------------------------------------------------------- /bower_components/cs_console/app/vendor/javascripts/codemirror/mode/rpm/changes/changes.js: -------------------------------------------------------------------------------- 1 | CodeMirror.defineMode("changes", function() { 2 | var headerSeperator = /^-+$/; 3 | var headerLine = /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ?\d{1,2} \d{2}:\d{2}(:\d{2})? [A-Z]{3,4} \d{4} - /; 4 | var simpleEmail = /^[\w+.-]+@[\w.-]+/; 5 | 6 | return { 7 | token: function(stream) { 8 | if (stream.sol()) { 9 | if (stream.match(headerSeperator)) { return 'tag'; } 10 | if (stream.match(headerLine)) { return 'tag'; } 11 | } 12 | if (stream.match(simpleEmail)) { return 'string'; } 13 | stream.next(); 14 | return null; 15 | } 16 | }; 17 | }); 18 | 19 | CodeMirror.defineMIME("text/x-rpm-changes", "changes"); 20 | -------------------------------------------------------------------------------- /public/images/icons/icon-mail.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /bower_components/codemirror/addon/edit/continuelist.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | 'use strict'; 3 | 4 | var listRE = /^(\s*)([*+-]|(\d+)\.)(\s*)/, 5 | unorderedBullets = '*+-'; 6 | 7 | CodeMirror.commands.newlineAndIndentContinueMarkdownList = function(cm) { 8 | var pos = cm.getCursor(), 9 | inList = cm.getStateAfter(pos.line).list, 10 | match; 11 | 12 | if (!inList || !(match = cm.getLine(pos.line).match(listRE))) { 13 | cm.execCommand('newlineAndIndent'); 14 | return; 15 | } 16 | 17 | var indent = match[1], after = match[4]; 18 | var bullet = unorderedBullets.indexOf(match[2]) >= 0 19 | ? match[2] 20 | : (parseInt(match[3], 10) + 1) + '.'; 21 | 22 | cm.replaceSelection('\n' + indent + bullet + after, 'end'); 23 | }; 24 | 25 | }()); 26 | -------------------------------------------------------------------------------- /client/javascripts/components/dispatcher/course.js: -------------------------------------------------------------------------------- 1 | // ************************************* 2 | // 3 | // Course 4 | // -> Dispatch events 5 | // 6 | // ************************************* 7 | 8 | JS.Pages.Course = function() { 9 | 10 | // ------------------------------------- 11 | // Modules 12 | // ------------------------------------- 13 | 14 | JS.Modules.Toggle.init({ 15 | $element : $('.js-courseLayout-toggle'), 16 | proximity : $('.js-courseLayout'), 17 | toggleClass : 'is-active' 18 | }); 19 | 20 | // ------------------------------------- 21 | // Local 22 | // ------------------------------------- 23 | 24 | // ----- Preloading ----- // 25 | 26 | $('.js-courseLayout').addClass('is-loaded'); 27 | $('.js-preload').addClass('is-hidden'); 28 | 29 | }; 30 | -------------------------------------------------------------------------------- /bower_components/jquery/src/exports/global.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core", 3 | "../var/strundefined" 4 | ], function( jQuery, strundefined ) { 5 | 6 | var 7 | // Map over jQuery in case of overwrite 8 | _jQuery = window.jQuery, 9 | 10 | // Map over the $ in case of overwrite 11 | _$ = window.$; 12 | 13 | jQuery.noConflict = function( deep ) { 14 | if ( window.$ === jQuery ) { 15 | window.$ = _$; 16 | } 17 | 18 | if ( deep && window.jQuery === jQuery ) { 19 | window.jQuery = _jQuery; 20 | } 21 | 22 | return jQuery; 23 | }; 24 | 25 | // Expose jQuery and $ identifiers, even in AMD 26 | // (#7102#comment:10, https://github.com/jquery/jquery/pull/557) 27 | // and CommonJS for browser emulators (#13566) 28 | if ( typeof noGlobal === strundefined ) { 29 | window.jQuery = window.$ = jQuery; 30 | } 31 | 32 | }); 33 | -------------------------------------------------------------------------------- /client/stylesheets/structures/_externalLink.sass: -------------------------------------------------------------------------------- 1 | // ************************************* 2 | // 3 | // External Link 4 | // -> Non-contextual hypertext 5 | // 6 | // ------------------------------------- 7 | // Template (Haml) 8 | // ------------------------------------- 9 | // 10 | // .externalLink 11 | // .externalLink-icon 12 | // 13 | // ************************************* 14 | 15 | .externalLink 16 | 17 | +state 18 | 19 | .externalLink-icon 20 | opacity: 0.5 21 | transform: translateX(#{$b-space-xs}) 22 | 23 | // ------------------------------------- 24 | // Scaffolding 25 | // ------------------------------------- 26 | 27 | .externalLink-icon 28 | display: inline-block 29 | opacity: 0 30 | position: relative 31 | top: - em(4px) // FIXME: Magic number! 32 | transition: $b-transition 33 | -------------------------------------------------------------------------------- /bower_components/mocha/README.md: -------------------------------------------------------------------------------- 1 | [![Build Status](https://api.travis-ci.org/mochajs/mocha.svg?branch=master)](http://travis-ci.org/mochajs/mocha) [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/mochajs/mocha?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) 2 | 3 | [![Mocha test framework](http://f.cl.ly/items/3l1k0n2A1U3M1I1L210p/Screen%20Shot%202012-02-24%20at%202.21.43%20PM.png)](http://mochajs.org) 4 | 5 | Mocha is a simple, flexible, fun JavaScript test framework for node.js and the browser. For more information view the [documentation](http://mochajs.org). 6 | 7 | ## Links 8 | 9 | - [Google Group](http://groups.google.com/group/mochajs) 10 | - [Wiki](https://github.com/mochajs/mocha/wiki) 11 | - Mocha [Extensions and reporters](https://github.com/mochajs/mocha/wiki) 12 | -------------------------------------------------------------------------------- /client/javascripts/components/services/injectSvg.js: -------------------------------------------------------------------------------- 1 | // ************************************* 2 | // 3 | // Inject SVG 4 | // -> Asynchronously append an SVG 5 | // 6 | // ************************************* 7 | // 8 | // @param assetPath { string } 9 | // 10 | // ************************************* 11 | 12 | JS.injectSvg = function (options) { 13 | var settings = $.extend({ 14 | assetPath : null 15 | }, options); 16 | 17 | $.get(settings.assetPath, function (data) { 18 | var $element = $(new XMLSerializer().serializeToString(data.documentElement)); 19 | 20 | $element.css({ display : 'none' }).appendTo('body'); 21 | }); 22 | } 23 | 24 | // ------------------------------------- 25 | // Usage 26 | // ------------------------------------- 27 | // 28 | // JS.injectSvg({ assetPath : '/path/to/file.svg' }); 29 | // 30 | -------------------------------------------------------------------------------- /bower_components/codemirror/mode/diff/diff.js: -------------------------------------------------------------------------------- 1 | CodeMirror.defineMode("diff", function() { 2 | 3 | var TOKEN_NAMES = { 4 | '+': 'positive', 5 | '-': 'negative', 6 | '@': 'meta' 7 | }; 8 | 9 | return { 10 | token: function(stream) { 11 | var tw_pos = stream.string.search(/[\t ]+?$/); 12 | 13 | if (!stream.sol() || tw_pos === 0) { 14 | stream.skipToEnd(); 15 | return ("error " + ( 16 | TOKEN_NAMES[stream.string.charAt(0)] || '')).replace(/ $/, ''); 17 | } 18 | 19 | var token_name = TOKEN_NAMES[stream.peek()] || stream.skipToEnd(); 20 | 21 | if (tw_pos === -1) { 22 | stream.skipToEnd(); 23 | } else { 24 | stream.pos = tw_pos; 25 | } 26 | 27 | return token_name; 28 | } 29 | }; 30 | }); 31 | 32 | CodeMirror.defineMIME("text/x-diff", "diff"); 33 | -------------------------------------------------------------------------------- /bower_components/codemirror/theme/elegant.css: -------------------------------------------------------------------------------- 1 | .cm-s-elegant span.cm-number, .cm-s-elegant span.cm-string, .cm-s-elegant span.cm-atom {color: #762;} 2 | .cm-s-elegant span.cm-comment {color: #262; font-style: italic; line-height: 1em;} 3 | .cm-s-elegant span.cm-meta {color: #555; font-style: italic; line-height: 1em;} 4 | .cm-s-elegant span.cm-variable {color: black;} 5 | .cm-s-elegant span.cm-variable-2 {color: #b11;} 6 | .cm-s-elegant span.cm-qualifier {color: #555;} 7 | .cm-s-elegant span.cm-keyword {color: #730;} 8 | .cm-s-elegant span.cm-builtin {color: #30a;} 9 | .cm-s-elegant span.cm-error {background-color: #fdd;} 10 | .cm-s-elegant span.cm-link {color: #762;} 11 | 12 | .cm-s-elegant .CodeMirror-activeline-background {background: #e8f2ff !important;} 13 | .cm-s-elegant .CodeMirror-matchingbracket {outline:1px solid grey; color:black !important;} 14 | -------------------------------------------------------------------------------- /bower_components/bootstrap/less/component-animations.less: -------------------------------------------------------------------------------- 1 | // 2 | // Component animations 3 | // -------------------------------------------------- 4 | 5 | // Heads up! 6 | // 7 | // We don't use the `.opacity()` mixin here since it causes a bug with text 8 | // fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552. 9 | 10 | .fade { 11 | opacity: 0; 12 | .transition(opacity .15s linear); 13 | &.in { 14 | opacity: 1; 15 | } 16 | } 17 | 18 | .collapse { 19 | display: none; 20 | 21 | &.in { display: block; } 22 | tr&.in { display: table-row; } 23 | tbody&.in { display: table-row-group; } 24 | } 25 | 26 | .collapsing { 27 | position: relative; 28 | height: 0; 29 | overflow: hidden; 30 | .transition-property(~"height, visibility"); 31 | .transition-duration(.35s); 32 | .transition-timing-function(ease); 33 | } 34 | -------------------------------------------------------------------------------- /bower_components/codemirror/addon/mode/multiplex_test.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | CodeMirror.defineMode("markdown_with_stex", function(){ 3 | var inner = CodeMirror.getMode({}, "stex"); 4 | var outer = CodeMirror.getMode({}, "markdown"); 5 | 6 | var innerOptions = { 7 | open: '$', 8 | close: '$', 9 | mode: inner, 10 | delimStyle: 'delim', 11 | innerStyle: 'inner' 12 | }; 13 | 14 | return CodeMirror.multiplexingMode(outer, innerOptions); 15 | }); 16 | 17 | var mode = CodeMirror.getMode({}, "markdown_with_stex"); 18 | 19 | function MT(name) { 20 | test.mode( 21 | name, 22 | mode, 23 | Array.prototype.slice.call(arguments, 1), 24 | 'multiplexing'); 25 | } 26 | 27 | MT( 28 | "stexInsideMarkdown", 29 | "[strong **Equation:**] [delim $][inner&tag \\pi][delim $]"); 30 | })(); 31 | -------------------------------------------------------------------------------- /bower_components/bootstrap/less/mixins/table-row.less: -------------------------------------------------------------------------------- 1 | // Tables 2 | 3 | .table-row-variant(@state; @background) { 4 | // Exact selectors below required to override `.table-striped` and prevent 5 | // inheritance to nested tables. 6 | .table > thead > tr, 7 | .table > tbody > tr, 8 | .table > tfoot > tr { 9 | > td.@{state}, 10 | > th.@{state}, 11 | &.@{state} > td, 12 | &.@{state} > th { 13 | background-color: @background; 14 | } 15 | } 16 | 17 | // Hover states for `.table-hover` 18 | // Note: this is not available for cells or rows within `thead` or `tfoot`. 19 | .table-hover > tbody > tr { 20 | > td.@{state}:hover, 21 | > th.@{state}:hover, 22 | &.@{state}:hover > td, 23 | &:hover > .@{state}, 24 | &.@{state}:hover > th { 25 | background-color: darken(@background, 5%); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /bower_components/codemirror/addon/hint/show-hint.css: -------------------------------------------------------------------------------- 1 | .CodeMirror-hints { 2 | position: absolute; 3 | z-index: 10; 4 | overflow: hidden; 5 | list-style: none; 6 | 7 | margin: 0; 8 | padding: 2px; 9 | 10 | -webkit-box-shadow: 2px 3px 5px rgba(0,0,0,.2); 11 | -moz-box-shadow: 2px 3px 5px rgba(0,0,0,.2); 12 | box-shadow: 2px 3px 5px rgba(0,0,0,.2); 13 | border-radius: 3px; 14 | border: 1px solid silver; 15 | 16 | background: white; 17 | font-size: 90%; 18 | font-family: monospace; 19 | 20 | max-height: 20em; 21 | overflow-y: auto; 22 | } 23 | 24 | .CodeMirror-hint { 25 | margin: 0; 26 | padding: 0 4px; 27 | border-radius: 2px; 28 | max-width: 19em; 29 | overflow: hidden; 30 | white-space: pre; 31 | color: black; 32 | cursor: pointer; 33 | } 34 | 35 | .CodeMirror-hint-active { 36 | background: #08f; 37 | color: white; 38 | } 39 | -------------------------------------------------------------------------------- /bower_components/marked/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "marked", 3 | "version": "0.3.3", 4 | "homepage": "https://github.com/chjj/marked", 5 | "authors": [ 6 | "Christopher Jeffrey " 7 | ], 8 | "description": "A markdown parser built for speed", 9 | "keywords": [ 10 | "markdown", 11 | "markup", 12 | "html" 13 | ], 14 | "main": "lib/marked.js", 15 | "license": "MIT", 16 | "ignore": [ 17 | "**/.*", 18 | "node_modules", 19 | "bower_components", 20 | "app/bower_components", 21 | "test", 22 | "tests" 23 | ], 24 | "_release": "0.3.3", 25 | "_resolution": { 26 | "type": "version", 27 | "tag": "v0.3.3", 28 | "commit": "2b5802f258c5e23e48366f2377fbb4c807f47658" 29 | }, 30 | "_source": "git://github.com/chjj/marked.git", 31 | "_target": "~0.3.3", 32 | "_originalSource": "marked" 33 | } -------------------------------------------------------------------------------- /bower_components/bootstrap/package.js: -------------------------------------------------------------------------------- 1 | // package metadata file for Meteor.js 2 | 3 | Package.describe({ 4 | name: 'twbs:bootstrap', // http://atmospherejs.com/twbs/bootstrap 5 | summary: 'The most popular front-end framework for developing responsive, mobile first projects on the web.', 6 | version: '3.3.4', 7 | git: 'https://github.com/twbs/bootstrap.git' 8 | }); 9 | 10 | Package.onUse(function (api) { 11 | api.versionsFrom('METEOR@1.0'); 12 | api.use('jquery', 'client'); 13 | api.addFiles([ 14 | 'dist/fonts/glyphicons-halflings-regular.eot', 15 | 'dist/fonts/glyphicons-halflings-regular.svg', 16 | 'dist/fonts/glyphicons-halflings-regular.ttf', 17 | 'dist/fonts/glyphicons-halflings-regular.woff', 18 | 'dist/fonts/glyphicons-halflings-regular.woff2', 19 | 'dist/css/bootstrap.css', 20 | 'dist/js/bootstrap.js', 21 | ], 'client'); 22 | }); 23 | -------------------------------------------------------------------------------- /bower_components/cs_console/test/test.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | QUnit Example 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 |
16 |
17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "JavaScript.com", 3 | "version": "0.0.0", 4 | "homepage": "https://github.com/codeschool/JavaScript.com", 5 | "authors": [ 6 | "Code School" 7 | ], 8 | "license": "MIT", 9 | "private": true, 10 | "ignore": [ 11 | "**/.*", 12 | "node_modules", 13 | "bower_components", 14 | "test", 15 | "tests" 16 | ], 17 | "dependencies": { 18 | "abecedary": "~0.0.5", 19 | "angular": "1.4.0-beta.6", 20 | "angular-animate": "1.4.0-beta.6", 21 | "angular-cookies": "1.4.0-beta.6", 22 | "angular-resource": "1.4.0-beta.6", 23 | "autosize": "~3.0.6", 24 | "bootstrap": "~3.3.4", 25 | "codemirror": "~3.16.0", 26 | "cs_console": "https://github.com/renz45/cs_console/archive/master.zip", 27 | "jquery": "~2.1.3", 28 | "lodash": "~3.5.0", 29 | "marked": "~0.3.3", 30 | "mocha": "~2.2.1" 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /bower_components/cs_console/app/vendor/javascripts/codemirror/mode/diff/diff.js: -------------------------------------------------------------------------------- 1 | CodeMirror.defineMode("diff", function() { 2 | 3 | var TOKEN_NAMES = { 4 | '+': 'positive', 5 | '-': 'negative', 6 | '@': 'meta' 7 | }; 8 | 9 | return { 10 | token: function(stream) { 11 | var tw_pos = stream.string.search(/[\t ]+?$/); 12 | 13 | if (!stream.sol() || tw_pos === 0) { 14 | stream.skipToEnd(); 15 | return ("error " + ( 16 | TOKEN_NAMES[stream.string.charAt(0)] || '')).replace(/ $/, ''); 17 | } 18 | 19 | var token_name = TOKEN_NAMES[stream.peek()] || stream.skipToEnd(); 20 | 21 | if (tw_pos === -1) { 22 | stream.skipToEnd(); 23 | } else { 24 | stream.pos = tw_pos; 25 | } 26 | 27 | return token_name; 28 | } 29 | }; 30 | }); 31 | 32 | CodeMirror.defineMIME("text/x-diff", "diff"); 33 | -------------------------------------------------------------------------------- /server/views/partials/_hero_console.jade: -------------------------------------------------------------------------------- 1 | .card.emblem.inlineConsole-card.hero-card.pal--m.tac 2 | img.emblem-item(src='/images/img-console.svg' alt='' width='72') 3 | 4 | .emblem-content 5 | h3.h.h--2.h--light Ready to try JavaScript? 6 | 7 | p.tfh.tss 8 | | Begin learning here by typing in your first name surrounded by 9 | | quotation marks, and ending with a semicolon. For example, you 10 | | could type the name 11 | code.inlineCode "Gregg"; 12 | | and then hit 13 | kbd.inlineCode enter 14 | | . 15 | 16 | form.inlineConsole.js-inlineConsole(action='') 17 | span.inlineConsole-icon.inlineConsole-icon--caret 18 | span.inlineConsole-icon.inlineConsole-icon--check 19 | input.form-input.inlineConsole-input.js-inlineConsole-input(type='text') 20 | a.btn.inlineConsole-btn.js-inlineConsole-btn(href='/try') Next Challenge 21 | -------------------------------------------------------------------------------- /public/images/icons/icon-check.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Imported Layers Copy 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /public/images/logo-mark-dotless.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /bower_components/bootstrap/grunt/bs-commonjs-generator.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | var fs = require('fs'); 3 | var path = require('path'); 4 | 5 | var COMMONJS_BANNER = '// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment.\n'; 6 | 7 | module.exports = function generateCommonJSModule(grunt, srcFiles, destFilepath) { 8 | var destDir = path.dirname(destFilepath); 9 | 10 | function srcPathToDestRequire(srcFilepath) { 11 | var requirePath = path.relative(destDir, srcFilepath).replace(/\\/g, '/'); 12 | return 'require(\'' + requirePath + '\')'; 13 | } 14 | 15 | var moduleOutputJs = COMMONJS_BANNER + srcFiles.map(srcPathToDestRequire).join('\n'); 16 | try { 17 | fs.writeFileSync(destFilepath, moduleOutputJs); 18 | } 19 | catch (err) { 20 | grunt.fail.warn(err); 21 | } 22 | grunt.log.writeln('File ' + destFilepath.cyan + ' created.'); 23 | }; 24 | -------------------------------------------------------------------------------- /client/stylesheets/structures/_emblem.sass: -------------------------------------------------------------------------------- 1 | // ************************************* 2 | // 3 | // Emblem 4 | // -> Fixed badge 5 | // 6 | // ------------------------------------- 7 | // Template (Haml) 8 | // ------------------------------------- 9 | // 10 | // .emblem 11 | // .emblem-item 12 | // 13 | // ************************************* 14 | 15 | .emblem 16 | position: relative 17 | 18 | // ------------------------------------- 19 | // Scaffolding 20 | // ------------------------------------- 21 | 22 | // ----- Content ----- // 23 | 24 | .emblem-content 25 | padding-top: $b-space-l 26 | 27 | +respond-to($g-m) 28 | padding-top: $b-space 29 | 30 | // ----- Item ----- // 31 | 32 | .emblem-item 33 | border-radius: 50% 34 | border: $b-borderWidth-xl $b-borderStyle $c-text-invert 35 | left: 50% 36 | position: absolute 37 | top: -2em // FIXME: Magic number! 38 | transform: translateX(-50%) 39 | -------------------------------------------------------------------------------- /server/controllers/courses.js: -------------------------------------------------------------------------------- 1 | var express = require('express'); 2 | var router = express.Router(); 3 | var path = require('path'); 4 | var Course = require(path.join(__dirname, '..', 'services', 'course')); 5 | 6 | router 7 | .get('/list.json', function(req, res) { 8 | res.json(Course.all()); 9 | }) 10 | .get('/:id.json', function(req, res) { 11 | var course = Course.find(req.params.id); 12 | 13 | if (course.error) { 14 | res.status(404).json(course); 15 | } else { 16 | res.json(course); 17 | } 18 | }) 19 | .get('/:id/challenges.json', function(req, res) { 20 | var course = Course.find(req.params.id); 21 | 22 | if (course.error) { 23 | res.status(404).json(course); 24 | } else { 25 | course.challenges[0].active = true; 26 | course.challenges[0].started = true; 27 | res.json(course.challenges); 28 | } 29 | }); 30 | 31 | module.exports = router; 32 | -------------------------------------------------------------------------------- /public/images/logo-mark.svg: -------------------------------------------------------------------------------- 1 | Artboard 1Created with Sketch. -------------------------------------------------------------------------------- /bower_components/jquery/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jquery", 3 | "version": "2.1.4", 4 | "main": "dist/jquery.js", 5 | "license": "MIT", 6 | "ignore": [ 7 | "**/.*", 8 | "build", 9 | "dist/cdn", 10 | "speed", 11 | "test", 12 | "*.md", 13 | "AUTHORS.txt", 14 | "Gruntfile.js", 15 | "package.json" 16 | ], 17 | "devDependencies": { 18 | "sizzle": "2.1.1-jquery.2.1.2", 19 | "requirejs": "2.1.10", 20 | "qunit": "1.14.0", 21 | "sinon": "1.8.1" 22 | }, 23 | "keywords": [ 24 | "jquery", 25 | "javascript", 26 | "library" 27 | ], 28 | "homepage": "https://github.com/jquery/jquery", 29 | "_release": "2.1.4", 30 | "_resolution": { 31 | "type": "version", 32 | "tag": "2.1.4", 33 | "commit": "7751e69b615c6eca6f783a81e292a55725af6b85" 34 | }, 35 | "_source": "git://github.com/jquery/jquery.git", 36 | "_target": "~2.1.3", 37 | "_originalSource": "jquery" 38 | } -------------------------------------------------------------------------------- /bower_components/bootstrap/less/close.less: -------------------------------------------------------------------------------- 1 | // 2 | // Close icons 3 | // -------------------------------------------------- 4 | 5 | 6 | .close { 7 | float: right; 8 | font-size: (@font-size-base * 1.5); 9 | font-weight: @close-font-weight; 10 | line-height: 1; 11 | color: @close-color; 12 | text-shadow: @close-text-shadow; 13 | .opacity(.2); 14 | 15 | &:hover, 16 | &:focus { 17 | color: @close-color; 18 | text-decoration: none; 19 | cursor: pointer; 20 | .opacity(.5); 21 | } 22 | 23 | // Additional properties for button version 24 | // iOS requires the button element instead of an anchor tag. 25 | // If you want the anchor version, it requires `href="#"`. 26 | // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile 27 | button& { 28 | padding: 0; 29 | cursor: pointer; 30 | background: transparent; 31 | border: 0; 32 | -webkit-appearance: none; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /bower_components/bootstrap/less/thumbnails.less: -------------------------------------------------------------------------------- 1 | // 2 | // Thumbnails 3 | // -------------------------------------------------- 4 | 5 | 6 | // Mixin and adjust the regular image class 7 | .thumbnail { 8 | display: block; 9 | padding: @thumbnail-padding; 10 | margin-bottom: @line-height-computed; 11 | line-height: @line-height-base; 12 | background-color: @thumbnail-bg; 13 | border: 1px solid @thumbnail-border; 14 | border-radius: @thumbnail-border-radius; 15 | .transition(border .2s ease-in-out); 16 | 17 | > img, 18 | a > img { 19 | &:extend(.img-responsive); 20 | margin-left: auto; 21 | margin-right: auto; 22 | } 23 | 24 | // Add a hover state for linked versions only 25 | a&:hover, 26 | a&:focus, 27 | a&.active { 28 | border-color: @link-color; 29 | } 30 | 31 | // Image captions 32 | .caption { 33 | padding: @thumbnail-caption-padding; 34 | color: @thumbnail-caption-color; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /public/images/icons/icon-external.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 10 | 11 | -------------------------------------------------------------------------------- /bower_components/abecedary/example/lib/javascript-logging/Gruntfile.js: -------------------------------------------------------------------------------- 1 | module.exports = function(grunt) { 2 | grunt.initConfig({ 3 | shell: { 4 | browserify: { 5 | command: 'browserify -r sinon -r chai -r javascript-sandbox -r jshint -o ../../build/sandbox_vendor.js' 6 | } 7 | }, 8 | concat: { 9 | '../../build/demos/javascript-logging.js': ['../../build/sandbox_vendor.js', 'node_modules/mocha/mocha.js', , '../../../dist/reporter.js'] 10 | }, 11 | watch: { 12 | scripts: { 13 | files: ['node_modules/abecedary/dist/reporter.js'], 14 | tasks: ['default'] 15 | } 16 | } 17 | }); 18 | 19 | // Load the npm installed tasks 20 | grunt.loadNpmTasks('grunt-contrib-concat'); 21 | grunt.loadNpmTasks('grunt-shell'); 22 | grunt.loadNpmTasks('grunt-contrib-watch'); 23 | 24 | // The default tasks to run when you type: grunt 25 | grunt.registerTask('default', ['shell:browserify', 'concat']); 26 | }; 27 | -------------------------------------------------------------------------------- /public/images/icons/icon-star.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | icon-star 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /client/stylesheets/structures/_link.sass: -------------------------------------------------------------------------------- 1 | // ************************************* 2 | // 3 | // Link 4 | // -> Actionable text 5 | // CodePen: http://codepen.io/drewbarontini/pen/qEJNPv 6 | // 7 | // ------------------------------------- 8 | // Template (Haml) 9 | // ------------------------------------- 10 | // 11 | // .link[bordered inverted|muted] 12 | // 13 | // ************************************* 14 | 15 | .link 16 | @extend %a 17 | 18 | // ------------------------------------- 19 | // Modifiers 20 | // ------------------------------------- 21 | 22 | // ----- Bordered ----- // 23 | 24 | .link--bordered 25 | border-bottom: $link-border currentColor 26 | 27 | // ----- Inverted ----- // 28 | 29 | .link--inverted 30 | color: $link--inverted-color 31 | 32 | +state 33 | color: $link--inverted--state-color 34 | 35 | // ----- State ----- // 36 | 37 | // Error 38 | 39 | .link--error 40 | color: $c-error 41 | 42 | +state 43 | color: shade($c-error, 10%) 44 | -------------------------------------------------------------------------------- /bower_components/codemirror/addon/runmode/colorize.js: -------------------------------------------------------------------------------- 1 | CodeMirror.colorize = (function() { 2 | 3 | var isBlock = /^(p|li|div|h\\d|pre|blockquote|td)$/; 4 | 5 | function textContent(node, out) { 6 | if (node.nodeType == 3) return out.push(node.nodeValue); 7 | for (var ch = node.firstChild; ch; ch = ch.nextSibling) { 8 | textContent(ch, out); 9 | if (isBlock.test(node.nodeType)) out.push("\n"); 10 | } 11 | } 12 | 13 | return function(collection, defaultMode) { 14 | if (!collection) collection = document.body.getElementsByTagName("pre"); 15 | 16 | for (var i = 0; i < collection.length; ++i) { 17 | var node = collection[i]; 18 | var mode = node.getAttribute("data-lang") || defaultMode; 19 | if (!mode) continue; 20 | 21 | var text = []; 22 | textContent(node, text); 23 | node.innerHTML = ""; 24 | CodeMirror.runMode(text.join(""), mode, node); 25 | 26 | node.className += " cm-s-default"; 27 | } 28 | }; 29 | })(); 30 | -------------------------------------------------------------------------------- /server/views/partials/_header.jade: -------------------------------------------------------------------------------- 1 | - headerPartial = headerPartial || {} 2 | - headerPartial.bleed = headerPartial.bleed || false 3 | - menu = { 'News' : '/news', 'Resources' : '/resources' } 4 | 5 | block current_nav 6 | 7 | header.row.header(class=(headerPartial.bleed ? 'bc-regent' : '' ) role='banner') 8 | .cell.well.well--s.well--m--m 9 | 10 | .split.split--middle 11 | .split-item 12 | .split-cell 13 | a.dib(href='/') 14 | img.dn--m(src='/images/logo-mark.svg' alt='JavaScript.com' width='54') 15 | img.dn.db--m(src='/images/logo.svg' alt='JavaScript.com' width='275') 16 | nav.split-cell(role='navigation') 17 | each url, title in menu 18 | if current_page == title 19 | a.underline.header-link.is-active(href=url class=(headerPartial.bleed ? 'underline--alt' : '' ))= title 20 | else 21 | a.underline.header-link(href=url class=(headerPartial.bleed ? 'underline--alt' : '' ))= title 22 | -------------------------------------------------------------------------------- /bower_components/codemirror/addon/lint/coffeescript-lint.js: -------------------------------------------------------------------------------- 1 | // Depends on coffeelint.js from http://www.coffeelint.org/js/coffeelint.js 2 | 3 | CodeMirror.registerHelper("lint", "coffeescript", function(text) { 4 | var found = []; 5 | var parseError = function(err) { 6 | var loc = err.lineNumber; 7 | found.push({from: CodeMirror.Pos(loc-1, 0), 8 | to: CodeMirror.Pos(loc, 0), 9 | severity: err.level, 10 | message: err.message}); 11 | }; 12 | try { 13 | var res = coffeelint.lint(text); 14 | for(var i = 0; i < res.length; i++) { 15 | parseError(res[i]); 16 | } 17 | } catch(e) { 18 | found.push({from: CodeMirror.Pos(e.location.first_line, 0), 19 | to: CodeMirror.Pos(e.location.last_line, e.location.last_column), 20 | severity: 'error', 21 | message: e.message}); 22 | } 23 | return found; 24 | }); 25 | CodeMirror.coffeeValidator = CodeMirror.lint.coffeescript; // deprecated 26 | -------------------------------------------------------------------------------- /client/stylesheets/components/_pillar.sass: -------------------------------------------------------------------------------- 1 | // ************************************* 2 | // 3 | // Pillar 4 | // -> Vertically capped container 5 | // 6 | // ------------------------------------- 7 | // Template (Haml) 8 | // ------------------------------------- 9 | // 10 | // .pillar 11 | // / ... 12 | // 13 | // ************************************* 14 | 15 | .pillar 16 | border-bottom: $b-border 17 | border-top: $b-border 18 | padding-bottom: $b-space 19 | padding-top: $b-space 20 | 21 | // ------------------------------------- 22 | // Modifiers 23 | // ------------------------------------- 24 | 25 | // ----- Weights ----- // 26 | 27 | // Thin 28 | 29 | .pillar--thin 30 | border-bottom: $b-border-s 31 | border-top: $b-border-s 32 | 33 | // Thick 34 | 35 | .pillar--thick 36 | border-bottom: $b-border-l 37 | border-top: $b-border-l 38 | 39 | // ----- Sizes ----- // 40 | 41 | // Large 42 | 43 | .pillar--l 44 | padding-bottom: $b-space-l 45 | padding-top: $b-space-l 46 | -------------------------------------------------------------------------------- /bower_components/abecedary/example/lib/javascript/tests.js: -------------------------------------------------------------------------------- 1 | module.exports = 'var assert = require(\'chai\').assert,\n Sandbox = require(\'javascript-sandbox\'),\n jshint = require(\'jshint\').JSHINT;\n\ndescribe(\'add\', function() {\n var sandbox;\n\n beforeEach(function() {\n try {\n sandbox = new Sandbox();\n sandbox.evaluate(code);\n } catch(e) {}\n });\n \n afterEach(function() {\n sandbox.destroy();\n });\n\n it("Looks like there\'s a syntax error in your code.", function() {\n if(!jshint(code)) { throw jshint.errors[0]; }\n });\n\n it(\'Be sure to define a function named `add`.\', function() {\n assert(typeof sandbox.get(\'add\') === \'function\');\n });\n\n it(\'Your `add` function should take in two arguments.\', function() {\n assert(sandbox.get(\'add\').length === 2);\n });\n \n it(\'`add` should return the result of adding the two arguments.\', function() {\n var result = sandbox.exec(function() { return this.add(40,2) });\n assert(result === 42);\n });\n});'; -------------------------------------------------------------------------------- /client/javascripts/components/dispatcher/news.js: -------------------------------------------------------------------------------- 1 | // ************************************* 2 | // 3 | // News 4 | // -> Dispatch events 5 | // 6 | // ************************************* 7 | 8 | JS.Pages.News = function() { 9 | 10 | // ------------------------------------- 11 | // Classes 12 | // ------------------------------------- 13 | 14 | new JS.Classes.FormValidator(); 15 | 16 | // ------------------------------------- 17 | // Modules 18 | // ------------------------------------- 19 | 20 | JS.Modules.LoadStories.init(); 21 | JS.Modules.SaveProgress.init(); 22 | 23 | // ------------------------------------- 24 | // Services 25 | // ------------------------------------- 26 | 27 | JS.Services.expel({ 28 | $toggle : $('.js-alert-close'), 29 | elementNode : '.js-alert' 30 | }); 31 | 32 | // ------------------------------------- 33 | // Vendor 34 | // ------------------------------------- 35 | 36 | autosize($(JS.Globals.Vendor.autosizeQuery)); 37 | 38 | }; 39 | -------------------------------------------------------------------------------- /public/images/icons/icon-submit.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | icon-submit 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /public/images/img-feedback.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /bower_components/bootstrap/less/utilities.less: -------------------------------------------------------------------------------- 1 | // 2 | // Utility classes 3 | // -------------------------------------------------- 4 | 5 | 6 | // Floats 7 | // ------------------------- 8 | 9 | .clearfix { 10 | .clearfix(); 11 | } 12 | .center-block { 13 | .center-block(); 14 | } 15 | .pull-right { 16 | float: right !important; 17 | } 18 | .pull-left { 19 | float: left !important; 20 | } 21 | 22 | 23 | // Toggling content 24 | // ------------------------- 25 | 26 | // Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1 27 | .hide { 28 | display: none !important; 29 | } 30 | .show { 31 | display: block !important; 32 | } 33 | .invisible { 34 | visibility: hidden; 35 | } 36 | .text-hide { 37 | .text-hide(); 38 | } 39 | 40 | 41 | // Hide from screenreaders and browsers 42 | // 43 | // Credit: HTML5 Boilerplate 44 | 45 | .hidden { 46 | display: none !important; 47 | } 48 | 49 | 50 | // For Affix plugin 51 | // ------------------------- 52 | 53 | .affix { 54 | position: fixed; 55 | } 56 | -------------------------------------------------------------------------------- /client/javascripts/components/dispatcher/home.js: -------------------------------------------------------------------------------- 1 | // ************************************* 2 | // 3 | // Home 4 | // -> Dispatch events 5 | // 6 | // ************************************* 7 | 8 | JS.Pages.Home = function() { 9 | 10 | // ------------------------------------- 11 | // Modules 12 | // ------------------------------------- 13 | 14 | JS.Modules.Console.init(); 15 | JS.Modules.Video.init({ vendor: true, ytVideo: true }); 16 | 17 | // ------------------------------------- 18 | // Services 19 | // ------------------------------------- 20 | 21 | JS.Services.expel({ 22 | $toggle : $('.js-alert-close'), 23 | elementNode : '.js-alert' 24 | }); 25 | 26 | // ------------------------------------- 27 | // Local 28 | // ------------------------------------- 29 | 30 | $('.js-inlineConsole-btn').on('click', function(event) { 31 | var name = $('.js-inlineConsole-input').val().replace(/['";]/g, ''); 32 | 33 | document.cookie = JS.Globals.userNameCookie + '=' + name; 34 | }); 35 | 36 | }; 37 | -------------------------------------------------------------------------------- /bower_components/cs_console/app/vendor/javascripts/codemirror/mode/vbscript/vbscript.js: -------------------------------------------------------------------------------- 1 | CodeMirror.defineMode("vbscript", function() { 2 | var regexVBScriptKeyword = /^(?:Call|Case|CDate|Clear|CInt|CLng|Const|CStr|Description|Dim|Do|Each|Else|ElseIf|End|Err|Error|Exit|False|For|Function|If|LCase|Loop|LTrim|Next|Nothing|Now|Number|On|Preserve|Quit|ReDim|Resume|RTrim|Select|Set|Sub|Then|To|Trim|True|UBound|UCase|Until|VbCr|VbCrLf|VbLf|VbTab)$/im; 3 | 4 | return { 5 | token: function(stream) { 6 | if (stream.eatSpace()) return null; 7 | var ch = stream.next(); 8 | if (ch == "'") { 9 | stream.skipToEnd(); 10 | return "comment"; 11 | } 12 | if (ch == '"') { 13 | stream.skipTo('"'); 14 | return "string"; 15 | } 16 | 17 | if (/\w/.test(ch)) { 18 | stream.eatWhile(/\w/); 19 | if (regexVBScriptKeyword.test(stream.current())) return "keyword"; 20 | } 21 | return null; 22 | } 23 | }; 24 | }); 25 | 26 | CodeMirror.defineMIME("text/vbscript", "vbscript"); 27 | -------------------------------------------------------------------------------- /client/stylesheets/structures/_label.sass: -------------------------------------------------------------------------------- 1 | // ************************************* 2 | // 3 | // Label 4 | // -> Supplementary text 5 | // 6 | // ------------------------------------- 7 | // Template (Haml) 8 | // ------------------------------------- 9 | // 10 | // .label 11 | // 12 | // ************************************* 13 | 14 | .label 15 | color: $c-subdue 16 | display: block 17 | font-family: $b-fontFamily-heading 18 | font-weight: $b-fontWeight-semibold 19 | margin-bottom: 0 20 | 21 | // ------------------------------------- 22 | // Modifiers 23 | // ------------------------------------- 24 | 25 | // ----- Highlight ----- // 26 | 27 | .label--highlight 28 | color: $c-highlight 29 | 30 | // ----- Subdued ----- // 31 | 32 | .label--subdued 33 | color: $c-subdue 34 | 35 | // ------------------------------------- 36 | // State 37 | // ------------------------------------- 38 | 39 | // ----- Success ----- // 40 | 41 | .label.is-success 42 | color: $c-success 43 | 44 | &::before 45 | content: '✓' 46 | padding-right: $b-space-xs 47 | -------------------------------------------------------------------------------- /client/javascriptcom/services/jsSuccessCloud.factory.js: -------------------------------------------------------------------------------- 1 | angular.module('javascriptcom').factory('jsSuccessCloud', ['jsChallengeProgress', function(jsChallengeProgress) { 2 | return { 3 | trigger: function() { 4 | var iconMarkup = '', delay,scale, xOffset, zIndex; 5 | 6 | for (var i = 0; i < 12; i++) { 7 | xOffset = _.random(18, 82) 8 | scale = _.random(0.5, 1.4) 9 | zIndex = scale < 1 ? -1 : 1; 10 | delay = _.random(0, 0.5) 11 | 12 | iconMarkup += "
"; 13 | } 14 | 15 | $('body').append("

Success!

" + iconMarkup + "
"); 16 | 17 | setTimeout(function() { 18 | $('.js-message').remove(); 19 | }, 2000); 20 | } 21 | } 22 | }]); 23 | -------------------------------------------------------------------------------- /bower_components/jquery/src/attributes/support.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../var/support" 3 | ], function( support ) { 4 | 5 | (function() { 6 | var input = document.createElement( "input" ), 7 | select = document.createElement( "select" ), 8 | opt = select.appendChild( document.createElement( "option" ) ); 9 | 10 | input.type = "checkbox"; 11 | 12 | // Support: iOS<=5.1, Android<=4.2+ 13 | // Default value for a checkbox should be "on" 14 | support.checkOn = input.value !== ""; 15 | 16 | // Support: IE<=11+ 17 | // Must access selectedIndex to make default options select 18 | support.optSelected = opt.selected; 19 | 20 | // Support: Android<=2.3 21 | // Options inside disabled selects are incorrectly marked as disabled 22 | select.disabled = true; 23 | support.optDisabled = !opt.disabled; 24 | 25 | // Support: IE<=11+ 26 | // An input loses its value after becoming a radio 27 | input = document.createElement( "input" ); 28 | input.value = "t"; 29 | input.type = "radio"; 30 | support.radioValue = input.value === "t"; 31 | })(); 32 | 33 | return support; 34 | 35 | }); 36 | -------------------------------------------------------------------------------- /client/stylesheets/structures/_header.sass: -------------------------------------------------------------------------------- 1 | // ************************************* 2 | // 3 | // Header 4 | // -> Primary brand and navigation 5 | // 6 | // ------------------------------------- 7 | // Template (Haml) 8 | // ------------------------------------- 9 | // 10 | // .header 11 | // 12 | // %a.header-link 13 | // 14 | // ************************************* 15 | 16 | .header 17 | background: $header-background 18 | height: $site-header-height 19 | 20 | +respond-to($g-m) 21 | height: $site-header-height-l 22 | 23 | // ------------------------------------- 24 | // Scaffolding 25 | // ------------------------------------- 26 | 27 | // ----- Link ----- // 28 | 29 | .header-link 30 | border-bottom: $b-borderWidth $b-borderStyle transparent 31 | color: $c-text-invert 32 | font-family: $b-fontFamily-heading 33 | margin-right: $b-space 34 | 35 | +respond-to($g-m) 36 | margin-right: $b-space-l 37 | 38 | +state('is-active') 39 | border-bottom-color: $c-text-invert 40 | color: $c-text-invert 41 | 42 | &:last-child 43 | margin-right: 0 44 | -------------------------------------------------------------------------------- /bower_components/autosize/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "autosize", 3 | "description": "Autosize is a small, stand-alone script to automatically adjust textarea height to fit text.", 4 | "dependencies": {}, 5 | "keywords": [ 6 | "textarea", 7 | "form", 8 | "ui" 9 | ], 10 | "authors": [ 11 | { 12 | "name": "Jack Moore", 13 | "url": "http://www.jacklmoore.com", 14 | "email": "hello@jacklmoore.com" 15 | } 16 | ], 17 | "license": "MIT", 18 | "homepage": "http://www.jacklmoore.com/autosize", 19 | "ignore": [], 20 | "repository": { 21 | "type": "git", 22 | "url": "http://github.com/jackmoore/autosize.git" 23 | }, 24 | "main": "dist/autosize.js", 25 | "moduleType": [ 26 | "amd", 27 | "node" 28 | ], 29 | "version": "3.0.6", 30 | "_release": "3.0.6", 31 | "_resolution": { 32 | "type": "version", 33 | "tag": "3.0.6", 34 | "commit": "e515a2fa78c7eb1b5fe59a389fc2e19c37d4613f" 35 | }, 36 | "_source": "git://github.com/jackmoore/autosize.git", 37 | "_target": "~3.0.6", 38 | "_originalSource": "autosize" 39 | } -------------------------------------------------------------------------------- /bower_components/bootstrap/less/media.less: -------------------------------------------------------------------------------- 1 | .media { 2 | // Proper spacing between instances of .media 3 | margin-top: 15px; 4 | 5 | &:first-child { 6 | margin-top: 0; 7 | } 8 | } 9 | 10 | .media, 11 | .media-body { 12 | zoom: 1; 13 | overflow: hidden; 14 | } 15 | 16 | .media-body { 17 | width: 10000px; 18 | } 19 | 20 | .media-object { 21 | display: block; 22 | } 23 | 24 | .media-right, 25 | .media > .pull-right { 26 | padding-left: 10px; 27 | } 28 | 29 | .media-left, 30 | .media > .pull-left { 31 | padding-right: 10px; 32 | } 33 | 34 | .media-left, 35 | .media-right, 36 | .media-body { 37 | display: table-cell; 38 | vertical-align: top; 39 | } 40 | 41 | .media-middle { 42 | vertical-align: middle; 43 | } 44 | 45 | .media-bottom { 46 | vertical-align: bottom; 47 | } 48 | 49 | // Reset margins on headings for tighter default spacing 50 | .media-heading { 51 | margin-top: 0; 52 | margin-bottom: 5px; 53 | } 54 | 55 | // Media list variation 56 | // 57 | // Undo default ul/ol styles 58 | .media-list { 59 | padding-left: 0; 60 | list-style: none; 61 | } 62 | -------------------------------------------------------------------------------- /client/javascripts/components/services/expel.js: -------------------------------------------------------------------------------- 1 | // ************************************* 2 | // 3 | // Expel 4 | // -> Pest control 5 | // 6 | // ************************************* 7 | // 8 | // @param $toggle { jQuery object } 9 | // @param elementNode { string } 10 | // 11 | // ************************************* 12 | 13 | JS.Services.expel = function(options) { 14 | var settings = $.extend({ 15 | $toggle : $('.js-expel-toggle'), 16 | elementNode : '.js-expel', 17 | expelClass : 'is-dismissed' 18 | }, options); 19 | 20 | settings.$toggle.on('click', function(event) { 21 | event.preventDefault(); 22 | 23 | var element = $(this); 24 | 25 | element 26 | .closest(settings.elementNode) 27 | .addClass(settings.expelClass); 28 | 29 | setTimeout(function() { 30 | element 31 | .closest(settings.elementNode) 32 | .remove(); 33 | }, 500); 34 | }); 35 | }; 36 | 37 | // ------------------------------------- 38 | // Usage 39 | // ------------------------------------- 40 | // 41 | // JS.Services.expel(); 42 | // 43 | -------------------------------------------------------------------------------- /bower_components/abecedary/example/lib/javascript/tests.html: -------------------------------------------------------------------------------- 1 | var assert = require('chai').assert, 2 | Sandbox = require('javascript-sandbox'), 3 | jshint = require('jshint').JSHINT; 4 | 5 | describe('add', function() { 6 | var sandbox; 7 | 8 | beforeEach(function() { 9 | try { 10 | sandbox = new Sandbox(); 11 | sandbox.evaluate(code); 12 | } catch(e) {} 13 | }); 14 | 15 | afterEach(function() { 16 | sandbox.destroy(); 17 | }); 18 | 19 | it("Looks like there's a syntax error in your code.", function() { 20 | if(!jshint(code)) { throw jshint.errors[0]; } 21 | }); 22 | 23 | it('Be sure to define a function named `add`.', function() { 24 | assert(typeof sandbox.get('add') === 'function'); 25 | }); 26 | 27 | it('Your `add` function should take in two arguments.', function() { 28 | assert(sandbox.get('add').length === 2); 29 | }); 30 | 31 | it('`add` should return the result of adding the two arguments.', function() { 32 | var result = sandbox.exec(function() { return this.add(40,2) }); 33 | assert(result === 42); 34 | }); 35 | }); -------------------------------------------------------------------------------- /bower_components/bootstrap/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "bootstrap", 3 | "description": "The most popular front-end framework for developing responsive, mobile first projects on the web.", 4 | "version": "3.3.4", 5 | "keywords": [ 6 | "css", 7 | "js", 8 | "less", 9 | "mobile-first", 10 | "responsive", 11 | "front-end", 12 | "framework", 13 | "web" 14 | ], 15 | "homepage": "http://getbootstrap.com", 16 | "main": [ 17 | "less/bootstrap.less", 18 | "dist/css/bootstrap.css", 19 | "dist/js/bootstrap.js", 20 | "dist/fonts/glyphicons-halflings-regular.eot", 21 | "dist/fonts/glyphicons-halflings-regular.svg", 22 | "dist/fonts/glyphicons-halflings-regular.ttf", 23 | "dist/fonts/glyphicons-halflings-regular.woff", 24 | "dist/fonts/glyphicons-halflings-regular.woff2" 25 | ], 26 | "ignore": [ 27 | "/.*", 28 | "_config.yml", 29 | "CNAME", 30 | "composer.json", 31 | "CONTRIBUTING.md", 32 | "docs", 33 | "js/tests", 34 | "test-infra" 35 | ], 36 | "dependencies": { 37 | "jquery": ">= 1.9.1" 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /bower_components/abecedary/example/lib/javascript-logging/tests.js: -------------------------------------------------------------------------------- 1 | module.exports = 'var assert = require(\'chai\').assert,\n sinon = require(\'sinon\'),\n Sandbox = require(\'javascript-sandbox\'),\n jshint = require(\'jshint\').JSHINT;\n\ndescribe(\'console.log\', function() {\n var sandbox, consoleLogStub;\n\n beforeEach(function() {\n try {\n consoleLogStub = sinon.spy();\n sandbox = new Sandbox({\n variables: {\n \'console.log\': consoleLogStub\n }\n });\n sandbox.evaluate(code);\n } catch(e) {}\n });\n \n afterEach(function() {\n try {\n sandbox.destroy();\n } catch(e) {}\n });\n\n details(\'console.log\', function() {\n return consoleLogStub.args;\n });\n\n it("Looks like there\'s a syntax error in your code.", function() {\n if(!jshint(code)) { throw jshint.errors[0]; }\n });\n\n it("Did not call `console.log`, passing in a message.", function() {\n assert(consoleLogStub.callCount > 0);\n });\n\n it("Did not pass in the message `Hello, World!` to `console.log`.", function() {\n assert(consoleLogStub.calledWith(\'Hello, World!\'));\n });\n});'; -------------------------------------------------------------------------------- /bower_components/jquery/src/exports/amd.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core" 3 | ], function( jQuery ) { 4 | 5 | // Register as a named AMD module, since jQuery can be concatenated with other 6 | // files that may use define, but not via a proper concatenation script that 7 | // understands anonymous AMD modules. A named AMD is safest and most robust 8 | // way to register. Lowercase jquery is used because AMD module names are 9 | // derived from file names, and jQuery is normally delivered in a lowercase 10 | // file name. Do this after creating the global so that if an AMD module wants 11 | // to call noConflict to hide this version of jQuery, it will work. 12 | 13 | // Note that for maximum portability, libraries that are not jQuery should 14 | // declare themselves as anonymous modules, and avoid setting a global if an 15 | // AMD loader is present. jQuery is a special case. For more information, see 16 | // https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon 17 | 18 | if ( typeof define === "function" && define.amd ) { 19 | define( "jquery", [], function() { 20 | return jQuery; 21 | }); 22 | } 23 | 24 | }); 25 | -------------------------------------------------------------------------------- /bower_components/bootstrap/less/pager.less: -------------------------------------------------------------------------------- 1 | // 2 | // Pager pagination 3 | // -------------------------------------------------- 4 | 5 | 6 | .pager { 7 | padding-left: 0; 8 | margin: @line-height-computed 0; 9 | list-style: none; 10 | text-align: center; 11 | &:extend(.clearfix all); 12 | li { 13 | display: inline; 14 | > a, 15 | > span { 16 | display: inline-block; 17 | padding: 5px 14px; 18 | background-color: @pager-bg; 19 | border: 1px solid @pager-border; 20 | border-radius: @pager-border-radius; 21 | } 22 | 23 | > a:hover, 24 | > a:focus { 25 | text-decoration: none; 26 | background-color: @pager-hover-bg; 27 | } 28 | } 29 | 30 | .next { 31 | > a, 32 | > span { 33 | float: right; 34 | } 35 | } 36 | 37 | .previous { 38 | > a, 39 | > span { 40 | float: left; 41 | } 42 | } 43 | 44 | .disabled { 45 | > a, 46 | > a:hover, 47 | > a:focus, 48 | > span { 49 | color: @pager-disabled-color; 50 | background-color: @pager-bg; 51 | cursor: @cursor-disabled; 52 | } 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /bower_components/jquery/src/core/parseHTML.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core", 3 | "./var/rsingleTag", 4 | "../manipulation" // buildFragment 5 | ], function( jQuery, rsingleTag ) { 6 | 7 | // data: string of html 8 | // context (optional): If specified, the fragment will be created in this context, defaults to document 9 | // keepScripts (optional): If true, will include scripts passed in the html string 10 | jQuery.parseHTML = function( data, context, keepScripts ) { 11 | if ( !data || typeof data !== "string" ) { 12 | return null; 13 | } 14 | if ( typeof context === "boolean" ) { 15 | keepScripts = context; 16 | context = false; 17 | } 18 | context = context || document; 19 | 20 | var parsed = rsingleTag.exec( data ), 21 | scripts = !keepScripts && []; 22 | 23 | // Single tag 24 | if ( parsed ) { 25 | return [ context.createElement( parsed[1] ) ]; 26 | } 27 | 28 | parsed = jQuery.buildFragment( [ data ], context, scripts ); 29 | 30 | if ( scripts && scripts.length ) { 31 | jQuery( scripts ).remove(); 32 | } 33 | 34 | return jQuery.merge( [], parsed.childNodes ); 35 | }; 36 | 37 | return jQuery.parseHTML; 38 | 39 | }); 40 | -------------------------------------------------------------------------------- /bower_components/cs_console/app/vendor/javascripts/codemirror/mode/pascal/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2011 souceLair 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 4 | 5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 8 | -------------------------------------------------------------------------------- /bower_components/jquery/src/manipulation/support.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../var/support" 3 | ], function( support ) { 4 | 5 | (function() { 6 | var fragment = document.createDocumentFragment(), 7 | div = fragment.appendChild( document.createElement( "div" ) ), 8 | input = document.createElement( "input" ); 9 | 10 | // Support: Safari<=5.1 11 | // Check state lost if the name is set (#11217) 12 | // Support: Windows Web Apps (WWA) 13 | // `name` and `type` must use .setAttribute for WWA (#14901) 14 | input.setAttribute( "type", "radio" ); 15 | input.setAttribute( "checked", "checked" ); 16 | input.setAttribute( "name", "t" ); 17 | 18 | div.appendChild( input ); 19 | 20 | // Support: Safari<=5.1, Android<4.2 21 | // Older WebKit doesn't clone checked state correctly in fragments 22 | support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; 23 | 24 | // Support: IE<=11+ 25 | // Make sure textarea (and checkbox) defaultValue is properly cloned 26 | div.innerHTML = ""; 27 | support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; 28 | })(); 29 | 30 | return support; 31 | 32 | }); 33 | -------------------------------------------------------------------------------- /bower_components/codemirror/addon/scroll/scrollpastend.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | "use strict"; 3 | 4 | CodeMirror.defineOption("scrollPastEnd", false, function(cm, val, old) { 5 | if (old && old != CodeMirror.Init) { 6 | cm.off("change", onChange); 7 | cm.display.lineSpace.parentNode.style.paddingBottom = ""; 8 | cm.state.scrollPastEndPadding = null; 9 | } 10 | if (val) { 11 | cm.on("change", onChange); 12 | updateBottomMargin(cm); 13 | } 14 | }); 15 | 16 | function onChange(cm, change) { 17 | if (CodeMirror.changeEnd(change).line == cm.lastLine()) 18 | updateBottomMargin(cm); 19 | } 20 | 21 | function updateBottomMargin(cm) { 22 | var padding = ""; 23 | if (cm.lineCount() > 1) { 24 | var totalH = cm.display.scroller.clientHeight - 30, 25 | lastLineH = cm.getLineHandle(cm.lastLine()).height; 26 | padding = (totalH - lastLineH) + "px"; 27 | } 28 | if (cm.state.scrollPastEndPadding != padding) { 29 | cm.state.scrollPastEndPadding = padding; 30 | cm.display.lineSpace.parentNode.style.paddingBottom = padding; 31 | cm.setSize(); 32 | } 33 | } 34 | })(); 35 | -------------------------------------------------------------------------------- /bower_components/cs_console/app/vendor/stylesheets/codemirror/theme/cobalt.css: -------------------------------------------------------------------------------- 1 | .cm-s-cobalt { background: #002240; color: white; } 2 | .cm-s-cobalt div.CodeMirror-selected { background: #b36539 !important; } 3 | .cm-s-cobalt .CodeMirror-gutters { background: #002240; border-right: 1px solid #aaa; } 4 | .cm-s-cobalt .CodeMirror-linenumber { color: #d0d0d0; } 5 | .cm-s-cobalt .CodeMirror-cursor { border-left: 1px solid white !important; } 6 | 7 | .cm-s-cobalt span.cm-comment { color: #08f; } 8 | .cm-s-cobalt span.cm-atom { color: #845dc4; } 9 | .cm-s-cobalt span.cm-number, .cm-s-cobalt span.cm-attribute { color: #ff80e1; } 10 | .cm-s-cobalt span.cm-keyword { color: #ffee80; } 11 | .cm-s-cobalt span.cm-string { color: #3ad900; } 12 | .cm-s-cobalt span.cm-meta { color: #ff9d00; } 13 | .cm-s-cobalt span.cm-variable-2, .cm-s-cobalt span.cm-tag { color: #9effff; } 14 | .cm-s-cobalt span.cm-variable-3, .cm-s-cobalt span.cm-def { color: white; } 15 | .cm-s-cobalt span.cm-error { color: #9d1e15; } 16 | .cm-s-cobalt span.cm-bracket { color: #d8d8d8; } 17 | .cm-s-cobalt span.cm-builtin, .cm-s-cobalt span.cm-special { color: #ff9e59; } 18 | .cm-s-cobalt span.cm-link { color: #845dc4; } 19 | -------------------------------------------------------------------------------- /bower_components/cs_console/Gemfile.lock: -------------------------------------------------------------------------------- 1 | GEM 2 | remote: https://rubygems.org/ 3 | specs: 4 | activesupport (3.0.0) 5 | chunky_png (1.2.8) 6 | coderay (1.0.9) 7 | coffee-script (2.2.0) 8 | coffee-script-source 9 | execjs 10 | coffee-script-source (1.6.2) 11 | compass (0.12.2) 12 | chunky_png (~> 1.2) 13 | fssm (>= 0.2.7) 14 | sass (~> 3.1) 15 | execjs (1.4.0) 16 | multi_json (~> 1.0) 17 | fssm (0.2.10) 18 | i18n (0.6.4) 19 | json (1.8.0) 20 | method_source (0.8.1) 21 | multi_json (1.7.3) 22 | pry (0.9.12.2) 23 | coderay (~> 1.0.5) 24 | method_source (~> 0.8) 25 | slop (~> 3.4) 26 | rack (1.5.2) 27 | rake (0.9.6) 28 | rake-pipeline (0.7.0) 29 | json 30 | rake (~> 0.9.0) 31 | thor 32 | rake-pipeline-web-filters (0.7.0) 33 | rack 34 | rake-pipeline (~> 0.6) 35 | sass (3.2.9) 36 | slop (3.4.5) 37 | thor (0.18.1) 38 | 39 | PLATFORMS 40 | ruby 41 | 42 | DEPENDENCIES 43 | activesupport 44 | coffee-script 45 | compass 46 | i18n 47 | pry 48 | rake-pipeline 49 | rake-pipeline-web-filters 50 | sass 51 | thor 52 | -------------------------------------------------------------------------------- /bower_components/marked/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2011-2014, Christopher Jeffrey (https://github.com/chjj/) 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 | -------------------------------------------------------------------------------- /bower_components/bootstrap/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2011-2015 Twitter, Inc 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 | -------------------------------------------------------------------------------- /bower_components/cs_console/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2013 Adam Rensel, Code School LLC 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. -------------------------------------------------------------------------------- /bower_components/jquery/MIT-LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright 2014 jQuery Foundation and other contributors 2 | http://jquery.com/ 3 | 4 | Permission is hereby granted, free of charge, to any person obtaining 5 | a copy of this software and associated documentation files (the 6 | "Software"), to deal in the Software without restriction, including 7 | without limitation the rights to use, copy, modify, merge, publish, 8 | distribute, sublicense, and/or sell copies of the Software, and to 9 | permit persons to whom the Software is furnished to do so, subject to 10 | the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be 13 | included in all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 17 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 18 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 19 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 20 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 21 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /bower_components/mocha/LICENSE: -------------------------------------------------------------------------------- 1 | (The MIT License) 2 | 3 | Copyright (c) 2011-2015 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. 23 | -------------------------------------------------------------------------------- /bower_components/mocha/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mocha", 3 | "version": "2.2.4", 4 | "homepage": "http://mocha.github.io/mocha", 5 | "description": "simple, flexible, fun test framework", 6 | "authors": [ 7 | "TJ Holowaychuk ", 8 | "Joshua Appelman ", 9 | "Oleg Gaidarenko ", 10 | "Christoffer Hallas ", 11 | "Christopher Hiller ", 12 | "Travis Jeffery ", 13 | "Johnathan Ong ", 14 | "Guillermo Rauch " 15 | ], 16 | "repository": { 17 | "type": "git", 18 | "url": "git://github.com/mochajs/mocha.git" 19 | }, 20 | "main": [ 21 | "mocha.js", 22 | "mocha.css" 23 | ], 24 | "ignore": [ 25 | "bin", 26 | "editors", 27 | "images", 28 | "lib", 29 | "support", 30 | "test", 31 | ".gitignore", 32 | ".npmignore", 33 | ".travis.yml", 34 | "component.json", 35 | "index.js", 36 | "Makefile", 37 | "package.json" 38 | ], 39 | "keywords": [ 40 | "mocha", 41 | "test", 42 | "bdd", 43 | "tdd", 44 | "tap" 45 | ], 46 | "license": "MIT" 47 | } -------------------------------------------------------------------------------- /bower_components/cs_console/app/vendor/javascripts/codemirror/mode/rst/LICENSE.txt: -------------------------------------------------------------------------------- 1 | The MIT License 2 | 3 | Copyright (c) 2013 Hasan Karahan 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. -------------------------------------------------------------------------------- /bower_components/cs_console/app/vendor/javascripts/codemirror/mode/sieve/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (C) 2012 Thomas Schmid 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 | -------------------------------------------------------------------------------- /bower_components/cs_console/app/vendor/stylesheets/codemirror/theme/eclipse.css: -------------------------------------------------------------------------------- 1 | .cm-s-eclipse span.cm-meta {color: #FF1717;} 2 | .cm-s-eclipse span.cm-keyword { line-height: 1em; font-weight: bold; color: #7F0055; } 3 | .cm-s-eclipse span.cm-atom {color: #219;} 4 | .cm-s-eclipse span.cm-number {color: #164;} 5 | .cm-s-eclipse span.cm-def {color: #00f;} 6 | .cm-s-eclipse span.cm-variable {color: black;} 7 | .cm-s-eclipse span.cm-variable-2 {color: #0000C0;} 8 | .cm-s-eclipse span.cm-variable-3 {color: #0000C0;} 9 | .cm-s-eclipse span.cm-property {color: black;} 10 | .cm-s-eclipse span.cm-operator {color: black;} 11 | .cm-s-eclipse span.cm-comment {color: #3F7F5F;} 12 | .cm-s-eclipse span.cm-string {color: #2A00FF;} 13 | .cm-s-eclipse span.cm-string-2 {color: #f50;} 14 | .cm-s-eclipse span.cm-error {color: #f00;} 15 | .cm-s-eclipse span.cm-qualifier {color: #555;} 16 | .cm-s-eclipse span.cm-builtin {color: #30a;} 17 | .cm-s-eclipse span.cm-bracket {color: #cc7;} 18 | .cm-s-eclipse span.cm-tag {color: #170;} 19 | .cm-s-eclipse span.cm-attribute {color: #00c;} 20 | .cm-s-eclipse span.cm-link {color: #219;} 21 | 22 | .cm-s-eclipse .CodeMirror-matchingbracket { 23 | border:1px solid grey; 24 | color:black !important;; 25 | } 26 | -------------------------------------------------------------------------------- /bower_components/codemirror/addon/display/fullscreen.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | "use strict"; 3 | 4 | CodeMirror.defineOption("fullScreen", false, function(cm, val, old) { 5 | if (old == CodeMirror.Init) old = false; 6 | if (!old == !val) return; 7 | if (val) setFullscreen(cm); 8 | else setNormal(cm); 9 | }); 10 | 11 | function setFullscreen(cm) { 12 | var wrap = cm.getWrapperElement(); 13 | cm.state.fullScreenRestore = {scrollTop: window.pageYOffset, scrollLeft: window.pageXOffset, 14 | width: wrap.style.width, height: wrap.style.height}; 15 | wrap.style.width = wrap.style.height = ""; 16 | wrap.className += " CodeMirror-fullscreen"; 17 | document.documentElement.style.overflow = "hidden"; 18 | cm.refresh(); 19 | } 20 | 21 | function setNormal(cm) { 22 | var wrap = cm.getWrapperElement(); 23 | wrap.className = wrap.className.replace(/\s*CodeMirror-fullscreen\b/, ""); 24 | document.documentElement.style.overflow = ""; 25 | var info = cm.state.fullScreenRestore; 26 | wrap.style.width = info.width; wrap.style.height = info.height; 27 | window.scrollTo(info.scrollLeft, info.scrollTop); 28 | cm.refresh(); 29 | } 30 | })(); 31 | -------------------------------------------------------------------------------- /bower_components/cs_console/app/vendor/javascripts/codemirror/mode/python/LICENSE.txt: -------------------------------------------------------------------------------- 1 | The MIT License 2 | 3 | Copyright (c) 2010 Timothy Farrell 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. -------------------------------------------------------------------------------- /bower_components/cs_console/app/vendor/javascripts/codemirror/mode/perl/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (C) 2011 by Sabaca under the MIT license. 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 | -------------------------------------------------------------------------------- /bower_components/cs_console/config.ru: -------------------------------------------------------------------------------- 1 | require File.expand_path('./tasks/recipes/test') 2 | require File.expand_path('./tasks/recipes/demo') 3 | require "rake-pipeline" 4 | require 'rake-pipeline-web-filters' 5 | 6 | run Proc.new { |env| 7 | # Extract the requested path from the request 8 | path = Rack::Utils.unescape(env['PATH_INFO']) 9 | 10 | # Only compile the assets when the test.html is requested, this is a bit crude 11 | # but it speeds up page loads a lot for tests 12 | if path =~ /test\.html/ 13 | # use Rack::Static, urls: ["/resources"], root: "test" 14 | Rake::Pipeline::Project.new.build(&CSConsole::Recipes::Test.build).invoke 15 | FileUtils.rm_rf(File.expand_path('./tmp')) 16 | elsif path =~ /demo\.html/ 17 | # use Rack::Static, urls: ["/demo_app"], root: "demo_app" 18 | Rake::Pipeline::Project.new.build(&CSConsole::Recipes::Demo.build).invoke 19 | FileUtils.rm_rf(File.expand_path('./tmp')) 20 | end 21 | 22 | mime_types = { 23 | '.js' => 'javascript', 24 | '.css' => 'css', 25 | '.html' => 'html' 26 | } 27 | 28 | mime = mime_types[File.extname(path)] || 'text' 29 | 30 | [200, {'Content-Type' => "text/#{mime}"}, File.open("./#{File.expand_path(path)}", 'r') ] 31 | } 32 | -------------------------------------------------------------------------------- /bower_components/bootstrap/less/mixins/image.less: -------------------------------------------------------------------------------- 1 | // Image Mixins 2 | // - Responsive image 3 | // - Retina image 4 | 5 | 6 | // Responsive image 7 | // 8 | // Keep images from scaling beyond the width of their parents. 9 | .img-responsive(@display: block) { 10 | display: @display; 11 | max-width: 100%; // Part 1: Set a maximum relative to the parent 12 | height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching 13 | } 14 | 15 | 16 | // Retina image 17 | // 18 | // Short retina mixin for setting background-image and -size. Note that the 19 | // spelling of `min--moz-device-pixel-ratio` is intentional. 20 | .img-retina(@file-1x; @file-2x; @width-1x; @height-1x) { 21 | background-image: url("@{file-1x}"); 22 | 23 | @media 24 | only screen and (-webkit-min-device-pixel-ratio: 2), 25 | only screen and ( min--moz-device-pixel-ratio: 2), 26 | only screen and ( -o-min-device-pixel-ratio: 2/1), 27 | only screen and ( min-device-pixel-ratio: 2), 28 | only screen and ( min-resolution: 192dpi), 29 | only screen and ( min-resolution: 2dppx) { 30 | background-image: url("@{file-2x}"); 31 | background-size: @width-1x @height-1x; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /bower_components/cs_console/app/vendor/javascripts/codemirror/mode/ntriples/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CodeMirror: NTriples mode 6 | 7 | 8 | 9 | 10 | 15 | 16 | 17 |

CodeMirror: NTriples mode

18 |
19 | 26 |
27 | 28 | 31 |

MIME types defined: text/n-triples.

32 | 33 | 34 | -------------------------------------------------------------------------------- /client/stylesheets/structures/_inlineCode.sass: -------------------------------------------------------------------------------- 1 | // ************************************* 2 | // 3 | // Inline Code 4 | // -> Decorated snippet 5 | // 6 | // ------------------------------------- 7 | // Template (Haml) 8 | // ------------------------------------- 9 | // 10 | // %code.inlineCode[btn] 11 | // .inlineCode-icon 12 | // 13 | // ************************************* 14 | 15 | .inlineCode 16 | background: none 17 | border-radius: 4px 18 | border: 1px solid $c-highlight 19 | display: inline-block 20 | padding-left: 0.5ch 21 | padding-right: 0.5ch 22 | 23 | // ------------------------------------- 24 | // Modifiers 25 | // ------------------------------------- 26 | 27 | // ----- Button ----- // 28 | 29 | .inlineCode--btn 30 | +action 31 | border: 2px solid $c-highlight 32 | padding: $b-space-xs $b-space 33 | text-align: left 34 | transition: $b-transition 35 | white-space: normal 36 | 37 | +state 38 | background-color: $c-highlight 39 | color: $c-text-invert 40 | 41 | // ------------------------------------- 42 | // Scaffolding 43 | // ------------------------------------- 44 | 45 | // ----- Icon ----- // 46 | 47 | .inlineCode-icon 48 | margin-right: $b-space-xs 49 | opacity: 0.67 50 | -------------------------------------------------------------------------------- /bower_components/autosize/readme.md: -------------------------------------------------------------------------------- 1 | ## Summary 2 | 3 | Autosize is a small, stand-alone script to automatically adjust textarea height to fit text. 4 | 5 | #### Demo 6 | 7 | Full documentation and a demo can be found at [jacklmoore.com/autosize](http://jacklmoore.com/autosize) 8 | 9 | #### Install via NPM 10 | ```bash 11 | npm install autosize 12 | ``` 13 | #### Install via Bower 14 | ```bash 15 | bower install autosize 16 | ``` 17 | 18 | #### Browser compatibility 19 | 20 | Chrome | Firefox | IE | Safari | iOS Safari | Android | Opera Mini 21 | ------ | --------|----|--------|------------|---------|------------ 22 | yes | yes | 9 | yes | yes | 4 | ? 23 | 24 | #### Usage 25 | 26 | The autosize function accepts a single textarea element, or an array or array-like object (such as a NodeList or jQuery collection) of textarea elements. 27 | 28 | ```javascript 29 | // from a NodeList 30 | autosize(document.querySelectorAll('textarea')); 31 | 32 | // from a single Node 33 | autosize(document.querySelector('textarea')); 34 | 35 | // from a jQuery collection 36 | autosize($('textarea')); 37 | ``` 38 | 39 | Released under the [MIT License](http://www.opensource.org/licenses/mit-license.php) -------------------------------------------------------------------------------- /bower_components/bootstrap/less/jumbotron.less: -------------------------------------------------------------------------------- 1 | // 2 | // Jumbotron 3 | // -------------------------------------------------- 4 | 5 | 6 | .jumbotron { 7 | padding: @jumbotron-padding (@jumbotron-padding / 2); 8 | margin-bottom: @jumbotron-padding; 9 | color: @jumbotron-color; 10 | background-color: @jumbotron-bg; 11 | 12 | h1, 13 | .h1 { 14 | color: @jumbotron-heading-color; 15 | } 16 | 17 | p { 18 | margin-bottom: (@jumbotron-padding / 2); 19 | font-size: @jumbotron-font-size; 20 | font-weight: 200; 21 | } 22 | 23 | > hr { 24 | border-top-color: darken(@jumbotron-bg, 10%); 25 | } 26 | 27 | .container &, 28 | .container-fluid & { 29 | border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container 30 | } 31 | 32 | .container { 33 | max-width: 100%; 34 | } 35 | 36 | @media screen and (min-width: @screen-sm-min) { 37 | padding: (@jumbotron-padding * 1.6) 0; 38 | 39 | .container &, 40 | .container-fluid & { 41 | padding-left: (@jumbotron-padding * 2); 42 | padding-right: (@jumbotron-padding * 2); 43 | } 44 | 45 | h1, 46 | .h1 { 47 | font-size: (@font-size-base * 4.5); 48 | } 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /bower_components/cs_console/app/vendor/javascripts/codemirror/mode/xquery/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (C) 2011 by MarkLogic Corporation 2 | Author: Mike Brevoort 3 | 4 | Permission is hereby granted, free of charge, to any person obtaining a copy 5 | of this software and associated documentation files (the "Software"), to deal 6 | in the Software without restriction, including without limitation the rights 7 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | copies of the Software, and to permit persons to whom the Software is 9 | furnished to do so, subject to the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be included in 12 | all copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 17 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 20 | THE SOFTWARE. -------------------------------------------------------------------------------- /bower_components/abecedary/example/lib/javascript-logging/tests.html: -------------------------------------------------------------------------------- 1 | var assert = require('chai').assert, 2 | sinon = require('sinon'), 3 | Sandbox = require('javascript-sandbox'), 4 | jshint = require('jshint').JSHINT; 5 | 6 | describe('console.log', function() { 7 | var sandbox, consoleLogStub; 8 | 9 | beforeEach(function() { 10 | try { 11 | consoleLogStub = sinon.spy(); 12 | sandbox = new Sandbox({ 13 | variables: { 14 | 'console.log': consoleLogStub 15 | } 16 | }); 17 | sandbox.evaluate(code); 18 | } catch(e) {} 19 | }); 20 | 21 | afterEach(function() { 22 | try { 23 | sandbox.destroy(); 24 | } catch(e) {} 25 | }); 26 | 27 | details('console.log', function() { 28 | return consoleLogStub.args; 29 | }); 30 | 31 | it("Looks like there's a syntax error in your code.", function() { 32 | if(!jshint(code)) { throw jshint.errors[0]; } 33 | }); 34 | 35 | it("Did not call `console.log`, passing in a message.", function() { 36 | assert(consoleLogStub.callCount > 0); 37 | }); 38 | 39 | it("Did not pass in the message `Hello, World!` to `console.log`.", function() { 40 | assert(consoleLogStub.calledWith('Hello, World!')); 41 | }); 42 | }); -------------------------------------------------------------------------------- /bower_components/codemirror/addon/tern/worker.js: -------------------------------------------------------------------------------- 1 | var server; 2 | 3 | this.onmessage = function(e) { 4 | var data = e.data; 5 | switch (data.type) { 6 | case "init": return startServer(data.defs, data.plugins, data.scripts); 7 | case "add": return server.addFile(data.name, data.text); 8 | case "del": return server.delFile(data.name); 9 | case "req": return server.request(data.body, function(err, reqData) { 10 | postMessage({id: data.id, body: reqData, err: err && String(err)}); 11 | }); 12 | case "getFile": 13 | var c = pending[data.id]; 14 | delete pending[data.id]; 15 | return c(data.err, data.text); 16 | default: throw new Error("Unknown message type: " + data.type); 17 | } 18 | }; 19 | 20 | var nextId = 0, pending = {}; 21 | function getFile(file, c) { 22 | postMessage({type: "getFile", name: file, id: ++nextId}); 23 | pending[nextId] = c; 24 | } 25 | 26 | function startServer(defs, plugins, scripts) { 27 | if (scripts) importScripts.apply(null, scripts); 28 | 29 | server = new tern.Server({ 30 | getFile: getFile, 31 | async: true, 32 | defs: defs, 33 | plugins: plugins 34 | }); 35 | } 36 | 37 | var console = { 38 | log: function(v) { postMessage({type: "debug", message: v}); } 39 | }; 40 | -------------------------------------------------------------------------------- /bower_components/codemirror/theme/eclipse.css: -------------------------------------------------------------------------------- 1 | .cm-s-eclipse span.cm-meta {color: #FF1717;} 2 | .cm-s-eclipse span.cm-keyword { line-height: 1em; font-weight: bold; color: #7F0055; } 3 | .cm-s-eclipse span.cm-atom {color: #219;} 4 | .cm-s-eclipse span.cm-number {color: #164;} 5 | .cm-s-eclipse span.cm-def {color: #00f;} 6 | .cm-s-eclipse span.cm-variable {color: black;} 7 | .cm-s-eclipse span.cm-variable-2 {color: #0000C0;} 8 | .cm-s-eclipse span.cm-variable-3 {color: #0000C0;} 9 | .cm-s-eclipse span.cm-property {color: black;} 10 | .cm-s-eclipse span.cm-operator {color: black;} 11 | .cm-s-eclipse span.cm-comment {color: #3F7F5F;} 12 | .cm-s-eclipse span.cm-string {color: #2A00FF;} 13 | .cm-s-eclipse span.cm-string-2 {color: #f50;} 14 | .cm-s-eclipse span.cm-error {color: #f00;} 15 | .cm-s-eclipse span.cm-qualifier {color: #555;} 16 | .cm-s-eclipse span.cm-builtin {color: #30a;} 17 | .cm-s-eclipse span.cm-bracket {color: #cc7;} 18 | .cm-s-eclipse span.cm-tag {color: #170;} 19 | .cm-s-eclipse span.cm-attribute {color: #00c;} 20 | .cm-s-eclipse span.cm-link {color: #219;} 21 | 22 | .cm-s-eclipse .CodeMirror-activeline-background {background: #e8f2ff !important;} 23 | .cm-s-eclipse .CodeMirror-matchingbracket {outline:1px solid grey; color:black !important;} 24 | --------------------------------------------------------------------------------