jets 4.0.10 → 5.0.0

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 (618) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +5 -1
  3. data/CHANGELOG.md +53 -0
  4. data/Gemfile +1 -5
  5. data/LICENSE.txt +1 -1
  6. data/README.md +20 -36
  7. data/Rakefile +3 -3
  8. data/engines/internal/app/controllers/jets/application_controller.rb +28 -0
  9. data/engines/internal/app/controllers/jets/bare_controller.rb +6 -0
  10. data/engines/internal/app/controllers/jets/health_controller.rb +55 -0
  11. data/engines/internal/app/controllers/jets/info_controller.rb +45 -0
  12. data/{lib/jets → engines}/internal/app/controllers/jets/mailers_controller.rb +12 -14
  13. data/{lib/jets → engines}/internal/app/controllers/jets/mount_controller.rb +6 -10
  14. data/{lib/jets → engines}/internal/app/controllers/jets/public_controller.rb +6 -2
  15. data/engines/internal/app/controllers/jets/welcome_controller.rb +9 -0
  16. data/{lib/jets → engines}/internal/app/functions/jets/base_path.rb +2 -1
  17. data/{lib/jets → engines}/internal/app/functions/jets/base_path_mapping.rb +26 -6
  18. data/engines/internal/app/jobs/jets/preheat_job.rb +67 -0
  19. data/engines/internal/app/views/jets/info/properties.html.erb +1 -0
  20. data/engines/internal/app/views/jets/info/routes.html.erb +10 -0
  21. data/{lib/jets → engines}/internal/app/views/jets/mailers/email.html.erb +37 -17
  22. data/engines/internal/app/views/jets/mailers/index.html.erb +8 -0
  23. data/engines/internal/app/views/jets/mailers/mailer.html.erb +6 -0
  24. data/{lib/jets/commands/templates/skeleton/public/index.html.tt → engines/internal/app/views/jets/welcome/index.html.erb} +8 -4
  25. data/engines/internal/app/views/layouts/application.html.erb +51 -0
  26. data/engines/internal/lib/internal/actiondispatch.rb +39 -0
  27. data/engines/internal/lib/internal/actionmailer.rb +51 -0
  28. data/engines/internal/lib/internal/actionview.rb +152 -0
  29. data/engines/internal/lib/internal/activerecord.rb +37 -0
  30. data/engines/internal/lib/internal/activesupport.rb +47 -0
  31. data/engines/internal/lib/internal/engine.rb +13 -0
  32. data/engines/internal/lib/internal/i18n_engine.rb +19 -0
  33. data/engines/internal/lib/internal/jets_controller.rb +46 -0
  34. data/engines/internal/lib/internal/overrides/debug_exceptions.rb +40 -0
  35. data/engines/internal/lib/internal/templates/rescues/_trace.html.erb +62 -0
  36. data/engines/internal/lib/internal/templates/rescues/_trace.text.erb +9 -0
  37. data/engines/internal/lib/internal/turbines/asset_tag_helper.rb +70 -0
  38. data/engines/internal/lib/internal/turbines/helpers.rb +18 -0
  39. data/engines/internal/lib/internal/turbines/routes_helpers.rb +42 -0
  40. data/exe/jets +1 -10
  41. data/jets.gemspec +14 -11
  42. data/lib/jets/app_loader.rb +77 -0
  43. data/lib/jets/application/bootstrap.rb +100 -0
  44. data/lib/jets/application/configuration/defaults.rb +256 -0
  45. data/lib/jets/application/configuration.rb +494 -0
  46. data/lib/jets/application/default_middleware_stack.rb +140 -0
  47. data/lib/jets/application/dummy_erb_compiler.rb +18 -0
  48. data/lib/jets/application/finisher.rb +266 -0
  49. data/lib/jets/application/routes_reloader.rb +80 -0
  50. data/lib/jets/application.rb +515 -198
  51. data/lib/jets/authorizer/base.rb +1 -0
  52. data/lib/jets/authorizer/dsl.rb +15 -11
  53. data/lib/jets/authorizer/helpers/iam_helper.rb +13 -11
  54. data/lib/jets/autoloaders/gem.rb +70 -0
  55. data/lib/jets/autoloaders/inflector.rb +21 -0
  56. data/lib/jets/autoloaders.rb +38 -101
  57. data/lib/jets/aws_services/stack_status.rb +1 -1
  58. data/lib/jets/backtrace_cleaner.rb +27 -0
  59. data/lib/jets/booter.rb +29 -176
  60. data/lib/jets/builders/code_builder.rb +45 -117
  61. data/lib/jets/builders/code_size.rb +1 -0
  62. data/lib/jets/builders/gem_replacer.rb +5 -6
  63. data/lib/jets/builders/handler_generator.rb +34 -14
  64. data/lib/jets/builders/lambda_layer.rb +2 -7
  65. data/lib/jets/builders/purger.rb +1 -1
  66. data/lib/jets/builders/rack_packager.rb +1 -1
  67. data/lib/jets/builders/ruby_packager.rb +17 -6
  68. data/lib/jets/builders/shim_vars/app.rb +10 -6
  69. data/lib/jets/builders/templates/handlers/one_lambda_for_all_controllers.rb +33 -0
  70. data/lib/jets/builders/templates/handlers/one_lambda_per_controller.rb +20 -0
  71. data/lib/jets/builders/templates/{handler.rb → handlers/one_lambda_per_method.rb} +6 -0
  72. data/lib/jets/bundle.rb +2 -9
  73. data/lib/jets/cfn/base.rb +82 -0
  74. data/lib/jets/cfn/builder/api/base.rb +12 -0
  75. data/lib/jets/cfn/{builders/api_deployment_builder.rb → builder/api/deployment.rb} +10 -20
  76. data/lib/jets/cfn/{builders/api_gateway_builder.rb → builder/api/gateway.rb} +14 -37
  77. data/lib/jets/cfn/builder/api/mapping.rb +54 -0
  78. data/lib/jets/cfn/builder/api/methods.rb +72 -0
  79. data/lib/jets/cfn/builder/api/paged.rb +30 -0
  80. data/lib/jets/cfn/builder/api/pages/base.rb +105 -0
  81. data/lib/jets/cfn/builder/api/pages/methods.rb +17 -0
  82. data/lib/jets/cfn/builder/api/pages/page.rb +19 -0
  83. data/lib/jets/cfn/builder/api/pages/resources.rb +21 -0
  84. data/lib/jets/cfn/builder/api/resources.rb +40 -0
  85. data/lib/jets/cfn/{builders/authorizer_builder.rb → builder/authorizer.rb} +16 -19
  86. data/lib/jets/cfn/builder/controller.rb +28 -0
  87. data/lib/jets/cfn/builder/function.rb +9 -0
  88. data/lib/jets/cfn/{builders → builder}/interface.rb +45 -51
  89. data/lib/jets/cfn/builder/job.rb +10 -0
  90. data/lib/jets/cfn/builder/nested.rb +130 -0
  91. data/lib/jets/cfn/builder/one_controller.rb +53 -0
  92. data/lib/jets/cfn/{builders/parent_builder → builder/parent}/stagger.rb +1 -1
  93. data/lib/jets/cfn/{builders/parent_builder.rb → builder/parent.rb} +54 -54
  94. data/lib/jets/cfn/builder/post_process.rb +25 -0
  95. data/lib/jets/cfn/{builders/rule_builder.rb → builder/rule.rb} +4 -8
  96. data/lib/jets/cfn/{builders/shared_builder.rb → builder/shared.rb} +4 -3
  97. data/lib/jets/cfn/{builders → builder}/util/source.rb +1 -1
  98. data/lib/jets/{commands/build.rb → cfn/builder.rb} +50 -78
  99. data/lib/jets/cfn/deployment.rb +45 -0
  100. data/lib/jets/cfn/download.rb +39 -0
  101. data/lib/jets/cfn/params/api/base.rb +39 -0
  102. data/lib/jets/cfn/params/api/cors.rb +10 -0
  103. data/lib/jets/cfn/params/api/methods.rb +69 -0
  104. data/lib/jets/cfn/params/api/resources.rb +28 -0
  105. data/lib/jets/{resource/child_stack/common_parameters.rb → cfn/params/common.rb} +3 -3
  106. data/lib/jets/{resource → cfn/resource}/api_gateway/authorizer.rb +21 -21
  107. data/lib/jets/cfn/resource/api_gateway/base_path/function.rb +57 -0
  108. data/lib/jets/{resource → cfn/resource}/api_gateway/base_path/mapping.rb +13 -12
  109. data/lib/jets/cfn/resource/api_gateway/base_path/role.rb +70 -0
  110. data/lib/jets/{resource → cfn/resource}/api_gateway/deployment.rb +13 -20
  111. data/lib/jets/{resource → cfn/resource}/api_gateway/domain_name.rb +11 -11
  112. data/lib/jets/{resource → cfn/resource}/api_gateway/method/authorization.rb +1 -1
  113. data/lib/jets/cfn/resource/api_gateway/method.rb +92 -0
  114. data/lib/jets/{resource → cfn/resource}/api_gateway/resource.rb +14 -10
  115. data/lib/jets/cfn/resource/api_gateway/resource_id.rb +25 -0
  116. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/change_detection.rb +1 -1
  117. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/logical_id/message.rb +1 -1
  118. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/logical_id.rb +1 -1
  119. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/base.rb +5 -3
  120. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/media_types.rb +2 -2
  121. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/page.rb +5 -5
  122. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/to.rb +8 -3
  123. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/variable.rb +2 -2
  124. data/lib/jets/cfn/resource/api_gateway/rest_api/routes/change.rb +27 -0
  125. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/collision/variable_exception.rb +1 -1
  126. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/collision.rb +1 -1
  127. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes.rb +1 -1
  128. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api.rb +12 -12
  129. data/lib/jets/{resource → cfn/resource}/associated.rb +1 -1
  130. data/lib/jets/{resource → cfn/resource}/config/config_rule.rb +18 -18
  131. data/lib/jets/{resource → cfn/resource}/config/managed_rule.rb +5 -5
  132. data/lib/jets/{resource → cfn/resource}/events/rule.rb +10 -10
  133. data/lib/jets/{resource → cfn/resource}/iam/application_role.rb +4 -4
  134. data/lib/jets/{resource → cfn/resource}/iam/base_role_definition.rb +15 -15
  135. data/lib/jets/{resource → cfn/resource}/iam/class_role.rb +5 -5
  136. data/lib/jets/{resource → cfn/resource}/iam/function_role.rb +6 -6
  137. data/lib/jets/{resource → cfn/resource}/iam/managed_policy.rb +1 -1
  138. data/lib/jets/{resource → cfn/resource}/iam/policy.rb +8 -8
  139. data/lib/jets/{resource → cfn/resource}/iam/policy_document.rb +10 -9
  140. data/lib/jets/{resource → cfn/resource}/iot/topic_rule.rb +10 -10
  141. data/lib/jets/{resource → cfn/resource}/lambda/event_source_mapping.rb +9 -9
  142. data/lib/jets/cfn/resource/lambda/function/controller.rb +21 -0
  143. data/lib/jets/{resource → cfn/resource}/lambda/function/environment.rb +4 -5
  144. data/lib/jets/cfn/resource/lambda/function.rb +266 -0
  145. data/lib/jets/{resource → cfn/resource}/lambda/gem_layer.rb +2 -2
  146. data/lib/jets/{resource → cfn/resource}/lambda/layer_version.rb +10 -10
  147. data/lib/jets/cfn/resource/lambda/permission.rb +51 -0
  148. data/lib/jets/cfn/resource/logs/subscription_filter.rb +31 -0
  149. data/lib/jets/cfn/resource/nested/api/base.rb +4 -0
  150. data/lib/jets/cfn/resource/nested/api/deployment.rb +53 -0
  151. data/lib/jets/cfn/resource/nested/api/gateway.rb +15 -0
  152. data/lib/jets/cfn/resource/nested/api/mapping.rb +33 -0
  153. data/lib/jets/cfn/resource/nested/api/methods.rb +30 -0
  154. data/lib/jets/cfn/resource/nested/api/page.rb +8 -0
  155. data/lib/jets/cfn/resource/nested/api/resources.rb +22 -0
  156. data/lib/jets/{resource/child_stack → cfn/resource/nested}/app_class.rb +15 -48
  157. data/lib/jets/{resource/child_stack → cfn/resource/nested}/authorizer.rb +8 -14
  158. data/lib/jets/cfn/resource/nested/base.rb +38 -0
  159. data/lib/jets/cfn/resource/nested/one_controller.rb +48 -0
  160. data/lib/jets/{resource/child_stack → cfn/resource/nested}/shared.rb +10 -16
  161. data/lib/jets/cfn/resource/one/function.rb +66 -0
  162. data/lib/jets/cfn/resource/one/permission.rb +17 -0
  163. data/lib/jets/{resource → cfn/resource}/replacer.rb +26 -27
  164. data/lib/jets/{resource → cfn/resource}/route53/record_set.rb +18 -18
  165. data/lib/jets/{resource → cfn/resource}/s3/bucket.rb +4 -4
  166. data/lib/jets/cfn/resource/s3/jets_bucket.rb +68 -0
  167. data/lib/jets/{resource → cfn/resource}/sns/subscription.rb +8 -8
  168. data/lib/jets/{resource → cfn/resource}/sns/topic.rb +10 -10
  169. data/lib/jets/{resource → cfn/resource}/sns/topic_policy.rb +13 -13
  170. data/lib/jets/{resource → cfn/resource}/sqs/queue.rb +5 -5
  171. data/lib/jets/{resource → cfn/resource}/standardizer.rb +8 -9
  172. data/lib/jets/cfn/resource.rb +8 -0
  173. data/lib/jets/cfn/ship.rb +20 -19
  174. data/lib/jets/cfn/template.rb +89 -0
  175. data/lib/jets/cfn/upload.rb +26 -23
  176. data/lib/jets/cli.rb +28 -210
  177. data/lib/jets/command/actions.rb +49 -0
  178. data/lib/jets/command/api_helpers.rb +41 -0
  179. data/lib/jets/command/aws_helpers.rb +26 -0
  180. data/lib/jets/command/base.rb +204 -0
  181. data/lib/jets/command/behavior.rb +83 -0
  182. data/lib/jets/command/environment_argument.rb +42 -0
  183. data/lib/jets/command/help/call.md +48 -0
  184. data/lib/jets/{commands → command}/help/deploy.md +1 -1
  185. data/lib/jets/command/help/logs.md +21 -0
  186. data/lib/jets/{commands → command}/help/new.md +3 -4
  187. data/lib/jets/command/help/projects.md +6 -0
  188. data/lib/jets/command/help/releases.md +37 -0
  189. data/lib/jets/command/help/rollback.md +5 -0
  190. data/lib/jets/command/help/routes.md +15 -0
  191. data/lib/jets/command/help/stacks.md +6 -0
  192. data/lib/jets/command/help.rb +17 -0
  193. data/lib/jets/command/helpers/editor.rb +35 -0
  194. data/lib/jets/command.rb +133 -0
  195. data/lib/jets/commands/application/application_command.rb +40 -0
  196. data/lib/jets/commands/build/build_command.rb +33 -0
  197. data/lib/jets/commands/call/anonymous_guesser.rb +1 -1
  198. data/lib/jets/commands/call/autoload_guesser.rb +2 -2
  199. data/lib/jets/commands/call/base_guesser.rb +4 -4
  200. data/lib/jets/commands/call/call_command.rb +27 -0
  201. data/lib/jets/commands/call/caller.rb +184 -0
  202. data/lib/jets/commands/call/guesser.rb +1 -1
  203. data/lib/jets/commands/clean/base.rb +1 -1
  204. data/lib/jets/commands/clean/build.rb +1 -1
  205. data/lib/jets/commands/clean/clean_command.rb +15 -0
  206. data/lib/jets/commands/clean/log.rb +1 -1
  207. data/lib/jets/commands/configure/configure_command.rb +9 -0
  208. data/lib/jets/commands/console/console_command.rb +38 -0
  209. data/lib/jets/commands/credentials/USAGE +103 -0
  210. data/lib/jets/commands/credentials/credentials_command/diffing.rb +51 -0
  211. data/lib/jets/commands/credentials/credentials_command.rb +139 -0
  212. data/lib/jets/commands/db/system/change/change_command.rb +24 -0
  213. data/lib/jets/commands/dbconsole/dbconsole_command.rb +184 -0
  214. data/lib/jets/commands/degenerate/degenerate_command.rb +21 -0
  215. data/lib/jets/commands/delete/delete_command.rb +155 -0
  216. data/lib/jets/commands/{deploy.rb → deploy/deploy_command.rb} +28 -47
  217. data/lib/jets/commands/dev/dev_command.rb +19 -0
  218. data/lib/jets/commands/{dotenv.rb → dotenv/dotenv_command.rb} +2 -2
  219. data/lib/jets/commands/encrypted/USAGE +46 -0
  220. data/lib/jets/commands/encrypted/encrypted_command.rb +87 -0
  221. data/lib/jets/commands/gems/gems_command.rb +14 -0
  222. data/lib/jets/commands/generate/generate_command.rb +95 -0
  223. data/lib/jets/commands/help/USAGE +20 -0
  224. data/lib/jets/commands/help/help_command.rb +15 -0
  225. data/lib/jets/commands/initializers/initializers_command.rb +19 -0
  226. data/lib/jets/commands/logs/logs_command.rb +45 -0
  227. data/lib/jets/commands/new/new_command.rb +19 -0
  228. data/lib/jets/commands/notes/notes_command.rb +30 -0
  229. data/lib/jets/commands/plugin/plugin_command.rb +45 -0
  230. data/lib/jets/commands/projects/projects_command.rb +30 -0
  231. data/lib/jets/commands/rake/rake_command.rb +59 -0
  232. data/lib/jets/commands/releases/releases_command.rb +72 -0
  233. data/lib/jets/commands/rollback/rollback_command.rb +41 -0
  234. data/lib/jets/commands/routes/routes_command.rb +19 -0
  235. data/lib/jets/commands/runner/runner_command.rb +60 -0
  236. data/lib/jets/commands/server/server_command.rb +291 -0
  237. data/lib/jets/commands/stacks/stacks_command.rb +39 -0
  238. data/lib/jets/commands/status/status_command.rb +9 -0
  239. data/lib/jets/commands/{url.rb → url/url_command.rb} +37 -14
  240. data/lib/jets/commands/version/version_command.rb +11 -0
  241. data/lib/jets/commands.rb +17 -0
  242. data/lib/jets/configuration.rb +166 -0
  243. data/lib/jets/controller/base.rb +105 -183
  244. data/lib/jets/controller/compat/abstract_controller/base.rb +126 -0
  245. data/lib/jets/controller/compat/action_controller/metal.rb +99 -0
  246. data/lib/jets/controller/compat/caching.rb +13 -0
  247. data/lib/jets/controller/compat/future.rb +13 -0
  248. data/lib/jets/controller/compat/route_set.rb +47 -0
  249. data/lib/jets/controller/decorate/apigw_stage.rb +39 -0
  250. data/lib/jets/controller/{authorization.rb → decorate/authorization.rb} +1 -1
  251. data/lib/jets/controller/decorate/logging.rb +90 -0
  252. data/lib/jets/controller/decorate/redirecting.rb +16 -0
  253. data/lib/jets/controller/decorate/url_for.rb +10 -0
  254. data/lib/jets/controller/{rack/adapter.rb → handler/apigw.rb} +36 -37
  255. data/lib/jets/controller/handler.rb +41 -0
  256. data/lib/jets/controller/middleware/main.rb +16 -8
  257. data/lib/jets/controller/middleware/{local/api_gateway.rb → mimic/apigw.rb} +40 -15
  258. data/lib/jets/controller/middleware/mimic/lambda_context.rb +44 -0
  259. data/lib/jets/controller/middleware/{local.rb → mimic.rb} +36 -51
  260. data/lib/jets/controller/rack_adapter/action.rb +35 -0
  261. data/lib/jets/controller/{rack → rack_adapter}/env.rb +39 -24
  262. data/lib/jets/controller/request/compat/params.rb +144 -0
  263. data/lib/jets/controller/request/compat/request.rb +125 -0
  264. data/lib/jets/controller/request.rb +35 -18
  265. data/lib/jets/controller/response/compat/response.rb +67 -0
  266. data/lib/jets/controller/response.rb +91 -8
  267. data/lib/jets/core.rb +142 -51
  268. data/lib/jets/core_ext/kernel.rb +2 -2
  269. data/lib/jets/core_ext/symbol.rb +5 -0
  270. data/lib/jets/core_ext.rb +4 -0
  271. data/lib/jets/dev_caching.rb +44 -0
  272. data/lib/jets/dotenv/ssm.rb +5 -2
  273. data/lib/jets/dotenv.rb +2 -1
  274. data/lib/jets/engine/configuration.rb +96 -0
  275. data/lib/jets/engine/turbines.rb +23 -0
  276. data/lib/jets/engine.rb +380 -0
  277. data/lib/jets/exception_reporting.rb +43 -0
  278. data/lib/jets/generators/job/job_generator.rb +41 -0
  279. data/lib/jets/generators/job/templates/event_types/dynamodb.rb.tt +8 -0
  280. data/lib/jets/generators/job/templates/event_types/iot.rb.tt +8 -0
  281. data/lib/jets/generators/job/templates/event_types/kinesis.rb.tt +9 -0
  282. data/lib/jets/generators/job/templates/event_types/log.rb.tt +9 -0
  283. data/lib/jets/generators/job/templates/event_types/rule.rb.tt +23 -0
  284. data/lib/jets/generators/job/templates/event_types/s3.rb.tt +11 -0
  285. data/lib/jets/{generator/templates/active_job/job/templates/job.rb.tt → generators/job/templates/event_types/scheduled.rb.tt} +3 -3
  286. data/lib/jets/generators/job/templates/event_types/sns.rb.tt +9 -0
  287. data/lib/jets/generators/job/templates/event_types/sqs.rb.tt +9 -0
  288. data/lib/jets/generators/overrides/app/USAGE +38 -0
  289. data/lib/jets/generators/overrides/app/app_generator.rb +148 -0
  290. data/lib/jets/generators/overrides/app/helpers.rb +139 -0
  291. data/lib/jets/generators/overrides/app/templates/.env +10 -0
  292. data/lib/jets/{commands/templates/skeleton/.gitignore → generators/overrides/app/templates/.gitignore.tt} +2 -1
  293. data/lib/jets/generators/overrides/app/templates/Gemfile.tt +25 -0
  294. data/lib/jets/generators/overrides/app/templates/Rakefile +2 -0
  295. data/lib/jets/generators/overrides/app/templates/app/assets/config/manifest.js +3 -0
  296. data/lib/jets/generators/overrides/app/templates/app/assets/stylesheets/application.css +15 -0
  297. data/lib/jets/generators/overrides/app/templates/app/javascript/application.js +5 -0
  298. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/app/models/application_record.rb +1 -1
  299. data/lib/jets/generators/overrides/app/templates/app/views/layouts/application.html.erb.tt +30 -0
  300. data/lib/jets/generators/overrides/app/templates/bin/jets +3 -0
  301. data/lib/jets/generators/overrides/app/templates/config/application.rb.tt +15 -0
  302. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/config/database.yml.tt +1 -1
  303. data/lib/jets/generators/overrides/app/templates/config/environments/development.rb.tt +29 -0
  304. data/lib/jets/generators/overrides/app/templates/config/environments/production.rb.tt +19 -0
  305. data/lib/jets/generators/overrides/app/templates/config/environments/test.rb.tt +23 -0
  306. data/lib/jets/generators/overrides/app/templates/config/initializers/content_security_policy.rb +31 -0
  307. data/lib/jets/generators/overrides/app/templates/config/initializers/filter_parameter_logging.rb +8 -0
  308. data/lib/jets/generators/overrides/app/templates/config/initializers/permissions_policy.rb +11 -0
  309. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/config/routes.rb +5 -1
  310. data/lib/jets/generators/overrides/app/templates/db/.gitkeep +0 -0
  311. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/public/404.html +6 -6
  312. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/public/422.html +6 -6
  313. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/public/500.html +6 -6
  314. data/lib/jets/generators/overrides/templates/erb/scaffold/index.html.erb +22 -0
  315. data/lib/jets/generators/overrides/templates/erb/scaffold/partial.html.erb +8 -0
  316. data/lib/jets/{generator/templates/rails/scaffold_controller/api_controller.rb → generators/overrides/templates/rails/scaffold_controller/api_controller.rb.tt} +5 -9
  317. data/lib/jets/generators/overrides/templates/rails/scaffold_controller/controller.rb.tt +67 -0
  318. data/lib/jets/generators.rb +112 -0
  319. data/lib/jets/info.rb +116 -0
  320. data/lib/jets/initializable.rb +95 -0
  321. data/lib/jets/job/base.rb +3 -2
  322. data/lib/jets/job/dsl/dynamodb_event.rb +19 -9
  323. data/lib/jets/job/dsl/event_source_mapping.rb +1 -1
  324. data/lib/jets/job/dsl/iot_event.rb +6 -6
  325. data/lib/jets/job/dsl/kinesis_event.rb +5 -5
  326. data/lib/jets/job/dsl/log_event.rb +2 -2
  327. data/lib/jets/job/dsl/rule_event.rb +7 -4
  328. data/lib/jets/job/dsl/s3_event.rb +1 -1
  329. data/lib/jets/job/dsl/sns_event.rb +6 -6
  330. data/lib/jets/job/dsl/sqs_event.rb +11 -11
  331. data/lib/jets/klass.rb +5 -6
  332. data/lib/jets/lambda/definition.rb +118 -0
  333. data/lib/jets/lambda/dsl/warnings.rb +57 -0
  334. data/lib/jets/lambda/dsl.rb +64 -53
  335. data/lib/jets/lambda/function.rb +3 -3
  336. data/lib/jets/lambda/function_constructor.rb +6 -6
  337. data/lib/jets/lambda/functions.rb +36 -1
  338. data/lib/jets/mega/request/source.rb +1 -2
  339. data/lib/jets/mega/request.rb +4 -4
  340. data/lib/jets/names.rb +31 -15
  341. data/lib/jets/overrides/dummy/rails.rb +11 -0
  342. data/lib/jets/overrides/lambda/marshaller.rb +10 -0
  343. data/lib/jets/overrides/puma.rb +10 -0
  344. data/lib/jets/paths.rb +243 -0
  345. data/lib/jets/{poly_fun → poly}/base_executor.rb +13 -13
  346. data/lib/jets/{poly_fun → poly}/lambda_executor.rb +2 -2
  347. data/lib/jets/{poly_fun → poly}/node_error.rb +1 -1
  348. data/lib/jets/{poly_fun → poly}/node_executor.rb +4 -4
  349. data/lib/jets/{poly_fun → poly}/python_error.rb +1 -1
  350. data/lib/jets/{poly_fun → poly}/python_executor.rb +2 -2
  351. data/lib/jets/{poly_fun.rb → poly.rb} +12 -12
  352. data/lib/jets/preheat.rb +12 -25
  353. data/lib/jets/processors/deducer.rb +2 -2
  354. data/lib/jets/processors/main_processor.rb +6 -13
  355. data/lib/jets/rack/logger.rb +77 -0
  356. data/lib/jets/router/compat/route_set.rb +177 -0
  357. data/lib/jets/router/dsl/mount.rb +40 -6
  358. data/lib/jets/router/dsl.rb +125 -105
  359. data/lib/jets/router/engine_mount.rb +36 -0
  360. data/lib/jets/router/help.rb +130 -0
  361. data/lib/jets/router/helpers/named_routes/add_full_url.rb +13 -0
  362. data/lib/jets/router/helpers/named_routes/generated.rb +197 -0
  363. data/lib/jets/router/helpers/named_routes/proxy.rb +66 -0
  364. data/lib/jets/router/matcher.rb +140 -17
  365. data/lib/jets/router/resources/options.rb +6 -4
  366. data/lib/jets/router/route/after_initialize.rb +64 -0
  367. data/lib/jets/router/route/as.rb +93 -0
  368. data/lib/jets/router/route/authorizer.rb +1 -0
  369. data/lib/jets/router/route/compat.rb +45 -0
  370. data/lib/jets/router/route/info.rb +74 -0
  371. data/lib/jets/router/route/node.rb +137 -0
  372. data/lib/jets/router/route/path.rb +93 -0
  373. data/lib/jets/router/route.rb +109 -106
  374. data/lib/jets/router/route_set.rb +214 -0
  375. data/lib/jets/router/scope.rb +204 -69
  376. data/lib/jets/router/state.rb +36 -16
  377. data/lib/jets/router/util.rb +1 -31
  378. data/lib/jets/router.rb +64 -162
  379. data/lib/jets/ruby_version_check.rb +15 -0
  380. data/lib/jets/rule/base.rb +1 -0
  381. data/lib/jets/rule/dsl.rb +7 -7
  382. data/lib/jets/secrets.rb +110 -0
  383. data/lib/jets/spec_helpers/controllers/request.rb +22 -16
  384. data/lib/jets/spec_helpers/controllers.rb +32 -24
  385. data/lib/jets/spec_helpers.rb +0 -6
  386. data/lib/jets/stack/builder.rb +3 -2
  387. data/lib/jets/stack/definition.rb +1 -4
  388. data/lib/jets/stack/function.rb +2 -2
  389. data/lib/jets/stack/main/dsl/cloudwatch.rb +4 -4
  390. data/lib/jets/stack/main/dsl/kinesis.rb +2 -2
  391. data/lib/jets/stack/main/dsl/lambda.rb +26 -20
  392. data/lib/jets/stack/main/dsl/sqs.rb +2 -2
  393. data/lib/jets/stack/output/lookup.rb +1 -1
  394. data/lib/jets/stack/output.rb +2 -2
  395. data/lib/jets/stack/parameter.rb +2 -2
  396. data/lib/jets/stack/resource.rb +3 -3
  397. data/lib/jets/stack/s3_event.rb +51 -37
  398. data/lib/jets/stack.rb +1 -1
  399. data/lib/jets/tasks/engine.rake +85 -0
  400. data/lib/jets/tasks/framework.rake +66 -0
  401. data/lib/jets/tasks/log.rake +41 -0
  402. data/lib/jets/tasks/middleware.rake +9 -0
  403. data/lib/jets/tasks/misc.rake +81 -0
  404. data/lib/jets/tasks/statistics.rake +37 -0
  405. data/lib/jets/tasks/tmp.rake +51 -0
  406. data/lib/jets/tasks/yarn.rake +29 -0
  407. data/lib/jets/tasks/zeitwerk.rake +61 -0
  408. data/lib/jets/tasks.rb +18 -0
  409. data/lib/jets/turbine/configurable.rb +36 -0
  410. data/lib/jets/turbine/configuration.rb +101 -0
  411. data/lib/jets/turbine.rb +164 -20
  412. data/lib/jets/util/camelize.rb +24 -0
  413. data/lib/jets/version.rb +1 -1
  414. data/lib/jets.rb +7 -15
  415. metadata +427 -336
  416. data/bin/release +0 -9
  417. data/lib/jets/application/defaults.rb +0 -230
  418. data/lib/jets/builders/reconfigure_rails/config/initializers/jets.rb +0 -16
  419. data/lib/jets/builders/reconfigure_rails.rb +0 -114
  420. data/lib/jets/cfn/builders/api_resources_builder.rb +0 -44
  421. data/lib/jets/cfn/builders/base_child_builder.rb +0 -88
  422. data/lib/jets/cfn/builders/controller_builder.rb +0 -50
  423. data/lib/jets/cfn/builders/function_builder.rb +0 -14
  424. data/lib/jets/cfn/builders/job_builder.rb +0 -14
  425. data/lib/jets/cfn/builders/page_builder.rb +0 -80
  426. data/lib/jets/cfn/built_template.rb +0 -15
  427. data/lib/jets/cfn/template_source.rb +0 -61
  428. data/lib/jets/commands/base.rb +0 -145
  429. data/lib/jets/commands/call.rb +0 -184
  430. data/lib/jets/commands/clean.rb +0 -19
  431. data/lib/jets/commands/configure.rb +0 -51
  432. data/lib/jets/commands/console.rb +0 -18
  433. data/lib/jets/commands/db/environment-task.rake +0 -3
  434. data/lib/jets/commands/db/tasks/dummy/app.rb +0 -25
  435. data/lib/jets/commands/db/tasks/dummy/config.rb +0 -14
  436. data/lib/jets/commands/db/tasks.rb +0 -34
  437. data/lib/jets/commands/db.rb +0 -13
  438. data/lib/jets/commands/dbconsole.rb +0 -134
  439. data/lib/jets/commands/delete.rb +0 -136
  440. data/lib/jets/commands/dynamodb/migrate.rb +0 -9
  441. data/lib/jets/commands/dynamodb/migrator.rb +0 -36
  442. data/lib/jets/commands/dynamodb.rb +0 -19
  443. data/lib/jets/commands/gems.rb +0 -13
  444. data/lib/jets/commands/help/call.md +0 -69
  445. data/lib/jets/commands/help/dynamodb/generate.md +0 -52
  446. data/lib/jets/commands/help/dynamodb/migrate.md +0 -4
  447. data/lib/jets/commands/help/routes.md +0 -16
  448. data/lib/jets/commands/help.rb +0 -9
  449. data/lib/jets/commands/import/base.rb +0 -49
  450. data/lib/jets/commands/import/cheatsheet.rb +0 -35
  451. data/lib/jets/commands/import/rack.rb +0 -16
  452. data/lib/jets/commands/import/rails.rb +0 -74
  453. data/lib/jets/commands/import/sequence.rb +0 -90
  454. data/lib/jets/commands/import/templates/config/database.yml +0 -30
  455. data/lib/jets/commands/import/templates/submodules-cheatsheet.md +0 -89
  456. data/lib/jets/commands/import.rb +0 -12
  457. data/lib/jets/commands/main.rb +0 -169
  458. data/lib/jets/commands/markdown/creator.rb +0 -58
  459. data/lib/jets/commands/markdown/index.rb +0 -27
  460. data/lib/jets/commands/markdown/page.rb +0 -125
  461. data/lib/jets/commands/markdown/shell.rb +0 -11
  462. data/lib/jets/commands/new.rb +0 -173
  463. data/lib/jets/commands/rake_command.rb +0 -61
  464. data/lib/jets/commands/rake_tasks.rb +0 -50
  465. data/lib/jets/commands/runner.rb +0 -16
  466. data/lib/jets/commands/sequence.rb +0 -104
  467. data/lib/jets/commands/stack_info.rb +0 -30
  468. data/lib/jets/commands/templates/skeleton/.env.development.tt +0 -3
  469. data/lib/jets/commands/templates/skeleton/.env.test +0 -3
  470. data/lib/jets/commands/templates/skeleton/.env.tt +0 -3
  471. data/lib/jets/commands/templates/skeleton/.jetskeep +0 -1
  472. data/lib/jets/commands/templates/skeleton/Gemfile.tt +0 -40
  473. data/lib/jets/commands/templates/skeleton/Procfile +0 -7
  474. data/lib/jets/commands/templates/skeleton/Rakefile +0 -2
  475. data/lib/jets/commands/templates/skeleton/app/models/application_item.rb +0 -2
  476. data/lib/jets/commands/templates/skeleton/app/views/layouts/application.html.erb.tt +0 -26
  477. data/lib/jets/commands/templates/skeleton/config/application.rb.tt +0 -72
  478. data/lib/jets/commands/templates/skeleton/config/dynamodb.yml +0 -22
  479. data/lib/jets/commands/templates/skeleton/config/environments/development.rb +0 -7
  480. data/lib/jets/commands/templates/skeleton/config/environments/production.rb +0 -9
  481. data/lib/jets/commands/templates/skeleton/config/environments/test.rb +0 -7
  482. data/lib/jets/commands/templates/webpacker/app/javascript/packs/application.js.tt +0 -23
  483. data/lib/jets/commands/templates/webpacker/app/javascript/packs/theme.scss.tt +0 -24
  484. data/lib/jets/commands/upgrade/templates/bin/webpack +0 -19
  485. data/lib/jets/commands/upgrade/templates/bin/webpack-dev-server +0 -19
  486. data/lib/jets/commands/upgrade/version1.rb +0 -136
  487. data/lib/jets/commands/upgrade.rb +0 -105
  488. data/lib/jets/commands/webpacker_template.rb +0 -18
  489. data/lib/jets/controller/callbacks.rb +0 -73
  490. data/lib/jets/controller/cookies/jar.rb +0 -269
  491. data/lib/jets/controller/cookies.rb +0 -38
  492. data/lib/jets/controller/error/invalid_authenticity_token.rb +0 -6
  493. data/lib/jets/controller/error.rb +0 -4
  494. data/lib/jets/controller/forgery_protection.rb +0 -43
  495. data/lib/jets/controller/layout.rb +0 -17
  496. data/lib/jets/controller/middleware/cors.rb +0 -60
  497. data/lib/jets/controller/middleware/local/mimic_aws_call.rb +0 -38
  498. data/lib/jets/controller/middleware/local/route_matcher.rb +0 -22
  499. data/lib/jets/controller/middleware/reloader.rb +0 -15
  500. data/lib/jets/controller/parameters_filter.rb +0 -29
  501. data/lib/jets/controller/params.rb +0 -117
  502. data/lib/jets/controller/redirection.rb +0 -61
  503. data/lib/jets/controller/rendering/rack_renderer.rb +0 -267
  504. data/lib/jets/controller/rendering.rb +0 -96
  505. data/lib/jets/controller/stage.rb +0 -34
  506. data/lib/jets/controller.rb +0 -3
  507. data/lib/jets/db.rb +0 -15
  508. data/lib/jets/generator/templates/erb/controller/view.html.erb +0 -2
  509. data/lib/jets/generator/templates/erb/scaffold/index.html.erb +0 -29
  510. data/lib/jets/generator/templates/rails/controller/controller.rb +0 -13
  511. data/lib/jets/generator/templates/rails/helper/helper.rb +0 -4
  512. data/lib/jets/generator/templates/rails/scaffold_controller/controller.rb +0 -67
  513. data/lib/jets/generator.rb +0 -112
  514. data/lib/jets/internal/app/controllers/jets/bare_controller.rb +0 -16
  515. data/lib/jets/internal/app/controllers/jets/rack_controller.rb +0 -12
  516. data/lib/jets/internal/app/helpers/jets/mailers_helper.rb +0 -9
  517. data/lib/jets/internal/app/jobs/jets/preheat_job.rb +0 -57
  518. data/lib/jets/internal/app/views/jets/mailers/index.html.erb +0 -8
  519. data/lib/jets/internal/app/views/jets/mailers/mailer.html.erb +0 -6
  520. data/lib/jets/internal/turbines/jets/mailer.rb +0 -52
  521. data/lib/jets/lambda/task.rb +0 -111
  522. data/lib/jets/logger.rb +0 -21
  523. data/lib/jets/middleware/configurator.rb +0 -84
  524. data/lib/jets/middleware/default_stack.rb +0 -53
  525. data/lib/jets/middleware/layer.rb +0 -34
  526. data/lib/jets/middleware/stack.rb +0 -77
  527. data/lib/jets/middleware.rb +0 -33
  528. data/lib/jets/overrides/rails/action_controller.rb +0 -13
  529. data/lib/jets/overrides/rails/asset_tag_helper.rb +0 -114
  530. data/lib/jets/overrides/rails/common_methods.rb +0 -13
  531. data/lib/jets/overrides/rails/migration_checker.rb +0 -34
  532. data/lib/jets/overrides/rails/rendering_helper.rb +0 -27
  533. data/lib/jets/overrides/rails/url_helper.rb +0 -88
  534. data/lib/jets/overrides/rails.rb +0 -6
  535. data/lib/jets/rack_server.rb +0 -86
  536. data/lib/jets/resource/api_gateway/base_path/function.rb +0 -49
  537. data/lib/jets/resource/api_gateway/base_path/role.rb +0 -76
  538. data/lib/jets/resource/api_gateway/cors.rb +0 -61
  539. data/lib/jets/resource/api_gateway/method.rb +0 -102
  540. data/lib/jets/resource/api_gateway/rest_api/routes/change.rb +0 -16
  541. data/lib/jets/resource/base.rb +0 -28
  542. data/lib/jets/resource/child_stack/api_deployment.rb +0 -58
  543. data/lib/jets/resource/child_stack/api_gateway.rb +0 -23
  544. data/lib/jets/resource/child_stack/api_resource/page.rb +0 -20
  545. data/lib/jets/resource/child_stack/api_resource.rb +0 -54
  546. data/lib/jets/resource/child_stack/base.rb +0 -24
  547. data/lib/jets/resource/lambda/function.rb +0 -221
  548. data/lib/jets/resource/logs/subscription_filter.rb +0 -31
  549. data/lib/jets/resource/permission.rb +0 -45
  550. data/lib/jets/resource.rb +0 -71
  551. data/lib/jets/router/error.rb +0 -4
  552. data/lib/jets/router/finder.rb +0 -47
  553. data/lib/jets/router/helpers/core_helper.rb +0 -27
  554. data/lib/jets/router/helpers/named_routes_helper.rb +0 -8
  555. data/lib/jets/router/helpers.rb +0 -4
  556. data/lib/jets/router/method_creator/code.rb +0 -99
  557. data/lib/jets/router/method_creator/edit.rb +0 -12
  558. data/lib/jets/router/method_creator/generic.rb +0 -11
  559. data/lib/jets/router/method_creator/index.rb +0 -48
  560. data/lib/jets/router/method_creator/new.rb +0 -12
  561. data/lib/jets/router/method_creator/root.rb +0 -15
  562. data/lib/jets/router/method_creator/show.rb +0 -12
  563. data/lib/jets/router/method_creator.rb +0 -50
  564. data/lib/jets/turbo/database_yaml.rb +0 -41
  565. data/lib/jets/turbo/project/.gitignore +0 -12
  566. data/lib/jets/turbo/project/.jetskeep +0 -1
  567. data/lib/jets/turbo/project/Gemfile +0 -16
  568. data/lib/jets/turbo/project/Rakefile +0 -2
  569. data/lib/jets/turbo/project/app/controllers/application_controller.rb +0 -2
  570. data/lib/jets/turbo/project/app/helpers/application_helper.rb +0 -2
  571. data/lib/jets/turbo/project/app/jobs/application_job.rb +0 -4
  572. data/lib/jets/turbo/project/config/application.rb +0 -5
  573. data/lib/jets/turbo/project/config/routes.rb +0 -4
  574. data/lib/jets/turbo/project/config.ru +0 -5
  575. data/lib/jets/turbo/rails.rb +0 -127
  576. data/lib/jets/turbo/templates/config/database.yml +0 -30
  577. data/lib/jets/turbo.rb +0 -56
  578. data/readme/prerelease.md +0 -6
  579. data/readme/testing.md +0 -60
  580. /data/{lib/jets → engines}/internal/app/shared/functions/jets/s3_bucket_config.rb +0 -0
  581. /data/lib/jets/{commands → command}/help/build.md +0 -0
  582. /data/lib/jets/{commands → command}/help/clean/build.md +0 -0
  583. /data/lib/jets/{commands → command}/help/clean/log.md +0 -0
  584. /data/lib/jets/{commands → command}/help/console.md +0 -0
  585. /data/lib/jets/{commands → command}/help/db/generate.md +0 -0
  586. /data/lib/jets/{commands → command}/help/dbconsole.md +0 -0
  587. /data/lib/jets/{commands → command}/help/degenerate.md +0 -0
  588. /data/lib/jets/{commands → command}/help/delete.md +0 -0
  589. /data/lib/jets/{commands → command}/help/gems/check.md +0 -0
  590. /data/lib/jets/{commands → command}/help/generate.md +0 -0
  591. /data/lib/jets/{commands → command}/help/import/rack.md +0 -0
  592. /data/lib/jets/{commands → command}/help/import/rails.md +0 -0
  593. /data/lib/jets/{commands → command}/help/runner.md +0 -0
  594. /data/lib/jets/{commands → command}/help/server.md +0 -0
  595. /data/lib/jets/{commands → command}/help/status.md +0 -0
  596. /data/lib/jets/{commands → command}/help/upgrade.md +0 -0
  597. /data/lib/jets/{commands → command}/help/url.md +0 -0
  598. /data/lib/jets/{generator/templates/active_job → generators}/job/templates/application_job.rb.tt +0 -0
  599. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/.rspec +0 -0
  600. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/README.md +0 -0
  601. /data/{.gitmodules → lib/jets/generators/overrides/app/templates/app/assets/images/.keep} +0 -0
  602. /data/lib/jets/{commands/templates/skeleton/db/.gitkeep → generators/overrides/app/templates/app/assets/javascripts/.keep} +0 -0
  603. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/app/controllers/application_controller.rb +0 -0
  604. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/app/helpers/application_helper.rb +0 -0
  605. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/app/jobs/application_job.rb +0 -0
  606. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/config.ru +0 -0
  607. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/public/favicon.ico +0 -0
  608. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/spec/controllers/posts_controller_spec.rb +0 -0
  609. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/spec/fixtures/payloads/posts-index.json +0 -0
  610. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/spec/fixtures/payloads/posts-show.json +0 -0
  611. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/spec/spec_helper.rb.tt +0 -0
  612. /data/lib/jets/{generator → generators/overrides}/templates/erb/scaffold/_form.html.erb +0 -0
  613. /data/lib/jets/{generator → generators/overrides}/templates/erb/scaffold/edit.html.erb +0 -0
  614. /data/lib/jets/{generator → generators/overrides}/templates/erb/scaffold/new.html.erb +0 -0
  615. /data/lib/jets/{generator → generators/overrides}/templates/erb/scaffold/show.html.erb +0 -0
  616. /data/lib/jets/{generator → generators/overrides}/templates/rails/assets/javascript.js +0 -0
  617. /data/lib/jets/{generator → generators/overrides}/templates/rails/assets/stylesheet.css +0 -0
  618. /data/lib/jets/{generator → generators/overrides}/templates/rails/scaffold/scaffold.css +0 -0
