typed_cache 0.2.0 → 0.3.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.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/README.md +25 -3
  4. data/examples.md +36 -2
  5. data/lib/typed_cache/backends/active_support.rb +50 -5
  6. data/lib/typed_cache/backends/memory.rb +5 -5
  7. data/lib/typed_cache/cache_key.rb +9 -1
  8. data/lib/typed_cache/cache_ref.rb +16 -16
  9. data/lib/typed_cache/decorator.rb +9 -1
  10. data/lib/typed_cache/decorators/instrumented.rb +21 -8
  11. data/lib/typed_cache/either.rb +22 -0
  12. data/lib/typed_cache/instrumenter.rb +6 -6
  13. data/lib/typed_cache/instrumenters/mixins/namespaced_singleton.rb +3 -0
  14. data/lib/typed_cache/instrumenters.rb +2 -1
  15. data/lib/typed_cache/maybe.rb +18 -0
  16. data/lib/typed_cache/namespace.rb +33 -6
  17. data/lib/typed_cache/railtie.rb +15 -0
  18. data/lib/typed_cache/snapshot.rb +18 -10
  19. data/lib/typed_cache/store.rb +47 -15
  20. data/lib/typed_cache/version.rb +1 -1
  21. data/lib/typed_cache.rb +4 -0
  22. data/rbi/typed_cache/backend.rbi +9 -0
  23. data/rbi/typed_cache/backends/active_support.rbi +13 -0
  24. data/rbi/typed_cache/backends/memory.rbi +13 -0
  25. data/rbi/typed_cache/backends.rbi +19 -0
  26. data/rbi/typed_cache/cache_builder.rbi +23 -0
  27. data/rbi/typed_cache/cache_key.rbi +16 -0
  28. data/rbi/typed_cache/cache_ref.rbi +56 -0
  29. data/rbi/typed_cache/decorator.rbi +67 -0
  30. data/rbi/typed_cache/decorators/instrumented.rbi +13 -0
  31. data/rbi/typed_cache/decorators.rbi +19 -0
  32. data/rbi/typed_cache/either.rbi +122 -0
  33. data/rbi/typed_cache/errors.rbi +20 -0
  34. data/rbi/typed_cache/instrumenter.rbi +45 -0
  35. data/rbi/typed_cache/instrumenters/mixins/namedspaced_singleton.rbi +33 -0
  36. data/rbi/typed_cache/instrumenters.rbi +19 -0
  37. data/rbi/typed_cache/maybe.rbi +108 -0
  38. data/rbi/typed_cache/namespace.rbi +30 -0
  39. data/rbi/typed_cache/snapshot.rbi +54 -0
  40. data/rbi/typed_cache/store.rbi +71 -0
  41. data/rbi/typed_cache/version.rbi +5 -0
  42. data/rbi/typed_cache.rbi +49 -0
  43. data/sig/generated/typed_cache/backends/active_support.rbs +14 -2
  44. data/sig/generated/typed_cache/backends/memory.rbs +2 -2
  45. data/sig/generated/typed_cache/cache_key.rbs +5 -0
  46. data/sig/generated/typed_cache/cache_ref.rbs +4 -4
  47. data/sig/generated/typed_cache/decorator.rbs +4 -0
  48. data/sig/generated/typed_cache/decorators/instrumented.rbs +4 -4
  49. data/sig/generated/typed_cache/either.rbs +24 -0
  50. data/sig/generated/typed_cache/instrumenter.rbs +5 -5
  51. data/sig/generated/typed_cache/instrumenters/mixins/namespaced_singleton.rbs +3 -0
  52. data/sig/generated/typed_cache/instrumenters.rbs +2 -0
  53. data/sig/generated/typed_cache/maybe.rbs +20 -0
  54. data/sig/generated/typed_cache/namespace.rbs +24 -3
  55. data/sig/generated/typed_cache/railtie.rbs +6 -0
  56. data/sig/generated/typed_cache/snapshot.rbs +12 -6
  57. data/sig/generated/typed_cache/store.rbs +23 -8
  58. data/sig/generated/typed_cache.rbs +2 -0
  59. data/typed_cache.gemspec +1 -1
  60. data.tar.gz.sig +0 -0
  61. metadata +26 -3
  62. metadata.gz.sig +0 -0
