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,6 +1,6 @@
1
1
  # CloudFormation SQS Queue docs: https://amzn.to/2MVWk0j
2
- module Jets::Resource::Sqs
3
- class Queue < Jets::Resource::Base
2
+ module Jets::Cfn::Resource::Sqs
3
+ class Queue < Jets::Cfn::Base
4
4
  def initialize(props={})
5
5
  @props = props # associated_properties from dsl.rb
6
6
  end
@@ -8,14 +8,14 @@ module Jets::Resource::Sqs
8
8
  def definition
9
9
  {
10
10
  queue_logical_id => {
11
- type: "AWS::SQS::Queue",
12
- properties: @props,
11
+ Type: "AWS::SQS::Queue",
12
+ Properties: @props,
13
13
  }
14
14
  }
15
15
  end
16
16
 
17
17
  def queue_logical_id
18
- "{namespace}_sqs_queue"
18
+ "{namespace}SqsQueue"
19
19
  end
20
20
  end
21
21
  end
@@ -1,5 +1,7 @@
1
- class Jets::Resource
1
+ class Jets::Cfn::Resource
2
2
  class Standardizer
3
+ include Jets::Util::Camelize
4
+
3
5
  attr_reader :definition
4
6
  def initialize(*definition)
5
7
  @definition = definition.flatten
@@ -9,30 +11,27 @@ class Jets::Resource
9
11
  camelize(standarize(@definition))
10
12
  end
11
13
 
12
- def camelize(attributes)
13
- Jets::Camelizer.transform(attributes)
14
- end
15
-
16
14
  def standarize(definition)
15
+ definition = camelize(definition)
17
16
  first, second, third, _ = definition
18
17
  if definition.size == 1 && first.is_a?(Hash) # long form
19
18
  first # pass through
20
19
  elsif definition.size == 2 && second.is_a?(Hash) # medium form
21
20
  logical_id, attributes = first, second
22
- attributes.delete(:properties) if attributes[:properties].nil? || attributes[:properties].empty?
21
+ attributes.delete(:Properties) if attributes[:Properties].nil? || attributes[:Properties].empty?
23
22
  { logical_id => attributes }
24
23
  elsif definition.size == 2 && second.is_a?(String) # short form
25
24
  logical_id, type = first, second
26
25
  { logical_id => {
27
- type: type
26
+ Type: type
28
27
  }}
29
28
  elsif definition.size == 3 && (second.is_a?(String) || second.is_a?(NilClass))# short form
30
29
  logical_id, type, properties = first, second, third
31
30
  template = { logical_id => {
32
- type: type
31
+ Type: type
33
32
  }}
34
33
  attributes = template.values.first
35
- attributes[:properties] = properties unless properties.empty?
34
+ attributes[:Properties] = properties unless properties.empty?
36
35
  template
37
36
  else # Dont understand this form
38
37
  raise "Invalid form provided. definition #{definition.inspect}"
@@ -0,0 +1,8 @@
1
+ module Jets::Cfn
2
+ class Resource < Base
3
+ attr_reader :definition
4
+ def initialize(definition, replacements)
5
+ @definition, @replacements = definition, replacements
6
+ end
7
+ end
8
+ end
data/lib/jets/cfn/ship.rb CHANGED
@@ -5,7 +5,7 @@ module Jets::Cfn
5
5
 
6
6
  def initialize(options)
7
7
  @options = options
8
- @parent_stack_name = Jets::Naming.parent_stack_name
8
+ @parent_stack_name = Jets::Names.parent_stack_name
9
9
  end
10
10
 
11
11
  def run
@@ -16,6 +16,7 @@ module Jets::Cfn
16
16
 
17
17
  puts "Deploying CloudFormation stack with jets app!"
18
18
  begin
19
+ set_resource_tags
19
20
  save_stack
20
21
  rescue Aws::CloudFormation::Errors::InsufficientCapabilitiesException => e
21
22
  capabilities = e.message.match(/\[(.*)\]/)[1]
@@ -42,10 +43,25 @@ module Jets::Cfn
42
43
  exit 1
43
44
  end
44
45
 
46
+ save_apigw_state
45
47
  prewarm
