1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 | (function (define) {
|
9 | 'use strict';
|
10 |
|
11 | define(function (require) {
|
12 |
|
13 | var RestStore, clientPlugin, mixin, when;
|
14 |
|
15 | RestStore = require('./RestStore');
|
16 | clientPlugin = require('../wire');
|
17 | mixin = require('../util/mixin');
|
18 | when = require('when');
|
19 |
|
20 | return {
|
21 | wire$plugin: function restPlugin(/* ready, destroyed, options */) {
|
22 |
|
23 | var plugin;
|
24 |
|
25 | plugin = clientPlugin.wire$plugin.apply(clientPlugin, arguments);
|
26 | Object.keys(plugin).forEach(function (key) {
|
27 | if (typeof plugin[key] === 'object') {
|
28 | plugin[key] = mixin({}, plugin[key]);
|
29 | }
|
30 | });
|
31 |
|
32 | |
33 |
|
34 |
|
35 |
|
36 |
|
37 |
|
38 |
|
39 |
|
40 | function resolveResource(resolver, name, refObj, wire) {
|
41 | var client;
|
42 |
|
43 | client = when.defer();
|
44 | plugin.resolvers.client(client.resolver, name, refObj, wire);
|
45 |
|
46 | when(client.promise, function (client) {
|
47 | var args, store;
|
48 |
|
49 | args = { client: client };
|
50 | if (refObj.idProperty) { args.idProperty = refObj.idProperty; }
|
51 |
|
52 | store = new RestStore(args);
|
53 | if (refObj.get) {
|
54 | store.get(refObj.get).then(resolver.resolve, resolver.reject);
|
55 |
|
56 | }
|
57 | else if (refObj.query) {
|
58 | store.query(refObj.query).then(resolver.resolve, resolver.reject);
|
59 |
|
60 | }
|
61 | else {
|
62 |
|
63 |
|
64 | resolver.resolve(store);
|
65 | }
|
66 | });
|
67 | }
|
68 |
|
69 | plugin.resolvers.resource = resolveResource;
|
70 |
|
71 | return plugin;
|
72 | }
|
73 |
|
74 | };
|
75 |
|
76 | });
|
77 |
|
78 | }(
|
79 | typeof define === 'function' && define.amd ? define : function (factory) { module.exports = factory(require); }
|
80 |
|
81 | ));
|