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
@@ -1,41 +1,39 @@
1
- require "aws-sdk-core"
2
-
3
- module Jets::Commands
4
- class Deploy
5
- extend Memoist
6
- include StackInfo
7
- def initialize(options)
8
- @options = options
9
- end
10
-
11
- def run
12
- deployment_env = Jets.config.project_namespace.color(:green)
13
- puts "Deploying to Lambda #{deployment_env} environment..."
1
+ module Jets::Command
2
+ class DeployCommand < Base # :nodoc:
3
+ include EnvironmentArgument
4
+
5
+ desc "deploy", "Builds and deploys project to AWS Lambda"
6
+ long_desc Help.text(:deploy)
7
+ option :message, aliases: :m, desc: "Custom message to use for the deployment message"
8
+ def perform
9
+ extract_environment_option_from_argument
10
+ require_application_and_environment!
11
+
12
+ stack = Jets.project_namespace.color(:green)
13
+ puts "Deploying stack #{stack} ..."
14
14
  return if @options[:noop]
15
15
 
16
16
  check_dev_mode
17
17
  validate_routes!
18
18
 
19
- # deploy full nested stack when stack already exists
20
19
  # Delete existing rollback stack from previous bad minimal deploy
21
20
  delete_minimal_stack if minimal_rollback_complete?
22
21
  exit_unless_updateable! # Stack could be in a weird rollback state or in progress state
23
22
 
24
23
  if first_run?
25
24
  ship(stack_type: :minimal)
26
- Jets.application.reload_configs!
27
25
  end
28
26
 
29
- # Build code after the minimal stack because need s3 bucket for assets
30
- # on_aws? and s3_base_url logic
27
+ # Build code after the minimal stack because need s3 bucket for assets on_aws? and s3_base_url logic
31
28
  # TODO: possible deploy hook point: before_build
32
- build_code
29
+ Jets::Builders::CodeBuilder.new.build
33
30
 
34
31
  # TODO: possible deploy hook point: before_ship
35
32
  create_s3_event_buckets
36
- ship(stack_type: :full, s3_bucket: s3_bucket)
33
+ ship(stack_type: :full, s3_bucket: Jets.s3_bucket)
37
34
  end
38
35
 
36
+ private
39
37
  def create_s3_event_buckets
40
38
  buckets = Jets::Job::Base.s3_events.keys
41
39
  buckets.each do |bucket|
@@ -51,37 +49,32 @@ module Jets::Commands
51
49
  end
52
50
 
53
51
  def check_dev_mode
54
- if File.exist?("#{Jets.root}/dev.mode")
52
+ if File.exist?("#{Jets.root}/dev.mode") && !ENV['JETS_SKIP_DEV_MODE_CHECK']
55
53
  puts "The dev.mode file exists. Please removed it and run bundle update before you deploy.".color(:red)
56
54
  exit 1
57
55
  end
58
56
  end
59
57
 
60
- def build_code
61
- Jets::Commands::Build.new(@options).build_code
62
- end
63
-
64
58
  def validate_routes!
65
59
  valid = Jets::Router.validate_routes!
66
- unless valid
67
- puts "Deploy fail: The jets application contain invalid routes.".color(:red)
68
- exit 1
69
- end
60
+ return if valid
61
+
62
+ puts "Deploy fail: The jets application contain invalid routes.".color(:red)
63
+ exit 1
70
64
  end
71
65
 
72
66
  def ship(stack_options)
73
- options = @options.merge(stack_options) # includes stack_type and s3_bucket
74
- Jets::Commands::Build.new(options).build_templates
67
+ options = @options.merge(stack_options) # includes stack_type
68
+ Jets::Cfn::Builder.new(options).build
75
69
  Jets::Cfn::Ship.new(options).run
76
70
  end
77
71
 
78
72
  def status
79
- Jets::Cfn::Status.new(stack_name)
73
+ @status ||= Jets::Cfn::Status.new(stack_name)
80
74
  end
81
- memoize :status
82
75
 
83
76
  def stack_name
