Code Monkey home page Code Monkey logo

angular-seed's People

Contributors

anotheri avatar craigbeck avatar danielyoung avatar durango avatar gitter-badger avatar leostera avatar lucasconstantino avatar pilsy avatar sdeering avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

angular-seed's Issues

Add StealJS

Into grunt, for:

  • builds,
  • package and dependency management

UI-router

Have you guys thought about using ui-router instead of ngRoute?

Windows Support: nested `node_modules` dirs too long for windows to handle?

It appears the Project does not work on Windows (though it may be a greater issue with node)

I have Windows 7 enterprise 64bit version. I attempted to run clever init myTestApp and it did not complete for ~40 min so I Ctrl-C'ed the command

I then attempted to re-run it again, using --force to overwrite the existing app, but it failed on removing some directories.

I then opened Windows explorer to remove the directories, but it failed, saying "The source filename(s) are longer than what is supported by the system. Try moving to a location which has a shorter pathname".

Given that Windows blows, I am not sure what can be done here. I've worked around this problem with special Git options, but this isn't a git repo so I'm not sure how I'd use that to solve the problem here.

Anyway just thought I'd leave a note here about the problem in case you guys have any suggestions. I see you prominently displaying notes for "Windows Users" througout the docs, so hopefully I'm just missing something simple?

Configure everything to be verbose on verbose mode

The htmlmin was failing for a while until I discovered a typo in one of the html files.

Had to track it down manually, which was painful and time consuming.

As an alternative look into htmlcompressor.

Change in jquery path before and after "clever setup"

Currently when I run

setup to install NPM & Bower packages for each module and adds modules to bundleDependencies

Something changes in the "components" directory structure of jQuery - that screws up the path ref in main.js which does not change in the :9000 site to reflect the directory change.

before setup - after clean install path is jquery: '../components/jquery/jquery',

after setup - the path is jquery: '../components/jquery/dist/jquery',

Document lib directives/filters/services

We need proper documentation for:

  • Session controller
  • Session service
  • string-to-number directive
  • starts-with filter
  • CountryList service
  • Generic service
  • HTTPOptions service

ProtractorVersionChange

The current protractor version (0.10.0) in the package.json file causes the end to end tests to fail. When changed to 0.24.2 it works again. Submitting a pull request now.

Backend performance tests

Hi quick question, i noticed performance tests under the backend tests directory. Where do i find documentation on how to run them and what are they measuring ?

Kind regards

B

Issue while running the Server

Hello,

Im new to CleverStack and Angular. Tried installing the CleverStack CLI successfully and then tried running the server by extracting the Angular-Seed. But unfortunately im getting the following error. Can you please advise and let me know what am i missing here.

Clever Serve
events.js:72
throw er; // Unhandled 'error' event
^
Error: spawn ENOENT
at errnoException (child_process.js:988:11)
at Process.ChildProcess._handle.onexit (child_process.js:779:34)

Thanks,
Karthik Kornalies

Auth

I was thinking in something along this lines:

