isomorfeus-data 2.5.4 → 22.9.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,431 @@
1
+ class LucidObject < LucidDataGeneric
2
+ include LucidI18nMixin
3
+
4
+ class SearchResultProxy
5
+ attr_reader :query_json
6
+
7
+ def initialize(class_name, query, params)
8
+ @store_path = [:data_state, :queries, class_name, query, JSON.dump(params)]
9
+ end
10
+
11
+ def method_missing(method, *args, &block)
12
+ all.send(method, *args, &block)
13
+ end
14
+
15
+ def loaded?
16
+ !!as_sid_s
17
+ end
18
+
19
+ def as_sid_s
20
+ Isomorfeus.store.dig(*@store_path)
21
+ end
22
+
23
+ def as_keys
24
+ a = as_sid_s
25
+ return [] unless a
26
+ a.map do |sid_s|
27
+ SID.from_s(sid_s).key
28
+ end
29
+ end
30
+
31
+ def [](idx)
32
+ sid_s = as_sid_s&.fetch(idx)
33
+ LucidObject.instance_from_sid_s(sid_s) if sid_s
34
+ end
35
+
36
+ def all
37
+ a = as_sid_s
38
+ return [] unless a
39
+ a.map do |sid_s|
40
+ LucidObject.instance_from_sid_s(sid_s)
41
+ end
42
+ end
43
+
44
+ def dig(*identifiers)
45
+ all.dig(*identifiers)
46
+ end
47
+
48
+ def length
49
+ as_sid_s&.size
50
+ end
51
+ alias size length
52
+ end
53
+
54
+ OBJECT_VALIDATION_PROC = proc do |v|
55
+ fail = false
56
+ if v.is_a?(SID)
57
+ # yes, a sid
58
+ elsif v.is_a?(Array)
59
+ v.each do |e|
60
+ fail = true unless (e.nil? || e.is_a?(LucidDataGeneric) || e.is_a?(SID) || (e.is_a?(String) && SID.is?(e)))
61
+ end
62
+ elsif v.is_a?(String)
63
+ fail = true unless SID.is?(v)
64
+ elsif !v.nil? && !v.is_a?(LucidObject)
65
+ fail = true
66
+ end
67
+ raise "must be nil, a LucidObject or a Array of LucidObjects, a SID or a Array of SIDs" if fail
68
+ end
69
+
70
+ ATTRIBUTE_VALIDATION_PROC = proc do |v|
71
+ fail = false
72
+ if v.is_a?(SID) || (v.is_a?(String) && SID.is?(v)) || v.is_a?(LucidDataGeneric)
73
+ fail = true
74
+ elsif v.is_a?(Array)
75
+ v.each do |e|
76
+ fail = true if e.is_a?(SID) || (e.is_a?(String) && SID.is?(e)) || e.is_a?(LucidDataGeneric)
77
+ end
78
+ end
79
+ raise "LucidObjects or LucidFiles are not allowed as attributes!" if fail
80
+ end
81
+
82
+ class << self
83
+ def search(query, params = nil)
84
+ proxy_instance = LucidObject::SearchResultProxy.new(self.name, query, params)
85
+ Isomorfeus.something_loading!
86
+ Isomorfeus.store.deferred_dispatch(type: 'DATA_SEARCH', class_name: self.name, query: query, params: params)
87
+ proxy_instance
88
+ end
89
+
90
+ def load!(key:, instance: nil)
91
+ instance = self.new(key: key, _loading: true) unless instance
92
+ Isomorfeus.something_loading!
93
+ Isomorfeus.store.deferred_dispatch(type: 'DATA_LOAD', class_name: self.name, key: key)
94
+ instance
95
+ end
96
+
97
+ def destroy(key:)
98
+ Isomorfeus.store.deferred_dispatch(type: 'DATA_DESTROY', class_name: self.name, key: key)
99
+ true
100
+ end
101
+
102
+ def escape_string(s)
103
+ s.gsub(/([\\\&\:\(\)\[\]\{\}\!\"\~\^\|\<\>\=\*\?\+\-\s])/, '\\\\\1')
104
+ end
105
+
106
+ def instance_from_sid_s(sid_s)
107
+ sid = SID.from_s(sid_s)
108
+ data_class = Isomorfeus.cached_data_class(sid.class_name)
109
+ data_class.load(key: sid.key)
110
+ end
111
+
112
+ def query(name, query_string, options = nil)
113
+ queries[name] = { query_string: query_string, options: options }
114
+ end
115
+
116
+ def queries
117
+ @queries ||= {}
118
+ end
119
+
120
+ def field_types
121
+ # determines how the item is stored in the index
122
+ @field_types ||= {}
123
+ end
124
+
125
+ def field_options
126
+ # options for the index
127
+ @field_options ||= {}
128
+ end
129
+
130
+ def field_conditions
131
+ # conditions for validating the field data
132
+ @field_conditions ||= {}
133
+ end
134
+
135
+ def _register_field(name, type, options)
136
+ field_options[name] = {}
137
+ field_options[name][:default_boost] = options.delete(:default_boost) if options.key?(:default_boost)
138
+ field_options[name][:default_boost] = options.delete(:default_boost) if options.key?(:boost)
139
+ field_options[name][:index] = options.delete(:index) { :no }
140
+ field_options[name][:store] = options.delete(:store) { :yes }
141
+ field_options[name][:compress] = options.delete(:compress) if options.key?(:compress)
142
+ if field_options[name][:index] == :yes
143
+ field_options[name][:term_vector] = options.delete(:term_vector) { type == :text_field ? :with_positions_offsets : :no }
144
+ elsif field_options[name][:index] == :no
145
+ field_options[name][:term_vector] = :no
146
+ end
147
+ field_conditions[name] = options
148
+ field_types[name] = type
149
+ end
150
+
151
+ def field(name, type, options)
152
+ _register_field(name, type, options)
153
+ end
154
+
155
+ def text_field(name, options = {})
156
+ default_options = { is_a: String, allow_nil: true, cast: true }
157
+ field(name, :text_field, default_options.merge(options))
158
+ end
159
+
160
+ def attribute(name, options = {})
161
+ default_options = { validate_block: ATTRIBUTE_VALIDATION_PROC }
162
+ field(name, :attribute, default_options.merge(options))
163
+ end
164
+
165
+ def object(name, options = {})
166
+ default_options = { validate_block: OBJECT_VALIDATION_PROC }
167
+ field(name, :object, default_options.merge(options))
168
+ end
169
+
170
+ def validate_field!(field_name, val)
171
+ raise "no such field" unless field_options.key?(field_name)
172
+ Isomorfeus::Props::Validator.new(self.name, field_name, val, field_conditions[field_name]).validate!
173
+ end
174
+
175
+ def valid_field?(field_name, val)
176
+ validate_field!(field_name, val)
177
+ rescue
178
+ false
179
+ end
180
+
181
+ def valid_text_field?(field_name, val)
182
+ return valid_field?(field_name, val) if field_types[field_name] == :text_field
183
+ false
184
+ rescue
185
+ false
186
+ end
187
+
188
+ def valid_attribute?(attr_name, val)
189
+ return valid_field?(attr_name, val) if field_types[attr_name] == :attribute
190
+ false
191
+ rescue
192
+ false
193
+ end
194
+ alias valid_embed? valid_attribute?
195
+
196
+ def valid_object?(obj_name, val)
197
+ return valid_field?(obj_name, val) if field_types[obj_name] == :object
198
+ false
199
+ rescue
200
+ false
201
+ end
202
+ alias valid_reference? valid_object?
203
+
204
+ def validate
205
+ Isomorfeus::Props::ValidateHashProxy.new
206
+ end
207
+
208
+ def _validate_field(field_name, val)
209
+ Isomorfeus.raise_error(message: "#{self.name}: No such text_field, attribute or object declared: '#{field_name}'!") unless field_conditions.key?(field_name)
210
+ Isomorfeus::Props::Validator.new(self.name, field_name, val, field_conditions[field_name]).validated_value
211
+ end
212
+
213
+ def _validate_fields(fields)
214
+ field_names = (fields.keys + field_conditions.keys).uniq
215
+ field_names.each do |field_name|
216
+ if field_conditions[field_name].key?(:required) && field_conditions[field_name][:required] && !fields.key?(field_name)
217
+ Isomorfeus.raise_error(message: "Required #{field_types[field_name]} #{field_name} not given!")
218
+ end
219
+ fields[field_name] = _validate_field(field_name, fields[field_name])
220
+ end
221
+ end
222
+ end
223
+
224
+ def initialize(key: nil, fields: nil, attributes: nil, _loading: false)
225
+ super(key: key)
226
+ _update_paths
227
+ @objects = {}
228
+ @field_types = @self_class.field_types
229
+ loaded = loaded?
230
+ fields = attributes if attributes
231
+ if loaded
232
+ raw_fields = Isomorfeus.store.dig(*@store_path)
233
+ if raw_fields.nil?
234
+ if fields
235
+ _validate_fields(fields)
236
+ @changed_fields = fields
237
+ else
238
+ @changed_fields = {}
239
+ end
240
+ elsif raw_fields && fields && raw_fields != fields
241
+ _validate_fields(fields)
242
+ @changed_fields = fields
243
+ else
244
+ @changed_fields = {}
245
+ end
246
+ else
247
+ fields = {} unless fields
248
+ _validate_fields(fields) unless _loading
249
+ @changed_fields = fields
250
+ end
251
+ end
252
+
253
+ def create
254
+ raise 'Already created!' if revision > 0
255
+ @last_revision = 0
256
+ f = _get_fields
257
+ unchange!
258
+ Isomorfeus.something_loading!
259
+ Isomorfeus.store.deferred_dispatch(type: "DATA_CREATE", class_name: @class_name, key: @key, fields: f, instance_uuid: instance_uuid, revision: 0)
260
+ self
261
+ end
262
+
263
+ def save
264
+ @last_revision = revision
265
+ return create if @last_revision == 0
266
+ f = _get_fields
267
+ unchange!
268
+ Isomorfeus.something_loading!
269
+ Isomorfeus.store.deferred_dispatch(type: "DATA_SAVE", class_name: @class_name, key: @key, fields: f, instance_uuid: instance_uuid, revision: @last_revision)
270
+ self
271
+ end
272
+
273
+ def _update_paths
274
+ @store_path = [:data_state, @class_name, @key, :fields]
275
+ end
276
+
277
+ def _get_object(name)
278
+ return @changed_fields[name] if @changed_fields.key?(name)
279
+ return @objects[name] if @objects.key?(name)
280
+ sid_or_array = Isomorfeus.store.dig(*@store_path)&.fetch(name, nil)
281
+ return nil unless sid_or_array
282
+ if sid_or_array.is_a?(String)
283
+ @objects[name] = @self_class.instance_from_sid_s(sid_or_array)
284
+ elsif sid_or_array.is_a?(Array)
285
+ a = sid_or_array.map do |sid_s|
286
+ @self_class.instance_from_sid_s(sid_s)
287
+ end
288
+ a.compact!
289
+ @objects[name] = a
290
+ end
291
+ @objects[name]
292
+ end
293
+
294
+ def _validate_field(field_name, val)
295
+ @self_class._validate_field(field_name, val)
296
+ end
297
+
298
+ def _validate_fields(fields)
299
+ @self_class._validate_fields(fields)
300
+ end
301
+
302
+ def [](name)
303
+ return key if name == :key
304
+ type = @field_types[name]
305
+ case type
306
+ when :text_field then _get_field(name) || ''
307
+ when :attribute then _get_field(name)
308
+ when :object then _get_object(name)
309
+ else
310
+ raise "No such field '#{name}' declared!"
311
+ end
312
+ end
313
+ alias_method :fetch, :[]
314
+
315
+ def []=(name, val)
316
+ return self.key = name if name == :key
317
+ val = _validate_field(name, val)
318
+ changed!
319
+ @changed_fields[name] = val
320
+ end
321
+ alias_method :store, :[]=
322
+
323
+ def dig(name, *more_names)
324
+ value = self[name]
325
+ if value.respond_to?(:dig)
326
+ value.dig(*more_names) rescue nil
327
+ else
328
+ value
329
+ end
330
+ end
331
+
332
+ def fields
333
+ raw_fields = Isomorfeus.store.dig(*@store_path)
334
+ hash = raw_fields ? raw_fields.dup : {}
335
+ hash.merge!(@changed_fields) if @changed_fields
336
+ hash
337
+ end
338
+
339
+ def _get_fields
340
+ sel_fields = fields.dup
341
+ @self_class.field_types.each do |field, type|
342
+ if type == :object
343
+ v = self[field]
344
+ sel_fields[field] = if v.is_a?(SID)
345
+ v.to_s
346
+ elsif v.is_a?(Array)
347
+ v.map do |o|
348
+ if o.is_a?(SID)
349
+ o.to_s
350
+ elsif o.is_a?(LucidObject)
351
+ o.sid.to_s
352
+ elsif o.is_a?(String)
353
+ o
354
+ end
355
+ end
356
+ elsif v.is_a?(LucidObject)
357
+ v.sid.to_s
358
+ elsif v.is_a?(String)
359
+ v
360
+ end
361
+ end
362
+ end
363
+ sel_fields
364
+ end
365
+
366
+ def unchange!
367
+ @changed_fields = {}
368
+ super
369
+ end
370
+
371
+ def each(&block)
372
+ fields.each(&block)
373
+ end
374
+
375
+ if RUBY_ENGINE == 'opal'
376
+ def _get_field(name)
377
+ return @changed_fields[name] if @changed_fields.key?(name)
378
+ Isomorfeus.store.dig(*@store_path)&.fetch(name) { |n| @self_class.field_conditions[n][:default] }
379
+ end
380
+ else # RUBY_ENGINE
381
+ class << self
382
+ def inherited(base)
383
+ Isomorfeus.add_valid_data_class(base) unless %w[LucidObject LucidUser].include?(base.name)
384
+ end
385
+
386
+ def exist?(key:)
387
+ raise "Not authorized!" unless current_user.authorized?(self, :load, key: key)
388
+ object_accelerator.exist?(sid_s: SID.new(self.name, key).to_s)
389
+ end
390
+
391
+ def exist_by_field?(field:, value:)
392
+ raise "Not authorized!" unless current_user.authorized?(self, :search, { query: :exist_by_field , params: { field: field, value: value }})
393
+ object_accelerator.exist_by_field?(field: field, value: value)
394
+ end
395
+
396
+ def field_by_key(key:, field:)
397
+ sid_s = SID.new(self.name, key).to_s
398
+ object_accelerator.field(sid_s: sid_s, field: field)
399
+ end
400
+
401
+ def object_accelerator
402
+ @object_accelerator ||= Isomorfeus::Data::ObjectAccelerator.new(self)
403
+ end
404
+
405
+ def each(&block)
406
+ if block_given?
407
+ object_accelerator.each do |sid_s|
408
+ sid = SID.from_s(sid_s)
409
+ block.call self.load(key: sid.key)
410
+ end
411
+ else
412
+ Enumerator.new do |yielder|
413
+ object_accelerator.each do |sid_s|
414
+ sid = SID.from_s(sid_s)
415
+ yielder << self.load(key: sid.key)
416
+ end
417
+ end
418
+ end
419
+ end
420
+ alias to_enum each
421
+ end
422
+
423
+ def _get_field(name)
424
+ return @changed_fields[name] if @changed_fields.key?(name)
425
+ if @self_class.field_conditions[name][:server_only]
426
+ return @self_class.object_accelerator.field(sid_s: sid.to_s, field: name)
427
+ end
428
+ Isomorfeus.store.dig(*@store_path)&.fetch(name) { |n| @self_class.field_conditions[n][:default] }
429
+ end
430
+ end # RUBY_ENGINE
431
+ end
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.4
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-05-31 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.4
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.4
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.4
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.4
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.4
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.4
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.4
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.4
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: