jets 4.0.17 → 5.0.0.beta1

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 (616) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +5 -1
  3. data/CHANGELOG.md +52 -23
  4. data/Gemfile +1 -5
  5. data/LICENSE.txt +1 -1
  6. data/Rakefile +3 -3
  7. data/engines/internal/app/controllers/jets/application_controller.rb +28 -0
  8. data/engines/internal/app/controllers/jets/bare_controller.rb +6 -0
  9. data/engines/internal/app/controllers/jets/health_controller.rb +55 -0
  10. data/engines/internal/app/controllers/jets/info_controller.rb +45 -0
  11. data/{lib/jets → engines}/internal/app/controllers/jets/mailers_controller.rb +12 -14
  12. data/{lib/jets → engines}/internal/app/controllers/jets/mount_controller.rb +6 -10
  13. data/{lib/jets → engines}/internal/app/controllers/jets/public_controller.rb +6 -2
  14. data/engines/internal/app/controllers/jets/welcome_controller.rb +9 -0
  15. data/{lib/jets → engines}/internal/app/functions/jets/base_path.rb +2 -1
  16. data/{lib/jets → engines}/internal/app/functions/jets/base_path_mapping.rb +26 -6
  17. data/engines/internal/app/jobs/jets/preheat_job.rb +67 -0
  18. data/engines/internal/app/views/jets/info/properties.html.erb +1 -0
  19. data/engines/internal/app/views/jets/info/routes.html.erb +10 -0
  20. data/{lib/jets → engines}/internal/app/views/jets/mailers/email.html.erb +37 -17
  21. data/engines/internal/app/views/jets/mailers/index.html.erb +8 -0
  22. data/engines/internal/app/views/jets/mailers/mailer.html.erb +6 -0
  23. data/{lib/jets/commands/templates/skeleton/public/index.html.tt → engines/internal/app/views/jets/welcome/index.html.erb} +8 -4
  24. data/engines/internal/app/views/layouts/application.html.erb +51 -0
  25. data/engines/internal/lib/internal/actiondispatch.rb +39 -0
  26. data/engines/internal/lib/internal/actionmailer.rb +51 -0
  27. data/engines/internal/lib/internal/actionview.rb +152 -0
  28. data/engines/internal/lib/internal/activerecord.rb +37 -0
  29. data/engines/internal/lib/internal/activesupport.rb +47 -0
  30. data/engines/internal/lib/internal/engine.rb +13 -0
  31. data/engines/internal/lib/internal/i18n_engine.rb +19 -0
  32. data/engines/internal/lib/internal/jets_controller.rb +46 -0
  33. data/engines/internal/lib/internal/overrides/debug_exceptions.rb +40 -0
  34. data/engines/internal/lib/internal/templates/rescues/_trace.html.erb +62 -0
  35. data/engines/internal/lib/internal/templates/rescues/_trace.text.erb +9 -0
  36. data/engines/internal/lib/internal/turbines/asset_tag_helper.rb +70 -0
  37. data/engines/internal/lib/internal/turbines/helpers.rb +18 -0
  38. data/engines/internal/lib/internal/turbines/routes_helpers.rb +42 -0
  39. data/exe/jets +1 -10
  40. data/jets.gemspec +29 -27
  41. data/lib/jets/app_loader.rb +77 -0
  42. data/lib/jets/application/bootstrap.rb +100 -0
  43. data/lib/jets/application/configuration/defaults.rb +256 -0
  44. data/lib/jets/application/configuration.rb +494 -0
  45. data/lib/jets/application/default_middleware_stack.rb +140 -0
  46. data/lib/jets/application/dummy_erb_compiler.rb +18 -0
  47. data/lib/jets/application/finisher.rb +266 -0
  48. data/lib/jets/application/routes_reloader.rb +80 -0
  49. data/lib/jets/application.rb +515 -198
  50. data/lib/jets/authorizer/base.rb +1 -0
  51. data/lib/jets/authorizer/dsl.rb +15 -11
  52. data/lib/jets/authorizer/helpers/iam_helper.rb +13 -11
  53. data/lib/jets/autoloaders/gem.rb +70 -0
  54. data/lib/jets/autoloaders/inflector.rb +21 -0
  55. data/lib/jets/autoloaders.rb +38 -101
  56. data/lib/jets/aws_services/stack_status.rb +1 -1
  57. data/lib/jets/backtrace_cleaner.rb +27 -0
  58. data/lib/jets/booter.rb +29 -176
  59. data/lib/jets/builders/code_builder.rb +45 -117
  60. data/lib/jets/builders/code_size.rb +1 -0
  61. data/lib/jets/builders/gem_replacer.rb +5 -6
  62. data/lib/jets/builders/handler_generator.rb +34 -14
  63. data/lib/jets/builders/lambda_layer.rb +2 -7
  64. data/lib/jets/builders/purger.rb +1 -1
  65. data/lib/jets/builders/rack_packager.rb +1 -1
  66. data/lib/jets/builders/ruby_packager.rb +32 -21
  67. data/lib/jets/builders/shim_vars/app.rb +10 -6
  68. data/lib/jets/builders/templates/handlers/one_lambda_for_all_controllers.rb +33 -0
  69. data/lib/jets/builders/templates/handlers/one_lambda_per_controller.rb +20 -0
  70. data/lib/jets/builders/templates/{handler.rb → handlers/one_lambda_per_method.rb} +6 -0
  71. data/lib/jets/bundle.rb +2 -9
  72. data/lib/jets/cfn/base.rb +82 -0
  73. data/lib/jets/cfn/builder/api/base.rb +12 -0
  74. data/lib/jets/cfn/{builders/api_deployment_builder.rb → builder/api/deployment.rb} +10 -20
  75. data/lib/jets/cfn/{builders/api_gateway_builder.rb → builder/api/gateway.rb} +14 -37
  76. data/lib/jets/cfn/builder/api/mapping.rb +54 -0
  77. data/lib/jets/cfn/builder/api/methods.rb +72 -0
  78. data/lib/jets/cfn/builder/api/paged.rb +30 -0
  79. data/lib/jets/cfn/builder/api/pages/base.rb +105 -0
  80. data/lib/jets/cfn/builder/api/pages/methods.rb +17 -0
  81. data/lib/jets/cfn/builder/api/pages/page.rb +19 -0
  82. data/lib/jets/cfn/builder/api/pages/resources.rb +21 -0
  83. data/lib/jets/cfn/builder/api/resources.rb +40 -0
  84. data/lib/jets/cfn/{builders/authorizer_builder.rb → builder/authorizer.rb} +16 -19
  85. data/lib/jets/cfn/builder/controller.rb +28 -0
  86. data/lib/jets/cfn/builder/function.rb +9 -0
  87. data/lib/jets/cfn/{builders → builder}/interface.rb +45 -51
  88. data/lib/jets/cfn/builder/job.rb +10 -0
  89. data/lib/jets/cfn/builder/nested.rb +130 -0
  90. data/lib/jets/cfn/builder/one_controller.rb +53 -0
  91. data/lib/jets/cfn/{builders/parent_builder → builder/parent}/stagger.rb +1 -1
  92. data/lib/jets/cfn/{builders/parent_builder.rb → builder/parent.rb} +54 -54
  93. data/lib/jets/cfn/builder/post_process.rb +25 -0
  94. data/lib/jets/cfn/{builders/rule_builder.rb → builder/rule.rb} +4 -8
  95. data/lib/jets/cfn/{builders/shared_builder.rb → builder/shared.rb} +4 -3
  96. data/lib/jets/cfn/{builders → builder}/util/source.rb +1 -1
  97. data/lib/jets/{commands/build.rb → cfn/builder.rb} +50 -78
  98. data/lib/jets/cfn/deployment.rb +45 -0
  99. data/lib/jets/cfn/download.rb +39 -0
  100. data/lib/jets/cfn/params/api/base.rb +39 -0
  101. data/lib/jets/cfn/params/api/cors.rb +10 -0
  102. data/lib/jets/cfn/params/api/methods.rb +69 -0
  103. data/lib/jets/cfn/params/api/resources.rb +28 -0
  104. data/lib/jets/{resource/child_stack/common_parameters.rb → cfn/params/common.rb} +3 -3
  105. data/lib/jets/{resource → cfn/resource}/api_gateway/authorizer.rb +21 -21
  106. data/lib/jets/cfn/resource/api_gateway/base_path/function.rb +57 -0
  107. data/lib/jets/{resource → cfn/resource}/api_gateway/base_path/mapping.rb +13 -12
  108. data/lib/jets/cfn/resource/api_gateway/base_path/role.rb +70 -0
  109. data/lib/jets/{resource → cfn/resource}/api_gateway/deployment.rb +13 -20
  110. data/lib/jets/{resource → cfn/resource}/api_gateway/domain_name.rb +11 -11
  111. data/lib/jets/{resource → cfn/resource}/api_gateway/method/authorization.rb +1 -1
  112. data/lib/jets/cfn/resource/api_gateway/method.rb +92 -0
  113. data/lib/jets/{resource → cfn/resource}/api_gateway/resource.rb +14 -10
  114. data/lib/jets/cfn/resource/api_gateway/resource_id.rb +25 -0
  115. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/change_detection.rb +1 -1
  116. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/logical_id/message.rb +1 -1
  117. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/logical_id.rb +1 -1
  118. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/base.rb +4 -3
  119. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/media_types.rb +2 -2
  120. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/page.rb +5 -5
  121. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/to.rb +8 -3
  122. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/variable.rb +2 -2
  123. data/lib/jets/cfn/resource/api_gateway/rest_api/routes/change.rb +21 -0
  124. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/collision/variable_exception.rb +1 -1
  125. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/collision.rb +1 -1
  126. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes.rb +1 -1
  127. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api.rb +12 -12
  128. data/lib/jets/{resource → cfn/resource}/associated.rb +1 -1
  129. data/lib/jets/{resource → cfn/resource}/config/config_rule.rb +18 -18
  130. data/lib/jets/{resource → cfn/resource}/config/managed_rule.rb +5 -5
  131. data/lib/jets/{resource → cfn/resource}/events/rule.rb +10 -10
  132. data/lib/jets/{resource → cfn/resource}/iam/application_role.rb +4 -4
  133. data/lib/jets/{resource → cfn/resource}/iam/base_role_definition.rb +15 -15
  134. data/lib/jets/{resource → cfn/resource}/iam/class_role.rb +5 -5
  135. data/lib/jets/{resource → cfn/resource}/iam/function_role.rb +6 -6
  136. data/lib/jets/{resource → cfn/resource}/iam/managed_policy.rb +1 -1
  137. data/lib/jets/{resource → cfn/resource}/iam/policy.rb +8 -8
  138. data/lib/jets/{resource → cfn/resource}/iam/policy_document.rb +10 -9
  139. data/lib/jets/{resource → cfn/resource}/iot/topic_rule.rb +10 -10
  140. data/lib/jets/{resource → cfn/resource}/lambda/event_source_mapping.rb +9 -9
  141. data/lib/jets/cfn/resource/lambda/function/controller.rb +21 -0
  142. data/lib/jets/{resource → cfn/resource}/lambda/function/environment.rb +4 -5
  143. data/lib/jets/cfn/resource/lambda/function.rb +266 -0
  144. data/lib/jets/{resource → cfn/resource}/lambda/gem_layer.rb +2 -2
  145. data/lib/jets/{resource → cfn/resource}/lambda/layer_version.rb +10 -10
  146. data/lib/jets/cfn/resource/lambda/permission.rb +51 -0
  147. data/lib/jets/cfn/resource/logs/subscription_filter.rb +31 -0
  148. data/lib/jets/cfn/resource/nested/api/base.rb +4 -0
  149. data/lib/jets/cfn/resource/nested/api/deployment.rb +53 -0
  150. data/lib/jets/cfn/resource/nested/api/gateway.rb +15 -0
  151. data/lib/jets/cfn/resource/nested/api/mapping.rb +33 -0
  152. data/lib/jets/cfn/resource/nested/api/methods.rb +30 -0
  153. data/lib/jets/cfn/resource/nested/api/page.rb +8 -0
  154. data/lib/jets/cfn/resource/nested/api/resources.rb +22 -0
  155. data/lib/jets/{resource/child_stack → cfn/resource/nested}/app_class.rb +15 -48
  156. data/lib/jets/{resource/child_stack → cfn/resource/nested}/authorizer.rb +8 -14
  157. data/lib/jets/cfn/resource/nested/base.rb +38 -0
  158. data/lib/jets/cfn/resource/nested/one_controller.rb +48 -0
  159. data/lib/jets/{resource/child_stack → cfn/resource/nested}/shared.rb +10 -16
  160. data/lib/jets/cfn/resource/one/function.rb +66 -0
  161. data/lib/jets/cfn/resource/one/permission.rb +17 -0
  162. data/lib/jets/{resource → cfn/resource}/replacer.rb +26 -27
  163. data/lib/jets/{resource → cfn/resource}/route53/record_set.rb +18 -18
  164. data/lib/jets/{resource → cfn/resource}/s3/bucket.rb +4 -4
  165. data/lib/jets/cfn/resource/s3/jets_bucket.rb +68 -0
  166. data/lib/jets/{resource → cfn/resource}/sns/subscription.rb +8 -8
  167. data/lib/jets/{resource → cfn/resource}/sns/topic.rb +10 -10
  168. data/lib/jets/{resource → cfn/resource}/sns/topic_policy.rb +13 -13
  169. data/lib/jets/{resource → cfn/resource}/sqs/queue.rb +5 -5
  170. data/lib/jets/{resource → cfn/resource}/standardizer.rb +8 -9
  171. data/lib/jets/cfn/resource.rb +8 -0
  172. data/lib/jets/cfn/ship.rb +20 -19
  173. data/lib/jets/cfn/template.rb +89 -0
  174. data/lib/jets/cfn/upload.rb +40 -37
  175. data/lib/jets/cli.rb +28 -210
  176. data/lib/jets/command/actions.rb +49 -0
  177. data/lib/jets/command/api_helpers.rb +41 -0
  178. data/lib/jets/command/aws_helpers.rb +26 -0
  179. data/lib/jets/command/base.rb +204 -0
  180. data/lib/jets/command/behavior.rb +83 -0
  181. data/lib/jets/command/environment_argument.rb +42 -0
  182. data/lib/jets/command/help/call.md +48 -0
  183. data/lib/jets/{commands → command}/help/deploy.md +1 -1
  184. data/lib/jets/command/help/logs.md +21 -0
  185. data/lib/jets/{commands → command}/help/new.md +3 -4
  186. data/lib/jets/command/help/projects.md +6 -0
  187. data/lib/jets/command/help/releases.md +37 -0
  188. data/lib/jets/command/help/rollback.md +5 -0
  189. data/lib/jets/command/help/routes.md +15 -0
  190. data/lib/jets/command/help/stacks.md +6 -0
  191. data/lib/jets/command/help.rb +17 -0
  192. data/lib/jets/command/helpers/editor.rb +35 -0
  193. data/lib/jets/command.rb +133 -0
  194. data/lib/jets/commands/application/application_command.rb +40 -0
  195. data/lib/jets/commands/build/build_command.rb +33 -0
  196. data/lib/jets/commands/call/anonymous_guesser.rb +1 -1
  197. data/lib/jets/commands/call/autoload_guesser.rb +2 -2
  198. data/lib/jets/commands/call/base_guesser.rb +4 -4
  199. data/lib/jets/commands/call/call_command.rb +27 -0
  200. data/lib/jets/commands/call/caller.rb +184 -0
  201. data/lib/jets/commands/call/guesser.rb +1 -1
  202. data/lib/jets/commands/clean/base.rb +1 -1
  203. data/lib/jets/commands/clean/build.rb +1 -1
  204. data/lib/jets/commands/clean/clean_command.rb +15 -0
  205. data/lib/jets/commands/clean/log.rb +1 -1
  206. data/lib/jets/commands/configure/configure_command.rb +9 -0
  207. data/lib/jets/commands/console/console_command.rb +38 -0
  208. data/lib/jets/commands/credentials/USAGE +103 -0
  209. data/lib/jets/commands/credentials/credentials_command/diffing.rb +51 -0
  210. data/lib/jets/commands/credentials/credentials_command.rb +139 -0
  211. data/lib/jets/commands/db/system/change/change_command.rb +24 -0
  212. data/lib/jets/commands/dbconsole/dbconsole_command.rb +184 -0
  213. data/lib/jets/commands/degenerate/degenerate_command.rb +21 -0
  214. data/lib/jets/commands/delete/delete_command.rb +155 -0
  215. data/lib/jets/commands/{deploy.rb → deploy/deploy_command.rb} +28 -47
  216. data/lib/jets/commands/dev/dev_command.rb +19 -0
  217. data/lib/jets/commands/{dotenv.rb → dotenv/dotenv_command.rb} +2 -2
  218. data/lib/jets/commands/encrypted/USAGE +46 -0
  219. data/lib/jets/commands/encrypted/encrypted_command.rb +87 -0
  220. data/lib/jets/commands/gems/gems_command.rb +14 -0
  221. data/lib/jets/commands/generate/generate_command.rb +95 -0
  222. data/lib/jets/commands/help/USAGE +20 -0
  223. data/lib/jets/commands/help/help_command.rb +15 -0
  224. data/lib/jets/commands/initializers/initializers_command.rb +19 -0
  225. data/lib/jets/commands/logs/logs_command.rb +45 -0
  226. data/lib/jets/commands/new/new_command.rb +19 -0
  227. data/lib/jets/commands/notes/notes_command.rb +30 -0
  228. data/lib/jets/commands/plugin/plugin_command.rb +45 -0
  229. data/lib/jets/commands/projects/projects_command.rb +30 -0
  230. data/lib/jets/commands/rake/rake_command.rb +59 -0
  231. data/lib/jets/commands/releases/releases_command.rb +72 -0
  232. data/lib/jets/commands/rollback/rollback_command.rb +41 -0
  233. data/lib/jets/commands/routes/routes_command.rb +19 -0
  234. data/lib/jets/commands/runner/runner_command.rb +60 -0
  235. data/lib/jets/commands/server/server_command.rb +291 -0
  236. data/lib/jets/commands/stacks/stacks_command.rb +39 -0
  237. data/lib/jets/commands/status/status_command.rb +9 -0
  238. data/lib/jets/commands/{url.rb → url/url_command.rb} +37 -14
  239. data/lib/jets/commands/version/version_command.rb +11 -0
  240. data/lib/jets/commands.rb +17 -0
  241. data/lib/jets/configuration.rb +166 -0
  242. data/lib/jets/controller/base.rb +105 -183
  243. data/lib/jets/controller/compat/abstract_controller/base.rb +126 -0
  244. data/lib/jets/controller/compat/action_controller/metal.rb +99 -0
  245. data/lib/jets/controller/compat/caching.rb +13 -0
  246. data/lib/jets/controller/compat/future.rb +13 -0
  247. data/lib/jets/controller/compat/route_set.rb +47 -0
  248. data/lib/jets/controller/decorate/apigw_stage.rb +39 -0
  249. data/lib/jets/controller/{authorization.rb → decorate/authorization.rb} +1 -1
  250. data/lib/jets/controller/decorate/logging.rb +90 -0
  251. data/lib/jets/controller/decorate/redirecting.rb +16 -0
  252. data/lib/jets/controller/decorate/url_for.rb +10 -0
  253. data/lib/jets/controller/{rack/adapter.rb → handler/apigw.rb} +36 -37
  254. data/lib/jets/controller/handler.rb +41 -0
  255. data/lib/jets/controller/middleware/main.rb +16 -8
  256. data/lib/jets/controller/middleware/{local/api_gateway.rb → mimic/apigw.rb} +40 -15
  257. data/lib/jets/controller/middleware/mimic/lambda_context.rb +44 -0
  258. data/lib/jets/controller/middleware/{local.rb → mimic.rb} +36 -51
  259. data/lib/jets/controller/rack_adapter/action.rb +35 -0
  260. data/lib/jets/controller/{rack → rack_adapter}/env.rb +39 -24
  261. data/lib/jets/controller/request/compat/params.rb +144 -0
  262. data/lib/jets/controller/request/compat/request.rb +125 -0
  263. data/lib/jets/controller/request.rb +35 -18
  264. data/lib/jets/controller/response/compat/response.rb +67 -0
  265. data/lib/jets/controller/response.rb +91 -8
  266. data/lib/jets/core.rb +136 -51
  267. data/lib/jets/core_ext/kernel.rb +2 -2
  268. data/lib/jets/core_ext/symbol.rb +5 -0
  269. data/lib/jets/core_ext.rb +4 -0
  270. data/lib/jets/dev_caching.rb +44 -0
  271. data/lib/jets/dotenv/ssm.rb +2 -2
  272. data/lib/jets/dotenv.rb +2 -1
  273. data/lib/jets/engine/configuration.rb +96 -0
  274. data/lib/jets/engine/turbines.rb +23 -0
  275. data/lib/jets/engine.rb +380 -0
  276. data/lib/jets/exception_reporting.rb +43 -0
  277. data/lib/jets/generators/job/job_generator.rb +41 -0
  278. data/lib/jets/generators/job/templates/event_types/dynamodb.rb.tt +8 -0
  279. data/lib/jets/generators/job/templates/event_types/iot.rb.tt +8 -0
  280. data/lib/jets/generators/job/templates/event_types/kinesis.rb.tt +9 -0
  281. data/lib/jets/generators/job/templates/event_types/log.rb.tt +9 -0
  282. data/lib/jets/generators/job/templates/event_types/rule.rb.tt +23 -0
  283. data/lib/jets/generators/job/templates/event_types/s3.rb.tt +11 -0
  284. data/lib/jets/{generator/templates/active_job/job/templates/job.rb.tt → generators/job/templates/event_types/scheduled.rb.tt} +3 -3
  285. data/lib/jets/generators/job/templates/event_types/sns.rb.tt +9 -0
  286. data/lib/jets/generators/job/templates/event_types/sqs.rb.tt +9 -0
  287. data/lib/jets/generators/overrides/app/USAGE +38 -0
  288. data/lib/jets/generators/overrides/app/app_generator.rb +148 -0
  289. data/lib/jets/generators/overrides/app/helpers.rb +143 -0
  290. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/.gitignore +2 -1
  291. data/lib/jets/generators/overrides/app/templates/Gemfile.tt +25 -0
  292. data/lib/jets/generators/overrides/app/templates/Rakefile +2 -0
  293. data/lib/jets/generators/overrides/app/templates/app/assets/config/manifest.js +3 -0
  294. data/lib/jets/generators/overrides/app/templates/app/assets/stylesheets/application.css +15 -0
  295. data/lib/jets/generators/overrides/app/templates/app/javascript/application.js +5 -0
  296. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/app/models/application_record.rb +1 -1
  297. data/lib/jets/generators/overrides/app/templates/app/views/layouts/application.html.erb.tt +30 -0
  298. data/lib/jets/generators/overrides/app/templates/bin/jets +3 -0
  299. data/lib/jets/generators/overrides/app/templates/config/application.rb.tt +15 -0
  300. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/config/database.yml.tt +1 -1
  301. data/lib/jets/generators/overrides/app/templates/config/environments/development.rb.tt +29 -0
  302. data/lib/jets/generators/overrides/app/templates/config/environments/production.rb.tt +19 -0
  303. data/lib/jets/generators/overrides/app/templates/config/environments/test.rb.tt +23 -0
  304. data/lib/jets/generators/overrides/app/templates/config/initializers/content_security_policy.rb +31 -0
  305. data/lib/jets/generators/overrides/app/templates/config/initializers/filter_parameter_logging.rb +8 -0
  306. data/lib/jets/generators/overrides/app/templates/config/initializers/permissions_policy.rb +11 -0
  307. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/config/routes.rb +5 -1
  308. data/lib/jets/generators/overrides/app/templates/db/.gitkeep +0 -0
  309. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/public/404.html +6 -6
  310. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/public/422.html +6 -6
  311. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/public/500.html +6 -6
  312. data/lib/jets/generators/overrides/templates/erb/scaffold/index.html.erb +22 -0
  313. data/lib/jets/generators/overrides/templates/erb/scaffold/partial.html.erb +8 -0
  314. data/lib/jets/{generator/templates/rails/scaffold_controller/api_controller.rb → generators/overrides/templates/rails/scaffold_controller/api_controller.rb.tt} +5 -9
  315. data/lib/jets/generators/overrides/templates/rails/scaffold_controller/controller.rb.tt +67 -0
  316. data/lib/jets/generators.rb +112 -0
  317. data/lib/jets/info.rb +116 -0
  318. data/lib/jets/initializable.rb +95 -0
  319. data/lib/jets/job/base.rb +3 -2
  320. data/lib/jets/job/dsl/dynamodb_event.rb +19 -9
  321. data/lib/jets/job/dsl/event_source_mapping.rb +1 -1
  322. data/lib/jets/job/dsl/iot_event.rb +6 -6
  323. data/lib/jets/job/dsl/kinesis_event.rb +5 -5
  324. data/lib/jets/job/dsl/log_event.rb +2 -2
  325. data/lib/jets/job/dsl/rule_event.rb +7 -4
  326. data/lib/jets/job/dsl/s3_event.rb +1 -1
  327. data/lib/jets/job/dsl/sns_event.rb +6 -6
  328. data/lib/jets/job/dsl/sqs_event.rb +11 -11
  329. data/lib/jets/klass.rb +5 -6
  330. data/lib/jets/lambda/definition.rb +118 -0
  331. data/lib/jets/lambda/dsl/warnings.rb +57 -0
  332. data/lib/jets/lambda/dsl.rb +64 -53
  333. data/lib/jets/lambda/function.rb +3 -3
  334. data/lib/jets/lambda/function_constructor.rb +6 -6
  335. data/lib/jets/lambda/functions.rb +36 -1
  336. data/lib/jets/mega/request/source.rb +1 -2
  337. data/lib/jets/mega/request.rb +4 -4
  338. data/lib/jets/names.rb +31 -15
  339. data/lib/jets/overrides/dummy/rails.rb +11 -0
  340. data/lib/jets/overrides/lambda/marshaller.rb +10 -0
  341. data/lib/jets/overrides/puma.rb +10 -0
  342. data/lib/jets/paths.rb +243 -0
  343. data/lib/jets/{poly_fun → poly}/base_executor.rb +13 -13
  344. data/lib/jets/{poly_fun → poly}/lambda_executor.rb +2 -2
  345. data/lib/jets/{poly_fun → poly}/node_error.rb +1 -1
  346. data/lib/jets/{poly_fun → poly}/node_executor.rb +4 -4
  347. data/lib/jets/{poly_fun → poly}/python_error.rb +1 -1
  348. data/lib/jets/{poly_fun → poly}/python_executor.rb +2 -2
  349. data/lib/jets/{poly_fun.rb → poly.rb} +12 -12
  350. data/lib/jets/preheat.rb +12 -25
  351. data/lib/jets/processors/deducer.rb +2 -2
  352. data/lib/jets/processors/main_processor.rb +6 -13
  353. data/lib/jets/rack/logger.rb +77 -0
  354. data/lib/jets/router/compat/route_set.rb +177 -0
  355. data/lib/jets/router/dsl/mount.rb +40 -6
  356. data/lib/jets/router/dsl.rb +125 -105
  357. data/lib/jets/router/engine_mount.rb +36 -0
  358. data/lib/jets/router/help.rb +130 -0
  359. data/lib/jets/router/helpers/named_routes/add_full_url.rb +13 -0
  360. data/lib/jets/router/helpers/named_routes/generated.rb +197 -0
  361. data/lib/jets/router/helpers/named_routes/proxy.rb +66 -0
  362. data/lib/jets/router/matcher.rb +135 -16
  363. data/lib/jets/router/resources/options.rb +6 -4
  364. data/lib/jets/router/route/after_initialize.rb +64 -0
  365. data/lib/jets/router/route/as.rb +93 -0
  366. data/lib/jets/router/route/authorizer.rb +1 -0
  367. data/lib/jets/router/route/compat.rb +45 -0
  368. data/lib/jets/router/route/info.rb +74 -0
  369. data/lib/jets/router/route/node.rb +137 -0
  370. data/lib/jets/router/route/path.rb +93 -0
  371. data/lib/jets/router/route.rb +109 -106
  372. data/lib/jets/router/route_set.rb +214 -0
  373. data/lib/jets/router/scope.rb +204 -69
  374. data/lib/jets/router/state.rb +36 -16
  375. data/lib/jets/router/util.rb +1 -31
  376. data/lib/jets/router.rb +64 -162
  377. data/lib/jets/ruby_version_check.rb +15 -0
  378. data/lib/jets/rule/base.rb +1 -0
  379. data/lib/jets/rule/dsl.rb +7 -7
  380. data/lib/jets/secrets.rb +110 -0
  381. data/lib/jets/spec_helpers/controllers/request.rb +22 -16
  382. data/lib/jets/spec_helpers/controllers.rb +32 -24
  383. data/lib/jets/spec_helpers.rb +0 -6
  384. data/lib/jets/stack/builder.rb +3 -2
  385. data/lib/jets/stack/definition.rb +1 -4
  386. data/lib/jets/stack/function.rb +2 -2
  387. data/lib/jets/stack/main/dsl/cloudwatch.rb +4 -4
  388. data/lib/jets/stack/main/dsl/kinesis.rb +2 -2
  389. data/lib/jets/stack/main/dsl/lambda.rb +26 -20
  390. data/lib/jets/stack/main/dsl/sqs.rb +2 -2
  391. data/lib/jets/stack/output/lookup.rb +1 -1
  392. data/lib/jets/stack/output.rb +2 -2
  393. data/lib/jets/stack/parameter.rb +2 -2
  394. data/lib/jets/stack/resource.rb +3 -3
  395. data/lib/jets/stack/s3_event.rb +51 -37
  396. data/lib/jets/stack.rb +1 -1
  397. data/lib/jets/tasks/engine.rake +85 -0
  398. data/lib/jets/tasks/framework.rake +66 -0
  399. data/lib/jets/tasks/log.rake +41 -0
  400. data/lib/jets/tasks/middleware.rake +9 -0
  401. data/lib/jets/tasks/misc.rake +81 -0
  402. data/lib/jets/tasks/statistics.rake +37 -0
  403. data/lib/jets/tasks/tmp.rake +51 -0
  404. data/lib/jets/tasks/yarn.rake +29 -0
  405. data/lib/jets/tasks/zeitwerk.rake +61 -0
  406. data/lib/jets/tasks.rb +18 -0
  407. data/lib/jets/turbine/configurable.rb +36 -0
  408. data/lib/jets/turbine/configuration.rb +101 -0
  409. data/lib/jets/turbine.rb +164 -20
  410. data/lib/jets/util/camelize.rb +24 -0
  411. data/lib/jets/version.rb +1 -1
  412. data/lib/jets.rb +7 -16
  413. metadata +410 -362
  414. data/bin/release +0 -9
  415. data/lib/jets/application/defaults.rb +0 -230
  416. data/lib/jets/builders/reconfigure_rails/config/initializers/jets.rb +0 -16
  417. data/lib/jets/builders/reconfigure_rails.rb +0 -114
  418. data/lib/jets/cfn/builders/api_resources_builder.rb +0 -44
  419. data/lib/jets/cfn/builders/base_child_builder.rb +0 -88
  420. data/lib/jets/cfn/builders/controller_builder.rb +0 -50
  421. data/lib/jets/cfn/builders/function_builder.rb +0 -14
  422. data/lib/jets/cfn/builders/job_builder.rb +0 -14
  423. data/lib/jets/cfn/builders/page_builder.rb +0 -80
  424. data/lib/jets/cfn/built_template.rb +0 -15
  425. data/lib/jets/cfn/template_source.rb +0 -64
  426. data/lib/jets/commands/base.rb +0 -145
  427. data/lib/jets/commands/call.rb +0 -185
  428. data/lib/jets/commands/clean.rb +0 -19
  429. data/lib/jets/commands/configure.rb +0 -51
  430. data/lib/jets/commands/console.rb +0 -18
  431. data/lib/jets/commands/db/environment-task.rake +0 -3
  432. data/lib/jets/commands/db/tasks/dummy/app.rb +0 -25
  433. data/lib/jets/commands/db/tasks/dummy/config.rb +0 -14
  434. data/lib/jets/commands/db/tasks.rb +0 -34
  435. data/lib/jets/commands/db.rb +0 -13
  436. data/lib/jets/commands/dbconsole.rb +0 -134
  437. data/lib/jets/commands/delete.rb +0 -136
  438. data/lib/jets/commands/dynamodb/migrate.rb +0 -9
  439. data/lib/jets/commands/dynamodb/migrator.rb +0 -36
  440. data/lib/jets/commands/dynamodb.rb +0 -19
  441. data/lib/jets/commands/gems.rb +0 -13
  442. data/lib/jets/commands/help/call.md +0 -69
  443. data/lib/jets/commands/help/dynamodb/generate.md +0 -52
  444. data/lib/jets/commands/help/dynamodb/migrate.md +0 -4
  445. data/lib/jets/commands/help/routes.md +0 -16
  446. data/lib/jets/commands/help.rb +0 -9
  447. data/lib/jets/commands/import/base.rb +0 -49
  448. data/lib/jets/commands/import/cheatsheet.rb +0 -35
  449. data/lib/jets/commands/import/rack.rb +0 -16
  450. data/lib/jets/commands/import/rails.rb +0 -74
  451. data/lib/jets/commands/import/sequence.rb +0 -90
  452. data/lib/jets/commands/import/templates/config/database.yml +0 -30
  453. data/lib/jets/commands/import/templates/submodules-cheatsheet.md +0 -89
  454. data/lib/jets/commands/import.rb +0 -12
  455. data/lib/jets/commands/main.rb +0 -169
  456. data/lib/jets/commands/markdown/creator.rb +0 -58
  457. data/lib/jets/commands/markdown/index.rb +0 -27
  458. data/lib/jets/commands/markdown/page.rb +0 -125
  459. data/lib/jets/commands/markdown/shell.rb +0 -11
  460. data/lib/jets/commands/new.rb +0 -173
  461. data/lib/jets/commands/rake_command.rb +0 -61
  462. data/lib/jets/commands/rake_tasks.rb +0 -50
  463. data/lib/jets/commands/runner.rb +0 -16
  464. data/lib/jets/commands/sequence.rb +0 -104
  465. data/lib/jets/commands/stack_info.rb +0 -30
  466. data/lib/jets/commands/templates/skeleton/.env.development.tt +0 -3
  467. data/lib/jets/commands/templates/skeleton/.env.test +0 -3
  468. data/lib/jets/commands/templates/skeleton/.env.tt +0 -3
  469. data/lib/jets/commands/templates/skeleton/.jetskeep +0 -1
  470. data/lib/jets/commands/templates/skeleton/Gemfile.tt +0 -40
  471. data/lib/jets/commands/templates/skeleton/Procfile +0 -7
  472. data/lib/jets/commands/templates/skeleton/Rakefile +0 -2
  473. data/lib/jets/commands/templates/skeleton/app/models/application_item.rb +0 -2
  474. data/lib/jets/commands/templates/skeleton/app/views/layouts/application.html.erb.tt +0 -26
  475. data/lib/jets/commands/templates/skeleton/config/application.rb.tt +0 -72
  476. data/lib/jets/commands/templates/skeleton/config/dynamodb.yml +0 -22
  477. data/lib/jets/commands/templates/skeleton/config/environments/development.rb +0 -7
  478. data/lib/jets/commands/templates/skeleton/config/environments/production.rb +0 -9
  479. data/lib/jets/commands/templates/skeleton/config/environments/test.rb +0 -7
  480. data/lib/jets/commands/templates/webpacker/app/javascript/packs/application.js.tt +0 -23
  481. data/lib/jets/commands/templates/webpacker/app/javascript/packs/theme.scss.tt +0 -24
  482. data/lib/jets/commands/upgrade/templates/bin/webpack +0 -20
  483. data/lib/jets/commands/upgrade/templates/bin/webpack-dev-server +0 -19
  484. data/lib/jets/commands/upgrade/version1.rb +0 -136
  485. data/lib/jets/commands/upgrade.rb +0 -105
  486. data/lib/jets/commands/webpacker_template.rb +0 -18
  487. data/lib/jets/controller/callbacks.rb +0 -73
  488. data/lib/jets/controller/cookies/jar.rb +0 -269
  489. data/lib/jets/controller/cookies.rb +0 -38
  490. data/lib/jets/controller/error/invalid_authenticity_token.rb +0 -6
  491. data/lib/jets/controller/error.rb +0 -4
  492. data/lib/jets/controller/forgery_protection.rb +0 -43
  493. data/lib/jets/controller/layout.rb +0 -17
  494. data/lib/jets/controller/middleware/cors.rb +0 -60
  495. data/lib/jets/controller/middleware/local/mimic_aws_call.rb +0 -38
  496. data/lib/jets/controller/middleware/local/route_matcher.rb +0 -22
  497. data/lib/jets/controller/middleware/reloader.rb +0 -15
  498. data/lib/jets/controller/parameters_filter.rb +0 -29
  499. data/lib/jets/controller/params.rb +0 -117
  500. data/lib/jets/controller/redirection.rb +0 -61
  501. data/lib/jets/controller/rendering/rack_renderer.rb +0 -267
  502. data/lib/jets/controller/rendering.rb +0 -96
  503. data/lib/jets/controller/stage.rb +0 -34
  504. data/lib/jets/controller.rb +0 -3
  505. data/lib/jets/db.rb +0 -15
  506. data/lib/jets/generator/templates/erb/controller/view.html.erb +0 -2
  507. data/lib/jets/generator/templates/erb/scaffold/index.html.erb +0 -29
  508. data/lib/jets/generator/templates/rails/controller/controller.rb +0 -13
  509. data/lib/jets/generator/templates/rails/helper/helper.rb +0 -4
  510. data/lib/jets/generator/templates/rails/scaffold_controller/controller.rb +0 -67
  511. data/lib/jets/generator.rb +0 -112
  512. data/lib/jets/internal/app/controllers/jets/bare_controller.rb +0 -16
  513. data/lib/jets/internal/app/controllers/jets/rack_controller.rb +0 -12
  514. data/lib/jets/internal/app/helpers/jets/mailers_helper.rb +0 -9
  515. data/lib/jets/internal/app/jobs/jets/preheat_job.rb +0 -52
  516. data/lib/jets/internal/app/views/jets/mailers/index.html.erb +0 -8
  517. data/lib/jets/internal/app/views/jets/mailers/mailer.html.erb +0 -6
  518. data/lib/jets/internal/turbines/jets/mailer.rb +0 -52
  519. data/lib/jets/lambda/task.rb +0 -111
  520. data/lib/jets/logger.rb +0 -21
  521. data/lib/jets/middleware/configurator.rb +0 -84
  522. data/lib/jets/middleware/default_stack.rb +0 -53
  523. data/lib/jets/middleware/layer.rb +0 -34
  524. data/lib/jets/middleware/stack.rb +0 -77
  525. data/lib/jets/middleware.rb +0 -33
  526. data/lib/jets/overrides/rails/action_controller.rb +0 -13
  527. data/lib/jets/overrides/rails/asset_tag_helper.rb +0 -114
  528. data/lib/jets/overrides/rails/common_methods.rb +0 -13
  529. data/lib/jets/overrides/rails/migration_checker.rb +0 -34
  530. data/lib/jets/overrides/rails/rendering_helper.rb +0 -27
  531. data/lib/jets/overrides/rails/url_helper.rb +0 -88
  532. data/lib/jets/overrides/rails.rb +0 -6
  533. data/lib/jets/rack_server.rb +0 -86
  534. data/lib/jets/resource/api_gateway/base_path/function.rb +0 -49
  535. data/lib/jets/resource/api_gateway/base_path/role.rb +0 -76
  536. data/lib/jets/resource/api_gateway/cors.rb +0 -61
  537. data/lib/jets/resource/api_gateway/method.rb +0 -102
  538. data/lib/jets/resource/api_gateway/rest_api/routes/change.rb +0 -16
  539. data/lib/jets/resource/base.rb +0 -28
  540. data/lib/jets/resource/child_stack/api_deployment.rb +0 -58
  541. data/lib/jets/resource/child_stack/api_gateway.rb +0 -23
  542. data/lib/jets/resource/child_stack/api_resource/page.rb +0 -20
  543. data/lib/jets/resource/child_stack/api_resource.rb +0 -54
  544. data/lib/jets/resource/child_stack/base.rb +0 -24
  545. data/lib/jets/resource/lambda/function.rb +0 -221
  546. data/lib/jets/resource/logs/subscription_filter.rb +0 -31
  547. data/lib/jets/resource/permission.rb +0 -45
  548. data/lib/jets/resource.rb +0 -71
  549. data/lib/jets/router/error.rb +0 -4
  550. data/lib/jets/router/finder.rb +0 -47
  551. data/lib/jets/router/helpers/core_helper.rb +0 -27
  552. data/lib/jets/router/helpers/named_routes_helper.rb +0 -8
  553. data/lib/jets/router/helpers.rb +0 -4
  554. data/lib/jets/router/method_creator/code.rb +0 -99
  555. data/lib/jets/router/method_creator/edit.rb +0 -12
  556. data/lib/jets/router/method_creator/generic.rb +0 -11
  557. data/lib/jets/router/method_creator/index.rb +0 -48
  558. data/lib/jets/router/method_creator/new.rb +0 -12
  559. data/lib/jets/router/method_creator/root.rb +0 -15
  560. data/lib/jets/router/method_creator/show.rb +0 -12
  561. data/lib/jets/router/method_creator.rb +0 -50
  562. data/lib/jets/turbo/database_yaml.rb +0 -41
  563. data/lib/jets/turbo/project/.gitignore +0 -12
  564. data/lib/jets/turbo/project/.jetskeep +0 -1
  565. data/lib/jets/turbo/project/Gemfile +0 -16
  566. data/lib/jets/turbo/project/Rakefile +0 -2
  567. data/lib/jets/turbo/project/app/controllers/application_controller.rb +0 -2
  568. data/lib/jets/turbo/project/app/helpers/application_helper.rb +0 -2
  569. data/lib/jets/turbo/project/app/jobs/application_job.rb +0 -4
  570. data/lib/jets/turbo/project/config/application.rb +0 -5
  571. data/lib/jets/turbo/project/config/routes.rb +0 -4
  572. data/lib/jets/turbo/project/config.ru +0 -5
  573. data/lib/jets/turbo/rails.rb +0 -127
  574. data/lib/jets/turbo/templates/config/database.yml +0 -30
  575. data/lib/jets/turbo.rb +0 -56
  576. data/readme/prerelease.md +0 -6
  577. data/readme/testing.md +0 -60
  578. /data/{lib/jets → engines}/internal/app/shared/functions/jets/s3_bucket_config.rb +0 -0
  579. /data/lib/jets/{commands → command}/help/build.md +0 -0
  580. /data/lib/jets/{commands → command}/help/clean/build.md +0 -0
  581. /data/lib/jets/{commands → command}/help/clean/log.md +0 -0
  582. /data/lib/jets/{commands → command}/help/console.md +0 -0
  583. /data/lib/jets/{commands → command}/help/db/generate.md +0 -0
  584. /data/lib/jets/{commands → command}/help/dbconsole.md +0 -0
  585. /data/lib/jets/{commands → command}/help/degenerate.md +0 -0
  586. /data/lib/jets/{commands → command}/help/delete.md +0 -0
  587. /data/lib/jets/{commands → command}/help/gems/check.md +0 -0
  588. /data/lib/jets/{commands → command}/help/generate.md +0 -0
  589. /data/lib/jets/{commands → command}/help/import/rack.md +0 -0
  590. /data/lib/jets/{commands → command}/help/import/rails.md +0 -0
  591. /data/lib/jets/{commands → command}/help/runner.md +0 -0
  592. /data/lib/jets/{commands → command}/help/server.md +0 -0
  593. /data/lib/jets/{commands → command}/help/status.md +0 -0
  594. /data/lib/jets/{commands → command}/help/upgrade.md +0 -0
  595. /data/lib/jets/{commands → command}/help/url.md +0 -0
  596. /data/lib/jets/{generator/templates/active_job → generators}/job/templates/application_job.rb.tt +0 -0
  597. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/.rspec +0 -0
  598. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/README.md +0 -0
  599. /data/{.gitmodules → lib/jets/generators/overrides/app/templates/app/assets/images/.keep} +0 -0
  600. /data/lib/jets/{commands/templates/skeleton/db/.gitkeep → generators/overrides/app/templates/app/assets/javascripts/.keep} +0 -0
  601. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/app/controllers/application_controller.rb +0 -0
  602. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/app/helpers/application_helper.rb +0 -0
  603. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/app/jobs/application_job.rb +0 -0
  604. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/config.ru +0 -0
  605. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/public/favicon.ico +0 -0
  606. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/spec/controllers/posts_controller_spec.rb +0 -0
  607. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/spec/fixtures/payloads/posts-index.json +0 -0
  608. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/spec/fixtures/payloads/posts-show.json +0 -0
  609. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/spec/spec_helper.rb.tt +0 -0
  610. /data/lib/jets/{generator → generators/overrides}/templates/erb/scaffold/_form.html.erb +0 -0
  611. /data/lib/jets/{generator → generators/overrides}/templates/erb/scaffold/edit.html.erb +0 -0
  612. /data/lib/jets/{generator → generators/overrides}/templates/erb/scaffold/new.html.erb +0 -0
  613. /data/lib/jets/{generator → generators/overrides}/templates/erb/scaffold/show.html.erb +0 -0
  614. /data/lib/jets/{generator → generators/overrides}/templates/rails/assets/javascript.js +0 -0
  615. /data/lib/jets/{generator → generators/overrides}/templates/rails/assets/stylesheet.css +0 -0
  616. /data/lib/jets/{generator → generators/overrides}/templates/rails/scaffold/scaffold.css +0 -0
