/
inoculate.rbs
62 lines (46 loc) 路 1.48 KB
/
inoculate.rbs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
module Inoculate
VERSION: String
interface _ToSymbol
def to_sym: () -> Symbol
end
type callable = ^() -> untyped
type lifecycle_name = :transient | :instance
type builder_name = Symbol
type blueprint = { lifecycle: lifecycle_name, factory: callable, accessor_module: Module? }
module Errors
class Error < StandardError
end
class InvalidName < Error
end
class AlreadyRegistered < Error
end
class UnknownName < Error
end
class RequiresCallable < Error
end
end
module Providers
end
class Manufacturer
attr_reader registered_blueprints: Hash[builder_name, blueprint]
def transient: (builder_name | _ToSymbol) { () -> void } -> void
def instance: (builder_name | _ToSymbol) { () -> void } -> void
def singleton: (builder_name | _ToSymbol) { () -> void } -> void
def thread_singleton: (builder_name | _ToSymbol) { () -> void } -> void
end
class Configurer
def initialize: (Manufacturer) -> void
def transient: (builder_name | _ToSymbol) { () -> void } -> nil
def instance: (builder_name | _ToSymbol) { () -> void } -> nil
def singleton: (builder_name | _ToSymbol) { () -> void } -> nil
def thread_singleton: (builder_name | _ToSymbol) { () -> void } -> nil
private
attr_reader manufacturer: Manufacturer
end
module Porter
def self.[]: (Symbol) -> Module
end
def self.initialize: () { (Configurer) -> void } -> void
# "Private"
def self.manufacturer: () -> Manufacturer
end