itsi 0.2.3 → 0.2.4

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 (460) hide show
  1. checksums.yaml +4 -4
  2. data/Cargo.lock +2 -2
  3. data/README.md +1 -1
  4. data/Rakefile +2 -2
  5. data/crates/itsi_scheduler/Cargo.toml +1 -1
  6. data/crates/itsi_server/Cargo.toml +1 -1
  7. data/crates/itsi_server/src/server/middleware_stack/middlewares/compression.rs +28 -11
  8. data/crates/itsi_server/src/server/middleware_stack/middlewares/log_requests.rs +1 -1
  9. data/crates/itsi_server/src/server/middleware_stack/middlewares/proxy.rs +1 -2
  10. data/crates/itsi_server/src/server/middleware_stack/middlewares/static_assets.rs +14 -2
  11. data/crates/itsi_server/src/server/middleware_stack/middlewares/string_rewrite.rs +86 -41
  12. data/crates/itsi_server/src/services/itsi_http_service.rs +46 -35
  13. data/crates/itsi_server/src/services/static_file_server.rs +31 -3
  14. data/examples/api_with_schema_and_controllers/Itsi.rb +35 -0
  15. data/examples/api_with_schema_and_controllers/README.md +10 -0
  16. data/examples/api_with_schema_and_controllers/controllers.rb +66 -0
  17. data/examples/api_with_schema_and_controllers/schemas.rb +25 -0
  18. data/examples/file_server/Itsi.rb +30 -0
  19. data/examples/file_server/README.md +3 -0
  20. data/examples/file_server/about.html +80 -0
  21. data/examples/file_server/admin/secrets.txt +1 -0
  22. data/examples/file_server/fairytale.txt +33 -0
  23. data/examples/file_server/itsi-server-100.png +0 -0
  24. data/examples/file_server/subdirectory/movies.csv +21 -0
  25. data/examples/helpers/datastore.rb +84 -0
  26. data/examples/media_server/Itsi.rb +5 -0
  27. data/examples/media_server/README.md +3 -0
  28. data/examples/media_server/images/itsi-server-100.png +0 -0
  29. data/examples/media_server/index.html +82 -0
  30. data/examples/multi_rack_rails_sinatra/Gemfile +66 -0
  31. data/examples/multi_rack_rails_sinatra/Gemfile.lock +416 -0
  32. data/examples/multi_rack_rails_sinatra/Itsi.rb +44 -0
  33. data/examples/multi_rack_rails_sinatra/README.md +7 -0
  34. data/examples/multi_rack_rails_sinatra/index.html +119 -0
  35. data/examples/multi_rack_rails_sinatra/rails_subapp/.dockerignore +51 -0
  36. data/examples/multi_rack_rails_sinatra/rails_subapp/.gitattributes +9 -0
  37. data/examples/multi_rack_rails_sinatra/rails_subapp/.github/dependabot.yml +12 -0
  38. data/examples/multi_rack_rails_sinatra/rails_subapp/.github/workflows/ci.yml +90 -0
  39. data/examples/multi_rack_rails_sinatra/rails_subapp/.gitignore +34 -0
  40. data/examples/multi_rack_rails_sinatra/rails_subapp/.kamal/hooks/docker-setup.sample +3 -0
  41. data/examples/multi_rack_rails_sinatra/rails_subapp/.kamal/hooks/post-app-boot.sample +3 -0
  42. data/examples/multi_rack_rails_sinatra/rails_subapp/.kamal/hooks/post-deploy.sample +14 -0
  43. data/examples/multi_rack_rails_sinatra/rails_subapp/.kamal/hooks/post-proxy-reboot.sample +3 -0
  44. data/examples/multi_rack_rails_sinatra/rails_subapp/.kamal/hooks/pre-app-boot.sample +3 -0
  45. data/examples/multi_rack_rails_sinatra/rails_subapp/.kamal/hooks/pre-build.sample +51 -0
  46. data/examples/multi_rack_rails_sinatra/rails_subapp/.kamal/hooks/pre-connect.sample +47 -0
  47. data/examples/multi_rack_rails_sinatra/rails_subapp/.kamal/hooks/pre-deploy.sample +109 -0
  48. data/examples/multi_rack_rails_sinatra/rails_subapp/.kamal/hooks/pre-proxy-reboot.sample +3 -0
  49. data/examples/multi_rack_rails_sinatra/rails_subapp/.kamal/secrets +17 -0
  50. data/examples/multi_rack_rails_sinatra/rails_subapp/.rubocop.yml +8 -0
  51. data/examples/multi_rack_rails_sinatra/rails_subapp/.ruby-version +1 -0
  52. data/examples/multi_rack_rails_sinatra/rails_subapp/Dockerfile +72 -0
  53. data/examples/multi_rack_rails_sinatra/rails_subapp/Gemfile +66 -0
  54. data/examples/multi_rack_rails_sinatra/rails_subapp/Gemfile.lock +416 -0
  55. data/examples/multi_rack_rails_sinatra/rails_subapp/README.md +24 -0
  56. data/examples/multi_rack_rails_sinatra/rails_subapp/Rakefile +6 -0
  57. data/examples/multi_rack_rails_sinatra/rails_subapp/app/assets/images/.keep +0 -0
  58. data/examples/multi_rack_rails_sinatra/rails_subapp/app/assets/stylesheets/application.css +161 -0
  59. data/examples/multi_rack_rails_sinatra/rails_subapp/app/controllers/application_controller.rb +4 -0
  60. data/examples/multi_rack_rails_sinatra/rails_subapp/app/controllers/articles_controller.rb +70 -0
  61. data/examples/multi_rack_rails_sinatra/rails_subapp/app/controllers/concerns/.keep +0 -0
  62. data/examples/multi_rack_rails_sinatra/rails_subapp/app/controllers/home_controller.rb +4 -0
  63. data/examples/multi_rack_rails_sinatra/rails_subapp/app/helpers/application_helper.rb +2 -0
  64. data/examples/multi_rack_rails_sinatra/rails_subapp/app/helpers/articles_helper.rb +2 -0
  65. data/examples/multi_rack_rails_sinatra/rails_subapp/app/helpers/home_helper.rb +2 -0
  66. data/examples/multi_rack_rails_sinatra/rails_subapp/app/javascript/application.js +3 -0
  67. data/examples/multi_rack_rails_sinatra/rails_subapp/app/javascript/controllers/application.js +9 -0
  68. data/examples/multi_rack_rails_sinatra/rails_subapp/app/javascript/controllers/hello_controller.js +7 -0
  69. data/examples/multi_rack_rails_sinatra/rails_subapp/app/javascript/controllers/index.js +4 -0
  70. data/examples/multi_rack_rails_sinatra/rails_subapp/app/jobs/application_job.rb +7 -0
  71. data/examples/multi_rack_rails_sinatra/rails_subapp/app/mailers/application_mailer.rb +4 -0
  72. data/examples/multi_rack_rails_sinatra/rails_subapp/app/models/application_record.rb +3 -0
  73. data/examples/multi_rack_rails_sinatra/rails_subapp/app/models/article.rb +2 -0
  74. data/examples/multi_rack_rails_sinatra/rails_subapp/app/models/concerns/.keep +0 -0
  75. data/examples/multi_rack_rails_sinatra/rails_subapp/app/views/articles/_article.html.erb +14 -0
  76. data/examples/multi_rack_rails_sinatra/rails_subapp/app/views/articles/_article.json.jbuilder +2 -0
  77. data/examples/multi_rack_rails_sinatra/rails_subapp/app/views/articles/_form.html.erb +30 -0
  78. data/examples/multi_rack_rails_sinatra/rails_subapp/app/views/articles/edit.html.erb +12 -0
  79. data/examples/multi_rack_rails_sinatra/rails_subapp/app/views/articles/index.html.erb +29 -0
  80. data/examples/multi_rack_rails_sinatra/rails_subapp/app/views/articles/index.json.jbuilder +1 -0
  81. data/examples/multi_rack_rails_sinatra/rails_subapp/app/views/articles/new.html.erb +11 -0
  82. data/examples/multi_rack_rails_sinatra/rails_subapp/app/views/articles/show.html.erb +10 -0
  83. data/examples/multi_rack_rails_sinatra/rails_subapp/app/views/articles/show.json.jbuilder +1 -0
  84. data/examples/multi_rack_rails_sinatra/rails_subapp/app/views/home/index.html.erb +8 -0
  85. data/examples/multi_rack_rails_sinatra/rails_subapp/app/views/layouts/application.html.erb +34 -0
  86. data/examples/multi_rack_rails_sinatra/rails_subapp/app/views/layouts/mailer.html.erb +13 -0
  87. data/examples/multi_rack_rails_sinatra/rails_subapp/app/views/layouts/mailer.text.erb +1 -0
  88. data/examples/multi_rack_rails_sinatra/rails_subapp/app/views/pwa/manifest.json.erb +22 -0
  89. data/examples/multi_rack_rails_sinatra/rails_subapp/app/views/pwa/service-worker.js +26 -0
  90. data/examples/multi_rack_rails_sinatra/rails_subapp/bin/brakeman +7 -0
  91. data/examples/multi_rack_rails_sinatra/rails_subapp/bin/bundle +109 -0
  92. data/examples/multi_rack_rails_sinatra/rails_subapp/bin/dev +2 -0
  93. data/examples/multi_rack_rails_sinatra/rails_subapp/bin/docker-entrypoint +14 -0
  94. data/examples/multi_rack_rails_sinatra/rails_subapp/bin/importmap +4 -0
  95. data/examples/multi_rack_rails_sinatra/rails_subapp/bin/jobs +6 -0
  96. data/examples/multi_rack_rails_sinatra/rails_subapp/bin/kamal +27 -0
  97. data/examples/multi_rack_rails_sinatra/rails_subapp/bin/rails +4 -0
  98. data/examples/multi_rack_rails_sinatra/rails_subapp/bin/rake +4 -0
  99. data/examples/multi_rack_rails_sinatra/rails_subapp/bin/rubocop +8 -0
  100. data/examples/multi_rack_rails_sinatra/rails_subapp/bin/setup +34 -0
  101. data/examples/multi_rack_rails_sinatra/rails_subapp/bin/thrust +5 -0
  102. data/examples/multi_rack_rails_sinatra/rails_subapp/config/application.rb +27 -0
  103. data/examples/multi_rack_rails_sinatra/rails_subapp/config/boot.rb +4 -0
  104. data/examples/multi_rack_rails_sinatra/rails_subapp/config/cable.yml +17 -0
  105. data/examples/multi_rack_rails_sinatra/rails_subapp/config/cache.yml +16 -0
  106. data/examples/multi_rack_rails_sinatra/rails_subapp/config/credentials.yml.enc +1 -0
  107. data/examples/multi_rack_rails_sinatra/rails_subapp/config/database.yml +41 -0
  108. data/examples/multi_rack_rails_sinatra/rails_subapp/config/deploy.yml +116 -0
  109. data/examples/multi_rack_rails_sinatra/rails_subapp/config/environment.rb +5 -0
  110. data/examples/multi_rack_rails_sinatra/rails_subapp/config/environments/development.rb +72 -0
  111. data/examples/multi_rack_rails_sinatra/rails_subapp/config/environments/production.rb +90 -0
  112. data/examples/multi_rack_rails_sinatra/rails_subapp/config/environments/test.rb +53 -0
  113. data/examples/multi_rack_rails_sinatra/rails_subapp/config/importmap.rb +7 -0
  114. data/examples/multi_rack_rails_sinatra/rails_subapp/config/initializers/assets.rb +7 -0
  115. data/examples/multi_rack_rails_sinatra/rails_subapp/config/initializers/content_security_policy.rb +25 -0
  116. data/examples/multi_rack_rails_sinatra/rails_subapp/config/initializers/filter_parameter_logging.rb +8 -0
  117. data/examples/multi_rack_rails_sinatra/rails_subapp/config/initializers/inflections.rb +16 -0
  118. data/examples/multi_rack_rails_sinatra/rails_subapp/config/locales/en.yml +31 -0
  119. data/examples/multi_rack_rails_sinatra/rails_subapp/config/puma.rb +41 -0
  120. data/examples/multi_rack_rails_sinatra/rails_subapp/config/queue.yml +18 -0
  121. data/examples/multi_rack_rails_sinatra/rails_subapp/config/recurring.yml +10 -0
  122. data/examples/multi_rack_rails_sinatra/rails_subapp/config/routes.rb +17 -0
  123. data/examples/multi_rack_rails_sinatra/rails_subapp/config/storage.yml +34 -0
  124. data/examples/multi_rack_rails_sinatra/rails_subapp/config.ru +6 -0
  125. data/examples/multi_rack_rails_sinatra/rails_subapp/db/cable_schema.rb +11 -0
  126. data/examples/multi_rack_rails_sinatra/rails_subapp/db/cache_schema.rb +14 -0
  127. data/examples/multi_rack_rails_sinatra/rails_subapp/db/migrate/20250422211855_create_articles.rb +10 -0
  128. data/examples/multi_rack_rails_sinatra/rails_subapp/db/queue_schema.rb +129 -0
  129. data/examples/multi_rack_rails_sinatra/rails_subapp/db/schema.rb +20 -0
  130. data/examples/multi_rack_rails_sinatra/rails_subapp/db/seeds.rb +9 -0
  131. data/examples/multi_rack_rails_sinatra/rails_subapp/lib/tasks/.keep +0 -0
  132. data/examples/multi_rack_rails_sinatra/rails_subapp/log/.keep +0 -0
  133. data/examples/multi_rack_rails_sinatra/rails_subapp/public/400.html +114 -0
  134. data/examples/multi_rack_rails_sinatra/rails_subapp/public/404.html +114 -0
  135. data/examples/multi_rack_rails_sinatra/rails_subapp/public/406-unsupported-browser.html +114 -0
  136. data/examples/multi_rack_rails_sinatra/rails_subapp/public/422.html +114 -0
  137. data/examples/multi_rack_rails_sinatra/rails_subapp/public/500.html +114 -0
  138. data/examples/multi_rack_rails_sinatra/rails_subapp/public/icon.png +0 -0
  139. data/examples/multi_rack_rails_sinatra/rails_subapp/public/icon.svg +3 -0
  140. data/examples/multi_rack_rails_sinatra/rails_subapp/public/robots.txt +1 -0
  141. data/examples/multi_rack_rails_sinatra/rails_subapp/script/.keep +0 -0
  142. data/examples/multi_rack_rails_sinatra/rails_subapp/storage/.keep +0 -0
  143. data/examples/multi_rack_rails_sinatra/rails_subapp/test/application_system_test_case.rb +5 -0
  144. data/examples/multi_rack_rails_sinatra/rails_subapp/test/controllers/.keep +0 -0
  145. data/examples/multi_rack_rails_sinatra/rails_subapp/test/controllers/articles_controller_test.rb +48 -0
  146. data/examples/multi_rack_rails_sinatra/rails_subapp/test/controllers/home_controller_test.rb +8 -0
  147. data/examples/multi_rack_rails_sinatra/rails_subapp/test/fixtures/articles.yml +9 -0
  148. data/examples/multi_rack_rails_sinatra/rails_subapp/test/fixtures/files/.keep +0 -0
  149. data/examples/multi_rack_rails_sinatra/rails_subapp/test/helpers/.keep +0 -0
  150. data/examples/multi_rack_rails_sinatra/rails_subapp/test/integration/.keep +0 -0
  151. data/examples/multi_rack_rails_sinatra/rails_subapp/test/mailers/.keep +0 -0
  152. data/examples/multi_rack_rails_sinatra/rails_subapp/test/models/.keep +0 -0
  153. data/examples/multi_rack_rails_sinatra/rails_subapp/test/models/article_test.rb +7 -0
  154. data/examples/multi_rack_rails_sinatra/rails_subapp/test/system/.keep +0 -0
  155. data/examples/multi_rack_rails_sinatra/rails_subapp/test/system/articles_test.rb +43 -0
  156. data/examples/multi_rack_rails_sinatra/rails_subapp/test/test_helper.rb +15 -0
  157. data/examples/multi_rack_rails_sinatra/rails_subapp/tmp/.keep +0 -0
  158. data/examples/multi_rack_rails_sinatra/rails_subapp/tmp/pids/.keep +0 -0
  159. data/examples/multi_rack_rails_sinatra/rails_subapp/tmp/storage/.keep +0 -0
  160. data/examples/multi_rack_rails_sinatra/rails_subapp/vendor/.keep +0 -0
  161. data/examples/multi_rack_rails_sinatra/rails_subapp/vendor/javascript/.keep +0 -0
  162. data/examples/multi_rack_rails_sinatra/sinatra_subapp/config.ru +2 -0
  163. data/examples/multi_rack_rails_sinatra/sinatra_subapp/my_app.rb +96 -0
  164. data/examples/rails_with_static_assets/.dockerignore +51 -0
  165. data/examples/rails_with_static_assets/.gitattributes +9 -0
  166. data/examples/rails_with_static_assets/.github/dependabot.yml +12 -0
  167. data/examples/rails_with_static_assets/.github/workflows/ci.yml +90 -0
  168. data/examples/rails_with_static_assets/.gitignore +34 -0
  169. data/examples/rails_with_static_assets/.kamal/hooks/docker-setup.sample +3 -0
  170. data/examples/rails_with_static_assets/.kamal/hooks/post-app-boot.sample +3 -0
  171. data/examples/rails_with_static_assets/.kamal/hooks/post-deploy.sample +14 -0
  172. data/examples/rails_with_static_assets/.kamal/hooks/post-proxy-reboot.sample +3 -0
  173. data/examples/rails_with_static_assets/.kamal/hooks/pre-app-boot.sample +3 -0
  174. data/examples/rails_with_static_assets/.kamal/hooks/pre-build.sample +51 -0
  175. data/examples/rails_with_static_assets/.kamal/hooks/pre-connect.sample +47 -0
  176. data/examples/rails_with_static_assets/.kamal/hooks/pre-deploy.sample +109 -0
  177. data/examples/rails_with_static_assets/.kamal/hooks/pre-proxy-reboot.sample +3 -0
  178. data/examples/rails_with_static_assets/.kamal/secrets +17 -0
  179. data/examples/rails_with_static_assets/.rubocop.yml +8 -0
  180. data/examples/rails_with_static_assets/.ruby-version +1 -0
  181. data/examples/rails_with_static_assets/Dockerfile +72 -0
  182. data/examples/rails_with_static_assets/Gemfile +66 -0
  183. data/examples/rails_with_static_assets/Gemfile.lock +416 -0
  184. data/examples/rails_with_static_assets/Itsi.rb +10 -0
  185. data/examples/rails_with_static_assets/README.md +14 -0
  186. data/examples/rails_with_static_assets/Rakefile +6 -0
  187. data/examples/rails_with_static_assets/app/assets/images/.keep +0 -0
  188. data/examples/rails_with_static_assets/app/assets/stylesheets/application.css +161 -0
  189. data/examples/rails_with_static_assets/app/controllers/application_controller.rb +4 -0
  190. data/examples/rails_with_static_assets/app/controllers/articles_controller.rb +70 -0
  191. data/examples/rails_with_static_assets/app/controllers/concerns/.keep +0 -0
  192. data/examples/rails_with_static_assets/app/controllers/home_controller.rb +4 -0
  193. data/examples/rails_with_static_assets/app/helpers/application_helper.rb +2 -0
  194. data/examples/rails_with_static_assets/app/helpers/articles_helper.rb +2 -0
  195. data/examples/rails_with_static_assets/app/helpers/home_helper.rb +2 -0
  196. data/examples/rails_with_static_assets/app/javascript/application.js +3 -0
  197. data/examples/rails_with_static_assets/app/javascript/controllers/application.js +9 -0
  198. data/examples/rails_with_static_assets/app/javascript/controllers/hello_controller.js +7 -0
  199. data/examples/rails_with_static_assets/app/javascript/controllers/index.js +4 -0
  200. data/examples/rails_with_static_assets/app/jobs/application_job.rb +7 -0
  201. data/examples/rails_with_static_assets/app/mailers/application_mailer.rb +4 -0
  202. data/examples/rails_with_static_assets/app/models/application_record.rb +3 -0
  203. data/examples/rails_with_static_assets/app/models/article.rb +2 -0
  204. data/examples/rails_with_static_assets/app/models/concerns/.keep +0 -0
  205. data/examples/rails_with_static_assets/app/views/articles/_article.html.erb +14 -0
  206. data/examples/rails_with_static_assets/app/views/articles/_article.json.jbuilder +2 -0
  207. data/examples/rails_with_static_assets/app/views/articles/_form.html.erb +30 -0
  208. data/examples/rails_with_static_assets/app/views/articles/edit.html.erb +12 -0
  209. data/examples/rails_with_static_assets/app/views/articles/index.html.erb +29 -0
  210. data/examples/rails_with_static_assets/app/views/articles/index.json.jbuilder +1 -0
  211. data/examples/rails_with_static_assets/app/views/articles/new.html.erb +11 -0
  212. data/examples/rails_with_static_assets/app/views/articles/show.html.erb +10 -0
  213. data/examples/rails_with_static_assets/app/views/articles/show.json.jbuilder +1 -0
  214. data/examples/rails_with_static_assets/app/views/home/index.html.erb +8 -0
  215. data/examples/rails_with_static_assets/app/views/layouts/application.html.erb +34 -0
  216. data/examples/rails_with_static_assets/app/views/layouts/mailer.html.erb +13 -0
  217. data/examples/rails_with_static_assets/app/views/layouts/mailer.text.erb +1 -0
  218. data/examples/rails_with_static_assets/app/views/pwa/manifest.json.erb +22 -0
  219. data/examples/rails_with_static_assets/app/views/pwa/service-worker.js +26 -0
  220. data/examples/rails_with_static_assets/bin/brakeman +7 -0
  221. data/examples/rails_with_static_assets/bin/bundle +109 -0
  222. data/examples/rails_with_static_assets/bin/dev +2 -0
  223. data/examples/rails_with_static_assets/bin/docker-entrypoint +14 -0
  224. data/examples/rails_with_static_assets/bin/importmap +4 -0
  225. data/examples/rails_with_static_assets/bin/jobs +6 -0
  226. data/examples/rails_with_static_assets/bin/kamal +27 -0
  227. data/examples/rails_with_static_assets/bin/rails +4 -0
  228. data/examples/rails_with_static_assets/bin/rake +4 -0
  229. data/examples/rails_with_static_assets/bin/rubocop +8 -0
  230. data/examples/rails_with_static_assets/bin/setup +34 -0
  231. data/examples/rails_with_static_assets/bin/thrust +5 -0
  232. data/examples/rails_with_static_assets/config/application.rb +26 -0
  233. data/examples/rails_with_static_assets/config/boot.rb +4 -0
  234. data/examples/rails_with_static_assets/config/cable.yml +17 -0
  235. data/examples/rails_with_static_assets/config/cache.yml +16 -0
  236. data/examples/rails_with_static_assets/config/credentials.yml.enc +1 -0
  237. data/examples/rails_with_static_assets/config/database.yml +41 -0
  238. data/examples/rails_with_static_assets/config/deploy.yml +116 -0
  239. data/examples/rails_with_static_assets/config/environment.rb +5 -0
  240. data/examples/rails_with_static_assets/config/environments/development.rb +74 -0
  241. data/examples/rails_with_static_assets/config/environments/production.rb +90 -0
  242. data/examples/rails_with_static_assets/config/environments/test.rb +53 -0
  243. data/examples/rails_with_static_assets/config/importmap.rb +7 -0
  244. data/examples/rails_with_static_assets/config/initializers/assets.rb +7 -0
  245. data/examples/rails_with_static_assets/config/initializers/content_security_policy.rb +25 -0
  246. data/examples/rails_with_static_assets/config/initializers/filter_parameter_logging.rb +8 -0
  247. data/examples/rails_with_static_assets/config/initializers/inflections.rb +16 -0
  248. data/examples/rails_with_static_assets/config/locales/en.yml +31 -0
  249. data/examples/rails_with_static_assets/config/puma.rb +41 -0
  250. data/examples/rails_with_static_assets/config/queue.yml +18 -0
  251. data/examples/rails_with_static_assets/config/recurring.yml +10 -0
  252. data/examples/rails_with_static_assets/config/routes.rb +17 -0
  253. data/examples/rails_with_static_assets/config/storage.yml +34 -0
  254. data/examples/rails_with_static_assets/config.ru +6 -0
  255. data/examples/rails_with_static_assets/db/cable_schema.rb +11 -0
  256. data/examples/rails_with_static_assets/db/cache_schema.rb +14 -0
  257. data/examples/rails_with_static_assets/db/migrate/20250422211855_create_articles.rb +10 -0
  258. data/examples/rails_with_static_assets/db/queue_schema.rb +129 -0
  259. data/examples/rails_with_static_assets/db/schema.rb +20 -0
  260. data/examples/rails_with_static_assets/db/seeds.rb +9 -0
  261. data/examples/rails_with_static_assets/lib/tasks/.keep +0 -0
  262. data/examples/rails_with_static_assets/log/.keep +0 -0
  263. data/examples/rails_with_static_assets/public/400.html +114 -0
  264. data/examples/rails_with_static_assets/public/404.html +114 -0
  265. data/examples/rails_with_static_assets/public/406-unsupported-browser.html +114 -0
  266. data/examples/rails_with_static_assets/public/422.html +114 -0
  267. data/examples/rails_with_static_assets/public/500.html +114 -0
  268. data/examples/rails_with_static_assets/public/icon.png +0 -0
  269. data/examples/rails_with_static_assets/public/icon.svg +3 -0
  270. data/examples/rails_with_static_assets/public/robots.txt +1 -0
  271. data/examples/rails_with_static_assets/script/.keep +0 -0
  272. data/examples/rails_with_static_assets/storage/.keep +0 -0
  273. data/examples/rails_with_static_assets/test/application_system_test_case.rb +5 -0
  274. data/examples/rails_with_static_assets/test/controllers/.keep +0 -0
  275. data/examples/rails_with_static_assets/test/controllers/articles_controller_test.rb +48 -0
  276. data/examples/rails_with_static_assets/test/controllers/home_controller_test.rb +8 -0
  277. data/examples/rails_with_static_assets/test/fixtures/articles.yml +9 -0
  278. data/examples/rails_with_static_assets/test/fixtures/files/.keep +0 -0
  279. data/examples/rails_with_static_assets/test/helpers/.keep +0 -0
  280. data/examples/rails_with_static_assets/test/integration/.keep +0 -0
  281. data/examples/rails_with_static_assets/test/mailers/.keep +0 -0
  282. data/examples/rails_with_static_assets/test/models/.keep +0 -0
  283. data/examples/rails_with_static_assets/test/models/article_test.rb +7 -0
  284. data/examples/rails_with_static_assets/test/system/.keep +0 -0
  285. data/examples/rails_with_static_assets/test/system/articles_test.rb +43 -0
  286. data/examples/rails_with_static_assets/test/test_helper.rb +15 -0
  287. data/examples/rails_with_static_assets/tmp/.keep +0 -0
  288. data/examples/rails_with_static_assets/tmp/pids/.keep +0 -0
  289. data/examples/rails_with_static_assets/tmp/storage/.keep +0 -0
  290. data/examples/rails_with_static_assets/vendor/.keep +0 -0
  291. data/examples/rails_with_static_assets/vendor/javascript/.keep +0 -0
  292. data/examples/reverse_proxy/Itsi.rb +28 -0
  293. data/examples/reverse_proxy/README.md +14 -0
  294. data/examples/reverse_proxy/index.html +119 -0
  295. data/examples/reverse_proxy/rails_subapp/.dockerignore +51 -0
  296. data/examples/reverse_proxy/rails_subapp/.gitattributes +9 -0
  297. data/examples/reverse_proxy/rails_subapp/.github/dependabot.yml +12 -0
  298. data/examples/reverse_proxy/rails_subapp/.github/workflows/ci.yml +90 -0
  299. data/examples/reverse_proxy/rails_subapp/.gitignore +34 -0
  300. data/examples/reverse_proxy/rails_subapp/.kamal/hooks/docker-setup.sample +3 -0
  301. data/examples/reverse_proxy/rails_subapp/.kamal/hooks/post-app-boot.sample +3 -0
  302. data/examples/reverse_proxy/rails_subapp/.kamal/hooks/post-deploy.sample +14 -0
  303. data/examples/reverse_proxy/rails_subapp/.kamal/hooks/post-proxy-reboot.sample +3 -0
  304. data/examples/reverse_proxy/rails_subapp/.kamal/hooks/pre-app-boot.sample +3 -0
  305. data/examples/reverse_proxy/rails_subapp/.kamal/hooks/pre-build.sample +51 -0
  306. data/examples/reverse_proxy/rails_subapp/.kamal/hooks/pre-connect.sample +47 -0
  307. data/examples/reverse_proxy/rails_subapp/.kamal/hooks/pre-deploy.sample +109 -0
  308. data/examples/reverse_proxy/rails_subapp/.kamal/hooks/pre-proxy-reboot.sample +3 -0
  309. data/examples/reverse_proxy/rails_subapp/.kamal/secrets +17 -0
  310. data/examples/reverse_proxy/rails_subapp/.rubocop.yml +8 -0
  311. data/examples/reverse_proxy/rails_subapp/.ruby-version +1 -0
  312. data/examples/reverse_proxy/rails_subapp/Dockerfile +72 -0
  313. data/examples/reverse_proxy/rails_subapp/Gemfile +66 -0
  314. data/examples/reverse_proxy/rails_subapp/Gemfile.lock +416 -0
  315. data/examples/reverse_proxy/rails_subapp/README.md +24 -0
  316. data/examples/reverse_proxy/rails_subapp/Rakefile +6 -0
  317. data/examples/reverse_proxy/rails_subapp/app/assets/images/.keep +0 -0
  318. data/examples/reverse_proxy/rails_subapp/app/assets/stylesheets/application.css +161 -0
  319. data/examples/reverse_proxy/rails_subapp/app/controllers/application_controller.rb +4 -0
  320. data/examples/reverse_proxy/rails_subapp/app/controllers/articles_controller.rb +70 -0
  321. data/examples/reverse_proxy/rails_subapp/app/controllers/concerns/.keep +0 -0
  322. data/examples/reverse_proxy/rails_subapp/app/controllers/home_controller.rb +4 -0
  323. data/examples/reverse_proxy/rails_subapp/app/helpers/application_helper.rb +2 -0
  324. data/examples/reverse_proxy/rails_subapp/app/helpers/articles_helper.rb +2 -0
  325. data/examples/reverse_proxy/rails_subapp/app/helpers/home_helper.rb +2 -0
  326. data/examples/reverse_proxy/rails_subapp/app/javascript/application.js +3 -0
  327. data/examples/reverse_proxy/rails_subapp/app/javascript/controllers/application.js +9 -0
  328. data/examples/reverse_proxy/rails_subapp/app/javascript/controllers/hello_controller.js +7 -0
  329. data/examples/reverse_proxy/rails_subapp/app/javascript/controllers/index.js +4 -0
  330. data/examples/reverse_proxy/rails_subapp/app/jobs/application_job.rb +7 -0
  331. data/examples/reverse_proxy/rails_subapp/app/mailers/application_mailer.rb +4 -0
  332. data/examples/reverse_proxy/rails_subapp/app/models/application_record.rb +3 -0
  333. data/examples/reverse_proxy/rails_subapp/app/models/article.rb +2 -0
  334. data/examples/reverse_proxy/rails_subapp/app/models/concerns/.keep +0 -0
  335. data/examples/reverse_proxy/rails_subapp/app/views/articles/_article.html.erb +14 -0
  336. data/examples/reverse_proxy/rails_subapp/app/views/articles/_article.json.jbuilder +2 -0
  337. data/examples/reverse_proxy/rails_subapp/app/views/articles/_form.html.erb +30 -0
  338. data/examples/reverse_proxy/rails_subapp/app/views/articles/edit.html.erb +12 -0
  339. data/examples/reverse_proxy/rails_subapp/app/views/articles/index.html.erb +29 -0
  340. data/examples/reverse_proxy/rails_subapp/app/views/articles/index.json.jbuilder +1 -0
  341. data/examples/reverse_proxy/rails_subapp/app/views/articles/new.html.erb +11 -0
  342. data/examples/reverse_proxy/rails_subapp/app/views/articles/show.html.erb +10 -0
  343. data/examples/reverse_proxy/rails_subapp/app/views/articles/show.json.jbuilder +1 -0
  344. data/examples/reverse_proxy/rails_subapp/app/views/home/index.html.erb +8 -0
  345. data/examples/reverse_proxy/rails_subapp/app/views/layouts/application.html.erb +34 -0
  346. data/examples/reverse_proxy/rails_subapp/app/views/layouts/mailer.html.erb +13 -0
  347. data/examples/reverse_proxy/rails_subapp/app/views/layouts/mailer.text.erb +1 -0
  348. data/examples/reverse_proxy/rails_subapp/app/views/pwa/manifest.json.erb +22 -0
  349. data/examples/reverse_proxy/rails_subapp/app/views/pwa/service-worker.js +26 -0
  350. data/examples/reverse_proxy/rails_subapp/bin/brakeman +7 -0
  351. data/examples/reverse_proxy/rails_subapp/bin/bundle +109 -0
  352. data/examples/reverse_proxy/rails_subapp/bin/dev +2 -0
  353. data/examples/reverse_proxy/rails_subapp/bin/docker-entrypoint +14 -0
  354. data/examples/reverse_proxy/rails_subapp/bin/importmap +4 -0
  355. data/examples/reverse_proxy/rails_subapp/bin/jobs +6 -0
  356. data/examples/reverse_proxy/rails_subapp/bin/kamal +27 -0
  357. data/examples/reverse_proxy/rails_subapp/bin/rails +4 -0
  358. data/examples/reverse_proxy/rails_subapp/bin/rake +4 -0
  359. data/examples/reverse_proxy/rails_subapp/bin/rubocop +8 -0
  360. data/examples/reverse_proxy/rails_subapp/bin/setup +34 -0
  361. data/examples/reverse_proxy/rails_subapp/bin/thrust +5 -0
  362. data/examples/reverse_proxy/rails_subapp/config/application.rb +26 -0
  363. data/examples/reverse_proxy/rails_subapp/config/boot.rb +4 -0
  364. data/examples/reverse_proxy/rails_subapp/config/cable.yml +17 -0
  365. data/examples/reverse_proxy/rails_subapp/config/cache.yml +16 -0
  366. data/examples/reverse_proxy/rails_subapp/config/credentials.yml.enc +1 -0
  367. data/examples/reverse_proxy/rails_subapp/config/database.yml +41 -0
  368. data/examples/reverse_proxy/rails_subapp/config/deploy.yml +116 -0
  369. data/examples/reverse_proxy/rails_subapp/config/environment.rb +5 -0
  370. data/examples/reverse_proxy/rails_subapp/config/environments/development.rb +72 -0
  371. data/examples/reverse_proxy/rails_subapp/config/environments/production.rb +90 -0
  372. data/examples/reverse_proxy/rails_subapp/config/environments/test.rb +53 -0
  373. data/examples/reverse_proxy/rails_subapp/config/importmap.rb +7 -0
  374. data/examples/reverse_proxy/rails_subapp/config/initializers/assets.rb +7 -0
  375. data/examples/reverse_proxy/rails_subapp/config/initializers/content_security_policy.rb +25 -0
  376. data/examples/reverse_proxy/rails_subapp/config/initializers/filter_parameter_logging.rb +8 -0
  377. data/examples/reverse_proxy/rails_subapp/config/initializers/inflections.rb +16 -0
  378. data/examples/reverse_proxy/rails_subapp/config/locales/en.yml +31 -0
  379. data/examples/reverse_proxy/rails_subapp/config/puma.rb +41 -0
  380. data/examples/reverse_proxy/rails_subapp/config/queue.yml +18 -0
  381. data/examples/reverse_proxy/rails_subapp/config/recurring.yml +10 -0
  382. data/examples/reverse_proxy/rails_subapp/config/routes.rb +17 -0
  383. data/examples/reverse_proxy/rails_subapp/config/storage.yml +34 -0
  384. data/examples/reverse_proxy/rails_subapp/config.ru +6 -0
  385. data/examples/reverse_proxy/rails_subapp/db/cable_schema.rb +11 -0
  386. data/examples/reverse_proxy/rails_subapp/db/cache_schema.rb +14 -0
  387. data/examples/reverse_proxy/rails_subapp/db/migrate/20250422211855_create_articles.rb +10 -0
  388. data/examples/reverse_proxy/rails_subapp/db/queue_schema.rb +129 -0
  389. data/examples/reverse_proxy/rails_subapp/db/schema.rb +20 -0
  390. data/examples/reverse_proxy/rails_subapp/db/seeds.rb +9 -0
  391. data/examples/reverse_proxy/rails_subapp/lib/tasks/.keep +0 -0
  392. data/examples/reverse_proxy/rails_subapp/log/.keep +0 -0
  393. data/examples/reverse_proxy/rails_subapp/public/400.html +114 -0
  394. data/examples/reverse_proxy/rails_subapp/public/404.html +114 -0
  395. data/examples/reverse_proxy/rails_subapp/public/406-unsupported-browser.html +114 -0
  396. data/examples/reverse_proxy/rails_subapp/public/422.html +114 -0
  397. data/examples/reverse_proxy/rails_subapp/public/500.html +114 -0
  398. data/examples/reverse_proxy/rails_subapp/public/icon.png +0 -0
  399. data/examples/reverse_proxy/rails_subapp/public/icon.svg +3 -0
  400. data/examples/reverse_proxy/rails_subapp/public/robots.txt +1 -0
  401. data/examples/reverse_proxy/rails_subapp/script/.keep +0 -0
  402. data/examples/reverse_proxy/rails_subapp/storage/.keep +0 -0
  403. data/examples/reverse_proxy/rails_subapp/test/application_system_test_case.rb +5 -0
  404. data/examples/reverse_proxy/rails_subapp/test/controllers/.keep +0 -0
  405. data/examples/reverse_proxy/rails_subapp/test/controllers/articles_controller_test.rb +48 -0
  406. data/examples/reverse_proxy/rails_subapp/test/controllers/home_controller_test.rb +8 -0
  407. data/examples/reverse_proxy/rails_subapp/test/fixtures/articles.yml +9 -0
  408. data/examples/reverse_proxy/rails_subapp/test/fixtures/files/.keep +0 -0
  409. data/examples/reverse_proxy/rails_subapp/test/helpers/.keep +0 -0
  410. data/examples/reverse_proxy/rails_subapp/test/integration/.keep +0 -0
  411. data/examples/reverse_proxy/rails_subapp/test/mailers/.keep +0 -0
  412. data/examples/reverse_proxy/rails_subapp/test/models/.keep +0 -0
  413. data/examples/reverse_proxy/rails_subapp/test/models/article_test.rb +7 -0
  414. data/examples/reverse_proxy/rails_subapp/test/system/.keep +0 -0
  415. data/examples/reverse_proxy/rails_subapp/test/system/articles_test.rb +43 -0
  416. data/examples/reverse_proxy/rails_subapp/test/test_helper.rb +15 -0
  417. data/examples/reverse_proxy/rails_subapp/tmp/.keep +0 -0
  418. data/examples/reverse_proxy/rails_subapp/tmp/pids/.keep +0 -0
  419. data/examples/reverse_proxy/rails_subapp/tmp/storage/.keep +0 -0
  420. data/examples/reverse_proxy/rails_subapp/vendor/.keep +0 -0
  421. data/examples/reverse_proxy/rails_subapp/vendor/javascript/.keep +0 -0
  422. data/examples/reverse_proxy/sinatra_subapp/Gemfile +2 -0
  423. data/examples/reverse_proxy/sinatra_subapp/Gemfile.lock +46 -0
  424. data/examples/reverse_proxy/sinatra_subapp/config.ru +2 -0
  425. data/examples/reverse_proxy/sinatra_subapp/my_app.rb +96 -0
  426. data/examples/simple_api/Itsi.rb +127 -0
  427. data/examples/simple_api_no_schema/Itsi.rb +86 -0
  428. data/examples/spa/Itsi.rb +5 -0
  429. data/examples/spa/README.md +3 -0
  430. data/examples/spa/dist/assets/index-2cf7be43.js +40 -0
  431. data/examples/spa/dist/index.html +13 -0
  432. data/examples/spa/index.html +12 -0
  433. data/examples/spa/package-lock.json +1265 -0
  434. data/examples/spa/package.json +18 -0
  435. data/examples/spa/src/App.jsx +49 -0
  436. data/examples/spa/src/main.jsx +6 -0
  437. data/examples/spa/src/pages/About.jsx +9 -0
  438. data/examples/spa/src/pages/Home.jsx +9 -0
  439. data/examples/spa/vite.config.js +9 -0
  440. data/gems/scheduler/Cargo.lock +1 -1
  441. data/gems/scheduler/lib/itsi/scheduler/version.rb +1 -1
  442. data/gems/server/Cargo.lock +1 -1
  443. data/gems/server/lib/itsi/server/config/dsl.rb +2 -2
  444. data/gems/server/lib/itsi/server/config/middleware/endpoint/endpoint.rb +0 -4
  445. data/gems/server/lib/itsi/server/config/middleware/location.rb +25 -21
  446. data/gems/server/lib/itsi/server/config/middleware/proxy.rb +15 -14
  447. data/gems/server/lib/itsi/server/config/middleware/rackup_file.rb +7 -10
  448. data/gems/server/lib/itsi/server/config/middleware/static_assets.rb +8 -4
  449. data/gems/server/lib/itsi/server/config/middleware/string_rewrite.md +14 -0
  450. data/gems/server/lib/itsi/server/config/options/include.rb +1 -1
  451. data/gems/server/lib/itsi/server/rack_interface.rb +1 -1
  452. data/gems/server/lib/itsi/server/route_tester.rb +1 -1
  453. data/gems/server/lib/itsi/server/typed_handlers/param_parser.rb +25 -0
  454. data/gems/server/lib/itsi/server/version.rb +1 -1
  455. data/gems/server/lib/itsi/server.rb +1 -1
  456. data/gems/server/test/middleware/static_assets.rb +6 -4
  457. data/gems/server/test/middleware/string_rewrite.rb +54 -0
  458. data/gems/server/test/middleware/test_log_requests.rb +13 -1
  459. data/lib/itsi/version.rb +1 -1
  460. metadata +431 -5