@@ -1,29 +1,23 @@
1
- # Implements:
2
- #
3
- # definition
4
- # template_filename
5
- #
6
- module Jets::Resource::ChildStack
1
+ module Jets::Cfn::Resource::Nested
7
2
  class AppClass < Base
8
- include CommonParameters
9
-
10
- def initialize(s3_bucket, options={})
3
+ def initialize(options={})
11
4
  super
12
5
  @path = options[:path]
13
6
  end
14
7
 
8
+ # interface method
15
9
  def definition
16
10
  logical_id = app_logical_id
17
11
  defintion = {
18
12
  logical_id => {
19
- type: "AWS::CloudFormation::Stack",
20
- properties: {
21
- template_url: template_url,
22
- parameters: parameters,
13
+ Type: "AWS::CloudFormation::Stack",
14
+ Properties: {
15
+ TemplateURL: template_url,
16
+ Parameters: parameters,
23
17
  }
24
18
  }
25
19
  }
26
- defintion[logical_id][:depends_on] = depends.stack_list if depends
20
+ defintion[logical_id][:DependsOn] = depends.stack_list if depends
27
21
  defintion
28
22
  end
29
23
 
@@ -54,48 +48,31 @@ module Jets::Resource::ChildStack
54
48
  end
55
49
 
56
50
  def parameters
57
- params = self.class.common_parameters
51
+ params = Jets::Cfn::Params::Common.parameters
58
52
  params.merge!(controller_params) if controller?
59
53
  params.merge!(depends.params) if depends
60
54
  params
61
55
  end
62
56
 
63
- def self.common_parameters
64
- parameters = {
65
- IamRole: "!GetAtt IamRole.Arn",
66
- S3Bucket: "!Ref S3Bucket",
67
- }
68
- parameters[:GemLayer] = "!Ref GemLayer" unless Jets.poly_only?
69
- parameters
70
- end
71
-
72
57
  def controller_params
73
- return {} if Jets::Router.routes.empty?
58
+ return {} if Jets::Router.no_routes?
74
59
 
75
60
  params = {
76
61
  RestApi: "!GetAtt ApiGateway.Outputs.RestApi",
77
62
  }
78
63
 
79
64
  template_path = @path
80
- template = Jets::Cfn::BuiltTemplate.get(template_path)
81
- template['Parameters'].each do |p,data|
65
+ template = Jets::Cfn::Template.load_file(template_path)
66
+ template[:Parameters].each do |p,data|
82
67
  case p
83
- when /Resource$/ # AWS::ApiGateway::Resource in api-resources templates. IE: demo-dev-api-resources-2.yml
84
- params[p] = "!GetAtt #{api_resource_page(p)}.Outputs.#{p}"
85
68
  when /Authorizer$/ # AWS::ApiGateway::Authorizer in authorizers templates. IE: demo-dev-authorizers.yml
86
69
  # Description contains metadata to get the Authorizer logical id
87
- params[p] = "!GetAtt #{authorizer_output(data["Description"])}"
88
- when 'RootResourceId'
89
- params[p] = "!GetAtt ApiGateway.Outputs.RootResourceId"
70
+ params[p] = "!GetAtt #{authorizer_output(data[:Description])}"
90
71
  end
91
72
  end
92
73
  params
93
74
  end
94
75
 
95
- def api_resource_page(parameter)
96
- ApiResource::Page.logical_id(parameter)
97
- end
98
-
99
76
  def authorizer_output(desc)
100
77
  authorizer_stack, authorizer_logical_id = desc.split('.')
101
78
  # IE: MainAuthorizer.Outputs.ProtectAuthorizer
@@ -118,14 +95,8 @@ module Jets::Resource::ChildStack
118
95
  @path.include?('_job.yml')
119
96
  end
120
97
 
121
- def scoped_routes
122
- @routes ||= Jets::Router.routes.select do |route|
123
- route.controller_name == current_app_class.to_s
124
- end
125
- end
126
-
127
98
  def current_app_class
128
- templates_prefix = "#{Jets::Names.template_path_prefix}-app-"
99
+ templates_prefix = "#{Jets::Names.templates_folder}/app-"
129
100
  @path.sub(templates_prefix, '')
130
101
  .sub(/\.yml$/,'')
131
102
  .gsub('-','/')
@@ -137,13 +108,9 @@ module Jets::Resource::ChildStack
137
108
  # /tmp/jets/demo/templates/demo-dev-2-posts_controller.yml to
138
109
  # PostsController
139
110
  def app_logical_id
140
- regexp = Regexp.new(".*#{Jets.config.project_namespace}-app-")
111
+ regexp = Regexp.new(".*#{Jets::Names.templates_folder}/app-")
141
112
  controller_name = @path.sub(regexp, '').sub('.yml', '')
142
113
  controller_name.underscore.camelize
143
114
  end
144
-
145
- def template_filename
146
- @path
147
- end
148
115
  end
149
116
  end
@@ -1,8 +1,6 @@
1
- module Jets::Resource::ChildStack
1
+ module Jets::Cfn::Resource::Nested
2
2
  class Authorizer < Base
3
- include CommonParameters
4
-
5
- def initialize(s3_bucket, options={})
3
+ def initialize(options={})
6
4
  super
7
5
  @path = options[:path]
8
6
  end
@@ -11,30 +9,26 @@ module Jets::Resource::ChildStack
11
9
  logical_id = authorizer_logical_id
12
10
  {
13
11
  logical_id => {
14
- type: "AWS::CloudFormation::Stack",
15
- properties: {
16
- template_url: template_url,
17
- parameters: parameters,
12
+ Type: "AWS::CloudFormation::Stack",
13
+ Properties: {
14
+ TemplateURL: template_url,
15
+ Parameters: parameters,
18
16
  }
19
17
  }
20
18
  }
21
19
  end
22
20
 
23
21
  def parameters
24
- params = common_parameters
22
+ params = Jets::Cfn::Params::Common.parameters
25
23
  params[:RestApi] = "!GetAtt ApiGateway.Outputs.RestApi"
26
24
  params
27
25
  end
28
26
 
29
27
  # map the path to a camelized logical_id. IE: ProtectAuthorizer
30
28
  def authorizer_logical_id
31
- regexp = Regexp.new(".*#{Jets.config.project_namespace}-authorizers-")
29
+ regexp = Regexp.new("#{Jets::Names.templates_folder}/authorizers-")
32
30
  authorizer_name = @path.sub(regexp, '').sub('.yml', '')
33
31
  authorizer_name.underscore.camelize
34
32
  end
35
-
36
- def template_filename
37
- @path
38
- end
39
33
  end
40
34
  end
@@ -0,0 +1,38 @@
1
+ # Inheriting classes should implement:
2
+ #
3
+ # definition
4
+ # template_filename
5
+ #
6
+ module Jets::Cfn::Resource::Nested
7
+ class Base < Jets::Cfn::Base
8
+ def initialize(options={})
9
+ @options = options # not used yet
10
+ end
11
+
12
+ def outputs
13
+ {
14
+ logical_id => "!Ref #{logical_id}",
15
+ }
16
+ end
17
+
18
+ def template_url
19
+ checksum = Jets::Builders::Md5.checksums["stage/code"]
20
+ "https://s3.amazonaws.com/#{Jets.s3_bucket}/jets/cfn-templates/shas/#{checksum}/#{template_filename}"
21
+ end
22
+
23
+ # Examples:
24
+ # api-gateway.yml
25
+ # api-resources-1.yml
26
+ # api-methods-1.yml
27
+ # app-posts_controller.yml
28
+ # shared-custom.yml
29
+ def template_filename
30
+ filename = if @path # AppClass, Authorizer, Shared
31
+ @path.sub("#{Jets::Names.templates_folder}/", '').gsub('/','-').sub('.yml', '')
32
+ else
33
+ self.class.name.to_s.sub(/.*Nested::/,'').underscore.gsub('/','-').dasherize
34
+ end
35
+ [filename, @page_number].compact.join('-') + '.yml'
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,48 @@
1
+ module Jets::Cfn::Resource::Nested
2
+ class OneController < Base
3
+ # interface method
4
+ def definition
5
+ defintion = {
6
+ JetsController: {
7
+ Type: "AWS::CloudFormation::Stack",
8
+ Properties: {
9
+ TemplateURL: template_url,
10
+ Parameters: parameters,
11
+ }
12
+ }
13
+ }
14
+ defintion
15
+ end
16
+
17
+ # override
18
+ def template_filename
19
+ "jets-controller.yml"
20
+ end
21
+
22
+ def parameters
23
+ params = Jets::Cfn::Params::Common.parameters
24
+ params.merge!(controller_params)
25
+ params
26
+ end
27
+
28
+ def controller_params
29
+ if Jets::Router.no_routes?
30
+ {}
31
+ else
32
+ {
33
+ RestApi: "!GetAtt ApiGateway.Outputs.RestApi",
34
+ }
35
+ end
36
+ end
37
+
38
+ def authorizer_output(desc)
39
+ authorizer_stack, authorizer_logical_id = desc.split('.')
40
+ # IE: MainAuthorizer.Outputs.ProtectAuthorizer
41
+ "#{authorizer_stack}.Outputs.#{authorizer_logical_id}"
42
+ end
43
+
44
+ def outputs
45
+ {}
46
+ end
47
+ end
48
+ end
@@ -3,11 +3,9 @@
3
3
  # definition
4
4
  # template_filename
5
5
  #
6
- module Jets::Resource::ChildStack
6
+ module Jets::Cfn::Resource::Nested
7
7
  class Shared < AppClass
8
- include CommonParameters
9
-
10
- def initialize(s3_bucket, options={})
8
+ def initialize(options={})
11
9
  super
12
10
  @path = options[:path]
13
11
  end
@@ -16,25 +14,25 @@ module Jets::Resource::ChildStack
16
14
  logical_id = shared_logical_id
17
15
  definition = {
18
16
  logical_id => {
19
- type: "AWS::CloudFormation::Stack",
20
- properties: child_properties
17
+ Type: "AWS::CloudFormation::Stack",
18
+ Properties: child_properties
21
19
  }
22
20
  }
23
- definition[logical_id][:depends_on] = depends_on if depends_on
21
+ definition[logical_id][:DependsOn] = depends_on if depends_on
24
22
  definition
25
23
  end
26
24
 
27
25
  def child_properties
28
26
  props = {
29
- template_url: template_url,
27
+ TemplateURL: template_url,
30
28
  }
31
29
 
32
- props[:parameters] = common_parameters # common child parameters
30
+ props[:Parameters] = Jets::Cfn::Params::Common.parameters # common child parameters
33
31
  # add depends on parameters
34
32
  depends_on.each do |dependency|
35
33
  dependency_outputs(dependency).each do |output|
36
34
  dependency_class = dependency.to_s.camelize
37
- props[:parameters][output] = "!GetAtt #{dependency_class}.Outputs.#{output}"
35
+ props[:Parameters][output] = "!GetAtt #{dependency_class}.Outputs.#{output}"
38
36
  end
39
37
  end if depends_on
40
38
 
@@ -55,7 +53,7 @@ module Jets::Resource::ChildStack
55
53
  # /tmp/jets/demo/templates/demo-dev-2-shared-resources.yml to
56
54
  # PostsController
57
55
  def shared_logical_id
58
- regexp = Regexp.new(".*#{Jets.config.project_namespace}-shared-") # remove the shared
56
+ regexp = Regexp.new(".*#{Jets::Names.templates_folder}/shared-") # remove the shared
59
57
  shared_name = @path.sub(regexp, '').sub('.yml', '')
60
58
  shared_name.underscore.camelize
61
59
  end
@@ -63,7 +61,7 @@ module Jets::Resource::ChildStack
63
61
  # IE: app/resource.rb => Resource
64
62
  # Returns Resource class object in the example
65
63
  def current_shared_class
66
- templates_prefix = "#{Jets::Names.template_path_prefix}-shared-"
64
+ templates_prefix = "#{Jets::Names.templates_folder}/shared-"
67
65
  @path.sub(templates_prefix, '')
68
66
  .sub(/\.yml$/,'')
69
67
  .gsub('-','/')
@@ -77,9 +75,5 @@ module Jets::Resource::ChildStack
77
75
  def resources?
78
76
  current_shared_class.build?
79
77
  end
80
-
81
- def template_filename
82
- "#{Jets.config.project_namespace}-shared-#{current_shared_class.to_s.underscore}.yml"
83
- end
84
78
  end
85
79
  end
@@ -0,0 +1,66 @@
1
+ module Jets::Cfn::Resource::One
2
+ class Function < Jets::Cfn::Resource::Lambda::Function
3
+ include Jets::Cfn::Resource::Lambda::Function::Environment
4
+
5
+ # override to use the same function name for all controllers
6
+ def initialize
7
+ end
8
+
9
+ # override
10
+ def function_logical_id
11
+ "JetsControllerLambdaFunction"
12
+ end
13
+
14
+ # override
15
+ def combined_properties
16
+ props = env_properties
17
+ .deep_merge(global_properties)
18
+ .deep_merge(application_controller_properties)
19
+ finalize_properties!(props)
20
+ end
21
+
22
+ def application_controller_properties
23
+ klass = ApplicationController
24
+ return {} unless klass.build_class_iam?
25
+
26
+ class_properties = lookup_class_properties(klass)
27
+ iam_policy = Jets::Cfn::Resource::Iam::ClassRole.new(klass)
28
+ class_properties[:Role] = "!GetAtt #{iam_policy.logical_id}.Arn"
29
+ camelize(class_properties)
30
+ end
31
+
32
+ # Properties managed by Jets merged with finality.
33
+ def finalize_properties!(props)
34
+ handler = "handlers/controller.lambda_handler"
35
+ runtime = get_runtime(props)
36
+ description = "Jets Lambda function for all controllers"
37
+ managed = {
38
+ Handler: handler,
39
+ Runtime: runtime,
40
+ Description: description,
41
+ }
42
+ managed[:FunctionName] = function_name if function_name
43
+ layers = get_layers(runtime)
44
+ managed[:Layers] = layers if layers
45
+ props.merge!(managed)
46
+ end
47
+
48
+ # override
49
+ def get_runtime(props)
50
+ props[:Runtime] || Jets.ruby_runtime
51
+ end
52
+
53
+ # Examples:
54
+ # "#{Jets.project_namespace}-sleep_job-perform"
55
+ # "demo-dev-sleep_job-perform"
56
+ def function_name
57
+ return if ENV['JETS_RESET'] # reset mode, let CloudFormation manage the function name
58
+ "#{Jets.project_namespace}-controller"
59
+ end
60
+
61
+ # override
62
+ def replacements
63
+ {}
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,17 @@
1
+ module Jets::Cfn::Resource::One
2
+ class Permission < Jets::Cfn::Base
3
+ def definition
4
+ {
5
+ JetsControllerPermission: {
6
+ Type: "AWS::Lambda::Permission",
7
+ Properties: {
8
+ FunctionName: "!Ref JetsControllerLambdaFunction",
9
+ Action: "lambda:InvokeFunction",
10
+ Principal: "apigateway.amazonaws.com",
11
+ SourceArn: "!Sub arn:aws:execute-api:${AWS::Region}:${AWS::AccountId}:${RestApi}/*/*",
12
+ }
13
+ }
14
+ }
15
+ end
16
+ end
17
+ end
@@ -1,4 +1,4 @@
1
- class Jets::Resource
1
+ class Jets::Cfn::Resource
2
2
  class Replacer
3
3
  extend Memoist
4
4
 
@@ -52,34 +52,33 @@ class Jets::Resource
52
52
  value
53
53
  end
54
54
 
55
- class << self
56
- # Examples:
57
- # "AWS::Events::Rule" => "events.amazonaws.com",
58
- # "AWS::Config::ConfigRule" => "config.amazonaws.com",
59
- # "AWS::ApiGateway::Method" => "apigateway.amazonaws.com"
60
- def principal_map(type)
61
- service = type.split('::')[1].downcase
62
- service = special_principal_map(service)
63
- "#{service}.amazonaws.com"
64
- end
55
+ # The principal_map related methods are used by Resource::Lambda::Permission
56
+ # Examples:
57
+ # "AWS::Events::Rule" => "events.amazonaws.com",
58
+ # "AWS::Config::ConfigRule" => "config.amazonaws.com",
59
+ # "AWS::ApiGateway::Method" => "apigateway.amazonaws.com"
60
+ def principal_map(type)
61
+ service = type.split('::')[1].downcase
62
+ service = special_principal_map(service)
63
+ "#{service}.amazonaws.com"
64
+ end
65
65
 
66
- def special_principal_map(service)
67
- # special map
68
- # s3_event actually uses sns topic events to trigger a Lambda function
69
- map = { "s3" => "sns" }
70
- map[service] || service
71
- end
66
+ def special_principal_map(service)
67
+ # special map
68
+ # s3_event actually uses sns topic events to trigger a Lambda function
69
+ map = { s3: "sns" }
70
+ map[service.to_sym] || service
71
+ end
72
72
 
73
- # From AWS docs: https://amzn.to/2N0QXQL
74
- # source_arn is "not supported by all event sources"
75
- #
76
- # When it is not available the resource definition should add it.
77
- def source_arn_map(type)
78
- map = {
79
- "AWS::ApiGateway::Method" => "!Sub arn:aws:execute-api:${AWS::Region}:${AWS::AccountId}:${RestApi}/*/*",
80
- }
81
- map[type]
82
- end
73
+ # From AWS docs: https://amzn.to/2N0QXQL
74
+ # source_arn is "not supported by all event sources"
75
+ #
76
+ # When it is not available the resource definition should add it.
77
+ def source_arn_map(type)
78
+ map = {
79
+ "AWS::ApiGateway::Method" => "!Sub arn:aws:execute-api:${AWS::Region}:${AWS::AccountId}:${RestApi}/*/*",
80
+ }
81
+ map[type.to_s]
83
82
  end
84
83
  end
85
84
  end
@@ -12,42 +12,42 @@
12
12
  # TTL: '900'
13
13
  # ResourceRecords:
14
14
  # - !GetAtt Ec2Instance.PublicIp
15
- module Jets::Resource::Route53
16
- class RecordSet < Jets::Resource::Base
15
+ module Jets::Cfn::Resource::Route53
16
+ class RecordSet < Jets::Cfn::Base
17
17
  def definition
18
18
  {
19
- dns_record: {
20
- type: "AWS::Route53::RecordSet",
21
- properties: record_set_properties
19
+ DnsRecord: {
20
+ Type: "AWS::Route53::RecordSet",
21
+ Properties: record_set_properties
22
22
  }
23
23
  }
24
24
  end
25
25
 
26
26
  def record_set_properties
27
27
  base = {
28
- comment: "DNS record managed by Jets",
29
- name: name,
28
+ Comment: "DNS record managed by Jets",
29
+ Name: name,
30
30
  }
31
31
  hosted_zone_id = Jets.config.domain.hosted_zone_id
32
32
  if hosted_zone_id
33
- base[:hosted_zone_id] = hosted_zone_id
33
+ base[:HostedZoneId] = hosted_zone_id
34
34
  else
35
- base[:hosted_zone_name] = hosted_zone_name
35
+ base[:HostedZoneName] = hosted_zone_name
36
36
  end
37
37
 
38
38
  if Jets.config.domain.apex
39
39
  base.merge(
40
- alias_target: {
41
- dns_name: cname,
42
- hosted_zone_id: domain_name_hosted_zone,
40
+ AliasTarget: {
41
+ DNSName: cname,
42
+ HostedZoneId: domain_name_hosted_zone,
43
43
  },
44
- type: "A",
44
+ Type: "A",
45
45
  )
46
46
  else
47
47
  base.merge({
48
- type: "CNAME",
49
- ttl: "60",
50
- resource_records: [cname],
48
+ Type: "CNAME",
49
+ TTL: "60",
50
+ ResourceRecords: [cname],
51
51
  })
52
52
  end
53
53
  end
@@ -69,7 +69,7 @@ module Jets::Resource::Route53
69
69
  end
70
70
 
71
71
  def domain_name
72
- Jets::Resource::ApiGateway::DomainName.new
72
+ Jets::Cfn::Resource::ApiGateway::DomainName.new
73
73
  end
74
74
  memoize :domain_name
75
75
 
@@ -91,7 +91,7 @@ module Jets::Resource::Route53
91
91
 
92
92
  def outputs
93
93
  {
94
- "DnsRecord" => "!Ref DnsRecord",
94
+ DnsRecord: "!Ref DnsRecord",
95
95
  }
96
96
  end
97
97
  end
@@ -1,5 +1,5 @@
1
- module Jets::Resource::S3
2
- class Bucket < Jets::Resource::Base
1
+ module Jets::Cfn::Resource::S3
2
+ class Bucket < Jets::Cfn::Base
3
3
  attr_reader :bucket_logical_id
4
4
  def initialize(props={})
5
5
  @props = props # associated_properties from dsl.rb
@@ -9,8 +9,8 @@ module Jets::Resource::S3
9
9
  def definition
10
10
  {
11
11
  bucket_logical_id => {
12
- type: "AWS::S3::Bucket",
13
- properties: @props,
12
+ Type: "AWS::S3::Bucket",
13
+ Properties: @props,
14
14
  }
15
15
  }
16
16
  end
@@ -0,0 +1,68 @@
1
+ module Jets::Cfn::Resource::S3
2
+ class JetsBucket < Bucket
3
+ def initialize
4
+ @bucket_logical_id = "S3Bucket"
5
+ @props = props
6
+ end
7
+
8
+ def props
9
+ props = {
10
+ PublicAccessBlockConfiguration: {
11
+ BlockPublicAcls: false,
12
+ # BlockPublicPolicy: false,
13
+ # IgnorePublicAcls: false,
14
+ # RestrictPublicBuckets: false
15
+ },
16
+ OwnershipControls: {
17
+ Rules: [{ObjectOwnership: "ObjectWriter"}]
18
+ },
19
+ BucketEncryption: {
20
+ ServerSideEncryptionConfiguration: [
21
+ ServerSideEncryptionByDefault: {
22
+ SSEAlgorithm: "AES256"
23
+ }
24
+ ]
25
+ },
26
+ }
27
+ props[:CorsConfiguration] = cors_configuration # dont check config.api.cors since javascript_importmap_tags also uses
28
+ props
29
+ end
30
+
31
+ def cors_configuration
32
+ Jets.config.api.s3_cors_configuration || {
33
+ CorsRules: [{
34
+ AllowedHeaders: ["*"],
35
+ AllowedMethods: ["GET"],
36
+ AllowedOrigins: ["*"],
37
+ ExposedHeaders: [],
38
+ }]
39
+ }
40
+ end
41
+
42
+ class << self
43
+ include Jets::AwsServices
44
+
45
+ # Usage:
46
+ # Jets::Cfn::Resource::S3::JetsBucket.name
47
+ @@name = nil
48
+ def name
49
+ return @@name if @@name
50
+ return "fake-bucket" if ENV['JETS_BUILD_NO_INTERNET'] || ENV['JETS_TEMPLATES']
51
+
52
+ resp = nil
53
+ begin
54
+ resp = cfn.describe_stacks(stack_name: Jets::Names.parent_stack_name)
55
+ rescue Aws::CloudFormation::Errors::ValidationError => e
56
+ if e.message.include?('does not exist') && ARGV[0] == 'build' # jets build
57
+ return "no-bucket-yet" # for jets build without s3 bucket yet
58
+ else
59
+ raise
60
+ end
61
+ end
62
+
63
+ output = resp.stacks[0].outputs.find {|o| o.output_key == 'S3Bucket'}
64
+ @@name = output.output_value # cache only once found
65
+ end
66
+ end
67
+ end
68
+ end
@@ -1,6 +1,6 @@
1
1
  # CloudFormation SNS Subscription docs: https://amzn.to/2SJtN3C
2
- module Jets::Resource::Sns
3
- class Subscription < Jets::Resource::Base
2
+ module Jets::Cfn::Resource::Sns
3
+ class Subscription < Jets::Cfn::Base
4
4
  def initialize(props={})
5
5
  @props = props # associated_properties from dsl.rb
6
6
  end
@@ -8,22 +8,22 @@ module Jets::Resource::Sns
8
8
  def definition
9
9
  {
10
10
  subscription_logical_id => {
11
- type: "AWS::SNS::Subscription",
12
- properties: merged_properties,
11
+ Type: "AWS::SNS::Subscription",
12
+ Properties: merged_properties,
13
13
  }
14
14
  }
15
15
  end
16
16
 
17
- # Do not name this method properties, that is a computed method of `Jets::Resource::Base`
17
+ # Do not name this method properties, that is a computed method of `Jets::Cfn::Resource`
18
18
  def merged_properties
19
19
  {
20
- endpoint: "!GetAtt {namespace}LambdaFunction.Arn",
21
- protocol: "lambda",
20
+ Endpoint: "!GetAtt {namespace}LambdaFunction.Arn",
21
+ Protocol: "lambda",
22
22
  }.deep_merge(@props)
23
23
  end
24
24
 
25
25
  def subscription_logical_id
26
- "{namespace}_sns_subscription"
26
+ "{namespace}SnsSubscription"
27
27
  end
28
28
  end
29
29
  end