activerecord-s3-bucket-name-validator 0.1.3 → 0.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1db90636507488edf3d8fd10ff6d162cc3602535cc5393c1dc978e30453af4a1
4
- data.tar.gz: a2e5f151e3e5b4ac5fd1e155e7effb88a7a4a1779c9b288730ffe46a592f83d5
3
+ metadata.gz: 12b96ad2afb8713382346c19e7c7589e41014735d7481754e26a9d03329d7c7f
4
+ data.tar.gz: a4a67ed0a9e5dc9b30bc69faafe9f82f74b77df66f60c0cac9076158165a595f
5
5
  SHA512:
6
- metadata.gz: 949db64c400b317437bf4db49782f5249024d660a05c35ad9fec7c93ba4f53c2eaed39cc5d29249d9e99756f4a8ae06406c409e22c48bb092ab3e31617fecf5c
7
- data.tar.gz: 8a9113a96a8d1fa4afcf1224ed7a48a0d8eaf99958884abe00bac0c83f878b07faa50d9d756c262e9beb198a32203dbe89813b9b790eed83134f55f7d81eb4aa
6
+ metadata.gz: 0e8698e66b8494c850a9618d7ba8fa2cc5088511195f96991817293e2269fe0fa1f20c66872a066265fbee592d51cab5ab18bf7c4cd27158707352c0413e0d20
7
+ data.tar.gz: 395899fab1991707c6cdbcb04b61dba595d23952229963fd9717598c9e5a2a87670d271b69673987aafb279e04933084ae367abae5f93feeca75825116e84567
data/README.md CHANGED
@@ -4,6 +4,7 @@ ActiveModel validator for Amazon S3 bucket names. It implements the official AWS
4
4
  - General purpose buckets (classic S3)
5
5
  - Directory buckets (S3 Express One Zone)
6
6
  - S3 Tables buckets
7
+ - S3 vector buckets
7
8
 
8
9
  Works in any class using ActiveModel::Validations and in Rails/ActiveRecord models. Ships with i18n messages in multiple locales.
9
10
 
@@ -49,15 +50,18 @@ end
49
50
 
50
51
  ## Options
51
52
 
52
- - `type` — `:general_purpose` (default), `:directory`, or `:table`
53
+ - `type` — `:general_purpose` (default), `:directory`, `:table`, or `:vector`
54
+ - `namespace` — `:account_regional` allows the official account-regional general-purpose bucket suffix (`-<account-id>-<region>-an`)
53
55
  - `transfer_acceleration` — when `true`, periods are forbidden for general-purpose buckets
54
56
 
55
57
  Examples:
56
58
 
57
59
  ```ruby
58
60
  validates :bucket_name, s3_bucket_name: { transfer_acceleration: true }
61
+ validates :bucket_name, s3_bucket_name: { namespace: :account_regional }
59
62
  validates :bucket_name, s3_bucket_name: { type: :directory }
60
63
  validates :bucket_name, s3_bucket_name: { type: :table }
64
+ validates :bucket_name, s3_bucket_name: { type: :vector }
61
65
  ```
62
66
 
63
67
  ## i18n
@@ -67,6 +71,7 @@ Error keys provided:
67
71
  - `activemodel.errors.messages.s3_bucket_name_invalid_transfer_acceleration`
68
72
  - `activemodel.errors.messages.s3_bucket_name_invalid_directory`
69
73
  - `activemodel.errors.messages.s3_bucket_name_invalid_table`
74
+ - `activemodel.errors.messages.s3_bucket_name_invalid_vector`
70
75
 
71
76
  Locales shipped: en, es, it, fr, de, pt-BR, ja, ko, zh-CN, zh-TW, ru, nl.
72
77
 
@@ -76,12 +81,14 @@ Rails loads locales via a Railtie; plain ActiveModel loads them at require-time.
76
81
 
77
82
  - Length 3–63, allowed characters, begin/end alphanumeric
78
83
  - No adjacent periods; not IP-like (general purpose)
