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,133 +0,0 @@
1
- # The class including this module should implement these methods:
2
- #
3
- # * compose
4
- # * template_path
5
- module Jets::Cfn::Builders
6
- module Interface
7
- extend Memoist
8
-
9
- def build(parent=false)
10
- # Do not bother building or writing the template unless there are functions defined
11
- return if @app_class && !@app_class.build?
12
-
13
- if @options.nil? || @options[:templates] || @options[:stack_type] != :minimal || parent
14
- compose # must be implemented by subclass
15
- end
16
- write
17
- end
18
-
19
- def write
20
- FileUtils.mkdir_p(File.dirname(template_path))
21
- IO.write(template_path, text)
22
- end
23
-
24
- def template
25
- # need the to_hash or the YAML dump has
26
- # !ruby/hash:ActiveSupport::HashWithIndifferentAccess
27
- @template.to_hash
28
- end
29
-
30
- def text
31
- text = YAML.dump(template)
32
- post_process_template(text)
33
- end
34
-
35
- # post process the text so that
36
- # "!Ref IamRole" => !Ref IamRole
37
- # We strip the surrounding quotes
38
- def post_process_template(text)
39
- results = text.split("\n").map do |line|
40
- if line.include?(': "!') # IE: IamRole: "!Ref IamRole",
41
- # IamRole: "!Ref IamRole" => IamRole: !Ref IamRole
42
- line.sub(/: "(.*)"/, ': \1')
43
- elsif line.include?('- "!') # IE: - "!GetAtt Foo.Arn"
44
- # IamRole: - "!GetAtt Foo.Arn" => - !GetAtt Foo.Arn
45
- line.sub(/- "(.*)"/, '- \1')
46
- else
47
- line
48
- end
49
- end
50
- results.join("\n") + "\n"
51
- end
52
-
53
- def add_description(desc)
54
- @template[:Description] = desc
55
- end
56
-
57
- def add_parameters(attributes)
58
- attributes.each do |name,value|
59
- add_parameter(name.to_s.camelize, Description: value)
60
- end
61
- end
62
-
63
- def add_parameter(name, options={})
64
- defaults = { Type: "String" }
65
- options = defaults.merge(options)
66
- @template[:Parameters] ||= {}
67
- @template[:Parameters][name.to_s.camelize] = Jets::Camelizer.transform(options)
68
- end
69
-
70
- def add_outputs(attributes)
71
- attributes.each do |name,value|
72
- add_output(name.to_s.camelize, Value: value)
73
- end
74
- end
75
-
76
- def add_output(name, options={})
77
- @template[:Outputs] ||= {}
78
- @template[:Outputs][name.camelize] = Jets::Camelizer.transform(options)
79
- end
80
-
81
- def add_resources
82
- @app_class.tasks.each do |task|
83
- task.associated_resources.each do |associated|
84
- resource = Jets::Resource.new(associated.definition, task.replacements)
85
- add_resource(resource)
86
- add_resource(resource.permission)
87
- end
88
- end
89
- end
90
-
91
- def add_resource(resource)
92
- add_template_resource(resource.logical_id, resource.type, resource.attributes)
93
- end
94
-
95
- # The add_resource method can take an options Hash with both with either
96
- # top level attributes or properties.
97
- #
98
- # Example:
99
- #
100
- # Top level options:
101
- #
102
- # add_template_resource("MyId", "AWS::ApiGateway::RestApi",
103
- # type: "AWS::ApiGateway::RestApi",
104
- # properties: {
105
- # name: "my-api"
106
- # },
107
- # depends_on: ["AnotherResource"]
108
- # )
109
- #
110
- # Simple options with properties only:
111
- #
112
- # add_template_resource("MyId", "AWS::CloudFormationStack",
113
- # template_url: "template_url",
114
- # parameters: {},
115
- # )
116
- #
117
- def add_template_resource(logical_id, type, options)
118
- options = Jets::Camelizer.transform(options)
119
-
120
- attributes = if options.include?('Type')
121
- base = { 'Type' => type }
122
- base.merge(options) # options are top-level attributes
123
- else
124
- {
125
- 'Type' => type,
126
- 'Properties' => options # options are properties
127
- }
128
- end
129
-
130
- @template['Resources'][logical_id] = attributes
131
- end
132
- end
133
- end
@@ -1,14 +0,0 @@
1
- # Implements:
2
- #
3
- # compose
4
- # template_path
5
- #
6
- module Jets::Cfn::Builders
7
- class JobBuilder < BaseChildBuilder
8
- def compose
9
- add_common_parameters
10
- add_functions
11
- add_resources
12
- end
13
- end
14
- end
@@ -1,130 +0,0 @@
1
- require 'erb'
2
-
3
- module Jets::Cfn::Builders
4
- class ParentBuilder
5
- include Interface
6
- include Jets::AwsServices
7
- include Stagger
8
-
9
- def initialize(options={})
10
- @options = options
11
- @template = ActiveSupport::HashWithIndifferentAccess.new(Resources: {})
12
- end
13
-
14
- # compose is an interface method
15
- def compose
16
- build_minimal_resources
17
- build_child_resources if full?
18
- end
19
-
20
- # template_path is an interface method
21
- def template_path
22
- Jets::Naming.parent_template_path
23
- end
24
-
25
- def build_minimal_resources
26
- add_description("Jets: #{Jets.version} Code: #{Util::Source.version}")
27
-
28
- # Initial s3 bucket, used to store code zipfile and templates Jets generates
29
- resource = Jets::Resource::S3::Bucket.new(logical_id: "s3_bucket",
30
- bucket_encryption: {
31
- server_side_encryption_configuration: [
32
- server_side_encryption_by_default: {
33
- sse_algorithm: "AES256"
34
- }]}
35
- )
36
- add_resource(resource)
37
- add_outputs(resource.outputs)
38
-
39
- return unless full?
40
- # Add application-wide IAM policy from Jets.config.iam_role
41
- resource = Jets::Resource::Iam::ApplicationRole.new
42
- add_resource(resource)
43
- add_outputs(resource.outputs)
44
-
45
- return if Jets.poly_only?
46
- resource = Jets::Resource::Lambda::GemLayer.new
47
- add_resource(resource)
48
- add_outputs(resource.outputs)
49
- end
50
-
51
- def build_child_resources
52
- for_each_path(:app) do |path|
53
- add_app_class_stack(path)
54
- end
55
- for_each_path(:shared) do |path|
56
- add_shared_resources(path)
57
- end
58
-
59
- if full? and !Jets::Router.routes.empty?
60
- for_each_path(:authorizers) do |path|
61
- add_authorizer_resources(path)
62
- end
63
- add_api_gateway
64
- add_api_resources
65
- add_api_deployment
66
- end
67
- end
68
-
69
- # Example paths:
70
- # #{Jets.build_root}/templates/demo-dev-2-shared-resources.yml
71
- # #{Jets.build_root}/templates/demo-dev-2-app-comments_controller.yml
72
- # #{Jets.build_root}/templates/demo-dev-2-authorizers-main_authorizer.yml
73
- def for_each_path(type)
74
- expression = "#{Jets::Naming.template_path_prefix}-#{type}-*"
75
- Dir.glob(expression).each do |path|
76
- next unless File.file?(path)
77
- yield(path)
78
- end
79
- end
80
-
81
- def full?
82
- @options[:templates] || @options[:stack_type] == :full
83
- end
84
-
85
- def add_app_class_stack(path)
86
- resource = Jets::Resource::ChildStack::AppClass.new(@options[:s3_bucket], path: path)
87
- add_stagger(resource)
88
- add_child_resources(resource)
89
- end
90
-
91
- def add_authorizer_resources(path)
92
- resource = Jets::Resource::ChildStack::Authorizer.new(@options[:s3_bucket], path: path)
93
- add_child_resources(resource)
94
- end
95
-
96
- def add_shared_resources(path)
97
- resource = Jets::Resource::ChildStack::Shared.new(@options[:s3_bucket], path: path)
98
- add_child_resources(resource) if resource.resources?
99
- end
100
-
101
- def add_api_gateway
102
- resource = Jets::Resource::ChildStack::ApiGateway.new(@options[:s3_bucket])
103
- add_child_resources(resource)
104
- end
105
-
106
- def add_api_resources
107
- expression = "#{Jets::Naming.template_path_prefix}-api-resources-*"
108
- # IE: path: #{Jets.build_root}/templates/demo-dev-2-api-resources-1.yml"
109
- Dir.glob(expression).sort.each do |path|
110
- next unless File.file?(path)
111
-
112
- regexp = Regexp.new("#{Jets.config.project_namespace}-api-resources-(\\d+).yml") # tricky to escape \d pattern
113
- md = path.match(regexp)
114
- page = md[1]
115
- resource = Jets::Resource::ChildStack::ApiResource.new(@options[:s3_bucket], page: page)
116
- add_child_resources(resource)
117
- end
118
- end
119
-
120
- def add_api_deployment
121
- resource = Jets::Resource::ChildStack::ApiDeployment.new(@options[:s3_bucket])
122
- add_child_resources(resource)
123
- end
124
-
125
- def add_child_resources(resource)
126
- add_resource(resource)
127
- add_outputs(resource.outputs)
128
- end
129
- end
130
- end
@@ -1,15 +0,0 @@
1
- module Jets::Cfn
2
- # Caches the built template to reduce filesystem IO calls.
3
- class BuiltTemplate
4
- class << self
5
- @@cache = {}
6
- def get(path)
7
- if @@cache[path]
8
- @@cache[path] # using cache
9
- else
10
- @@cache[path] = YAML.load_file(path) # setting and using cache
11
- end
12
- end
13
- end
14
- end
15
- end
@@ -1,61 +0,0 @@
1
- module Jets::Cfn
2
- class TemplateSource
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 to_h
21
- if upload_to_s3?
22
- from_s3
23
- else
24
- from_path
25
- end
26
- end
27
-
28
- private
29
-
30
- def upload_to_s3?
31
- bucket_name.present?
32
- end
33
-
34
- def from_s3
35
- {
36
- template_url: url
37
- }
38
- end
39
-
40
- def from_path
41
- {
42
- template_body: body
43
- }
44
- end
45
-
46
- def upload_file_to_s3
47
- obj = s3_resource.bucket(bucket_name).object(s3_key)
48
- obj.upload_file(path)
49
-
50
- "https://s3.amazonaws.com/#{bucket_name}/#{s3_key}"
51
- end
52
-
53
- def bucket_name
54
- @options[:s3_bucket]
55
- end
56
-
57
- def s3_key
58
- @s3_key ||= "jets/cfn-templates/#{File.basename(path)}"
59
- end
60
- end
61
- end
@@ -1,145 +0,0 @@
1
- require "thor"
2
-
3
- # Override thor's long_desc identation behavior
4
- # https://github.com/erikhuda/thor/issues/398
5
- class Thor
6
- module Shell
7
- class Basic
8
- def print_wrapped(message, options = {})
9
- message = "\n#{message}" unless message.starts_with?("\n")
10
- stdout.puts message
11
- end
12
- end
13
- end
14
- end
15
-
16
- class Jets::Commands::Base < Thor
17
- class << self
18
- extend Memoist
19
-
20
- # thor_args is an array of commands. Examples:
21
- # ["help"]
22
- # ["dynamodb:migrate"]
23
- #
24
- # Same signature as RakeCommand.perform. Not using full_command.
25
- def perform(full_command, thor_args)
26
- config = {} # doesnt seem like config is used
27
- dispatch(nil, thor_args, nil, config)
28
- end
29
-
30
- # Hacky way to handle error for 'jets new' when no project name is passed in to avoid
31
- # this error:
32
- #
33
- # required arguments 'project_name' (Thor::RequiredArgumentMissingError)
34
- def dispatch(command, given_args, given_opts, config)
35
- if given_args.reject{|s| s =~ /^-/} == ['new'] # user forgot to pass a project name
36
- given_args = ['help', 'new']
37
- end
38
- super
39
- end
40
-
41
- # Track all command subclasses.
42
- def subclasses
43
- @subclasses ||= []
44
- end
45
-
46
- def inherited(base)
47
- super
48
-
49
- if base.name
50
- self.subclasses << base
51
- end
52
- end
53
-
54
- # Fully qualifed task names. Examples:
55
- # build
56
- # process:controller
57
- # dynamodb:migrate:down
58
- def namespaced_commands
59
- eager_load!
60
- subclasses.map do |klass|
61
- # This all_tasks is part of Thor not the lambda/dsl.rb
62
- klass.all_tasks.keys.map do |task_name|
63
- klass = klass.to_s.sub('Jets::Commands::','')
64
- namespace = klass =~ /^Main/ ? nil : klass.underscore.gsub('/',':')
65
- [namespace, task_name].compact.join(':')
66
- end
67
- end.flatten.sort
68
- end
69
-
70
- # Use Jets banner instead of Thor to account for namespaces in commands.
71
- def banner(command, namespace = nil, subcommand = false)
72
- namespace = namespace_from_class(self)
73
- command_name = command.usage # set with desc when defining tht Thor class
74
- namespaced_command = [namespace, command_name].compact.join(':')
75
-
76
- "jets #{namespaced_command}"
77
- end
78
-
79
- def namespace_from_class(klass)
80
- namespace = klass.to_s.sub('Jets::Commands::', '').underscore.gsub('/',':')
81
- namespace unless namespace == "main"
82
- end
83
-
84
- def help_list(all=false)
85
- # hack to show hidden comands when requested
86
- Thor::HiddenCommand.class_eval do
87
- def hidden?; false; end
88
- end if all
89
-
90
- list = []
91
- eager_load!
92
- subclasses.each do |klass|
93
- commands = klass.printable_commands(true, false)
94
- commands.reject! { |array| array[0].include?(':help') }
95
- list += commands
96
- end
97
-
98
- list.sort_by! { |array| array[0] }
99
- end
100
-
101
- def klass_from_namespace(namespace)
102
- if namespace.nil?
103
- Jets::Commands::Main
104
- else
105
- class_name = namespace.gsub(':','/')
106
- class_name = "Jets::Commands::#{class_name.camelize}"
107
- class_name.constantize
108
- end
109
- end
110
-
111
- # If this fails to find a match then return the original full command
112
- def autocomplete(full_command)
113
- return nil if full_command.nil? # jets help
114
-
115
- eager_load!
116
-
117
- words = full_command.split(':')
118
- namespace = words[0..-2].join(':') if words.size > 1
119
- command = words.last
120
-
121
- # Thor's normalize_command_name autocompletes the command but then we need to add the namespace back
122
- begin
123
- thor_subclass = klass_from_namespace(namespace) # could NameError
124
- command = thor_subclass.normalize_command_name(command) # could Thor::AmbiguousCommandError
125
- [namespace, command].compact.join(':')
126
- rescue NameError
127
- full_command # return original full_command
128
- rescue Thor::AmbiguousCommandError => e
129
- puts "Unable to autodetect the command name. #{e.message}."
130
- full_command # return original full_command
131
- end
132
- end
133
-
134
- # For help menu to list all commands, we must eager load the command classes.
135
- #
136
- # There is special eager_load logic here because this is called super early as part of the CLI start.
137
- # We cannot assume we have full access to to the project yet.
138
- def eager_load!
139
- return if Jets::Turbo.afterburner?
140
-
141
- Jets::Autoloaders.cli.eager_load
142
- end
143
- memoize :eager_load!
144
- end
145
- end
@@ -1,182 +0,0 @@
1
- require "base64"
2
- require "json"
3
-
4
- class Jets::Commands::Call
5
- include Jets::AwsServices
6
-
7
- def initialize(provided_function_name, event, options={})
8
- @options = options
9
- @guess = @options[:guess].nil? ? true : @options[:guess]
10
-
11
- @provided_function_name = provided_function_name
12
- @event = event
13
-
14
- @invocation_type = options[:invocation_type] || "RequestResponse"
15
- @log_type = options[:log_type] || "Tail"
16
- @qualifier = @qualifier
17
- end
18
-
19
- def function_name
20
- if @guess
21
- ensure_guesses_found! # possibly exits here
22
- guesser.function_name # guesser adds namespace already
23
- else
24
- [Jets.config.project_namespace, @provided_function_name].join('-')
25
- end
26
- end
27
-
28
- def run
29
- @options[:local] ? local_run : remote_run
30
- end
31
-
32
- # With local mode there is no way to bypass the guesser
33
- def local_run
34
- puts "Local mode enabled!"
35
- ensure_guesses_found! # possibly exits here
36
- klass = guesser.class_name.constantize
37
- # Example:
38
- # PostsController.process(event, context, meth)
39
- event = JSON.load(transformed_event) || {} # transformed_event is JSON text String
40
-
41
- fun = Jets::PolyFun.new(klass, guesser.method_name)
42
- result = fun.run(event) # check the logs for polymorphic function errors
43
- # Note: even though data might not always be json, the JSON.dump does a
44
- # good job of not bombing, so always calling it to simplify code.
45
-
46
- text = Jets::Util.normalize_result(result)
47
- STDOUT.puts text
48
- end
49
-
50
- def remote_run
51
- puts "Calling lambda function #{function_name} on AWS" unless @options[:mute]
52
- return if @options[:noop]
53
-
54
- options = {
55
- # client_context: client_context,
56
- function_name: function_name,
57
- invocation_type: @invocation_type, # "Event", # RequestResponse
58
- log_type: @log_type, # pretty sweet
59
- payload: transformed_event, # "fileb://file-path/input.json", <= JSON
60
- qualifier: @qualifier, # "1",
61
- }
62
-
63
- begin
64
- resp = lambda_client.invoke(options)
65
- rescue Aws::Lambda::Errors::ResourceNotFoundException
66
- puts "The function #{function_name} was not found. Maybe check the spelling or the AWS_PROFILE?".color(:red)
67
- return
68
- end
69
-
70
- if @options[:show_log]
71
- puts "Last 4KB of log in the x-amz-log-result header:".color(:green)
72
- puts Base64.decode64(resp.log_result)
73
- end
74
-
75
- add_console_link_to_clipboard
76
- result = resp.payload.read # already been normalized/JSON.dump by AWS
77
- unless @options[:mute_output]
78
- STDOUT.puts result # only thing that goes to stdout
79
- end
80
- end
81
-
82
- def guesser
83
- @guesser ||= Guesser.new(@provided_function_name)
84
- end
85
-
86
- def ensure_guesses_found!
87
- unless guesser.class_name and guesser.method_name
88
- puts guesser.error_message
89
- exit
90
- end
91
- end
92
-
93
- # @event is String because it can be the file:// notation
94
- # Returns text String for the lambda.invoke payload.
95
- def transformed_event
96
- text = @event
97
- if text && text.include?("file://")
98
- text = load_event_from_file(text)
99
- end
100
-
101
- check_valid_json!(text)
102
-
103
- puts "Function name: #{function_name.color(:green)}" unless @options[:mute]
104
- return text unless function_name.include?("_controller-")
105
- return text if @options[:lambda_proxy] == false
106
-
107
- event = JSON.load(text)
108
- lambda_proxy = {"queryStringParameters" => event}
109
- JSON.dump(lambda_proxy)
110
- end
111
-
112
- def load_event_from_file(text)
113
- path = text.gsub('file://','')
114
- path = "#{Jets.root}/#{path}" unless path[0..0] == '/'
115
- unless File.exist?(path)
116
- puts "File #{path} does not exist. Are you sure the file exists?".color(:red)
117
- exit
118
- end
119
- text = IO.read(path)
120
- end
121
-
122
- # Exits with friendly error message when user provides bad just
123
- def check_valid_json!(text)
124
- JSON.load(text)
125
- rescue JSON::ParserError => e
126
- puts "Invalid json provided:\n '#{text}'"
127
- puts "Exiting... Please try again and provide valid json."
128
- exit 1
129
- end
130
-
131
- # So use can quickly paste this into their browser if they want to see the function
132
- # via the Lambda console
133
- def add_console_link_to_clipboard
134
- return unless RUBY_PLATFORM =~ /darwin/
135
- return unless system("type pbcopy > /dev/null")
136
-
137
- # TODO: for add_console_link_to_clipboard get the region from the ~/.aws/config and AWS_PROFILE setting
138
- region = Aws::S3::Client.new.config.region || ENV["AWS_REGION"] ||'us-east-1'
139
- link = "https://console.aws.amazon.com/lambda/home?region=#{region}#/functions/#{function_name}?tab=configuration"
140
- system("echo #{link} | pbcopy")
141
- puts "Pro tip: The Lambda Console Link to the #{function_name} function has been added to your clipboard." unless @options[:mute]
142
- end
143
-
144
- # TODO: Hook client_context up and make sure it works. Think I've figure out how to sign client_context below.
145
- # Client context must be a valid Base64-encoded JSON object
146
- # Example: http://docs.aws.amazon.com/mobileanalytics/latest/ug/PutEvents.html
147
- def client_context
148
- context = {
149
- "client" => {
150
- "client_id" => "Jets",
151
- "app_title" => "jets call cli",
152
- "app_version_name" => Jets::VERSION,
153
- },
154
- "custom" => {},
155
- "env" =>{
156
- "platform" => RUBY_PLATFORM,
157
- "platform_version" => RUBY_VERSION,
158
- }
159
- }
160
- Base64.encode64(JSON.dump(context))
161
- end
162
-
163
- # For this class redirect puts to stderr so user can pipe output to tools like
164
- # jq. Example:
165
- # jets call posts_controller-index '{"test":1}' | jq .
166
- def puts(text)
167
- $stderr.puts(text)
168
- end
169
-
170
- def lambda_client
171
- opt = {}
172
- opt = opt.merge({retry_limit: @options[:retry_limit]}) if @options[:retry_limit].present?
173
- opt = opt.merge({http_read_timeout: @options[:read_timeout]}) if @options[:read_timeout].present?
174
-
175
- if opt.empty?
176
- aws_lambda
177
- else
178
- Aws::Lambda::Client.new(opt)
179
- end
180
- end
181
-
182
- end
@@ -1,19 +0,0 @@
1
- module Jets::Commands
2
- class Clean < Jets::Commands::Base
3
- class_option :noop, type: :boolean, desc: "noop or dry-run mode"
4
- class_option :mute, type: :boolean, desc: "mute output"
5
- class_option :yes, aliases: "y", type: :boolean, desc: "bypass are you sure prompt"
6
-
7
- desc "log", "Cleans CloudWatch log groups assocated with app"
8
- long_desc Help.text('clean:log')
9
- def log
10
- Log.new(options).clean
11
- end
12
-
13
- desc "build", "Cleans jets build"
14
- long_desc Help.text('clean:build')
15
- def build
16
- Build.new(options).clean
17
- end
18
- end
19
- end