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,8 @@ require 'json'
7
7
  # Jets::Job::Base
8
8
  module Jets::Lambda
9
9
  class Functions
10
+ include Jets::ExceptionReporting
11
+
10
12
  attr_reader :event, :context, :meth
11
13
  def initialize(event, context, meth)
12
14
  @event = HashWithIndifferentAccess.new(event) # Hash, JSON.parse(event) ran BaseProcessor
@@ -16,11 +18,44 @@ module Jets::Lambda
16
18
  # to use later.
17
19
  end
18
20
 
21
+ def logger
22
+ Jets.logger
23
+ end
24
+
19
25
  include Dsl # At the end so methods like event, context and method
20
26
  # do not trigger method_added
21
27
 
28
+ # Pretty hacky since action_view/rendering.rb _normalize_options calls super
29
+ def _normalize_options(options) # :doc:
30
+ options
31
+ end
32
+
22
33
  class << self
23
- # Tracking subclasses because it helps with Lambda::Dsl#find_all_tasks
34
+ attr_reader :abstract
35
+ alias_method :abstract?, :abstract
36
+ @abstract = true
37
+
38
+ class << self
39
+ def inherited(klass) # :nodoc:
40
+ # Define the abstract ivar on subclasses so that we don't get
41
+ # uninitialized ivar warnings
42
+ unless klass.instance_variable_defined?(:@abstract)
43
+ klass.instance_variable_set(:@abstract, false)
44
+ end
45
+ super
46
+ end
47
+ end
48
+
49
+ # Define a controller as abstract. See internal_methods for more details.
50
+ def abstract!
51
+ @abstract = true
52
+ end
53
+
54
+ def _prefixes
55
+ []
56
+ end
57
+
58
+ # Tracking subclasses because it helps with Lambda::Dsl#find_all_definitions
24
59
  def subclasses
25
60
  @subclasses ||= []
26
61
  end
@@ -2,8 +2,7 @@ class Jets::Mega::Request
2
2
  class Source
3
3
  def initialize(event)
4
4
  @event = event
5
- env = Jets::Controller::Rack::Env.new(@event, {}).convert # convert to Rack env
6
- @source_request = Rack::Request.new(env)
5
+ @source_request = Rack::Request.new(event: event)
7
6
  end
8
7
 
9
8
  def body
@@ -14,14 +14,14 @@ module Jets::Mega
14
14
 
15
15
  def proxy
16
16
  http_method = @event['httpMethod'] # GET, POST, PUT, DELETE, etc
17
- params = @controller.params(raw: true, path_parameters: false)
17
+ params = @controller.params(include_path_params: false)
18
18
 
19
19
  uri = get_uri
20
20
 
21
21
  http = Net::HTTP.new(uri.host, uri.port)
22
22
  http.open_timeout = http.read_timeout = 60
23
23
 
24
- # Rails sets _method=patch or _method=put as workaround
24
+ # Jets sets _method=patch or _method=put as workaround
25
25
  # Falls back to GET when testing in lambda console
26
26
  http_class = params['_method'] || http_method || 'GET'
27
27
  http_class.capitalize!
@@ -115,7 +115,7 @@ module Jets::Mega
115
115
  end
116
116
  memoize :source
117
117
 
118
- # Rails sets _method=patch or _method=put as workaround
118
+ # Jets sets _method=patch or _method=put as workaround
119
119
  # Falls back to GET when testing in lambda console
120
120
  # @event['httpMethod'] is GET, POST, PUT, DELETE, etc
121
121
  def http_class
@@ -125,7 +125,7 @@ module Jets::Mega
125
125
  end
126
126
 
127
127
  def params
128
- @controller.params(raw: true, path_parameters: false, body_parameters: true)
128
+ @controller.params(include_path_params: false, include_body_params: true)
129
129
  end
130
130
  memoize :params
131
131
 
data/lib/jets/names.rb CHANGED
@@ -6,54 +6,70 @@ class Jets::Names
6
6
  class << self
