Git Product home page Git Product logo

sails's Issues

Bundle SQLite installation

Allow for immediate, credential-less, setup-less development using the Sails platform by bundling an installation of SQLite.

Automatic role dictionary

Automatically determine all statically defined roles from access control policy rules and populate the database accordingly

Update command line tool

Update to automatically generate the new, correct authentication policy that sends a 403 if this is an ajax or socket request, and redirects to the login page otherwise

Remove bias towards Sequelize

JugglingDB should probably be the default, because of its in-memory database support (so you don't have to have mySQL installed just to get started)

As for notation, we should enforce an agnostic standard. My biggest beef with sequelize is the promise interface notation for success and error callbacks. This doesn't fit in well with the cb(error,result)-style notation used by our other dependencies (namely async) or our unit testing framework of choice (vows).

I also rather like using the standard Sails CRUD synonyms.

Proposed notation:

Model.create(attributes,callback) (or generate, or add, or new)
Model.find(options,callback) (or read, or view, or show, or detail, or findAll)
Model.update(id,newAttrs,callback) (or edit, or set, or modify, or update)
Model.destroy(id,callback) (or delete, or remove)

`````` Model.findAndUpdate(options,newAttrs,callback) Model.findAndDelete(options,callback)```
```Model.findOrCreate(options,attrsToMatchAgainst,callback)```

Remove bias towards ejs templating

Because of the added websocket support, ejs is required as of now. However other users of the framework may very well like Jade or Haml.

Adapters (virtual models)

Allows for client-side manipulation of shared data source. Pull code that would normally go into controllers into a model which loosely corresponds w/ client-side.

Definitely can't be the only option (doesn't fit in to the philosophy of SOA) , but the idea is to simplify server-side code which is client-specific. The standard REST API can still exist.

i.e. FileSystemNode is a virtual model
FileSystemNode.create:
creates a Directory or File, assigns permissions based on the session, and (if passed a binary) uploads a file to OpenStack. Also cascades permission from parent File or Directory to children.

Provision Mocha tests

Bootstrap HTTP and WS clients and provide easy access to them from /test modules.

Then, automatically generate integration test stubs for each controller/action.
In the future, these could be randomly generated if pre and postconditions are defined with Anchor.

Smarter room management for models

For instance. a job might run every few minutes which does the following:

  • If < 100 instances exist:
    • subscribe sockets to the static class room
    • migrate existing sockets to use the static class room if they're not already
  • otherwise,
    • subscribe sockets to paginated rooms which broadcast events for up to 100 instances
    • migrate existing sockets to use the appropriate paginated room

This could go further in multi-tiered environments to manage rooms based on # of connected sockets (but we should probably use an existing solution for that piece, like Guillermo's new solution )

Add ACO support with built-in Policy model

In addition to assigning custom middleware to a particular controller and action at build time, the application should be able to modify permissions for specific Accounts to access specific instances of a model using a specific controller and action during runtime.

Build in static roles and dynamic roles

At build time, specify various role strings that can be attached to Accounts. These role strings will be converted into Role objects at runtime and attached to accounts via a join table.

App-relative filesystem api

It would be nice to able to do things like:

...
upload: function (req,res) {
  _.each(req.files,function(file) {
    File.create({
      filename: file.filename,
      extension: file.extension,
      mime: file.mime
    }).success(function(fileModel) {
      file.save({
        path: '/public/files',
        name: file.id + "." + file.extension
      });
    });
  });
  res.json({success:true});
}
...

Instead of having to use __dirpath and then navigate back upwards to the appropriate place. Might also make sense to create the specified directory if it doesn't exist.

Support for Express 3.x

Starting this tonight on a separate branch, express3.

This will get us up to date with the latest Express has to offer, including the much better bodyParser.

Automatically render, use best guess for view if not specified

If res.render, res.redirect, res.json, or some other response method has not already been called, automatically render the best guess view for a controller at the end of the method.

Instead of:

sample: function () {
this.res.render('pages/sample',{
title: 'the page'
});
}

sample: function () {
this.view.title = 'the page'
}

Universalize API to controllers

Replace ExpressJS-specific req,res,next arguments with a Sails proprietary context to execute controller actions from.

Instead of:

exports.sample = function (req,res,next) {
req.render({
title: 'The page'
});
}

sample: function () {
this.view.title = 'the page'
}

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.