46
48
  clean_deploy_logs
47
49
  show_api_endpoint
48
50
  show_custom_domain
51
+ create_deployment_record
52
+ end
53
+
54
+ def create_deployment_record
55
+ return if @options[:stack_type] == :minimal
56
+ resp = Jets::Cfn::Deployment.new(@options.merge(stack_name: @parent_stack_name)).create
57
+ if resp
58
+ version = resp["version"]
59
+ Jets::Cfn::Upload.new.upload_cfn_templates(version) if version
60
+ end
61
+ end
62
+
63
+ def set_resource_tags
64
+ @tags = Jets.config.cfn.build.resource_tags.map { |key, value| { key: key, value: value } }
49
65
  end
50
66
 
51
67
  def save_stack
@@ -76,11 +92,12 @@ module Jets::Cfn
76
92
  stack_name: @parent_stack_name,
77
93
  capabilities: capabilities, # ["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM"]
78
94
  # disable_rollback: !@options[:rollback],
79
- }.merge!(template.to_h)
95
+ tags: @tags,
96
+ }.merge!(template.stack_option)
80
97
  end
81
98
 
82
99
  def template
83
- @template ||= TemplateSource.new(Jets::Naming.parent_template_path, @options)
100
+ @template ||= Template.new(Jets::Names.parent_template_path, @options)
84
101
  end
85
102
 
86
103
  # check for /(_COMPLETE|_FAILED)$/ status
@@ -88,6 +105,10 @@ module Jets::Cfn
88
105
  Jets::Cfn::Status.new(@options).wait
89
106
  end
90
107
 
108
+ def save_apigw_state
109
+ Jets::Router::State.save_apigw_state
110
+ end
111
+
91
112
  def prewarm
92
113
  if ENV['SKIP_PREWARMING']
93
114
  puts "Skipping prewarming" # useful for testing
@@ -107,7 +128,7 @@ module Jets::Cfn
107
128
 
108
129
  def endpoint_unavailable?
109
130
  return true unless @options[:stack_type] == :full # s3 bucket is available
110
- return true if Jets::Router.routes.empty?
131
+ return true if Jets::Router.no_routes?
111
132
  _, status = stack_status
112
133
  return true if status.include?("ROLLBACK")
113
134
  return true unless api_gateway
@@ -141,12 +162,12 @@ module Jets::Cfn
141
162
  def show_custom_domain
142
163
  return unless endpoint_available? && Jets.custom_domain? && Jets.config.domain.route53
143
164
 
144
- domain_name = Jets::Resource::ApiGateway::DomainName.new
165
+ domain_name = Jets::Cfn::Resource::ApiGateway::DomainName.new
145
166
  # Looks funny but its right.
146
- # domain_name is a method on the Jets::Resource::ApiGateway::Domain instance
167
+ # domain_name is a method on the Jets::Cfn::Resource::ApiGateway::Domain instance
147
168
  url = "https://#{domain_name.domain_name}"
148
169
  puts "Custom Domain: #{url}"
149
- puts "App Domain: #{Jets.config.app.domain}" if Jets.config.app.domain
170
+ puts "App Domain: https://#{Jets.config.app.domain}" if Jets.config.app.domain
150
171
  end
151
172
 
152
173
  # All CloudFormation states listed here:
@@ -170,19 +191,12 @@ module Jets::Cfn
170
191
  end
171
192
 
172
193
  def capabilities
173
- ["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM"] # TODO: remove capabilities hardcode
174
- # return @options[:capabilities] if @options[:capabilities]
175
- # if @options[:iam]
176
- # ["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM"]
177
- # end
194
+ ["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM"]
178
195
  end
179
196
 
180
197
  # Upload both code and child templates to s3
181
198
  def upload_to_s3
182
- raise "Did not specify @options[:s3_bucket] #{@options[:s3_bucket].inspect}" unless @options[:s3_bucket]
183
-
184
- uploader = Upload.new(@options[:s3_bucket])
185
- uploader.upload
199
+ Upload.new.upload
186
200
  end
187
201
  end
188
202
  end
@@ -3,7 +3,7 @@ require 'cfn_status'
3
3
  module Jets::Cfn
4
4
  class Status < CfnStatus
