railwatch 0.1.4 → 0.2.0.pre1

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 (301) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +205 -0
  3. data/README.md +10 -0
  4. data/app/channels/railwatch/environment_channel.rb +28 -0
  5. data/app/controllers/concerns/railwatch/telemetry_identity.rb +25 -0
  6. data/app/controllers/railwatch/alerts_controller.rb +48 -0
  7. data/app/controllers/railwatch/anomaly_rules_controller.rb +31 -0
  8. data/app/controllers/railwatch/attachments_controller.rb +22 -0
  9. data/app/controllers/railwatch/beacon_controller.rb +67 -7
  10. data/app/controllers/railwatch/broadcasts_controller.rb +15 -0
  11. data/app/controllers/railwatch/cache_events_controller.rb +30 -0
  12. data/app/controllers/railwatch/commands_controller.rb +16 -0
  13. data/app/controllers/railwatch/comments_controller.rb +11 -0
  14. data/app/controllers/railwatch/dashboard_controller.rb +69 -0
  15. data/app/controllers/railwatch/deploys_controller.rb +34 -0
  16. data/app/controllers/railwatch/deprecations_controller.rb +54 -0
  17. data/app/controllers/railwatch/environment_scoped.rb +99 -0
  18. data/app/controllers/railwatch/exceptions_controller.rb +53 -0
  19. data/app/controllers/railwatch/executions_controller.rb +13 -0
  20. data/app/controllers/railwatch/issues_controller.rb +258 -0
  21. data/app/controllers/railwatch/jobs_controller.rb +63 -0
  22. data/app/controllers/railwatch/llm_calls_controller.rb +124 -0
  23. data/app/controllers/railwatch/logs_controller.rb +40 -0
  24. data/app/controllers/railwatch/mails_controller.rb +19 -0
  25. data/app/controllers/railwatch/notifications_controller.rb +11 -0
  26. data/app/controllers/railwatch/outgoing_requests_controller.rb +19 -0
  27. data/app/controllers/railwatch/overview_controller.rb +38 -0
  28. data/app/controllers/railwatch/people_controller.rb +25 -0
  29. data/app/controllers/railwatch/processes_controller.rb +33 -0
  30. data/app/controllers/railwatch/profiles_controller.rb +50 -0
  31. data/app/controllers/railwatch/queries_controller.rb +59 -0
  32. data/app/controllers/railwatch/releases_controller.rb +75 -0
  33. data/app/controllers/railwatch/requests_controller.rb +55 -0
  34. data/app/controllers/railwatch/saved_views_controller.rb +53 -0
  35. data/app/controllers/railwatch/scheduled_tasks_controller.rb +45 -0
  36. data/app/controllers/railwatch/spans_controller.rb +47 -0
  37. data/app/controllers/railwatch/storage_ops_controller.rb +15 -0
  38. data/app/controllers/railwatch/tenants_controller.rb +44 -0
  39. data/app/controllers/railwatch/thresholds_controller.rb +40 -0
  40. data/app/controllers/railwatch/traces_controller.rb +72 -0
  41. data/app/controllers/railwatch/transactions_controller.rb +21 -0
  42. data/app/controllers/railwatch/view_renders_controller.rb +28 -0
  43. data/app/controllers/railwatch/visits_controller.rb +53 -0
  44. data/app/helpers/railwatch/assets_helper.rb +52 -0
  45. data/app/jobs/railwatch/anomaly_scan_job.rb +11 -0
  46. data/app/jobs/railwatch/application_job.rb +7 -0
  47. data/app/jobs/railwatch/auto_resolve_issues_job.rb +19 -0
  48. data/app/jobs/railwatch/check_scheduled_tasks_job.rb +113 -0
  49. data/app/jobs/railwatch/detect_anomalies_job.rb +171 -0
  50. data/app/jobs/railwatch/detect_performance_issues_job.rb +85 -0
  51. data/app/jobs/railwatch/group_exceptions_job.rb +91 -0
  52. data/app/jobs/railwatch/optimize_telemetry_job.rb +23 -0
  53. data/app/jobs/railwatch/performance_scan_job.rb +11 -0
  54. data/app/jobs/railwatch/prune_telemetry_job.rb +110 -0
  55. data/app/jobs/railwatch/release_health_rollup_job.rb +64 -0
  56. data/app/jobs/railwatch/rollup_catchup_job.rb +21 -0
  57. data/app/jobs/railwatch/rollup_job.rb +130 -0
  58. data/app/jobs/railwatch/scheduled_task_scan_job.rb +11 -0
  59. data/app/models/concerns/railwatch/detection_snapshotting.rb +20 -0
  60. data/app/models/railwatch/alert.rb +229 -0
  61. data/app/models/railwatch/alert_rule.rb +121 -0
  62. data/app/models/railwatch/anomaly_rule.rb +33 -0
  63. data/app/models/railwatch/application.rb +44 -0
  64. data/app/models/railwatch/application_record.rb +33 -0
  65. data/app/models/railwatch/comment.rb +36 -0
  66. data/app/models/railwatch/deploy.rb +67 -0
  67. data/app/models/railwatch/environment.rb +54 -0
  68. data/app/models/railwatch/execution_presenter.rb +185 -0
  69. data/app/models/railwatch/filter_query.rb +143 -0
  70. data/app/models/railwatch/followup_receipt.rb +27 -0
  71. data/app/models/railwatch/ingest/batch.rb +305 -0
  72. data/app/models/railwatch/ingest/mapper.rb +575 -0
  73. data/app/models/railwatch/ingest/payload.rb +96 -0
  74. data/app/models/railwatch/ingest/rollup_absorber.rb +170 -0
  75. data/app/models/railwatch/ingest/writer.rb +137 -0
  76. data/app/models/railwatch/issue.rb +277 -0
  77. data/app/models/railwatch/issue_activity.rb +23 -0
  78. data/app/models/railwatch/issue_detection_presenter.rb +309 -0
  79. data/app/models/railwatch/issue_detection_snapshot.rb +77 -0
  80. data/app/models/railwatch/maintenance_task.rb +53 -0
  81. data/app/models/railwatch/saved_view.rb +63 -0
  82. data/app/models/railwatch/telemetry/aggregations.rb +116 -0
  83. data/app/models/railwatch/telemetry/attachment.rb +31 -0
  84. data/app/models/railwatch/telemetry/bounded_gzip.rb +101 -0
  85. data/app/models/railwatch/telemetry/broadcast.rb +13 -0
  86. data/app/models/railwatch/telemetry/cache_event.rb +16 -0
  87. data/app/models/railwatch/telemetry/child.rb +53 -0
  88. data/app/models/railwatch/telemetry/cursor_page.rb +99 -0
  89. data/app/models/railwatch/telemetry/deprecation.rb +13 -0
  90. data/app/models/railwatch/telemetry/enqueued_job.rb +13 -0
  91. data/app/models/railwatch/telemetry/exception.rb +21 -0
  92. data/app/models/railwatch/telemetry/execution.rb +71 -0
  93. data/app/models/railwatch/telemetry/health_sample.rb +72 -0
  94. data/app/models/railwatch/telemetry/ingest_batch.rb +31 -0
  95. data/app/models/railwatch/telemetry/llm_call.rb +37 -0
  96. data/app/models/railwatch/telemetry/log.rb +85 -0
  97. data/app/models/railwatch/telemetry/mail.rb +13 -0
  98. data/app/models/railwatch/telemetry/n_plus_one.rb +92 -0
  99. data/app/models/railwatch/telemetry/notification.rb +13 -0
  100. data/app/models/railwatch/telemetry/outgoing_request.rb +13 -0
  101. data/app/models/railwatch/telemetry/person.rb +50 -0
  102. data/app/models/railwatch/telemetry/process.rb +10 -0
  103. data/app/models/railwatch/telemetry/profile.rb +37 -0
  104. data/app/models/railwatch/telemetry/query.rb +50 -0
  105. data/app/models/railwatch/telemetry/query_shape.rb +45 -0
  106. data/app/models/railwatch/telemetry/release_health.rb +63 -0
  107. data/app/models/railwatch/telemetry/rollup.rb +78 -0
  108. data/app/models/railwatch/telemetry/session.rb +24 -0
  109. data/app/models/railwatch/telemetry/span.rb +19 -0
  110. data/app/models/railwatch/telemetry/storage_op.rb +13 -0
  111. data/app/models/railwatch/telemetry/tenant.rb +221 -0
  112. data/app/models/railwatch/telemetry/transaction.rb +13 -0
  113. data/app/models/railwatch/telemetry/view_render.rb +13 -0
  114. data/app/models/railwatch/telemetry/visit.rb +24 -0
  115. data/app/models/railwatch/telemetry_record.rb +57 -0
  116. data/app/models/railwatch/threshold.rb +29 -0
  117. data/app/models/railwatch/user.rb +47 -0
  118. data/app/models/railwatch/viewer.rb +13 -0
  119. data/app/views/layouts/railwatch/dashboard.html.erb +25 -0
  120. data/config/routes.rb +59 -0
  121. data/db/railwatch_migrate/20260916000000_create_railwatch_tables.rb +151 -0
  122. data/db/railwatch_migrate/20260917000000_create_railwatch_maintenance_tasks.rb +18 -0
  123. data/db/railwatch_migrate/20260917120000_create_railwatch_followup_receipts.rb +20 -0
  124. data/db/railwatch_telemetry_migrate/20260903000001_create_telemetry.rb +481 -0
  125. data/db/railwatch_telemetry_migrate/20260903000002_rename_tenant_to_app_tenant.rb +14 -0
  126. data/db/railwatch_telemetry_migrate/20260903000003_add_statement_count_to_transactions.rb +9 -0
  127. data/db/railwatch_telemetry_migrate/20260903000004_add_role_and_channel.rb +10 -0
  128. data/db/railwatch_telemetry_migrate/20260903000005_add_locals_to_exceptions.rb +9 -0
  129. data/db/railwatch_telemetry_migrate/20260903000006_add_spans_health_vitals_and_fts.rb +82 -0
  130. data/db/railwatch_telemetry_migrate/20260903000007_rename_span_attributes_to_payload.rb +10 -0
  131. data/db/railwatch_telemetry_migrate/20260903000008_add_profiles_and_attachments.rb +60 -0
  132. data/db/railwatch_telemetry_migrate/20260903000009_add_truncated_to_attachments.rb +9 -0
  133. data/db/railwatch_telemetry_migrate/20260903000010_create_sessions_and_release_health.rb +51 -0
  134. data/db/railwatch_telemetry_migrate/20260903000011_add_fingerprint_to_exceptions.rb +11 -0
  135. data/db/railwatch_telemetry_migrate/20260904000012_add_failed_to_broadcasts.rb +10 -0
  136. data/db/railwatch_telemetry_migrate/20260904010000_add_filter_cursor_indexes.rb +37 -0
  137. data/db/railwatch_telemetry_migrate/20260904020000_add_n_plus_ones_execution_id_index.rb +11 -0
  138. data/db/railwatch_telemetry_migrate/20260904120000_create_query_shapes.rb +15 -0
  139. data/db/railwatch_telemetry_migrate/20260906120000_add_backpressure_factor_to_ingest_batches.rb +9 -0
  140. data/db/railwatch_telemetry_migrate/20260907000000_rename_lantern_version_on_processes.rb +10 -0
  141. data/db/railwatch_telemetry_migrate/20260913000000_rename_nightrail_version_on_processes.rb +9 -0
  142. data/db/railwatch_telemetry_migrate/20260914000000_drop_orphan_durable_ingest_tables.rb +18 -0
  143. data/db/railwatch_telemetry_migrate/20260914010000_drop_orphan_durable_ingest_columns.rb +25 -0
  144. data/db/railwatch_telemetry_migrate/20260915000000_create_llm_calls.rb +55 -0
  145. data/db/railwatch_telemetry_migrate/20260915120000_add_detail_to_llm_calls.rb +21 -0
  146. data/db/railwatch_telemetry_migrate/20260915200000_add_explained_index_to_queries.rb +16 -0
  147. data/db/railwatch_telemetry_migrate/20260915210000_add_slowest_index_to_queries.rb +18 -0
  148. data/db/railwatch_telemetry_migrate/20260917010000_add_batch_ledger_to_ingest_batches.rb +16 -0
  149. data/docs/configuration.md +26 -0
  150. data/docs/embedded.md +342 -0
  151. data/docs/getting-started.md +5 -0
  152. data/lib/generators/railwatch/install/install_generator.rb +222 -1
  153. data/lib/generators/railwatch/install/templates/{initializer.rb → initializer.rb.tt} +39 -0
  154. data/lib/generators/railwatch/install/templates/post-deploy +8 -0
  155. data/lib/puma/plugin/railwatch.rb +170 -0
  156. data/lib/railwatch/authentication.rb +83 -0
  157. data/lib/railwatch/configuration.rb +134 -3
  158. data/lib/railwatch/dashboard_assets.rb +45 -0
  159. data/lib/railwatch/embedded.rb +51 -0
  160. data/lib/railwatch/engine.rb +89 -1
  161. data/lib/railwatch/ingest_request_body_limit.rb +10 -0
  162. data/lib/railwatch/json_compat.rb +60 -0
  163. data/lib/railwatch/maintenance.rb +183 -0
  164. data/lib/railwatch/patches/runner_command.rb +21 -1
  165. data/lib/railwatch/record.rb +33 -8
  166. data/lib/railwatch/reporter.rb +16 -0
  167. data/lib/railwatch/subscribers/process_info.rb +2 -1
  168. data/lib/railwatch/transport/local.rb +78 -0
  169. data/lib/railwatch/transport/socket.rb +183 -0
  170. data/lib/railwatch/version.rb +1 -1
  171. data/lib/railwatch/writer.rb +370 -0
  172. data/lib/railwatch.rb +38 -1
  173. data/lib/tasks/railwatch_tasks.rake +128 -0
  174. data/public/railwatch/assets/CommitMono-Bold-D6h61ieg.woff2 +0 -0
  175. data/public/railwatch/assets/CommitMono-Regular-zr8w7Obm.woff2 +0 -0
  176. data/public/railwatch/assets/Roboto-Black-auA4GeOK.woff2 +0 -0
  177. data/public/railwatch/assets/Roboto-Bold-CJLnO8j1.woff2 +0 -0
  178. data/public/railwatch/assets/Roboto-Medium-Cm2bwKpj.woff2 +0 -0
  179. data/public/railwatch/assets/Roboto-Regular-Chaq1-PV.woff2 +0 -0
  180. data/public/railwatch/assets/app-layout-yh-sPWgK.js +1 -0
  181. data/public/railwatch/assets/app-wordmark-nbjkzxwQ.js +1 -0
  182. data/public/railwatch/assets/appearance-CDuRvQTB.js +1 -0
  183. data/public/railwatch/assets/application-C_kpBdnf.css +1 -0
  184. data/public/railwatch/assets/arrow-up-DVtOGdVA.js +1 -0
  185. data/public/railwatch/assets/auth-layout-TCwPpS1K.js +1 -0
  186. data/public/railwatch/assets/badge-Daw4Hvr8.js +1 -0
  187. data/public/railwatch/assets/braces-DhFbHPsz.js +1 -0
  188. data/public/railwatch/assets/card-BX_3HXcJ.js +1 -0
  189. data/public/railwatch/assets/chart-B14-N9g7.js +39 -0
  190. data/public/railwatch/assets/chart-hover-Vy52H4uD.js +1 -0
  191. data/public/railwatch/assets/chart-panel-Cb4S_ej_.js +1 -0
  192. data/public/railwatch/assets/checkbox-D3aRSsBj.js +1 -0
  193. data/public/railwatch/assets/code-KvW8k7Jr.js +1 -0
  194. data/public/railwatch/assets/copy-DaQMJWoT.js +1 -0
  195. data/public/railwatch/assets/copy-block-BKFGd11J.js +1 -0
  196. data/public/railwatch/assets/copy-id-Djks1fXB.js +1 -0
  197. data/public/railwatch/assets/cursor-load-more-BXV0f1D_.js +1 -0
  198. data/public/railwatch/assets/data-table-iv1bdF6u.js +1 -0
  199. data/public/railwatch/assets/edit-BZc_Iawe.js +1 -0
  200. data/public/railwatch/assets/edit-DMKUF8Zi.js +8 -0
  201. data/public/railwatch/assets/edit-__9yJlO3.js +1 -0
  202. data/public/railwatch/assets/empty-state-6j_0AaQQ.js +1 -0
  203. data/public/railwatch/assets/env-layout-DrT8rO6P.js +1 -0
  204. data/public/railwatch/assets/execution-path-CzgBUi5e.js +1 -0
  205. data/public/railwatch/assets/filter-bar-9SU5NrzX.js +1 -0
  206. data/public/railwatch/assets/flamegraph-qcekju8V.js +2 -0
  207. data/public/railwatch/assets/format-B9SDkrWj.js +1 -0
  208. data/public/railwatch/assets/frames-Cyu7KMxZ.js +1 -0
  209. data/public/railwatch/assets/google-sign-in-button-DsTSfmzY.js +1 -0
  210. data/public/railwatch/assets/index-1ol1-QWI.js +1 -0
  211. data/public/railwatch/assets/index-5jI4aFzC.js +1 -0
  212. data/public/railwatch/assets/index-9KTrVnrc.js +1 -0
  213. data/public/railwatch/assets/index-B0-8lcTp.js +1 -0
  214. data/public/railwatch/assets/index-B7jjfNfO.js +1 -0
  215. data/public/railwatch/assets/index-BBchRy0M.js +1 -0
  216. data/public/railwatch/assets/index-BRiq3SNR.js +1 -0
  217. data/public/railwatch/assets/index-BgKj9xhr.js +1 -0
  218. data/public/railwatch/assets/index-BkTZqqOu.js +1 -0
  219. data/public/railwatch/assets/index-BprKx8QO.js +1 -0
  220. data/public/railwatch/assets/index-C3jzvPs3.js +1 -0
  221. data/public/railwatch/assets/index-Cbs6gGyQ.js +1 -0
  222. data/public/railwatch/assets/index-CdRZ6AWF.js +1 -0
  223. data/public/railwatch/assets/index-CeYKnapu.js +1 -0
  224. data/public/railwatch/assets/index-Cmlwy1-V.js +1 -0
  225. data/public/railwatch/assets/index-Cwx6058d.js +1 -0
  226. data/public/railwatch/assets/index-D4CSdbHv.js +1 -0
  227. data/public/railwatch/assets/index-DEFMSkdG.js +1 -0
  228. data/public/railwatch/assets/index-DFiHEBSh.js +1 -0
  229. data/public/railwatch/assets/index-DL4vWdWJ.js +1 -0
  230. data/public/railwatch/assets/index-DU9F5b5d.js +1 -0
  231. data/public/railwatch/assets/index-DaXgPcGL.js +1 -0
  232. data/public/railwatch/assets/index-DbtaU-EE.js +1 -0
  233. data/public/railwatch/assets/index-DeOe83F4.js +1 -0
  234. data/public/railwatch/assets/index-DiucHN4B.js +1 -0
  235. data/public/railwatch/assets/index-DlnR_l9o.js +1 -0
  236. data/public/railwatch/assets/index-DlumCsWY.js +2 -0
  237. data/public/railwatch/assets/index-DmRd7aIG.js +1 -0
  238. data/public/railwatch/assets/index-DxSh2UpM.js +1 -0
  239. data/public/railwatch/assets/index-MIMGuFNt.js +1 -0
  240. data/public/railwatch/assets/index-OqI59zPb.js +1 -0
  241. data/public/railwatch/assets/index-P4rC7IlX.js +1 -0
  242. data/public/railwatch/assets/index-gpPOcFWq.js +1 -0
  243. data/public/railwatch/assets/index-oVkururr.js +1 -0
  244. data/public/railwatch/assets/index-p9puqVge.js +1 -0
  245. data/public/railwatch/assets/inertia-TViv6kNv.js +97 -0
  246. data/public/railwatch/assets/input-error-LxImUkxv.js +1 -0
  247. data/public/railwatch/assets/json-viewer-Ar4cjPDW.js +1 -0
  248. data/public/railwatch/assets/klass-CJ-J4INB.js +1 -0
  249. data/public/railwatch/assets/label-COUKWqE_.js +1 -0
  250. data/public/railwatch/assets/layout-DNSLAkw_.js +1 -0
  251. data/public/railwatch/assets/live-dot-ChfUtY3p.js +41 -0
  252. data/public/railwatch/assets/nav-CNnDqPlm.js +1 -0
  253. data/public/railwatch/assets/new-84S8ZJq9.js +1 -0
  254. data/public/railwatch/assets/new-Be55nmt9.js +1 -0
  255. data/public/railwatch/assets/new-Bi_xQiIb.js +1 -0
  256. data/public/railwatch/assets/new-BvCT8TMg.js +1 -0
  257. data/public/railwatch/assets/new-D05SajFR.js +1 -0
  258. data/public/railwatch/assets/new-D4uewYC8.js +1 -0
  259. data/public/railwatch/assets/onboarding-CYZi5Cqc.js +1 -0
  260. data/public/railwatch/assets/origin-identity-6q1-CBts.js +1 -0
  261. data/public/railwatch/assets/percentile-picker-gFZCXtdb.js +1 -0
  262. data/public/railwatch/assets/relative-time-IOOgl5n2.js +1 -0
  263. data/public/railwatch/assets/release-health-DC8oc7uw.js +1 -0
  264. data/public/railwatch/assets/route-Dv6LAWvT.js +1 -0
  265. data/public/railwatch/assets/segmented-h1VdDTqE.js +1 -0
  266. data/public/railwatch/assets/select-_AJsUa7X.js +1 -0
  267. data/public/railwatch/assets/separator-BwwTYtCF.js +1 -0
  268. data/public/railwatch/assets/series-chart-DaFPefku.js +1 -0
  269. data/public/railwatch/assets/show-B7NCgkEo.js +1 -0
  270. data/public/railwatch/assets/show-BKqyKjBK.js +1 -0
  271. data/public/railwatch/assets/show-BM6X2Mpo.js +1 -0
  272. data/public/railwatch/assets/show-BNw4tN5q.js +1 -0
  273. data/public/railwatch/assets/show-BO3bnG5h.js +1 -0
  274. data/public/railwatch/assets/show-BhrAVAEA.js +1 -0
  275. data/public/railwatch/assets/show-C4Ltf5i9.js +2 -0
  276. data/public/railwatch/assets/show-C8sHalnw.js +1 -0
  277. data/public/railwatch/assets/show-CeTL4B37.js +2 -0
  278. data/public/railwatch/assets/show-CpfgV1jP.js +1 -0
  279. data/public/railwatch/assets/show-DACku6AD.js +3 -0
  280. data/public/railwatch/assets/show-DIOSGcXV.js +6 -0
  281. data/public/railwatch/assets/show-DQp_1n-B.js +1 -0
  282. data/public/railwatch/assets/show-DVNz46RI.js +1 -0
  283. data/public/railwatch/assets/show-DYteoYWW.js +1 -0
  284. data/public/railwatch/assets/show-DgSIoRvA.js +1 -0
  285. data/public/railwatch/assets/show-JxFtB4eK.js +2 -0
  286. data/public/railwatch/assets/sort-header-DpFzXblu.js +1 -0
  287. data/public/railwatch/assets/source-link-B2183i2-.js +1 -0
  288. data/public/railwatch/assets/sparkline-cell-C3-5vFkP.js +1 -0
  289. data/public/railwatch/assets/stat-s4RpOS9w.js +1 -0
  290. data/public/railwatch/assets/status-badge-8jVV-LA4.js +1 -0
  291. data/public/railwatch/assets/tenant-path-G-6u9A-o.js +1 -0
  292. data/public/railwatch/assets/text-link-DfsiaCcP.js +1 -0
  293. data/public/railwatch/assets/textarea-Dye72uP7.js +1 -0
  294. data/public/railwatch/assets/timeline-CD7WHnbo.js +1 -0
  295. data/public/railwatch/assets/transition-B_AW8rMK.js +5 -0
  296. data/public/railwatch/assets/use-clipboard-ColgLyQ2.js +1 -0
  297. data/public/railwatch/icon.png +0 -0
  298. data/public/railwatch/icon.svg +5 -0
  299. data/public/railwatch/manifest.json +2171 -0
  300. data/public/railwatch/rails-vite.json +1 -0
  301. metadata +313 -4
