ruby-ulid 0.7.0 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
data/sig/ulid.rbs CHANGED
@@ -3,8 +3,6 @@ class ULID < Object
3
3
  TIMESTAMP_ENCODED_LENGTH: 10
4
4
  RANDOMNESS_ENCODED_LENGTH: 16
5
5
  ENCODED_LENGTH: 26
6
- TIMESTAMP_OCTETS_LENGTH: 6
7
- RANDOMNESS_OCTETS_LENGTH: 10
8
6
  OCTETS_LENGTH: 16
9
7
  MAX_MILLISECONDS: 281474976710655
10
8
  MAX_ENTROPY: 1208925819614629174706175
@@ -14,7 +12,6 @@ class ULID < Object
14
12
  PATTERN_WITH_CROCKFORD_BASE32_SUBSET: Regexp
15
13
  STRICT_PATTERN_WITH_CROCKFORD_BASE32_SUBSET: Regexp
16
14
  SCANNING_PATTERN: Regexp
17
- UUIDV4_PATTERN: Regexp
18
15
  MIN: ULID
19
16
  MAX: ULID
20
17
  include Comparable
@@ -34,9 +31,37 @@ class ULID < Object
34
31
  class UnexpectedError < Error
35
32
  end
36
33
 
34
+ class IrreversibleUUIDError < Error
35
+ end
36
+
37
+ module UUID
38
+ BASE_PATTERN: Regexp
39
+ V4_PATTERN: Regexp
40
+
41
+ def self.parse_any_to_int: (String) -> Integer
42
+ def self.parse_v4_to_int: (String) -> Integer
43
+
44
+ class Fields < Struct[Integer]
45
+ attr_accessor time_low: Integer
46
+ attr_accessor time_mid: Integer
47
+ attr_accessor time_hi_and_version: Integer
48
+ attr_accessor clock_seq_hi_and_res: Integer
49
+ attr_accessor clk_seq_low: Integer
50
+ attr_accessor node: Integer
51
+ def self.raw_from_octets: (octets) -> Fields
52
+ def self.forced_v4_from_octets: (octets) -> Fields
53
+
54
+ def values: -> Array[Integer]
55
+
56
+ private
57
+
58
+ def initialize: (?time_low: Integer, ?time_mid: Integer, ?time_hi_and_version: Integer, ?clock_seq_hi_and_res: Integer, ?clk_seq_low: Integer, ?node: Integer) -> void
59
+ end
60
+ end
61
+
37
62
  # Private module
38
63
  module Utils
39
- def self.encode_base32: (milliseconds: milliseconds, entropy: Integer) -> String
64
+ def self.encode_base32hex: (milliseconds: milliseconds, entropy: Integer) -> String
40
65
 
41
66
  def self.current_milliseconds: -> milliseconds
42
67
 
@@ -48,9 +73,7 @@ class ULID < Object
48
73
 
49
74
  def self.safe_get_class_name: (untyped object) -> String
50
75
 
51
- def self.make_sharable_value: (untyped object) -> void
52
-
53
- def self.make_sharable_constantans: (Module) -> void
76
+ def self.make_sharable_constants: (Module) -> void
54
77
 
55
78
  def self.ractor_can_make_shareable_time?: -> bool
56
79
  end
@@ -59,7 +82,7 @@ class ULID < Object
59
82
  module CrockfordBase32
60
83
  ENCODING_STRING: String
61
84
  CROCKFORD_TR_PATTERN: String
62
- BASE32_TR_PATTERN: String
85
+ BASE32HEX_TR_PATTERN: String
63
86
  VARIANT_TR_PATTERN: String
64
87
  NORMALIZED_TR_PATTERN: String
65
88
 
@@ -69,67 +92,60 @@ class ULID < Object
69
92
 
70
93
  def self.normalize: (String string) -> String
71
94
 
72
- def self.from_base32: (String base32encoded) -> String
95
+ def self.from_base32hex: (String base32hex) -> String
73
96
  end
74
97
 
75
98
  class MonotonicGenerator
76
99
  include MonitorMixin
77
100
 
78
- # Returned value is `basically not` Thread-safety
101
+ # Returned value is `basically not` Thread-safety\
79
102
  # If you want to keep Thread-safety, keep to call {#generate} only in same {#synchronize} block
80
103
  #
81
104
  # ```ruby