define(['angular'], function (angular) {
  'use strict';

  var services = angular.module('ngSeed.services');

  /**
   * @ngdoc service
   * @name $auth
   * @description
   * Dead-easy auth checking.
   * 
   * Please note that custom login requiring logic, on-location-change auth
   * checking, and default login success behaviour can be overwriten with a decorator.
   *
   * In the next example we replace the handleLoginStart function
   * with one that opens a login-modal instead of redirecting
   * to a login page, and handleLoginSuccess with one that closes it.
   * 
   * ```
   * app.config(function($provide){
   *   $provide.decorator('$auth', function ($delegate) {
   *     $delegate.handleLoginStart = function() {
   *       $('#login-modal').modal('open');
   *     };
   *     $delegate.handleLoginFinish = function() {
   *       $('#login-modal').modal('close');
   *     };
   *     return $delegate;
   *   });
   * });
   */
  app.factory('$auth', [
    '$rootScope', '$location'
    function ($rootScope, $location) {
      /**
       * @name currentUser
       * @type {Object}
       * @description the logged in user or undefined
       */
      var currentUser;

      /**
       * @description
       * The actual service.
       */
      return {
        /**
         * @name requireLogin
         * @description 
         * Custom login requiring logic.
         */
        handleLoginStart: function (redirect) {
          console.log("$auth: redirecting to /login");
          $location.path('/login');
          $location.search({
            redirect: encodeURIComponent(redirect)
          });
          return;
        },

        /**
         * @name handleLocationChange
         * @description
         * This method takes a user navigating, does a quick auth check
         * and if everything is alright proceeds. Otherwise, 
         */
        handleLocationChange: function (event, next, current) {
          if(!$route.current) {
            console.log("$auth: Welcome newcomer!");
          }

          if($auth.isLoggedIn()){
            next = '/'+next.split('/').splice(3).join('/').split("?")[0];
            var route = $route.routes[next];
            console.log("$auth: Guest access to", next);
            console.log("$auth:", next, "is", route.public ? "public" : "private");
            if(!route.public) {
              this.handleLoginStart(next.substr(1));
            }
            console.log("$auth: proceeding to load", next);
          }
        },

        /**
         * @name handleLoginSuccess
         * @description
         * This method redirects the user to the redirect search term if
         * it exists.
         */
        handleLoginSuccess: function () {
          if($location.search().redirect) {        
            console.log("$auth: redirecting to", $location.search().redirect);
            $location.path($location.search().redirect);
          }
        },

        /**
         * @name getCurrentUser
         * @return {Object} the current user
         */
        getCurrentUser: function () {
          return currentUser;
        },

        /**
         * @name isLoggedIn
         * @return {Boolean} true or false if there is or not a current user
         */
        isLoggedIn: function () {
          return !!currentUser;
        },

        /**
         * @name login
         * @param  {Object} credentials the credentials to be passed to the login service
         * @return {Promise}            the promise your login service returns on login
         * @description 
         * This methods can, are meant to and should be *decorated* not to have to pass in
         * the UserService on every call.
         */
        login: function (UserService, credentials) {
          $rootScope.$emit('$auth:loginStart');
          return UserService.login(credentials).then(function (res) {
            if(res.status) {
              currentUser = res.user;
              $rootScope.$emit('$auth:loginSuccess');
            } else {
              $rootScope.$emit('$auth:loginFailure');
            }
          });
        },

        /**
         * @name logout
         * @return {Promise} the promise your login service returns on logout
         * @description 
         * This methods can, are meant to and should be *decorated* not to have to pass in
         * the UserService on every call.
         */
        logout: function (UserService) {
          $rootScope.$emit('$auth:logoutStart');
          return UserService.logout().then(function (res) {
            if(res.status) {
              $rootScope.$emit('$auth:logoutSuccess');
              currentUser = undefined;
            } else {
              $rootScope.$emit('$auth:logoutFailure');
            }
          });
        }
      }
    }
  ]);

  app.config(['$httpProvider', function ($httpProvider) {

  }]);

  app.run(['$rootScope', '$location', '$route', '$auth'
      , function ($rootScope, $location, $route, $auth) {

      /**
       * @description
       * Verifies user authorization before allowing any navigation.
       */
      $rootScope.$on('$locationChangeStart', function (event, next, current) {
        if(typeof $auth.handleLocationChange === 'function') {
          $auth.handleLocationChange(event, next, current);
        }
      });

      /**
       * @description
       * If there is a redirection route set, navigate there.
       */
      $rootScope.$on('$auth:loginSuccess', function() {
        if(typeof $auth.handleLoginSuccess === 'function') {
          $auth.handleLoginSuccess();
        }
      });
  }]);
});

This would be a completely centralized, generic auth system that checks by default on location change start if the user is logged in and redirects him to the login page, and after the user gets logged in, redirects him back to the page he was trying to access.

In the case it was a modal window instead of a page, as it is right now a decorator should be used to alter the behaviour of the handlers.

