hanami-lambda 0.2.0 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -2
- data/Rakefile +10 -1
- data/Steepfile +13 -0
- data/lib/hanami/lambda/dispatcher.rb +1 -1
- data/lib/hanami/lambda/rack.rb +4 -1
- data/lib/hanami/lambda/version.rb +1 -1
- data/lib/hanami/lambda.rb +2 -1
- data/rbs_collection.lock.yaml +168 -0
- data/rbs_collection.yaml +23 -0
- data/sig/hanami/lambda/application.rbs +40 -0
- data/sig/hanami/lambda/dispatcher.rbs +75 -0
- data/sig/hanami/lambda/errors.rbs +0 -0
- data/sig/hanami/lambda/event.rbs +47 -0
- data/sig/hanami/lambda/events/base.rbs +8 -0
- data/sig/hanami/lambda/events/event_bridge.rbs +8 -0
- data/sig/hanami/lambda/function.rbs +42 -0
- data/sig/hanami/lambda/rack.rbs +32 -0
- data/sig/hanami/lambda/types.rbs +18 -0
- data/sig/hanami/lambda.rbs +47 -1
- data/sig/shims/dry.rbs +15 -0
- data/sig/shims/hanami.rbs +24 -0
- data/sig/shims/rack.rbs +3 -0
- data/sig/shims/zeitwerk.rbs +17 -0
- metadata +32 -3
- data/lib/hanami/errors.rb +0 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d92cc04b22fe527bdbc9e9a09f08fa7ac0497edd888f63feaac59eabdb3758eb
|
4
|
+
data.tar.gz: 32442bf8245dbe01c98f4e21168ffe34f7b6b85e7f8418915e5c17af0694c7b4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e45dc7a58552b2f9612d8f32de3fcc2111696db8e31dbc96219703caa8484bd31ab29a94fedb4f48eae00edf02eba3bf10e835381d69459fcd83f540abfbd1c2
|
7
|
+
data.tar.gz: a57c0a05b04a9e334da771445ee08a12d5ad4381365156e481c87af3a90fdc99d03d6e8f3d3b9497c5612954c745d0d6021e67f365a6c2c934f07e5bde7fd69a
|
data/README.md
CHANGED
@@ -52,7 +52,7 @@ end
|
|
52
52
|
|
53
53
|
## Usage
|
54
54
|
|
55
|
-
Use `config/
|
55
|
+
Use `config/app.Hanami::Lambda.call` as the function handler
|
56
56
|
|
57
57
|
```yaml
|
58
58
|
# AWS SAM
|
@@ -61,7 +61,7 @@ Resources:
|
|
61
61
|
Type: AWS::Serverless::Function
|
62
62
|
Properties:
|
63
63
|
CodeUri: .
|
64
|
-
Handler: config/
|
64
|
+
Handler: config/app.Hanami::Lambda.call
|
65
65
|
Runtime: ruby3.2
|
66
66
|
```
|
67
67
|
|
data/Rakefile
CHANGED
@@ -9,4 +9,13 @@ require "rubocop/rake_task"
|
|
9
9
|
|
10
10
|
RuboCop::RakeTask.new
|
11
11
|
|
12
|
-
task
|
12
|
+
task :steep do
|
13
|
+
# Steep doesn't provide Rake integration yet,
|
14
|
+
# but can do that ourselves
|
15
|
+
require "steep"
|
16
|
+
require "steep/cli"
|
17
|
+
|
18
|
+
Steep::CLI.new(argv: ["check"], stdout: $stdout, stderr: $stderr, stdin: $stdin).run
|
19
|
+
end
|
20
|
+
|
21
|
+
task default: %i[spec rubocop steep]
|
data/Steepfile
ADDED
data/lib/hanami/lambda/rack.rb
CHANGED
@@ -47,7 +47,10 @@ module Hanami
|
|
47
47
|
::Rack::RACK_INPUT => StringIO.new(event["body"] || ""),
|
48
48
|
::Hanami::Lambda::LAMBDA_EVENT => event,
|
49
49
|
::Hanami::Lambda::LAMBDA_CONTEXT => context
|
50
|
-
}
|
50
|
+
}.tap do |env|
|
51
|
+
content_type = event.dig("headers", "Content-Type")
|
52
|
+
env["CONTENT_TYPE"] = content_type if content_type
|
53
|
+
end
|
51
54
|
end
|
52
55
|
end
|
53
56
|
end
|
data/lib/hanami/lambda.rb
CHANGED
@@ -40,6 +40,7 @@ module Hanami
|
|
40
40
|
#
|
41
41
|
# @api public
|
42
42
|
def self.call(event:, context:)
|
43
|
+
require "bundler/setup"
|
43
44
|
app.boot
|
44
45
|
app.handle_lambda(event: event, context: context)
|
45
46
|
end
|
@@ -64,7 +65,7 @@ module Hanami
|
|
64
65
|
# @api private
|
65
66
|
def self.gem_loader
|
66
67
|
@gem_loader ||= Zeitwerk::Loader.new.tap do |loader|
|
67
|
-
root = File.expand_path("..", __dir__)
|
68
|
+
root = File.expand_path("..", __dir__ || "")
|
68
69
|
loader.tag = "hanami-lambda"
|
69
70
|
loader.inflector = Zeitwerk::GemInflector.new("#{root}/hanami-lambda.rb")
|
70
71
|
loader.push_dir(root)
|
@@ -0,0 +1,168 @@
|
|
1
|
+
---
|
2
|
+
path: ".gem_rbs_collection"
|
3
|
+
gems:
|
4
|
+
- name: abbrev
|
5
|
+
version: '0'
|
6
|
+
source:
|
7
|
+
type: stdlib
|
8
|
+
- name: activesupport
|
9
|
+
version: '7.0'
|
10
|
+
source:
|
11
|
+
type: git
|
12
|
+
name: ruby/gem_rbs_collection
|
13
|
+
revision: ec140aff951e3af39846eed4525ba5d040d294fa
|
14
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
15
|
+
repo_dir: gems
|
16
|
+
- name: base64
|
17
|
+
version: '0'
|
18
|
+
source:
|
19
|
+
type: stdlib
|
20
|
+
- name: bigdecimal
|
21
|
+
version: '0'
|
22
|
+
source:
|
23
|
+
type: stdlib
|
24
|
+
- name: cgi
|
25
|
+
version: '0'
|
26
|
+
source:
|
27
|
+
type: stdlib
|
28
|
+
- name: connection_pool
|
29
|
+
version: '2.4'
|
30
|
+
source:
|
31
|
+
type: git
|
32
|
+
name: ruby/gem_rbs_collection
|
33
|
+
revision: ec140aff951e3af39846eed4525ba5d040d294fa
|
34
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
35
|
+
repo_dir: gems
|
36
|
+
- name: csv
|
37
|
+
version: '0'
|
38
|
+
source:
|
39
|
+
type: stdlib
|
40
|
+
- name: date
|
41
|
+
version: '0'
|
42
|
+
source:
|
43
|
+
type: stdlib
|
44
|
+
- name: erb
|
45
|
+
version: '0'
|
46
|
+
source:
|
47
|
+
type: stdlib
|
48
|
+
- name: fileutils
|
49
|
+
version: '0'
|
50
|
+
source:
|
51
|
+
type: stdlib
|
52
|
+
- name: forwardable
|
53
|
+
version: '0'
|
54
|
+
source:
|
55
|
+
type: stdlib
|
56
|
+
- name: i18n
|
57
|
+
version: '1.10'
|
58
|
+
source:
|
59
|
+
type: git
|
60
|
+
name: ruby/gem_rbs_collection
|
61
|
+
revision: ec140aff951e3af39846eed4525ba5d040d294fa
|
62
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
63
|
+
repo_dir: gems
|
64
|
+
- name: json
|
65
|
+
version: '0'
|
66
|
+
source:
|
67
|
+
type: stdlib
|
68
|
+
- name: listen
|
69
|
+
version: '3.2'
|
70
|
+
source:
|
71
|
+
type: git
|
72
|
+
name: ruby/gem_rbs_collection
|
73
|
+
revision: ec140aff951e3af39846eed4525ba5d040d294fa
|
74
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
75
|
+
repo_dir: gems
|
76
|
+
- name: logger
|
77
|
+
version: '0'
|
78
|
+
source:
|
79
|
+
type: stdlib
|
80
|
+
- name: minitest
|
81
|
+
version: '0'
|
82
|
+
source:
|
83
|
+
type: stdlib
|
84
|
+
- name: monitor
|
85
|
+
version: '0'
|
86
|
+
source:
|
87
|
+
type: stdlib
|
88
|
+
- name: mutex_m
|
89
|
+
version: '0'
|
90
|
+
source:
|
91
|
+
type: stdlib
|
92
|
+
- name: optparse
|
93
|
+
version: '0'
|
94
|
+
source:
|
95
|
+
type: stdlib
|
96
|
+
- name: pathname
|
97
|
+
version: '0'
|
98
|
+
source:
|
99
|
+
type: stdlib
|
100
|
+
- name: rack
|
101
|
+
version: '2.2'
|
102
|
+
source:
|
103
|
+
type: git
|
104
|
+
name: ruby/gem_rbs_collection
|
105
|
+
revision: ec140aff951e3af39846eed4525ba5d040d294fa
|
106
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
107
|
+
repo_dir: gems
|
108
|
+
- name: rainbow
|
109
|
+
version: '3.0'
|
110
|
+
source:
|
111
|
+
type: git
|
112
|
+
name: ruby/gem_rbs_collection
|
113
|
+
revision: ec140aff951e3af39846eed4525ba5d040d294fa
|
114
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
115
|
+
repo_dir: gems
|
116
|
+
- name: rake
|
117
|
+
version: '13.0'
|
118
|
+
source:
|
119
|
+
type: git
|
120
|
+
name: ruby/gem_rbs_collection
|
121
|
+
revision: ec140aff951e3af39846eed4525ba5d040d294fa
|
122
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
123
|
+
repo_dir: gems
|
124
|
+
- name: rbs
|
125
|
+
version: 3.4.2
|
126
|
+
source:
|
127
|
+
type: rubygems
|
128
|
+
- name: rdoc
|
129
|
+
version: '0'
|
130
|
+
source:
|
131
|
+
type: stdlib
|
132
|
+
- name: securerandom
|
133
|
+
version: '0'
|
134
|
+
source:
|
135
|
+
type: stdlib
|
136
|
+
- name: singleton
|
137
|
+
version: '0'
|
138
|
+
source:
|
139
|
+
type: stdlib
|
140
|
+
- name: steep
|
141
|
+
version: 1.6.0
|
142
|
+
source:
|
143
|
+
type: rubygems
|
144
|
+
- name: strscan
|
145
|
+
version: '0'
|
146
|
+
source:
|
147
|
+
type: stdlib
|
148
|
+
- name: tempfile
|
149
|
+
version: '0'
|
150
|
+
source:
|
151
|
+
type: stdlib
|
152
|
+
- name: time
|
153
|
+
version: '0'
|
154
|
+
source:
|
155
|
+
type: stdlib
|
156
|
+
- name: timeout
|
157
|
+
version: '0'
|
158
|
+
source:
|
159
|
+
type: stdlib
|
160
|
+
- name: tsort
|
161
|
+
version: '0'
|
162
|
+
source:
|
163
|
+
type: stdlib
|
164
|
+
- name: uri
|
165
|
+
version: '0'
|
166
|
+
source:
|
167
|
+
type: stdlib
|
168
|
+
gemfile_lock_path: Gemfile.lock
|
data/rbs_collection.yaml
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
# Download sources
|
2
|
+
sources:
|
3
|
+
- type: git
|
4
|
+
name: ruby/gem_rbs_collection
|
5
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
6
|
+
revision: main
|
7
|
+
repo_dir: gems
|
8
|
+
|
9
|
+
# You can specify local directories as sources also.
|
10
|
+
# - type: local
|
11
|
+
# path: path/to/your/local/repository
|
12
|
+
|
13
|
+
# A directory to install the downloaded RBSs
|
14
|
+
path: .gem_rbs_collection
|
15
|
+
|
16
|
+
gems:
|
17
|
+
# If you want to avoid installing rbs files for gems, you can specify them here.
|
18
|
+
- name: parser
|
19
|
+
ignore: true
|
20
|
+
- name: concurrent-ruby
|
21
|
+
ignore: true
|
22
|
+
- name: rubocop
|
23
|
+
ignore: true
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module Hanami
|
2
|
+
module Lambda
|
3
|
+
HANDLER_KEY_NAMESPACE: "functions"
|
4
|
+
|
5
|
+
# The application to configure for AWS Lambda.
|
6
|
+
#
|
7
|
+
# @since 0.1.0
|
8
|
+
module Application
|
9
|
+
include Hanami::_App
|
10
|
+
extend Hanami::_App
|
11
|
+
|
12
|
+
@lambda_dispatcher: untyped
|
13
|
+
|
14
|
+
# @since 0.2.0
|
15
|
+
# @api private
|
16
|
+
def self.extended: (Class base) -> untyped
|
17
|
+
|
18
|
+
# Dispatch event to the handler
|
19
|
+
#
|
20
|
+
# @api private
|
21
|
+
# @since 0.1.0
|
22
|
+
def handle_lambda: (event: untyped, context: untyped) -> untyped
|
23
|
+
|
24
|
+
# Get lambda dispatcher
|
25
|
+
#
|
26
|
+
# @return [Hanami::Lambda::Dispatcher] the dispatcher
|
27
|
+
#
|
28
|
+
# @since 0.1.0
|
29
|
+
def lambda_dispatcher: () -> untyped
|
30
|
+
|
31
|
+
# Load lambda dispatcher
|
32
|
+
#
|
33
|
+
# @return [Hanami::Lambda::Dispatcher] the dispatcher
|
34
|
+
#
|
35
|
+
# @since 0.2.0
|
36
|
+
# @api private
|
37
|
+
def load_lambda_dispatcher: () -> untyped
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
module Hanami
|
2
|
+
module Lambda
|
3
|
+
# Dispatch Event to the Handler
|
4
|
+
#
|
5
|
+
# @api private
|
6
|
+
class Dispatcher
|
7
|
+
self.@definitions: untyped
|
8
|
+
|
9
|
+
@handlers: untyped
|
10
|
+
|
11
|
+
@resolver: untyped
|
12
|
+
|
13
|
+
@default: untyped
|
14
|
+
|
15
|
+
# @since 0.2.0
|
16
|
+
# @api private
|
17
|
+
DEFAULT_RESOLVER: untyped
|
18
|
+
|
19
|
+
attr_reader rack_app: untyped
|
20
|
+
|
21
|
+
attr_reader handlers: untyped
|
22
|
+
|
23
|
+
attr_reader default: untyped
|
24
|
+
|
25
|
+
attr_reader resolver: untyped
|
26
|
+
|
27
|
+
# @since 0.2.0
|
28
|
+
def initialize: (rack_app: untyped, ?resolver: untyped) -> void
|
29
|
+
|
30
|
+
# Call the handler
|
31
|
+
#
|
32
|
+
# @param event [Hash] the event
|
33
|
+
# @param context [Hash] the context
|
34
|
+
#
|
35
|
+
# @since 0.2.0
|
36
|
+
def call: (event: untyped, context: untyped) -> untyped
|
37
|
+
|
38
|
+
# Lookup the handler
|
39
|
+
#
|
40
|
+
# @param event [Hash] the event
|
41
|
+
# @param context [Hash] the context
|
42
|
+
#
|
43
|
+
# @return [Handler] the handler
|
44
|
+
def lookup: (event: untyped, context: untyped) -> untyped
|
45
|
+
|
46
|
+
# Register a handler
|
47
|
+
#
|
48
|
+
# @param name [String] the name of the handler
|
49
|
+
# @param args [Array] the arguments to pass to the handler
|
50
|
+
# @param kwargs [Hash] the keyword arguments to pass to the handler
|
51
|
+
# @param block [Proc] the block to pass to the handler
|
52
|
+
#
|
53
|
+
# @since 0.2.0
|
54
|
+
def register: (String name, *Array[untyped] args, ?to: String?) -> nil
|
55
|
+
|
56
|
+
# Definitions of handlers
|
57
|
+
#
|
58
|
+
# @api private
|
59
|
+
def self.definitions: () -> untyped
|
60
|
+
|
61
|
+
# Define function delegate action
|
62
|
+
#
|
63
|
+
# @param name [String] the name of the handler
|
64
|
+
# @param args [Array] the arguments to pass to the handler
|
65
|
+
# @param kwargs [Hash] the keyword arguments to pass to the handler
|
66
|
+
# @param block [Proc] the block to pass to the handler
|
67
|
+
def self.delegate: (untyped name, *untyped args, **untyped kwargs) { () -> untyped } -> untyped
|
68
|
+
|
69
|
+
# Build Dispatcher
|
70
|
+
#
|
71
|
+
# @api private
|
72
|
+
def self.build: (rack_app: untyped, resolver: untyped) -> untyped
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
File without changes
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module Hanami
|
2
|
+
module Lambda
|
3
|
+
# Base event class
|
4
|
+
#
|
5
|
+
# @since 0.2.0
|
6
|
+
class Event
|
7
|
+
@raw: untyped
|
8
|
+
|
9
|
+
@event: untyped
|
10
|
+
|
11
|
+
attr_reader raw: untyped
|
12
|
+
|
13
|
+
# @param event [Hash] the raw event from AWS Lambda
|
14
|
+
# @return [Hanami::Lambda::Event]
|
15
|
+
#
|
16
|
+
# @since 0.2.0
|
17
|
+
def initialize: (untyped event) -> void
|
18
|
+
|
19
|
+
# Return the value of the given key
|
20
|
+
#
|
21
|
+
# @param key [Symbol] the key to fetch
|
22
|
+
#
|
23
|
+
# @return [Object,NilClass] the associated value if found
|
24
|
+
#
|
25
|
+
# @since 0.2.0
|
26
|
+
def []: (untyped key) -> untyped
|
27
|
+
|
28
|
+
# Return an value associated with the given event key
|
29
|
+
#
|
30
|
+
# @param keys [Array<Symbol, Integer>] the keys to fetch
|
31
|
+
#
|
32
|
+
# @return [Object,NilClass] the associated value if found
|
33
|
+
#
|
34
|
+
# @since 0.2.0
|
35
|
+
def get: (*untyped keys) -> untyped
|
36
|
+
|
37
|
+
alias dig get
|
38
|
+
|
39
|
+
# Return the hash of the event
|
40
|
+
#
|
41
|
+
# @return [Hash] the hash of the event
|
42
|
+
#
|
43
|
+
# @since 0.2.0
|
44
|
+
def to_h: () -> untyped
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module Hanami
|
2
|
+
module Lambda
|
3
|
+
# The base class for handler
|
4
|
+
#
|
5
|
+
# @since 0.2.0
|
6
|
+
class Function
|
7
|
+
extend ClassMethods
|
8
|
+
# Override the Ruby's hook for modules
|
9
|
+
#
|
10
|
+
# @param base [Class] the target class
|
11
|
+
#
|
12
|
+
# @since 0.2.0
|
13
|
+
# @api private
|
14
|
+
def self.inherited: (untyped subclass) -> untyped
|
15
|
+
|
16
|
+
module ClassMethods
|
17
|
+
@event_type: untyped
|
18
|
+
|
19
|
+
# Return the class which define the event type
|
20
|
+
#
|
21
|
+
# @return [Class] the class which define the event type
|
22
|
+
#
|
23
|
+
# @since 0.2.0
|
24
|
+
# @api private
|
25
|
+
def event_type: () -> untyped
|
26
|
+
|
27
|
+
# Define the event type
|
28
|
+
#
|
29
|
+
# @param klass [Class] the class which define the event type
|
30
|
+
#
|
31
|
+
# @since 0.2.0
|
32
|
+
# @api private
|
33
|
+
def type: (untyped klass) -> untyped
|
34
|
+
end
|
35
|
+
|
36
|
+
# @since 0.2.0
|
37
|
+
def call: (event: untyped, context: untyped) -> untyped
|
38
|
+
|
39
|
+
def handle: (untyped _event, untyped _context) -> nil
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module Hanami
|
2
|
+
module Lambda
|
3
|
+
# Rack interface for AWS Lambda.
|
4
|
+
#
|
5
|
+
# @api private
|
6
|
+
# @since 0.1.0
|
7
|
+
class Rack
|
8
|
+
@app: untyped
|
9
|
+
|
10
|
+
attr_reader app: untyped
|
11
|
+
|
12
|
+
# Initialize the Rack interface
|
13
|
+
#
|
14
|
+
# @since 0.1.0
|
15
|
+
def initialize: (untyped app) -> void
|
16
|
+
|
17
|
+
# Handle the request
|
18
|
+
#
|
19
|
+
# @return [Hash] the response
|
20
|
+
#
|
21
|
+
# @since 0.1.0
|
22
|
+
def call: (event: untyped, context: untyped) -> { statusCode: untyped, headers: untyped, body: untyped }
|
23
|
+
|
24
|
+
# Build the Rack environment
|
25
|
+
#
|
26
|
+
# @return [Hash] the Rack environment
|
27
|
+
#
|
28
|
+
# @since 0.1.0
|
29
|
+
def build_env: (untyped event, untyped context) -> ::Hash[untyped, untyped]
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
data/sig/hanami/lambda.rbs
CHANGED
@@ -1,6 +1,52 @@
|
|
1
|
+
# @see Hanami::Lambda
|
2
|
+
# @since 0.1.0
|
1
3
|
module Hanami
|
4
|
+
# Make Hanami can be run on AWS Lambda.
|
5
|
+
#
|
6
|
+
# @since 0.1.0
|
7
|
+
# @api private
|
2
8
|
module Lambda
|
3
9
|
VERSION: String
|
4
|
-
|
10
|
+
|
11
|
+
self.@_mutex: Mutex
|
12
|
+
|
13
|
+
self.@gem_loader: Zeitwerk::Loader
|
14
|
+
|
15
|
+
# @since 0.1.0
|
16
|
+
LAMBDA_EVENT: "lambda.event"
|
17
|
+
|
18
|
+
# @since 0.1.0
|
19
|
+
LAMBDA_CONTEXT: "lambda.context"
|
20
|
+
|
21
|
+
# @since 0.2.0
|
22
|
+
LAMBDA_CONFIG_PATH: String
|
23
|
+
|
24
|
+
# @since 0.2.0
|
25
|
+
LAMBDA_CLASS_NAME: "Lambda"
|
26
|
+
|
27
|
+
# Return the application
|
28
|
+
#
|
29
|
+
# @api public
|
30
|
+
# @since 0.1.0
|
31
|
+
#
|
32
|
+
# @return [Hanami::Lambda::Application] the application
|
33
|
+
def self.app: () -> untyped
|
34
|
+
|
35
|
+
# Run the application
|
36
|
+
#
|
37
|
+
# @api public
|
38
|
+
def self.call: (event: Hash[String, String], context: untyped) -> untyped
|
39
|
+
|
40
|
+
# Inflector to convert event key
|
41
|
+
#
|
42
|
+
# @return [Dry::Inflector]
|
43
|
+
#
|
44
|
+
# @since 0.2.0
|
45
|
+
# @api private
|
46
|
+
def self.inflector: () -> Dry::Inflector
|
47
|
+
|
48
|
+
# @since 0.1.0
|
49
|
+
# @api private
|
50
|
+
def self.gem_loader: () -> Zeitwerk::Loader
|
5
51
|
end
|
6
52
|
end
|
data/sig/shims/dry.rbs
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
module Dry
|
2
|
+
interface _Type
|
3
|
+
end
|
4
|
+
|
5
|
+
def self.Types: (?default: Symbol) -> Module
|
6
|
+
|
7
|
+
class Struct
|
8
|
+
def self.transform_keys: () ?{ (String) -> (String | Symbol) } -> untyped
|
9
|
+
def self.attribute: (Symbol, _Type) -> untyped
|
10
|
+
end
|
11
|
+
|
12
|
+
class Inflector
|
13
|
+
def underscore: (String) -> String
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Hanami
|
2
|
+
def self.app: () -> App
|
3
|
+
|
4
|
+
class App
|
5
|
+
extend _App
|
6
|
+
|
7
|
+
def resolve: (String) -> untyped
|
8
|
+
def rack_app: () -> _Rack
|
9
|
+
end
|
10
|
+
|
11
|
+
interface _App
|
12
|
+
def boot: () -> void
|
13
|
+
def root: () -> (Pathname & _ToStr)
|
14
|
+
def app: () -> App
|
15
|
+
def namespace: () -> Module
|
16
|
+
def prepare_load_path: () -> void
|
17
|
+
end
|
18
|
+
|
19
|
+
module Utils
|
20
|
+
class Hash
|
21
|
+
def self.deep_symbolize: (::Hash[String, String]) -> ::Hash[Symbol, String]
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/sig/shims/rack.rbs
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
module Zeitwerk
|
2
|
+
class GemInflector
|
3
|
+
def initialize: (String) -> untyped
|
4
|
+
def inflect: (Hash[String, String]) -> untyped
|
5
|
+
end
|
6
|
+
|
7
|
+
class Loader
|
8
|
+
attr_reader inflector: GemInflector
|
9
|
+
|
10
|
+
attr_writer inflector: GemInflector
|
11
|
+
attr_writer tag: String
|
12
|
+
|
13
|
+
def ignore: (*String) -> untyped
|
14
|
+
def push_dir: (String) -> untyped
|
15
|
+
def setup: () -> untyped
|
16
|
+
end
|
17
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hanami-lambda
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aotokitsuruya
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-05-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: zeitwerk
|
@@ -94,6 +94,20 @@ dependencies:
|
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '1.59'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: steep
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 1.6.0
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 1.6.0
|
97
111
|
description: Hanami Lambda is a gem that provides a way to run hanami application
|
98
112
|
on AWS Lambda.
|
99
113
|
email:
|
@@ -107,8 +121,8 @@ files:
|
|
107
121
|
- LICENSE.txt
|
108
122
|
- README.md
|
109
123
|
- Rakefile
|
124
|
+
- Steepfile
|
110
125
|
- lib/hanami-lambda.rb
|
111
|
-
- lib/hanami/errors.rb
|
112
126
|
- lib/hanami/lambda.rb
|
113
127
|
- lib/hanami/lambda/application.rb
|
114
128
|
- lib/hanami/lambda/dispatcher.rb
|
@@ -119,7 +133,22 @@ files:
|
|
119
133
|
- lib/hanami/lambda/rack.rb
|
120
134
|
- lib/hanami/lambda/types.rb
|
121
135
|
- lib/hanami/lambda/version.rb
|
136
|
+
- rbs_collection.lock.yaml
|
137
|
+
- rbs_collection.yaml
|
122
138
|
- sig/hanami/lambda.rbs
|
139
|
+
- sig/hanami/lambda/application.rbs
|
140
|
+
- sig/hanami/lambda/dispatcher.rbs
|
141
|
+
- sig/hanami/lambda/errors.rbs
|
142
|
+
- sig/hanami/lambda/event.rbs
|
143
|
+
- sig/hanami/lambda/events/base.rbs
|
144
|
+
- sig/hanami/lambda/events/event_bridge.rbs
|
145
|
+
- sig/hanami/lambda/function.rbs
|
146
|
+
- sig/hanami/lambda/rack.rbs
|
147
|
+
- sig/hanami/lambda/types.rbs
|
148
|
+
- sig/shims/dry.rbs
|
149
|
+
- sig/shims/hanami.rbs
|
150
|
+
- sig/shims/rack.rbs
|
151
|
+
- sig/shims/zeitwerk.rbs
|
123
152
|
homepage: https://github.com/elct9620/hanami-lambda
|
124
153
|
licenses:
|
125
154
|
- MIT
|
data/lib/hanami/errors.rb
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Hanami
|
4
|
-
module Lambda
|
5
|
-
# Base error for Hanami::Lambda
|
6
|
-
#
|
7
|
-
# @api public
|
8
|
-
# @since 0.2.0
|
9
|
-
Error = Class.new(StandardError)
|
10
|
-
|
11
|
-
# Raised when {Hanami::Lambda::Application} fails to load.
|
12
|
-
#
|
13
|
-
# @api public
|
14
|
-
# @since 0.2.0
|
15
|
-
AppLoadError = Class.new(Error)
|
16
|
-
end
|
17
|
-
end
|