82
105
  # generator.synchronize do
83
- # generator.prev
106
+ # generator.last
84
107
  # generator.inspect
85
108
  # generator.generate
86
109
  # end
87
110
  # ```
88
- attr_reader prev: ULID | nil
111
+ attr_reader last: ULID | nil
89
112
 
90
- # See [How to keep `Sortable` even if in same timestamp](https://github.com/kachick/ruby-ulid#how-to-keep-sortable-even-if-in-same-timestamp)
113
+ # See [How to keep `Sortable` even if in same timestamp](https://github.com/kachick/ruby-ulid#how-to-keep-sortable-even-if-in-same-timestamp)\
91
114
  # The `Thread-safety` is implemented with [Monitor](https://bugs.ruby-lang.org/issues/16255)
92
115
  def generate: (?moment: moment) -> ULID
93
116
 
94
117
  # Just providing similar api as `ULID.generate` and `ULID.encode` relation. No performance benefit exists in monotonic generator's one.
95
118
  def encode: (?moment: moment) -> String
96
119
 
97
- # Returned value is `basically not` Thread-safety
120
+ # Returned value is `basically not` Thread-safety\
98
121
  # If you want to keep Thread-safety, keep to call {#generate} only in same {#synchronize} block
99
122
  #
100
123
  # ```ruby
101
124
  # generator.synchronize do
102
- # generator.prev
125
+ # generator.last
103
126
  # generator.inspect
104
127
  # generator.generate
105
128
  # end
106
129
  # ```
107
130
  def inspect: -> String
108
131
  alias to_s inspect
109
- def freeze: -> void
110
132
 
111
133
  private
112
134
 
113
135
  def initialize: -> void
114
136
 
115
- def prev=: (ULID?) -> void
137
+ def last=: (ULID?) -> void
116
138
  end
117
139
 
118
140
  interface _ToULID
119
141
  def to_ulid: () -> ULID
120
142
  end
121
143
 
122
- type full_octets = [Integer, Integer, Integer, Integer, Integer, Integer, Integer, Integer, Integer, Integer, Integer, Integer, Integer, Integer, Integer, Integer] | Array[Integer]
123
- type timestamp_octets = [Integer, Integer, Integer, Integer, Integer, Integer] | Array[Integer]
124
- type randomness_octets = [Integer, Integer, Integer, Integer, Integer, Integer, Integer, Integer, Integer, Integer] | Array[Integer]
144
+ type octets = [Integer, Integer, Integer, Integer, Integer, Integer, Integer, Integer, Integer, Integer, Integer, Integer, Integer, Integer, Integer, Integer] | Array[Integer]
125
145
  type period = Range[Time] | Range[nil] | Range[ULID]
126
146
 
127
147
  @integer: Integer
128
148
  @encoded: String
129
- @timestamp: String?
130
- @randomness: String?
131
- @inspect: String?
132
- @time: Time?
133
149
 
134
150
  # Retuns a ULID
135
151
  #
@@ -167,14 +183,13 @@ class ULID < Object
167
183
  #
168
184
  def self.generate: (?moment: moment, ?entropy: Integer) -> ULID
169
185
 
170
- # Retuns encoded and normalzied String.
171
- # It has same arguments signatures as `.generate`. So can be used for just ID creation usecases without needless object creation.
172
- #
173
- # NOTE: Difference of ULID#encode, returned String is NOT frozen.
186
+ # Retuns encoded and normalzied String.\
187
+ # It has same arguments signatures as `.generate`\
188
+ # So can be used for just ID creation usecases without needless object creation.
174
189
  #
175
190
  def self.encode: (?moment: moment, ?entropy: Integer) -> String
176
191
 
177
- # Shorthand of `ULID.generate(moment: Time)`
192
+ # Shorthand of `ULID.generate(moment: Time)`\
178
193
  # See also [ULID.generate](https://kachick.github.io/ruby-ulid/ULID.html#generate-class_method)
179
194
  #
180
195
  # ```ruby
@@ -188,7 +203,8 @@ class ULID < Object
188
203
  # ```
189
204
  def self.at: (Time time) -> ULID
190
205
 
191
- # `ULID` can be element of the `Range`. If you generated the IDs in monotonic generator, ID based filtering is easy and reliable
206
+ # `ULID` can be element of the `Range`.\
207
+ # If you generated the IDs in monotonic generator, ID based filtering is easy and reliable
192
208
  #