5
5
  def initialize(options={})
6
- @stack_name = Jets::Naming.parent_stack_name
6
+ @stack_name = Jets::Names.parent_stack_name
7
7
  super(@stack_name, options)
8
8
  end
9
9
  end
@@ -0,0 +1,89 @@
1
+ module Jets::Cfn
2
+ class Template
3
+ include Jets::AwsServices
4
+
5
+ attr_reader :path
6
+
7
+ def initialize(path, options={})
8
+ @path = path
9
+ @options = options
10
+ end
11
+
12
+ def body
13
+ @body ||= IO.read(path)
14
+ end
15
+
16
+ def url
17
+ @url ||= upload_file_to_s3
18
+ end
19
+
20
+ def stack_option
21
+ if upload_to_s3?
22
+ from_s3
23
+ else
24
+ from_path
25
+ end
26
+ end
27
+
28
+ private
29
+ def upload_to_s3?
30
+ return false if @options[:stack_type] == :minimal # bucket not yet available
31
+ bucket_name.present?
32
+ end
33
+
34
+ def bucket_name
35
+ Jets.s3_bucket
36
+ end
37
+
38
+ def from_s3
39
+ {
40
+ template_url: url
41
+ }
42
+ end
43
+
44
+ def from_path
45
+ {
46
+ template_body: body
47
+ }
48
+ end
49
+
50
+ def upload_file_to_s3
51
+ obj = s3_resource.bucket(bucket_name).object(s3_key)
52
+ obj.upload_file(path)
53
+
54
+ "https://s3.amazonaws.com/#{bucket_name}/#{s3_key}"
55
+ end
56
+
57
+ def s3_key
58
+ @s3_key ||= "jets/cfn-templates/#{File.basename(path)}"
59
+ end
60
+
61
+ class << self
62
+ # Caches reduce filesystem IO calls
63
+ @@cache = {}
64
+ def load_file(path)
65
+ if @@cache[path]
66
+ @@cache[path]
67
+ else
68
+ @@cache[path] = Jets::Util::Yamler.load_file(path).deep_symbolize_keys
69
+ end
70
+ end
71
+
72
+ # Jets::Cfn::Template.lookup_logical_id(template_name, key)
73
+ # Jets::Cfn::Template.lookup_logical_id("api-resources", "UpApiResource")
74
+ def lookup_logical_id(template_name, key)
75
+ expr = "#{Jets::Names.templates_folder}/#{template_name}-*"
76
+ template_paths = Dir.glob(expr).sort.to_a
77
+ found_template = template_paths.detect do |path|
78
+ next unless File.file?(path)
79
+
80
+ template = Jets::Cfn::Template.load_file(path)
81
+ template[:Outputs].keys.include?(key.to_sym)
82
+ end
83
+
84
+ name = File.basename(found_template).sub(/\.yml$/,'')
85
+ name.underscore.camelize # IE: ApiResources1
86
+ end
87
+ end
88
+ end
89
+ end
@@ -1,17 +1,11 @@
1
- require 'action_view'
1
+ require 'active_support/number_helper'
2
2
  require 'digest'
3
3
  require 'rack/mime'
4
4
 
5
5
  module Jets::Cfn
6
6
  class Upload
7
7
  include Jets::AwsServices
8
- include ActionView::Helpers::NumberHelper # number_to_human_size
9
-
10
- attr_reader :bucket_name
11
-
12
- def initialize(bucket_name)
13
- @bucket_name = bucket_name
14
- end
8
+ include ActiveSupport::NumberHelper # number_to_human_size
15
9
 
16
10
  def upload
17
11
  upload_cfn_templates
@@ -19,14 +13,25 @@ module Jets::Cfn
19
13
  upload_assets
20
14
  end
21
15
 