@@ -0,0 +1,1265 @@
1
+ {
2
+ "name": "my-app",
3
+ "version": "0.0.1",
4
+ "lockfileVersion": 3,
5
+ "requires": true,
6
+ "packages": {
7
+ "": {
8
+ "name": "my-app",
9
+ "version": "0.0.1",
10
+ "dependencies": {
11
+ "react": "^18.2.0",
12
+ "react-dom": "^18.2.0"
13
+ },
14
+ "devDependencies": {
15
+ "@vitejs/plugin-react": "^4.0.0",
16
+ "vite": "^4.4.0"
17
+ }
18
+ },
19
+ "node_modules/@ampproject/remapping": {
20
+ "version": "2.3.0",
21
+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
22
+ "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
23
+ "dev": true,
24
+ "license": "Apache-2.0",
25
+ "dependencies": {
26
+ "@jridgewell/gen-mapping": "^0.3.5",
27
+ "@jridgewell/trace-mapping": "^0.3.24"
28
+ },
29
+ "engines": {
30
+ "node": ">=6.0.0"
31
+ }
32
+ },
33
+ "node_modules/@babel/code-frame": {
34
+ "version": "7.26.2",
35
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz",
36
+ "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==",
37
+ "dev": true,
38
+ "license": "MIT",
39
+ "dependencies": {
40
+ "@babel/helper-validator-identifier": "^7.25.9",
41
+ "js-tokens": "^4.0.0",
42
+ "picocolors": "^1.0.0"
43
+ },
44
+ "engines": {
45
+ "node": ">=6.9.0"
46
+ }
47
+ },
48
+ "node_modules/@babel/compat-data": {
49
+ "version": "7.26.8",
50
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz",
51
+ "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==",
52
+ "dev": true,
53
+ "license": "MIT",
54
+ "engines": {
55
+ "node": ">=6.9.0"
56
+ }
57
+ },
58
+ "node_modules/@babel/core": {
59
+ "version": "7.26.10",
60
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz",
61
+ "integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==",
62
+ "dev": true,
63
+ "license": "MIT",
64
+ "dependencies": {
65
+ "@ampproject/remapping": "^2.2.0",
66
+ "@babel/code-frame": "^7.26.2",
67
+ "@babel/generator": "^7.26.10",
68
+ "@babel/helper-compilation-targets": "^7.26.5",
69
+ "@babel/helper-module-transforms": "^7.26.0",
70
+ "@babel/helpers": "^7.26.10",
71
+ "@babel/parser": "^7.26.10",
72
+ "@babel/template": "^7.26.9",
73
+ "@babel/traverse": "^7.26.10",
74
+ "@babel/types": "^7.26.10",
75
+ "convert-source-map": "^2.0.0",
76
+ "debug": "^4.1.0",
77
+ "gensync": "^1.0.0-beta.2",
78
+ "json5": "^2.2.3",
79
+ "semver": "^6.3.1"
80
+ },
81
+ "engines": {
82
+ "node": ">=6.9.0"
83
+ },
84
+ "funding": {
85
+ "type": "opencollective",
86
+ "url": "https://opencollective.com/babel"
87
+ }
88
+ },
89
+ "node_modules/@babel/generator": {
90
+ "version": "7.27.0",
91
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.0.tgz",
92
+ "integrity": "sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==",
93
+ "dev": true,
94
+ "license": "MIT",
95
+ "dependencies": {
96
+ "@babel/parser": "^7.27.0",
97
+ "@babel/types": "^7.27.0",
98
+ "@jridgewell/gen-mapping": "^0.3.5",
99
+ "@jridgewell/trace-mapping": "^0.3.25",
100
+ "jsesc": "^3.0.2"
101
+ },
102
+ "engines": {
103
+ "node": ">=6.9.0"
104
+ }
105
+ },
106
+ "node_modules/@babel/helper-compilation-targets": {
107
+ "version": "7.27.0",
108
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.0.tgz",
109
+ "integrity": "sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==",
110
+ "dev": true,
111
+ "license": "MIT",
112
+ "dependencies": {
113
+ "@babel/compat-data": "^7.26.8",
114
+ "@babel/helper-validator-option": "^7.25.9",
115
+ "browserslist": "^4.24.0",
116
+ "lru-cache": "^5.1.1",
117
+ "semver": "^6.3.1"
118
+ },
119
+ "engines": {
120
+ "node": ">=6.9.0"
121
+ }
122
+ },
123
+ "node_modules/@babel/helper-module-imports": {
124
+ "version": "7.25.9",
125
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz",
126
+ "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==",
127
+ "dev": true,
128
+ "license": "MIT",
129
+ "dependencies": {
130
+ "@babel/traverse": "^7.25.9",
131
+ "@babel/types": "^7.25.9"
132
+ },
133
+ "engines": {
134
+ "node": ">=6.9.0"
135
+ }
136
+ },
137
+ "node_modules/@babel/helper-module-transforms": {
138
+ "version": "7.26.0",
139
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz",
140
+ "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==",
141
+ "dev": true,
142
+ "license": "MIT",
143
+ "dependencies": {
144
+ "@babel/helper-module-imports": "^7.25.9",
145
+ "@babel/helper-validator-identifier": "^7.25.9",
146
+ "@babel/traverse": "^7.25.9"
147
+ },
148
+ "engines": {
149
+ "node": ">=6.9.0"
150
+ },
151
+ "peerDependencies": {
152
+ "@babel/core": "^7.0.0"
153
+ }
154
+ },
155
+ "node_modules/@babel/helper-plugin-utils": {
156
+ "version": "7.26.5",
157
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz",
158
+ "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==",
159
+ "dev": true,
160
+ "license": "MIT",
161
+ "engines": {
162
+ "node": ">=6.9.0"
163
+ }
164
+ },
165
+ "node_modules/@babel/helper-string-parser": {
166
+ "version": "7.25.9",
167
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz",
168
+ "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==",
169
+ "dev": true,
170
+ "license": "MIT",
171
+ "engines": {
172
+ "node": ">=6.9.0"
173
+ }
174
+ },
175
+ "node_modules/@babel/helper-validator-identifier": {
176
+ "version": "7.25.9",
177
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
178
+ "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
179
+ "dev": true,
180
+ "license": "MIT",
181
+ "engines": {
182
+ "node": ">=6.9.0"
183
+ }
184
+ },
185
+ "node_modules/@babel/helper-validator-option": {
186
+ "version": "7.25.9",
187
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz",
188
+ "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==",
189
+ "dev": true,
190
+ "license": "MIT",
191
+ "engines": {
192
+ "node": ">=6.9.0"
193
+ }
194
+ },
195
+ "node_modules/@babel/helpers": {
196
+ "version": "7.27.0",
197
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.0.tgz",
198
+ "integrity": "sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==",
199
+ "dev": true,
200
+ "license": "MIT",
201
+ "dependencies": {
202
+ "@babel/template": "^7.27.0",
203
+ "@babel/types": "^7.27.0"
204
+ },
205
+ "engines": {
206
+ "node": ">=6.9.0"
207
+ }
208
+ },
209
+ "node_modules/@babel/parser": {
210
+ "version": "7.27.0",
211
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz",
212
+ "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==",
213
+ "dev": true,
214
+ "license": "MIT",
215
+ "dependencies": {
216
+ "@babel/types": "^7.27.0"
217
+ },
218
+ "bin": {
219
+ "parser": "bin/babel-parser.js"
220
+ },
221
+ "engines": {
222
+ "node": ">=6.0.0"
223
+ }
224
+ },
225
+ "node_modules/@babel/plugin-transform-react-jsx-self": {
226
+ "version": "7.25.9",
227
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.9.tgz",
228
+ "integrity": "sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==",
229
+ "dev": true,
230
+ "license": "MIT",
231
+ "dependencies": {
232
+ "@babel/helper-plugin-utils": "^7.25.9"
233
+ },
234
+ "engines": {
235
+ "node": ">=6.9.0"
236
+ },
237
+ "peerDependencies": {
238
+ "@babel/core": "^7.0.0-0"
239
+ }
240
+ },
241
+ "node_modules/@babel/plugin-transform-react-jsx-source": {
242
+ "version": "7.25.9",
243
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.9.tgz",
244
+ "integrity": "sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==",
245
+ "dev": true,
246
+ "license": "MIT",
247
+ "dependencies": {
248
+ "@babel/helper-plugin-utils": "^7.25.9"
249
+ },
250
+ "engines": {
251
+ "node": ">=6.9.0"
252
+ },
253
+ "peerDependencies": {
254
+ "@babel/core": "^7.0.0-0"
255
+ }
256
+ },
257
+ "node_modules/@babel/template": {
258
+ "version": "7.27.0",
259
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz",
260
+ "integrity": "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==",
261
+ "dev": true,
262
+ "license": "MIT",
263
+ "dependencies": {
264
+ "@babel/code-frame": "^7.26.2",
265
+ "@babel/parser": "^7.27.0",
266
+ "@babel/types": "^7.27.0"
267
+ },
268
+ "engines": {
269
+ "node": ">=6.9.0"
270
+ }
271
+ },
272
+ "node_modules/@babel/traverse": {
273
+ "version": "7.27.0",
274
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.0.tgz",
275
+ "integrity": "sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==",
276
+ "dev": true,
277
+ "license": "MIT",
278
+ "dependencies": {
279
+ "@babel/code-frame": "^7.26.2",
280
+ "@babel/generator": "^7.27.0",
281
+ "@babel/parser": "^7.27.0",
282
+ "@babel/template": "^7.27.0",
283
+ "@babel/types": "^7.27.0",
284
+ "debug": "^4.3.1",
285
+ "globals": "^11.1.0"
286
+ },
287
+ "engines": {
288
+ "node": ">=6.9.0"
289
+ }
290
+ },
291
+ "node_modules/@babel/types": {
292
+ "version": "7.27.0",
293
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz",
294
+ "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==",
295
+ "dev": true,
296
+ "license": "MIT",
297
+ "dependencies": {
298
+ "@babel/helper-string-parser": "^7.25.9",
299
+ "@babel/helper-validator-identifier": "^7.25.9"
300
+ },
301
+ "engines": {
302
+ "node": ">=6.9.0"
303
+ }
304
+ },
305
+ "node_modules/@esbuild/android-arm": {
306
+ "version": "0.18.20",
307
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz",
308
+ "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==",
309
+ "cpu": [
310
+ "arm"
311
+ ],
312
+ "dev": true,
313
+ "license": "MIT",
314
+ "optional": true,
315
+ "os": [
316
+ "android"
317
+ ],
318
+ "engines": {
319
+ "node": ">=12"
320
+ }
321
+ },
322
+ "node_modules/@esbuild/android-arm64": {
323
+ "version": "0.18.20",
324
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz",
325
+ "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==",
326
+ "cpu": [
327
+ "arm64"
328
+ ],
329
+ "dev": true,
330
+ "license": "MIT",
331
+ "optional": true,
332
+ "os": [
333
+ "android"
334
+ ],
335
+ "engines": {
336
+ "node": ">=12"
337
+ }
338
+ },
339
+ "node_modules/@esbuild/android-x64": {
340
+ "version": "0.18.20",
341
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz",
342
+ "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==",
343
+ "cpu": [
344
+ "x64"
345
+ ],
346
+ "dev": true,
347
+ "license": "MIT",
348
+ "optional": true,
349
+ "os": [
350
+ "android"
351
+ ],
352
+ "engines": {
353
+ "node": ">=12"
354
+ }
355
+ },
356
+ "node_modules/@esbuild/darwin-arm64": {
357
+ "version": "0.18.20",
358
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz",
359
+ "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==",
360
+ "cpu": [
361
+ "arm64"
362
+ ],
363
+ "dev": true,
364
+ "license": "MIT",
365
+ "optional": true,
366
+ "os": [
367
+ "darwin"
368
+ ],
369
+ "engines": {
370
+ "node": ">=12"
371
+ }
372
+ },
373
+ "node_modules/@esbuild/darwin-x64": {
374
+ "version": "0.18.20",
375
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz",
376
+ "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==",
377
+ "cpu": [
378
+ "x64"
379
+ ],
380
+ "dev": true,
381
+ "license": "MIT",
382
+ "optional": true,
383
+ "os": [
384
+ "darwin"
385
+ ],
386
+ "engines": {
387
+ "node": ">=12"
388
+ }
389
+ },
390
+ "node_modules/@esbuild/freebsd-arm64": {
391
+ "version": "0.18.20",
392
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz",
393
+ "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==",
394
+ "cpu": [
395
+ "arm64"
396
+ ],
397
+ "dev": true,
398
+ "license": "MIT",
399
+ "optional": true,
400
+ "os": [
401
+ "freebsd"
402
+ ],
403
+ "engines": {
404
+ "node": ">=12"
405
+ }
406
+ },
407
+ "node_modules/@esbuild/freebsd-x64": {
408
+ "version": "0.18.20",
409
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz",
410
+ "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==",
411
+ "cpu": [
412
+ "x64"
413
+ ],
414
+ "dev": true,
415
+ "license": "MIT",
416
+ "optional": true,
417
+ "os": [
418
+ "freebsd"
419
+ ],
420
+ "engines": {
421
+ "node": ">=12"
422
+ }
423
+ },
424
+ "node_modules/@esbuild/linux-arm": {
425
+ "version": "0.18.20",
426
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz",
427
+ "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==",
428
+ "cpu": [
429
+ "arm"
430
+ ],
431
+ "dev": true,
432
+ "license": "MIT",
433
+ "optional": true,
434
+ "os": [
435
+ "linux"
436
+ ],
437
+ "engines": {
438
+ "node": ">=12"
439
+ }
440
+ },
441
+ "node_modules/@esbuild/linux-arm64": {
442
+ "version": "0.18.20",
443
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz",
444
+ "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==",
445
+ "cpu": [
446
+ "arm64"
447
+ ],
448
+ "dev": true,
449
+ "license": "MIT",
450
+ "optional": true,
451
+ "os": [
452
+ "linux"
453
+ ],
454
+ "engines": {
455
+ "node": ">=12"
456
+ }
457
+ },
458
+ "node_modules/@esbuild/linux-ia32": {
459
+ "version": "0.18.20",
460
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz",
461
+ "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==",
462
+ "cpu": [
463
+ "ia32"
464
+ ],
465
+ "dev": true,
466
+ "license": "MIT",
467
+ "optional": true,
468
+ "os": [
469
+ "linux"
470
+ ],
471
+ "engines": {
472
+ "node": ">=12"
473
+ }
474
+ },
475
+ "node_modules/@esbuild/linux-loong64": {
476
+ "version": "0.18.20",
477
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz",
478
+ "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==",
479
+ "cpu": [
480
+ "loong64"
481
+ ],
482
+ "dev": true,
483
+ "license": "MIT",
484
+ "optional": true,
485
+ "os": [
486
+ "linux"
487
+ ],
488
+ "engines": {
489
+ "node": ">=12"
490
+ }
491
+ },
492
+ "node_modules/@esbuild/linux-mips64el": {
493
+ "version": "0.18.20",
494
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz",
495
+ "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==",
496
+ "cpu": [
497
+ "mips64el"
498
+ ],
499
+ "dev": true,
500
+ "license": "MIT",
501
+ "optional": true,
502
+ "os": [
503
+ "linux"
504
+ ],
505
+ "engines": {
506
+ "node": ">=12"
507
+ }
508
+ },
509
+ "node_modules/@esbuild/linux-ppc64": {
510
+ "version": "0.18.20",
511
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz",
512
+ "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==",
513
+ "cpu": [
514
+ "ppc64"
515
+ ],
516
+ "dev": true,
517
+ "license": "MIT",
518
+ "optional": true,
519
+ "os": [
520
+ "linux"
521
+ ],
522
+ "engines": {
523
+ "node": ">=12"
524
+ }
525
+ },
526
+ "node_modules/@esbuild/linux-riscv64": {
527
+ "version": "0.18.20",
528
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz",
529
+ "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==",
530
+ "cpu": [
531
+ "riscv64"
532
+ ],
533
+ "dev": true,
534
+ "license": "MIT",
535
+ "optional": true,
536
+ "os": [
537
+ "linux"
538
+ ],
539
+ "engines": {
540
+ "node": ">=12"
541
+ }
542
+ },
543
+ "node_modules/@esbuild/linux-s390x": {
544
+ "version": "0.18.20",
545
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz",
546
+ "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==",
547
+ "cpu": [
548
+ "s390x"
549
+ ],
550
+ "dev": true,
551
+ "license": "MIT",
552
+ "optional": true,
553
+ "os": [
554
+ "linux"
555
+ ],
556
+ "engines": {
557
+ "node": ">=12"
558
+ }
559
+ },
560
+ "node_modules/@esbuild/linux-x64": {
561
+ "version": "0.18.20",
562
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz",
563
+ "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==",
564
+ "cpu": [
565
+ "x64"
566
+ ],
567
+ "dev": true,
568
+ "license": "MIT",
569
+ "optional": true,
570
+ "os": [
571
+ "linux"
572
+ ],
573
+ "engines": {
574
+ "node": ">=12"
575
+ }
576
+ },
577
+ "node_modules/@esbuild/netbsd-x64": {
578
+ "version": "0.18.20",
579
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz",
580
+ "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==",
581
+ "cpu": [
582
+ "x64"
583
+ ],
584
+ "dev": true,
585
+ "license": "MIT",
586
+ "optional": true,
587
+ "os": [
588
+ "netbsd"
589
+ ],
590
+ "engines": {
591
+ "node": ">=12"
592
+ }
593
+ },
594
+ "node_modules/@esbuild/openbsd-x64": {
595
+ "version": "0.18.20",
596
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz",
597
+ "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==",
598
+ "cpu": [
599
+ "x64"
600
+ ],
601
+ "dev": true,
602
+ "license": "MIT",
603
+ "optional": true,
604
+ "os": [
605
+ "openbsd"
606
+ ],
607
+ "engines": {
608
+ "node": ">=12"
609
+ }
610
+ },
611
+ "node_modules/@esbuild/sunos-x64": {
612
+ "version": "0.18.20",
613
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz",
614
+ "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==",
615
+ "cpu": [
616
+ "x64"
617
+ ],
618
+ "dev": true,
619
+ "license": "MIT",
620
+ "optional": true,
621
+ "os": [
622
+ "sunos"
623
+ ],
624
+ "engines": {
625
+ "node": ">=12"
626
+ }
627
+ },
628
+ "node_modules/@esbuild/win32-arm64": {
629
+ "version": "0.18.20",
630
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz",
631
+ "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==",
632
+ "cpu": [
633
+ "arm64"
634
+ ],
635
+ "dev": true,
636
+ "license": "MIT",
637
+ "optional": true,
638
+ "os": [
639
+ "win32"
640
+ ],
641
+ "engines": {
642
+ "node": ">=12"
643
+ }
644
+ },
645
+ "node_modules/@esbuild/win32-ia32": {
646
+ "version": "0.18.20",
647
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz",
648
+ "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==",
649
+ "cpu": [
650
+ "ia32"
651
+ ],
652
+ "dev": true,
653
+ "license": "MIT",
654
+ "optional": true,
655
+ "os": [
656
+ "win32"
657
+ ],
658
+ "engines": {
659
+ "node": ">=12"
660
+ }
661
+ },
662
+ "node_modules/@esbuild/win32-x64": {
663
+ "version": "0.18.20",
664
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz",
665
+ "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==",
666
+ "cpu": [
667
+ "x64"
668
+ ],
669
+ "dev": true,
670
+ "license": "MIT",
671
+ "optional": true,
672
+ "os": [
673
+ "win32"
674
+ ],
675
+ "engines": {
676
+ "node": ">=12"
677
+ }
678
+ },
679
+ "node_modules/@jridgewell/gen-mapping": {
680
+ "version": "0.3.8",
681
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz",
682
+ "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==",
683
+ "dev": true,
684
+ "license": "MIT",
685
+ "dependencies": {
686
+ "@jridgewell/set-array": "^1.2.1",
687
+ "@jridgewell/sourcemap-codec": "^1.4.10",
688
+ "@jridgewell/trace-mapping": "^0.3.24"
689
+ },
690
+ "engines": {
691
+ "node": ">=6.0.0"
692
+ }
693
+ },
694
+ "node_modules/@jridgewell/resolve-uri": {
695
+ "version": "3.1.2",
696
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
697
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
698
+ "dev": true,
699
+ "license": "MIT",
700
+ "engines": {
701
+ "node": ">=6.0.0"
702
+ }
703
+ },
704
+ "node_modules/@jridgewell/set-array": {
705
+ "version": "1.2.1",
706
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
707
+ "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
708
+ "dev": true,
709
+ "license": "MIT",
710
+ "engines": {
711
+ "node": ">=6.0.0"
712
+ }
713
+ },
714
+ "node_modules/@jridgewell/sourcemap-codec": {
715
+ "version": "1.5.0",
716
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
717
+ "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
718
+ "dev": true,
719
+ "license": "MIT"
720
+ },
721
+ "node_modules/@jridgewell/trace-mapping": {
722
+ "version": "0.3.25",
723
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
724
+ "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
725
+ "dev": true,
726
+ "license": "MIT",
727
+ "dependencies": {
728
+ "@jridgewell/resolve-uri": "^3.1.0",
729
+ "@jridgewell/sourcemap-codec": "^1.4.14"
730
+ }
731
+ },
732
+ "node_modules/@types/babel__core": {
733
+ "version": "7.20.5",
734
+ "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
735
+ "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==",
736
+ "dev": true,
737
+ "license": "MIT",
738
+ "dependencies": {
739
+ "@babel/parser": "^7.20.7",
740
+ "@babel/types": "^7.20.7",
741
+ "@types/babel__generator": "*",
742
+ "@types/babel__template": "*",
743
+ "@types/babel__traverse": "*"
744
+ }
745
+ },
746
+ "node_modules/@types/babel__generator": {
747
+ "version": "7.27.0",
748
+ "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz",
749
+ "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==",
750
+ "dev": true,
751
+ "license": "MIT",
752
+ "dependencies": {
753
+ "@babel/types": "^7.0.0"
754
+ }
755
+ },
756
+ "node_modules/@types/babel__template": {
757
+ "version": "7.4.4",
758
+ "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz",
759
+ "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==",
760
+ "dev": true,
761
+ "license": "MIT",
762
+ "dependencies": {
763
+ "@babel/parser": "^7.1.0",
764
+ "@babel/types": "^7.0.0"
765
+ }
766
+ },
767
+ "node_modules/@types/babel__traverse": {
768
+ "version": "7.20.7",
769
+ "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz",
770
+ "integrity": "sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==",
771
+ "dev": true,
772
+ "license": "MIT",
773
+ "dependencies": {
774
+ "@babel/types": "^7.20.7"
775
+ }
776
+ },
777
+ "node_modules/@vitejs/plugin-react": {
778
+ "version": "4.4.1",
779
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.4.1.tgz",
780
+ "integrity": "sha512-IpEm5ZmeXAP/osiBXVVP5KjFMzbWOonMs0NaQQl+xYnUAcq4oHUBsF2+p4MgKWG4YMmFYJU8A6sxRPuowllm6w==",
781
+ "dev": true,
782
+ "license": "MIT",
783
+ "dependencies": {
784
+ "@babel/core": "^7.26.10",
785
+ "@babel/plugin-transform-react-jsx-self": "^7.25.9",
786
+ "@babel/plugin-transform-react-jsx-source": "^7.25.9",
787
+ "@types/babel__core": "^7.20.5",
788
+ "react-refresh": "^0.17.0"
789
+ },
790
+ "engines": {
791
+ "node": "^14.18.0 || >=16.0.0"
792
+ },
793
+ "peerDependencies": {
794
+ "vite": "^4.2.0 || ^5.0.0 || ^6.0.0"
795
+ }
796
+ },
797
+ "node_modules/browserslist": {
798
+ "version": "4.24.4",
799
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz",
800
+ "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==",
801
+ "dev": true,
802
+ "funding": [
803
+ {
804
+ "type": "opencollective",
805
+ "url": "https://opencollective.com/browserslist"
806
+ },
807
+ {
808
+ "type": "tidelift",
809
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
810
+ },
811
+ {
812
+ "type": "github",
813
+ "url": "https://github.com/sponsors/ai"
814
+ }
815
+ ],
816
+ "license": "MIT",
817
+ "dependencies": {
818
+ "caniuse-lite": "^1.0.30001688",
819
+ "electron-to-chromium": "^1.5.73",
820
+ "node-releases": "^2.0.19",
821
+ "update-browserslist-db": "^1.1.1"
822
+ },
823
+ "bin": {
824
+ "browserslist": "cli.js"
825
+ },
826
+ "engines": {
827
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
828
+ }
829
+ },
830
+ "node_modules/caniuse-lite": {
831
+ "version": "1.0.30001715",
832
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001715.tgz",
833
+ "integrity": "sha512-7ptkFGMm2OAOgvZpwgA4yjQ5SQbrNVGdRjzH0pBdy1Fasvcr+KAeECmbCAECzTuDuoX0FCY8KzUxjf9+9kfZEw==",
834
+ "dev": true,
835
+ "funding": [
836
+ {
837
+ "type": "opencollective",
838
+ "url": "https://opencollective.com/browserslist"
839
+ },
840
+ {
841
+ "type": "tidelift",
842
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
843
+ },
844
+ {
845
+ "type": "github",
846
+ "url": "https://github.com/sponsors/ai"
847
+ }
848
+ ],
849
+ "license": "CC-BY-4.0"
850
+ },
851
+ "node_modules/convert-source-map": {
852
+ "version": "2.0.0",
853
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
854
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
855
+ "dev": true,
856
+ "license": "MIT"
857
+ },
858
+ "node_modules/debug": {
859
+ "version": "4.4.0",
860
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz",
861
+ "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
862
+ "dev": true,
863
+ "license": "MIT",
864
+ "dependencies": {
865
+ "ms": "^2.1.3"
866
+ },
867
+ "engines": {
868
+ "node": ">=6.0"
869
+ },
870
+ "peerDependenciesMeta": {
871
+ "supports-color": {
872
+ "optional": true
873
+ }
874
+ }
875
+ },
876
+ "node_modules/electron-to-chromium": {
877
+ "version": "1.5.140",
878
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.140.tgz",
879
+ "integrity": "sha512-o82Rj+ONp4Ip7Cl1r7lrqx/pXhbp/lh9DpKcMNscFJdh8ebyRofnc7Sh01B4jx403RI0oqTBvlZ7OBIZLMr2+Q==",
880
+ "dev": true,
881
+ "license": "ISC"
882
+ },
883
+ "node_modules/esbuild": {
884
+ "version": "0.18.20",
885
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz",
886
+ "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==",
887
+ "dev": true,
888
+ "hasInstallScript": true,
889
+ "license": "MIT",
890
+ "bin": {
891
+ "esbuild": "bin/esbuild"
892
+ },
893
+ "engines": {
894
+ "node": ">=12"
895
+ },
896
+ "optionalDependencies": {
897
+ "@esbuild/android-arm": "0.18.20",
898
+ "@esbuild/android-arm64": "0.18.20",
899
+ "@esbuild/android-x64": "0.18.20",
900
+ "@esbuild/darwin-arm64": "0.18.20",
901
+ "@esbuild/darwin-x64": "0.18.20",
902
+ "@esbuild/freebsd-arm64": "0.18.20",
903
+ "@esbuild/freebsd-x64": "0.18.20",
904
+ "@esbuild/linux-arm": "0.18.20",
905
+ "@esbuild/linux-arm64": "0.18.20",
906
+ "@esbuild/linux-ia32": "0.18.20",
907
+ "@esbuild/linux-loong64": "0.18.20",
908
+ "@esbuild/linux-mips64el": "0.18.20",
909
+ "@esbuild/linux-ppc64": "0.18.20",
910
+ "@esbuild/linux-riscv64": "0.18.20",
911
+ "@esbuild/linux-s390x": "0.18.20",
912
+ "@esbuild/linux-x64": "0.18.20",
913
+ "@esbuild/netbsd-x64": "0.18.20",
914
+ "@esbuild/openbsd-x64": "0.18.20",
915
+ "@esbuild/sunos-x64": "0.18.20",
916
+ "@esbuild/win32-arm64": "0.18.20",
917
+ "@esbuild/win32-ia32": "0.18.20",
918
+ "@esbuild/win32-x64": "0.18.20"
919
+ }
920
+ },
921
+ "node_modules/escalade": {
922
+ "version": "3.2.0",
923
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
924
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
925
+ "dev": true,
926
+ "license": "MIT",
927
+ "engines": {
928
+ "node": ">=6"
929
+ }
930
+ },
931
+ "node_modules/fsevents": {
932
+ "version": "2.3.3",
933
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
934
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
935
+ "dev": true,
936
+ "hasInstallScript": true,
937
+ "license": "MIT",
938
+ "optional": true,
939
+ "os": [
940
+ "darwin"
941
+ ],
942
+ "engines": {
943
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
944
+ }
945
+ },
946
+ "node_modules/gensync": {
947
+ "version": "1.0.0-beta.2",
948
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
949
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
950
+ "dev": true,
951
+ "license": "MIT",
952
+ "engines": {
953
+ "node": ">=6.9.0"
954
+ }
955
+ },
956
+ "node_modules/globals": {
957
+ "version": "11.12.0",
958
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
959
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
960
+ "dev": true,
961
+ "license": "MIT",
962
+ "engines": {
963
+ "node": ">=4"
964
+ }
965
+ },
966
+ "node_modules/js-tokens": {
967
+ "version": "4.0.0",
968
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
969
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
970
+ "license": "MIT"
971
+ },
972
+ "node_modules/jsesc": {
973
+ "version": "3.1.0",
974
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
975
+ "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
976
+ "dev": true,
977
+ "license": "MIT",
978
+ "bin": {
979
+ "jsesc": "bin/jsesc"
980
+ },
981
+ "engines": {
982
+ "node": ">=6"
983
+ }
984
+ },
985
+ "node_modules/json5": {
986
+ "version": "2.2.3",
987
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
988
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
989
+ "dev": true,
990
+ "license": "MIT",
991
+ "bin": {
992
+ "json5": "lib/cli.js"
993
+ },
994
+ "engines": {
995
+ "node": ">=6"
996
+ }
997
+ },
998
+ "node_modules/loose-envify": {
999
+ "version": "1.4.0",
1000
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
1001
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
1002
+ "license": "MIT",
1003
+ "dependencies": {
1004
+ "js-tokens": "^3.0.0 || ^4.0.0"
1005
+ },
1006
+ "bin": {
1007
+ "loose-envify": "cli.js"
1008
+ }
1009
+ },
1010
+ "node_modules/lru-cache": {
1011
+ "version": "5.1.1",
1012
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
1013
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
1014
+ "dev": true,
1015
+ "license": "ISC",
1016
+ "dependencies": {
1017
+ "yallist": "^3.0.2"
1018
+ }
1019
+ },
1020
+ "node_modules/ms": {
1021
+ "version": "2.1.3",
1022
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
1023
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
1024
+ "dev": true,
1025
+ "license": "MIT"
1026
+ },
1027
+ "node_modules/nanoid": {
1028
+ "version": "3.3.11",
1029
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
1030
+ "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
1031
+ "dev": true,
1032
+ "funding": [
1033
+ {
1034
+ "type": "github",
1035
+ "url": "https://github.com/sponsors/ai"
1036
+ }
1037
+ ],
1038
+ "license": "MIT",
1039
+ "bin": {
1040
+ "nanoid": "bin/nanoid.cjs"
1041
+ },
1042
+ "engines": {
1043
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
1044
+ }
1045
+ },
1046
+ "node_modules/node-releases": {
1047
+ "version": "2.0.19",
1048
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz",
1049
+ "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==",
1050
+ "dev": true,
1051
+ "license": "MIT"
1052
+ },
1053
+ "node_modules/picocolors": {
1054
+ "version": "1.1.1",
1055
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
1056
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
1057
+ "dev": true,
1058
+ "license": "ISC"
1059
+ },
1060
+ "node_modules/postcss": {
1061
+ "version": "8.5.3",
1062
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz",
1063
+ "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==",
1064
+ "dev": true,
1065
+ "funding": [
1066
+ {
1067
+ "type": "opencollective",
1068
+ "url": "https://opencollective.com/postcss/"
1069
+ },
1070
+ {
1071
+ "type": "tidelift",
1072
+ "url": "https://tidelift.com/funding/github/npm/postcss"
1073
+ },
1074
+ {
1075
+ "type": "github",
1076
+ "url": "https://github.com/sponsors/ai"
1077
+ }
1078
+ ],
1079
+ "license": "MIT",
1080
+ "dependencies": {
1081
+ "nanoid": "^3.3.8",
1082
+ "picocolors": "^1.1.1",
1083
+ "source-map-js": "^1.2.1"
1084
+ },
1085
+ "engines": {
1086
+ "node": "^10 || ^12 || >=14"
1087
+ }
1088
+ },
1089
+ "node_modules/react": {
1090
+ "version": "18.3.1",
1091
+ "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
1092
+ "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==",
1093
+ "license": "MIT",
1094
+ "dependencies": {
1095
+ "loose-envify": "^1.1.0"
1096
+ },
1097
+ "engines": {
1098
+ "node": ">=0.10.0"
1099
+ }
1100
+ },
1101
+ "node_modules/react-dom": {
1102
+ "version": "18.3.1",
1103
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz",
1104
+ "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==",
1105
+ "license": "MIT",
1106
+ "dependencies": {
1107
+ "loose-envify": "^1.1.0",
1108
+ "scheduler": "^0.23.2"
1109
+ },
1110
+ "peerDependencies": {
1111
+ "react": "^18.3.1"
1112
+ }
1113
+ },
1114
+ "node_modules/react-refresh": {
1115
+ "version": "0.17.0",
1116
+ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz",
1117
+ "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==",
1118
+ "dev": true,
1119
+ "license": "MIT",
1120
+ "engines": {
1121
+ "node": ">=0.10.0"
1122
+ }
1123
+ },
1124
+ "node_modules/rollup": {
1125
+ "version": "3.29.5",
1126
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.5.tgz",
1127
+ "integrity": "sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w==",
1128
+ "dev": true,
1129
+ "license": "MIT",
1130
+ "bin": {
1131
+ "rollup": "dist/bin/rollup"
1132
+ },
1133
+ "engines": {
1134
+ "node": ">=14.18.0",
1135
+ "npm": ">=8.0.0"
1136
+ },
1137
+ "optionalDependencies": {
1138
+ "fsevents": "~2.3.2"
1139
+ }
1140
+ },
1141
+ "node_modules/scheduler": {
1142
+ "version": "0.23.2",
1143
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz",
1144
+ "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==",
1145
+ "license": "MIT",
1146
+ "dependencies": {
1147
+ "loose-envify": "^1.1.0"
1148
+ }
1149
+ },
1150
+ "node_modules/semver": {
1151
+ "version": "6.3.1",
1152
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
1153
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
1154
+ "dev": true,
1155
+ "license": "ISC",
1156
+ "bin": {
1157
+ "semver": "bin/semver.js"
1158
+ }
1159
+ },
1160
+ "node_modules/source-map-js": {
1161
+ "version": "1.2.1",
1162
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
1163
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
1164
+ "dev": true,
1165
+ "license": "BSD-3-Clause",
1166
+ "engines": {
1167
+ "node": ">=0.10.0"
1168
+ }
1169
+ },
1170
+ "node_modules/update-browserslist-db": {
1171
+ "version": "1.1.3",
1172
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz",
1173
+ "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==",
1174
+ "dev": true,
1175
+ "funding": [
1176
+ {
1177
+ "type": "opencollective",
1178
+ "url": "https://opencollective.com/browserslist"
1179
+ },
1180
+ {
1181
+ "type": "tidelift",
1182
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
1183
+ },
1184
+ {
1185
+ "type": "github",
1186
+ "url": "https://github.com/sponsors/ai"
1187
+ }
1188
+ ],
1189
+ "license": "MIT",
1190
+ "dependencies": {
1191
+ "escalade": "^3.2.0",
1192
+ "picocolors": "^1.1.1"
1193
+ },
1194
+ "bin": {
1195
+ "update-browserslist-db": "cli.js"
1196
+ },
1197
+ "peerDependencies": {
1198
+ "browserslist": ">= 4.21.0"
1199
+ }
1200
+ },
1201
+ "node_modules/vite": {
1202
+ "version": "4.5.13",
1203
+ "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.13.tgz",
1204
+ "integrity": "sha512-Hgp8IF/yZDzKsN1hQWOuQZbrKiaFsbQud+07jJ8h9m9PaHWkpvZ5u55Xw5yYjWRXwRQ4jwFlJvY7T7FUJG9MCA==",
1205
+ "dev": true,
1206
+ "license": "MIT",
1207
+ "dependencies": {
1208
+ "esbuild": "^0.18.10",
1209
+ "postcss": "^8.4.27",
1210
+ "rollup": "^3.27.1"
1211
+ },
1212
+ "bin": {
1213
+ "vite": "bin/vite.js"
1214
+ },
1215
+ "engines": {
1216
+ "node": "^14.18.0 || >=16.0.0"
1217
+ },
1218
+ "funding": {
1219
+ "url": "https://github.com/vitejs/vite?sponsor=1"
1220
+ },
1221
+ "optionalDependencies": {
1222
+ "fsevents": "~2.3.2"
1223
+ },
1224
+ "peerDependencies": {
1225
+ "@types/node": ">= 14",
1226
+ "less": "*",
1227
+ "lightningcss": "^1.21.0",
1228
+ "sass": "*",
1229
+ "stylus": "*",
1230
+ "sugarss": "*",
1231
+ "terser": "^5.4.0"
1232
+ },
1233
+ "peerDependenciesMeta": {
1234
+ "@types/node": {
1235
+ "optional": true
1236
+ },
1237
+ "less": {
1238
+ "optional": true
1239
+ },
1240
+ "lightningcss": {
1241
+ "optional": true
1242
+ },
1243
+ "sass": {
1244
+ "optional": true
1245
+ },
1246
+ "stylus": {
1247
+ "optional": true
1248
+ },
1249
+ "sugarss": {
1250
+ "optional": true
1251
+ },
1252
+ "terser": {
1253
+ "optional": true
1254
+ }
1255
+ }
1256
+ },
1257
+ "node_modules/yallist": {
1258
+ "version": "3.1.1",
1259
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
1260
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
1261
+ "dev": true,
1262
+ "license": "ISC"
1263
+ }
1264
+ }
1265
+ }