ree_lib 1.0.9 → 1.0.12

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.
Files changed (20) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -3
  3. data/lib/ree_lib/packages/ree_json/package/ree_json/functions/from_json.rb +5 -1
  4. data/lib/ree_lib/packages/ree_json/schemas/ree_json/functions/from_json.schema.json +1 -1
  5. data/lib/ree_lib/packages/ree_json/spec/ree_json/functions/from_json_spec.rb +4 -0
  6. data/lib/ree_lib/packages/ree_object/Package.schema.json +8 -0
  7. data/lib/ree_lib/packages/ree_object/package/ree_object/functions/dump_as_json.rb +103 -0
  8. data/lib/ree_lib/packages/ree_object/package/ree_object/functions/load_json_dump.rb +77 -0
  9. data/lib/ree_lib/packages/ree_object/schemas/ree_object/functions/dump_as_json.schema.json +27 -0
  10. data/lib/ree_lib/packages/ree_object/schemas/ree_object/functions/load_json_dump.schema.json +27 -0
  11. data/lib/ree_lib/packages/ree_object/spec/ree_object/functions/dump_as_json_spec.rb +56 -0
  12. data/lib/ree_lib/packages/ree_swagger/package/ree_swagger/dto/endpoint_dto.rb +1 -0
  13. data/lib/ree_lib/packages/ree_swagger/package/ree_swagger/functions/build_endpoint_schema.rb +1 -0
  14. data/lib/ree_lib/packages/ree_swagger/package/ree_swagger/functions/build_request_body_schema.rb +3 -2
  15. data/lib/ree_lib/packages/ree_swagger/package/ree_swagger/functions/build_schema.rb +12 -2
  16. data/lib/ree_lib/packages/ree_swagger/schemas/ree_swagger/functions/build_schema.schema.json +4 -0
  17. data/lib/ree_lib/packages/ree_swagger/spec/functions/build_endpoint_schema_spec.rb +5 -0
  18. data/lib/ree_lib/packages/ree_swagger/spec/functions/build_schema_spec.rb +17 -0
  19. data/lib/ree_lib/version.rb +1 -1
  20. metadata +7 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 756ef68a2b67f69d7b39d4877f51bebef0bf9f16c2d826f75a66fa43784ac779
4
- data.tar.gz: f9668ac762030ae0b4e0d53d9edafd7751396b30e4b1f4ae67188b889aef6360
3
+ metadata.gz: 5642d84c9a164bab7fd9b03ba1e34ab6f50a56001e0d0f5c03bfeb329891c2bf
4
+ data.tar.gz: 1ef62cc8d2db588c1f1b91a7d6899e7e1f96df2039c6fb833a77d6f3af35ee17
5
5
  SHA512:
6
- metadata.gz: 7f0f85267b26e8249d4c8c9d46532717acc53a4378e19e20e5f07e2431b751cee6591ac97677ffc528b651fef7428f868a73e9d87ef44103f94a21b412ff5f6d
7
- data.tar.gz: c31dd2b537126f8590b656002f169fbce184448bedc79d4c0c58b7de769a940e5f780a7d73e70595a68966bafda85a13ef73031da79df69808d3eea5fb224352
6
+ metadata.gz: 81a32a78567d690bbeef04c74d4636bfe7ba3e9096870be936cae4420ce3371bb74f8d237545dd7a73dc543b147a952aeed85eaff180a1ea07222bc4eb3fbb7b
7
+ data.tar.gz: a7e6e807ec71aec8275dd753abb1f491adfc75228051b65059fd1eb55e4816696f0d95e2550be78535fca6e8b5daec4c864eb395a5037619e41715e2ed7d9b8c
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ree_lib (1.0.9)
4
+ ree_lib (1.0.12)
5
5
  binding_of_caller (~> 1.0.0)
6
6
  i18n (~> 1.12.0)
7
7
  loofah (~> 2.18.0)
@@ -36,8 +36,6 @@ GEM
36
36
  crass (~> 1.0.2)
37
37
  nokogiri (>= 1.5.9)
38
38
  msgpack (1.5.4)
39
- nokogiri (1.13.8-x86_64-darwin)
40
- racc (~> 1.4)
41
39
  nokogiri (1.13.8-x86_64-linux)
