konstruo 1.0.0
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 +7 -0
- data/.rspec +3 -0
- data/.rubocop.yml +22 -0
- data/.tool-versions +1 -0
- data/CHANGELOG.md +21 -0
- data/LICENSE.txt +21 -0
- data/README.md +35 -0
- data/Rakefile +10 -0
- data/lib/konstruo/mapper.rb +120 -0
- data/lib/konstruo/version.rb +6 -0
- data/lib/konstruo.rb +18 -0
- data/sorbet/config +4 -0
- data/sorbet/rbi/annotations/.gitattributes +1 -0
- data/sorbet/rbi/annotations/actionmailer.rbi +10 -0
- data/sorbet/rbi/annotations/actionpack.rbi +430 -0
- data/sorbet/rbi/annotations/actionview.rbi +75 -0
- data/sorbet/rbi/annotations/activejob.rbi +44 -0
- data/sorbet/rbi/annotations/activemodel.rbi +89 -0
- data/sorbet/rbi/annotations/activerecord.rbi +92 -0
- data/sorbet/rbi/annotations/activesupport.rbi +454 -0
- data/sorbet/rbi/annotations/globalid.rbi +30 -0
- data/sorbet/rbi/annotations/minitest.rbi +119 -0
- data/sorbet/rbi/annotations/railties.rbi +61 -0
- data/sorbet/rbi/annotations/rainbow.rbi +269 -0
- data/sorbet/rbi/dsl/.gitattributes +1 -0
- data/sorbet/rbi/dsl/active_support/callbacks.rbi +23 -0
- data/sorbet/rbi/gems/.gitattributes +1 -0
- data/sorbet/rbi/gems/actioncable@7.2.1.rbi +3096 -0
- data/sorbet/rbi/gems/actionmailbox@7.2.1.rbi +1832 -0
- data/sorbet/rbi/gems/actionmailer@7.2.1.rbi +2664 -0
- data/sorbet/rbi/gems/actionpack@7.2.1.rbi +20536 -0
- data/sorbet/rbi/gems/actiontext@7.2.1.rbi +1697 -0
- data/sorbet/rbi/gems/actionview@7.2.1.rbi +15752 -0
- data/sorbet/rbi/gems/activejob@7.2.1.rbi +2828 -0
- data/sorbet/rbi/gems/activemodel@7.2.1.rbi +6762 -0
- data/sorbet/rbi/gems/activerecord@7.2.1.rbi +41433 -0
- data/sorbet/rbi/gems/activestorage@7.2.1.rbi +3247 -0
- data/sorbet/rbi/gems/activesupport@7.2.1.rbi +21142 -0
- data/sorbet/rbi/gems/ast@2.4.2.rbi +585 -0
- data/sorbet/rbi/gems/base64@0.2.0.rbi +509 -0
- data/sorbet/rbi/gems/bigdecimal@3.1.8.rbi +78 -0
- data/sorbet/rbi/gems/builder@3.3.0.rbi +9 -0
- data/sorbet/rbi/gems/concurrent-ruby@1.3.4.rbi +11645 -0
- data/sorbet/rbi/gems/connection_pool@2.4.1.rbi +9 -0
- data/sorbet/rbi/gems/crass@1.0.6.rbi +623 -0
- data/sorbet/rbi/gems/dashbrains-rubocop-config@1.0.4.rbi +9 -0
- data/sorbet/rbi/gems/date@3.3.4.rbi +75 -0
- data/sorbet/rbi/gems/diff-lcs@1.5.1.rbi +1131 -0
- data/sorbet/rbi/gems/drb@2.2.1.rbi +1347 -0
- data/sorbet/rbi/gems/erubi@1.13.0.rbi +150 -0
- data/sorbet/rbi/gems/globalid@1.2.1.rbi +749 -0
- data/sorbet/rbi/gems/i18n@1.14.5.rbi +2359 -0
- data/sorbet/rbi/gems/io-console@0.7.2.rbi +9 -0
- data/sorbet/rbi/gems/json@2.7.2.rbi +1562 -0
- data/sorbet/rbi/gems/language_server-protocol@3.17.0.3.rbi +14238 -0
- data/sorbet/rbi/gems/logger@1.6.1.rbi +920 -0
- data/sorbet/rbi/gems/loofah@2.22.0.rbi +1081 -0
- data/sorbet/rbi/gems/mail@2.8.1.rbi +8658 -0
- data/sorbet/rbi/gems/marcel@1.0.4.rbi +239 -0
- data/sorbet/rbi/gems/mini_mime@1.1.5.rbi +173 -0
- data/sorbet/rbi/gems/minitest@5.25.1.rbi +1546 -0
- data/sorbet/rbi/gems/net-imap@0.4.16.rbi +10845 -0
- data/sorbet/rbi/gems/net-pop@0.1.2.rbi +927 -0
- data/sorbet/rbi/gems/net-protocol@0.2.2.rbi +292 -0
- data/sorbet/rbi/gems/net-smtp@0.5.0.rbi +1228 -0
- data/sorbet/rbi/gems/netrc@0.11.0.rbi +159 -0
- data/sorbet/rbi/gems/nio4r@2.7.3.rbi +293 -0
- data/sorbet/rbi/gems/nokogiri@1.16.7.rbi +7311 -0
- data/sorbet/rbi/gems/parallel@1.26.3.rbi +291 -0
- data/sorbet/rbi/gems/parser@3.3.5.0.rbi +5519 -0
- data/sorbet/rbi/gems/prism@1.0.0.rbi +35493 -0
- data/sorbet/rbi/gems/psych@5.1.2.rbi +1769 -0
- data/sorbet/rbi/gems/racc@1.8.1.rbi +162 -0
- data/sorbet/rbi/gems/rack-session@2.0.0.rbi +727 -0
- data/sorbet/rbi/gems/rack-test@2.1.0.rbi +747 -0
- data/sorbet/rbi/gems/rack@3.1.7.rbi +4902 -0
- data/sorbet/rbi/gems/rackup@2.1.0.rbi +390 -0
- data/sorbet/rbi/gems/rails-dom-testing@2.2.0.rbi +758 -0
- data/sorbet/rbi/gems/rails-html-sanitizer@1.6.0.rbi +785 -0
- data/sorbet/rbi/gems/rails@7.2.1.rbi +9 -0
- data/sorbet/rbi/gems/railties@7.2.1.rbi +3824 -0
- data/sorbet/rbi/gems/rainbow@3.1.1.rbi +403 -0
- data/sorbet/rbi/gems/rake@13.2.1.rbi +3046 -0
- data/sorbet/rbi/gems/rbi@0.2.0.rbi +4105 -0
- data/sorbet/rbi/gems/rdoc@6.7.0.rbi +12721 -0
- data/sorbet/rbi/gems/regexp_parser@2.9.2.rbi +3772 -0
- data/sorbet/rbi/gems/reline@0.5.10.rbi +9 -0
- data/sorbet/rbi/gems/rspec-core@3.13.1.rbi +11012 -0
- data/sorbet/rbi/gems/rspec-expectations@3.13.3.rbi +8183 -0
- data/sorbet/rbi/gems/rspec-mocks@3.13.1.rbi +5341 -0
- data/sorbet/rbi/gems/rspec-support@3.13.1.rbi +1630 -0
- data/sorbet/rbi/gems/rspec@3.13.0.rbi +83 -0
- data/sorbet/rbi/gems/rubocop-ast@1.32.3.rbi +7446 -0
- data/sorbet/rbi/gems/rubocop-capybara@2.21.0.rbi +9 -0
- data/sorbet/rbi/gems/rubocop-factory_bot@2.26.1.rbi +9 -0
- data/sorbet/rbi/gems/rubocop-graphql@1.5.4.rbi +9 -0
- data/sorbet/rbi/gems/rubocop-minitest@0.36.0.rbi +9 -0
- data/sorbet/rbi/gems/rubocop-performance@1.21.1.rbi +9 -0
- data/sorbet/rbi/gems/rubocop-rails@2.26.1.rbi +9 -0
- data/sorbet/rbi/gems/rubocop-rake@0.6.0.rbi +329 -0
- data/sorbet/rbi/gems/rubocop-rspec@3.0.5.rbi +9 -0
- data/sorbet/rbi/gems/rubocop-rspec_rails@2.30.0.rbi +9 -0
- data/sorbet/rbi/gems/rubocop-sorbet@0.8.5.rbi +9 -0
- data/sorbet/rbi/gems/rubocop@1.66.1.rbi +58268 -0
- data/sorbet/rbi/gems/ruby-progressbar@1.13.0.rbi +1318 -0
- data/sorbet/rbi/gems/securerandom@0.3.1.rbi +396 -0
- data/sorbet/rbi/gems/spoom@1.4.2.rbi +4932 -0
- data/sorbet/rbi/gems/stringio@3.1.1.rbi +9 -0
- data/sorbet/rbi/gems/tapioca@0.16.2.rbi +3581 -0
- data/sorbet/rbi/gems/thor@1.3.2.rbi +4378 -0
- data/sorbet/rbi/gems/timeout@0.4.1.rbi +149 -0
- data/sorbet/rbi/gems/tzinfo@2.0.6.rbi +5918 -0
- data/sorbet/rbi/gems/unicode-display_width@2.5.0.rbi +66 -0
- data/sorbet/rbi/gems/useragent@0.16.10.rbi +9 -0
- data/sorbet/rbi/gems/webrick@1.8.1.rbi +2607 -0
- data/sorbet/rbi/gems/websocket-driver@0.7.6.rbi +993 -0
- data/sorbet/rbi/gems/websocket-extensions@0.1.5.rbi +121 -0
- data/sorbet/rbi/gems/yard-sorbet@0.9.0.rbi +435 -0
- data/sorbet/rbi/gems/yard@0.9.37.rbi +18570 -0
- data/sorbet/rbi/gems/zeitwerk@2.6.18.rbi +1051 -0
- data/sorbet/rbi/todo.rbi +6 -0
- data/sorbet/tapioca/config.yml +13 -0
- data/sorbet/tapioca/require.rb +9 -0
- data/tasks/bundle_update.rake +14 -0
- data/tasks/sorbet.rake +26 -0
- metadata +216 -0
@@ -0,0 +1,749 @@
|
|
1
|
+
# typed: true
|
2
|
+
|
3
|
+
# DO NOT EDIT MANUALLY
|
4
|
+
# This is an autogenerated file for types exported from the `globalid` gem.
|
5
|
+
# Please instead update this file by running `bin/tapioca gem globalid`.
|
6
|
+
|
7
|
+
|
8
|
+
# source://globalid//lib/global_id/global_id.rb#7
|
9
|
+
class GlobalID
|
10
|
+
extend ::ActiveSupport::Autoload
|
11
|
+
|
12
|
+
# @return [GlobalID] a new instance of GlobalID
|
13
|
+
#
|
14
|
+
# source://globalid//lib/global_id/global_id.rb#44
|
15
|
+
def initialize(gid, options = T.unsafe(nil)); end
|
16
|
+
|
17
|
+
# source://globalid//lib/global_id/global_id.rb#63
|
18
|
+
def ==(other); end
|
19
|
+
|
20
|
+
# source://globalid//lib/global_id/global_id.rb#42
|
21
|
+
def app(*_arg0, **_arg1, &_arg2); end
|
22
|
+
|
23
|
+
# source://globalid//lib/global_id/global_id.rb#76
|
24
|
+
def as_json(*_arg0); end
|
25
|
+
|
26
|
+
# source://globalid//lib/global_id/global_id.rb#42
|
27
|
+
def deconstruct_keys(*_arg0, **_arg1, &_arg2); end
|
28
|
+
|
29
|
+
# source://globalid//lib/global_id/global_id.rb#63
|
30
|
+
def eql?(other); end
|
31
|
+
|
32
|
+
# source://globalid//lib/global_id/global_id.rb#48
|
33
|
+
def find(options = T.unsafe(nil)); end
|
34
|
+
|
35
|
+
# source://globalid//lib/global_id/global_id.rb#68
|
36
|
+
def hash; end
|
37
|
+
|
38
|
+
# source://globalid//lib/global_id/global_id.rb#52
|
39
|
+
def model_class; end
|
40
|
+
|
41
|
+
# source://globalid//lib/global_id/global_id.rb#42
|
42
|
+
def model_id(*_arg0, **_arg1, &_arg2); end
|
43
|
+
|
44
|
+
# source://globalid//lib/global_id/global_id.rb#42
|
45
|
+
def model_name(*_arg0, **_arg1, &_arg2); end
|
46
|
+
|
47
|
+
# source://globalid//lib/global_id/global_id.rb#42
|
48
|
+
def params(*_arg0, **_arg1, &_arg2); end
|
49
|
+
|
50
|
+
# source://globalid//lib/global_id/global_id.rb#72
|
51
|
+
def to_param; end
|
52
|
+
|
53
|
+
# source://globalid//lib/global_id/global_id.rb#42
|
54
|
+
def to_s(*_arg0, **_arg1, &_arg2); end
|
55
|
+
|
56
|
+
# Returns the value of attribute uri.
|
57
|
+
#
|
58
|
+
# source://globalid//lib/global_id/global_id.rb#41
|
59
|
+
def uri; end
|
60
|
+
|
61
|
+
class << self
|
62
|
+
# Returns the value of attribute app.
|
63
|
+
#
|
64
|
+
# source://globalid//lib/global_id/global_id.rb#9
|
65
|
+
def app; end
|
66
|
+
|
67
|
+
# source://globalid//lib/global_id/global_id.rb#31
|
68
|
+
def app=(app); end
|
69
|
+
|
70
|
+
# source://globalid//lib/global_id/global_id.rb#11
|
71
|
+
def create(model, options = T.unsafe(nil)); end
|
72
|
+
|
73
|
+
# source://globalid//lib/global_id.rb#20
|
74
|
+
def deprecator; end
|
75
|
+
|
76
|
+
# source://globalid//lib/global_id.rb#15
|
77
|
+
def eager_load!; end
|
78
|
+
|
79
|
+
# source://globalid//lib/global_id/global_id.rb#21
|
80
|
+
def find(gid, options = T.unsafe(nil)); end
|
81
|
+
|
82
|
+
# source://globalid//lib/global_id/global_id.rb#25
|
83
|
+
def parse(gid, options = T.unsafe(nil)); end
|
84
|
+
|
85
|
+
private
|
86
|
+
|
87
|
+
# source://globalid//lib/global_id/global_id.rb#36
|
88
|
+
def parse_encoded_gid(gid, options); end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
# Mix `GlobalID::Identification` into any model with a `#find(id)` class
|
93
|
+
# method. Support is automatically included in Active Record.
|
94
|
+
#
|
95
|
+
# class Person
|
96
|
+
# include ActiveModel::Model
|
97
|
+
# include GlobalID::Identification
|
98
|
+
#
|
99
|
+
# attr_accessor :id
|
100
|
+
#
|
101
|
+
# def self.find(id)
|
102
|
+
# new id: id
|
103
|
+
# end
|
104
|
+
#
|
105
|
+
# def ==(other)
|
106
|
+
# id == other.try(:id)
|
107
|
+
# end
|
108
|
+
# end
|
109
|
+
#
|
110
|
+
# person_gid = Person.find(1).to_global_id
|
111
|
+
# # => #<GlobalID ...
|
112
|
+
# person_gid.uri
|
113
|
+
# # => #<URI ...
|
114
|
+
# person_gid.to_s
|
115
|
+
# # => "gid://app/Person/1"
|
116
|
+
# GlobalID::Locator.locate person_gid
|
117
|
+
# # => #<Person:0x007fae94bf6298 @id="1">
|
118
|
+
#
|
119
|
+
# source://globalid//lib/global_id/identification.rb#28
|
120
|
+
module GlobalID::Identification
|
121
|
+
# Returns the Global ID of the model.
|
122
|
+
#
|
123
|
+
# model = Person.new id: 1
|
124
|
+
# global_id = model.to_global_id
|
125
|
+
# global_id.modal_class # => Person
|
126
|
+
# global_id.modal_id # => "1"
|
127
|
+
# global_id.to_param # => "Z2lkOi8vYm9yZGZvbGlvL1BlcnNvbi8x"
|
128
|
+
#
|
129
|
+
# source://globalid//lib/global_id/identification.rb#37
|
130
|
+
def to_gid(options = T.unsafe(nil)); end
|
131
|
+
|
132
|
+
# Returns the Global ID parameter of the model.
|
133
|
+
#
|
134
|
+
# model = Person.new id: 1
|
135
|
+
# model.to_gid_param # => ""Z2lkOi8vYm9yZGZvbGlvL1BlcnNvbi8x"
|
136
|
+
#
|
137
|
+
# source://globalid//lib/global_id/identification.rb#46
|
138
|
+
def to_gid_param(options = T.unsafe(nil)); end
|
139
|
+
|
140
|
+
# Returns the Global ID of the model.
|
141
|
+
#
|
142
|
+
# model = Person.new id: 1
|
143
|
+
# global_id = model.to_global_id
|
144
|
+
# global_id.modal_class # => Person
|
145
|
+
# global_id.modal_id # => "1"
|
146
|
+
# global_id.to_param # => "Z2lkOi8vYm9yZGZvbGlvL1BlcnNvbi8x"
|
147
|
+
#
|
148
|
+
# source://globalid//lib/global_id/identification.rb#37
|
149
|
+
def to_global_id(options = T.unsafe(nil)); end
|
150
|
+
|
151
|
+
# Returns the Signed Global ID of the model.
|
152
|
+
# Signed Global IDs ensure that the data hasn't been tampered with.
|
153
|
+
#
|
154
|
+
# model = Person.new id: 1
|
155
|
+
# signed_global_id = model.to_signed_global_id
|
156
|
+
# signed_global_id.modal_class # => Person
|
157
|
+
# signed_global_id.modal_id # => "1"
|
158
|
+
# signed_global_id.to_param # => "BAh7CEkiCGdpZAY6BkVUSSIiZ2..."
|
159
|
+
#
|
160
|
+
# ==== Expiration
|
161
|
+
#
|
162
|
+
# Signed Global IDs can expire some time in the future. This is useful if
|
163
|
+
# there's a resource people shouldn't have indefinite access to, like a
|
164
|
+
# share link.
|
165
|
+
#
|
166
|
+
# expiring_sgid = Document.find(5).to_sgid(expires_in: 2.hours, for: 'sharing')
|
167
|
+
# # => #<SignedGlobalID:0x008fde45df8937 ...>
|
168
|
+
# # Within 2 hours...
|
169
|
+
# GlobalID::Locator.locate_signed(expiring_sgid.to_s, for: 'sharing')
|
170
|
+
# # => #<Document:0x007fae94bf6298 @id="5">
|
171
|
+
# # More than 2 hours later...
|
172
|
+
# GlobalID::Locator.locate_signed(expiring_sgid.to_s, for: 'sharing')
|
173
|
+
# # => nil
|
174
|
+
#
|
175
|
+
# In Rails, an auto-expiry of 1 month is set by default.
|
176
|
+
#
|
177
|
+
# You need to explicitly pass `expires_in: nil` to generate a permanent
|
178
|
+
# SGID that will not expire,
|
179
|
+
#
|
180
|
+
# never_expiring_sgid = Document.find(5).to_sgid(expires_in: nil)
|
181
|
+
# # => #<SignedGlobalID:0x008fde45df8937 ...>
|
182
|
+
#
|
183
|
+
# # Any time later...
|
184
|
+
# GlobalID::Locator.locate_signed never_expiring_sgid
|
185
|
+
# # => #<Document:0x007fae94bf6298 @id="5">
|
186
|
+
#
|
187
|
+
# It's also possible to pass a specific expiry time
|
188
|
+
#
|
189
|
+
# explicit_expiring_sgid = SecretAgentMessage.find(5).to_sgid(expires_at: Time.now.advance(hours: 1))
|
190
|
+
# # => #<SignedGlobalID:0x008fde45df8937 ...>
|
191
|
+
#
|
192
|
+
# # 1 hour later...
|
193
|
+
# GlobalID::Locator.locate_signed explicit_expiring_sgid.to_s
|
194
|
+
# # => nil
|
195
|
+
#
|
196
|
+
# Note that an explicit `:expires_at` takes precedence over a relative `:expires_in`.
|
197
|
+
#
|
198
|
+
# ==== Purpose
|
199
|
+
#
|
200
|
+
# You can even bump the security up some more by explaining what purpose a
|
201
|
+
# Signed Global ID is for. In this way evildoers can't reuse a sign-up
|
202
|
+
# form's SGID on the login page. For example.
|
203
|
+
#
|
204
|
+
# signup_person_sgid = Person.find(1).to_sgid(for: 'signup_form')
|
205
|
+
# # => #<SignedGlobalID:0x007fea1984b520
|
206
|
+
# GlobalID::Locator.locate_signed(signup_person_sgid.to_s, for: 'signup_form')
|
207
|
+
# => #<Person:0x007fae94bf6298 @id="1">
|
208
|
+
#
|
209
|
+
# source://globalid//lib/global_id/identification.rb#107
|
210
|
+
def to_sgid(options = T.unsafe(nil)); end
|
211
|
+
|
212
|
+
# Returns the Signed Global ID parameter.
|
213
|
+
#
|
214
|
+
# model = Person.new id: 1
|
215
|
+
# model.to_sgid_param # => "BAh7CEkiCGdpZAY6BkVUSSIiZ2..."
|
216
|
+
#
|
217
|
+
# source://globalid//lib/global_id/identification.rb#116
|
218
|
+
def to_sgid_param(options = T.unsafe(nil)); end
|
219
|
+
|
220
|
+
# Returns the Signed Global ID of the model.
|
221
|
+
# Signed Global IDs ensure that the data hasn't been tampered with.
|
222
|
+
#
|
223
|
+
# model = Person.new id: 1
|
224
|
+
# signed_global_id = model.to_signed_global_id
|
225
|
+
# signed_global_id.modal_class # => Person
|
226
|
+
# signed_global_id.modal_id # => "1"
|
227
|
+
# signed_global_id.to_param # => "BAh7CEkiCGdpZAY6BkVUSSIiZ2..."
|
228
|
+
#
|
229
|
+
# ==== Expiration
|
230
|
+
#
|
231
|
+
# Signed Global IDs can expire some time in the future. This is useful if
|
232
|
+
# there's a resource people shouldn't have indefinite access to, like a
|
233
|
+
# share link.
|
234
|
+
#
|
235
|
+
# expiring_sgid = Document.find(5).to_sgid(expires_in: 2.hours, for: 'sharing')
|
236
|
+
# # => #<SignedGlobalID:0x008fde45df8937 ...>
|
237
|
+
# # Within 2 hours...
|
238
|
+
# GlobalID::Locator.locate_signed(expiring_sgid.to_s, for: 'sharing')
|
239
|
+
# # => #<Document:0x007fae94bf6298 @id="5">
|
240
|
+
# # More than 2 hours later...
|
241
|
+
# GlobalID::Locator.locate_signed(expiring_sgid.to_s, for: 'sharing')
|
242
|
+
# # => nil
|
243
|
+
#
|
244
|
+
# In Rails, an auto-expiry of 1 month is set by default.
|
245
|
+
#
|
246
|
+
# You need to explicitly pass `expires_in: nil` to generate a permanent
|
247
|
+
# SGID that will not expire,
|
248
|
+
#
|
249
|
+
# never_expiring_sgid = Document.find(5).to_sgid(expires_in: nil)
|
250
|
+
# # => #<SignedGlobalID:0x008fde45df8937 ...>
|
251
|
+
#
|
252
|
+
# # Any time later...
|
253
|
+
# GlobalID::Locator.locate_signed never_expiring_sgid
|
254
|
+
# # => #<Document:0x007fae94bf6298 @id="5">
|
255
|
+
#
|
256
|
+
# It's also possible to pass a specific expiry time
|
257
|
+
#
|
258
|
+
# explicit_expiring_sgid = SecretAgentMessage.find(5).to_sgid(expires_at: Time.now.advance(hours: 1))
|
259
|
+
# # => #<SignedGlobalID:0x008fde45df8937 ...>
|
260
|
+
#
|
261
|
+
# # 1 hour later...
|
262
|
+
# GlobalID::Locator.locate_signed explicit_expiring_sgid.to_s
|
263
|
+
# # => nil
|
264
|
+
#
|
265
|
+
# Note that an explicit `:expires_at` takes precedence over a relative `:expires_in`.
|
266
|
+
#
|
267
|
+
# ==== Purpose
|
268
|
+
#
|
269
|
+
# You can even bump the security up some more by explaining what purpose a
|
270
|
+
# Signed Global ID is for. In this way evildoers can't reuse a sign-up
|
271
|
+
# form's SGID on the login page. For example.
|
272
|
+
#
|
273
|
+
# signup_person_sgid = Person.find(1).to_sgid(for: 'signup_form')
|
274
|
+
# # => #<SignedGlobalID:0x007fea1984b520
|
275
|
+
# GlobalID::Locator.locate_signed(signup_person_sgid.to_s, for: 'signup_form')
|
276
|
+
# => #<Person:0x007fae94bf6298 @id="1">
|
277
|
+
#
|
278
|
+
# source://globalid//lib/global_id/identification.rb#107
|
279
|
+
def to_signed_global_id(options = T.unsafe(nil)); end
|
280
|
+
end
|
281
|
+
|
282
|
+
# source://globalid//lib/global_id/locator.rb#4
|
283
|
+
module GlobalID::Locator
|
284
|
+
class << self
|
285
|
+
# Takes either a GlobalID or a string that can be turned into a GlobalID
|
286
|
+
#
|
287
|
+
# Options:
|
288
|
+
# * <tt>:includes</tt> - A Symbol, Array, Hash or combination of them.
|
289
|
+
# The same structure you would pass into a +includes+ method of Active Record.
|
290
|
+
# If present, locate will load all the relationships specified here.
|
291
|
+
# See https://guides.rubyonrails.org/active_record_querying.html#eager-loading-associations.
|
292
|
+
# * <tt>:only</tt> - A class, module or Array of classes and/or modules that are
|
293
|
+
# allowed to be located. Passing one or more classes limits instances of returned
|
294
|
+
# classes to those classes or their subclasses. Passing one or more modules in limits
|
295
|
+
# instances of returned classes to those including that module. If no classes or
|
296
|
+
# modules match, +nil+ is returned.
|
297
|
+
#
|
298
|
+
# source://globalid//lib/global_id/locator.rb#20
|
299
|
+
def locate(gid, options = T.unsafe(nil)); end
|
300
|
+
|
301
|
+
# Takes an array of GlobalIDs or strings that can be turned into a GlobalIDs.
|
302
|
+
# All GlobalIDs must belong to the same app, as they will be located using
|
303
|
+
# the same locator using its locate_many method.
|
304
|
+
#
|
305
|
+
# By default the GlobalIDs will be located using Model.find(array_of_ids), so the
|
306
|
+
# models must respond to that finder signature.
|
307
|
+
#
|
308
|
+
# This approach will efficiently call only one #find (or #where(id: id), when using ignore_missing)
|
309
|
+
# per model class, but still interpolate the results to match the order in which the gids were passed.
|
310
|
+
#
|
311
|
+
# Options:
|
312
|
+
# * <tt>:includes</tt> - A Symbol, Array, Hash or combination of them
|
313
|
+
# The same structure you would pass into a includes method of Active Record.
|
314
|
+
# @see https://guides.rubyonrails.org/active_record_querying.html#eager-loading-associations
|
315
|
+
# If present, locate_many will load all the relationships specified here.
|
316
|
+
# Note: It only works if all the gids models have that relationships.
|
317
|
+
# * <tt>:only</tt> - A class, module or Array of classes and/or modules that are
|
318
|
+
# allowed to be located. Passing one or more classes limits instances of returned
|
319
|
+
# classes to those classes or their subclasses. Passing one or more modules in limits
|
320
|
+
# instances of returned classes to those including that module. If no classes or
|
321
|
+
# modules match, +nil+ is returned.
|
322
|
+
# * <tt>:ignore_missing</tt> - By default, locate_many will call #find on the model to locate the
|
323
|
+
# ids extracted from the GIDs. In Active Record (and other data stores following the same pattern),
|
324
|
+
# #find will raise an exception if a named ID can't be found. When you set this option to true,
|
325
|
+
# we will use #where(id: ids) instead, which does not raise on missing records.
|
326
|
+
#
|
327
|
+
# source://globalid//lib/global_id/locator.rb#60
|
328
|
+
def locate_many(gids, options = T.unsafe(nil)); end
|
329
|
+
|
330
|
+
# Takes an array of SignedGlobalIDs or strings that can be turned into a SignedGlobalIDs.
|
331
|
+
# The SignedGlobalIDs are located using Model.find(array_of_ids), so the models must respond to
|
332
|
+
# that finder signature.
|
333
|
+
#
|
334
|
+
# This approach will efficiently call only one #find per model class, but still interpolate
|
335
|
+
# the results to match the order in which the gids were passed.
|
336
|
+
#
|
337
|
+
# Options:
|
338
|
+
# * <tt>:includes</tt> - A Symbol, Array, Hash or combination of them
|
339
|
+
# The same structure you would pass into a includes method of Active Record.
|
340
|
+
# @see https://guides.rubyonrails.org/active_record_querying.html#eager-loading-associations
|
341
|
+
# If present, locate_many_signed will load all the relationships specified here.
|
342
|
+
# Note: It only works if all the gids models have that relationships.
|
343
|
+
# * <tt>:only</tt> - A class, module or Array of classes and/or modules that are
|
344
|
+
# allowed to be located. Passing one or more classes limits instances of returned
|
345
|
+
# classes to those classes or their subclasses. Passing one or more modules in limits
|
346
|
+
# instances of returned classes to those including that module. If no classes or
|
347
|
+
# modules match, +nil+ is returned.
|
348
|
+
#
|
349
|
+
# source://globalid//lib/global_id/locator.rb#103
|
350
|
+
def locate_many_signed(sgids, options = T.unsafe(nil)); end
|
351
|
+
|
352
|
+
# Takes either a SignedGlobalID or a string that can be turned into a SignedGlobalID
|
353
|
+
#
|
354
|
+
# Options:
|
355
|
+
# * <tt>:includes</tt> - A Symbol, Array, Hash or combination of them
|
356
|
+
# The same structure you would pass into a includes method of Active Record.
|
357
|
+
# @see https://guides.rubyonrails.org/active_record_querying.html#eager-loading-associations
|
358
|
+
# If present, locate_signed will load all the relationships specified here.
|
359
|
+
# * <tt>:only</tt> - A class, module or Array of classes and/or modules that are
|
360
|
+
# allowed to be located. Passing one or more classes limits instances of returned
|
361
|
+
# classes to those classes or their subclasses. Passing one or more modules in limits
|
362
|
+
# instances of returned classes to those including that module. If no classes or
|
363
|
+
# modules match, +nil+ is returned.
|
364
|
+
#
|
365
|
+
# source://globalid//lib/global_id/locator.rb#81
|
366
|
+
def locate_signed(sgid, options = T.unsafe(nil)); end
|
367
|
+
|
368
|
+
# Tie a locator to an app.
|
369
|
+
# Useful when different apps collaborate and reference each others' Global IDs.
|
370
|
+
#
|
371
|
+
# The locator can be either a block or a class.
|
372
|
+
#
|
373
|
+
# Using a block:
|
374
|
+
#
|
375
|
+
# GlobalID::Locator.use :foo do |gid, options|
|
376
|
+
# FooRemote.const_get(gid.model_name).find(gid.model_id)
|
377
|
+
# end
|
378
|
+
#
|
379
|
+
# Using a class:
|
380
|
+
#
|
381
|
+
# GlobalID::Locator.use :bar, BarLocator.new
|
382
|
+
#
|
383
|
+
# class BarLocator
|
384
|
+
# def locate(gid, options = {})
|
385
|
+
# @search_client.search name: gid.model_name, id: gid.model_id
|
386
|
+
# end
|
387
|
+
# end
|
388
|
+
#
|
389
|
+
# @raise [ArgumentError]
|
390
|
+
#
|
391
|
+
# source://globalid//lib/global_id/locator.rb#127
|
392
|
+
def use(app, locator = T.unsafe(nil), &locator_block); end
|
393
|
+
|
394
|
+
private
|
395
|
+
|
396
|
+
# @return [Boolean]
|
397
|
+
#
|
398
|
+
# source://globalid//lib/global_id/locator.rb#140
|
399
|
+
def find_allowed?(model_class, only = T.unsafe(nil)); end
|
400
|
+
|
401
|
+
# source://globalid//lib/global_id/locator.rb#136
|
402
|
+
def locator_for(gid); end
|
403
|
+
|
404
|
+
# source://globalid//lib/global_id/locator.rb#148
|
405
|
+
def normalize_app(app); end
|
406
|
+
|
407
|
+
# source://globalid//lib/global_id/locator.rb#144
|
408
|
+
def parse_allowed(gids, only = T.unsafe(nil)); end
|
409
|
+
end
|
410
|
+
end
|
411
|
+
|
412
|
+
# source://globalid//lib/global_id/locator.rb#156
|
413
|
+
class GlobalID::Locator::BaseLocator
|
414
|
+
# source://globalid//lib/global_id/locator.rb#157
|
415
|
+
def locate(gid, options = T.unsafe(nil)); end
|
416
|
+
|
417
|
+
# source://globalid//lib/global_id/locator.rb#165
|
418
|
+
def locate_many(gids, options = T.unsafe(nil)); end
|
419
|
+
|
420
|
+
private
|
421
|
+
|
422
|
+
# source://globalid//lib/global_id/locator.rb#189
|
423
|
+
def find_records(model_class, ids, options); end
|
424
|
+
|
425
|
+
# @return [Boolean]
|
426
|
+
#
|
427
|
+
# source://globalid//lib/global_id/locator.rb#199
|
428
|
+
def model_id_is_valid?(gid); end
|
429
|
+
|
430
|
+
# source://globalid//lib/global_id/locator.rb#203
|
431
|
+
def primary_key(model_class); end
|
432
|
+
end
|
433
|
+
|
434
|
+
# source://globalid//lib/global_id/locator.rb#228
|
435
|
+
class GlobalID::Locator::BlockLocator
|
436
|
+
# @return [BlockLocator] a new instance of BlockLocator
|
437
|
+
#
|
438
|
+
# source://globalid//lib/global_id/locator.rb#229
|
439
|
+
def initialize(block); end
|
440
|
+
|
441
|
+
# source://globalid//lib/global_id/locator.rb#233
|
442
|
+
def locate(gid, options = T.unsafe(nil)); end
|
443
|
+
|
444
|
+
# source://globalid//lib/global_id/locator.rb#237
|
445
|
+
def locate_many(gids, options = T.unsafe(nil)); end
|
446
|
+
end
|
447
|
+
|
448
|
+
# source://globalid//lib/global_id/locator.rb#226
|
449
|
+
GlobalID::Locator::DEFAULT_LOCATOR = T.let(T.unsafe(nil), GlobalID::Locator::UnscopedLocator)
|
450
|
+
|
451
|
+
# source://globalid//lib/global_id/locator.rb#5
|
452
|
+
class GlobalID::Locator::InvalidModelIdError < ::StandardError; end
|
453
|
+
|
454
|
+
# source://globalid//lib/global_id/locator.rb#208
|
455
|
+
class GlobalID::Locator::UnscopedLocator < ::GlobalID::Locator::BaseLocator
|
456
|
+
# source://globalid//lib/global_id/locator.rb#209
|
457
|
+
def locate(gid, options = T.unsafe(nil)); end
|
458
|
+
|
459
|
+
private
|
460
|
+
|
461
|
+
# source://globalid//lib/global_id/locator.rb#214
|
462
|
+
def find_records(model_class, ids, options); end
|
463
|
+
|
464
|
+
# source://globalid//lib/global_id/locator.rb#218
|
465
|
+
def unscoped(model_class); end
|
466
|
+
end
|
467
|
+
|
468
|
+
# source://globalid//lib/global_id/railtie.rb#12
|
469
|
+
class GlobalID::Railtie < ::Rails::Railtie; end
|
470
|
+
|
471
|
+
# source://globalid//lib/global_id/verifier.rb#4
|
472
|
+
class GlobalID::Verifier < ::ActiveSupport::MessageVerifier
|
473
|
+
private
|
474
|
+
|
475
|
+
# source://globalid//lib/global_id/verifier.rb#10
|
476
|
+
def decode(data, **_arg1); end
|
477
|
+
|
478
|
+
# source://globalid//lib/global_id/verifier.rb#6
|
479
|
+
def encode(data, **_arg1); end
|
480
|
+
end
|
481
|
+
|
482
|
+
# source://globalid//lib/global_id/signed_global_id.rb#4
|
483
|
+
class SignedGlobalID < ::GlobalID
|
484
|
+
# @return [SignedGlobalID] a new instance of SignedGlobalID
|
485
|
+
#
|
486
|
+
# source://globalid//lib/global_id/signed_global_id.rb#59
|
487
|
+
def initialize(gid, options = T.unsafe(nil)); end
|
488
|
+
|
489
|
+
# source://globalid//lib/global_id/signed_global_id.rb#71
|
490
|
+
def ==(other); end
|
491
|
+
|
492
|
+
# Returns the value of attribute expires_at.
|
493
|
+
#
|
494
|
+
# source://globalid//lib/global_id/signed_global_id.rb#57
|
495
|
+
def expires_at; end
|
496
|
+
|
497
|
+
# source://globalid//lib/global_id/signed_global_id.rb#75
|
498
|
+
def inspect; end
|
499
|
+
|
500
|
+
# Returns the value of attribute purpose.
|
501
|
+
#
|
502
|
+
# source://globalid//lib/global_id/signed_global_id.rb#57
|
503
|
+
def purpose; end
|
504
|
+
|
505
|
+
# source://globalid//lib/global_id/signed_global_id.rb#66
|
506
|
+
def to_param; end
|
507
|
+
|
508
|
+
# source://globalid//lib/global_id/signed_global_id.rb#66
|
509
|
+
def to_s; end
|
510
|
+
|
511
|
+
# Returns the value of attribute verifier.
|
512
|
+
#
|
513
|
+
# source://globalid//lib/global_id/signed_global_id.rb#57
|
514
|
+
def verifier; end
|
515
|
+
|
516
|
+
private
|
517
|
+
|
518
|
+
# source://globalid//lib/global_id/signed_global_id.rb#80
|
519
|
+
def pick_expiration(options); end
|
520
|
+
|
521
|
+
class << self
|
522
|
+
# Returns the value of attribute expires_in.
|
523
|
+
#
|
524
|
+
# source://globalid//lib/global_id/signed_global_id.rb#8
|
525
|
+
def expires_in; end
|
526
|
+
|
527
|
+
# Sets the attribute expires_in
|
528
|
+
#
|
529
|
+
# @param value the value to set the attribute expires_in to.
|
530
|
+
#
|
531
|
+
# source://globalid//lib/global_id/signed_global_id.rb#8
|
532
|
+
def expires_in=(_arg0); end
|
533
|
+
|
534
|
+
# source://globalid//lib/global_id/signed_global_id.rb#10
|
535
|
+
def parse(sgid, options = T.unsafe(nil)); end
|
536
|
+
|
537
|
+
# source://globalid//lib/global_id/signed_global_id.rb#24
|
538
|
+
def pick_purpose(options); end
|
539
|
+
|
540
|
+
# Grab the verifier from options and fall back to SignedGlobalID.verifier.
|
541
|
+
# Raise ArgumentError if neither is available.
|
542
|
+
#
|
543
|
+
# source://globalid//lib/global_id/signed_global_id.rb#16
|
544
|
+
def pick_verifier(options); end
|
545
|
+
|
546
|
+
# Returns the value of attribute verifier.
|
547
|
+
#
|
548
|
+
# source://globalid//lib/global_id/signed_global_id.rb#8
|
549
|
+
def verifier; end
|
550
|
+
|
551
|
+
# Sets the attribute verifier
|
552
|
+
#
|
553
|
+
# @param value the value to set the attribute verifier to.
|
554
|
+
#
|
555
|
+
# source://globalid//lib/global_id/signed_global_id.rb#8
|
556
|
+
def verifier=(_arg0); end
|
557
|
+
|
558
|
+
private
|
559
|
+
|
560
|
+
# source://globalid//lib/global_id/signed_global_id.rb#50
|
561
|
+
def raise_if_expired(expires_at); end
|
562
|
+
|
563
|
+
# source://globalid//lib/global_id/signed_global_id.rb#29
|
564
|
+
def verify(sgid, options); end
|
565
|
+
|
566
|
+
# source://globalid//lib/global_id/signed_global_id.rb#40
|
567
|
+
def verify_with_legacy_self_validated_metadata(sgid, options); end
|
568
|
+
|
569
|
+
# source://globalid//lib/global_id/signed_global_id.rb#34
|
570
|
+
def verify_with_verifier_validated_metadata(sgid, options); end
|
571
|
+
end
|
572
|
+
end
|
573
|
+
|
574
|
+
# source://globalid//lib/global_id/signed_global_id.rb#5
|
575
|
+
class SignedGlobalID::ExpiredMessage < ::StandardError; end
|
576
|
+
|
577
|
+
# source://globalid//lib/global_id/uri/gid.rb#6
|
578
|
+
module URI
|
579
|
+
include ::URI::RFC2396_REGEXP
|
580
|
+
end
|
581
|
+
|
582
|
+
# source://globalid//lib/global_id/uri/gid.rb#7
|
583
|
+
class URI::GID < ::URI::Generic
|
584
|
+
# URI::GID encodes an app unique reference to a specific model as an URI.
|
585
|
+
# It has the components: app name, model class name, model id and params.
|
586
|
+
# All components except params are required.
|
587
|
+
#
|
588
|
+
# The URI format looks like "gid://app/model_name/model_id".
|
589
|
+
#
|
590
|
+
# Simple metadata can be stored in params. Useful if your app has multiple databases,
|
591
|
+
# for instance, and you need to find out which one to look up the model in.
|
592
|
+
#
|
593
|
+
# Params will be encoded as query parameters like so
|
594
|
+
# "gid://app/model_name/model_id?key=value&another_key=another_value".
|
595
|
+
#
|
596
|
+
# Params won't be typecast, they're always strings.
|
597
|
+
# For convenience params can be accessed using both strings and symbol keys.
|
598
|
+
#
|
599
|
+
# Multi value params aren't supported. Any params encoding multiple values under
|
600
|
+
# the same key will return only the last value. For example, when decoding
|
601
|
+
# params like "key=first_value&key=last_value" key will only be last_value.
|
602
|
+
#
|
603
|
+
# Read the documentation for +parse+, +create+ and +build+ for more.
|
604
|
+
#
|
605
|
+
# source://uri/0.12.1/uri/generic.rb#243
|
606
|
+
def app; end
|
607
|
+
|
608
|
+
# source://globalid//lib/global_id/uri/gid.rb#107
|
609
|
+
def deconstruct_keys(_keys); end
|
610
|
+
|
611
|
+
# Returns the value of attribute model_id.
|
612
|
+
#
|
613
|
+
# source://globalid//lib/global_id/uri/gid.rb#29
|
614
|
+
def model_id; end
|
615
|
+
|
616
|
+
# Returns the value of attribute model_name.
|
617
|
+
#
|
618
|
+
# source://globalid//lib/global_id/uri/gid.rb#29
|
619
|
+
def model_name; end
|
620
|
+
|
621
|
+
# Returns the value of attribute params.
|
622
|
+
#
|
623
|
+
# source://globalid//lib/global_id/uri/gid.rb#29
|
624
|
+
def params; end
|
625
|
+
|
626
|
+
# source://globalid//lib/global_id/uri/gid.rb#102
|
627
|
+
def to_s; end
|
628
|
+
|
629
|
+
protected
|
630
|
+
|
631
|
+
# Ruby 2.2 uses #query= instead of #set_query
|
632
|
+
#
|
633
|
+
# source://globalid//lib/global_id/uri/gid.rb#118
|
634
|
+
def query=(query); end
|
635
|
+
|
636
|
+
# source://globalid//lib/global_id/uri/gid.rb#129
|
637
|
+
def set_params(params); end
|
638
|
+
|
639
|
+
# source://globalid//lib/global_id/uri/gid.rb#112
|
640
|
+
def set_path(path); end
|
641
|
+
|
642
|
+
# Ruby 2.1 or less uses #set_query to assign the query
|
643
|
+
#
|
644
|
+
# source://globalid//lib/global_id/uri/gid.rb#124
|
645
|
+
def set_query(query); end
|
646
|
+
|
647
|
+
private
|
648
|
+
|
649
|
+
# source://globalid//lib/global_id/uri/gid.rb#136
|
650
|
+
def check_host(host); end
|
651
|
+
|
652
|
+
# source://globalid//lib/global_id/uri/gid.rb#141
|
653
|
+
def check_path(path); end
|
654
|
+
|
655
|
+
# source://globalid//lib/global_id/uri/gid.rb#146
|
656
|
+
def check_scheme(scheme); end
|
657
|
+
|
658
|
+
# source://globalid//lib/global_id/uri/gid.rb#195
|
659
|
+
def parse_query_params(query); end
|
660
|
+
|
661
|
+
# source://globalid//lib/global_id/uri/gid.rb#154
|
662
|
+
def set_model_components(path, validate = T.unsafe(nil)); end
|
663
|
+
|
664
|
+
# @raise [URI::InvalidComponentError]
|
665
|
+
#
|
666
|
+
# source://globalid//lib/global_id/uri/gid.rb#174
|
667
|
+
def validate_component(component); end
|
668
|
+
|
669
|
+
# @raise [InvalidModelIdError]
|
670
|
+
#
|
671
|
+
# source://globalid//lib/global_id/uri/gid.rb#188
|
672
|
+
def validate_model_id(model_id_part); end
|
673
|
+
|
674
|
+
# @raise [MissingModelIdError]
|
675
|
+
#
|
676
|
+
# source://globalid//lib/global_id/uri/gid.rb#181
|
677
|
+
def validate_model_id_section(model_id, model_name); end
|
678
|
+
|
679
|
+
class << self
|
680
|
+
# Create a new URI::GID from components with argument check.
|
681
|
+
#
|
682
|
+
# The allowed components are app, model_name, model_id and params, which can be
|
683
|
+
# either a hash or an array.
|
684
|
+
#
|
685
|
+
# Using a hash:
|
686
|
+
#
|
687
|
+
# URI::GID.build(app: 'bcx', model_name: 'Person', model_id: '1', params: { key: 'value' })
|
688
|
+
#
|
689
|
+
# Using an array, the arguments must be in order [app, model_name, model_id, params]:
|
690
|
+
#
|
691
|
+
# URI::GID.build(['bcx', 'Person', '1', key: 'value'])
|
692
|
+
#
|
693
|
+
# source://globalid//lib/global_id/uri/gid.rb#88
|
694
|
+
def build(args); end
|
695
|
+
|
696
|
+
# Shorthand to build a URI::GID from an app, a model and optional params.
|
697
|
+
#
|
698
|
+
# URI::GID.create('bcx', Person.find(5), database: 'superhumans')
|
699
|
+
#
|
700
|
+
# source://globalid//lib/global_id/uri/gid.rb#72
|
701
|
+
def create(app, model, params = T.unsafe(nil)); end
|
702
|
+
|
703
|
+
# Create a new URI::GID by parsing a gid string with argument check.
|
704
|
+
#
|
705
|
+
# URI::GID.parse 'gid://bcx/Person/1?key=value'
|
706
|
+
#
|
707
|
+
# This differs from URI() and URI.parse which do not check arguments.
|
708
|
+
#
|
709
|
+
# URI('gid://bcx') # => URI::GID instance
|
710
|
+
# URI.parse('gid://bcx') # => URI::GID instance
|
711
|
+
# URI::GID.parse('gid://bcx/') # => raises URI::InvalidComponentError
|
712
|
+
#
|
713
|
+
# source://globalid//lib/global_id/uri/gid.rb#64
|
714
|
+
def parse(uri); end
|
715
|
+
|
716
|
+
# Validates +app+'s as URI hostnames containing only alphanumeric characters
|
717
|
+
# and hyphens. An ArgumentError is raised if +app+ is invalid.
|
718
|
+
#
|
719
|
+
# URI::GID.validate_app('bcx') # => 'bcx'
|
720
|
+
# URI::GID.validate_app('foo-bar') # => 'foo-bar'
|
721
|
+
#
|
722
|
+
# URI::GID.validate_app(nil) # => ArgumentError
|
723
|
+
# URI::GID.validate_app('foo/bar') # => ArgumentError
|
724
|
+
#
|
725
|
+
# source://globalid//lib/global_id/uri/gid.rb#48
|
726
|
+
def validate_app(app); end
|
727
|
+
end
|
728
|
+
end
|
729
|
+
|
730
|
+
# source://globalid//lib/global_id/uri/gid.rb#134
|
731
|
+
URI::GID::COMPONENT = T.let(T.unsafe(nil), Array)
|
732
|
+
|
733
|
+
# source://globalid//lib/global_id/uri/gid.rb#37
|
734
|
+
URI::GID::COMPOSITE_MODEL_ID_DELIMITER = T.let(T.unsafe(nil), String)
|
735
|
+
|
736
|
+
# Maximum size of a model id segment
|
737
|
+
#
|
738
|
+
# source://globalid//lib/global_id/uri/gid.rb#36
|
739
|
+
URI::GID::COMPOSITE_MODEL_ID_MAX_SIZE = T.let(T.unsafe(nil), Integer)
|
740
|
+
|
741
|
+
# source://globalid//lib/global_id/uri/gid.rb#33
|
742
|
+
class URI::GID::InvalidModelIdError < ::URI::InvalidComponentError; end
|
743
|
+
|
744
|
+
# Raised when creating a Global ID for a model without an id
|
745
|
+
#
|
746
|
+
# source://globalid//lib/global_id/uri/gid.rb#32
|
747
|
+
class URI::GID::MissingModelIdError < ::URI::InvalidComponentError; end
|
748
|
+
|
749
|
+
class URI::WSS < ::URI::WS; end
|