isomorfeus-data 2.5.5 → 22.9.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: isomorfeus-data
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.5
4
+ version: 22.9.0.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Biedermann
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-06-01 00:00:00.000000000 Z
11
+ date: 2022-09-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -16,42 +16,42 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 7.0.2
19
+ version: 7.0.3
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 7.0.2
26
+ version: 7.0.3
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: oj
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 3.13.13
33
+ version: 3.13.21
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 3.13.13
40
+ version: 3.13.21
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: opal
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 1.5.0
47
+ version: 1.5.1
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 1.5.0
54
+ version: 1.5.1
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: opal-activesupport
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -66,118 +66,132 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: 0.3.3
69
+ - !ruby/object:Gem::Dependency
70
+ name: marcel
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 1.0.2
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 1.0.2
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: isomorfeus-asset-manager
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
87
  - - "~>"
74
88
  - !ruby/object:Gem::Version
75
- version: 0.14.24
89
+ version: 0.15.1
76
90
  type: :runtime
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
94
  - - "~>"
81
95
  - !ruby/object:Gem::Version
82
- version: 0.14.24
96
+ version: 0.15.1
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: isomorfeus-ferret
85
99
  requirement: !ruby/object:Gem::Requirement
86
100
  requirements:
87
101
  - - "~>"
88
102
  - !ruby/object:Gem::Version
89
- version: 0.14.0
103
+ version: 0.14.4
90
104
  type: :runtime
91
105
  prerelease: false
92
106
  version_requirements: !ruby/object:Gem::Requirement
93
107
  requirements:
94
108
  - - "~>"
95
109
  - !ruby/object:Gem::Version
96
- version: 0.14.0
110
+ version: 0.14.4
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: isomorfeus-i18n
99
113
  requirement: !ruby/object:Gem::Requirement
100
114
  requirements:
101
115
  - - '='
102
116
  - !ruby/object:Gem::Version
103
- version: 2.5.5
117
+ version: 22.9.0.rc1
104
118
  type: :runtime
105
119
  prerelease: false
106
120
  version_requirements: !ruby/object:Gem::Requirement
107
121
  requirements:
108
122
  - - '='
109
123
  - !ruby/object:Gem::Version
110
- version: 2.5.5
124
+ version: 22.9.0.rc1
111
125
  - !ruby/object:Gem::Dependency
112
126
  name: isomorfeus-policy
113
127
  requirement: !ruby/object:Gem::Requirement
114
128
  requirements:
115
129
  - - '='
116
130
  - !ruby/object:Gem::Version
117
- version: 2.5.5
131
+ version: 22.9.0.rc1
118
132
  type: :runtime
119
133
  prerelease: false
120
134
  version_requirements: !ruby/object:Gem::Requirement
121
135
  requirements:
122
136
  - - '='
123
137
  - !ruby/object:Gem::Version
124
- version: 2.5.5
138
+ version: 22.9.0.rc1
125
139
  - !ruby/object:Gem::Dependency
126
140
  name: isomorfeus-preact
127
141
  requirement: !ruby/object:Gem::Requirement
128
142
  requirements:
129
- - - "~>"
143
+ - - '='
130
144
  - !ruby/object:Gem::Version
131
- version: 10.7.2
145
+ version: 22.9.0.rc1
132
146
  type: :runtime
133
147
  prerelease: false
134
148
  version_requirements: !ruby/object:Gem::Requirement
135
149
  requirements:
136
- - - "~>"
150
+ - - '='
137
151
  - !ruby/object:Gem::Version
138
- version: 10.7.2
152
+ version: 22.9.0.rc1
139
153
  - !ruby/object:Gem::Dependency
140
154
  name: isomorfeus-redux
141
155
  requirement: !ruby/object:Gem::Requirement
142
156
  requirements:
143
- - - "~>"
157
+ - - '='
144
158
  - !ruby/object:Gem::Version
145
- version: 4.2.0
159
+ version: 22.9.0.rc1
146
160
  type: :runtime
