jets 3.1.0 → 5.0.10

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 (650) hide show
  1. checksums.yaml +4 -4
  2. data/.github/FUNDING.yml +1 -0
  3. data/.gitignore +5 -1
  4. data/CHANGELOG.md +190 -1
  5. data/CONTRIBUTING.md +1 -1
  6. data/Gemfile +1 -5
  7. data/LICENSE.txt +1 -1
  8. data/README.md +28 -50
  9. data/Rakefile +3 -3
  10. data/backers.md +0 -5
  11. data/engines/internal/app/controllers/jets/application_controller.rb +28 -0
  12. data/engines/internal/app/controllers/jets/bare_controller.rb +6 -0
  13. data/engines/internal/app/controllers/jets/health_controller.rb +55 -0
  14. data/engines/internal/app/controllers/jets/info_controller.rb +45 -0
  15. data/{lib/jets → engines}/internal/app/controllers/jets/mailers_controller.rb +12 -14
  16. data/{lib/jets → engines}/internal/app/controllers/jets/mount_controller.rb +6 -10
  17. data/{lib/jets → engines}/internal/app/controllers/jets/public_controller.rb +6 -2
  18. data/engines/internal/app/controllers/jets/welcome_controller.rb +9 -0
  19. data/engines/internal/app/functions/jets/base_path.rb +109 -0
  20. data/engines/internal/app/functions/jets/base_path_mapping.rb +191 -0
  21. data/engines/internal/app/jobs/jets/preheat_job.rb +68 -0
  22. data/engines/internal/app/views/jets/info/properties.html.erb +1 -0
  23. data/engines/internal/app/views/jets/info/routes.html.erb +10 -0
  24. data/{lib/jets → engines}/internal/app/views/jets/mailers/email.html.erb +37 -17
  25. data/engines/internal/app/views/jets/mailers/index.html.erb +8 -0
  26. data/engines/internal/app/views/jets/mailers/mailer.html.erb +6 -0
  27. data/{lib/jets/commands/templates/skeleton/public/index.html.tt → engines/internal/app/views/jets/welcome/index.html.erb} +8 -4
  28. data/engines/internal/app/views/layouts/application.html.erb +51 -0
  29. data/engines/internal/lib/internal/actiondispatch.rb +39 -0
  30. data/engines/internal/lib/internal/actionmailer.rb +51 -0
  31. data/engines/internal/lib/internal/actionview.rb +152 -0
  32. data/engines/internal/lib/internal/activerecord.rb +37 -0
  33. data/engines/internal/lib/internal/activesupport.rb +47 -0
  34. data/engines/internal/lib/internal/engine.rb +13 -0
  35. data/engines/internal/lib/internal/i18n_engine.rb +19 -0
  36. data/engines/internal/lib/internal/jets_controller.rb +46 -0
  37. data/engines/internal/lib/internal/overrides/debug_exceptions.rb +40 -0
  38. data/engines/internal/lib/internal/templates/rescues/_trace.html.erb +62 -0
  39. data/engines/internal/lib/internal/templates/rescues/_trace.text.erb +9 -0
  40. data/engines/internal/lib/internal/turbines/asset_tag_helper.rb +70 -0
  41. data/engines/internal/lib/internal/turbines/helpers.rb +18 -0
  42. data/engines/internal/lib/internal/turbines/routes_helpers.rb +42 -0
  43. data/exe/jets +1 -10
  44. data/jets.gemspec +17 -13
  45. data/lib/jets/app_loader.rb +77 -0
  46. data/lib/jets/application/bootstrap.rb +100 -0
  47. data/lib/jets/application/configuration/defaults.rb +256 -0
  48. data/lib/jets/application/configuration.rb +494 -0
  49. data/lib/jets/application/default_middleware_stack.rb +140 -0
  50. data/lib/jets/application/dummy_erb_compiler.rb +18 -0
  51. data/lib/jets/application/finisher.rb +266 -0
  52. data/lib/jets/application/routes_reloader.rb +80 -0
  53. data/lib/jets/application.rb +515 -199
  54. data/lib/jets/authorizer/base.rb +1 -0
  55. data/lib/jets/authorizer/dsl.rb +15 -11
  56. data/lib/jets/authorizer/helpers/iam_helper.rb +13 -11
  57. data/lib/jets/autoloaders/gem.rb +70 -0
  58. data/lib/jets/autoloaders/inflector.rb +21 -0
  59. data/lib/jets/autoloaders.rb +38 -101
  60. data/lib/jets/aws_info.rb +2 -2
  61. data/lib/jets/aws_services/stack_status.rb +2 -2
  62. data/lib/jets/aws_services.rb +8 -0
  63. data/lib/jets/backtrace_cleaner.rb +27 -0
  64. data/lib/jets/booter.rb +30 -118
  65. data/lib/jets/builders/code_builder.rb +67 -125
  66. data/lib/jets/builders/code_size.rb +1 -0
  67. data/lib/jets/builders/gem_replacer.rb +6 -12
  68. data/lib/jets/builders/handler_generator.rb +43 -15
  69. data/lib/jets/builders/lambda_layer.rb +2 -7
  70. data/lib/jets/builders/purger.rb +1 -1
  71. data/lib/jets/builders/rack_packager.rb +1 -1
  72. data/lib/jets/builders/ruby_packager.rb +54 -10
  73. data/lib/jets/builders/shim_vars/app.rb +10 -6
  74. data/lib/jets/builders/templates/handlers/one_lambda_for_all_controllers.rb +33 -0
  75. data/lib/jets/builders/templates/handlers/one_lambda_per_controller.rb +20 -0
  76. data/lib/jets/builders/templates/{handler.rb → handlers/one_lambda_per_method.rb} +6 -0
  77. data/lib/jets/bundle.rb +2 -9
  78. data/lib/jets/cfn/base.rb +82 -0
  79. data/lib/jets/cfn/builder/api/base.rb +12 -0
  80. data/lib/jets/cfn/{builders/api_deployment_builder.rb → builder/api/deployment.rb} +11 -21
  81. data/lib/jets/cfn/builder/api/gateway.rb +104 -0
  82. data/lib/jets/cfn/builder/api/mapping.rb +54 -0
  83. data/lib/jets/cfn/builder/api/methods.rb +72 -0
  84. data/lib/jets/cfn/builder/api/paged.rb +30 -0
  85. data/lib/jets/cfn/builder/api/pages/base.rb +105 -0
  86. data/lib/jets/cfn/builder/api/pages/methods.rb +17 -0
  87. data/lib/jets/cfn/builder/api/pages/page.rb +19 -0
  88. data/lib/jets/cfn/builder/api/pages/resources.rb +21 -0
  89. data/lib/jets/cfn/builder/api/resources.rb +40 -0
  90. data/lib/jets/cfn/{builders/authorizer_builder.rb → builder/authorizer.rb} +16 -19
  91. data/lib/jets/cfn/builder/controller.rb +28 -0
  92. data/lib/jets/cfn/builder/function.rb +9 -0
  93. data/lib/jets/cfn/builder/interface.rb +146 -0
  94. data/lib/jets/cfn/builder/job.rb +10 -0
  95. data/lib/jets/cfn/builder/nested.rb +130 -0
  96. data/lib/jets/cfn/builder/one_controller.rb +53 -0
  97. data/lib/jets/cfn/{builders/parent_builder → builder/parent}/stagger.rb +1 -1
  98. data/lib/jets/cfn/builder/parent.rb +149 -0
  99. data/lib/jets/cfn/builder/post_process.rb +25 -0
  100. data/lib/jets/cfn/{builders/rule_builder.rb → builder/rule.rb} +4 -8
  101. data/lib/jets/cfn/{builders/shared_builder.rb → builder/shared.rb} +5 -4
  102. data/lib/jets/cfn/{builders → builder}/util/source.rb +1 -1
  103. data/lib/jets/{commands/build.rb → cfn/builder.rb} +58 -80
  104. data/lib/jets/cfn/deployment.rb +85 -0
  105. data/lib/jets/cfn/download.rb +39 -0
  106. data/lib/jets/cfn/params/api/base.rb +39 -0
  107. data/lib/jets/cfn/params/api/cors.rb +10 -0
  108. data/lib/jets/cfn/params/api/methods.rb +69 -0
  109. data/lib/jets/cfn/params/api/resources.rb +28 -0
  110. data/lib/jets/{resource/child_stack/common_parameters.rb → cfn/params/common.rb} +4 -4
  111. data/lib/jets/{resource → cfn/resource}/api_gateway/authorizer.rb +21 -21
  112. data/lib/jets/cfn/resource/api_gateway/base_path/function.rb +57 -0
  113. data/lib/jets/{resource → cfn/resource}/api_gateway/base_path/mapping.rb +13 -12
  114. data/lib/jets/cfn/resource/api_gateway/base_path/role.rb +70 -0
  115. data/lib/jets/{resource → cfn/resource}/api_gateway/deployment.rb +13 -20
  116. data/lib/jets/{resource → cfn/resource}/api_gateway/domain_name.rb +11 -11
  117. data/lib/jets/{resource → cfn/resource}/api_gateway/method/authorization.rb +1 -1
  118. data/lib/jets/cfn/resource/api_gateway/method.rb +92 -0
  119. data/lib/jets/{resource → cfn/resource}/api_gateway/resource.rb +14 -10
  120. data/lib/jets/cfn/resource/api_gateway/resource_id.rb +25 -0
  121. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/change_detection.rb +1 -1
  122. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/logical_id/message.rb +14 -4
  123. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/logical_id.rb +4 -4
  124. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/base.rb +15 -41
  125. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/media_types.rb +3 -3
  126. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/page.rb +6 -6
  127. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/to.rb +8 -3
  128. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/variable.rb +2 -2
  129. data/lib/jets/cfn/resource/api_gateway/rest_api/routes/change.rb +27 -0
  130. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/collision/variable_exception.rb +1 -1
  131. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/collision.rb +1 -1
  132. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes.rb +1 -1
  133. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api.rb +22 -12
  134. data/lib/jets/{resource → cfn/resource}/associated.rb +1 -1
  135. data/lib/jets/{resource → cfn/resource}/config/config_rule.rb +18 -18
  136. data/lib/jets/{resource → cfn/resource}/config/managed_rule.rb +5 -5
  137. data/lib/jets/{resource → cfn/resource}/events/rule.rb +10 -10
  138. data/lib/jets/{resource → cfn/resource}/iam/application_role.rb +4 -4
  139. data/lib/jets/cfn/resource/iam/base_role_definition.rb +56 -0
  140. data/lib/jets/{resource → cfn/resource}/iam/class_role.rb +5 -5
  141. data/lib/jets/{resource → cfn/resource}/iam/function_role.rb +6 -6
  142. data/lib/jets/{resource → cfn/resource}/iam/managed_policy.rb +1 -1
  143. data/lib/jets/cfn/resource/iam/policy.rb +31 -0
  144. data/lib/jets/{resource → cfn/resource}/iam/policy_document.rb +10 -9
  145. data/lib/jets/{resource → cfn/resource}/iot/topic_rule.rb +10 -10
  146. data/lib/jets/{resource → cfn/resource}/lambda/event_source_mapping.rb +9 -9
  147. data/lib/jets/cfn/resource/lambda/function/controller.rb +21 -0
  148. data/lib/jets/{resource → cfn/resource}/lambda/function/environment.rb +9 -7
  149. data/lib/jets/cfn/resource/lambda/function.rb +266 -0
  150. data/lib/jets/{resource → cfn/resource}/lambda/gem_layer.rb +2 -2
  151. data/lib/jets/{resource → cfn/resource}/lambda/layer_version.rb +10 -10
  152. data/lib/jets/cfn/resource/lambda/permission.rb +51 -0
  153. data/lib/jets/cfn/resource/logs/subscription_filter.rb +31 -0
  154. data/lib/jets/cfn/resource/nested/api/base.rb +4 -0
  155. data/lib/jets/cfn/resource/nested/api/deployment.rb +53 -0
  156. data/lib/jets/cfn/resource/nested/api/gateway.rb +15 -0
  157. data/lib/jets/cfn/resource/nested/api/mapping.rb +33 -0
  158. data/lib/jets/cfn/resource/nested/api/methods.rb +30 -0
  159. data/lib/jets/cfn/resource/nested/api/page.rb +8 -0
  160. data/lib/jets/cfn/resource/nested/api/resources.rb +22 -0
  161. data/lib/jets/{resource/child_stack → cfn/resource/nested}/app_class.rb +15 -48
  162. data/lib/jets/{resource/child_stack → cfn/resource/nested}/authorizer.rb +8 -14
  163. data/lib/jets/cfn/resource/nested/base.rb +38 -0
  164. data/lib/jets/cfn/resource/nested/one_controller.rb +48 -0
  165. data/lib/jets/{resource/child_stack → cfn/resource/nested}/shared.rb +10 -16
  166. data/lib/jets/cfn/resource/one/function.rb +66 -0
  167. data/lib/jets/cfn/resource/one/permission.rb +17 -0
  168. data/lib/jets/{resource → cfn/resource}/replacer.rb +26 -27
  169. data/lib/jets/{resource → cfn/resource}/route53/record_set.rb +18 -18
  170. data/lib/jets/{resource → cfn/resource}/s3/bucket.rb +4 -4
  171. data/lib/jets/cfn/resource/s3/jets_bucket.rb +68 -0
  172. data/lib/jets/{resource → cfn/resource}/sns/subscription.rb +8 -8
  173. data/lib/jets/{resource → cfn/resource}/sns/topic.rb +10 -10
  174. data/lib/jets/{resource → cfn/resource}/sns/topic_policy.rb +13 -13
  175. data/lib/jets/{resource → cfn/resource}/sqs/queue.rb +5 -5
  176. data/lib/jets/{resource → cfn/resource}/standardizer.rb +8 -9
  177. data/lib/jets/cfn/resource.rb +8 -0
  178. data/lib/jets/cfn/ship.rb +33 -29
  179. data/lib/jets/cfn/status.rb +46 -3
  180. data/lib/jets/cfn/template.rb +89 -0
  181. data/lib/jets/cfn/upload.rb +29 -23
  182. data/lib/jets/cli.rb +28 -203
  183. data/lib/jets/command/actions.rb +49 -0
  184. data/lib/jets/command/api_helpers.rb +42 -0
  185. data/lib/jets/command/aws_helpers.rb +26 -0
  186. data/lib/jets/command/base.rb +209 -0
  187. data/lib/jets/command/behavior.rb +83 -0
  188. data/lib/jets/command/environment_argument.rb +42 -0
  189. data/lib/jets/command/help/call.md +48 -0
  190. data/lib/jets/{commands → command}/help/deploy.md +1 -1
  191. data/lib/jets/command/help/gems/check.md +1 -0
  192. data/lib/jets/command/help/logs.md +21 -0
  193. data/lib/jets/{commands → command}/help/new.md +3 -4
  194. data/lib/jets/command/help/projects.md +6 -0
  195. data/lib/jets/command/help/releases.md +19 -0
  196. data/lib/jets/command/help/rollback.md +5 -0
  197. data/lib/jets/command/help/routes.md +15 -0
  198. data/lib/jets/command/help/runner.md +40 -0
  199. data/lib/jets/command/help/stacks.md +6 -0
  200. data/lib/jets/command/help.rb +17 -0
  201. data/lib/jets/command/helpers/editor.rb +35 -0
  202. data/lib/jets/command/rake_decorate.rb +38 -0
  203. data/lib/jets/command.rb +142 -0
  204. data/lib/jets/commands/application/application_command.rb +46 -0
  205. data/lib/jets/commands/build/build_command.rb +33 -0
  206. data/lib/jets/commands/call/anonymous_guesser.rb +1 -1
  207. data/lib/jets/commands/call/autoload_guesser.rb +2 -2
  208. data/lib/jets/commands/call/base_guesser.rb +5 -5
  209. data/lib/jets/commands/call/call_command.rb +27 -0
  210. data/lib/jets/commands/call/caller.rb +184 -0
  211. data/lib/jets/commands/call/guesser.rb +1 -1
  212. data/lib/jets/commands/clean/base.rb +1 -1
  213. data/lib/jets/commands/clean/build.rb +1 -1
  214. data/lib/jets/commands/clean/clean_command.rb +15 -0
  215. data/lib/jets/commands/clean/log.rb +4 -4
  216. data/lib/jets/commands/configure/configure_command.rb +9 -0
  217. data/lib/jets/commands/console/console_command.rb +38 -0
  218. data/lib/jets/commands/credentials/USAGE +103 -0
  219. data/lib/jets/commands/credentials/credentials_command/diffing.rb +51 -0
  220. data/lib/jets/commands/credentials/credentials_command.rb +139 -0
  221. data/lib/jets/commands/db/system/change/change_command.rb +24 -0
  222. data/lib/jets/commands/dbconsole/dbconsole_command.rb +184 -0
  223. data/lib/jets/commands/degenerate/degenerate_command.rb +21 -0
  224. data/lib/jets/commands/delete/delete_command.rb +154 -0
  225. data/lib/jets/commands/{deploy.rb → deploy/deploy_command.rb} +34 -53
  226. data/lib/jets/commands/dev/dev_command.rb +19 -0
  227. data/lib/jets/commands/{dotenv.rb → dotenv/dotenv_command.rb} +2 -2
  228. data/lib/jets/commands/encrypted/USAGE +46 -0
  229. data/lib/jets/commands/encrypted/encrypted_command.rb +87 -0
  230. data/lib/jets/commands/gems/gems_command.rb +14 -0
  231. data/lib/jets/commands/generate/generate_command.rb +95 -0
  232. data/lib/jets/commands/help/USAGE +20 -0
  233. data/lib/jets/commands/help/help_command.rb +15 -0
  234. data/lib/jets/commands/initializers/initializers_command.rb +19 -0
  235. data/lib/jets/commands/logs/logs_command.rb +45 -0
  236. data/lib/jets/commands/new/new_command.rb +19 -0
  237. data/lib/jets/commands/notes/notes_command.rb +30 -0
  238. data/lib/jets/commands/plugin/plugin_command.rb +45 -0
  239. data/lib/jets/commands/projects/projects_command.rb +30 -0
  240. data/lib/jets/commands/rake/rake_command.rb +59 -0
  241. data/lib/jets/commands/releases/releases_command.rb +124 -0
  242. data/lib/jets/commands/rollback/rollback_command.rb +33 -0
  243. data/lib/jets/commands/routes/routes_command.rb +19 -0
  244. data/lib/jets/commands/runner/runner_command.rb +60 -0
  245. data/lib/jets/commands/server/server_command.rb +291 -0
  246. data/lib/jets/commands/stacks/stacks_command.rb +39 -0
  247. data/lib/jets/commands/status/status_command.rb +16 -0
  248. data/lib/jets/commands/url/url_command.rb +92 -0
  249. data/lib/jets/commands/version/version_command.rb +11 -0
  250. data/lib/jets/commands.rb +17 -0
  251. data/lib/jets/configuration.rb +166 -0
  252. data/lib/jets/controller/base.rb +105 -183
  253. data/lib/jets/controller/compat/abstract_controller/base.rb +126 -0
  254. data/lib/jets/controller/compat/action_controller/metal.rb +99 -0
  255. data/lib/jets/controller/compat/caching.rb +13 -0
  256. data/lib/jets/controller/compat/future.rb +13 -0
  257. data/lib/jets/controller/compat/route_set.rb +47 -0
  258. data/lib/jets/controller/decorate/apigw_stage.rb +39 -0
  259. data/lib/jets/controller/{authorization.rb → decorate/authorization.rb} +1 -1
  260. data/lib/jets/controller/decorate/logging.rb +90 -0
  261. data/lib/jets/controller/decorate/redirecting.rb +16 -0
  262. data/lib/jets/controller/decorate/url_for.rb +10 -0
  263. data/lib/jets/controller/{rack/adapter.rb → handler/apigw.rb} +36 -37
  264. data/lib/jets/controller/handler.rb +41 -0
  265. data/lib/jets/controller/middleware/main.rb +16 -8
  266. data/lib/jets/controller/middleware/{local/api_gateway.rb → mimic/apigw.rb} +41 -4
  267. data/lib/jets/controller/middleware/mimic/lambda_context.rb +44 -0
  268. data/lib/jets/controller/middleware/{local.rb → mimic.rb} +36 -51
  269. data/lib/jets/controller/rack_adapter/action.rb +35 -0
  270. data/lib/jets/controller/{rack → rack_adapter}/env.rb +39 -18
  271. data/lib/jets/controller/request/compat/params.rb +144 -0
  272. data/lib/jets/controller/request/compat/request.rb +125 -0
  273. data/lib/jets/controller/request.rb +35 -18
  274. data/lib/jets/controller/response/compat/response.rb +67 -0
  275. data/lib/jets/controller/response.rb +91 -8
  276. data/lib/jets/core.rb +159 -52
  277. data/lib/jets/core_ext/file.rb +9 -0
  278. data/lib/jets/core_ext/kernel.rb +2 -2
  279. data/lib/jets/core_ext/symbol.rb +5 -0
  280. data/lib/jets/core_ext.rb +4 -0
  281. data/lib/jets/dev_caching.rb +44 -0
  282. data/lib/jets/dotenv/ssm.rb +6 -3
  283. data/lib/jets/dotenv.rb +4 -3
  284. data/lib/jets/engine/configuration.rb +96 -0
  285. data/lib/jets/engine/turbines.rb +23 -0
  286. data/lib/jets/engine.rb +380 -0
  287. data/lib/jets/erb.rb +1 -1
  288. data/lib/jets/exception_reporting.rb +43 -0
  289. data/lib/jets/generators/job/job_generator.rb +41 -0
  290. data/lib/jets/generators/job/templates/event_types/dynamodb.rb.tt +8 -0
  291. data/lib/jets/generators/job/templates/event_types/iot.rb.tt +8 -0
  292. data/lib/jets/generators/job/templates/event_types/kinesis.rb.tt +9 -0
  293. data/lib/jets/generators/job/templates/event_types/log.rb.tt +9 -0
  294. data/lib/jets/generators/job/templates/event_types/rule.rb.tt +23 -0
  295. data/lib/jets/generators/job/templates/event_types/s3.rb.tt +11 -0
  296. data/lib/jets/generators/job/templates/event_types/scheduled.rb.tt +8 -0
  297. data/lib/jets/generators/job/templates/event_types/sns.rb.tt +11 -0
  298. data/lib/jets/generators/job/templates/event_types/sqs.rb.tt +11 -0
  299. data/lib/jets/generators/overrides/app/USAGE +38 -0
  300. data/lib/jets/generators/overrides/app/app_generator.rb +148 -0
  301. data/lib/jets/generators/overrides/app/helpers.rb +139 -0
  302. data/lib/jets/generators/overrides/app/templates/.env +10 -0
  303. data/lib/jets/{commands/templates/skeleton/.gitignore → generators/overrides/app/templates/.gitignore.tt} +2 -1
  304. data/lib/jets/generators/overrides/app/templates/.jetsignore +6 -0
  305. data/lib/jets/generators/overrides/app/templates/Gemfile.tt +28 -0
  306. data/lib/jets/generators/overrides/app/templates/Rakefile +2 -0
  307. data/lib/jets/generators/overrides/app/templates/app/assets/config/manifest.js +3 -0
  308. data/lib/jets/generators/overrides/app/templates/app/assets/stylesheets/application.css +15 -0
  309. data/lib/jets/generators/overrides/app/templates/app/javascript/application.js +5 -0
  310. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/app/models/application_record.rb +1 -1
  311. data/lib/jets/generators/overrides/app/templates/app/views/layouts/application.html.erb.tt +30 -0
  312. data/lib/jets/generators/overrides/app/templates/bin/jets +3 -0
  313. data/lib/jets/generators/overrides/app/templates/config/application.rb.tt +15 -0
  314. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/config/database.yml.tt +1 -1
  315. data/lib/jets/generators/overrides/app/templates/config/environments/development.rb.tt +29 -0
  316. data/lib/jets/generators/overrides/app/templates/config/environments/production.rb.tt +21 -0
  317. data/lib/jets/generators/overrides/app/templates/config/environments/test.rb.tt +23 -0
  318. data/lib/jets/generators/overrides/app/templates/config/initializers/content_security_policy.rb +31 -0
  319. data/lib/jets/generators/overrides/app/templates/config/initializers/filter_parameter_logging.rb +8 -0
  320. data/lib/jets/generators/overrides/app/templates/config/initializers/permissions_policy.rb +11 -0
  321. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/config/routes.rb +5 -1
  322. data/lib/jets/generators/overrides/app/templates/db/.gitkeep +0 -0
  323. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/public/404.html +6 -6
  324. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/public/422.html +6 -6
  325. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/public/500.html +6 -6
  326. data/lib/jets/generators/overrides/templates/erb/scaffold/index.html.erb +22 -0
  327. data/lib/jets/generators/overrides/templates/erb/scaffold/partial.html.erb +8 -0
  328. data/lib/jets/{generator/templates/rails/scaffold_controller/api_controller.rb → generators/overrides/templates/rails/scaffold_controller/api_controller.rb.tt} +5 -9
  329. data/lib/jets/generators/overrides/templates/rails/scaffold_controller/controller.rb.tt +67 -0
  330. data/lib/jets/generators.rb +112 -0
  331. data/lib/jets/inflections.rb +1 -1
  332. data/lib/jets/info.rb +116 -0
  333. data/lib/jets/initializable.rb +95 -0
  334. data/lib/jets/job/base.rb +11 -8
  335. data/lib/jets/job/dsl/dynamodb_event.rb +25 -14
  336. data/lib/jets/job/dsl/event_source_mapping.rb +1 -1
  337. data/lib/jets/job/dsl/iot_event.rb +6 -6
  338. data/lib/jets/job/dsl/kinesis_event.rb +10 -9
  339. data/lib/jets/job/dsl/log_event.rb +2 -2
  340. data/lib/jets/job/dsl/rule_event.rb +7 -4
  341. data/lib/jets/job/dsl/s3_event.rb +5 -5
  342. data/lib/jets/job/dsl/sns_event.rb +6 -6
  343. data/lib/jets/job/dsl/sqs_event.rb +15 -14
  344. data/lib/jets/job/helpers/{kinesis_event_helper.rb → kinesis_event.rb} +5 -1
  345. data/lib/jets/job/helpers/{log_event_helper.rb → log_event.rb} +5 -1
  346. data/lib/jets/job/helpers/s3_event.rb +50 -0
  347. data/lib/jets/job/helpers/sns_event.rb +26 -0
  348. data/lib/jets/job/helpers/sqs_event.rb +26 -0
  349. data/lib/jets/klass.rb +5 -6
  350. data/lib/jets/lambda/definition.rb +118 -0
  351. data/lib/jets/lambda/dsl/warnings.rb +57 -0
  352. data/lib/jets/lambda/dsl.rb +70 -53
  353. data/lib/jets/lambda/function.rb +3 -3
  354. data/lib/jets/lambda/function_constructor.rb +6 -6
  355. data/lib/jets/lambda/functions.rb +36 -1
  356. data/lib/jets/mega/hash_converter.rb +2 -2
  357. data/lib/jets/mega/request/source.rb +1 -2
  358. data/lib/jets/mega/request.rb +4 -4
  359. data/lib/jets/names.rb +79 -0
  360. data/lib/jets/overrides/dummy/rails.rb +11 -0
  361. data/lib/jets/overrides/lambda/marshaller.rb +10 -0
  362. data/lib/jets/overrides/puma.rb +10 -0
  363. data/lib/jets/paths.rb +243 -0
  364. data/lib/jets/{poly_fun → poly}/base_executor.rb +13 -13
  365. data/lib/jets/{poly_fun → poly}/lambda_executor.rb +2 -2
  366. data/lib/jets/{poly_fun → poly}/node_error.rb +1 -1
  367. data/lib/jets/{poly_fun → poly}/node_executor.rb +4 -4
  368. data/lib/jets/{poly_fun → poly}/python_error.rb +1 -1
  369. data/lib/jets/{poly_fun → poly}/python_executor.rb +2 -2
  370. data/lib/jets/{poly_fun.rb → poly.rb} +12 -12
  371. data/lib/jets/preheat.rb +26 -33
  372. data/lib/jets/processors/deducer.rb +2 -2
  373. data/lib/jets/processors/main_processor.rb +6 -13
  374. data/lib/jets/rack/logger.rb +77 -0
  375. data/lib/jets/router/compat/route_set.rb +177 -0
  376. data/lib/jets/router/dsl/mount.rb +40 -6
  377. data/lib/jets/router/dsl.rb +125 -105
  378. data/lib/jets/router/engine_mount.rb +36 -0
  379. data/lib/jets/router/help.rb +130 -0
  380. data/lib/jets/router/helpers/named_routes/add_full_url.rb +13 -0
  381. data/lib/jets/router/helpers/named_routes/generated.rb +197 -0
  382. data/lib/jets/router/helpers/named_routes/proxy.rb +66 -0
  383. data/lib/jets/router/matcher.rb +140 -17
  384. data/lib/jets/router/resources/options.rb +6 -4
  385. data/lib/jets/router/route/after_initialize.rb +64 -0
  386. data/lib/jets/router/route/as.rb +93 -0
  387. data/lib/jets/router/route/authorizer.rb +1 -0
  388. data/lib/jets/router/route/compat.rb +45 -0
  389. data/lib/jets/router/route/info.rb +74 -0
  390. data/lib/jets/router/route/node.rb +137 -0
  391. data/lib/jets/router/route/path.rb +93 -0
  392. data/lib/jets/router/route.rb +109 -90
  393. data/lib/jets/router/route_set.rb +214 -0
  394. data/lib/jets/router/scope.rb +204 -69
  395. data/lib/jets/router/state.rb +67 -0
  396. data/lib/jets/router/util.rb +1 -31
  397. data/lib/jets/router.rb +64 -150
  398. data/lib/jets/ruby_version_check.rb +15 -0
  399. data/lib/jets/rule/base.rb +1 -0
  400. data/lib/jets/rule/dsl.rb +7 -7
  401. data/lib/jets/secrets.rb +110 -0
  402. data/lib/jets/spec_helpers/controllers/request.rb +22 -16
  403. data/lib/jets/spec_helpers/controllers.rb +32 -24
  404. data/lib/jets/spec_helpers.rb +0 -6
  405. data/lib/jets/stack/builder.rb +3 -2
  406. data/lib/jets/stack/definition.rb +1 -4
  407. data/lib/jets/stack/function.rb +4 -2
  408. data/lib/jets/stack/main/dsl/cloudwatch.rb +4 -4
  409. data/lib/jets/stack/main/dsl/kinesis.rb +2 -2
  410. data/lib/jets/stack/main/dsl/lambda.rb +26 -19
  411. data/lib/jets/stack/main/dsl/sqs.rb +1 -1
  412. data/lib/jets/stack/output/lookup.rb +6 -2
  413. data/lib/jets/stack/output.rb +2 -2
  414. data/lib/jets/stack/parameter.rb +2 -2
  415. data/lib/jets/stack/resource.rb +3 -3
  416. data/lib/jets/stack/s3_event.rb +51 -37
  417. data/lib/jets/stack.rb +1 -1
  418. data/lib/jets/tasks/engine.rake +85 -0
  419. data/lib/jets/tasks/framework.rake +66 -0
  420. data/lib/jets/tasks/log.rake +41 -0
  421. data/lib/jets/tasks/middleware.rake +9 -0
  422. data/lib/jets/tasks/misc.rake +81 -0
  423. data/lib/jets/tasks/statistics.rake +37 -0
  424. data/lib/jets/tasks/tmp.rake +51 -0
  425. data/lib/jets/tasks/yarn.rake +29 -0
  426. data/lib/jets/tasks/zeitwerk.rake +61 -0
  427. data/lib/jets/tasks.rb +18 -0
  428. data/lib/jets/tmp_loader.rb +1 -1
  429. data/lib/jets/turbine/configurable.rb +36 -0
  430. data/lib/jets/turbine/configuration.rb +101 -0
  431. data/lib/jets/turbine.rb +164 -20
  432. data/lib/jets/util/camelize.rb +24 -0
  433. data/lib/jets/util/yamler.rb +18 -0
  434. data/lib/jets/version.rb +1 -1
  435. data/lib/jets.rb +9 -14
  436. metadata +462 -349
  437. data/.python-version +0 -1
  438. data/.ruby-version +0 -1
  439. data/bin/release +0 -9
  440. data/lib/jets/application/defaults.rb +0 -200
  441. data/lib/jets/builders/reconfigure_rails/config/initializers/jets.rb +0 -16
  442. data/lib/jets/builders/reconfigure_rails.rb +0 -114
  443. data/lib/jets/cfn/builders/api_gateway_builder.rb +0 -123
  444. data/lib/jets/cfn/builders/api_resources_builder.rb +0 -44
  445. data/lib/jets/cfn/builders/base_child_builder.rb +0 -69
  446. data/lib/jets/cfn/builders/controller_builder.rb +0 -50
  447. data/lib/jets/cfn/builders/function_builder.rb +0 -14
  448. data/lib/jets/cfn/builders/interface.rb +0 -133
  449. data/lib/jets/cfn/builders/job_builder.rb +0 -14
  450. data/lib/jets/cfn/builders/parent_builder.rb +0 -130
  451. data/lib/jets/cfn/built_template.rb +0 -15
  452. data/lib/jets/cfn/template_source.rb +0 -61
  453. data/lib/jets/commands/base.rb +0 -145
  454. data/lib/jets/commands/call.rb +0 -182
  455. data/lib/jets/commands/clean.rb +0 -19
  456. data/lib/jets/commands/configure.rb +0 -51
  457. data/lib/jets/commands/console.rb +0 -12
  458. data/lib/jets/commands/db/environment-task.rake +0 -3
  459. data/lib/jets/commands/db/tasks/dummy/app.rb +0 -25
  460. data/lib/jets/commands/db/tasks/dummy/config.rb +0 -14
  461. data/lib/jets/commands/db/tasks.rb +0 -34
  462. data/lib/jets/commands/db.rb +0 -13
  463. data/lib/jets/commands/dbconsole.rb +0 -134
  464. data/lib/jets/commands/delete.rb +0 -136
  465. data/lib/jets/commands/dynamodb/migrate.rb +0 -9
  466. data/lib/jets/commands/dynamodb/migrator.rb +0 -36
  467. data/lib/jets/commands/dynamodb.rb +0 -19
  468. data/lib/jets/commands/gems.rb +0 -13
  469. data/lib/jets/commands/help/call.md +0 -69
  470. data/lib/jets/commands/help/dynamodb/generate.md +0 -52
  471. data/lib/jets/commands/help/dynamodb/migrate.md +0 -4
  472. data/lib/jets/commands/help/gems/check.md +0 -6
  473. data/lib/jets/commands/help/routes.md +0 -16
  474. data/lib/jets/commands/help/runner.md +0 -17
  475. data/lib/jets/commands/help.rb +0 -9
  476. data/lib/jets/commands/import/base.rb +0 -49
  477. data/lib/jets/commands/import/cheatsheet.rb +0 -35
  478. data/lib/jets/commands/import/rack.rb +0 -16
  479. data/lib/jets/commands/import/rails.rb +0 -74
  480. data/lib/jets/commands/import/sequence.rb +0 -90
  481. data/lib/jets/commands/import/templates/config/database.yml +0 -30
  482. data/lib/jets/commands/import/templates/submodules-cheatsheet.md +0 -89
  483. data/lib/jets/commands/import.rb +0 -12
  484. data/lib/jets/commands/main.rb +0 -166
  485. data/lib/jets/commands/markdown/creator.rb +0 -58
  486. data/lib/jets/commands/markdown/index.rb +0 -27
  487. data/lib/jets/commands/markdown/page.rb +0 -125
  488. data/lib/jets/commands/markdown/shell.rb +0 -11
  489. data/lib/jets/commands/new.rb +0 -173
  490. data/lib/jets/commands/rake_command.rb +0 -61
  491. data/lib/jets/commands/rake_tasks.rb +0 -50
  492. data/lib/jets/commands/runner.rb +0 -16
  493. data/lib/jets/commands/sequence.rb +0 -105
  494. data/lib/jets/commands/stack_info.rb +0 -30
  495. data/lib/jets/commands/templates/skeleton/.env.development.tt +0 -3
  496. data/lib/jets/commands/templates/skeleton/.env.test +0 -3
  497. data/lib/jets/commands/templates/skeleton/.env.tt +0 -3
  498. data/lib/jets/commands/templates/skeleton/.jetskeep +0 -1
  499. data/lib/jets/commands/templates/skeleton/Gemfile.tt +0 -40
  500. data/lib/jets/commands/templates/skeleton/Procfile +0 -7
  501. data/lib/jets/commands/templates/skeleton/Rakefile +0 -2
  502. data/lib/jets/commands/templates/skeleton/app/models/application_item.rb +0 -2
  503. data/lib/jets/commands/templates/skeleton/app/views/layouts/application.html.erb.tt +0 -26
  504. data/lib/jets/commands/templates/skeleton/config/application.rb.tt +0 -71
  505. data/lib/jets/commands/templates/skeleton/config/dynamodb.yml +0 -22
  506. data/lib/jets/commands/templates/skeleton/config/environments/development.rb +0 -7
  507. data/lib/jets/commands/templates/skeleton/config/environments/production.rb +0 -9
  508. data/lib/jets/commands/templates/skeleton/config/environments/test.rb +0 -7
  509. data/lib/jets/commands/templates/webpacker/app/javascript/packs/application.js.tt +0 -23
  510. data/lib/jets/commands/templates/webpacker/app/javascript/packs/theme.scss.tt +0 -24
  511. data/lib/jets/commands/upgrade/templates/bin/webpack +0 -19
  512. data/lib/jets/commands/upgrade/templates/bin/webpack-dev-server +0 -19
  513. data/lib/jets/commands/upgrade/version1.rb +0 -136
  514. data/lib/jets/commands/upgrade.rb +0 -105
  515. data/lib/jets/commands/url.rb +0 -69
  516. data/lib/jets/commands/webpacker_template.rb +0 -18
  517. data/lib/jets/controller/callbacks.rb +0 -73
  518. data/lib/jets/controller/cookies/jar.rb +0 -269
  519. data/lib/jets/controller/cookies.rb +0 -38
  520. data/lib/jets/controller/error/invalid_authenticity_token.rb +0 -6
  521. data/lib/jets/controller/error.rb +0 -4
  522. data/lib/jets/controller/forgery_protection.rb +0 -43
  523. data/lib/jets/controller/layout.rb +0 -17
  524. data/lib/jets/controller/middleware/cors.rb +0 -60
  525. data/lib/jets/controller/middleware/local/mimic_aws_call.rb +0 -38
  526. data/lib/jets/controller/middleware/local/route_matcher.rb +0 -22
  527. data/lib/jets/controller/middleware/reloader.rb +0 -15
  528. data/lib/jets/controller/parameters_filter.rb +0 -29
  529. data/lib/jets/controller/params.rb +0 -117
  530. data/lib/jets/controller/redirection.rb +0 -61
  531. data/lib/jets/controller/rendering/rack_renderer.rb +0 -267
  532. data/lib/jets/controller/rendering.rb +0 -96
  533. data/lib/jets/controller/stage.rb +0 -34
  534. data/lib/jets/controller.rb +0 -3
  535. data/lib/jets/db.rb +0 -15
  536. data/lib/jets/generator/templates/active_job/job/templates/job.rb.tt +0 -8
  537. data/lib/jets/generator/templates/erb/controller/view.html.erb +0 -2
  538. data/lib/jets/generator/templates/erb/scaffold/index.html.erb +0 -29
  539. data/lib/jets/generator/templates/rails/controller/controller.rb +0 -13
  540. data/lib/jets/generator/templates/rails/helper/helper.rb +0 -4
  541. data/lib/jets/generator/templates/rails/scaffold_controller/controller.rb +0 -67
  542. data/lib/jets/generator.rb +0 -112
  543. data/lib/jets/internal/app/controllers/jets/bare_controller.rb +0 -16
  544. data/lib/jets/internal/app/controllers/jets/rack_controller.rb +0 -12
  545. data/lib/jets/internal/app/functions/jets/base_path.rb +0 -18
  546. data/lib/jets/internal/app/functions/jets/base_path_mapping.rb +0 -100
  547. data/lib/jets/internal/app/helpers/jets/mailers_helper.rb +0 -9
  548. data/lib/jets/internal/app/jobs/jets/preheat_job.rb +0 -70
  549. data/lib/jets/internal/app/views/jets/mailers/index.html.erb +0 -8
  550. data/lib/jets/internal/app/views/jets/mailers/mailer.html.erb +0 -6
  551. data/lib/jets/internal/turbines/jets/mailer.rb +0 -52
  552. data/lib/jets/job/helpers/s3_event_helper.rb +0 -13
  553. data/lib/jets/lambda/task.rb +0 -111
  554. data/lib/jets/logger.rb +0 -21
  555. data/lib/jets/middleware/configurator.rb +0 -84
  556. data/lib/jets/middleware/default_stack.rb +0 -53
  557. data/lib/jets/middleware/layer.rb +0 -34
  558. data/lib/jets/middleware/stack.rb +0 -77
  559. data/lib/jets/middleware.rb +0 -33
  560. data/lib/jets/naming.rb +0 -63
  561. data/lib/jets/overrides/rails/action_controller.rb +0 -13
  562. data/lib/jets/overrides/rails/asset_tag_helper.rb +0 -114
  563. data/lib/jets/overrides/rails/common_methods.rb +0 -13
  564. data/lib/jets/overrides/rails/migration_checker.rb +0 -34
  565. data/lib/jets/overrides/rails/rendering_helper.rb +0 -27
  566. data/lib/jets/overrides/rails/url_helper.rb +0 -88
  567. data/lib/jets/overrides/rails.rb +0 -6
  568. data/lib/jets/rack_server.rb +0 -86
  569. data/lib/jets/resource/api_gateway/base_path/function.rb +0 -49
  570. data/lib/jets/resource/api_gateway/base_path/role.rb +0 -76
  571. data/lib/jets/resource/api_gateway/cors.rb +0 -61
  572. data/lib/jets/resource/api_gateway/method.rb +0 -102
  573. data/lib/jets/resource/api_gateway/rest_api/routes/change.rb +0 -16
  574. data/lib/jets/resource/base.rb +0 -28
  575. data/lib/jets/resource/child_stack/api_deployment.rb +0 -58
  576. data/lib/jets/resource/child_stack/api_gateway.rb +0 -23
  577. data/lib/jets/resource/child_stack/api_resource/page.rb +0 -20
  578. data/lib/jets/resource/child_stack/api_resource.rb +0 -54
  579. data/lib/jets/resource/child_stack/base.rb +0 -24
  580. data/lib/jets/resource/iam/base_role_definition.rb +0 -47
  581. data/lib/jets/resource/lambda/function.rb +0 -221
  582. data/lib/jets/resource/logs/subscription_filter.rb +0 -31
  583. data/lib/jets/resource/permission.rb +0 -45
  584. data/lib/jets/resource.rb +0 -71
  585. data/lib/jets/router/error.rb +0 -4
  586. data/lib/jets/router/finder.rb +0 -47
  587. data/lib/jets/router/helpers/core_helper.rb +0 -27
  588. data/lib/jets/router/helpers/named_routes_helper.rb +0 -8
  589. data/lib/jets/router/helpers.rb +0 -4
  590. data/lib/jets/router/method_creator/code.rb +0 -99
  591. data/lib/jets/router/method_creator/edit.rb +0 -12
  592. data/lib/jets/router/method_creator/generic.rb +0 -11
  593. data/lib/jets/router/method_creator/index.rb +0 -48
  594. data/lib/jets/router/method_creator/new.rb +0 -12
  595. data/lib/jets/router/method_creator/root.rb +0 -15
  596. data/lib/jets/router/method_creator/show.rb +0 -12
  597. data/lib/jets/router/method_creator.rb +0 -50
  598. data/lib/jets/turbo/database_yaml.rb +0 -41
  599. data/lib/jets/turbo/project/.gitignore +0 -12
  600. data/lib/jets/turbo/project/.jetskeep +0 -1
  601. data/lib/jets/turbo/project/Gemfile +0 -16
  602. data/lib/jets/turbo/project/Rakefile +0 -2
  603. data/lib/jets/turbo/project/app/controllers/application_controller.rb +0 -2
  604. data/lib/jets/turbo/project/app/helpers/application_helper.rb +0 -2
  605. data/lib/jets/turbo/project/app/jobs/application_job.rb +0 -4
  606. data/lib/jets/turbo/project/config/application.rb +0 -5
  607. data/lib/jets/turbo/project/config/routes.rb +0 -4
  608. data/lib/jets/turbo/project/config.ru +0 -5
  609. data/lib/jets/turbo/rails.rb +0 -127
  610. data/lib/jets/turbo/templates/config/database.yml +0 -30
  611. data/lib/jets/turbo.rb +0 -56
  612. data/readme/prerelease.md +0 -6
  613. data/readme/testing.md +0 -60
  614. /data/{lib/jets → engines}/internal/app/shared/functions/jets/s3_bucket_config.rb +0 -0
  615. /data/lib/jets/{commands → command}/help/build.md +0 -0
  616. /data/lib/jets/{commands → command}/help/clean/build.md +0 -0
  617. /data/lib/jets/{commands → command}/help/clean/log.md +0 -0
  618. /data/lib/jets/{commands → command}/help/console.md +0 -0
  619. /data/lib/jets/{commands → command}/help/db/generate.md +0 -0
  620. /data/lib/jets/{commands → command}/help/dbconsole.md +0 -0
  621. /data/lib/jets/{commands → command}/help/degenerate.md +0 -0
  622. /data/lib/jets/{commands → command}/help/delete.md +0 -0
  623. /data/lib/jets/{commands → command}/help/generate.md +0 -0
  624. /data/lib/jets/{commands → command}/help/import/rack.md +0 -0
  625. /data/lib/jets/{commands → command}/help/import/rails.md +0 -0
  626. /data/lib/jets/{commands → command}/help/server.md +0 -0
  627. /data/lib/jets/{commands → command}/help/status.md +0 -0
  628. /data/lib/jets/{commands → command}/help/upgrade.md +0 -0
  629. /data/lib/jets/{commands → command}/help/url.md +0 -0
  630. /data/lib/jets/{generator/templates/active_job → generators}/job/templates/application_job.rb.tt +0 -0
  631. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/.rspec +0 -0
  632. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/README.md +0 -0
  633. /data/{.gitmodules → lib/jets/generators/overrides/app/templates/app/assets/images/.keep} +0 -0
  634. /data/lib/jets/{commands/templates/skeleton/db/.gitkeep → generators/overrides/app/templates/app/assets/javascripts/.keep} +0 -0
  635. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/app/controllers/application_controller.rb +0 -0
  636. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/app/helpers/application_helper.rb +0 -0
  637. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/app/jobs/application_job.rb +0 -0
  638. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/config.ru +0 -0
  639. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/public/favicon.ico +0 -0
  640. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/spec/controllers/posts_controller_spec.rb +0 -0
  641. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/spec/fixtures/payloads/posts-index.json +0 -0
  642. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/spec/fixtures/payloads/posts-show.json +0 -0
  643. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/spec/spec_helper.rb.tt +0 -0
  644. /data/lib/jets/{generator → generators/overrides}/templates/erb/scaffold/_form.html.erb +0 -0
  645. /data/lib/jets/{generator → generators/overrides}/templates/erb/scaffold/edit.html.erb +0 -0
  646. /data/lib/jets/{generator → generators/overrides}/templates/erb/scaffold/new.html.erb +0 -0
  647. /data/lib/jets/{generator → generators/overrides}/templates/erb/scaffold/show.html.erb +0 -0
  648. /data/lib/jets/{generator → generators/overrides}/templates/rails/assets/javascript.js +0 -0
  649. /data/lib/jets/{generator → generators/overrides}/templates/rails/assets/stylesheet.css +0 -0
  650. /data/lib/jets/{generator → generators/overrides}/templates/rails/scaffold/scaffold.css +0 -0