193
209
  # ```ruby
194
210
  # include_end = ulid1..ulid2
@@ -236,16 +252,18 @@ class ULID < Object
236
252
  # ```
237
253
  def self.parse: (_ToStr string) -> ULID
238
254
 
239
- # Return Time instance from encoded String.
255
+ type time_in = String | Integer | nil
256
+
257
+ # Return Time instance from encoded String.\
240
258
  # See also `ULID.encode` for similar purpose.
241
259
  #
242
- # NOTE: Difference of ULID#to_time, returned Time is NOT frozen.
243
- #
244
260
  # ```ruby
245
261
  # time = ULID.decode_time('01ARZ3NDEKTSV4RRFFQ69G5FAV')
246
262
  # #=> 2016-07-30 23:54:10.259 UTC
263
+ # ULID.decode_time('01ARZ3NDEKTSV4RRFFQ69G5FAV', in: '+09:00')
264
+ # #=> 2016-07-31 08:54:10.259 +0900
247
265
  # ```
248
- def self.decode_time: (_ToStr string, ?in: String | Integer | nil) -> Time
266
+ def self.decode_time: (_ToStr string, ?in: time_in) -> Time
249
267
 
250
268
  # Get ULID instance from unnormalized String that encoded in Crockford's base32.
251
269
  #
@@ -262,18 +280,35 @@ class ULID < Object
262
280
  # See also [ulid/spec#57](https://github.com/ulid/spec/pull/57) and [ulid/spec#3](https://github.com/ulid/spec/issues/3)
263
281
  def self.parse_variant_format: (_ToStr string) -> ULID
264
282
 
283
+ # Load a UUID-like string without checking version and variants.
284
+ #
265
285
  # ```ruby
266
- # # Currently experimental feature, so needed to load the extension.
267
- # require 'ulid/uuid'
286
+ # ULID.from_uuidish('123e4567-e89b-12d3-a456-426614174000')
287
+ # #=> ULID(2605-08-20 10:28:29.979 UTC: 0J7S2PFT4V2B9T8NJ2CRA1EG00)
288
+ # ```
289
+ #
290
+ # See also [ULID.from_uuidv4]
291
+ def self.from_uuidish: (String uuidish) -> ULID
292
+
293
+ # Load a UUIDv4 string with checking version and variants.
268
294
  #
269
- # # Basically reversible
270
- # ulid = ULID.from_uuidv4('0983d0a2-ff15-4d83-8f37-7dd945b5aa39')
295
+ # ```ruby
296
+ # ULID.from_uuidv4('0983d0a2-ff15-4d83-8f37-7dd945b5aa39')
271
297
  # #=> ULID(2301-07-10 00:28:28.821 UTC: 09GF8A5ZRN9P1RYDVXV52VBAHS)
272
- # ulid.to_uuidv4 #=> "0983d0a2-ff15-4d83-8f37-7dd945b5aa39"
298
+ # ULID.from_uuidv4('123e4567-e89b-12d3-a456-426614174000')
299
+ # #=> ULID::ParserError
273
300
  # ```
274
301
  #
275
- # See also [Why this is experimental?](https://github.com/kachick/ruby-ulid/issues/76)
302
+ # See also [ULID.from_uuidish]
276
303
  def self.from_uuidv4: (String uuid) -> ULID
304
+
305
+ # Load integer as ULID
306
+ #
307
+ # ```ruby
308
+ # ulid = ULID.parse('01GTXYCWNDKRYH14DBZ77TRSD7')
309
+ # ULID.from_integer(ulid.to_i)
310
+ # #=> ULID(2023-03-07 11:48:07.469 UTC: 01GTXYCWNDKRYH14DBZ77TRSD7)
311
+ # ```
277
312
  def self.from_integer: (Integer integer) -> ULID
278
313
 
279
314
  # Returns termination values for ULID spec.
@@ -334,7 +369,8 @@ class ULID < Object
334
369
  # # ULID(2665-03-16 14:50:22.724 UTC: 0KYFW9DWM4CEGFNTAC6YFAVVJ6)]
335
370
  # ```
336
371
  #