7
7
  extend Memoist
8
8
 
9
+ def templates_folder
10
+ "#{Jets.build_root}/templates"
11
+ end
12
+
13
+ def one_controller_template_path
14
+ "#{templates_folder}/jets-controller.yml"
15
+ end
16
+
9
17
  def app_template_path(app_class)
10
18
  underscored = underscore(app_class)
11
- "#{template_path_prefix}-app-#{underscored}.yml"
19
+ "#{templates_folder}/app-#{underscored}.yml"
12
20
  end
13
21
 
14
22
  def shared_template_path(shared_class)
15
23
  underscored = underscore(shared_class)
16
- "#{template_path_prefix}-shared-#{underscored}.yml"
17
- end
18
-
19
- def template_path_prefix
20
- "#{Jets.build_root}/templates/#{Jets.config.project_namespace}"
24
+ "#{templates_folder}/shared-#{underscored}.yml"
21
25
  end
22
26
 
23
27
  # consider moving these methods into cfn/builder/helpers.rb or that area.
24
28
  def parent_template_path
25
- "#{template_path_prefix}.yml"
29
+ "#{templates_folder}/parent.yml"
26
30
  end
27
31
 
28
32
  # consider moving these methods into cfn/builder/helpers.rb or that area.
29
33
  def api_gateway_template_path
30
- "#{template_path_prefix}-api-gateway.yml"
34
+ "#{templates_folder}/api-gateway.yml"
31
35
  end
32
36
 
33
- def api_resources_template_path(page)
34
- "#{template_path_prefix}-api-resources-#{page}.yml"
37
+ def api_resources_template_path(page_number)
38
+ "#{templates_folder}/api-resources-#{page_number}.yml"
39
+ end
40
+
41
+ def api_cors_template_path(page_number)
42
+ "#{templates_folder}/api-cors-#{page_number}.yml"
43
+ end
44
+
45
+ def api_methods_template_path(page_number)
46
+ "#{templates_folder}/api-methods-#{page_number}.yml"
35
47
  end
36
48
 
37
49
  def api_deployment_template_path
38
- "#{template_path_prefix}-api-deployment.yml"
50
+ "#{templates_folder}/api-deployment.yml"
51
+ end
52
+
53
+ def api_mapping_template_path
54
+ "#{templates_folder}/api-mapping.yml"
39
55
  end
40
56
 
41
57
  def shared_resources_template_path
42
- "#{template_path_prefix}-shared-resources.yml"
58
+ "#{templates_folder}/shared-resources.yml"
43
59
  end
44
60
 
45
61
  def parent_stack_name
46
- File.basename(parent_template_path, ".yml")
62
+ Jets.project_namespace
47
63
  end
48
64
 
49
65
  def gateway_api_name
50
- "#{Jets.config.project_namespace}"
66
+ Jets.project_namespace
51
67
  end
52
68
 
53
69
  def authorizer_template_path(path)
54
70
  underscored = underscore(path)
55
71
  underscored.sub!(/^app-/, '')
56
- "#{template_path_prefix}-#{underscored}.yml"
72
+ "#{templates_folder}/#{underscored}.yml"
57
73
  end
58
74
 
59
75
  def underscore(s)
@@ -0,0 +1,11 @@
1
+ # This is a dummy Rails class that delegates to Jets.
2
+ # It's only used for jets generate and jets db:migrate.
3
+ # It's easier to mock out the Rails module then to get them working.
4
+
5
+ module Rails
6
+ cattr_accessor :application
7
+ self.application = Jets.application
8
+ class << self
9
+ delegate :env, :root, to: Jets
10
+ end
11
+ end
@@ -22,6 +22,16 @@ module AwsLambda
22
22
  else
23
23
  # Orignal method calls .to_json but this collides with ActiveSupport's to_json
24
24
  # method_response.to_json # application/json is assumed
