@eventmodelers/node-kit 0.0.2

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 (546) hide show
  1. package/README.md +66 -0
  2. package/package.json +36 -0
  3. package/src/cli.js +176 -0
  4. package/templates/.claude/skills/connect/SKILL.md +169 -0
  5. package/templates/.claude/skills/load-slice/SKILL.md +86 -0
  6. package/templates/realtime-agent/node_modules/.package-lock.json +107 -0
  7. package/templates/realtime-agent/node_modules/@supabase/auth-js/LICENSE +21 -0
  8. package/templates/realtime-agent/node_modules/@supabase/auth-js/README.md +190 -0
  9. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/AuthAdminApi.d.ts +4 -0
  10. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/AuthAdminApi.d.ts.map +1 -0
  11. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/AuthAdminApi.js +7 -0
  12. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/AuthAdminApi.js.map +1 -0
  13. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/AuthClient.d.ts +4 -0
  14. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/AuthClient.d.ts.map +1 -0
  15. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/AuthClient.js +7 -0
  16. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/AuthClient.js.map +1 -0
  17. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/GoTrueAdminApi.d.ts +716 -0
  18. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/GoTrueAdminApi.d.ts.map +1 -0
  19. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/GoTrueAdminApi.js +1108 -0
  20. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/GoTrueAdminApi.js.map +1 -0
  21. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/GoTrueClient.d.ts +2473 -0
  22. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/GoTrueClient.d.ts.map +1 -0
  23. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/GoTrueClient.js +5217 -0
  24. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/GoTrueClient.js.map +1 -0
  25. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/index.d.ts +9 -0
  26. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/index.d.ts.map +1 -0
  27. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/index.js +20 -0
  28. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/index.js.map +1 -0
  29. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/base64url.d.ts +76 -0
  30. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/base64url.d.ts.map +1 -0
  31. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/base64url.js +269 -0
  32. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/base64url.js.map +1 -0
  33. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/constants.d.ts +26 -0
  34. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/constants.d.ts.map +1 -0
  35. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/constants.js +31 -0
  36. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/constants.js.map +1 -0
  37. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/error-codes.d.ts +7 -0
  38. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/error-codes.d.ts.map +1 -0
  39. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/error-codes.js +3 -0
  40. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/error-codes.js.map +1 -0
  41. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/errors.d.ts +258 -0
  42. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/errors.d.ts.map +1 -0
  43. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/errors.js +290 -0
  44. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/errors.js.map +1 -0
  45. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/fetch.d.ts +54 -0
  46. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/fetch.d.ts.map +1 -0
  47. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/fetch.js +200 -0
  48. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/fetch.js.map +1 -0
  49. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/helpers.d.ts +94 -0
  50. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/helpers.d.ts.map +1 -0
  51. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/helpers.js +406 -0
  52. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/helpers.js.map +1 -0
  53. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/local-storage.d.ts +9 -0
  54. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/local-storage.d.ts.map +1 -0
  55. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/local-storage.js +21 -0
  56. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/local-storage.js.map +1 -0
  57. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/locks.d.ts +107 -0
  58. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/locks.d.ts.map +1 -0
  59. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/locks.js +349 -0
  60. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/locks.js.map +1 -0
  61. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/polyfills.d.ts +5 -0
  62. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/polyfills.d.ts.map +1 -0
  63. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/polyfills.js +29 -0
  64. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/polyfills.js.map +1 -0
  65. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/types.d.ts +2498 -0
  66. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/types.d.ts.map +1 -0
  67. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/types.js +23 -0
  68. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/types.js.map +1 -0
  69. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/version.d.ts +2 -0
  70. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/version.d.ts.map +1 -0
  71. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/version.js +11 -0
  72. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/version.js.map +1 -0
  73. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/web3/ethereum.d.ts +96 -0
  74. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/web3/ethereum.d.ts.map +1 -0
  75. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/web3/ethereum.js +66 -0
  76. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/web3/ethereum.js.map +1 -0
  77. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/web3/solana.d.ts +160 -0
  78. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/web3/solana.d.ts.map +1 -0
  79. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/web3/solana.js +4 -0
  80. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/web3/solana.js.map +1 -0
  81. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/webauthn.d.ts +284 -0
  82. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/webauthn.d.ts.map +1 -0
  83. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/webauthn.dom.d.ts +583 -0
  84. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/webauthn.dom.d.ts.map +1 -0
  85. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/webauthn.dom.js +4 -0
  86. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/webauthn.dom.js.map +1 -0
  87. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/webauthn.errors.d.ts +85 -0
  88. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/webauthn.errors.d.ts.map +1 -0
  89. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/webauthn.errors.js +272 -0
  90. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/webauthn.errors.js.map +1 -0
  91. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/webauthn.js +707 -0
  92. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/main/lib/webauthn.js.map +1 -0
  93. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/AuthAdminApi.d.ts +4 -0
  94. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/AuthAdminApi.d.ts.map +1 -0
  95. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/AuthAdminApi.js +4 -0
  96. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/AuthAdminApi.js.map +1 -0
  97. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/AuthClient.d.ts +4 -0
  98. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/AuthClient.d.ts.map +1 -0
  99. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/AuthClient.js +4 -0
  100. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/AuthClient.js.map +1 -0
  101. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/GoTrueAdminApi.d.ts +716 -0
  102. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/GoTrueAdminApi.d.ts.map +1 -0
  103. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/GoTrueAdminApi.js +1105 -0
  104. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/GoTrueAdminApi.js.map +1 -0
  105. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/GoTrueClient.d.ts +2473 -0
  106. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/GoTrueClient.d.ts.map +1 -0
  107. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/GoTrueClient.js +5214 -0
  108. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/GoTrueClient.js.map +1 -0
  109. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/index.d.ts +9 -0
  110. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/index.d.ts.map +1 -0
  111. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/index.js +9 -0
  112. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/index.js.map +1 -0
  113. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/base64url.d.ts +76 -0
  114. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/base64url.d.ts.map +1 -0
  115. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/base64url.js +257 -0
  116. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/base64url.js.map +1 -0
  117. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/constants.d.ts +26 -0
  118. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/constants.d.ts.map +1 -0
  119. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/constants.js +28 -0
  120. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/constants.js.map +1 -0
  121. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/error-codes.d.ts +7 -0
  122. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/error-codes.d.ts.map +1 -0
  123. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/error-codes.js +2 -0
  124. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/error-codes.js.map +1 -0
  125. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/errors.d.ts +258 -0
  126. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/errors.d.ts.map +1 -0
  127. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/errors.js +267 -0
  128. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/errors.js.map +1 -0
  129. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/fetch.d.ts +54 -0
  130. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/fetch.d.ts.map +1 -0
  131. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/fetch.js +190 -0
  132. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/fetch.js.map +1 -0
  133. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/helpers.d.ts +94 -0
  134. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/helpers.d.ts.map +1 -0
  135. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/helpers.js +378 -0
  136. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/helpers.js.map +1 -0
  137. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/local-storage.d.ts +9 -0
  138. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/local-storage.d.ts.map +1 -0
  139. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/local-storage.js +18 -0
  140. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/local-storage.js.map +1 -0
  141. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/locks.d.ts +107 -0
  142. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/locks.d.ts.map +1 -0
  143. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/locks.js +341 -0
  144. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/locks.js.map +1 -0
  145. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/polyfills.d.ts +5 -0
  146. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/polyfills.d.ts.map +1 -0
  147. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/polyfills.js +26 -0
  148. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/polyfills.js.map +1 -0
  149. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/types.d.ts +2498 -0
  150. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/types.d.ts.map +1 -0
  151. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/types.js +20 -0
  152. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/types.js.map +1 -0
  153. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/version.d.ts +2 -0
  154. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/version.d.ts.map +1 -0
  155. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/version.js +8 -0
  156. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/version.js.map +1 -0
  157. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/web3/ethereum.d.ts +96 -0
  158. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/web3/ethereum.d.ts.map +1 -0
  159. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/web3/ethereum.js +60 -0
  160. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/web3/ethereum.js.map +1 -0
  161. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/web3/solana.d.ts +160 -0
  162. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/web3/solana.d.ts.map +1 -0
  163. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/web3/solana.js +3 -0
  164. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/web3/solana.js.map +1 -0
  165. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/webauthn.d.ts +284 -0
  166. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/webauthn.d.ts.map +1 -0
  167. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/webauthn.dom.d.ts +583 -0
  168. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/webauthn.dom.d.ts.map +1 -0
  169. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/webauthn.dom.js +3 -0
  170. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/webauthn.dom.js.map +1 -0
  171. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/webauthn.errors.d.ts +85 -0
  172. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/webauthn.errors.d.ts.map +1 -0
  173. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/webauthn.errors.js +264 -0
  174. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/webauthn.errors.js.map +1 -0
  175. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/webauthn.js +689 -0
  176. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/module/lib/webauthn.js.map +1 -0
  177. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/tsconfig.module.tsbuildinfo +1 -0
  178. package/templates/realtime-agent/node_modules/@supabase/auth-js/dist/tsconfig.tsbuildinfo +1 -0
  179. package/templates/realtime-agent/node_modules/@supabase/auth-js/package.json +44 -0
  180. package/templates/realtime-agent/node_modules/@supabase/auth-js/src/AuthAdminApi.ts +5 -0
  181. package/templates/realtime-agent/node_modules/@supabase/auth-js/src/AuthClient.ts +5 -0
  182. package/templates/realtime-agent/node_modules/@supabase/auth-js/src/GoTrueAdminApi.ts +1267 -0
  183. package/templates/realtime-agent/node_modules/@supabase/auth-js/src/GoTrueClient.ts +6360 -0
  184. package/templates/realtime-agent/node_modules/@supabase/auth-js/src/index.ts +13 -0
  185. package/templates/realtime-agent/node_modules/@supabase/auth-js/src/lib/base64url.ts +308 -0
  186. package/templates/realtime-agent/node_modules/@supabase/auth-js/src/lib/constants.ts +34 -0
  187. package/templates/realtime-agent/node_modules/@supabase/auth-js/src/lib/error-codes.ts +90 -0
  188. package/templates/realtime-agent/node_modules/@supabase/auth-js/src/lib/errors.ts +359 -0
  189. package/templates/realtime-agent/node_modules/@supabase/auth-js/src/lib/fetch.ts +320 -0
  190. package/templates/realtime-agent/node_modules/@supabase/auth-js/src/lib/helpers.ts +476 -0
  191. package/templates/realtime-agent/node_modules/@supabase/auth-js/src/lib/local-storage.ts +21 -0
  192. package/templates/realtime-agent/node_modules/@supabase/auth-js/src/lib/locks.ts +420 -0
  193. package/templates/realtime-agent/node_modules/@supabase/auth-js/src/lib/polyfills.ts +23 -0
  194. package/templates/realtime-agent/node_modules/@supabase/auth-js/src/lib/types.ts +2917 -0
  195. package/templates/realtime-agent/node_modules/@supabase/auth-js/src/lib/version.ts +7 -0
  196. package/templates/realtime-agent/node_modules/@supabase/auth-js/src/lib/web3/ethereum.ts +184 -0
  197. package/templates/realtime-agent/node_modules/@supabase/auth-js/src/lib/web3/solana.ts +186 -0
  198. package/templates/realtime-agent/node_modules/@supabase/auth-js/src/lib/webauthn.dom.ts +636 -0
  199. package/templates/realtime-agent/node_modules/@supabase/auth-js/src/lib/webauthn.errors.ts +329 -0
  200. package/templates/realtime-agent/node_modules/@supabase/auth-js/src/lib/webauthn.ts +946 -0
  201. package/templates/realtime-agent/node_modules/@supabase/functions-js/README.md +134 -0
  202. package/templates/realtime-agent/node_modules/@supabase/functions-js/dist/main/FunctionsClient.d.ts +177 -0
  203. package/templates/realtime-agent/node_modules/@supabase/functions-js/dist/main/FunctionsClient.d.ts.map +1 -0
  204. package/templates/realtime-agent/node_modules/@supabase/functions-js/dist/main/FunctionsClient.js +309 -0
  205. package/templates/realtime-agent/node_modules/@supabase/functions-js/dist/main/FunctionsClient.js.map +1 -0
  206. package/templates/realtime-agent/node_modules/@supabase/functions-js/dist/main/helper.d.ts +3 -0
  207. package/templates/realtime-agent/node_modules/@supabase/functions-js/dist/main/helper.d.ts.map +1 -0
  208. package/templates/realtime-agent/node_modules/@supabase/functions-js/dist/main/helper.js +11 -0
  209. package/templates/realtime-agent/node_modules/@supabase/functions-js/dist/main/helper.js.map +1 -0
  210. package/templates/realtime-agent/node_modules/@supabase/functions-js/dist/main/index.d.ts +3 -0
  211. package/templates/realtime-agent/node_modules/@supabase/functions-js/dist/main/index.d.ts.map +1 -0
  212. package/templates/realtime-agent/node_modules/@supabase/functions-js/dist/main/index.js +12 -0
  213. package/templates/realtime-agent/node_modules/@supabase/functions-js/dist/main/index.js.map +1 -0
  214. package/templates/realtime-agent/node_modules/@supabase/functions-js/dist/main/types.d.ts +122 -0
  215. package/templates/realtime-agent/node_modules/@supabase/functions-js/dist/main/types.d.ts.map +1 -0
  216. package/templates/realtime-agent/node_modules/@supabase/functions-js/dist/main/types.js +98 -0
  217. package/templates/realtime-agent/node_modules/@supabase/functions-js/dist/main/types.js.map +1 -0
  218. package/templates/realtime-agent/node_modules/@supabase/functions-js/dist/main/version.d.ts +2 -0
  219. package/templates/realtime-agent/node_modules/@supabase/functions-js/dist/main/version.d.ts.map +1 -0
  220. package/templates/realtime-agent/node_modules/@supabase/functions-js/dist/main/version.js +11 -0
  221. package/templates/realtime-agent/node_modules/@supabase/functions-js/dist/main/version.js.map +1 -0
  222. package/templates/realtime-agent/node_modules/@supabase/functions-js/dist/module/FunctionsClient.d.ts +177 -0
  223. package/templates/realtime-agent/node_modules/@supabase/functions-js/dist/module/FunctionsClient.d.ts.map +1 -0
  224. package/templates/realtime-agent/node_modules/@supabase/functions-js/dist/module/FunctionsClient.js +305 -0
  225. package/templates/realtime-agent/node_modules/@supabase/functions-js/dist/module/FunctionsClient.js.map +1 -0
  226. package/templates/realtime-agent/node_modules/@supabase/functions-js/dist/module/helper.d.ts +3 -0
  227. package/templates/realtime-agent/node_modules/@supabase/functions-js/dist/module/helper.d.ts.map +1 -0
  228. package/templates/realtime-agent/node_modules/@supabase/functions-js/dist/module/helper.js +7 -0
  229. package/templates/realtime-agent/node_modules/@supabase/functions-js/dist/module/helper.js.map +1 -0
  230. package/templates/realtime-agent/node_modules/@supabase/functions-js/dist/module/index.d.ts +3 -0
  231. package/templates/realtime-agent/node_modules/@supabase/functions-js/dist/module/index.d.ts.map +1 -0
  232. package/templates/realtime-agent/node_modules/@supabase/functions-js/dist/module/index.js +3 -0
  233. package/templates/realtime-agent/node_modules/@supabase/functions-js/dist/module/index.js.map +1 -0
  234. package/templates/realtime-agent/node_modules/@supabase/functions-js/dist/module/types.d.ts +122 -0
  235. package/templates/realtime-agent/node_modules/@supabase/functions-js/dist/module/types.d.ts.map +1 -0
  236. package/templates/realtime-agent/node_modules/@supabase/functions-js/dist/module/types.js +91 -0
  237. package/templates/realtime-agent/node_modules/@supabase/functions-js/dist/module/types.js.map +1 -0
  238. package/templates/realtime-agent/node_modules/@supabase/functions-js/dist/module/version.d.ts +2 -0
  239. package/templates/realtime-agent/node_modules/@supabase/functions-js/dist/module/version.d.ts.map +1 -0
  240. package/templates/realtime-agent/node_modules/@supabase/functions-js/dist/module/version.js +8 -0
  241. package/templates/realtime-agent/node_modules/@supabase/functions-js/dist/module/version.js.map +1 -0
  242. package/templates/realtime-agent/node_modules/@supabase/functions-js/dist/tsconfig.module.tsbuildinfo +1 -0
  243. package/templates/realtime-agent/node_modules/@supabase/functions-js/dist/tsconfig.tsbuildinfo +1 -0
  244. package/templates/realtime-agent/node_modules/@supabase/functions-js/package.json +52 -0
  245. package/templates/realtime-agent/node_modules/@supabase/functions-js/src/FunctionsClient.ts +335 -0
  246. package/templates/realtime-agent/node_modules/@supabase/functions-js/src/edge-runtime.d.ts +214 -0
  247. package/templates/realtime-agent/node_modules/@supabase/functions-js/src/helper.ts +8 -0
  248. package/templates/realtime-agent/node_modules/@supabase/functions-js/src/index.ts +10 -0
  249. package/templates/realtime-agent/node_modules/@supabase/functions-js/src/types.ts +146 -0
  250. package/templates/realtime-agent/node_modules/@supabase/functions-js/src/version.ts +7 -0
  251. package/templates/realtime-agent/node_modules/@supabase/phoenix/LICENSE.md +22 -0
  252. package/templates/realtime-agent/node_modules/@supabase/phoenix/README.md +121 -0
  253. package/templates/realtime-agent/node_modules/@supabase/phoenix/assets/js/phoenix/ajax.js +116 -0
  254. package/templates/realtime-agent/node_modules/@supabase/phoenix/assets/js/phoenix/channel.js +331 -0
  255. package/templates/realtime-agent/node_modules/@supabase/phoenix/assets/js/phoenix/constants.js +35 -0
  256. package/templates/realtime-agent/node_modules/@supabase/phoenix/assets/js/phoenix/index.js +212 -0
  257. package/templates/realtime-agent/node_modules/@supabase/phoenix/assets/js/phoenix/longpoll.js +192 -0
  258. package/templates/realtime-agent/node_modules/@supabase/phoenix/assets/js/phoenix/presence.js +208 -0
  259. package/templates/realtime-agent/node_modules/@supabase/phoenix/assets/js/phoenix/push.js +134 -0
  260. package/templates/realtime-agent/node_modules/@supabase/phoenix/assets/js/phoenix/serializer.js +133 -0
  261. package/templates/realtime-agent/node_modules/@supabase/phoenix/assets/js/phoenix/socket.js +756 -0
  262. package/templates/realtime-agent/node_modules/@supabase/phoenix/assets/js/phoenix/timer.js +48 -0
  263. package/templates/realtime-agent/node_modules/@supabase/phoenix/assets/js/phoenix/types.js +184 -0
  264. package/templates/realtime-agent/node_modules/@supabase/phoenix/assets/js/phoenix/utils.js +16 -0
  265. package/templates/realtime-agent/node_modules/@supabase/phoenix/package.json +58 -0
  266. package/templates/realtime-agent/node_modules/@supabase/phoenix/priv/static/favicon.ico +0 -0
  267. package/templates/realtime-agent/node_modules/@supabase/phoenix/priv/static/phoenix-orange.png +0 -0
  268. package/templates/realtime-agent/node_modules/@supabase/phoenix/priv/static/phoenix.cjs.js +1825 -0
  269. package/templates/realtime-agent/node_modules/@supabase/phoenix/priv/static/phoenix.cjs.js.map +7 -0
  270. package/templates/realtime-agent/node_modules/@supabase/phoenix/priv/static/phoenix.js +1847 -0
  271. package/templates/realtime-agent/node_modules/@supabase/phoenix/priv/static/phoenix.min.js +2 -0
  272. package/templates/realtime-agent/node_modules/@supabase/phoenix/priv/static/phoenix.mjs +1802 -0
  273. package/templates/realtime-agent/node_modules/@supabase/phoenix/priv/static/phoenix.mjs.map +7 -0
  274. package/templates/realtime-agent/node_modules/@supabase/phoenix/priv/static/phoenix.png +0 -0
  275. package/templates/realtime-agent/node_modules/@supabase/phoenix/priv/static/types/ajax.d.ts +10 -0
  276. package/templates/realtime-agent/node_modules/@supabase/phoenix/priv/static/types/ajax.d.ts.map +1 -0
  277. package/templates/realtime-agent/node_modules/@supabase/phoenix/priv/static/types/channel.d.ts +167 -0
  278. package/templates/realtime-agent/node_modules/@supabase/phoenix/priv/static/types/channel.d.ts.map +1 -0
  279. package/templates/realtime-agent/node_modules/@supabase/phoenix/priv/static/types/constants.d.ts +36 -0
  280. package/templates/realtime-agent/node_modules/@supabase/phoenix/priv/static/types/constants.d.ts.map +1 -0
  281. package/templates/realtime-agent/node_modules/@supabase/phoenix/priv/static/types/index.d.ts +10 -0
  282. package/templates/realtime-agent/node_modules/@supabase/phoenix/priv/static/types/index.d.ts.map +1 -0
  283. package/templates/realtime-agent/node_modules/@supabase/phoenix/priv/static/types/longpoll.d.ts +29 -0
  284. package/templates/realtime-agent/node_modules/@supabase/phoenix/priv/static/types/longpoll.d.ts.map +1 -0
  285. package/templates/realtime-agent/node_modules/@supabase/phoenix/priv/static/types/presence.d.ts +107 -0
  286. package/templates/realtime-agent/node_modules/@supabase/phoenix/priv/static/types/presence.d.ts.map +1 -0
  287. package/templates/realtime-agent/node_modules/@supabase/phoenix/priv/static/types/push.d.ts +70 -0
  288. package/templates/realtime-agent/node_modules/@supabase/phoenix/priv/static/types/push.d.ts.map +1 -0
  289. package/templates/realtime-agent/node_modules/@supabase/phoenix/priv/static/types/serializer.d.ts +74 -0
  290. package/templates/realtime-agent/node_modules/@supabase/phoenix/priv/static/types/serializer.d.ts.map +1 -0
  291. package/templates/realtime-agent/node_modules/@supabase/phoenix/priv/static/types/socket.d.ts +291 -0
  292. package/templates/realtime-agent/node_modules/@supabase/phoenix/priv/static/types/socket.d.ts.map +1 -0
  293. package/templates/realtime-agent/node_modules/@supabase/phoenix/priv/static/types/timer.d.ts +36 -0
  294. package/templates/realtime-agent/node_modules/@supabase/phoenix/priv/static/types/timer.d.ts.map +1 -0
  295. package/templates/realtime-agent/node_modules/@supabase/phoenix/priv/static/types/types.d.ts +280 -0
  296. package/templates/realtime-agent/node_modules/@supabase/phoenix/priv/static/types/types.d.ts.map +1 -0
  297. package/templates/realtime-agent/node_modules/@supabase/phoenix/priv/static/types/utils.d.ts +2 -0
  298. package/templates/realtime-agent/node_modules/@supabase/phoenix/priv/static/types/utils.d.ts.map +1 -0
  299. package/templates/realtime-agent/node_modules/@supabase/phoenix/tsconfig.json +20 -0
  300. package/templates/realtime-agent/node_modules/@supabase/postgrest-js/README.md +213 -0
  301. package/templates/realtime-agent/node_modules/@supabase/postgrest-js/dist/index.cjs +5025 -0
  302. package/templates/realtime-agent/node_modules/@supabase/postgrest-js/dist/index.cjs.map +1 -0
  303. package/templates/realtime-agent/node_modules/@supabase/postgrest-js/dist/index.d.cts +3828 -0
  304. package/templates/realtime-agent/node_modules/@supabase/postgrest-js/dist/index.d.cts.map +1 -0
  305. package/templates/realtime-agent/node_modules/@supabase/postgrest-js/dist/index.d.mts +3828 -0
  306. package/templates/realtime-agent/node_modules/@supabase/postgrest-js/dist/index.d.mts.map +1 -0
  307. package/templates/realtime-agent/node_modules/@supabase/postgrest-js/dist/index.mjs +5017 -0
  308. package/templates/realtime-agent/node_modules/@supabase/postgrest-js/dist/index.mjs.map +1 -0
  309. package/templates/realtime-agent/node_modules/@supabase/postgrest-js/package.json +69 -0
  310. package/templates/realtime-agent/node_modules/@supabase/postgrest-js/src/PostgrestBuilder.ts +688 -0
  311. package/templates/realtime-agent/node_modules/@supabase/postgrest-js/src/PostgrestClient.ts +447 -0
  312. package/templates/realtime-agent/node_modules/@supabase/postgrest-js/src/PostgrestError.ts +41 -0
  313. package/templates/realtime-agent/node_modules/@supabase/postgrest-js/src/PostgrestFilterBuilder.ts +2137 -0
  314. package/templates/realtime-agent/node_modules/@supabase/postgrest-js/src/PostgrestQueryBuilder.ts +1703 -0
  315. package/templates/realtime-agent/node_modules/@supabase/postgrest-js/src/PostgrestTransformBuilder.ts +981 -0
  316. package/templates/realtime-agent/node_modules/@supabase/postgrest-js/src/constants.ts +2 -0
  317. package/templates/realtime-agent/node_modules/@supabase/postgrest-js/src/index.ts +34 -0
  318. package/templates/realtime-agent/node_modules/@supabase/postgrest-js/src/select-query-parser/parser.ts +476 -0
  319. package/templates/realtime-agent/node_modules/@supabase/postgrest-js/src/select-query-parser/result.ts +550 -0
  320. package/templates/realtime-agent/node_modules/@supabase/postgrest-js/src/select-query-parser/types.ts +129 -0
  321. package/templates/realtime-agent/node_modules/@supabase/postgrest-js/src/select-query-parser/utils.ts +704 -0
  322. package/templates/realtime-agent/node_modules/@supabase/postgrest-js/src/types/common/common.ts +83 -0
  323. package/templates/realtime-agent/node_modules/@supabase/postgrest-js/src/types/common/rpc.ts +148 -0
  324. package/templates/realtime-agent/node_modules/@supabase/postgrest-js/src/types/feature-flags.ts +17 -0
  325. package/templates/realtime-agent/node_modules/@supabase/postgrest-js/src/types/types.ts +161 -0
  326. package/templates/realtime-agent/node_modules/@supabase/postgrest-js/src/version.ts +7 -0
  327. package/templates/realtime-agent/node_modules/@supabase/realtime-js/README.md +326 -0
  328. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/RealtimeChannel.d.ts +442 -0
  329. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/RealtimeChannel.d.ts.map +1 -0
  330. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/RealtimeChannel.js +719 -0
  331. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/RealtimeChannel.js.map +1 -0
  332. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/RealtimeClient.d.ts +275 -0
  333. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/RealtimeClient.d.ts.map +1 -0
  334. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/RealtimeClient.js +697 -0
  335. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/RealtimeClient.js.map +1 -0
  336. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/RealtimePresence.d.ts +62 -0
  337. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/RealtimePresence.d.ts.map +1 -0
  338. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/RealtimePresence.js +43 -0
  339. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/RealtimePresence.js.map +1 -0
  340. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/index.d.ts +6 -0
  341. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/index.d.ts.map +1 -0
  342. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/index.js +18 -0
  343. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/index.js.map +1 -0
  344. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/lib/constants.d.ts +43 -0
  345. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/lib/constants.d.ts.map +1 -0
  346. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/lib/constants.js +43 -0
  347. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/lib/constants.js.map +1 -0
  348. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/lib/normalizeChannelError.d.ts +10 -0
  349. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/lib/normalizeChannelError.d.ts.map +1 -0
  350. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/lib/normalizeChannelError.js +29 -0
  351. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/lib/normalizeChannelError.js.map +1 -0
  352. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/lib/serializer.d.ts +33 -0
  353. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/lib/serializer.d.ts.map +1 -0
  354. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/lib/serializer.js +155 -0
  355. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/lib/serializer.js.map +1 -0
  356. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/lib/transformers.d.ts +109 -0
  357. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/lib/transformers.d.ts.map +1 -0
  358. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/lib/transformers.js +241 -0
  359. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/lib/transformers.js.map +1 -0
  360. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/lib/version.d.ts +2 -0
  361. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/lib/version.d.ts.map +1 -0
  362. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/lib/version.js +11 -0
  363. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/lib/version.js.map +1 -0
  364. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/lib/websocket-factory.d.ts +82 -0
  365. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/lib/websocket-factory.d.ts.map +1 -0
  366. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/lib/websocket-factory.js +130 -0
  367. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/lib/websocket-factory.js.map +1 -0
  368. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/phoenix/channelAdapter.d.ts +32 -0
  369. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/phoenix/channelAdapter.d.ts.map +1 -0
  370. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/phoenix/channelAdapter.js +103 -0
  371. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/phoenix/channelAdapter.js.map +1 -0
  372. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/phoenix/presenceAdapter.d.ts +53 -0
  373. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/phoenix/presenceAdapter.d.ts.map +1 -0
  374. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/phoenix/presenceAdapter.js +93 -0
  375. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/phoenix/presenceAdapter.js.map +1 -0
  376. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/phoenix/socketAdapter.d.ts +38 -0
  377. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/phoenix/socketAdapter.d.ts.map +1 -0
  378. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/phoenix/socketAdapter.js +114 -0
  379. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/phoenix/socketAdapter.js.map +1 -0
  380. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/phoenix/types.d.ts +5 -0
  381. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/phoenix/types.d.ts.map +1 -0
  382. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/phoenix/types.js +3 -0
  383. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/main/phoenix/types.js.map +1 -0
  384. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/RealtimeChannel.d.ts +442 -0
  385. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/RealtimeChannel.d.ts.map +1 -0
  386. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/RealtimeChannel.js +714 -0
  387. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/RealtimeChannel.js.map +1 -0
  388. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/RealtimeClient.d.ts +275 -0
  389. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/RealtimeClient.d.ts.map +1 -0
  390. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/RealtimeClient.js +693 -0
  391. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/RealtimeClient.js.map +1 -0
  392. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/RealtimePresence.d.ts +62 -0
  393. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/RealtimePresence.d.ts.map +1 -0
  394. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/RealtimePresence.js +38 -0
  395. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/RealtimePresence.js.map +1 -0
  396. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/index.d.ts +6 -0
  397. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/index.d.ts.map +1 -0
  398. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/index.js +6 -0
  399. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/index.js.map +1 -0
  400. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/lib/constants.d.ts +43 -0
  401. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/lib/constants.d.ts.map +1 -0
  402. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/lib/constants.js +40 -0
  403. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/lib/constants.js.map +1 -0
  404. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/lib/normalizeChannelError.d.ts +10 -0
  405. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/lib/normalizeChannelError.d.ts.map +1 -0
  406. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/lib/normalizeChannelError.js +26 -0
  407. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/lib/normalizeChannelError.js.map +1 -0
  408. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/lib/serializer.d.ts +33 -0
  409. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/lib/serializer.d.ts.map +1 -0
  410. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/lib/serializer.js +152 -0
  411. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/lib/serializer.js.map +1 -0
  412. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/lib/transformers.d.ts +109 -0
  413. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/lib/transformers.d.ts.map +1 -0
  414. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/lib/transformers.js +229 -0
  415. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/lib/transformers.js.map +1 -0
  416. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/lib/version.d.ts +2 -0
  417. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/lib/version.d.ts.map +1 -0
  418. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/lib/version.js +8 -0
  419. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/lib/version.js.map +1 -0
  420. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/lib/websocket-factory.d.ts +82 -0
  421. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/lib/websocket-factory.d.ts.map +1 -0
  422. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/lib/websocket-factory.js +126 -0
  423. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/lib/websocket-factory.js.map +1 -0
  424. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/phoenix/channelAdapter.d.ts +32 -0
  425. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/phoenix/channelAdapter.d.ts.map +1 -0
  426. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/phoenix/channelAdapter.js +100 -0
  427. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/phoenix/channelAdapter.js.map +1 -0
  428. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/phoenix/presenceAdapter.d.ts +53 -0
  429. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/phoenix/presenceAdapter.d.ts.map +1 -0
  430. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/phoenix/presenceAdapter.js +90 -0
  431. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/phoenix/presenceAdapter.js.map +1 -0
  432. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/phoenix/socketAdapter.d.ts +38 -0
  433. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/phoenix/socketAdapter.d.ts.map +1 -0
  434. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/phoenix/socketAdapter.js +111 -0
  435. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/phoenix/socketAdapter.js.map +1 -0
  436. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/phoenix/types.d.ts +5 -0
  437. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/phoenix/types.d.ts.map +1 -0
  438. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/phoenix/types.js +2 -0
  439. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/module/phoenix/types.js.map +1 -0
  440. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/tsconfig.module.tsbuildinfo +1 -0
  441. package/templates/realtime-agent/node_modules/@supabase/realtime-js/dist/tsconfig.tsbuildinfo +1 -0
  442. package/templates/realtime-agent/node_modules/@supabase/realtime-js/package.json +58 -0
  443. package/templates/realtime-agent/node_modules/@supabase/realtime-js/src/RealtimeChannel.ts +1118 -0
  444. package/templates/realtime-agent/node_modules/@supabase/realtime-js/src/RealtimeClient.ts +868 -0
  445. package/templates/realtime-agent/node_modules/@supabase/realtime-js/src/RealtimePresence.ts +71 -0
  446. package/templates/realtime-agent/node_modules/@supabase/realtime-js/src/index.ts +53 -0
  447. package/templates/realtime-agent/node_modules/@supabase/realtime-js/src/lib/constants.ts +62 -0
  448. package/templates/realtime-agent/node_modules/@supabase/realtime-js/src/lib/normalizeChannelError.ts +30 -0
  449. package/templates/realtime-agent/node_modules/@supabase/realtime-js/src/lib/serializer.ts +203 -0
  450. package/templates/realtime-agent/node_modules/@supabase/realtime-js/src/lib/transformers.ts +270 -0
  451. package/templates/realtime-agent/node_modules/@supabase/realtime-js/src/lib/version.ts +7 -0
  452. package/templates/realtime-agent/node_modules/@supabase/realtime-js/src/lib/websocket-factory.ts +204 -0
  453. package/templates/realtime-agent/node_modules/@supabase/realtime-js/src/phoenix/channelAdapter.ts +149 -0
  454. package/templates/realtime-agent/node_modules/@supabase/realtime-js/src/phoenix/presenceAdapter.ts +116 -0
  455. package/templates/realtime-agent/node_modules/@supabase/realtime-js/src/phoenix/socketAdapter.ts +168 -0
  456. package/templates/realtime-agent/node_modules/@supabase/realtime-js/src/phoenix/types.ts +32 -0
  457. package/templates/realtime-agent/node_modules/@supabase/storage-js/README.md +1262 -0
  458. package/templates/realtime-agent/node_modules/@supabase/storage-js/dist/index.cjs +2995 -0
  459. package/templates/realtime-agent/node_modules/@supabase/storage-js/dist/index.cjs.map +1 -0
  460. package/templates/realtime-agent/node_modules/@supabase/storage-js/dist/index.d.cts +2956 -0
  461. package/templates/realtime-agent/node_modules/@supabase/storage-js/dist/index.d.cts.map +1 -0
  462. package/templates/realtime-agent/node_modules/@supabase/storage-js/dist/index.d.mts +2956 -0
  463. package/templates/realtime-agent/node_modules/@supabase/storage-js/dist/index.d.mts.map +1 -0
  464. package/templates/realtime-agent/node_modules/@supabase/storage-js/dist/index.mjs +2979 -0
  465. package/templates/realtime-agent/node_modules/@supabase/storage-js/dist/index.mjs.map +1 -0
  466. package/templates/realtime-agent/node_modules/@supabase/storage-js/dist/umd/supabase.js +1 -0
  467. package/templates/realtime-agent/node_modules/@supabase/storage-js/package.json +62 -0
  468. package/templates/realtime-agent/node_modules/@supabase/storage-js/src/StorageClient.ts +98 -0
  469. package/templates/realtime-agent/node_modules/@supabase/storage-js/src/index.ts +19 -0
  470. package/templates/realtime-agent/node_modules/@supabase/storage-js/src/lib/common/BaseApiClient.ts +104 -0
  471. package/templates/realtime-agent/node_modules/@supabase/storage-js/src/lib/common/errors.ts +160 -0
  472. package/templates/realtime-agent/node_modules/@supabase/storage-js/src/lib/common/fetch.ts +303 -0
  473. package/templates/realtime-agent/node_modules/@supabase/storage-js/src/lib/common/headers.ts +43 -0
  474. package/templates/realtime-agent/node_modules/@supabase/storage-js/src/lib/common/helpers.ts +146 -0
  475. package/templates/realtime-agent/node_modules/@supabase/storage-js/src/lib/constants.ts +4 -0
  476. package/templates/realtime-agent/node_modules/@supabase/storage-js/src/lib/types.ts +654 -0
  477. package/templates/realtime-agent/node_modules/@supabase/storage-js/src/lib/version.ts +7 -0
  478. package/templates/realtime-agent/node_modules/@supabase/storage-js/src/packages/BlobDownloadBuilder.ts +62 -0
  479. package/templates/realtime-agent/node_modules/@supabase/storage-js/src/packages/StorageAnalyticsClient.ts +420 -0
  480. package/templates/realtime-agent/node_modules/@supabase/storage-js/src/packages/StorageBucketApi.ts +414 -0
  481. package/templates/realtime-agent/node_modules/@supabase/storage-js/src/packages/StorageFileApi.ts +1423 -0
  482. package/templates/realtime-agent/node_modules/@supabase/storage-js/src/packages/StorageVectorsClient.ts +644 -0
  483. package/templates/realtime-agent/node_modules/@supabase/storage-js/src/packages/StreamDownloadBuilder.ts +39 -0
  484. package/templates/realtime-agent/node_modules/@supabase/storage-js/src/packages/VectorBucketApi.ts +73 -0
  485. package/templates/realtime-agent/node_modules/@supabase/storage-js/src/packages/VectorDataApi.ts +98 -0
  486. package/templates/realtime-agent/node_modules/@supabase/storage-js/src/packages/VectorIndexApi.ts +90 -0
  487. package/templates/realtime-agent/node_modules/@supabase/supabase-js/README.md +238 -0
  488. package/templates/realtime-agent/node_modules/@supabase/supabase-js/dist/cors.cjs +89 -0
  489. package/templates/realtime-agent/node_modules/@supabase/supabase-js/dist/cors.cjs.map +1 -0
  490. package/templates/realtime-agent/node_modules/@supabase/supabase-js/dist/cors.d.cts +58 -0
  491. package/templates/realtime-agent/node_modules/@supabase/supabase-js/dist/cors.d.cts.map +1 -0
  492. package/templates/realtime-agent/node_modules/@supabase/supabase-js/dist/cors.d.mts +58 -0
  493. package/templates/realtime-agent/node_modules/@supabase/supabase-js/dist/cors.d.mts.map +1 -0
  494. package/templates/realtime-agent/node_modules/@supabase/supabase-js/dist/cors.mjs +88 -0
  495. package/templates/realtime-agent/node_modules/@supabase/supabase-js/dist/cors.mjs.map +1 -0
  496. package/templates/realtime-agent/node_modules/@supabase/supabase-js/dist/index.cjs +660 -0
  497. package/templates/realtime-agent/node_modules/@supabase/supabase-js/dist/index.cjs.map +1 -0
  498. package/templates/realtime-agent/node_modules/@supabase/supabase-js/dist/index.d.cts +616 -0
  499. package/templates/realtime-agent/node_modules/@supabase/supabase-js/dist/index.d.cts.map +1 -0
  500. package/templates/realtime-agent/node_modules/@supabase/supabase-js/dist/index.d.mts +616 -0
  501. package/templates/realtime-agent/node_modules/@supabase/supabase-js/dist/index.d.mts.map +1 -0
  502. package/templates/realtime-agent/node_modules/@supabase/supabase-js/dist/index.mjs +607 -0
  503. package/templates/realtime-agent/node_modules/@supabase/supabase-js/dist/index.mjs.map +1 -0
  504. package/templates/realtime-agent/node_modules/@supabase/supabase-js/dist/umd/supabase.js +24 -0
  505. package/templates/realtime-agent/node_modules/@supabase/supabase-js/package.json +122 -0
  506. package/templates/realtime-agent/node_modules/@supabase/supabase-js/src/SupabaseClient.ts +625 -0
  507. package/templates/realtime-agent/node_modules/@supabase/supabase-js/src/cors.ts +84 -0
  508. package/templates/realtime-agent/node_modules/@supabase/supabase-js/src/index.ts +106 -0
  509. package/templates/realtime-agent/node_modules/@supabase/supabase-js/src/lib/SupabaseAuthClient.ts +8 -0
  510. package/templates/realtime-agent/node_modules/@supabase/supabase-js/src/lib/constants.ts +35 -0
  511. package/templates/realtime-agent/node_modules/@supabase/supabase-js/src/lib/fetch.ts +36 -0
  512. package/templates/realtime-agent/node_modules/@supabase/supabase-js/src/lib/helpers.ts +98 -0
  513. package/templates/realtime-agent/node_modules/@supabase/supabase-js/src/lib/rest/types/common/common.ts +93 -0
  514. package/templates/realtime-agent/node_modules/@supabase/supabase-js/src/lib/rest/types/common/rpc.ts +158 -0
  515. package/templates/realtime-agent/node_modules/@supabase/supabase-js/src/lib/types.ts +196 -0
  516. package/templates/realtime-agent/node_modules/@supabase/supabase-js/src/lib/version.ts +7 -0
  517. package/templates/realtime-agent/node_modules/iceberg-js/LICENSE +21 -0
  518. package/templates/realtime-agent/node_modules/iceberg-js/README.md +439 -0
  519. package/templates/realtime-agent/node_modules/iceberg-js/dist/index.cjs +596 -0
  520. package/templates/realtime-agent/node_modules/iceberg-js/dist/index.cjs.map +1 -0
  521. package/templates/realtime-agent/node_modules/iceberg-js/dist/index.d.cts +547 -0
  522. package/templates/realtime-agent/node_modules/iceberg-js/dist/index.d.ts +547 -0
  523. package/templates/realtime-agent/node_modules/iceberg-js/dist/index.mjs +587 -0
  524. package/templates/realtime-agent/node_modules/iceberg-js/dist/index.mjs.map +1 -0
  525. package/templates/realtime-agent/node_modules/iceberg-js/package.json +77 -0
  526. package/templates/realtime-agent/node_modules/tslib/CopyrightNotice.txt +15 -0
  527. package/templates/realtime-agent/node_modules/tslib/LICENSE.txt +12 -0
  528. package/templates/realtime-agent/node_modules/tslib/README.md +164 -0
  529. package/templates/realtime-agent/node_modules/tslib/SECURITY.md +41 -0
  530. package/templates/realtime-agent/node_modules/tslib/modules/index.d.ts +38 -0
  531. package/templates/realtime-agent/node_modules/tslib/modules/index.js +70 -0
  532. package/templates/realtime-agent/node_modules/tslib/modules/package.json +3 -0
  533. package/templates/realtime-agent/node_modules/tslib/package.json +47 -0
  534. package/templates/realtime-agent/node_modules/tslib/tslib.d.ts +460 -0
  535. package/templates/realtime-agent/node_modules/tslib/tslib.es6.html +1 -0
  536. package/templates/realtime-agent/node_modules/tslib/tslib.es6.js +402 -0
  537. package/templates/realtime-agent/node_modules/tslib/tslib.es6.mjs +401 -0
  538. package/templates/realtime-agent/node_modules/tslib/tslib.html +1 -0
  539. package/templates/realtime-agent/node_modules/tslib/tslib.js +484 -0
  540. package/templates/realtime-agent/package-lock.json +114 -0
  541. package/templates/realtime-agent/package.json +11 -0
  542. package/templates/realtime-agent/src/index.js +152 -0
  543. package/templates/root/AGENT.md +37 -0
  544. package/templates/root/model.md +1 -0
  545. package/templates/root/prompt.md +91 -0
  546. package/templates/root/ralph.sh +47 -0
