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,4 +1,4 @@
1
- class Jets::Resource::ApiGateway::RestApi::Routes::Change
1
+ class Jets::Cfn::Resource::ApiGateway::RestApi::Routes::Change
2
2
  class Page < Base
3
3
  def changed?
4
4
  route_page_moved? || old_api_template?
@@ -33,15 +33,15 @@ class Jets::Resource::ApiGateway::RestApi::Routes::Change
33
33
  # logical id to page map
34
34
  # Important: In Cfn::Builders::ApiGatewayBuilder, the add_gateway_routes and ApiResourcesBuilder needs to run
35
35
  # before the parent add_gateway_rest_api method.
36
- def local_logical_ids_map(path_expression="#{Jets::Names.template_path_prefix}-api-resources-*.yml")
36
+ def local_logical_ids_map(path_expression="#{Jets::Names.templates_folder}/api-resources-*.yml")
37
37
  logical_ids = {} # logical id => page number
38
38
 
39
39
  Dir.glob(path_expression).each do |path|
40
40
  md = path.match(/-api-resources-(\d+).yml/)
41
41
  page_number = md[1]
42
42
 
43
- template = Jets::Cfn::BuiltTemplate.get(path)
44
- template['Resources'].keys.each do |logical_id|
43
+ template = Jets::Cfn::Template.load_file(path)
44
+ template[:Resources].keys.each do |logical_id|
45
45
  logical_ids[logical_id] = page_number
46
46
  end
47
47
  end
@@ -55,7 +55,7 @@ class Jets::Resource::ApiGateway::RestApi::Routes::Change
55
55
 
56
56
  parent_resources.each do |resource|
57
57
  stack_name = resource.physical_resource_id # full physical id can be used as stack name also
58
- regexp = Regexp.new("#{Jets.config.project_namespace}-ApiResources(\\d+)-") # tricky to escape \d pattern
58
+ regexp = Regexp.new("#{Jets.project_namespace}-ApiResources(\\d+)-") # tricky to escape \d pattern
59
59
  md = stack_name.match(regexp)
60
60
  if md
61
61
  page_number = md[1]
@@ -1,10 +1,15 @@
1
1
  # Detects route to changes
2
- class Jets::Resource::ApiGateway::RestApi::Routes::Change
2
+ class Jets::Cfn::Resource::ApiGateway::RestApi::Routes::Change
3
3
  class To < Base
4
4
  def changed?
5
5
  deployed_routes.each do |deployed_route|
6
+ next if deployed_route.engine # skip engine routes
7
+ next if deployed_route.internal # skip internal routes
8
+
6
9
  new_route = find_comparable_route(deployed_route)
7
- if new_route && new_route.to != deployed_route.to
10
+ next unless new_route
11
+
12
+ if new_route.to != deployed_route.to
8
13
  # change in already deployed route has been detected, requires bluegreen deploy
9
14
  return true
10
15
  end
@@ -18,7 +23,7 @@ class Jets::Resource::ApiGateway::RestApi::Routes::Change
18
23
  def find_comparable_route(deployed_route)
19
24
  new_routes.find do |new_route|
20
25
  new_route.path == deployed_route.path &&
21
- new_route.method == deployed_route.method
26
+ new_route.http_method == deployed_route.http_method
22
27
  end
23
28
  end
24
29
  end
@@ -1,5 +1,5 @@
1
1
  # Detects route variable changes
2
- class Jets::Resource::ApiGateway::RestApi::Routes::Change
2
+ class Jets::Cfn::Resource::ApiGateway::RestApi::Routes::Change
3
3
  class Variable < Base
4
4
  def changed?
5
5
  changed = false
@@ -29,7 +29,7 @@ class Jets::Resource::ApiGateway::RestApi::Routes::Change
29
29
  end
30
30
 
31
31
  def collision
32
- @collision ||= Jets::Resource::ApiGateway::RestApi::Routes::Collision.new
32
+ @collision ||= Jets::Cfn::Resource::ApiGateway::RestApi::Routes::Collision.new
33
33
  end