79
- - Reserved prefixes/suffixes per AWS docs (for example `xn--`, `sthree-`, `amzn-s3-demo-`, `-s3alias`, `--ol-s3`, `.mrap`, `--x-s3`, `--table-s3`)
84
+ - Reserved prefixes/suffixes per AWS docs (for example `xn--`, `sthree-`, `amzn-s3-demo-`, `-s3alias`, `--ol-s3`, `.mrap`, `--x-s3`, `--table-s3`, `-an`)
85
+ - Account-regional general-purpose buckets must use `bucket-name-prefix-accountId-region-an` and require `namespace: :account_regional`
80
86
  - Directory buckets must end with `--<zone-id>--x-s3`
81
87
  - S3 Tables buckets disallow periods and underscores
88
+ - S3 vector buckets disallow periods and underscores
82
89
  - Optional TA mode forbids periods
83
90
 
84
- Note: Global/partition uniqueness and immutability are service-side constraints and not enforced locally.
91
+ Note: namespace uniqueness and immutability are service-side constraints and not enforced locally.
85
92
 
86
93
  ## Examples
87
94
 
@@ -1,18 +1,17 @@
1
-
2
1
  lib = File.expand_path("../lib", __FILE__)
3
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
3
  require "activerecord/s3/bucket/name/validator/version"
5
4
 
6
5
  Gem::Specification.new do |spec|
7
- spec.name = "activerecord-s3-bucket-name-validator"
8
- spec.version = Activerecord::S3::Bucket::Name::Validator::VERSION
9
- spec.authors = ["Claudio Poli"]
10
- spec.email = ["masterkain@gmail.com"]
6
+ spec.name = "activerecord-s3-bucket-name-validator"
7
+ spec.version = Activerecord::S3::Bucket::Name::Validator::VERSION
8
+ spec.authors = ["Claudio Poli"]
9
+ spec.email = ["masterkain@gmail.com"]
11
10
 
12
- spec.summary = %q{ActiveModel/ActiveRecord validator for Amazon S3 bucket naming rules}
13
- spec.description = %q{Validate S3 bucket names on your models against the official AWS rules (general purpose, directory buckets, and S3 Tables).}
14
- spec.homepage = "https://github.com/icoretech/activerecord-s3-bucket-name-validator"
15
- spec.license = "MIT"
11
+ spec.summary = "ActiveModel/ActiveRecord validator for Amazon S3 bucket naming rules"
12
+ spec.description = "Validate S3 bucket names on your models against the official AWS rules (general purpose, directory buckets, S3 Tables, and S3 Vectors)."
13
+ spec.homepage = "https://github.com/icoretech/activerecord-s3-bucket-name-validator"
14
+ spec.license = "MIT"
16
15
 
17
16
  # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
18
17
  # to allow pushing to a single host or delete this section to allow pushing to any host.
@@ -37,8 +36,8 @@ Gem::Specification.new do |spec|
37
36
  "LICENSE*",
38
37
  "*.gemspec"
39
38
  ]
40
- spec.bindir = "exe"
41
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
39
+ spec.bindir = "exe"
40
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
42
41
  spec.require_paths = ["lib"]
43
42
 
44
43
  spec.required_ruby_version = ">= 3.1"
@@ -51,4 +50,5 @@ Gem::Specification.new do |spec|
51
50
  spec.add_development_dependency "bundler", ">= 1.17"
52
51
  spec.add_development_dependency "rake", ">= 10.0"
53
52
  spec.add_development_dependency "minitest", ">= 5.0"
53
+ spec.add_development_dependency "simplecov", ">= 0.22"
54
54
  end
@@ -6,4 +6,5 @@ de:
6
6
  s3_bucket_name_invalid_transfer_acceleration: "darf keine Punkte enthalten, wenn S3 Transfer Acceleration verwendet wird"
7
7
  s3_bucket_name_invalid_directory: "ist kein gültiger S3-Verzeichnis-Bucket-Name (3–63 Zeichen; Kleinbuchstaben, Ziffern oder Bindestriche; muss mit --<zone-id>--x-s3 enden; reservierte Präfixe/Suffixe nicht erlaubt)"
8
8
  s3_bucket_name_invalid_table: "ist kein gültiger S3-Tables-Bucket-Name (3–63 Zeichen; Kleinbuchstaben, Ziffern oder Bindestriche; keine Punkte oder Unterstriche; keine reservierten Präfixe/Suffixe)"