@@ -0,0 +1,291 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "fileutils"
4
+ require "action_dispatch"
5
+ require "jets"
6
+ require "active_support/core_ext/string/filters"
7
+
8
+ module Jets
9
+ class Server < ::Rack::Server
10
+ class Options
11
+ def parse!(args)
12
+ Jets::Command::ServerCommand.new([], args).server_options
13
+ end
14
+ end
15
+
16
+ def initialize(options = nil)
17
+ @default_options = options || {}
18
+ super(@default_options)
19
+ set_environment
20
+ end
21
+
22
+ def opt_parser
23
+ Options.new
24
+ end
25
+
26
+ def set_environment
27
+ ENV["JETS_ENV"] ||= options[:environment]
28
+ end
29
+
30
+ def start(after_stop_callback = nil)
31
+ trap(:INT) { exit }
32
+ create_tmp_directories
33
+ setup_dev_caching
34
+ # TODO: should this be commented out? Think it needs to be because Lambda will
35
+ # not run through the server...
36
+ # However, need to test puma and see if this will surface errors when there's an app error.
37
+ # log_to_stdout if options[:log_stdout]
38
+
39
+ super()
40
+ ensure
41
+ after_stop_callback.call if after_stop_callback
42
+ end
43
+
44
+ def serveable? # :nodoc:
45
+ server
46
+ true
47
+ rescue LoadError, NameError
48
+ false
49
+ end
50
+
51
+ def middleware
52
+ Hash.new([])
53
+ end
54
+
55
+ def default_options
56
+ super.merge(@default_options)
57
+ end
58
+
59
+ def served_url
60
+ "#{options[:SSLEnable] ? 'https' : 'http'}://#{options[:Host]}:#{options[:Port]}" unless use_puma?
61
+ end
62
+
63
+ private
64
+ def setup_dev_caching
65
+ if options[:environment] == "development"
66
+ Jets::DevCaching.enable_by_argument(options[:caching])
67
+ end
68
+ end
69
+
70
+ def create_tmp_directories
71
+ %w(cache pids sockets).each do |dir_to_make|
72
+ FileUtils.mkdir_p(File.join(Jets.root, "tmp", dir_to_make))
73
+ end
74
+ end
75
+
76
+ def log_to_stdout
77
+ wrapped_app # touch the app so the logger is set up
78
+
79
+ console = ActiveSupport::Logger.new(STDOUT)
80
+ console.formatter = Jets.logger.formatter
81
+ console.level = Jets.logger.level
82
+
83
+ unless ActiveSupport::Logger.logger_outputs_to?(Jets.logger, STDOUT)
84
+ Jets.logger.extend(ActiveSupport::Logger.broadcast(console))
85
+ end
86
+ end
87
+
88
+ def use_puma?
89
+ server.to_s == "Rack::Handler::Puma"
90
+ end
91
+ end
92
+
93
+ module Command
94
+ class ServerCommand < Base # :nodoc:
95
+ include EnvironmentArgument
96
+
97
+ # Hard-coding a bunch of handlers here as we don't have a public way of
98
+ # querying them from the Rack::Handler registry.
99
+ RACK_SERVERS = %w(cgi fastcgi webrick lsws scgi thin puma unicorn falcon)
100
+
101
+ DEFAULT_PORT = 8888
102
+ DEFAULT_PIDFILE = "tmp/pids/server.pid"
103
+
104
+ class_option :port, aliases: "-p", type: :numeric,
105
+ desc: "Runs Jets on the specified port - defaults to 8888.", banner: :port
106
+ class_option :binding, aliases: "-b", type: :string,
107
+ desc: "Binds Jets to the specified IP - defaults to 'localhost' in development and '0.0.0.0' in other environments'.",
108
+ banner: :IP
109
+ class_option :config, aliases: "-c", type: :string, default: "config.ru",
110
+ desc: "Uses a custom rackup configuration.", banner: :file
111
+ class_option :daemon, aliases: "-d", type: :boolean, default: false,
112
+ desc: "Runs server as a Daemon."
113
+ class_option :using, aliases: "-u", type: :string,
114
+ desc: "Specifies the Rack server used to run the application (thin/puma/webrick).", banner: :name
115
+ class_option :pid, aliases: "-P", type: :string,
116
+ desc: "Specifies the PID file - defaults to #{DEFAULT_PIDFILE}."
117
+ class_option :dev_caching, aliases: "-C", type: :boolean, default: nil,
118
+ desc: "Specifies whether to perform caching in development."
119
+ class_option :restart, type: :boolean, default: nil, hide: true
120
+ class_option :early_hints, type: :boolean, default: nil, desc: "Enables HTTP/2 early hints."
121
+ class_option :log_to_stdout, type: :boolean, default: nil, optional: true,
122
+ desc: "Whether to log to stdout. Enabled by default in development when not daemonized."
123
+
124
+ def initialize(args, local_options, *)
125
+ super
126
+
127
+ @original_options = local_options - %w( --restart )
128
+ end
129
+
130
+ desc "server", "Runs a local server that mimics API Gateway for development"
131
+ long_desc Help.text(:server)
132
+ def perform
133
+ extract_environment_option_from_argument
134
+ set_application_directory!
135
+ prepare_restart
136
+
137
+ Jets::Server.new(server_options).tap do |server|
138
+ # Require application after server sets environment to propagate
139
+ # the --environment option.
140
+ # require APP_PATH
141
+ Jets.boot
142
+ Dir.chdir(Jets.application.root)
143
+
144
+ if server.serveable?
145
+ print_boot_information(server.server, server.served_url)
146
+ after_stop_callback = -> { say "Exiting" unless options[:daemon] }
147
+ server.start(after_stop_callback)
148
+ else
149
+ say rack_server_suggestion(options[:using])
150
+ end
151
+ end
152
+ end
153
+
154
+ no_commands do
155
+ def server_options
156
+ {
157
+ user_supplied_options: user_supplied_options,
158
+ server: options[:using],
159
+ log_stdout: log_to_stdout?,
160
+ Port: port,
161
+ Host: host,
162
+ DoNotReverseLookup: true,
163
+ config: options[:config],
164
+ environment: environment,
165
+ daemonize: options[:daemon],
166
+ pid: pid,
167
+ caching: options[:dev_caching],
168
+ restart_cmd: restart_command,
169
+ early_hints: early_hints
170
+ }
171
+ end
172
+ end
173
+
174
+ private
175
+ def user_supplied_options
176
+ @user_supplied_options ||= begin
177
+ # Convert incoming options array to a hash of flags
178
+ # ["-p3001", "-C", "--binding", "127.0.0.1"] # => {"-p"=>true, "-C"=>true, "--binding"=>true}
179
+ user_flag = {}
180
+ @original_options.each do |command|
181
+ if command.start_with?("--")
182
+ option = command.split("=")[0]
183
+ user_flag[option] = true
184
+ elsif command =~ /\A(-.)/
185
+ user_flag[Regexp.last_match[0]] = true
186
+ end
187
+ end
188
+
189
+ # Collect all options that the user has explicitly defined so we can
190
+ # differentiate them from defaults
191
+ user_supplied_options = []
192
+ self.class.class_options.select do |key, option|
193
+ if option.aliases.any? { |name| user_flag[name] } || user_flag["--#{option.name}"]
194
+ name = option.name.to_sym
195
+ case name
196
+ when :port
197
+ name = :Port
198
+ when :binding
199
+ name = :Host
200
+ when :dev_caching
201
+ name = :caching
202
+ when :daemonize
203
+ name = :daemon
204
+ end
205
+ user_supplied_options << name
206
+ end
207
+ end
208
+ user_supplied_options << :Host if ENV["HOST"] || ENV["BINDING"]
209
+ user_supplied_options << :Port if ENV["PORT"]
210
+ user_supplied_options << :pid if ENV["PIDFILE"]
211
+ user_supplied_options.uniq
212
+ end
213
+ end
214
+
215
+ def port
216
+ options[:port] || ENV.fetch("PORT", DEFAULT_PORT).to_i
217
+ end
218
+
219
+ def host
220
+ if options[:binding]
221
+ options[:binding]
222
+ else
223
+ default_host = environment == "development" ? "localhost" : "0.0.0.0"
224
+
225
+ ENV.fetch("BINDING", default_host)
226
+ end
227
+ end
228
+
229
+ def environment
230
+ options[:environment] || Jets::Command.environment
231
+ end
232
+
233
+ def restart_command
234
+ "jets server #{@original_options.join(" ")} --restart"
235
+ end
236
+
237
+ def early_hints
238
+ options[:early_hints]
239
+ end
240
+
241
+ def log_to_stdout?
242
+ options.fetch(:log_to_stdout) do
243
+ options[:daemon].blank? && environment == "development"
244
+ end
245
+ end
246
+
247
+ def pid
248
+ File.expand_path(options[:pid] || ENV.fetch("PIDFILE", DEFAULT_PIDFILE))
249
+ end
250
+
251
+ def self.banner(*)
252
+ "jets server -u [thin/puma/webrick] [options]"
253
+ end
254
+
255
+ def prepare_restart
256
+ FileUtils.rm_f(pid) if options[:restart]
257
+ end
258
+
259
+ def rack_server_suggestion(server)
260
+ if server.in?(RACK_SERVERS)
261
+ <<~MSG
262
+ Could not load server "#{server}". Maybe you need to the add it to the Gemfile?
263
+
264
+ gem "#{server}"
265
+
266
+ Run `jets server --help` for more options.
267
+ MSG
268
+ else
269
+ error = CorrectableError.new("Could not find server '#{server}'.", server, RACK_SERVERS)
270
+ if error.respond_to?(:detailed_message)
271
+ formatted_message = error.detailed_message
272
+ else
273
+ formatted_message = error.message
274
+ end
275
+ <<~MSG
276
+ #{formatted_message}
277
+ Run `jets server --help` for more options.
278
+ MSG
279
+ end
280
+ end
281
+
282
+ def print_boot_information(server, url)
283
+ say <<~MSG
284
+ => Booting #{ActiveSupport::Inflector.demodulize(server)}
285
+ => Jets #{Jets.version} application starting in #{Jets.env} #{url}
286
+ => Run `jets server --help` for more startup options
287
+ MSG
288
+ end
289
+ end
290
+ end
291
+ end
@@ -0,0 +1,39 @@
1
+ module Jets::Command
2
+ class StacksCommand < Base # :nodoc:
3
+ desc "stacks", "List deployed stacks"
4
+ long_desc Help.text(:stacks)
5
+ paging_options.call
6
+ option :all_projects, desc: "Show all stacks across all projects", type: :boolean, default: false
7
+ def perform
8
+ name = Jets.project_name
9
+ no_token_exit!
10
+ params = paging_params.merge(options)
11
+ resp = Jets::Api::Stack.list(params)
12
+ check_for_error_message!(resp)
13
+
14
+ data = resp["data"]
15
+ if data.empty?
16
+ $stderr.puts "No stacks deployed yet: #{name}"
17
+ else
18
+ message = if options[:all_projects]
19
+ "Stacks for all projects:"
20
+ else
21
+ "Stacks for project: #{name}"
22
+ end
23
+ $stderr.puts message
24
+ show_items(data)
25
+ end
26
+ rescue Jets::Api::RequestError => e
27
+ puts "WARNING: Unable to list stacks. #{e.class}: #{e.message}"
28
+ end
29
+
30
+ private
31
+ def show_items(items)
32
+ presenter = CliFormat::Presenter.new
33
+ presenter.header = ["Name"]
34
+ items.each do |item|
35
+ puts "#{item['name']} #{item['location']}"
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,16 @@
1
+ module Jets::Command
2
+ class StatusCommand < Base
3
+ include Jets::AwsServices
4
+
5
+ desc "status", "Shows the current status of the Jets app"
6
+ long_desc Help.text(:status)
7
+ def perform
8
+ Jets.boot
9
+ cfn_status = Jets::Cfn::Status.new
10
+ success = cfn_status.run
11
+ unless success
12
+ cfn_status.failure_message!
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,92 @@
1
+ module Jets::Command
2
+ class UrlCommand < Base # :nodoc:
3
+ option :format, aliases: :f, desc: "Output format: json or text", default: "text"
4
+
5
+ desc "url", "App url if routes are defined"
6
+ long_desc Help.text(:url)
7
+ def url(*)
8
+ Url.new(options).display
9
+ end
10
+ end
11
+
12
+ class Url
13
+ include Jets::AwsServices
14
+
15
+ def initialize(options)
16
+ @options = options
17
+ end
18
+
19
+ def display
20
+ Jets.boot
21
+ stack_name = Jets::Names.parent_stack_name
22
+ unless stack_exists?(stack_name)
23
+ $stderr.puts "Stack for #{Jets.project_name.color(:green)} project for environment #{Jets.env.color(:green)}. Couldn't find #{stack_name.color(:green)} stack."
24
+ exit 1
25
+ end
26
+
27
+ stack = cfn.describe_stacks(stack_name: stack_name).stacks.first
28
+
29
+ data = {}
30
+
31
+ api_gateway_stack_arn = lookup(stack[:outputs], "ApiGateway")
32
+ if api_gateway_stack_arn && endpoint_available?
33
+ data[:api_gateway_endpoint] = get_gateway_endpoint(api_gateway_stack_arn)
34
+ get_custom_domain!(data)
35
+ end
36
+
37
+ if data.empty?
38
+ $stderr.puts "API Gateway not found. This jets app does have an API Gateway associated with it. Please double check your config/routes.rb if you were expecting to see a url for the app. Also check that #{stack_name.color(:green)} is a jets app."
39
+ exit 1
40
+ end
41
+
42
+ if @options[:format] == "json"
43
+ puts data.to_json
44
+ else
45
+ puts "API Gateway Endpoint: #{data[:api_gateway_endpoint]}"
46
+ puts "Custom Domain: #{data[:custom_domain]}" if data[:custom_domain]
47
+ puts "App Domain: #{data[:app_domain]}" if data[:app_domain]
48
+ end
49
+ end
50
+
51
+ def get_gateway_endpoint(api_gateway_stack_arn)
52
+ stack = cfn.describe_stacks(stack_name: api_gateway_stack_arn).stacks.first
53
+ rest_api = lookup(stack[:outputs], "RestApi")
54
+ region_id = lookup(stack[:outputs], "Region")
55
+ stage_name = Jets::Cfn::Resource::ApiGateway::Deployment.stage_name
56
+
57
+ # https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-call-api.html
58
+ # https://my-api-id.execute-api.region-id.amazonaws.com/stage-name/{resourcePath}
59
+ "https://#{rest_api}.execute-api.#{region_id}.amazonaws.com/#{stage_name}"
60
+ end
61
+
62
+ def get_custom_domain!(data)
63
+ return unless endpoint_available? && Jets.custom_domain? && Jets.config.domain.route53
64
+
65
+ domain_name = Jets::Cfn::Resource::ApiGateway::DomainName.new
66
+ # Looks funny but its right.
67
+ # domain_name is a method on the Jets::Cfn::Resource::ApiGateway::Domain instance
68
+ url = "https://#{domain_name.domain_name}"
69
+ data[:custom_domain] = url
70
+ data[:app_domain] = "https://#{Jets.config.app.domain}" if Jets.config.app.domain
71
+ end
72
+
73
+ def endpoint_unavailable?
74
+ return false if Jets::Router.no_routes?
75
+ resp, status = stack_status
76
+ return false if status.include?("ROLLBACK")
77
+ end
78
+
79
+ def endpoint_available?
80
+ !endpoint_unavailable?
81
+ end
82
+
83
+ # All CloudFormation states listed here:
84
+ # http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-describing-stacks.html
85
+ def stack_status
86
+ resp = cfn.describe_stacks(stack_name: @parent_stack_name)
87
+ status = resp.stacks[0].stack_status
88
+ [resp, status]
89
+ end
90
+
91
+ end
92
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Jets::Command
4
+ class VersionCommand < Base # :nodoc:
5
+ desc "version", "Prints Jets version"
6
+ long_desc Help.text(:version)
7
+ def perform
8
+ puts Jets.version
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "jets/command"
4
+
5
+ aliases = {
6
+ "g" => "generate",
7
+ "c" => "console",
8
+ "s" => "server",
9
+ "db" => "dbconsole",
10
+ "r" => "runner",
11
+ "t" => "test"
12
+ }
13
+
14
+ command = ARGV.shift
15
+ command = aliases[command] || command
16
+
17
+ Jets::Command.invoke command, ARGV
@@ -0,0 +1,166 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "active_support/ordered_options"
4
+ require "active_support/core_ext/object"
5
+
6
+ module Jets
7
+ module Configuration
8
+ # MiddlewareStackProxy is a proxy for the Jets middleware stack that allows
9
+ # you to configure middlewares in your application. It works basically as a
10
+ # command recorder, saving each command to be applied after initialization
11
+ # over the default middleware stack, so you can add, swap, or remove any
12
+ # middleware in Jets.
13
+ #
14
+ # You can add your own middlewares by using the +config.middleware.use+ method:
15
+ #
16
+ # config.middleware.use Magical::Unicorns
17
+ #
18
+ # This will put the <tt>Magical::Unicorns</tt> middleware on the end of the stack.
19
+ # You can use +insert_before+ if you wish to add a middleware before another:
20
+ #
21
+ # config.middleware.insert_before Rack::Head, Magical::Unicorns
22
+ #
23
+ # There's also +insert_after+ which will insert a middleware after another:
24
+ #
25
+ # config.middleware.insert_after Rack::Head, Magical::Unicorns
26
+ #
27
+ # Middlewares can also be completely swapped out and replaced with others:
28
+ #
29
+ # config.middleware.swap ActionDispatch::Flash, Magical::Unicorns
30
+ #
31
+ # Middlewares can be moved from one place to another:
32
+ #
33
+ # config.middleware.move_before ActionDispatch::Flash, Magical::Unicorns
34
+ #
35
+ # This will move the <tt>Magical::Unicorns</tt> middleware before the
36
+ # <tt>ActionDispatch::Flash</tt>. You can also move it after:
37
+ #
38
+ # config.middleware.move_after ActionDispatch::Flash, Magical::Unicorns
39
+ #
40
+ # And finally they can also be removed from the stack completely:
41
+ #
42
+ # config.middleware.delete ActionDispatch::Flash
43
+ #
44
+ class MiddlewareStackProxy
45
+ def initialize(operations = [], delete_operations = [])
46
+ @operations = operations
47
+ @delete_operations = delete_operations
48
+ end
49
+
50
+ def insert_before(...)
51
+ @operations << -> middleware { middleware.insert_before(...) }
52
+ end
53
+
54
+ alias :insert :insert_before
55
+
56
+ def insert_after(...)
57
+ @operations << -> middleware { middleware.insert_after(...) }
58
+ end
59
+
60
+ def swap(...)
61
+ @operations << -> middleware { middleware.swap(...) }
62
+ end
63
+
64
+ def use(...)
65
+ @operations << -> middleware { middleware.use(...) }
66
+ end
67
+
68
+ def delete(...)
69
+ @delete_operations << -> middleware { middleware.delete(...) }
70
+ end
71
+
72
+ def move_before(...)
73
+ @delete_operations << -> middleware { middleware.move_before(...) }
74
+ end
75
+
76
+ alias :move :move_before
77
+
78
+ def move_after(...)
79
+ @delete_operations << -> middleware { middleware.move_after(...) }
80
+ end
81
+
82
+ def unshift(...)
83
+ @operations << -> middleware { middleware.unshift(...) }
84
+ end
85
+
86
+ def merge_into(other) # :nodoc:
87
+ (@operations + @delete_operations).each do |operation|
88
+ operation.call(other)
89
+ end
90
+
91
+ other
92
+ end
93
+
94
+ def +(other) # :nodoc:
95
+ MiddlewareStackProxy.new(@operations + other.operations, @delete_operations + other.delete_operations)
96
+ end
97
+
98
+ protected
99
+ attr_reader :operations, :delete_operations
100
+ end
101
+
102
+ class Generators # :nodoc:
103
+ attr_accessor :aliases, :options, :templates, :fallbacks, :colorize_logging, :api_only
104
+ attr_reader :hidden_namespaces, :after_generate_callbacks
105
+
106
+ def initialize
107
+ @aliases = Hash.new { |h, k| h[k] = {} }
108
+ @options = Hash.new { |h, k| h[k] = {} }
109
+ @fallbacks = {}
110
+ @templates = []
111
+ @colorize_logging = true
112
+ @api_only = false
113
+ @hidden_namespaces = []
114
+ @after_generate_callbacks = []
115
+ end
116
+
117
+ def initialize_copy(source)
118
+ @aliases = @aliases.deep_dup
119
+ @options = @options.deep_dup
120
+ @fallbacks = @fallbacks.deep_dup
121
+ @templates = @templates.dup
122
+ end
123
+
124
+ def hide_namespace(namespace)
125
+ @hidden_namespaces << namespace
126
+ end
127
+
128
+ def after_generate(&block)
129
+ @after_generate_callbacks << block
130
+ end
131
+
132
+ def method_missing(method, *args)
133
+ method = method.to_s.delete_suffix("=").to_sym
134
+
135
+ # Note: Using :rails because piggybacking off of rails generators
136
+ if args.empty?
137
+ if method == :rails
138
+ return @options[method]
139
+ else
140
+ return @options[:rails][method]
141
+ end
142
+ end
143
+
144
+ if method == :rails || args.first.is_a?(Hash)
145
+ namespace, configuration = method, args.shift
146
+ else
147
+ # Examples:
148
+ # method :orm args [:active_record, {:migration=>true, :timestamps=>true}] @options {}
149
+ # namespace :active_record
150
+ # configuration {:migration=>true, :timestamps=>true}
151
+ namespace, configuration = args.shift, args.shift
152
+ namespace = namespace.to_sym if namespace.respond_to?(:to_sym)
153
+ @options[:rails][method] = namespace
154
+ end
155
+
156
+ if configuration
157
+ aliases = configuration.delete(:aliases)
158
+ @aliases[namespace].merge!(aliases) if aliases
159
+ @options[namespace].merge!(configuration)
160
+ end
161
+
162
+ # Example @options: {:rails=>{:orm=>:active_record}, :active_record=>{:migration=>true, :timestamps=>true}}
163
+ end
164
+ end
165
+ end
166
+ end