337
- # You can specify a range object for the timestamp restriction, See also [ULID.range](https://kachick.github.io/ruby-ulid/ULID.html#range-class_method).
372
+ # You can specify a range object for the timestamp restriction.\
373
+ # See also [ULID.range](https://kachick.github.io/ruby-ulid/ULID.html#range-class_method)
338
374
  #
339
375
  # ```ruby
340
376
  # ulid1 = ULID.parse('01F4A5Y1YAQCYAYCTC7GRMJ9AA') #=> ULID(2021-04-27 17:27:22.826 UTC: 01F4A5Y1YAQCYAYCTC7GRMJ9AA)
@@ -395,19 +431,6 @@ class ULID < Object
395
431
  def self.valid_as_variant_format?: (_ToStr string) -> bool
396
432
  | (untyped) -> false
397
433
 
398
- # DEPRECATED Use valid_as_variant_format? instead
399
- #
400
- # Returns `true` if it is normalized string.
401
- # Basically the difference of normalized? is to accept downcase or not. This returns true for downcased ULIDs.
402
- #
403
- # ```ruby
404
- # ULID.valid?(ULID.generate.to_s.downcase) #=> true
405
- # ```
406
- #
407
- # See also [ulid/spec#57](https://github.com/ulid/spec/pull/57) and [ulid/spec#3](https://github.com/ulid/spec/issues/3)
408
- def self.valid?: (_ToStr string) -> bool
409
- | (untyped) -> false
410
-
411
434
  # Returns parsed ULIDs from given String for rough operations.
412
435
  #
413
436
  # ```ruby
@@ -450,6 +473,7 @@ class ULID < Object
450
473
  def self.scan: (_ToStr string) -> Enumerator[self, singleton(ULID)]
451
474
  | (_ToStr string) { (ULID ulid) -> void } -> singleton(ULID)
452
475
 
476
+ # Returns nil if given object is not a ULID
453
477
  def self.try_convert: (_ToULID) -> ULID
454
478
  | (untyped) -> nil
455
479
 
@@ -459,14 +483,16 @@ class ULID < Object
459
483
  # ulid.milliseconds #=> 1619544442826
460
484
  # ```
461
485
  attr_reader milliseconds: Integer
486
+
462
487
  attr_reader entropy: Integer
463
488
 
489
+ # Private api. (Actually defined protected visibility)
490
+ attr_reader encoded: String
491
+
464
492
  # ```ruby
465
493
  # ulid = ULID.generate
466
494
  # #=> ULID(2021-04-27 17:27:22.826 UTC: 01F4A5Y1YAQCYAYCTC7GRMJ9AA)
467
495
  # ulid.encode #=> "01F4A5Y1YAQCYAYCTC7GRMJ9AA"
468
- # ulid.encode.frozen? #=> true
469
- # ulid.encode.equal?(ulid.to_s) #=> true
470
496
  # ```
471
497
  def encode: -> String
472
498
  alias to_s encode
@@ -489,7 +515,7 @@ class ULID < Object
489
515
  # #=> true
490
516
  # ```
491
517
  #
492
- # To be precise, this sorting unaffected with `case sensitive or not` and might handle [ulid/spec#57](https://github.com/ulid/spec/pull/57) in future.
518
+ # To be precise, this sorting unaffected with `case sensitive or not` and might handle [ulid/spec#57](https://github.com/ulid/spec/pull/57) in future.\
493
519
  # So preferable than `lexicographically sortable` in actual case.
494
520
  #
495
521
  # This returns -1 | 0 | 1 for ULIDs. However defined as returning Integer. It is caused on ruby/rbs current definition.
@@ -499,6 +525,8 @@ class ULID < Object
499
525
  def <=>: (ULID other) -> Integer
500
526
  | (untyped other) -> nil
501
527
 
528
+ # Returns human readable strings that used by Kernel.#p
529
+ #
502
530
  # ```ruby
503
531
  # ulid = ULID.generate
504
532
  # ulid.inspect #=> "ULID(2021-04-27 17:27:22.826 UTC: 01F4A5Y1YAQCYAYCTC7GRMJ9AA)"
@@ -513,7 +541,7 @@ class ULID < Object
513
541
  | (untyped other) -> false
514
542
  alias == eql?
515
543
 
516
- # Return `true` for same value of ULID, variant formats of strings, same Time in ULID precision(msec).
544
+ # Return `true` for same value of ULID, variant formats of strings, same Time in ULID precision(msec).\
517
545
  # Do not consider integer, octets and partial strings, then returns `false`.