34
34
  end
35
35
  end
@@ -0,0 +1,21 @@
1
+ # Detects route changes
2
+ class Jets::Cfn::Resource::ApiGateway::RestApi::Routes
3
+ class Change
4
+ include Jets::AwsServices
5
+
6
+ def changed?
7
+ return false unless parent_stack_exists?
8
+ return false if Jets.config.cfn.build.routes == "one_apigw_method_for_all_routes"
9
+ # Note: Variable.changed? will likely always true in one_apigw_method_for_all_routes mode
10
+ # since parent variables are allowed to vary.
11
+
12
+ # JETS_REPLACE_API is legacy. JETS_API_REPLACE is the new var
13
+ MediaTypes.changed? || To.changed? || Variable.changed? || Page.changed? ||
14
+ ENV['JETS_RESET'] || ENV['JETS_API_REPLACE'] || ENV['JETS_REPLACE_API']
15
+ end
16
+
17
+ def parent_stack_exists?
18
+ stack_exists?(Jets::Names.parent_stack_name)
19
+ end
20
+ end
21
+ end
@@ -1,4 +1,4 @@
1
- class Jets::Resource::ApiGateway::RestApi::Routes::Collision
1
+ class Jets::Cfn::Resource::ApiGateway::RestApi::Routes::Collision
2
2
  class VariableException < RuntimeError
3
3
  def initialize(message="Route variable collisions")
4
4
  super(message)
@@ -1,5 +1,5 @@
1
1
  # Detects path variable collisions
2
- class Jets::Resource::ApiGateway::RestApi::Routes
2
+ class Jets::Cfn::Resource::ApiGateway::RestApi::Routes
3
3
  class Collision
4
4
  attr_reader :collisions
5
5
  def initialize
@@ -1,4 +1,4 @@
1
- class Jets::Resource::ApiGateway::RestApi
1
+ class Jets::Cfn::Resource::ApiGateway::RestApi
2
2
  class Routes
3
3
  def self.changed?
4
4
  Change.new.changed?
@@ -1,18 +1,18 @@
1
- module Jets::Resource::ApiGateway
2
- class RestApi < Jets::Resource::Base
1
+ module Jets::Cfn::Resource::ApiGateway
2
+ class RestApi < Jets::Cfn::Base
3
3
  def definition
4
4
  properties = {
5
- name: Jets::Names.gateway_api_name,
6
- endpoint_configuration: { types: endpoint_types }
5
+ Name: Jets::Names.gateway_api_name,
6
+ EndpointConfiguration: { Types: endpoint_types }
7
7
  }
8
- properties[:endpoint_configuration][:vpc_endpoint_ids] = vpce_ids if vpce_ids
9
- properties[:binary_media_types] = binary_media_types if binary_media_types
10
- properties[:policy] = endpoint_policy if endpoint_policy
8
+ properties[:EndpointConfiguration][:VpcEndpointIds] = vpce_ids if vpce_ids
9
+ properties[:BinaryMediaTypes] = binary_media_types if binary_media_types
10
+ properties[:Policy] = endpoint_policy if endpoint_policy
11
11
 
12
12
  {
13
13
  internal_logical_id => {
14
- type: "AWS::ApiGateway::RestApi",
15
- properties: properties
14
+ Type: "AWS::ApiGateway::RestApi",
15
+ Properties: properties
16
16
  }
17
17
  }
18
18
  end
@@ -32,9 +32,9 @@ module Jets::Resource::ApiGateway
32
32
 
33
33
  def outputs
34
34
  {
35
- "RestApi" => "!Ref #{internal_logical_id}",
36
- "Region" => "!Ref AWS::Region",
37
- "RootResourceId" => "!GetAtt #{internal_logical_id}.RootResourceId",
35
+ RestApi: "!Ref #{internal_logical_id}",
36
+ Region: "!Ref AWS::Region",
37
+ RootResourceId: "!GetAtt #{internal_logical_id}.RootResourceId",
38
38
  }