@@ -0,0 +1,5 @@
1
+ import{r as i,aK as b,a3 as oe}from"./inertia-TViv6kNv.js";var Ae=Object.defineProperty,Ne=(e,t,n)=>t in e?Ae(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Q=(e,t,n)=>(Ne(e,typeof t!="symbol"?t+"":t,n),n);let ke=class{constructor(){Q(this,"current",this.detect()),Q(this,"handoffState","pending"),Q(this,"currentId",0)}set(t){this.current!==t&&(this.handoffState="pending",this.currentId=0,this.current=t)}reset(){this.set(this.detect())}nextId(){return++this.currentId}get isServer(){return this.current==="server"}get isClient(){return this.current==="client"}detect(){return typeof window>"u"||typeof document>"u"?"server":"client"}handoff(){this.handoffState==="pending"&&(this.handoffState="complete")}get isHandoffComplete(){return this.handoffState==="complete"}},D=new ke;function Pe(e){typeof queueMicrotask=="function"?queueMicrotask(e):Promise.resolve().then(e).catch(t=>setTimeout(()=>{throw t}))}function q(){let e=[],t={addEventListener(n,r,l,s){return n.addEventListener(r,l,s),t.add(()=>n.removeEventListener(r,l,s))},requestAnimationFrame(...n){let r=requestAnimationFrame(...n);return t.add(()=>cancelAnimationFrame(r))},nextFrame(...n){return t.requestAnimationFrame(()=>t.requestAnimationFrame(...n))},setTimeout(...n){let r=setTimeout(...n);return t.add(()=>clearTimeout(r))},microTask(...n){let r={current:!0};return Pe(()=>{r.current&&n[0]()}),t.add(()=>{r.current=!1})},style(n,r,l){let s=n.style.getPropertyValue(r);return Object.assign(n.style,{[r]:l}),this.add(()=>{Object.assign(n.style,{[r]:s})})},group(n){let r=q();return n(r),this.add(()=>r.dispose())},add(n){return e.includes(n)||e.push(n),()=>{let r=e.indexOf(n);if(r>=0)for(let l of e.splice(r,1))l()}},dispose(){for(let n of e.splice(0))n()}};return t}function de(){let[e]=i.useState(q);return i.useEffect(()=>()=>e.dispose(),[e]),e}let O=(e,t)=>{D.isServer?i.useEffect(e,t):i.useLayoutEffect(e,t)};function pe(e){let t=i.useRef(e);return O(()=>{t.current=e},[e]),t}let $=function(e){let t=pe(e);return b.useCallback((...n)=>t.current(...n),[t])};function X(...e){return Array.from(new Set(e.flatMap(t=>typeof t=="string"?t.split(" "):[]))).filter(Boolean).join(" ")}function K(e,t,...n){if(e in t){let l=t[e];return typeof l=="function"?l(...n):l}let r=new Error(`Tried to handle "${e}" but there is no handler defined. Only defined handlers are: ${Object.keys(t).map(l=>`"${l}"`).join(", ")}.`);throw Error.captureStackTrace&&Error.captureStackTrace(r,K),r}var me=(e=>(e[e.None=0]="None",e[e.RenderStrategy=1]="RenderStrategy",e[e.Static=2]="Static",e))(me||{}),T=(e=>(e[e.Unmount=0]="Unmount",e[e.Hidden=1]="Hidden",e))(T||{});function he(){let e=He();return i.useCallback(t=>xe({mergeRefs:e,...t}),[e])}function xe({ourProps:e,theirProps:t,slot:n,defaultTag:r,features:l,visible:s=!0,name:f,mergeRefs:u}){u=u??Le;let a=ve(t,e);if(s)return M(a,n,r,f,u);let p=l??0;if(p&2){let{static:o=!1,...h}=a;if(o)return M(h,n,r,f,u)}if(p&1){let{unmount:o=!0,...h}=a;return K(o?0:1,{0(){return null},1(){return M({...h,hidden:!0,style:{display:"none"}},n,r,f,u)}})}return M(a,n,r,f,u)}function M(e,t={},n,r,l){let{as:s=n,children:f,refName:u="ref",...a}=W(e,["unmount","static"]),p=e.ref!==void 0?{[u]:e.ref}:{},o=typeof f=="function"?f(t):f;o=ge(o),"className"in a&&a.className&&typeof a.className=="function"&&(a.className=a.className(t)),a["aria-labelledby"]&&a["aria-labelledby"]===a.id&&(a["aria-labelledby"]=void 0);let h={};if(t){let g=!1,d=[];for(let[c,v]of Object.entries(t))typeof v=="boolean"&&(g=!0),v===!0&&d.push(c.replace(/([A-Z])/g,m=>`-${m.toLowerCase()}`));if(g){h["data-headlessui-state"]=d.join(" ");for(let c of d)h[`data-${c}`]=""}}if(x(s)&&(Object.keys(R(a)).length>0||Object.keys(R(h)).length>0))if(!i.isValidElement(o)||Array.isArray(o)&&o.length>1||Ie(o)){if(Object.keys(R(a)).length>0)throw new Error(['Passing props on "Fragment"!',"",`The current component <${r} /> is rendering a "Fragment".`,"However we need to passthrough the following props:",Object.keys(R(a)).concat(Object.keys(R(h))).map(g=>` - ${g}`).join(`
2
+ `),"","You can apply a few solutions:",['Add an `as="..."` prop, to ensure that we render an actual element instead of a "Fragment".',"Render a single element as the child so that we can forward the props onto that element."].map(g=>` - ${g}`).join(`
3
+ `)].join(`
4
+ `))}else{let g=o.props,d=g?.className,c=typeof d=="function"?(...E)=>X(d(...E),a.className):X(d,a.className),v=c?{className:c}:{},m=ve(o.props,R(W(a,["ref"])));for(let E in h)E in m&&delete h[E];return i.cloneElement(o,Object.assign({},m,h,p,{ref:l(Ue(o),p.ref)},v))}return i.createElement(s,Object.assign({},W(a,["ref"]),!x(s)&&p,!x(s)&&h),o)}function He(){let e=i.useRef([]),t=i.useCallback(n=>{for(let r of e.current)r!=null&&(typeof r=="function"?r(n):r.current=n)},[]);return(...n)=>{if(!n.every(r=>r==null))return e.current=n,t}}function Le(...e){return e.every(t=>t==null)?void 0:t=>{for(let n of e)n!=null&&(typeof n=="function"?n(t):n.current=t)}}function ve(...e){if(e.length===0)return{};if(e.length===1)return e[0];let t={},n={};for(let r of e)for(let l in r)l.startsWith("on")&&typeof r[l]=="function"?(n[l]!=null||(n[l]=[]),n[l].push(r[l])):t[l]=r[l];if(t.disabled||t["aria-disabled"])for(let r in n)/^(on(?:Click|Pointer|Mouse|Key)(?:Down|Up|Press)?)$/.test(r)&&(n[r]=[l=>{var s;return(s=l?.preventDefault)==null?void 0:s.call(l)}]);for(let r in n)Object.assign(t,{[r](l,...s){let f=n[r];for(let u of f){if((l instanceof Event||l?.nativeEvent instanceof Event)&&l.defaultPrevented)return;u(l,...s)}}});return t}function ee(e){var t;return Object.assign(i.forwardRef(e),{displayName:(t=e.displayName)!=null?t:e.name})}function R(e){let t=Object.assign({},e);for(let n in t)t[n]===void 0&&delete t[n];return t}function W(e,t=[]){let n=Object.assign({},e);for(let r of t)r in n&&delete n[r];return n}function Ue(e){return b.version.split(".")[0]>="19"?e.props.ref:e.ref}function ge(e){if(e!=null&&e.$$typeof===Symbol.for("react.lazy")){let t=e._payload;if(t!=null&&t.status==="fulfilled")return ge(t.value)}return e}function x(e){return e===i.Fragment||e===Symbol.for("react.fragment")}function Ie(e){return x(e.type)}let Me=Symbol();function ye(...e){let t=i.useRef(e);i.useEffect(()=>{t.current=e},[e]);let n=$(r=>{for(let l of t.current)l!=null&&(typeof l=="function"?l(r):l.current=r)});return e.every(r=>r==null||r?.[Me])?void 0:n}function De(e=0){let[t,n]=i.useState(e),r=i.useCallback(a=>n(a),[]),l=i.useCallback(a=>n(p=>p|a),[]),s=i.useCallback(a=>(t&a)===a,[t]),f=i.useCallback(a=>n(p=>p&~a),[]),u=i.useCallback(a=>n(p=>p^a),[]);return{flags:t,setFlag:r,addFlag:l,hasFlag:s,removeFlag:f,toggleFlag:u}}var qe={},fe,ce;typeof process<"u"&&typeof globalThis<"u"&&typeof Element<"u"&&((fe=process==null?void 0:qe)==null?void 0:fe.NODE_ENV)==="test"&&typeof((ce=Element?.prototype)==null?void 0:ce.getAnimations)>"u"&&(Element.prototype.getAnimations=function(){return console.warn(["Headless UI has polyfilled `Element.prototype.getAnimations` for your tests.","Please install a proper polyfill e.g. `jsdom-testing-mocks`, to silence these warnings.","","Example usage:","```js","import { mockAnimationsApi } from 'jsdom-testing-mocks'","mockAnimationsApi()","```"].join(`
5
+ `)),[]});var Ke=(e=>(e[e.None=0]="None",e[e.Closed=1]="Closed",e[e.Enter=2]="Enter",e[e.Leave=4]="Leave",e))(Ke||{});function Ve(e){let t={};for(let n in e)e[n]===!0&&(t[`data-${n}`]="");return t}function Ye(e,t,n,r){let[l,s]=i.useState(n),{hasFlag:f,addFlag:u,removeFlag:a}=De(e&&l?3:0),p=i.useRef(!1),o=i.useRef(!1),h=de();return O(()=>{var g;if(e){if(n&&s(!0),!t){n&&u(3);return}return(g=r?.start)==null||g.call(r,n),_e(t,{inFlight:p,prepare(){o.current?o.current=!1:o.current=p.current,p.current=!0,!o.current&&(n?(u(3),a(4)):(u(4),a(2)))},run(){o.current?n?(a(3),u(4)):(a(4),u(3)):n?a(1):u(1)},done(){var d;o.current&&Ge(t)||(p.current=!1,a(7),n||s(!1),(d=r?.end)==null||d.call(r,n))}})}},[e,n,t,h]),e?[l,{closed:f(1),enter:f(2),leave:f(4),transition:f(2)||f(4)}]:[n,{closed:void 0,enter:void 0,leave:void 0,transition:void 0}]}function _e(e,{prepare:t,run:n,done:r,inFlight:l}){let s=q();return Be(e,{prepare:t,inFlight:l}),s.nextFrame(()=>{n(),s.requestAnimationFrame(()=>{s.add(ze(e,r))})}),s.dispose}function ze(e,t){var n,r;let l=q();if(!e)return l.dispose;let s=!1;l.add(()=>{s=!0});let f=(r=(n=e.getAnimations)==null?void 0:n.call(e).filter(u=>u instanceof CSSTransition))!=null?r:[];return f.length===0?(t(),l.dispose):(Promise.allSettled(f.map(u=>u.finished)).then(()=>{s||t()}),l.dispose)}function Be(e,{inFlight:t,prepare:n}){if(t!=null&&t.current){n();return}let r=e.style.transition;e.style.transition="none",n(),e.offsetHeight,e.style.transition=r}function Ge(e){var t,n;return((n=(t=e.getAnimations)==null?void 0:t.call(e))!=null?n:[]).some(r=>r instanceof CSSTransition&&r.playState!=="finished")}let te=i.createContext(null);te.displayName="OpenClosedContext";var A=(e=>(e[e.Open=1]="Open",e[e.Closed=2]="Closed",e[e.Closing=4]="Closing",e[e.Opening=8]="Opening",e))(A||{});function be(){return i.useContext(te)}function Ze({value:e,children:t}){return b.createElement(te.Provider,{value:e},t)}function Qe(){let e=typeof document>"u";return"useSyncExternalStore"in oe?(t=>t.useSyncExternalStore)(oe)(()=>()=>{},()=>!1,()=>!e):!1}function Ee(){let e=Qe(),[t,n]=i.useState(D.isHandoffComplete);return t&&D.isHandoffComplete===!1&&n(!1),i.useEffect(()=>{t!==!0&&n(!0)},[t]),i.useEffect(()=>D.handoff(),[]),e?!1:t}function We(){let e=i.useRef(!1);return O(()=>(e.current=!0,()=>{e.current=!1}),[]),e}function Ce(e){var t;return!!(e.enter||e.enterFrom||e.enterTo||e.leave||e.leaveFrom||e.leaveTo)||!x((t=e.as)!=null?t:we)||b.Children.count(e.children)===1}let V=i.createContext(null);V.displayName="TransitionContext";var Xe=(e=>(e.Visible="visible",e.Hidden="hidden",e))(Xe||{});function Je(){let e=i.useContext(V);if(e===null)throw new Error("A <Transition.Child /> is used but it is missing a parent <Transition /> or <Transition.Root />.");return e}function et(){let e=i.useContext(Y);if(e===null)throw new Error("A <Transition.Child /> is used but it is missing a parent <Transition /> or <Transition.Root />.");return e}let Y=i.createContext(null);Y.displayName="NestingContext";function _(e){return"children"in e?_(e.children):e.current.filter(({el:t})=>t.current!==null).filter(({state:t})=>t==="visible").length>0}function Se(e,t){let n=pe(e),r=i.useRef([]),l=We(),s=de(),f=$((d,c=T.Hidden)=>{let v=r.current.findIndex(({el:m})=>m===d);v!==-1&&(K(c,{[T.Unmount](){r.current.splice(v,1)},[T.Hidden](){r.current[v].state="hidden"}}),s.microTask(()=>{var m;!_(r)&&l.current&&((m=n.current)==null||m.call(n))}))}),u=$(d=>{let c=r.current.find(({el:v})=>v===d);return c?c.state!=="visible"&&(c.state="visible"):r.current.push({el:d,state:"visible"}),()=>f(d,T.Unmount)}),a=i.useRef([]),p=i.useRef(Promise.resolve()),o=i.useRef({enter:[],leave:[]}),h=$((d,c,v)=>{a.current.splice(0),t&&(t.chains.current[c]=t.chains.current[c].filter(([m])=>m!==d)),t?.chains.current[c].push([d,new Promise(m=>{a.current.push(m)})]),t?.chains.current[c].push([d,new Promise(m=>{Promise.all(o.current[c].map(([E,N])=>N)).then(()=>m())})]),c==="enter"?p.current=p.current.then(()=>t?.wait.current).then(()=>v(c)):v(c)}),g=$((d,c,v)=>{Promise.all(o.current[c].splice(0).map(([m,E])=>E)).then(()=>{var m;(m=a.current.shift())==null||m()}).then(()=>v(c))});return i.useMemo(()=>({children:r,register:u,unregister:f,onStart:h,onStop:g,wait:p,chains:o}),[u,f,r,h,g,o,p])}let we=i.Fragment,$e=me.RenderStrategy;function tt(e,t){var n,r;let{transition:l=!0,beforeEnter:s,afterEnter:f,beforeLeave:u,afterLeave:a,enter:p,enterFrom:o,enterTo:h,entered:g,leave:d,leaveFrom:c,leaveTo:v,...m}=e,[E,N]=i.useState(null),y=i.useRef(null),F=Ce(e),j=ye(...F?[y,t,N]:t===null?[]:[t]),ne=(n=m.unmount)==null||n?T.Unmount:T.Hidden,{show:S,appear:re,initial:le}=Je(),[w,z]=i.useState(S?"visible":"hidden"),ie=et(),{register:H,unregister:L}=ie;O(()=>H(y),[H,y]),O(()=>{if(ne===T.Hidden&&y.current){if(S&&w!=="visible"){z("visible");return}return K(w,{hidden:()=>L(y),visible:()=>H(y)})}},[w,y,H,L,S,ne]);let B=Ee();O(()=>{if(F&&B&&w==="visible"&&y.current===null)throw new Error("Did you forget to passthrough the `ref` to the actual DOM node?")},[y,w,B,F]);let Te=le&&!re,ae=re&&S&&le,G=i.useRef(!1),U=Se(()=>{G.current||(z("hidden"),L(y))},ie),se=$(Z=>{G.current=!0;let I=Z?"enter":"leave";U.onStart(y,I,P=>{P==="enter"?s?.():P==="leave"&&u?.()})}),ue=$(Z=>{let I=Z?"enter":"leave";G.current=!1,U.onStop(y,I,P=>{P==="enter"?f?.():P==="leave"&&a?.()}),I==="leave"&&!_(U)&&(z("hidden"),L(y))});i.useEffect(()=>{F&&l||(se(S),ue(S))},[S,F,l]);let Oe=!(!l||!F||!B||Te),[,C]=Ye(Oe,E,S,{start:se,end:ue}),je=R({ref:j,className:((r=X(m.className,ae&&p,ae&&o,C.enter&&p,C.enter&&C.closed&&o,C.enter&&!C.closed&&h,C.leave&&d,C.leave&&!C.closed&&c,C.leave&&C.closed&&v,!C.transition&&S&&g))==null?void 0:r.trim())||void 0,...Ve(C)}),k=0;w==="visible"&&(k|=A.Open),w==="hidden"&&(k|=A.Closed),S&&w==="hidden"&&(k|=A.Opening),!S&&w==="visible"&&(k|=A.Closing);let Re=he();return b.createElement(Y.Provider,{value:U},b.createElement(Ze,{value:k},Re({ourProps:je,theirProps:m,defaultTag:we,features:$e,visible:w==="visible",name:"Transition.Child"})))}function nt(e,t){let{show:n,appear:r=!1,unmount:l=!0,...s}=e,f=i.useRef(null),u=Ce(e),a=ye(...u?[f,t]:t===null?[]:[t]);Ee();let p=be();if(n===void 0&&p!==null&&(n=(p&A.Open)===A.Open),n===void 0)throw new Error("A <Transition /> is used but it is missing a `show={true | false}` prop.");let[o,h]=i.useState(n?"visible":"hidden"),g=Se(()=>{n||h("hidden")}),[d,c]=i.useState(!0),v=i.useRef([n]);O(()=>{d!==!1&&v.current[v.current.length-1]!==n&&(v.current.push(n),c(!1))},[v,n]);let m=i.useMemo(()=>({show:n,appear:r,initial:d}),[n,r,d]);O(()=>{n?h("visible"):!_(g)&&f.current!==null&&h("hidden")},[n,g]);let E={unmount:l},N=$(()=>{var j;d&&c(!1),(j=e.beforeEnter)==null||j.call(e)}),y=$(()=>{var j;d&&c(!1),(j=e.beforeLeave)==null||j.call(e)}),F=he();return b.createElement(Y.Provider,{value:g},b.createElement(V.Provider,{value:m},F({ourProps:{...E,as:i.Fragment,children:b.createElement(Fe,{ref:a,...E,...s,beforeEnter:N,beforeLeave:y})},theirProps:{},defaultTag:i.Fragment,features:$e,visible:o==="visible",name:"Transition"})))}function rt(e,t){let n=i.useContext(V)!==null,r=be()!==null;return b.createElement(b.Fragment,null,!n&&r?b.createElement(J,{ref:t,...e}):b.createElement(Fe,{ref:t,...e}))}let J=ee(nt),Fe=ee(tt),lt=ee(rt),st=Object.assign(J,{Child:lt,Root:J});export{st as K};
@@ -0,0 +1 @@
1
+ import{B as i,c as l,r as p}from"./inertia-TViv6kNv.js";const u=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]],f=i("copy",u);function x(){const e=l.c(3),[o,c]=p.useState(null);let t;e[0]===Symbol.for("react.memo_cache_sentinel")?(t=async a=>{if(!navigator?.clipboard)return console.warn("Clipboard not supported"),!1;try{return await navigator.clipboard.writeText(a),c(a),!0}catch(s){return console.warn("Copy failed",s),c(null),!1}},e[0]=t):t=e[0];const n=t;let r;return e[1]!==o?(r=[o,n],e[1]=o,e[2]=r):r=e[2],r}export{f as C,x as u};
Binary file
@@ -0,0 +1,5 @@
1
+ <svg width="512" height="512" viewBox="0 0 1254 1254" xmlns="http://www.w3.org/2000/svg">
2
+ <rect width="1254" height="1254" rx="274" fill="#020E24"/>
3
+ <path d="M 236 324.989 L 236 404.978 496.750 405.239 L 757.500 405.500 765.665 408.577 C 777.060 412.870, 784.110 417.355, 792.381 425.574 C 833.878 466.807, 812.048 538.520, 752.263 557.363 C 737.593 561.987, 732.018 562.115, 560.250 561.798 C 471.562 561.634, 399 561.557, 399 561.626 C 399 561.695, 406.313 568.648, 415.250 577.077 C 436.108 596.747, 508.719 665.823, 525 681.483 C 612.468 765.614, 693.318 845.033, 770.500 922.639 L 840.500 993.023 951.250 993.011 C 1012.163 993.005, 1062 992.732, 1062 992.404 C 1062 992.076, 1056.942 986.113, 1050.761 979.154 C 1039.889 966.913, 1035.649 962.220, 1005.428 928.979 C 997.688 920.465, 984.624 906.075, 976.396 897 C 933.021 849.161, 888.142 799.872, 868.953 779 C 857.071 766.075, 841.562 749.200, 834.490 741.500 C 827.417 733.800, 814.456 719.721, 805.686 710.213 C 796.916 700.705, 789.994 692.673, 790.303 692.363 C 790.613 692.054, 795.578 690.983, 801.338 689.983 C 895.506 673.637, 967.601 596.363, 980.578 497.866 C 982.637 482.242, 982.086 446.289, 979.576 432.500 C 960.757 329.105, 884.022 255.740, 784.576 246.063 C 777.168 245.342, 687.144 245, 504.826 245 L 236 245 236 324.989" fill="#fff"/>
4
+ <path d="M 243.550 507.838 C 244.072 508.299, 247.425 510.859, 251 513.526 C 294.327 545.849, 358.703 617.861, 503.521 796 C 560.192 865.711, 593.994 908.954, 627.414 954.500 L 642.090 974.500 689.045 975 C 714.871 975.275, 736 975.275, 735.999 975 C 735.994 973.773, 698.564 930.428, 663.901 891.507 C 571.946 788.257, 436.131 649.261, 367.500 588.162 C 325.285 550.581, 286.033 524.106, 252.457 510.567 C 243.188 506.829, 241.991 506.462, 243.550 507.838 M 236 520 C 236 521.800, 236.667 522, 242.655 522 C 249.247 522, 249.293 521.981, 247.500 520 C 246.164 518.524, 244.420 518, 240.845 518 C 236.667 518, 236 518.275, 236 520 M 236 532.500 L 236 537 249.067 537 L 262.134 537 258.446 532.500 L 254.759 528 245.380 528 L 236 528 236 532.500 M 236 553.500 L 236 562 258.500 562 C 270.875 562, 280.991 561.663, 280.981 561.250 C 280.970 560.837, 278.237 557.013, 274.908 552.750 L 268.854 545 252.427 545 L 236 545 236 553.500 M 235.909 585 C 235.859 589.950, 235.777 595.462, 235.727 597.250 L 235.636 600.500 273.840 600.762 L 312.044 601.024 302.772 588.569 L 293.500 576.114 264.750 576.057 L 236 576 235.909 585 M 235.570 627.477 C 235.212 629.389, 234.979 637.714, 235.053 645.977 L 235.188 661 295.571 661 L 355.955 661 342.326 642.500 L 328.698 624 282.460 624 L 236.223 624 235.570 627.477 M 236 717.750 L 236 741.500 324.591 741.326 C 373.315 741.230, 413.343 740.990, 413.541 740.792 C 413.739 740.594, 406.184 729.985, 396.752 717.216 L 379.603 694 307.802 694 L 236 694 236 717.750 M 236.235 813.250 L 236.500 842.500 362.358 842.754 C 472.189 842.975, 488.146 842.822, 487.658 841.552 C 487.351 840.751, 477.621 827.475, 466.036 812.048 L 444.973 784 340.471 784 L 235.970 784 236.235 813.250 M 235.683 898.750 C 234.872 900.147, 235.511 973.844, 236.341 974.675 C 237.491 975.825, 392.185 976.287, 495.665 975.450 L 581.829 974.753 578.959 970.126 C 575.681 964.845, 552.884 930.825, 539.500 911.243 L 530.500 898.075 383.309 898.038 C 302.354 898.017, 235.922 898.337, 235.683 898.750" fill="#FFC22B"/>
5
+ </svg>