9
+ s3_bucket_name_invalid_vector: "ist kein gültiger S3-Vectors-Bucket-Name (3–63 Zeichen; Kleinbuchstaben, Ziffern oder Bindestriche; keine Punkte oder Unterstriche; beginnt/endet alphanumerisch)"
9
10
  s3_bucket_name_invalid: "ist kein gültiger S3-Bucket-Name"
@@ -6,4 +6,5 @@ en:
6
6
  s3_bucket_name_invalid_transfer_acceleration: "cannot contain periods when using S3 Transfer Acceleration"
7
7
  s3_bucket_name_invalid_directory: "is not a valid S3 directory bucket name (3–63 chars; lowercase letters, numbers or hyphens; must end with --<zone-id>--x-s3; reserved prefixes/suffixes not allowed)"
8
8
  s3_bucket_name_invalid_table: "is not a valid S3 Tables bucket name (3–63 chars; lowercase letters, numbers or hyphens; no periods or underscores; reserved prefixes/suffixes not allowed)"
9
+ s3_bucket_name_invalid_vector: "is not a valid S3 Vectors bucket name (3–63 chars; lowercase letters, numbers or hyphens; no periods or underscores; start/end alphanumeric)"
9
10
  s3_bucket_name_invalid: "is not a valid S3 bucket name"
@@ -6,4 +6,5 @@ es:
6
6
  s3_bucket_name_invalid_transfer_acceleration: "no puede contener puntos cuando se usa S3 Transfer Acceleration"
7
7
  s3_bucket_name_invalid_directory: "no es un nombre de bucket de directorio S3 válido (3–63 caracteres; letras minúsculas, números o guiones; debe terminar con --<zone-id>--x-s3; prefijos/sufijos reservados no permitidos)"
8
8
  s3_bucket_name_invalid_table: "no es un nombre de bucket S3 Tables válido (3–63 caracteres; letras minúsculas, números o guiones; sin puntos ni guiones bajos; sin prefijos/sufijos reservados)"
9
+ s3_bucket_name_invalid_vector: "no es un nombre de bucket S3 Vectors válido (3–63 caracteres; letras minúsculas, números o guiones; sin puntos ni guiones bajos; empieza y termina alfanumérico)"
9
10
  s3_bucket_name_invalid: "no es un nombre de bucket S3 válido"
@@ -6,4 +6,5 @@ fr:
6
6
  s3_bucket_name_invalid_transfer_acceleration: "ne peut pas contenir de points avec S3 Transfer Acceleration"
7
7
  s3_bucket_name_invalid_directory: "n’est pas un nom de bucket de répertoire S3 valide (3–63 caractères ; lettres minuscules, chiffres ou tirets ; doit se terminer par --<zone-id>--x-s3 ; préfixes/suffixes réservés interdits)"
8
8
  s3_bucket_name_invalid_table: "n’est pas un nom de bucket S3 Tables valide (3–63 caractères ; lettres minuscules, chiffres ou tirets ; sans points ni underscores ; pas de préfixes/suffixes réservés)"
9
+ s3_bucket_name_invalid_vector: "n’est pas un nom de bucket S3 Vectors valide (3–63 caractères ; lettres minuscules, chiffres ou tirets ; sans points ni underscores ; commence et se termine par un caractère alphanumérique)"
9
10
  s3_bucket_name_invalid: "n’est pas un nom de bucket S3 valide"
@@ -6,4 +6,5 @@ it:
6
6
  s3_bucket_name_invalid_transfer_acceleration: "non può contenere punti quando si usa S3 Transfer Acceleration"
7
7
  s3_bucket_name_invalid_directory: "non è un nome bucket directory S3 valido (3–63 caratteri; lettere minuscole, numeri o trattini; deve terminare con --<zone-id>--x-s3; prefissi/suffissi riservati non consentiti)"
8
8
  s3_bucket_name_invalid_table: "non è un nome bucket S3 Tables valido (3–63 caratteri; lettere minuscole, numeri o trattini; senza punti o underscore; senza prefissi/suffissi riservati)"
