Data model for RESTful API clients, made dead simple.
npm install datacoreData model for RESTful API clients, made simple. In essence, an ES6 class with
support for typed schemas, CRUD methods with schema conversion, and inheritance
helpers for ES5 environments. Straightforward, lightweight, and has good code
coverage via tests and Flow.
This has seen a complete rewrite. I've slimmed the library down _tremendously_
to focus on the most vital features. See
1.0.x to compare.
Datacore is packaged in a format compatible with both AngularJS and CommonJS.
Rich web applications consume and generate lots of data. It's common to organise
it by breaking it up into well-defined "models" that correspond to resources on
a RESTful API backend. A model library handles the boilerplate code so you don't
have to.
Install via bower:
``sh`
bower i --save datacoreor
bower i --save-dev datacore
The angular build uses $q and $http instead of es6-promise and xhttp,lodash
but still depends on . Make sure you have window._ available.
You'll need main-bower-files in your
build system to organise dependency order. Datacore specifies angular and lodash
as dependencies but doesn't bundle them. main-bower-files makes sure they'll be
loaded in the right order.
In your app's configuration, require the module and factory Datacore.
`javascript
// ES5
angular.module('MyApp', ['Datacore'])
.factory('Record', ['Datacore', function(Datacore) {
// Your base model.
var Record = Datacore.derive('Record');
// Base URL to your server.
Record.prototype.$path = function() {return '/my-api-url'};
// Example schema.
Record.prototype.$schema = {
id: '',
value: null
}
return Record;
}]);
// ES6
angular.module('MyApp', ['Datacore'])
.factory('Record', ['Datacore', function(Datacore) {
// Your base model.
class Record extends Datacore {
// Base URL to your server.
$path() {return '/my-api-url'}
// Example schema (immutable).
get $schema() {return {
id: '',
value: null
}}
}
return Record;
}]);
`
To use CommonJS, you need a build system with
browserify or webpack.
Install via npm:
`sh`
npm i --save-dev datacore
Then require in your application:
`javascript``
var Datacore = require('datacore');
See basic configuration above.
The documentation needs a complete rewrite now.