42
40
  racc (~> 1.4)
43
41
  oj (3.13.20)
@@ -7,6 +7,8 @@ class ReeJson::FromJson
7
7
  }
8
8
  end
9
9
 
10
+ ParseJsonError = Class.new(StandardError)
11
+
10
12
  contract(
11
13
  Any,
12
14
  Kwargs[
@@ -16,7 +18,7 @@ class ReeJson::FromJson
16
18
  symbol_keys?: Bool,
17
19
  RestKeys => Any
18
20
  ] => Hash
19
- ).throws(ArgumentError)
21
+ ).throws(ParseJsonError)
20
22
  def call(object, mode: :rails, **opts)
21
23
  options = DEFAULT_OPTIONS
22
24
  .dup
@@ -25,5 +27,7 @@ class ReeJson::FromJson
25
27
  )
26
28
 
27
29
  Oj.load(object, options)
30
+ rescue ArgumentError, EncodingError
31
+ raise ParseJsonError.new
28
32
  end
29
33
  end
@@ -10,7 +10,7 @@
10
10
  {
11
11
  "doc": "",
12
12
  "throws": [
13
- "ArgumentError"
13
+ "ReeJson::FromJson::ParseJsonError"
14
14
  ],
15
15
  "return": "Hash",
16
16
  "args": [
@@ -11,4 +11,8 @@ RSpec.describe :from_json do
11
11
  result = from_json("{\":id\":{\"^o\":\"Object\"}}", mode: :object)
12
12
  expect(result[:id]).to be_a(Object)
13
13
  }
14
+
15
+ it {
16
+ expect{from_json("{213: \"123\"}")}.to raise_error(ReeJson::FromJson::ParseJsonError)
17
+ }
14
18
  end
@@ -27,10 +27,18 @@
27
27
  "name": "deep_freeze",
28
28
  "schema": "packages/ree_object/schemas/ree_object/functions/deep_freeze.schema.json"
29
29
  },
30
+ {
31
+ "name": "dump_as_json",
32
+ "schema": "packages/ree_object/schemas/ree_object/functions/dump_as_json.schema.json"
33
+ },
30
34
  {
31
35
  "name": "is_blank",
32
36
  "schema": "packages/ree_object/schemas/ree_object/functions/is_blank.schema.json"
33
37
  },