@@ -2,6 +2,8 @@
2
2
  #
3
3
  # default_associated_resource_definition
4
4
  #
5
+ require "dsl_evaluator" # for DslEvaluator.print_code only
6
+
5
7
  module Jets::Lambda::Dsl
6
8
  extend ActiveSupport::Concern
7
9
 
@@ -12,6 +14,7 @@ module Jets::Lambda::Dsl
12
14
  included do
13
15
  class << self
14
16
  extend Memoist
17
+ include Warnings
15
18
 
16
19
  def class_properties(options=nil)
17
20
  if options
@@ -31,23 +34,23 @@ module Jets::Lambda::Dsl
31
34
 
32
35
  def class_environment(hash)
33
36
  environment = standardize_env(hash)
34
- class_properties(environment: environment)
37
+ class_properties(Environment: environment)
35
38
  end
36
39
  alias_method :class_env, :class_environment
37
40
 
38
41
  def environment(hash)
39
42
  environment = standardize_env(hash)
40
- properties(environment: environment)
43
+ properties(Environment: environment)
41
44
  end
42
45
  alias_method :env, :environment
43
46
 
44
47
  # Allows user to pass in hash with or without the :variables key.
45
48
  def standardize_env(hash)
46
- return hash if hash.key?(:variables)
49
+ return hash if hash.key?(:Variables)
47
50
 
