jets 4.0.17 → 5.0.0.beta1

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 (616) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +5 -1
  3. data/CHANGELOG.md +52 -23
  4. data/Gemfile +1 -5
  5. data/LICENSE.txt +1 -1
  6. data/Rakefile +3 -3
  7. data/engines/internal/app/controllers/jets/application_controller.rb +28 -0
  8. data/engines/internal/app/controllers/jets/bare_controller.rb +6 -0
  9. data/engines/internal/app/controllers/jets/health_controller.rb +55 -0
  10. data/engines/internal/app/controllers/jets/info_controller.rb +45 -0
  11. data/{lib/jets → engines}/internal/app/controllers/jets/mailers_controller.rb +12 -14
  12. data/{lib/jets → engines}/internal/app/controllers/jets/mount_controller.rb +6 -10
  13. data/{lib/jets → engines}/internal/app/controllers/jets/public_controller.rb +6 -2
  14. data/engines/internal/app/controllers/jets/welcome_controller.rb +9 -0
  15. data/{lib/jets → engines}/internal/app/functions/jets/base_path.rb +2 -1
  16. data/{lib/jets → engines}/internal/app/functions/jets/base_path_mapping.rb +26 -6
  17. data/engines/internal/app/jobs/jets/preheat_job.rb +67 -0
  18. data/engines/internal/app/views/jets/info/properties.html.erb +1 -0
  19. data/engines/internal/app/views/jets/info/routes.html.erb +10 -0
  20. data/{lib/jets → engines}/internal/app/views/jets/mailers/email.html.erb +37 -17
  21. data/engines/internal/app/views/jets/mailers/index.html.erb +8 -0
  22. data/engines/internal/app/views/jets/mailers/mailer.html.erb +6 -0
  23. data/{lib/jets/commands/templates/skeleton/public/index.html.tt → engines/internal/app/views/jets/welcome/index.html.erb} +8 -4
  24. data/engines/internal/app/views/layouts/application.html.erb +51 -0
  25. data/engines/internal/lib/internal/actiondispatch.rb +39 -0
  26. data/engines/internal/lib/internal/actionmailer.rb +51 -0
  27. data/engines/internal/lib/internal/actionview.rb +152 -0
  28. data/engines/internal/lib/internal/activerecord.rb +37 -0
  29. data/engines/internal/lib/internal/activesupport.rb +47 -0
  30. data/engines/internal/lib/internal/engine.rb +13 -0
  31. data/engines/internal/lib/internal/i18n_engine.rb +19 -0
  32. data/engines/internal/lib/internal/jets_controller.rb +46 -0
  33. data/engines/internal/lib/internal/overrides/debug_exceptions.rb +40 -0
  34. data/engines/internal/lib/internal/templates/rescues/_trace.html.erb +62 -0
  35. data/engines/internal/lib/internal/templates/rescues/_trace.text.erb +9 -0
  36. data/engines/internal/lib/internal/turbines/asset_tag_helper.rb +70 -0
  37. data/engines/internal/lib/internal/turbines/helpers.rb +18 -0
  38. data/engines/internal/lib/internal/turbines/routes_helpers.rb +42 -0
  39. data/exe/jets +1 -10
  40. data/jets.gemspec +29 -27
  41. data/lib/jets/app_loader.rb +77 -0
  42. data/lib/jets/application/bootstrap.rb +100 -0
  43. data/lib/jets/application/configuration/defaults.rb +256 -0
  44. data/lib/jets/application/configuration.rb +494 -0
  45. data/lib/jets/application/default_middleware_stack.rb +140 -0
  46. data/lib/jets/application/dummy_erb_compiler.rb +18 -0
  47. data/lib/jets/application/finisher.rb +266 -0
  48. data/lib/jets/application/routes_reloader.rb +80 -0
  49. data/lib/jets/application.rb +515 -198
  50. data/lib/jets/authorizer/base.rb +1 -0
  51. data/lib/jets/authorizer/dsl.rb +15 -11
  52. data/lib/jets/authorizer/helpers/iam_helper.rb +13 -11
  53. data/lib/jets/autoloaders/gem.rb +70 -0
  54. data/lib/jets/autoloaders/inflector.rb +21 -0
  55. data/lib/jets/autoloaders.rb +38 -101
  56. data/lib/jets/aws_services/stack_status.rb +1 -1
  57. data/lib/jets/backtrace_cleaner.rb +27 -0
  58. data/lib/jets/booter.rb +29 -176
  59. data/lib/jets/builders/code_builder.rb +45 -117
  60. data/lib/jets/builders/code_size.rb +1 -0
  61. data/lib/jets/builders/gem_replacer.rb +5 -6
  62. data/lib/jets/builders/handler_generator.rb +34 -14
  63. data/lib/jets/builders/lambda_layer.rb +2 -7
  64. data/lib/jets/builders/purger.rb +1 -1
  65. data/lib/jets/builders/rack_packager.rb +1 -1
  66. data/lib/jets/builders/ruby_packager.rb +32 -21
  67. data/lib/jets/builders/shim_vars/app.rb +10 -6
  68. data/lib/jets/builders/templates/handlers/one_lambda_for_all_controllers.rb +33 -0
  69. data/lib/jets/builders/templates/handlers/one_lambda_per_controller.rb +20 -0
  70. data/lib/jets/builders/templates/{handler.rb → handlers/one_lambda_per_method.rb} +6 -0
  71. data/lib/jets/bundle.rb +2 -9
  72. data/lib/jets/cfn/base.rb +82 -0
  73. data/lib/jets/cfn/builder/api/base.rb +12 -0
  74. data/lib/jets/cfn/{builders/api_deployment_builder.rb → builder/api/deployment.rb} +10 -20
  75. data/lib/jets/cfn/{builders/api_gateway_builder.rb → builder/api/gateway.rb} +14 -37
  76. data/lib/jets/cfn/builder/api/mapping.rb +54 -0
  77. data/lib/jets/cfn/builder/api/methods.rb +72 -0
  78. data/lib/jets/cfn/builder/api/paged.rb +30 -0
  79. data/lib/jets/cfn/builder/api/pages/base.rb +105 -0
  80. data/lib/jets/cfn/builder/api/pages/methods.rb +17 -0
  81. data/lib/jets/cfn/builder/api/pages/page.rb +19 -0
  82. data/lib/jets/cfn/builder/api/pages/resources.rb +21 -0
  83. data/lib/jets/cfn/builder/api/resources.rb +40 -0
  84. data/lib/jets/cfn/{builders/authorizer_builder.rb → builder/authorizer.rb} +16 -19
  85. data/lib/jets/cfn/builder/controller.rb +28 -0
  86. data/lib/jets/cfn/builder/function.rb +9 -0
  87. data/lib/jets/cfn/{builders → builder}/interface.rb +45 -51
  88. data/lib/jets/cfn/builder/job.rb +10 -0
  89. data/lib/jets/cfn/builder/nested.rb +130 -0
  90. data/lib/jets/cfn/builder/one_controller.rb +53 -0
  91. data/lib/jets/cfn/{builders/parent_builder → builder/parent}/stagger.rb +1 -1
  92. data/lib/jets/cfn/{builders/parent_builder.rb → builder/parent.rb} +54 -54
  93. data/lib/jets/cfn/builder/post_process.rb +25 -0
  94. data/lib/jets/cfn/{builders/rule_builder.rb → builder/rule.rb} +4 -8
  95. data/lib/jets/cfn/{builders/shared_builder.rb → builder/shared.rb} +4 -3
  96. data/lib/jets/cfn/{builders → builder}/util/source.rb +1 -1
  97. data/lib/jets/{commands/build.rb → cfn/builder.rb} +50 -78
  98. data/lib/jets/cfn/deployment.rb +45 -0
  99. data/lib/jets/cfn/download.rb +39 -0
  100. data/lib/jets/cfn/params/api/base.rb +39 -0
  101. data/lib/jets/cfn/params/api/cors.rb +10 -0
  102. data/lib/jets/cfn/params/api/methods.rb +69 -0
  103. data/lib/jets/cfn/params/api/resources.rb +28 -0
  104. data/lib/jets/{resource/child_stack/common_parameters.rb → cfn/params/common.rb} +3 -3
  105. data/lib/jets/{resource → cfn/resource}/api_gateway/authorizer.rb +21 -21
  106. data/lib/jets/cfn/resource/api_gateway/base_path/function.rb +57 -0
  107. data/lib/jets/{resource → cfn/resource}/api_gateway/base_path/mapping.rb +13 -12
  108. data/lib/jets/cfn/resource/api_gateway/base_path/role.rb +70 -0
  109. data/lib/jets/{resource → cfn/resource}/api_gateway/deployment.rb +13 -20
  110. data/lib/jets/{resource → cfn/resource}/api_gateway/domain_name.rb +11 -11
  111. data/lib/jets/{resource → cfn/resource}/api_gateway/method/authorization.rb +1 -1
  112. data/lib/jets/cfn/resource/api_gateway/method.rb +92 -0
  113. data/lib/jets/{resource → cfn/resource}/api_gateway/resource.rb +14 -10
  114. data/lib/jets/cfn/resource/api_gateway/resource_id.rb +25 -0
  115. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/change_detection.rb +1 -1
  116. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/logical_id/message.rb +1 -1
  117. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/logical_id.rb +1 -1
  118. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/base.rb +4 -3
  119. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/media_types.rb +2 -2
  120. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/page.rb +5 -5
  121. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/to.rb +8 -3
  122. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/variable.rb +2 -2
  123. data/lib/jets/cfn/resource/api_gateway/rest_api/routes/change.rb +21 -0
  124. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/collision/variable_exception.rb +1 -1
  125. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/collision.rb +1 -1
  126. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes.rb +1 -1
  127. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api.rb +12 -12
  128. data/lib/jets/{resource → cfn/resource}/associated.rb +1 -1
  129. data/lib/jets/{resource → cfn/resource}/config/config_rule.rb +18 -18
  130. data/lib/jets/{resource → cfn/resource}/config/managed_rule.rb +5 -5
  131. data/lib/jets/{resource → cfn/resource}/events/rule.rb +10 -10
  132. data/lib/jets/{resource → cfn/resource}/iam/application_role.rb +4 -4
  133. data/lib/jets/{resource → cfn/resource}/iam/base_role_definition.rb +15 -15
  134. data/lib/jets/{resource → cfn/resource}/iam/class_role.rb +5 -5
  135. data/lib/jets/{resource → cfn/resource}/iam/function_role.rb +6 -6
  136. data/lib/jets/{resource → cfn/resource}/iam/managed_policy.rb +1 -1
  137. data/lib/jets/{resource → cfn/resource}/iam/policy.rb +8 -8
  138. data/lib/jets/{resource → cfn/resource}/iam/policy_document.rb +10 -9
  139. data/lib/jets/{resource → cfn/resource}/iot/topic_rule.rb +10 -10
  140. data/lib/jets/{resource → cfn/resource}/lambda/event_source_mapping.rb +9 -9
  141. data/lib/jets/cfn/resource/lambda/function/controller.rb +21 -0
  142. data/lib/jets/{resource → cfn/resource}/lambda/function/environment.rb +4 -5
  143. data/lib/jets/cfn/resource/lambda/function.rb +266 -0
  144. data/lib/jets/{resource → cfn/resource}/lambda/gem_layer.rb +2 -2
  145. data/lib/jets/{resource → cfn/resource}/lambda/layer_version.rb +10 -10
  146. data/lib/jets/cfn/resource/lambda/permission.rb +51 -0
  147. data/lib/jets/cfn/resource/logs/subscription_filter.rb +31 -0
  148. data/lib/jets/cfn/resource/nested/api/base.rb +4 -0
  149. data/lib/jets/cfn/resource/nested/api/deployment.rb +53 -0
  150. data/lib/jets/cfn/resource/nested/api/gateway.rb +15 -0
  151. data/lib/jets/cfn/resource/nested/api/mapping.rb +33 -0
  152. data/lib/jets/cfn/resource/nested/api/methods.rb +30 -0
  153. data/lib/jets/cfn/resource/nested/api/page.rb +8 -0
  154. data/lib/jets/cfn/resource/nested/api/resources.rb +22 -0
  155. data/lib/jets/{resource/child_stack → cfn/resource/nested}/app_class.rb +15 -48
  156. data/lib/jets/{resource/child_stack → cfn/resource/nested}/authorizer.rb +8 -14
  157. data/lib/jets/cfn/resource/nested/base.rb +38 -0
  158. data/lib/jets/cfn/resource/nested/one_controller.rb +48 -0
  159. data/lib/jets/{resource/child_stack → cfn/resource/nested}/shared.rb +10 -16
  160. data/lib/jets/cfn/resource/one/function.rb +66 -0
  161. data/lib/jets/cfn/resource/one/permission.rb +17 -0
  162. data/lib/jets/{resource → cfn/resource}/replacer.rb +26 -27
  163. data/lib/jets/{resource → cfn/resource}/route53/record_set.rb +18 -18
  164. data/lib/jets/{resource → cfn/resource}/s3/bucket.rb +4 -4
  165. data/lib/jets/cfn/resource/s3/jets_bucket.rb +68 -0
  166. data/lib/jets/{resource → cfn/resource}/sns/subscription.rb +8 -8
  167. data/lib/jets/{resource → cfn/resource}/sns/topic.rb +10 -10
  168. data/lib/jets/{resource → cfn/resource}/sns/topic_policy.rb +13 -13
  169. data/lib/jets/{resource → cfn/resource}/sqs/queue.rb +5 -5
  170. data/lib/jets/{resource → cfn/resource}/standardizer.rb +8 -9
  171. data/lib/jets/cfn/resource.rb +8 -0
  172. data/lib/jets/cfn/ship.rb +20 -19
  173. data/lib/jets/cfn/template.rb +89 -0
  174. data/lib/jets/cfn/upload.rb +40 -37
  175. data/lib/jets/cli.rb +28 -210
  176. data/lib/jets/command/actions.rb +49 -0
  177. data/lib/jets/command/api_helpers.rb +41 -0
  178. data/lib/jets/command/aws_helpers.rb +26 -0
  179. data/lib/jets/command/base.rb +204 -0
  180. data/lib/jets/command/behavior.rb +83 -0
  181. data/lib/jets/command/environment_argument.rb +42 -0
  182. data/lib/jets/command/help/call.md +48 -0
  183. data/lib/jets/{commands → command}/help/deploy.md +1 -1
  184. data/lib/jets/command/help/logs.md +21 -0
  185. data/lib/jets/{commands → command}/help/new.md +3 -4
  186. data/lib/jets/command/help/projects.md +6 -0
  187. data/lib/jets/command/help/releases.md +37 -0
  188. data/lib/jets/command/help/rollback.md +5 -0
  189. data/lib/jets/command/help/routes.md +15 -0
  190. data/lib/jets/command/help/stacks.md +6 -0
  191. data/lib/jets/command/help.rb +17 -0
  192. data/lib/jets/command/helpers/editor.rb +35 -0
  193. data/lib/jets/command.rb +133 -0
  194. data/lib/jets/commands/application/application_command.rb +40 -0
  195. data/lib/jets/commands/build/build_command.rb +33 -0
  196. data/lib/jets/commands/call/anonymous_guesser.rb +1 -1
  197. data/lib/jets/commands/call/autoload_guesser.rb +2 -2
  198. data/lib/jets/commands/call/base_guesser.rb +4 -4
  199. data/lib/jets/commands/call/call_command.rb +27 -0
  200. data/lib/jets/commands/call/caller.rb +184 -0
  201. data/lib/jets/commands/call/guesser.rb +1 -1
  202. data/lib/jets/commands/clean/base.rb +1 -1
  203. data/lib/jets/commands/clean/build.rb +1 -1
  204. data/lib/jets/commands/clean/clean_command.rb +15 -0
  205. data/lib/jets/commands/clean/log.rb +1 -1
  206. data/lib/jets/commands/configure/configure_command.rb +9 -0
  207. data/lib/jets/commands/console/console_command.rb +38 -0
  208. data/lib/jets/commands/credentials/USAGE +103 -0
  209. data/lib/jets/commands/credentials/credentials_command/diffing.rb +51 -0
  210. data/lib/jets/commands/credentials/credentials_command.rb +139 -0
  211. data/lib/jets/commands/db/system/change/change_command.rb +24 -0
  212. data/lib/jets/commands/dbconsole/dbconsole_command.rb +184 -0
  213. data/lib/jets/commands/degenerate/degenerate_command.rb +21 -0
  214. data/lib/jets/commands/delete/delete_command.rb +155 -0
  215. data/lib/jets/commands/{deploy.rb → deploy/deploy_command.rb} +28 -47
  216. data/lib/jets/commands/dev/dev_command.rb +19 -0
  217. data/lib/jets/commands/{dotenv.rb → dotenv/dotenv_command.rb} +2 -2
  218. data/lib/jets/commands/encrypted/USAGE +46 -0
  219. data/lib/jets/commands/encrypted/encrypted_command.rb +87 -0
  220. data/lib/jets/commands/gems/gems_command.rb +14 -0
  221. data/lib/jets/commands/generate/generate_command.rb +95 -0
  222. data/lib/jets/commands/help/USAGE +20 -0
  223. data/lib/jets/commands/help/help_command.rb +15 -0
  224. data/lib/jets/commands/initializers/initializers_command.rb +19 -0
  225. data/lib/jets/commands/logs/logs_command.rb +45 -0
  226. data/lib/jets/commands/new/new_command.rb +19 -0
  227. data/lib/jets/commands/notes/notes_command.rb +30 -0
  228. data/lib/jets/commands/plugin/plugin_command.rb +45 -0
  229. data/lib/jets/commands/projects/projects_command.rb +30 -0
  230. data/lib/jets/commands/rake/rake_command.rb +59 -0
  231. data/lib/jets/commands/releases/releases_command.rb +72 -0
  232. data/lib/jets/commands/rollback/rollback_command.rb +41 -0
  233. data/lib/jets/commands/routes/routes_command.rb +19 -0
  234. data/lib/jets/commands/runner/runner_command.rb +60 -0
  235. data/lib/jets/commands/server/server_command.rb +291 -0
  236. data/lib/jets/commands/stacks/stacks_command.rb +39 -0
  237. data/lib/jets/commands/status/status_command.rb +9 -0
  238. data/lib/jets/commands/{url.rb → url/url_command.rb} +37 -14
  239. data/lib/jets/commands/version/version_command.rb +11 -0
  240. data/lib/jets/commands.rb +17 -0
  241. data/lib/jets/configuration.rb +166 -0
  242. data/lib/jets/controller/base.rb +105 -183
  243. data/lib/jets/controller/compat/abstract_controller/base.rb +126 -0
  244. data/lib/jets/controller/compat/action_controller/metal.rb +99 -0
  245. data/lib/jets/controller/compat/caching.rb +13 -0
  246. data/lib/jets/controller/compat/future.rb +13 -0
  247. data/lib/jets/controller/compat/route_set.rb +47 -0
  248. data/lib/jets/controller/decorate/apigw_stage.rb +39 -0
  249. data/lib/jets/controller/{authorization.rb → decorate/authorization.rb} +1 -1
  250. data/lib/jets/controller/decorate/logging.rb +90 -0
  251. data/lib/jets/controller/decorate/redirecting.rb +16 -0
  252. data/lib/jets/controller/decorate/url_for.rb +10 -0
  253. data/lib/jets/controller/{rack/adapter.rb → handler/apigw.rb} +36 -37
  254. data/lib/jets/controller/handler.rb +41 -0
  255. data/lib/jets/controller/middleware/main.rb +16 -8
  256. data/lib/jets/controller/middleware/{local/api_gateway.rb → mimic/apigw.rb} +40 -15
  257. data/lib/jets/controller/middleware/mimic/lambda_context.rb +44 -0
  258. data/lib/jets/controller/middleware/{local.rb → mimic.rb} +36 -51
  259. data/lib/jets/controller/rack_adapter/action.rb +35 -0
  260. data/lib/jets/controller/{rack → rack_adapter}/env.rb +39 -24
  261. data/lib/jets/controller/request/compat/params.rb +144 -0
  262. data/lib/jets/controller/request/compat/request.rb +125 -0
  263. data/lib/jets/controller/request.rb +35 -18
  264. data/lib/jets/controller/response/compat/response.rb +67 -0
  265. data/lib/jets/controller/response.rb +91 -8
  266. data/lib/jets/core.rb +136 -51
  267. data/lib/jets/core_ext/kernel.rb +2 -2
  268. data/lib/jets/core_ext/symbol.rb +5 -0
  269. data/lib/jets/core_ext.rb +4 -0
  270. data/lib/jets/dev_caching.rb +44 -0
  271. data/lib/jets/dotenv/ssm.rb +2 -2
  272. data/lib/jets/dotenv.rb +2 -1
  273. data/lib/jets/engine/configuration.rb +96 -0
  274. data/lib/jets/engine/turbines.rb +23 -0
  275. data/lib/jets/engine.rb +380 -0
  276. data/lib/jets/exception_reporting.rb +43 -0
  277. data/lib/jets/generators/job/job_generator.rb +41 -0
  278. data/lib/jets/generators/job/templates/event_types/dynamodb.rb.tt +8 -0
  279. data/lib/jets/generators/job/templates/event_types/iot.rb.tt +8 -0
  280. data/lib/jets/generators/job/templates/event_types/kinesis.rb.tt +9 -0
  281. data/lib/jets/generators/job/templates/event_types/log.rb.tt +9 -0
  282. data/lib/jets/generators/job/templates/event_types/rule.rb.tt +23 -0
  283. data/lib/jets/generators/job/templates/event_types/s3.rb.tt +11 -0
  284. data/lib/jets/{generator/templates/active_job/job/templates/job.rb.tt → generators/job/templates/event_types/scheduled.rb.tt} +3 -3
  285. data/lib/jets/generators/job/templates/event_types/sns.rb.tt +9 -0
  286. data/lib/jets/generators/job/templates/event_types/sqs.rb.tt +9 -0
  287. data/lib/jets/generators/overrides/app/USAGE +38 -0
  288. data/lib/jets/generators/overrides/app/app_generator.rb +148 -0
  289. data/lib/jets/generators/overrides/app/helpers.rb +143 -0
  290. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/.gitignore +2 -1
  291. data/lib/jets/generators/overrides/app/templates/Gemfile.tt +25 -0
  292. data/lib/jets/generators/overrides/app/templates/Rakefile +2 -0
  293. data/lib/jets/generators/overrides/app/templates/app/assets/config/manifest.js +3 -0
  294. data/lib/jets/generators/overrides/app/templates/app/assets/stylesheets/application.css +15 -0
  295. data/lib/jets/generators/overrides/app/templates/app/javascript/application.js +5 -0
  296. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/app/models/application_record.rb +1 -1
  297. data/lib/jets/generators/overrides/app/templates/app/views/layouts/application.html.erb.tt +30 -0
  298. data/lib/jets/generators/overrides/app/templates/bin/jets +3 -0
  299. data/lib/jets/generators/overrides/app/templates/config/application.rb.tt +15 -0
  300. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/config/database.yml.tt +1 -1
  301. data/lib/jets/generators/overrides/app/templates/config/environments/development.rb.tt +29 -0
  302. data/lib/jets/generators/overrides/app/templates/config/environments/production.rb.tt +19 -0
  303. data/lib/jets/generators/overrides/app/templates/config/environments/test.rb.tt +23 -0
  304. data/lib/jets/generators/overrides/app/templates/config/initializers/content_security_policy.rb +31 -0
  305. data/lib/jets/generators/overrides/app/templates/config/initializers/filter_parameter_logging.rb +8 -0
  306. data/lib/jets/generators/overrides/app/templates/config/initializers/permissions_policy.rb +11 -0
  307. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/config/routes.rb +5 -1
  308. data/lib/jets/generators/overrides/app/templates/db/.gitkeep +0 -0
  309. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/public/404.html +6 -6
  310. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/public/422.html +6 -6
  311. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/public/500.html +6 -6
  312. data/lib/jets/generators/overrides/templates/erb/scaffold/index.html.erb +22 -0
  313. data/lib/jets/generators/overrides/templates/erb/scaffold/partial.html.erb +8 -0
  314. data/lib/jets/{generator/templates/rails/scaffold_controller/api_controller.rb → generators/overrides/templates/rails/scaffold_controller/api_controller.rb.tt} +5 -9
  315. data/lib/jets/generators/overrides/templates/rails/scaffold_controller/controller.rb.tt +67 -0
  316. data/lib/jets/generators.rb +112 -0
  317. data/lib/jets/info.rb +116 -0
  318. data/lib/jets/initializable.rb +95 -0
  319. data/lib/jets/job/base.rb +3 -2
  320. data/lib/jets/job/dsl/dynamodb_event.rb +19 -9
  321. data/lib/jets/job/dsl/event_source_mapping.rb +1 -1
  322. data/lib/jets/job/dsl/iot_event.rb +6 -6
  323. data/lib/jets/job/dsl/kinesis_event.rb +5 -5
  324. data/lib/jets/job/dsl/log_event.rb +2 -2
  325. data/lib/jets/job/dsl/rule_event.rb +7 -4
  326. data/lib/jets/job/dsl/s3_event.rb +1 -1
  327. data/lib/jets/job/dsl/sns_event.rb +6 -6
  328. data/lib/jets/job/dsl/sqs_event.rb +11 -11
  329. data/lib/jets/klass.rb +5 -6
  330. data/lib/jets/lambda/definition.rb +118 -0
  331. data/lib/jets/lambda/dsl/warnings.rb +57 -0
  332. data/lib/jets/lambda/dsl.rb +64 -53
  333. data/lib/jets/lambda/function.rb +3 -3
  334. data/lib/jets/lambda/function_constructor.rb +6 -6
  335. data/lib/jets/lambda/functions.rb +36 -1
  336. data/lib/jets/mega/request/source.rb +1 -2
  337. data/lib/jets/mega/request.rb +4 -4
  338. data/lib/jets/names.rb +31 -15
  339. data/lib/jets/overrides/dummy/rails.rb +11 -0
  340. data/lib/jets/overrides/lambda/marshaller.rb +10 -0
  341. data/lib/jets/overrides/puma.rb +10 -0
  342. data/lib/jets/paths.rb +243 -0
  343. data/lib/jets/{poly_fun → poly}/base_executor.rb +13 -13
  344. data/lib/jets/{poly_fun → poly}/lambda_executor.rb +2 -2
  345. data/lib/jets/{poly_fun → poly}/node_error.rb +1 -1
  346. data/lib/jets/{poly_fun → poly}/node_executor.rb +4 -4
  347. data/lib/jets/{poly_fun → poly}/python_error.rb +1 -1
  348. data/lib/jets/{poly_fun → poly}/python_executor.rb +2 -2
  349. data/lib/jets/{poly_fun.rb → poly.rb} +12 -12
  350. data/lib/jets/preheat.rb +12 -25
  351. data/lib/jets/processors/deducer.rb +2 -2
  352. data/lib/jets/processors/main_processor.rb +6 -13
  353. data/lib/jets/rack/logger.rb +77 -0
  354. data/lib/jets/router/compat/route_set.rb +177 -0
  355. data/lib/jets/router/dsl/mount.rb +40 -6
  356. data/lib/jets/router/dsl.rb +125 -105
  357. data/lib/jets/router/engine_mount.rb +36 -0
  358. data/lib/jets/router/help.rb +130 -0
  359. data/lib/jets/router/helpers/named_routes/add_full_url.rb +13 -0
  360. data/lib/jets/router/helpers/named_routes/generated.rb +197 -0
  361. data/lib/jets/router/helpers/named_routes/proxy.rb +66 -0
  362. data/lib/jets/router/matcher.rb +135 -16
  363. data/lib/jets/router/resources/options.rb +6 -4
  364. data/lib/jets/router/route/after_initialize.rb +64 -0
  365. data/lib/jets/router/route/as.rb +93 -0
  366. data/lib/jets/router/route/authorizer.rb +1 -0
  367. data/lib/jets/router/route/compat.rb +45 -0
  368. data/lib/jets/router/route/info.rb +74 -0
  369. data/lib/jets/router/route/node.rb +137 -0
  370. data/lib/jets/router/route/path.rb +93 -0
  371. data/lib/jets/router/route.rb +109 -106
  372. data/lib/jets/router/route_set.rb +214 -0
  373. data/lib/jets/router/scope.rb +204 -69
  374. data/lib/jets/router/state.rb +36 -16
  375. data/lib/jets/router/util.rb +1 -31
  376. data/lib/jets/router.rb +64 -162
  377. data/lib/jets/ruby_version_check.rb +15 -0
  378. data/lib/jets/rule/base.rb +1 -0
  379. data/lib/jets/rule/dsl.rb +7 -7
  380. data/lib/jets/secrets.rb +110 -0
  381. data/lib/jets/spec_helpers/controllers/request.rb +22 -16
  382. data/lib/jets/spec_helpers/controllers.rb +32 -24
  383. data/lib/jets/spec_helpers.rb +0 -6
  384. data/lib/jets/stack/builder.rb +3 -2
  385. data/lib/jets/stack/definition.rb +1 -4
  386. data/lib/jets/stack/function.rb +2 -2
  387. data/lib/jets/stack/main/dsl/cloudwatch.rb +4 -4
  388. data/lib/jets/stack/main/dsl/kinesis.rb +2 -2
  389. data/lib/jets/stack/main/dsl/lambda.rb +26 -20
  390. data/lib/jets/stack/main/dsl/sqs.rb +2 -2
  391. data/lib/jets/stack/output/lookup.rb +1 -1
  392. data/lib/jets/stack/output.rb +2 -2
  393. data/lib/jets/stack/parameter.rb +2 -2
  394. data/lib/jets/stack/resource.rb +3 -3
  395. data/lib/jets/stack/s3_event.rb +51 -37
  396. data/lib/jets/stack.rb +1 -1
  397. data/lib/jets/tasks/engine.rake +85 -0
  398. data/lib/jets/tasks/framework.rake +66 -0
  399. data/lib/jets/tasks/log.rake +41 -0
  400. data/lib/jets/tasks/middleware.rake +9 -0
  401. data/lib/jets/tasks/misc.rake +81 -0
  402. data/lib/jets/tasks/statistics.rake +37 -0
  403. data/lib/jets/tasks/tmp.rake +51 -0
  404. data/lib/jets/tasks/yarn.rake +29 -0
  405. data/lib/jets/tasks/zeitwerk.rake +61 -0
  406. data/lib/jets/tasks.rb +18 -0
  407. data/lib/jets/turbine/configurable.rb +36 -0
  408. data/lib/jets/turbine/configuration.rb +101 -0
  409. data/lib/jets/turbine.rb +164 -20
  410. data/lib/jets/util/camelize.rb +24 -0
  411. data/lib/jets/version.rb +1 -1
  412. data/lib/jets.rb +7 -16
  413. metadata +410 -362
  414. data/bin/release +0 -9
  415. data/lib/jets/application/defaults.rb +0 -230
  416. data/lib/jets/builders/reconfigure_rails/config/initializers/jets.rb +0 -16
  417. data/lib/jets/builders/reconfigure_rails.rb +0 -114
  418. data/lib/jets/cfn/builders/api_resources_builder.rb +0 -44
  419. data/lib/jets/cfn/builders/base_child_builder.rb +0 -88
  420. data/lib/jets/cfn/builders/controller_builder.rb +0 -50
  421. data/lib/jets/cfn/builders/function_builder.rb +0 -14
  422. data/lib/jets/cfn/builders/job_builder.rb +0 -14
  423. data/lib/jets/cfn/builders/page_builder.rb +0 -80
  424. data/lib/jets/cfn/built_template.rb +0 -15
  425. data/lib/jets/cfn/template_source.rb +0 -64
  426. data/lib/jets/commands/base.rb +0 -145
  427. data/lib/jets/commands/call.rb +0 -185
  428. data/lib/jets/commands/clean.rb +0 -19
  429. data/lib/jets/commands/configure.rb +0 -51
  430. data/lib/jets/commands/console.rb +0 -18
  431. data/lib/jets/commands/db/environment-task.rake +0 -3
  432. data/lib/jets/commands/db/tasks/dummy/app.rb +0 -25
  433. data/lib/jets/commands/db/tasks/dummy/config.rb +0 -14
  434. data/lib/jets/commands/db/tasks.rb +0 -34
  435. data/lib/jets/commands/db.rb +0 -13
  436. data/lib/jets/commands/dbconsole.rb +0 -134
  437. data/lib/jets/commands/delete.rb +0 -136
  438. data/lib/jets/commands/dynamodb/migrate.rb +0 -9
  439. data/lib/jets/commands/dynamodb/migrator.rb +0 -36
  440. data/lib/jets/commands/dynamodb.rb +0 -19
  441. data/lib/jets/commands/gems.rb +0 -13
  442. data/lib/jets/commands/help/call.md +0 -69
  443. data/lib/jets/commands/help/dynamodb/generate.md +0 -52
  444. data/lib/jets/commands/help/dynamodb/migrate.md +0 -4
  445. data/lib/jets/commands/help/routes.md +0 -16
  446. data/lib/jets/commands/help.rb +0 -9
  447. data/lib/jets/commands/import/base.rb +0 -49
  448. data/lib/jets/commands/import/cheatsheet.rb +0 -35
  449. data/lib/jets/commands/import/rack.rb +0 -16
  450. data/lib/jets/commands/import/rails.rb +0 -74
  451. data/lib/jets/commands/import/sequence.rb +0 -90
  452. data/lib/jets/commands/import/templates/config/database.yml +0 -30
  453. data/lib/jets/commands/import/templates/submodules-cheatsheet.md +0 -89
  454. data/lib/jets/commands/import.rb +0 -12
  455. data/lib/jets/commands/main.rb +0 -169
  456. data/lib/jets/commands/markdown/creator.rb +0 -58
  457. data/lib/jets/commands/markdown/index.rb +0 -27
  458. data/lib/jets/commands/markdown/page.rb +0 -125
  459. data/lib/jets/commands/markdown/shell.rb +0 -11
  460. data/lib/jets/commands/new.rb +0 -173
  461. data/lib/jets/commands/rake_command.rb +0 -61
  462. data/lib/jets/commands/rake_tasks.rb +0 -50
  463. data/lib/jets/commands/runner.rb +0 -16
  464. data/lib/jets/commands/sequence.rb +0 -104
  465. data/lib/jets/commands/stack_info.rb +0 -30
  466. data/lib/jets/commands/templates/skeleton/.env.development.tt +0 -3
  467. data/lib/jets/commands/templates/skeleton/.env.test +0 -3
  468. data/lib/jets/commands/templates/skeleton/.env.tt +0 -3
  469. data/lib/jets/commands/templates/skeleton/.jetskeep +0 -1
  470. data/lib/jets/commands/templates/skeleton/Gemfile.tt +0 -40
  471. data/lib/jets/commands/templates/skeleton/Procfile +0 -7
  472. data/lib/jets/commands/templates/skeleton/Rakefile +0 -2
  473. data/lib/jets/commands/templates/skeleton/app/models/application_item.rb +0 -2
  474. data/lib/jets/commands/templates/skeleton/app/views/layouts/application.html.erb.tt +0 -26
  475. data/lib/jets/commands/templates/skeleton/config/application.rb.tt +0 -72
  476. data/lib/jets/commands/templates/skeleton/config/dynamodb.yml +0 -22
  477. data/lib/jets/commands/templates/skeleton/config/environments/development.rb +0 -7
  478. data/lib/jets/commands/templates/skeleton/config/environments/production.rb +0 -9
  479. data/lib/jets/commands/templates/skeleton/config/environments/test.rb +0 -7
  480. data/lib/jets/commands/templates/webpacker/app/javascript/packs/application.js.tt +0 -23
  481. data/lib/jets/commands/templates/webpacker/app/javascript/packs/theme.scss.tt +0 -24
  482. data/lib/jets/commands/upgrade/templates/bin/webpack +0 -20
  483. data/lib/jets/commands/upgrade/templates/bin/webpack-dev-server +0 -19
  484. data/lib/jets/commands/upgrade/version1.rb +0 -136
  485. data/lib/jets/commands/upgrade.rb +0 -105
  486. data/lib/jets/commands/webpacker_template.rb +0 -18
  487. data/lib/jets/controller/callbacks.rb +0 -73
  488. data/lib/jets/controller/cookies/jar.rb +0 -269
  489. data/lib/jets/controller/cookies.rb +0 -38
  490. data/lib/jets/controller/error/invalid_authenticity_token.rb +0 -6
  491. data/lib/jets/controller/error.rb +0 -4
  492. data/lib/jets/controller/forgery_protection.rb +0 -43
  493. data/lib/jets/controller/layout.rb +0 -17
  494. data/lib/jets/controller/middleware/cors.rb +0 -60
  495. data/lib/jets/controller/middleware/local/mimic_aws_call.rb +0 -38
  496. data/lib/jets/controller/middleware/local/route_matcher.rb +0 -22
  497. data/lib/jets/controller/middleware/reloader.rb +0 -15
  498. data/lib/jets/controller/parameters_filter.rb +0 -29
  499. data/lib/jets/controller/params.rb +0 -117
  500. data/lib/jets/controller/redirection.rb +0 -61
  501. data/lib/jets/controller/rendering/rack_renderer.rb +0 -267
  502. data/lib/jets/controller/rendering.rb +0 -96
  503. data/lib/jets/controller/stage.rb +0 -34
  504. data/lib/jets/controller.rb +0 -3
  505. data/lib/jets/db.rb +0 -15
  506. data/lib/jets/generator/templates/erb/controller/view.html.erb +0 -2
  507. data/lib/jets/generator/templates/erb/scaffold/index.html.erb +0 -29
  508. data/lib/jets/generator/templates/rails/controller/controller.rb +0 -13
  509. data/lib/jets/generator/templates/rails/helper/helper.rb +0 -4
  510. data/lib/jets/generator/templates/rails/scaffold_controller/controller.rb +0 -67
  511. data/lib/jets/generator.rb +0 -112
  512. data/lib/jets/internal/app/controllers/jets/bare_controller.rb +0 -16
  513. data/lib/jets/internal/app/controllers/jets/rack_controller.rb +0 -12
  514. data/lib/jets/internal/app/helpers/jets/mailers_helper.rb +0 -9
  515. data/lib/jets/internal/app/jobs/jets/preheat_job.rb +0 -52
  516. data/lib/jets/internal/app/views/jets/mailers/index.html.erb +0 -8
  517. data/lib/jets/internal/app/views/jets/mailers/mailer.html.erb +0 -6
  518. data/lib/jets/internal/turbines/jets/mailer.rb +0 -52
  519. data/lib/jets/lambda/task.rb +0 -111
  520. data/lib/jets/logger.rb +0 -21
  521. data/lib/jets/middleware/configurator.rb +0 -84
  522. data/lib/jets/middleware/default_stack.rb +0 -53
  523. data/lib/jets/middleware/layer.rb +0 -34
  524. data/lib/jets/middleware/stack.rb +0 -77
  525. data/lib/jets/middleware.rb +0 -33
  526. data/lib/jets/overrides/rails/action_controller.rb +0 -13
  527. data/lib/jets/overrides/rails/asset_tag_helper.rb +0 -114
  528. data/lib/jets/overrides/rails/common_methods.rb +0 -13
  529. data/lib/jets/overrides/rails/migration_checker.rb +0 -34
  530. data/lib/jets/overrides/rails/rendering_helper.rb +0 -27
  531. data/lib/jets/overrides/rails/url_helper.rb +0 -88
  532. data/lib/jets/overrides/rails.rb +0 -6
  533. data/lib/jets/rack_server.rb +0 -86
  534. data/lib/jets/resource/api_gateway/base_path/function.rb +0 -49
  535. data/lib/jets/resource/api_gateway/base_path/role.rb +0 -76
  536. data/lib/jets/resource/api_gateway/cors.rb +0 -61
  537. data/lib/jets/resource/api_gateway/method.rb +0 -102
  538. data/lib/jets/resource/api_gateway/rest_api/routes/change.rb +0 -16
  539. data/lib/jets/resource/base.rb +0 -28
  540. data/lib/jets/resource/child_stack/api_deployment.rb +0 -58
  541. data/lib/jets/resource/child_stack/api_gateway.rb +0 -23
  542. data/lib/jets/resource/child_stack/api_resource/page.rb +0 -20
  543. data/lib/jets/resource/child_stack/api_resource.rb +0 -54
  544. data/lib/jets/resource/child_stack/base.rb +0 -24
  545. data/lib/jets/resource/lambda/function.rb +0 -221
  546. data/lib/jets/resource/logs/subscription_filter.rb +0 -31
  547. data/lib/jets/resource/permission.rb +0 -45
  548. data/lib/jets/resource.rb +0 -71
  549. data/lib/jets/router/error.rb +0 -4
  550. data/lib/jets/router/finder.rb +0 -47
  551. data/lib/jets/router/helpers/core_helper.rb +0 -27
  552. data/lib/jets/router/helpers/named_routes_helper.rb +0 -8
  553. data/lib/jets/router/helpers.rb +0 -4
  554. data/lib/jets/router/method_creator/code.rb +0 -99
  555. data/lib/jets/router/method_creator/edit.rb +0 -12
  556. data/lib/jets/router/method_creator/generic.rb +0 -11
  557. data/lib/jets/router/method_creator/index.rb +0 -48
  558. data/lib/jets/router/method_creator/new.rb +0 -12
  559. data/lib/jets/router/method_creator/root.rb +0 -15
  560. data/lib/jets/router/method_creator/show.rb +0 -12
  561. data/lib/jets/router/method_creator.rb +0 -50
  562. data/lib/jets/turbo/database_yaml.rb +0 -41
  563. data/lib/jets/turbo/project/.gitignore +0 -12
  564. data/lib/jets/turbo/project/.jetskeep +0 -1
  565. data/lib/jets/turbo/project/Gemfile +0 -16
  566. data/lib/jets/turbo/project/Rakefile +0 -2
  567. data/lib/jets/turbo/project/app/controllers/application_controller.rb +0 -2
  568. data/lib/jets/turbo/project/app/helpers/application_helper.rb +0 -2
  569. data/lib/jets/turbo/project/app/jobs/application_job.rb +0 -4
  570. data/lib/jets/turbo/project/config/application.rb +0 -5
  571. data/lib/jets/turbo/project/config/routes.rb +0 -4
  572. data/lib/jets/turbo/project/config.ru +0 -5
  573. data/lib/jets/turbo/rails.rb +0 -127
  574. data/lib/jets/turbo/templates/config/database.yml +0 -30
  575. data/lib/jets/turbo.rb +0 -56
  576. data/readme/prerelease.md +0 -6
  577. data/readme/testing.md +0 -60
  578. /data/{lib/jets → engines}/internal/app/shared/functions/jets/s3_bucket_config.rb +0 -0
  579. /data/lib/jets/{commands → command}/help/build.md +0 -0
  580. /data/lib/jets/{commands → command}/help/clean/build.md +0 -0
  581. /data/lib/jets/{commands → command}/help/clean/log.md +0 -0
  582. /data/lib/jets/{commands → command}/help/console.md +0 -0
  583. /data/lib/jets/{commands → command}/help/db/generate.md +0 -0
  584. /data/lib/jets/{commands → command}/help/dbconsole.md +0 -0
  585. /data/lib/jets/{commands → command}/help/degenerate.md +0 -0
  586. /data/lib/jets/{commands → command}/help/delete.md +0 -0
  587. /data/lib/jets/{commands → command}/help/gems/check.md +0 -0
  588. /data/lib/jets/{commands → command}/help/generate.md +0 -0
  589. /data/lib/jets/{commands → command}/help/import/rack.md +0 -0
  590. /data/lib/jets/{commands → command}/help/import/rails.md +0 -0
  591. /data/lib/jets/{commands → command}/help/runner.md +0 -0
  592. /data/lib/jets/{commands → command}/help/server.md +0 -0
  593. /data/lib/jets/{commands → command}/help/status.md +0 -0
  594. /data/lib/jets/{commands → command}/help/upgrade.md +0 -0
  595. /data/lib/jets/{commands → command}/help/url.md +0 -0
  596. /data/lib/jets/{generator/templates/active_job → generators}/job/templates/application_job.rb.tt +0 -0
  597. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/.rspec +0 -0
  598. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/README.md +0 -0
  599. /data/{.gitmodules → lib/jets/generators/overrides/app/templates/app/assets/images/.keep} +0 -0
  600. /data/lib/jets/{commands/templates/skeleton/db/.gitkeep → generators/overrides/app/templates/app/assets/javascripts/.keep} +0 -0
  601. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/app/controllers/application_controller.rb +0 -0
  602. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/app/helpers/application_helper.rb +0 -0
  603. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/app/jobs/application_job.rb +0 -0
  604. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/config.ru +0 -0
  605. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/public/favicon.ico +0 -0
  606. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/spec/controllers/posts_controller_spec.rb +0 -0
  607. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/spec/fixtures/payloads/posts-index.json +0 -0
  608. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/spec/fixtures/payloads/posts-show.json +0 -0
  609. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/spec/spec_helper.rb.tt +0 -0
  610. /data/lib/jets/{generator → generators/overrides}/templates/erb/scaffold/_form.html.erb +0 -0
  611. /data/lib/jets/{generator → generators/overrides}/templates/erb/scaffold/edit.html.erb +0 -0
  612. /data/lib/jets/{generator → generators/overrides}/templates/erb/scaffold/new.html.erb +0 -0
  613. /data/lib/jets/{generator → generators/overrides}/templates/erb/scaffold/show.html.erb +0 -0
  614. /data/lib/jets/{generator → generators/overrides}/templates/rails/assets/javascript.js +0 -0
  615. /data/lib/jets/{generator → generators/overrides}/templates/rails/assets/stylesheet.css +0 -0
  616. /data/lib/jets/{generator → generators/overrides}/templates/rails/scaffold/scaffold.css +0 -0
