jets 3.1.0 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (641) hide show
  1. checksums.yaml +4 -4
  2. data/.github/FUNDING.yml +1 -0
  3. data/.gitignore +5 -1
  4. data/CHANGELOG.md +141 -0
  5. data/Gemfile +1 -5
  6. data/LICENSE.txt +1 -1
  7. data/README.md +21 -43
  8. data/Rakefile +3 -3
  9. data/backers.md +0 -5
  10. data/engines/internal/app/controllers/jets/application_controller.rb +28 -0
  11. data/engines/internal/app/controllers/jets/bare_controller.rb +6 -0
  12. data/engines/internal/app/controllers/jets/health_controller.rb +55 -0
  13. data/engines/internal/app/controllers/jets/info_controller.rb +45 -0
  14. data/{lib/jets → engines}/internal/app/controllers/jets/mailers_controller.rb +12 -14
  15. data/{lib/jets → engines}/internal/app/controllers/jets/mount_controller.rb +6 -10
  16. data/{lib/jets → engines}/internal/app/controllers/jets/public_controller.rb +6 -2
  17. data/engines/internal/app/controllers/jets/welcome_controller.rb +9 -0
  18. data/engines/internal/app/functions/jets/base_path.rb +109 -0
  19. data/engines/internal/app/functions/jets/base_path_mapping.rb +191 -0
  20. data/engines/internal/app/jobs/jets/preheat_job.rb +67 -0
  21. data/engines/internal/app/views/jets/info/properties.html.erb +1 -0
  22. data/engines/internal/app/views/jets/info/routes.html.erb +10 -0
  23. data/{lib/jets → engines}/internal/app/views/jets/mailers/email.html.erb +37 -17
  24. data/engines/internal/app/views/jets/mailers/index.html.erb +8 -0
  25. data/engines/internal/app/views/jets/mailers/mailer.html.erb +6 -0
  26. data/{lib/jets/commands/templates/skeleton/public/index.html.tt → engines/internal/app/views/jets/welcome/index.html.erb} +8 -4
  27. data/engines/internal/app/views/layouts/application.html.erb +51 -0
  28. data/engines/internal/lib/internal/actiondispatch.rb +39 -0
  29. data/engines/internal/lib/internal/actionmailer.rb +51 -0
  30. data/engines/internal/lib/internal/actionview.rb +152 -0
  31. data/engines/internal/lib/internal/activerecord.rb +37 -0
  32. data/engines/internal/lib/internal/activesupport.rb +47 -0
  33. data/engines/internal/lib/internal/engine.rb +13 -0
  34. data/engines/internal/lib/internal/i18n_engine.rb +19 -0
  35. data/engines/internal/lib/internal/jets_controller.rb +46 -0
  36. data/engines/internal/lib/internal/overrides/debug_exceptions.rb +40 -0
  37. data/engines/internal/lib/internal/templates/rescues/_trace.html.erb +62 -0
  38. data/engines/internal/lib/internal/templates/rescues/_trace.text.erb +9 -0
  39. data/engines/internal/lib/internal/turbines/asset_tag_helper.rb +70 -0
  40. data/engines/internal/lib/internal/turbines/helpers.rb +18 -0
  41. data/engines/internal/lib/internal/turbines/routes_helpers.rb +42 -0
  42. data/exe/jets +1 -10
  43. data/jets.gemspec +16 -13
  44. data/lib/jets/app_loader.rb +77 -0
  45. data/lib/jets/application/bootstrap.rb +100 -0
  46. data/lib/jets/application/configuration/defaults.rb +256 -0
  47. data/lib/jets/application/configuration.rb +494 -0
  48. data/lib/jets/application/default_middleware_stack.rb +140 -0
  49. data/lib/jets/application/dummy_erb_compiler.rb +18 -0
  50. data/lib/jets/application/finisher.rb +266 -0
  51. data/lib/jets/application/routes_reloader.rb +80 -0
  52. data/lib/jets/application.rb +515 -199
  53. data/lib/jets/authorizer/base.rb +1 -0
  54. data/lib/jets/authorizer/dsl.rb +15 -11
  55. data/lib/jets/authorizer/helpers/iam_helper.rb +13 -11
  56. data/lib/jets/autoloaders/gem.rb +70 -0
  57. data/lib/jets/autoloaders/inflector.rb +21 -0
  58. data/lib/jets/autoloaders.rb +38 -101
  59. data/lib/jets/aws_info.rb +2 -2
  60. data/lib/jets/aws_services/stack_status.rb +1 -1
  61. data/lib/jets/aws_services.rb +8 -0
  62. data/lib/jets/backtrace_cleaner.rb +27 -0
  63. data/lib/jets/booter.rb +30 -118
  64. data/lib/jets/builders/code_builder.rb +64 -122
  65. data/lib/jets/builders/code_size.rb +1 -0
  66. data/lib/jets/builders/gem_replacer.rb +6 -12
  67. data/lib/jets/builders/handler_generator.rb +34 -14
  68. data/lib/jets/builders/lambda_layer.rb +2 -7
  69. data/lib/jets/builders/purger.rb +1 -1
  70. data/lib/jets/builders/rack_packager.rb +1 -1
  71. data/lib/jets/builders/ruby_packager.rb +54 -10
  72. data/lib/jets/builders/shim_vars/app.rb +10 -6
  73. data/lib/jets/builders/templates/handlers/one_lambda_for_all_controllers.rb +33 -0
  74. data/lib/jets/builders/templates/handlers/one_lambda_per_controller.rb +20 -0
  75. data/lib/jets/builders/templates/{handler.rb → handlers/one_lambda_per_method.rb} +6 -0
  76. data/lib/jets/bundle.rb +2 -9
  77. data/lib/jets/cfn/base.rb +82 -0
  78. data/lib/jets/cfn/builder/api/base.rb +12 -0
  79. data/lib/jets/cfn/{builders/api_deployment_builder.rb → builder/api/deployment.rb} +11 -21
  80. data/lib/jets/cfn/builder/api/gateway.rb +104 -0
  81. data/lib/jets/cfn/builder/api/mapping.rb +54 -0
  82. data/lib/jets/cfn/builder/api/methods.rb +72 -0
  83. data/lib/jets/cfn/builder/api/paged.rb +30 -0
  84. data/lib/jets/cfn/builder/api/pages/base.rb +105 -0
  85. data/lib/jets/cfn/builder/api/pages/methods.rb +17 -0
  86. data/lib/jets/cfn/builder/api/pages/page.rb +19 -0
  87. data/lib/jets/cfn/builder/api/pages/resources.rb +21 -0
  88. data/lib/jets/cfn/builder/api/resources.rb +40 -0
  89. data/lib/jets/cfn/{builders/authorizer_builder.rb → builder/authorizer.rb} +16 -19
  90. data/lib/jets/cfn/builder/controller.rb +28 -0
  91. data/lib/jets/cfn/builder/function.rb +9 -0
  92. data/lib/jets/cfn/builder/interface.rb +146 -0
  93. data/lib/jets/cfn/builder/job.rb +10 -0
  94. data/lib/jets/cfn/builder/nested.rb +130 -0
  95. data/lib/jets/cfn/builder/one_controller.rb +53 -0
  96. data/lib/jets/cfn/{builders/parent_builder → builder/parent}/stagger.rb +1 -1
  97. data/lib/jets/cfn/builder/parent.rb +149 -0
  98. data/lib/jets/cfn/builder/post_process.rb +25 -0
  99. data/lib/jets/cfn/{builders/rule_builder.rb → builder/rule.rb} +4 -8
  100. data/lib/jets/cfn/{builders/shared_builder.rb → builder/shared.rb} +5 -4
  101. data/lib/jets/cfn/{builders → builder}/util/source.rb +1 -1
  102. data/lib/jets/{commands/build.rb → cfn/builder.rb} +50 -78
  103. data/lib/jets/cfn/deployment.rb +45 -0
  104. data/lib/jets/cfn/download.rb +39 -0
  105. data/lib/jets/cfn/params/api/base.rb +39 -0
  106. data/lib/jets/cfn/params/api/cors.rb +10 -0
  107. data/lib/jets/cfn/params/api/methods.rb +69 -0
  108. data/lib/jets/cfn/params/api/resources.rb +28 -0
  109. data/lib/jets/{resource/child_stack/common_parameters.rb → cfn/params/common.rb} +3 -3
  110. data/lib/jets/{resource → cfn/resource}/api_gateway/authorizer.rb +21 -21
  111. data/lib/jets/cfn/resource/api_gateway/base_path/function.rb +57 -0
  112. data/lib/jets/{resource → cfn/resource}/api_gateway/base_path/mapping.rb +13 -12
  113. data/lib/jets/cfn/resource/api_gateway/base_path/role.rb +70 -0
  114. data/lib/jets/{resource → cfn/resource}/api_gateway/deployment.rb +13 -20
  115. data/lib/jets/{resource → cfn/resource}/api_gateway/domain_name.rb +11 -11
  116. data/lib/jets/{resource → cfn/resource}/api_gateway/method/authorization.rb +1 -1
  117. data/lib/jets/cfn/resource/api_gateway/method.rb +92 -0
  118. data/lib/jets/{resource → cfn/resource}/api_gateway/resource.rb +14 -10
  119. data/lib/jets/cfn/resource/api_gateway/resource_id.rb +25 -0
  120. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/change_detection.rb +1 -1
  121. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/logical_id/message.rb +14 -4
  122. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/logical_id.rb +2 -2
  123. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/base.rb +15 -41
  124. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/media_types.rb +3 -3
  125. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/page.rb +6 -6
  126. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/to.rb +8 -3
  127. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/variable.rb +2 -2
  128. data/lib/jets/cfn/resource/api_gateway/rest_api/routes/change.rb +27 -0
  129. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/collision/variable_exception.rb +1 -1
  130. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/collision.rb +1 -1
  131. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes.rb +1 -1
  132. data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api.rb +22 -12
  133. data/lib/jets/{resource → cfn/resource}/associated.rb +1 -1
  134. data/lib/jets/{resource → cfn/resource}/config/config_rule.rb +18 -18
  135. data/lib/jets/{resource → cfn/resource}/config/managed_rule.rb +5 -5
  136. data/lib/jets/{resource → cfn/resource}/events/rule.rb +10 -10
  137. data/lib/jets/{resource → cfn/resource}/iam/application_role.rb +4 -4
  138. data/lib/jets/cfn/resource/iam/base_role_definition.rb +56 -0
  139. data/lib/jets/{resource → cfn/resource}/iam/class_role.rb +5 -5
  140. data/lib/jets/{resource → cfn/resource}/iam/function_role.rb +6 -6
  141. data/lib/jets/{resource → cfn/resource}/iam/managed_policy.rb +1 -1
  142. data/lib/jets/cfn/resource/iam/policy.rb +31 -0
  143. data/lib/jets/{resource → cfn/resource}/iam/policy_document.rb +10 -9
  144. data/lib/jets/{resource → cfn/resource}/iot/topic_rule.rb +10 -10
  145. data/lib/jets/{resource → cfn/resource}/lambda/event_source_mapping.rb +9 -9
  146. data/lib/jets/cfn/resource/lambda/function/controller.rb +21 -0
  147. data/lib/jets/{resource → cfn/resource}/lambda/function/environment.rb +9 -7
  148. data/lib/jets/cfn/resource/lambda/function.rb +266 -0
  149. data/lib/jets/{resource → cfn/resource}/lambda/gem_layer.rb +2 -2
  150. data/lib/jets/{resource → cfn/resource}/lambda/layer_version.rb +10 -10
  151. data/lib/jets/cfn/resource/lambda/permission.rb +51 -0
  152. data/lib/jets/cfn/resource/logs/subscription_filter.rb +31 -0
  153. data/lib/jets/cfn/resource/nested/api/base.rb +4 -0
  154. data/lib/jets/cfn/resource/nested/api/deployment.rb +53 -0
  155. data/lib/jets/cfn/resource/nested/api/gateway.rb +15 -0
  156. data/lib/jets/cfn/resource/nested/api/mapping.rb +33 -0
  157. data/lib/jets/cfn/resource/nested/api/methods.rb +30 -0
  158. data/lib/jets/cfn/resource/nested/api/page.rb +8 -0
  159. data/lib/jets/cfn/resource/nested/api/resources.rb +22 -0
  160. data/lib/jets/{resource/child_stack → cfn/resource/nested}/app_class.rb +15 -48
  161. data/lib/jets/{resource/child_stack → cfn/resource/nested}/authorizer.rb +8 -14
  162. data/lib/jets/cfn/resource/nested/base.rb +38 -0
  163. data/lib/jets/cfn/resource/nested/one_controller.rb +48 -0
  164. data/lib/jets/{resource/child_stack → cfn/resource/nested}/shared.rb +10 -16
  165. data/lib/jets/cfn/resource/one/function.rb +66 -0
  166. data/lib/jets/cfn/resource/one/permission.rb +17 -0
  167. data/lib/jets/{resource → cfn/resource}/replacer.rb +26 -27
  168. data/lib/jets/{resource → cfn/resource}/route53/record_set.rb +18 -18
  169. data/lib/jets/{resource → cfn/resource}/s3/bucket.rb +4 -4
  170. data/lib/jets/cfn/resource/s3/jets_bucket.rb +68 -0
  171. data/lib/jets/{resource → cfn/resource}/sns/subscription.rb +8 -8
  172. data/lib/jets/{resource → cfn/resource}/sns/topic.rb +10 -10
  173. data/lib/jets/{resource → cfn/resource}/sns/topic_policy.rb +13 -13
  174. data/lib/jets/{resource → cfn/resource}/sqs/queue.rb +5 -5
  175. data/lib/jets/{resource → cfn/resource}/standardizer.rb +8 -9
  176. data/lib/jets/cfn/resource.rb +8 -0
  177. data/lib/jets/cfn/ship.rb +30 -16
  178. data/lib/jets/cfn/status.rb +1 -1
  179. data/lib/jets/cfn/template.rb +89 -0
  180. data/lib/jets/cfn/upload.rb +26 -23
  181. data/lib/jets/cli.rb +28 -203
  182. data/lib/jets/command/actions.rb +49 -0
  183. data/lib/jets/command/api_helpers.rb +41 -0
  184. data/lib/jets/command/aws_helpers.rb +26 -0
  185. data/lib/jets/command/base.rb +204 -0
  186. data/lib/jets/command/behavior.rb +83 -0
  187. data/lib/jets/command/environment_argument.rb +42 -0
  188. data/lib/jets/command/help/call.md +48 -0
  189. data/lib/jets/{commands → command}/help/deploy.md +1 -1
  190. data/lib/jets/command/help/logs.md +21 -0
  191. data/lib/jets/{commands → command}/help/new.md +3 -4
  192. data/lib/jets/command/help/projects.md +6 -0
  193. data/lib/jets/command/help/releases.md +37 -0
  194. data/lib/jets/command/help/rollback.md +5 -0
  195. data/lib/jets/command/help/routes.md +15 -0
  196. data/lib/jets/command/help/runner.md +40 -0
  197. data/lib/jets/command/help/stacks.md +6 -0
  198. data/lib/jets/command/help.rb +17 -0
  199. data/lib/jets/command/helpers/editor.rb +35 -0
  200. data/lib/jets/command.rb +133 -0
  201. data/lib/jets/commands/application/application_command.rb +40 -0
  202. data/lib/jets/commands/build/build_command.rb +33 -0
  203. data/lib/jets/commands/call/anonymous_guesser.rb +1 -1
  204. data/lib/jets/commands/call/autoload_guesser.rb +2 -2
  205. data/lib/jets/commands/call/base_guesser.rb +5 -5
  206. data/lib/jets/commands/call/call_command.rb +27 -0
  207. data/lib/jets/commands/call/caller.rb +184 -0
  208. data/lib/jets/commands/call/guesser.rb +1 -1
  209. data/lib/jets/commands/clean/base.rb +1 -1
  210. data/lib/jets/commands/clean/build.rb +1 -1
  211. data/lib/jets/commands/clean/clean_command.rb +15 -0
  212. data/lib/jets/commands/clean/log.rb +4 -4
  213. data/lib/jets/commands/configure/configure_command.rb +9 -0
  214. data/lib/jets/commands/console/console_command.rb +38 -0
  215. data/lib/jets/commands/credentials/USAGE +103 -0
  216. data/lib/jets/commands/credentials/credentials_command/diffing.rb +51 -0
  217. data/lib/jets/commands/credentials/credentials_command.rb +139 -0
  218. data/lib/jets/commands/db/system/change/change_command.rb +24 -0
  219. data/lib/jets/commands/dbconsole/dbconsole_command.rb +184 -0
  220. data/lib/jets/commands/degenerate/degenerate_command.rb +21 -0
  221. data/lib/jets/commands/delete/delete_command.rb +155 -0
  222. data/lib/jets/commands/{deploy.rb → deploy/deploy_command.rb} +30 -49
  223. data/lib/jets/commands/dev/dev_command.rb +19 -0
  224. data/lib/jets/commands/{dotenv.rb → dotenv/dotenv_command.rb} +2 -2
  225. data/lib/jets/commands/encrypted/USAGE +46 -0
  226. data/lib/jets/commands/encrypted/encrypted_command.rb +87 -0
  227. data/lib/jets/commands/gems/gems_command.rb +14 -0
  228. data/lib/jets/commands/generate/generate_command.rb +95 -0
  229. data/lib/jets/commands/help/USAGE +20 -0
  230. data/lib/jets/commands/help/help_command.rb +15 -0
  231. data/lib/jets/commands/initializers/initializers_command.rb +19 -0
  232. data/lib/jets/commands/logs/logs_command.rb +45 -0
  233. data/lib/jets/commands/new/new_command.rb +19 -0
  234. data/lib/jets/commands/notes/notes_command.rb +30 -0
  235. data/lib/jets/commands/plugin/plugin_command.rb +45 -0
  236. data/lib/jets/commands/projects/projects_command.rb +30 -0
  237. data/lib/jets/commands/rake/rake_command.rb +59 -0
  238. data/lib/jets/commands/releases/releases_command.rb +72 -0
  239. data/lib/jets/commands/rollback/rollback_command.rb +41 -0
  240. data/lib/jets/commands/routes/routes_command.rb +19 -0
  241. data/lib/jets/commands/runner/runner_command.rb +60 -0
  242. data/lib/jets/commands/server/server_command.rb +291 -0
  243. data/lib/jets/commands/stacks/stacks_command.rb +39 -0
  244. data/lib/jets/commands/status/status_command.rb +9 -0
  245. data/lib/jets/commands/url/url_command.rb +92 -0
  246. data/lib/jets/commands/version/version_command.rb +11 -0
  247. data/lib/jets/commands.rb +17 -0
  248. data/lib/jets/configuration.rb +166 -0
  249. data/lib/jets/controller/base.rb +105 -183
  250. data/lib/jets/controller/compat/abstract_controller/base.rb +126 -0
  251. data/lib/jets/controller/compat/action_controller/metal.rb +99 -0
  252. data/lib/jets/controller/compat/caching.rb +13 -0
  253. data/lib/jets/controller/compat/future.rb +13 -0
  254. data/lib/jets/controller/compat/route_set.rb +47 -0
  255. data/lib/jets/controller/decorate/apigw_stage.rb +39 -0
  256. data/lib/jets/controller/{authorization.rb → decorate/authorization.rb} +1 -1
  257. data/lib/jets/controller/decorate/logging.rb +90 -0
  258. data/lib/jets/controller/decorate/redirecting.rb +16 -0
  259. data/lib/jets/controller/decorate/url_for.rb +10 -0
  260. data/lib/jets/controller/{rack/adapter.rb → handler/apigw.rb} +36 -37
  261. data/lib/jets/controller/handler.rb +41 -0
  262. data/lib/jets/controller/middleware/main.rb +16 -8
  263. data/lib/jets/controller/middleware/{local/api_gateway.rb → mimic/apigw.rb} +41 -4
  264. data/lib/jets/controller/middleware/mimic/lambda_context.rb +44 -0
  265. data/lib/jets/controller/middleware/{local.rb → mimic.rb} +36 -51
  266. data/lib/jets/controller/rack_adapter/action.rb +35 -0
  267. data/lib/jets/controller/{rack → rack_adapter}/env.rb +39 -18
  268. data/lib/jets/controller/request/compat/params.rb +144 -0
  269. data/lib/jets/controller/request/compat/request.rb +125 -0
  270. data/lib/jets/controller/request.rb +35 -18
  271. data/lib/jets/controller/response/compat/response.rb +67 -0
  272. data/lib/jets/controller/response.rb +91 -8
  273. data/lib/jets/core.rb +153 -50
  274. data/lib/jets/core_ext/file.rb +9 -0
  275. data/lib/jets/core_ext/kernel.rb +2 -2
  276. data/lib/jets/core_ext/symbol.rb +5 -0
  277. data/lib/jets/core_ext.rb +4 -0
  278. data/lib/jets/dev_caching.rb +44 -0
  279. data/lib/jets/dotenv/ssm.rb +5 -2
  280. data/lib/jets/dotenv.rb +4 -3
  281. data/lib/jets/engine/configuration.rb +96 -0
  282. data/lib/jets/engine/turbines.rb +23 -0
  283. data/lib/jets/engine.rb +380 -0
  284. data/lib/jets/erb.rb +1 -1
  285. data/lib/jets/exception_reporting.rb +43 -0
  286. data/lib/jets/generators/job/job_generator.rb +41 -0
  287. data/lib/jets/generators/job/templates/event_types/dynamodb.rb.tt +8 -0
  288. data/lib/jets/generators/job/templates/event_types/iot.rb.tt +8 -0
  289. data/lib/jets/generators/job/templates/event_types/kinesis.rb.tt +9 -0
  290. data/lib/jets/generators/job/templates/event_types/log.rb.tt +9 -0
  291. data/lib/jets/generators/job/templates/event_types/rule.rb.tt +23 -0
  292. data/lib/jets/generators/job/templates/event_types/s3.rb.tt +11 -0
  293. data/lib/jets/{generator/templates/active_job/job/templates/job.rb.tt → generators/job/templates/event_types/scheduled.rb.tt} +3 -3
  294. data/lib/jets/generators/job/templates/event_types/sns.rb.tt +9 -0
  295. data/lib/jets/generators/job/templates/event_types/sqs.rb.tt +9 -0
  296. data/lib/jets/generators/overrides/app/USAGE +38 -0
  297. data/lib/jets/generators/overrides/app/app_generator.rb +148 -0
  298. data/lib/jets/generators/overrides/app/helpers.rb +139 -0
  299. data/lib/jets/generators/overrides/app/templates/.env +10 -0
  300. data/lib/jets/{commands/templates/skeleton/.gitignore → generators/overrides/app/templates/.gitignore.tt} +2 -1
  301. data/lib/jets/generators/overrides/app/templates/Gemfile.tt +25 -0
  302. data/lib/jets/generators/overrides/app/templates/Rakefile +2 -0
  303. data/lib/jets/generators/overrides/app/templates/app/assets/config/manifest.js +3 -0
  304. data/lib/jets/generators/overrides/app/templates/app/assets/stylesheets/application.css +15 -0
  305. data/lib/jets/generators/overrides/app/templates/app/javascript/application.js +5 -0
  306. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/app/models/application_record.rb +1 -1
  307. data/lib/jets/generators/overrides/app/templates/app/views/layouts/application.html.erb.tt +30 -0
  308. data/lib/jets/generators/overrides/app/templates/bin/jets +3 -0
  309. data/lib/jets/generators/overrides/app/templates/config/application.rb.tt +15 -0
  310. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/config/database.yml.tt +1 -1
  311. data/lib/jets/generators/overrides/app/templates/config/environments/development.rb.tt +29 -0
  312. data/lib/jets/generators/overrides/app/templates/config/environments/production.rb.tt +19 -0
  313. data/lib/jets/generators/overrides/app/templates/config/environments/test.rb.tt +23 -0
  314. data/lib/jets/generators/overrides/app/templates/config/initializers/content_security_policy.rb +31 -0
  315. data/lib/jets/generators/overrides/app/templates/config/initializers/filter_parameter_logging.rb +8 -0
  316. data/lib/jets/generators/overrides/app/templates/config/initializers/permissions_policy.rb +11 -0
  317. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/config/routes.rb +5 -1
  318. data/lib/jets/generators/overrides/app/templates/db/.gitkeep +0 -0
  319. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/public/404.html +6 -6
  320. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/public/422.html +6 -6
  321. data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/public/500.html +6 -6
  322. data/lib/jets/generators/overrides/templates/erb/scaffold/index.html.erb +22 -0
  323. data/lib/jets/generators/overrides/templates/erb/scaffold/partial.html.erb +8 -0
  324. data/lib/jets/{generator/templates/rails/scaffold_controller/api_controller.rb → generators/overrides/templates/rails/scaffold_controller/api_controller.rb.tt} +5 -9
  325. data/lib/jets/generators/overrides/templates/rails/scaffold_controller/controller.rb.tt +67 -0
  326. data/lib/jets/generators.rb +112 -0
  327. data/lib/jets/inflections.rb +1 -1
  328. data/lib/jets/info.rb +116 -0
  329. data/lib/jets/initializable.rb +95 -0
  330. data/lib/jets/job/base.rb +5 -2
  331. data/lib/jets/job/dsl/dynamodb_event.rb +19 -9
  332. data/lib/jets/job/dsl/event_source_mapping.rb +1 -1
  333. data/lib/jets/job/dsl/iot_event.rb +6 -6
  334. data/lib/jets/job/dsl/kinesis_event.rb +5 -5
  335. data/lib/jets/job/dsl/log_event.rb +2 -2
  336. data/lib/jets/job/dsl/rule_event.rb +7 -4
  337. data/lib/jets/job/dsl/s3_event.rb +1 -1
  338. data/lib/jets/job/dsl/sns_event.rb +6 -6
  339. data/lib/jets/job/dsl/sqs_event.rb +11 -11
  340. data/lib/jets/job/helpers/sns_event_helper.rb +8 -0
  341. data/lib/jets/job/helpers/sqs_event_helper.rb +8 -0
  342. data/lib/jets/klass.rb +5 -6
  343. data/lib/jets/lambda/definition.rb +118 -0
  344. data/lib/jets/lambda/dsl/warnings.rb +57 -0
  345. data/lib/jets/lambda/dsl.rb +73 -54
  346. data/lib/jets/lambda/function.rb +3 -3
  347. data/lib/jets/lambda/function_constructor.rb +6 -6
  348. data/lib/jets/lambda/functions.rb +36 -1
  349. data/lib/jets/mega/hash_converter.rb +2 -2
  350. data/lib/jets/mega/request/source.rb +1 -2
  351. data/lib/jets/mega/request.rb +4 -4
  352. data/lib/jets/names.rb +79 -0
  353. data/lib/jets/overrides/dummy/rails.rb +11 -0
  354. data/lib/jets/overrides/lambda/marshaller.rb +10 -0
  355. data/lib/jets/overrides/puma.rb +10 -0
  356. data/lib/jets/paths.rb +243 -0
  357. data/lib/jets/{poly_fun → poly}/base_executor.rb +13 -13
  358. data/lib/jets/{poly_fun → poly}/lambda_executor.rb +2 -2
  359. data/lib/jets/{poly_fun → poly}/node_error.rb +1 -1
  360. data/lib/jets/{poly_fun → poly}/node_executor.rb +4 -4
  361. data/lib/jets/{poly_fun → poly}/python_error.rb +1 -1
  362. data/lib/jets/{poly_fun → poly}/python_executor.rb +2 -2
  363. data/lib/jets/{poly_fun.rb → poly.rb} +12 -12
  364. data/lib/jets/preheat.rb +26 -33
  365. data/lib/jets/processors/deducer.rb +2 -2
  366. data/lib/jets/processors/main_processor.rb +6 -13
  367. data/lib/jets/rack/logger.rb +77 -0
  368. data/lib/jets/router/compat/route_set.rb +177 -0
  369. data/lib/jets/router/dsl/mount.rb +40 -6
  370. data/lib/jets/router/dsl.rb +125 -105
  371. data/lib/jets/router/engine_mount.rb +36 -0
  372. data/lib/jets/router/help.rb +130 -0
  373. data/lib/jets/router/helpers/named_routes/add_full_url.rb +13 -0
  374. data/lib/jets/router/helpers/named_routes/generated.rb +197 -0
  375. data/lib/jets/router/helpers/named_routes/proxy.rb +66 -0
  376. data/lib/jets/router/matcher.rb +140 -17
  377. data/lib/jets/router/resources/options.rb +6 -4
  378. data/lib/jets/router/route/after_initialize.rb +64 -0
  379. data/lib/jets/router/route/as.rb +93 -0
  380. data/lib/jets/router/route/authorizer.rb +1 -0
  381. data/lib/jets/router/route/compat.rb +45 -0
  382. data/lib/jets/router/route/info.rb +74 -0
  383. data/lib/jets/router/route/node.rb +137 -0
  384. data/lib/jets/router/route/path.rb +93 -0
  385. data/lib/jets/router/route.rb +109 -90
  386. data/lib/jets/router/route_set.rb +214 -0
  387. data/lib/jets/router/scope.rb +204 -69
  388. data/lib/jets/router/state.rb +67 -0
  389. data/lib/jets/router/util.rb +1 -31
  390. data/lib/jets/router.rb +64 -150
  391. data/lib/jets/ruby_version_check.rb +15 -0
  392. data/lib/jets/rule/base.rb +1 -0
  393. data/lib/jets/rule/dsl.rb +7 -7
  394. data/lib/jets/secrets.rb +110 -0
  395. data/lib/jets/spec_helpers/controllers/request.rb +22 -16
  396. data/lib/jets/spec_helpers/controllers.rb +32 -24
  397. data/lib/jets/spec_helpers.rb +0 -6
  398. data/lib/jets/stack/builder.rb +3 -2
  399. data/lib/jets/stack/definition.rb +1 -4
  400. data/lib/jets/stack/function.rb +2 -2
  401. data/lib/jets/stack/main/dsl/cloudwatch.rb +4 -4
  402. data/lib/jets/stack/main/dsl/kinesis.rb +2 -2
  403. data/lib/jets/stack/main/dsl/lambda.rb +26 -19
  404. data/lib/jets/stack/main/dsl/sqs.rb +2 -2
  405. data/lib/jets/stack/output/lookup.rb +1 -1
  406. data/lib/jets/stack/output.rb +2 -2
  407. data/lib/jets/stack/parameter.rb +2 -2
  408. data/lib/jets/stack/resource.rb +3 -3
  409. data/lib/jets/stack/s3_event.rb +51 -37
  410. data/lib/jets/stack.rb +1 -1
  411. data/lib/jets/tasks/engine.rake +85 -0
  412. data/lib/jets/tasks/framework.rake +66 -0
  413. data/lib/jets/tasks/log.rake +41 -0
  414. data/lib/jets/tasks/middleware.rake +9 -0
  415. data/lib/jets/tasks/misc.rake +81 -0
  416. data/lib/jets/tasks/statistics.rake +37 -0
  417. data/lib/jets/tasks/tmp.rake +51 -0
  418. data/lib/jets/tasks/yarn.rake +29 -0
  419. data/lib/jets/tasks/zeitwerk.rake +61 -0
  420. data/lib/jets/tasks.rb +18 -0
  421. data/lib/jets/tmp_loader.rb +1 -1
  422. data/lib/jets/turbine/configurable.rb +36 -0
  423. data/lib/jets/turbine/configuration.rb +101 -0
  424. data/lib/jets/turbine.rb +164 -20
  425. data/lib/jets/util/camelize.rb +24 -0
  426. data/lib/jets/util/yamler.rb +16 -0
  427. data/lib/jets/version.rb +1 -1
  428. data/lib/jets.rb +8 -14
  429. metadata +444 -347
  430. data/.python-version +0 -1
  431. data/.ruby-version +0 -1
  432. data/bin/release +0 -9
  433. data/lib/jets/application/defaults.rb +0 -200
  434. data/lib/jets/builders/reconfigure_rails/config/initializers/jets.rb +0 -16
  435. data/lib/jets/builders/reconfigure_rails.rb +0 -114
  436. data/lib/jets/cfn/builders/api_gateway_builder.rb +0 -123
  437. data/lib/jets/cfn/builders/api_resources_builder.rb +0 -44
  438. data/lib/jets/cfn/builders/base_child_builder.rb +0 -69
  439. data/lib/jets/cfn/builders/controller_builder.rb +0 -50
  440. data/lib/jets/cfn/builders/function_builder.rb +0 -14
  441. data/lib/jets/cfn/builders/interface.rb +0 -133
  442. data/lib/jets/cfn/builders/job_builder.rb +0 -14
  443. data/lib/jets/cfn/builders/parent_builder.rb +0 -130
  444. data/lib/jets/cfn/built_template.rb +0 -15
  445. data/lib/jets/cfn/template_source.rb +0 -61
  446. data/lib/jets/commands/base.rb +0 -145
  447. data/lib/jets/commands/call.rb +0 -182
  448. data/lib/jets/commands/clean.rb +0 -19
  449. data/lib/jets/commands/configure.rb +0 -51
  450. data/lib/jets/commands/console.rb +0 -12
  451. data/lib/jets/commands/db/environment-task.rake +0 -3
  452. data/lib/jets/commands/db/tasks/dummy/app.rb +0 -25
  453. data/lib/jets/commands/db/tasks/dummy/config.rb +0 -14
  454. data/lib/jets/commands/db/tasks.rb +0 -34
  455. data/lib/jets/commands/db.rb +0 -13
  456. data/lib/jets/commands/dbconsole.rb +0 -134
  457. data/lib/jets/commands/delete.rb +0 -136
  458. data/lib/jets/commands/dynamodb/migrate.rb +0 -9
  459. data/lib/jets/commands/dynamodb/migrator.rb +0 -36
  460. data/lib/jets/commands/dynamodb.rb +0 -19
  461. data/lib/jets/commands/gems.rb +0 -13
  462. data/lib/jets/commands/help/call.md +0 -69
  463. data/lib/jets/commands/help/dynamodb/generate.md +0 -52
  464. data/lib/jets/commands/help/dynamodb/migrate.md +0 -4
  465. data/lib/jets/commands/help/routes.md +0 -16
  466. data/lib/jets/commands/help/runner.md +0 -17
  467. data/lib/jets/commands/help.rb +0 -9
  468. data/lib/jets/commands/import/base.rb +0 -49
  469. data/lib/jets/commands/import/cheatsheet.rb +0 -35
  470. data/lib/jets/commands/import/rack.rb +0 -16
  471. data/lib/jets/commands/import/rails.rb +0 -74
  472. data/lib/jets/commands/import/sequence.rb +0 -90
  473. data/lib/jets/commands/import/templates/config/database.yml +0 -30
  474. data/lib/jets/commands/import/templates/submodules-cheatsheet.md +0 -89
  475. data/lib/jets/commands/import.rb +0 -12
  476. data/lib/jets/commands/main.rb +0 -166
  477. data/lib/jets/commands/markdown/creator.rb +0 -58
  478. data/lib/jets/commands/markdown/index.rb +0 -27
  479. data/lib/jets/commands/markdown/page.rb +0 -125
  480. data/lib/jets/commands/markdown/shell.rb +0 -11
  481. data/lib/jets/commands/new.rb +0 -173
  482. data/lib/jets/commands/rake_command.rb +0 -61
  483. data/lib/jets/commands/rake_tasks.rb +0 -50
  484. data/lib/jets/commands/runner.rb +0 -16
  485. data/lib/jets/commands/sequence.rb +0 -105
  486. data/lib/jets/commands/stack_info.rb +0 -30
  487. data/lib/jets/commands/templates/skeleton/.env.development.tt +0 -3
  488. data/lib/jets/commands/templates/skeleton/.env.test +0 -3
  489. data/lib/jets/commands/templates/skeleton/.env.tt +0 -3
  490. data/lib/jets/commands/templates/skeleton/.jetskeep +0 -1
  491. data/lib/jets/commands/templates/skeleton/Gemfile.tt +0 -40
  492. data/lib/jets/commands/templates/skeleton/Procfile +0 -7
  493. data/lib/jets/commands/templates/skeleton/Rakefile +0 -2
  494. data/lib/jets/commands/templates/skeleton/app/models/application_item.rb +0 -2
  495. data/lib/jets/commands/templates/skeleton/app/views/layouts/application.html.erb.tt +0 -26
  496. data/lib/jets/commands/templates/skeleton/config/application.rb.tt +0 -71
  497. data/lib/jets/commands/templates/skeleton/config/dynamodb.yml +0 -22
  498. data/lib/jets/commands/templates/skeleton/config/environments/development.rb +0 -7
  499. data/lib/jets/commands/templates/skeleton/config/environments/production.rb +0 -9
  500. data/lib/jets/commands/templates/skeleton/config/environments/test.rb +0 -7
  501. data/lib/jets/commands/templates/webpacker/app/javascript/packs/application.js.tt +0 -23
  502. data/lib/jets/commands/templates/webpacker/app/javascript/packs/theme.scss.tt +0 -24
  503. data/lib/jets/commands/upgrade/templates/bin/webpack +0 -19
  504. data/lib/jets/commands/upgrade/templates/bin/webpack-dev-server +0 -19
  505. data/lib/jets/commands/upgrade/version1.rb +0 -136
  506. data/lib/jets/commands/upgrade.rb +0 -105
  507. data/lib/jets/commands/url.rb +0 -69
  508. data/lib/jets/commands/webpacker_template.rb +0 -18
  509. data/lib/jets/controller/callbacks.rb +0 -73
  510. data/lib/jets/controller/cookies/jar.rb +0 -269
  511. data/lib/jets/controller/cookies.rb +0 -38
  512. data/lib/jets/controller/error/invalid_authenticity_token.rb +0 -6
  513. data/lib/jets/controller/error.rb +0 -4
  514. data/lib/jets/controller/forgery_protection.rb +0 -43
  515. data/lib/jets/controller/layout.rb +0 -17
  516. data/lib/jets/controller/middleware/cors.rb +0 -60
  517. data/lib/jets/controller/middleware/local/mimic_aws_call.rb +0 -38
  518. data/lib/jets/controller/middleware/local/route_matcher.rb +0 -22
  519. data/lib/jets/controller/middleware/reloader.rb +0 -15
  520. data/lib/jets/controller/parameters_filter.rb +0 -29
  521. data/lib/jets/controller/params.rb +0 -117
  522. data/lib/jets/controller/redirection.rb +0 -61
  523. data/lib/jets/controller/rendering/rack_renderer.rb +0 -267
  524. data/lib/jets/controller/rendering.rb +0 -96
  525. data/lib/jets/controller/stage.rb +0 -34
  526. data/lib/jets/controller.rb +0 -3
  527. data/lib/jets/db.rb +0 -15
  528. data/lib/jets/generator/templates/erb/controller/view.html.erb +0 -2
  529. data/lib/jets/generator/templates/erb/scaffold/index.html.erb +0 -29
  530. data/lib/jets/generator/templates/rails/controller/controller.rb +0 -13
  531. data/lib/jets/generator/templates/rails/helper/helper.rb +0 -4
  532. data/lib/jets/generator/templates/rails/scaffold_controller/controller.rb +0 -67
  533. data/lib/jets/generator.rb +0 -112
  534. data/lib/jets/internal/app/controllers/jets/bare_controller.rb +0 -16
  535. data/lib/jets/internal/app/controllers/jets/rack_controller.rb +0 -12
  536. data/lib/jets/internal/app/functions/jets/base_path.rb +0 -18
  537. data/lib/jets/internal/app/functions/jets/base_path_mapping.rb +0 -100
  538. data/lib/jets/internal/app/helpers/jets/mailers_helper.rb +0 -9
  539. data/lib/jets/internal/app/jobs/jets/preheat_job.rb +0 -70
  540. data/lib/jets/internal/app/views/jets/mailers/index.html.erb +0 -8
  541. data/lib/jets/internal/app/views/jets/mailers/mailer.html.erb +0 -6
  542. data/lib/jets/internal/turbines/jets/mailer.rb +0 -52
  543. data/lib/jets/lambda/task.rb +0 -111
  544. data/lib/jets/logger.rb +0 -21
  545. data/lib/jets/middleware/configurator.rb +0 -84
  546. data/lib/jets/middleware/default_stack.rb +0 -53
  547. data/lib/jets/middleware/layer.rb +0 -34
  548. data/lib/jets/middleware/stack.rb +0 -77
  549. data/lib/jets/middleware.rb +0 -33
  550. data/lib/jets/naming.rb +0 -63
  551. data/lib/jets/overrides/rails/action_controller.rb +0 -13
  552. data/lib/jets/overrides/rails/asset_tag_helper.rb +0 -114
  553. data/lib/jets/overrides/rails/common_methods.rb +0 -13
  554. data/lib/jets/overrides/rails/migration_checker.rb +0 -34
  555. data/lib/jets/overrides/rails/rendering_helper.rb +0 -27
  556. data/lib/jets/overrides/rails/url_helper.rb +0 -88
  557. data/lib/jets/overrides/rails.rb +0 -6
  558. data/lib/jets/rack_server.rb +0 -86
  559. data/lib/jets/resource/api_gateway/base_path/function.rb +0 -49
  560. data/lib/jets/resource/api_gateway/base_path/role.rb +0 -76
  561. data/lib/jets/resource/api_gateway/cors.rb +0 -61
  562. data/lib/jets/resource/api_gateway/method.rb +0 -102
  563. data/lib/jets/resource/api_gateway/rest_api/routes/change.rb +0 -16
  564. data/lib/jets/resource/base.rb +0 -28
  565. data/lib/jets/resource/child_stack/api_deployment.rb +0 -58
  566. data/lib/jets/resource/child_stack/api_gateway.rb +0 -23
  567. data/lib/jets/resource/child_stack/api_resource/page.rb +0 -20
  568. data/lib/jets/resource/child_stack/api_resource.rb +0 -54
  569. data/lib/jets/resource/child_stack/base.rb +0 -24
  570. data/lib/jets/resource/iam/base_role_definition.rb +0 -47
  571. data/lib/jets/resource/lambda/function.rb +0 -221
  572. data/lib/jets/resource/logs/subscription_filter.rb +0 -31
  573. data/lib/jets/resource/permission.rb +0 -45
  574. data/lib/jets/resource.rb +0 -71
  575. data/lib/jets/router/error.rb +0 -4
  576. data/lib/jets/router/finder.rb +0 -47
  577. data/lib/jets/router/helpers/core_helper.rb +0 -27
  578. data/lib/jets/router/helpers/named_routes_helper.rb +0 -8
  579. data/lib/jets/router/helpers.rb +0 -4
  580. data/lib/jets/router/method_creator/code.rb +0 -99
  581. data/lib/jets/router/method_creator/edit.rb +0 -12
  582. data/lib/jets/router/method_creator/generic.rb +0 -11
  583. data/lib/jets/router/method_creator/index.rb +0 -48
  584. data/lib/jets/router/method_creator/new.rb +0 -12
  585. data/lib/jets/router/method_creator/root.rb +0 -15
  586. data/lib/jets/router/method_creator/show.rb +0 -12
  587. data/lib/jets/router/method_creator.rb +0 -50
  588. data/lib/jets/turbo/database_yaml.rb +0 -41
  589. data/lib/jets/turbo/project/.gitignore +0 -12
  590. data/lib/jets/turbo/project/.jetskeep +0 -1
  591. data/lib/jets/turbo/project/Gemfile +0 -16
  592. data/lib/jets/turbo/project/Rakefile +0 -2
  593. data/lib/jets/turbo/project/app/controllers/application_controller.rb +0 -2
  594. data/lib/jets/turbo/project/app/helpers/application_helper.rb +0 -2
  595. data/lib/jets/turbo/project/app/jobs/application_job.rb +0 -4
  596. data/lib/jets/turbo/project/config/application.rb +0 -5
  597. data/lib/jets/turbo/project/config/routes.rb +0 -4
  598. data/lib/jets/turbo/project/config.ru +0 -5
  599. data/lib/jets/turbo/rails.rb +0 -127
  600. data/lib/jets/turbo/templates/config/database.yml +0 -30
  601. data/lib/jets/turbo.rb +0 -56
  602. data/readme/prerelease.md +0 -6
  603. data/readme/testing.md +0 -60
  604. /data/{lib/jets → engines}/internal/app/shared/functions/jets/s3_bucket_config.rb +0 -0
  605. /data/lib/jets/{commands → command}/help/build.md +0 -0
  606. /data/lib/jets/{commands → command}/help/clean/build.md +0 -0
  607. /data/lib/jets/{commands → command}/help/clean/log.md +0 -0
  608. /data/lib/jets/{commands → command}/help/console.md +0 -0
  609. /data/lib/jets/{commands → command}/help/db/generate.md +0 -0
  610. /data/lib/jets/{commands → command}/help/dbconsole.md +0 -0
  611. /data/lib/jets/{commands → command}/help/degenerate.md +0 -0
  612. /data/lib/jets/{commands → command}/help/delete.md +0 -0
  613. /data/lib/jets/{commands → command}/help/gems/check.md +0 -0
  614. /data/lib/jets/{commands → command}/help/generate.md +0 -0
  615. /data/lib/jets/{commands → command}/help/import/rack.md +0 -0
  616. /data/lib/jets/{commands → command}/help/import/rails.md +0 -0
  617. /data/lib/jets/{commands → command}/help/server.md +0 -0
  618. /data/lib/jets/{commands → command}/help/status.md +0 -0
  619. /data/lib/jets/{commands → command}/help/upgrade.md +0 -0
  620. /data/lib/jets/{commands → command}/help/url.md +0 -0
  621. /data/lib/jets/{generator/templates/active_job → generators}/job/templates/application_job.rb.tt +0 -0
  622. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/.rspec +0 -0
  623. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/README.md +0 -0
  624. /data/{.gitmodules → lib/jets/generators/overrides/app/templates/app/assets/images/.keep} +0 -0
  625. /data/lib/jets/{commands/templates/skeleton/db/.gitkeep → generators/overrides/app/templates/app/assets/javascripts/.keep} +0 -0
  626. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/app/controllers/application_controller.rb +0 -0
  627. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/app/helpers/application_helper.rb +0 -0
  628. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/app/jobs/application_job.rb +0 -0
  629. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/config.ru +0 -0
  630. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/public/favicon.ico +0 -0
  631. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/spec/controllers/posts_controller_spec.rb +0 -0
  632. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/spec/fixtures/payloads/posts-index.json +0 -0
  633. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/spec/fixtures/payloads/posts-show.json +0 -0
  634. /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/spec/spec_helper.rb.tt +0 -0
  635. /data/lib/jets/{generator → generators/overrides}/templates/erb/scaffold/_form.html.erb +0 -0
  636. /data/lib/jets/{generator → generators/overrides}/templates/erb/scaffold/edit.html.erb +0 -0
  637. /data/lib/jets/{generator → generators/overrides}/templates/erb/scaffold/new.html.erb +0 -0
  638. /data/lib/jets/{generator → generators/overrides}/templates/erb/scaffold/show.html.erb +0 -0
  639. /data/lib/jets/{generator → generators/overrides}/templates/rails/assets/javascript.js +0 -0
  640. /data/lib/jets/{generator → generators/overrides}/templates/rails/assets/stylesheet.css +0 -0
  641. /data/lib/jets/{generator → generators/overrides}/templates/rails/scaffold/scaffold.css +0 -0