25
+ # https://stackoverflow.com/questions/18067203/ruby-to-json-issue-with-error-illegal-malformed-utf-8
26
+ if method_response.is_a?(Hash)
27
+ method_response.deep_transform_values! do |v|
28
+ if v.respond_to?(:force_encoding) && !v.frozen?
29
+ v.force_encoding("ISO-8859-1").encode("UTF-8")
30
+ else
31
+ v # IE: Integer
32
+ end
33
+ end
34
+ end
25
35
  JSON.dump(method_response)
26
36
  end
27
37
  end
@@ -0,0 +1,10 @@
1
+ require "puma/error_logger"
2
+ class Puma::ErrorLogger
3
+ alias_method :original_title, :title
4
+ def title(options={})
5
+ string = original_title(options)
6
+ error = options[:error]
7
+ string << "\n#{error.backtrace.join("\n")}" if error
8
+ string
9
+ end
10
+ end
data/lib/jets/paths.rb ADDED
@@ -0,0 +1,243 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "pathname"
4
+
5
+ module Jets
6
+ module Paths
7
+ # This object is an extended hash that behaves as root of the <tt>Jets::Paths</tt> system.
8
+ # It allows you to collect information about how you want to structure your application
9
+ # paths through a Hash-like API. It requires you to give a physical path on initialization.
10
+ #
11
+ # root = Root.new "/jets"
12
+ # root.add "app/controllers", eager_load: true
13
+ #
14
+ # The above command creates a new root object and adds "app/controllers" as a path.
15
+ # This means we can get a Jets::Paths::Path object back like below:
16
+ #
17
+ # path = root["app/controllers"]
18
+ # path.eager_load? # => true
19
+ # path.is_a?(Jets::Paths::Path) # => true
20
+ #
21
+ # The +Path+ object is simply an enumerable and allows you to easily add extra paths:
22
+ #
23
+ # path.is_a?(Enumerable) # => true
24
+ # path.to_ary.inspect # => ["app/controllers"]
25
+ #
26
+ # path << "lib/controllers"
27
+ # path.to_ary.inspect # => ["app/controllers", "lib/controllers"]
28
+ #
29
+ # Notice that when you add a path using +add+, the path object created already
30
+ # contains the path with the same path value given to +add+. In some situations,
31
+ # you may not want this behavior, so you can give <tt>:with</tt> as option.
32
+ #
33
+ # root.add "config/routes", with: "config/routes.rb"
34
+ # root["config/routes"].inspect # => ["config/routes.rb"]
35
+ #
36
+ # The +add+ method accepts the following options as arguments:
37
+ # eager_load, autoload, autoload_once, and glob.
38
+ #
39
+ # Finally, the +Path+ object also provides a few helpers:
40
+ #
41
+ # root = Root.new "/jets"
42
+ # root.add "app/controllers"
43
+ #
44
+ # root["app/controllers"].expanded # => ["/jets/app/controllers"]
45
+ # root["app/controllers"].existent # => ["/jets/app/controllers"]
46
+ #
47
+ # Check the <tt>Jets::Paths::Path</tt> documentation for more information.
48
+ class Root
49
+ attr_accessor :path
50
+
51
+ def initialize(path)
52
+ @path = path
53
+ @root = {}
54
+ end
55
+
56
+ def []=(path, value)
57
+ glob = self[path] ? self[path].glob : nil
58
+ add(path, with: value, glob: glob)
59
+ end
60
+
61
+ def add(path, options = {})
62
+ with = Array(options.fetch(:with, path))
63
+ @root[path] = Path.new(self, path, with, options)
64
+ end
65
+
66
+ def [](path)
67
+ @root[path]
68
+ end
69
+
70
+ def values
71
+ @root.values
72
+ end
73
+
74
+ def keys
75
+ @root.keys
76
+ end
77
+
78
+ def values_at(*list)
79
+ @root.values_at(*list)
80
+ end
81
+
82
+ def all_paths
83
+ values.tap(&:uniq!)
84
+ end
85
+
86
+ def autoload_once
87
+ filter_by(&:autoload_once?)
88
+ end
89
+
90
+ def eager_load
91
+ filter_by(&:eager_load?)
92
+ end
93
+
94
+ def autoload_paths
95
+ filter_by(&:autoload?)
96
+ end
97
+
98
+ def load_paths
99
+ filter_by(&:load_path?)
100
+ end
101
+
102
+ private
103
+ def filter_by(&block)
104
+ all_paths.find_all(&block).flat_map { |path|
105
+ paths = path.existent
106
+ paths - path.children.flat_map { |p| yield(p) ? [] : p.existent }
107
+ }.uniq
108
+ end
109
+ end
110
+
111
+ class Path
112
+ include Enumerable
113
+
114
+ attr_accessor :glob
115
+
116
+ def initialize(root, current, paths, options = {})
117
+ @paths = paths
118
+ @current = current
119
+ @root = root
120
+ @glob = options[:glob]
121
+ @exclude = options[:exclude]
122
+
123
+ options[:autoload_once] ? autoload_once! : skip_autoload_once!
124
+ options[:eager_load] ? eager_load! : skip_eager_load!
125
+ options[:autoload] ? autoload! : skip_autoload!
126
+ options[:load_path] ? load_path! : skip_load_path!
127
+ end
128
+
129
+ def absolute_current # :nodoc:
130
+ File.expand_path(@current, @root.path)
131
+ end
132
+
133
+ def children
134
+ keys = @root.keys.find_all { |k|
135
+ k.start_with?(@current) && k != @current
136
+ }
137
+ @root.values_at(*keys.sort)
138
+ end
139
+
140
+ def first
141
+ expanded.first
142
+ end
143
+
144
+ def last
145
+ expanded.last
146
+ end
147
+
148
+ %w(autoload_once eager_load autoload load_path).each do |m|
149
+ class_eval <<-RUBY, __FILE__, __LINE__ + 1
150
+ def #{m}! # def eager_load!
151
+ @#{m} = true # @eager_load = true
152
+ end # end
153
+ #
154
+ def skip_#{m}! # def skip_eager_load!
155
+ @#{m} = false # @eager_load = false
156
+ end # end
157
+ #
158
+ def #{m}? # def eager_load?
159
+ @#{m} # @eager_load
160
+ end # end
161
+ RUBY
162
+ end
163
+
164
+ def each(&block)
165
+ @paths.each(&block)
166
+ end
167
+
168
+ def <<(path)
169
+ @paths << path
170
+ end
171
+ alias :push :<<
172
+
173
+ def concat(paths)
174
+ @paths.concat paths
175
+ end
176
+
177
+ def unshift(*paths)
178
+ @paths.unshift(*paths)
179
+ end
180
+
181
+ def to_ary
182
+ @paths
183
+ end
184
+
185
+ def paths
186
+ raise "You need to set a path root" unless @root.path
187
+
188
+ map do |p|
189
+ Pathname.new(@root.path).join(p)
190
+ end
191
+ end
192
+
193
+ def extensions # :nodoc:
194
+ $1.split(",") if @glob =~ /\{([\S]+)\}/
195
+ end
196
+
197
+ # Expands all paths against the root and return all unique values.
198
+ def expanded
199
+ raise "You need to set a path root" unless @root.path
200
+ result = []
201
+
202
+ each do |path|
203
+ path = File.expand_path(path, @root.path)
204
+
205
+ if @glob && File.directory?(path)
206
+ result.concat files_in(path)
207
+ else
208
+ result << path
209
+ end
210
+ end
211
+
212
+ result.uniq!
213
+ result
214
+ end
215
+
216
+ # Returns all expanded paths but only if they exist in the filesystem.
217
+ def existent
218
+ expanded.select do |f|
219
+ does_exist = File.exist?(f)
220
+
221
+ if !does_exist && File.symlink?(f)
222
+ raise "File #{f.inspect} is a symlink that does not point to a valid file"
223
+ end
224
+ does_exist
225
+ end
226
+ end
227
+
228
+ def existent_directories
229
+ expanded.select { |d| File.directory?(d) }
230
+ end
231
+
232
+ alias to_a expanded
233
+
234
+ private
235
+ def files_in(path)
236
+ files = Dir.glob(@glob, base: path)
237
+ files -= @exclude if @exclude
238
+ files.map! { |file| File.join(path, file) }
239
+ files.sort
240
+ end
241
+ end
242
+ end
243
+ end
@@ -1,12 +1,12 @@
1
1
  require 'open3'