48
51
  environment = {}
49
- environment[:variables] ||= {}
50
- environment[:variables].merge!(hash)
52
+ environment[:Variables] ||= {}
53
+ environment[:Variables].merge!(hash)
51
54
  environment
52
55
  end
53
56
 
@@ -99,7 +102,9 @@ module Jets::Lambda::Dsl
99
102
  if definitions.empty?
100
103
  @iam_policy
101
104
  else
102
- @iam_policy = definitions.flatten
105
+ iam_policy_unused_warning(managed=false)
106
+ @iam_policy ||= []
107
+ @iam_policy += definitions.flatten
103
108
  end
104
109
  end
105
110
 
@@ -108,7 +113,9 @@ module Jets::Lambda::Dsl
108
113
  if definitions.empty?
109
114
  @class_iam_policy
110
115
  else
111
- @class_iam_policy = definitions.flatten
116
+ class_iam_policy_unused_warning(managed=false)
117
+ @class_iam_policy ||= []
118
+ @class_iam_policy += definitions.flatten
112
119
  end
113
120
  end
114
121
 
@@ -117,7 +124,9 @@ module Jets::Lambda::Dsl
117
124
  if definitions.empty?
118
125
  @managed_iam_policy
119
126
  else
120
- @managed_iam_policy = definitions.flatten
127
+ iam_policy_unused_warning(managed=true)
128
+ @managed_iam_policy ||= []
129
+ @managed_iam_policy += definitions.flatten
121
130
  end