@@ -0,0 +1,20 @@
1
+ # typed: strict
2
+
3
+ module TypedCache
4
+ class Error < StandardError; end
5
+
6
+ class StoreError < ::TypedCache::Error
7
+ sig { params(operation: Symbol, key: ::TypedCache::CacheKey, message: String, original_error: T.nilable(Error)).void }
8
+ def initialize(operation, key, message, original_error = nil); end
9
+ end
10
+
11
+ class TypeError < ::TypedCache::Error
12
+ sig { params(expected_type: String, actual_type: String, value: T.untyped, message: String).void }
13
+ def initialize(expected_type, actual_type, value, message); end
14
+ end
15
+
16
+ class CacheMissError < ::TypedCache::Error
17
+ sig { params(key: ::TypedCache::CacheKey).void }
18
+ def initialize(key); end
19
+ end
20
+ end
@@ -0,0 +1,45 @@
1
+ # typed: strict
2
+
3
+ module TypedCache
4
+ module Instrumenter
5
+ abstract!
6
+
7
+ sig do
8
+ abstract.type_parameters(:R)
9
+ .params(
10
+ event_name: String,
11
+ key: String,
12
+ payload: T::Hash[Symbol, T.untyped],
13
+ blk: T.proc.returns(T.type_parameter(:R)),
14
+ ).returns(T.type_parameter(:R))
15
+ end
16
+ def instrument(event_name, key, **payload, &blk); end
17
+
18
+ sig do
19
+ abstract.type_parameters(:R)
20
+ .params(
21
+ event_name: String,
22
+ filters: T::Hash[Symbol, T.untyped],
23
+ blk: T.proc.void,
24
+ ).returns(T.type_parameter(:R))
25
+ end
26
+ def subscribe(event_name, **filters, &blk); end
27
+
28
+ sig { overridable.returns(String) }
29
+ def namespace; end
30
+
31
+ sig { overridable.returns(T::Boolean) }
32
+ def enabled?; end
33
+
34
+ private
35
+
36
+ sig { overridable.params(operation: String, key: String, payload: T::Hash[Symbol, T.untyped]).returns(T::Hash[Symbol, T.untyped]) }
37
+ def build_payload(operation, key, **payload); end
38
+
39
+ sig(:final) { params(operation: String).returns(String) }
40
+ def event_name(operation); end
41
+
42
+ sig(:final) { returns(::TypedCache::Private::Configuration::Instrumentation) }
43
+ def config; end
44
+ end
45
+ end
@@ -0,0 +1,33 @@
1
+ # typed: strict
2
+
3
+ module TypedCache
4
+ module Instrumenters
5
+ module Mixins
6
+ module NamedspacedSingleton
7
+ requires_ancestor { ::TypedCache::Instrumenter }
8
+
9
+ class << self
10
+ sig { returns(T::Array[T::Class[T.all(::TypedCache::Instrumenter, ::TypedCache::Instrumenters::Mixins::NamedspacedSingleton)]]) }
11
+ def all; end
12
+ end
13
+
14
+ sig { params(namespace: ::TypedCache::Namespace).void }
15
+ def initialize(namespace); end
16
+
17
+ sig { returns(::TypedCache::Namespace) }
18
+ def namespace; end
19
+
20
+ module ClassMethods
21
+ sig { params(namespace: ::TypedCache::Namespace).returns(T::Class[T.all(::TypedCache::Instrumenter, ::TypedCache::Instrumenters::Mixins::NamedspacedSingleton)]) }
22
+ def new(namespace: T.unsafe(nil)); end
23
+
24
+ sig { params(namespace: ::TypedCache::Namespace).returns(T::Class[T.all(::TypedCache::Instrumenter, ::TypedCache::Instrumenters::Mixins::NamedspacedSingleton)]) }
25
+ def get(namespace); end
26
+
27
+ sig { void }
28
+ def clear_namespace_cache; end
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,19 @@
1
+ # typed: strict
2
+
3
+ module TypedCache
4
+ module Instrumenters
5
+ class << self
6
+ sig { params(name: Symbol, klass: T::Class[::TypedCache::Instrumenter]).returns(T.self_type) }
7
+ def register(name, klass); end
8
+
9
+ sig { params(name: Symbol, args: T::Array[T.anything], options: T::Hash[Symbol, T.anything]).returns(T.self_type) }
10
+ def resolve(name, *args, **options); end
11
+
12
+ sig { returns(T::Array[T::Class[::TypedCache::Instrumenter]]) }
13
+ def available; end
14
+
15
+ sig { params(name: Symbol).returns(T::Boolean) }
16
+ def registered?(name); end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,108 @@
1
+ # typed: strict
2
+
3
+ module TypedCache
4
+ module Maybe
5
+ include Kernel
6
+ extend T::Generic
7
+
8
+ mixes_in_class_methods(T::Generic)
9
+
10
+ sealed!
11
+ interface!
12
+
13
+ V = type_member(:out)
14
+
15
+ sig { abstract.returns(T::Boolean) }
16
+ def some?; end
17
+
18
+ sig { abstract.returns(T::Boolean) }
19
+ def nothing?; end
20
+
21
+ sig { abstract.type_parameters(:T).params(block: T.proc.params(value: V).returns(T.type_parameter(:T))).returns(::TypedCache::Maybe[T.type_parameter(:T)]) }
22
+ def map(&block); end
23
+
24
+ sig { abstract.type_parameters(:T).params(block: T.proc.params(value: V).returns(::TypedCache::Maybe[T.type_parameter(:T)])).returns(::TypedCache::Maybe[T.type_parameter(:T)]) }
25
+ def bind(&block); end
26
+
27
+ alias flat_map bind
28
+
29
+ sig { abstract.type_parameters(:T).params(block: T.proc.returns(T.type_parameter(:T))).returns(T.any(T.type_parameter(:T), V)) }
30
+ def value_or_else(&block); end
31
+
32
+ sig { abstract.type_parameters(:T).params(value: T.type_parameter(:T)).returns(T.any(T.type_parameter(:T), V)) }
33
+ def value_or(value); end
34
+
35
+ sig { abstract.returns(V) }
36
+ def value_or_raise!; end
37
+
38
+ class << self
39
+ sig { type_parameters(:T).params(value: T.type_parameter(:T)).returns(::TypedCache::Some[T.type_parameter(:T)]) }
40
+ def some(value); end
41
+
42
+ sig { returns(::TypedCache::Nothing) }
43
+ def none; end
44
+
45
+ sig { params(value: NilClass).returns(::TypedCache::Nothing) }
46
+ sig { params(value: ::TypedCache::Nothing).returns(::TypedCache::Nothing) }
47
+ sig { type_parameters(:T).params(value: ::TypedCache::Some[T.type_parameter(:T)]).returns(::TypedCache::Some[T.type_parameter(:T)]) }
48
+ sig { type_parameters(:T).params(value: T.type_parameter(:T)).returns(::TypedCache::Some[T.type_parameter(:T)]) }
49
+ def wrap(value); end
50
+
51
+ alias [] some
52
+ end
53
+ end
54
+
55
+ class Some
56
+ sealed!
57
+
58
+ include ::TypedCache::Maybe
59
+ extend T::Generic
60
+
61
+ V = type_member(:out)
62
+
63
+ sig { override.returns(TrueClass) }
64
+ def some?; end
65
+
66
+ sig { override.returns(FalseClass) }
67
+ def nothing?; end
68
+
69
+ sig { override.type_parameters(:T).params(block: T.proc.params(value: V).returns(T.type_parameter(:T))).returns(Some[T.type_parameter(:T)]) }
70
+ def map(&block); end
71
+
72
+ sig { override.type_parameters(:T).params(block: T.proc.params(value: V).returns(::TypedCache::Maybe[T.type_parameter(:T)])).returns(::TypedCache::Maybe[T.type_parameter(:T)]) }
73
+ def bind(&block); end
74
+
75
+ sig { override.type_parameters(:T).params(value: T.type_parameter(:T)).returns(V) }
76
+ def value_or(value); end
77
+
78
+ sig { override.returns(V) }
79
+ def value_or_raise!; end
80
+ end
81
+
82
+ class Nothing
83
+ sealed!
84
+
85
+ include ::TypedCache::Maybe
86
+ extend T::Generic
87
+
88
+ V = type_member(:out) { { fixed: T.noreturn } }
89
+
90
+ sig { override.returns(FalseClass) }
91
+ def some?; end
92
+
93
+ sig { override.returns(TrueClass) }
94
+ def nothing?; end
95
+
96
+ sig { override.type_parameters(:T).params(block: T.proc.params(value: V).returns(T.type_parameter(:T))).returns(T.self_type) }
97
+ def map(&block); end
98
+
99
+ sig { override.type_parameters(:T).params(block: T.proc.params(value: V).returns(::TypedCache::Maybe[T.type_parameter(:T)])).returns(T.self_type) }
100
+ def bind(&block); end
101
+
102
+ sig { override.type_parameters(:T).params(value: T.type_parameter(:T)).returns(T.type_parameter(:T)) }
103
+ def value_or(value); end
104
+
105
+ sig { override.returns(T.noreturn) }
106
+ def value_or_raise!; end
107
+ end
108
+ end
@@ -0,0 +1,30 @@
1
+ # typed: strict
2
+
3
+ module TypedCache
4
+ class Namespace
5
+ sealed!
6
+
7
+ class << self
8
+ sig { returns(T.attached_class) }
9
+ def root; end
10
+
11
+ sig { params(namespace: String, namespaces: String).returns(T.attached_class) }
12
+ def at(namespace, *namespaces); end
13
+ end
14
+
15
+ sig { params(namespace: String, key_factory: T.nilable(T.proc.params(namespace: ::TypedCache::Namespace, key: String).returns(::TypedCache::CacheKey))).returns(::TypedCache::Namespace) }
16
+ def nested(namespace, &key_factory); end
17
+
18
+ sig { params(namespaces: String, key_factory: T.nilable(T.proc.params(namespace: ::TypedCache::Namespace, key: String).returns(::TypedCache::CacheKey))).returns(::TypedCache::Namespace) }
19
+ def join(*namespaces, &key_factory); end
20
+
21
+ sig { returns(::TypedCache::Namespace) }
22
+ def parent_namespace; end
23
+
24
+ sig { params(key: String).returns(::TypedCache::CacheKey) }
25
+ def key(key); end
26
+
27
+ sig { returns(String) }
28
+ def to_s; end
29
+ end
30
+ end
@@ -0,0 +1,54 @@
1
+ # typed: strict
2
+
3
+ module TypedCache
4
+ class Snapshot
5
+ extend T::Generic
6
+
7
+ sealed!
8
+
9
+ ValueType = type_member(:out)
10
+
11
+ sig { returns(::TypedCache::CacheKey) }
12
+ def key; end
13
+
14
+ sig { returns(ValueType) }
15
+ def value; end
16
+
17
+ sig { returns(Time) }
18
+ def retrieved_at; end
19
+
20
+ sig { returns(Symbol) }
21
+ def source; end
22
+
23
+ sig { returns(Float) }
24
+ def age; end
25
+
26
+ sig { returns(T::Boolean) }
27
+ def from_cache?; end
28
+
29
+ sig { returns(T::Boolean) }
30
+ def computed?; end
31
+
32
+ sig { returns(T::Boolean) }
33
+ def updated?; end
34
+
35
+ sig { type_parameters(:T).params(block: T.proc.params(value: ValueType).returns(T.type_parameter(:T))).returns(::TypedCache::Snapshot[T.type_parameter(:T)]) }
36
+ def map(&block); end
37
+
38
+ sig { type_parameters(:T).params(block: T.proc.params(value: ValueType).returns(::TypedCache::Either[Error, T.type_parameter(:T)])).returns(::TypedCache::Either[Error, ::TypedCache::Snapshot[T.type_parameter(:T)]]) }
39
+ def bind(&block); end
40
+
41
+ alias flat_map bind
42
+
43
+ class << self
44
+ sig { type_parameters(:T).params(key: ::TypedCache::CacheKey, value: T.type_parameter(:T)).returns(::TypedCache::Snapshot[T.type_parameter(:T)]) }
45
+ def cached(key, value); end
46
+
47
+ sig { type_parameters(:T).params(key: ::TypedCache::CacheKey, value: T.type_parameter(:T)).returns(::TypedCache::Snapshot[T.type_parameter(:T)]) }
48
+ def computed(key, value); end
49
+
50
+ sig { type_parameters(:T).params(key: ::TypedCache::CacheKey, value: T.type_parameter(:T)).returns(::TypedCache::Snapshot[T.type_parameter(:T)]) }
51
+ def updated(key, value); end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,71 @@
1
+ # typed: strict
2
+
3
+ module TypedCache
4
+ module Store
5
+ extend T::Generic
6
+
7
+ abstract!
8
+
9
+ CachedType = type_member
10
+
11
+ Error = T.type_alias { TypedCache::Error }
12
+ Key = T.type_alias { T.any(String, ::TypedCache::CacheKey) }
13
+ private_constant :Error, :Key
14
+
15
+ sig { params(key: Key).returns(::TypedCache::Either[Error, CachedType]) }
16
+ def read(key); end
17
+
18
+ sig { params(keys: T::Array[Key]).returns(::TypedCache::Either[Error, T::Array[::TypedCache::Snapshot[CachedType]]]) }
19
+ def read_all(keys); end
20
+
21
+ sig { params(key: Key, value: CachedType).returns(::TypedCache::Either[Error, ::TypedCache::Snapshot[CachedType]]) }
22
+ def write(key, value); end
23
+
24
+ sig { params(values: T::Hash[Key, CachedType]).returns(::TypedCache::Either[Error, T::Array[::TypedCache::Snapshot[CachedType]]]) }
25
+ def write_all(values); end
26
+
27
+ sig { params(key: Key).returns(::TypedCache::Either[Error, ::TypedCache::Snapshot[CachedType]]) }
28
+ def delete(key); end
29
+
30
+ sig { params(key: Key).returns(::TypedCache::CacheRef[CachedType]) }
31
+ def ref(key); end
32
+
33
+ sig { void }
34
+ def clear; end
35
+
36
+ sig { params(key: Key).returns(T::Boolean) }
37
+ def key?(key); end
38
+
39
+ sig { params(key: Key, block: T.proc.returns(T.nilable(CachedType))).returns(::TypedCache::Either[Error, ::TypedCache::Snapshot[::TypedCache::Maybe[CachedType]]]) }
40
+ def fetch(key, &block); end
41
+
42
+ sig { params(keys: T::Array[Key], block: T.proc.params(key: ::TypedCache::CacheKey).returns(T.nilable(CachedType))).returns(::TypedCache::Either[Error, T::Array[::TypedCache::Snapshot[CachedType]]]) }
43
+ def fetch_all(keys, &block); end
44
+
45
+ sig { returns(::TypedCache::Namespace) }
46
+ def namespace; end
47
+
48
+ sig { params(ns: T.any(::TypedCache::Namespace, String, T::Array[String])).returns(::TypedCache::Store[CachedType]) }
49
+ def with_namespace(ns); end
50
+
51
+ sig { returns(String) }
52
+ def store_type; end
53
+
54
+ sig { returns(T.self_type) }
55
+ def clone; end
56
+
57
+ sig { params(key: Key).returns(::TypedCache::CacheKey) }
58
+ def namespaced_key(key); end
59
+
60
+ sig { returns(::TypedCache::Instrumenter) }
61
+ def instrumenter; end
62
+
63
+ protected
64
+
65
+ sig { params(string: String).returns(String) }
66
+ def snake_case(string); end
67
+
68
+ sig { params(namespace: ::TypedCache::Namespace).returns(::TypedCache::Namespace) }
69
+ def nested_namespace(namespace); end
70
+ end
71
+ end
@@ -0,0 +1,5 @@
1
+ # typed: strict
2
+
3
+ module TypedCache
4
+ VERSION = T.let(T.unsafe(nil), String)
5
+ end
@@ -0,0 +1,49 @@
1
+ # typed: strict
2
+
3
+ module TypedCache
4
+ module Private
5
+ class Configuration < BasicObject
6
+ class Instrumentation < BasicObject
7
+ sig { returns(T::Boolean) }
8
+ attr_accessor :enabled
9
+
10
+ sig { returns(String) }
11
+ attr_accessor :namespace
12
+
13
+ sig { returns(Symbol) }
14
+ attr_accessor :instrumenter
15
+ end
16
+
17
+ sig { returns(String) }
18
+ attr_accessor :namespace
19
+
20
+ sig { returns(String) }
21
+ attr_accessor :cache_delimiter
22
+
23
+ sig { returns(::TypedCache::Private::Configuration::Instrumentation) }
24
+ def instrumentation; end
25
+ end
26
+ end
27
+
28
+ class << self
29
+ sig { params(block: T.proc.params(config: ::TypedCache::Private::Configuration).void).void }
30
+ def configure(&block); end
31
+
32
+ sig { returns(::TypedCache::Private::Configuration) }
33
+ def config; end
34
+
35
+ sig { returns(::TypedCache::CacheBuilder) }
36
+ def builder; end
37
+
38
+ sig { returns(T.class_of(::TypedCache::Backends)) }
39
+ def backends; end
40
+
41
+ sig { returns(T.class_of(::TypedCache::Decorators)) }
42
+ def decorators; end
43
+
44
+ sig { returns(T.class_of(::TypedCache::Instrumenters)) }
45
+ def instrumenters; end
46
+ end
47
+
48
+ private_constant :Backends, :Decorators, :Instrumenters
49
+ end
@@ -18,16 +18,28 @@ module TypedCache
18
18
 