22
- def upload_cfn_templates
23
- puts "Uploading CloudFormation templates to S3."
24
- expression = "#{Jets::Naming.template_path_prefix}-*"
16
+ def bucket_name
17
+ Jets.s3_bucket
18
+ end
19
+
20
+ def upload_cfn_templates(version=nil)
21
+ puts "Uploading CloudFormation templates to S3." unless version # hide message when version is passed in
22
+ expression = "#{Jets::Names.templates_folder}/*"
23
+ if version # outside of each loop to avoid repeating
24
+ version = "versions/#{version}"
25
+ else
26
+ checksum = Jets::Builders::Md5.checksums["stage/code"]
27
+ version = "shas/#{checksum}"
28
+ end
29
+ checksum = Jets::Builders::Md5.checksums["stage/code"]
25
30
  Dir.glob(expression).each do |path|
26
31
  next unless File.file?(path)
27
-
28
- key = "jets/cfn-templates/#{File.basename(path)}"
32
+ key = ["jets/cfn-templates", version, File.basename(path)].compact.join('/')
29
33
  obj = s3_resource.bucket(bucket_name).object(key)
34
+ puts "Uploading #{path} to s3://#{bucket_name}/#{key}".color(:green) if ENV['JETS_DEBUG']
30
35
  obj.upload_file(path)
31
36
  end
32
37
  end
@@ -60,17 +65,11 @@ module Jets::Cfn
60
65
 
61
66
  def upload_public_assets
62
67
  public_folders = %w[public]
63
- public_folders = add_rack_assets(public_folders)
64
68
  public_folders.each do |folder|
65
69
  upload_asset_folder(folder)
66
70
  end
67
71
  end
68
72
 
69
- def add_rack_assets(public_folders)
70
- return public_folders unless Jets.rack?
71
- public_folders + %w[rack/public]
72
- end
73
-
74
73
  def upload_asset_folder(folder)
75
74
  expression = "#{Jets.root}/#{folder}/**/*"
76
75
  group_size = 10
@@ -88,12 +87,17 @@ module Jets::Cfn
88
87
  end
89
88
 
90
89
  def upload_to_s3(full_path)
91
- return if identical_on_s3?(full_path) && !ENV['JETS_ASSET_UPLOAD_FORCE']
90
+ if identical_on_s3?(full_path) && !ENV['JETS_ASSET_UPLOAD_FORCE']
91
+ puts "Asset is identical on s3: #{full_path}" if ENV['JETS_DEBUG_ASSETS']
92
+ return
93
+ end
92
94
 
93
95
  key = s3_key(full_path)
94
96
  obj = s3_resource.bucket(bucket_name).object(key)
95
97
  content_type = content_type_headers(full_path)
96
- puts "Uploading and setting content type for s3://#{bucket_name}/#{key} content_type #{content_type[:content_type].inspect}"
98
+ if ENV['JETS_DEBUG_ASSETS']
99
+ puts "Uploading and setting content type for s3://#{bucket_name}/#{key} content_type #{content_type[:content_type].inspect}"
100
+ end
97
101
  obj.upload_file(full_path, { acl: "public-read", cache_control: cache_control }.merge(content_type))
98
102
  end
99
103
 
@@ -152,6 +156,5 @@ module Jets::Cfn
152
156
  "#{minutes.to_i}m #{seconds.to_i}s"
153
157
  end
154
158
  end
155
-
156
159
  end