39
39
  end
40
40
 
@@ -1,6 +1,6 @@
1
1
  # Does not do full expansion, mainly a container that holds the definition and
2
2
  # standardizes it without camelizing it.
3
- class Jets::Resource
3
+ class Jets::Cfn::Resource
4
4
  class Associated
5
5
  extend Memoist
6
6
 
@@ -1,5 +1,5 @@
1
- module Jets::Resource::Config
2
- class ConfigRule < Jets::Resource::Base
1
+ module Jets::Cfn::Resource::Config
2
+ class ConfigRule < Jets::Cfn::Base
3
3
  def initialize(app_class, meth, props={})
4
4
  @app_class = app_class.to_s
5
5
  @meth = meth
@@ -9,35 +9,35 @@ module Jets::Resource::Config
9
9
  def definition
10
10
  base = {
11
11
  config_rule_logical_id => {
12
- type: "AWS::Config::ConfigRule",
13
- properties: definition_properties
12
+ Type: "AWS::Config::ConfigRule",
13
+ Properties: definition_properties
14
14
  }
15
15
  }
16
16
 
17
17
  # Explicitly set depends_on to help with CloudFormation random race condition.
18
18
  # Seems to be a new CloudFormation and AWS Config resource issue.
19
- if definition_properties[:source][:owner] == 'CUSTOM_LAMBDA'
20
- base[config_rule_logical_id][:depends_on] = "{namespace}Permission"
19
+ if definition_properties[:Source][:Owner] == 'CUSTOM_LAMBDA'
20
+ base[config_rule_logical_id][:DependsOn] = "{namespace}Permission"
21
21
  end
22
22
 
23
23
  base
24
24
  end
25
25
 
26
- # Do not name this method properties, that is a computed method of `Jets::Resource::Base`
26
+ # Do not name this method properties, that is a computed method of `Jets::Cfn::Resource`
27
27
  def definition_properties