2
2
  require 'tmpdir'
3
3
 
4
- class Jets::PolyFun
4
+ class Jets::Poly
5
5
  class BaseExecutor
6
6
  extend Memoist
7
7
 
8
- def initialize(task)
9
- @task = task
8
+ def initialize(definition)
9
+ @definition = definition
10
10
  end
11
11
 
12
12
  # Handler is in properties:
@@ -37,19 +37,19 @@ class Jets::PolyFun
37
37
  end
38
38
 
39
39
  def copy_src_to_temp
40
- app_class = @task.class_name.constantize
40
+ app_class = @definition.class_name.constantize
41
41
  internal = app_class.respond_to?(:internal) && app_class.internal
42
42
  src = internal ?
43
- "#{File.expand_path("../internal", File.dirname(__FILE__))}/#{@task.poly_src_path}" :
44
- "#{Jets.root}/#{@task.poly_src_path}"
45
- dest = "#{@temp_dir}/#{@task.poly_src_path}"
43
+ "#{File.expand_path("../internal", File.dirname(__FILE__))}/#{@definition.poly_src_path}" :
44
+ "#{Jets.root}/#{@definition.poly_src_path}"
45
+ dest = "#{@temp_dir}/#{@definition.poly_src_path}"
46
46
 
47
47
  FileUtils.mkdir_p(File.dirname(dest))