What I see is definitely bad about this pattern is that someone could listen to the events and hooking up their own functionality without changing the decorators (easy-to-get weird behaviour), not everyone is familiar with the decorator pattern (easy-to-get whole auth broken), not easily configurable (would require the user to decorate a bunch of stuff or to dig deep into the $delegate).

Whereas using a provider it works just as any other provider ($httpProvider, for instance), it allows for easy configuration, if necessary things can be decorated as well.

Grunt build breaks on jquery/dist path

Pull #74 breaks the grunt build. To reporduce:

$ git clone https://github.com/CleverStack/angular-seed.git
$ cd angular-seed
$ npm install && bower install
$ grunt

build will fail with:

Running "requirejs:compile" (requirejs) task
Error: ENOENT, no such file or directory '/Users/cbeck/projects/a6/camaro-admin/dist/components/jquery/dist/jquery.js'
In module tree:
    main

{ [Error: Error: ENOENT, no such file or directory '/Users/cbeck/projects/a6/camaro-admin/dist/components/jquery/dist/jquery.js'
In module tree:
    main

    at Object.fs.openSync (fs.js:427:18)
]
  originalError: 
   { [Error: ENOENT, no such file or directory '/Users/cbeck/projects/a6/camaro-admin/dist/components/jquery/dist/jquery.js']
     errno: 34,
     code: 'ENOENT',
     path: '/Users/cbeck/projects/a6/camaro-admin/dist/components/jquery/dist/jquery.js',
     syscall: 'open',
     fileName: '/Users/cbeck/projects/a6/camaro-admin/dist/components/jquery/dist/jquery.js',
     moduleTree: [ 'main' ] } }

There is no dist directory under app/components/jquery

$ tree -L 1 app/components/jquery
app/components/jquery
├── AUTHORS.txt
├── CONTRIBUTING.md
├── Gruntfile.js
├── MIT-LICENSE.txt
├── README.md
├── bower.json
├── build
├── component.json
├── composer.json
├── jquery-migrate.js
├── jquery-migrate.min.js
├── jquery.js
├── jquery.min.js
├── jquery.min.map
├── package.json
├── speed
├── src
└── test

Auth directive

Make a ng-authorized directive that can be used to protect a view from an unauthorized/unauthenticated user. It should make available for the template the user data.

ng-authorized(options)
  h3 Welcome {{user.name}}!

It'll take an options object (or an empty object, meaning that any user that is logged in will have acces to it) to help filter which sections are available to which users.

If the user has no access it would redirect him to a login url. This should be configurable somewhere, I'm thinking this should be part of the "SessionService". If we are going full RESTful, it should be AuthService and it should be part of the AuthService we already have in place that uses http interceptors.

This is just an idea, @pilsy, @simonwjackson if you have anything to add/say here please do.

karma auto-watch hogs resources

While running karma start --auto-watch, the "node" process that was created by it was constantly using around 50% of processor time (on 2.2 i7 processor).