9
+ s3_bucket_name_invalid_vector: "non è un nome bucket S3 Vectors valido (3–63 caratteri; lettere minuscole, numeri o trattini; senza punti o underscore; inizia/termina alfanumerico)"
9
10
  s3_bucket_name_invalid: "non è un nome bucket S3 valido"
@@ -6,4 +6,5 @@ ja:
6
6
  s3_bucket_name_invalid_transfer_acceleration: "S3 Transfer Acceleration を使用する場合、ピリオドは使用できません"
7
7
  s3_bucket_name_invalid_directory: "有効な S3 ディレクトリバケット名ではありません(3~63 文字、小文字の英字・数字・ハイフン、末尾に --<zone-id>--x-s3 必須、予約済みの接頭/接尾辞不可)"
8
8
  s3_bucket_name_invalid_table: "有効な S3 Tables バケット名ではありません(3~63 文字、小文字の英字・数字・ハイフン、ピリオドおよびアンダースコア不可、予約済みの接頭/接尾辞不可)"
9
+ s3_bucket_name_invalid_vector: "有効な S3 Vectors バケット名ではありません(3~63 文字、小文字の英字・数字・ハイフン、ピリオドおよびアンダースコア不可、先頭/末尾は英数字)"
9
10
  s3_bucket_name_invalid: "有効な S3 バケット名ではありません"
@@ -6,4 +6,5 @@ ko:
6
6
  s3_bucket_name_invalid_transfer_acceleration: "S3 Transfer Acceleration 사용 시 점(.)을 포함할 수 없습니다"
7
7
  s3_bucket_name_invalid_directory: "유효한 S3 디렉터리 버킷 이름이 아닙니다(3–63자; 소문자, 숫자 또는 하이픈; '--<zone-id>--x-s3'로 끝나야 함; 예약된 접두사/접미사 금지)"
8
8
  s3_bucket_name_invalid_table: "유효한 S3 Tables 버킷 이름이 아닙니다(3–63자; 소문자, 숫자 또는 하이픈; 점/밑줄 금지; 예약된 접두사/접미사 금지)"
9
+ s3_bucket_name_invalid_vector: "유효한 S3 Vectors 버킷 이름이 아닙니다(3–63자; 소문자, 숫자 또는 하이픈; 점/밑줄 금지; 시작/끝은 영숫자)"
9
10
  s3_bucket_name_invalid: "유효한 S3 버킷 이름이 아닙니다"
@@ -6,4 +6,5 @@ nl:
6
6
  s3_bucket_name_invalid_transfer_acceleration: "mag geen punten bevatten wanneer S3 Transfer Acceleration wordt gebruikt"
7
7
  s3_bucket_name_invalid_directory: "is geen geldige S3-directorybucketnaam (3–63 tekens; kleine letters, cijfers of koppeltekens; moet eindigen op --<zone-id>--x-s3; gereserveerde voor-/achtervoegsels niet toegestaan)"
8
8
  s3_bucket_name_invalid_table: "is geen geldige S3 Tables-bucketnaam (3–63 tekens; kleine letters, cijfers of koppeltekens; geen punten of underscores; geen gereserveerde voor-/achtervoegsels)"
9
+ s3_bucket_name_invalid_vector: "is geen geldige S3 Vectors-bucketnaam (3–63 tekens; kleine letters, cijfers of koppeltekens; geen punten of underscores; begint/eindigt alfanumerisch)"
9
10
  s3_bucket_name_invalid: "is geen geldige S3-bucketnaam"
@@ -6,4 +6,5 @@ pt-BR:
6
6
  s3_bucket_name_invalid_transfer_acceleration: "não pode conter pontos ao usar S3 Transfer Acceleration"
7
7
  s3_bucket_name_invalid_directory: "não é um nome de bucket de diretório S3 válido (3–63 caracteres; letras minúsculas, números ou hífens; deve terminar com --<zone-id>--x-s3; prefixos/sufixos reservados não permitidos)"
8
8
  s3_bucket_name_invalid_table: "não é um nome de bucket S3 Tables válido (3–63 caracteres; letras minúsculas, números ou hífens; sem pontos ou underscores; sem prefixos/sufixos reservados)"
