├── .gitignore ├── .idea ├── .name ├── encodings.xml ├── jenkinsSettings.xml ├── misc.xml ├── modules.xml ├── myapp.iml ├── scopes │ └── scope_settings.xml ├── vcs.xml └── workspace.xml ├── LICENSE ├── README.md ├── angular-frontend ├── .bowerrc ├── .editorconfig ├── .jshintrc ├── .travis.yml ├── Gruntfile.js ├── app │ ├── .buildignore │ ├── .htaccess │ ├── 404.html │ ├── bower_components │ │ ├── angular-cookies │ │ │ ├── .bower.json │ │ │ ├── README.md │ │ │ ├── angular-cookies.js │ │ │ ├── angular-cookies.min.js │ │ │ ├── angular-cookies.min.js.map │ │ │ └── bower.json │ │ ├── angular-mocks │ │ │ ├── .bower.json │ │ │ ├── README.md │ │ │ ├── angular-mocks.js │ │ │ └── bower.json │ │ ├── angular-resource │ │ │ ├── .bower.json │ │ │ ├── README.md │ │ │ ├── angular-resource.js │ │ │ ├── angular-resource.min.js │ │ │ ├── angular-resource.min.js.map │ │ │ └── bower.json │ │ ├── angular-route │ │ │ ├── .bower.json │ │ │ ├── README.md │ │ │ ├── angular-route.js │ │ │ ├── angular-route.min.js │ │ │ ├── angular-route.min.js.map │ │ │ └── bower.json │ │ ├── angular-sanitize │ │ │ ├── .bower.json │ │ │ ├── README.md │ │ │ ├── angular-sanitize.js │ │ │ ├── angular-sanitize.min.js │ │ │ ├── angular-sanitize.min.js.map │ │ │ └── bower.json │ │ ├── angular-scenario │ │ │ ├── .bower.json │ │ │ ├── README.md │ │ │ ├── angular-scenario.js │ │ │ ├── bower.json │ │ │ ├── jstd-scenario-adapter-config.js │ │ │ └── jstd-scenario-adapter.js │ │ ├── angular-socket-io │ │ │ ├── .bower.json │ │ │ ├── .gitignore │ │ │ ├── .travis.yml │ │ │ ├── README.md │ │ │ ├── bower.json │ │ │ ├── gulpfile.js │ │ │ ├── karma.conf.js │ │ │ ├── mock │ │ │ │ └── socket-io.js │ │ │ ├── package.json │ │ │ ├── socket.js │ │ │ ├── socket.min.js │ │ │ ├── socket.min.js.map │ │ │ └── socket.spec.js │ │ ├── angular │ │ │ ├── .bower.json │ │ │ ├── README.md │ │ │ ├── angular-csp.css │ │ │ ├── angular.js │ │ │ ├── angular.min.js │ │ │ ├── angular.min.js.gzip │ │ │ ├── angular.min.js.map │ │ │ └── bower.json │ │ ├── bootstrap │ │ │ ├── .bower.json │ │ │ ├── DOCS-LICENSE │ │ │ ├── LICENSE │ │ │ ├── LICENSE-MIT │ │ │ ├── README.md │ │ │ ├── bower.json │ │ │ ├── dist │ │ │ │ ├── css │ │ │ │ │ ├── bootstrap-theme.css │ │ │ │ │ ├── bootstrap-theme.min.css │ │ │ │ │ ├── bootstrap.css │ │ │ │ │ └── bootstrap.min.css │ │ │ │ ├── fonts │ │ │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ │ │ └── glyphicons-halflings-regular.woff │ │ │ │ └── js │ │ │ │ │ ├── bootstrap.js │ │ │ │ │ └── bootstrap.min.js │ │ │ ├── js │ │ │ │ ├── affix.js │ │ │ │ ├── alert.js │ │ │ │ ├── button.js │ │ │ │ ├── carousel.js │ │ │ │ ├── collapse.js │ │ │ │ ├── dropdown.js │ │ │ │ ├── modal.js │ │ │ │ ├── popover.js │ │ │ │ ├── scrollspy.js │ │ │ │ ├── tab.js │ │ │ │ ├── tooltip.js │ │ │ │ └── transition.js │ │ │ └── less │ │ │ │ ├── alerts.less │ │ │ │ ├── badges.less │ │ │ │ ├── bootstrap.less │ │ │ │ ├── breadcrumbs.less │ │ │ │ ├── button-groups.less │ │ │ │ ├── buttons.less │ │ │ │ ├── carousel.less │ │ │ │ ├── close.less │ │ │ │ ├── code.less │ │ │ │ ├── component-animations.less │ │ │ │ ├── dropdowns.less │ │ │ │ ├── forms.less │ │ │ │ ├── glyphicons.less │ │ │ │ ├── grid.less │ │ │ │ ├── input-groups.less │ │ │ │ ├── jumbotron.less │ │ │ │ ├── labels.less │ │ │ │ ├── list-group.less │ │ │ │ ├── media.less │ │ │ │ ├── mixins.less │ │ │ │ ├── modals.less │ │ │ │ ├── navbar.less │ │ │ │ ├── navs.less │ │ │ │ ├── normalize.less │ │ │ │ ├── pager.less │ │ │ │ ├── pagination.less │ │ │ │ ├── panels.less │ │ │ │ ├── popovers.less │ │ │ │ ├── print.less │ │ │ │ ├── progress-bars.less │ │ │ │ ├── responsive-utilities.less │ │ │ │ ├── scaffolding.less │ │ │ │ ├── tables.less │ │ │ │ ├── theme.less │ │ │ │ ├── thumbnails.less │ │ │ │ ├── tooltip.less │ │ │ │ ├── type.less │ │ │ │ ├── utilities.less │ │ │ │ ├── variables.less │ │ │ │ └── wells.less │ │ ├── es5-shim │ │ │ ├── .bower.json │ │ │ ├── .gitignore │ │ │ ├── CHANGES │ │ │ ├── CONTRIBUTORS.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── es5-sham.js │ │ │ ├── es5-sham.map │ │ │ ├── es5-sham.min.js │ │ │ ├── es5-shim.js │ │ │ ├── es5-shim.map │ │ │ ├── es5-shim.min.js │ │ │ ├── package.json │ │ │ └── tests │ │ │ │ ├── helpers │ │ │ │ ├── h-kill.js │ │ │ │ ├── h-matchers.js │ │ │ │ └── h.js │ │ │ │ ├── index.html │ │ │ │ ├── index.min.html │ │ │ │ ├── lib │ │ │ │ ├── jasmine-html.js │ │ │ │ ├── jasmine.css │ │ │ │ ├── jasmine.js │ │ │ │ ├── jasmine_favicon.png │ │ │ │ └── json2.js │ │ │ │ └── spec │ │ │ │ ├── s-array.js │ │ │ │ ├── s-date.js │ │ │ │ ├── s-function.js │ │ │ │ ├── s-number.js │ │ │ │ ├── s-object.js │ │ │ │ └── s-string.js │ │ ├── jquery │ │ │ ├── .bower.json │ │ │ ├── MIT-LICENSE.txt │ │ │ ├── bower.json │ │ │ ├── dist │ │ │ │ ├── jquery.js │ │ │ │ ├── jquery.min.js │ │ │ │ └── jquery.min.map │ │ │ └── src │ │ │ │ ├── ajax.js │ │ │ │ ├── ajax │ │ │ │ ├── jsonp.js │ │ │ │ ├── load.js │ │ │ │ ├── parseJSON.js │ │ │ │ ├── parseXML.js │ │ │ │ ├── script.js │ │ │ │ ├── var │ │ │ │ │ ├── nonce.js │ │ │ │ │ └── rquery.js │ │ │ │ └── xhr.js │ │ │ │ ├── attributes.js │ │ │ │ ├── attributes │ │ │ │ ├── attr.js │ │ │ │ ├── classes.js │ │ │ │ ├── prop.js │ │ │ │ ├── support.js │ │ │ │ └── val.js │ │ │ │ ├── callbacks.js │ │ │ │ ├── core.js │ │ │ │ ├── core │ │ │ │ ├── access.js │ │ │ │ ├── init.js │ │ │ │ ├── parseHTML.js │ │ │ │ ├── ready.js │ │ │ │ └── var │ │ │ │ │ └── rsingleTag.js │ │ │ │ ├── css.js │ │ │ │ ├── css │ │ │ │ ├── addGetHookIf.js │ │ │ │ ├── curCSS.js │ │ │ │ ├── defaultDisplay.js │ │ │ │ ├── hiddenVisibleSelectors.js │ │ │ │ ├── support.js │ │ │ │ ├── swap.js │ │ │ │ └── var │ │ │ │ │ ├── cssExpand.js │ │ │ │ │ ├── isHidden.js │ │ │ │ │ ├── rmargin.js │ │ │ │ │ └── rnumnonpx.js │ │ │ │ ├── data.js │ │ │ │ ├── data │ │ │ │ ├── accepts.js │ │ │ │ └── support.js │ │ │ │ ├── deferred.js │ │ │ │ ├── deprecated.js │ │ │ │ ├── dimensions.js │ │ │ │ ├── effects.js │ │ │ │ ├── effects │ │ │ │ ├── Tween.js │ │ │ │ ├── animatedSelector.js │ │ │ │ └── support.js │ │ │ │ ├── event.js │ │ │ │ ├── event │ │ │ │ ├── alias.js │ │ │ │ └── support.js │ │ │ │ ├── exports │ │ │ │ ├── amd.js │ │ │ │ └── global.js │ │ │ │ ├── intro.js │ │ │ │ ├── jquery.js │ │ │ │ ├── manipulation.js │ │ │ │ ├── manipulation │ │ │ │ ├── _evalUrl.js │ │ │ │ ├── support.js │ │ │ │ └── var │ │ │ │ │ └── rcheckableType.js │ │ │ │ ├── offset.js │ │ │ │ ├── outro.js │ │ │ │ ├── queue.js │ │ │ │ ├── queue │ │ │ │ └── delay.js │ │ │ │ ├── selector-sizzle.js │ │ │ │ ├── selector.js │ │ │ │ ├── serialize.js │ │ │ │ ├── sizzle │ │ │ │ └── dist │ │ │ │ │ ├── sizzle.js │ │ │ │ │ ├── sizzle.min.js │ │ │ │ │ └── sizzle.min.map │ │ │ │ ├── support.js │ │ │ │ ├── traversing.js │ │ │ │ ├── traversing │ │ │ │ ├── findFilter.js │ │ │ │ └── var │ │ │ │ │ └── rneedsContext.js │ │ │ │ ├── var │ │ │ │ ├── class2type.js │ │ │ │ ├── concat.js │ │ │ │ ├── deletedIds.js │ │ │ │ ├── hasOwn.js │ │ │ │ ├── indexOf.js │ │ │ │ ├── pnum.js │ │ │ │ ├── push.js │ │ │ │ ├── rnotwhite.js │ │ │ │ ├── slice.js │ │ │ │ ├── strundefined.js │ │ │ │ ├── support.js │ │ │ │ ├── toString.js │ │ │ │ └── trim.js │ │ │ │ └── wrap.js │ │ ├── json3 │ │ │ ├── .bower.json │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── bower.json │ │ │ └── lib │ │ │ │ ├── json3.js │ │ │ │ └── json3.min.js │ │ ├── socket.io-client │ │ │ ├── .bower.json │ │ │ ├── .gitignore │ │ │ ├── .npmignore │ │ │ ├── History.md │ │ │ ├── Makefile │ │ │ ├── README.md │ │ │ ├── bin │ │ │ │ └── builder.js │ │ │ ├── dist │ │ │ │ ├── WebSocketMain.swf │ │ │ │ ├── WebSocketMainInsecure.swf │ │ │ │ ├── socket.io.js │ │ │ │ └── socket.io.min.js │ │ │ ├── lib │ │ │ │ ├── events.js │ │ │ │ ├── io.js │ │ │ │ ├── json.js │ │ │ │ ├── namespace.js │ │ │ │ ├── parser.js │ │ │ │ ├── socket.js │ │ │ │ ├── transport.js │ │ │ │ ├── transports │ │ │ │ │ ├── flashsocket.js │ │ │ │ │ ├── htmlfile.js │ │ │ │ │ ├── jsonp-polling.js │ │ │ │ │ ├── websocket.js │ │ │ │ │ ├── xhr-polling.js │ │ │ │ │ └── xhr.js │ │ │ │ ├── util.js │ │ │ │ └── vendor │ │ │ │ │ └── web-socket-js │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── README.md │ │ │ │ │ ├── WebSocketMain.swf │ │ │ │ │ ├── WebSocketMainInsecure.zip │ │ │ │ │ ├── flash-src │ │ │ │ │ ├── IWebSocketLogger.as │ │ │ │ │ ├── WebSocket.as │ │ │ │ │ ├── WebSocketEvent.as │ │ │ │ │ ├── WebSocketMain.as │ │ │ │ │ ├── WebSocketMainInsecure.as │ │ │ │ │ ├── build.sh │ │ │ │ │ └── com │ │ │ │ │ │ ├── adobe │ │ │ │ │ │ └── net │ │ │ │ │ │ │ └── proxies │ │ │ │ │ │ │ └── RFC2817Socket.as │ │ │ │ │ │ ├── gsolo │ │ │ │ │ │ └── encryption │ │ │ │ │ │ │ └── MD5.as │ │ │ │ │ │ └── hurlant │ │ │ │ │ │ ├── crypto │ │ │ │ │ │ ├── Crypto.as │ │ │ │ │ │ ├── cert │ │ │ │ │ │ │ ├── MozillaRootCertificates.as │ │ │ │ │ │ │ ├── X509Certificate.as │ │ │ │ │ │ │ └── X509CertificateCollection.as │ │ │ │ │ │ ├── hash │ │ │ │ │ │ │ ├── HMAC.as │ │ │ │ │ │ │ ├── IHMAC.as │ │ │ │ │ │ │ ├── IHash.as │ │ │ │ │ │ │ ├── MAC.as │ │ │ │ │ │ │ ├── MD2.as │ │ │ │ │ │ │ ├── MD5.as │ │ │ │ │ │ │ ├── SHA1.as │ │ │ │ │ │ │ ├── SHA224.as │ │ │ │ │ │ │ ├── SHA256.as │ │ │ │ │ │ │ └── SHABase.as │ │ │ │ │ │ ├── prng │ │ │ │ │ │ │ ├── ARC4.as │ │ │ │ │ │ │ ├── IPRNG.as │ │ │ │ │ │ │ ├── Random.as │ │ │ │ │ │ │ └── TLSPRF.as │ │ │ │ │ │ ├── rsa │ │ │ │ │ │ │ └── RSAKey.as │ │ │ │ │ │ ├── symmetric │ │ │ │ │ │ │ ├── AESKey.as │ │ │ │ │ │ │ ├── BlowFishKey.as │ │ │ │ │ │ │ ├── CBCMode.as │ │ │ │ │ │ │ ├── CFB8Mode.as │ │ │ │ │ │ │ ├── CFBMode.as │ │ │ │ │ │ │ ├── CTRMode.as │ │ │ │ │ │ │ ├── DESKey.as │ │ │ │ │ │ │ ├── ECBMode.as │ │ │ │ │ │ │ ├── ICipher.as │ │ │ │ │ │ │ ├── IMode.as │ │ │ │ │ │ │ ├── IPad.as │ │ │ │ │ │ │ ├── IStreamCipher.as │ │ │ │ │ │ │ ├── ISymmetricKey.as │ │ │ │ │ │ │ ├── IVMode.as │ │ │ │ │ │ │ ├── NullPad.as │ │ │ │ │ │ │ ├── OFBMode.as │ │ │ │ │ │ │ ├── PKCS5.as │ │ │ │ │ │ │ ├── SSLPad.as │ │ │ │ │ │ │ ├── SimpleIVMode.as │ │ │ │ │ │ │ ├── TLSPad.as │ │ │ │ │ │ │ ├── TripleDESKey.as │ │ │ │ │ │ │ ├── XTeaKey.as │ │ │ │ │ │ │ ├── aeskey.pl │ │ │ │ │ │ │ └── dump.txt │ │ │ │ │ │ ├── tests │ │ │ │ │ │ │ ├── AESKeyTest.as │ │ │ │ │ │ │ ├── ARC4Test.as │ │ │ │ │ │ │ ├── BigIntegerTest.as │ │ │ │ │ │ │ ├── BlowFishKeyTest.as │ │ │ │ │ │ │ ├── CBCModeTest.as │ │ │ │ │ │ │ ├── CFB8ModeTest.as │ │ │ │ │ │ │ ├── CFBModeTest.as │ │ │ │ │ │ │ ├── CTRModeTest.as │ │ │ │ │ │ │ ├── DESKeyTest.as │ │ │ │ │ │ │ ├── ECBModeTest.as │ │ │ │ │ │ │ ├── HMACTest.as │ │ │ │ │ │ │ ├── ITestHarness.as │ │ │ │ │ │ │ ├── MD2Test.as │ │ │ │ │ │ │ ├── MD5Test.as │ │ │ │ │ │ │ ├── OFBModeTest.as │ │ │ │ │ │ │ ├── RSAKeyTest.as │ │ │ │ │ │ │ ├── SHA1Test.as │ │ │ │ │ │ │ ├── SHA224Test.as │ │ │ │ │ │ │ ├── SHA256Test.as │ │ │ │ │ │ │ ├── TLSPRFTest.as │ │ │ │ │ │ │ ├── TestCase.as │ │ │ │ │ │ │ ├── TripleDESKeyTest.as │ │ │ │ │ │ │ └── XTeaKeyTest.as │ │ │ │ │ │ └── tls │ │ │ │ │ │ │ ├── BulkCiphers.as │ │ │ │ │ │ │ ├── CipherSuites.as │ │ │ │ │ │ │ ├── IConnectionState.as │ │ │ │ │ │ │ ├── ISecurityParameters.as │ │ │ │ │ │ │ ├── KeyExchanges.as │ │ │ │ │ │ │ ├── MACs.as │ │ │ │ │ │ │ ├── SSLConnectionState.as │ │ │ │ │ │ │ ├── SSLEvent.as │ │ │ │ │ │ │ ├── SSLSecurityParameters.as │ │ │ │ │ │ │ ├── TLSConfig.as │ │ │ │ │ │ │ ├── TLSConnectionState.as │ │ │ │ │ │ │ ├── TLSEngine.as │ │ │ │ │ │ │ ├── TLSError.as │ │ │ │ │ │ │ ├── TLSEvent.as │ │ │ │ │ │ │ ├── TLSSecurityParameters.as │ │ │ │ │ │ │ ├── TLSSocket.as │ │ │ │ │ │ │ ├── TLSSocketEvent.as │ │ │ │ │ │ │ └── TLSTest.as │ │ │ │ │ │ ├── math │ │ │ │ │ │ ├── BarrettReduction.as │ │ │ │ │ │ ├── BigInteger.as │ │ │ │ │ │ ├── ClassicReduction.as │ │ │ │ │ │ ├── IReduction.as │ │ │ │ │ │ ├── MontgomeryReduction.as │ │ │ │ │ │ ├── NullReduction.as │ │ │ │ │ │ └── bi_internal.as │ │ │ │ │ │ └── util │ │ │ │ │ │ ├── ArrayUtil.as │ │ │ │ │ │ ├── Base64.as │ │ │ │ │ │ ├── Hex.as │ │ │ │ │ │ ├── Memory.as │ │ │ │ │ │ └── der │ │ │ │ │ │ ├── ByteString.as │ │ │ │ │ │ ├── DER.as │ │ │ │ │ │ ├── IAsn1Type.as │ │ │ │ │ │ ├── Integer.as │ │ │ │ │ │ ├── OID.as │ │ │ │ │ │ ├── ObjectIdentifier.as │ │ │ │ │ │ ├── PEM.as │ │ │ │ │ │ ├── PrintableString.as │ │ │ │ │ │ ├── Sequence.as │ │ │ │ │ │ ├── Set.as │ │ │ │ │ │ ├── Type.as │ │ │ │ │ │ └── UTCTime.as │ │ │ │ │ ├── sample.html │ │ │ │ │ ├── swfobject.js │ │ │ │ │ └── web_socket.js │ │ │ ├── package.json │ │ │ ├── support │ │ │ │ ├── should.js │ │ │ │ └── test-runner │ │ │ │ │ ├── app.js │ │ │ │ │ ├── index.jade │ │ │ │ │ └── public │ │ │ │ │ ├── javascript │ │ │ │ │ ├── jquery.js │ │ │ │ │ ├── runner.js │ │ │ │ │ └── script.js │ │ │ │ │ └── stylesheets │ │ │ │ │ ├── main.css │ │ │ │ │ └── main.styl │ │ │ └── test │ │ │ │ ├── events.test.js │ │ │ │ ├── io.test.js │ │ │ │ ├── node │ │ │ │ ├── builder.common.js │ │ │ │ └── builder.test.js │ │ │ │ ├── parser.test.js │ │ │ │ ├── socket.test.js │ │ │ │ ├── util.test.js │ │ │ │ └── worker.js │ │ └── socket.io │ │ │ ├── .bower.json │ │ │ ├── .gitignore │ │ │ ├── .npmignore │ │ │ ├── .travis.yml │ │ │ ├── History.md │ │ │ ├── LICENSE │ │ │ ├── Makefile │ │ │ ├── Readme.md │ │ │ ├── benchmarks │ │ │ ├── decode.bench.js │ │ │ ├── encode.bench.js │ │ │ └── runner.js │ │ │ ├── examples │ │ │ ├── chat │ │ │ │ ├── app.js │ │ │ │ ├── index.jade │ │ │ │ ├── package.json │ │ │ │ └── public │ │ │ │ │ └── stylesheets │ │ │ │ │ ├── mixins.styl │ │ │ │ │ ├── style.css │ │ │ │ │ └── style.styl │ │ │ └── irc-output │ │ │ │ ├── app.js │ │ │ │ ├── index.jade │ │ │ │ ├── irc.js │ │ │ │ ├── package.json │ │ │ │ └── public │ │ │ │ └── stylesheets │ │ │ │ └── style.styl │ │ │ ├── index.js │ │ │ ├── lib │ │ │ ├── logger.js │ │ │ ├── manager.js │ │ │ ├── namespace.js │ │ │ ├── parser.js │ │ │ ├── socket.io.js │ │ │ ├── socket.js │ │ │ ├── static.js │ │ │ ├── store.js │ │ │ ├── stores │ │ │ │ ├── memory.js │ │ │ │ └── redis.js │ │ │ ├── transport.js │ │ │ ├── transports │ │ │ │ ├── flashsocket.js │ │ │ │ ├── htmlfile.js │ │ │ │ ├── http-polling.js │ │ │ │ ├── http.js │ │ │ │ ├── index.js │ │ │ │ ├── jsonp-polling.js │ │ │ │ ├── websocket.js │ │ │ │ ├── websocket │ │ │ │ │ ├── default.js │ │ │ │ │ ├── hybi-07-12.js │ │ │ │ │ ├── hybi-16.js │ │ │ │ │ └── index.js │ │ │ │ └── xhr-polling.js │ │ │ └── util.js │ │ │ ├── package.json │ │ │ ├── support │ │ │ └── node-websocket-client │ │ │ │ ├── LICENSE │ │ │ │ ├── Makefile │ │ │ │ ├── README.md │ │ │ │ ├── examples │ │ │ │ ├── client-unix.js │ │ │ │ ├── client.js │ │ │ │ └── server-unix.js │ │ │ │ ├── lib │ │ │ │ └── websocket.js │ │ │ │ ├── package.json │ │ │ │ └── test │ │ │ │ ├── test-basic.js │ │ │ │ ├── test-client-close.js │ │ │ │ ├── test-readonly-attrs.js │ │ │ │ ├── test-ready-state.js │ │ │ │ ├── test-server-close.js │ │ │ │ ├── test-unix-send-fd.js │ │ │ │ └── test-unix-sockets.js │ │ │ └── test │ │ │ ├── common.js │ │ │ ├── fixtures │ │ │ ├── cert.crt │ │ │ └── key.key │ │ │ ├── hybi-common.js │ │ │ ├── io.test.js │ │ │ ├── leaks │ │ │ └── socket.leaktest.js │ │ │ ├── manager.test.js │ │ │ ├── namespace.test.js │ │ │ ├── parser.test.js │ │ │ ├── static.test.js │ │ │ ├── stores.memory.test.js │ │ │ ├── stores.redis.test.js │ │ │ ├── transports.flashsocket.test.js │ │ │ ├── transports.htmlfile.test.js │ │ │ ├── transports.jsonp-polling.test.js │ │ │ ├── transports.websocket.hybi07-12.parser.test.js │ │ │ ├── transports.websocket.hybi16.parser.test.js │ │ │ ├── transports.websocket.test.js │ │ │ └── transports.xhr-polling.test.js │ ├── favicon.ico │ ├── fonts │ │ ├── glyphicons-halflings-regular.eot │ │ ├── glyphicons-halflings-regular.svg │ │ ├── glyphicons-halflings-regular.ttf │ │ └── glyphicons-halflings-regular.woff │ ├── images │ │ └── yeoman.png │ ├── index.html │ ├── robots.txt │ ├── scripts │ │ ├── app.js │ │ ├── controllers │ │ │ └── socket.js │ │ ├── directives │ │ │ └── chatbox.js │ │ └── services │ │ │ ├── messageformatter.js │ │ │ └── socket.js │ ├── styles │ │ └── main.css │ └── views │ │ └── main.html ├── bower.json ├── karma-e2e.conf.js ├── karma.conf.js ├── package.json └── test │ ├── .jshintrc │ ├── runner.html │ └── spec │ ├── controllers │ ├── main.js │ ├── nick.js │ └── socket.js │ └── services │ ├── messageformatter.js │ └── socket.js ├── app.js ├── bin └── www ├── package.json ├── public ├── .htaccess ├── 404.html ├── favicon.ico ├── fonts │ ├── glyphicons-halflings-regular.eot │ ├── glyphicons-halflings-regular.svg │ ├── glyphicons-halflings-regular.ttf │ └── glyphicons-halflings-regular.woff ├── images │ └── 47b431ed.yeoman.png ├── index.html ├── robots.txt ├── scripts │ ├── d51ca110.vendor.js │ └── e6702acc.scripts.js ├── styles │ ├── 5a3706b1.main.css │ └── cd367326.vendor.css └── views │ └── main.html ├── routes ├── api.js └── users.js ├── sockets └── base.js └── views ├── error.jade ├── index.jade └── layout.jade /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | angularjs-frontend/node_modules 3 | angularjs-frontend/.tmp 4 | -------------------------------------------------------------------------------- /.idea/.name: -------------------------------------------------------------------------------- 1 | myapp -------------------------------------------------------------------------------- /.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/jenkinsSettings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /.idea/myapp.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /.idea/scopes/scope_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /angular-frontend/.bowerrc: -------------------------------------------------------------------------------- 1 | { 2 | "directory": "app/bower_components" 3 | } 4 | -------------------------------------------------------------------------------- /angular-frontend/.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig helps developers define and maintain consistent 2 | # coding styles between different editors and IDEs 3 | # editorconfig.org 4 | 5 | root = true 6 | 7 | 8 | [*] 9 | 10 | # Change these settings to your own preference 11 | indent_style = space 12 | indent_size = 2 13 | 14 | # We recommend you to keep these unchanged 15 | end_of_line = lf 16 | charset = utf-8 17 | trim_trailing_whitespace = true 18 | insert_final_newline = true 19 | 20 | [*.md] 21 | trim_trailing_whitespace = false 22 | -------------------------------------------------------------------------------- /angular-frontend/.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "node": true, 3 | "browser": true, 4 | "esnext": true, 5 | "bitwise": true, 6 | "camelcase": true, 7 | "curly": true, 8 | "eqeqeq": true, 9 | "immed": true, 10 | "indent": 2, 11 | "latedef": true, 12 | "newcap": true, 13 | "noarg": true, 14 | "quotmark": "single", 15 | "regexp": true, 16 | "undef": true, 17 | "unused": true, 18 | "strict": true, 19 | "trailing": true, 20 | "smarttabs": true, 21 | "globals": { 22 | "angular": false 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /angular-frontend/.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - '0.8' 4 | - '0.10' 5 | before_script: 6 | - 'npm install -g bower grunt-cli' 7 | - 'bower install' 8 | -------------------------------------------------------------------------------- /angular-frontend/app/.buildignore: -------------------------------------------------------------------------------- 1 | *.coffee -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/angular-cookies/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-cookies", 3 | "version": "1.2.15", 4 | "main": "./angular-cookies.js", 5 | "dependencies": { 6 | "angular": "1.2.15" 7 | }, 8 | "homepage": "https://github.com/angular/bower-angular-cookies", 9 | "_release": "1.2.15", 10 | "_resolution": { 11 | "type": "version", 12 | "tag": "v1.2.15", 13 | "commit": "58716f62698196b14fd7eb50e325b9ecb1b481e0" 14 | }, 15 | "_source": "git://github.com/angular/bower-angular-cookies.git", 16 | "_target": "1.2.15", 17 | "_originalSource": "angular-cookies" 18 | } -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/angular-cookies/angular-cookies.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | AngularJS v1.2.15 3 | (c) 2010-2014 Google, Inc. http://angularjs.org 4 | License: MIT 5 | */ 6 | (function(p,f,n){'use strict';f.module("ngCookies",["ng"]).factory("$cookies",["$rootScope","$browser",function(e,b){var c={},g={},h,k=!1,l=f.copy,m=f.isUndefined;b.addPollFn(function(){var a=b.cookies();h!=a&&(h=a,l(a,g),l(a,c),k&&e.$apply())})();k=!0;e.$watch(function(){var a,d,e;for(a in g)m(c[a])&&b.cookies(a,n);for(a in c)d=c[a],f.isString(d)||(d=""+d,c[a]=d),d!==g[a]&&(b.cookies(a,d),e=!0);if(e)for(a in d=b.cookies(),c)c[a]!==d[a]&&(m(d[a])?delete c[a]:c[a]=d[a])});return c}]).factory("$cookieStore", 7 | ["$cookies",function(e){return{get:function(b){return(b=e[b])?f.fromJson(b):b},put:function(b,c){e[b]=f.toJson(c)},remove:function(b){delete e[b]}}}])})(window,window.angular); 8 | //# sourceMappingURL=angular-cookies.min.js.map 9 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/angular-cookies/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-cookies", 3 | "version": "1.2.15", 4 | "main": "./angular-cookies.js", 5 | "dependencies": { 6 | "angular": "1.2.15" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/angular-mocks/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-mocks", 3 | "version": "1.2.15", 4 | "main": "./angular-mocks.js", 5 | "dependencies": { 6 | "angular": "1.2.15" 7 | }, 8 | "homepage": "https://github.com/angular/bower-angular-mocks", 9 | "_release": "1.2.15", 10 | "_resolution": { 11 | "type": "version", 12 | "tag": "v1.2.15", 13 | "commit": "6ea137cb6f72c6b1d424702345b6c077db722214" 14 | }, 15 | "_source": "git://github.com/angular/bower-angular-mocks.git", 16 | "_target": "1.2.15", 17 | "_originalSource": "angular-mocks" 18 | } -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/angular-mocks/README.md: -------------------------------------------------------------------------------- 1 | # bower-angular-mocks 2 | 3 | This repo is for distribution on `bower`. The source for this module is in the 4 | [main AngularJS repo](https://github.com/angular/angular.js/tree/master/src/ngMock). 5 | Please file issues and pull requests against that repo. 6 | 7 | ## Install 8 | 9 | Install with `bower`: 10 | 11 | ```shell 12 | bower install angular-mocks 13 | ``` 14 | 15 | ## Documentation 16 | 17 | Documentation is available on the 18 | [AngularJS docs site](http://docs.angularjs.org/guide/dev_guide.unit-testing). 19 | 20 | ## License 21 | 22 | The MIT License 23 | 24 | Copyright (c) 2010-2012 Google, Inc. http://angularjs.org 25 | 26 | Permission is hereby granted, free of charge, to any person obtaining a copy 27 | of this software and associated documentation files (the "Software"), to deal 28 | in the Software without restriction, including without limitation the rights 29 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 30 | copies of the Software, and to permit persons to whom the Software is 31 | furnished to do so, subject to the following conditions: 32 | 33 | The above copyright notice and this permission notice shall be included in 34 | all copies or substantial portions of the Software. 35 | 36 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 37 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 38 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 39 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 40 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 41 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 42 | THE SOFTWARE. 43 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/angular-mocks/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-mocks", 3 | "version": "1.2.15", 4 | "main": "./angular-mocks.js", 5 | "dependencies": { 6 | "angular": "1.2.15" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/angular-resource/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-resource", 3 | "version": "1.2.15", 4 | "main": "./angular-resource.js", 5 | "dependencies": { 6 | "angular": "1.2.15" 7 | }, 8 | "homepage": "https://github.com/angular/bower-angular-resource", 9 | "_release": "1.2.15", 10 | "_resolution": { 11 | "type": "version", 12 | "tag": "v1.2.15", 13 | "commit": "aeeea2a95cc38a1e01792bc23d54288bcedd8349" 14 | }, 15 | "_source": "git://github.com/angular/bower-angular-resource.git", 16 | "_target": "1.2.15", 17 | "_originalSource": "angular-resource" 18 | } -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/angular-resource/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-resource", 3 | "version": "1.2.15", 4 | "main": "./angular-resource.js", 5 | "dependencies": { 6 | "angular": "1.2.15" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/angular-route/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-route", 3 | "version": "1.2.15", 4 | "main": "./angular-route.js", 5 | "dependencies": { 6 | "angular": "1.2.15" 7 | }, 8 | "homepage": "https://github.com/angular/bower-angular-route", 9 | "_release": "1.2.15", 10 | "_resolution": { 11 | "type": "version", 12 | "tag": "v1.2.15", 13 | "commit": "a8368eb5c47746681feea7f73d712be47418865a" 14 | }, 15 | "_source": "git://github.com/angular/bower-angular-route.git", 16 | "_target": "1.2.15", 17 | "_originalSource": "angular-route" 18 | } -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/angular-route/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-route", 3 | "version": "1.2.15", 4 | "main": "./angular-route.js", 5 | "dependencies": { 6 | "angular": "1.2.15" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/angular-sanitize/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-sanitize", 3 | "version": "1.2.15", 4 | "main": "./angular-sanitize.js", 5 | "dependencies": { 6 | "angular": "1.2.15" 7 | }, 8 | "homepage": "https://github.com/angular/bower-angular-sanitize", 9 | "_release": "1.2.15", 10 | "_resolution": { 11 | "type": "version", 12 | "tag": "v1.2.15", 13 | "commit": "7eb942f16fae0e064ab72edf6beb8ea235a5ccbe" 14 | }, 15 | "_source": "git://github.com/angular/bower-angular-sanitize.git", 16 | "_target": "1.2.15", 17 | "_originalSource": "angular-sanitize" 18 | } -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/angular-sanitize/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-sanitize", 3 | "version": "1.2.15", 4 | "main": "./angular-sanitize.js", 5 | "dependencies": { 6 | "angular": "1.2.15" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/angular-scenario/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-scenario", 3 | "version": "1.2.15", 4 | "main": "./angular-scenario.js", 5 | "dependencies": { 6 | "angular": "1.2.15" 7 | }, 8 | "homepage": "https://github.com/angular/bower-angular-scenario", 9 | "_release": "1.2.15", 10 | "_resolution": { 11 | "type": "version", 12 | "tag": "v1.2.15", 13 | "commit": "6aac81c1bfc9c78920e6e962a838f24ab85aa7cc" 14 | }, 15 | "_source": "git://github.com/angular/bower-angular-scenario.git", 16 | "_target": "1.2.15", 17 | "_originalSource": "angular-scenario" 18 | } -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/angular-scenario/README.md: -------------------------------------------------------------------------------- 1 | # bower-angular-scenario 2 | 3 | This repo is for distribution on `bower`. The source for this module is in the 4 | [main AngularJS repo](https://github.com/angular/angular.js/tree/master/src/ngScenario). 5 | Please file issues and pull requests against that repo. 6 | 7 | ## Install 8 | 9 | Install with `bower`: 10 | 11 | ```shell 12 | bower install angular-scenario 13 | ``` 14 | 15 | ## Documentation 16 | 17 | Documentation is available on the 18 | [AngularJS docs site](http://docs.angularjs.org/). 19 | 20 | ## License 21 | 22 | The MIT License 23 | 24 | Copyright (c) 2010-2012 Google, Inc. http://angularjs.org 25 | 26 | Permission is hereby granted, free of charge, to any person obtaining a copy 27 | of this software and associated documentation files (the "Software"), to deal 28 | in the Software without restriction, including without limitation the rights 29 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 30 | copies of the Software, and to permit persons to whom the Software is 31 | furnished to do so, subject to the following conditions: 32 | 33 | The above copyright notice and this permission notice shall be included in 34 | all copies or substantial portions of the Software. 35 | 36 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 37 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 38 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 39 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 40 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 41 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 42 | THE SOFTWARE. 43 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/angular-scenario/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-scenario", 3 | "version": "1.2.15", 4 | "main": "./angular-scenario.js", 5 | "dependencies": { 6 | "angular": "1.2.15" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/angular-scenario/jstd-scenario-adapter-config.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Configuration for jstd scenario adapter 3 | */ 4 | var jstdScenarioAdapter = { 5 | relativeUrlPrefix: '/build/docs/' 6 | }; 7 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/angular-socket-io/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-socket-io", 3 | "version": "0.4.1", 4 | "main": "socket.js", 5 | "dependencies": { 6 | "angular": "~1.2.6" 7 | }, 8 | "devDependencies": { 9 | "angular-mocks": "~1.2.6" 10 | }, 11 | "homepage": "https://github.com/btford/angular-socket-io", 12 | "_release": "0.4.1", 13 | "_resolution": { 14 | "type": "version", 15 | "tag": "v0.4.1", 16 | "commit": "15a6c4756a0dfa881362cdd6d8b37ba6b068fb00" 17 | }, 18 | "_source": "git://github.com/btford/angular-socket-io.git", 19 | "_target": "~0.4.1", 20 | "_originalSource": "angular-socket-io", 21 | "_direct": true 22 | } -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/angular-socket-io/.gitignore: -------------------------------------------------------------------------------- 1 | coverage/ 2 | node_modules/ 3 | bower_components/ 4 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/angular-socket-io/.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - 0.10 4 | before_script: 5 | - npm install -g bower 6 | - bower install 7 | - export DISPLAY=:99.0 8 | - sh -e /etc/init.d/xvfb start 9 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/angular-socket-io/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-socket-io", 3 | "version": "0.4.1", 4 | "main": "socket.js", 5 | "dependencies": { 6 | "angular": "~1.2.6" 7 | }, 8 | "devDependencies": { 9 | "angular-mocks": "~1.2.6" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/angular-socket-io/gulpfile.js: -------------------------------------------------------------------------------- 1 | var gulp = require('gulp'), 2 | gutil = require('gulp-util'), 3 | uglify = require('gulp-uglify'), 4 | rename = require("gulp-rename"), 5 | ngmin = require('gulp-ngmin'); 6 | 7 | gulp.task('scripts', function() { 8 | return gulp.src('socket.js') 9 | .pipe(rename('socket.min.js')) 10 | .pipe(ngmin()) 11 | .pipe(uglify({ 12 | preserveComments: 'some', 13 | outSourceMap: true 14 | })) 15 | .pipe(gulp.dest('.')); 16 | }); 17 | 18 | gulp.task('default', ['scripts']); 19 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/angular-socket-io/karma.conf.js: -------------------------------------------------------------------------------- 1 | // Karma configuration 2 | 3 | module.exports = function (config) { 4 | config.set({ 5 | basePath: '', 6 | files: [ 7 | 'mock/socket-io.js', 8 | 'bower_components/angular/angular.js', 9 | 'bower_components/angular-mocks/angular-mocks.js', 10 | 'socket.js', 11 | '*.spec.js' 12 | ], 13 | 14 | preprocessors: { 15 | 'socket.js': ['coverage'] 16 | }, 17 | 18 | reporters: ['progress', 'coverage'], 19 | 20 | port: 9876, 21 | colors: true, 22 | 23 | logLevel: config.LOG_INFO, 24 | 25 | browsers: ['Chrome'], 26 | frameworks: ['jasmine'], 27 | 28 | captureTimeout: 60000, 29 | 30 | autoWatch: true, 31 | singleRun: false 32 | }); 33 | }; 34 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/angular-socket-io/mock/socket-io.js: -------------------------------------------------------------------------------- 1 | var io = { 2 | connect: createMockSocketObject 3 | }; 4 | 5 | function createMockSocketObject () { 6 | 7 | var socket = { 8 | on: function (ev, fn) { 9 | (this._listeners[ev] = this._listeners[ev] || []).push(fn); 10 | }, 11 | emit: function (ev, data) { 12 | if (this._listeners[ev]) { 13 | this._listeners[ev].forEach(function (listener) { 14 | listener(data); 15 | }); 16 | } 17 | }, 18 | _listeners: {}, 19 | removeListener: function (ev, fn) { 20 | if (fn) { 21 | var index = this._listeners[ev].indexOf(fn); 22 | if (index > -1) { 23 | this._listeners[ev].splice(index, 1); 24 | } 25 | } else { 26 | delete this._listeners[ev]; 27 | } 28 | } 29 | }; 30 | 31 | return socket; 32 | } 33 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/angular-socket-io/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-socket-io", 3 | "version": "0.4.1", 4 | "main": "socket.js", 5 | "directories": { 6 | "test": "test" 7 | }, 8 | "scripts": { 9 | "test": "./node_modules/.bin/karma start --browsers Firefox --single-run" 10 | }, 11 | "author": "Brian Ford", 12 | "license": "MIT", 13 | "devDependencies": { 14 | "gulp": "~3.5.5", 15 | "gulp-util": "~2.2.14", 16 | "gulp-uglify": "~0.2.1", 17 | "gulp-rename": "~1.2.0", 18 | "gulp-ngmin": "~0.1.2", 19 | "karma": "~0.10.2", 20 | "karma-jasmine": "~0.1.3", 21 | "karma-firefox-launcher": "~0.1.0" 22 | }, 23 | "dependencies": { 24 | "karma-coverage": "~0.1.4" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/angular-socket-io/socket.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @license 3 | * angular-socket-io v0.4.1 4 | * (c) 2014 Brian Ford http://briantford.com 5 | * License: MIT 6 | */ 7 | "use strict";angular.module("btford.socket-io",[]).provider("socketFactory",function(){var n="socket:";this.$get=["$rootScope","$timeout",function(t,o){var r=function(n,t){return t?function(){var r=arguments;o(function(){t.apply(n,r)},0)}:angular.noop};return function(o){o=o||{};var e=o.ioSocket||io.connect(),u=o.prefix||n,i=o.scope||t,a=function(n,t){e.on(n,t.__ng=r(e,t))},c={on:a,addListener:a,emit:function(n,t,o){var u=arguments.length-1,o=arguments[u];return"function"==typeof o&&(o=r(e,o),arguments[u]=o),e.emit.apply(e,arguments)},removeListener:function(n,t){return t&&t.__ng&&(arguments[1]=t.__ng),e.removeListener.apply(e,arguments)},forward:function(n,t){n instanceof Array==!1&&(n=[n]),t||(t=i),n.forEach(function(n){var o=u+n,i=r(e,function(n){t.$broadcast(o,n)});t.$on("$destroy",function(){e.removeListener(n,i)}),e.on(n,i)})}};return c}}]}); -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/angular-socket-io/socket.min.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"socket.min.js.map","sources":["socket.min.js"],"names":["angular","module","provider","defaultPrefix","this","$get","$rootScope","$timeout","asyncAngularify","socket","callback","args","arguments","apply","noop","options","ioSocket","io","connect","prefix","defaultScope","scope","addListener","eventName","on","__ng","wrappedSocket","emit","data","lastIndex","length","removeListener","ev","fn","forward","events","Array","forEach","prefixedEvent","forwardBroadcast","$broadcast","$on"],"mappings":";;;;;;AAMA,YACAA,SAAQC,OAAO,uBAAwBC,SAAS,gBAAiB,WAE/D,GAAIC,GAAgB,SAEpBC,MAAKC,MACH,aACA,WACA,SAAUC,EAAYC,GACpB,GAAIC,GAAkB,SAAUC,EAAQC,GACtC,MAAOA,GAAW,WAChB,GAAIC,GAAOC,SACXL,GAAS,WACPG,EAASG,MAAMJ,EAAQE,IACtB,IACDX,QAAQc,KAEd,OAAO,UAAuBC,GAC5BA,EAAUA,KACV,IAAIN,GAASM,EAAQC,UAAYC,GAAGC,UAChCC,EAASJ,EAAQI,QAAUhB,EAC3BiB,EAAeL,EAAQM,OAASf,EAChCgB,EAAc,SAAUC,EAAWb,GACrCD,EAAOe,GAAGD,EAAWb,EAASe,KAAOjB,EAAgBC,EAAQC,KAE3DgB,GACAF,GAAIF,EACJA,YAAaA,EACbK,KAAM,SAAUJ,EAAWK,EAAMlB,GAC/B,GAAImB,GAAYjB,UAAUkB,OAAS,EAC/BpB,EAAWE,UAAUiB,EAKzB,OAJuB,kBAAZnB,KACTA,EAAWF,EAAgBC,EAAQC,GACnCE,UAAUiB,GAAanB,GAElBD,EAAOkB,KAAKd,MAAMJ,EAAQG,YAEnCmB,eAAgB,SAAUC,EAAIC,GAI5B,MAHIA,IAAMA,EAAGR,OACXb,UAAU,GAAKqB,EAAGR,MAEbhB,EAAOsB,eAAelB,MAAMJ,EAAQG,YAE7CsB,QAAS,SAAUC,EAAQd,GACrBc,YAAkBC,SAAU,IAC9BD,GAAUA,IAEPd,IACHA,EAAQD,GAEVe,EAAOE,QAAQ,SAAUd,GACvB,GAAIe,GAAgBnB,EAASI,EACzBgB,EAAmB/B,EAAgBC,EAAQ,SAAUmB,GACrDP,EAAMmB,WAAWF,EAAeV,IAEpCP,GAAMoB,IAAI,WAAY,WACpBhC,EAAOsB,eAAeR,EAAWgB,KAEnC9B,EAAOe,GAAGD,EAAWgB,MAI7B,OAAOb"} -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/angular/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular", 3 | "version": "1.2.15", 4 | "main": "./angular.js", 5 | "dependencies": {}, 6 | "homepage": "https://github.com/angular/bower-angular", 7 | "_release": "1.2.15", 8 | "_resolution": { 9 | "type": "version", 10 | "tag": "v1.2.15", 11 | "commit": "5c9d364977256658c6b5274e12ff025994295861" 12 | }, 13 | "_source": "git://github.com/angular/bower-angular.git", 14 | "_target": "1.2.15", 15 | "_originalSource": "angular" 16 | } -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/angular/README.md: -------------------------------------------------------------------------------- 1 | # bower-angular 2 | 3 | This repo is for distribution on `bower`. The source for this module is in the 4 | [main AngularJS repo](https://github.com/angular/angular.js). 5 | Please file issues and pull requests against that repo. 6 | 7 | ## Install 8 | 9 | Install with `bower`: 10 | 11 | ```shell 12 | bower install angular 13 | ``` 14 | 15 | Add a ` 19 | ``` 20 | 21 | ## Documentation 22 | 23 | Documentation is available on the 24 | [AngularJS docs site](http://docs.angularjs.org/). 25 | 26 | ## License 27 | 28 | The MIT License 29 | 30 | Copyright (c) 2010-2012 Google, Inc. http://angularjs.org 31 | 32 | Permission is hereby granted, free of charge, to any person obtaining a copy 33 | of this software and associated documentation files (the "Software"), to deal 34 | in the Software without restriction, including without limitation the rights 35 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 36 | copies of the Software, and to permit persons to whom the Software is 37 | furnished to do so, subject to the following conditions: 38 | 39 | The above copyright notice and this permission notice shall be included in 40 | all copies or substantial portions of the Software. 41 | 42 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 43 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 44 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 45 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 46 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 47 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 48 | THE SOFTWARE. 49 | -------------------------------------------------------------------------------- /angular-frontend/app/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 { 8 | display: none !important; 9 | } 10 | 11 | ng\:form { 12 | display: block; 13 | } 14 | 15 | .ng-animate-block-transitions { 16 | transition:0s all!important; 17 | -webkit-transition:0s all!important; 18 | } 19 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/angular/angular.min.js.gzip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/krimple/angular-socketio-chat/218a26fb6528b29fe37a2615c9c85fb9a3997907/angular-frontend/app/bower_components/angular/angular.min.js.gzip -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/angular/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular", 3 | "version": "1.2.15", 4 | "main": "./angular.js", 5 | "dependencies": { 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/bootstrap/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "bootstrap", 3 | "version": "3.0.3", 4 | "main": [ 5 | "./dist/js/bootstrap.js", 6 | "./dist/css/bootstrap.css", 7 | "./dist/fonts/glyphicons-halflings-regular.eot", 8 | "./dist/fonts/glyphicons-halflings-regular.svg", 9 | "./dist/fonts/glyphicons-halflings-regular.ttf", 10 | "./dist/fonts/glyphicons-halflings-regular.woff" 11 | ], 12 | "ignore": [ 13 | "**/.*", 14 | "_*", 15 | "docs-assets", 16 | "examples", 17 | "/fonts", 18 | "js/tests", 19 | "CNAME", 20 | "CONTRIBUTING.md", 21 | "Gruntfile.js", 22 | "browserstack.json", 23 | "composer.json", 24 | "package.json", 25 | "*.html" 26 | ], 27 | "dependencies": { 28 | "jquery": ">= 1.9.0" 29 | }, 30 | "homepage": "https://github.com/twbs/bootstrap", 31 | "_release": "3.0.3", 32 | "_resolution": { 33 | "type": "version", 34 | "tag": "v3.0.3", 35 | "commit": "6d03173a1aad98e75f7d33e65b411c519176c59a" 36 | }, 37 | "_source": "git://github.com/twbs/bootstrap.git", 38 | "_target": "~3.0.3", 39 | "_originalSource": "bootstrap" 40 | } -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/bootstrap/LICENSE-MIT: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2013 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 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/bootstrap/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "bootstrap", 3 | "version": "3.0.3", 4 | "main": [ 5 | "./dist/js/bootstrap.js", 6 | "./dist/css/bootstrap.css", 7 | "./dist/fonts/glyphicons-halflings-regular.eot", 8 | "./dist/fonts/glyphicons-halflings-regular.svg", 9 | "./dist/fonts/glyphicons-halflings-regular.ttf", 10 | "./dist/fonts/glyphicons-halflings-regular.woff" 11 | ], 12 | "ignore": [ 13 | "**/.*", 14 | "_*", 15 | "docs-assets", 16 | "examples", 17 | "/fonts", 18 | "js/tests", 19 | "CNAME", 20 | "CONTRIBUTING.md", 21 | "Gruntfile.js", 22 | "browserstack.json", 23 | "composer.json", 24 | "package.json", 25 | "*.html" 26 | ], 27 | "dependencies": { 28 | "jquery": ">= 1.9.0" 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/krimple/angular-socketio-chat/218a26fb6528b29fe37a2615c9c85fb9a3997907/angular-frontend/app/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/krimple/angular-socketio-chat/218a26fb6528b29fe37a2615c9c85fb9a3997907/angular-frontend/app/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/krimple/angular-socketio-chat/218a26fb6528b29fe37a2615c9c85fb9a3997907/angular-frontend/app/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/bootstrap/less/alerts.less: -------------------------------------------------------------------------------- 1 | // 2 | // Alerts 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base styles 7 | // ------------------------- 8 | 9 | .alert { 10 | padding: @alert-padding; 11 | margin-bottom: @line-height-computed; 12 | border: 1px solid transparent; 13 | border-radius: @alert-border-radius; 14 | 15 | // Headings for larger alerts 16 | h4 { 17 | margin-top: 0; 18 | // Specified for the h4 to prevent conflicts of changing @headings-color 19 | color: inherit; 20 | } 21 | // Provide class for links that match alerts 22 | .alert-link { 23 | font-weight: @alert-link-font-weight; 24 | } 25 | 26 | // Improve alignment and spacing of inner content 27 | > p, 28 | > ul { 29 | margin-bottom: 0; 30 | } 31 | > p + p { 32 | margin-top: 5px; 33 | } 34 | } 35 | 36 | // Dismissable alerts 37 | // 38 | // Expand the right padding and account for the close button's positioning. 39 | 40 | .alert-dismissable { 41 | padding-right: (@alert-padding + 20); 42 | 43 | // Adjust close link position 44 | .close { 45 | position: relative; 46 | top: -2px; 47 | right: -21px; 48 | color: inherit; 49 | } 50 | } 51 | 52 | // Alternate styles 53 | // 54 | // Generate contextual modifier classes for colorizing the alert. 55 | 56 | .alert-success { 57 | .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text); 58 | } 59 | .alert-info { 60 | .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text); 61 | } 62 | .alert-warning { 63 | .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text); 64 | } 65 | .alert-danger { 66 | .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text); 67 | } 68 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/bootstrap/less/badges.less: -------------------------------------------------------------------------------- 1 | // 2 | // Badges 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base classes 7 | .badge { 8 | display: inline-block; 9 | min-width: 10px; 10 | padding: 3px 7px; 11 | font-size: @font-size-small; 12 | font-weight: @badge-font-weight; 13 | color: @badge-color; 14 | line-height: @badge-line-height; 15 | vertical-align: baseline; 16 | white-space: nowrap; 17 | text-align: center; 18 | background-color: @badge-bg; 19 | border-radius: @badge-border-radius; 20 | 21 | // Empty badges collapse automatically (not available in IE8) 22 | &:empty { 23 | display: none; 24 | } 25 | 26 | // Quick fix for badges in buttons 27 | .btn & { 28 | position: relative; 29 | top: -1px; 30 | } 31 | } 32 | 33 | // Hover state, but only for links 34 | a.badge { 35 | &:hover, 36 | &:focus { 37 | color: @badge-link-hover-color; 38 | text-decoration: none; 39 | cursor: pointer; 40 | } 41 | } 42 | 43 | // Account for counters in navs 44 | a.list-group-item.active > .badge, 45 | .nav-pills > .active > a > .badge { 46 | color: @badge-active-color; 47 | background-color: @badge-active-bg; 48 | } 49 | .nav-pills > li > a > .badge { 50 | margin-left: 3px; 51 | } 52 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/bootstrap/less/bootstrap.less: -------------------------------------------------------------------------------- 1 | // Core variables and mixins 2 | @import "variables.less"; 3 | @import "mixins.less"; 4 | 5 | // Reset 6 | @import "normalize.less"; 7 | @import "print.less"; 8 | 9 | // Core CSS 10 | @import "scaffolding.less"; 11 | @import "type.less"; 12 | @import "code.less"; 13 | @import "grid.less"; 14 | @import "tables.less"; 15 | @import "forms.less"; 16 | @import "buttons.less"; 17 | 18 | // Components 19 | @import "component-animations.less"; 20 | @import "glyphicons.less"; 21 | @import "dropdowns.less"; 22 | @import "button-groups.less"; 23 | @import "input-groups.less"; 24 | @import "navs.less"; 25 | @import "navbar.less"; 26 | @import "breadcrumbs.less"; 27 | @import "pagination.less"; 28 | @import "pager.less"; 29 | @import "labels.less"; 30 | @import "badges.less"; 31 | @import "jumbotron.less"; 32 | @import "thumbnails.less"; 33 | @import "alerts.less"; 34 | @import "progress-bars.less"; 35 | @import "media.less"; 36 | @import "list-group.less"; 37 | @import "panels.less"; 38 | @import "wells.less"; 39 | @import "close.less"; 40 | 41 | // Components w/ JavaScript 42 | @import "modals.less"; 43 | @import "tooltip.less"; 44 | @import "popovers.less"; 45 | @import "carousel.less"; 46 | 47 | // Utility classes 48 | @import "utilities.less"; 49 | @import "responsive-utilities.less"; 50 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/bootstrap/less/breadcrumbs.less: -------------------------------------------------------------------------------- 1 | // 2 | // Breadcrumbs 3 | // -------------------------------------------------- 4 | 5 | 6 | .breadcrumb { 7 | padding: 8px 15px; 8 | margin-bottom: @line-height-computed; 9 | list-style: none; 10 | background-color: @breadcrumb-bg; 11 | border-radius: @border-radius-base; 12 | > li { 13 | display: inline-block; 14 | + li:before { 15 | content: "@{breadcrumb-separator}\00a0"; // Unicode space added since inline-block means non-collapsing white-space 16 | padding: 0 5px; 17 | color: @breadcrumb-color; 18 | } 19 | } 20 | > .active { 21 | color: @breadcrumb-active-color; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /angular-frontend/app/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 | button& { 27 | padding: 0; 28 | cursor: pointer; 29 | background: transparent; 30 | border: 0; 31 | -webkit-appearance: none; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/bootstrap/less/code.less: -------------------------------------------------------------------------------- 1 | // 2 | // Code (inline and block) 3 | // -------------------------------------------------- 4 | 5 | 6 | // Inline and block code styles 7 | code, 8 | kbd, 9 | pre, 10 | samp { 11 | font-family: @font-family-monospace; 12 | } 13 | 14 | // Inline code 15 | code { 16 | padding: 2px 4px; 17 | font-size: 90%; 18 | color: @code-color; 19 | background-color: @code-bg; 20 | white-space: nowrap; 21 | border-radius: @border-radius-base; 22 | } 23 | 24 | // Blocks of code 25 | pre { 26 | display: block; 27 | padding: ((@line-height-computed - 1) / 2); 28 | margin: 0 0 (@line-height-computed / 2); 29 | font-size: (@font-size-base - 1); // 14px to 13px 30 | line-height: @line-height-base; 31 | word-break: break-all; 32 | word-wrap: break-word; 33 | color: @pre-color; 34 | background-color: @pre-bg; 35 | border: 1px solid @pre-border-color; 36 | border-radius: @border-radius-base; 37 | 38 | // Account for some code outputs that place code tags in pre tags 39 | code { 40 | padding: 0; 41 | font-size: inherit; 42 | color: inherit; 43 | white-space: pre-wrap; 44 | background-color: transparent; 45 | border-radius: 0; 46 | } 47 | } 48 | 49 | // Enable scrollable blocks of code 50 | .pre-scrollable { 51 | max-height: @pre-scrollable-max-height; 52 | overflow-y: scroll; 53 | } 54 | -------------------------------------------------------------------------------- /angular-frontend/app/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/twitter/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 | &.in { 21 | display: block; 22 | } 23 | } 24 | .collapsing { 25 | position: relative; 26 | height: 0; 27 | overflow: hidden; 28 | .transition(height .35s ease); 29 | } 30 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/bootstrap/less/jumbotron.less: -------------------------------------------------------------------------------- 1 | // 2 | // Jumbotron 3 | // -------------------------------------------------- 4 | 5 | 6 | .jumbotron { 7 | padding: @jumbotron-padding; 8 | margin-bottom: @jumbotron-padding; 9 | font-size: @jumbotron-font-size; 10 | font-weight: 200; 11 | line-height: (@line-height-base * 1.5); 12 | color: @jumbotron-color; 13 | background-color: @jumbotron-bg; 14 | 15 | h1, 16 | .h1 { 17 | line-height: 1; 18 | color: @jumbotron-heading-color; 19 | } 20 | p { 21 | line-height: 1.4; 22 | } 23 | 24 | .container & { 25 | border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container 26 | } 27 | 28 | .container { 29 | max-width: 100%; 30 | } 31 | 32 | @media screen and (min-width: @screen-sm-min) { 33 | padding-top: (@jumbotron-padding * 1.6); 34 | padding-bottom: (@jumbotron-padding * 1.6); 35 | 36 | .container & { 37 | padding-left: (@jumbotron-padding * 2); 38 | padding-right: (@jumbotron-padding * 2); 39 | } 40 | 41 | h1, 42 | .h1 { 43 | font-size: (@font-size-base * 4.5); 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/bootstrap/less/labels.less: -------------------------------------------------------------------------------- 1 | // 2 | // Labels 3 | // -------------------------------------------------- 4 | 5 | .label { 6 | display: inline; 7 | padding: .2em .6em .3em; 8 | font-size: 75%; 9 | font-weight: bold; 10 | line-height: 1; 11 | color: @label-color; 12 | text-align: center; 13 | white-space: nowrap; 14 | vertical-align: baseline; 15 | border-radius: .25em; 16 | 17 | // Add hover effects, but only for links 18 | &[href] { 19 | &:hover, 20 | &:focus { 21 | color: @label-link-hover-color; 22 | text-decoration: none; 23 | cursor: pointer; 24 | } 25 | } 26 | 27 | // Empty labels collapse automatically (not available in IE8) 28 | &:empty { 29 | display: none; 30 | } 31 | 32 | // Quick fix for labels in buttons 33 | .btn & { 34 | position: relative; 35 | top: -1px; 36 | } 37 | } 38 | 39 | // Colors 40 | // Contextual variations (linked labels get darker on :hover) 41 | 42 | .label-default { 43 | .label-variant(@label-default-bg); 44 | } 45 | 46 | .label-primary { 47 | .label-variant(@label-primary-bg); 48 | } 49 | 50 | .label-success { 51 | .label-variant(@label-success-bg); 52 | } 53 | 54 | .label-info { 55 | .label-variant(@label-info-bg); 56 | } 57 | 58 | .label-warning { 59 | .label-variant(@label-warning-bg); 60 | } 61 | 62 | .label-danger { 63 | .label-variant(@label-danger-bg); 64 | } 65 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/bootstrap/less/media.less: -------------------------------------------------------------------------------- 1 | // Media objects 2 | // Source: http://stubbornella.org/content/?p=497 3 | // -------------------------------------------------- 4 | 5 | 6 | // Common styles 7 | // ------------------------- 8 | 9 | // Clear the floats 10 | .media, 11 | .media-body { 12 | overflow: hidden; 13 | zoom: 1; 14 | } 15 | 16 | // Proper spacing between instances of .media 17 | .media, 18 | .media .media { 19 | margin-top: 15px; 20 | } 21 | .media:first-child { 22 | margin-top: 0; 23 | } 24 | 25 | // For images and videos, set to block 26 | .media-object { 27 | display: block; 28 | } 29 | 30 | // Reset margins on headings for tighter default spacing 31 | .media-heading { 32 | margin: 0 0 5px; 33 | } 34 | 35 | 36 | // Media image alignment 37 | // ------------------------- 38 | 39 | .media { 40 | > .pull-left { 41 | margin-right: 10px; 42 | } 43 | > .pull-right { 44 | margin-left: 10px; 45 | } 46 | } 47 | 48 | 49 | // Media list variation 50 | // ------------------------- 51 | 52 | // Undo default ul/ol styles 53 | .media-list { 54 | padding-left: 0; 55 | list-style: none; 56 | } 57 | -------------------------------------------------------------------------------- /angular-frontend/app/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 | .clearfix(); 12 | li { 13 | display: inline; 14 | > a, 15 | > span { 16 | display: inline-block; 17 | padding: 5px 14px; 18 | background-color: @pagination-bg; 19 | border: 1px solid @pagination-border; 20 | border-radius: @pager-border-radius; 21 | } 22 | 23 | > a:hover, 24 | > a:focus { 25 | text-decoration: none; 26 | background-color: @pagination-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: @pagination-bg; 51 | cursor: not-allowed; 52 | } 53 | } 54 | 55 | } 56 | -------------------------------------------------------------------------------- /angular-frontend/app/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(all .2s ease-in-out); 16 | 17 | > img, 18 | a > img { 19 | .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 | -------------------------------------------------------------------------------- /angular-frontend/app/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 | visibility: hidden !important; 48 | } 49 | 50 | 51 | // For Affix plugin 52 | // ------------------------- 53 | 54 | .affix { 55 | position: fixed; 56 | } 57 | -------------------------------------------------------------------------------- /angular-frontend/app/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 darken(@well-bg, 7%); 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 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/es5-shim/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "es5-shim", 3 | "homepage": "https://github.com/es-shims/es5-shim", 4 | "version": "2.1.0", 5 | "_release": "2.1.0", 6 | "_resolution": { 7 | "type": "version", 8 | "tag": "v2.1.0", 9 | "commit": "07da727ff7db2a3a25d6bc25d13e374b3bbc99c2" 10 | }, 11 | "_source": "git://github.com/es-shims/es5-shim.git", 12 | "_target": "~2.1.0", 13 | "_originalSource": "es5-shim" 14 | } -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/es5-shim/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/es5-shim/CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | 2 | - kriskowal Kris Kowal Copyright (C) 2009-2011 MIT License 3 | - tlrobinson Tom Robinson Copyright (C) 2009-2010 MIT License (Narwhal 4 | Project) 5 | - dantman Daniel Friesen Copyright (C) 2010 XXX TODO License or CLA 6 | - fschaefer Florian Schäfer Copyright (C) 2010 MIT License 7 | - Gozala Irakli Gozalishvili Copyright (C) 2010 MIT License 8 | - kitcambridge Kit Cambridge Copyright (C) 2011 MIT License 9 | - kossnocorp Sasha Koss XXX TODO License or CLA 10 | - bryanforbes Bryan Forbes XXX TODO License or CLA 11 | - killdream Quildreen Motta Copyright (C) 2011 MIT Licence 12 | - michaelficarra Michael Ficarra Copyright (C) 2011 3-clause BSD 13 | License 14 | - sharkbrainguy Gerard Paapu Copyright (C) 2011 MIT License 15 | - bbqsrc Brendan Molloy (C) 2011 Creative Commons Zero (public domain) 16 | - iwyg XXX TODO License or CLA 17 | - DomenicDenicola Domenic Denicola Copyright (C) 2011 MIT License 18 | - xavierm02 Montillet Xavier Copyright (C) 2011 MIT License 19 | - Raynos Jake Verbaten Copyright (C) 2011 MIT Licence 20 | - samsonjs Sami Samhuri Copyright (C) 2010 MIT License 21 | - rwldrn Rick Waldron Copyright (C) 2011 MIT License 22 | - lexer Alexey Zakharov XXX TODO License or CLA 23 | - 280 North Inc. (Now Motorola LLC, a subsidiary of Google Inc.) 24 | Copyright (C) 2009 MIT License 25 | - Steven Levithan Copyright (C) 2012 MIT License 26 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/es5-shim/LICENSE: -------------------------------------------------------------------------------- 1 | 2 | Copyright 2009, 2010 Kristopher Michael Kowal. All rights reserved. 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 5 | deal in the Software without restriction, including without limitation the 6 | rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 7 | sell 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 18 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 19 | IN THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/es5-shim/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "es5-shim", 3 | "version": "2.1.0", 4 | "description": "ES5 as implementable on previous engines", 5 | "homepage": "http://github.com/kriskowal/es5-shim/", 6 | "contributors": [ 7 | "Kris Kowal (http://github.com/kriskowal/)", 8 | "Sami Samhuri (http://samhuri.net/)", 9 | "Florian Schäfer (http://github.com/fschaefer)", 10 | "Irakli Gozalishvili (http://jeditoolkit.com)", 11 | "Kit Cambridge (http://kitcambridge.github.com)" 12 | ], 13 | "bugs": { 14 | "mail": "kris@cixar.com", 15 | "url": "http://github.com/kriskowal/es5-shim/issues" 16 | }, 17 | "licenses": [ 18 | { 19 | "type": "MIT", 20 | "url": "http://github.com/kriskowal/es5-shim/raw/master/LICENSE" 21 | } 22 | ], 23 | "main": "es5-shim.js", 24 | "repository": { 25 | "type": "git", 26 | "url": "http://github.com/kriskowal/es5-shim.git" 27 | }, 28 | "scripts": { 29 | "minify": "uglifyjs es5-shim.js --source-map=es5-shim.map -b ascii_only=true,beautify=false > es5-shim.min.js; uglifyjs es5-sham.js --source-map=es5-sham.map -b ascii_only=true,beautify=false > es5-sham.min.js" 30 | }, 31 | "engines": { 32 | "node": ">=0.2.0" 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/es5-shim/tests/helpers/h-kill.js: -------------------------------------------------------------------------------- 1 | // This methods allows the killing of built-in functions, 2 | // so the shim can take over with that implementation 3 | var HLP = (function() { 4 | "use strict"; 5 | var kill; 6 | 7 | kill = function(_class, methods) { 8 | /*if(!Array.isArray(methods)) 9 | return;*/ 10 | if(!_class.originals) 11 | _class.originals = {}; 12 | 13 | for (var i = 0, len = methods.length; i < len; i++) { 14 | var obj = methods[i]; 15 | _class.originals[obj] = _class[obj]; 16 | delete _class[obj]; 17 | if (obj in _class) { 18 | // try something more aggressive since V8 at least 19 | // appears to ignore the delete. 20 | _class[obj] = null; 21 | if (_class[obj]) { 22 | console.log("Couln't overwrite", obj, "of", _class); 23 | } 24 | } 25 | } 26 | }; 27 | return { kill: kill }; 28 | }()); 29 | 30 | HLP.kill(Function.prototype, [ 31 | 'bind' 32 | ]); 33 | 34 | HLP.kill(Array, [ 35 | 'isArray' 36 | ]); 37 | 38 | HLP.kill(String.prototype, [ 39 | "trim" 40 | ]); 41 | 42 | HLP.kill(Object, [ 43 | 'keys' 44 | ]); 45 | 46 | HLP.kill(Number.prototype, [ 47 | 'toFixed' 48 | ]); 49 | 50 | HLP.kill(Date, [ 51 | 'now', 'parse' 52 | ]); 53 | 54 | HLP.kill(Date.prototype, [ 55 | "toJSON", "toISOString" 56 | ]); 57 | 58 | HLP.kill(Array.prototype, [ 59 | 'forEach', 'some', 'every', 60 | 'indexOf', 'lastIndexOf', 61 | 'map', 'filter', 62 | 'reduce', 'reduceRight' 63 | ]); 64 | 65 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/es5-shim/tests/helpers/h-matchers.js: -------------------------------------------------------------------------------- 1 | beforeEach(function() { 2 | this.addMatchers({ 3 | toExactlyMatch: function(expected) { 4 | var a1, a2, 5 | l, i, 6 | key, 7 | actual = this.actual; 8 | 9 | var getKeys = function(o) { 10 | var a = []; 11 | for(key in o) { 12 | if(o.hasOwnProperty(key)) { 13 | a.push(key); 14 | } 15 | } 16 | return a; 17 | } 18 | a1 = getKeys(actual); 19 | a2 = getKeys(expected); 20 | 21 | l = a1.length; 22 | if(l !== a2.length) { 23 | return false; 24 | } 25 | for(i = 0; i < l; i++) { 26 | key = a1[i]; 27 | expect(key).toEqual(a2[i]); 28 | expect(actual[key]).toEqual(expected[key]); 29 | } 30 | 31 | return true; 32 | } 33 | }) 34 | }); 35 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/es5-shim/tests/helpers/h.js: -------------------------------------------------------------------------------- 1 | function implement() { 2 | throw 'Not implemented'; 3 | } -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/es5-shim/tests/index.min.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Jasmine Spec Runner 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/es5-shim/tests/lib/jasmine_favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/krimple/angular-socketio-chat/218a26fb6528b29fe37a2615c9c85fb9a3997907/angular-frontend/app/bower_components/es5-shim/tests/lib/jasmine_favicon.png -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/es5-shim/tests/spec/s-number.js: -------------------------------------------------------------------------------- 1 | describe('Number', function () { 2 | 'use strict'; 3 | 4 | describe('toFixed', function () { 5 | it('should convert numbers correctly', function () { 6 | expect((0.00008).toFixed(3)).toBe('0.000'); 7 | expect((0.9).toFixed(0)).toBe('1'); 8 | expect((1.255).toFixed(2)).toBe('1.25'); 9 | expect((1843654265.0774949).toFixed(5)).toBe('1843654265.07749'); 10 | expect((1000000000000000128).toFixed(0)).toBe('1000000000000000128'); 11 | }); 12 | }); 13 | 14 | }); 15 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/jquery/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jquery", 3 | "version": "1.11.0", 4 | "main": "dist/jquery.js", 5 | "license": "MIT", 6 | "ignore": [ 7 | "**/.*", 8 | "build", 9 | "speed", 10 | "test", 11 | "*.md", 12 | "AUTHORS.txt", 13 | "Gruntfile.js", 14 | "package.json" 15 | ], 16 | "devDependencies": { 17 | "sizzle": "1.10.16", 18 | "requirejs": "~2.1.8", 19 | "qunit": "~1.12.0", 20 | "sinon": "~1.7.3" 21 | }, 22 | "keywords": [ 23 | "jquery", 24 | "javascript", 25 | "library" 26 | ], 27 | "homepage": "https://github.com/jquery/jquery", 28 | "_release": "1.11.0", 29 | "_resolution": { 30 | "type": "version", 31 | "tag": "1.11.0", 32 | "commit": "91cd1587ed4a1d4f3834227e8eb3cc30cb385409" 33 | }, 34 | "_source": "git://github.com/jquery/jquery.git", 35 | "_target": "~1.11.0", 36 | "_originalSource": "jquery" 37 | } -------------------------------------------------------------------------------- /angular-frontend/app/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 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/jquery/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jquery", 3 | "version": "1.11.0", 4 | "main": "dist/jquery.js", 5 | "license": "MIT", 6 | "ignore": [ 7 | "**/.*", 8 | "build", 9 | "speed", 10 | "test", 11 | "*.md", 12 | "AUTHORS.txt", 13 | "Gruntfile.js", 14 | "package.json" 15 | ], 16 | "devDependencies": { 17 | "sizzle": "1.10.16", 18 | "requirejs": "~2.1.8", 19 | "qunit": "~1.12.0", 20 | "sinon": "~1.7.3" 21 | }, 22 | "keywords": [ 23 | "jquery", 24 | "javascript", 25 | "library" 26 | ] 27 | } 28 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/jquery/src/ajax/parseJSON.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core" 3 | ], function( jQuery ) { 4 | 5 | var rvalidtokens = /(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g; 6 | 7 | jQuery.parseJSON = function( data ) { 8 | // Attempt to parse using the native JSON parser first 9 | if ( window.JSON && window.JSON.parse ) { 10 | // Support: Android 2.3 11 | // Workaround failure to string-cast null input 12 | return window.JSON.parse( data + "" ); 13 | } 14 | 15 | var requireNonComma, 16 | depth = null, 17 | str = jQuery.trim( data + "" ); 18 | 19 | // Guard against invalid (and possibly dangerous) input by ensuring that nothing remains 20 | // after removing valid tokens 21 | return str && !jQuery.trim( str.replace( rvalidtokens, function( token, comma, open, close ) { 22 | 23 | // Force termination if we see a misplaced comma 24 | if ( requireNonComma && comma ) { 25 | depth = 0; 26 | } 27 | 28 | // Perform no more replacements after returning to outermost depth 29 | if ( depth === 0 ) { 30 | return token; 31 | } 32 | 33 | // Commas must not follow "[", "{", or "," 34 | requireNonComma = open || comma; 35 | 36 | // Determine new depth 37 | // array/object open ("[" or "{"): depth += true - false (increment) 38 | // array/object close ("]" or "}"): depth += false - true (decrement) 39 | // other cases ("," or primitive): depth += true - true (numeric cast) 40 | depth += !close - !open; 41 | 42 | // Remove this token 43 | return ""; 44 | }) ) ? 45 | ( Function( "return " + str ) )() : 46 | jQuery.error( "Invalid JSON: " + data ); 47 | }; 48 | 49 | return jQuery.parseJSON; 50 | 51 | }); 52 | -------------------------------------------------------------------------------- /angular-frontend/app/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 | try { 12 | if ( window.DOMParser ) { // Standard 13 | tmp = new DOMParser(); 14 | xml = tmp.parseFromString( data, "text/xml" ); 15 | } else { // IE 16 | xml = new ActiveXObject( "Microsoft.XMLDOM" ); 17 | xml.async = "false"; 18 | xml.loadXML( data ); 19 | } 20 | } catch( e ) { 21 | xml = undefined; 22 | } 23 | if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) { 24 | jQuery.error( "Invalid XML: " + data ); 25 | } 26 | return xml; 27 | }; 28 | 29 | return jQuery.parseXML; 30 | 31 | }); 32 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/jquery/src/ajax/var/nonce.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../../core" 3 | ], function( jQuery ) { 4 | return jQuery.now(); 5 | }); 6 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/jquery/src/ajax/var/rquery.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return (/\?/); 3 | }); 4 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/jquery/src/attributes.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./core", 3 | "./attributes/val", 4 | "./attributes/attr", 5 | "./attributes/prop", 6 | "./attributes/classes" 7 | ], function( jQuery ) { 8 | 9 | // Return jQuery for attributes-only inclusion 10 | return jQuery; 11 | }); 12 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/jquery/src/core/access.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core" 3 | ], function( jQuery ) { 4 | 5 | // Multifunctional method to get and set values of a collection 6 | // The value/s can optionally be executed if it's a function 7 | var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) { 8 | var i = 0, 9 | length = elems.length, 10 | bulk = key == null; 11 | 12 | // Sets many values 13 | if ( jQuery.type( key ) === "object" ) { 14 | chainable = true; 15 | for ( i in key ) { 16 | jQuery.access( elems, fn, i, key[i], true, emptyGet, raw ); 17 | } 18 | 19 | // Sets one value 20 | } else if ( value !== undefined ) { 21 | chainable = true; 22 | 23 | if ( !jQuery.isFunction( value ) ) { 24 | raw = true; 25 | } 26 | 27 | if ( bulk ) { 28 | // Bulk operations run against the entire set 29 | if ( raw ) { 30 | fn.call( elems, value ); 31 | fn = null; 32 | 33 | // ...except when executing function values 34 | } else { 35 | bulk = fn; 36 | fn = function( elem, key, value ) { 37 | return bulk.call( jQuery( elem ), value ); 38 | }; 39 | } 40 | } 41 | 42 | if ( fn ) { 43 | for ( ; i < length; i++ ) { 44 | fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) ); 45 | } 46 | } 47 | } 48 | 49 | return chainable ? 50 | elems : 51 | 52 | // Gets 53 | bulk ? 54 | fn.call( elems ) : 55 | length ? fn( elems[0], key ) : emptyGet; 56 | }; 57 | 58 | return access; 59 | 60 | }); 61 | -------------------------------------------------------------------------------- /angular-frontend/app/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 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/jquery/src/core/var/rsingleTag.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | // Match a standalone tag 3 | return (/^<(\w+)\s*\/?>(?:<\/\1>|)$/); 4 | }); 5 | -------------------------------------------------------------------------------- /angular-frontend/app/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 | var condition = conditionFn(); 8 | 9 | if ( condition == null ) { 10 | // The test was not ready at this point; screw the hook this time 11 | // but check again when needed next time. 12 | return; 13 | } 14 | 15 | if ( condition ) { 16 | // Hook not needed (or it's not possible to use it due to missing dependency), 17 | // remove it. 18 | // Since there are no other hooks for marginRight, remove the whole object. 19 | delete this.get; 20 | return; 21 | } 22 | 23 | // Hook needed; redefine it so that the support test is not executed again. 24 | 25 | return (this.get = hookFn).apply( this, arguments ); 26 | } 27 | }; 28 | } 29 | 30 | return addGetHookIf; 31 | 32 | }); 33 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/jquery/src/css/hiddenVisibleSelectors.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core", 3 | "./support", 4 | "../selector", 5 | "../css" 6 | ], function( jQuery, support ) { 7 | 8 | jQuery.expr.filters.hidden = function( elem ) { 9 | // Support: Opera <= 12.12 10 | // Opera reports offsetWidths and offsetHeights less than zero on some elements 11 | return elem.offsetWidth <= 0 && elem.offsetHeight <= 0 || 12 | (!support.reliableHiddenOffsets() && 13 | ((elem.style && elem.style.display) || jQuery.css( elem, "display" )) === "none"); 14 | }; 15 | 16 | jQuery.expr.filters.visible = function( elem ) { 17 | return !jQuery.expr.filters.hidden( elem ); 18 | }; 19 | 20 | }); 21 | -------------------------------------------------------------------------------- /angular-frontend/app/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 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/jquery/src/css/var/cssExpand.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return [ "Top", "Right", "Bottom", "Left" ]; 3 | }); 4 | -------------------------------------------------------------------------------- /angular-frontend/app/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 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/jquery/src/css/var/rmargin.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return (/^margin/); 3 | }); 4 | -------------------------------------------------------------------------------- /angular-frontend/app/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 | -------------------------------------------------------------------------------- /angular-frontend/app/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( elem ) { 9 | var noData = jQuery.noData[ (elem.nodeName + " ").toLowerCase() ], 10 | nodeType = +elem.nodeType || 1; 11 | 12 | // Do not set data on non-element DOM nodes because it will not be cleared (#8335). 13 | return nodeType !== 1 && nodeType !== 9 ? 14 | false : 15 | 16 | // Nodes accept data unless otherwise specified; rejection can be conditional 17 | !noData || noData !== true && elem.getAttribute("classid") === noData; 18 | }; 19 | 20 | return jQuery.acceptData; 21 | }); 22 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/jquery/src/data/support.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../var/support" 3 | ], function( support ) { 4 | 5 | (function() { 6 | var div = document.createElement( "div" ); 7 | 8 | // Execute the test only if not already executed in another module. 9 | if (support.deleteExpando == null) { 10 | // Support: IE<9 11 | support.deleteExpando = true; 12 | try { 13 | delete div.test; 14 | } catch( e ) { 15 | support.deleteExpando = false; 16 | } 17 | } 18 | 19 | // Null elements to avoid leaks in IE. 20 | div = null; 21 | })(); 22 | 23 | return support; 24 | 25 | }); 26 | -------------------------------------------------------------------------------- /angular-frontend/app/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 | -------------------------------------------------------------------------------- /angular-frontend/app/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 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/jquery/src/event/alias.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core", 3 | "../event" 4 | ], function( jQuery ) { 5 | 6 | jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " + 7 | "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + 8 | "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) { 9 | 10 | // Handle event binding 11 | jQuery.fn[ name ] = function( data, fn ) { 12 | return arguments.length > 0 ? 13 | this.on( name, null, data, fn ) : 14 | this.trigger( name ); 15 | }; 16 | }); 17 | 18 | jQuery.fn.extend({ 19 | hover: function( fnOver, fnOut ) { 20 | return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); 21 | }, 22 | 23 | bind: function( types, data, fn ) { 24 | return this.on( types, null, data, fn ); 25 | }, 26 | unbind: function( types, fn ) { 27 | return this.off( types, null, fn ); 28 | }, 29 | 30 | delegate: function( selector, types, data, fn ) { 31 | return this.on( types, selector, data, fn ); 32 | }, 33 | undelegate: function( selector, types, fn ) { 34 | // ( namespace ) or ( selector, types [, fn] ) 35 | return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn ); 36 | } 37 | }); 38 | 39 | }); 40 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/jquery/src/event/support.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../var/support" 3 | ], function( support ) { 4 | 5 | (function() { 6 | var i, eventName, 7 | div = document.createElement( "div" ); 8 | 9 | // Support: IE<9 (lack submit/change bubble), Firefox 23+ (lack focusin event) 10 | for ( i in { submit: true, change: true, focusin: true }) { 11 | eventName = "on" + i; 12 | 13 | if ( !(support[ i + "Bubbles" ] = eventName in window) ) { 14 | // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP) 15 | div.setAttribute( eventName, "t" ); 16 | support[ i + "Bubbles" ] = div.attributes[ eventName ].expando === false; 17 | } 18 | } 19 | 20 | // Null elements to avoid leaks in IE. 21 | div = null; 22 | })(); 23 | 24 | return support; 25 | 26 | }); 27 | -------------------------------------------------------------------------------- /angular-frontend/app/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 | if ( typeof define === "function" && define.amd ) { 13 | define( "jquery", [], function() { 14 | return jQuery; 15 | }); 16 | } 17 | 18 | }); 19 | -------------------------------------------------------------------------------- /angular-frontend/app/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 26 | // AMD (#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 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/jquery/src/intro.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery JavaScript Library v@VERSION 3 | * http://jquery.com/ 4 | * 5 | * Includes Sizzle.js 6 | * http://sizzlejs.com/ 7 | * 8 | * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors 9 | * Released under the MIT license 10 | * http://jquery.org/license 11 | * 12 | * Date: @DATE 13 | */ 14 | 15 | (function( global, factory ) { 16 | 17 | if ( typeof module === "object" && typeof module.exports === "object" ) { 18 | // For CommonJS and CommonJS-like environments where a proper window is present, 19 | // execute the factory and get jQuery 20 | // For environments that do not inherently posses a window with a document 21 | // (such as Node.js), expose a jQuery-making factory as module.exports 22 | // This accentuates the need for the creation of a real window 23 | // e.g. var jQuery = require("jquery")(window); 24 | // See ticket #14549 for more info 25 | module.exports = global.document ? 26 | factory( global, true ) : 27 | function( w ) { 28 | if ( !w.document ) { 29 | throw new Error( "jQuery requires a window with a document" ); 30 | } 31 | return factory( w ); 32 | }; 33 | } else { 34 | factory( global ); 35 | } 36 | 37 | // Pass this if window is not defined yet 38 | }(typeof window !== "undefined" ? window : this, function( window, noGlobal ) { 39 | 40 | // Can't do this because several apps including ASP.NET trace 41 | // the stack via arguments.caller.callee and Firefox dies if 42 | // you try to trace through "use strict" call chains. (#13335) 43 | // Support: Firefox 18+ 44 | //"use strict"; 45 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/jquery/src/jquery.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./core", 3 | "./selector", 4 | "./traversing", 5 | "./callbacks", 6 | "./deferred", 7 | "./core/ready", 8 | "./support", 9 | "./data", 10 | "./queue", 11 | "./queue/delay", 12 | "./attributes", 13 | "./event", 14 | "./event/alias", 15 | "./manipulation", 16 | "./manipulation/_evalUrl", 17 | "./wrap", 18 | "./css", 19 | "./css/hiddenVisibleSelectors", 20 | "./serialize", 21 | "./ajax", 22 | "./ajax/xhr", 23 | "./ajax/script", 24 | "./ajax/jsonp", 25 | "./ajax/load", 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 | -------------------------------------------------------------------------------- /angular-frontend/app/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 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/jquery/src/manipulation/var/rcheckableType.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return (/^(?:checkbox|radio)$/i); 3 | }); 4 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/jquery/src/outro.js: -------------------------------------------------------------------------------- 1 | })); 2 | -------------------------------------------------------------------------------- /angular-frontend/app/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 | -------------------------------------------------------------------------------- /angular-frontend/app/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 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/jquery/src/selector.js: -------------------------------------------------------------------------------- 1 | define([ "./selector-sizzle" ]); 2 | -------------------------------------------------------------------------------- /angular-frontend/app/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 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/jquery/src/var/class2type.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | // [[Class]] -> type pairs 3 | return {}; 4 | }); 5 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/jquery/src/var/concat.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./deletedIds" 3 | ], function( deletedIds ) { 4 | return deletedIds.concat; 5 | }); 6 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/jquery/src/var/deletedIds.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return []; 3 | }); 4 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/jquery/src/var/hasOwn.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./class2type" 3 | ], function( class2type ) { 4 | return class2type.hasOwnProperty; 5 | }); 6 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/jquery/src/var/indexOf.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./deletedIds" 3 | ], function( deletedIds ) { 4 | return deletedIds.indexOf; 5 | }); 6 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/jquery/src/var/pnum.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source; 3 | }); 4 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/jquery/src/var/push.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./deletedIds" 3 | ], function( deletedIds ) { 4 | return deletedIds.push; 5 | }); 6 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/jquery/src/var/rnotwhite.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return (/\S+/g); 3 | }); 4 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/jquery/src/var/slice.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./deletedIds" 3 | ], function( deletedIds ) { 4 | return deletedIds.slice; 5 | }); 6 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/jquery/src/var/strundefined.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return typeof undefined; 3 | }); 4 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/jquery/src/var/support.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | // All support tests are defined in their respective modules. 3 | return {}; 4 | }); 5 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/jquery/src/var/toString.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./class2type" 3 | ], function( class2type ) { 4 | return class2type.toString; 5 | }); 6 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/jquery/src/var/trim.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return "".trim; 3 | }); 4 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/jquery/src/wrap.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./core", 3 | "./core/init", 4 | "./traversing" // parent, contents 5 | ], function( jQuery ) { 6 | 7 | jQuery.fn.extend({ 8 | wrapAll: function( html ) { 9 | if ( jQuery.isFunction( html ) ) { 10 | return this.each(function(i) { 11 | jQuery(this).wrapAll( html.call(this, i) ); 12 | }); 13 | } 14 | 15 | if ( this[0] ) { 16 | // The elements to wrap the target around 17 | var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true); 18 | 19 | if ( this[0].parentNode ) { 20 | wrap.insertBefore( this[0] ); 21 | } 22 | 23 | wrap.map(function() { 24 | var elem = this; 25 | 26 | while ( elem.firstChild && elem.firstChild.nodeType === 1 ) { 27 | elem = elem.firstChild; 28 | } 29 | 30 | return elem; 31 | }).append( this ); 32 | } 33 | 34 | return this; 35 | }, 36 | 37 | wrapInner: function( html ) { 38 | if ( jQuery.isFunction( html ) ) { 39 | return this.each(function(i) { 40 | jQuery(this).wrapInner( html.call(this, i) ); 41 | }); 42 | } 43 | 44 | return this.each(function() { 45 | var self = jQuery( this ), 46 | contents = self.contents(); 47 | 48 | if ( contents.length ) { 49 | contents.wrapAll( html ); 50 | 51 | } else { 52 | self.append( html ); 53 | } 54 | }); 55 | }, 56 | 57 | wrap: function( html ) { 58 | var isFunction = jQuery.isFunction( html ); 59 | 60 | return this.each(function(i) { 61 | jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html ); 62 | }); 63 | }, 64 | 65 | unwrap: function() { 66 | return this.parent().each(function() { 67 | if ( !jQuery.nodeName( this, "body" ) ) { 68 | jQuery( this ).replaceWith( this.childNodes ); 69 | } 70 | }).end(); 71 | } 72 | }); 73 | 74 | return jQuery; 75 | }); 76 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/json3/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "json3", 3 | "version": "3.2.6", 4 | "main": "lib/json3.min.js", 5 | "repository": { 6 | "type": "git", 7 | "url": "git://github.com/bestiejs/json3.git" 8 | }, 9 | "ignore": [ 10 | ".*", 11 | "build.js", 12 | "index.html", 13 | "index.js", 14 | "component.json", 15 | "package.json", 16 | "benchmark", 17 | "page", 18 | "test", 19 | "vendor" 20 | ], 21 | "homepage": "https://github.com/bestiejs/json3", 22 | "_release": "3.2.6", 23 | "_resolution": { 24 | "type": "version", 25 | "tag": "v3.2.6", 26 | "commit": "7b89fd94939f970f316420e157a836cc68aa2207" 27 | }, 28 | "_source": "git://github.com/bestiejs/json3.git", 29 | "_target": "~3.2.6", 30 | "_originalSource": "json3" 31 | } -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/json3/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2012-2013 Kit Cambridge. 2 | http://kitcambridge.be/ 3 | 4 | Permission is hereby granted, free of charge, to any person obtaining a copy of 5 | this software and associated documentation files (the "Software"), to deal in 6 | the Software without restriction, including without limitation the rights to 7 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 8 | of the Software, and to permit persons to whom the Software is furnished to do 9 | so, subject to the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be included in all 12 | 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 THE 20 | SOFTWARE. -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/json3/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "json3", 3 | "version": "3.2.6", 4 | "main": "lib/json3.min.js", 5 | "repository": { 6 | "type": "git", 7 | "url": "git://github.com/bestiejs/json3.git" 8 | }, 9 | "ignore": [ 10 | ".*", 11 | "build.js", 12 | "index.html", 13 | "index.js", 14 | "component.json", 15 | "package.json", 16 | "benchmark", 17 | "page", 18 | "test", 19 | "vendor" 20 | ] 21 | } 22 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io-client/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "socket.io-client", 3 | "homepage": "https://github.com/LearnBoost/socket.io-client", 4 | "version": "0.9.16", 5 | "_release": "0.9.16", 6 | "_resolution": { 7 | "type": "version", 8 | "tag": "0.9.16", 9 | "commit": "947d0a4c0653c901924c0aeb2c99771a9c01f705" 10 | }, 11 | "_source": "git://github.com/LearnBoost/socket.io-client.git", 12 | "_target": "~0.9.16", 13 | "_originalSource": "socket.io-client", 14 | "_direct": true 15 | } -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io-client/.gitignore: -------------------------------------------------------------------------------- 1 | s3 2 | test/node_modules 3 | support/test-runner/node_modules 4 | node_modules 5 | .DS_Store 6 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io-client/.npmignore: -------------------------------------------------------------------------------- 1 | test/node_modules 2 | support 3 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io-client/Makefile: -------------------------------------------------------------------------------- 1 | 2 | ALL_TESTS = $(shell find test/ -name '*.test.js') 3 | 4 | run-tests: 5 | @./node_modules/.bin/expresso \ 6 | -I lib \ 7 | -I support \ 8 | --serial \ 9 | $(TESTS) 10 | 11 | test: 12 | @$(MAKE) TESTS="$(ALL_TESTS)" run-tests 13 | 14 | test-acceptance: 15 | @node support/test-runner/app $(TRANSPORT) 16 | 17 | build: 18 | @node ./bin/builder.js 19 | 20 | .PHONY: test 21 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io-client/dist/WebSocketMain.swf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/krimple/angular-socketio-chat/218a26fb6528b29fe37a2615c9c85fb9a3997907/angular-frontend/app/bower_components/socket.io-client/dist/WebSocketMain.swf -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io-client/dist/WebSocketMainInsecure.swf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/krimple/angular-socketio-chat/218a26fb6528b29fe37a2615c9c85fb9a3997907/angular-frontend/app/bower_components/socket.io-client/dist/WebSocketMainInsecure.swf -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io-client/lib/vendor/web-socket-js/.gitignore: -------------------------------------------------------------------------------- 1 | test.html 2 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io-client/lib/vendor/web-socket-js/WebSocketMain.swf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/krimple/angular-socketio-chat/218a26fb6528b29fe37a2615c9c85fb9a3997907/angular-frontend/app/bower_components/socket.io-client/lib/vendor/web-socket-js/WebSocketMain.swf -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io-client/lib/vendor/web-socket-js/WebSocketMainInsecure.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/krimple/angular-socketio-chat/218a26fb6528b29fe37a2615c9c85fb9a3997907/angular-frontend/app/bower_components/socket.io-client/lib/vendor/web-socket-js/WebSocketMainInsecure.zip -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io-client/lib/vendor/web-socket-js/flash-src/IWebSocketLogger.as: -------------------------------------------------------------------------------- 1 | package { 2 | 3 | public interface IWebSocketLogger { 4 | function log(message:String):void; 5 | function error(message:String):void; 6 | } 7 | 8 | } 9 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io-client/lib/vendor/web-socket-js/flash-src/WebSocketEvent.as: -------------------------------------------------------------------------------- 1 | package { 2 | 3 | import flash.events.Event; 4 | 5 | /** 6 | * This class represents a generic websocket event. It contains the standard "type" 7 | * parameter as well as a "message" parameter. 8 | */ 9 | public class WebSocketEvent extends Event { 10 | 11 | public static const OPEN:String = "open"; 12 | public static const CLOSE:String = "close"; 13 | public static const MESSAGE:String = "message"; 14 | public static const ERROR:String = "error"; 15 | 16 | public var message:String; 17 | 18 | public function WebSocketEvent( 19 | type:String, message:String = null, bubbles:Boolean = false, cancelable:Boolean = false) { 20 | super(type, bubbles, cancelable); 21 | this.message = message; 22 | } 23 | 24 | public override function clone():Event { 25 | return new WebSocketEvent(this.type, this.message, this.bubbles, this.cancelable); 26 | } 27 | 28 | public override function toString():String { 29 | return "WebSocketEvent: " + this.type + ": " + this.message; 30 | } 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io-client/lib/vendor/web-socket-js/flash-src/WebSocketMainInsecure.as: -------------------------------------------------------------------------------- 1 | // Copyright: Hiroshi Ichikawa 2 | // License: New BSD License 3 | // Reference: http://dev.w3.org/html5/websockets/ 4 | // Reference: http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol-76 5 | 6 | package { 7 | 8 | import flash.system.*; 9 | 10 | public class WebSocketMainInsecure extends WebSocketMain { 11 | 12 | public function WebSocketMainInsecure() { 13 | Security.allowDomain("*"); 14 | super(); 15 | } 16 | 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io-client/lib/vendor/web-socket-js/flash-src/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # You need Flex 4 SDK: 4 | # http://opensource.adobe.com/wiki/display/flexsdk/Download+Flex+4 5 | 6 | mxmlc -static-link-runtime-shared-libraries -target-player=10.0.0 -output=../WebSocketMain.swf WebSocketMain.as && 7 | mxmlc -static-link-runtime-shared-libraries -output=../WebSocketMainInsecure.swf WebSocketMainInsecure.as && 8 | cd .. && 9 | zip WebSocketMainInsecure.zip WebSocketMainInsecure.swf && 10 | rm WebSocketMainInsecure.swf 11 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/hash/IHMAC.as: -------------------------------------------------------------------------------- 1 | /** 2 | * HMAC 3 | * 4 | * An ActionScript 3 interface for HMAC & MAC 5 | * implementations. 6 | * 7 | * Loosely copyrighted by Bobby Parker 8 | * 9 | * See LICENSE.txt for full license information. 10 | */ 11 | package com.hurlant.crypto.hash 12 | { 13 | import flash.utils.ByteArray; 14 | 15 | public interface IHMAC 16 | { 17 | function getHashSize():uint; 18 | /** 19 | * Compute a HMAC using a key and some data. 20 | * It doesn't modify either, and returns a new ByteArray with the HMAC value. 21 | */ 22 | function compute(key:ByteArray, data:ByteArray):ByteArray; 23 | function dispose():void; 24 | function toString():String; 25 | 26 | } 27 | } -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/hash/IHash.as: -------------------------------------------------------------------------------- 1 | /** 2 | * IHash 3 | * 4 | * An interface for each hash function to implement 5 | * Copyright (c) 2007 Henri Torgemane 6 | * 7 | * See LICENSE.txt for full license information. 8 | */ 9 | package com.hurlant.crypto.hash 10 | { 11 | import flash.utils.ByteArray; 12 | 13 | public interface IHash 14 | { 15 | function getInputSize():uint; 16 | function getHashSize():uint; 17 | function hash(src:ByteArray):ByteArray; 18 | function toString():String; 19 | function getPadSize():int; 20 | } 21 | } -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/hash/SHA224.as: -------------------------------------------------------------------------------- 1 | /** 2 | * SHA224 3 | * 4 | * An ActionScript 3 implementation of Secure Hash Algorithm, SHA-224, as defined 5 | * in FIPS PUB 180-2 6 | * Copyright (c) 2007 Henri Torgemane 7 | * 8 | * See LICENSE.txt for full license information. 9 | */ 10 | package com.hurlant.crypto.hash 11 | { 12 | public class SHA224 extends SHA256 13 | { 14 | function SHA224() { 15 | h = [ 16 | 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, 17 | 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 18 | ]; 19 | } 20 | 21 | public override function getHashSize():uint { 22 | return 28; 23 | } 24 | public override function toString():String { 25 | return "sha224"; 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/prng/IPRNG.as: -------------------------------------------------------------------------------- 1 | /** 2 | * IPRNG 3 | * 4 | * An interface for classes that can be used a pseudo-random number generators 5 | * Copyright (c) 2007 Henri Torgemane 6 | * 7 | * See LICENSE.txt for full license information. 8 | */ 9 | package com.hurlant.crypto.prng 10 | { 11 | import flash.utils.ByteArray; 12 | 13 | public interface IPRNG { 14 | function getPoolSize():uint; 15 | function init(key:ByteArray):void; 16 | function next():uint; 17 | function dispose():void; 18 | function toString():String; 19 | } 20 | } -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/CBCMode.as: -------------------------------------------------------------------------------- 1 | /** 2 | * CBCMode 3 | * 4 | * An ActionScript 3 implementation of the CBC confidentiality mode 5 | * Copyright (c) 2007 Henri Torgemane 6 | * 7 | * See LICENSE.txt for full license information. 8 | */ 9 | package com.hurlant.crypto.symmetric 10 | { 11 | import flash.utils.ByteArray; 12 | 13 | /** 14 | * CBC confidentiality mode. why not. 15 | */ 16 | public class CBCMode extends IVMode implements IMode 17 | { 18 | 19 | public function CBCMode(key:ISymmetricKey, padding:IPad = null) { 20 | super(key, padding); 21 | } 22 | 23 | public function encrypt(src:ByteArray):void { 24 | padding.pad(src); 25 | var vector:ByteArray = getIV4e(); 26 | for (var i:uint=0;i=0;--j) { 47 | X[j]++; 48 | if (X[j]!=0) 49 | break; 50 | } 51 | } 52 | } 53 | public function toString():String { 54 | return key.toString()+"-ctr"; 55 | } 56 | 57 | } 58 | } -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/ICipher.as: -------------------------------------------------------------------------------- 1 | /** 2 | * ICipher 3 | * 4 | * A generic interface to use symmetric ciphers 5 | * Copyright (c) 2007 Henri Torgemane 6 | * 7 | * See LICENSE.txt for full license information. 8 | */ 9 | package com.hurlant.crypto.symmetric 10 | { 11 | import flash.utils.ByteArray; 12 | 13 | public interface ICipher 14 | { 15 | function getBlockSize():uint; 16 | function encrypt(src:ByteArray):void; 17 | function decrypt(src:ByteArray):void; 18 | function dispose():void; 19 | function toString():String; 20 | } 21 | } -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/IMode.as: -------------------------------------------------------------------------------- 1 | /** 2 | * IMode 3 | * 4 | * An interface for confidentiality modes to implement 5 | * This could become deprecated at some point. 6 | * Copyright (c) 2007 Henri Torgemane 7 | * 8 | * See LICENSE.txt for full license information. 9 | */ 10 | package com.hurlant.crypto.symmetric 11 | { 12 | public interface IMode extends ICipher 13 | { 14 | } 15 | } -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/IPad.as: -------------------------------------------------------------------------------- 1 | /** 2 | * IPad 3 | * 4 | * An interface for padding mechanisms to implement. 5 | * Copyright (c) 2007 Henri Torgemane 6 | * 7 | * See LICENSE.txt for full license information. 8 | */ 9 | package com.hurlant.crypto.symmetric 10 | { 11 | import flash.utils.ByteArray; 12 | 13 | /** 14 | * Tiny interface that represents a padding mechanism. 15 | */ 16 | public interface IPad 17 | { 18 | /** 19 | * Add padding to the array 20 | */ 21 | function pad(a:ByteArray):void; 22 | /** 23 | * Remove padding from the array. 24 | * @throws Error if the padding is invalid. 25 | */ 26 | function unpad(a:ByteArray):void; 27 | /** 28 | * Set the blockSize to work on 29 | */ 30 | function setBlockSize(bs:uint):void; 31 | } 32 | } -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/IStreamCipher.as: -------------------------------------------------------------------------------- 1 | /** 2 | * IStreamCipher 3 | * 4 | * A "marker" interface for stream ciphers. 5 | * Copyright (c) 2007 Henri Torgemane 6 | * 7 | * See LICENSE.txt for full license information. 8 | */ 9 | package com.hurlant.crypto.symmetric { 10 | 11 | /** 12 | * A marker to indicate how this cipher works. 13 | * A stream cipher: 14 | * - does not use initialization vector 15 | * - keeps some internal state between calls to encrypt() and decrypt() 16 | * 17 | */ 18 | public interface IStreamCipher extends ICipher { 19 | 20 | } 21 | } -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/ISymmetricKey.as: -------------------------------------------------------------------------------- 1 | /** 2 | * ISymmetricKey 3 | * 4 | * An interface for symmetric encryption keys to implement. 5 | * Copyright (c) 2007 Henri Torgemane 6 | * 7 | * See LICENSE.txt for full license information. 8 | */ 9 | package com.hurlant.crypto.symmetric 10 | { 11 | import flash.utils.ByteArray; 12 | 13 | public interface ISymmetricKey 14 | { 15 | /** 16 | * Returns the block size used by this particular encryption algorithm 17 | */ 18 | function getBlockSize():uint; 19 | /** 20 | * Encrypt one block of data in "block", starting at "index", of length "getBlockSize()" 21 | */ 22 | function encrypt(block:ByteArray, index:uint=0):void; 23 | /** 24 | * Decrypt one block of data in "block", starting at "index", of length "getBlockSize()" 25 | */ 26 | function decrypt(block:ByteArray, index:uint=0):void; 27 | /** 28 | * Attempts to destroy sensitive information from memory, such as encryption keys. 29 | * Note: This is not guaranteed to work given the Flash sandbox model. 30 | */ 31 | function dispose():void; 32 | 33 | function toString():String; 34 | } 35 | } -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/NullPad.as: -------------------------------------------------------------------------------- 1 | /** 2 | * NullPad 3 | * 4 | * A padding class that doesn't pad. 5 | * Copyright (c) 2007 Henri Torgemane 6 | * 7 | * See LICENSE.txt for full license information. 8 | */ 9 | package com.hurlant.crypto.symmetric 10 | { 11 | import flash.utils.ByteArray; 12 | 13 | /** 14 | * A pad that does nothing. 15 | * Useful when you don't want padding in your Mode. 16 | */ 17 | public class NullPad implements IPad 18 | { 19 | public function unpad(a:ByteArray):void 20 | { 21 | return; 22 | } 23 | 24 | public function pad(a:ByteArray):void 25 | { 26 | return; 27 | } 28 | 29 | public function setBlockSize(bs:uint):void { 30 | return; 31 | } 32 | 33 | } 34 | } -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/OFBMode.as: -------------------------------------------------------------------------------- 1 | /** 2 | * OFBMode 3 | * 4 | * An ActionScript 3 implementation of the OFB confidentiality mode 5 | * Copyright (c) 2007 Henri Torgemane 6 | * 7 | * See LICENSE.txt for full license information. 8 | */ 9 | package com.hurlant.crypto.symmetric 10 | { 11 | import flash.utils.ByteArray; 12 | 13 | public class OFBMode extends IVMode implements IMode 14 | { 15 | public function OFBMode(key:ISymmetricKey, padding:IPad=null) 16 | { 17 | super(key, null); 18 | } 19 | 20 | public function encrypt(src:ByteArray):void 21 | { 22 | var vector:ByteArray = getIV4e(); 23 | core(src, vector); 24 | } 25 | 26 | public function decrypt(src:ByteArray):void 27 | { 28 | var vector:ByteArray = getIV4d(); 29 | core(src, vector); 30 | } 31 | 32 | private function core(src:ByteArray, iv:ByteArray):void { 33 | var l:uint = src.length; 34 | var tmp:ByteArray = new ByteArray; 35 | for (var i:uint=0;i0;i--) { 32 | var v:uint = a[a.length-1]; 33 | a.length--; 34 | if (c!=v) throw new Error("PKCS#5:unpad: Invalid padding value. expected ["+c+"], found ["+v+"]"); 35 | } 36 | // that is all. 37 | } 38 | 39 | public function setBlockSize(bs:uint):void { 40 | blockSize = bs; 41 | } 42 | 43 | } 44 | } -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/SSLPad.as: -------------------------------------------------------------------------------- 1 | /** 2 | * TLSPad 3 | * 4 | * A padding implementation used by TLS 5 | * Copyright (c) 2007 Henri Torgemane 6 | * 7 | * See LICENSE.txt for full license information. 8 | */ 9 | package com.hurlant.crypto.symmetric { 10 | import flash.utils.ByteArray; 11 | import com.hurlant.util.Hex; 12 | import com.hurlant.crypto.tls.TLSError; 13 | 14 | public class SSLPad implements IPad { 15 | private var blockSize:uint; 16 | 17 | public function SSLPad(blockSize:uint=0) { 18 | this.blockSize = blockSize; 19 | } 20 | public function pad(a:ByteArray):void { 21 | var c:uint = blockSize - (a.length+1)%blockSize; 22 | for (var i:uint=0;i<=c;i++) { 23 | a[a.length] = c; 24 | } 25 | 26 | } 27 | public function unpad(a:ByteArray):void { 28 | var c:uint = a.length%blockSize; 29 | if (c!=0) throw new TLSError("SSLPad::unpad: ByteArray.length isn't a multiple of the blockSize", TLSError.bad_record_mac); 30 | c = a[a.length-1]; 31 | for (var i:uint=c;i>0;i--) { 32 | var v:uint = a[a.length-1]; 33 | a.length--; 34 | // But LOOK! SSL 3.0 doesn't care about this, bytes are arbitrary! 35 | // if (c!=v) throw new TLSError("SSLPad:unpad: Invalid padding value. expected ["+c+"], found ["+v+"]", TLSError.bad_record_mac); 36 | } 37 | a.length--; 38 | 39 | } 40 | public function setBlockSize(bs:uint):void { 41 | blockSize = bs; 42 | } 43 | } 44 | } -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/SimpleIVMode.as: -------------------------------------------------------------------------------- 1 | /** 2 | * SimpleIVMode 3 | * 4 | * A convenience class that automatically places the IV 5 | * at the beginning of the encrypted stream, so it doesn't have to 6 | * be handled explicitely. 7 | * Copyright (c) 2007 Henri Torgemane 8 | * 9 | * See LICENSE.txt for full license information. 10 | */ 11 | package com.hurlant.crypto.symmetric 12 | { 13 | import flash.utils.ByteArray; 14 | import com.hurlant.util.Memory; 15 | 16 | public class SimpleIVMode implements IMode, ICipher 17 | { 18 | protected var mode:IVMode; 19 | protected var cipher:ICipher; 20 | 21 | public function SimpleIVMode(mode:IVMode) { 22 | this.mode = mode; 23 | cipher = mode as ICipher; 24 | } 25 | 26 | public function getBlockSize():uint { 27 | return mode.getBlockSize(); 28 | } 29 | 30 | public function dispose():void { 31 | mode.dispose(); 32 | mode = null; 33 | cipher = null; 34 | Memory.gc(); 35 | } 36 | 37 | public function encrypt(src:ByteArray):void { 38 | cipher.encrypt(src); 39 | var tmp:ByteArray = new ByteArray; 40 | tmp.writeBytes(mode.IV); 41 | tmp.writeBytes(src); 42 | src.position=0; 43 | src.writeBytes(tmp); 44 | } 45 | 46 | public function decrypt(src:ByteArray):void { 47 | var tmp:ByteArray = new ByteArray; 48 | tmp.writeBytes(src, 0, getBlockSize()); 49 | mode.IV = tmp; 50 | tmp = new ByteArray; 51 | tmp.writeBytes(src, getBlockSize()); 52 | cipher.decrypt(tmp); 53 | src.length=0; 54 | src.writeBytes(tmp); 55 | } 56 | public function toString():String { 57 | return "simple-"+cipher.toString(); 58 | } 59 | } 60 | } -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/TLSPad.as: -------------------------------------------------------------------------------- 1 | /** 2 | * TLSPad 3 | * 4 | * A padding implementation used by TLS 5 | * Copyright (c) 2007 Henri Torgemane 6 | * 7 | * See LICENSE.txt for full license information. 8 | */ 9 | package com.hurlant.crypto.symmetric { 10 | import flash.utils.ByteArray; 11 | import com.hurlant.util.Hex; 12 | import com.hurlant.crypto.tls.TLSError; 13 | 14 | public class TLSPad implements IPad { 15 | private var blockSize:uint; 16 | 17 | public function TLSPad(blockSize:uint=0) { 18 | this.blockSize = blockSize; 19 | } 20 | public function pad(a:ByteArray):void { 21 | var c:uint = blockSize - (a.length+1)%blockSize; 22 | for (var i:uint=0;i<=c;i++) { 23 | a[a.length] = c; 24 | } 25 | } 26 | public function unpad(a:ByteArray):void { 27 | var c:uint = a.length%blockSize; 28 | if (c!=0) throw new TLSError("TLSPad::unpad: ByteArray.length isn't a multiple of the blockSize", TLSError.bad_record_mac); 29 | c = a[a.length-1]; 30 | for (var i:uint=c;i>0;i--) { 31 | var v:uint = a[a.length-1]; 32 | a.length--; 33 | if (c!=v) throw new TLSError("TLSPad:unpad: Invalid padding value. expected ["+c+"], found ["+v+"]", TLSError.bad_record_mac); 34 | } 35 | a.length--; 36 | // mostly ripped off from PKCS5.as, but with subtle differences 37 | } 38 | public function setBlockSize(bs:uint):void { 39 | blockSize = bs; 40 | } 41 | } 42 | } -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/aeskey.pl: -------------------------------------------------------------------------------- 1 | #!/usr/bin/perl 2 | use strict; 3 | use warnings; 4 | 5 | sub say { 6 | my $w = shift; 7 | print $w; 8 | print "\n"; 9 | } 10 | 11 | sub dump { 12 | my $i = shift; 13 | &say(sprintf("Sbox[%d] = _Sbox[%d]", $i, $i)); 14 | &say(sprintf("InvSbox[%d] = _InvSbox[%d]", $i, $i)); 15 | &say(sprintf("Xtime2Sbox[%d] = _Xtime2Sbox[%d]", $i, $i)); 16 | &say(sprintf("Xtime3Sbox[%d] = _Xtime3Sbox[%d]", $i, $i)); 17 | &say(sprintf("Xtime2[%d] = _Xtime2[%d]", $i, $i)); 18 | &say(sprintf("Xtime9[%d] = _Xtime9[%d]", $i, $i)); 19 | &say(sprintf("XtimeB[%d] = _XtimeB[%d]", $i, $i)); 20 | &say(sprintf("XtimeD[%d] = _XtimeD[%d]", $i, $i)); 21 | &say(sprintf("XtimeE[%d] = _XtimeE[%d]", $i, $i)); 22 | } 23 | 24 | for (my $i=0;$i<256;$i++) { 25 | &dump($i); 26 | } 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/ARC4Test.as: -------------------------------------------------------------------------------- 1 | /** 2 | * ARC4Test 3 | * 4 | * A test class for ARC4 5 | * Copyright (c) 2007 Henri Torgemane 6 | * 7 | * See LICENSE.txt for full license information. 8 | */ 9 | package com.hurlant.crypto.tests 10 | { 11 | import com.hurlant.util.Hex; 12 | import flash.utils.ByteArray; 13 | import com.hurlant.crypto.prng.ARC4; 14 | 15 | public class ARC4Test extends TestCase 16 | { 17 | public function ARC4Test(h:ITestHarness) 18 | { 19 | super(h, "ARC4 Test"); 20 | runTest(testLameVectors,"ARC4 Test Vectors"); 21 | h.endTestCase(); 22 | } 23 | 24 | /** 25 | * Sad test vectors pilfered from 26 | * http://en.wikipedia.org/wiki/RC4 27 | */ 28 | public function testLameVectors():void { 29 | var keys:Array = [ 30 | Hex.fromString("Key"), 31 | Hex.fromString("Wiki"), 32 | Hex.fromString("Secret")]; 33 | var pts:Array = [ 34 | Hex.fromString("Plaintext"), 35 | Hex.fromString("pedia"), 36 | Hex.fromString("Attack at dawn")]; 37 | var cts:Array = [ 38 | "BBF316E8D940AF0AD3", 39 | "1021BF0420", 40 | "45A01F645FC35B383552544B9BF5"]; 41 | 42 | for (var i:uint=0;i=0) { 16 | return x.mod(m); 17 | } 18 | return x; 19 | } 20 | public function revert(x:BigInteger):BigInteger { 21 | return x; 22 | } 23 | public function reduce(x:BigInteger):void { 24 | x.divRemTo(m, null,x); 25 | } 26 | public function mulTo(x:BigInteger, y:BigInteger, r:BigInteger):void { 27 | x.multiplyTo(y,r); 28 | reduce(r); 29 | } 30 | public function sqrTo(x:BigInteger, r:BigInteger):void { 31 | x.squareTo(r); 32 | reduce(r); 33 | } 34 | } 35 | } -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/math/IReduction.as: -------------------------------------------------------------------------------- 1 | package com.hurlant.math 2 | { 3 | internal interface IReduction 4 | { 5 | function convert(x:BigInteger):BigInteger; 6 | function revert(x:BigInteger):BigInteger; 7 | function reduce(x:BigInteger):void; 8 | function mulTo(x:BigInteger, y:BigInteger, r:BigInteger):void; 9 | function sqrTo(x:BigInteger, r:BigInteger):void; 10 | } 11 | } -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/math/NullReduction.as: -------------------------------------------------------------------------------- 1 | package com.hurlant.math 2 | { 3 | use namespace bi_internal; 4 | /** 5 | * A "null" reducer 6 | */ 7 | public class NullReduction implements IReduction 8 | { 9 | public function revert(x:BigInteger):BigInteger 10 | { 11 | return x; 12 | } 13 | 14 | public function mulTo(x:BigInteger, y:BigInteger, r:BigInteger):void 15 | { 16 | x.multiplyTo(y,r); 17 | } 18 | 19 | public function sqrTo(x:BigInteger, r:BigInteger):void 20 | { 21 | x.squareTo(r); 22 | } 23 | 24 | public function convert(x:BigInteger):BigInteger 25 | { 26 | return x; 27 | } 28 | 29 | public function reduce(x:BigInteger):void 30 | { 31 | } 32 | 33 | } 34 | } -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/math/bi_internal.as: -------------------------------------------------------------------------------- 1 | /** 2 | * bi_internal 3 | * 4 | * A namespace. w00t. 5 | * Copyright (c) 2007 Henri Torgemane 6 | * 7 | * See LICENSE.txt for full license information. 8 | */ 9 | package com.hurlant.math { 10 | public namespace bi_internal = "http://crypto.hurlant.com/BigInteger"; 11 | } -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/util/ArrayUtil.as: -------------------------------------------------------------------------------- 1 | /** 2 | * ArrayUtil 3 | * 4 | * A class that allows to compare two ByteArrays. 5 | * Copyright (c) 2007 Henri Torgemane 6 | * 7 | * See LICENSE.txt for full license information. 8 | */ 9 | package com.hurlant.util { 10 | import flash.utils.ByteArray; 11 | 12 | 13 | public class ArrayUtil { 14 | 15 | public static function equals(a1:ByteArray, a2:ByteArray):Boolean { 16 | if (a1.length != a2.length) return false; 17 | var l:int = a1.length; 18 | for (var i:int=0;i" 10 | , "contributors": [ 11 | { "name": "Guillermo Rauch", "email": "rauchg@gmail.com" } 12 | , { "name": "Arnout Kazemier", "email": "info@3rd-eden.com" } 13 | , { "name": "Vladimir Dronnikov", "email": "dronnikov@gmail.com" } 14 | , { "name": "Einar Otto Stangvik", "email": "einaros@gmail.com" } 15 | ] 16 | , "repository": { 17 | "type": "git" 18 | , "url": "https://github.com/LearnBoost/socket.io-client.git" 19 | } 20 | , "dependencies": { 21 | "uglify-js": "1.2.5" 22 | , "ws": "0.4.x" 23 | , "xmlhttprequest": "1.4.2" 24 | , "active-x-obfuscator": "0.0.1" 25 | } 26 | , "devDependencies": { 27 | "expresso": "*" 28 | , "express": "2.5.x" 29 | , "jade": "*" 30 | , "stylus": "*" 31 | , "socket.io": "0.9.16" 32 | , "socket.io-client": "0.9.16" 33 | , "should": "*" 34 | } 35 | , "engines": { "node": ">= 0.4.0" } 36 | } 37 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io-client/support/test-runner/index.jade: -------------------------------------------------------------------------------- 1 | doctype 5 2 | html 3 | head 4 | link(href='/stylesheets/main.css', rel='stylesheet', media='all') 5 | script(src='/socket.io/socket.io.js') 6 | script(src='/javascript/jquery.js') 7 | script(src='/javascript/should.js') 8 | script(src='/javascript/script.js') 9 | script(src='/javascript/runner.js') 10 | 11 | - var json = JSON.stringify(testsPorts); 12 | script 13 | var testsPorts = !{json} 14 | 15 | script 16 | $(function () { 17 | run( 18 | 'io.test.js' 19 | , 'parser.test.js' 20 | , 'util.test.js' 21 | , 'events.test.js' 22 | , 'socket.test.js' 23 | ); 24 | }); 25 | 26 | title Socket.IO tests runner 27 | body 28 | h2 Socket.IO test runner 29 | 30 | if ('websocket' == transport) 31 | #warn-ff: p.warn 32 | script 33 | if ($.browser.mozilla) 34 | $(function () { 35 | $('#warn-ff p').html('WARN: WebSocket within WebWorker ' 36 | + '' 37 | + 'expected to fail on Firefox'); 38 | }); 39 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io-client/test/io.test.js: -------------------------------------------------------------------------------- 1 | 2 | /*! 3 | * socket.io-node 4 | * Copyright(c) 2011 LearnBoost 5 | * MIT Licensed 6 | */ 7 | 8 | (function (module, io, should) { 9 | 10 | module.exports = { 11 | 12 | 'client version number': function () { 13 | io.version.should().match(/([0-9]+)\.([0-9]+)\.([0-9]+)/); 14 | }, 15 | 16 | 'socket.io protocol version': function () { 17 | io.protocol.should().be.a('number'); 18 | io.protocol.toString().should().match(/^\d+$/); 19 | }, 20 | 21 | 'socket.io available transports': function () { 22 | (io.transports.length > 0).should().be_true; 23 | } 24 | 25 | }; 26 | 27 | })( 28 | 'undefined' == typeof module ? module = {} : module 29 | , 'undefined' == typeof io ? require('socket.io-client') : io 30 | , 'undefined' == typeof should ? require('should') : should 31 | ); 32 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io-client/test/worker.js: -------------------------------------------------------------------------------- 1 | importScripts('/socket.io/socket.io.js'); 2 | 3 | self.onmessage = function (ev) { 4 | var url = ev.data 5 | , socket = io.connect(url); 6 | 7 | socket.on('done', function () { 8 | self.postMessage('done!'); 9 | }); 10 | 11 | socket.on('connect_failed', function () { 12 | self.postMessage('connect failed'); 13 | }); 14 | 15 | socket.on('error', function () { 16 | self.postMessage('error'); 17 | }); 18 | 19 | socket.send('woot'); 20 | } 21 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "socket.io", 3 | "homepage": "https://github.com/LearnBoost/socket.io", 4 | "version": "0.9.15", 5 | "_release": "0.9.15", 6 | "_resolution": { 7 | "type": "version", 8 | "tag": "0.9.15", 9 | "commit": "2102397e25c3d1f5d10f55c76ec6d09f549fb9ae" 10 | }, 11 | "_source": "git://github.com/LearnBoost/socket.io.git", 12 | "_target": "~0.9.15", 13 | "_originalSource": "socket.io", 14 | "_direct": true 15 | } -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | lib-cov 3 | *.seed 4 | *.log 5 | *.csv 6 | *.dat 7 | *.out 8 | *.pid 9 | benchmarks/*.png 10 | node_modules 11 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io/.npmignore: -------------------------------------------------------------------------------- 1 | support 2 | test 3 | examples 4 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io/.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - 0.6 4 | 5 | notifications: 6 | irc: "irc.freenode.org#socket.io" 7 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io/LICENSE: -------------------------------------------------------------------------------- 1 | (The MIT License) 2 | 3 | Copyright (c) 2011 Guillermo Rauch 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 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io/Makefile: -------------------------------------------------------------------------------- 1 | 2 | ALL_TESTS = $(shell find test/ -name '*.test.js') 3 | ALL_BENCH = $(shell find benchmarks -name '*.bench.js') 4 | 5 | run-tests: 6 | @./node_modules/.bin/expresso \ 7 | -t 3000 \ 8 | -I support \ 9 | --serial \ 10 | $(TESTFLAGS) \ 11 | $(TESTS) 12 | 13 | test: 14 | @$(MAKE) NODE_PATH=lib TESTS="$(ALL_TESTS)" run-tests 15 | 16 | test-cov: 17 | @TESTFLAGS=--cov $(MAKE) test 18 | 19 | test-leaks: 20 | @ls test/leaks/* | xargs node --expose_debug_as=debug --expose_gc 21 | 22 | run-bench: 23 | @node $(PROFILEFLAGS) benchmarks/runner.js 24 | 25 | bench: 26 | @$(MAKE) BENCHMARKS="$(ALL_BENCH)" run-bench 27 | 28 | profile: 29 | @PROFILEFLAGS='--prof --trace-opt --trace-bailout --trace-deopt' $(MAKE) bench 30 | 31 | .PHONY: test bench profile 32 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io/benchmarks/runner.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Benchmark runner dependencies 3 | */ 4 | 5 | var colors = require('colors') 6 | , path = require('path'); 7 | 8 | /** 9 | * Find all the benchmarks 10 | */ 11 | 12 | var benchmarks_files = process.env.BENCHMARKS.split(' ') 13 | , all = [].concat(benchmarks_files) 14 | , first = all.shift() 15 | , benchmarks = {}; 16 | 17 | // find the benchmarks and load them all in our obj 18 | benchmarks_files.forEach(function (file) { 19 | benchmarks[file] = require(path.join(__dirname, '..', file)); 20 | }); 21 | 22 | // setup the complete listeners 23 | benchmarks_files.forEach(function (file) { 24 | var benchmark = benchmarks[file] 25 | , next_file = all.shift() 26 | , next = benchmarks[next_file]; 27 | 28 | /** 29 | * Generate a oncomplete function for the tests, either we are done or we 30 | * have more benchmarks to process. 31 | */ 32 | 33 | function complete () { 34 | if (!next) { 35 | console.log( 36 | '\n\nBenchmark completed in'.grey 37 | , (Date.now() - start).toString().green + ' ms'.grey 38 | ); 39 | } else { 40 | console.log('\nStarting benchmark '.grey + next_file.yellow); 41 | next.run(); 42 | } 43 | } 44 | 45 | // attach the listener 46 | benchmark.on('complete', complete); 47 | }); 48 | 49 | /** 50 | * Start the benchmark 51 | */ 52 | 53 | var start = Date.now(); 54 | console.log('Starting benchmark '.grey + first.yellow); 55 | benchmarks[first].run(); 56 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io/examples/chat/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "chat.io" 3 | , "description": "example chat application with socket.io" 4 | , "version": "0.0.1" 5 | , "dependencies": { 6 | "express": "2.5.5" 7 | , "jade": "0.16.4" 8 | , "stylus": "0.19.0" 9 | , "nib": "0.2.0" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io/examples/irc-output/index.jade: -------------------------------------------------------------------------------- 1 | doctype 5 2 | html 3 | head 4 | link(href='/stylesheets/style.css', rel='stylesheet') 5 | script(src='http://code.jquery.com/jquery-1.6.1.min.js') 6 | script(src='/socket.io/socket.io.js') 7 | script 8 | var socket = io.connect(); 9 | 10 | socket.on('connect', function () { 11 | $('#irc').addClass('connected'); 12 | }); 13 | 14 | socket.on('announcement', function (msg) { 15 | $('#messages').append($('

