jets 2.3.13 → 2.3.14
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 +4 -4
- data/CHANGELOG.md +8 -0
- data/Gemfile +1 -1
- data/lib/jets/application/defaults.rb +1 -0
- data/lib/jets/builders/code_builder.rb +12 -3
- data/lib/jets/builders/gem_replacer.rb +3 -1
- data/lib/jets/commands/build.rb +1 -0
- data/lib/jets/commands/gems.rb +1 -1
- data/lib/jets/commands/rake_tasks.rb +1 -0
- data/lib/jets/commands/templates/skeleton/Gemfile.tt +3 -3
- data/lib/jets/commands/templates/webpacker/app/javascript/packs/application.js.tt +9 -1
- data/lib/jets/controller/base.rb +17 -4
- data/lib/jets/controller/parameters_filter.rb +29 -0
- data/lib/jets/controller/params.rb +8 -0
- data/lib/jets/router.rb +10 -10
- data/lib/jets/turbo/templates/config/database.yml +4 -0
- data/lib/jets/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ddbf1726e80a44319389bf13b4b22323517ae715d552fc503fe3b48dbc89160b
|
4
|
+
data.tar.gz: 4671ee27bbb47bb3c413de748cc0c01ef3bdf14289f4cf28d0690f9019e7f269
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ad4a8ceb595f021253d2f93bb3ec70c06a58d574478d3be3503756926ee1d3ca85e39f633aadba9499c8d741d86bccd44cd249a3d063a109e6c77397bbfad74c
|
7
|
+
data.tar.gz: f00bcab89a774abea67c64a3b9aaf96a1b64ac0778303ac11a38043c343a7fd3cf9b2966bb92e1ee39603dc76d5b5eacdad157dcd0908e3c1bdc681d0bd892bc
|
data/CHANGELOG.md
CHANGED
@@ -3,6 +3,14 @@
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
4
4
|
This project *loosely tries* to adhere to [Semantic Versioning](http://semver.org/).
|
5
5
|
|
6
|
+
## [2.3.14]
|
7
|
+
- #432 filtered_parameters support
|
8
|
+
- #447 improve nested routes support. order routes so that nested resources always work
|
9
|
+
- #451 Fix Jets turbo DB encoding
|
10
|
+
- #452 Print Cfn templates location after build
|
11
|
+
- #458 update webpacker fork with jetpacker gem
|
12
|
+
- #459 fix afterburner mode
|
13
|
+
|
6
14
|
## [2.3.13]
|
7
15
|
- #430 Remove out-of-date note about FIFO Queue
|
8
16
|
- #433 Fixed ApiResources with long names not included in the main CloudFormation template
|
data/Gemfile
CHANGED
@@ -149,6 +149,7 @@ class Jets::Application
|
|
149
149
|
|
150
150
|
config.controllers = ActiveSupport::OrderedOptions.new
|
151
151
|
config.controllers.default_protect_from_forgery = nil
|
152
|
+
config.controllers.filtered_parameters = []
|
152
153
|
|
153
154
|
config.deploy = ActiveSupport::OrderedOptions.new
|
154
155
|
config.deploy.stagger = ActiveSupport::OrderedOptions.new
|
@@ -99,8 +99,17 @@ module Jets::Builders
|
|
99
99
|
|
100
100
|
# Code prep and zipping
|
101
101
|
check_code_size!
|
102
|
-
generate_shims
|
103
|
-
|
102
|
+
calculate_md5s # must be called before create_zip_files and generate_shims because checksums need to be populated
|
103
|
+
# generate_shims and create_zip_files use checksums
|
104
|
+
#
|
105
|
+
# Notes:
|
106
|
+
#
|
107
|
+
# Had moved calculate_md5s to fix a what thought was a subtle issue https://github.com/tongueroo/jets/pull/424
|
108
|
+
# But am unsure about that the fix now. This essentially reverts that issue.
|
109
|
+
#
|
110
|
+
# Fix in https://github.com/tongueroo/jets/pull/459
|
111
|
+
#
|
112
|
+
generate_shims # the generated handlers/data.yml has rack_zip key
|
104
113
|
create_zip_files
|
105
114
|
end
|
106
115
|
|
@@ -211,7 +220,7 @@ module Jets::Builders
|
|
211
220
|
# Checking this way because when using jets standalone for Afterburner mode we don't want to run into
|
212
221
|
# bundler gem collisions. TODO: figure out the a better way to handle the collisions.
|
213
222
|
lines = IO.readlines("#{Jets.root}/Gemfile")
|
214
|
-
lines.detect { |l| l =~ /webpacker/ }
|
223
|
+
lines.detect { |l| l =~ /webpacker/ || l =~ /jetpacker/ }
|
215
224
|
end
|
216
225
|
|
217
226
|
# This happens in the current app directory not the tmp code for simplicity
|
@@ -6,7 +6,9 @@ module Jets::Builders
|
|
6
6
|
end
|
7
7
|
|
8
8
|
def run
|
9
|
-
|
9
|
+
# use_gemspec to resolve http-parser gem issue
|
10
|
+
use_gemspec = !Jets::Turbo.afterburner? # gemspec approach breaks afterburner mode
|
11
|
+
check = Jets::Gems::Check.new(use_gemspec: use_gemspec)
|
10
12
|
if Jets.config.lambda.layers.empty?
|
11
13
|
found_gems = check.run! # exits early if missing gems found
|
12
14
|
else
|
data/lib/jets/commands/build.rb
CHANGED
data/lib/jets/commands/gems.rb
CHANGED
@@ -3,7 +3,7 @@ module Jets::Commands
|
|
3
3
|
desc "check", "Check if pre-built Lambda gems are available from the sources"
|
4
4
|
long_desc Help.text("gems:check")
|
5
5
|
def check
|
6
|
-
check = Jets::Gems::Check.new
|
6
|
+
check = Jets::Gems::Check.new
|
7
7
|
check.run! # exits early if missing gems found
|
8
8
|
# If reach here, means all gems are ok.
|
9
9
|
puts "Congrats! All gems are available in as pre-built Lambda gems 👍"
|
@@ -27,6 +27,7 @@ class Jets::Commands::RakeTasks
|
|
27
27
|
def load_webpacker_tasks
|
28
28
|
begin
|
29
29
|
require "webpacker"
|
30
|
+
require "webpacker/rake_tasks"
|
30
31
|
rescue LoadError
|
31
32
|
# puts "WARN: unable to load gem. #{$!}. Running with 'bundle exec' might fix this warning."
|
32
33
|
# Happens whne user calls jets help outside the jets project folder.
|
@@ -1,10 +1,10 @@
|
|
1
1
|
source "https://rubygems.org"
|
2
2
|
|
3
|
-
gem "jets"
|
3
|
+
gem "jets", git: "https://github.com/tongueroo/jets.git", submodules: true, branch: "master"
|
4
4
|
|
5
5
|
<% if @webpacker -%>
|
6
|
-
# Include
|
7
|
-
gem "
|
6
|
+
# Include jetpacker if you are you are building html pages
|
7
|
+
gem "jetpacker"
|
8
8
|
<% end -%>
|
9
9
|
<% if @database == 'postgresql' %>
|
10
10
|
# Include pg gem if you are using ActiveRecord, remove next line
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/* eslint no-console:0 */
|
2
|
-
// This file is automatically compiled by Webpack
|
2
|
+
// This file is automatically compiled by Webpack, along with any other files
|
3
3
|
// present in this directory. You're encouraged to place your actual application logic in
|
4
4
|
// a relevant structure within app/javascript and only use these pack files to reference
|
5
5
|
// that code so it'll be compiled.
|
@@ -7,6 +7,14 @@
|
|
7
7
|
// To reference this file, add <%%= javascript_pack_tag 'application' %> to the appropriate
|
8
8
|
// layout file, like app/views/layouts/application.html.erb
|
9
9
|
|
10
|
+
|
11
|
+
// Uncomment to copy all static images under ../images to the output folder and reference
|
12
|
+
// them with the image_pack_tag helper in views (e.g <%%= image_pack_tag 'rails.png' %>)
|
13
|
+
// or the `imagePath` JavaScript helper below.
|
14
|
+
//
|
15
|
+
// const images = require.context('../images', true)
|
16
|
+
// const imagePath = (name) => images(name, true)
|
17
|
+
|
10
18
|
<% if @bootstrap -%>
|
11
19
|
import 'bootstrap/dist/js/bootstrap';
|
12
20
|
<% end -%>
|
data/lib/jets/controller/base.rb
CHANGED
@@ -100,14 +100,27 @@ class Jets::Controller
|
|
100
100
|
end
|
101
101
|
|
102
102
|
def log_info_start
|
103
|
-
display_event = @event.dup
|
104
|
-
display_event['body'] = '[BASE64_ENCODED]' if @event['isBase64Encoded']
|
105
103
|
# JSON.dump makes logging look pretty in CloudWatch logs because it keeps it on 1 line
|
104
|
+
|
106
105
|
ip = request.ip
|
107
106
|
Jets.logger.info "Started #{@event['httpMethod']} \"#{@event['path']}\" for #{ip} at #{Time.now}"
|
108
107
|
Jets.logger.info "Processing #{self.class.name}##{@meth}"
|
109
|
-
Jets.logger.info " Event: #{
|
110
|
-
Jets.logger.info " Parameters: #{JSON.dump(
|
108
|
+
Jets.logger.info " Event: #{event_log}"
|
109
|
+
Jets.logger.info " Parameters: #{JSON.dump(filtered_parameters.to_h)}"
|
110
|
+
end
|
111
|
+
|
112
|
+
def event_log
|
113
|
+
display_event = @event.dup
|
114
|
+
|
115
|
+
if @event['isBase64Encoded']
|
116
|
+
display_event['body'] = '[BASE64_ENCODED]'
|
117
|
+
else
|
118
|
+
display_event['body'] = parameter_filter.filter_json(display_event['body'])
|
119
|
+
end
|
120
|
+
|
121
|
+
display_event["queryStringParameters"] = parameter_filter.filter(display_event['queryStringParameters'])
|
122
|
+
display_event["pathParameters"] = parameter_filter.filter(display_event['pathParameters'])
|
123
|
+
json_dump(display_event)
|
111
124
|
end
|
112
125
|
|
113
126
|
# Handles binary data safely
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require "active_support/parameter_filter"
|
2
|
+
|
3
|
+
class Jets::Controller
|
4
|
+
class ParametersFilter
|
5
|
+
attr_reader :filters, :params_filter
|
6
|
+
|
7
|
+
def initialize(filters)
|
8
|
+
@filters = filters
|
9
|
+
@params_filter = ActiveSupport::ParameterFilter.new(filters)
|
10
|
+
end
|
11
|
+
|
12
|
+
def filter(params)
|
13
|
+
params && params_filter.filter(params)
|
14
|
+
end
|
15
|
+
|
16
|
+
def filter_json(json_text)
|
17
|
+
return json_text if filters.blank? || json_text.blank?
|
18
|
+
|
19
|
+
begin
|
20
|
+
hash_params = JSON.parse(json_text)
|
21
|
+
filtered_params = filter(hash_params)
|
22
|
+
JSON.dump(filtered_params)
|
23
|
+
rescue JSON::ParserError
|
24
|
+
String.new
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
@@ -29,6 +29,10 @@ class Jets::Controller
|
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
32
|
+
def filtered_parameters(**kwargs)
|
33
|
+
parameter_filter.filter params(**kwargs, raw: true) # Always filter raw hash
|
34
|
+
end
|
35
|
+
|
32
36
|
def query_parameters
|
33
37
|
event["queryStringParameters"] || {}
|
34
38
|
end
|
@@ -83,5 +87,9 @@ class Jets::Controller
|
|
83
87
|
return nil if body.nil?
|
84
88
|
Base64.decode64(body)
|
85
89
|
end
|
90
|
+
|
91
|
+
def parameter_filter
|
92
|
+
@parameter_filter ||= ParametersFilter.new Jets.config.controllers.filtered_parameters
|
93
|
+
end
|
86
94
|
end
|
87
95
|
end
|
data/lib/jets/router.rb
CHANGED
@@ -93,18 +93,18 @@ module Jets
|
|
93
93
|
# Useful for RouterMatcher
|
94
94
|
#
|
95
95
|
# Precedence:
|
96
|
-
#
|
97
|
-
# 2. Then consider the routes with captures: post/:id
|
98
|
-
# 3. Last consider the routes with wildcards: *catchall
|
96
|
+
# Routes with wildcards are considered after routes without wildcards
|
99
97
|
#
|
100
|
-
#
|
101
|
-
#
|
98
|
+
# Routes with fewer captures are ordered first since both
|
99
|
+
# /posts/:post_id/comments/new and /posts/:post_id/comments/:id are equally
|
100
|
+
# long
|
101
|
+
#
|
102
|
+
# Routes with the same amount of captures and wildcards are orderd so that
|
103
|
+
# the longest path is considered first since posts/:id and posts/:id/edit
|
104
|
+
# can both match.
|
102
105
|
def ordered_routes
|
103
|
-
length = Proc.new { |r| r.path.length * -1 }
|
104
|
-
|
105
|
-
wildcard_routes = routes.select { |r| r.path.include?('*') }.sort_by(&length)
|
106
|
-
simple_routes = (routes - capture_routes - wildcard_routes).sort_by(&length)
|
107
|
-
simple_routes + capture_routes + wildcard_routes
|
106
|
+
length = Proc.new { |r| [r.path.count("*"), r.path.count(":"), r.path.length * -1] }
|
107
|
+
routes.sort_by(&length)
|
108
108
|
end
|
109
109
|
|
110
110
|
class << self
|
@@ -1,6 +1,10 @@
|
|
1
1
|
default: &default
|
2
2
|
adapter: <%= @adapter %>
|
3
|
+
<% if @adapter == 'postgresql' -%>
|
4
|
+
encoding: unicode
|
5
|
+
<% else -%>
|
3
6
|
encoding: utf8mb4
|
7
|
+
<% end -%>
|
4
8
|
pool: <%%= ENV["DB_POOL"] || 5 %>
|
5
9
|
database: <%%= ENV['DB_NAME'] || '<%= @database_development %>' %>
|
6
10
|
<% if @adapter == 'postgresql' -%>
|
data/lib/jets/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jets
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.3.
|
4
|
+
version: 2.3.14
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tung Nguyen
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-03-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: actionmailer
|
@@ -786,6 +786,7 @@ files:
|
|
786
786
|
- lib/jets/controller/middleware/main.rb
|
787
787
|
- lib/jets/controller/middleware/reloader.rb
|
788
788
|
- lib/jets/controller/middleware/webpacker_setup.rb
|
789
|
+
- lib/jets/controller/parameters_filter.rb
|
789
790
|
- lib/jets/controller/params.rb
|
790
791
|
- lib/jets/controller/rack/adapter.rb
|
791
792
|
- lib/jets/controller/rack/env.rb
|