19
19
  # @rbs override
20
20
  # : (cache_key) -> either[Error, Snapshot[V]]
21
- def get: ...
21
+ def read: ...
22
22
 
23
23
  # @rbs override
24
24
  # : (cache_key, V) -> either[Error, Snapshot[V]]
25
- def set: ...
25
+ def write: ...
26
+
27
+ # @rbs override
28
+ # : (Hash[cache_key, V]) -> either[Error, Array[Snapshot[V]]]
29
+ def write_all: ...
26
30
 
27
31
  # @rbs override
28
32
  # : (cache_key) -> either[Error, Snapshot[V]]
29
33
  def delete: ...
30
34
 
35
+ # @rbs override
36
+ # : (Array[cache_key]) -> either[Error, Array[Snapshot[V]]]
37
+ def read_all: ...
38
+
39
+ # @rbs override
40
+ # : (Array[cache_key]) { (CacheKey) -> V? } -> either[Error, Array[Snapshot[V]]]
41
+ def fetch_all: ...
42
+
31
43
  # @rbs override
32
44
  # : (cache_key) -> bool
33
45
  def key?: ...
@@ -55,11 +55,11 @@ module TypedCache
55
55
 
56
56
  # @rbs override
57
57
  # : (cache_key) -> either[Error, Snapshot[V]]