147
161
  prerelease: false
148
162
  version_requirements: !ruby/object:Gem::Requirement
149
163
  requirements:
150
- - - "~>"
164
+ - - '='
151
165
  - !ruby/object:Gem::Version
152
- version: 4.2.0
166
+ version: 22.9.0.rc1
153
167
  - !ruby/object:Gem::Dependency
154
168
  name: isomorfeus-transport
155
169
  requirement: !ruby/object:Gem::Requirement
156
170
  requirements:
157
171
  - - '='
158
172
  - !ruby/object:Gem::Version
159
- version: 2.5.5
173
+ version: 22.9.0.rc1
160
174
  type: :runtime
161
175
  prerelease: false
162
176
  version_requirements: !ruby/object:Gem::Requirement
163
177
  requirements:
164
178
  - - '='
165
179
  - !ruby/object:Gem::Version
166
- version: 2.5.5
180
+ version: 22.9.0.rc1
167
181
  - !ruby/object:Gem::Dependency
168
182
  name: isomorfeus
169
183
  requirement: !ruby/object:Gem::Requirement
170
184
  requirements:
171
185
  - - '='
172
186
  - !ruby/object:Gem::Version
173
- version: 2.5.5
187
+ version: 22.9.0.rc1
174
188
  type: :development
175
189
  prerelease: false
176
190
  version_requirements: !ruby/object:Gem::Requirement
177
191
  requirements:
178
192
  - - '='
179
193
  - !ruby/object:Gem::Version
180
- version: 2.5.5
194
+ version: 22.9.0.rc1
181
195
  - !ruby/object:Gem::Dependency
182
196
  name: rake
183
197
  requirement: !ruby/object:Gem::Requirement
@@ -214,28 +228,18 @@ extra_rdoc_files: []
214
228
  files:
215
229
  - LICENSE
216
230
  - README.md
217
- - lib/data_uri.rb
218
- - lib/data_uri/open_uri.rb
219
- - lib/data_uri/uri.rb
220
231
  - lib/isomorfeus-data.rb
221
232
  - lib/isomorfeus/data/config.rb
222
- - lib/isomorfeus/data/field_support.rb
223
- - lib/isomorfeus/data/generic_class_api.rb
224
- - lib/isomorfeus/data/generic_instance_api.rb
225
- - lib/isomorfeus/data/handler/generic.rb
233
+ - lib/isomorfeus/data/enhancer.rb
234
+ - lib/isomorfeus/data/file_accelerator.rb
226
235
  - lib/isomorfeus/data/object_accelerator.rb
236
+ - lib/isomorfeus/data/rack_middleware.rb
227
237
  - lib/isomorfeus/data/reducer.rb
238
+ - lib/isomorfeus/data/sid.rb
228
239
  - lib/isomorfeus/data/version.rb
229
- - lib/isomorfeus_data/lucid_file/base.rb
230
- - lib/isomorfeus_data/lucid_file/mixin.rb
231
- - lib/isomorfeus_data/lucid_object/base.rb
232
- - lib/isomorfeus_data/lucid_object/mixin.rb
233
- - lib/isomorfeus_data/lucid_query/base.rb
234
- - lib/isomorfeus_data/lucid_query/mixin.rb
235
- - lib/isomorfeus_data/lucid_query_result.rb
236
- - opal/iso_uri.rb
237
- - opal/uri/common.rb
238
- - opal/uri/generic.rb
240
+ - lib/lucid_data_generic.rb
241
+ - lib/lucid_file.rb
242
+ - lib/lucid_object.rb
239
243
  homepage: https://isomorfeus.com
240
244
  licenses:
241
245
  - MIT
@@ -253,9 +257,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
253
257
  version: '0'
254
258
  required_rubygems_version: !ruby/object:Gem::Requirement
255
259
  requirements:
256
- - - ">="
260
+ - - ">"
257
261
  - !ruby/object:Gem::Version
258
- version: '0'
262
+ version: 1.3.1
259
263
  requirements: []
