jets 3.1.0 → 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 (641) hide show
  1. checksums.yaml +4 -4
  2. data/.github/FUNDING.yml +1 -0
  3. data/.gitignore +5 -1
  4. data/CHANGELOG.md +141 -0
  5. data/Gemfile +1 -5
  6. data/LICENSE.txt +1 -1
  7. data/README.md +21 -43
  8. data/Rakefile +3 -3
  9. data/backers.md +0 -5
  10. data/engines/internal/app/controllers/jets/application_controller.rb +28 -0
  11. data/engines/internal/app/controllers/jets/bare_controller.rb +6 -0
  12. data/engines/internal/app/controllers/jets/health_controller.rb +55 -0
  13. data/engines/internal/app/controllers/jets/info_controller.rb +45 -0
  14. data/{lib/jets → engines}/internal/app/controllers/jets/mailers_controller.rb +12 -14
  15. data/{lib/jets → engines}/internal/app/controllers/jets/mount_controller.rb +6 -10
  16. data/{lib/jets → engines}/internal/app/controllers/jets/public_controller.rb +6 -2
  17. data/engines/internal/app/controllers/jets/welcome_controller.rb +9 -0
  18. data/engines/internal/app/functions/jets/base_path.rb +109 -0
  19. data/engines/internal/app/functions/jets/base_path_mapping.rb +191 -0
  20. data/engines/internal/app/jobs/jets/preheat_job.rb +67 -0
  21. data/engines/internal/app/views/jets/info/properties.html.erb +1 -0
  22. data/engines/internal/app/views/jets/info/routes.html.erb +10 -0
  23. data/{lib/jets → engines}/internal/app/views/jets/mailers/email.html.erb +37 -17
  24. data/engines/internal/app/views/jets/mailers/index.html.erb +8 -0
  25. data/engines/internal/app/views/jets/mailers/mailer.html.erb +6 -0
  26. data/{lib/jets/commands/templates/skeleton/public/index.html.tt → engines/internal/app/views/jets/welcome/index.html.erb} +8 -4
  27. data/engines/internal/app/views/layouts/application.html.erb +51 -0
  28. data/engines/internal/lib/internal/actiondispatch.rb +39 -0
  29. data/engines/internal/lib/internal/actionmailer.rb +51 -0
  30. data/engines/internal/lib/internal/actionview.rb +152 -0
  31. data/engines/internal/lib/internal/activerecord.rb +37 -0
  32. data/engines/internal/lib/internal/activesupport.rb +47 -0
  33. data/engines/internal/lib/internal/engine.rb +13 -0
  34. data/engines/internal/lib/internal/i18n_engine.rb +19 -0
  35. data/engines/internal/lib/internal/jets_controller.rb +46 -0
  36. data/engines/internal/lib/internal/overrides/debug_exceptions.rb +40 -0
  37. data/engines/internal/lib/internal/templates/rescues/_trace.html.erb +62 -0
  38. data/engines/internal/lib/internal/templates/rescues/_trace.text.erb +9 -0
  39. data/engines/internal/lib/internal/turbines/asset_tag_helper.rb +70 -0
  40. data/engines/internal/lib/internal/turbines/helpers.rb +18 -0
  41. data/engines/internal/lib/internal/turbines/routes_helpers.rb +42 -0
  42. data/exe/jets +1 -10
  43. data/jets.gemspec +16 -13
  44. data/lib/jets/app_loader.rb +77 -0
  45. data/lib/jets/application/bootstrap.rb +100 -0
  46. data/lib/jets/application/configuration/defaults.rb +256 -0
  47. data/lib/jets/application/configuration.rb +494 -0
  48. data/lib/jets/application/default_middleware_stack.rb +140 -0
  49. data/lib/jets/application/dummy_erb_compiler.rb +18 -0
  50. data/lib/jets/application/finisher.rb +266 -0
  51. data/lib/jets/application/routes_reloader.rb +80 -0
  52. data/lib/jets/application.rb +515 -199
  53. data/lib/jets/authorizer/base.rb +1 -0
  54. data/lib/jets/authorizer/dsl.rb +15 -11
  55. data/lib/jets/authorizer/helpers/iam_helper.rb +13 -11
  56. data/lib/jets/autoloaders/gem.rb +70 -0
  57. data/lib/jets/autoloaders/inflector.rb +21 -0
  58. data/lib/jets/autoloaders.rb +38 -101
  59. data/lib/jets/aws_info.rb +2 -2
  60. data/lib/jets/aws_services/stack_status.rb +1 -1
  61. data/lib/jets/aws_services.rb +8 -0
  62. data/lib/jets/backtrace_cleaner.rb +27 -0
  63. data/lib/jets/booter.rb +30 -118
  64. data/lib/jets/builders/code_builder.rb +64 -122
  65. data/lib/jets/builders/code_size.rb +1 -0
  66. data/lib/jets/builders/gem_replacer.rb +6 -12
  67. data/lib/jets/builders/handler_generator.rb +34 -14
  68. data/lib/jets/builders/lambda_layer.rb +2 -7
  69. data/lib/jets/builders/purger.rb +1 -1
  70. data/lib/jets/builders/rack_packager.rb +1 -1
  71. data/lib/jets/builders/ruby_packager.rb +54 -10
  72. data/lib/jets/builders/shim_vars/app.rb +10 -6
  73. data/lib/jets/builders/templates/handlers/one_lambda_for_all_controllers.rb +33 -0
  74. data/lib/jets/builders/templates/handlers/one_lambda_per_controller.rb +20 -0
  75. data/lib/jets/builders/templates/{handler.rb → handlers/one_lambda_per_method.rb} +6 -0
  76. data/lib/jets/bundle.rb +2 -9
  77. data/lib/jets/cfn/base.rb +82 -0
  78. data/lib/jets/cfn/builder/api/base.rb +12 -0
  79. data/lib/jets/cfn/{builders/api_deployment_builder.rb → builder/api/deployment.rb} +11 -21
  80. data/lib/jets/cfn/builder/api/gateway.rb +104 -0
  81. data/lib/jets/cfn/builder/api/mapping.rb +54 -0
  82. data/lib/jets/cfn/builder/api/methods.rb +72 -0
  83. data/lib/jets/cfn/builder/api/paged.rb +30 -0
  84. data/lib/jets/cfn/builder/api/pages/base.rb +105 -0
  85. data/lib/jets/cfn/builder/api/pages/methods.rb +17 -0
  86. data/lib/jets/cfn/builder/api/pages/page.rb +19 -0
  87. data/lib/jets/cfn/builder/api/pages/resources.rb +21 -0
  88. data/lib/jets/cfn/builder/api/resources.rb +40 -0
  89. data/lib/jets/cfn/{builders/authorizer_builder.rb → builder/authorizer.rb} +16 -19
  90. data/lib/jets/cfn/builder/controller.rb +28 -0
  91. data/lib/jets/cfn/builder/function.rb +9 -0
  92. data/lib/jets/cfn/builder/interface.rb +146 -0
  93. data/lib/jets/cfn/builder/job.rb +10 -0
  94. data/lib/jets/cfn/builder/nested.rb +130 -0
  95. data/lib/jets/cfn/builder/one_controller.rb +53 -0
  96. data/lib/jets/cfn/{builders/parent_builder → builder/parent}/stagger.rb +1 -1
  97. data/lib/jets/cfn/builder/parent.rb +149 -0
  98. data/lib/jets/cfn/builder/post_process.rb +25 -0
  99. data/lib/jets/cfn/{builders/rule_builder.rb → builder/rule.rb} +4 -8
  100. data/lib/jets/cfn/{builders/shared_builder.rb → builder/shared.rb} +5 -4
  101. data/lib/jets/cfn/{builders → builder}/util/source.rb +1 -1
  102. data/lib/jets/{commands/build.rb → cfn/builder.rb} +50 -78
  103. data/lib/jets/cfn/deployment.rb +45 -0
  104. data/lib/jets/cfn/download.rb +39 -0
  105. data/lib/jets/cfn/params/api/base.rb +39 -0
  106. data/lib/jets/cfn/params/api/cors.rb +10 -0
  107. data/lib/jets/cfn/params/api/methods.rb +69 -0
  108. data/lib/jets/cfn/params/api/resources.rb +28 -0
  109. data/lib/jets/{resource/child_stack/common_parameters.rb → cfn/params/common.rb} +3 -3
  110. data/lib/jets/{resource → cfn/resource}/api_gateway/authorizer.rb +21 -21
  111. data/lib/jets/cfn/resource/api_gateway/base_path/function.rb +57 -0
  112. data/lib/jets/{resource → cfn/resource}/api_gateway/base_path/mapping.rb +13 -12
  113. data/lib/jets/cfn/resource/api_gateway/base_path/role.rb +70 -0
  114. data/lib/jets/{resource → cfn/resource}/api_gateway/deployment.rb +13 -20
  115. data/lib/jets/{resource → cfn/resource}/api_gateway/domain_name.rb +11 -11
  116. data/lib/jets/{resource → cfn/resource}/api_gateway/method/authorization.rb +1 -1
  117. data/lib/jets/cfn/resource/api_gateway/method.rb +92 -0
  118. data/lib/jets/{resource → cfn/resource}/api_gateway/resource.rb +14 -10
  119. data/lib/jets/cfn/resource/api_gateway/resource_id.rb +25 -0
  120. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/change_detection.rb +1 -1
  121. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/logical_id/message.rb +14 -4
  122. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/logical_id.rb +2 -2
  123. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/base.rb +15 -41
  124. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/media_types.rb +3 -3
  125. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/page.rb +6 -6
  126. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/to.rb +8 -3
  127. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/variable.rb +2 -2
  128. data/lib/jets/cfn/resource/api_gateway/rest_api/routes/change.rb +27 -0
  129. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/collision/variable_exception.rb +1 -1
  130. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/collision.rb +1 -1
  131. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes.rb +1 -1
  132. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api.rb +22 -12
  133. data/lib/jets/{resource → cfn/resource}/associated.rb +1 -1
  134. data/lib/jets/{resource → cfn/resource}/config/config_rule.rb +18 -18
  135. data/lib/jets/{resource → cfn/resource}/config/managed_rule.rb +5 -5
  136. data/lib/jets/{resource → cfn/resource}/events/rule.rb +10 -10
  137. data/lib/jets/{resource → cfn/resource}/iam/application_role.rb +4 -4
  138. data/lib/jets/cfn/resource/iam/base_role_definition.rb +56 -0
  139. data/lib/jets/{resource → cfn/resource}/iam/class_role.rb +5 -5
  140. data/lib/jets/{resource → cfn/resource}/iam/function_role.rb +6 -6
  141. data/lib/jets/{resource → cfn/resource}/iam/managed_policy.rb +1 -1
  142. data/lib/jets/cfn/resource/iam/policy.rb +31 -0
  143. data/lib/jets/{resource → cfn/resource}/iam/policy_document.rb +10 -9
  144. data/lib/jets/{resource → cfn/resource}/iot/topic_rule.rb +10 -10
  145. data/lib/jets/{resource → cfn/resource}/lambda/event_source_mapping.rb +9 -9
  146. data/lib/jets/cfn/resource/lambda/function/controller.rb +21 -0
  147. data/lib/jets/{resource → cfn/resource}/lambda/function/environment.rb +9 -7
  148. data/lib/jets/cfn/resource/lambda/function.rb +266 -0
  149. data/lib/jets/{resource → cfn/resource}/lambda/gem_layer.rb +2 -2
  150. data/lib/jets/{resource → cfn/resource}/lambda/layer_version.rb +10 -10
  151. data/lib/jets/cfn/resource/lambda/permission.rb +51 -0
  152. data/lib/jets/cfn/resource/logs/subscription_filter.rb +31 -0
  153. data/lib/jets/cfn/resource/nested/api/base.rb +4 -0
  154. data/lib/jets/cfn/resource/nested/api/deployment.rb +53 -0
  155. data/lib/jets/cfn/resource/nested/api/gateway.rb +15 -0
  156. data/lib/jets/cfn/resource/nested/api/mapping.rb +33 -0
  157. data/lib/jets/cfn/resource/nested/api/methods.rb +30 -0
  158. data/lib/jets/cfn/resource/nested/api/page.rb +8 -0
  159. data/lib/jets/cfn/resource/nested/api/resources.rb +22 -0
  160. data/lib/jets/{resource/child_stack → cfn/resource/nested}/app_class.rb +15 -48
  161. data/lib/jets/{resource/child_stack → cfn/resource/nested}/authorizer.rb +8 -14
  162. data/lib/jets/cfn/resource/nested/base.rb +38 -0
  163. data/lib/jets/cfn/resource/nested/one_controller.rb +48 -0
  164. data/lib/jets/{resource/child_stack → cfn/resource/nested}/shared.rb +10 -16
  165. data/lib/jets/cfn/resource/one/function.rb +66 -0
  166. data/lib/jets/cfn/resource/one/permission.rb +17 -0
  167. data/lib/jets/{resource → cfn/resource}/replacer.rb +26 -27
  168. data/lib/jets/{resource → cfn/resource}/route53/record_set.rb +18 -18
  169. data/lib/jets/{resource → cfn/resource}/s3/bucket.rb +4 -4
  170. data/lib/jets/cfn/resource/s3/jets_bucket.rb +68 -0
  171. data/lib/jets/{resource → cfn/resource}/sns/subscription.rb +8 -8
  172. data/lib/jets/{resource → cfn/resource}/sns/topic.rb +10 -10
  173. data/lib/jets/{resource → cfn/resource}/sns/topic_policy.rb +13 -13
  174. data/lib/jets/{resource → cfn/resource}/sqs/queue.rb +5 -5
  175. data/lib/jets/{resource → cfn/resource}/standardizer.rb +8 -9
  176. data/lib/jets/cfn/resource.rb +8 -0
  177. data/lib/jets/cfn/ship.rb +30 -16
  178. data/lib/jets/cfn/status.rb +1 -1
  179. data/lib/jets/cfn/template.rb +89 -0
  180. data/lib/jets/cfn/upload.rb +26 -23
  181. data/lib/jets/cli.rb +28 -203
  182. data/lib/jets/command/actions.rb +49 -0
  183. data/lib/jets/command/api_helpers.rb +41 -0
  184. data/lib/jets/command/aws_helpers.rb +26 -0
  185. data/lib/jets/command/base.rb +204 -0
  186. data/lib/jets/command/behavior.rb +83 -0
  187. data/lib/jets/command/environment_argument.rb +42 -0
  188. data/lib/jets/command/help/call.md +48 -0
  189. data/lib/jets/{commands → command}/help/deploy.md +1 -1
  190. data/lib/jets/command/help/logs.md +21 -0
  191. data/lib/jets/{commands → command}/help/new.md +3 -4
  192. data/lib/jets/command/help/projects.md +6 -0
  193. data/lib/jets/command/help/releases.md +37 -0
  194. data/lib/jets/command/help/rollback.md +5 -0
  195. data/lib/jets/command/help/routes.md +15 -0
  196. data/lib/jets/command/help/runner.md +40 -0
  197. data/lib/jets/command/help/stacks.md +6 -0
  198. data/lib/jets/command/help.rb +17 -0
  199. data/lib/jets/command/helpers/editor.rb +35 -0
  200. data/lib/jets/command.rb +133 -0
  201. data/lib/jets/commands/application/application_command.rb +40 -0
  202. data/lib/jets/commands/build/build_command.rb +33 -0
  203. data/lib/jets/commands/call/anonymous_guesser.rb +1 -1
  204. data/lib/jets/commands/call/autoload_guesser.rb +2 -2
  205. data/lib/jets/commands/call/base_guesser.rb +5 -5
  206. data/lib/jets/commands/call/call_command.rb +27 -0
  207. data/lib/jets/commands/call/caller.rb +184 -0
  208. data/lib/jets/commands/call/guesser.rb +1 -1
  209. data/lib/jets/commands/clean/base.rb +1 -1
  210. data/lib/jets/commands/clean/build.rb +1 -1
  211. data/lib/jets/commands/clean/clean_command.rb +15 -0
  212. data/lib/jets/commands/clean/log.rb +4 -4
  213. data/lib/jets/commands/configure/configure_command.rb +9 -0
  214. data/lib/jets/commands/console/console_command.rb +38 -0
  215. data/lib/jets/commands/credentials/USAGE +103 -0
  216. data/lib/jets/commands/credentials/credentials_command/diffing.rb +51 -0
  217. data/lib/jets/commands/credentials/credentials_command.rb +139 -0
  218. data/lib/jets/commands/db/system/change/change_command.rb +24 -0
  219. data/lib/jets/commands/dbconsole/dbconsole_command.rb +184 -0
  220. data/lib/jets/commands/degenerate/degenerate_command.rb +21 -0
  221. data/lib/jets/commands/delete/delete_command.rb +155 -0
  222. data/lib/jets/commands/{deploy.rb → deploy/deploy_command.rb} +30 -49
  223. data/lib/jets/commands/dev/dev_command.rb +19 -0
  224. data/lib/jets/commands/{dotenv.rb → dotenv/dotenv_command.rb} +2 -2
  225. data/lib/jets/commands/encrypted/USAGE +46 -0
  226. data/lib/jets/commands/encrypted/encrypted_command.rb +87 -0
  227. data/lib/jets/commands/gems/gems_command.rb +14 -0
  228. data/lib/jets/commands/generate/generate_command.rb +95 -0
  229. data/lib/jets/commands/help/USAGE +20 -0
  230. data/lib/jets/commands/help/help_command.rb +15 -0
  231. data/lib/jets/commands/initializers/initializers_command.rb +19 -0
  232. data/lib/jets/commands/logs/logs_command.rb +45 -0
  233. data/lib/jets/commands/new/new_command.rb +19 -0
  234. data/lib/jets/commands/notes/notes_command.rb +30 -0
  235. data/lib/jets/commands/plugin/plugin_command.rb +45 -0
  236. data/lib/jets/commands/projects/projects_command.rb +30 -0
  237. data/lib/jets/commands/rake/rake_command.rb +59 -0
  238. data/lib/jets/commands/releases/releases_command.rb +72 -0
  239. data/lib/jets/commands/rollback/rollback_command.rb +41 -0
  240. data/lib/jets/commands/routes/routes_command.rb +19 -0
  241. data/lib/jets/commands/runner/runner_command.rb +60 -0
  242. data/lib/jets/commands/server/server_command.rb +291 -0
  243. data/lib/jets/commands/stacks/stacks_command.rb +39 -0
  244. data/lib/jets/commands/status/status_command.rb +9 -0
  245. data/lib/jets/commands/url/url_command.rb +92 -0
  246. data/lib/jets/commands/version/version_command.rb +11 -0
  247. data/lib/jets/commands.rb +17 -0
  248. data/lib/jets/configuration.rb +166 -0
  249. data/lib/jets/controller/base.rb +105 -183
  250. data/lib/jets/controller/compat/abstract_controller/base.rb +126 -0
  251. data/lib/jets/controller/compat/action_controller/metal.rb +99 -0
  252. data/lib/jets/controller/compat/caching.rb +13 -0
  253. data/lib/jets/controller/compat/future.rb +13 -0
  254. data/lib/jets/controller/compat/route_set.rb +47 -0
  255. data/lib/jets/controller/decorate/apigw_stage.rb +39 -0
  256. data/lib/jets/controller/{authorization.rb → decorate/authorization.rb} +1 -1
  257. data/lib/jets/controller/decorate/logging.rb +90 -0
  258. data/lib/jets/controller/decorate/redirecting.rb +16 -0
  259. data/lib/jets/controller/decorate/url_for.rb +10 -0
  260. data/lib/jets/controller/{rack/adapter.rb → handler/apigw.rb} +36 -37
  261. data/lib/jets/controller/handler.rb +41 -0
  262. data/lib/jets/controller/middleware/main.rb +16 -8
  263. data/lib/jets/controller/middleware/{local/api_gateway.rb → mimic/apigw.rb} +41 -4
  264. data/lib/jets/controller/middleware/mimic/lambda_context.rb +44 -0
  265. data/lib/jets/controller/middleware/{local.rb → mimic.rb} +36 -51
  266. data/lib/jets/controller/rack_adapter/action.rb +35 -0
  267. data/lib/jets/controller/{rack → rack_adapter}/env.rb +39 -18
  268. data/lib/jets/controller/request/compat/params.rb +144 -0
  269. data/lib/jets/controller/request/compat/request.rb +125 -0
  270. data/lib/jets/controller/request.rb +35 -18
  271. data/lib/jets/controller/response/compat/response.rb +67 -0
  272. data/lib/jets/controller/response.rb +91 -8
  273. data/lib/jets/core.rb +153 -50
  274. data/lib/jets/core_ext/file.rb +9 -0
  275. data/lib/jets/core_ext/kernel.rb +2 -2
  276. data/lib/jets/core_ext/symbol.rb +5 -0
  277. data/lib/jets/core_ext.rb +4 -0
  278. data/lib/jets/dev_caching.rb +44 -0
  279. data/lib/jets/dotenv/ssm.rb +5 -2
  280. data/lib/jets/dotenv.rb +4 -3
  281. data/lib/jets/engine/configuration.rb +96 -0
  282. data/lib/jets/engine/turbines.rb +23 -0
  283. data/lib/jets/engine.rb +380 -0
  284. data/lib/jets/erb.rb +1 -1
  285. data/lib/jets/exception_reporting.rb +43 -0
  286. data/lib/jets/generators/job/job_generator.rb +41 -0
  287. data/lib/jets/generators/job/templates/event_types/dynamodb.rb.tt +8 -0
  288. data/lib/jets/generators/job/templates/event_types/iot.rb.tt +8 -0
  289. data/lib/jets/generators/job/templates/event_types/kinesis.rb.tt +9 -0
  290. data/lib/jets/generators/job/templates/event_types/log.rb.tt +9 -0
  291. data/lib/jets/generators/job/templates/event_types/rule.rb.tt +23 -0
  292. data/lib/jets/generators/job/templates/event_types/s3.rb.tt +11 -0
  293. data/lib/jets/{generator/templates/active_job/job/templates/job.rb.tt → generators/job/templates/event_types/scheduled.rb.tt} +3 -3
  294. data/lib/jets/generators/job/templates/event_types/sns.rb.tt +9 -0
  295. data/lib/jets/generators/job/templates/event_types/sqs.rb.tt +9 -0
  296. data/lib/jets/generators/overrides/app/USAGE +38 -0
  297. data/lib/jets/generators/overrides/app/app_generator.rb +148 -0
  298. data/lib/jets/generators/overrides/app/helpers.rb +139 -0
  299. data/lib/jets/generators/overrides/app/templates/.env +10 -0
  300. data/lib/jets/{commands/templates/skeleton/.gitignore → generators/overrides/app/templates/.gitignore.tt} +2 -1
  301. data/lib/jets/generators/overrides/app/templates/Gemfile.tt +25 -0
  302. data/lib/jets/generators/overrides/app/templates/Rakefile +2 -0
  303. data/lib/jets/generators/overrides/app/templates/app/assets/config/manifest.js +3 -0
  304. data/lib/jets/generators/overrides/app/templates/app/assets/stylesheets/application.css +15 -0
  305. data/lib/jets/generators/overrides/app/templates/app/javascript/application.js +5 -0
  306. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/app/models/application_record.rb +1 -1
  307. data/lib/jets/generators/overrides/app/templates/app/views/layouts/application.html.erb.tt +30 -0
  308. data/lib/jets/generators/overrides/app/templates/bin/jets +3 -0
  309. data/lib/jets/generators/overrides/app/templates/config/application.rb.tt +15 -0
  310. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/config/database.yml.tt +1 -1
  311. data/lib/jets/generators/overrides/app/templates/config/environments/development.rb.tt +29 -0
  312. data/lib/jets/generators/overrides/app/templates/config/environments/production.rb.tt +19 -0
  313. data/lib/jets/generators/overrides/app/templates/config/environments/test.rb.tt +23 -0
  314. data/lib/jets/generators/overrides/app/templates/config/initializers/content_security_policy.rb +31 -0
  315. data/lib/jets/generators/overrides/app/templates/config/initializers/filter_parameter_logging.rb +8 -0
  316. data/lib/jets/generators/overrides/app/templates/config/initializers/permissions_policy.rb +11 -0
  317. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/config/routes.rb +5 -1
  318. data/lib/jets/generators/overrides/app/templates/db/.gitkeep +0 -0
  319. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/public/404.html +6 -6
  320. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/public/422.html +6 -6
  321. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/public/500.html +6 -6
  322. data/lib/jets/generators/overrides/templates/erb/scaffold/index.html.erb +22 -0
  323. data/lib/jets/generators/overrides/templates/erb/scaffold/partial.html.erb +8 -0
  324. data/lib/jets/{generator/templates/rails/scaffold_controller/api_controller.rb → generators/overrides/templates/rails/scaffold_controller/api_controller.rb.tt} +5 -9
  325. data/lib/jets/generators/overrides/templates/rails/scaffold_controller/controller.rb.tt +67 -0
  326. data/lib/jets/generators.rb +112 -0
  327. data/lib/jets/inflections.rb +1 -1
  328. data/lib/jets/info.rb +116 -0
  329. data/lib/jets/initializable.rb +95 -0
  330. data/lib/jets/job/base.rb +5 -2
  331. data/lib/jets/job/dsl/dynamodb_event.rb +19 -9
  332. data/lib/jets/job/dsl/event_source_mapping.rb +1 -1
  333. data/lib/jets/job/dsl/iot_event.rb +6 -6
  334. data/lib/jets/job/dsl/kinesis_event.rb +5 -5
  335. data/lib/jets/job/dsl/log_event.rb +2 -2
  336. data/lib/jets/job/dsl/rule_event.rb +7 -4
  337. data/lib/jets/job/dsl/s3_event.rb +1 -1
  338. data/lib/jets/job/dsl/sns_event.rb +6 -6
  339. data/lib/jets/job/dsl/sqs_event.rb +11 -11
  340. data/lib/jets/job/helpers/sns_event_helper.rb +8 -0
  341. data/lib/jets/job/helpers/sqs_event_helper.rb +8 -0
  342. data/lib/jets/klass.rb +5 -6
  343. data/lib/jets/lambda/definition.rb +118 -0
  344. data/lib/jets/lambda/dsl/warnings.rb +57 -0
  345. data/lib/jets/lambda/dsl.rb +73 -54
  346. data/lib/jets/lambda/function.rb +3 -3
  347. data/lib/jets/lambda/function_constructor.rb +6 -6
  348. data/lib/jets/lambda/functions.rb +36 -1
  349. data/lib/jets/mega/hash_converter.rb +2 -2
  350. data/lib/jets/mega/request/source.rb +1 -2
  351. data/lib/jets/mega/request.rb +4 -4
  352. data/lib/jets/names.rb +79 -0
  353. data/lib/jets/overrides/dummy/rails.rb +11 -0
  354. data/lib/jets/overrides/lambda/marshaller.rb +10 -0
  355. data/lib/jets/overrides/puma.rb +10 -0
  356. data/lib/jets/paths.rb +243 -0
  357. data/lib/jets/{poly_fun → poly}/base_executor.rb +13 -13
  358. data/lib/jets/{poly_fun → poly}/lambda_executor.rb +2 -2
  359. data/lib/jets/{poly_fun → poly}/node_error.rb +1 -1
  360. data/lib/jets/{poly_fun → poly}/node_executor.rb +4 -4
  361. data/lib/jets/{poly_fun → poly}/python_error.rb +1 -1
  362. data/lib/jets/{poly_fun → poly}/python_executor.rb +2 -2
  363. data/lib/jets/{poly_fun.rb → poly.rb} +12 -12
  364. data/lib/jets/preheat.rb +26 -33
  365. data/lib/jets/processors/deducer.rb +2 -2
  366. data/lib/jets/processors/main_processor.rb +6 -13
  367. data/lib/jets/rack/logger.rb +77 -0
  368. data/lib/jets/router/compat/route_set.rb +177 -0
  369. data/lib/jets/router/dsl/mount.rb +40 -6
  370. data/lib/jets/router/dsl.rb +125 -105
  371. data/lib/jets/router/engine_mount.rb +36 -0
  372. data/lib/jets/router/help.rb +130 -0
  373. data/lib/jets/router/helpers/named_routes/add_full_url.rb +13 -0
  374. data/lib/jets/router/helpers/named_routes/generated.rb +197 -0
  375. data/lib/jets/router/helpers/named_routes/proxy.rb +66 -0
  376. data/lib/jets/router/matcher.rb +140 -17
  377. data/lib/jets/router/resources/options.rb +6 -4
  378. data/lib/jets/router/route/after_initialize.rb +64 -0
  379. data/lib/jets/router/route/as.rb +93 -0
  380. data/lib/jets/router/route/authorizer.rb +1 -0
  381. data/lib/jets/router/route/compat.rb +45 -0
  382. data/lib/jets/router/route/info.rb +74 -0
  383. data/lib/jets/router/route/node.rb +137 -0
  384. data/lib/jets/router/route/path.rb +93 -0
  385. data/lib/jets/router/route.rb +109 -90
  386. data/lib/jets/router/route_set.rb +214 -0
  387. data/lib/jets/router/scope.rb +204 -69
  388. data/lib/jets/router/state.rb +67 -0
  389. data/lib/jets/router/util.rb +1 -31
  390. data/lib/jets/router.rb +64 -150
  391. data/lib/jets/ruby_version_check.rb +15 -0
  392. data/lib/jets/rule/base.rb +1 -0
  393. data/lib/jets/rule/dsl.rb +7 -7
  394. data/lib/jets/secrets.rb +110 -0
  395. data/lib/jets/spec_helpers/controllers/request.rb +22 -16
  396. data/lib/jets/spec_helpers/controllers.rb +32 -24
  397. data/lib/jets/spec_helpers.rb +0 -6
  398. data/lib/jets/stack/builder.rb +3 -2
  399. data/lib/jets/stack/definition.rb +1 -4
  400. data/lib/jets/stack/function.rb +2 -2
  401. data/lib/jets/stack/main/dsl/cloudwatch.rb +4 -4
  402. data/lib/jets/stack/main/dsl/kinesis.rb +2 -2
  403. data/lib/jets/stack/main/dsl/lambda.rb +26 -19
  404. data/lib/jets/stack/main/dsl/sqs.rb +2 -2
  405. data/lib/jets/stack/output/lookup.rb +1 -1
  406. data/lib/jets/stack/output.rb +2 -2
  407. data/lib/jets/stack/parameter.rb +2 -2
  408. data/lib/jets/stack/resource.rb +3 -3
  409. data/lib/jets/stack/s3_event.rb +51 -37
  410. data/lib/jets/stack.rb +1 -1
  411. data/lib/jets/tasks/engine.rake +85 -0
  412. data/lib/jets/tasks/framework.rake +66 -0
  413. data/lib/jets/tasks/log.rake +41 -0
  414. data/lib/jets/tasks/middleware.rake +9 -0
  415. data/lib/jets/tasks/misc.rake +81 -0
  416. data/lib/jets/tasks/statistics.rake +37 -0
  417. data/lib/jets/tasks/tmp.rake +51 -0
  418. data/lib/jets/tasks/yarn.rake +29 -0
  419. data/lib/jets/tasks/zeitwerk.rake +61 -0
  420. data/lib/jets/tasks.rb +18 -0
  421. data/lib/jets/tmp_loader.rb +1 -1
  422. data/lib/jets/turbine/configurable.rb +36 -0
  423. data/lib/jets/turbine/configuration.rb +101 -0
  424. data/lib/jets/turbine.rb +164 -20
  425. data/lib/jets/util/camelize.rb +24 -0
  426. data/lib/jets/util/yamler.rb +16 -0
  427. data/lib/jets/version.rb +1 -1
  428. data/lib/jets.rb +8 -14
  429. metadata +444 -347
  430. data/.python-version +0 -1
  431. data/.ruby-version +0 -1
  432. data/bin/release +0 -9
  433. data/lib/jets/application/defaults.rb +0 -200
  434. data/lib/jets/builders/reconfigure_rails/config/initializers/jets.rb +0 -16
  435. data/lib/jets/builders/reconfigure_rails.rb +0 -114
  436. data/lib/jets/cfn/builders/api_gateway_builder.rb +0 -123
  437. data/lib/jets/cfn/builders/api_resources_builder.rb +0 -44
  438. data/lib/jets/cfn/builders/base_child_builder.rb +0 -69
  439. data/lib/jets/cfn/builders/controller_builder.rb +0 -50
  440. data/lib/jets/cfn/builders/function_builder.rb +0 -14
  441. data/lib/jets/cfn/builders/interface.rb +0 -133
  442. data/lib/jets/cfn/builders/job_builder.rb +0 -14
  443. data/lib/jets/cfn/builders/parent_builder.rb +0 -130
  444. data/lib/jets/cfn/built_template.rb +0 -15
  445. data/lib/jets/cfn/template_source.rb +0 -61
  446. data/lib/jets/commands/base.rb +0 -145
  447. data/lib/jets/commands/call.rb +0 -182
  448. data/lib/jets/commands/clean.rb +0 -19
  449. data/lib/jets/commands/configure.rb +0 -51
  450. data/lib/jets/commands/console.rb +0 -12
  451. data/lib/jets/commands/db/environment-task.rake +0 -3
  452. data/lib/jets/commands/db/tasks/dummy/app.rb +0 -25
  453. data/lib/jets/commands/db/tasks/dummy/config.rb +0 -14
  454. data/lib/jets/commands/db/tasks.rb +0 -34
  455. data/lib/jets/commands/db.rb +0 -13
  456. data/lib/jets/commands/dbconsole.rb +0 -134
  457. data/lib/jets/commands/delete.rb +0 -136
  458. data/lib/jets/commands/dynamodb/migrate.rb +0 -9
  459. data/lib/jets/commands/dynamodb/migrator.rb +0 -36
  460. data/lib/jets/commands/dynamodb.rb +0 -19
  461. data/lib/jets/commands/gems.rb +0 -13
  462. data/lib/jets/commands/help/call.md +0 -69
  463. data/lib/jets/commands/help/dynamodb/generate.md +0 -52
  464. data/lib/jets/commands/help/dynamodb/migrate.md +0 -4
  465. data/lib/jets/commands/help/routes.md +0 -16
  466. data/lib/jets/commands/help/runner.md +0 -17
  467. data/lib/jets/commands/help.rb +0 -9
  468. data/lib/jets/commands/import/base.rb +0 -49
  469. data/lib/jets/commands/import/cheatsheet.rb +0 -35
  470. data/lib/jets/commands/import/rack.rb +0 -16
  471. data/lib/jets/commands/import/rails.rb +0 -74
  472. data/lib/jets/commands/import/sequence.rb +0 -90
  473. data/lib/jets/commands/import/templates/config/database.yml +0 -30
  474. data/lib/jets/commands/import/templates/submodules-cheatsheet.md +0 -89
  475. data/lib/jets/commands/import.rb +0 -12
  476. data/lib/jets/commands/main.rb +0 -166
  477. data/lib/jets/commands/markdown/creator.rb +0 -58
  478. data/lib/jets/commands/markdown/index.rb +0 -27
  479. data/lib/jets/commands/markdown/page.rb +0 -125
  480. data/lib/jets/commands/markdown/shell.rb +0 -11
  481. data/lib/jets/commands/new.rb +0 -173
  482. data/lib/jets/commands/rake_command.rb +0 -61
  483. data/lib/jets/commands/rake_tasks.rb +0 -50
  484. data/lib/jets/commands/runner.rb +0 -16
  485. data/lib/jets/commands/sequence.rb +0 -105
  486. data/lib/jets/commands/stack_info.rb +0 -30
  487. data/lib/jets/commands/templates/skeleton/.env.development.tt +0 -3
  488. data/lib/jets/commands/templates/skeleton/.env.test +0 -3
  489. data/lib/jets/commands/templates/skeleton/.env.tt +0 -3
  490. data/lib/jets/commands/templates/skeleton/.jetskeep +0 -1
  491. data/lib/jets/commands/templates/skeleton/Gemfile.tt +0 -40
  492. data/lib/jets/commands/templates/skeleton/Procfile +0 -7
  493. data/lib/jets/commands/templates/skeleton/Rakefile +0 -2
  494. data/lib/jets/commands/templates/skeleton/app/models/application_item.rb +0 -2
  495. data/lib/jets/commands/templates/skeleton/app/views/layouts/application.html.erb.tt +0 -26
  496. data/lib/jets/commands/templates/skeleton/config/application.rb.tt +0 -71
  497. data/lib/jets/commands/templates/skeleton/config/dynamodb.yml +0 -22
  498. data/lib/jets/commands/templates/skeleton/config/environments/development.rb +0 -7
  499. data/lib/jets/commands/templates/skeleton/config/environments/production.rb +0 -9
  500. data/lib/jets/commands/templates/skeleton/config/environments/test.rb +0 -7
  501. data/lib/jets/commands/templates/webpacker/app/javascript/packs/application.js.tt +0 -23
  502. data/lib/jets/commands/templates/webpacker/app/javascript/packs/theme.scss.tt +0 -24
  503. data/lib/jets/commands/upgrade/templates/bin/webpack +0 -19
  504. data/lib/jets/commands/upgrade/templates/bin/webpack-dev-server +0 -19
  505. data/lib/jets/commands/upgrade/version1.rb +0 -136
  506. data/lib/jets/commands/upgrade.rb +0 -105
  507. data/lib/jets/commands/url.rb +0 -69
  508. data/lib/jets/commands/webpacker_template.rb +0 -18
  509. data/lib/jets/controller/callbacks.rb +0 -73
  510. data/lib/jets/controller/cookies/jar.rb +0 -269
  511. data/lib/jets/controller/cookies.rb +0 -38
  512. data/lib/jets/controller/error/invalid_authenticity_token.rb +0 -6
  513. data/lib/jets/controller/error.rb +0 -4
  514. data/lib/jets/controller/forgery_protection.rb +0 -43
  515. data/lib/jets/controller/layout.rb +0 -17
  516. data/lib/jets/controller/middleware/cors.rb +0 -60
  517. data/lib/jets/controller/middleware/local/mimic_aws_call.rb +0 -38
  518. data/lib/jets/controller/middleware/local/route_matcher.rb +0 -22
  519. data/lib/jets/controller/middleware/reloader.rb +0 -15
  520. data/lib/jets/controller/parameters_filter.rb +0 -29
  521. data/lib/jets/controller/params.rb +0 -117
  522. data/lib/jets/controller/redirection.rb +0 -61
  523. data/lib/jets/controller/rendering/rack_renderer.rb +0 -267
  524. data/lib/jets/controller/rendering.rb +0 -96
  525. data/lib/jets/controller/stage.rb +0 -34
  526. data/lib/jets/controller.rb +0 -3
  527. data/lib/jets/db.rb +0 -15
  528. data/lib/jets/generator/templates/erb/controller/view.html.erb +0 -2
  529. data/lib/jets/generator/templates/erb/scaffold/index.html.erb +0 -29
  530. data/lib/jets/generator/templates/rails/controller/controller.rb +0 -13
  531. data/lib/jets/generator/templates/rails/helper/helper.rb +0 -4
  532. data/lib/jets/generator/templates/rails/scaffold_controller/controller.rb +0 -67
  533. data/lib/jets/generator.rb +0 -112
  534. data/lib/jets/internal/app/controllers/jets/bare_controller.rb +0 -16
  535. data/lib/jets/internal/app/controllers/jets/rack_controller.rb +0 -12
  536. data/lib/jets/internal/app/functions/jets/base_path.rb +0 -18
  537. data/lib/jets/internal/app/functions/jets/base_path_mapping.rb +0 -100
  538. data/lib/jets/internal/app/helpers/jets/mailers_helper.rb +0 -9
  539. data/lib/jets/internal/app/jobs/jets/preheat_job.rb +0 -70
  540. data/lib/jets/internal/app/views/jets/mailers/index.html.erb +0 -8
  541. data/lib/jets/internal/app/views/jets/mailers/mailer.html.erb +0 -6
  542. data/lib/jets/internal/turbines/jets/mailer.rb +0 -52
  543. data/lib/jets/lambda/task.rb +0 -111
  544. data/lib/jets/logger.rb +0 -21
  545. data/lib/jets/middleware/configurator.rb +0 -84
  546. data/lib/jets/middleware/default_stack.rb +0 -53
  547. data/lib/jets/middleware/layer.rb +0 -34
  548. data/lib/jets/middleware/stack.rb +0 -77
  549. data/lib/jets/middleware.rb +0 -33
  550. data/lib/jets/naming.rb +0 -63
  551. data/lib/jets/overrides/rails/action_controller.rb +0 -13
  552. data/lib/jets/overrides/rails/asset_tag_helper.rb +0 -114
  553. data/lib/jets/overrides/rails/common_methods.rb +0 -13
  554. data/lib/jets/overrides/rails/migration_checker.rb +0 -34
  555. data/lib/jets/overrides/rails/rendering_helper.rb +0 -27
  556. data/lib/jets/overrides/rails/url_helper.rb +0 -88
  557. data/lib/jets/overrides/rails.rb +0 -6
  558. data/lib/jets/rack_server.rb +0 -86
  559. data/lib/jets/resource/api_gateway/base_path/function.rb +0 -49
  560. data/lib/jets/resource/api_gateway/base_path/role.rb +0 -76
  561. data/lib/jets/resource/api_gateway/cors.rb +0 -61
  562. data/lib/jets/resource/api_gateway/method.rb +0 -102
  563. data/lib/jets/resource/api_gateway/rest_api/routes/change.rb +0 -16
  564. data/lib/jets/resource/base.rb +0 -28
  565. data/lib/jets/resource/child_stack/api_deployment.rb +0 -58
  566. data/lib/jets/resource/child_stack/api_gateway.rb +0 -23
  567. data/lib/jets/resource/child_stack/api_resource/page.rb +0 -20
  568. data/lib/jets/resource/child_stack/api_resource.rb +0 -54
  569. data/lib/jets/resource/child_stack/base.rb +0 -24
  570. data/lib/jets/resource/iam/base_role_definition.rb +0 -47
  571. data/lib/jets/resource/lambda/function.rb +0 -221
  572. data/lib/jets/resource/logs/subscription_filter.rb +0 -31
  573. data/lib/jets/resource/permission.rb +0 -45
  574. data/lib/jets/resource.rb +0 -71
  575. data/lib/jets/router/error.rb +0 -4
  576. data/lib/jets/router/finder.rb +0 -47
  577. data/lib/jets/router/helpers/core_helper.rb +0 -27
  578. data/lib/jets/router/helpers/named_routes_helper.rb +0 -8
  579. data/lib/jets/router/helpers.rb +0 -4
  580. data/lib/jets/router/method_creator/code.rb +0 -99
  581. data/lib/jets/router/method_creator/edit.rb +0 -12
  582. data/lib/jets/router/method_creator/generic.rb +0 -11
  583. data/lib/jets/router/method_creator/index.rb +0 -48
  584. data/lib/jets/router/method_creator/new.rb +0 -12
  585. data/lib/jets/router/method_creator/root.rb +0 -15
  586. data/lib/jets/router/method_creator/show.rb +0 -12
  587. data/lib/jets/router/method_creator.rb +0 -50
  588. data/lib/jets/turbo/database_yaml.rb +0 -41
  589. data/lib/jets/turbo/project/.gitignore +0 -12
  590. data/lib/jets/turbo/project/.jetskeep +0 -1
  591. data/lib/jets/turbo/project/Gemfile +0 -16
  592. data/lib/jets/turbo/project/Rakefile +0 -2
  593. data/lib/jets/turbo/project/app/controllers/application_controller.rb +0 -2
  594. data/lib/jets/turbo/project/app/helpers/application_helper.rb +0 -2
  595. data/lib/jets/turbo/project/app/jobs/application_job.rb +0 -4
  596. data/lib/jets/turbo/project/config/application.rb +0 -5
  597. data/lib/jets/turbo/project/config/routes.rb +0 -4
  598. data/lib/jets/turbo/project/config.ru +0 -5
  599. data/lib/jets/turbo/rails.rb +0 -127
  600. data/lib/jets/turbo/templates/config/database.yml +0 -30
  601. data/lib/jets/turbo.rb +0 -56
  602. data/readme/prerelease.md +0 -6
  603. data/readme/testing.md +0 -60
  604. /data/{lib/jets → engines}/internal/app/shared/functions/jets/s3_bucket_config.rb +0 -0
  605. /data/lib/jets/{commands → command}/help/build.md +0 -0
  606. /data/lib/jets/{commands → command}/help/clean/build.md +0 -0
  607. /data/lib/jets/{commands → command}/help/clean/log.md +0 -0
  608. /data/lib/jets/{commands → command}/help/console.md +0 -0
  609. /data/lib/jets/{commands → command}/help/db/generate.md +0 -0
  610. /data/lib/jets/{commands → command}/help/dbconsole.md +0 -0
  611. /data/lib/jets/{commands → command}/help/degenerate.md +0 -0
  612. /data/lib/jets/{commands → command}/help/delete.md +0 -0
  613. /data/lib/jets/{commands → command}/help/gems/check.md +0 -0
  614. /data/lib/jets/{commands → command}/help/generate.md +0 -0
  615. /data/lib/jets/{commands → command}/help/import/rack.md +0 -0
  616. /data/lib/jets/{commands → command}/help/import/rails.md +0 -0
  617. /data/lib/jets/{commands → command}/help/server.md +0 -0
  618. /data/lib/jets/{commands → command}/help/status.md +0 -0
  619. /data/lib/jets/{commands → command}/help/upgrade.md +0 -0
  620. /data/lib/jets/{commands → command}/help/url.md +0 -0
  621. /data/lib/jets/{generator/templates/active_job → generators}/job/templates/application_job.rb.tt +0 -0
  622. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/.rspec +0 -0
  623. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/README.md +0 -0
  624. /data/{.gitmodules → lib/jets/generators/overrides/app/templates/app/assets/images/.keep} +0 -0
  625. /data/lib/jets/{commands/templates/skeleton/db/.gitkeep → generators/overrides/app/templates/app/assets/javascripts/.keep} +0 -0
  626. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/app/controllers/application_controller.rb +0 -0
  627. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/app/helpers/application_helper.rb +0 -0
  628. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/app/jobs/application_job.rb +0 -0
  629. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/config.ru +0 -0
  630. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/public/favicon.ico +0 -0
  631. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/spec/controllers/posts_controller_spec.rb +0 -0
  632. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/spec/fixtures/payloads/posts-index.json +0 -0
  633. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/spec/fixtures/payloads/posts-show.json +0 -0
  634. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/spec/spec_helper.rb.tt +0 -0
  635. /data/lib/jets/{generator → generators/overrides}/templates/erb/scaffold/_form.html.erb +0 -0
  636. /data/lib/jets/{generator → generators/overrides}/templates/erb/scaffold/edit.html.erb +0 -0
  637. /data/lib/jets/{generator → generators/overrides}/templates/erb/scaffold/new.html.erb +0 -0
  638. /data/lib/jets/{generator → generators/overrides}/templates/erb/scaffold/show.html.erb +0 -0
  639. /data/lib/jets/{generator → generators/overrides}/templates/rails/assets/javascript.js +0 -0
  640. /data/lib/jets/{generator → generators/overrides}/templates/rails/assets/stylesheet.css +0 -0
  641. /data/lib/jets/{generator → generators/overrides}/templates/rails/scaffold/scaffold.css +0 -0
