Skip to content

Commit b302f37

Browse files
committed
Now using es6-style $q.
"js-data" is the only angular module now. Stable Version 2.0.0-alpha.3-0.
1 parent ff06c1c commit b302f37

17 files changed

+695
-1340
lines changed

Diff for: CHANGELOG.md

+3
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,14 @@
22

33
###### Breaking API changes
44
- Refactored to be a wrapper for [js-data](https://github.com/js-data/js-data)
5+
- `deserialize` and `serialize` are now properties of `DSHttpAdapter.defaults`
6+
- All hooks (`validate`, `afterCreate`, `serialize`, etc.) now take the resource definition as the first argument instead of just the name of the resource
57

68
###### Other
79
- #199 - Re-implement bindOne & bindAll in js-data-angular (they're missing from js-data)
810
- #200 - Need to properly trigger digest where angular-data would have before
911
- Added DSHttpAdapter fallback that uses $http if js-data-http isn't loaded
12+
- Load an es6-style version of `$q` instead of `es6-promises` to maintain `$scope` integration with the promise lifecycle
1013

1114
##### 1.0.0 - 04 October 2014
1215

Diff for: bower.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"author": "Jason Dobry",
33
"name": "js-data-angular",
44
"description": "Angular wrapper for js-data (originally angular-data).",
5-
"version": "2.0.0-alpha.2-0",
5+
"version": "2.0.0-alpha.3-0",
66
"homepage": "http://www.js-data.io/js-data-angular",
77
"repository": {
88
"type": "git",

Diff for: dist/js-data-angular.js

+39-50
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/**
22
* @author Jason Dobry <[email protected]>
33
* @file js-data-angular.js
4-
* @version 2.0.0-alpha.2-0 - Homepage <http://www.js-data.io/js-data-angular/>
4+
* @version 2.0.0-alpha.3-0 - Homepage <http://www.js-data.io/js-data-angular/>
55
* @copyright (c) 2014 Jason Dobry <https://github.com/jmdobry/>
66
* @license MIT <https://github.com/js-data/js-data-angular/blob/master/LICENSE>
77
*
@@ -93,7 +93,7 @@
9393
httpLoaded = true;
9494
}
9595
adapter.loaded = true;
96-
angular.module(adapter.project, ['ng']).provider(adapter.class, function () {
96+
angular.module('js-data').provider(adapter.class, function () {
9797
var _this = this;
9898
_this.defaults = {};
9999
_this.$get = [function () {
@@ -103,10 +103,6 @@
103103
}
104104
}
105105

106-
for (var i = 0; i < adapters.length; i++) {
107-
registerAdapter(adapters[i]);
108-
}
109-
110106
angular.module('js-data', ['ng'])
111107
.value('DSUtils', JSData.DSUtils)
112108
.value('DSErrors', JSData.DSErrors)
@@ -199,38 +195,25 @@
199195
var store = new JSData.DS(_this.defaults);
200196
var originals = {};
201197

202-
function QPromise(cb) {
198+
function QPromise(executor) {
203199
var deferred = $q.defer();
200+
204201
try {
205-
cb(function (val) {
206-
if (!$rootScope.$$phase) {
207-
$rootScope.$apply(function () {
208-
deferred.resolve(val);
209-
});
210-
} else {
211-
deferred.resolve(val);
212-
}
213-
}, function (err) {
214-
console.log(err);
215-
if (!$rootScope.$$phase) {
216-
$rootScope.$apply(function () {
217-
deferred.reject(err);
218-
});
219-
} else {
220-
deferred.reject(err);
221-
}
222-
});
202+
executor.call(undefined,
203+
angular.bind(deferred, deferred.resolve),
204+
angular.bind(deferred, deferred.reject));
223205
} catch (err) {
224206
deferred.reject(err);
225207
}
208+
226209
return deferred.promise;
227210
}
228211

229-
//QPromise.all = $q.all;
230-
//QPromise.when = $q.when;
231-
//QPromise.reject = $q.reject;
232-
//
233-
//DSUtils.Promise = QPromise;
212+
QPromise.all = $q.all;
213+
QPromise.when = $q.when;
214+
QPromise.reject = $q.reject;
215+
216+
DSUtils.Promise = QPromise;
234217

235218
// Register any adapters that have been loaded
236219
for (var i = 0; i < adapters.length; i++) {
@@ -259,12 +242,9 @@
259242
if (typeof Object.observe !== 'function' ||
260243
typeof Array.observe !== 'function') {
261244
$rootScope.$watch(function () {
262-
// TODO: observe.Platform.performMicrotaskCheckpoint();
263245
// Throttle angular-data's digest loop to tenths of a second
264246
return new Date().getTime() / 100 | 0;
265-
}, function () {
266-
store.digest();
267-
});
247+
}, store.observe.Platform.performMicrotaskCheckpoint);
268248
}
269249

270250
return store;
@@ -277,10 +257,15 @@
277257
_this.$get = deps;
278258
});
279259

260+
261+
for (var i = 0; i < adapters.length; i++) {
262+
registerAdapter(adapters[i]);
263+
}
264+
280265
if (!httpLoaded) {
281266
var defaultsPrototype = Defaults.prototype;
282267

283-
defaultsPrototype.queryTransform = function (resourceName, params) {
268+
defaultsPrototype.queryTransform = function (resource, params) {
284269
return params;
285270
};
286271

@@ -300,11 +285,11 @@
300285
} : function () {
301286
};
302287

303-
defaultsPrototype.deserialize = function (resourceName, data) {
288+
defaultsPrototype.deserialize = function (resource, data) {
304289
return data ? ('data' in data ? data.data : data) : data;
305290
};
306291

307-
defaultsPrototype.serialize = function (resourceName, data) {
292+
defaultsPrototype.serialize = function (resource, data) {
308293
return data;
309294
};
310295

@@ -367,7 +352,7 @@
367352
_this.getIdPath(resourceConfig, options, id),
368353
options
369354
).then(function (data) {
370-
return (options.deserialize ? options.deserialize : _this.defaults.deserialize)(resourceConfig.name, data);
355+
return (options.deserialize ? options.deserialize : _this.defaults.deserialize)(resourceConfig, data);
371356
});
372357
};
373358

@@ -376,14 +361,14 @@
376361
options = options || {};
377362
options.params = options.params || {};
378363
if (params) {
379-
params = _this.defaults.queryTransform(resourceConfig.name, params);
364+
params = _this.defaults.queryTransform(resourceConfig, params);
380365
deepMixIn(options.params, params);
381366
}
382367
return _this.GET(
383368
_this.getAllPath(resourceConfig, options),
384369
options
385370
).then(function (data) {
386-
return (options.deserialize ? options.deserialize : _this.defaults.deserialize)(resourceConfig.name, data);
371+
return (options.deserialize ? options.deserialize : _this.defaults.deserialize)(resourceConfig, data);
387372
});
388373
};
389374

@@ -392,10 +377,10 @@
392377
options = options || {};
393378
return _this.POST(
394379
makePath(options.basePath || this.defaults.basePath || resourceConfig.basePath, resourceConfig.getEndpoint(attrs, options)),
395-
options.serialize ? options.serialize(resourceConfig.name, attrs) : _this.defaults.serialize(resourceConfig.name, attrs),
380+
(options.serialize ? options.serialize : _this.defaults.serialize)(resourceConfig, attrs),
396381
options
397382
).then(function (data) {
398-
return (options.deserialize ? options.deserialize : _this.defaults.deserialize)(resourceConfig.name, data);
383+
return (options.deserialize ? options.deserialize : _this.defaults.deserialize)(resourceConfig, data);
399384
});
400385
};
401386

@@ -404,10 +389,10 @@
404389
options = options || {};
405390
return _this.PUT(
406391
_this.getIdPath(resourceConfig, options, id),
407-
options.serialize ? options.serialize(resourceConfig.name, attrs) : _this.defaults.serialize(resourceConfig.name, attrs),
392+
(options.serialize ? options.serialize : _this.defaults.serialize)(resourceConfig, attrs),
408393
options
409394
).then(function (data) {
410-
return (options.deserialize ? options.deserialize : _this.defaults.deserialize)(resourceConfig.name, data);
395+
return (options.deserialize ? options.deserialize : _this.defaults.deserialize)(resourceConfig, data);
411396
});
412397
};
413398

@@ -416,15 +401,15 @@
416401
options = options || {};
417402
options.params = options.params || {};
418403
if (params) {
419-
params = _this.defaults.queryTransform(resourceConfig.name, params);
404+
params = _this.defaults.queryTransform(resourceConfig, params);
420405
deepMixIn(options.params, params);
421406
}
422407
return this.PUT(
423408
_this.getAllPath(resourceConfig, options),
424-
options.serialize ? options.serialize(resourceConfig.name, attrs) : _this.defaults.serialize(resourceConfig.name, attrs),
409+
(options.serialize ? options.serialize : _this.defaults.serialize)(resourceConfig, attrs),
425410
options
426411
).then(function (data) {
427-
return (options.deserialize ? options.deserialize : _this.defaults.deserialize)(resourceConfig.name, data);
412+
return (options.deserialize ? options.deserialize : _this.defaults.deserialize)(resourceConfig, data);
428413
});
429414
};
430415

@@ -435,7 +420,7 @@
435420
_this.getIdPath(resourceConfig, options, id),
436421
options
437422
).then(function (data) {
438-
return (options.deserialize ? options.deserialize : _this.defaults.deserialize)(resourceConfig.name, data);
423+
return (options.deserialize ? options.deserialize : _this.defaults.deserialize)(resourceConfig, data);
439424
});
440425
};
441426

@@ -444,14 +429,14 @@
444429
options = options || {};
445430
options.params = options.params || {};
446431
if (params) {
447-
params = _this.defaults.queryTransform(resourceConfig.name, params);
432+
params = _this.defaults.queryTransform(resourceConfig, params);
448433
deepMixIn(options.params, params);
449434
}
450435
return this.DEL(
451436
_this.getAllPath(resourceConfig, options),
452437
options
453438
).then(function (data) {
454-
return (options.deserialize ? options.deserialize : _this.defaults.deserialize)(resourceConfig.name, data);
439+
return (options.deserialize ? options.deserialize : _this.defaults.deserialize)(resourceConfig, data);
455440
});
456441
};
457442

@@ -491,6 +476,10 @@
491476
return adapter;
492477
}];
493478
});
479+
480+
angular.module('js-data').run(['DS', 'DSHttpAdapter', function (DS, DSHttpAdapter) {
481+
DS.registerAdapter('http', DSHttpAdapter, { default: true });
482+
}]);
494483
}
495484

496485
})(window, window.angular);

0 commit comments

Comments
 (0)