157
- end
160
+ end
data/lib/jets/cli.rb CHANGED
@@ -1,208 +1,33 @@
1
- require "thor"
2
-
3
- class Jets::CLI
4
- def self.start(given_args=ARGV)
5
- new(given_args).start
6
- end
7
-
8
- def self.thor_tasks
9
- Jets::Commands::Base.namespaced_commands
10
- end
11
-
12
- def initialize(given_args=ARGV, **config)
13
- @given_args = given_args.dup
14
- @config = config
15
- end
16
-
17
- def start
18
- # Needs to be at the beginning to avoid boot_jets which causes some load errors
19
- if version_requested?
20
- puts Jets.version
21
- return
22
- end
23
-
24
- # Need to boot jets at this point for commands like: jets routes, deploy, console, etc to work
25
- boot_jets
26
- command_class = lookup(full_command)
27
- if command_class
28
- command_class.perform(full_command, thor_args)
29
- else
30
- main_help
31
- end
32
- end
33
-
34
- # The commands new and help do not call Jets.boot. Main reason is that Jets.boot should be run in a Jets project.
35
- #
36
- # * jets new - need to generate a project outside a project folder.
37
- # * jets help - don't need to be in a project folder general help.
38
- #
39
- # When you are inside a project folder though, more help commands are available and displayed.
40
- #
41
- def boot_jets
42
- set_jets_env_from_cli_arg!
43
- command = thor_args.first
44
- unless %w[new help].include?(command)
45
- Jets::Turbo.new.charge # handles Afterburner mode
46
- Jets.boot
47
- end
48
- end
49
-
50
- def version_requested?
51
- # jets --version
52
- # jets -v
53
- version_flags = ["--version", "-v"]
54
- @given_args.length == 1 && !(@given_args & version_flags).empty?
55
- end
56
-
57
- # Adjust JETS_ENV before boot_jets is called for the `jets deploy` command. Must do this early in the process
58
- # before Jets.boot because because `bundler_require` is called as part of the bootup process. It sets the Jets.env
59
- # to whatever the JETS_ENV is at the time to require the right bundler group.
60
- #
61
- # Defaults to development when not set.
62
- def set_jets_env_from_cli_arg!
63
- # Pretty tricky, we need to use the raw @given_args as thor_args eventually calls Commands::Base#eager_load!
64
- # which uses Jets.env before we get a chance to override ENV['JETS_ENV']
65
- command, env = @given_args[0..1]
66
- return unless %w[deploy delete].include?(command)
67
- env = nil if env&.starts_with?('-')
68
- return unless env
69
- ENV['JETS_ENV'] = env ? env : 'development'
70
- end
71
-
72
- # thor_args normalized the args Array to work with our Thor command
73
- # subclasses.
74
- # 1. The namespace is stripe
75
- # 2. Help is shifted in front if a help flag is detected
76
- def thor_args
77
- args = @given_args.clone
78
-
79
- # jets generate is a special command requires doesn't puts out the help menu automatically when
80
- # `jets generate` is called without additional args. We'll take it over early and fix it here.
81
- generate = full_command == "generate"
82
-
83
- if generate && ((args.size == 1 || help_flags.include?(args.last)) || args.size == 2)
84
- puts Jets::Generator.help
85
- exit
86
- end
87
-
88
- help_args = args & help_flags
89
- unless help_args.empty?
90
- # Allow using help flags at the end of the command to trigger help menu
91
- args -= help_flags # remove "help" and help flags from args
92
- args[0] = meth # first command will always be the meth now since
93
- # we removed the help flags
94
- args.unshift("help")
95
- args.compact!
96
- return args
97
- end
98
-
99
- # reassigns the command without the namespace if reached here
100
- args[0] = meth
101
- args.compact
102
- end
103
-
104
- def meth
105
- return nil unless full_command
106
-
107
- if full_command.include?(':')
108
- full_command.split(':').pop
109
- else
110
- full_command
111
- end
112
- end
113
-
114
- ALIASES = {
115
- "g" => "generate",
116
- "c" => "console",
117
- "s" => "server",
118
- "db" => "dbconsole",
119
- }
120
- def full_command
121
- # Removes any args that starts with -, those are option args.
122
- # Also remove "help" flag.
123
- args = @given_args.reject {|o| o =~ /^-/ } - help_flags
124
- command = args[0] # first argument should always be the command
125
- command = ALIASES[command] || command
126
- Jets::Commands::Base.autocomplete(command)
127
- end
128
-
129
- # 1. look up Thor tasks
130
- # 2. look up Rake tasks
131
- # 3. help menu with all commands when both Thor and Rake tasks are not found
132
- def lookup(full_command)
133
- thor_task_found = Jets::Commands::Base.namespaced_commands.include?(full_command)
134
- if thor_task_found
135
- return Jets::Commands::Base.klass_from_namespace(namespace)
136
- end
137
-
138
- return unless jets_project?
139
- rake_task_found = Jets::Commands::RakeCommand.namespaced_commands.include?(full_command)
140
- if rake_task_found
141
- return Jets::Commands::RakeCommand
142
- end
143
- end
144
-
145
- def jets_project?
146
- File.exist?("config/application.rb")
147
- end
148
-
149
- # ["-h", "-?", "--help", "-D", "help"]
150
- def help_flags
151
- Thor::HELP_MAPPINGS + ["help"]
152
- end
153
-
154
- def namespace
155
- return nil unless full_command
156
-
157
- if full_command.include?(':')
158
- words = full_command.split(':')
159
- words.pop
160
- words.join(':')
161
- end
162
- end
163
-
164
- def main_help
165
- shell = Thor::Shell::Basic.new
166
- shell.say "Commands:"
167
- shell.print_table(thor_list, :indent => 2, :truncate => true)
168
-
169
- if jets_project? && !rake_list.empty?
170
- shell.say "\nCommands via rake:"
171
- shell.print_table(rake_list, :indent => 2, :truncate => true)
172
- end
173
-
174
- shell.say "\n"
175
- shell.say main_help_body
176
- end
177
-
178
- def thor_list
179
- Jets::Commands::Base.help_list(show_all_tasks)
180
- end
181
-
182
- def rake_list
183
- list = Jets::Commands::RakeCommand.formatted_rake_tasks(show_all_tasks)
184
- list.map do |array|
185
- array[0] = "jets #{array[0]}"
186
- array
187
- end
188
- end
189
-
190
- def show_all_tasks
191
- @given_args.include?("--all") || @given_args.include?("-A")
192
- end
1
+ # frozen_string_literal: true
2
+
3
+ require "jets/app_loader"
4
+
5
+ # If we are inside a Jets application this method performs an exec and thus
6
+ # the rest of this script is not run.
7
+ # exec_app either runs bin/jets or an inline version of it.
8
+ Jets::AppLoader.exec_app
9
+
10
+ # Allow running jets with local source code when bin/jets does not exist
11
+ # Useful for development: jets build
12
+ # Also allows jets to work without a bin/jets file in the project.
13
+ if File.exist?("config/application.rb")
14
+ APP_PATH = File.expand_path("config/application", Dir.pwd)
15
+ require "jets"
16
+ require "jets/commands"
17
+ return
18
+ end
193
19
 