@@ -0,0 +1,266 @@
1
+ module Jets::Cfn::Resource::Lambda
2
+ class Function < Jets::Cfn::Base
3
+ MAX_FUNCTION_NAME_SIZE = 64
4
+ include Environment
5
+
6
+ def initialize(definition)
7
+ @definition = definition
8
+ @app_class = definition.class_name.to_s
9
+ end
10
+
11
+ def definition
12
+ {
13
+ function_logical_id => {
14
+ Type: "AWS::Lambda::Function",
15
+ Properties: combined_properties
16
+ }
17
+ }
18
+ end
19
+
20
+ # Examples:
21
+ # one_lambda_per_controller PostsControllerLambdaHandlerLambdaFunction
22
+ # one_lambda_per_method PostsControllerIndexLambdaFunction
23
+ def function_logical_id
24
+ "{namespace}LambdaFunction"
25
+ end
26
+
27
+ def replacements
28
+ @definition.replacements # has namespace replacement
29
+ end
30
+
31
+ def combined_properties
32
+ props = env_properties
33
+ .deep_merge(global_properties)
34
+ .deep_merge(class_properties)
35
+ .deep_merge(function_properties)
36
+ finalize_properties!(props)
37
+ end
38
+
39
+ # Global properties example:
40
+ # jets defaults are in jets/default/application.rb.
41
+ # Your application's default config/application.rb then get used. Example:
42
+ #
43
+ # Jets.application.configure do
44
+ # config.function = ActiveSupport::OrderedOptions.new
45
+ # config.function.timeout = 30
46
+ # config.function.runtime = "nodejs8.10"
47
+ # config.function.memory_size = 1536
48
+ # end
49
+ def global_properties
50
+ baseline = {
51
+ Code: {
52
+ S3Bucket: "!Ref S3Bucket",
53
+ S3Key: code_s3_key
54
+ },
55
+ Role: "!Ref IamRole",
56
+ Environment: { Variables: environment },
57
+ }
58
+
59
+ application_config = camelize(Jets.application.config.function.to_h)
60
+ baseline.merge(application_config)
61
+ end
62
+
63
+ # Class properties example:
64
+ #
65
+ # class PostsController < ApplicationController
66
+ # class_timeout 22
67
+ # ...
68
+ # end
69
+ #
70
+ # Also handles iam policy override at the class level. Example:
71
+ #
72
+ # class_iam_policy("logs:*")
73
+ #
74
+ def class_properties
75
+ # klass is PostsController, HardJob, GameRule, Hello or HelloFunction
76
+ klass = Jets::Klass.from_definition(@definition)
77
+
78
+ class_properties = lookup_class_properties(klass)
79
+ if assign_iam_role?(klass)
80
+ iam_policy = Jets::Cfn::Resource::Iam::ClassRole.new(klass)
81
+ class_properties[:Role] = "!GetAtt #{iam_policy.logical_id}.Arn"
82
+ end
83
+
84
+ camelize(class_properties)
85
+ end
86
+
87
+ # The IAM Role is built in the same nested template but determination of
88
+ # whether or not to assign the IAM Role is determined by the inheritance.
89
+ # The merging of permissions is already handled by Resource::Iam::*Role classes.
90
+ # This also avoids having to pass Application IAM role around.
91
+ def assign_iam_role?(klass)
92
+ assign = false
93
+ while klass && klass != Object
94
+ if klass&.build_class_iam?
95
+ assign = true
96
+ break
97
+ end
98
+ klass = klass.superclass
99
+ end
100
+ assign
101
+ end
102
+
103
+ # Accounts for inherited class_properties
104
+ def lookup_class_properties(klass)
105
+ all_classes = []
106
+ while klass != Object
107
+ all_classes << klass
108
+ klass = klass.superclass
109
+ end
110
+ class_properties = {}
111
+ # Go back down class heirachry top to down
112
+ all_classes.reverse.each do |k|
113
+ class_properties.merge!(k.class_properties)
114
+ end
115
+ class_properties
116
+ end
117
+
118
+ # Function properties example:
119
+ #
120
+ # class PostsController < ApplicationController
121
+ # timeout 18
122
+ # def index
123
+ # ...
124
+ # end
125
+ #
126
+ # Also handles iam policy override at the function level. Example:
127
+ #
128
+ # iam_policy("ec2:*")
129
+ # def new
130
+ # render json: params.merge(action: "new")
131
+ # end
132
+ #
133
+ def function_properties
134
+ properties = @definition.properties
135
+ if @definition.build_function_iam?
136
+ iam_policy = Jets::Cfn::Resource::Iam::FunctionRole.new(@definition)
137
+ properties[:Role] = "!GetAtt #{iam_policy.logical_id}.Arn"
138
+ end
139
+ camelize(properties)
140
+ end
141
+
142
+ # Properties managed by Jets merged with finality.
143
+ def finalize_properties!(props)
144
+ handler = full_handler(props)
145
+ runtime = get_runtime(props)
146
+ description = get_descripton(props)
147
+ managed = {
148
+ Handler: handler,
149
+ Runtime: runtime,
150
+ Description: description,
151
+ }
152
+ managed[:FunctionName] = function_name if function_name
153
+ layers = get_layers(runtime)
154
+ managed[:Layers] = layers if layers
155
+ props.merge!(managed)
156
+ end
157
+
158
+ def get_layers(runtime)
159
+ return nil unless runtime =~ /^ruby/ || runtime =~ /^provided/
160
+ return Jets.config.lambda.layers if Jets.config.pro.disable
161
+
162
+ ["!Ref GemLayer"] + Jets.config.lambda.layers
163
+ end
164
+
165
+ def get_runtime(props)
166
+ # Only allow custom runtime for ruby so polymorphic support works for python and node
167
+ if @definition.lang == :ruby
168
+ props[:Runtime] || default_runtime
169
+ else
170
+ default_runtime
171
+ end
172
+ end
173
+
174
+ def default_runtime
175
+ self.class.default_runtimes[@definition.lang]
176
+ end
177
+
178
+ # Also used by jets/stack/main/dsl/lambda.rb
179
+ def self.default_runtimes
180
+ {
181
+ node: "nodejs18.x",
182
+ python: "python3.10",
183
+ ruby: Jets.ruby_runtime,
184
+ }
185
+ end
186
+
187
+ def default_handler
188
+ map = {
189
+ node: @definition.full_handler(:handler), # IE: handlers/controllers/posts/show.handler
190
+ python: @definition.full_handler(:lambda_handler), # IE: handlers/controllers/posts/show.lambda_handler
191
+ ruby: handler, # IE: handlers/controllers/posts_controllers.index
192
+ }
193
+ map[@definition.lang]
194
+ end
195
+
196
+ def handler
197
+ handler_value(@definition.meth) # IE: handlers/controllers/posts_controllers.index
198
+ end
199
+
200
+ # Used for node-shim also
201
+ def handler_value(meth)
202
+ "handlers/#{@definition.type.pluralize}/#{@app_class.underscore}.#{meth}"
203
+ end
204
+
205
+ # Ensure that the handler path is normalized.
206
+ def full_handler(props)
207
+ if props[:Handler]
208
+ handler_value(props[:Handler])
209
+ else
210
+ default_handler
211
+ end
212
+ end
213
+
214
+ def code_s3_key
215
+ checksum = Jets::Builders::Md5.checksums["stage/code"]
216
+ "jets/code/code-#{checksum}.zip" # s3_key
217
+ end
218
+
219
+ # Examples:
220
+ # "#{Jets.project_namespace}-sleep_job-perform"
221
+ # "demo-dev-sleep_job-perform"
222
+ def function_name
223
+ return if ENV['JETS_RESET'] # reset mode, let CloudFormation manage the function name
224
+ # Example values:
225
+ # @app_class: admin/pages_controller
226
+ # @definition.meth: index
227
+ # method: admin/pages_controller
228
+ # method: admin-pages_controller-index
229
+
230
+ method = @app_class.underscore
231
+ method = method.gsub('/','-').gsub(/[^0-9a-z\-_]/i, '')
232
+ unless one_lambda_per_controller?
233
+ method += "-#{@definition.meth}"
234
+ end
235
+ function_name = "#{Jets.project_namespace}-#{method}"
236
+
237
+ # Returns nil if function name is too long.
238
+ # CloudFormation will managed the the function name in this case.
239
+ # A pretty function name won't be generated but the deploy will be successful.
240
+ function_name.size > MAX_FUNCTION_NAME_SIZE ? nil : function_name
241
+ end
242
+
243
+ def get_descripton(props)
244
+ props[:Description] || default_description
245
+ end
246
+
247
+ # Example values:
248
+ # @app_class: Admin/PagesController
249
+ # @definition.meth: index
250
+ # Returns:
251
+ # Admin/PagesController
252
+ # or
253
+ # Admin/PagesController#index
254
+ def default_description
255
+ if one_lambda_per_controller?
256
+ "#{@app_class}"
257
+ else
258
+ "#{@app_class}##{@definition.meth}"
259
+ end
260
+ end
261
+
262
+ def one_lambda_per_controller?
263
+ Jets.one_lambda_per_controller? && @app_class.to_s.ends_with?("Controller")
264
+ end
265
+ end
266
+ end
@@ -1,4 +1,4 @@
1
- module Jets::Resource::Lambda
1
+ module Jets::Cfn::Resource::Lambda
2
2
  class GemLayer < LayerVersion