38
+ {
39
+ "name": "load_json_dump",
40
+ "schema": "packages/ree_object/schemas/ree_object/functions/load_json_dump.schema.json"
41
+ },
34
42
  {
35
43
  "name": "not_blank",
36
44
  "schema": "packages/ree_object/schemas/ree_object/functions/not_blank.schema.json"
@@ -0,0 +1,103 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'set'
4
+
5
+ class ReeObject::DumpAsJson
6
+ include Ree::FnDSL
7
+
8
+ fn :dump_as_json do
9
+ def_error { RecursiveObjectErr }
10
+ end
11
+
12
+ ARRAY = 'array'
13
+ HASH = 'hash'
14
+ PRIMITIVE = 'primitive'
15
+ OBJECT = 'object'
16
+
17
+ BASIC_TYPES = [
18
+ Date, Time, Numeric, String, FalseClass, TrueClass, NilClass, Symbol,
19
+ Module, Class
20
+ ].freeze
21
+
22
+ contract(
23
+ Any => Or[Hash, ArrayOf[Any], *BASIC_TYPES]
24
+ ).throws(RecursiveObjectErr)
25
+ def call(obj)
26
+ recursively_convert(obj, {})
27
+ end
28
+
29
+ private
30
+
31
+ def recursively_convert(obj, cache)
32
+ ancestors = obj.class.ancestors
33
+
34
+ if ancestors.intersection(BASIC_TYPES).size > 0
35
+ {
36
+ 'type' => PRIMITIVE,
37
+ 'class' => obj.class.name,
38
+ 'value' => dump_primitive(obj)
39
+ }
40
+ elsif obj.is_a?(Array)
41
+ {
42
+ 'type' => ARRAY,
43
+ 'class' => obj.class,
44
+ 'value' => obj.map { recursively_convert(_1, cache) }
45
+ }
46
+ elsif obj.is_a?(Hash)
47
+ {
48
+ 'type' => HASH,
49
+ 'class' => obj.class,
50
+ 'value' => convert_hash(obj, cache)
51
+ }
52
+ elsif obj.is_a?(Proc)
53
+ raise ArgumentError, "procs are not supported"
54
+ else
55
+ {
56
+ 'type' => OBJECT,
57
+ 'class' => obj.class.name || (raise ArgumentError.new("anonymous classes are not supported")),
58
+ 'value' => convert_object(obj, cache)
59
+ }
60
+ end
61
+ end
62
+
63
+ PRIMITIVE_SET = Set.new([Symbol, Date, Time, DateTime, Module, Class])
64
+
65
+ def dump_primitive(val)
66
+ if PRIMITIVE_SET.include?(val.class)
67
+ val.to_s
68
+ else
69
+ val
70
+ end
71
+ end
72
+
73
+ def convert_hash(obj, cache)
74
+ result = []
75
+
76
+ obj.each do |k, v|
77
+ result << [
78
+ recursively_convert(k, cache),
79
+ recursively_convert(v, cache),
80
+ ]
81
+ end
82
+
83
+ result
84
+ end
85
+
86
+ def convert_object(obj, cache)
87
+ if cache.key?(obj.object_id)
88
+ raise RecursiveObjectErr, "Recursive object found: #{obj}"
89
+ end
90
+
91
+ cache[obj.object_id] = true
92
+ result = []
93
+
94
+ obj.instance_variables.each do |var|
95
+ result << [
96
+ recursively_convert(var, cache),
97
+ recursively_convert(obj.instance_variable_get(var), cache),
98
+ ]
99
+ end
100
+
101
+ result
102
+ end
103
+ end
@@ -0,0 +1,77 @@
1
+ # frozen_string_literal: true
2
+
3
+ class ReeObject::LoadJsonDump
4
+ include Ree::FnDSL
5
+
6
+ fn :load_json_dump
7
+
8
+ ARRAY = 'array'
9
+ HASH = 'hash'
10
+ PRIMITIVE = 'primitive'
11
+ OBJECT = 'object'
12
+
13
+ contract(Hash => Any)
14
+ def call(dump)
15
+ recursively_load(dump)
16
+ end
17
+
18
+ private
19
+
20
+ def recursively_load(dump)
21
+ case dump['type']
22
+ when ARRAY
23
+ dump['value'].map { recursively_load(_1)}
24
+ when HASH
25
+ result = {}
26
+
27
+ dump['value'].map do |v|
28
+ result[recursively_load(v[0])] = recursively_load(v[1])
29
+ end
30
+
31
+ result
32
+ when PRIMITIVE
33
+ load_primitive(dump['class'], dump['value'])
34
+ when OBJECT
35
+ load_object(dump['class'], dump['value'])
36
+ else
37
+ raise NotImplementedError, "unsupported type provider '#{dump['type']}'"
38
+ end
39
+ end
40
+
41
+ private
42
+
43
+ def load_primitive(class_str, val)
44
+ if class_str == 'Class' || class_str == 'Module'
45
+ return Object.const_get(val)
46
+ end
47
+
48
+ klass = Object.const_get(class_str)
49
+
50
+ if klass == Symbol
51
+ val.to_sym
52
+ elsif klass == Date
53
+ Date.parse(val)
54
+ elsif klass == Time
55
+ Time.parse(val)
56
+ elsif klass == DateTime
57
+ DateTime.parse(val)
58
+ elsif klass == Module || klass == Class
59
+ klass
60
+ else
61
+ val
62
+ end
63
+ end
64
+
65
+ def load_object(class_str, val)
66
+ klass = Object.const_get(class_str)
67
+ obj = klass.allocate
68
+
69
+ val.each do |v|
70
+ var = recursively_load(v[0])
71
+ value = recursively_load(v[1])
72
+ obj.instance_variable_set(var, value)
73
+ end
74
+
75
+ obj
76
+ end
77
+ end
@@ -0,0 +1,27 @@
1
+ {
2
+ "schema_type": "object",
3
+ "schema_version": "1.0",
4
+ "name": "dump_as_json",
5
+ "path": "packages/ree_object/package/ree_object/functions/dump_as_json.rb",
6
+ "mount_as": "fn",
7
+ "class": "ReeObject::DumpAsJson",
8
+ "factory": null,
9
+ "methods": [
10
+ {
11
+ "doc": "",
12
+ "throws": [
13
+ "ReeObject::DumpAsJson::RecursiveObjectErr"
14
+ ],
15
+ "return": "Or[Hash, ArrayOf[Any], Date, Time, Numeric, String, FalseClass, TrueClass, NilClass, Symbol, Module, Class]",
16
+ "args": [
17
+ {
18
+ "arg": "obj",
19
+ "type": "Any"
20
+ }
21
+ ]
22
+ }
23
+ ],
24
+ "links": [
25
+
26
+ ]
27
+ }
@@ -0,0 +1,27 @@
1
+ {
2
+ "schema_type": "object",
3
+ "schema_version": "1.0",
4
+ "name": "load_json_dump",
5
+ "path": "packages/ree_object/package/ree_object/functions/load_json_dump.rb",
6
+ "mount_as": "fn",
7
+ "class": "ReeObject::LoadJsonDump",
8
+ "factory": null,
9
+ "methods": [
10
+ {
11
+ "doc": "",
12
+ "throws": [
13
+
14
+ ],
15
+ "return": "Any",
16
+ "args": [
17
+ {
18
+ "arg": "dump",
19
+ "type": "Hash"
20
+ }
21
+ ]
22
+ }
23
+ ],
24
+ "links": [
25
+
26
+ ]
27
+ }
@@ -0,0 +1,56 @@
1
+ # frozen_string_literal = true
2
+
3
+ RSpec.describe :dump_as_json do
4
+ link :dump_as_json, from: :ree_object
5
+ link :load_json_dump, from: :ree_object
6
+
7
+ let(:klass) {
8
+ class TestObjCLass
9
+ attr_reader :integer, :string, :array, :hash, :object, :klass, :module
10
+
11
+ def initialize
12
+ @integer = 1
13
+ @string = 'string'
14
+ @array = [1, 'string', 3, { 'name' => 'John'}]
15
+
16
+ @hash = {
17
+ id: 1,
18
+ 'test' => 2,
19
+ nested: {
20
+ some_value: 1,
21
+ another_value: 2
22
+ },
23
+ name: 'name'
24
+ }
25
+
26
+ @object = Object.new
27
+ @klass = Object
28
+ @module = Module
29
+
30
+ @object.instance_exec do
31
+ @name = 'John'
32
+ @last_name = 'Doe'
33
+ end
34
+ end
35
+ end
36
+
37
+ TestObjCLass
38
+ }
39
+
40
+ context "object" do
41
+ it {
42
+ orig_obj = klass.new
43
+ result = dump_as_json([orig_obj])
44
+ obj = load_json_dump(result).first
45
+
46
+ expect(obj.integer).to eq(orig_obj.integer)
47
+ expect(obj.string).to eq(orig_obj.string)
48
+ expect(obj.array).to eq(orig_obj.array)
49
+ expect(obj.hash).to eq(orig_obj.hash)
50
+ expect(obj.klass).to eq(orig_obj.klass)
51
+ expect(obj.module).to eq(orig_obj.module)
52
+ expect(obj.object.instance_variable_get(:@name)).to eq(orig_obj.object.instance_variable_get(:@name))
53
+ expect(obj.object.instance_variable_get(:@last_name)).to eq(orig_obj.object.instance_variable_get(:@last_name))
54
+ }
55
+ end
56
+ end
@@ -13,6 +13,7 @@ class ReeSwagger::EndpointDto
13
13
  path: String,
14
14
  caster: Nilor[ReeMapper::Mapper],
15
15
  serializer: Nilor[ReeMapper::Mapper],
16
+ authenticate: Bool,
16
17
  summary: Nilor[String],
17
18
  description: Nilor[String],
18
19
  response_status: Integer,
@@ -112,6 +112,7 @@ class ReeSwagger::BuildEndpointSchema
112
112
 
113
113
  method_schema[:parameters] = parameters if parameters
114
114
  method_schema[:requestBody] = request_body if request_body
115
+ method_schema[:security] = [{ ApiKeyAuth: [] }] if endpoint.authenticate
115
116
 
116
117
  schema = {endpoint.method => method_schema}
117
118
 
@@ -38,10 +38,11 @@ class ReeSwagger::BuildRequestBodySchema
38
38
 
39
39
  return if properties.empty?
40
40
 
41
- {
41
+ obj = {
42
42
  type: 'object',
43
43
  properties: properties,
44
- required: required_fields
45
44
  }
45
+ obj[:required] = required_fields if required_fields.size != 0
46
+ obj
46
47
  end
47
48
  end
@@ -8,8 +8,8 @@ class ReeSwagger::BuildSchema
8
8
  link 'ree_swagger/dto/endpoint_dto', -> { EndpointDto }
9
9
  end
10
10
 
11
- contract(String, String, String, ArrayOf[EndpointDto] => Hash)
12
- def call(title:, description:, version:, endpoints:)
11
+ contract(String, String, String, String, ArrayOf[EndpointDto] => Hash)
12
+ def call(title:, description:, version:, api_url:, endpoints:)
13
13
  {
14
14
  openapi: "3.0.0",
15
15
  info: {
@@ -17,6 +17,16 @@ class ReeSwagger::BuildSchema
17
17
  description: description,
18
18
  version: version
19
19
  },
20
+ components: {
21
+ securitySchemes: {
22
+ ApiKeyAuth: {
23
+ type: 'apiKey',
24
+ in: 'header',
25
+ name: 'Authorization'
26
+ }
27
+ }
28
+ },
29
+ servers: [{ url: api_url }],
20
30
  paths: endpoints.each_with_object(Hash.new { _1[_2] = {} }) {
21
31
  path_dto = build_endpoint_schema(_1)
22
32
  _2[path_dto.path].merge!(path_dto.schema)
@@ -26,6 +26,10 @@
26
26
  "arg": "version",
27
27
  "type": "String"
28
28
  },
29
+ {
30
+ "arg": "api_url",
31
+ "type": "String"
32
+ },
29
33
  {
30
34
  "arg": "endpoints",
31
35
  "type": "ArrayOf[ReeSwagger::EndpointDto]"
@@ -71,6 +71,7 @@ RSpec.describe :build_endpoint_schema do
71
71
  schema = build_endpoint_schema(ReeSwagger::EndpointDto.new(
72
72
  method: :post,
73
73
  respond_to: :json,
74
+ authenticate: false,
74
75
  path: '/versions/:id',
75
76
  sections: ["versions"],
76
77
  caster: caster,
@@ -97,6 +98,7 @@ RSpec.describe :build_endpoint_schema do
97
98
  csv_schema = build_endpoint_schema(ReeSwagger::EndpointDto.new(
98
99
  method: :get,
99
100
  respond_to: :csv,
101
+ authenticate: false,
100
102
  path: '/files/:id',
101
103
  sections: ["files"],
102
104
  caster: file_caster,
@@ -226,6 +228,7 @@ RSpec.describe :build_endpoint_schema do
226
228
  path: '/versions/:id',
227
229
  caster: caster,
228
230
  respond_to: :json,
231
+ authenticate: false,
229
232
  serializer: nil,
230
233
  response_status: 200,
231
234
  description: nil,
@@ -288,6 +291,7 @@ RSpec.describe :build_endpoint_schema do
288
291
  method: :get,
289
292
  path: '/versions/:id',
290
293
  respond_to: :json,
294
+ authenticate: false,
291
295
  caster: nil,
292
296
  serializer: nil,
293
297
  response_status: 200,
@@ -311,6 +315,7 @@ RSpec.describe :build_endpoint_schema do
311
315
  method: :get,
312
316
  path: '/versions/:id',
313
317
  respond_to: :json,
318
+ authenticate: false,
314
319
  caster: caster,
315
320
  serializer: nil,
316
321
  response_status: 200,
@@ -6,8 +6,10 @@ RSpec.describe :build_schema do
6
6
  title: 'Sample API',
7
7
  description: 'Sample API description',
8
8
  version: '0.0.1',
9
+ api_url: 'https://some-api.com/api/v1',
9
10
  endpoints: [ReeSwagger::EndpointDto.new(
10
11
  method: :get,
12
+ authenticate: true,
11
13
  path: '/version',
12
14
  respond_to: :json,
13
15
  caster: nil,
@@ -27,9 +29,24 @@ RSpec.describe :build_schema do
27
29
  description: 'Sample API description',
28
30
  version: '0.0.1'
29
31
  },
32
+ components: {
33
+ securitySchemes: {
34
+ ApiKeyAuth: {
35
+ in: "header",
36
+ name: "Authorization",
37
+ type: "apiKey",
38
+ }
39
+ }
40
+ },
41
+ servers: [
42
+ { url: 'https://some-api.com/api/v1' }
43
+ ],
30
44
  paths: {
31
45
  '/version' => {
32
46
  get: {
47
+ security: [
48
+ {ApiKeyAuth: []}
49
+ ],
33
50
  responses: {
34
51
  200 => {
35
52
  description: ''
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ReeLib
4
- VERSION = "1.0.9"
4
+ VERSION = "1.0.12"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ree_lib
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.9
4
+ version: 1.0.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ruslan Gatiyatov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-08-16 00:00:00.000000000 Z
11
+ date: 2022-08-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ree
@@ -1035,13 +1035,17 @@ files:
1035
1035
  - lib/ree_lib/packages/ree_object/package/ree_object/functions/as_json.rb
1036
1036
  - lib/ree_lib/packages/ree_object/package/ree_object/functions/deep_dup.rb
1037
1037
  - lib/ree_lib/packages/ree_object/package/ree_object/functions/deep_freeze.rb
1038
+ - lib/ree_lib/packages/ree_object/package/ree_object/functions/dump_as_json.rb
1038
1039
  - lib/ree_lib/packages/ree_object/package/ree_object/functions/is_blank.rb
1040
+ - lib/ree_lib/packages/ree_object/package/ree_object/functions/load_json_dump.rb
1039
1041
  - lib/ree_lib/packages/ree_object/package/ree_object/functions/not_blank.rb
1040
1042
  - lib/ree_lib/packages/ree_object/package/ree_object/functions/to_obj.rb
1041
1043
  - lib/ree_lib/packages/ree_object/schemas/ree_object/functions/as_json.schema.json
1042
1044
  - lib/ree_lib/packages/ree_object/schemas/ree_object/functions/deep_dup.schema.json
1043
1045
  - lib/ree_lib/packages/ree_object/schemas/ree_object/functions/deep_freeze.schema.json
1046
+ - lib/ree_lib/packages/ree_object/schemas/ree_object/functions/dump_as_json.schema.json
1044
1047
  - lib/ree_lib/packages/ree_object/schemas/ree_object/functions/is_blank.schema.json
1048
+ - lib/ree_lib/packages/ree_object/schemas/ree_object/functions/load_json_dump.schema.json
1045
1049
  - lib/ree_lib/packages/ree_object/schemas/ree_object/functions/not_blank.schema.json
1046
1050
  - lib/ree_lib/packages/ree_object/schemas/ree_object/functions/to_hash.schema.json
1047
1051
  - lib/ree_lib/packages/ree_object/schemas/ree_object/functions/to_obj.schema.json
@@ -1049,6 +1053,7 @@ files:
1049
1053
  - lib/ree_lib/packages/ree_object/spec/ree_object/functions/as_json_spec.rb
1050
1054
  - lib/ree_lib/packages/ree_object/spec/ree_object/functions/deep_dup_spec.rb
1051
1055
  - lib/ree_lib/packages/ree_object/spec/ree_object/functions/deep_freeze_spec.rb
1056
+ - lib/ree_lib/packages/ree_object/spec/ree_object/functions/dump_as_json_spec.rb
1052
1057
  - lib/ree_lib/packages/ree_object/spec/ree_object/functions/is_blank_spec.rb
1053
1058
  - lib/ree_lib/packages/ree_object/spec/ree_object/functions/not_blank_spec.rb
1054
1059
  - lib/ree_lib/packages/ree_object/spec/ree_object/functions/to_obj_spec.rb