58
- def get: ...
58
+ def read: ...
59
59
 
60
60
  # @rbs override
61
61
  # : (cache_key, V) -> either[Error, Snapshot[V]]
62
- def set: ...
62
+ def write: ...
63
63
 
64
64
  # @rbs override
65
65
  # : (cache_key) -> either[Error, Snapshot[V]]
@@ -29,5 +29,10 @@ module TypedCache
29
29
  def ==: (Object) -> bool
30
30
 
31
31
  alias eql? ==
32
+
33
+ private
34
+
35
+ # @rbs (String) -> String
36
+ def delimiter: (String) -> String
32
37
  end
33
38
  end
@@ -16,11 +16,11 @@ module TypedCache
16
16
 
17
17
  # Gets a value from the cache as a snapshot
18
18
  # : -> either[Error, Snapshot[V]]
19
- def get: () -> either[Error, Snapshot[V]]
19
+ def read: () -> either[Error, Snapshot[V]]
20
20
 
21
21
  # Sets a value in the cache and returns it as an updated snapshot
22
22
  # : (V) -> either[Error, Snapshot[V]]
23
- def set: (V) -> either[Error, Snapshot[V]]
23
+ def write: (V) -> either[Error, Snapshot[V]]
24
24
 
25
25
  # Deletes the value from the cache and returns the deleted value as a snapshot