48
48
  FileUtils.cp(src, dest)
49
49
  end
50
50
 
51
51
  def lambda_executor_script
52
- File.dirname("#{@temp_dir}/#{@task.poly_src_path}") + "/lambda_executor" + @task.lang_ext
52
+ File.dirname("#{@temp_dir}/#{@definition.poly_src_path}") + "/lambda_executor" + @definition.lang_ext
53
53
  end
54
54
 
55
55
  # When polymorphic method errors, this method reproduces an error in the lambda format
@@ -75,7 +75,7 @@ class Jets::PolyFun
75
75
  # "errorType": "AttributeError",
76
76
  # "stackTrace": [
77
77
  # [
78
- # "/var/task/handlers/controllers/posts_controller/python/index.py",
78
+ # "/var/definition/handlers/controllers/posts_controller/python/index.py",
79
79
  # 22,
80
80
  # "handle",
81
81
  # "return response({'message': e.message}, 400)"
@@ -84,7 +84,7 @@ class Jets::PolyFun
84
84
  # }
85
85
  #
86
86
  def run_lambda_executor(event, context)
87
- interpreter = @task.lang
87
+ interpreter = @definition.lang
88
88
  command = %Q|#{interpreter} #{lambda_executor_script} '#{JSON.dump(event)}' '#{JSON.dump(context)}'|
89
89
  stdout, stderr, status = Open3.capture3(command)
90
90
  # puts "=> #{command}".color(:green)
@@ -103,7 +103,7 @@ class Jets::PolyFun
103
103
  stack_trace = error_lines.reverse # python shows stack trace in opposite order from ruby
104
104
  JSON.dump(
105
105
  "errorMessage" => error_message,
106
- "errorType" => error_type, # hardcode
106
+ "errorType" => error_type,
107
107
  "stackTrace" => stack_trace
108
108
  )
109
109
  end