').append($('').text(msg))); 16 | $('#messages').get(0).scrollTop = 10000000; 17 | }); 18 | 19 | socket.on('irc message', function (user, msg) { 20 | $('#messages').append($('

').append($('').text(user), msg)); 21 | $('#messages').get(0).scrollTop = 10000000; 22 | }); 23 | body 24 | h2 Node.JS IRC 25 | #irc 26 | #connecting 27 | .wrap Connecting to socket.io server 28 | #messages 29 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io/examples/irc-output/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "socket.io-irc" 3 | , "version": "0.0.1" 4 | , "dependencies": { 5 | "express": "2.5.5" 6 | , "jade": "0.16.4" 7 | , "stylus": "0.19.0" 8 | , "nib": "0.2.0" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io/examples/irc-output/public/stylesheets/style.styl: -------------------------------------------------------------------------------- 1 | @import 'nib' 2 | 3 | h2 4 | font bold 18px Helvetica Neue, Arial 5 | 6 | #irc, #messages 7 | width 600px 8 | 9 | #irc 10 | position relative 11 | border 1px solid #ccc 12 | 13 | #connecting 14 | position absolute 15 | height 410px 16 | z-index 100 17 | left 0 18 | top 0 19 | background #fff 20 | text-align center 21 | width 600px 22 | font 15px Georgia 23 | color #666 24 | display block 25 | .wrap 26 | padding-top 150px 27 | 28 | .connected 29 | #connecting 30 | display none 31 | 32 | #messages 33 | height 380px 34 | background #eee 35 | overflow auto 36 | overflow-x hidden 37 | overflow-y auto 38 | &::-webkit-scrollbar 39 | width 6px 40 | height 6px 41 | &::-webkit-scrollbar-button:start:decrement, ::-webkit-scrollbar-button:end:increment 42 | display block 43 | height 10px 44 | &::-webkit-scrollbar-button:vertical:increment 45 | background-color #fff 46 | &::-webkit-scrollbar-track-piece 47 | background-color #fff 48 | -webkit-border-radius 3px 49 | &::-webkit-scrollbar-thumb:vertical 50 | height 50px 51 | background-color #ccc 52 | -webkit-border-radius 3px 53 | &::-webkit-scrollbar-thumb:horizontal 54 | width 50px 55 | background-color #fff 56 | -webkit-border-radius 3px 57 | em 58 | text-shadow 0 1px 0 #fff 59 | color #999 60 | p 61 | padding 0 62 | margin 0 63 | font 12px Helvetica, Arial 64 | padding 5px 10px 65 | b 66 | display inline-block 67 | padding-right 10px 68 | p:nth-child(even) 69 | background #fafafa 70 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io/index.js: -------------------------------------------------------------------------------- 1 | 2 | /*! 3 | * socket.io-node 4 | * Copyright(c) 2011 LearnBoost 5 | * MIT Licensed 6 | */ 7 | 8 | module.exports = require('./lib/socket.io'); 9 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io/lib/transports/htmlfile.js: -------------------------------------------------------------------------------- 1 | 2 | /*! 3 | * socket.io-node 4 | * Copyright(c) 2011 LearnBoost 5 | * MIT Licensed 6 | */ 7 | 8 | /** 9 | * Module requirements. 10 | */ 11 | 12 | var HTTPTransport = require('./http'); 13 | 14 | /** 15 | * Export the constructor. 16 | */ 17 | 18 | exports = module.exports = HTMLFile; 19 | 20 | /** 21 | * HTMLFile transport constructor. 22 | * 23 | * @api public 24 | */ 25 | 26 | function HTMLFile (mng, data, req) { 27 | HTTPTransport.call(this, mng, data, req); 28 | }; 29 | 30 | /** 31 | * Inherits from Transport. 32 | */ 33 | 34 | HTMLFile.prototype.__proto__ = HTTPTransport.prototype; 35 | 36 | /** 37 | * Transport name 38 | * 39 | * @api public 40 | */ 41 | 42 | HTMLFile.prototype.name = 'htmlfile'; 43 | 44 | /** 45 | * Handles the request. 46 | * 47 | * @api private 48 | */ 49 | 50 | HTMLFile.prototype.handleRequest = function (req) { 51 | HTTPTransport.prototype.handleRequest.call(this, req); 52 | 53 | if (req.method == 'GET') { 54 | req.res.writeHead(200, { 55 | 'Content-Type': 'text/html; charset=UTF-8' 56 | , 'Connection': 'keep-alive' 57 | , 'Transfer-Encoding': 'chunked' 58 | }); 59 | 60 | req.res.write( 61 | '' 62 | + '' 63 | + new Array(174).join(' ') 64 | ); 65 | } 66 | }; 67 | 68 | /** 69 | * Performs the write. 70 | * 71 | * @api private 72 | */ 73 | 74 | HTMLFile.prototype.write = function (data) { 75 | // escape all forward slashes. see GH-1251 76 | data = ''; 77 | 78 | if (this.response.write(data)) { 79 | this.drained = true; 80 | } 81 | 82 | this.log.debug(this.name + ' writing', data); 83 | }; 84 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io/lib/transports/index.js: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * Export transports. 4 | */ 5 | 6 | module.exports = { 7 | websocket: require('./websocket') 8 | , flashsocket: require('./flashsocket') 9 | , htmlfile: require('./htmlfile') 10 | , 'xhr-polling': require('./xhr-polling') 11 | , 'jsonp-polling': require('./jsonp-polling') 12 | }; 13 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io/lib/transports/websocket.js: -------------------------------------------------------------------------------- 1 | 2 | /*! 3 | * socket.io-node 4 | * Copyright(c) 2011 LearnBoost 5 | * MIT Licensed 6 | */ 7 | 8 | /** 9 | * Module requirements. 10 | */ 11 | 12 | var protocolVersions = require('./websocket/'); 13 | 14 | /** 15 | * Export the constructor. 16 | */ 17 | 18 | exports = module.exports = WebSocket; 19 | 20 | /** 21 | * HTTP interface constructor. Interface compatible with all transports that 22 | * depend on request-response cycles. 23 | * 24 | * @api public 25 | */ 26 | 27 | function WebSocket (mng, data, req) { 28 | var transport 29 | , version = req.headers['sec-websocket-version']; 30 | if (typeof version !== 'undefined' && typeof protocolVersions[version] !== 'undefined') { 31 | transport = new protocolVersions[version](mng, data, req); 32 | } 33 | else transport = new protocolVersions['default'](mng, data, req); 34 | if (typeof this.name !== 'undefined') transport.name = this.name; 35 | return transport; 36 | }; 37 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io/lib/transports/websocket/index.js: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * Export websocket versions. 4 | */ 5 | 6 | module.exports = { 7 | 7: require('./hybi-07-12'), 8 | 8: require('./hybi-07-12'), 9 | 13: require('./hybi-16'), 10 | default: require('./default') 11 | }; 12 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io/lib/transports/xhr-polling.js: -------------------------------------------------------------------------------- 1 | 2 | /*! 3 | * socket.io-node 4 | * Copyright(c) 2011 LearnBoost 5 | * MIT Licensed 6 | */ 7 | 8 | /** 9 | * Module requirements. 10 | */ 11 | 12 | var HTTPPolling = require('./http-polling'); 13 | 14 | /** 15 | * Export the constructor. 16 | */ 17 | 18 | exports = module.exports = XHRPolling; 19 | 20 | /** 21 | * Ajax polling transport. 22 | * 23 | * @api public 24 | */ 25 | 26 | function XHRPolling (mng, data, req) { 27 | HTTPPolling.call(this, mng, data, req); 28 | }; 29 | 30 | /** 31 | * Inherits from Transport. 32 | */ 33 | 34 | XHRPolling.prototype.__proto__ = HTTPPolling.prototype; 35 | 36 | /** 37 | * Transport name 38 | * 39 | * @api public 40 | */ 41 | 42 | XHRPolling.prototype.name = 'xhr-polling'; 43 | 44 | /** 45 | * Frames data prior to write. 46 | * 47 | * @api private 48 | */ 49 | 50 | XHRPolling.prototype.doWrite = function (data) { 51 | HTTPPolling.prototype.doWrite.call(this); 52 | 53 | var origin = this.req.headers.origin 54 | , headers = { 55 | 'Content-Type': 'text/plain; charset=UTF-8' 56 | , 'Content-Length': data === undefined ? 0 : Buffer.byteLength(data) 57 | , 'Connection': 'Keep-Alive' 58 | }; 59 | 60 | if (origin) { 61 | // https://developer.mozilla.org/En/HTTP_Access_Control 62 | headers['Access-Control-Allow-Origin'] = origin; 63 | headers['Access-Control-Allow-Credentials'] = 'true'; 64 | } 65 | 66 | this.response.writeHead(200, headers); 67 | this.response.write(data); 68 | this.log.debug(this.name + ' writing', data); 69 | }; 70 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io/lib/util.js: -------------------------------------------------------------------------------- 1 | 2 | /*! 3 | * socket.io-node 4 | * Copyright(c) 2011 LearnBoost 5 | * MIT Licensed 6 | */ 7 | 8 | /** 9 | * Module dependencies. 10 | */ 11 | 12 | /** 13 | * Converts an enumerable to an array. 14 | * 15 | * @api public 16 | */ 17 | 18 | exports.toArray = function (enu) { 19 | var arr = []; 20 | 21 | for (var i = 0, l = enu.length; i < l; i++) 22 | arr.push(enu[i]); 23 | 24 | return arr; 25 | }; 26 | 27 | /** 28 | * Unpacks a buffer to a number. 29 | * 30 | * @api public 31 | */ 32 | 33 | exports.unpack = function (buffer) { 34 | var n = 0; 35 | for (var i = 0; i < buffer.length; ++i) { 36 | n = (i == 0) ? buffer[i] : (n * 256) + buffer[i]; 37 | } 38 | return n; 39 | } 40 | 41 | /** 42 | * Left pads a string. 43 | * 44 | * @api public 45 | */ 46 | 47 | exports.padl = function (s,n,c) { 48 | return new Array(1 + n - s.length).join(c) + s; 49 | } 50 | 51 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "socket.io" 3 | , "version": "0.9.15" 4 | , "description": "Real-time apps made cross-browser & easy with a WebSocket-like API" 5 | , "homepage": "http://socket.io" 6 | , "keywords": ["websocket", "socket", "realtime", "socket.io", "comet", "ajax"] 7 | , "author": "Guillermo Rauch " 8 | , "contributors": [ 9 | { "name": "Guillermo Rauch", "email": "rauchg@gmail.com" } 10 | , { "name": "Arnout Kazemier", "email": "info@3rd-eden.com" } 11 | , { "name": "Vladimir Dronnikov", "email": "dronnikov@gmail.com" } 12 | , { "name": "Einar Otto Stangvik", "email": "einaros@gmail.com" } 13 | ] 14 | , "repository":{ 15 | "type": "git" 16 | , "url": "https://github.com/LearnBoost/socket.io.git" 17 | } 18 | , "dependencies": { 19 | "socket.io-client": "0.9.15" 20 | , "policyfile": "0.0.4" 21 | , "base64id": "0.1.0" 22 | } 23 | , "devDependencies": { 24 | "expresso": "0.9.2" 25 | , "should": "*" 26 | , "benchmark": "0.2.2" 27 | , "microtime": "0.1.3-1" 28 | , "colors": "0.5.1" 29 | } 30 | , "optionalDependencies": { 31 | "redis": "0.7.3" 32 | } 33 | , "main": "index" 34 | , "engines": { "node": ">= 0.4.0" } 35 | , "scripts": { 36 | "test": "make test" 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io/support/node-websocket-client/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2010, Peter Griess 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | * Redistributions of source code must retain the above copyright notice, 8 | this list of conditions and the following disclaimer. 9 | 10 | * Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | * Neither the name of node-websocket-client nor the names of its 15 | contributors may be used to endorse or promote products derived from this 16 | software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 19 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 22 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 24 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 25 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 26 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io/support/node-websocket-client/Makefile: -------------------------------------------------------------------------------- 1 | # This makefile exists to help run tests. 2 | # 3 | # If TEST_UNIX is a non-empty value, runs tests for UNIX sockets. This 4 | # functionality is not in node-websocket-server at the moment. 5 | 6 | .PHONY: test 7 | 8 | all: test test-unix 9 | 10 | test: 11 | for f in `ls -1 test/test-*.js | grep -v unix` ; do \ 12 | echo $$f ; \ 13 | node $$f ; \ 14 | done 15 | 16 | test-unix: 17 | if [[ -n "$$TEST_UNIX" ]] ; then \ 18 | for f in `ls -1 test/test-*.js | grep unix` ; do \ 19 | echo $$f ; \ 20 | node $$f ; \ 21 | done \ 22 | fi 23 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io/support/node-websocket-client/README.md: -------------------------------------------------------------------------------- 1 | A prototype [Web Socket](http://www.whatwg.org/specs/web-socket-protocol/) 2 | client implementation for [node.js](http://nodejs.org). 3 | 4 | Tested with 5 | [miksago/node-websocket-server](http://github.com/miksago/node-websocket-server) 6 | v1.2.00. 7 | 8 | Requires [nodejs](http://nodejs.org) 0.1.98 or later. 9 | 10 | ## Installation 11 | 12 | Install this using `npm` as follows 13 | 14 | npm install websocket-client 15 | 16 | ... or just dump `lib/websocket.js` in your `$NODE_PATH`. 17 | 18 | ## Usage 19 | 20 | var sys = require('sys'); 21 | var WebSocket = require('websocket').WebSocket; 22 | 23 | var ws = new WebSocket('ws://localhost:8000/biff', 'borf'); 24 | ws.addListener('data', function(buf) { 25 | sys.debug('Got data: ' + sys.inspect(buf)); 26 | }); 27 | ws.onmessage = function(m) { 28 | sys.debug('Got message: ' + m); 29 | } 30 | 31 | ## API 32 | 33 | This supports the `send()` and `onmessage()` APIs. The `WebSocket` object will 34 | also emit `data` events that are node `Buffer` objects, in case you want to 35 | work with something lower-level than strings. 36 | 37 | ## Transports 38 | 39 | Multiple transports are supported, indicated by the scheme provided to the 40 | `WebSocket` constructor. `ws://` is a standard TCP-based Web Socket; 41 | `ws+unix://` allows connection to a UNIX socket at the given path. 42 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io/support/node-websocket-client/examples/client-unix.js: -------------------------------------------------------------------------------- 1 | var sys = require('sys'); 2 | var WebSocket = require('../lib/websocket').WebSocket; 3 | 4 | var ws = new WebSocket('ws+unix://' + process.argv[2], 'boffo'); 5 | 6 | ws.addListener('message', function(d) { 7 | sys.debug('Received message: ' + d.toString('utf8')); 8 | }); 9 | 10 | ws.addListener('open', function() { 11 | ws.send('This is a message', 1); 12 | }); 13 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io/support/node-websocket-client/examples/client.js: -------------------------------------------------------------------------------- 1 | var sys = require('sys'); 2 | var WebSocket = require('../lib/websocket').WebSocket; 3 | 4 | var ws = new WebSocket('ws://localhost:8000/biff', 'borf'); 5 | ws.addListener('data', function(buf) { 6 | sys.debug('Got data: ' + sys.inspect(buf)); 7 | }); 8 | ws.onmessage = function(m) { 9 | sys.debug('Got message: ' + m); 10 | } 11 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io/support/node-websocket-client/examples/server-unix.js: -------------------------------------------------------------------------------- 1 | var sys = require('sys'); 2 | var ws = require('websocket-server/ws'); 3 | 4 | var srv = ws.createServer({ debug : true}); 5 | srv.addListener('connection', function(s) { 6 | sys.debug('Got a connection!'); 7 | 8 | s._req.socket.addListener('fd', function(fd) { 9 | sys.debug('Got an fd: ' + fd); 10 | }); 11 | }); 12 | 13 | srv.listen(process.argv[2]); 14 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io/support/node-websocket-client/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "websocket-client", 3 | "version" : "1.0.0", 4 | "description" : "An HTML5 Web Sockets client", 5 | "author" : "Peter Griess ", 6 | "engines" : { 7 | "node" : ">=0.1.98" 8 | }, 9 | "repositories" : [ 10 | { 11 | "type" : "git", 12 | "url" : "http://github.com/pgriess/node-websocket-client.git" 13 | } 14 | ], 15 | "licenses" : [ 16 | { 17 | "type" : "BSD", 18 | "url" : "http://github.com/pgriess/node-websocket-client/blob/master/LICENSE" 19 | } 20 | ], 21 | "main" : "./lib/websocket" 22 | } 23 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io/support/node-websocket-client/test/test-client-close.js: -------------------------------------------------------------------------------- 1 | // Verify that a connection can be closed gracefully from the client. 2 | 3 | var assert = require('assert'); 4 | var WebSocket = require('../lib/websocket').WebSocket; 5 | var WebSocketServer = require('websocket-server/ws/server').Server; 6 | 7 | var PORT = 1024 + Math.floor(Math.random() * 4096); 8 | var C_MSG = 'Client test: ' + (Math.random() * 100); 9 | 10 | var serverGotClientMessage = false; 11 | var clientGotServerClose = false; 12 | var serverGotClientClose = false; 13 | 14 | var wss = new WebSocketServer(); 15 | wss.listen(PORT, 'localhost'); 16 | wss.on('connection', function(c) { 17 | c.on('message', function(m) { 18 | assert.equal(m, C_MSG); 19 | serverGotClientMessage = true; 20 | }); 21 | c.on('close', function() { 22 | serverGotClientClose = true; 23 | wss.close(); 24 | }); 25 | }); 26 | 27 | var ws = new WebSocket('ws://localhost:' + PORT); 28 | ws.onopen = function() { 29 | ws.send(C_MSG); 30 | 31 | // XXX: Add a timeout here 32 | ws.close(5); 33 | }; 34 | ws.onclose = function() { 35 | assert.equal(ws.CLOSED, ws.readyState); 36 | clientGotServerClose = true; 37 | }; 38 | 39 | process.on('exit', function() { 40 | assert.ok(serverGotClientMessage); 41 | assert.ok(clientGotServerClose); 42 | assert.ok(serverGotClientClose); 43 | }); 44 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io/support/node-websocket-client/test/test-readonly-attrs.js: -------------------------------------------------------------------------------- 1 | // Verify that some attributes of a WebSocket object are read-only. 2 | 3 | var assert = require('assert'); 4 | var sys = require('sys'); 5 | var WebSocket = require('../lib/websocket').WebSocket; 6 | var WebSocketServer = require('websocket-server/ws/server').Server; 7 | 8 | var PORT = 1024 + Math.floor(Math.random() * 4096); 9 | 10 | var wss = new WebSocketServer(); 11 | wss.listen(PORT, 'localhost'); 12 | wss.on('connection', function(c) { 13 | c.close(); 14 | wss.close(); 15 | }); 16 | var ws = new WebSocket('ws://localhost:' + PORT + '/', 'biff'); 17 | ws.on('open', function() { 18 | assert.equal(ws.CONNECTING, 0); 19 | try { 20 | ws.CONNECTING = 13; 21 | assert.equal( 22 | ws.CONNECTING, 0, 23 | 'Should not have been able to set read-only CONNECTING attribute' 24 | ); 25 | } catch (e) { 26 | assert.equal(e.type, 'no_setter_in_callback'); 27 | } 28 | 29 | assert.equal(ws.OPEN, 1); 30 | assert.equal(ws.CLOSING, 2); 31 | assert.equal(ws.CLOSED, 3); 32 | 33 | assert.equal(ws.url, 'ws://localhost:' + PORT + '/'); 34 | try { 35 | ws.url = 'foobar'; 36 | assert.equal( 37 | ws.url, 'ws://localhost:' + PORT + '/', 38 | 'Should not have been able to set read-only url attribute' 39 | ); 40 | } catch (e) { 41 | assert.equal(e.type, 'no_setter_in_callback'); 42 | } 43 | }); 44 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io/support/node-websocket-client/test/test-ready-state.js: -------------------------------------------------------------------------------- 1 | // Verify that readyState transitions are implemented correctly 2 | 3 | var assert = require('assert'); 4 | var WebSocket = require('../lib/websocket').WebSocket; 5 | var WebSocketServer = require('websocket-server/ws/server').Server; 6 | 7 | var PORT = 1024 + Math.floor(Math.random() * 4096); 8 | 9 | var wss = new WebSocketServer(); 10 | wss.listen(PORT, 'localhost'); 11 | wss.on('connection', function(c) { 12 | c.close(); 13 | }); 14 | 15 | var ws = new WebSocket('ws://localhost:' + PORT); 16 | assert.equal(ws.readyState, ws.CONNECTING); 17 | ws.onopen = function() { 18 | assert.equal(ws.readyState, ws.OPEN); 19 | 20 | ws.close(); 21 | assert.ok(ws.readyState == ws.CLOSING); 22 | }; 23 | ws.onclose = function() { 24 | assert.equal(ws.readyState, ws.CLOSED); 25 | wss.close(); 26 | }; 27 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io/support/node-websocket-client/test/test-server-close.js: -------------------------------------------------------------------------------- 1 | // Verify that a connection can be closed gracefully from the server. 2 | 3 | var assert = require('assert'); 4 | var WebSocket = require('../lib/websocket').WebSocket; 5 | var WebSocketServer = require('websocket-server/ws/server').Server; 6 | 7 | var PORT = 1024 + Math.floor(Math.random() * 4096); 8 | var S_MSG = 'Server test: ' + (Math.random() * 100); 9 | 10 | var clientGotServerMessage = false; 11 | var clientGotServerClose = false; 12 | var serverGotClientClose = false; 13 | 14 | var wss = new WebSocketServer(); 15 | wss.listen(PORT, 'localhost'); 16 | wss.on('connection', function(c) { 17 | c.on('close', function() { 18 | serverGotClientClose = true; 19 | wss.close(); 20 | }); 21 | 22 | c.write(S_MSG); 23 | c.close(); 24 | }); 25 | 26 | var ws = new WebSocket('ws://localhost:' + PORT); 27 | ws.onmessage = function(m) { 28 | assert.deepEqual(m, {data: S_MSG}); 29 | 30 | clientGotServerMessage = true; 31 | }; 32 | ws.onclose = function() { 33 | assert.equal(ws.CLOSED, ws.readyState); 34 | clientGotServerClose = true; 35 | }; 36 | 37 | process.on('exit', function() { 38 | assert.ok(clientGotServerMessage); 39 | assert.ok(clientGotServerClose); 40 | assert.ok(serverGotClientClose); 41 | }); 42 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io/support/node-websocket-client/test/test-unix-sockets.js: -------------------------------------------------------------------------------- 1 | // Verify that we can connect to a server over UNIX domain sockets. 2 | 3 | var assert = require('assert'); 4 | var fs = require('fs'); 5 | var path = require('path'); 6 | var sys = require('sys'); 7 | var WebSocket = require('../lib/websocket').WebSocket; 8 | var WebSocketServer = require('websocket-server/ws/server').Server; 9 | 10 | var PATH = path.join(__dirname, 'sock.' + process.pid); 11 | var S_MSG = 'Server test: ' + (Math.random() * 100); 12 | 13 | var serverGotConnection = false; 14 | var clientGotOpen = false; 15 | var clientGotData = false; 16 | 17 | var wss = new WebSocketServer(); 18 | wss.on('listening', function() { 19 | var ws = new WebSocket('ws+unix://' + PATH); 20 | ws.on('open', function() { 21 | clientGotOpen = true; 22 | 23 | ws.close(); 24 | }); 25 | ws.on('data', function(d) { 26 | assert.equal(d.toString('utf8'), S_MSG); 27 | clientGotData = true; 28 | }); 29 | }); 30 | wss.on('connection', function(c) { 31 | serverGotConnection = true; 32 | 33 | c.write(S_MSG); 34 | wss.close(); 35 | }); 36 | wss.listen(PATH); 37 | 38 | process.on('exit', function() { 39 | assert.ok(serverGotConnection); 40 | assert.ok(clientGotOpen); 41 | assert.ok(clientGotData); 42 | 43 | try { 44 | fs.unlinkSync(PATH); 45 | } catch(e) { } 46 | }); 47 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io/test/fixtures/cert.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDXTCCAkWgAwIBAgIJAMUSOvlaeyQHMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV 3 | BAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX 4 | aWRnaXRzIFB0eSBMdGQwHhcNMTAxMTE2MDkzMjQ5WhcNMTMxMTE1MDkzMjQ5WjBF 5 | MQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50 6 | ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB 7 | CgKCAQEAz+LXZOjcQCJq3+ZKUFabj71oo/ex/XsBcFqtBThjjTw9CVEVwfPQQp4X 8 | wtPiB204vnYXwQ1/R2NdTQqCZu47l79LssL/u2a5Y9+0NEU3nQA5qdt+1FAE0c5o 9 | exPimXOrR3GWfKz7PmZ2O0117IeCUUXPG5U8umhDe/4mDF4ZNJiKc404WthquTqg 10 | S7rLQZHhZ6D0EnGnOkzlmxJMYPNHSOY1/6ivdNUUcC87awNEA3lgfhy25IyBK3QJ 11 | c+aYKNTbt70Lery3bu2wWLFGtmNiGlQTS4JsxImRsECTI727ObS7/FWAQsqW+COL 12 | 0Sa5BuMFrFIpjPrEe0ih7vRRbdmXRwIDAQABo1AwTjAdBgNVHQ4EFgQUDnV4d6mD 13 | tOnluLoCjkUHTX/n4agwHwYDVR0jBBgwFoAUDnV4d6mDtOnluLoCjkUHTX/n4agw 14 | DAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAFwV4MQfTo+qMv9JMiyno 15 | IEiqfOz4RgtmBqRnXUffcjS2dhc7/z+FPZnM79Kej8eLHoVfxCyWRHFlzm93vEdv 16 | wxOCrD13EDOi08OOZfxWyIlCa6Bg8cMAKqQzd2OvQOWqlRWBTThBJIhWflU33izX 17 | Qn5GdmYqhfpc+9ZHHGhvXNydtRQkdxVK2dZNzLBvBlLlRmtoClU7xm3A+/5dddeP 18 | AQHEPtyFlUw49VYtZ3ru6KqPms7MKvcRhYLsy9rwSfuuniMlx4d0bDR7TOkw0QQS 19 | A0N8MGQRQpzl4mw4jLzyM5d5QtuGBh2P6hPGa0YQxtI3RPT/p6ENzzBiAKXiSfzo 20 | xw== 21 | -----END CERTIFICATE----- 22 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io/test/fixtures/key.key: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | MIIEowIBAAKCAQEAz+LXZOjcQCJq3+ZKUFabj71oo/ex/XsBcFqtBThjjTw9CVEV 3 | wfPQQp4XwtPiB204vnYXwQ1/R2NdTQqCZu47l79LssL/u2a5Y9+0NEU3nQA5qdt+ 4 | 1FAE0c5oexPimXOrR3GWfKz7PmZ2O0117IeCUUXPG5U8umhDe/4mDF4ZNJiKc404 5 | WthquTqgS7rLQZHhZ6D0EnGnOkzlmxJMYPNHSOY1/6ivdNUUcC87awNEA3lgfhy2 6 | 5IyBK3QJc+aYKNTbt70Lery3bu2wWLFGtmNiGlQTS4JsxImRsECTI727ObS7/FWA 7 | QsqW+COL0Sa5BuMFrFIpjPrEe0ih7vRRbdmXRwIDAQABAoIBAGe4+9VqZfJN+dsq 8 | 8Osyuz01uQ8OmC0sAWTIqUlQgENIyf9rCJsUBlYmwR5BT6Z69XP6QhHdpSK+TiAR 9 | XUz0EqG9HYzcxHIBaACP7j6iRoQ8R4kbbiWKo0z3WqQGIOqFjvD/mKEuQdE5mEYw 10 | eOUCG6BnX1WY2Yr8WKd2AA/tp0/Y4d8z04u9eodMpSTbHTzYMJb5SbBN1vo6FY7q 11 | 8zSuO0BMzXlAxUsCwHsk1GQHFr8Oh3zIR7bQGtMBouI+6Lhh7sjFYsfxJboqMTBV 12 | IKaA216M6ggHG7MU1/jeKcMGDmEfqQLQoyWp29rMK6TklUgipME2L3UD7vTyAVzz 13 | xbVOpZkCgYEA8CXW4sZBBrSSrLR5SB+Ubu9qNTggLowOsC/kVKB2WJ4+xooc5HQo 14 | mFhq1v/WxPQoWIxdYsfg2odlL+JclK5Qcy6vXmRSdAQ5lK9gBDKxZSYc3NwAw2HA 15 | zyHCTK+I0n8PBYQ+yGcrxu0WqTGnlLW+Otk4CejO34WlgHwbH9bbY5UCgYEA3ZvT 16 | C4+OoMHXlmICSt29zUrYiL33IWsR3/MaONxTEDuvgkOSXXQOl/8Ebd6Nu+3WbsSN 17 | bjiPC/JyL1YCVmijdvFpl4gjtgvfJifs4G+QHvO6YfsYoVANk4u6g6rUuBIOwNK4 18 | RwYxwDc0oysp+g7tPxoSgDHReEVKJNzGBe9NGGsCgYEA4O4QP4gCEA3B9BF2J5+s 19 | n9uPVxmiyvZUK6Iv8zP4pThTBBMIzNIf09G9AHPQ7djikU2nioY8jXKTzC3xGTHM 20 | GJZ5m6fLsu7iH+nDvSreDSeNkTBfZqGAvoGYQ8uGE+L+ZuRfCcXYsxIOT5s6o4c3 21 | Dle2rVFpsuKzCY00urW796ECgYBn3go75+xEwrYGQSer6WR1nTgCV29GVYXKPooy 22 | zmmMOT1Yw80NSkEw0pFD4cTyqVYREsTrPU0mn1sPfrOXxnGfZSVFpcR/Je9QVfQ7 23 | eW7GYxwfom335aqHVj10SxRqteP+UoWWnHujCPz94VRKZMakBddYCIGSan+G6YdS 24 | 7sdmwwKBgBc2qj0wvGXDF2kCLwSGfWoMf8CS1+5fIiUIdT1e/+7MfDdbmLMIFVjF 25 | QKS3zVViXCbrG5SY6wS9hxoc57f6E2A8vcaX6zy2xkZlGHQCpWRtEM5R01OWJQaH 26 | HsHMmQZGUQVoDm1oRkDhrTFK4K3ukc3rAxzeTZ96utOQN8/KJsTv 27 | -----END RSA PRIVATE KEY----- 28 | -------------------------------------------------------------------------------- /angular-frontend/app/bower_components/socket.io/test/leaks/socket.leaktest.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * socket.io-node 3 | * Copyright(c) 2011 LearnBoost 4 | * MIT Licensed 5 | */ 6 | 7 | /** 8 | * Test dependencies. 9 | */ 10 | 11 | require.paths.unshift(__dirname + '/../../lib'); 12 | 13 | var assertvanish = require('assertvanish') 14 | , common = require('../common') 15 | , ports = 15800; 16 | 17 | function resultCallback (leaks, leakedSocket) { 18 | if (leaks) { 19 | console.error('Leak detected'); 20 | process.exit(1); 21 | } else { 22 | console.error('No leaks'); 23 | process.exit(0); 24 | } 25 | }; 26 | 27 | /** 28 | * Test. 29 | */ 30 | 31 | var cl = client(++ports); 32 | var io = create(cl); 33 | 34 | io.sockets.on('connection', function (socket) { 35 | console.log('connected'); 36 | 37 | socket.on('disconnect', function() { 38 | console.log("client gone"); 39 | setTimeout(gc, 1000); 40 | assertvanish(socket, 2000, {silent: true, callback: resultCallback}); 41 | }); 42 | }); 43 | 44 | setTimeout(function() { 45 | cl.handshake(function (sid) { 46 | var ws = websocket(cl, sid); 47 | ws.on('open', function () { 48 | console.log('open!'); 49 | setTimeout(function() { 50 | ws.close(); 51 | }, 500); 52 | }); 53 | }); 54 | }, 100); 55 | -------------------------------------------------------------------------------- /angular-frontend/app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/krimple/angular-socketio-chat/218a26fb6528b29fe37a2615c9c85fb9a3997907/angular-frontend/app/favicon.ico -------------------------------------------------------------------------------- /angular-frontend/app/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/krimple/angular-socketio-chat/218a26fb6528b29fe37a2615c9c85fb9a3997907/angular-frontend/app/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /angular-frontend/app/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/krimple/angular-socketio-chat/218a26fb6528b29fe37a2615c9c85fb9a3997907/angular-frontend/app/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /angular-frontend/app/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/krimple/angular-socketio-chat/218a26fb6528b29fe37a2615c9c85fb9a3997907/angular-frontend/app/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /angular-frontend/app/images/yeoman.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/krimple/angular-socketio-chat/218a26fb6528b29fe37a2615c9c85fb9a3997907/angular-frontend/app/images/yeoman.png -------------------------------------------------------------------------------- /angular-frontend/app/robots.txt: -------------------------------------------------------------------------------- 1 | # robotstxt.org 2 | 3 | User-agent: * 4 | -------------------------------------------------------------------------------- /angular-frontend/app/scripts/app.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | angular 4 | .module('chatApp', [ 5 | 'ngCookies', 6 | 'ngResource', 7 | 'ngSanitize', 8 | 'btford.socket-io' 9 | ]) 10 | .value('nickName', 'anonymous'); 11 | -------------------------------------------------------------------------------- /angular-frontend/app/scripts/controllers/socket.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | angular.module('chatApp') 4 | .controller('SocketCtrl', function ($log, $scope, chatSocket, messageFormatter, nickName) { 5 | $scope.nickName = nickName; 6 | $scope.messageLog = 'Ready to chat!'; 7 | $scope.sendMessage = function() { 8 | var match = $scope.message.match('^\/nick (.*)'); 9 | 10 | if (angular.isDefined(match) && angular.isArray(match) && match.length === 2) { 11 | var oldNick = nickName; 12 | nickName = match[1]; 13 | $scope.message = ''; 14 | $scope.messageLog = messageFormatter(new Date(), 15 | nickName, 'nickname changed - from ' + 16 | oldNick + ' to ' + nickName + '!') + $scope.messageLog; 17 | $scope.nickName = nickName; 18 | } 19 | 20 | $log.debug('sending message', $scope.message); 21 | chatSocket.emit('message', nickName, $scope.message); 22 | $scope.message = ''; 23 | }; 24 | 25 | $scope.$on('socket:broadcast', function(event, data) { 26 | $log.debug('got a message', event.name); 27 | if (!data.payload) { 28 | $log.error('invalid message', 'event', event, 'data', JSON.stringify(data)); 29 | return; 30 | } 31 | $scope.$apply(function() { 32 | $scope.messageLog = $scope.messageLog + messageFormatter(new Date(), data.source, data.payload); 33 | }); 34 | }); 35 | }); 36 | -------------------------------------------------------------------------------- /angular-frontend/app/scripts/directives/chatbox.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | 'use strict'; 3 | 4 | angular.module('chatApp') 5 | .directive('chatBox', function() { 6 | return { 7 | restrict: 'E', 8 | template: '', 9 | controller: function($scope, $element) { 10 | $scope.$watch('messageLog', function() { 11 | var textArea = $element[0].children[0]; 12 | textArea.scrollTop = textArea.scrollHeight; 13 | }); 14 | } 15 | }; 16 | }); 17 | 18 | }()); 19 | -------------------------------------------------------------------------------- /angular-frontend/app/scripts/services/messageformatter.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | angular.module('chatApp') 4 | .value('messageFormatter', function(date, nick, message) { 5 | return date.toLocaleTimeString() + ' - ' + 6 | nick + ' - ' + 7 | message + '\n'; 8 | 9 | }); 10 | -------------------------------------------------------------------------------- /angular-frontend/app/scripts/services/socket.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | angular.module('chatApp') 3 | .factory('chatSocket', function (socketFactory) { 4 | var socket = socketFactory(); 5 | socket.forward('broadcast'); 6 | return socket; 7 | }); 8 | -------------------------------------------------------------------------------- /angular-frontend/app/styles/main.css: -------------------------------------------------------------------------------- 1 | /* Space out content a bit */ 2 | body { 3 | padding-top: 20px; 4 | padding-bottom: 20px; 5 | } 6 | 7 | /* Everything but the jumbotron gets side spacing for mobile first views */ 8 | .header, 9 | .marketing, 10 | .footer { 11 | padding-left: 15px; 12 | padding-right: 15px; 13 | } 14 | 15 | /* Custom page header */ 16 | .header { 17 | border-bottom: 1px solid #e5e5e5; 18 | } 19 | /* Make the masthead heading the same height as the navigation */ 20 | .header h3 { 21 | margin-top: 0; 22 | margin-bottom: 0; 23 | line-height: 40px; 24 | padding-bottom: 19px; 25 | } 26 | 27 | /* Custom page footer */ 28 | .footer { 29 | padding-top: 19px; 30 | color: #777; 31 | border-top: 1px solid #e5e5e5; 32 | } 33 | 34 | /* Customize container */ 35 | @media (min-width: 768px) { 36 | .container { 37 | max-width: 730px; 38 | } 39 | } 40 | .container-narrow > hr { 41 | margin: 30px 0; 42 | } 43 | 44 | /* Main marketing message and sign up button */ 45 | .jumbotron { 46 | text-align: center; 47 | border-bottom: 1px solid #e5e5e5; 48 | } 49 | .jumbotron .btn { 50 | font-size: 21px; 51 | padding: 14px 24px; 52 | } 53 | 54 | /* Supporting marketing content */ 55 | .marketing { 56 | margin: 40px 0; 57 | } 58 | .marketing p + h4 { 59 | margin-top: 28px; 60 | } 61 | 62 | /* Responsive: Portrait tablets and up */ 63 | @media screen and (min-width: 768px) { 64 | /* Remove the padding we set earlier */ 65 | .header, 66 | .marketing, 67 | .footer { 68 | padding-left: 0; 69 | padding-right: 0; 70 | } 71 | /* Space out the masthead */ 72 | .header { 73 | margin-bottom: 30px; 74 | } 75 | /* Remove the bottom border on the jumbotron for visual effect */ 76 | .jumbotron { 77 | border-bottom: 0; 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /angular-frontend/app/views/main.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /angular-frontend/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "app", 3 | "version": "0.0.0", 4 | "dependencies": { 5 | "angular": "1.2.15", 6 | "json3": "~3.2.6", 7 | "es5-shim": "~2.1.0", 8 | "jquery": "~1.11.0", 9 | "bootstrap": "~3.0.3", 10 | "angular-resource": "1.2.15", 11 | "angular-cookies": "1.2.15", 12 | "angular-sanitize": "1.2.15", 13 | "angular-route": "1.2.15", 14 | "socket.io-client": "~0.9.16", 15 | "angular-socket-io": "~0.4.1", 16 | "socket.io": "~0.9.15" 17 | }, 18 | "devDependencies": { 19 | "angular-mocks": "1.2.15", 20 | "angular-scenario": "1.2.15" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /angular-frontend/karma-e2e.conf.js: -------------------------------------------------------------------------------- 1 | // Karma configuration 2 | // http://karma-runner.github.io/0.10/config/configuration-file.html 3 | 4 | module.exports = function(config) { 5 | config.set({ 6 | // base path, that will be used to resolve files and exclude 7 | basePath: '', 8 | 9 | // testing framework to use (jasmine/mocha/qunit/...) 10 | frameworks: ['ng-scenario'], 11 | 12 | // list of files / patterns to load in the browser 13 | files: [ 14 | 'test/e2e/**/*.js' 15 | ], 16 | 17 | // list of files / patterns to exclude 18 | exclude: [], 19 | 20 | // web server port 21 | port: 8080, 22 | 23 | // level of logging 24 | // possible values: LOG_DISABLE || LOG_ERROR || LOG_WARN || LOG_INFO || LOG_DEBUG 25 | logLevel: config.LOG_INFO, 26 | 27 | 28 | // enable / disable watching file and executing tests whenever any file changes 29 | autoWatch: false, 30 | 31 | 32 | // Start these browsers, currently available: 33 | // - Chrome 34 | // - ChromeCanary 35 | // - Firefox 36 | // - Opera 37 | // - Safari (only Mac) 38 | // - PhantomJS 39 | // - IE (only Windows) 40 | browsers: ['Chrome'], 41 | 42 | 43 | // Continuous Integration mode 44 | // if true, it capture browsers, run tests and exit 45 | singleRun: false 46 | 47 | // Uncomment the following lines if you are using grunt's server to run the tests 48 | // proxies: { 49 | // '/': 'http://localhost:9000/' 50 | // }, 51 | // URL root prevent conflicts with the site root 52 | // urlRoot: '_karma_' 53 | }); 54 | }; 55 | -------------------------------------------------------------------------------- /angular-frontend/karma.conf.js: -------------------------------------------------------------------------------- 1 | // Karma configuration 2 | // http://karma-runner.github.io/0.10/config/configuration-file.html 3 | 4 | module.exports = function(config) { 5 | config.set({ 6 | // base path, that will be used to resolve files and exclude 7 | basePath: '', 8 | 9 | // testing framework to use (jasmine/mocha/qunit/...) 10 | frameworks: ['jasmine'], 11 | 12 | // list of files / patterns to load in the browser 13 | files: [ 14 | 'app/bower_components/angular/angular.js', 15 | 'app/bower_components/angular-mocks/angular-mocks.js', 16 | 'app/bower_components/angular-resource/angular-resource.js', 17 | 'app/bower_components/angular-cookies/angular-cookies.js', 18 | 'app/bower_components/angular-sanitize/angular-sanitize.js', 19 | 'app/bower_components/angular-route/angular-route.js', 20 | 'app/scripts/*.js', 21 | 'app/scripts/**/*.js', 22 | 'test/mock/**/*.js', 23 | 'test/spec/**/*.js' 24 | ], 25 | 26 | // list of files / patterns to exclude 27 | exclude: [], 28 | 29 | // web server port 30 | port: 8080, 31 | 32 | // level of logging 33 | // possible values: LOG_DISABLE || LOG_ERROR || LOG_WARN || LOG_INFO || LOG_DEBUG 34 | logLevel: config.LOG_INFO, 35 | 36 | 37 | // enable / disable watching file and executing tests whenever any file changes 38 | autoWatch: false, 39 | 40 | 41 | // Start these browsers, currently available: 42 | // - Chrome 43 | // - ChromeCanary 44 | // - Firefox 45 | // - Opera 46 | // - Safari (only Mac) 47 | // - PhantomJS 48 | // - IE (only Windows) 49 | browsers: ['Chrome'], 50 | 51 | 52 | // Continuous Integration mode 53 | // if true, it capture browsers, run tests and exit 54 | singleRun: false 55 | }); 56 | }; 57 | -------------------------------------------------------------------------------- /angular-frontend/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "app", 3 | "version": "0.0.0", 4 | "dependencies": {}, 5 | "devDependencies": { 6 | "grunt": "~0.4.1", 7 | "grunt-autoprefixer": "~0.4.0", 8 | "grunt-bower-install": "~1.0.0", 9 | "grunt-concurrent": "~0.5.0", 10 | "grunt-contrib-clean": "~0.5.0", 11 | "grunt-contrib-concat": "~0.3.0", 12 | "grunt-contrib-connect": "~0.5.0", 13 | "grunt-contrib-copy": "~0.4.1", 14 | "grunt-contrib-cssmin": "~0.7.0", 15 | "grunt-contrib-htmlmin": "~0.1.3", 16 | "grunt-contrib-imagemin": "~0.3.0", 17 | "grunt-contrib-jshint": "~0.7.1", 18 | "grunt-contrib-uglify": "~0.2.0", 19 | "grunt-contrib-watch": "~0.5.2", 20 | "grunt-google-cdn": "~0.2.0", 21 | "grunt-newer": "~0.6.1", 22 | "grunt-ngmin": "~0.0.2", 23 | "grunt-rev": "~0.1.0", 24 | "grunt-svgmin": "~0.2.0", 25 | "grunt-usemin": "~2.0.0", 26 | "jshint-stylish": "~0.1.3", 27 | "load-grunt-tasks": "~0.4.0", 28 | "time-grunt": "~0.2.1", 29 | "karma": "^0.12.9" 30 | }, 31 | "engines": { 32 | "node": ">=0.10.0" 33 | }, 34 | "scripts": { 35 | "test": "grunt test" 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /angular-frontend/test/.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "node": true, 3 | "browser": true, 4 | "esnext": true, 5 | "bitwise": true, 6 | "camelcase": true, 7 | "curly": true, 8 | "eqeqeq": true, 9 | "immed": true, 10 | "indent": 2, 11 | "latedef": true, 12 | "newcap": true, 13 | "noarg": true, 14 | "quotmark": "single", 15 | "regexp": true, 16 | "undef": true, 17 | "unused": true, 18 | "strict": true, 19 | "trailing": true, 20 | "smarttabs": true, 21 | "globals": { 22 | "after": false, 23 | "afterEach": false, 24 | "angular": false, 25 | "before": false, 26 | "beforeEach": false, 27 | "browser": false, 28 | "describe": false, 29 | "expect": false, 30 | "inject": false, 31 | "it": false, 32 | "jasmine": false, 33 | "spyOn": false 34 | } 35 | } 36 | 37 | -------------------------------------------------------------------------------- /angular-frontend/test/runner.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | End2end Test Runner 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /angular-frontend/test/spec/controllers/main.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | describe('Controller: MainCtrl', function () { 4 | 5 | // load the controller's module 6 | beforeEach(module('appApp')); 7 | 8 | var MainCtrl, 9 | scope; 10 | 11 | // Initialize the controller and a mock scope 12 | beforeEach(inject(function ($controller, $rootScope) { 13 | scope = $rootScope.$new(); 14 | MainCtrl = $controller('MainCtrl', { 15 | $scope: scope 16 | }); 17 | })); 18 | 19 | it('should attach a list of awesomeThings to the scope', function () { 20 | expect(scope.awesomeThings.length).toBe(3); 21 | }); 22 | }); 23 | -------------------------------------------------------------------------------- /angular-frontend/test/spec/controllers/nick.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | describe('Controller: NickCtrl', function () { 4 | 5 | // load the controller's module 6 | beforeEach(module('appApp')); 7 | 8 | var NickCtrl, 9 | scope; 10 | 11 | // Initialize the controller and a mock scope 12 | beforeEach(inject(function ($controller, $rootScope) { 13 | scope = $rootScope.$new(); 14 | NickCtrl = $controller('NickCtrl', { 15 | $scope: scope 16 | }); 17 | })); 18 | 19 | it('should attach a list of awesomeThings to the scope', function () { 20 | expect(scope.awesomeThings.length).toBe(3); 21 | }); 22 | }); 23 | -------------------------------------------------------------------------------- /angular-frontend/test/spec/controllers/socket.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | describe('Controller: SocketCtrl', function () { 4 | 5 | // load the controller's module 6 | beforeEach(module('appApp')); 7 | 8 | var SocketCtrl, 9 | scope; 10 | 11 | // Initialize the controller and a mock scope 12 | beforeEach(inject(function ($controller, $rootScope) { 13 | scope = $rootScope.$new(); 14 | SocketCtrl = $controller('SocketCtrl', { 15 | $scope: scope 16 | }); 17 | })); 18 | 19 | it('should attach a list of awesomeThings to the scope', function () { 20 | expect(scope.awesomeThings.length).toBe(3); 21 | }); 22 | }); 23 | -------------------------------------------------------------------------------- /angular-frontend/test/spec/services/messageformatter.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | describe('Service: messageFormatter', function () { 4 | 5 | // load the service's module 6 | beforeEach(module('appApp')); 7 | 8 | // instantiate service 9 | var messageFormatter; 10 | beforeEach(inject(function (_messageFormatter_) { 11 | messageFormatter = _messageFormatter_; 12 | })); 13 | 14 | it('should do something', function () { 15 | expect(!!messageFormatter).toBe(true); 16 | }); 17 | 18 | }); 19 | -------------------------------------------------------------------------------- /angular-frontend/test/spec/services/socket.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | describe('Service: Socket', function () { 4 | 5 | // load the service's module 6 | beforeEach(module('appApp')); 7 | 8 | // instantiate service 9 | var Socket; 10 | beforeEach(inject(function (_Socket_) { 11 | Socket = _Socket_; 12 | })); 13 | 14 | it('should do something', function () { 15 | expect(!!Socket).toBe(true); 16 | }); 17 | 18 | }); 19 | -------------------------------------------------------------------------------- /bin/www: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env nodemon 2 | var debug = require('debug')('my-application'); 3 | var app = require('../app'); 4 | 5 | app.set('port', process.env.PORT || 3000); 6 | 7 | var server = app.listen(app.get('port'), function() { 8 | debug('Express server listening on port ' + server.address().port); 9 | }); 10 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "application-name", 3 | "version": "0.0.1", 4 | "private": true, 5 | "scripts": { 6 | "start": "node ./bin/www" 7 | }, 8 | "dependencies": { 9 | "express": "~3.5.0", 10 | "static-favicon": "~1.0.0", 11 | "morgan": "~1.0.0", 12 | "cookie-parser": "~1.0.1", 13 | "body-parser": "~1.0.0", 14 | "debug": "~0.7.4", 15 | "jade": "~1.3.0", 16 | "stylus": "0.42.3", 17 | "socket.io": "^0.9.16" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/krimple/angular-socketio-chat/218a26fb6528b29fe37a2615c9c85fb9a3997907/public/favicon.ico -------------------------------------------------------------------------------- /public/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/krimple/angular-socketio-chat/218a26fb6528b29fe37a2615c9c85fb9a3997907/public/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /public/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/krimple/angular-socketio-chat/218a26fb6528b29fe37a2615c9c85fb9a3997907/public/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /public/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/krimple/angular-socketio-chat/218a26fb6528b29fe37a2615c9c85fb9a3997907/public/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /public/images/47b431ed.yeoman.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/krimple/angular-socketio-chat/218a26fb6528b29fe37a2615c9c85fb9a3997907/public/images/47b431ed.yeoman.png -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 |