9
+ s3_bucket_name_invalid_vector: "não é um nome de bucket S3 Vectors válido (3–63 caracteres; letras minúsculas, números ou hífens; sem pontos ou underscores; começa/termina alfanumérico)"
9
10
  s3_bucket_name_invalid: "não é um nome de bucket S3 válido"
@@ -6,4 +6,5 @@ ru:
6
6
  s3_bucket_name_invalid_transfer_acceleration: "нельзя использовать точки при S3 Transfer Acceleration"
7
7
  s3_bucket_name_invalid_directory: "недопустимое имя каталожного S3 бакета (3–63 символа; строчные буквы, цифры или дефисы; должно заканчиваться на --<zone-id>--x-s3; зарезервированные префиксы/суффиксы запрещены)"
8
8
  s3_bucket_name_invalid_table: "недопустимое имя бакета S3 Tables (3–63 символа; строчные буквы, цифры или дефисы; без точек и нижних подчёркиваний; зарезервированные префиксы/суффиксы запрещены)"
9
+ s3_bucket_name_invalid_vector: "недопустимое имя бакета S3 Vectors (3–63 символа; строчные буквы, цифры или дефисы; без точек и нижних подчёркиваний; начинается/заканчивается буквенно-цифровым символом)"
9
10
  s3_bucket_name_invalid: "недопустимое имя S3 бакета"
@@ -6,4 +6,5 @@ zh-CN:
6
6
  s3_bucket_name_invalid_transfer_acceleration: "使用 S3 Transfer Acceleration 时,名称中不能包含点(.)"
7
7
  s3_bucket_name_invalid_directory: "不是有效的 S3 目录存储桶名称(3–63 个字符;小写字母、数字或连字符;必须以 --<zone-id>--x-s3 结尾;不得使用保留的前缀/后缀)"
8
8
  s3_bucket_name_invalid_table: "不是有效的 S3 Tables 存储桶名称(3–63 个字符;小写字母、数字或连字符;不允许点或下划线;不得使用保留的前缀/后缀)"
9
+ s3_bucket_name_invalid_vector: "不是有效的 S3 Vectors 存储桶名称(3–63 个字符;小写字母、数字或连字符;不允许点或下划线;首尾必须为字母或数字)"
9
10
  s3_bucket_name_invalid: "不是有效的 S3 存储桶名称"
@@ -6,4 +6,5 @@ zh-TW:
6
6
  s3_bucket_name_invalid_transfer_acceleration: "使用 S3 Transfer Acceleration 時,名稱中不可包含點(.)"
7
7
  s3_bucket_name_invalid_directory: "不是有效的 S3 目錄儲存貯體名稱(3–63 個字元;小寫字母、數字或連字號;必須以 --<zone-id>--x-s3 結尾;不得使用保留的前/後綴)"
8
8
  s3_bucket_name_invalid_table: "不是有效的 S3 Tables 儲存貯體名稱(3–63 個字元;小寫字母、數字或連字號;不可有點或底線;不得使用保留的前/後綴)"
9
+ s3_bucket_name_invalid_vector: "不是有效的 S3 Vectors 儲存貯體名稱(3–63 個字元;小寫字母、數字或連字號;不可有點或底線;開頭與結尾必須為英數字)"
9
10
  s3_bucket_name_invalid: "不是有效的 S3 儲存貯體名稱"
@@ -3,7 +3,7 @@ module Activerecord
3
3
  module Bucket
4
4
  module Name
5
5
  module Validator
6
- VERSION = "0.1.3"
6
+ VERSION = "0.2.0"
7
7
  end
8
8
  end
9
9
  end
@@ -30,7 +30,8 @@ end
30
30
  # Usage in a model:
31
31
  # validates :bucket_name, s3_bucket_name: { type: :general_purpose }
32
32
  # Options:
33
- # :type => :general_purpose (default), :directory, or :table
33
+ # :type => :general_purpose (default), :directory, :table, or :vector
34
+ # :namespace => :account_regional for general-purpose account regional bucket names
34
35
  # :transfer_acceleration => true to forbid periods for TA buckets
35
36
  class S3BucketNameValidator < ActiveModel::EachValidator
36
37
  RESERVED_PREFIXES_GENERAL = %w[xn-- sthree- amzn-s3-demo-].freeze
