amplify 1.1.1 → 1.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/lib/amplify/version.rb +1 -1
- data/lib/assets/javascripts/amplify/core.js.erb +31 -9
- data/lib/assets/javascripts/amplify/request.js.erb +89 -48
- data/lib/assets/javascripts/amplify/store.js.erb +17 -12
- metadata +19 -15
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
ODJiNDE5MWMxOTI4ZTc5Y2VjMWE4YzgwZjEyZWM3YWY5MzE1ZWU5OQ==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
MjVlYzNhNzA2NDVlMTBlYThlMDhhNDViOWNhNDYwMjEzNDIyMzVhZA==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
YTdmMjYzMTVlZWQxNjcwZTNkODlhZGJmMjE1ZGVkYTkyMWQzZjI4N2M4OGIx
|
10
|
+
Njc2NWIxMWU3MDJhZDcwMDc4Mjk2YTMyZGFmY2IyYzE5NTZiZWUzNWY5ZmM5
|
11
|
+
ZmVhYThhMTI5ZTgzYTFlMjQ2ZDRlNTgxMDdiYzUzMDE3NjA0ZjY=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
YmE4ZTRmOTQyM2YxM2VlODI4MzZkYWQzNWFkZTU1YzlmOTZjZTdmYmE2Yzc2
|
14
|
+
ZjZkN2VlMjE5NWI2OWVmNzY5ZmIzY2I4MzU5Y2I3ZmUzMGJjZWJmM2I2NTJi
|
15
|
+
MTQ3MzFkZjE4ZDU0NzgxNjNmNmM3YWQ5Mzk5NzdhYjEyY2I0OGI=
|
data/lib/amplify/version.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
/*!
|
2
2
|
* Amplify Core <%= Amplify::VERSION %>
|
3
|
-
*
|
4
|
-
* Copyright 2011 appendTo LLC. (http://appendto.com/team)
|
3
|
+
*
|
4
|
+
* Copyright 2011 - 2013 appendTo LLC. (http://appendto.com/team)
|
5
5
|
* Dual licensed under the MIT or GPL licenses.
|
6
6
|
* http://appendto.com/open-source-licenses
|
7
|
-
*
|
7
|
+
*
|
8
8
|
* http://amplifyjs.com
|
9
9
|
*/
|
10
10
|
(function( global, undefined ) {
|
@@ -14,6 +14,10 @@ var slice = [].slice,
|
|
14
14
|
|
15
15
|
var amplify = global.amplify = {
|
16
16
|
publish: function( topic ) {
|
17
|
+
if ( typeof topic !== "string" ) {
|
18
|
+
throw new Error( "You must provide a valid topic to publish." );
|
19
|
+
}
|
20
|
+
|
17
21
|
var args = slice.call( arguments, 1 ),
|
18
22
|
topicSubscriptions,
|
19
23
|
subscription,
|
@@ -37,6 +41,10 @@ var amplify = global.amplify = {
|
|
37
41
|
},
|
38
42
|
|
39
43
|
subscribe: function( topic, context, callback, priority ) {
|
44
|
+
if ( typeof topic !== "string" ) {
|
45
|
+
throw new Error( "You must provide a valid topic to create a subscription." );
|
46
|
+
}
|
47
|
+
|
40
48
|
if ( arguments.length === 3 && typeof callback === "number" ) {
|
41
49
|
priority = callback;
|
42
50
|
callback = context;
|
@@ -58,14 +66,14 @@ var amplify = global.amplify = {
|
|
58
66
|
if ( !subscriptions[ topic ] ) {
|
59
67
|
subscriptions[ topic ] = [];
|
60
68
|
}
|
61
|
-
|
69
|
+
|
62
70
|
var i = subscriptions[ topic ].length - 1,
|
63
71
|
subscriptionInfo = {
|
64
72
|
callback: callback,
|
65
73
|
context: context,
|
66
74
|
priority: priority
|
67
75
|
};
|
68
|
-
|
76
|
+
|
69
77
|
for ( ; i >= 0; i-- ) {
|
70
78
|
if ( subscriptions[ topic ][ i ].priority <= priority ) {
|
71
79
|
subscriptions[ topic ].splice( i + 1, 0, subscriptionInfo );
|
@@ -82,7 +90,16 @@ var amplify = global.amplify = {
|
|
82
90
|
return callback;
|
83
91
|
},
|
84
92
|
|
85
|
-
unsubscribe: function( topic, callback ) {
|
93
|
+
unsubscribe: function( topic, context, callback ) {
|
94
|
+
if ( typeof topic !== "string" ) {
|
95
|
+
throw new Error( "You must provide a valid topic to remove a subscription." );
|
96
|
+
}
|
97
|
+
|
98
|
+
if ( arguments.length === 2 ) {
|
99
|
+
callback = context;
|
100
|
+
context = null;
|
101
|
+
}
|
102
|
+
|
86
103
|
if ( !subscriptions[ topic ] ) {
|
87
104
|
return;
|
88
105
|
}
|
@@ -92,11 +109,16 @@ var amplify = global.amplify = {
|
|
92
109
|
|
93
110
|
for ( ; i < length; i++ ) {
|
94
111
|
if ( subscriptions[ topic ][ i ].callback === callback ) {
|
95
|
-
subscriptions[ topic ]
|
96
|
-
|
112
|
+
if ( !context || subscriptions[ topic ][ i ].context === context ) {
|
113
|
+
subscriptions[ topic ].splice( i, 1 );
|
114
|
+
|
115
|
+
// Adjust counter and length for removed item
|
116
|
+
i--;
|
117
|
+
length--;
|
118
|
+
}
|
97
119
|
}
|
98
120
|
}
|
99
121
|
}
|
100
122
|
};
|
101
123
|
|
102
|
-
}( this ) );
|
124
|
+
}( this ) );
|
@@ -1,14 +1,18 @@
|
|
1
1
|
//= require amplify/core
|
2
|
+
|
2
3
|
/*!
|
3
4
|
* Amplify Request <%= Amplify::VERSION %>
|
4
|
-
*
|
5
|
-
* Copyright 2011 appendTo LLC. (http://appendto.com/team)
|
5
|
+
*
|
6
|
+
* Copyright 2011 - 2013 appendTo LLC. (http://appendto.com/team)
|
6
7
|
* Dual licensed under the MIT or GPL licenses.
|
7
8
|
* http://appendto.com/open-source-licenses
|
8
|
-
*
|
9
|
+
*
|
9
10
|
* http://amplifyjs.com
|
10
11
|
*/
|
12
|
+
/*global amplify*/
|
13
|
+
|
11
14
|
(function( amplify, undefined ) {
|
15
|
+
'use strict';
|
12
16
|
|
13
17
|
function noop() {}
|
14
18
|
function isFunction( obj ) {
|
@@ -54,12 +58,14 @@ amplify.request = function( resourceId, data, callback ) {
|
|
54
58
|
resource = amplify.request.resources[ settings.resourceId ],
|
55
59
|
success = settings.success || noop,
|
56
60
|
error = settings.error || noop;
|
61
|
+
|
57
62
|
settings.success = async( function( data, status ) {
|
58
63
|
status = status || "success";
|
59
64
|
amplify.publish( "request.success", settings, data, status );
|
60
65
|
amplify.publish( "request.complete", settings, data, status );
|
61
66
|
success( data, status );
|
62
67
|
});
|
68
|
+
|
63
69
|
settings.error = async( function( data, status ) {
|
64
70
|
status = status || "error";
|
65
71
|
amplify.publish( "request.error", settings, data, status );
|
@@ -103,13 +109,11 @@ amplify.request.define = function( resourceId, type, settings ) {
|
|
103
109
|
}( amplify ) );
|
104
110
|
|
105
111
|
|
106
|
-
|
107
|
-
|
108
|
-
|
109
112
|
(function( amplify, $, undefined ) {
|
113
|
+
'use strict';
|
110
114
|
|
111
115
|
var xhrProps = [ "status", "statusText", "responseText", "responseXML", "readyState" ],
|
112
|
-
|
116
|
+
rurlData = /\{([^\}]+)\}/g;
|
113
117
|
|
114
118
|
amplify.request.types.ajax = function( defnSettings ) {
|
115
119
|
defnSettings = $.extend({
|
@@ -117,7 +121,7 @@ amplify.request.types.ajax = function( defnSettings ) {
|
|
117
121
|
}, defnSettings );
|
118
122
|
|
119
123
|
return function( settings, request ) {
|
120
|
-
var xhr,
|
124
|
+
var xhr, handleResponse,
|
121
125
|
url = defnSettings.url,
|
122
126
|
abort = request.abort,
|
123
127
|
ajaxSettings = $.extend( true, {}, defnSettings, { data: settings.data } ),
|
@@ -134,7 +138,7 @@ amplify.request.types.ajax = function( defnSettings ) {
|
|
134
138
|
return xhr.getResponseHeader( key );
|
135
139
|
},
|
136
140
|
overrideMimeType: function( type ) {
|
137
|
-
return xhr.
|
141
|
+
return xhr.overrideMimeType( type );
|
138
142
|
},
|
139
143
|
abort: function() {
|
140
144
|
aborted = true;
|
@@ -152,28 +156,7 @@ amplify.request.types.ajax = function( defnSettings ) {
|
|
152
156
|
}
|
153
157
|
};
|
154
158
|
|
155
|
-
|
156
|
-
defnSettings, settings, ajaxSettings, ampXHR );
|
157
|
-
|
158
|
-
$.extend( ajaxSettings, {
|
159
|
-
success: function( data, status ) {
|
160
|
-
handleResponse( data, status );
|
161
|
-
},
|
162
|
-
error: function( _xhr, status ) {
|
163
|
-
handleResponse( null, status );
|
164
|
-
},
|
165
|
-
beforeSend: function( _xhr, _ajaxSettings ) {
|
166
|
-
xhr = _xhr;
|
167
|
-
ajaxSettings = _ajaxSettings;
|
168
|
-
var ret = defnSettings.beforeSend ?
|
169
|
-
defnSettings.beforeSend.call( this, ampXHR, ajaxSettings ) : true;
|
170
|
-
return ret && amplify.publish( "request.before.ajax",
|
171
|
-
defnSettings, settings, ajaxSettings, ampXHR );
|
172
|
-
}
|
173
|
-
});
|
174
|
-
$.ajax( ajaxSettings );
|
175
|
-
|
176
|
-
function handleResponse( data, status ) {
|
159
|
+
handleResponse = function( data, status ) {
|
177
160
|
$.each( xhrProps, function( i, key ) {
|
178
161
|
try {
|
179
162
|
ampXHR[ key ] = xhr[ key ];
|
@@ -200,8 +183,62 @@ amplify.request.types.ajax = function( defnSettings ) {
|
|
200
183
|
// this can happen if a request is aborted
|
201
184
|
// TODO: figure out if this breaks polling or multi-part responses
|
202
185
|
handleResponse = $.noop;
|
186
|
+
};
|
187
|
+
|
188
|
+
amplify.publish( "request.ajax.preprocess",
|
189
|
+
defnSettings, settings, ajaxSettings, ampXHR );
|
190
|
+
|
191
|
+
$.extend( ajaxSettings, {
|
192
|
+
isJSONP: function () {
|
193
|
+
return (/jsonp/gi).test(this.dataType);
|
194
|
+
},
|
195
|
+
cacheURL: function () {
|
196
|
+
if (!this.isJSONP()) {
|
197
|
+
return this.url;
|
198
|
+
}
|
199
|
+
|
200
|
+
var callbackName = 'callback';
|
201
|
+
|
202
|
+
// possible for the callback function name to be overridden
|
203
|
+
if (this.hasOwnProperty('jsonp')) {
|
204
|
+
if (this.jsonp !== false) {
|
205
|
+
callbackName = this.jsonp;
|
206
|
+
} else {
|
207
|
+
if (this.hasOwnProperty('jsonpCallback')) {
|
208
|
+
callbackName = this.jsonpCallback;
|
209
|
+
}
|
210
|
+
}
|
211
|
+
}
|
212
|
+
|
213
|
+
// search and replace callback parameter in query string with empty string
|
214
|
+
var callbackRegex = new RegExp('&?' + callbackName + '=[^&]*&?', 'gi');
|
215
|
+
return this.url.replace(callbackRegex, '');
|
216
|
+
},
|
217
|
+
success: function( data, status ) {
|
218
|
+
handleResponse( data, status );
|
219
|
+
},
|
220
|
+
error: function( _xhr, status ) {
|
221
|
+
handleResponse( null, status );
|
222
|
+
},
|
223
|
+
beforeSend: function( _xhr, _ajaxSettings ) {
|
224
|
+
xhr = _xhr;
|
225
|
+
ajaxSettings = _ajaxSettings;
|
226
|
+
var ret = defnSettings.beforeSend ?
|
227
|
+
defnSettings.beforeSend.call( this, ampXHR, ajaxSettings ) : true;
|
228
|
+
return ret && amplify.publish( "request.before.ajax",
|
229
|
+
defnSettings, settings, ajaxSettings, ampXHR );
|
230
|
+
}
|
231
|
+
});
|
232
|
+
|
233
|
+
// cache all JSONP requests
|
234
|
+
if (ajaxSettings.cache && ajaxSettings.isJSONP()) {
|
235
|
+
$.extend(ajaxSettings, {
|
236
|
+
cache: true
|
237
|
+
});
|
203
238
|
}
|
204
239
|
|
240
|
+
$.ajax( ajaxSettings );
|
241
|
+
|
205
242
|
request.abort = function() {
|
206
243
|
ampXHR.abort();
|
207
244
|
abort.call( this );
|
@@ -223,8 +260,8 @@ amplify.subscribe( "request.ajax.preprocess", function( defnSettings, settings,
|
|
223
260
|
|
224
261
|
ajaxSettings.url = ajaxSettings.url.replace( rurlData, function ( m, key ) {
|
225
262
|
if ( key in data ) {
|
226
|
-
|
227
|
-
|
263
|
+
mappedKeys.push( key );
|
264
|
+
return data[ key ];
|
228
265
|
}
|
229
266
|
});
|
230
267
|
|
@@ -265,13 +302,9 @@ var cache = amplify.request.cache = {
|
|
265
302
|
_key: function( resourceId, url, data ) {
|
266
303
|
data = url + data;
|
267
304
|
var length = data.length,
|
268
|
-
i = 0
|
269
|
-
checksum = chunk();
|
270
|
-
|
271
|
-
while ( i < length ) {
|
272
|
-
checksum ^= chunk();
|
273
|
-
}
|
305
|
+
i = 0;
|
274
306
|
|
307
|
+
/*jshint bitwise:false*/
|
275
308
|
function chunk() {
|
276
309
|
return data.charCodeAt( i++ ) << 24 |
|
277
310
|
data.charCodeAt( i++ ) << 16 |
|
@@ -279,6 +312,12 @@ var cache = amplify.request.cache = {
|
|
279
312
|
data.charCodeAt( i++ ) << 0;
|
280
313
|
}
|
281
314
|
|
315
|
+
var checksum = chunk();
|
316
|
+
while ( i < length ) {
|
317
|
+
checksum ^= chunk();
|
318
|
+
}
|
319
|
+
/*jshint bitwise:true*/
|
320
|
+
|
282
321
|
return "request-" + resourceId + "-" + checksum;
|
283
322
|
},
|
284
323
|
|
@@ -287,7 +326,7 @@ var cache = amplify.request.cache = {
|
|
287
326
|
return function( resource, settings, ajaxSettings, ampXHR ) {
|
288
327
|
// data is already converted to a string by the time we get here
|
289
328
|
var cacheKey = cache._key( settings.resourceId,
|
290
|
-
ajaxSettings.
|
329
|
+
ajaxSettings.cacheURL(), ajaxSettings.data ),
|
291
330
|
duration = resource.cache;
|
292
331
|
|
293
332
|
if ( cacheKey in memoryStore ) {
|
@@ -312,7 +351,7 @@ if ( amplify.store ) {
|
|
312
351
|
$.each( amplify.store.types, function( type ) {
|
313
352
|
cache[ type ] = function( resource, settings, ajaxSettings, ampXHR ) {
|
314
353
|
var cacheKey = cache._key( settings.resourceId,
|
315
|
-
ajaxSettings.
|
354
|
+
ajaxSettings.cacheURL(), ajaxSettings.data ),
|
316
355
|
cached = amplify.store[ type ]( cacheKey );
|
317
356
|
|
318
357
|
if ( cached ) {
|
@@ -320,7 +359,7 @@ if ( amplify.store ) {
|
|
320
359
|
return false;
|
321
360
|
}
|
322
361
|
var success = ampXHR.success;
|
323
|
-
ampXHR.success = function( data ) {
|
362
|
+
ampXHR.success = function( data ) {
|
324
363
|
amplify.store[ type ]( cacheKey, data, { expires: resource.cache.expires } );
|
325
364
|
success.apply( this, arguments );
|
326
365
|
};
|
@@ -351,6 +390,8 @@ amplify.request.decoders = {
|
|
351
390
|
} else if ( data.status === "error" ) {
|
352
391
|
delete data.status;
|
353
392
|
error( data, "error" );
|
393
|
+
} else {
|
394
|
+
error( null, "error" );
|
354
395
|
}
|
355
396
|
}
|
356
397
|
};
|
@@ -358,11 +399,11 @@ amplify.request.decoders = {
|
|
358
399
|
amplify.subscribe( "request.before.ajax", function( resource, settings, ajaxSettings, ampXHR ) {
|
359
400
|
var _success = ampXHR.success,
|
360
401
|
_error = ampXHR.error,
|
361
|
-
decoder = $.isFunction( resource.decoder )
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
402
|
+
decoder = $.isFunction( resource.decoder ) ?
|
403
|
+
resource.decoder :
|
404
|
+
resource.decoder in amplify.request.decoders ?
|
405
|
+
amplify.request.decoders[ resource.decoder ] :
|
406
|
+
amplify.request.decoders._default;
|
366
407
|
|
367
408
|
if ( !decoder ) {
|
368
409
|
return;
|
@@ -382,4 +423,4 @@ amplify.subscribe( "request.before.ajax", function( resource, settings, ajaxSett
|
|
382
423
|
};
|
383
424
|
});
|
384
425
|
|
385
|
-
}( amplify, jQuery ) );
|
426
|
+
}( amplify, jQuery ) );
|
@@ -1,15 +1,15 @@
|
|
1
1
|
/*!
|
2
2
|
* Amplify Store - Persistent Client-Side Storage <%= Amplify::VERSION %>
|
3
|
-
*
|
4
|
-
* Copyright 2011 appendTo LLC. (http://appendto.com/team)
|
3
|
+
*
|
4
|
+
* Copyright 2011 - 2013 appendTo LLC. (http://appendto.com/team)
|
5
5
|
* Dual licensed under the MIT or GPL licenses.
|
6
6
|
* http://appendto.com/open-source-licenses
|
7
|
-
*
|
7
|
+
*
|
8
8
|
* http://amplifyjs.com
|
9
9
|
*/
|
10
10
|
(function( amplify, undefined ) {
|
11
11
|
|
12
|
-
var store = amplify.store = function( key, value, options
|
12
|
+
var store = amplify.store = function( key, value, options ) {
|
13
13
|
var type = store.type;
|
14
14
|
if ( options && options.type && options.type in store.types ) {
|
15
15
|
type = options.type;
|
@@ -30,9 +30,9 @@ store.addType = function( type, storage ) {
|
|
30
30
|
options.type = type;
|
31
31
|
return store( key, value, options );
|
32
32
|
};
|
33
|
-
}
|
33
|
+
};
|
34
34
|
store.error = function() {
|
35
|
-
return "amplify.store quota exceeded";
|
35
|
+
return "amplify.store quota exceeded";
|
36
36
|
};
|
37
37
|
|
38
38
|
var rprefix = /^__amplify__/;
|
@@ -112,11 +112,14 @@ function createFromStorageInterface( storageType, storage ) {
|
|
112
112
|
// localStorage + sessionStorage
|
113
113
|
// IE 8+, Firefox 3.5+, Safari 4+, Chrome 4+, Opera 10.5+, iPhone 2+, Android 2+
|
114
114
|
for ( var webStorageType in { localStorage: 1, sessionStorage: 1 } ) {
|
115
|
-
// try/catch for file protocol in Firefox
|
115
|
+
// try/catch for file protocol in Firefox and Private Browsing in Safari 5
|
116
116
|
try {
|
117
|
-
|
118
|
-
|
119
|
-
|
117
|
+
// Safari 5 in Private Browsing mode exposes localStorage
|
118
|
+
// but doesn't allow storing data, so we attempt to store and remove an item.
|
119
|
+
// This will unfortunately give us a false negative if we're at the limit.
|
120
|
+
window[ webStorageType ].setItem( "__amplify__", "x" );
|
121
|
+
window[ webStorageType ].removeItem( "__amplify__" );
|
122
|
+
createFromStorageInterface( webStorageType, window[ webStorageType ] );
|
120
123
|
} catch( e ) {}
|
121
124
|
}
|
122
125
|
|
@@ -195,7 +198,9 @@ if ( !store.types.localStorage && window.globalStorage ) {
|
|
195
198
|
// http://www.w3.org/TR/REC-xml/#NT-Name
|
196
199
|
// simplified to assume the starting character is valid
|
197
200
|
// also removed colon as it is invalid in HTML attribute names
|
198
|
-
key = key.replace( /[
|
201
|
+
key = key.replace( /[^\-._0-9A-Za-z\xb7\xc0-\xd6\xd8-\xf6\xf8-\u037d\u037f-\u1fff\u200c-\u200d\u203f\u2040\u2070-\u218f]/g, "-" );
|
202
|
+
// adjust invalid starting character to deal with our simplified sanitization
|
203
|
+
key = key.replace( /^-/, "_-" );
|
199
204
|
|
200
205
|
if ( value === undefined ) {
|
201
206
|
attr = div.getAttribute( key );
|
@@ -290,4 +295,4 @@ if ( !store.types.localStorage && window.globalStorage ) {
|
|
290
295
|
});
|
291
296
|
}() );
|
292
297
|
|
293
|
-
}( this.amplify = this.amplify || {} ) );
|
298
|
+
}( this.amplify = this.amplify || {} ) );
|
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: amplify
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
5
|
-
prerelease:
|
4
|
+
version: 1.1.2
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Scott González
|
@@ -15,30 +14,36 @@ authors:
|
|
15
14
|
autorequire:
|
16
15
|
bindir: bin
|
17
16
|
cert_chain: []
|
18
|
-
date:
|
17
|
+
date: 2013-12-05 00:00:00.000000000 Z
|
19
18
|
dependencies:
|
20
19
|
- !ruby/object:Gem::Dependency
|
21
20
|
name: jquery-rails
|
22
|
-
requirement:
|
23
|
-
none: false
|
21
|
+
requirement: !ruby/object:Gem::Requirement
|
24
22
|
requirements:
|
25
|
-
- -
|
23
|
+
- - ! '>='
|
26
24
|
- !ruby/object:Gem::Version
|
27
|
-
version: '
|
25
|
+
version: '0'
|
28
26
|
type: :runtime
|
29
27
|
prerelease: false
|
30
|
-
version_requirements:
|
28
|
+
version_requirements: !ruby/object:Gem::Requirement
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
31
33
|
- !ruby/object:Gem::Dependency
|
32
34
|
name: sprockets
|
33
|
-
requirement:
|
34
|
-
none: false
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
35
36
|
requirements:
|
36
37
|
- - ~>
|
37
38
|
- !ruby/object:Gem::Version
|
38
39
|
version: '2'
|
39
40
|
type: :runtime
|
40
41
|
prerelease: false
|
41
|
-
version_requirements:
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - ~>
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '2'
|
42
47
|
description: AmplifyJS is a set of components designed to solve common web application
|
43
48
|
problems with a simplistic API.
|
44
49
|
email: alassek@lyconic.com
|
@@ -57,26 +62,25 @@ homepage: http://amplifyjs.com
|
|
57
62
|
licenses:
|
58
63
|
- MIT
|
59
64
|
- GPL-2
|
65
|
+
metadata: {}
|
60
66
|
post_install_message:
|
61
67
|
rdoc_options: []
|
62
68
|
require_paths:
|
63
69
|
- lib
|
64
70
|
required_ruby_version: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
71
|
requirements:
|
67
72
|
- - ! '>='
|
68
73
|
- !ruby/object:Gem::Version
|
69
74
|
version: '0'
|
70
75
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
71
|
-
none: false
|
72
76
|
requirements:
|
73
77
|
- - ! '>='
|
74
78
|
- !ruby/object:Gem::Version
|
75
79
|
version: '0'
|
76
80
|
requirements: []
|
77
81
|
rubyforge_project:
|
78
|
-
rubygems_version: 1.
|
82
|
+
rubygems_version: 2.1.10
|
79
83
|
signing_key:
|
80
|
-
specification_version:
|
84
|
+
specification_version: 4
|
81
85
|
summary: A Javascript Component Library
|
82
86
|
test_files: []
|