@@ -7,6 +7,7 @@ module Jets::Authorizer
7
7
  class Base < Jets::Lambda::Functions
8
8
  include Dsl
9
9
  include Helpers::IamHelper
10
+ prepend Jets::ExceptionReporting::Process
10
11
 
11
12
  class << self
12
13
  def process(event, context, meth)
@@ -14,8 +14,11 @@ module Jets::Authorizer
14
14
  extend ActiveSupport::Concern
15
15
 
16
16
  class_methods do
17
+ include Jets::Util::Camelize
18
+
17
19
  def authorizer(props={})
18
- if props[:type].to_s.upcase == "COGNITO_USER_POOLS"
20
+ camelize(props)
21
+ if props[:Type].to_s.upcase == "COGNITO_USER_POOLS"
19
22
  cognito_authorizer(props)
20
23
  else
21
24
  lambda_authorizer(props)
@@ -24,26 +27,27 @@ module Jets::Authorizer
24
27
 
25
28
  def lambda_authorizer(props={})
26
29
  with_fresh_properties(multiple_resources: false) do
27
- r = Jets::Resource::ApiGateway::Authorizer.new(props)
30
+ r = Jets::Cfn::Resource::ApiGateway::Authorizer.new(props)
28
31
  resource(r.definition) # add associated resource immediately
