digital_cable 0.0.1
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 +7 -0
- data/Dockerfile +30 -0
- data/Gemfile +6 -0
- data/Rakefile +20 -0
- data/bin/console +7 -0
- data/digital_cable.gemspec +24 -0
- data/docker-compose.yml +10 -0
- data/lib/digital_cable.rb +9 -0
- data/lib/digital_cable/broadcaster.rb +56 -0
- data/lib/digital_cable/reflex.rb +29 -0
- data/lib/digital_cable/version.rb +5 -0
- data/package.json +36 -0
- metadata +166 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 2860b456d0e0d57a5b066fc15b6ffd23310e4ee3fbcbc8a9c94c21d6567c3673
|
4
|
+
data.tar.gz: 16bc4d2fec09bd57fc298deff72948785c1bfff88097e161b86dfedf4defa600
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: f46bc4279f11985454bb3fca606f83a748b913258a1248c5966b180f7dcbfabf45a662d27cbbdf10fa5b666b17921426f8f412c9eeb6429fa6bc473ffcbd7a5d
|
7
|
+
data.tar.gz: c703a2eb080d606aec7b2fba699f10a036b7220a1597af424cdabb3c5a7d1b238487f4858d7923385eb1ffe95cdf97a20d43f250d543f348300a8a672eaa031c
|
data/Dockerfile
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
FROM ruby:2.6.6-stretch
|
2
|
+
|
3
|
+
RUN apt-get -q update -yqq && apt-get install -yqq --no-install-recommends && \
|
4
|
+
curl -sL https://deb.nodesource.com/setup_12.x | bash && \
|
5
|
+
apt-get install -yqq nodejs && \
|
6
|
+
rm -rf /var/lib/apt/lists/*
|
7
|
+
RUN npm cache clean -f && npm install -g n && n 12.16.3
|
8
|
+
RUN npm install --global yarn
|
9
|
+
|
10
|
+
RUN useradd --create-home --shell /bin/bash --user-group dev && \
|
11
|
+
echo "dev ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
12
|
+
|
13
|
+
RUN mkdir /digital_cable
|
14
|
+
RUN chown dev:dev /digital_cable
|
15
|
+
RUN mkdir -p /digital_cable/lib/digital_cable/
|
16
|
+
|
17
|
+
USER dev
|
18
|
+
SHELL ["/bin/bash", "-l", "-c"]
|
19
|
+
WORKDIR /digital_cable
|
20
|
+
|
21
|
+
COPY --chown=dev lib/digital_cable/version.rb /digital_cable/lib/digital_cable/
|
22
|
+
COPY --chown=dev digital_cable.gemspec /digital_cable/
|
23
|
+
COPY --chown=dev Gemfile* /digital_cable/
|
24
|
+
RUN bundle install
|
25
|
+
|
26
|
+
COPY --chown=dev package.json /digital_cable/
|
27
|
+
# COPY --chown=dev yarn.lock /digital_cable/
|
28
|
+
RUN yarn install --check-files
|
29
|
+
|
30
|
+
COPY --chown=dev . /digital_cable/
|
data/Gemfile
ADDED
data/Rakefile
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "bundler/gem_tasks"
|
4
|
+
require "github_changelog_generator/task"
|
5
|
+
|
6
|
+
task default: [:test]
|
7
|
+
|
8
|
+
task :test do
|
9
|
+
puts "Please write some tests..."
|
10
|
+
end
|
11
|
+
|
12
|
+
GitHubChangelogGenerator::RakeTask.new :changelog do |config|
|
13
|
+
config.user = "ccollins"
|
14
|
+
config.project = "digital_cable"
|
15
|
+
end
|
16
|
+
|
17
|
+
|
18
|
+
# bundle exec magic_frozen_string_literal
|
19
|
+
# bundle exec standardrb --fix
|
20
|
+
# cd ./javascript && yarn run prettier-standard cable_ready.js
|
data/bin/console
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
require File.expand_path("../lib/digital_cable/version", __FILE__)
|
2
|
+
|
3
|
+
Gem::Specification.new do |gem|
|
4
|
+
gem.name = "digital_cable"
|
5
|
+
gem.license = "MIT"
|
6
|
+
gem.version = DigitalCable::VERSION
|
7
|
+
gem.authors = ["Chuck Collins"]
|
8
|
+
gem.email = ["chuck.collins@gmail.com"]
|
9
|
+
gem.homepage = "https://github.com/blackbox-engineering/digital-cable"
|
10
|
+
gem.summary = "Out-of-Band Server Triggered DOM Operations"
|
11
|
+
|
12
|
+
gem.files = Dir["lib/**/*.rb", "bin/*", "[A-Z]*"]
|
13
|
+
gem.test_files = Dir["spec/**/*.rb"]
|
14
|
+
|
15
|
+
gem.add_dependency "rails", ">= 5.2"
|
16
|
+
|
17
|
+
gem.add_development_dependency "github_changelog_generator"
|
18
|
+
gem.add_development_dependency "magic_frozen_string_literal"
|
19
|
+
gem.add_development_dependency "pry"
|
20
|
+
gem.add_development_dependency "pry-nav"
|
21
|
+
gem.add_development_dependency "rake"
|
22
|
+
gem.add_development_dependency "standardrb"
|
23
|
+
gem.add_development_dependency "rspec"
|
24
|
+
end
|
data/docker-compose.yml
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
module DigitalCable
|
2
|
+
|
3
|
+
class DigitalCableError < StandardError; end
|
4
|
+
module Broadcaster
|
5
|
+
|
6
|
+
OPERATIONS = [
|
7
|
+
:add_css_class,
|
8
|
+
:console_log,
|
9
|
+
:dispatch_event,
|
10
|
+
:inner_html,
|
11
|
+
:insert_adjacent_html,
|
12
|
+
:insert_adjacent_text,
|
13
|
+
:morph,
|
14
|
+
:notification,
|
15
|
+
:outer_html,
|
16
|
+
:push_state,
|
17
|
+
:remove,
|
18
|
+
:remove_attribute,
|
19
|
+
:remove_css_class,
|
20
|
+
:set_attribute,
|
21
|
+
:set_cookie,
|
22
|
+
:set_dataset_property,
|
23
|
+
:set_focus,
|
24
|
+
:set_property,
|
25
|
+
:set_style,
|
26
|
+
:set_styles,
|
27
|
+
:set_value,
|
28
|
+
:text_content
|
29
|
+
]
|
30
|
+
|
31
|
+
def broadcast(identifier, method:, options:)
|
32
|
+
verify_method!(method)
|
33
|
+
|
34
|
+
ActionCable.server.broadcast identifier, {
|
35
|
+
"digitalCable" => true,
|
36
|
+
"operation" => { method: method.to_s.camelize(:lower), options: options }
|
37
|
+
}
|
38
|
+
end
|
39
|
+
|
40
|
+
def broadcast_to(identifier, model, method:, options:)
|
41
|
+
verify_method!(method)
|
42
|
+
|
43
|
+
identifier.broadcast_to model, {
|
44
|
+
"digitalCable" => true,
|
45
|
+
"operation" => { method: method.to_s.camelize(:lower), options: options }
|
46
|
+
}
|
47
|
+
end
|
48
|
+
|
49
|
+
private
|
50
|
+
|
51
|
+
def verify_method!(method)
|
52
|
+
raise DigitalCableError, "Undefined method" unless OPERATIONS.include?(method.to_sym)
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'digital_cable'
|
2
|
+
|
3
|
+
module DigitalCable
|
4
|
+
class Reflex < ApplicationCable::Channel
|
5
|
+
include DigitalCable::Broadcaster
|
6
|
+
|
7
|
+
delegate :render, to: :ApplicationController
|
8
|
+
|
9
|
+
attr_accessor :stream_name
|
10
|
+
|
11
|
+
def subscribed
|
12
|
+
stream_from generate_stream_name(params)
|
13
|
+
end
|
14
|
+
|
15
|
+
def process_reflex(data)
|
16
|
+
reflex(data)
|
17
|
+
end
|
18
|
+
|
19
|
+
def reflex(data); end
|
20
|
+
|
21
|
+
def response; end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def generate_stream_name(params)
|
26
|
+
self.stream_name = "reflex:#{params['identifier']}"
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/package.json
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
{
|
2
|
+
"name": "digital_cable",
|
3
|
+
"version": "0.0.1",
|
4
|
+
"description": "DigitalCable helps you create great real-time user experiences by making it simple to trigger client-side DOM changes from server-side Ruby.",
|
5
|
+
"keywords": [
|
6
|
+
"ruby",
|
7
|
+
"rails",
|
8
|
+
"websockets",
|
9
|
+
"actioncable",
|
10
|
+
"cable",
|
11
|
+
"ssr",
|
12
|
+
"stimulus_reflex",
|
13
|
+
"client-side",
|
14
|
+
"dom"
|
15
|
+
],
|
16
|
+
"homepage": "https://github.com/ccollins/digital-cable",
|
17
|
+
"bugs": {
|
18
|
+
"url": "https://github.com/ccollins/digital-cable/issues"
|
19
|
+
},
|
20
|
+
"repository": {
|
21
|
+
"type": "git",
|
22
|
+
"url": "git+https://github.com:ccollins/digital_cable.git"
|
23
|
+
},
|
24
|
+
"license": "",
|
25
|
+
"author": "Chuck Collins <chuck.collins@gmail.com>",
|
26
|
+
"main": "./digital_cable.js",
|
27
|
+
"scripts": {
|
28
|
+
"prettier-standard-check": "yarn run prettier-standard --check ./digital_cable.js"
|
29
|
+
},
|
30
|
+
"dependencies": {
|
31
|
+
"morphdom": "^2.6.1"
|
32
|
+
},
|
33
|
+
"devDependencies": {
|
34
|
+
"prettier-standard": "^16.1.0"
|
35
|
+
}
|
36
|
+
}
|
metadata
ADDED
@@ -0,0 +1,166 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: digital_cable
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Chuck Collins
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2020-10-19 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rails
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '5.2'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '5.2'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: github_changelog_generator
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: magic_frozen_string_literal
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: pry
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: pry-nav
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rake
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: standardrb
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: rspec
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
description:
|
126
|
+
email:
|
127
|
+
- chuck.collins@gmail.com
|
128
|
+
executables: []
|
129
|
+
extensions: []
|
130
|
+
extra_rdoc_files: []
|
131
|
+
files:
|
132
|
+
- Dockerfile
|
133
|
+
- Gemfile
|
134
|
+
- Rakefile
|
135
|
+
- bin/console
|
136
|
+
- digital_cable.gemspec
|
137
|
+
- docker-compose.yml
|
138
|
+
- lib/digital_cable.rb
|
139
|
+
- lib/digital_cable/broadcaster.rb
|
140
|
+
- lib/digital_cable/reflex.rb
|
141
|
+
- lib/digital_cable/version.rb
|
142
|
+
- package.json
|
143
|
+
homepage: https://github.com/blackbox-engineering/digital-cable
|
144
|
+
licenses:
|
145
|
+
- MIT
|
146
|
+
metadata: {}
|
147
|
+
post_install_message:
|
148
|
+
rdoc_options: []
|
149
|
+
require_paths:
|
150
|
+
- lib
|
151
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
152
|
+
requirements:
|
153
|
+
- - ">="
|
154
|
+
- !ruby/object:Gem::Version
|
155
|
+
version: '0'
|
156
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
157
|
+
requirements:
|
158
|
+
- - ">="
|
159
|
+
- !ruby/object:Gem::Version
|
160
|
+
version: '0'
|
161
|
+
requirements: []
|
162
|
+
rubygems_version: 3.0.3
|
163
|
+
signing_key:
|
164
|
+
specification_version: 4
|
165
|
+
summary: Out-of-Band Server Triggered DOM Operations
|
166
|
+
test_files: []
|