opal-actioncable 0.1.3 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9cb4bdee7e3d23d17f2558d123d3ff204fca993a
4
- data.tar.gz: dc3aee39ed597470bcca89694cf8aad14009d36e
3
+ metadata.gz: f02264089fcb2f605f6176051ea09646300edbd7
4
+ data.tar.gz: 2770dae1cf768542bf677e1f8c98ed7aafc90c52
5
5
  SHA512:
6
- metadata.gz: b07b05d4eeb3dbe652a2069297abcbd88b260993ccff9567fe6c84a6203fd83973f8d7d4b9a1f204c843d7a38fa5999a6f8a9a87af514c69554ae280e73129d5
7
- data.tar.gz: 39acf726b67a6a6edf6b8be7b1329fa1e44c377c18ae5621ea1ebe90af030935d49024addfcff5b8eedeecbf8f9de9b454b2f17d637b0d854539dd8fec980335
6
+ metadata.gz: 1e011c93239a69cedbb18c5a6e499f5f490955f1c2de3ae600518445819235d5edea921d3f308fe90b0be8ce4ed4bf6b998b3e7ad6467bd2db4ae0b274c13ae3
7
+ data.tar.gz: c703b84afe5ac401f9e5caebaf6e3ed9b2b9fb8a89b96368c3dd8b20f008709f46ee983733e9c40e31e14c4dc8c11478edc7ee2ee5b25c7c36c9282bea48c139
data/README.md CHANGED
@@ -35,7 +35,7 @@ Or install it yourself as:
35
35
  end
36
36
  end
37
37
 
38
- consumer = ActionCable.createConsumer("/cable")
38
+ consumer = ActionCable.createConsumer
39
39
  consumer.subscriptions.create TestChannel
40
40
 
41
41
  # or
@@ -1,5 +1,5 @@
1
1
  module Opal
2
2
  module ActionCable
3
- VERSION = "0.1.3"
3
+ VERSION = "0.2.0"
4
4
  end
5
5
  end
@@ -4,14 +4,18 @@ class ActionCable::Connection
4
4
  def initialize consumer
5
5
  @native = `new ActionCable.Connection(#{consumer})`
