hyper-mesh 1.0.0.lap22 → 1.0.0.lap23
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 +5 -5
- data/Gemfile +0 -1
- data/Rakefile +10 -1
- data/hyper-mesh.gemspec +4 -2
- data/lib/hypermesh/version.rb +1 -1
- data/lib/reactive_record/server_data_cache.rb +21 -6
- metadata +27 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 0dd51d3374de90e1a070483b1c3db8fd002376dcede0a581e8bddf295605357f
|
4
|
+
data.tar.gz: 374199c45836ce94e38ca0e4a7c82477ac21bf56c37b14294b4c1fff199dd7f8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d56429c6e9b76916a9368b1e56550a1e3fa116224703e400160e1fb8f6ec84361cf8560c3d48b0d1ffd3bbd143e7427bc5d8d60fb325d9c9fd8ccd6f5a3f1192
|
7
|
+
data.tar.gz: 3cdbcc9c488c9ddccb962ff1991b2c0c797bb59d772a59d0ef5237e5e1939afa56b7b8664d0285edf4391bbef9ffd1a290aac54150265ade8699a5ac2d6aa429
|
data/Gemfile
CHANGED
data/Rakefile
CHANGED
@@ -1,13 +1,22 @@
|
|
1
1
|
require "bundler/gem_tasks"
|
2
2
|
require "rspec/core/rake_task"
|
3
3
|
|
4
|
-
|
4
|
+
|
5
|
+
|
6
|
+
task :spec do
|
7
|
+
(1..5).each { |batch| Rake::Task["spec:batch#{batch}"].invoke }
|
8
|
+
end
|
5
9
|
|
6
10
|
namespace :spec do
|
7
11
|
task :prepare do
|
8
12
|
sh %{bundle update}
|
9
13
|
sh %{cd spec/test_app; bundle update; bundle exec rails db:setup} # may need ;bundle exec rails db:setup as well
|
10
14
|
end
|
15
|
+
(1..5).each do |batch|
|
16
|
+
RSpec::Core::RakeTask.new(:"batch#{batch}") do |t|
|
17
|
+
t.pattern = "spec/batch#{batch}/**/*_spec.rb"
|
18
|
+
end
|
19
|
+
end
|
11
20
|
end
|
12
21
|
|
13
22
|
task :default => :spec
|
data/hyper-mesh.gemspec
CHANGED
@@ -24,7 +24,8 @@ Gem::Specification.new do |spec|
|
|
24
24
|
spec.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
|
25
25
|
spec.test_files = `git ls-files -- {spec}/*`.split("\n")
|
26
26
|
spec.require_paths = ['lib']
|
27
|
-
|
27
|
+
|
28
|
+
spec.post_install_message = "\033[0;31;1mhyper-mesh #{Hypermesh::VERSION} is in development and has known security issues! Not recommended for production use!\033[0;30;21m"
|
28
29
|
|
29
30
|
spec.add_dependency 'activerecord', '>= 4.0.0'
|
30
31
|
spec.add_dependency 'hyper-component', Hypermesh::VERSION
|
@@ -39,7 +40,7 @@ Gem::Specification.new do |spec|
|
|
39
40
|
spec.add_development_dependency 'mysql2'
|
40
41
|
spec.add_development_dependency 'opal-activesupport', '~> 0.3.1'
|
41
42
|
spec.add_development_dependency 'opal-browser', '~> 0.2.0'
|
42
|
-
spec.add_development_dependency 'opal-rails', '~> 0.9.
|
43
|
+
spec.add_development_dependency 'opal-rails', '~> 0.9.4'
|
43
44
|
spec.add_development_dependency 'parser'
|
44
45
|
spec.add_development_dependency 'puma'
|
45
46
|
spec.add_development_dependency 'pusher'
|
@@ -63,4 +64,5 @@ Gem::Specification.new do |spec|
|
|
63
64
|
spec.add_development_dependency 'mini_racer', '~> 0.1.15'
|
64
65
|
spec.add_development_dependency 'timecop', '~> 0.8.1'
|
65
66
|
spec.add_development_dependency 'unparser'
|
67
|
+
spec.add_development_dependency 'pry'
|
66
68
|
end
|
data/lib/hypermesh/version.rb
CHANGED
@@ -97,11 +97,26 @@ module ReactiveRecord
|
|
97
97
|
|
98
98
|
if RUBY_ENGINE != 'opal'
|
99
99
|
|
100
|
-
|
100
|
+
def self.get_model(str)
|
101
|
+
# We don't want to open a security hole by allowing some client side string to
|
102
|
+
# autoload a class, which would happen if we did a simple str.constantize.
|
103
|
+
#
|
104
|
+
# Because all AR models are loaded at boot time on the server to define the
|
105
|
+
# ActiveRecord::Base.public_columns_hash method any model which the client has
|
106
|
+
# access to should already be loaded.
|
107
|
+
#
|
108
|
+
# If str is not already loaded then we have an access violation.
|
109
|
+
unless const_defined? str
|
110
|
+
Hyperloop::InternalPolicy.raise_operation_access_violation
|
111
|
+
end
|
112
|
+
str.constantize
|
113
|
+
end
|
114
|
+
|
115
|
+
# SECURITY - NOW SAFE
|
101
116
|
def [](*vector)
|
102
117
|
root = CacheItem.new(@cache, @acting_user, vector[0], @preloaded_records)
|
103
118
|
vector[1..-1].inject(root) { |cache_item, method| cache_item.apply_method method if cache_item }
|
104
|
-
vector[0] = vector[0]
|
119
|
+
vector[0] = ServerDataCache.get_model(vector[0])
|
105
120
|
last_value = nil
|
106
121
|
@cache.each do |cache_item|
|
107
122
|
next if cache_item.root != root || @requested_cache_items.include?(cache_item)
|
@@ -162,18 +177,18 @@ module ReactiveRecord
|
|
162
177
|
@vector.last
|
163
178
|
end
|
164
179
|
|
165
|
-
# SECURITY -
|
180
|
+
# SECURITY - NOW SAFE
|
166
181
|
def self.new(db_cache, acting_user, klass, preloaded_records)
|
167
|
-
klass_constant = klass
|
182
|
+
klass_constant = ServerDataCache.get_model(klass)
|
168
183
|
if existing = db_cache.detect { |cached_item| cached_item.vector == [klass_constant] }
|
169
184
|
return existing
|
170
185
|
end
|
171
186
|
super
|
172
187
|
end
|
173
188
|
|
174
|
-
# SECURITY -
|
189
|
+
# SECURITY - NOW SAFE
|
175
190
|
def initialize(db_cache, acting_user, klass, preloaded_records)
|
176
|
-
klass = klass
|
191
|
+
klass = ServerDataCache.get_model(klass)
|
177
192
|
@db_cache = db_cache
|
178
193
|
@acting_user = acting_user
|
179
194
|
@vector = @absolute_vector = [klass]
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hyper-mesh
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0.
|
4
|
+
version: 1.0.0.lap23
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mitch VanDuyn
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2018-02-
|
12
|
+
date: 2018-02-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activerecord
|
@@ -31,28 +31,28 @@ dependencies:
|
|
31
31
|
requirements:
|
32
32
|
- - '='
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: 1.0.0.
|
34
|
+
version: 1.0.0.lap23
|
35
35
|
type: :runtime
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
39
|
- - '='
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version: 1.0.0.
|
41
|
+
version: 1.0.0.lap23
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: hyper-operation
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
46
|
- - '='
|
47
47
|
- !ruby/object:Gem::Version
|
48
|
-
version: 1.0.0.
|
48
|
+
version: 1.0.0.lap23
|
49
49
|
type: :runtime
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
53
|
- - '='
|
54
54
|
- !ruby/object:Gem::Version
|
55
|
-
version: 1.0.0.
|
55
|
+
version: 1.0.0.lap23
|
56
56
|
- !ruby/object:Gem::Dependency
|
57
57
|
name: bundler
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
@@ -129,14 +129,14 @@ dependencies:
|
|
129
129
|
requirements:
|
130
130
|
- - '='
|
131
131
|
- !ruby/object:Gem::Version
|
132
|
-
version: 1.0.0.
|
132
|
+
version: 1.0.0.lap23
|
133
133
|
type: :development
|
134
134
|
prerelease: false
|
135
135
|
version_requirements: !ruby/object:Gem::Requirement
|
136
136
|
requirements:
|
137
137
|
- - '='
|
138
138
|
- !ruby/object:Gem::Version
|
139
|
-
version: 1.0.0.
|
139
|
+
version: 1.0.0.lap23
|
140
140
|
- !ruby/object:Gem::Dependency
|
141
141
|
name: hyper-trace
|
142
142
|
requirement: !ruby/object:Gem::Requirement
|
@@ -199,14 +199,14 @@ dependencies:
|
|
199
199
|
requirements:
|
200
200
|
- - "~>"
|
201
201
|
- !ruby/object:Gem::Version
|
202
|
-
version: 0.9.
|
202
|
+
version: 0.9.4
|
203
203
|
type: :development
|
204
204
|
prerelease: false
|
205
205
|
version_requirements: !ruby/object:Gem::Requirement
|
206
206
|
requirements:
|
207
207
|
- - "~>"
|
208
208
|
- !ruby/object:Gem::Version
|
209
|
-
version: 0.9.
|
209
|
+
version: 0.9.4
|
210
210
|
- !ruby/object:Gem::Dependency
|
211
211
|
name: parser
|
212
212
|
requirement: !ruby/object:Gem::Requirement
|
@@ -535,6 +535,20 @@ dependencies:
|
|
535
535
|
- - ">="
|
536
536
|
- !ruby/object:Gem::Version
|
537
537
|
version: '0'
|
538
|
+
- !ruby/object:Gem::Dependency
|
539
|
+
name: pry
|
540
|
+
requirement: !ruby/object:Gem::Requirement
|
541
|
+
requirements:
|
542
|
+
- - ">="
|
543
|
+
- !ruby/object:Gem::Version
|
544
|
+
version: '0'
|
545
|
+
type: :development
|
546
|
+
prerelease: false
|
547
|
+
version_requirements: !ruby/object:Gem::Requirement
|
548
|
+
requirements:
|
549
|
+
- - ">="
|
550
|
+
- !ruby/object:Gem::Version
|
551
|
+
version: '0'
|
538
552
|
description: HyperMesh is the base for HyperModel. HyperModel gives your HyperComponents
|
539
553
|
CRUD access to your ActiveRecord models on the client, using the the standard ActiveRecord
|
540
554
|
API. HyperModel also implements push notifications (via a number of possible technologies)
|
@@ -608,8 +622,8 @@ homepage: http://ruby-hyperloop.org
|
|
608
622
|
licenses:
|
609
623
|
- MIT
|
610
624
|
metadata: {}
|
611
|
-
post_install_message: "\e[0;31;1mhyper-mesh 1.0.0.
|
612
|
-
|
625
|
+
post_install_message: "\e[0;31;1mhyper-mesh 1.0.0.lap23 is in development and has
|
626
|
+
known security issues! Not recommended for production use!\e[0;30;21m"
|
613
627
|
rdoc_options: []
|
614
628
|
require_paths:
|
615
629
|
- lib
|
@@ -625,7 +639,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
625
639
|
version: 1.3.1
|
626
640
|
requirements: []
|
627
641
|
rubyforge_project:
|
628
|
-
rubygems_version: 2.
|
642
|
+
rubygems_version: 2.7.3
|
629
643
|
signing_key:
|
630
644
|
specification_version: 4
|
631
645
|
summary: React based CRUD access and Synchronization of active record models across
|