260
264
  rubygems_version: 3.3.7
261
265
  signing_key:
@@ -1,22 +0,0 @@
1
- module URI
2
-
3
- class Data
4
-
5
- def open
6
- io = StringIO.new(data)
7
- OpenURI::Meta.init(io)
8
- io.meta_add_field('content-type', content_type)
9
- if block_given?
10
- begin
11
- yield io
12
- ensure
13
- io.close
14
- end
15
- else
16
- io
17
- end
18
- end
19
-
20
- end
21
-
22
- end
data/lib/data_uri/uri.rb DELETED
@@ -1,61 +0,0 @@
1
- module URI
2
- class Data < Generic
3
- COMPONENT = [:scheme, :opaque]
4
- MIME_TYPE_RE = %r{^([-\w.+]+/[-\w.+]*)}
5
- MIME_PARAM_RE = /^;([-\w.+]+)=([^;,]+)/
6
-
7
- attr_reader :content_type, :data
8
-
9
- def initialize(*args)
10
- if args.length == 1
11
- uri = args.first.to_s
12
- unless uri.match(/^data:/)
13
- raise URI::InvalidURIError.new('Invalid Data URI: ' + args.first.inspect)
14
- end
15
- @scheme = 'data'
16
- @opaque = uri[5 .. -1]
17
- else
18
- super(*args)
19
- end
20
- @data = @opaque
21
- if md = MIME_TYPE_RE.match(@data)
22
- @content_type = md[1]
23
- @data = @data[@content_type.length .. -1]
24
- end
25
- @content_type ||= 'text/plain'
26
- @mime_params = {}
27
- while md = MIME_PARAM_RE.match(@data)
28
- @mime_params[md[1]] = md[2]
29
- @data = @data[md[0].length .. -1]
30
- end
31
- if base64 = /^;base64/.match(@data)
32
- @data = @data[7 .. -1]
33
- end
34
- unless /^,/.match(@data)
35
- raise URI::InvalidURIError.new('Invalid data URI')
36
- end
37
- @data = @data[1 .. -1]
38
- @data = base64 ? Base64.decode64(@data) : URI.decode(@data)
39
- if @data.respond_to?(:force_encoding) && charset = @mime_params['charset']
40
- @data.force_encoding(charset)
41
- end
42
- end
43
-
44
- def self.build(arg)
45
- data = nil
46
- content_type = nil
47
- case arg
48
- when IO
49
- data = arg
50
- when Hash
51
- data = arg[:data]
52
- content_type = arg[:content_type]
53
- end
54
- raise 'Invalid build argument: ' + arg.inspect unless data
55
- if !content_type && data.respond_to?(:content_type)
56
- content_type = data.content_type
57
- end
58
- new('data', nil, nil, nil, nil, nil, "#{content_type};base64,#{Base64.encode64(data.read).chop}", nil, nil)
59
- end
60
- end
61
- end
data/lib/data_uri.rb DELETED
@@ -1,4 +0,0 @@
1
- require 'uri'
2
- require 'base64'
3
- require 'stringio'
4
- require 'data_uri/uri'
@@ -1,269 +0,0 @@
1
- module Isomorfeus
2
- module Data
3
- module FieldSupport
4
- def self.included(base)
5
- base.instance_exec do
6
- @@object_validation_proc = proc do |v|
7
- fail = false
8
- if v.is_a?(Array)
9
- v.each { |e| fail = true unless e.nil? || e.is_a?(LucidObject::Mixin) }
10
- elsif !v.nil? && !v.is_a?(LucidObject::Mixin)
11
- fail = true
12
- end
13
- raise "must be nil, a LucidObject::Mixin or a Array of LucidObject::Mixin" if fail
14
- end
15
-
16
- def field_types
17
- # determines how the item is stored in the index
18
- @field_types ||= {}
19
- end
20
-
21
- def field_options
22
- # options for the index
23
- @field_options ||= {}
24
- end
25
-
26
- def field_conditions
27
- # conditions for validating the field data
28
- @field_conditions ||= {}
29
- end
30
-
31
- def _register_field(name, type, options)
32
- field_options[name] = {}
33
- field_options[name][:default_boost] = options.delete(:default_boost) if options.key?(:default_boost)
34
- field_options[name][:default_boost] = options.delete(:default_boost) if options.key?(:boost)
35
- field_options[name][:index] = options.delete(:index) { :no }
36
- field_options[name][:store] = options.delete(:store) if options.key?(:store)
37
- field_options[name][:compress] = options.delete(:compress) if options.key?(:compress)
38
- if field_options[name][:index] == :yes
39
- field_options[name][:term_vector] = options.delete(:term_vector) { type == :text_field ? :with_positions_offsets : :no }
40
- elsif field_options[name][:index] == :no
41
- field_options[name][:term_vector] = :no
42
- end
43
- field_conditions[name] = options
44
- field_types[name] = type
45
- end
46
-
47
- def text_field(name, options = {})
48
- field(name, :text_field, options)
49
- end
50
-
51
- def attribute(name, options = {})
52
- field(name, :attribute, options)
53
- end
54
- alias embed attribute
55
-
56
- def object(name, options = {})
57
- default_options = { validate_block: @@object_validation_proc }
58
- field(name, :object, default_options.merge(options))
59
- end
60
- alias reference object
61
-
62
- def field?(field_name)
63
- field_options.key?(field_name)
64
- end
65
-
66
- def text_field?(field_name)
67
- field_types[field_name] == :text_field
68
- end
69
-
70
- def attribute?(attr_name)
71
- field_types[attr_name] == :attribute
72
- end
73
-
74
- def object?(obj_name)
75
- field_types[obj_name] == :object
76
- end
77
-
78
- def validate_field!(field_name, val)
79
- raise "no such field" unless field?(field_name)
80
- Isomorfeus::Props::Validator.new(self.name, field_name, val, field_conditions[field_name]).validate!
81
- end
82
-
83
- def valid_field?(field_name, val)
84
- validate_field!(field_name, val)
85
- rescue
86
- false
87
- end
88
-
89
- def valid_text_field?(field_name, val)
90
- return valid_field?(field_name, val) if text_field?(field_name)
91
- false
92
- rescue
93
- false
94
- end
95
-
96
- def valid_attribute?(attr_name, val)
97
- return valid_field?(attr_name, val) if attribute?(attr_name)
98
- false
99
- rescue
100
- false
101
- end
102
- alias valid_embed? valid_attribute?
103
-
104
- def valid_object?(obj_name, val)
105
- return valid_field?(obj_name, val) if object?(obj_name)
106
- false
107
- rescue
108
- false
109
- end
110
- alias valid_reference? valid_object?
111
-
112
- def validate
113
- Isomorfeus::Props::ValidateHashProxy.new
114
- end
115
-
116
- def _validate_field(field_name, val)
117
- Isomorfeus.raise_error(message: "#{self.name}: No such text_field, attribute or object declared: '#{field_name}'!") unless field_conditions.key?(field_name)
118
- Isomorfeus::Props::Validator.new(self.name, field_name, val, field_conditions[field_name]).validated_value
119
- end
120
-
121
- def _validate_fields(fields)
122
- field_conditions.each_key do |field_name|
123
- if field_conditions[field_name].key?(:required) && field_conditions[field_name][:required] && !fields.key?(field_name)
124
- Isomorfeus.raise_error(message: "Required #{field_types[field_name]} #{field_name} not given!")
125
- end
126
- fields[field_name] = _validate_field(field_name, fields[field_name])
127
- end
128
- end
129
- end
130
-
131
- def _validate_field(field_name, val)
132
- self.class._validate_field(field_name, val)
133
- end
134
-
135
- def _validate_fields(fields)
136
- self.class._validate_fields(fields)
137
- end
138
-
139
- if RUBY_ENGINE == 'opal'
140
- base.instance_exec do
141
- def field(name, type, options)
142
- _register_field(name, type, options)
143
-
144
- if type == :object
145
- define_method(name) do
146
- _get_object(name)
147
- end
148
- else
149
- define_method(name) do
150
- _get_field(name)
151
- end
152
- end
153
-
154
- define_method("#{name}=") do |val|
155
- val = _validate_field(name, val)
156
- changed!
157
- @_changed_fields[name] = val
158
- end
159
- end
160
- end
161
-
162
- def validate_fields_function
163
- %x{
164
- if (typeof self.validate_fields_function === 'undefined') {
165
- self.validate_fields_function = function(fields_object) {
166
- try { self.$_validate_fields(Opal.Hash.$new(fields_object)) }
167
- catch (e) { return e.message; }
168
- }
169
- }
170
- return self.validate_fields_function;
171
- }
172
- end
173
-
174
- def validate_field_function(field_name)
175
- function_name = "validate_field_#{field_name}_function"
176
- %x{
177
- if (typeof self[function_name] === 'undefined') {
178
- self[function_name] = function(value) {
179
- try { self.$_validate_field(field_name, value); }
180
- catch (e) { return e.message; }
181
- }
182
- }
183
- return self[function_name];
184
- }
185
- end
186
-
187
- def _get_field(name)
188
- return @_changed_fields[name] if @_changed_fields.key?(name)
189
- path = @_store_path + [name]
190
- result = Redux.fetch_by_path(*path)
191
- %x{
192
- if (result === null) { return nil; }
193
- else { return result; }
194
- }
195
- end
196
-
197
- def _get_object(name)
198
- return @_changed_fields[name] if @_changed_fields.key?(name)
199
- return @_objects[name] if @_objects.key?(name)
200
- path = @_store_path + [name]
201
- sid_or_array = Redux.fetch_by_path(*path)
202
- return nil if `(sid_or_array === null)`
203
- if sid_or_array[0].is_a?(String)
204
- @_objects[name] = Isomorfeus.instance_from_sid(sid_or_array)
205
- elsif sid_or_array[0].is_a?(Array)
206
- a = sid_or_array.map { |sid| Isomorfeus.instance_from_sid(sid) if sid }
207
- a.compact!
208
- @_objects[name] = a
209
- end
210
- @_objects[name]
211
- end
212
-
213
- def fields
214
- raw_fields = Redux.fetch_by_path(*@_store_path)
215
- hash = Hash.new(raw_fields)
216
- hash.merge!(@_changed_fields) if @_changed_fields
217
- hash
218
- end
219
-
220
- def _get_selected_fields
221
- sel_fields = fields.dup
222
- self.class.field_types.each do |field, type|
223
- if type == :object
224
- v = sel_fields[field]
225
- sel_fields[field] = v.is_a?(Array) ? v.map(&:sid) : v&.sid
226
- end
227
- end
228
- sel_fields
229
- end
230
- else
231
- base.instance_exec do
232
- def field(name, type, options)
233
- _register_field(name, type, options)
234
-
235
- define_method(name) do
236
- @_raw_fields[name]
237
- end
238
-
239
- define_method("#{name}=") do |val|
240
- val = _validate_field(name, val)
241
- changed!
242
- @_raw_fields[name] = val
243
- end
244
- end
245
- end
246
-
247
- def fields
248
- @_raw_fields
249
- end
250
-
251
- def _get_selected_fields
252
- sel_fields = fields.transform_keys(&:to_s)
253
- ft = self.class.field_types
254
- self.class.field_conditions.each do |field, options|
255
- field_s = field.to_s
256
- if options[:server_only]
257
- sel_fields.delete(field_s)
258
- elsif ft[field] == :object
259
- v = sel_fields[field_s]
260
- sel_fields[field_s] = v.is_a?(Array) ? v.map(&:sid) : v&.sid
261
- end
262
- end
263
- sel_fields
264
- end
265
- end
266
- end
267
- end
268
- end
269
- end