3
3
  def description
4
4
  "Jets Ruby Gems"
@@ -6,7 +6,7 @@ module Jets::Resource::Lambda
6
6
 
7
7
  def layer_name
8
8
  # Do not include the Jets.extra_env to group the layers in same app together
9
- "#{Jets.config.short_env}-#{Jets.config.project_name}-gems"
9
+ "#{Jets.short_env}-#{Jets.project_name}-gems"
10
10
  end
11
11
 
12
12
  def code_s3_key
@@ -8,20 +8,20 @@
8
8
  # Description: String
9
9
  # LayerName: String
10
10
  # LicenseInfo: String
11
- module Jets::Resource::Lambda
12
- class LayerVersion < Jets::Resource::Base
11
+ module Jets::Cfn::Resource::Lambda
12
+ class LayerVersion < Jets::Cfn::Base
13
13
  def definition
14
14
  {
15
15
  layer_version_logical_id => {
16
- type: "AWS::Lambda::LayerVersion",
17
- properties: {
18
- content: {
19
- s3_bucket: s3_bucket,
20
- s3_key: code_s3_key,
16
+ Type: "AWS::Lambda::LayerVersion",
17
+ Properties: {
18
+ Content: {
19
+ S3Bucket: s3_bucket,
20
+ S3Key: code_s3_key,
21
21
  },
22
- description: description,
23
- layer_name: layer_name,
24
- license_info: "MIT",
22
+ Description: description,
23
+ LayerName: layer_name,
24
+ LicenseInfo: "Nonstandard",
25
25
  }
26
26
  }
27
27
  }
@@ -0,0 +1,51 @@
1
+ # Resource: Permissions are at the cfn/resource/permission.rb level because the
2
+ # principal is determined by the calling or associated resource.
3
+ # IE: Principal: events.amazonaws.com for Jets Jobs.
4
+ module Jets::Cfn::Resource::Lambda
5
+ class Permission < Jets::Cfn::Base
6
+ def initialize(replacements, associated_resource, options={})
7
+ @replacements = replacements
8
+ @associated_resource = associated_resource
9
+ # allow override for Jets::Cfn::Resource::Lambda::Function::Controller permission
10
+ @principal = options[:Principal]
11
+ @source_arn = options[:SourceArn]
12
+ end
13
+
14
+ def definition
15
+ logical_id = permission_logical_id
16
+
17
+ definition = {
18
+ logical_id => {
19
+ Type: "AWS::Lambda::Permission",
20
+ Properties: {
21
+ FunctionName: "!Ref {namespace}LambdaFunction",
22
+ Action: "lambda:InvokeFunction",
23
+ Principal: principal
24
+ }
25
+ }
26
+ }
27
+
28
+ # From AWS docs: https://amzn.to/2N0QXQL
29
+ # source_arn is "not supported by all event sources"
30
+ definition[logical_id][:Properties][:SourceArn] = source_arn if source_arn
31
+
32
+ definition
33
+ end
34
+
35
+ def permission_logical_id
36
+ logical_id = "{namespace}Permission"
37
+ md = @associated_resource.logical_id.match(/(\d+)$/)
38
+ counter = md[1] if md
39
+ [logical_id, counter].compact.join('')
40
+ end
41
+
42
+ # Auto-detect principal from the associated resources.
43
+ def principal
44
+ @principal || replacer.principal_map(@associated_resource.type)
45
+ end
46
+
47
+ def source_arn
48
+ @source_arn || replacer.source_arn_map(@associated_resource.type)
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,31 @@
1
+ # CloudFormation Log Subscription docs: https://amzn.to/2SNiSpr
2
+ module Jets::Cfn::Resource::Logs
3
+ class SubscriptionFilter < Jets::Cfn::Base
4
+ def initialize(props={})
5
+ @props = props # associated_properties from dsl.rb
6
+ end
7
+
8
+ def definition
9
+ {
10
+ log_logical_id => {
11
+ Type: "AWS::Logs::SubscriptionFilter",
12
+ Properties: merged_properties,
13
+ }
14
+ }
15
+ end
16
+
17
+ # Do not name this method properties, that is a computed method of `Jets::Cfn::Resource`
18
+ def merged_properties
19
+ {
20
+ DestinationArn: "!GetAtt {namespace}LambdaFunction.Arn",
21
+ FilterPattern: "", # matches everything https://amzn.to/2N3b39I
22
+ # LogGroupName: string # will be set by log_event
23
+ # RoleArn: string # only required for kinensis, we dont use this for Lambda
24
+ }.deep_merge(@props)
25
+ end
26
+
27
+ def log_logical_id
28
+ "{namespace}SubscriptionFilter"
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,4 @@
1
+ module Jets::Cfn::Resource::Nested::Api
2
+ class Base < Jets::Cfn::Resource::Nested::Base
3
+ end
4
+ end
@@ -0,0 +1,53 @@
1
+ module Jets::Cfn::Resource::Nested::Api
2
+ class Deployment < Base
3
+ # interface method
4
+ def definition
5
+ {
6
+ deployment_id => {
7
+ Type: "AWS::CloudFormation::Stack",
8
+ Properties: {
9
+ TemplateURL: template_url,
10
+ Parameters: parameters,
11
+ },
12
+ DependsOn: depends_on,
13
+ }
14
+ }
15
+ end
16
+
17
+ def parameters
18
+ { RestApi: "!GetAtt ApiGateway.Outputs.RestApi" }
19
+ end
20
+
21
+ def depends_on
22
+ depends_on_controllers + depends_on_api_methods
23
+ end
24
+
25
+ def depends_on_api_methods
26
+ pages = Jets::Cfn::Builder::Api::Pages::Methods.pages
27
+ pages.map do |page|
28
+ "ApiMethods#{page.number}"
29
+ end
30
+ end
31
+
32
+ def depends_on_controllers
33
+ controller_logical_ids = []
34
+ expression = "#{Jets::Names.templates_folder}/*_controller*"
35
+ Dir.glob(expression).each do |path|
36
+ next unless File.file?(path)
37
+
38
+ # map the path to a camelized logical_id. Example:
39
+ # /tmp/jets/demo/templates/demo-dev-2-posts_controller.yml to
40
+ # PostsController
41
+ regexp = Regexp.new(".*#{Jets::Names.templates_folder}/app-")
42
+ controller_name = path.sub(regexp, '').sub('.yml', '')
43
+ controller_logical_id = controller_name.underscore.camelize
44
+ controller_logical_ids << controller_logical_id
45
+ end
46
+ controller_logical_ids
47
+ end
48
+
49
+ def deployment_id
50
+ Jets::Cfn::Resource::ApiGateway::Deployment.logical_id
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,15 @@
1
+ module Jets::Cfn::Resource::Nested::Api
2
+ class Gateway < Base
3
+ # interface method
4
+ def definition
5
+ {
6
+ ApiGateway: {
7
+ Type: "AWS::CloudFormation::Stack",
8
+ Properties: {
9
+ TemplateURL: template_url,
10
+ }
11
+ }
12
+ }
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,33 @@
1
+ module Jets::Cfn::Resource::Nested::Api
2
+ class Mapping < Base
3
+ # interface method
4
+ def definition
5
+ {
6
+ ApiMapping: {
7
+ Type: "AWS::CloudFormation::Stack",
8
+ Properties: {
9
+ TemplateURL: template_url,
10
+ Parameters: parameters,
11
+ },
12
+ DependsOn: depends_on,
13
+ }
14
+ }
15
+ end
16
+
17
+ def parameters
18
+ p = {
19
+ GemLayer: "!Ref GemLayer",
20
+ IamRole: "!GetAtt IamRole.Arn",
21
+ RestApi: "!GetAtt ApiGateway.Outputs.RestApi",
22
+ S3Bucket: "!Ref S3Bucket",
23
+ }
24
+ p[:DomainName] = "!GetAtt ApiGateway.Outputs.DomainName" if Jets.custom_domain?
25
+ p[:BasePath] = Jets.config.domain.base_path
26
+ p
27
+ end
28
+
29
+ def depends_on
30
+ [Jets::Cfn::Resource::ApiGateway::Deployment.logical_id]
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,30 @@
1
+ module Jets::Cfn::Resource::Nested::Api
2
+ # interface method
3
+ class Methods < Page
4
+ def definition
5
+ {
6
+ "ApiMethods#{@page_number}" => {
7
+ Type: "AWS::CloudFormation::Stack",
8
+ Properties: {
9
+ TemplateURL: template_url,
10
+ Parameters: parameters,
11
+ },
12
+ }
13
+ }
14
+ end
15
+
16
+ # Read current paged ApiMethods1 template and see what parameters it needs.
17
+ # Then add them to the params hash from Controller Lambda functions outputs
18
+ # Example:
19
+ #
20
+ # api-methods-1.yml:
21
+ #
22
+ # params["PostsControllerIndexLambdaFunction"] = "!GetAtt UpController.Outputs.PostsControllerIndexLambdaFunction"
23
+ #
24
+ def parameters
25
+ template_path = Jets::Names.api_methods_template_path(@page_number)
26
+ api_methods = Jets::Cfn::Params::Api::Methods.new(template_path: template_path)
27
+ api_methods.params
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,8 @@
1
+ module Jets::Cfn::Resource::Nested::Api
2
+ class Page < Base
3
+ def initialize(options={})
4
+ super
5
+ @page_number = options[:page_number]
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,22 @@
1
+ module Jets::Cfn::Resource::Nested::Api
2
+ class Resources < Page
3
+ # interface method
4
+ def definition
5
+ {
6
+ "ApiResources#{@page_number}" => {
7
+ Type: "AWS::CloudFormation::Stack",
8
+ Properties: {
9
+ TemplateURL: template_url,
10
+ Parameters: parameters,
11
+ }
12
+ }
13
+ }
14
+ end
15
+
16
+ def parameters
17
+ template_path = Jets::Names.api_resources_template_path(@page_number)
18
+ api_resources = Jets::Cfn::Params::Api::Resources.new(template_path: template_path)
19
+ api_resources.params
20
+ end
21
+ end
22
+ end
@@ -1,29 +1,23 @@
1
- # Implements:
2
- #
3
- # definition
4
- # template_filename
5
- #
6
- module Jets::Resource::ChildStack
1
+ module Jets::Cfn::Resource::Nested
7
2
  class AppClass < Base
8
- include CommonParameters
9
-
10
- def initialize(s3_bucket, options={})
3
+ def initialize(options={})
11
4
  super
12
5
  @path = options[:path]
13
6
  end
14
7
 
8
+ # interface method
15
9
  def definition
16
10
  logical_id = app_logical_id
17
11
  defintion = {
18
12
  logical_id => {
19
- type: "AWS::CloudFormation::Stack",
20
- properties: {
21
- template_url: template_url,
22
- parameters: parameters,
13
+ Type: "AWS::CloudFormation::Stack",
14
+ Properties: {
15
+ TemplateURL: template_url,
16
+ Parameters: parameters,
23
17
  }
24
18
  }
25
19
  }
26
- defintion[logical_id][:depends_on] = depends.stack_list if depends
20
+ defintion[logical_id][:DependsOn] = depends.stack_list if depends
27
21
  defintion
28
22
  end
29
23
 
@@ -54,48 +48,31 @@ module Jets::Resource::ChildStack
54
48
  end
55
49
 
56
50
  def parameters
57
- params = self.class.common_parameters
51
+ params = Jets::Cfn::Params::Common.parameters
58
52
  params.merge!(controller_params) if controller?
59
53
  params.merge!(depends.params) if depends
60
54
  params
61
55
  end
62
56
 
63
- def self.common_parameters
64
- parameters = {
65
- IamRole: "!GetAtt IamRole.Arn",
66
- S3Bucket: "!Ref S3Bucket",
67
- }
68
- parameters[:GemLayer] = "!Ref GemLayer" unless Jets.poly_only?
69
- parameters
70
- end
71
-
72
57
  def controller_params
73
- return {} if Jets::Router.routes.empty?
58
+ return {} if Jets::Router.no_routes?
74
59
 
75
60
  params = {
76
61
  RestApi: "!GetAtt ApiGateway.Outputs.RestApi",
77
62
  }
78
63
 
79
64
  template_path = @path
80
- template = Jets::Cfn::BuiltTemplate.get(template_path)
81
- template['Parameters'].each do |p,data|
65
+ template = Jets::Cfn::Template.load_file(template_path)
66
+ template[:Parameters].each do |p,data|
82
67
  case p
83
- when /Resource$/ # AWS::ApiGateway::Resource in api-resources templates. IE: demo-dev-api-resources-2.yml
84
- params[p] = "!GetAtt #{api_resource_page(p)}.Outputs.#{p}"
85
68
  when /Authorizer$/ # AWS::ApiGateway::Authorizer in authorizers templates. IE: demo-dev-authorizers.yml
86
69
  # Description contains metadata to get the Authorizer logical id
87
- params[p] = "!GetAtt #{authorizer_output(data["Description"])}"
88
- when 'RootResourceId'
89
- params[p] = "!GetAtt ApiGateway.Outputs.RootResourceId"
70
+ params[p] = "!GetAtt #{authorizer_output(data[:Description])}"
90
71
  end
91
72
  end
92
73
  params
93
74
  end
94
75
 
95
- def api_resource_page(parameter)
96
- ApiResource::Page.logical_id(parameter)
97
- end
98
-
99
76
  def authorizer_output(desc)
100
77
  authorizer_stack, authorizer_logical_id = desc.split('.')
101
78
  # IE: MainAuthorizer.Outputs.ProtectAuthorizer
@@ -118,14 +95,8 @@ module Jets::Resource::ChildStack
118
95
  @path.include?('_job.yml')
119
96
  end
120
97
 
121
- def scoped_routes
122
- @routes ||= Jets::Router.routes.select do |route|
123
- route.controller_name == current_app_class.to_s
124
- end
125
- end
126
-
127
98
  def current_app_class
128
- templates_prefix = "#{Jets::Naming.template_path_prefix}-app-"
99
+ templates_prefix = "#{Jets::Names.templates_folder}/app-"
129
100
  @path.sub(templates_prefix, '')
130
101
  .sub(/\.yml$/,'')
131
102
  .gsub('-','/')
@@ -137,13 +108,9 @@ module Jets::Resource::ChildStack
137
108
  # /tmp/jets/demo/templates/demo-dev-2-posts_controller.yml to
138
109
  # PostsController
139
110
  def app_logical_id
140
- regexp = Regexp.new(".*#{Jets.config.project_namespace}-app-")
111
+ regexp = Regexp.new(".*#{Jets::Names.templates_folder}/app-")
141
112
  controller_name = @path.sub(regexp, '').sub('.yml', '')
142
113
  controller_name.underscore.camelize
143
114
  end
144
-
145
- def template_filename
146
- @path
147
- end
148
115
  end
149
116
  end