Angular Chatter

You are known as: .
Change your nickname with /nick [yourNewNick]
 

-------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | # robotstxt.org 2 | 3 | User-agent: * 4 | -------------------------------------------------------------------------------- /public/scripts/e6702acc.scripts.js: -------------------------------------------------------------------------------- 1 | "use strict";angular.module("chatApp",["ngCookies","ngResource","ngSanitize","btford.socket-io"]).value("nickName","anonymous"),angular.module("chatApp").controller("SocketCtrl",["$log","$scope","chatSocket","messageFormatter","nickName",function(a,b,c,d,e){b.nickName=e,b.messageLog="Ready to chat!",b.sendMessage=function(){var f=b.message.match("^/nick (.*)");if(angular.isDefined(f)&&angular.isArray(f)&&2===f.length){var g=e;e=f[1],b.message="",b.messageLog=d(new Date,e,"nickname changed - from "+g+" to "+e+"!")+b.messageLog,b.nickName=e}a.debug("sending message",b.message),c.emit("message",e,b.message),b.message=""},b.$on("socket:broadcast",function(c,e){return a.debug("got a message",c.name),e.payload?void b.$apply(function(){b.messageLog=b.messageLog+d(new Date,e.source,e.payload)}):void a.error("invalid message","event",c,"data",JSON.stringify(e))})}]),angular.module("chatApp").factory("chatSocket",["socketFactory",function(a){var b=a();return b.forward("broadcast"),b}]),angular.module("chatApp").value("messageFormatter",function(a,b,c){return a.toLocaleTimeString()+" - "+b+" - "+c+"\n"}),function(){angular.module("chatApp").directive("chatBox",function(){return{restrict:"E",template:'',controller:["$scope","$element",function(a,b){a.$watch("messageLog",function(){var a=b[0].children[0];a.scrollTop=a.scrollHeight})}]}})}(); -------------------------------------------------------------------------------- /public/styles/5a3706b1.main.css: -------------------------------------------------------------------------------- 1 | body{padding-top:20px;padding-bottom:20px}.footer,.header,.marketing{padding-left:15px;padding-right:15px}.header{border-bottom:1px solid #e5e5e5}.header h3{margin-top:0;margin-bottom:0;line-height:40px;padding-bottom:19px}.footer{padding-top:19px;color:#777;border-top:1px solid #e5e5e5}@media (min-width:768px){.container{max-width:730px}}.container-narrow>hr{margin:30px 0}.jumbotron{text-align:center;border-bottom:1px solid #e5e5e5}.jumbotron .btn{font-size:21px;padding:14px 24px}.marketing{margin:40px 0}.marketing p+h4{margin-top:28px}@media screen and (min-width:768px){.footer,.header,.marketing{padding-left:0;padding-right:0}.header{margin-bottom:30px}.jumbotron{border-bottom:0}}body{padding-top:20px;padding-bottom:20px}.footer,.header,.marketing{padding-left:15px;padding-right:15px}.header{border-bottom:1px solid #e5e5e5}.header h3{margin-top:0;margin-bottom:0;line-height:40px;padding-bottom:19px}.footer{padding-top:19px;color:#777;border-top:1px solid #e5e5e5}@media (min-width:768px){.container{max-width:730px}}.container-narrow>hr{margin:30px 0}.jumbotron{text-align:center;border-bottom:1px solid #e5e5e5}.jumbotron .btn{font-size:21px;padding:14px 24px}.marketing{margin:40px 0}.marketing p+h4{margin-top:28px}@media screen and (min-width:768px){.footer,.header,.marketing{padding-left:0;padding-right:0}.header{margin-bottom:30px}.jumbotron{border-bottom:0}} -------------------------------------------------------------------------------- /public/views/main.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /routes/api.js: -------------------------------------------------------------------------------- 1 | module.exports = function(app) { 2 | 'use strict'; 3 | 4 | /* GET users listing. */ 5 | app.get('/api/test', function(req, res) { 6 | res.send([ 7 | { 8 | a: 'b', 9 | c: 'd' 10 | }]); 11 | }); 12 | }; 13 | 14 | 15 | -------------------------------------------------------------------------------- /routes/users.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var express = require('express'), 4 | router = express.Router(); 5 | 6 | /* GET users listing. */ 7 | router.get('/', function(req, res) { 8 | res.send('respond with a resource'); 9 | }); 10 | 11 | module.exports = router; 12 | -------------------------------------------------------------------------------- /sockets/base.js: -------------------------------------------------------------------------------- 1 | module.exports = function (io) { 2 | 'use strict'; 3 | io.on('connection', function (socket) { 4 | socket.broadcast.emit('user connected'); 5 | 6 | socket.on('message', function (from, msg) { 7 | 8 | console.log('recieved message from', from, 'msg', JSON.stringify(msg)); 9 | 10 | console.log('broadcasting message'); 11 | console.log('payload is', msg); 12 | io.sockets.emit('broadcast', { 13 | payload: msg, 14 | source: from 15 | }); 16 | console.log('broadcast complete'); 17 | }); 18 | }); 19 | }; 20 | 21 | -------------------------------------------------------------------------------- /views/error.jade: -------------------------------------------------------------------------------- 1 | extends layout 2 | 3 | block content 4 | h1= message 5 | h2= error.status 6 | pre #{error.stack} 7 | -------------------------------------------------------------------------------- /views/index.jade: -------------------------------------------------------------------------------- 1 | extends layout 2 | 3 | block content 4 | h1= title 5 | p Welcome to #{title} 6 | -------------------------------------------------------------------------------- /views/layout.jade: -------------------------------------------------------------------------------- 1 | doctype html 2 | html 3 | head 4 | title= title 5 | link(rel='stylesheet', href='/stylesheets/style.css') 6 | body 7 | block content --------------------------------------------------------------------------------