@@ -116,8 +116,8 @@ class Jets::PolyFun
116
116
  def handler
117
117
  # Must use the generated CloudFormation template to get the handler because
118
118
  # the handler is derived from mutiple sources.
119
- resource = Jets::Resource::Lambda::Function.new(@task)
120
- full_handler = resource.properties["Handler"] # full handler here
119
+ resource = Jets::Cfn::Resource::Lambda::Function.new(@definition)
120
+ full_handler = resource.properties[:Handler] # full handler here
121
121
  File.extname(full_handler).sub(/^./,'') # the extension of the full handler is the handler
122
122
  end
123
123
  memoize :handler
@@ -1,13 +1,13 @@
1
1
  require 'json'
2
2
 
3
- class Jets::PolyFun
3
+ class Jets::Poly
4
4
  class LambdaExecutor
5
5
  def initialize(task)
6
6
  @task = task
7
7
  end
8
8
 
9
9
  def run(event, context)
10
- executor_class = "Jets::PolyFun::#{@task.lang.capitalize}Executor".constantize
10
+ executor_class = "Jets::Poly::#{@task.lang.capitalize}Executor".constantize
11
11
  executor = executor_class.new(@task)
12
12
  text = executor.run(event, context)
13
13
  JSON.load(text)
@@ -1,4 +1,4 @@
1
- class Jets::PolyFun
1
+ class Jets::Poly
2
2
  class NodeError < StandardError
3
3
  def initialize(message, backtrace)
4
4
  super(message)
@@ -1,4 +1,4 @@
1
- class Jets::PolyFun
1
+ class Jets::Poly
2
2
  class NodeExecutor < BaseExecutor
3
3
  # Code for wrapper script that mimics lambda execution. Wrapper script usage:
4
4
  #
@@ -18,7 +18,7 @@ class Jets::PolyFun
18
18
 
19
19
  # https://docs.aws.amazon.com/lambda/latest/dg/nodejs-prog-model-handler.html
20
20
  def async_syntax?
21
- app_path = "#{Jets.root}/" + @task.handler_path.sub('handlers/', 'app/')
21
+ app_path = "#{Jets.root}/" + @definition.handler_path.sub('handlers/', 'app/')
22
22
  source_code = IO.read(app_path)
23
23
  source_code.match(/=\s*async.*\(/)
24
24
  end
@@ -29,7 +29,7 @@ var event = process.argv[2]
29
29
  event = JSON.parse(event)
30
30
  var context = {}
31
31
 
32
- var app = require("./#{@task.meth}.js")
32
+ var app = require("./#{@definition.meth}.js")
33
33
  app.#{handler}(event, context).then(resp => console.log(JSON.stringify(resp)))
34
34
  EOL
35
35
  end
@@ -46,7 +46,7 @@ var event = process.argv[2]
46
46
  event = JSON.parse(event)
47
47
  var context = {}
48
48
 
49
- var app = require("./#{@task.meth}.js")
49
+ var app = require("./#{@definition.meth}.js")
50
50
  var resp = app.#{handler}(event, context, callback)
51
51
  EOL
52
52
  end
@@ -1,4 +1,4 @@
1
- class Jets::PolyFun
1
+ class Jets::Poly
2
2
  class PythonError < StandardError
3
3
  def initialize(message, backtrace)
4
4
  super(message)
@@ -1,4 +1,4 @@
1
- class Jets::PolyFun
1
+ class Jets::Poly
2
2
  class PythonExecutor < BaseExecutor
3
3
  # Code for wrapper script that mimics lambda execution. Wrapper script usage:
4
4
  #
@@ -11,7 +11,7 @@ class Jets::PolyFun
11
11
  <<-EOL
12
12
  import sys
13
13
  import json
14
- from #{@task.meth} import #{handler}
14
+ from #{@definition.meth} import #{handler}
15
15
  event = json.loads(sys.argv[1])
16
16
  context = {}
17
17
  resp = #{handler}(event, context)