122
131
  end
123
132
 
@@ -126,7 +135,9 @@ module Jets::Lambda::Dsl
126
135
  if definitions.empty?
127
136
  @class_managed_iam_policy
128
137
  else
129
- @class_managed_iam_policy = definitions.flatten
138
+ class_iam_policy_unused_warning(managed=true)
139
+ @class_managed_iam_policy ||= []
140
+ @class_managed_iam_policy += definitions.flatten
130
141
  end
131
142
  end
132
143
 
@@ -142,7 +153,7 @@ module Jets::Lambda::Dsl
142
153
  @associated_resources || []
143
154
  else
144
155
  @associated_resources ||= []
145
- associated_resource = Jets::Resource::Associated.new(definitions)
156
+ associated_resource = Jets::Cfn::Resource::Associated.new(definitions)
146
157
  associated_resource.multiple_resources = @multiple_resources
147
158
  @associated_resources << associated_resource
148
159
  @associated_resources.flatten!
@@ -208,7 +219,7 @@ module Jets::Lambda::Dsl
208
219
 
209
220
  logical_id = logical_id.to_s.sub(/\d+$/,'')
210
221
  new_definition = { "#{logical_id}#{n}" => attributes }
211
- numbered_resources << Jets::Resource::Associated.new(new_definition)
222
+ numbered_resources << Jets::Cfn::Resource::Associated.new(new_definition)
212
223
  n += 1