26
26
  # : -> either[Error, Snapshot[V]]
@@ -77,8 +77,8 @@ module TypedCache
77
77
  def scope: [R] (String) -> CacheRef[R]
78
78
 
79
79
  # Pattern matching support for Either[Error, Snapshot[V]] results
80
- # : [R] () { (Error) -> R } () { (Snapshot[V]) -> R } -> R
81
- def fold: (untyped left_fn, untyped right_fn) -> untyped
80
+ # : [R] (^(Error) -> R, ^(Snapshot[V]) -> R) -> R
81
+ def fold: [R] (^(Error) -> R, ^(Snapshot[V]) -> R) -> R
82
82
 
83
83
  # Convenience method to work with the snapshot directly
84
84
  # : [R] () { (Snapshot[V]) -> R } -> either[Error, R]
@@ -18,5 +18,9 @@ module TypedCache
18
18
  # @rbs override
19
19
  # : (cache_key) -> either[Error, CacheRef[V]]
20
20
  def ref: ...
21
+
22
+ # @rbs override
23
+ # : (self) -> void
24
+ def initialize_copy: ...
21
25
  end
22
26
  end
@@ -20,12 +20,12 @@ module TypedCache
20
20
  def initialize: (TypedCache::Store[V], instrumenter: Instrumenter) -> void
