hyper-mesh 1.0.0.lap22 → 1.0.0.lap23

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 8a3f02dc7409012e66ee49ff4db2f4cf02ec7c85
4
- data.tar.gz: 32671a9f75a0f055f008ad14d37b44ac28d1857f
2
+ SHA256:
3
+ metadata.gz: 0dd51d3374de90e1a070483b1c3db8fd002376dcede0a581e8bddf295605357f
4
+ data.tar.gz: 374199c45836ce94e38ca0e4a7c82477ac21bf56c37b14294b4c1fff199dd7f8
5
5
  SHA512:
6
- metadata.gz: 24cc931546b2f95946db0ae5fb176d580ae4e1198063f03304d5454f285a7e000847c4a0b6db939cf3a479d16909ad266f8a5d800c266ca8c166ecf4abb193e7
7
- data.tar.gz: ba0798c845d4035db45b81f7a31d9e6da86fbbdac35cadcd9f261aaa52a19b41a91ae68524224759f334e4672d4ffd044b28c250e4ea472b3f7698540d227190
6
+ metadata.gz: d56429c6e9b76916a9368b1e56550a1e3fa116224703e400160e1fb8f6ec84361cf8560c3d48b0d1ffd3bbd143e7427bc5d8d60fb325d9c9fd8ccd6f5a3f1192
7
+ data.tar.gz: 3cdbcc9c488c9ddccb962ff1991b2c0c797bb59d772a59d0ef5237e5e1939afa56b7b8664d0285edf4391bbef9ffd1a290aac54150265ade8699a5ac2d6aa429
data/Gemfile CHANGED
@@ -1,4 +1,3 @@
1
1
  source 'https://rubygems.org'
2
2
  gem "opal-jquery", git: "https://github.com/opal/opal-jquery.git", branch: "master"
3
- gem "opal-rails", git: "https://github.com/opal/opal-rails.git", branch: "master"
4
3
  gemspec
data/Rakefile CHANGED
@@ -1,13 +1,22 @@
1
1
  require "bundler/gem_tasks"
2
2
  require "rspec/core/rake_task"
3
3
 
4
- RSpec::Core::RakeTask.new(:spec)
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
@@ -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
- spec.post_install_message = "\033[0;31;1mhyper-mesh #{Hypermesh::VERSION} is in development and has know security issues! Not recommended for production use!\033[0;30;21m"
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.3'
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
@@ -1,3 +1,3 @@
1
1
  module Hypermesh
2
- VERSION = '1.0.0.lap22'
2
+ VERSION = '1.0.0.lap23'
3
3
  end
@@ -97,11 +97,26 @@ module ReactiveRecord
97
97
 
98
98
  if RUBY_ENGINE != 'opal'
99
99
 
100
- # SECURITY - UNSAFE
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].constantize # TODO: Security
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 - UNSAFE
180
+ # SECURITY - NOW SAFE
166
181
  def self.new(db_cache, acting_user, klass, preloaded_records)
167
- klass_constant = klass.constantize # TODO: Security Risk
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 - UNSAFE
189
+ # SECURITY - NOW SAFE
175
190
  def initialize(db_cache, acting_user, klass, preloaded_records)
176
- klass = klass.constantize # TODO: Security
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.lap22
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-16 00:00:00.000000000 Z
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.lap22
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.lap22
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.lap22
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.lap22
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.lap22
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.lap22
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.3
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.3
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.lap22 is in development and has
612
- know security issues! Not recommended for production use!\e[0;30;21m"
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.6.12
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