213
224
  end
214
225
  @associated_resources = numbered_resources
@@ -248,13 +259,13 @@ module Jets::Lambda::Dsl
248
259
  return if %w[initialize method_missing].include?(meth.to_s)
249
260
  return unless public_method_defined?(meth)
250
261
 
251
- register_task(meth)
262
+ register_definition(meth)
252
263
  end
253
264
 
254
- def register_task(meth, lang=:ruby)
265
+ def register_definition(meth, lang=:ruby)
255
266
  # Note: for anonymous classes like for app/functions self.name is ""
256
267
  # We adjust the class name when we build the functions later in
257
- # FunctionContstructor#adjust_tasks.
268
+ # FunctionContstructor#adjust_definitions.
258
269
 
259
270
  # At this point we can use the current associated_properties and defined the
260
271
  # associated resource with the Lambda function.
@@ -268,7 +279,7 @@ module Jets::Lambda::Dsl
268
279
  add_logical_id_counter
269
280
  end
270
281
 
271
- all_tasks[meth] = Jets::Lambda::Task.new(self.name, meth,
282
+ all_definitions[meth] = Jets::Lambda::Definition.new(self.name, meth,
272
283
  properties: @properties, # lambda function properties
273
284
  iam_policy: @iam_policy,
274
285
  managed_iam_policy: @managed_iam_policy,
@@ -279,7 +290,7 @@ module Jets::Lambda::Dsl
279
290
  # Done storing options, clear out for the next added method.
280
291
  clear_properties
281
292
  # Important to clear @properties at the end of registering outside of
282
- # register_task because register_task is overridden in Jets::Job::Dsl
293
+ # register_definition because register_definition is overridden in Jets::Job::Dsl
283
294
  #
284
295
  # Jets::Job::Base < Jets::Lambda::Functions
285
296
  #
@@ -302,28 +313,28 @@ module Jets::Lambda::Dsl
302
313
  @associated_properties = nil
303
314
  end
304
315
 
305
- # Returns the all tasks for this class with their method names as keys.
316
+ # Returns the all definitions for this class with their method names as keys.
306
317
  #
307
318
  # ==== Returns
308
- # OrderedHash:: An ordered hash with tasks names as keys and Task
319
+ # OrderedHash:: An ordered hash with definitions names as keys and definition
309
320
  # objects as values.
310
321
  #
311
- def all_tasks
312
- @all_tasks ||= ActiveSupport::OrderedHash.new
322
+ def all_definitions
323
+ @all_definitions ||= ActiveSupport::OrderedHash.new
313
324
  end
314
- # Do not call all tasks outside this class, instead use: tasks or lambda functions
315
- private :all_tasks
325
+ # Do not call all definitions outside this class, instead use: definitions or lambda functions
326
+ private :all_definitions
316
327
 
317
- # Goes up the class inheritance chain to build the tasks.
328
+ # Goes up the class inheritance chain to build the definitions.
318
329
  #
319
330
  # Example heirarchy:
320
331
  #
321
332
  # Jets::Lambda::Functions > Jets::Controller::Base > ApplicationController ...
322
333
  # > PostsController > ChildPostsController
323
334
  #
324
- # Do not include tasks from the direct subclasses of Jets::Lambda::Functions
335
+ # Do not include definitions from the direct subclasses of Jets::Lambda::Functions
325
336
  # because those classes are abstract. Dont want those methods to be included.
326
- def find_all_tasks(options={})
337
+ def find_all_definitions(options={})
327
338
  public = options[:public].nil? ? true : options[:public]
328
339
  klass = self
329
340
  direct_subclasses = Jets::Lambda::Functions.subclasses
@@ -331,53 +342,53 @@ module Jets::Lambda::Dsl
331
342
 
332
343
  # Go up class inheritance and builds lookup structure in memory
333
344
  until direct_subclasses.include?(klass)
334
- lookup << klass.send(:all_tasks) # one place we want to call private all_tasks method
345
+ lookup << klass.send(:all_definitions) # one place we want to call private all_definitions method
335
346
  klass = klass.superclass
336
347
  end
337
- merged_tasks = ActiveSupport::OrderedHash.new
338
- # Go back down the class inheritance chain in reverse order and merge the tasks
339
- lookup.reverse.each do |tasks_hash|
340
- # tasks_hash is a result of all_tasks. Example: PostsController.all_tasks
341
- merged_tasks.merge!(tasks_hash)
348
+ merged_definitions = ActiveSupport::OrderedHash.new
349
+ # Go back down the class inheritance chain in reverse order and merge the definitions
350
+ lookup.reverse.each do |definitions_hash|
351
+ # definitions_hash is a result of all_definitions. Example: PostsController.all_definitions
352
+ merged_definitions.merge!(definitions_hash)
342
353
  end
343
354
 
344
355
  # The cfn builders required the right final child class to build the lambda functions correctly.
345
- merged_tasks.each do |meth, task|
356
+ merged_definitions.each do |meth, definition|
346
357
  # Override the class name for the cfn builders
347
- task = task.clone # do not stomp over current tasks since things are usually looked by reference
348
- task.instance_variable_set(:@class_name, self.name)
349
- merged_tasks[meth] = task
358
+ definition = definition.clone # do not stomp over current definitions since things are usually looked by reference
359
+ definition.instance_variable_set(:@class_name, self.name)
360
+ merged_definitions[meth] = definition
350
361
  end
351
362
 
352
363
  # Methods can be made private with the :private keyword after the method has been defined.
353
364
  # To account for this, loop back thorugh all the methods and check if the method is indeed public.
354
- tasks = ActiveSupport::OrderedHash.new
355
- merged_tasks.each do |meth, task|
365
+ definitions = ActiveSupport::OrderedHash.new
366
+ merged_definitions.each do |meth, definition|
356
367
  if public
357
- tasks[meth] = task if task.public_meth?
368
+ definitions[meth] = definition if definition.public_meth?
358
369
  else
359
- tasks[meth] = task unless task.public_meth?
370
+ definitions[meth] = definition unless definition.public_meth?
360
371
  end
361
372
  end
362
- tasks
373
+ definitions
363
374
  end
364
- memoize :find_all_tasks
375
+ memoize :find_all_definitions
365
376
 
366
- def all_public_tasks
367
- find_all_tasks(public: true)
377
+ def all_public_definitions
378
+ find_all_definitions(public: true)
368
379
  end
369
380
 
370
- def all_private_tasks
371
- find_all_tasks(public: false)
381
+ def all_private_definitions
382
+ find_all_definitions(public: false)
372
383
  end
373
384
 
374
- # Returns the tasks for this class in Array form.
385
+ # Returns the definitions for this class in Array form.
375
386
  #
376
387
  # ==== Returns
377
- # Array of task objects
388
+ # Array of definition objects
378
389
  #
379
- def tasks
380
- all_public_tasks.values
390
+ def definitions
391
+ all_public_definitions.values
381
392
  end
382
393
 
383
394
  # The public methods defined in the project app class ulimately become
@@ -386,18 +397,18 @@ module Jets::Lambda::Dsl
386
397
  # Example return value:
387
398
  # [:index, :new, :create, :show]
388
399
  def lambda_functions
389
- all_public_tasks.keys
400
+ all_public_definitions.keys
390
401
  end
391
402
 
392
- # Used in Jets::Cfn::Builders::Interface#build
403
+ # Used in Jets::Cfn::Builder::Interface#build
393
404
  # Overridden in rule/dsl.rb
394
405
  def build?
395
- !tasks.empty?
406
+ !definitions.empty?
396
407
  end
397
408
 
398
409
  # Polymorphic support
399
410
  def defpoly(lang, meth)
400
- register_task(meth, lang)
411
+ register_definition(meth, lang)
401
412
  end
402
413
 
403
414
  def python(meth)
@@ -13,11 +13,11 @@ module Jets::Lambda
13
13
  end
14
14
 
15
15
  def self.handler
16
- handler_task.meth
16
+ handler_definition.meth
17
17
  end
18
18
 
19
- def self.handler_task
20
- tasks.first
19
+ def self.handler_definition
20
+ definitions.first
21
21
  end
22
22
 
23
23
  # Used by main_processor.rb. Same interface as controllers and jobs.
@@ -36,18 +36,18 @@ module Jets::Lambda
36
36
  code = IO.read(@code_path)
37
37
  function_klass = Class.new(Jets::Lambda::Function)
38
38
  function_klass.module_eval(code, @code_path)
39
- adjust_tasks(function_klass)
39
+ adjust_definitions(function_klass)
40
40
  function_klass # assign this to a Constant for a pretty class name
41
41
  end
42
42
 
43
- # For anonymous classes method_added during task registration contains ""
43
+ # For anonymous classes method_added during definition registration contains ""
44
44
  # for the class name. We adjust it here.
45
- def adjust_tasks(klass)
45
+ def adjust_definitions(klass)
46
46
  class_name = @code_path.to_s.sub(/.*\/functions\//,'').sub(/\.rb$/, '')
47
47
  class_name = class_name.camelize
48
- klass.tasks.each do |task|
49
- task.class_name = class_name
50
- task.type = "function"
48
+ klass.definitions.each do |definition|
49
+ definition.class_name = class_name
50
+ definition.type = "function"
51
51
  end
52
52
  end
53
53
  end
@@ -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