21
21
 
22
22
  # @rbs override
23
- # : -> String
24
- def store_type: ...
23
+ # : (self) -> self
24
+ def initialize_copy: ...
25
25
 
26
26
  # @rbs override
27
- # @rbs (key) -> CacheRef[V]
28
- def ref: ...
27
+ # : -> String
28
+ def store_type: ...
29
29
 
30
30
  # Additional methods that might exist on the wrapped store
31
31
  def respond_to_missing?: (untyped method_name, ?untyped include_private) -> untyped
@@ -21,6 +21,10 @@ module TypedCache
21
21
 
22
22
  def right?: () -> bool
23
23
 
24
+ def right_or_else: (^(E) -> void) -> R
25
+
26
+ def right_or_raise!: () -> R
27
+
24
28
  def map: [T] () { (R) -> T } -> either[E, T]
25
29
 
26
30
  def bind: [E2, R2] () { (R) -> either[E2, R2] } -> either[E | E2, R2]
@@ -36,6 +40,8 @@ module TypedCache
36
40
 
37
41
  attr_reader error: E
38
42
 
43
+ alias value error
44
+
39
45
  # : (E) -> void
40
46
  def initialize: (E) -> void
41
47
 
@@ -47,6 +53,14 @@ module TypedCache
47
53
  # : -> false