194
- def main_help_body
195
- <<-EOL
196
- Add -h to any of the commands for more help. Examples:
20
+ # The rest of the script runs if outside of Jets application. IE:
21
+ # jets new demo
197
22
 
198
- jets call -h
199
- jets routes -h
200
- jets deploy -h
201
- jets status -h
202
- jets dynamodb:create -h
203
- jets db:create -h
23
+ require "jets/ruby_version_check"
24
+ Signal.trap("INT") { puts; exit(1) }
204
25
 
205
- EOL
206
- end
26
+ require "jets/command"
207
27
 
28
+ if ARGV.first == "plugin"
29
+ ARGV.shift
30
+ Jets::Command.invoke :plugin, ARGV
31
+ else
32
+ Jets::Command.invoke :application, ARGV
208
33
  end
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Jets
4
+ module Command
5
+ module Actions
6
+ # Change to the application's path if there is no <tt>config.ru</tt> file in current directory.
7
+ # This allows us to run <tt>jets server</tt> from other directories, but still get
8
+ # the main <tt>config.ru</tt> and properly set the <tt>tmp</tt> directory.
9
+ def set_application_directory!
10
+ Dir.chdir(File.expand_path("../..", APP_PATH)) unless File.exist?(File.expand_path("config.ru"))
11
+ end
12
+
13
+ def require_application_and_environment!
14
+ Jets.boot
15
+ end
16
+
17
+ def require_application!
18
+ require ENGINE_PATH if defined?(ENGINE_PATH)
19
+
20
+ if defined?(APP_PATH)
21
+ require APP_PATH
22
+ end
23
+ end
24
+
25
+ if defined?(ENGINE_PATH)
26
+ def load_tasks
27
+ Rake.application.init("jets")
28
+ Rake.application.load_rakefile
29
+ end
30
+
31
+ def load_generators
32
+ engine = ::Jets::Engine.find(ENGINE_ROOT)
33
+ Jets::Generators.namespace = engine.railtie_namespace
34
+ engine.load_generators
35
+ end
36
+ else
37
+ def load_tasks
38
+ Jets.boot # hack
39
+ Jets.application.load_tasks
40
+ end
41
+
42
+ def load_generators
43
+ Jets.application.load_generators
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
49
+