middleman-s3_sync 4.6.3 → 4.6.4

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: 575e3838865eccc6e585b35829b3891f2a86a77502df0da9e411634ad40312a1
4
- data.tar.gz: bf897e1d7725bf536759469ef486dc81e51410c67f20b801322a1ad2403a8445
3
+ metadata.gz: e6b576cfe91e75975edadd71f0cfd319e84772edecd882aabe2e3c8c06c90082
4
+ data.tar.gz: 86bc102e074f9b47980e4cbf93060babd7f7b8a5117cbf35b60ea78ba7476ff0
5
5
  SHA512:
6
- metadata.gz: 1ef461a263b9ec005dcca856b34d3b02509550d2ba6d94904920bdf448268aacc547cbdf412406616f4ff409ce70e425ad013cd3e5e0de8a75315c1134d518e9
7
- data.tar.gz: a00ae49ff314f27e8a3d6878ae00709a67c5759563675b64d72fdc5a61bdc057a19191ab04dea2795f80cfd75c86c00d0e99d707be382227c6c6eeabefeff2c6
6
+ metadata.gz: 20b465799e297cff4e8085ba9c9e25637a25a3a77242d862f1d2b93291dd6112c32835fc91eb8fd92d0e4cd11df6676c034330d804e4556b5fc0ba4c2312215e
7
+ data.tar.gz: 36a4b96fa0c6831047a90ef4140c598bfab3eb5279fffa09adeee5e23673cb30a811806019ea63de16d1c52383b9a644a2ed6cf0bf400ccd1e9eaade616ae00a
data/Changelog.md CHANGED
@@ -2,6 +2,11 @@
2
2
 
3
3
  The gem that tries really hard not to push files to S3.
4
4
 
5
+ ## v4.6.4
6
+ * Remove map gem dependency and replace with native Ruby implementation
7
+ * Add IndifferentHash class to provide string/symbol indifferent access without external dependencies
8
+ * Improve gem stability by eliminating dependency on unmaintained library
9
+
5
10
  ## v4.6.3
6
11
  * Restrict incompatible map 8.x installation
7
12
 
@@ -1,4 +1,4 @@
1
- require 'map'
1
+ require 'middleman/s3_sync/indifferent_hash'
2
2
 
3
3
  module Middleman
4
4
  module S3Sync
@@ -17,7 +17,7 @@ module Middleman
17
17
  end
18
18
 
19
19
  def caching_policies
20
- @caching_policies ||= Map.new
20
+ @caching_policies ||= IndifferentHash.new
21
21
  end
22
22
  end
23
23
 
@@ -25,7 +25,7 @@ module Middleman
25
25
  attr_accessor :policies
26
26
 
27
27
  def initialize(options = {})
28
- @policies = Map.from_hash(options)
28
+ @policies = IndifferentHash.from_hash(options)
29
29
  end
30
30
 
31
31
  def cache_control
@@ -0,0 +1,62 @@
1
+ module Middleman
2
+ module S3Sync
3
+ # A simple hash wrapper that provides string/symbol indifferent access
4
+ # This replaces the Map gem dependency with native Ruby functionality
5
+ class IndifferentHash < Hash
6
+ # Convert keys to strings for consistent access
7
+ def normalize_key(key)
8
+ key.to_s
9
+ end
10
+
11
+ # Override [] to provide indifferent access
12
+ def [](key)
13
+ super(normalize_key(key))
14
+ end
15
+
16
+ # Override []= to store with normalized keys
17
+ def []=(key, value)
18
+ super(normalize_key(key), value)
19
+ end
20
+
21
+ # Override fetch to provide indifferent access
22
+ def fetch(key, *args, &block)
23
+ super(normalize_key(key), *args, &block)
24
+ end
25
+
26
+ # Override has_key? to work with normalized keys
27
+ def has_key?(key)
28
+ super(normalize_key(key))
29
+ end
30
+ alias_method :key?, :has_key?
31
+ alias_method :include?, :has_key?
32
+
33
+ # Create an IndifferentHash from a regular hash
34
+ def self.from_hash(hash)
35
+ new_hash = new
36
+ hash.each do |key, value|
37
+ new_hash[key] = value
38
+ end
39
+ new_hash
40
+ end
41
+
42
+ # Provide dot notation access to hash values
43
+ def method_missing(method, *args, &block)
44
+ key = method.to_s
45
+ if key.end_with?('=')
46
+ # Handle setter: hash.key = value
47
+ self[key.chop] = args.first
48
+ elsif has_key?(key)
49
+ # Handle getter: hash.key
50
+ self[key]
51
+ else
52
+ super
53
+ end
54
+ end
55
+
56
+ def respond_to_missing?(method, include_private = false)
57
+ key = method.to_s.sub(/=$/, '')
58
+ has_key?(key) || super
59
+ end
60
+ end
61
+ end
62
+ end
@@ -1,5 +1,5 @@
1
1
  module Middleman
2
2
  module S3Sync
3
- VERSION = "4.6.3"
3
+ VERSION = "4.6.4"
4
4
  end
5
5
  end
@@ -1,6 +1,5 @@
1
1
  require 'middleman-core'
2
2
  require 'middleman/s3_sync'
3
- require 'map'
4
3
 
5
4
  module Middleman
6
5
  class S3SyncExtension < ::Middleman::Extension
@@ -22,7 +22,6 @@ Gem::Specification.new do |gem|
22
22
  gem.add_runtime_dependency 'middleman-cli'
23
23
  gem.add_runtime_dependency 'aws-sdk-s3', '>= 1.187.0'
24
24
  gem.add_runtime_dependency 'aws-sdk-cloudfront'
25
- gem.add_runtime_dependency 'map', '6.6.0'
26
25
  gem.add_runtime_dependency 'parallel'
27
26
  gem.add_runtime_dependency 'ruby-progressbar'
28
27
  gem.add_runtime_dependency 'ansi', '~> 1.5.0'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: middleman-s3_sync
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.6.3
4
+ version: 4.6.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Frederic Jean
@@ -66,20 +66,6 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: map
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - '='
74
- - !ruby/object:Gem::Version
75
- version: 6.6.0
76
- type: :runtime
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - '='
81
- - !ruby/object:Gem::Version
82
- version: 6.6.0
83
69
  - !ruby/object:Gem::Dependency
84
70
  name: parallel
85
71
  requirement: !ruby/object:Gem::Requirement
@@ -302,6 +288,7 @@ files:
302
288
  - lib/middleman/s3_sync.rb
303
289
  - lib/middleman/s3_sync/caching_policy.rb
304
290
  - lib/middleman/s3_sync/cloudfront.rb
291
+ - lib/middleman/s3_sync/indifferent_hash.rb
305
292
  - lib/middleman/s3_sync/options.rb
306
293
  - lib/middleman/s3_sync/resource.rb
307
294
  - lib/middleman/s3_sync/status.rb