29
32
  end
30
33
  end
31
34
 
32
- # Creates a task but registers it to cognito_authorizers instead of all_tasks because there is no Lambda
35
+ # Creates a definition but registers it to cognito_authorizers instead of all_tasks because there is no Lambda
33
36
  # function associated with the cognito authorizer.
34
37
  def cognito_authorizer(props={})
38
+ camelize(props)
35
39
  resources = [props]
36
40
  # Authorizer name can have dashes, but "method" name should be underscored for correct logical id.
37
- meth = props[:name].gsub('-','_')
38
- resource = Jets::Resource::ApiGateway::Authorizer.new(props)
41
+ meth = props[:Name].gsub('-','_')
42
+ resource = Jets::Cfn::Resource::ApiGateway::Authorizer.new(props)
39
43
 
40
- # Mimic task to grab base_replacements, namely namespace.
41
- # Do not actually use the task to create a Lambda function for cognito authorizer.
42
- # Only using the task for base_replacements.
43
- task = Jets::Lambda::Task.new(self.name, meth,
44
+ # Mimic definition to grab base_replacements, namely namespace.
45
+ # Do not actually use the definition to create a Lambda function for cognito authorizer.
46
+ # Only using the definition for base_replacements.
47
+ definition = Jets::Lambda::Definition.new(self.name, meth,
44
48
  resources: resources,
45
49
  replacements: {}) # No need for need additional replacements. Baseline replacements suffice
46
- all_cognito_authorizers[name] = { definition: resource.definition, replacements: task.replacements }
50
+ all_cognito_authorizers[name] = { definition: resource.definition, replacements: definition.replacements }
47
51
  clear_properties
48
52
  end
49
53
 
@@ -56,7 +60,7 @@ module Jets::Authorizer
56
60
  end
57
61
 
58
62
  def build?
59
- !tasks.empty? || !all_cognito_authorizers.empty?
63
+ !definitions.empty? || !all_cognito_authorizers.empty?
60
64
  end
61
65
  end
62
66
 
@@ -1,6 +1,8 @@
1
1
  module Jets::Authorizer::Helpers
2
2
  module IamHelper
3
- private
3
+ include Jets::Util::Camelize
4
+
5
+ private
4
6
  # Structure: https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-lambda-authorizer-output.html
5
7
  # Example:
6
8
  #
@@ -17,23 +19,23 @@ module Jets::Authorizer::Helpers
17
19
  else # build_policy(resource, principal, context, usage_identifier_key) form
18
20
  resource, principal_id, context, usage_identifier_key = args
19
21
  props = {
20
- principal_id: principal_id || "default_user",
21
- policy_document: {
22
- version: "2012-10-17",
23
- statement: [
24
- action: "execute-api:Invoke",
25
- effect: "Allow",
26
- resource: resource || "*",
22
+ principalId: principal_id || "default_user",
23
+ policyDocument: {
24
+ Version: "2012-10-17",
25
+ Statement: [
26
+ Action: "execute-api:Invoke",
27
+ Effect: "Allow",
28
+ Resource: resource || "*",
27
29
  ],
28
30
  },
29
31
  }
30
32
  props[:context] = context if context
31
- props[:usage_identifier_key] = usage_identifier_key if usage_identifier_key
33
+ props[:usageIdentifierKey] = usage_identifier_key if usage_identifier_key
32
34
  end
33
35
 
34
36
  props.transform_keys! { |k| pascalize(k) } # Only top-level keys are pascalized
35
37
  # policyDocument is camelized, everything else is left alone
36
- props["policyDocument"] = Jets::Camelizer.transform(props["policyDocument"])
38
+ props[:policyDocument] = camelize(props[:policyDocument])
37
39
  props
38
40
  end
39
41
 
@@ -41,7 +43,7 @@ module Jets::Authorizer::Helpers
41
43
  new_value = value.to_s.camelize
42
44
  first_char = new_value[0..0].downcase
43
45
  new_value[0] = first_char
44
- new_value
46
+ new_value.to_sym
45
47
  end
46
48
  end
47
49
  end
@@ -0,0 +1,70 @@
1
+ require "zeitwerk"
2
+
3
+ module Jets
4
+ class Autoloaders
5
+ class GemInflector < Zeitwerk::Inflector
6
+ def camelize(basename, _abspath)
7
+ map = {
8
+ cli: "CLI",
9
+ io: "IO",
10
+ version: "VERSION"
11
+ }
12
+ map[basename.to_sym] || super
13
+ end
14
+ end
15
+
16
+ # for jets gem itself
17
+ class Gem
18
+ def autoloader
19
+ loader = Zeitwerk::Loader.new
20
+ loader.tag = "jets.gem"
21
+ loader.inflector = GemInflector.new
22
+ loader.push_dir(lib)
23
+ loader.do_not_eager_load(do_not_eager_load)
24
+ loader.ignore(ignore_paths) # loader.ignore requires full dir or path
25
+ # loader.log!
26
+ loader
27
+ end
28
+
29
+ def lib
30
+ File.expand_path("#{__dir__}/../..") # jets/lib
31
+ end
32
+
33
+ # For jets/info.rb see Jets::Info property Middleware for why we do not eager load.
34
+ def do_not_eager_load
35
+ paths = %w[
36
+ jets/info.rb
37
+ jets/spec_helpers
38
+ jets/spec_helpers.rb
39
+ jets/commands
40
+ jets/commands.rb
41
+ jets/generators
42
+ jets/generators.rb
43
+ ]
44
+ paths.map { |path| "#{lib}/#{path}" } # do_not_eager_load requires full dir or path
45
+ end
46
+
47
+ def ignore_paths
48
+ # commands
49
+ paths = %w[
50
+ jets/application/dummy_config.rb
51
+ jets/application/dummy_erb_compiler.rb
52
+ jets/builders/rackup_wrappers
53
+ jets/builders/templates
54
+ jets/commands/templates
55
+ jets/controller/middleware/webpacker_setup.rb
56
+ jets/core_ext
57
+ jets/core_ext.rb
58
+ jets/generator
59
+ jets/overrides
60
+ jets/ruby_version_check.rb
61
+ jets/cli.rb
62
+ jets/commands.rb
63
+ jets/generators/jets/app/ignore
64
+ jets/tasks.rb
65
+ ]
66
+ paths.map { |path| "#{lib}/#{path}" }
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "active_support/inflector"
4
+
5
+ module Jets
6
+ class Autoloaders
7
+ module Inflector # :nodoc:
8
+ # Concurrent::Map is not needed. This is a private class, and overrides
9
+ # must be defined while the application boots.
10
+ @overrides = {}
11
+
12
+ def self.camelize(basename, _abspath)
13
+ @overrides[basename] || basename.camelize
14
+ end
15
+
16
+ def self.inflect(overrides)
17
+ @overrides.merge!(overrides)
18
+ end
19
+ end
20
+ end
21
+ end
@@ -3,113 +3,50 @@ Jets::Bundle.setup
3
3
  require "zeitwerk"
4
4
 
5
5
  module Jets
6
- module Commands ; end
7
-
8
- module Autoloaders
9
- class OnceInflector < Zeitwerk::Inflector
10
- def camelize(basename, _abspath)
11
- map = {
12
- cli: "CLI",
13
- io: "IO",
14
- version: "VERSION"
15
- }
16
- map[basename.to_sym] || super
17
- end
6
+ class Autoloaders
7
+ require_relative "autoloaders/inflector"
8
+
9
+ include Enumerable
10
+
11
+ attr_reader :main, :once
12
+
13
+ def initialize
14
+ # This `require` delays loading the library on purpose.
15
+ #
16
+ # In Rails 7.0.0, railties/lib/rails.rb loaded Zeitwerk as a side-effect,
17
+ # but a couple of edge cases related to Bundler and Bootsnap showed up.
18
+ # They had to do with order of decoration of `Kernel#require`, something
19
+ # the three of them do.
20
+ #
21
+ # Delaying this `require` up to this point is a convenient trade-off.
22
+ require "zeitwerk"
23
+
24
+ @main = Zeitwerk::Loader.new
25
+ @main.tag = "jets.main"
26
+ @main.inflector = Inflector
27
+
28
+ @once = Zeitwerk::Loader.new
29
+ @once.tag = "jets.once"
30
+ @once.inflector = Inflector
18
31
  end
19
32
 
20
- class << self
21
- extend Memoist
22
-
23
- def log!
24
- main.log!
25
- once.log!
26
- cli.log!
27
- end
28
-
29
- def main
30
- Zeitwerk::Loader.new.tap do |loader|
31
- loader.tag = "jets.main"
32
- # loader.inflector = Inflector.new # TODO: allow custom app inflector
33
- # The main loader is configured later on in Jets::Application#setup_autoload_paths
34
- # because it needs access to Jets.root and Jets.config settings
35
- end
36
- end
37
- memoize :main
38
-
39
- def once
40
- Zeitwerk::Loader.new.tap do |loader|
41
- loader.tag = "jets.once"
42
- loader.inflector = OnceInflector.new
43
-
44
- loader.push_dir("#{__dir__}/..")
45
- internal_app_paths.each do |path|
46
- loader.push_dir("#{__dir__}/#{path}")
47
- # Cannot eager load internal app classes because need the app first for classes like ApplicationHelper
48
- loader.do_not_eager_load("#{__dir__}/#{path}")
49
- end
50
-
51
- internal_turbine_path = "#{__dir__}/internal/turbines"
52
- loader.push_dir(internal_turbine_path)
53
-
54
- do_not_eager_load_paths.each do |path|
55
- loader.do_not_eager_load("#{__dir__}/#{path}")
56
- end
57
-
58
- ignore_paths.each do |path|
59
- loader.ignore("#{__dir__}/#{path}")
60
- end
61
- end
62
- end
63
- memoize :once
64
-
65
- def cli
66
- Zeitwerk::Loader.new.tap do |loader|
67
- loader.tag = "jets.cli"
68
- loader.inflector = OnceInflector.new
69
-
70
- loader.push_dir("#{__dir__}/commands", namespace: Jets::Commands)
71
- loader.ignore("#{__dir__}/commands/templates*")
72
- end
73
- end
74
- memoize :cli
33
+ def each
34
+ yield main
35
+ yield once
36
+ end
75
37
 
76
- private
77
- def internal_app_paths
78
- %w[
79
- internal/app/controllers
80
- internal/app/helpers
81
- internal/app/jobs
82
- internal/turbines
83
- ]
84
- end
38
+ def logger=(logger)
39
+ each { |loader| loader.logger = logger }
40
+ end
85
41
 
86
- # Do eager load but allow autoloading. Specs related files make sense here.
87
- def do_not_eager_load_paths
88
- %w[
89
- cli
90
- spec_helpers
91
- spec_helpers.rb
92
- generator
93
- ]
94
- end
42
+ def log!
43
+ each(&:log!)
44
+ end
95
45
 
96
- # These files will not be eager loaded and also will not follow the autoloading convention.
97
- # They are generally explictly required.
98
- def ignore_paths
99
- # eager loading builders/rackup_wrappers - will cause the program to exit
100
- %w[
101
- builders/rackup_wrappers
102
- builders/reconfigure_rails
103
- builders/templates
104
- commands
105
- controller/middleware/webpacker_setup.rb
106
- core_ext
107
- internal
108
- overrides
109
- turbo/project
110
- ]
111
- end
46
+ def self.for_gem
47
+ Gem.new.autoloader
112
48
  end
113
49
  end
114
50
  end
115
51
 
52
+ require_relative "autoloaders/gem"
@@ -55,7 +55,7 @@ module Jets::AwsServices
55
55
  end
56
56
 
57
57
  # Lookup output value.
58
- # Used in Jets::Resource::ApiGateway::RestApi::* andJets::Commands::Url
58
+ # Used in Jets::Cfn::Resource::ApiGateway::RestApi::* andJets::Commands::Url
59
59
  def lookup(outputs, key)
60
60
  out = outputs.find { |o| o.output_key == key }
61
61
  out&.output_value
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "active_support/backtrace_cleaner"
4
+ require "active_support/core_ext/string/access"
5
+
6
+ module Jets
7
+ class BacktraceCleaner < ActiveSupport::BacktraceCleaner
8
+ APP_DIRS_PATTERN = /\A(?:\.\/)?(?:app|config|lib|test|\(\w*\))/
9
+ RENDER_TEMPLATE_PATTERN = /:in `.*_\w+_{2,3}\d+_\d+'/
10
+
11
+ def initialize
12
+ super
13
+ @root = "#{Jets.root}/"
14
+ add_filter do |line|
15
+ line.start_with?(@root) ? line.from(@root.size) : line
16
+ end
17
+ add_filter do |line|
18
+ if RENDER_TEMPLATE_PATTERN.match?(line)
19
+ line.sub(RENDER_TEMPLATE_PATTERN, "")
20
+ else
21
+ line
22
+ end
23
+ end
24
+ add_silencer { |line| !APP_DIRS_PATTERN.match?(line) }
25
+ end
26
+ end
27
+ end
data/lib/jets/booter.rb CHANGED
@@ -1,133 +1,35 @@
1
- require "jets/core_ext/kernel" # Hack prevents Rails const from being defined
1
+ require "jets/core_ext/kernel" # Hack prevents Jets const from being defined
2
2
 
3
3
  class Jets::Booter
4
4
  class << self
5
5
  @booted = false
6
6
  def boot!
7
7
  return if @booted
8
-
9
8
  confirm_jets_project!
10
- Jets::Bundle.require
11
-
12
- Jets.application.setup!
13
- check_ruby_version!
14
-
15
- # Turbines are loaded after setup_autoload_paths in Jets.application.setup! Some Turbine options are defined
16
- # in the project so setup must happen before internal Turbines are loaded.
17
- load_internal_turbines
18
-
19
- run_turbines(:initializers)
20
- # Load configs after Turbine initializers so Turbines can defined some config options and they are available in
21
- # user's project environment configs.
22
- Jets.application.configs!
23
- app_initializers
24
- run_turbines(:after_initializers)
25
- Jets.application.finish!
26
9
 
27
- setup_db # establish db connections in Lambda Execution Context.
28
- # The eager load calls connects_to in models and establish those connections in Lambda Execution Context also.
29
- internal_finisher
30
- eager_load
31
-
32
- # TODO: Figure out how to build middleware during Jets.boot without breaking jets new and webpacker:install
33
- # build_middleware_stack
10
+ # Registration phase
11
+ Jets::Bundle.require # engine config and register initializers
12
+ load_internal_engine # internal engine initializers
13
+ require_application! # override with user customizations
34
14
 
15
+ # Run phase
16
+ Jets.application.initialize!
35
17
  @booted = true
36
18
  end
37
19
 
38
- # Runs right before eager_load
39
- def internal_finisher
40
- load_shared_extensions
41
- end
42
-
43
- # Shared extensions are added near the end because they require the Jets app load paths to first.
44
- # We eager load the extensions and then use the loaded modules to extend Jets::Stack directly.
45
- # Originally used an included hook but thats too early before app/shared/extensions is in the load_path.
46
- def load_shared_extensions
47
- base_path = "#{Jets.root}/app/shared/extensions"
48
- Dir.glob("#{base_path}/**/*.rb").each do |path|
49
- next unless File.file?(path)
20
+ def require_application!
21
+ require ENGINE_PATH if defined?(ENGINE_PATH)
50
22
 
51
- class_name = path.sub("#{base_path}/", '').sub(/\.rb/,'').camelize
52
- mod = class_name.constantize # autoload
53
- Jets::Stack.extend(mod)
54
- end
55
- end
56
-
57
- def eager_load
58
- preload_extensions
59
- Jets::Autoloaders.main.eager_load # Eager load project code. Rather have user find out early than later on AWS Lambda.
60
- end
61
-
62
- def preload_extensions
63
- base_path = "#{Jets.root}/app/extensions"
64
- Dir.glob("#{base_path}/**/*.rb").each do |path|
65
- next unless File.file?(path)
66
-
67
- class_name = path.sub("#{base_path}/", '').sub(/\.rb/,'').camelize
68
- klass = class_name.constantize # autoload
69
- Jets::Lambda::Functions.extend(klass)
70
- end
71
- end
72
-
73
- # Using ActiveRecord outside of Rails, so we need to set up the db connection ourself.
74
- #
75
- # Only connects to database for ActiveRecord and when config/database.yml exists.
76
- # Dynomite handles connecting to the clients lazily.
77
- def setup_db
78
- return unless File.exist?("#{Jets.root}/config/database.yml")
79
-
80
- db_configs = Jets.application.config.database
81
- # DatabaseTasks.database_configuration for db:create db:migrate tasks
82
- # Documented in DatabaseTasks that this is the right way to set it when
83
- # using ActiveRecord rake tasks outside of Rails.
84
- ActiveRecord::Tasks::DatabaseTasks.database_configuration = db_configs
85
-
86
- if db_configs.configs_for(env_name: Jets.env).blank?
87
- abort("ERROR: config/database.yml exists but no environment section configured for #{Jets.env}")
88
- end
89
- ActiveRecord::Base.configurations = db_configs
90
- connect_db
91
- end
92
-
93
- # Eager connect to database, so connections are established in the Lambda Execution Context and get reused.
94
- # Interestingly, the connections info is stored in the shared state but the connection doesnt show up on
95
- # `show processlist` until after a query. Have confirmed that the connection is reused and the connection count stays
96
- # the same.
97
- def connect_db
98
- if ActiveRecord::Base.legacy_connection_handling
99
- primary_hash_config = ActiveRecord::Base.configurations.configs_for(env_name: Jets.env).find { |hash_config|
100
- hash_config.name == "primary"
101
- }
102
-
103
- primary_config = primary_hash_config.configuration_hash # configuration_hash is a normal Ruby Hash
104
-
105
- ActiveRecord::Base.establish_connection(primary_config)
23
+ if defined?(APP_PATH)
24
+ check_old_jets_code!
25
+ require APP_PATH
106
26
  else
107
- configs = ActiveRecord::Base.configurations.configs_for(env_name: Jets.env, include_replicas: true)
108
-
109
- databases = { }
110
- databases[:writing] = :primary if configs.any? { |config| config.name == "primary" }
111
- databases[:reading] = :primary_replica if configs.any? { |config| config.name == "primary_replica" }
112
-
113
- ActiveRecord::Base.connects_to database: databases
27
+ require "#{Jets.root}/config/application"
114
28
  end
115
29
  end
116
30
 
117
- def load_internal_turbines
118
- Jets::Autoloaders.once.on_setup do
119
- Jets::Mailer # only one right now
120
- end
121
- end
122
-
123
- # All Turbines
124
- def turbine_initializers
125
- Jets::Turbine.subclasses.each do |subclass|
126
- initializers = subclass.initializers || []
127
- initializers.each do |label, block|
128
- block.call(Jets.application)
129
- end
130
- end
31
+ def load_internal_engine
32
+ require File.expand_path("../../engines/internal/lib/internal/engine.rb", __dir__)
131
33
  end
132
34
 
133
35
  # All Turbines
@@ -137,30 +39,27 @@ class Jets::Booter
137
39
  end
138
40
  end
139
41
 
140
- # run_turbines(:initializers)
141
- # run_turbines(:after_initializers)
142
- def run_turbines(name)
143
- Jets::Turbine.subclasses.each do |subclass|
144
- hooks = subclass.send(name) || []
145
- hooks.each do |label, block|
146
- block.call(Jets.application)
147
- end
148
- end
149
- end
150
-
151
- # Builds and memoize stack so it only gets built on bootup
152
- def build_middleware_stack
153
- Jets.application.build_stack
154
- end
155
-
156
42
  # Cannot call this for the jets new
43
+ # We check that within a jets project again as Jets.boot
44
+ # Also checked in the jets/cli.rb more generally
157
45
  def confirm_jets_project!
46
+ return if defined?(ENGINE_PATH)
158
47
  unless File.exist?("#{Jets.root}/config/application.rb")
159
48
  puts "It does not look like you are running this command within a jets project. Please confirm that you are in a jets project and try again.".color(:red)
160
49
  exit 1
161
50
  end
162
51
  end
163
52
 
53
+ def check_old_jets_code!
54
+ application_rb = "#{Jets.root}/config/application.rb"
55
+ return unless File.exist?(application_rb)
56
+ return if File.read(application_rb).include?(' < Jets::Application')
57
+ puts "ERROR: Based on config/application.rb, it looks like your app code was written with an older version of Jets.".color(:red)
58
+ puts "Please install and run the jets-upgrade command to upgrade your project."
59
+ puts " jets-upgrade go".color(:green)
60
+ exit 1
61
+ end
62
+
164
63
  def message
165
64
  "Jets booting up in #{Jets.env.color(:green)} mode!"
166
65
  end
@@ -171,55 +70,9 @@ class Jets::Booter
171
70
  puts 'The config.ru file is missing Jets.boot. Please add Jets.boot after require "jets"'.color(:red)
172
71
  puts "This was changed as made in Jets v1.1.0."
173
72
  puts "To have Jets update the config.fu file for you, you can run:\n\n"
174
- puts " jets upgrade"
73
+ puts " jets-upgrade"
175
74
  exit 1
176
75
  end
177
76
  end
178
-
179
- def check_ruby_version!
180
- return if ENV['JETS_RUBY_CHECK'] == '0'
181
- return if !Jets.config.ruby.check
182
- return if ruby_version_supported?
183
-
184
- puts <<~EOL.color(:red)
185
- You are using Ruby #{RUBY_VERSION}
186
- AWS Lambda does not support this version.
187
- Please use one of the supported Ruby versions: #{supported_ruby_versions.join(' ')}
188
- EOL
189
-
190
- puts <<~EOL
191
- If you would like to skip this check, you can set: JETS_RUBY_CHECK=0 or configure
192
-
193
- config/application.rb
194
-
195
- Jets.application.configure do
196
- config.ruby.check = false
197
- end
198
-
199
- Or if you want to allow additional Ruby versions, then configure:
200
-
201
- config/application.rb
202
-
203
- Jets.application.configure do
204
- config.ruby.supported_versions = ["2.5", "2.7", "3.2"]
205
- end
206
-
207
- Note: If AWS Lambda does not officially support the Ruby version,
208
- you'll need to also provide the Ruby Custom Runtime Layer.
209
- Related Docs: https://rubyonjets.com/docs/extras/custom-runtime/
210
- EOL
211
- exit 1
212
- end
213
-
214
- def ruby_version_supported?
215
- md = RUBY_VERSION.match(/(\d+)\.(\d+)\.\d+/)
216
- major, minor = md[1], md[2]
217
- detected_ruby = [major, minor].join('.')
218
- supported_ruby_versions.include?(detected_ruby)
219
- end
220
-
221
- def supported_ruby_versions
222
- Jets.config.ruby.supported_versions
223
- end
224
77
  end
225
78
  end