@@ -16,28 +16,29 @@
16
16
  # * Also tried to change the domain name of to something like demo-dev-[random].mydomain.com
17
17
  # That does not work because the domain name has to match the route53 record exactly.
18
18
  #
19
- module Jets::Resource::ApiGateway::BasePath
20
- class Mapping < Jets::Resource::Base
19
+ module Jets::Cfn::Resource::ApiGateway::BasePath
20
+ class Mapping < Jets::Cfn::Base
21
21
  def definition
22
22
  function_logical_id = "BasePathFunction" # lambda function that supports custom resource
23
23
  {
24
- base_path_mapping: {
25
- type: "Custom::BasePathMapping",
26
- properties: {
27
- service_token: "!GetAtt #{function_logical_id}.Arn",
28
- # base_path: '', # empty path represents root
29
- # domain_name: "!Ref DomainName",
30
- # rest_api_id: "!Ref RestApi", # since this is in the Deployment template
31
- # stage: Deployment.stage_name,
24
+ BasePathMapping: {
25
+ Type: "Custom::BasePathMapping",
26
+ Properties: {
27
+ ServiceToken: "!GetAtt #{function_logical_id}.Arn",
28
+ # A change to any of these properties updates the CloudFormation Custom Resource
29
+ # IE: It runs the Lambda function that implements the custom resource
30
+ BasePath: Jets.config.domain.base_path, # '' empty path represents root
31
+ DomainName: "!Ref DomainName",
32
+ RestApiId: "!Ref RestApi",
33
+ Stage: Jets::Cfn::Resource::ApiGateway::Deployment.stage_name,
32
34
  },
33
- depends_on: Jets::Resource::ApiGateway::Deployment.logical_id,
34
35
  }
35
36
  }
36
37
  end
37
38
 
38
39
  def outputs
39
40
  {
40
- "BasePathMapping" => "!Ref BasePathMapping",
41
+ BasePathMapping: "!Ref BasePathMapping",
41
42
  }
42
43
  end
43
44
  end
@@ -0,0 +1,70 @@
1
+ module Jets::Cfn::Resource::ApiGateway::BasePath
2
+ class Role < Jets::Cfn::Base
3
+ extend Memoist
4
+ include Jets::AwsServices
5
+
6
+ def definition
7
+ {
8
+ BasePathRole: {
9
+ Type: "AWS::IAM::Role",
10
+ Properties: {
11
+ # RoleName: role_name,
12
+ Path: "/",
13
+ AssumeRolePolicyDocument: {
14
+ Version: "2012-10-17",
15
+ Statement: [{
16
+ Effect: "Allow",
17
+ Principal: {Service: ["lambda.amazonaws.com"]},
18
+ Action: ["sts:AssumeRole"]}
19
+ ]
20
+ },
21
+ Policies: [
22
+ PolicyName: "base-path-mapping-policy", # cannot be empty
23
+ PolicyDocument: policy_document,
24
+ ]
25
+ },
26
+ }
27
+ }
28
+ end
29
+
30
+ def policy_document
31
+ project_namespace = Jets.project_namespace
32
+ default_policy_statements = Jets.application.config.default_iam_policy # Array of Hashes
33
+ apigateway = [{
34
+ Action: [ "apigateway:*" ],
35
+ Effect: "Allow",
36
+ Resource: "arn:aws:apigateway:#{Jets.aws.region}::/restapis/*", # scoped to all restapis because this changes
37
+ },{
38
+ Action: [ "apigateway:*" ],
39
+ Effect: "Allow",
40
+ Resource: "arn:aws:apigateway:#{Jets.aws.region}::/domainnames/*", # scoped to all restapis because this changes
41
+ }]
42
+ cloudformation = [{
43
+ Action: ["cloudformation:DescribeStacks"],
44
+ Effect: "Allow",
45
+ Resource: "arn:aws:cloudformation:#{Jets.aws.region}:#{Jets.aws.account}:stack/#{project_namespace}*",
46
+ }]
47
+
48
+ # Combine the statements
49
+ {
50
+ Version: '2012-10-17',
51
+ Statement: default_policy_statements + apigateway + cloudformation
52
+ }
53
+ end
54
+
55
+ # Duplicated in rest_api/change_detection.rb, base_path/role.rb, rest_api/routes.rb
56
+ def rest_api_id
57
+ stack_name = Jets::Names.parent_stack_name
58
+ return "RestApi" unless stack_exists?(stack_name)
59
+
60
+ stack = cfn.describe_stacks(stack_name: stack_name).stacks.first
61
+
62
+ api_gateway_stack_arn = lookup(stack[:outputs], "ApiGateway")
63
+
64
+ # resources = cfn.describe_stack_resources(stack_name: api_gateway_stack_arn).stack_resources
65
+ stack = cfn.describe_stacks(stack_name: api_gateway_stack_arn).stacks.first
66
+ rest_api_id = lookup(stack[:outputs], "RestApi")
67
+ end
68
+ memoize :rest_api_id
69
+ end
70
+ end
@@ -1,45 +1,38 @@
1
- module Jets::Resource::ApiGateway
2
- class Deployment < Jets::Resource::Base
1
+ module Jets::Cfn::Resource::ApiGateway
2
+ class Deployment < Jets::Cfn::Base
3
3
  def definition
4
4
  {
5
5
  deployment_logical_id => {
6
- type: "AWS::ApiGateway::Deployment",
7
- properties: {
8
- description: "Version #{timestamp} deployed by jets",
9
- rest_api_id: "!Ref #{RestApi.logical_id}",
10
- stage_name: stage_name,
6
+ Type: "AWS::ApiGateway::Deployment",
7
+ Properties: {
8
+ Description: "Version #{timestamp} deployed by jets",
9
+ RestApiId: "!Ref #{RestApi.logical_id}",
10
+ StageName: stage_name,
11
11
  }
12
12
  }
13
13
  }
14
14
  end
15
15
 
16
16
  def parameters
17
- p = {
18
- "GemLayer" => "GemLayer",
19
- "IamRole" => "IamRole",
20
- "RestApi" => "RestApi",
21
- "S3Bucket" => "S3Bucket",
17
+ {
18
+ RestApi: "RestApi",
22
19
  }
23
- p[:DomainName] = "DomainName" if Jets.custom_domain?
24
- p[:BasePath] = "BasePath" unless Jets.config.domain.base_path.nil?
25
- p
26
20
  end
27
21
 
28
22
  def outputs(internal=false)
29
23
  rest_api = internal ? RestApi.internal_logical_id : "RestApi"
30
24
  {
31
- "RestApiUrl" => "!Sub 'https://${#{rest_api}}.execute-api.${AWS::Region}.amazonaws.com/#{stage_name}/'",
25
+ RestApiUrl: "!Sub 'https://${#{rest_api}}.execute-api.${AWS::Region}.amazonaws.com/#{stage_name}/'",
32
26
  }
33
27
  end
34
28
 
35
29
  def depends_on
36
- expression = "#{Jets::Naming.template_path_prefix}-*_controller*"
30
+ expression = "#{Jets::Names.templates_folder}/*_controller*"
37
31
  controller_logical_ids = []
38
32
  Dir.glob(expression).each do |path|
39
33
  next unless File.file?(path)
40
34
 
41
- regexp = Regexp.new(".*#{Jets.config.project_namespace}-")
42
- controller_name = path.sub(regexp, '').sub('.yml', '')
35
+ controller_name = path.sub("#{Jets::Names.templates_folder}/", '').sub('.yml', '')
43
36
  # map the path to a camelized logical_id. Example:
44
37
  # /tmp/jets/demo/templates/demo-dev-2-posts_controller.yml to
45
38
  # PostsController
@@ -57,7 +50,7 @@ module Jets::Resource::ApiGateway
57
50
 
58
51
  def self.stage_name
59
52
  # Stage name only allows a-zA-Z0-9_
60
- [Jets.config.short_env, Jets.config.env_extra].compact.join('_').gsub('-','_')
53
+ [Jets.short_env, Jets.extra].compact.join('_').gsub('-','_')
61
54
  end
62
55
 
63
56
  def timestamp
@@ -8,34 +8,34 @@
8
8
  # DomainName: api.mydomain.com
9
9
  # CertificateArn: arn:aws:acm:us-east-1:111122223333:certificate/fb1b9770-a305-495d-aefb-27e5e101ff3
10
10
  #
11
- module Jets::Resource::ApiGateway
12
- class DomainName < Jets::Resource::Base
11
+ module Jets::Cfn::Resource::ApiGateway
12
+ class DomainName < Jets::Cfn::Base
13
13
  def definition
14
14
  properties = {
15
- domain_name: domain_name,
16
- endpoint_configuration: {
17
- types: endpoint_types
15
+ DomainName: domain_name,
16
+ EndpointConfiguration: {
17
+ Types: endpoint_types
18
18
  }
19
19
  }
20
20
  # Can really only be REGIONAL or EDGE
21
21
  if endpoint_types.include?("REGIONAL")
22
- properties[:regional_certificate_arn] = cert_arn
22
+ properties[:RegionalCertificateArn] = cert_arn
23
23
  end
24
24
  if endpoint_types.include?("EDGE")
25
- properties[:certificate_arn] = cert_arn
25
+ properties[:CertificateArn] = cert_arn
26
26
  end
27
27
 
28
28
  {
29
- domain_name: {
30
- type: "AWS::ApiGateway::DomainName",
31
- properties: properties
29
+ DomainName: {
30
+ Type: "AWS::ApiGateway::DomainName",
31
+ Properties: properties
32
32
  }
33
33
  }
34
34
  end
35
35
 
36
36
  def outputs
37
37
  {
38
- "DomainName" => "!Ref DomainName",
38
+ DomainName: "!Ref DomainName",
39
39
  }
40
40
  end
41
41
 
@@ -1,4 +1,4 @@
1
- class Jets::Resource::ApiGateway::Method
1
+ class Jets::Cfn::Resource::ApiGateway::Method
2
2
  module Authorization
3
3
  private
4
4
  def authorizer_id
@@ -0,0 +1,92 @@
1
+ # Converts a Jets::Route to a CloudFormation Jets::Cfn::Resource::ApiGateway::Method resource
2
+ module Jets::Cfn::Resource::ApiGateway
3
+ class Method < Jets::Cfn::Base
4
+ include Authorization
5
+
6
+ # route - Jets::Route
7
+ def initialize(route)
8
+ @route = route
9
+ end
10
+
11
+ def definition
12
+ {
13
+ method_logical_id => {
14
+ Type: "AWS::ApiGateway::Method",
15
+ Properties: props
16
+ }
17
+ }
18
+ end
19
+
20
+ # Note: The {namespace} in
21
+ # functions/${{namespace}LambdaFunction.Arn}/invocations
22
+ # is replaced by Jets::Cfn::Resource::Replacer
23
+ #
24
+ # Jets::Cfn::Resource::ApiGateway::Method
25
+ # Jets::Cfn::Resource (attributes delegate to resource)
26
+ # Jets::Cfn::Resource => replacer
27
+ #
28
+ def props
29
+ function_logical_id = Jets.one_lambda_for_all_controllers? ?
30
+ "JetsControllerLambdaFunction" :
31
+ "{namespace}LambdaFunction"
32
+
33
+ resource_id = ResourceId.new(@route.path).resource_id
34
+ props = {
35
+ ResourceId: "!Ref #{resource_id}",
36
+ RestApiId: "!Ref #{RestApi.logical_id}",
37
+ HttpMethod: @route.http_method,
38
+ RequestParameters: {},
39
+ AuthorizationType: authorization_type,
40
+ ApiKeyRequired: api_key_required?,
41
+ Integration: {
42
+ IntegrationHttpMethod: "POST",
43
+ Type: "AWS_PROXY",
44
+ Uri: "!Sub arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${#{function_logical_id}}/invocations"
45
+ },
46
+ MethodResponses: []
47
+ }
48
+ props[:AuthorizerId] = authorizer_id if authorizer_id
49
+ props[:AuthorizationScopes] = authorization_scopes if authorization_scopes
50
+
51
+ props
52
+ end
53
+
54
+ def method_logical_id
55
+ # https://stackoverflow.com/questions/6104240/how-do-i-strip-non-alphanumeric-characters-from-a-string-and-keep-spaces
56
+ # Add path to the logical id to allow 2 different paths to be connected to the same controller action.
57
+ # Example:
58
+ #
59
+ # root "jets/public#show"
60
+ # any "*catchall", to: "jets/public#show"
61
+ #
62
+ # Without the path in the logical id, the logical id would be ShowApiMethod for both routes and only the
63
+ # last one would be created in the CloudFormation template.
64
+ path = @route.path.gsub('*','')
65
+ .gsub(/[^0-9a-z]/i, ' ')
66
+ .gsub(/\s+/, '_')
67
+ path = nil if path == ''
68
+ http_verb = @route.http_method.downcase
69
+ [http_verb, path, "api_method"].compact.join('_')
70
+ end
71
+
72
+ def replacements
73
+ # Mimic task to grab replacements
74
+ # Use functions/${namespace} in Uri
75
+ resources = [definition]
76
+ action_name = Jets.one_lambda_per_controller? ? "lambda_handler" : @route.action_name
77
+ task = Jets::Lambda::Definition.new(@route.controller_name, action_name,
78
+ resources: resources)
79
+ task.replacements
80
+ end
81
+
82
+ private
83
+
84
+ def controller_klass
85
+ @controller_klass ||= "#{controller_name}_controller".camelize.constantize
86
+ end
87
+
88
+ def controller_name
89
+ @controller_name ||= @route.to.split('#').first
90
+ end
91
+ end
92
+ end
@@ -1,18 +1,20 @@
1
- module Jets::Resource::ApiGateway
2
- class Resource < Jets::Resource::Base
1
+ module Jets::Cfn::Resource::ApiGateway
2
+ class Resource < Jets::Cfn::Base
3
3
  def initialize(path, internal: false)
4
- @path = path # Examples: "posts/:id/edit" or "posts"
4
+ # The original implementation uses path without the leading slash.
5
+ # Remove it here so the path_part is calculated correctly.
6
+ @path = path.delete_prefix('/') # Examples: "posts/:id/edit" or "posts"
5
7
  @internal = internal
6
8
  end
7
9
 
8
10
  def definition
9
11
  {
10
12
  resource_logical_id => {
11
- type: "AWS::ApiGateway::Resource",
12
- properties: {
13
- parent_id: parent_id,
14
- path_part: path_part,
15
- rest_api_id: "!Ref #{RestApi.logical_id(@internal)}",
13
+ Type: "AWS::ApiGateway::Resource",
14
+ Properties: {
15
+ ParentId: parent_id,
16
+ PathPart: path_part,
17
+ RestApiId: "!Ref #{RestApi.logical_id(@internal)}",
16
18
  }
17
19
  }
18
20
  }
@@ -26,9 +28,11 @@ module Jets::Resource::ApiGateway
26
28
 
27
29
  def resource_logical_id
28
30
  if @path == ''
31
+ # Not including ApiResource in the logical id so it doesn't collide with a
32
+ # user-defined ApiResource that happens to be named RootResourceId.
29
33
  "RootResourceId"
30
34
  else
31
- Jets::Resource.truncate_id path_logical_id(@path), "ApiResource"
35
+ Jets::Cfn::Resource.truncate_id(path_logical_id(@path), "ApiResource")
32
36
  end
33
37
  end
34
38
 
@@ -41,7 +45,7 @@ module Jets::Resource::ApiGateway
41
45
  if @path.include?('/') # posts/:id or posts/:id/edit
42
46
  parent_path = @path.split('/')[0..-2].join('/')
43
47
  parent_logical_id = path_logical_id(parent_path)
44
- Jets::Resource.truncate_id(parent_logical_id, "ApiResource")
48
+ Jets::Cfn::Resource.truncate_id(parent_logical_id, "ApiResource")
45
49
  else
46
50
  "RootResourceId"
47
51
  end
@@ -0,0 +1,25 @@
1
+ module Jets::Cfn::Resource::ApiGateway
2
+ class ResourceId
3
+ def initialize(path)
4
+ @path = path
5
+ end
6
+
7
+ # Used by Method and Cors
8
+ def resource_id
9
+ @path == '/' ?
10
+ "RootResourceId" :
11
+ resource_logical_id.camelize + "ApiResource"
12
+ end
13
+
14
+ # Example: Posts
15
+ def resource_logical_id
16
+ camelized_path.underscore
17
+ end
18
+
19
+ def camelized_path
20
+ path = @path
21
+ path = "homepage" if path == '/'
22
+ path.gsub('/','_').gsub(':','').gsub('*','').gsub('.','').camelize
23
+ end
24
+ end
25
+ end
@@ -1,4 +1,4 @@
1
- class Jets::Resource::ApiGateway::RestApi
1
+ class Jets::Cfn::Resource::ApiGateway::RestApi
2
2
  class ChangeDetection
3
3
  extend Memoist
4
4
  include Jets::AwsServices
@@ -1,4 +1,4 @@
1
- class Jets::Resource::ApiGateway::RestApi::LogicalId
1
+ class Jets::Cfn::Resource::ApiGateway::RestApi::LogicalId
2
2
  class Message
3
3
  def routes_changed
4
4
  <<~EOL
@@ -8,8 +8,7 @@ class Jets::Resource::ApiGateway::RestApi::LogicalId
8
8
  end
9
9
 
10
10
  def custom_domain
11
- api = Jets::Resource::ApiGateway::DomainName.new
12
- domain_name = api.domain_name
11
+ domain_name = Jets.config.domain.name
13
12
  if domain_name
14
13
  <<~EOL
15
14
  It looks like you have already set up a custom domain.
@@ -25,7 +24,18 @@ class Jets::Resource::ApiGateway::RestApi::LogicalId
25
24
  More info: custom domain docs: https://rubyonjets.com/docs/routing/custom-domain/
26
25
  EOL
27
26
  else
28
- "Please set up a custom domain https://rubyonjets.com/docs/routing/custom-domain/"
27
+ <<~EOL
28
+ To avoid this prompt in the future, you can configure:
29
+
30
+ config/application.rb
31
+
32
+ config.api.auto_replace = true
33
+
34
+ However, you should also set up a custom domain for a "stable" endpoint.
35
+
36
+ https://rubyonjets.com/docs/routing/custom-domain/
37
+
38
+ EOL
29
39
  end
30
40
  end
31
41
 
@@ -1,4 +1,4 @@
1
- class Jets::Resource::ApiGateway::RestApi
1
+ class Jets::Cfn::Resource::ApiGateway::RestApi
2
2
  class LogicalId
3
3
  extend Memoist
4
4
  include Jets::AwsServices
@@ -88,7 +88,7 @@ class Jets::Resource::ApiGateway::RestApi
88
88
  end
89
89
 
90
90
  def parent_stack_name
91
- Jets::Naming.parent_stack_name
91
+ Jets::Names.parent_stack_name
92
92
  end
93
93
 
94
94
  def default
@@ -1,4 +1,4 @@
1
- class Jets::Resource::ApiGateway::RestApi::Routes::Change
1
+ class Jets::Cfn::Resource::ApiGateway::RestApi::Routes::Change
2
2
  class Base
3
3
  extend Memoist
4
4
  include Jets::AwsServices
@@ -7,51 +7,25 @@ class Jets::Resource::ApiGateway::RestApi::Routes::Change
7
7
  new.changed?
8
8
  end
9
9
 
10
- # Build up deployed routes from the existing CloudFormation resources.
10
+ # Recreate routes from previously deployed stored state in s3
11
11
  def deployed_routes
12
- routes = []
13
-
14
- resources, position = [], true
15
- while position
16
- position = nil if position == true # start of loop
17
- resp = apigateway.get_resources(
18
- rest_api_id: rest_api_id,
19
- position: position,
20
- limit: 500, # default: 25 max: 500
12
+ state = Jets::Router::State.new
13
+ data = state.load("routes")
14
+ return [] if data.nil?
15
+
16
+ data.map do |item|
17
+ http_method = item.dig('options','method') || item.dig('options','http_method')
18
+ Jets::Router::Route.new(
19
+ http_method: http_method,
20
+ path: item['path'],
21
+ to: item['to'],
22
+ engine: item['engine'],
23
+ internal: item['internal'],
21
24
  )
22
- resources += resp.items
23
- position = resp.position
24
- end
25
-
26
- resources.each do |resource|
27
- resource_methods = resource.resource_methods
28
- next if resource_methods.nil?
29
-
30
- resource_methods.each do |http_verb, resource_method|
31
- # puts "#{http_verb} #{resource.path} | resource.id #{resource.id}"
32
- # puts to(resource.id, http_verb)
33
-
34
- # Test changing config.cors and CloudFormation does an in-place update
35
- # on the resource. So no need to do bluegreen deployments for OPTIONS.
36
- next if http_verb == "OPTIONS"
37
-
38
- path = recreate_path(resource.path)
39
- method = http_verb.downcase.to_sym
40
- to = to(resource.id, http_verb)
41
- route = Jets::Router::Route.new(path: path, method: method, to: to)
42
- routes << route
43
- end
44
25
  end
45
- routes
46
26
  end
47
27
  memoize :deployed_routes
48
28
 
49
- def recreate_path(path)
50
- path = path.gsub(%r{^/},'')
51
- path = path.gsub(/{([^}]*)\+}/, '*\1')
52
- path.gsub(/{([^}]*)}/, ':\1')
53
- end
54
-
55
29
  def to(resource_id, http_method)
56
30
  uri = method_uri(resource_id, http_method)
57
31
  recreate_to(uri) unless uri.nil?
@@ -115,7 +89,7 @@ class Jets::Resource::ApiGateway::RestApi::Routes::Change
115
89
 
116
90
  # Duplicated in rest_api/change_detection.rb, base_path/role.rb, rest_api/routes.rb
117
91
  def rest_api_id
118
- stack_name = Jets::Naming.parent_stack_name
92
+ stack_name = Jets::Names.parent_stack_name
119
93
  return "RestApi" unless stack_exists?(stack_name)
120
94
 
121
95
  stack = cfn.describe_stacks(stack_name: stack_name).stacks.first
@@ -1,11 +1,11 @@
1
- class Jets::Resource::ApiGateway::RestApi::Routes::Change
1
+ class Jets::Cfn::Resource::ApiGateway::RestApi::Routes::Change
2
2
  class MediaTypes < Base
3
3
  def changed?
4
4
  current_binary_media_types != new_binary_media_types
5
5
  end
6
6
 
7
7
  def new_binary_media_types
8
- rest_api = Jets::Resource::ApiGateway::RestApi.new
8
+ rest_api = Jets::Cfn::Resource::ApiGateway::RestApi.new
9
9
  rest_api.binary_media_types
10
10
  end
11
11
  memoize :new_binary_media_types
@@ -30,7 +30,7 @@ class Jets::Resource::ApiGateway::RestApi::Routes::Change
30
30
  end
31
31
 
32
32
  def parent_stack_name
33
- Jets::Naming.parent_stack_name
33
+ Jets::Names.parent_stack_name
34
34
  end
35
35
  end
36
36
  end
@@ -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::Naming.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]
@@ -85,7 +85,7 @@ class Jets::Resource::ApiGateway::RestApi::Routes::Change
85
85
  end
86
86
 
87
87
  def parent_resources
88
- resp = cfn.describe_stack_resources(stack_name: Jets::Naming.parent_stack_name)
88
+ resp = cfn.describe_stack_resources(stack_name: Jets::Names.parent_stack_name)
89
89
  resp.stack_resources
90
90
  end
91
91
  memoize :parent_resources
@@ -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