518
546
  #
519
547
  # ```ruby
@@ -533,12 +561,15 @@ class ULID < Object
533
561
  | (untyped other) -> false
534
562
 
535
563
  # ```ruby
536
- # ulid = ULID.generate
537
- # #=> ULID(2021-04-27 17:27:22.826 UTC: 01F4A5Y1YAQCYAYCTC7GRMJ9AA)
538
- # ulid.to_time #=> 2021-04-27 17:27:22.826 UTC
564
+ # ULID.parse('01F4A5Y1YAQCYAYCTC7GRMJ9AA').to_time
565
+ # #=> 2021-04-27 17:27:22.826 UTC
566
+ # ULID.parse('01F4A5Y1YAQCYAYCTC7GRMJ9AA').to_time(in: '+09:00')
567
+ # #=> 2021-04-28 02:27:22.826 +0900
539
568
  # ```
540
- def to_time: -> Time
569
+ def to_time: (?in: time_in) -> Time
541
570
 
571
+ # Returns timestamp(prefix) part of encoded ULID
572
+ #
542
573
  # ```ruby
543
574
  # ulid = ULID.generate
544
575
  # #=> ULID(2021-04-27 17:27:22.826 UTC: 01F4A5Y1YAQCYAYCTC7GRMJ9AA)
@@ -546,6 +577,8 @@ class ULID < Object
546
577
  # ```
547
578
  def timestamp: -> String
548
579
 
580
+ # Returns randomness(suffix) part of encoded ULID
581
+ #
549
582
  # ```ruby
550
583
  # ulid = ULID.generate
551
584
  # #=> ULID(2021-04-27 17:27:22.826 UTC: 01F4A5Y1YAQCYAYCTC7GRMJ9AA)
@@ -553,27 +586,15 @@ class ULID < Object
553
586
  # ```
554
587
  def randomness: -> String
555
588
 
556
- # Intentionally avoiding to use `Record type` ref: https://github.com/ruby/rbs/blob/4fb4c33b2325d1a73d79ff7aaeb49f21cec1e0e5/docs/syntax.md#record-type
557
- # Because the returning values are not fixed.
558
- def patterns: -> Hash[Symbol, Regexp | String]
559
- def octets: -> full_octets
560
- def timestamp_octets: -> timestamp_octets
561
- def randomness_octets: -> randomness_octets
562
-
563
- # ```ruby
564
- # # Currently experimental feature, so needed to load the extension.
565
- # require 'ulid/uuid'
589
+ # Returns 6 + 10 octets(bytes) represented with Array[Integer]
566
590
  #
567
- # # Basically reversible
568
- # ulid = ULID.from_uuidv4('0983d0a2-ff15-4d83-8f37-7dd945b5aa39')
569
- # #=> ULID(2301-07-10 00:28:28.821 UTC: 09GF8A5ZRN9P1RYDVXV52VBAHS)
570
- # ulid.to_uuidv4 #=> "0983d0a2-ff15-4d83-8f37-7dd945b5aa39"
591
+ # ```ruby
592
+ # ulid = ULID.parse('01F4A5Y1YAQCYAYCTC7GRMJ9AA')
593
+ # ulid.octets #=> [1, 121, 20, 95, 7, 202, 187, 60, 175, 51, 76, 60, 49, 73, 37, 74]
571
594
  # ```
572
- #
573
- # See also [Why this is experimental?](https://github.com/kachick/ruby-ulid/issues/76)
574
- def to_uuidv4: -> String
595
+ def octets: -> octets
575
596
 
576
- # Returns next(successor) ULID.
597
+ # Returns next(successor) ULID.\
577
598
  # Especially `ULID#succ` makes it possible `Range[ULID]#each`.
578
599
  #
579
600
  # NOTE: But basically `Range[ULID]#each` should not be used, incrementing 128 bits IDs are not reasonable operation in most case
@@ -598,7 +619,6 @@ class ULID < Object
598
619
  #
599
620
  # See also [ULID#succ](https://kachick.github.io/ruby-ulid/ULID.html#succ-instance_method)
600
621
  def pred: -> ULID?
601
- def freeze: -> self
602
622
 
603
623
  def marshal_dump: -> Integer
604
624
 