84
- Jets::Naming.parent_stack_name
77
+ Jets::Names.parent_stack_name
85
78
  end
86
79
 
87
80
  # Checks for a few things before deciding to delete the parent stack
@@ -101,37 +94,25 @@ module Jets::Commands
101
94
  resource_statuses == ['DELETE_COMPLETE']
102
95
  end
103
96
 
104
- def find_stack(stack_name)
105
- resp = cfn.describe_stacks(stack_name: stack_name)
106
- resp.stacks.first
107
- rescue Aws::CloudFormation::Errors::ValidationError => e
108
- # example: Stack with id demo-dev does not exist
109
- if e.message =~ /Stack with/ && e.message =~ /does not exist/
110
- nil
111
- else
112
- raise
113
- end
114
- end
115
-
116
97
  # All CloudFormation states listed here: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-describing-stacks.html
117
98
  def exit_unless_updateable!
118
99
  return if ENV['JETS_FORCE_UPDATEABLE'] # useful for debugging if stack stack updating
119
100
 
120
- stack_name = Jets::Naming.parent_stack_name
101
+ stack_name = Jets::Names.parent_stack_name
121
102
  exists = stack_exists?(stack_name)
122
103
  return unless exists # continue because stack could be updating
123
104
 
124
105
  stack = cfn.describe_stacks(stack_name: stack_name).stacks.first
125
106
  status = stack["stack_status"]
126
107
  if status =~ /^ROLLBACK_/ ||
127
- status =~ /_IN_PROGRESS$/
108
+ status =~ /_IN_PROGRESS$/
128
109
  region = `aws configure get region`.strip rescue "us-east-1"
129
110
  url = "https://console.aws.amazon.com/cloudformation/home?region=#{region}#/stacks"
130
- puts "The parent stack of the #{Jets.config.project_name.color(:green)} project is not in an updateable state."
111
+ puts "The parent stack of the #{Jets.project_name.color(:green)} project is not in an updateable state."
131
112
  puts "Stack name #{stack_name.color(:yellow)} status #{stack["stack_status"].color(:yellow)}"
132
113
  puts "Here's the CloudFormation url to check for more details #{url}"
133
114
  exit 1
134
115
  end
135
116
  end
136
- end
117
+ end
137
118
  end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "jets/dev_caching"
4
+
5
+ module Jets
6
+ module Command
7
+ class DevCommand < Base # :nodoc:
8
+ no_commands do
9
+ def help
10
+ say "jets dev:cache # Toggle development mode caching on/off."
11
+ end
12
+ end
13
+
14
+ def cache
15
+ Jets::DevCaching.enable_by_file
16
+ end
17
+ end
18
+ end
19
+ end
@@ -1,5 +1,5 @@
1
- module Jets::Commands
2
- class Dotenv < Jets::Commands::Base
1
+ module Jets::Command
2
+ class DotenvCommand < Base # :nodoc:
3
3
  desc "show", "Shows evaulated dotenv values"
4
4
  long_desc Help.text('dotenv:show')
5
5
  def show