48
54
  def right?: ...
49
55
 
56
+ # @rbs override
57
+ # : (^(E) -> void) -> bot
58
+ def right_or_else: ...
59
+
60
+ # @rbs override
61
+ # : -> bot
62
+ def right_or_raise!: ...
63
+
50
64
  # @rbs override
51
65
  # : [T] () { (R) -> T } -> either[E, T]
52
66
  def map: ...
@@ -73,6 +87,8 @@ module TypedCache
73
87
 
74
88
  attr_reader value: R
75
89
 
90
+ alias result value
91
+
76
92
  # : (R) -> void
77
93
  def initialize: (R) -> void
78
94
 
@@ -84,6 +100,14 @@ module TypedCache
84
100
  # : -> true
85
101
  def right?: ...
86
102
 
103
+ # @rbs override
104
+ # : (^(E) -> void) -> R
105
+ def right_or_else: ...
106
+
107
+ # @rbs override
108
+ # : -> R
109
+ def right_or_raise!: ...
110
+
87
111
  # @rbs override
88
112
  # : [T] () { (R) -> T } -> either[E, T]
89
113
  def map: ...
@@ -14,17 +14,17 @@ module TypedCache
14
14
  # : -> String
15
15
  def namespace: () -> String
16
16
 
17
- # @rbs (String, String, **untyped) -> Hash[Symbol, untyped]
18
- def build_payload: (String, String, **untyped) -> Hash[Symbol, untyped]
19
-
20
17
  # @rbs () -> bool
21
18
  def enabled?: () -> bool
22
19
 
20
+ private
21
+
22
+ # @rbs (String, String, **untyped) -> Hash[Symbol, untyped]
23
+ def build_payload: (String, String, **untyped) -> Hash[Symbol, untyped]
24
+
23
25
  # @rbs (String) -> String
24
26
  def event_name: (String) -> String
25
27
 
26
- private
27
-
28
28
  # @rbs () -> TypedCache::_TypedCacheInstrumentationConfig
29
29
  def config: () -> TypedCache::_TypedCacheInstrumentationConfig
30
30
  end
@@ -24,6 +24,9 @@ module TypedCache
24
24
  # @rbs (String) -> maybe[class]
25
25
  def get: (String) -> maybe[class]
26
26
 
27
+ # @rbs () -> void
28
+ def clear_namespace_cache: () -> void
29
+
27
30
  # @rbs () -> Concurrent::Map[String, Class[Instrumenter & NamespacedSingleton]]
28
31
  def namespace_cache: () -> Concurrent::Map[String, Class[Instrumenter & NamespacedSingleton]]
29
32
  end
@@ -15,6 +15,8 @@ module TypedCache
15
15
  # @rbs () -> Registry[Symbol, Class[Instrumenter]]
16
16
  def self.registry: () -> Registry[Symbol, Class[Instrumenter]]
17
17
 
18
+ def register: (Symbol, Class[Instrumenter]) -> void
19
+
18
20
  def resolve: (Symbol, **untyped) -> either[Error, Instrumenter]
19
21
 
20
22
  def available: () -> Array[Symbol]