@@ -607,16 +627,45 @@ class ULID < Object
607
627
  # Returns `self`
608
628
  def to_ulid: -> self
609
629
 
610
- # Returns `self`. Not a new instance.
611
- def dup: -> self
630
+ # Generate a UUID-like string that does not set the version and variants field.\
631
+ # It means wrong in UUIDv4 spec, but reversible
632
+ #
633
+ # ```ruby
634
+ # ulid = ULID.parse('01GTXYCWNDKRYH14DBZ77TRSD7')
635
+ # ulid.to_uuidish #-> '0186bbe6-72ad-9e3d-1091-abf9cfac65a7'
636
+ # ULID.from_uuidish(ulid.to_uuidish) #=> ULID(2023-03-07 11:48:07.469 UTC: 01GTXYCWNDKRYH14DBZ77TRSD7)
637
+ # ```
638
+ #
639
+ # See also [ULID.from_uuidish], [ULID#to_uuidv4], [ulid/spec#64](https://github.com/ulid/spec/issues/64)
640
+ def to_uuidish: -> String
612
641
 
613
- # Same API as [Object#clone](https://github.com/ruby/rbs/blob/4fb4c33b2325d1a73d79ff7aaeb49f21cec1e0e5/core/object.rbs#L79)
614
- # But actually returns `self`. Not a new instance.
615
- def clone: (?freeze: bool) -> self
642
+ # Generate a UUIDv4-like string that sets the version and variants field.\
643
+ # It may conform to the UUID specification, but it is irreversible with the source ULID and may conflict with some other ULIDs.\
644
+ # You can specify `force` keyword argument to turn off the irreversible check
645
+ #
646
+ # ```ruby
647
+ # uuid = '0983d0a2-ff15-4d83-8f37-7dd945b5aa39'
648
+ # ulid = ULID.from_uuidv4(uuid)
649
+ # ulid.to_uuidv4 #=> 0983d0a2-ff15-4d83-8f37-7dd945b5aa39
650
+ # ```
651
+ #
652
+ # ```ruby
653
+ # ulid = ULID.from_uuidish('0186bbe6-72ad-9e3d-1091-abf9cfac65a7')
654
+ # ulid.to_uuidv4 #=> ULID::IrreversibleUUIDError
655
+ # ulid.to_uuidv4(force: true) #=> '0186bbe6-72ad-4e3d-9091-abf9cfac65a7'
656
+ # ```
657
+ #
658
+ # See also [ULID.from_uuidv4], [ULID#to_uuidish], [ulid/spec#64](https://github.com/ulid/spec/issues/64)
659
+ def to_uuidv4: (?force: boolish) -> String
660
+
661
+ # Returns same ID with different Ruby object.
662
+ def dup: -> ULID
663
+
664
+ # Returns same ID with different Ruby object.::Array::_Pattern\
665
+ # `freeze` keyarg is just provided for standardized API with `Object#clone`, however it accepts only `true`.
666
+ def clone: (?freeze: true) -> ULID
616
667
 
617
668
  private
618
669
 
619
670
  def initialize: (milliseconds: milliseconds, entropy: Integer, integer: Integer, encoded: String) -> void
620
-
621
- def cache_all_instance_variables: -> void
622
671
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-ulid
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kenichi Kamiya
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-08-05 00:00:00.000000000 Z
11
+ date: 2023-03-08 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: " generator, optional monotonicity, parser and tools for ULID (RBS
14
14
  included)\n"
@@ -38,7 +38,7 @@ metadata:
38
38
  source_code_uri: https://github.com/kachick/ruby-ulid
39
39
  bug_tracker_uri: https://github.com/kachick/ruby-ulid/issues
40
40
  rubygems_mfa_required: 'true'
41
- post_install_message:
41
+ post_install_message:
42
42
  rdoc_options: []
43
43
  require_paths:
44
44
  - lib
@@ -46,15 +46,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
46
46
  requirements:
47
47
  - - ">="
48
48
  - !ruby/object:Gem::Version
49
- version: 2.7.2
49
+ version: '3.1'
50
50
  required_rubygems_version: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  requirements: []
56
- rubygems_version: 3.3.7
57
- signing_key:
56
+ rubygems_version: 3.4.6
57
+ signing_key:
58
58
  specification_version: 4
59
59
  summary: ULID manipulation library
60
60
  test_files: []