@@ -0,0 +1,46 @@
1
+ ## Storing Encrypted Files in Source Control
2
+
3
+ The Jets `encrypted` commands provide access to encrypted files or configurations.
4
+ See the `Jets.application.encrypted` documentation for using them in your app.
5
+
6
+ This is a more generalized concept of `jets credentials`.
7
+
8
+ ## Encryption Keys
9
+
10
+ By default, Jets looks for the encryption key in `config/master.key` or
11
+ `ENV["JETS_MASTER_KEY"]`, but that lookup can be overridden with `--key`:
12
+
13
+ jets encrypted:edit config/encrypted_file.yml.enc --key config/encrypted_file.key
14
+
15
+ Don't commit the key! Add it to your source control's ignore file. If you use
16
+ Git, Jets handles this for you.
17
+
18
+ ## Editing Files
19
+
20
+ To edit or create an encrypted file use:
21
+
22
+ jets encrypted:edit config/encrypted_file.yml.enc
23
+
24
+ This opens a temporary file in `$EDITOR` with the decrypted contents for editing.
25
+
26
+ ## Viewing Files
27
+
28
+ To print the decrypted contents of an encrypted file use:
29
+
30
+ jets encrypted:show config/encrypted_file.yml.enc
31
+
32
+ ## Access in App
33
+
34
+ Let's say you have encrypted like so:
35
+
36
+ ❯ jets encrypted:show config/encrypted_file.yml.enc
37
+ cloud:
38
+ foo: bar
39
+
40
+ You can access them in the app like so:
41
+
42
+ $ jets console
43
+ > file = ActiveSupport::EncryptedFile.new(content_path: "./config/encrypted_file.yml.enc", key_path: "./config/master.key", env_key: Jets.env, raise_if_missing_key: true)
44
+ > YAML.load(file.read)
45
+ => {"cloud"=>{"foo"=>"bar"}}
46
+ >
@@ -0,0 +1,87 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "pathname"
4
+ require "active_support"
5
+ require "jets/command/helpers/editor"
6
+
7
+ module Jets
8
+ module Command
9
+ class EncryptedCommand < Jets::Command::Base # :nodoc:
10
+ include Helpers::Editor
11
+
12
+ class_option :key, aliases: "-k", type: :string,
13
+ default: "config/master.key", desc: "The Jets.root relative path to the encryption key"
14
+
15
+ no_commands do
16
+ def help
17
+ say "Usage:\n #{self.class.banner}"
18
+ say ""
19
+ say self.class.desc
20
+ end
21
+ end
22
+
23
+ def edit(file_path)
24
+ require_application!
25
+ encrypted = Jets.application.encrypted(file_path, key_path: options[:key])
26
+
27
+ ensure_editor_available(command: "bin/jets encrypted:edit") || (return)
28
+ ensure_encryption_key_has_been_added(options[:key]) if encrypted.key.nil?
29
+ ensure_encrypted_file_has_been_added(file_path, options[:key])
30
+
31
+ catch_editing_exceptions do
32
+ change_encrypted_file_in_system_editor(file_path, options[:key])
33
+ end
34
+
35
+ say "File encrypted and saved."
36
+ rescue ActiveSupport::MessageEncryptor::InvalidMessage
37
+ say "Couldn't decrypt #{file_path}. Perhaps you passed the wrong key?"
38
+ end
39
+
40
+ def show(file_path)
41
+ require_application!
42
+ encrypted = Jets.application.encrypted(file_path, key_path: options[:key])
43
+
44
+ say encrypted.read.presence || missing_encrypted_message(key: encrypted.key, key_path: options[:key], file_path: file_path)
45
+ end
46
+
47
+ private
48
+ def ensure_encryption_key_has_been_added(key_path)
49
+ encryption_key_file_generator.add_key_file(key_path)
50
+ encryption_key_file_generator.ignore_key_file(key_path)
51
+ end
52
+
53
+ def ensure_encrypted_file_has_been_added(file_path, key_path)
54
+ encrypted_file_generator.add_encrypted_file_silently(file_path, key_path)
55
+ end
56
+
57
+ def change_encrypted_file_in_system_editor(file_path, key_path)
58
+ Jets.application.encrypted(file_path, key_path: key_path).change do |tmp_path|
59
+ system("#{ENV["EDITOR"]} #{tmp_path}")
60
+ end
61
+ end
62
+
63
+
64
+ def encryption_key_file_generator
65
+ require "rails/generators"
66
+ require "rails/generators/rails/encryption_key_file/encryption_key_file_generator"
67
+
68
+ Rails::Generators::EncryptionKeyFileGenerator.new
69
+ end
70
+
71
+ def encrypted_file_generator
72
+ require "rails/generators"
73
+ require "rails/generators/rails/encrypted_file/encrypted_file_generator"
74
+
75
+ Rails::Generators::EncryptedFileGenerator.new
76
+ end
77
+
78
+ def missing_encrypted_message(key:, key_path:, file_path:)
79
+ if key.nil?
80
+ "Missing '#{key_path}' to decrypt data. See `bin/jets encrypted:help`"
81
+ else
82
+ "File '#{file_path}' does not exist. Use `bin/jets encrypted:edit #{file_path}` to change that."
83
+ end
84
+ end
85
+ end
86
+ end
87
+ end
@@ -0,0 +1,14 @@
1
+ module Jets::Command
2
+ class GemsCommand < Base
3
+ desc "check", "Check if precompiled Lambda gems are available"
4
+ long_desc Help.text("gems:check")
5
+ option :verbose, type: :boolean, desc: "Verbose mode"
6
+ def check
7
+ Jets.boot
8
+ check = Jets::Api::Gems::Check.new(@options)
9
+ check.run! # exits early if missing gems found
10
+ # If reach here, means all gems are ok.
11
+ puts "Congrats! All gems are available in as precompiled Lambda gems 👍"
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,95 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Jets::Command
4
+ class GenerateCommand < Base # :nodoc:
5
+ no_commands do
6
+ # jets generate -h
7
+ # Note: Other help flags like jets generate scaffold -h will be handled by
8
+ # invoking the generator and letting it handle the help flag.
9
+ def help
10
+ require_application_and_environment!
11
+ load_generators
12
+ all_commands_help self.class.command_name
13
+ end
14
+ end
15
+
16
+ desc "Generate", "Generate code"
17
+ long_desc Help.text(:generate)
18
+ def perform(*)
19
+ # require lazily so that Rails constant is only defined within generators
20
+ require "jets/generators"
21
+
22
+ generator = args.shift
23
+ return help unless generator
24
+
25
+ require_application_and_environment!
26
+ load_generators # engine.rb load_generators => Jets.application.load_generators
27
+
28
+ ARGV.replace(args) # set up ARGV for third-party libraries
29
+
30
+ Jets::Generators.invoke generator, args, behavior: behavior, destination_root: Jets::Command.root
31
+ end
32
+
33
+ private
34
+ def behavior
35
+ :invoke
36
+ end
37
+
38
+ def all_commands_help(command = "generate")
39
+ puts "Usage: jets #{command} GENERATOR [args] [options]"
40
+ puts
41
+ puts "General options:"
42
+ puts " -h, [--help] # Print generator's options and usage"
43
+ puts " -p, [--pretend] # Run but do not make any changes"
44
+ puts " -f, [--force] # Overwrite files that already exist"
45
+ puts " -s, [--skip] # Skip files that already exist"
46
+ puts " -q, [--quiet] # Suppress status output"
47
+ puts
48
+ puts "Please choose a generator below."
49
+ puts
50
+
51
+ Rails::Generators.print_generators
52
+ end
53
+ end
54
+ end
55
+
56
+ # Decorate the Group#help method to replace rails with jets.
57
+ #
58
+ # Note: Initially tried only decorating when a help flag like `-h` is detected
59
+ # but some commands will trigger help output without the flag. For example:
60
+ # jets generate job
61
+ # The command requires a name
62
+ # jets generate job NAME
63
+ #
64
+ # The underlying Rails::Generators.invoke does this
65
+ # if klass = find_by_namespace(names.pop, names.any? && names.join(":"))
66
+ # args << "--help" if args.empty? && klass.arguments.any?(&:required?)
67
+ # and is able to detect that the name is missing and triggers the help output.
68
+ #
69
+ # Jets does not have this logic yet. So we'll decorate the help method to
70
+ # at the Thor::Group#help level.
71
+ require "thor"
72
+ class Thor::Group
73
+ module ReplaceHelpOutputWithJets
74
+ def help(shell)
75
+ out = capture_stdout_for_help do
76
+ super # invoke to get the help output
77
+ end
78
+ puts out.gsub('rails','jets').gsub('Rails','Jets')
79
+ end
80
+
81
+ def capture_stdout_for_help
82
+ stdout_old = $stdout
83
+ io = StringIO.new
84
+ $stdout = io
85
+ yield
86
+ $stdout = stdout_old
87
+ io.string
88
+ end
89
+ end
90
+
91
+ class << self
92
+ # The help method is defined in the Thor::Group class. We are decorating it
93
+ prepend ReplaceHelpOutputWithJets
94
+ end
95
+ end
@@ -0,0 +1,20 @@
1
+ Common Jets commands:
2
+ generate Generate new code (short-cut alias: "g")
3
+ console Start the Jets console (short-cut alias: "c")
4
+ server Start the Jets server (short-cut alias: "s")
5
+ deploy Deploy application to Lambda
6
+ logs View Lambda function logs
7
+ <% unless engine? -%>
8
+ new Create a new Jets application. "jets new demo" creates a
9
+ new application called Demo in "./demo"
10
+ <% end -%>
11
+
12
+ Jets Pro commands:
13
+ projects List projects
14
+ stacks List stacks
15
+ releases List releases
16
+ rollback Rollback to a previous release
17
+
18
+ All commands can be run with -h (or --help) for more information.
19
+ In addition to those commands, there are:
20
+
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Jets
4
+ module Command
5
+ class HelpCommand < Base # :nodoc:
6
+ hide_command!
7
+
8
+ def help(*)
9
+ say self.class.desc
10
+
11
+ Jets::Command.print_commands
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Jets
4
+ module Command
5
+ class InitializersCommand < Base # :nodoc:
6
+ include EnvironmentArgument
7
+
8
+ desc "initializers", "Print out all defined initializers in the order they are invoked by Jets."
9
+ def perform
10
+ extract_environment_option_from_argument
11
+ require_application_and_environment!
12
+
13
+ Jets.application.initializers.tsort_each do |initializer|
14
+ say "#{initializer.context_class}.#{initializer.name}"
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,45 @@
1
+ require "aws-logs"
2
+
3
+ module Jets::Command
4
+ class LogsCommand < Base # :nodoc:
5
+ include Jets::AwsServices
6
+
7
+ option :since, desc: "From what time to begin displaying logs. By default, logs will be displayed starting from 10m in the past. The value provided can be an ISO 8601 timestamp or a relative time. Examples: 10m 2d 2w"
8
+ option :follow, aliases: :f, default: false, type: :boolean, desc: " Whether to continuously poll for new logs. To exit from this mode, use Control-C."
9
+ option :format, default: "simple", desc: "The format to display the logs. IE: detailed or short. With detailed, the log stream name is also shown."
10
+ option :filter_pattern, desc: "The filter pattern to use. If not provided, all the events are matched"
11
+ option :log_group_name, aliases: :n, desc: "The log group name. By default, it is /aws/lambda/#{Jets.project_namespace}-controller"
12
+ option :refresh_rate, default: 1, type: :numeric, desc: "How often to refresh the logs in seconds."
13
+ option :wait_exists, default: true, type: :boolean, desc: "Whether to wait until the log group exists. By default, it will wait."
14
+ long_desc Help.text(:logs)
15
+ def perform
16
+ show_logs
17
+ end
18
+
19
+ private
20
+ def show_logs
21
+ options = @options.dup # so it can be modified
22
+ options[:log_group_name] = log_group_name
23
+ options[:since] ||= "10m" # by default, start search 10m in the past
24
+ options[:wait_exists_retries] = 12 # 12 * 5 = 60 seconds
25
+
26
+ verb = options[:follow] ? "Tailing" : "Showing"
27
+ $stderr.puts "#{verb} logs for #{options[:log_group_name]}"
28
+
29
+ tail = AwsLogs::Tail.new(options)
30
+ tail.run
31
+ end
32
+
33
+ def log_group_name
34
+ default = "/aws/lambda/#{Jets.project_namespace}-controller"
35
+ return default unless @options[:log_group_name]
36
+
37
+ if @options[:log_group_name].include?("aws/lambda") || @options[:log_group_name].include?(Jets.project_namespace)
38
+ @options[:log_group_name]
39
+ else
40
+ # IE: hard_job-dig => /aws/lambda/demo-dev-hard_job-dig
41
+ "/aws/lambda/#{Jets.project_namespace}-#{@options[:log_group_name]}"
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Jets
4
+ module Command
5
+ class NewCommand < Base # :nodoc:
6
+ no_commands do
7
+ def help
8
+ Jets::Command.invoke :application, [ "--help" ]
9
+ end
10
+ end
11
+
12
+ def perform(*)
13
+ say "Can't initialize a new Jets application within the directory of another, please change to a non-Jets directory first.\n"
14
+ say "Type 'jets' for help."
15
+ exit 1
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Jets
4
+ module Command
5
+ class NotesCommand < Base # :nodoc:
6
+ class_option :annotations, aliases: "-a", desc: "Filter by specific annotations, e.g. Foobar TODO", type: :array
7
+
8
+ def perform(*)
9
+ require_application_and_environment!
10
+
11
+ # lazy require so Rails const is only defined when using notes
12
+ require "rails/source_annotation_extractor"
13
+
14
+ display_annotations
15
+ end
16
+
17
+ private
18
+ def display_annotations
19
+ annotations = options[:annotations] || Rails::SourceAnnotationExtractor::Annotation.tags
20
+ tag = (annotations.length > 1)
21
+
22
+ Rails::SourceAnnotationExtractor.enumerate annotations.join("|"), tag: tag, dirs: directories
23
+ end
24
+
25
+ def directories
26
+ Rails::SourceAnnotationExtractor::Annotation.directories
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Jets
4
+ module Command
5
+ class PluginCommand < Base # :nodoc:
6
+ hide_command!
7
+
8
+ def help
9
+ run_plugin_generator %w( --help )
10
+ end
11
+
12
+ def self.banner(*) # :nodoc:
13
+ "#{executable} new [options]"
14
+ end
15
+
16
+ class_option :rc, type: :string, default: File.join("~", ".jetsrc"),
17
+ desc: "Initialize the plugin command with previous defaults. Uses .jetsrc in your home directory by default."
18
+
19
+ class_option :no_rc, desc: "Skip evaluating .jetsrc."
20
+
21
+ def perform(type = nil, *plugin_args)
22
+ plugin_args << "--help" unless type == "new"
23
+
24
+ unless options.key?("no_rc") # Thor's not so indifferent access hash.
25
+ jetsrc = File.expand_path(options[:rc])
26
+
27
+ if File.exist?(jetsrc)
28
+ extra_args = File.read(jetsrc).split(/\n+/).flat_map(&:split)
29
+ say "Using #{extra_args.join(" ")} from #{jetsrc}"
30
+ plugin_args.insert(1, *extra_args)
31
+ end
32
+ end
33
+
34
+ run_plugin_generator plugin_args
35
+ end
36
+
37
+ private
38
+ def run_plugin_generator(plugin_args)
39
+ require "jets/generators"
40
+ require "jets/generators/jets/plugin/plugin_generator"
41
+ Jets::Generators::PluginGenerator.start plugin_args
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,30 @@
1
+ module Jets::Command
2
+ class ProjectsCommand < Base # :nodoc:
3
+ desc "projects", "List deployed projects"
4
+ long_desc Help.text(:projects)
5
+ paging_options.call
6
+ def perform
7
+ no_token_exit!
8
+ resp = Jets::Api::Project.list(paging_params)
9
+ check_for_error_message!(resp)
10
+
11
+ data = resp["data"]
12
+ if data.empty?
13
+ $stderr.puts "No projects deployed yet."
14
+ else
15
+ show_items(data)
16
+ end
17
+ rescue Jets::Api::RequestError => e
18
+ puts "WARNING: Unable to list projects. #{e.class}: #{e.message}"
19
+ end
20
+
21
+ private
22
+ def show_items(items)
23
+ presenter = CliFormat::Presenter.new
24
+ presenter.header = ["Name"]
25
+ items.each do |item|
26
+ puts item["name"]
27
+ end
28
+ end
29
+ end
30
+ end