This Karma issue (karma-runner/karma#389) explains that is because of the greedy file pattern on components folder.

After I changed the pattern from:

{ pattern: 'app/components/**/*.js', included: false, served: true },

to

{ pattern: 'app/components/**/*.js', included: false, served: true, watched: false },

the "node" process fell down to reasonable 2%.

With this change the developer will have to re-start the runner when components folder is changed, but that folder is not updated too often anyway.

I guess I could have sent a PR for this, but the change is too small for PR.

Move away from Yeoman and into a lighter Gruntfile and folder structure

This is also a question because we want to support small to medium as well as medium to large applications it would make sense to provide examples of good folder structures.

For little apps it doesn't hurt to have drawers for controllers, services and other resources, but for the big ones it is actually better to make separate modules out of each of those and have a common module that is shared. That way the app code would actually make sense when you look at it as you'd have app/scripts/dashboard and it'll have all the dashboard code, or app/scripts/messages and it'll have all the messages module code.

Make docs pretty.

They currently are usable, but we could throw in:

  • A angularjs filter powered search box.
  • A bigger max-width to fit bigger screens.
  • Some CleverTech logo.

Modularity

Apps should be able to be designed using small modules that provide certain functionality. Like a polls module, or a user module. Some modules will be common modules, some will have very specific functionality. This layout comes to mind:

app
app/index.html
app/components
app/styles
#…more app related folders

# The scrips app, bootstrapping and such
app/scripts

# This is where the common stuff will be.
app/scripts/common
app/scripts/common/controllers
app/scripts/common/services
app/scripts/common/directives
app/scripts/common/filters

# A polls module
app/scripts/polls
app/scripts/polls/controllers
app/scripts/polls/services
app/scripts/polls/directives
app/scripts/polls/filters

# The users module
app/scripts/users
app/scripts/users/controllers
app/scripts/users/services
app/scripts/users/directives
app/scripts/users/filters

This way all the scripts are separated nicely. An even better approach in my opinion would be to have each module include all it's necessary elements:

# Main files
app/index.html
app/bootstrap.js

# Main module
app/common/components
app/common/scripts/{controllers|services|directives|filters|config}
app/common/views/{partials}
app/common/styles/{less}
app/common/images

# Users module
app/users/components
app/users/scripts/{controllers|services|directives|filters|config}
app/users/views/{partials}
app/users/styles/{less}
app/users/images

This way adding a module to a project would be a matter of copy-paste and could even be easily automated when cleverstack-cli is available. The build process would have to change, same as the bootstrapping. Perhaps this could be the chance to reconsider a leaner dependency management tool.

Any thoughts team? @danielyoung @pilsy @nailgun @simonwjackson

npm install not working?

Hi guys,

Running OSX and tried running sudo npm install -g cleverstack-cli as per the instructions in the readme.

It comes back with:
npm http 404 https://registry.npmjs.org/cleverstack-cli
npm ERR! 404 'cleverstack-cli' is not in the npm registry.
npm ERR! 404 You should bug the author to publish it

It might be me, but it says to bug you so here I am!

Pull Request Template

PR Checklist (Minor|Major Feature)

  • Feature improves existing core functionality
  • API is compatible with existing APIs and relevant standards (if applicable)
  • PR doesn't contain a breaking change
  • PR contains unit tests
  • PR contains integration tests (if suitable)
  • PR contains documentation update
  • PR passes all tests on Travis (sanity)
  • PR is rebased against recent master
  • PR is squashed into one commit per logical change
  • PR's commit messages are descriptive and allows us to autogenerate release notes (required commit message format)
  • All changes requested in review have been implemented

BrowserDetect directive

That way the following code can be used

section.ie(ng-browser-detect="ie<9")
  span.error This browser is not supported. Please use a decent browser.

It should support:

  • browser name and version (e.g. chrome 27)
  • browser name and version expression (e.g. chrome >25)
  • browser family (e.g. webkit)
  • browser os (e.g. os x, windows, android)

And it should be able to define any of those separately or within an object:

section.ie(ng-browser-detect=" { name: 'chrome', version: '>25', os: 'os x' }")
  span.error I'm sorry but we don't support Google Chrome 25 on Mac OS X

Getting Started Questions

Here are a few things that I've come across while getting started:

  1. First, could you explain a little about the subgenerators? You've indicated here that Cleverstack offers subgenerators for config, controller, crud-mock, directive, factory, filter, model, provider, service, test and a few others, but I can't see how to run them or what the complete set of them is.
  2. How do you specify options for the main application generator? When I ran "clever init my-app", I wasn't asked any questions. It would also be nice to be able to feed clever a json file with the answers and everything about my app and have it use that info to make the app for me.
  3. How do you use the data migration/evolution system with Cleverstack?
  4. How do you define a complex schema with objects that have properties that are objects that have primitive properties?
  5. Is the intention to let you create one MyThingModel.js file that works with both relational and document databases? What does it take to switch between using a document and a relational database?
  6. After I log out of my app, the Logout button is still there. Then if I refresh the page, I get the expected Login and Register buttons.
  7. After I log in to my app, I see the Logout button and Users button. There are two user records in my Users table. I click the Users button and see an empty users list with the message "There are currently no registered Users", and the following message in the browser console:
GET http://localhost:8080/user 401 (Unauthorized) 
  1. After I log in to my app, I change the url to http://localhost:9000/mymodule. My new module's page appears but instead of the logout button, I see the login and register buttons and get the console messages:
CSSessionProvider: using default loginStart method cs_session_provider.js:144
CSSessionProvider: using default loginSuccess method cs_session_provider.js:148
CSSessionProvider: using default locationChange method cs_session_provider.js:152
CSSessionProvider: Welcome newcomer! cs_session_provider.js:231
CSSessionProvider: Checking your session... cs_session_provider.js:232
GET http://localhost:8080/user/current 404 (Not Found) angular.js:7962
CSSessionProvider: request failed cs_session_provider.js:240
CSSessionProvider: proceeding as guest. cs_session_provider.js:241
CSSessionProvider: Guest access to /mymodule cs_session_provider.js:214
CSSessionProvider: /mymodule is public 
  1. The link on this page to submit a new issue on this page is broken. Since cleverstack is multiple repositories, I guess you'll need links for submitting issues with each one. While you're there, you might want to tweak the instructions so it's clear people are supposed to use github Issues for questions and discussions. At the moment it says "bugs"

Thanks!
Dan

TEST launch webdriver

Nomads-MacBook-Pro-2:cleverwalkingskeleton nomad$ clever test
Scanning folders for Gruntfiles...
Running "mochaTest:unit" (mochaTest) task

classes.Controller
.listAction()
✓ should call .send() with all Model instances
.getAction()
✓ should call .send() with Model instance by id
.postAction()
✓ should create new Model instance
✓ should call .send() with new Model instance
.putAction()
✓ should update Model instance by id
✓ should call .send() with updated Model instance
.deleteAction()
null
✓ should delete Model instance by id

service.BaseService
.setup(dbAdapter)
✓ should set .db to dbAdapter
.startTransaction()
✓ should call .db.startTransaction()
.query(sql)
Running SQL: test
✓ should call .db.query() with valid arguments
.findById(id)
✓ should find Model instance by id
.create(data)
✓ should create new Model instance with data
.findAll(options)
✓ should return all Model instances
.find(options)
✓ should return Model instances filtered by query options
.update(id, data)
✓ should update Model instance by id with data
.destroy(id)
✓ should mark Model instance as deleted by id

utils
.stacktrace()
✓ should return array
✓ should return stack stace beginning at current function
✓ should contain function names and filepaths

19 passing (687ms)

Running "mochaTest:e2e" (mochaTest) task
No files to check...OK

Done, without errors.
Running "karma:unit" (karma) task
INFO [karma]: Karma v0.10.10 server started at http://localhost:9090/
INFO [launcher]: Starting browser Chrome
INFO [launcher]: Starting browser PhantomJS
INFO [PhantomJS 1.9.7 (Mac OS X)]: Connected on socket 5p0hqBxWl3UJICLsLg1X
INFO [Chrome 35.0.1916 (Mac OS X 10.9.3)]: Connected on socket _PlJ_0yof8mGVwJiLg1Y
WARN [web-server]: 404: /base/app/modules/moduleone.js
WARN [web-server]: 404: /base/app/modules/moduletwo.js
Chrome 35.0.1916 (Mac OS X 10.9.3) ERROR: 'There is no timestamp for /base/app/modules/moduleone.js!'
Chrome 35.0.1916 (Mac OS X 10.9.3) ERROR: 'There is no timestamp for /base/app/modules/moduletwo.js!'
Chrome 35.0.1916 (Mac OS X 10.9.3) ERROR: 'There is no timestamp for /base/app/modules/modulethree.js!'
PhantomJS 1.9.7 (Mac OS X) ERROR: 'There is no timestamp for /base/app/modules/moduleone.js!'
PhantomJS 1.9.7 (Mac OS X) ERROR: 'There is no timestamp for /base/app/modules/moduletwo.js!'
PhantomJS 1.9.7 (Mac OS X) ERROR: 'There is no timestamp for /base/app/modules/modulethree.js!'
PhantomJS 1.9.7 (Mac OS X) ERROR
Error: Script error for: moduleone
http://requirejs.org/docs/errors.html#scripterror
at /Users/nomad/Projects/cleverwalkingskeleton/frontend/node_modules/requirejs/require.js:141
PhantomJS 1.9.7 (Mac OS X) ERROR
Error: Script error for: moduletwo
http://requirejs.org/docs/errors.html#scripterror
at /Users/nomad/Projects/cleverwalkingskeleton/frontend/node_modules/requirejs/require.js:141
PhantomJS 1.9.7 (Mac OS X): Executed 0 of 0 ERROR (0 secs / 0 secs)
PhantomJS 1.9.7 (Mac OS X): Executed 0 of 0 ERROR (0.119 secs / 0 secs)
Chrome 35.0.1916 (Mac OS X 10.9.3): Executed 0 of 0 SUCCESS (0 secs / 0 secs)
WARN [web-server]: 404: /base/app/modules/moduleone.js
Chrome 35.0.1916 (Mac OS X 10.9.3) ERROR
Uncaught Error: Script error for: moduleone
http://requirejs.org/docs/errors.html#scripterror
at /Users/nomad/Projects/cleverwalkingskeleton/frontend/node_modules/requirejs/require.js:141
Chrome 35.0.1916 (Mac OS X 10.9.3) ERROR
Uncaught Error: Script error for: moduletwo
http://requirejs.org/docs/errors.html#scripterror
at /Users/nomad/Projects/cleverwalkingskeleton/frontend/node_modules/requirejs/require.js:141
Chrome 35.0.1916 (Mac OS X 10.9.3) ERROR
Uncaught Error: Script error for: modulethree
http://requirejs.org/docs/errors.html#scripterror
at /Users/nomad/Projects/cleverwalkingskeleton/frontend/node_modules/requirejs/require.js:141
PhantomJS 1.9.7 (Mac OS X): Executed 0 of 0 ERROR (0.119 secs / 0 secs)
Chrome 35.0.1916 (Mac OS X 10.9.3): Executed 0 of 0 ERROR (0.144 secs / 0 secs)
Warning: Task "karma:unit" failed. Used --force, continuing.

Done, but with warnings.

Execution Time (2014-05-28 04:54:34 UTC)
loading tasks 699ms ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 23%
karma:unit 2.4s ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 77%
Total 3.1s
Tests ran successfully.
Nomads-MacBook-Pro-2:cleverwalkingskeleton nomad$ clever test
Scanning folders for Gruntfiles...
Running "mochaTest:unit" (mochaTest) task

classes.Controller
.listAction()
✓ should call .send() with all Model instances
.getAction()
✓ should call .send() with Model instance by id
.postAction()
✓ should create new Model instance
✓ should call .send() with new Model instance
.putAction()
✓ should update Model instance by id
✓ should call .send() with updated Model instance
.deleteAction()
null
✓ should delete Model instance by id

service.BaseService
.setup(dbAdapter)
✓ should set .db to dbAdapter
.startTransaction()
✓ should call .db.startTransaction()
.query(sql)
Running SQL: test
✓ should call .db.query() with valid arguments
.findById(id)
✓ should find Model instance by id
.create(data)
✓ should create new Model instance with data
.findAll(options)
✓ should return all Model instances
.find(options)
✓ should return Model instances filtered by query options
.update(id, data)
✓ should update Model instance by id with data
.destroy(id)
✓ should mark Model instance as deleted by id

utils
.stacktrace()
✓ should return array
✓ should return stack stace beginning at current function
✓ should contain function names and filepaths

19 passing (688ms)

Running "mochaTest:e2e" (mochaTest) task
No files to check...OK

Done, without errors.
Running "karma:unit" (karma) task
INFO [karma]: Karma v0.10.10 server started at http://localhost:9090/
INFO [launcher]: Starting browser Chrome
INFO [launcher]: Starting browser PhantomJS
INFO [PhantomJS 1.9.7 (Mac OS X)]: Connected on socket HSVl7W_kbtxB3e-ULmgW
INFO [Chrome 35.0.1916 (Mac OS X 10.9.3)]: Connected on socket 4QlxFM-tl9s2WgUmLmgX
PhantomJS 1.9.7 (Mac OS X) ERROR: 'There is no timestamp for /base/app/modules/moduleone.js!'
PhantomJS 1.9.7 (Mac OS X) ERROR: 'There is no timestamp for /base/app/modules/moduletwo.js!'
PhantomJS 1.9.7 (Mac OS X) ERROR: 'There is no timestamp for /base/app/modules/modulethree.js!'
PhantomJS 1.9.7 (Mac OS X): Executed 0 of 0 SUCCESS (0 secs / 0 secs)
Chrome 35.0.1916 (Mac OS X 10.9.3): Executed 0 of 0 SUCCESS (0 secs / 0 secs)
WARN [web-server]: 404: /base/app/modules/moduleone.js
PhantomJS 1.9.7 (Mac OS X) ERROR
Error: Script error for: moduleone
http://requirejs.org/docs/errors.html#scripterror
at /Users/nomad/Projects/cleverwalkingskeleton/frontend/node_modules/requirejs/require.js:141
PhantomJS 1.9.7 (Mac OS X) ERROR
Error: Script error for: moduletwo
http://requirejs.org/docs/errors.html#scripterror
at /Users/nomad/Projects/cleverwalkingskeleton/frontend/node_modules/requirejs/require.js:141
PhantomJS 1.9.7 (Mac OS X) ERROR
Error: Script error for: modulethree
http://requirejs.org/docs/errors.html#scripterror
at /Users/nomad/Projects/cleverwalkingskeleton/frontend/node_modules/requirejs/require.js:141
Chrome 35.0.1916 (Mac OS X 10.9.3) ERROR: 'There is no timestamp for /base/app/modules/moduleone.js!'
Chrome 35.0.1916 (Mac OS X 10.9.3) ERROR: 'There is no timestamp for /base/app/modules/moduletwo.js!'
Chrome 35.0.1916 (Mac OS X 10.9.3) ERROR: 'There is no timestamp for /base/app/modules/modulethree.js!'
PhantomJS 1.9.7 (Mac OS X): Executed 0 of 0 ERROR (0.098 secs / 0 secs)
Chrome 35.0.1916 (Mac OS X 10.9.3): Executed 0 of 0 SUCCESS (0 secs / 0 secs)
WARN [web-server]: 404: /base/app/modules/moduleone.js
Chrome 35.0.1916 (Mac OS X 10.9.3) ERROR
Uncaught Error: Script error for: moduleone
http://requirejs.org/docs/errors.html#scripterror
at /Users/nomad/Projects/cleverwalkingskeleton/frontend/node_modules/requirejs/require.js:141
Chrome 35.0.1916 (Mac OS X 10.9.3) ERROR
Uncaught Error: Script error for: moduletwo
http://requirejs.org/docs/errors.html#scripterror
at /Users/nomad/Projects/cleverwalkingskeleton/frontend/node_modules/requirejs/require.js:141
Chrome 35.0.1916 (Mac OS X 10.9.3) ERROR
Uncaught Error: Script error for: modulethree
http://requirejs.org/docs/errors.html#scripterror
at /Users/nomad/Projects/cleverwalkingskeleton/frontend/node_modules/requirejs/require.js:141
PhantomJS 1.9.7 (Mac OS X): Executed 0 of 0 ERROR (0.098 secs / 0 secs)
Chrome 35.0.1916 (Mac OS X 10.9.3): Executed 0 of 0 ERROR (0.157 secs / 0 secs)
Warning: Task "karma:unit" failed. Used --force, continuing.

Done, but with warnings.

Execution Time (2014-05-28 04:54:57 UTC)
loading tasks 711ms ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 23%
karma:unit 2.4s ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 77%
Total 3.1s
Tests ran successfully.
Nomads-MacBook-Pro-2:cleverwalkingskeleton nomad$ clever test e2e
Scanning folders for Gruntfiles...
Running "mochaTest:e2e" (mochaTest) task
No files to check...OK

Done, without errors.
Running "connect:livereload" (connect) task
Started connect web server on 127.0.0.1:9000.

Running "protractor:singlerun" (protractor) task
Using the selenium server at http://localhost:4444/wd/hub
[launcher] Running 1 instances of WebDriver[launcher] chrome passed

Test failed but keep the grunt process alive.

Done, without errors.

Execution Time (2014-05-28 04:55:13 UTC)
loading tasks 696ms ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 27%
protractor:singlerun 1.9s ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 72%
Total 2.6s
Tests ran successfully.
Nomads-MacBook-Pro-2:cleverwalkingskeleton nomad$

Template directory fix for Gruntfile.js

Gruntfile.js needs a fix for nested templates that doesn't enter the app/components folder so we don't have to keep adding ///* to our gruntfile every time something new nests... also affects images and other assets.

Out of box, cleverstack encounters CORS errors in Chrome and Safari

After init'ing a fresh project and running clever serve, trying to register or login a user causes chrome to spit out the following CORS error. Thanks for taking a look.

OPTIONS http://localhost:8080/user Request header field X-XSRF-TOKEN is not allowed by Access-Control-Allow-Headers. angular.js:7962
XMLHttpRequest cannot load http://localhost:8080/user. Request header field X-XSRF-TOKEN is not allowed by Access-Control-Allow-Headers. register:1

Compress the CSS

The dist/styles/*.main.css file is uncompressed and could lead to a heafty download

Uncaught SyntaxError: Unexpected token <

I just try to use CleverStack but when i try http://localhost:9000/

Resource interpreted as Stylesheet but transferred with MIME type text/html: "http://localhost:9000/components/fontawesome/css/font-awesome.css".
localhost/:19 Resource interpreted as Stylesheet but transferred with MIME type text/html: "http://localhost:9000/components/angular-ui/build/angular-ui.css".
localhost/:20 Resource interpreted as Stylesheet but transferred with MIME type text/html: "http://localhost:9000/components/ng-table/ng-table.min.css".
localhost/:22 Resource interpreted as Stylesheet but transferred with MIME type text/html: "http://localhost:9000/components/jquery-minicolors/jquery.minicolors.css".
localhost/:23 Resource interpreted as Stylesheet but transferred with MIME type text/html: "http://localhost:9000/components/select2/select2.css".
localhost/:24 Resource interpreted as Stylesheet but transferred with MIME type text/html: "http://localhost:9000/components/select2/select2-bootstrap.css".
pace.min.js:1 Uncaught SyntaxError: Unexpected token <
localhost/:28 Resource interpreted as Script but transferred with MIME type text/html: "http://localhost:9000/components/pace/pace.min.js".
localhost/:50 Resource interpreted as Script but transferred with MIME type text/html: "http://localhost:9000/components/requirejs/require.js".
require.js:1 Uncaught SyntaxError: Unexpected token <
(index):72 GET http://localhost:35729/livereload.js?snipver=1 net::ERR_CONNECTION_REFUSED(anonymous function) @ (index):72

Inception when testing E2E

The fallbackToIndex middleware should throw 404's if it's a file it's looking for and it's non-existant.

The fact that it fallbacks to index even on 404's for files (that have an extension) makes it load the index again, which bootstraps angular, which loads that same file that should be a 404 but loads the index again, which bootstraps angular, which loads that same file that….and on and on and on.

So yeah, this has to be fixed.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.