@@ -44,9 +45,15 @@ class S3BucketNameValidator < ActiveModel::EachValidator
44
45
  return if blank_ok?(value)
45
46
 
46
47
  valid = case type
47
- when :general_purpose then validate_general_purpose(value, transfer_acceleration: !!options[:transfer_acceleration])
48
+ when :general_purpose
49
+ validate_general_purpose(
50
+ value,
51
+ transfer_acceleration: !!options[:transfer_acceleration],
52
+ namespace: options[:namespace]
53
+ )
48
54
  when :directory then validate_directory_bucket(value)
49
55
  when :table then validate_table_bucket(value)
56
+ when :vector then validate_vector_bucket(value)
50
57
  else
51
58
  record.errors.add(attribute, :invalid, message: "unknown bucket type: #{type}")
52
59
  false
@@ -60,6 +67,7 @@ class S3BucketNameValidator < ActiveModel::EachValidator
60
67
  when :general_purpose then :s3_bucket_name_invalid_general
61
68
  when :directory then :s3_bucket_name_invalid_directory
62
69
  when :table then :s3_bucket_name_invalid_table
70
+ when :vector then :s3_bucket_name_invalid_vector
63
71
  else :s3_bucket_name_invalid
64
72
  end
65
73
  end
@@ -76,7 +84,7 @@ class S3BucketNameValidator < ActiveModel::EachValidator
76
84
  end
77
85
 
78
86
  # Based on AWS docs: General purpose bucket naming rules
79
- def validate_general_purpose(name, transfer_acceleration: false)
87
+ def validate_general_purpose(name, transfer_acceleration: false, namespace: nil)
80
88
  return false unless length_between?(name, 3, 63)
81
89
  return false unless /\A[a-z0-9.-]+\z/.match?(name)
82
90
  return false unless begins_and_ends_with_alnum?(name)
@@ -85,6 +93,8 @@ class S3BucketNameValidator < ActiveModel::EachValidator
85
93
  return false unless RESERVED_PREFIXES_GENERAL.none? { |p| name.start_with?(p) }
86
94
  return false unless RESERVED_SUFFIXES_GENERAL.none? { |s| name.end_with?(s) }
87
95
  return false if transfer_acceleration && name.include?(".")
96
+ return false if name.end_with?("-an") && namespace != :account_regional
97
+ return false if namespace == :account_regional && !account_regional_name?(name)
88
98
  true
89
99
  end
90
100
 
@@ -111,6 +121,14 @@ class S3BucketNameValidator < ActiveModel::EachValidator
111
121
  true
112
122
  end
113
123
 
124
+ # Based on AWS docs: S3 vector bucket naming rules
125
+ def validate_vector_bucket(name)
126
+ return false unless length_between?(name, 3, 63)
127
+ return false unless /\A[a-z0-9-]+\z/.match?(name)
128
+ return false unless begins_and_ends_with_alnum?(name)
129
+ true
130
+ end
131
+
114
132
  def length_between?(str, min, max)
115
133
  str.length.between?(min, max)
116
134
  end
@@ -122,4 +140,8 @@ class S3BucketNameValidator < ActiveModel::EachValidator
122
140
  def ip_like?(str)
123
141
  str =~ /\A(?:\d{1,3}\.){3}\d{1,3}\z/
124
142
  end
143
+
144
+ def account_regional_name?(str)
145
+ /\A.+-\d{12}-[a-z0-9-]+-\d-an\z/.match?(str)
146
+ end
125
147
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-s3-bucket-name-validator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Claudio Poli
@@ -85,8 +85,22 @@ dependencies:
85
85
  - - ">="
86
86
  - !ruby/object:Gem::Version
87
87
  version: '5.0'
88
+ - !ruby/object:Gem::Dependency
89
+ name: simplecov
90
+ requirement: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ version: '0.22'
95
+ type: :development
96
+ prerelease: false
97
+ version_requirements: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ version: '0.22'
88
102
  description: Validate S3 bucket names on your models against the official AWS rules
89
- (general purpose, directory buckets, and S3 Tables).
103
+ (general purpose, directory buckets, S3 Tables, and S3 Vectors).
90
104
  email:
91
105
  - masterkain@gmail.com
92
106
  executables: []