@@ -0,0 +1,1825 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // js/phoenix/index.js
21
+ var phoenix_exports = {};
22
+ __export(phoenix_exports, {
23
+ Channel: () => Channel,
24
+ LongPoll: () => LongPoll,
25
+ Presence: () => Presence,
26
+ Push: () => Push,
27
+ Serializer: () => serializer_default,
28
+ Socket: () => Socket,
29
+ Timer: () => Timer
30
+ });
31
+ module.exports = __toCommonJS(phoenix_exports);
32
+
33
+ // js/phoenix/utils.js
34
+ var closure = (value) => {
35
+ if (typeof value === "function") {
36
+ return (
37
+ /** @type {() => T} */
38
+ value
39
+ );
40
+ } else {
41
+ let closure2 = function() {
42
+ return value;
43
+ };
44
+ return closure2;
45
+ }
46
+ };
47
+
48
+ // js/phoenix/constants.js
49
+ var globalSelf = typeof self !== "undefined" ? self : null;
50
+ var phxWindow = typeof window !== "undefined" ? window : null;
51
+ var global = globalSelf || phxWindow || globalThis;
52
+ var DEFAULT_VSN = "2.0.0";
53
+ var DEFAULT_TIMEOUT = 1e4;
54
+ var WS_CLOSE_NORMAL = 1e3;
55
+ var SOCKET_STATES = (
56
+ /** @type {const} */
57
+ { connecting: 0, open: 1, closing: 2, closed: 3 }
58
+ );
59
+ var CHANNEL_STATES = (
60
+ /** @type {const} */
61
+ {
62
+ closed: "closed",
63
+ errored: "errored",
64
+ joined: "joined",
65
+ joining: "joining",
66
+ leaving: "leaving"
67
+ }
68
+ );
69
+ var CHANNEL_EVENTS = (
70
+ /** @type {const} */
71
+ {
72
+ close: "phx_close",
73
+ error: "phx_error",
74
+ join: "phx_join",
75
+ reply: "phx_reply",
76
+ leave: "phx_leave"
77
+ }
78
+ );
79
+ var TRANSPORTS = (
80
+ /** @type {const} */
81
+ {
82
+ longpoll: "longpoll",
83
+ websocket: "websocket"
84
+ }
85
+ );
86
+ var XHR_STATES = (
87
+ /** @type {const} */
88
+ {
89
+ complete: 4
90
+ }
91
+ );
92
+ var AUTH_TOKEN_PREFIX = "base64url.bearer.phx.";
93
+
94
+ // js/phoenix/push.js
95
+ var Push = class {
96
+ /**
97
+ * Initializes the Push
98
+ * @param {Channel} channel - The Channel
99
+ * @param {ChannelEvent} event - The event, for example `"phx_join"`
100
+ * @param {() => Record<string, unknown>} payload - The payload, for example `{user_id: 123}`
101
+ * @param {number} timeout - The push timeout in milliseconds
102
+ */
103
+ constructor(channel, event, payload, timeout) {
104
+ this.channel = channel;
105
+ this.event = event;
106
+ this.payload = payload || function() {
107
+ return {};
108
+ };
109
+ this.receivedResp = null;
110
+ this.timeout = timeout;
111
+ this.timeoutTimer = null;
112
+ this.recHooks = [];
113
+ this.sent = false;
114
+ this.ref = void 0;
115
+ }
116
+ /**
117
+ *
118
+ * @param {number} timeout
119
+ */
120
+ resend(timeout) {
121
+ this.timeout = timeout;
122
+ this.reset();
123
+ this.send();
124
+ }
125
+ /**
126
+ *
127
+ */
128
+ send() {
129
+ if (this.hasReceived("timeout")) {
130
+ return;
131
+ }
132
+ this.startTimeout();
133
+ this.sent = true;
134
+ this.channel.socket.push({
135
+ topic: this.channel.topic,
136
+ event: this.event,
137
+ payload: this.payload(),
138
+ ref: this.ref,
139
+ join_ref: this.channel.joinRef()
140
+ });
141
+ }
142
+ /**
143
+ *
144
+ * @param {string} status
145
+ * @param {(response: any) => void} callback
146
+ */
147
+ receive(status, callback) {
148
+ if (this.hasReceived(status)) {
149
+ callback(this.receivedResp.response);
150
+ }
151
+ this.recHooks.push({ status, callback });
152
+ return this;
153
+ }
154
+ reset() {
155
+ this.cancelRefEvent();
156
+ this.ref = null;
157
+ this.refEvent = null;
158
+ this.receivedResp = null;
159
+ this.sent = false;
160
+ }
161
+ destroy() {
162
+ this.cancelRefEvent();
163
+ this.cancelTimeout();
164
+ }
165
+ /**
166
+ * @private
167
+ */
168
+ matchReceive({ status, response, _ref }) {
169
+ this.recHooks.filter((h) => h.status === status).forEach((h) => h.callback(response));
170
+ }
171
+ /**
172
+ * @private
173
+ */
174
+ cancelRefEvent() {
175
+ if (!this.refEvent) {
176
+ return;
177
+ }
178
+ this.channel.off(this.refEvent);
179
+ }
180
+ cancelTimeout() {
181
+ clearTimeout(this.timeoutTimer);
182
+ this.timeoutTimer = null;
183
+ }
184
+ startTimeout() {
185
+ if (this.timeoutTimer) {
186
+ this.cancelTimeout();
187
+ }
188
+ this.ref = this.channel.socket.makeRef();
189
+ this.refEvent = this.channel.replyEventName(this.ref);
190
+ this.channel.on(this.refEvent, (payload) => {
191
+ this.cancelRefEvent();
192
+ this.cancelTimeout();
193
+ this.receivedResp = payload;
194
+ this.matchReceive(payload);
195
+ });
196
+ this.timeoutTimer = setTimeout(() => {
197
+ this.trigger("timeout", {});
198
+ }, this.timeout);
199
+ }
200
+ /**
201
+ * @private
202
+ */
203
+ hasReceived(status) {
204
+ return this.receivedResp && this.receivedResp.status === status;
205
+ }
206
+ trigger(status, response) {
207
+ this.channel.trigger(this.refEvent, { status, response });
208
+ }
209
+ };
210
+
211
+ // js/phoenix/timer.js
212
+ var Timer = class {
213
+ /**
214
+ * @param {() => void} callback
215
+ * @param {(tries: number) => number} timerCalc
216
+ */
217
+ constructor(callback, timerCalc) {
218
+ this.callback = callback;
219
+ this.timerCalc = timerCalc;
220
+ this.timer = void 0;
221
+ this.tries = 0;
222
+ }
223
+ reset() {
224
+ this.tries = 0;
225
+ clearTimeout(this.timer);
226
+ }
227
+ /**
228
+ * Cancels any previous scheduleTimeout and schedules callback
229
+ */
230
+ scheduleTimeout() {
231
+ clearTimeout(this.timer);
232
+ this.timer = setTimeout(() => {
233
+ this.tries = this.tries + 1;
234
+ this.callback();
235
+ }, this.timerCalc(this.tries + 1));
236
+ }
237
+ };
238
+
239
+ // js/phoenix/channel.js
240
+ var Channel = class {
241
+ /**
242
+ * @param {string} topic
243
+ * @param {Params | (() => Params)} params
244
+ * @param {Socket} socket
245
+ */
246
+ constructor(topic, params, socket) {
247
+ this.state = CHANNEL_STATES.closed;
248
+ this.topic = topic;
249
+ this.params = closure(params || {});
250
+ this.socket = socket;
251
+ this.bindings = [];
252
+ this.bindingRef = 0;
253
+ this.timeout = this.socket.timeout;
254
+ this.joinedOnce = false;
255
+ this.joinPush = new Push(this, CHANNEL_EVENTS.join, this.params, this.timeout);
256
+ this.pushBuffer = [];
257
+ this.stateChangeRefs = [];
258
+ this.rejoinTimer = new Timer(() => {
259
+ if (this.socket.isConnected()) {
260
+ this.rejoin();
261
+ }
262
+ }, this.socket.rejoinAfterMs);
263
+ this.stateChangeRefs.push(this.socket.onError(() => this.rejoinTimer.reset()));
264
+ this.stateChangeRefs.push(
265
+ this.socket.onOpen(() => {
266
+ this.rejoinTimer.reset();
267
+ if (this.isErrored()) {
268
+ this.rejoin();
269
+ }
270
+ })
271
+ );
272
+ this.joinPush.receive("ok", () => {
273
+ this.state = CHANNEL_STATES.joined;
274
+ this.rejoinTimer.reset();
275
+ this.pushBuffer.forEach((pushEvent) => pushEvent.send());
276
+ this.pushBuffer = [];
277
+ });
278
+ this.joinPush.receive("error", (reason) => {
279
+ this.state = CHANNEL_STATES.errored;
280
+ if (this.socket.hasLogger()) this.socket.log("channel", `error ${this.topic}`, reason);
281
+ if (this.socket.isConnected()) {
282
+ this.rejoinTimer.scheduleTimeout();
283
+ }
284
+ });
285
+ this.onClose(() => {
286
+ this.rejoinTimer.reset();
287
+ if (this.socket.hasLogger()) this.socket.log("channel", `close ${this.topic}`);
288
+ this.state = CHANNEL_STATES.closed;
289
+ this.socket.remove(this);
290
+ });
291
+ this.onError((reason) => {
292
+ if (this.socket.hasLogger()) this.socket.log("channel", `error ${this.topic}`, reason);
293
+ if (this.isJoining()) {
294
+ this.joinPush.reset();
295
+ }
296
+ this.state = CHANNEL_STATES.errored;
297
+ if (this.socket.isConnected()) {
298
+ this.rejoinTimer.scheduleTimeout();
299
+ }
300
+ });
301
+ this.joinPush.receive("timeout", () => {
302
+ if (this.socket.hasLogger()) this.socket.log("channel", `timeout ${this.topic}`, this.joinPush.timeout);
303
+ let leavePush = new Push(this, CHANNEL_EVENTS.leave, closure({}), this.timeout);
304
+ leavePush.send();
305
+ this.state = CHANNEL_STATES.errored;
306
+ this.joinPush.reset();
307
+ if (this.socket.isConnected()) {
308
+ this.rejoinTimer.scheduleTimeout();
309
+ }
310
+ });
311
+ this.on(CHANNEL_EVENTS.reply, (payload, ref) => {
312
+ this.trigger(this.replyEventName(ref), payload);
313
+ });
314
+ }
315
+ /**
316
+ * Join the channel
317
+ * @param {number} timeout
318
+ * @returns {Push}
319
+ */
320
+ join(timeout = this.timeout) {
321
+ if (this.joinedOnce) {
322
+ throw new Error("tried to join multiple times. 'join' can only be called a single time per channel instance");
323
+ } else {
324
+ this.timeout = timeout;
325
+ this.joinedOnce = true;
326
+ this.rejoin();
327
+ return this.joinPush;
328
+ }
329
+ }
330
+ /**
331
+ * Teardown the channel.
332
+ *
333
+ * Destroys and stops related timers.
334
+ */
335
+ teardown() {
336
+ this.pushBuffer.forEach((push) => push.destroy());
337
+ this.pushBuffer = [];
338
+ this.rejoinTimer.reset();
339
+ this.joinPush.destroy();
340
+ this.state = CHANNEL_STATES.closed;
341
+ this.bindings = [];
342
+ }
343
+ /**
344
+ * Hook into channel close
345
+ * @param {ChannelBindingCallback} callback
346
+ */
347
+ onClose(callback) {
348
+ this.on(CHANNEL_EVENTS.close, callback);
349
+ }
350
+ /**
351
+ * Hook into channel errors
352
+ * @param {ChannelOnErrorCallback} callback
353
+ * @return {number}
354
+ */
355
+ onError(callback) {
356
+ return this.on(CHANNEL_EVENTS.error, (reason) => callback(reason));
357
+ }
358
+ /**
359
+ * Subscribes on channel events
360
+ *
361
+ * Subscription returns a ref counter, which can be used later to
362
+ * unsubscribe the exact event listener
363
+ *
364
+ * @example
365
+ * const ref1 = channel.on("event", do_stuff)
366
+ * const ref2 = channel.on("event", do_other_stuff)
367
+ * channel.off("event", ref1)
368
+ * // Since unsubscription, do_stuff won't fire,
369
+ * // while do_other_stuff will keep firing on the "event"
370
+ *
371
+ * @param {string} event
372
+ * @param {ChannelBindingCallback} callback
373
+ * @returns {number} ref
374
+ */
375
+ on(event, callback) {
376
+ let ref = this.bindingRef++;
377
+ this.bindings.push({ event, ref, callback });
378
+ return ref;
379
+ }
380
+ /**
381
+ * Unsubscribes off of channel events
382
+ *
383
+ * Use the ref returned from a channel.on() to unsubscribe one
384
+ * handler, or pass nothing for the ref to unsubscribe all
385
+ * handlers for the given event.
386
+ *
387
+ * @example
388
+ * // Unsubscribe the do_stuff handler
389
+ * const ref1 = channel.on("event", do_stuff)
390
+ * channel.off("event", ref1)
391
+ *
392
+ * // Unsubscribe all handlers from event
393
+ * channel.off("event")
394
+ *
395
+ * @param {string} event
396
+ * @param {number} [ref]
397
+ */
398
+ off(event, ref) {
399
+ this.bindings = this.bindings.filter((bind) => {
400
+ return !(bind.event === event && (typeof ref === "undefined" || ref === bind.ref));
401
+ });
402
+ }
403
+ /**
404
+ * @private
405
+ */
406
+ canPush() {
407
+ return this.socket.isConnected() && this.isJoined();
408
+ }
409
+ /**
410
+ * Sends a message `event` to phoenix with the payload `payload`.
411
+ * Phoenix receives this in the `handle_in(event, payload, socket)`
412
+ * function. if phoenix replies or it times out (default 10000ms),
413
+ * then optionally the reply can be received.
414
+ *
415
+ * @example
416
+ * channel.push("event")
417
+ * .receive("ok", payload => console.log("phoenix replied:", payload))
418
+ * .receive("error", err => console.log("phoenix errored", err))
419
+ * .receive("timeout", () => console.log("timed out pushing"))
420
+ * @param {string} event
421
+ * @param {Object} payload
422
+ * @param {number} [timeout]
423
+ * @returns {Push}
424
+ */
425
+ push(event, payload, timeout = this.timeout) {
426
+ payload = payload || {};
427
+ if (!this.joinedOnce) {
428
+ throw new Error(`tried to push '${event}' to '${this.topic}' before joining. Use channel.join() before pushing events`);
429
+ }
430
+ let pushEvent = new Push(this, event, function() {
431
+ return payload;
432
+ }, timeout);
433
+ if (this.canPush()) {
434
+ pushEvent.send();
435
+ } else {
436
+ pushEvent.startTimeout();
437
+ this.pushBuffer.push(pushEvent);
438
+ }
439
+ return pushEvent;
440
+ }
441
+ /** Leaves the channel
442
+ *
443
+ * Unsubscribes from server events, and
444
+ * instructs channel to terminate on server
445
+ *
446
+ * Triggers onClose() hooks
447
+ *
448
+ * To receive leave acknowledgements, use the `receive`
449
+ * hook to bind to the server ack, ie:
450
+ *
451
+ * @example
452
+ * channel.leave().receive("ok", () => alert("left!") )
453
+ *
454
+ * @param {number} timeout
455
+ * @returns {Push}
456
+ */
457
+ leave(timeout = this.timeout) {
458
+ this.rejoinTimer.reset();
459
+ this.joinPush.cancelTimeout();
460
+ this.state = CHANNEL_STATES.leaving;
461
+ let onClose = () => {
462
+ if (this.socket.hasLogger()) this.socket.log("channel", `leave ${this.topic}`);
463
+ this.trigger(CHANNEL_EVENTS.close, "leave");
464
+ };
465
+ let leavePush = new Push(this, CHANNEL_EVENTS.leave, closure({}), timeout);
466
+ leavePush.receive("ok", () => onClose()).receive("timeout", () => onClose());
467
+ leavePush.send();
468
+ if (!this.canPush()) {
469
+ leavePush.trigger("ok", {});
470
+ }
471
+ return leavePush;
472
+ }
473
+ /**
474
+ * Overridable message hook
475
+ *
476
+ * Receives all events for specialized message handling
477
+ * before dispatching to the channel callbacks.
478
+ *
479
+ * Must return the payload, modified or unmodified
480
+ * @type{ChannelOnMessage}
481
+ */
482
+ onMessage(_event, payload, _ref) {
483
+ return payload;
484
+ }
485
+ /**
486
+ * Overridable filter hook
487
+ *
488
+ * If this function returns `true`, `binding`'s callback will be called.
489
+ *
490
+ * @type{ChannelFilterBindings}
491
+ */
492
+ filterBindings(_binding, _payload, _ref) {
493
+ return true;
494
+ }
495
+ isMember(topic, event, payload, joinRef) {
496
+ if (this.topic !== topic) {
497
+ return false;
498
+ }
499
+ if (joinRef && joinRef !== this.joinRef()) {
500
+ if (this.socket.hasLogger()) this.socket.log("channel", "dropping outdated message", { topic, event, payload, joinRef });
501
+ return false;
502
+ } else {
503
+ return true;
504
+ }
505
+ }
506
+ joinRef() {
507
+ return this.joinPush.ref;
508
+ }
509
+ /**
510
+ * @private
511
+ */
512
+ rejoin(timeout = this.timeout) {
513
+ if (this.isLeaving()) {
514
+ return;
515
+ }
516
+ this.socket.leaveOpenTopic(this.topic);
517
+ this.state = CHANNEL_STATES.joining;
518
+ this.joinPush.resend(timeout);
519
+ }
520
+ /**
521
+ * @param {string} event
522
+ * @param {unknown} [payload]
523
+ * @param {?string} [ref]
524
+ * @param {?string} [joinRef]
525
+ */
526
+ trigger(event, payload, ref, joinRef) {
527
+ let handledPayload = this.onMessage(event, payload, ref, joinRef);
528
+ if (payload && !handledPayload) {
529
+ throw new Error("channel onMessage callbacks must return the payload, modified or unmodified");
530
+ }
531
+ let eventBindings = this.bindings.filter((bind) => bind.event === event && this.filterBindings(bind, payload, ref));
532
+ for (let i = 0; i < eventBindings.length; i++) {
533
+ let bind = eventBindings[i];
534
+ bind.callback(handledPayload, ref, joinRef || this.joinRef());
535
+ }
536
+ }
537
+ /**
538
+ * @param {string} ref
539
+ */
540
+ replyEventName(ref) {
541
+ return `chan_reply_${ref}`;
542
+ }
543
+ isClosed() {
544
+ return this.state === CHANNEL_STATES.closed;
545
+ }
546
+ isErrored() {
547
+ return this.state === CHANNEL_STATES.errored;
548
+ }
549
+ isJoined() {
550
+ return this.state === CHANNEL_STATES.joined;
551
+ }
552
+ isJoining() {
553
+ return this.state === CHANNEL_STATES.joining;
554
+ }
555
+ isLeaving() {
556
+ return this.state === CHANNEL_STATES.leaving;
557
+ }
558
+ };
559
+
560
+ // js/phoenix/ajax.js
561
+ var Ajax = class {
562
+ static request(method, endPoint, headers, body, timeout, ontimeout, callback) {
563
+ if (global.XDomainRequest) {
564
+ let req = new global.XDomainRequest();
565
+ return this.xdomainRequest(req, method, endPoint, body, timeout, ontimeout, callback);
566
+ } else if (global.XMLHttpRequest) {
567
+ let req = new global.XMLHttpRequest();
568
+ return this.xhrRequest(req, method, endPoint, headers, body, timeout, ontimeout, callback);
569
+ } else if (global.fetch && global.AbortController) {
570
+ return this.fetchRequest(method, endPoint, headers, body, timeout, ontimeout, callback);
571
+ } else {
572
+ throw new Error("No suitable XMLHttpRequest implementation found");
573
+ }
574
+ }
575
+ static fetchRequest(method, endPoint, headers, body, timeout, ontimeout, callback) {
576
+ let options = {
577
+ method,
578
+ headers,
579
+ body
580
+ };
581
+ let controller = null;
582
+ if (timeout) {
583
+ controller = new AbortController();
584
+ const _timeoutId = setTimeout(() => controller.abort(), timeout);
585
+ options.signal = controller.signal;
586
+ }
587
+ global.fetch(endPoint, options).then((response) => response.text()).then((data) => this.parseJSON(data)).then((data) => callback && callback(data)).catch((err) => {
588
+ if (err.name === "AbortError" && ontimeout) {
589
+ ontimeout();
590
+ } else {
591
+ callback && callback(null);
592
+ }
593
+ });
594
+ return controller;
595
+ }
596
+ static xdomainRequest(req, method, endPoint, body, timeout, ontimeout, callback) {
597
+ req.timeout = timeout;
598
+ req.open(method, endPoint);
599
+ req.onload = () => {
600
+ let response = this.parseJSON(req.responseText);
601
+ callback && callback(response);
602
+ };
603
+ if (ontimeout) {
604
+ req.ontimeout = ontimeout;
605
+ }
606
+ req.onprogress = () => {
607
+ };
608
+ req.send(body);
609
+ return req;
610
+ }
611
+ static xhrRequest(req, method, endPoint, headers, body, timeout, ontimeout, callback) {
612
+ req.open(method, endPoint, true);
613
+ req.timeout = timeout;
614
+ for (let [key, value] of Object.entries(headers)) {
615
+ req.setRequestHeader(key, value);
616
+ }
617
+ req.onerror = () => callback && callback(null);
618
+ req.onreadystatechange = () => {
619
+ if (req.readyState === XHR_STATES.complete && callback) {
620
+ let response = this.parseJSON(req.responseText);
621
+ callback(response);
622
+ }
623
+ };
624
+ if (ontimeout) {
625
+ req.ontimeout = ontimeout;
626
+ }
627
+ req.send(body);
628
+ return req;
629
+ }
630
+ static parseJSON(resp) {
631
+ if (!resp || resp === "") {
632
+ return null;
633
+ }
634
+ try {
635
+ return JSON.parse(resp);
636
+ } catch {
637
+ console && console.log("failed to parse JSON response", resp);
638
+ return null;
639
+ }
640
+ }
641
+ static serialize(obj, parentKey) {
642
+ let queryStr = [];
643
+ for (var key in obj) {
644
+ if (!Object.prototype.hasOwnProperty.call(obj, key)) {
645
+ continue;
646
+ }
647
+ let paramKey = parentKey ? `${parentKey}[${key}]` : key;
648
+ let paramVal = obj[key];
649
+ if (typeof paramVal === "object") {
650
+ queryStr.push(this.serialize(paramVal, paramKey));
651
+ } else {
652
+ queryStr.push(encodeURIComponent(paramKey) + "=" + encodeURIComponent(paramVal));
653
+ }
654
+ }
655
+ return queryStr.join("&");
656
+ }
657
+ static appendParams(url, params) {
658
+ if (Object.keys(params).length === 0) {
659
+ return url;
660
+ }
661
+ let prefix = url.match(/\?/) ? "&" : "?";
662
+ return `${url}${prefix}${this.serialize(params)}`;
663
+ }
664
+ };
665
+
666
+ // js/phoenix/longpoll.js
667
+ var arrayBufferToBase64 = (buffer) => {
668
+ let binary = "";
669
+ let bytes = new Uint8Array(buffer);
670
+ let len = bytes.byteLength;
671
+ for (let i = 0; i < len; i++) {
672
+ binary += String.fromCharCode(bytes[i]);
673
+ }
674
+ return btoa(binary);
675
+ };
676
+ var LongPoll = class {
677
+ constructor(endPoint, protocols) {
678
+ if (protocols && protocols.length === 2 && protocols[1].startsWith(AUTH_TOKEN_PREFIX)) {
679
+ this.authToken = atob(protocols[1].slice(AUTH_TOKEN_PREFIX.length));
680
+ }
681
+ this.endPoint = null;
682
+ this.token = null;
683
+ this.skipHeartbeat = true;
684
+ this.reqs = /* @__PURE__ */ new Set();
685
+ this.awaitingBatchAck = false;
686
+ this.currentBatch = null;
687
+ this.currentBatchTimer = null;
688
+ this.batchBuffer = [];
689
+ this.onopen = function() {
690
+ };
691
+ this.onerror = function() {
692
+ };
693
+ this.onmessage = function() {
694
+ };
695
+ this.onclose = function() {
696
+ };
697
+ this.pollEndpoint = this.normalizeEndpoint(endPoint);
698
+ this.readyState = SOCKET_STATES.connecting;
699
+ setTimeout(() => this.poll(), 0);
700
+ }
701
+ normalizeEndpoint(endPoint) {
702
+ return endPoint.replace("ws://", "http://").replace("wss://", "https://").replace(new RegExp("(.*)/" + TRANSPORTS.websocket), "$1/" + TRANSPORTS.longpoll);
703
+ }
704
+ endpointURL() {
705
+ return Ajax.appendParams(this.pollEndpoint, { token: this.token });
706
+ }
707
+ closeAndRetry(code, reason, wasClean) {
708
+ this.close(code, reason, wasClean);
709
+ this.readyState = SOCKET_STATES.connecting;
710
+ }
711
+ ontimeout() {
712
+ this.onerror("timeout");
713
+ this.closeAndRetry(1005, "timeout", false);
714
+ }
715
+ isActive() {
716
+ return this.readyState === SOCKET_STATES.open || this.readyState === SOCKET_STATES.connecting;
717
+ }
718
+ poll() {
719
+ const headers = { "Accept": "application/json" };
720
+ if (this.authToken) {
721
+ headers["X-Phoenix-AuthToken"] = this.authToken;
722
+ }
723
+ this.ajax("GET", headers, null, () => this.ontimeout(), (resp) => {
724
+ if (resp) {
725
+ var { status, token, messages } = resp;
726
+ if (status === 410 && this.token !== null) {
727
+ this.onerror(410);
728
+ this.closeAndRetry(3410, "session_gone", false);
729
+ return;
730
+ }
731
+ this.token = token;
732
+ } else {
733
+ status = 0;
734
+ }
735
+ switch (status) {
736
+ case 200:
737
+ messages.forEach((msg) => {
738
+ setTimeout(() => this.onmessage({ data: msg }), 0);
739
+ });
740
+ this.poll();
741
+ break;
742
+ case 204:
743
+ this.poll();
744
+ break;
745
+ case 410:
746
+ this.readyState = SOCKET_STATES.open;
747
+ this.onopen({});
748
+ this.poll();
749
+ break;
750
+ case 403:
751
+ this.onerror(403);
752
+ this.close(1008, "forbidden", false);
753
+ break;
754
+ case 0:
755
+ case 500:
756
+ this.onerror(500);
757
+ this.closeAndRetry(1011, "internal server error", 500);
758
+ break;
759
+ default:
760
+ throw new Error(`unhandled poll status ${status}`);
761
+ }
762
+ });
763
+ }
764
+ // we collect all pushes within the current event loop by
765
+ // setTimeout 0, which optimizes back-to-back procedural
766
+ // pushes against an empty buffer
767
+ send(body) {
768
+ if (typeof body !== "string") {
769
+ body = arrayBufferToBase64(body);
770
+ }
771
+ if (this.currentBatch) {
772
+ this.currentBatch.push(body);
773
+ } else if (this.awaitingBatchAck) {
774
+ this.batchBuffer.push(body);
775
+ } else {
776
+ this.currentBatch = [body];
777
+ this.currentBatchTimer = setTimeout(() => {
778
+ this.batchSend(this.currentBatch);
779
+ this.currentBatch = null;
780
+ }, 0);
781
+ }
782
+ }
783
+ batchSend(messages) {
784
+ this.awaitingBatchAck = true;
785
+ this.ajax("POST", { "Content-Type": "application/x-ndjson" }, messages.join("\n"), () => this.onerror("timeout"), (resp) => {
786
+ this.awaitingBatchAck = false;
787
+ if (!resp || resp.status !== 200) {
788
+ this.onerror(resp && resp.status);
789
+ this.closeAndRetry(1011, "internal server error", false);
790
+ } else if (this.batchBuffer.length > 0) {
791
+ this.batchSend(this.batchBuffer);
792
+ this.batchBuffer = [];
793
+ }
794
+ });
795
+ }
796
+ close(code, reason, wasClean) {
797
+ for (let req of this.reqs) {
798
+ req.abort();
799
+ }
800
+ this.readyState = SOCKET_STATES.closed;
801
+ let opts = Object.assign({ code: 1e3, reason: void 0, wasClean: true }, { code, reason, wasClean });
802
+ this.batchBuffer = [];
803
+ clearTimeout(this.currentBatchTimer);
804
+ this.currentBatchTimer = null;
805
+ if (typeof CloseEvent !== "undefined") {
806
+ this.onclose(new CloseEvent("close", opts));
807
+ } else {
808
+ this.onclose(opts);
809
+ }
810
+ }
811
+ ajax(method, headers, body, onCallerTimeout, callback) {
812
+ let req;
813
+ let ontimeout = () => {
814
+ this.reqs.delete(req);
815
+ onCallerTimeout();
816
+ };
817
+ req = Ajax.request(method, this.endpointURL(), headers, body, this.timeout, ontimeout, (resp) => {
818
+ this.reqs.delete(req);
819
+ if (this.isActive()) {
820
+ callback(resp);
821
+ }
822
+ });
823
+ this.reqs.add(req);
824
+ }
825
+ };
826
+
827
+ // js/phoenix/presence.js
828
+ var Presence = class _Presence {
829
+ /**
830
+ * Initializes the Presence
831
+ * @param {Channel} channel - The Channel
832
+ * @param {PresenceOptions} [opts] - The options, for example `{events: {state: "state", diff: "diff"}}`
833
+ */
834
+ constructor(channel, opts = {}) {
835
+ let events = opts.events || /** @type {PresenceEvents} */
836
+ { state: "presence_state", diff: "presence_diff" };
837
+ this.state = {};
838
+ this.pendingDiffs = [];
839
+ this.channel = channel;
840
+ this.joinRef = null;
841
+ this.caller = {
842
+ onJoin: function() {
843
+ },
844
+ onLeave: function() {
845
+ },
846
+ onSync: function() {
847
+ }
848
+ };
849
+ this.channel.on(events.state, (newState) => {
850
+ let { onJoin, onLeave, onSync } = this.caller;
851
+ this.joinRef = this.channel.joinRef();
852
+ this.state = _Presence.syncState(this.state, newState, onJoin, onLeave);
853
+ this.pendingDiffs.forEach((diff) => {
854
+ this.state = _Presence.syncDiff(this.state, diff, onJoin, onLeave);
855
+ });
856
+ this.pendingDiffs = [];
857
+ onSync();
858
+ });
859
+ this.channel.on(events.diff, (diff) => {
860
+ let { onJoin, onLeave, onSync } = this.caller;
861
+ if (this.inPendingSyncState()) {
862
+ this.pendingDiffs.push(diff);
863
+ } else {
864
+ this.state = _Presence.syncDiff(this.state, diff, onJoin, onLeave);
865
+ onSync();
866
+ }
867
+ });
868
+ }
869
+ /**
870
+ * @param {PresenceOnJoin} callback
871
+ */
872
+ onJoin(callback) {
873
+ this.caller.onJoin = callback;
874
+ }
875
+ /**
876
+ * @param {PresenceOnLeave} callback
877
+ */
878
+ onLeave(callback) {
879
+ this.caller.onLeave = callback;
880
+ }
881
+ /**
882
+ * @param {PresenceOnSync} callback
883
+ */
884
+ onSync(callback) {
885
+ this.caller.onSync = callback;
886
+ }
887
+ /**
888
+ * Returns the array of presences, with selected metadata.
889
+ *
890
+ * @template [T=PresenceState]
891
+ * @param {((key: string, obj: PresenceState) => T)} [by]
892
+ *
893
+ * @returns {T[]}
894
+ */
895
+ list(by) {
896
+ return _Presence.list(this.state, by);
897
+ }
898
+ inPendingSyncState() {
899
+ return !this.joinRef || this.joinRef !== this.channel.joinRef();
900
+ }
901
+ // lower-level public static API
902
+ /**
903
+ * Used to sync the list of presences on the server
904
+ * with the client's state. An optional `onJoin` and `onLeave` callback can
905
+ * be provided to react to changes in the client's local presences across
906
+ * disconnects and reconnects with the server.
907
+ *
908
+ * @param {Record<string, PresenceState>} currentState
909
+ * @param {Record<string, PresenceState>} newState
910
+ * @param {PresenceOnJoin} onJoin
911
+ * @param {PresenceOnLeave} onLeave
912
+ *
913
+ * @returns {Record<string, PresenceState>}
914
+ */
915
+ static syncState(currentState, newState, onJoin, onLeave) {
916
+ let state = this.clone(currentState);
917
+ let joins = {};
918
+ let leaves = {};
919
+ this.map(state, (key, presence) => {
920
+ if (!newState[key]) {
921
+ leaves[key] = presence;
922
+ }
923
+ });
924
+ this.map(newState, (key, newPresence) => {
925
+ let currentPresence = state[key];
926
+ if (currentPresence) {
927
+ let newRefs = newPresence.metas.map((m) => m.phx_ref);
928
+ let curRefs = currentPresence.metas.map((m) => m.phx_ref);
929
+ let joinedMetas = newPresence.metas.filter((m) => curRefs.indexOf(m.phx_ref) < 0);
930
+ let leftMetas = currentPresence.metas.filter((m) => newRefs.indexOf(m.phx_ref) < 0);
931
+ if (joinedMetas.length > 0) {
932
+ joins[key] = newPresence;
933
+ joins[key].metas = joinedMetas;
934
+ }
935
+ if (leftMetas.length > 0) {
936
+ leaves[key] = this.clone(currentPresence);
937
+ leaves[key].metas = leftMetas;
938
+ }
939
+ } else {
940
+ joins[key] = newPresence;
941
+ }
942
+ });
943
+ return this.syncDiff(state, { joins, leaves }, onJoin, onLeave);
944
+ }
945
+ /**
946
+ *
947
+ * Used to sync a diff of presence join and leave
948
+ * events from the server, as they happen. Like `syncState`, `syncDiff`
949
+ * accepts optional `onJoin` and `onLeave` callbacks to react to a user
950
+ * joining or leaving from a device.
951
+ *
952
+ * @param {Record<string, PresenceState>} state
953
+ * @param {PresenceDiff} diff
954
+ * @param {PresenceOnJoin} onJoin
955
+ * @param {PresenceOnLeave} onLeave
956
+ *
957
+ * @returns {Record<string, PresenceState>}
958
+ */
959
+ static syncDiff(state, diff, onJoin, onLeave) {
960
+ let { joins, leaves } = this.clone(diff);
961
+ if (!onJoin) {
962
+ onJoin = function() {
963
+ };
964
+ }
965
+ if (!onLeave) {
966
+ onLeave = function() {
967
+ };
968
+ }
969
+ this.map(joins, (key, newPresence) => {
970
+ let currentPresence = state[key];
971
+ state[key] = this.clone(newPresence);
972
+ if (currentPresence) {
973
+ let joinedRefs = state[key].metas.map((m) => m.phx_ref);
974
+ let curMetas = currentPresence.metas.filter((m) => joinedRefs.indexOf(m.phx_ref) < 0);
975
+ state[key].metas.unshift(...curMetas);
976
+ }
977
+ onJoin(key, currentPresence, newPresence);
978
+ });
979
+ this.map(leaves, (key, leftPresence) => {
980
+ let currentPresence = state[key];
981
+ if (!currentPresence) {
982
+ return;
983
+ }
984
+ let refsToRemove = leftPresence.metas.map((m) => m.phx_ref);
985
+ currentPresence.metas = currentPresence.metas.filter((p) => {
986
+ return refsToRemove.indexOf(p.phx_ref) < 0;
987
+ });
988
+ onLeave(key, currentPresence, leftPresence);
989
+ if (currentPresence.metas.length === 0) {
990
+ delete state[key];
991
+ }
992
+ });
993
+ return state;
994
+ }
995
+ /**
996
+ * Returns the array of presences, with selected metadata.
997
+ *
998
+ * @template [T=PresenceState]
999
+ * @param {Record<string, PresenceState>} presences
1000
+ * @param {((key: string, obj: PresenceState) => T)} [chooser]
1001
+ *
1002
+ * @returns {T[]}
1003
+ */
1004
+ static list(presences, chooser) {
1005
+ if (!chooser) {
1006
+ chooser = function(key, pres) {
1007
+ return pres;
1008
+ };
1009
+ }
1010
+ return this.map(presences, (key, presence) => {
1011
+ return chooser(key, presence);
1012
+ });
1013
+ }
1014
+ // private
1015
+ /**
1016
+ * @template T
1017
+ * @param {Record<string, PresenceState>} obj
1018
+ * @param {(key: string, obj: PresenceState) => T} func
1019
+ */
1020
+ static map(obj, func) {
1021
+ return Object.getOwnPropertyNames(obj).map((key) => func(key, obj[key]));
1022
+ }
1023
+ /**
1024
+ * @template T
1025
+ * @param {T} obj
1026
+ * @returns {T}
1027
+ */
1028
+ static clone(obj) {
1029
+ return JSON.parse(JSON.stringify(obj));
1030
+ }
1031
+ };
1032
+
1033
+ // js/phoenix/serializer.js
1034
+ var serializer_default = {
1035
+ HEADER_LENGTH: 1,
1036
+ META_LENGTH: 4,
1037
+ KINDS: { push: 0, reply: 1, broadcast: 2 },
1038
+ /**
1039
+ * @template T
1040
+ * @param {Message<Record<string, any>>} msg
1041
+ * @param {(msg: ArrayBuffer | string) => T} callback
1042
+ * @returns {T}
1043
+ */
1044
+ encode(msg, callback) {
1045
+ if (msg.payload.constructor === ArrayBuffer) {
1046
+ return callback(this.binaryEncode(msg));
1047
+ } else {
1048
+ let payload = [msg.join_ref, msg.ref, msg.topic, msg.event, msg.payload];
1049
+ return callback(JSON.stringify(payload));
1050
+ }
1051
+ },
1052
+ /**
1053
+ * @template T
1054
+ * @param {ArrayBuffer | string} rawPayload
1055
+ * @param {(msg: Message<unknown>) => T} callback
1056
+ * @returns {T}
1057
+ */
1058
+ decode(rawPayload, callback) {
1059
+ if (rawPayload.constructor === ArrayBuffer) {
1060
+ return callback(this.binaryDecode(rawPayload));
1061
+ } else {
1062
+ let [join_ref, ref, topic, event, payload] = JSON.parse(rawPayload);
1063
+ return callback({ join_ref, ref, topic, event, payload });
1064
+ }
1065
+ },
1066
+ /** @private */
1067
+ binaryEncode(message) {
1068
+ let { join_ref, ref, event, topic, payload } = message;
1069
+ let metaLength = this.META_LENGTH + join_ref.length + ref.length + topic.length + event.length;
1070
+ let header = new ArrayBuffer(this.HEADER_LENGTH + metaLength);
1071
+ let view = new DataView(header);
1072
+ let offset = 0;
1073
+ view.setUint8(offset++, this.KINDS.push);
1074
+ view.setUint8(offset++, join_ref.length);
1075
+ view.setUint8(offset++, ref.length);
1076
+ view.setUint8(offset++, topic.length);
1077
+ view.setUint8(offset++, event.length);
1078
+ Array.from(join_ref, (char) => view.setUint8(offset++, char.charCodeAt(0)));
1079
+ Array.from(ref, (char) => view.setUint8(offset++, char.charCodeAt(0)));
1080
+ Array.from(topic, (char) => view.setUint8(offset++, char.charCodeAt(0)));
1081
+ Array.from(event, (char) => view.setUint8(offset++, char.charCodeAt(0)));
1082
+ var combined = new Uint8Array(header.byteLength + payload.byteLength);
1083
+ combined.set(new Uint8Array(header), 0);
1084
+ combined.set(new Uint8Array(payload), header.byteLength);
1085
+ return combined.buffer;
1086
+ },
1087
+ /**
1088
+ * @private
1089
+ */
1090
+ binaryDecode(buffer) {
1091
+ let view = new DataView(buffer);
1092
+ let kind = view.getUint8(0);
1093
+ let decoder = new TextDecoder();
1094
+ switch (kind) {
1095
+ case this.KINDS.push:
1096
+ return this.decodePush(buffer, view, decoder);
1097
+ case this.KINDS.reply:
1098
+ return this.decodeReply(buffer, view, decoder);
1099
+ case this.KINDS.broadcast:
1100
+ return this.decodeBroadcast(buffer, view, decoder);
1101
+ }
1102
+ },
1103
+ /** @private */
1104
+ decodePush(buffer, view, decoder) {
1105
+ let joinRefSize = view.getUint8(1);
1106
+ let topicSize = view.getUint8(2);
1107
+ let eventSize = view.getUint8(3);
1108
+ let offset = this.HEADER_LENGTH + this.META_LENGTH - 1;
1109
+ let joinRef = decoder.decode(buffer.slice(offset, offset + joinRefSize));
1110
+ offset = offset + joinRefSize;
1111
+ let topic = decoder.decode(buffer.slice(offset, offset + topicSize));
1112
+ offset = offset + topicSize;
1113
+ let event = decoder.decode(buffer.slice(offset, offset + eventSize));
1114
+ offset = offset + eventSize;
1115
+ let data = buffer.slice(offset, buffer.byteLength);
1116
+ return { join_ref: joinRef, ref: null, topic, event, payload: data };
1117
+ },
1118
+ /** @private */
1119
+ decodeReply(buffer, view, decoder) {
1120
+ let joinRefSize = view.getUint8(1);
1121
+ let refSize = view.getUint8(2);
1122
+ let topicSize = view.getUint8(3);
1123
+ let eventSize = view.getUint8(4);
1124
+ let offset = this.HEADER_LENGTH + this.META_LENGTH;
1125
+ let joinRef = decoder.decode(buffer.slice(offset, offset + joinRefSize));
1126
+ offset = offset + joinRefSize;
1127
+ let ref = decoder.decode(buffer.slice(offset, offset + refSize));
1128
+ offset = offset + refSize;
1129
+ let topic = decoder.decode(buffer.slice(offset, offset + topicSize));
1130
+ offset = offset + topicSize;
1131
+ let event = decoder.decode(buffer.slice(offset, offset + eventSize));
1132
+ offset = offset + eventSize;
1133
+ let data = buffer.slice(offset, buffer.byteLength);
1134
+ let payload = { status: event, response: data };
1135
+ return { join_ref: joinRef, ref, topic, event: CHANNEL_EVENTS.reply, payload };
1136
+ },
1137
+ /** @private */
1138
+ decodeBroadcast(buffer, view, decoder) {
1139
+ let topicSize = view.getUint8(1);
1140
+ let eventSize = view.getUint8(2);
1141
+ let offset = this.HEADER_LENGTH + 2;
1142
+ let topic = decoder.decode(buffer.slice(offset, offset + topicSize));
1143
+ offset = offset + topicSize;
1144
+ let event = decoder.decode(buffer.slice(offset, offset + eventSize));
1145
+ offset = offset + eventSize;
1146
+ let data = buffer.slice(offset, buffer.byteLength);
1147
+ return { join_ref: null, ref: null, topic, event, payload: data };
1148
+ }
1149
+ };
1150
+
1151
+ // js/phoenix/socket.js
1152
+ var Socket = class {
1153
+ /** Initializes the Socket *
1154
+ *
1155
+ * For IE8 support use an ES5-shim (https://github.com/es-shims/es5-shim)
1156
+ *
1157
+ * @constructor
1158
+ * @param {string} endPoint - The string WebSocket endpoint, ie, `"ws://example.com/socket"`,
1159
+ * `"wss://example.com"`
1160
+ * `"/socket"` (inherited host & protocol)
1161
+ * @param {SocketOptions} [opts] - Optional configuration
1162
+ */
1163
+ constructor(endPoint, opts = {}) {
1164
+ this.stateChangeCallbacks = { open: [], close: [], error: [], message: [] };
1165
+ this.channels = [];
1166
+ this.sendBuffer = [];
1167
+ this.ref = 0;
1168
+ this.fallbackRef = null;
1169
+ this.timeout = opts.timeout || DEFAULT_TIMEOUT;
1170
+ this.transport = opts.transport || global.WebSocket || LongPoll;
1171
+ this.conn = void 0;
1172
+ this.primaryPassedHealthCheck = false;
1173
+ this.longPollFallbackMs = opts.longPollFallbackMs;
1174
+ this.fallbackTimer = null;
1175
+ let envSessionStorage = null;
1176
+ try {
1177
+ envSessionStorage = global && global.sessionStorage;
1178
+ } catch {
1179
+ }
1180
+ this.sessionStore = opts.sessionStorage || envSessionStorage;
1181
+ this.establishedConnections = 0;
1182
+ this.defaultEncoder = serializer_default.encode.bind(serializer_default);
1183
+ this.defaultDecoder = serializer_default.decode.bind(serializer_default);
1184
+ this.closeWasClean = true;
1185
+ this.disconnecting = false;
1186
+ this.binaryType = opts.binaryType || "arraybuffer";
1187
+ this.connectClock = 1;
1188
+ this.pageHidden = false;
1189
+ this.encode = void 0;
1190
+ this.decode = void 0;
1191
+ if (this.transport !== LongPoll) {
1192
+ this.encode = opts.encode || this.defaultEncoder;
1193
+ this.decode = opts.decode || this.defaultDecoder;
1194
+ } else {
1195
+ this.encode = this.defaultEncoder;
1196
+ this.decode = this.defaultDecoder;
1197
+ }
1198
+ let awaitingConnectionOnPageShow = null;
1199
+ if (phxWindow && phxWindow.addEventListener) {
1200
+ phxWindow.addEventListener("pagehide", (_e) => {
1201
+ if (this.conn) {
1202
+ this.disconnect();
1203
+ awaitingConnectionOnPageShow = this.connectClock;
1204
+ }
1205
+ });
1206
+ phxWindow.addEventListener("pageshow", (_e) => {
1207
+ if (awaitingConnectionOnPageShow === this.connectClock) {
1208
+ awaitingConnectionOnPageShow = null;
1209
+ this.connect();
1210
+ }
1211
+ });
1212
+ phxWindow.addEventListener("visibilitychange", () => {
1213
+ if (document.visibilityState === "hidden") {
1214
+ this.pageHidden = true;
1215
+ } else {
1216
+ this.pageHidden = false;
1217
+ if (!this.isConnected() && !this.closeWasClean) {
1218
+ this.teardown(() => this.connect());
1219
+ }
1220
+ }
1221
+ });
1222
+ }
1223
+ this.heartbeatIntervalMs = opts.heartbeatIntervalMs || 3e4;
1224
+ this.autoSendHeartbeat = opts.autoSendHeartbeat ?? true;
1225
+ this.heartbeatCallback = opts.heartbeatCallback ?? (() => {
1226
+ });
1227
+ this.rejoinAfterMs = (tries) => {
1228
+ if (opts.rejoinAfterMs) {
1229
+ return opts.rejoinAfterMs(tries);
1230
+ } else {
1231
+ return [1e3, 2e3, 5e3][tries - 1] || 1e4;
1232
+ }
1233
+ };
1234
+ this.reconnectAfterMs = (tries) => {
1235
+ if (opts.reconnectAfterMs) {
1236
+ return opts.reconnectAfterMs(tries);
1237
+ } else {
1238
+ return [10, 50, 100, 150, 200, 250, 500, 1e3, 2e3][tries - 1] || 5e3;
1239
+ }
1240
+ };
1241
+ this.logger = opts.logger || null;
1242
+ if (!this.logger && opts.debug) {
1243
+ this.logger = (kind, msg, data) => {
1244
+ console.log(`${kind}: ${msg}`, data);
1245
+ };
1246
+ }
1247
+ this.longpollerTimeout = opts.longpollerTimeout || 2e4;
1248
+ this.params = closure(opts.params || {});
1249
+ this.endPoint = `${endPoint}/${TRANSPORTS.websocket}`;
1250
+ this.vsn = opts.vsn || DEFAULT_VSN;
1251
+ this.heartbeatTimeoutTimer = null;
1252
+ this.heartbeatTimer = null;
1253
+ this.heartbeatSentAt = null;
1254
+ this.pendingHeartbeatRef = null;
1255
+ this.reconnectTimer = new Timer(() => {
1256
+ if (this.pageHidden) {
1257
+ this.log("Not reconnecting as page is hidden!");
1258
+ this.teardown();
1259
+ return;
1260
+ }
1261
+ this.teardown(async () => {
1262
+ if (opts.beforeReconnect) await opts.beforeReconnect();
1263
+ this.connect();
1264
+ });
1265
+ }, this.reconnectAfterMs);
1266
+ this.authToken = opts.authToken;
1267
+ }
1268
+ /**
1269
+ * Returns the LongPoll transport reference
1270
+ */
1271
+ getLongPollTransport() {
1272
+ return LongPoll;
1273
+ }
1274
+ /**
1275
+ * Disconnects and replaces the active transport
1276
+ *
1277
+ * @param {SocketTransport} newTransport - The new transport class to instantiate
1278
+ *
1279
+ */
1280
+ replaceTransport(newTransport) {
1281
+ this.connectClock++;
1282
+ this.closeWasClean = true;
1283
+ clearTimeout(this.fallbackTimer);
1284
+ this.reconnectTimer.reset();
1285
+ if (this.conn) {
1286
+ this.conn.close();
1287
+ this.conn = null;
1288
+ }
1289
+ this.transport = newTransport;
1290
+ }
1291
+ /**
1292
+ * Returns the socket protocol
1293
+ *
1294
+ * @returns {"wss" | "ws"}
1295
+ */
1296
+ protocol() {
1297
+ return location.protocol.match(/^https/) ? "wss" : "ws";
1298
+ }
1299
+ /**
1300
+ * The fully qualified socket url
1301
+ *
1302
+ * @returns {string}
1303
+ */
1304
+ endPointURL() {
1305
+ let uri = Ajax.appendParams(
1306
+ Ajax.appendParams(this.endPoint, this.params()),
1307
+ { vsn: this.vsn }
1308
+ );
1309
+ if (uri.charAt(0) !== "/") {
1310
+ return uri;
1311
+ }
1312
+ if (uri.charAt(1) === "/") {
1313
+ return `${this.protocol()}:${uri}`;
1314
+ }
1315
+ return `${this.protocol()}://${location.host}${uri}`;
1316
+ }
1317
+ /**
1318
+ * Disconnects the socket
1319
+ *
1320
+ * See https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent#Status_codes for valid status codes.
1321
+ *
1322
+ * @param {() => void} [callback] - Optional callback which is called after socket is disconnected.
1323
+ * @param {number} [code] - A status code for disconnection (Optional).
1324
+ * @param {string} [reason] - A textual description of the reason to disconnect. (Optional)
1325
+ */
1326
+ disconnect(callback, code, reason) {
1327
+ this.connectClock++;
1328
+ this.disconnecting = true;
1329
+ this.closeWasClean = true;
1330
+ clearTimeout(this.fallbackTimer);
1331
+ this.reconnectTimer.reset();
1332
+ this.teardown(() => {
1333
+ this.disconnecting = false;
1334
+ callback && callback();
1335
+ }, code, reason);
1336
+ }
1337
+ /**
1338
+ * @param {Params} [params] - [DEPRECATED] The params to send when connecting, for example `{user_id: userToken}`
1339
+ *
1340
+ * Passing params to connect is deprecated; pass them in the Socket constructor instead:
1341
+ * `new Socket("/socket", {params: {user_id: userToken}})`.
1342
+ */
1343
+ connect(params) {
1344
+ if (params) {
1345
+ console && console.log("passing params to connect is deprecated. Instead pass :params to the Socket constructor");
1346
+ this.params = closure(params);
1347
+ }
1348
+ if (this.conn && !this.disconnecting) {
1349
+ return;
1350
+ }
1351
+ if (this.longPollFallbackMs && this.transport !== LongPoll) {
1352
+ this.connectWithFallback(LongPoll, this.longPollFallbackMs);
1353
+ } else {
1354
+ this.transportConnect();
1355
+ }
1356
+ }
1357
+ /**
1358
+ * Logs the message. Override `this.logger` for specialized logging. noops by default
1359
+ * @param {string} kind
1360
+ * @param {string} msg
1361
+ * @param {Object} data
1362
+ */
1363
+ log(kind, msg, data) {
1364
+ this.logger && this.logger(kind, msg, data);
1365
+ }
1366
+ /**
1367
+ * Returns true if a logger has been set on this socket.
1368
+ */
1369
+ hasLogger() {
1370
+ return this.logger !== null;
1371
+ }
1372
+ /**
1373
+ * Registers callbacks for connection open events
1374
+ *
1375
+ * @example socket.onOpen(function(){ console.info("the socket was opened") })
1376
+ *
1377
+ * @param {SocketOnOpen} callback
1378
+ */
1379
+ onOpen(callback) {
1380
+ let ref = this.makeRef();
1381
+ this.stateChangeCallbacks.open.push([ref, callback]);
1382
+ return ref;
1383
+ }
1384
+ /**
1385
+ * Registers callbacks for connection close events
1386
+ * @param {SocketOnClose} callback
1387
+ * @returns {string}
1388
+ */
1389
+ onClose(callback) {
1390
+ let ref = this.makeRef();
1391
+ this.stateChangeCallbacks.close.push([ref, callback]);
1392
+ return ref;
1393
+ }
1394
+ /**
1395
+ * Registers callbacks for connection error events
1396
+ *
1397
+ * @example socket.onError(function(error){ alert("An error occurred") })
1398
+ *
1399
+ * @param {SocketOnError} callback
1400
+ * @returns {string}
1401
+ */
1402
+ onError(callback) {
1403
+ let ref = this.makeRef();
1404
+ this.stateChangeCallbacks.error.push([ref, callback]);
1405
+ return ref;
1406
+ }
1407
+ /**
1408
+ * Registers callbacks for connection message events
1409
+ * @param {SocketOnMessage} callback
1410
+ * @returns {string}
1411
+ */
1412
+ onMessage(callback) {
1413
+ let ref = this.makeRef();
1414
+ this.stateChangeCallbacks.message.push([ref, callback]);
1415
+ return ref;
1416
+ }
1417
+ /**
1418
+ * Sets a callback that receives lifecycle events for internal heartbeat messages.
1419
+ * Useful for instrumenting connection health (e.g. sent/ok/timeout/disconnected).
1420
+ * @param {HeartbeatCallback} callback
1421
+ */
1422
+ onHeartbeat(callback) {
1423
+ this.heartbeatCallback = callback;
1424
+ }
1425
+ /**
1426
+ * Pings the server and invokes the callback with the RTT in milliseconds
1427
+ * @param {(timeDelta: number) => void} callback
1428
+ *
1429
+ * Returns true if the ping was pushed or false if unable to be pushed.
1430
+ */
1431
+ ping(callback) {
1432
+ if (!this.isConnected()) {
1433
+ return false;
1434
+ }
1435
+ let ref = this.makeRef();
1436
+ let startTime = Date.now();
1437
+ this.push({ topic: "phoenix", event: "heartbeat", payload: {}, ref });
1438
+ let onMsgRef = this.onMessage((msg) => {
1439
+ if (msg.ref === ref) {
1440
+ this.off([onMsgRef]);
1441
+ callback(Date.now() - startTime);
1442
+ }
1443
+ });
1444
+ return true;
1445
+ }
1446
+ /**
1447
+ * @private
1448
+ *
1449
+ * @param {Function}
1450
+ */
1451
+ transportName(transport) {
1452
+ switch (transport) {
1453
+ case LongPoll:
1454
+ return "LongPoll";
1455
+ default:
1456
+ return transport.name;
1457
+ }
1458
+ }
1459
+ /**
1460
+ * @private
1461
+ */
1462
+ transportConnect() {
1463
+ this.connectClock++;
1464
+ this.closeWasClean = false;
1465
+ let protocols = void 0;
1466
+ if (this.authToken) {
1467
+ protocols = ["phoenix", `${AUTH_TOKEN_PREFIX}${btoa(this.authToken).replace(/=/g, "")}`];
1468
+ }
1469
+ this.conn = new this.transport(this.endPointURL(), protocols);
1470
+ this.conn.binaryType = this.binaryType;
1471
+ this.conn.timeout = this.longpollerTimeout;
1472
+ this.conn.onopen = () => this.onConnOpen();
1473
+ this.conn.onerror = (error) => this.onConnError(error);
1474
+ this.conn.onmessage = (event) => this.onConnMessage(event);
1475
+ this.conn.onclose = (event) => this.onConnClose(event);
1476
+ }
1477
+ getSession(key) {
1478
+ return this.sessionStore && this.sessionStore.getItem(key);
1479
+ }
1480
+ storeSession(key, val) {
1481
+ this.sessionStore && this.sessionStore.setItem(key, val);
1482
+ }
1483
+ connectWithFallback(fallbackTransport, fallbackThreshold = 2500) {
1484
+ clearTimeout(this.fallbackTimer);
1485
+ let established = false;
1486
+ let primaryTransport = true;
1487
+ let openRef, errorRef;
1488
+ let fallbackTransportName = this.transportName(fallbackTransport);
1489
+ let fallback = (reason) => {
1490
+ this.log("transport", `falling back to ${fallbackTransportName}...`, reason);
1491
+ this.off([openRef, errorRef]);
1492
+ primaryTransport = false;
1493
+ this.replaceTransport(fallbackTransport);
1494
+ this.transportConnect();
1495
+ };
1496
+ if (this.getSession(`phx:fallback:${fallbackTransportName}`)) {
1497
+ return fallback("memorized");
1498
+ }
1499
+ this.fallbackTimer = setTimeout(fallback, fallbackThreshold);
1500
+ errorRef = this.onError((reason) => {
1501
+ this.log("transport", "error", reason);
1502
+ if (primaryTransport && !established) {
1503
+ clearTimeout(this.fallbackTimer);
1504
+ fallback(reason);
1505
+ }
1506
+ });
1507
+ if (this.fallbackRef) {
1508
+ this.off([this.fallbackRef]);
1509
+ }
1510
+ this.fallbackRef = this.onOpen(() => {
1511
+ established = true;
1512
+ if (!primaryTransport) {
1513
+ let fallbackTransportName2 = this.transportName(fallbackTransport);
1514
+ if (!this.primaryPassedHealthCheck) {
1515
+ this.storeSession(`phx:fallback:${fallbackTransportName2}`, "true");
1516
+ }
1517
+ return this.log("transport", `established ${fallbackTransportName2} fallback`);
1518
+ }
1519
+ clearTimeout(this.fallbackTimer);
1520
+ this.fallbackTimer = setTimeout(fallback, fallbackThreshold);
1521
+ this.ping((rtt) => {
1522
+ this.log("transport", "connected to primary after", rtt);
1523
+ this.primaryPassedHealthCheck = true;
1524
+ clearTimeout(this.fallbackTimer);
1525
+ });
1526
+ });
1527
+ this.transportConnect();
1528
+ }
1529
+ clearHeartbeats() {
1530
+ clearTimeout(this.heartbeatTimer);
1531
+ clearTimeout(this.heartbeatTimeoutTimer);
1532
+ }
1533
+ onConnOpen() {
1534
+ if (this.hasLogger()) this.log("transport", `connected to ${this.endPointURL()}`);
1535
+ this.closeWasClean = false;
1536
+ this.disconnecting = false;
1537
+ this.establishedConnections++;
1538
+ this.flushSendBuffer();
1539
+ this.reconnectTimer.reset();
1540
+ if (this.autoSendHeartbeat) {
1541
+ this.resetHeartbeat();
1542
+ }
1543
+ this.triggerStateCallbacks("open");
1544
+ }
1545
+ /**
1546
+ * @private
1547
+ */
1548
+ heartbeatTimeout() {
1549
+ if (this.pendingHeartbeatRef) {
1550
+ this.pendingHeartbeatRef = null;
1551
+ this.heartbeatSentAt = null;
1552
+ if (this.hasLogger()) {
1553
+ this.log("transport", "heartbeat timeout. Attempting to re-establish connection");
1554
+ }
1555
+ try {
1556
+ this.heartbeatCallback("timeout");
1557
+ } catch (e) {
1558
+ this.log("error", "error in heartbeat callback", e);
1559
+ }
1560
+ this.triggerChanError(new Error("heartbeat timeout"));
1561
+ this.closeWasClean = false;
1562
+ this.teardown(() => this.reconnectTimer.scheduleTimeout(), WS_CLOSE_NORMAL, "heartbeat timeout");
1563
+ }
1564
+ }
1565
+ resetHeartbeat() {
1566
+ if (this.conn && this.conn.skipHeartbeat) {
1567
+ return;
1568
+ }
1569
+ this.pendingHeartbeatRef = null;
1570
+ this.clearHeartbeats();
1571
+ this.heartbeatTimer = setTimeout(() => this.sendHeartbeat(), this.heartbeatIntervalMs);
1572
+ }
1573
+ teardown(callback, code, reason) {
1574
+ if (!this.conn) {
1575
+ return callback && callback();
1576
+ }
1577
+ const connToClose = this.conn;
1578
+ this.waitForBufferDone(connToClose, () => {
1579
+ if (code) {
1580
+ connToClose.close(code, reason || "");
1581
+ } else {
1582
+ connToClose.close();
1583
+ }
1584
+ this.waitForSocketClosed(connToClose, () => {
1585
+ if (this.conn === connToClose) {
1586
+ this.conn.onopen = function() {
1587
+ };
1588
+ this.conn.onerror = function() {
1589
+ };
1590
+ this.conn.onmessage = function() {
1591
+ };
1592
+ this.conn.onclose = function() {
1593
+ };
1594
+ this.conn = null;
1595
+ }
1596
+ callback && callback();
1597
+ });
1598
+ });
1599
+ }
1600
+ waitForBufferDone(conn, callback, tries = 1) {
1601
+ if (tries === 5 || !conn.bufferedAmount) {
1602
+ callback();
1603
+ return;
1604
+ }
1605
+ setTimeout(() => {
1606
+ this.waitForBufferDone(conn, callback, tries + 1);
1607
+ }, 150 * tries);
1608
+ }
1609
+ waitForSocketClosed(conn, callback, tries = 1) {
1610
+ if (tries === 5 || conn.readyState === SOCKET_STATES.closed) {
1611
+ callback();
1612
+ return;
1613
+ }
1614
+ setTimeout(() => {
1615
+ this.waitForSocketClosed(conn, callback, tries + 1);
1616
+ }, 150 * tries);
1617
+ }
1618
+ /**
1619
+ * @param {CloseEvent} event
1620
+ */
1621
+ onConnClose(event) {
1622
+ if (this.conn) this.conn.onclose = () => {
1623
+ };
1624
+ if (this.hasLogger()) this.log("transport", "close", event);
1625
+ this.triggerChanError(event);
1626
+ this.clearHeartbeats();
1627
+ if (!this.closeWasClean) {
1628
+ this.reconnectTimer.scheduleTimeout();
1629
+ }
1630
+ this.triggerStateCallbacks("close", event);
1631
+ }
1632
+ /**
1633
+ * @private
1634
+ * @param {Event} error
1635
+ */
1636
+ onConnError(error) {
1637
+ if (this.hasLogger()) this.log("transport", "error", error);
1638
+ let transportBefore = this.transport;
1639
+ let establishedBefore = this.establishedConnections;
1640
+ this.triggerStateCallbacks("error", error, transportBefore, establishedBefore);
1641
+ if (transportBefore === this.transport || establishedBefore > 0) {
1642
+ this.triggerChanError(error);
1643
+ }
1644
+ }
1645
+ /**
1646
+ * @private
1647
+ * @param {unknown} [reason] underlying close/error event forwarded to channel error listeners
1648
+ */
1649
+ triggerChanError(reason) {
1650
+ this.channels.forEach((channel) => {
1651
+ if (!(channel.isErrored() || channel.isLeaving() || channel.isClosed())) {
1652
+ channel.trigger(CHANNEL_EVENTS.error, reason);
1653
+ }
1654
+ });
1655
+ }
1656
+ /**
1657
+ * @returns {string}
1658
+ */
1659
+ connectionState() {
1660
+ switch (this.conn && this.conn.readyState) {
1661
+ case SOCKET_STATES.connecting:
1662
+ return "connecting";
1663
+ case SOCKET_STATES.open:
1664
+ return "open";
1665
+ case SOCKET_STATES.closing:
1666
+ return "closing";
1667
+ default:
1668
+ return "closed";
1669
+ }
1670
+ }
1671
+ /**
1672
+ * @returns {boolean}
1673
+ */
1674
+ isConnected() {
1675
+ return this.connectionState() === "open";
1676
+ }
1677
+ /**
1678
+ *
1679
+ * @param {Channel} channel
1680
+ */
1681
+ remove(channel) {
1682
+ this.off(channel.stateChangeRefs);
1683
+ this.channels = this.channels.filter((c) => c !== channel);
1684
+ }
1685
+ /**
1686
+ * Removes `onOpen`, `onClose`, `onError,` and `onMessage` registrations.
1687
+ *
1688
+ * @param {string[]} refs - list of refs returned by calls to
1689
+ * `onOpen`, `onClose`, `onError,` and `onMessage`
1690
+ */
1691
+ off(refs) {
1692
+ for (let key in this.stateChangeCallbacks) {
1693
+ this.stateChangeCallbacks[key] = this.stateChangeCallbacks[key].filter(([ref]) => {
1694
+ return refs.indexOf(ref) === -1;
1695
+ });
1696
+ }
1697
+ }
1698
+ /**
1699
+ * Initiates a new channel for the given topic
1700
+ *
1701
+ * @param {string} topic
1702
+ * @param {Params | (() => Params)} [chanParams]- Parameters for the channel
1703
+ * @returns {Channel}
1704
+ */
1705
+ channel(topic, chanParams = {}) {
1706
+ let chan = new Channel(topic, chanParams, this);
1707
+ this.channels.push(chan);
1708
+ return chan;
1709
+ }
1710
+ /**
1711
+ * @param {Message<Record<string, any>>} data
1712
+ */
1713
+ push(data) {
1714
+ if (this.hasLogger()) {
1715
+ let { topic, event, payload, ref, join_ref } = data;
1716
+ this.log("push", `${topic} ${event} (${join_ref}, ${ref})`, payload);
1717
+ }
1718
+ if (this.isConnected()) {
1719
+ this.encode(data, (result) => this.conn.send(result));
1720
+ } else {
1721
+ this.sendBuffer.push(() => this.encode(data, (result) => this.conn.send(result)));
1722
+ }
1723
+ }
1724
+ /**
1725
+ * Return the next message ref, accounting for overflows
1726
+ * @returns {string}
1727
+ */
1728
+ makeRef() {
1729
+ let newRef = this.ref + 1;
1730
+ if (newRef === this.ref) {
1731
+ this.ref = 0;
1732
+ } else {
1733
+ this.ref = newRef;
1734
+ }
1735
+ return this.ref.toString();
1736
+ }
1737
+ sendHeartbeat() {
1738
+ if (!this.isConnected()) {
1739
+ try {
1740
+ this.heartbeatCallback("disconnected");
1741
+ } catch (e) {
1742
+ this.log("error", "error in heartbeat callback", e);
1743
+ }
1744
+ return;
1745
+ }
1746
+ if (this.pendingHeartbeatRef) {
1747
+ this.heartbeatTimeout();
1748
+ return;
1749
+ }
1750
+ this.pendingHeartbeatRef = this.makeRef();
1751
+ this.heartbeatSentAt = Date.now();
1752
+ this.push({ topic: "phoenix", event: "heartbeat", payload: {}, ref: this.pendingHeartbeatRef });
1753
+ try {
1754
+ this.heartbeatCallback("sent");
1755
+ } catch (e) {
1756
+ this.log("error", "error in heartbeat callback", e);
1757
+ }
1758
+ this.heartbeatTimeoutTimer = setTimeout(() => this.heartbeatTimeout(), this.heartbeatIntervalMs);
1759
+ }
1760
+ flushSendBuffer() {
1761
+ if (this.isConnected() && this.sendBuffer.length > 0) {
1762
+ this.sendBuffer.forEach((callback) => callback());
1763
+ this.sendBuffer = [];
1764
+ }
1765
+ }
1766
+ /**
1767
+ * @param {MessageEvent<any>} rawMessage
1768
+ */
1769
+ onConnMessage(rawMessage) {
1770
+ this.decode(rawMessage.data, (msg) => {
1771
+ let { topic, event, payload, ref, join_ref } = msg;
1772
+ if (ref && ref === this.pendingHeartbeatRef) {
1773
+ const latency = this.heartbeatSentAt ? Date.now() - this.heartbeatSentAt : void 0;
1774
+ this.clearHeartbeats();
1775
+ try {
1776
+ this.heartbeatCallback(payload.status === "ok" ? "ok" : "error", latency);
1777
+ } catch (e) {
1778
+ this.log("error", "error in heartbeat callback", e);
1779
+ }
1780
+ this.pendingHeartbeatRef = null;
1781
+ this.heartbeatSentAt = null;
1782
+ if (this.autoSendHeartbeat) {
1783
+ this.heartbeatTimer = setTimeout(() => this.sendHeartbeat(), this.heartbeatIntervalMs);
1784
+ }
1785
+ }
1786
+ if (this.hasLogger()) this.log("receive", `${payload.status || ""} ${topic} ${event} ${ref && "(" + ref + ")" || ""}`.trim(), payload);
1787
+ for (let i = 0; i < this.channels.length; i++) {
1788
+ const channel = this.channels[i];
1789
+ if (!channel.isMember(topic, event, payload, join_ref)) {
1790
+ continue;
1791
+ }
1792
+ channel.trigger(event, payload, ref, join_ref);
1793
+ }
1794
+ this.triggerStateCallbacks("message", msg);
1795
+ });
1796
+ }
1797
+ /**
1798
+ * @private
1799
+ * @template {keyof SocketStateChangeCallbacks} K
1800
+ * @param {K} event
1801
+ * @param {...Parameters<SocketStateChangeCallbacks[K][number][1]>} args
1802
+ * @returns {void}
1803
+ */
1804
+ triggerStateCallbacks(event, ...args) {
1805
+ try {
1806
+ this.stateChangeCallbacks[event].forEach(([_, callback]) => {
1807
+ try {
1808
+ callback(...args);
1809
+ } catch (e) {
1810
+ this.log("error", `error in ${event} callback`, e);
1811
+ }
1812
+ });
1813
+ } catch (e) {
1814
+ this.log("error", `error triggering ${event} callbacks`, e);
1815
+ }
1816
+ }
1817
+ leaveOpenTopic(topic) {
1818
+ let dupChannel = this.channels.find((c) => c.topic === topic && (c.isJoined() || c.isJoining()));
1819
+ if (dupChannel) {
1820
+ if (this.hasLogger()) this.log("transport", `leaving duplicate topic "${topic}"`);
1821
+ dupChannel.leave();
1822
+ }
1823
+ }
1824
+ };
1825
+ //# sourceMappingURL=phoenix.cjs.js.map