28
28
  {
29
- config_rule_name: config_rule_name,
30
- source: {
31
- owner: "CUSTOM_LAMBDA",
32
- source_identifier: "!GetAtt {namespace}LambdaFunction.Arn",
33
- source_details: [
29
+ ConfigRuleName: config_rule_name,
30
+ Source: {
31
+ Owner: "CUSTOM_LAMBDA",
32
+ SourceIdentifier: "!GetAtt {namespace}LambdaFunction.Arn",
33
+ SourceDetails: [
34
34
  {
35
- event_source: "aws.config",
36
- message_type: "ConfigurationItemChangeNotification"
35
+ EventSource: "aws.config",
36
+ MessageType: "ConfigurationItemChangeNotification"
37
37
  },
38
38
  {
39
- event_source: "aws.config",
40
- message_type: "OversizedConfigurationItemChangeNotification"
39
+ EventSource: "aws.config",
40
+ MessageType: "OversizedConfigurationItemChangeNotification"
41
41
  }
42
42
  ]
43
43
  },
@@ -45,7 +45,7 @@ module Jets::Resource::Config
45
45
  end
46
46
 
47
47
  def config_rule_logical_id
48
- "{namespace}_config_rule"
48
+ "{namespace}ConfigRule"
49
49
  end
50
50
 
51
51
  def config_rule_name
@@ -65,7 +65,7 @@ module Jets::Resource::Config
65
65
  end
66
66
 
67
67
  if namespace.nil?
68
- Jets.config.project_namespace
68
+ Jets.project_namespace
69
69
  else
70
70
  namespace
71
71
  end
@@ -1,13 +1,13 @@
1
1
  # ManagedRule is just different enough to be a separate class vs being part of the
2
2
  # ConfigRule class itself.
3
- module Jets::Resource::Config
3
+ module Jets::Cfn::Resource::Config
4
4
  class ManagedRule < ConfigRule
5
5
  def definition_properties
6
6
  {
7
- config_rule_name: config_rule_name,
8
- source: {
9
- owner: "AWS",
10
- source_identifier: @meth.upcase,
7
+ ConfigRuleName: config_rule_name,
8
+ Source: {
9
+ Owner: "AWS",
10
+ SourceIdentifier: @meth.upcase,
11
11
  },
12
12
  }.deep_merge(@props)
13
13
  end
@@ -1,5 +1,5 @@
1
- module Jets::Resource::Events
2
- class Rule < Jets::Resource::Base
1
+ module Jets::Cfn::Resource::Events
2
+ class Rule < Jets::Cfn::Base
3
3
  def initialize(props={})
4
4
  @props = props # associated_properties from dsl.rb
5
5
  end
@@ -7,25 +7,25 @@ module Jets::Resource::Events
7
7
  def definition
8
8
  {
9
9
  rule_logical_id => {
10
- type: "AWS::Events::Rule",
11
- properties: merged_properties
10
+ Type: "AWS::Events::Rule",
11
+ Properties: merged_properties
12
12
  }
13
13
  }
14
14
  end
15
15
 
16
- # Do not name this method properties, that is a computed method of `Jets::Resource::Base`
16
+ # Do not name this method properties, that is a computed method of `Jets::Cfn::Resource`
17
17
  def merged_properties
18
18
  {
19
- state: "ENABLED",
20
- targets: [{
21
- arn: "!GetAtt {namespace}LambdaFunction.Arn",
22
- id: "{namespace}RuleTarget"
19
+ State: "ENABLED",
20
+ Targets: [{
21
+ Arn: "!GetAtt {namespace}LambdaFunction.Arn",
22
+ Id: "{namespace}RuleTarget"
23
23
  }]
24
24
  }.deep_merge(@props)
25
25
  end
26
26
 
27
27
  def rule_logical_id
28
- "{namespace}_events_rule"
28
+ "{namespace}EventsRule"
29
29
  end
30
30
  end
31
31
  end
@@ -1,5 +1,5 @@
1
- module Jets::Resource::Iam
2
- class ApplicationRole < Jets::Resource::Base
1
+ module Jets::Cfn::Resource::Iam
2
+ class ApplicationRole < Jets::Cfn::Base
3
3
  include BaseRoleDefinition
4
4
 
5
5
  def initialize
@@ -11,11 +11,11 @@ module Jets::Resource::Iam
11
11
  end
12
12
 
13
13
  def role_logical_id
14
- "iam_role"
14
+ "IamRole"
15
15
  end
16
16
 
17
17
  def policy_name
18
- "#{Jets.config.project_namespace}-application-policy"
18
+ "#{Jets.project_namespace}-application-policy"
19
19
  end
20
20
 
21
21
  def outputs
@@ -1,4 +1,4 @@
1
- module Jets::Resource::Iam
1
+ module Jets::Cfn::Resource::Iam
2
2
  module BaseRoleDefinition
3
3
  attr_reader :policy_definitions, :managed_policy_definitions
4
4
 
@@ -9,15 +9,15 @@ module Jets::Resource::Iam
9
9
  # limit. Also, IAM roles are global, so assigning role names prevents cross region deploys.
10
10
  definition = {
11
11
  logical_id => {
12
- type: "AWS::IAM::Role",
13
- properties: {
14
- path: "/",
15
- assume_role_policy_document: {
16
- version: "2012-10-17",
17
- statement: [{
18
- effect: "Allow",
19
- principal: {service: ["lambda.amazonaws.com"]},
20
- action: ["sts:AssumeRole"]}
12
+ Type: "AWS::IAM::Role",
13
+ Properties: {
14
+ Path: "/",
15
+ AssumeRolePolicyDocument: {
16
+ Version: "2012-10-17",
17
+ Statement: [{
18
+ Effect: "Allow",
19
+ Principal: {Service: ["lambda.amazonaws.com"]},
20
+ Action: ["sts:AssumeRole"]}
21
21
  ]
22
22
  }
23
23
  }
@@ -25,13 +25,13 @@ module Jets::Resource::Iam
25
25
  }
26
26
 
27
27
  # Add vpc permissions to all policies
28
- definition[logical_id][:properties][:policies] = [
29
- policy_name: "vpc", # required, limited to 128-chars
30
- policy_document: vpc_policy_document,
28
+ definition[logical_id][:Properties][:Policies] = [
29
+ PolicyName: "vpc", # required, limited to 128-chars
30
+ PolicyDocument: vpc_policy_document,
31
31
  ] if vpc_policy_document
32
32
 
33
33
  unless managed_policy_arns.empty?
34
- definition[logical_id][:properties][:managed_policy_arns] = managed_policy_arns
34
+ definition[logical_id][:Properties][:ManagedPolicyArns] = managed_policy_arns
35
35
  end
36
36
 
37
37
  definition
@@ -40,7 +40,7 @@ module Jets::Resource::Iam
40
40
  def vpc_policy_document
41
41
  if Jets.config.function.vpc_config
42
42
  {
43
- Statement: [Jets::Application.vpc_iam_policy_statement]
43
+ Statement: [Jets.config.vpc_iam_policy_statement]
44
44
  }
45
45
  end
46
46
  end
@@ -1,5 +1,5 @@
1
- module Jets::Resource::Iam
2
- class ClassRole < Jets::Resource::Base
1
+ module Jets::Cfn::Resource::Iam
2
+ class ClassRole < Jets::Cfn::Base
3
3
  include BaseRoleDefinition
4
4
 
5
5
  def initialize(app_class)
@@ -9,12 +9,12 @@ module Jets::Resource::Iam
9
9
  end
10
10
 
11
11
  def role_logical_id
12
- "{namespace}_iam_role".underscore
12
+ "{namespace}IamRole"
13
13
  end
14
14
 
15
15
  def policy_name
16
16
  class_namespace = replacements[:namespace].underscore.dasherize
17
- "#{Jets.config.project_namespace}-#{class_namespace}-policy" # camelized because used as template value
17
+ "#{Jets.project_namespace}-#{class_namespace}-policy" # camelized because used as template value
18
18
  end
19
19
 
20
20
  def replacements
@@ -41,7 +41,7 @@ module Jets::Resource::Iam
41
41
  end
42
42
 
43
43
  def application_role
44
- Jets::Resource::Iam::ApplicationRole.new
44
+ Jets::Cfn::Resource::Iam::ApplicationRole.new
45
45
  end
46
46
  memoize :application_role
47
47
 
@@ -1,5 +1,5 @@
1
- module Jets::Resource::Iam
2
- class FunctionRole < Jets::Resource::Base
1
+ module Jets::Cfn::Resource::Iam
2
+ class FunctionRole < Jets::Cfn::Base
3
3
  include BaseRoleDefinition
4
4
 
5
5
  def initialize(task)
@@ -9,12 +9,12 @@ module Jets::Resource::Iam
9
9
  end
10
10
 
11
11
  def role_logical_id
12
- "{namespace}_iam_role".underscore
12
+ "{namespace}IamRole"
13
13
  end
14
14
 
15
15
  def policy_name
16
16
  funcion_namespace = replacements[:namespace].underscore.dasherize
17
- "#{Jets.config.project_namespace}-#{funcion_namespace}-policy" # camelized because used as template value
17
+ "#{Jets.project_namespace}-#{funcion_namespace}-policy" # camelized because used as template value
18
18
  end
19
19
 
20
20
  def replacements
@@ -42,12 +42,12 @@ module Jets::Resource::Iam
42
42
  end
43
43
 
44
44
  def class_role
45
- Jets::Resource::Iam::ClassRole.new(@task.class_name.constantize)
45
+ Jets::Cfn::Resource::Iam::ClassRole.new(@task.class_name.constantize)
46
46
  end
47
47
  memoize :class_role
48
48
 
49
49
  def application_role
50
- Jets::Resource::Iam::ApplicationRole.new
50
+ Jets::Cfn::Resource::Iam::ApplicationRole.new
51
51
  end
52
52
  memoize :application_role
53
53
  end
@@ -1,4 +1,4 @@
1
- module Jets::Resource::Iam
1
+ module Jets::Cfn::Resource::Iam
2
2
  class ManagedPolicy
3
3
  extend Memoist
4
4
 
@@ -1,12 +1,12 @@
1
- module Jets::Resource::Iam
2
- class Policy < Jets::Resource::Base
1
+ module Jets::Cfn::Resource::Iam
2
+ class Policy < Jets::Cfn::Base
3
3
  def initialize(role)
4
4
  @role = role
5
5
  end
6
6
  delegate :policy_document, :policy_name, :role_logical_id, :replacements, to: :@role
7
7
 
8
8
  def policy_logical_id
9
- role_logical_id.sub(/role$/, "policy")
9
+ role_logical_id.sub(/Role$/, "Policy")
10
10
  end
11
11
 
12
12
  def definition
@@ -16,11 +16,11 @@ module Jets::Resource::Iam
16
16
  # limit. Also, IAM roles are global, so assigning role names prevents cross region deploys.
17
17
  definition = {
18
18
  logical_id => {
19
- type: "AWS::IAM::Policy",
20
- properties: {
21
- roles: [Ref: role_logical_id.camelize],
22
- policy_name: "#{policy_name[0..127]}", # required, limited to 128-chars
23
- policy_document: policy_document,
19
+ Type: "AWS::IAM::Policy",
20
+ Properties: {
21
+ Roles: [Ref: role_logical_id.camelize],
22
+ PolicyName: "#{policy_name[0..127]}", # required, limited to 128-chars
23
+ PolicyDocument: policy_document,
24
24
  }
25
25
  }
26
26
  }
@@ -1,20 +1,21 @@
1
- module Jets::Resource::Iam
1
+ module Jets::Cfn::Resource::Iam
2
2
  class PolicyDocument
3
3
  extend Memoist
4
+ include Jets::Util::Camelize
4
5
 
5
6
  attr_reader :definitions
6
7
  def initialize(*definitions)
7
8
  @definitions = definitions.flatten
8
9
  # empty starting policy that will be altered
9
10
  @policy = {
10
- version: "2012-10-17",
11
- statement: []
11
+ Version: "2012-10-17",
12
+ Statement: []
12
13
  }
13
14
  end
14
15
 
15
16
  def policy_document
16
17
  definitions.map { |definition| standardize(definition) }
17
- Jets::Camelizer.transform(@policy)
18
+ camelize(@policy)
18
19
  end
19
20
  memoize :policy_document # only process policy_document once
20
21
 
@@ -23,17 +24,17 @@ module Jets::Resource::Iam
23
24
  when String
24
25
  # Expands simple string from: logs => logs:*
25
26
  definition = "#{definition}:*" unless definition.include?(':')
26
- @policy[:statement] << {
27
- action: [definition],
28
- effect: "Allow",
29
- resource: "*",
27
+ @policy[:Statement] << {
28
+ Action: [definition],
29
+ Effect: "Allow",
30
+ Resource: "*",
30
31
  }
31
32
  when Hash
32
33
  definition = definition.stringify_keys
33
34
  if definition.key?("Version") # special case where we replace the policy entirely
34
35
  @policy = definition
35
36
  else
36
- @policy[:statement] << definition
37
+ @policy[:Statement] << definition
37
38
  end
38
39
  end
39
40
  end
@@ -1,6 +1,6 @@
1
1
  # CloudFormation AWS::IoT::TopicRule docs: https://amzn.to/2SMBOVm
2
- module Jets::Resource::Iot
3
- class TopicRule < Jets::Resource::Base
2
+ module Jets::Cfn::Resource::Iot
3
+ class TopicRule < Jets::Cfn::Base
4
4
  def initialize(props={})
5
5
  @props = props # associated_properties from dsl.rb
6
6
  end
@@ -8,27 +8,27 @@ module Jets::Resource::Iot
8
8
  def definition
9
9
  {
10
10
  topic_logical_id => {
11
- type: "AWS::IoT::TopicRule",
12
- properties: merged_properties,
11
+ Type: "AWS::IoT::TopicRule",
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
20
  # required properties
21
- topic_rule_payload: {
22
- actions: [{
23
- lambda: { function_arn: "!GetAtt {namespace}LambdaFunction.Arn" }
21
+ TopicRulePayload: {
22
+ Actions: [{
23
+ Lambda: { FunctionArn: "!GetAtt {namespace}LambdaFunction.Arn" }
24
24
  }],
25
- rule_disabled: 'true',
25
+ RuleDisabled: 'false',
26
26
  }
27
27
  }.deep_merge(@props)
28
28
  end
29
29
 
30
30
  def topic_logical_id
31
- "{namespace}_iot_topic_rule"
31
+ "{namespace}IotTopicRule"
32
32
  end
33
33
  end
34
34
  end
@@ -1,6 +1,6 @@
1
1
  # Note the Lambda function timeout must be less than or equal to the sqs queue default timeout.
2
- module Jets::Resource::Lambda
3
- class EventSourceMapping < Jets::Resource::Base
2
+ module Jets::Cfn::Resource::Lambda
3
+ class EventSourceMapping < Jets::Cfn::Base
4
4
  def initialize(props={})
5
5
  @props = props # associated_properties from dsl.rb
6
6
  end
@@ -8,18 +8,18 @@ module Jets::Resource::Lambda
8
8
  def definition
9
9
  # CloudFormation Docs: https://amzn.to/2WM6165
10
10
  properties = {
11
- # batch_size: 10, # Defaults: Kinesis 100, DynamoDB Streams: 100, SQS: 10
12
- # enabled: boolean,
13
- # event_source_arn: string, # required
14
- function_name: "!Ref {namespace}LambdaFunction",
15
- # starting_position: string # reqiured for Required for Amazon Kinesis and Amazon DynamoDB Streams sources
11
+ # BatchSize: 10, # Defaults: Kinesis 100, DynamoDB Streams: 100, SQS: 10
12
+ # Enabled: boolean,
13
+ # EventSourceArn: string, # required
14
+ FunctionName: "!Ref {namespace}LambdaFunction",
15
+ # StartingPosition: string # reqiured for Required for Amazon Kinesis and Amazon DynamoDB Streams sources
16
16
  }
17
17
  properties.merge!(@props)
18
18
 
19
19
  {
20
20
  event_source_mapping_logical_id => {
21
- type: "AWS::Lambda::EventSourceMapping",
22
- properties: properties
21
+ Type: "AWS::Lambda::EventSourceMapping",
22
+ Properties: properties
23
23
  }
24
24
  }
25
25
  end
@@ -0,0 +1,21 @@
1
+ # Handles one_lambda_per_controller
2
+ class Jets::Cfn::Resource::Lambda::Function
3
+ class Controller < Jets::Cfn::Resource::Lambda::Function
4
+ # override
5
+ def combined_properties
6
+ props = env_properties
7
+ .deep_merge(global_properties)
8
+ .deep_merge(class_properties)
9
+ # .deep_merge(function_properties) # comment left to emphasize controller cannot have function_properties
10
+ finalize_properties!(props)
11
+ end
12
+
13
+ # override
14
+ def permission
15
+ Jets::Cfn::Resource::Lambda::Permission.new(replacements, self,
16
+ Principal: "apigateway.amazonaws.com",
17
+ SourceArn: "!Sub arn:aws:execute-api:${AWS::Region}:${AWS::AccountId}:${RestApi}/*/*",
18
+ )
19
+ end
20
+ end
21
+ end