cocina-models 0.99.2 → 0.99.3
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 +4 -4
- data/Gemfile.lock +6 -12
- data/cocina-models.gemspec +0 -2
- data/lib/cocina/generator/generator.rb +3 -1
- data/lib/cocina/generator/schema.rb +4 -4
- data/lib/cocina/generator/schema_array.rb +6 -1
- data/lib/cocina/generator/schema_base.rb +1 -1
- data/lib/cocina/generator/vocab.rb +1 -1
- data/lib/cocina/models/version.rb +1 -1
- data/lib/cocina/models.rb +15 -2
- metadata +3 -31
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 7084352ad6644805e589d4326dc33d8fa24bf552e2477388f214a631787a6c1c
|
|
4
|
+
data.tar.gz: 9f79866b2045957d92b106951c56d1b9921c5f73e0c402cace570bfc5b1d1b8b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 10d995ae9c4e178cab0217cda005fd017f94c07f46430e9e0553adbcc58f143602b7cf8c12c180c3d1f571be44f1acb27f045360a3dc0615158c3b794e4b1b5d
|
|
7
|
+
data.tar.gz: 172a116805b32a6ee40a1a14fde6e4f87b95359e59d1ee0604c0205bb33b19e3ff7fe20ce262742803b88e80794055c2aaeaa947767cb10cc6bde6ab8ba03c7c
|
data/Gemfile.lock
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
cocina-models (0.99.
|
|
4
|
+
cocina-models (0.99.3)
|
|
5
5
|
activesupport
|
|
6
|
-
commonmarker (= 2.0.1)
|
|
7
6
|
deprecation
|
|
8
7
|
dry-struct (~> 1.0)
|
|
9
8
|
dry-types (~> 1.1)
|
|
@@ -12,7 +11,6 @@ PATH
|
|
|
12
11
|
i18n
|
|
13
12
|
jsonpath
|
|
14
13
|
nokogiri
|
|
15
|
-
openapi3_parser
|
|
16
14
|
openapi_parser (~> 1.0)
|
|
17
15
|
super_diff
|
|
18
16
|
thor
|
|
@@ -44,8 +42,6 @@ GEM
|
|
|
44
42
|
json_schema (~> 0.14, >= 0.14.3)
|
|
45
43
|
openapi_parser (~> 1.0)
|
|
46
44
|
rack (>= 1.5)
|
|
47
|
-
commonmarker (2.0.1)
|
|
48
|
-
rb_sys (~> 0.9)
|
|
49
45
|
concurrent-ruby (1.3.4)
|
|
50
46
|
connection_pool (2.4.1)
|
|
51
47
|
deprecation (1.1.0)
|
|
@@ -53,14 +49,15 @@ GEM
|
|
|
53
49
|
diff-lcs (1.5.1)
|
|
54
50
|
docile (1.4.1)
|
|
55
51
|
drb (2.2.1)
|
|
56
|
-
dry-core (1.0
|
|
52
|
+
dry-core (1.1.0)
|
|
57
53
|
concurrent-ruby (~> 1.0)
|
|
58
54
|
logger
|
|
59
55
|
zeitwerk (~> 2.6)
|
|
60
|
-
dry-inflector (1.
|
|
61
|
-
dry-logic (1.
|
|
56
|
+
dry-inflector (1.2.0)
|
|
57
|
+
dry-logic (1.6.0)
|
|
58
|
+
bigdecimal
|
|
62
59
|
concurrent-ruby (~> 1.0)
|
|
63
|
-
dry-core (~> 1.
|
|
60
|
+
dry-core (~> 1.1)
|
|
64
61
|
zeitwerk (~> 2.6)
|
|
65
62
|
dry-struct (1.6.0)
|
|
66
63
|
dry-core (~> 1.0, < 2)
|
|
@@ -93,8 +90,6 @@ GEM
|
|
|
93
90
|
nokogiri (1.18.1)
|
|
94
91
|
mini_portile2 (~> 2.8.2)
|
|
95
92
|
racc (~> 1.4)
|
|
96
|
-
openapi3_parser (0.10.0)
|
|
97
|
-
commonmarker (>= 1.0)
|
|
98
93
|
openapi_parser (1.0.0)
|
|
99
94
|
optimist (3.2.0)
|
|
100
95
|
parallel (1.26.3)
|
|
@@ -107,7 +102,6 @@ GEM
|
|
|
107
102
|
rack (3.1.8)
|
|
108
103
|
rainbow (3.1.1)
|
|
109
104
|
rake (13.2.1)
|
|
110
|
-
rb_sys (0.9.105)
|
|
111
105
|
regexp_parser (2.10.0)
|
|
112
106
|
rspec (3.13.0)
|
|
113
107
|
rspec-core (~> 3.13.0)
|
data/cocina-models.gemspec
CHANGED
|
@@ -25,7 +25,6 @@ Gem::Specification.new do |spec|
|
|
|
25
25
|
spec.required_ruby_version = '>= 3.0'
|
|
26
26
|
|
|
27
27
|
spec.add_dependency 'activesupport'
|
|
28
|
-
spec.add_dependency 'commonmarker', '2.0.1' # There is a breaking change in 2.0.2 with openapi3_parser
|
|
29
28
|
spec.add_dependency 'deprecation'
|
|
30
29
|
spec.add_dependency 'dry-struct', '~> 1.0'
|
|
31
30
|
spec.add_dependency 'dry-types', '~> 1.1'
|
|
@@ -34,7 +33,6 @@ Gem::Specification.new do |spec|
|
|
|
34
33
|
spec.add_dependency 'i18n' # for validating BCP 47 language tags, according to RFC 4646
|
|
35
34
|
spec.add_dependency 'jsonpath' # used for date/time validation
|
|
36
35
|
spec.add_dependency 'nokogiri'
|
|
37
|
-
spec.add_dependency 'openapi3_parser' # Parsing openapi doc
|
|
38
36
|
# Match these version requirements to what committee wants,
|
|
39
37
|
# so that our client (non-committee) users have the same dependencies.
|
|
40
38
|
spec.add_dependency 'openapi_parser', '~> 1.0'
|
|
@@ -96,7 +96,9 @@ module Cocina
|
|
|
96
96
|
end
|
|
97
97
|
|
|
98
98
|
def schemas
|
|
99
|
-
@schemas ||=
|
|
99
|
+
@schemas ||= OpenAPIParser.parse(YAML.load_file(options[:openapi]), strict_reference_validation: true)
|
|
100
|
+
.find_object('#/components')
|
|
101
|
+
.schemas
|
|
100
102
|
end
|
|
101
103
|
|
|
102
104
|
def schema_for(schema_name, lite: false)
|
|
@@ -71,7 +71,7 @@ module Cocina
|
|
|
71
71
|
end
|
|
72
72
|
|
|
73
73
|
def validatable?
|
|
74
|
-
!schema_doc.
|
|
74
|
+
!schema_doc.root.paths.path["/validate/#{schema_doc.name}"].nil? && !lite
|
|
75
75
|
end
|
|
76
76
|
|
|
77
77
|
def properties
|
|
@@ -118,13 +118,13 @@ module Cocina
|
|
|
118
118
|
end
|
|
119
119
|
|
|
120
120
|
def schema_properties_for(doc)
|
|
121
|
-
doc.properties.map do |key, properties_doc|
|
|
121
|
+
Array(doc.properties).map do |key, properties_doc|
|
|
122
122
|
clazz = property_class_for(properties_doc)
|
|
123
123
|
clazz.new(properties_doc,
|
|
124
124
|
key: key,
|
|
125
|
-
required: doc.
|
|
125
|
+
required: doc.required&.include?(key),
|
|
126
126
|
relaxed: lite && clazz != SchemaValue,
|
|
127
|
-
nullable: properties_doc.nullable
|
|
127
|
+
nullable: properties_doc.nullable,
|
|
128
128
|
parent: self,
|
|
129
129
|
schemas: schemas)
|
|
130
130
|
end
|
|
@@ -4,12 +4,17 @@ module Cocina
|
|
|
4
4
|
module Generator
|
|
5
5
|
# Class for generating from an openapi array
|
|
6
6
|
class SchemaArray < SchemaBase
|
|
7
|
+
GENERIC_ITEMS_NAME = 'items'
|
|
8
|
+
|
|
7
9
|
def generate
|
|
8
10
|
"attribute :#{name.camelize(:lower)}, Types::Strict::Array.of(#{array_of_type}).default([].freeze)"
|
|
9
11
|
end
|
|
10
12
|
|
|
11
13
|
def array_of_type
|
|
12
|
-
schema_doc.items.name
|
|
14
|
+
items_name = schema_doc.items.name
|
|
15
|
+
return items_name unless items_name == GENERIC_ITEMS_NAME
|
|
16
|
+
|
|
17
|
+
dry_datatype(schema_doc.items)
|
|
13
18
|
end
|
|
14
19
|
end
|
|
15
20
|
end
|
|
@@ -51,7 +51,7 @@ module Cocina
|
|
|
51
51
|
}.freeze
|
|
52
52
|
|
|
53
53
|
def vocabs
|
|
54
|
-
type_properties = schemas.values.map { |schema| schema.properties['type'
|
|
54
|
+
type_properties = schemas.values.map { |schema| schema.properties&.[]('type') }.compact
|
|
55
55
|
type_properties.map(&:enum).flat_map(&:to_a)
|
|
56
56
|
.filter { |vocab| vocab.start_with?(BASE) }
|
|
57
57
|
.uniq
|
data/lib/cocina/models.rb
CHANGED
|
@@ -7,7 +7,6 @@ require 'dry-types'
|
|
|
7
7
|
require 'json'
|
|
8
8
|
require 'yaml'
|
|
9
9
|
require 'openapi_parser'
|
|
10
|
-
require 'openapi3_parser'
|
|
11
10
|
require 'active_support'
|
|
12
11
|
require 'active_support/core_ext'
|
|
13
12
|
require 'thor'
|
|
@@ -40,6 +39,17 @@ loader.ignore("#{__dir__}/rspec.rb")
|
|
|
40
39
|
loader.ignore("#{__dir__}/rspec")
|
|
41
40
|
loader.setup
|
|
42
41
|
|
|
42
|
+
module OpenAPIParser
|
|
43
|
+
module Schemas
|
|
44
|
+
# Patch OpenAPIParser::Schemas::Schema so it can tell us its name, the way Openapi3Parser schemas do.
|
|
45
|
+
class Schema
|
|
46
|
+
def name
|
|
47
|
+
object_reference.split('/').last
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
43
53
|
module Cocina
|
|
44
54
|
# Provides Ruby objects for the repository and serializing them to/from JSON.
|
|
45
55
|
module Models
|
|
@@ -191,7 +201,10 @@ module Cocina
|
|
|
191
201
|
|
|
192
202
|
def self.druid_regex
|
|
193
203
|
@druid_regex ||= begin
|
|
194
|
-
str =
|
|
204
|
+
str = OpenAPIParser.parse(YAML.load_file('openapi.yml'), strict_reference_validation: true)
|
|
205
|
+
.find_object('#/components')
|
|
206
|
+
.schemas['Druid']
|
|
207
|
+
.pattern
|
|
195
208
|
Regexp.new(str)
|
|
196
209
|
end
|
|
197
210
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: cocina-models
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.99.
|
|
4
|
+
version: 0.99.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Justin Coyne
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2025-01-08 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activesupport
|
|
@@ -24,20 +24,6 @@ dependencies:
|
|
|
24
24
|
- - ">="
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
26
|
version: '0'
|
|
27
|
-
- !ruby/object:Gem::Dependency
|
|
28
|
-
name: commonmarker
|
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
|
30
|
-
requirements:
|
|
31
|
-
- - '='
|
|
32
|
-
- !ruby/object:Gem::Version
|
|
33
|
-
version: 2.0.1
|
|
34
|
-
type: :runtime
|
|
35
|
-
prerelease: false
|
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
-
requirements:
|
|
38
|
-
- - '='
|
|
39
|
-
- !ruby/object:Gem::Version
|
|
40
|
-
version: 2.0.1
|
|
41
27
|
- !ruby/object:Gem::Dependency
|
|
42
28
|
name: deprecation
|
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -150,20 +136,6 @@ dependencies:
|
|
|
150
136
|
- - ">="
|
|
151
137
|
- !ruby/object:Gem::Version
|
|
152
138
|
version: '0'
|
|
153
|
-
- !ruby/object:Gem::Dependency
|
|
154
|
-
name: openapi3_parser
|
|
155
|
-
requirement: !ruby/object:Gem::Requirement
|
|
156
|
-
requirements:
|
|
157
|
-
- - ">="
|
|
158
|
-
- !ruby/object:Gem::Version
|
|
159
|
-
version: '0'
|
|
160
|
-
type: :runtime
|
|
161
|
-
prerelease: false
|
|
162
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
163
|
-
requirements:
|
|
164
|
-
- - ">="
|
|
165
|
-
- !ruby/object:Gem::Version
|
|
166
|
-
version: '0'
|
|
167
139
|
- !ruby/object:Gem::Dependency
|
|
168
140
|
name: openapi_parser
|
|
169
141
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -564,7 +536,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
564
536
|
- !ruby/object:Gem::Version
|
|
565
537
|
version: '0'
|
|
566
538
|
requirements: []
|
|
567
|
-
rubygems_version: 3.5.
|
|
539
|
+
rubygems_version: 3.5.22
|
|
568
540
|
signing_key:
|
|
569
541
|
specification_version: 4
|
|
570
542
|
summary: Data models for the SDR
|