6
6
  %x{
7
- Opal.defn(self.$class(), 'isOpen', #{@native}.isOpen);
8
- Opal.defn(self.$class(), 'isState', #{@native}.isState);
9
- Opal.defn(self.$class(), 'isAlive', #{@native}.isAlive);
10
- Opal.defn(self.$class(), 'send', #{@native}.send);
11
- Opal.defn(self.$class(), 'open', #{@native}.open);
12
- Opal.defn(self.$class(), 'close', #{@native}.close);
13
- Opal.defn(self.$class(), 'reopen', #{@native}.reopen);
14
- Opal.defn(self.$class(), 'getState', #{@native}.getState);
7
+ Opal.defn(self.$class(), 'send', function(){ return self.$delegate_native('send', arguments); });
8
+ Opal.defn(self.$class(), 'open', function(){ return self.$delegate_native('open', arguments); });
9
+ Opal.defn(self.$class(), 'close', function(){ return self.$delegate_native('close', arguments); });
10
+ Opal.defn(self.$class(), 'reopen', function(){ return self.$delegate_native('reopen', arguments); });
11
+ Opal.defn(self.$class(), 'getProtocol', function(){ return self.$delegate_native('getProtocol', arguments); });
12
+ Opal.defn(self.$class(), 'isOpen', function(){ return self.$delegate_native('isOpen', arguments); });
13
+ Opal.defn(self.$class(), 'isActive', function(){ return self.$delegate_native('isActive', arguments); });
14
+ Opal.defn(self.$class(), 'isProtocolSupported', function(){ return self.$delegate_native('isProtocolSupported', arguments); });
15
+ Opal.defn(self.$class(), 'isState', function(){ return self.$delegate_native('isState', arguments); });
16
+ Opal.defn(self.$class(), 'getState', function(){ return self.$delegate_native('getState', arguments); });
17
+ Opal.defn(self.$class(), 'installEventHandlers', function(){ return self.$delegate_native('installEventHandlers', arguments); });
18
+ Opal.defn(self.$class(), 'uninstallEventHandlers', function(){ return self.$delegate_native('uninstallEventHandlers', arguments); });
15
19
  }
16
20
  end
17
21
 
@@ -19,4 +23,9 @@ class ActionCable::Connection
19
23
  `#{@native}.send(#{data})`
20
24
  end
21
25
 
26
+ def delegate_native name, args
27
+ `#{@native}[#{name}].apply(#{@native}, args)`
28
+ end
29
+
30
+
22
31
  end
@@ -1,7 +1,23 @@
1
1
  class ActionCable::ConnectionMonitor
2
2
  include Native::Helpers
3
3
 
4
- def initialize consumer
5
- @native = `new ActionCable.ConnectionMonitor(#{consumer})`
4
+ def initialize connection
5
+ @native = `new ActionCable.ConnectionMonitor(#{connection})`
6
+ %x{
7
+ Opal.defn(self.$class(), "visibilityDidChange", #{@native}.visibilityDidChange );
8
+ Opal.defn(self.$class(), "disconnectedRecently", #{@native}.disconnectedRecently );
9
+ Opal.defn(self.$class(), "connectionIsStale", #{@native}.connectionIsStale );
10
+ Opal.defn(self.$class(), "reconnectIfStale", #{@native}.reconnectIfStale );
11
+ Opal.defn(self.$class(), "getPollInterval", #{@native}.getPollInterval );
12
+ Opal.defn(self.$class(), "poll", #{@native}.poll );
13
+ Opal.defn(self.$class(), "stopPolling", #{@native}.stopPolling );
14
+ Opal.defn(self.$class(), "startPolling", #{@native}.startPolling);
15
+ Opal.defn(self.$class(), "recordDisconnect", #{@native}.recordDisconnect );
16
+ Opal.defn(self.$class(), "recordConnect", #{@native}.recordConnect );
17
+ Opal.defn(self.$class(), "recordPing", #{@native}.recordPing );
18
+ Opal.defn(self.$class(), "isRunning", #{@native}.isRunning );
19
+ Opal.defn(self.$class(), "stop", #{@native}.stop );
20
+ Opal.defn(self.$class(), "start", #{@native}.start );
21
+ }
6
22
  end
7
23
  end
@@ -1,18 +1,31 @@
1
- class ActionCable::Consumer
1
+ class ActionCable::Connection
2
2
  include Native::Helpers
3
- attr_reader :subscriptions, :connection, :connectionMonitor
4
3
 
5
- def initialize url
6
- @url = url
7
- @subscriptions = ActionCable::Subscriptions.new self
8
- @connection = ActionCable::Connection.new self
9
- @connectionMonitor = ActionCable::ConnectionMonitor.new self
4
+ def initialize consumer
5
+ @native = `new ActionCable.Connection(#{consumer})`
10
6
  %x{
11
- Opal.defn(self.$class(), 'send', #{self}.$send);
7
+ Opal.defn(self.$class(), 'send', function(){ return self.$delegate_native('send', arguments); });
8
+ Opal.defn(self.$class(), 'open', function(){ return self.$delegate_native('open', arguments); });
9
+ Opal.defn(self.$class(), 'close', function(){ return self.$delegate_native('close', arguments); });
10
+ Opal.defn(self.$class(), 'reopen', function(){ return self.$delegate_native('reopen', arguments); });
11
+ Opal.defn(self.$class(), 'getProtocol', function(){ return self.$delegate_native('getProtocol', arguments); });
12
+ Opal.defn(self.$class(), 'isOpen', function(){ return self.$delegate_native('isOpen', arguments); });
13
+ Opal.defn(self.$class(), 'isActive', function(){ return self.$delegate_native('isActive', arguments); });
14
+ Opal.defn(self.$class(), 'isProtocolSupported', function(){ return self.$delegate_native('isProtocolSupported', arguments); });
15
+ Opal.defn(self.$class(), 'isState', function(){ return self.$delegate_native('isState', arguments); });
16
+ Opal.defn(self.$class(), 'getState', function(){ return self.$delegate_native('getState', arguments); });
17
+ Opal.defn(self.$class(), 'installEventHandlers', function(){ return self.$delegate_native('installEventHandlers', arguments); });
18
+ Opal.defn(self.$class(), 'uninstallEventHandlers', function(){ return self.$delegate_native('uninstallEventHandlers', arguments); });
12
19
  }
13
20
  end
14
21
 
15
22
  def send data
16
- @connection.send data
23
+ `#{@native}.send(#{data})`
17
24
  end
25
+
26
+ def delegate_native name, args
27
+ `#{@native}[#{name}].apply(#{@native}, args)`
28
+ end
29
+
30
+
18
31
  end
@@ -1,9 +1,19 @@
1
1
  class ActionCable::Subscription
2
2
  include Native::Helpers
3
3
 
4
- def initialize subscriptions, params
5
- @native = `new ActionCable.Subscription(#{subscriptions}, #{params.to_n})`
6
- %x{Opal.defn(self.$class(), 'perform', #{@native}.perform)}
4
+ def initialize consumer, params
5
+ @native = `new ActionCable.Subscription(#{consumer}, #{params.to_n})`
6
+ %x{
7
+ Opal.defn(self.$class(), 'perform', #{self}.$perform)
8
+ if (#{respond_to?(:disconnected)}) Opal.defn(self.$class(), 'disconnected', #{self}.$disconnected)
9
+ if (#{respond_to?(:rejected)}) Opal.defn(self.$class(), 'rejected', #{self}.$rejected)
10
+ if (#{respond_to?(:received)}) Opal.defn(self.$class(), 'received', #{self}.$_received)
11
+ if (#{respond_to?(:connected)}) Opal.defn(self.$class(), 'connected', #{self}.$connected)
12
+
13
+ Opal.defn(self.$class(), 'send', #{@native}.send)
14
+ Opal.defn(self.$class(), 'unsubscribe', #{@native}.unsubscribe)
15
+ Opal.defn(self.$class(), 'identifier', #{@native}.identifier)
16
+ }
7
17
 
8
18
  self.class.instance_methods(false).each do |method_name|
9
19
  next if method_name == :perform
@@ -16,8 +26,15 @@ class ActionCable::Subscription
16
26
  end
17
27
  end
18
28
 
19
- def perform action, data
20
- `#{@native}.perform(action, #{data.to_n})`
29
+ def perform action, data={}
30
+ data ||= {}
31
+ data[:action] = action
32
+ `#{@native}.send(#{data.to_n})`
33
+ end
34
+
35
+ private
36
+ def _received data
37
+ received Hash.new data
21
38
  end
22
39
 
23
40
  end
@@ -2,23 +2,34 @@ class ActionCable::Subscriptions
2
2
  include Native::Helpers
3
3
 
4
4
  def initialize consumer
5
+ @consumer = consumer
5
6
  @native = `new ActionCable.Subscriptions(#{consumer})`
6
7
  %x{
8
+ Opal.defn(self.$class(), 'create', #{@native}.create);
7
9
  Opal.defn(self.$class(), 'add', #{@native}.add);
8
- Opal.defn(self.$class(), 'notify', #{@native}.notify);
9
- Opal.defn(self.$class(), 'notifyAll', #{@native}.notifyAll);
10
- Opal.defn(self.$class(), 'reload', #{@native}.reload);
10
+ Opal.defn(self.$class(), 'remove', #{@native}.remove);
11
+ Opal.defn(self.$class(), 'reject', #{@native}.reject);
12
+ Opal.defn(self.$class(), 'forget', #{@native}.forget);
11
13
  Opal.defn(self.$class(), 'findAll', #{@native}.findAll);
14
+ Opal.defn(self.$class(), 'reload', #{@native}.reload);
15
+ Opal.defn(self.$class(), 'notifyAll', #{@native}.notifyAll);
16
+ Opal.defn(self.$class(), 'notify', #{@native}.notify);
12
17
  Opal.defn(self.$class(), 'sendCommand', #{@native}.sendCommand);
13
- Opal.defn(self.$class(), 'forget', #{@native}.forget);
14
- Opal.defn(self.$class(), 'reject', #{@native}.reject);
18
+
15
19
  self.subscriptions = #{@native}.subscriptions;
16
20
  self.consumer = #{@native}.consumer;
17
21
  }
18
22
  end
19
23
 
20
- def create mixin, params={}
21
- params[:channel] ||= mixin.name
22
- mixin.new self, params
24
+ def create params
25
+ if params.is_a? Hash
26
+ mixin = params[:channel]
27
+ else
28
+ mixin = params
29
+ params = {channel: params.name}
30
+ end
31
+ subscription = mixin.new @consumer, params
32
+ `#{@native}.add(#{subscription})`
33
+ subscription
23
34
  end
24
35
  end
@@ -1,27 +1,54 @@
1
-
2
1
  require 'action_cable'
3
2
 
4
3
  class ActionCable
5
4
 
6
5
  class << self
7
- def create_consumer url
6
+ def create_consumer url=nil
7
+ start_debugging
8
+ `if (url === undefined){url = Opal.nil}`
9
+ url ||= get_config("url") || `ActionCable.INTERNAL.default_mount_path`
8
10
  @@default_consumer ||= Consumer.new create_web_socket_url(url)
9
11
  end
12
+
10
13
  alias createConsumer create_consumer
11
14
 
12
15
  def get_config name
13
- `ActionCable.getConfig(#{name})`
16
+ val = `ActionCable.getConfig(#{name})`
17
+ `if (val === undefined){val = Opal.nil}`
18
+ val
14
19
  end
20
+
15
21
  alias getConfig get_config
16
22
 
17
23
  def create_web_socket_url url
18
24
  `ActionCable.createWebSocketURL(#{url})`
19
25
  end
26
+
20
27
  alias createWebSocketURL create_web_socket_url
21
28
 
22
29
  def default_consumer
23
30
  @@default_consumer
24
31
  end
32
+
33
+ def start_debugging
34
+ @@debugging = true
35
+ end
36
+
37
+ alias startDebugging start_debugging
38
+
39
+ def stop_debugging
40
+ @@debugging = false
41
+ end
42
+
43
+ alias stopDebugging stop_debugging
44
+
45
+ def log *messages
46
+ if @@debugging
47
+ messages << `Date.now`
48
+ `console.log.apply(console, ["[ActionCable]"].concat(slice.call(messages)));`
49
+ end
50
+ end
51
+
25
52
  end
26
53
  end
27
54
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opal-actioncable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jose Añasco
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2016-04-13 00:00:00.000000000 Z
12
+ date: 2016-05-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: opal