@hubspot/app-connect-sdk 1.0.0-alpha.1

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 (833) hide show
  1. package/.turbo/turbo-format$colon$check.log +4 -0
  2. package/.turbo/turbo-lint.log +2 -0
  3. package/.turbo/turbo-test.log +76 -0
  4. package/.turbo/turbo-tsc.log +2 -0
  5. package/.turbo/turbo-tsdown.log +521 -0
  6. package/README.md +5 -0
  7. package/build/tsconfig.browser.tsbuildinfo +1 -0
  8. package/build/tsconfig.server.tsbuildinfo +1 -0
  9. package/dist/browser/HubSpotAppConnect-BW45gyDs.js +489 -0
  10. package/dist/browser/HubSpotAppConnect-BW45gyDs.js.map +1 -0
  11. package/dist/browser/assets/src/browser/react/components/AppConnectHeader/AppConnectHeader.css.ts.vanilla-DpJ0aBGF.css +211 -0
  12. package/dist/browser/assets/src/browser/react/components/Button/Button.css.ts.vanilla-Df16gUKx.css +42 -0
  13. package/dist/browser/assets/src/browser/react/components/ConnectButton/ConnectButton.css.ts.vanilla-BXXMQqfA.css +66 -0
  14. package/dist/browser/assets/src/browser/react/components/DisconnectedBody/DisconnectedBody.css.ts.vanilla-DLvostZL.css +19 -0
  15. package/dist/browser/assets/src/browser/react/components/HubSpotAppConnect/HubSpotAppConnect.css.ts.vanilla-Boi40eip.css +17 -0
  16. package/dist/browser/assets/src/browser/react/components/LoadingIndicator/LoadingIndicator.css.ts.vanilla-RVWGi6Ny.css +25 -0
  17. package/dist/browser/assets/src/browser/react/components/ShareButton/ShareButton.css.ts.vanilla-CY8SC-0T.css +40 -0
  18. package/dist/browser/assets/src/browser/theme-tokens.generated.css.ts.vanilla-C8Rjb8NH.css +220 -0
  19. package/dist/browser/assets/src/browser/theme.css.ts.vanilla-D_GBwEeI.css +12 -0
  20. package/dist/browser/create-vctOhpX9.js +517 -0
  21. package/dist/browser/create-vctOhpX9.js.map +1 -0
  22. package/dist/browser/index.d.ts +465 -0
  23. package/dist/browser/index.js +3 -0
  24. package/dist/browser/react/lovable.d.ts +30 -0
  25. package/dist/browser/react/lovable.js +23 -0
  26. package/dist/browser/react/lovable.js.map +1 -0
  27. package/dist/browser/react.d.ts +47 -0
  28. package/dist/browser/react.js +2 -0
  29. package/dist/browser/theme.css-CJbxi5hC.js +368 -0
  30. package/dist/browser/theme.css-CJbxi5hC.js.map +1 -0
  31. package/dist/browser/types-rTQw6A54.d.ts +79 -0
  32. package/dist/server/api-client-core/apis/account/account-info-types.generated.d.ts +111 -0
  33. package/dist/server/api-client-core/apis/account/account-info.generated.d.ts +7 -0
  34. package/dist/server/api-client-core/apis/account/account-info.generated.js +9 -0
  35. package/dist/server/api-client-core/apis/account/account-info.generated.js.map +1 -0
  36. package/dist/server/api-client-core/apis/account/audit-logs-types.generated.d.ts +247 -0
  37. package/dist/server/api-client-core/apis/account/audit-logs.generated.d.ts +7 -0
  38. package/dist/server/api-client-core/apis/account/audit-logs.generated.js +28 -0
  39. package/dist/server/api-client-core/apis/account/audit-logs.generated.js.map +1 -0
  40. package/dist/server/api-client-core/apis/auth/oauth-types.generated.d.ts +121 -0
  41. package/dist/server/api-client-core/apis/auth/oauth.generated.d.ts +7 -0
  42. package/dist/server/api-client-core/apis/auth/oauth.generated.js +19 -0
  43. package/dist/server/api-client-core/apis/auth/oauth.generated.js.map +1 -0
  44. package/dist/server/api-client-core/apis/automation/actions-types.generated.d.ts +933 -0
  45. package/dist/server/api-client-core/apis/automation/actions.generated.d.ts +7 -0
  46. package/dist/server/api-client-core/apis/automation/actions.generated.js +121 -0
  47. package/dist/server/api-client-core/apis/automation/actions.generated.js.map +1 -0
  48. package/dist/server/api-client-core/apis/automation/sequences-types.generated.d.ts +422 -0
  49. package/dist/server/api-client-core/apis/automation/sequences.generated.d.ts +7 -0
  50. package/dist/server/api-client-core/apis/automation/sequences.generated.js +22 -0
  51. package/dist/server/api-client-core/apis/automation/sequences.generated.js.map +1 -0
  52. package/dist/server/api-client-core/apis/business-units-types.generated.d.ts +75 -0
  53. package/dist/server/api-client-core/apis/business-units.generated.d.ts +7 -0
  54. package/dist/server/api-client-core/apis/business-units.generated.js +12 -0
  55. package/dist/server/api-client-core/apis/business-units.generated.js.map +1 -0
  56. package/dist/server/api-client-core/apis/cms/authors-types.generated.d.ts +551 -0
  57. package/dist/server/api-client-core/apis/cms/authors.generated.d.ts +7 -0
  58. package/dist/server/api-client-core/apis/cms/authors.generated.js +163 -0
  59. package/dist/server/api-client-core/apis/cms/authors.generated.js.map +1 -0
  60. package/dist/server/api-client-core/apis/cms/blog-settings-types.generated.d.ts +366 -0
  61. package/dist/server/api-client-core/apis/cms/blog-settings.generated.d.ts +7 -0
  62. package/dist/server/api-client-core/apis/cms/blog-settings.generated.js +43 -0
  63. package/dist/server/api-client-core/apis/cms/blog-settings.generated.js.map +1 -0
  64. package/dist/server/api-client-core/apis/cms/cms-content-audit-types.generated.d.ts +157 -0
  65. package/dist/server/api-client-core/apis/cms/cms-content-audit.generated.d.ts +7 -0
  66. package/dist/server/api-client-core/apis/cms/cms-content-audit.generated.js +18 -0
  67. package/dist/server/api-client-core/apis/cms/cms-content-audit.generated.js.map +1 -0
  68. package/dist/server/api-client-core/apis/cms/domains-types.generated.d.ts +193 -0
  69. package/dist/server/api-client-core/apis/cms/domains.generated.d.ts +7 -0
  70. package/dist/server/api-client-core/apis/cms/domains.generated.js +20 -0
  71. package/dist/server/api-client-core/apis/cms/domains.generated.js.map +1 -0
  72. package/dist/server/api-client-core/apis/cms/hubdb-types.generated.d.ts +1097 -0
  73. package/dist/server/api-client-core/apis/cms/hubdb.generated.d.ts +7 -0
  74. package/dist/server/api-client-core/apis/cms/hubdb.generated.js +192 -0
  75. package/dist/server/api-client-core/apis/cms/hubdb.generated.js.map +1 -0
  76. package/dist/server/api-client-core/apis/cms/media-bridge-types.generated.d.ts +1780 -0
  77. package/dist/server/api-client-core/apis/cms/media-bridge.generated.d.ts +7 -0
  78. package/dist/server/api-client-core/apis/cms/media-bridge.generated.js +185 -0
  79. package/dist/server/api-client-core/apis/cms/media-bridge.generated.js.map +1 -0
  80. package/dist/server/api-client-core/apis/cms/pages-types.generated.d.ts +1768 -0
  81. package/dist/server/api-client-core/apis/cms/pages.generated.d.ts +7 -0
  82. package/dist/server/api-client-core/apis/cms/pages.generated.js +331 -0
  83. package/dist/server/api-client-core/apis/cms/pages.generated.js.map +1 -0
  84. package/dist/server/api-client-core/apis/cms/posts-types.generated.d.ts +1090 -0
  85. package/dist/server/api-client-core/apis/cms/posts.generated.d.ts +7 -0
  86. package/dist/server/api-client-core/apis/cms/posts.generated.js +201 -0
  87. package/dist/server/api-client-core/apis/cms/posts.generated.js.map +1 -0
  88. package/dist/server/api-client-core/apis/cms/site-search-types.generated.d.ts +200 -0
  89. package/dist/server/api-client-core/apis/cms/site-search.generated.d.ts +7 -0
  90. package/dist/server/api-client-core/apis/cms/site-search.generated.js +32 -0
  91. package/dist/server/api-client-core/apis/cms/site-search.generated.js.map +1 -0
  92. package/dist/server/api-client-core/apis/cms/source-code-types.generated.d.ts +218 -0
  93. package/dist/server/api-client-core/apis/cms/source-code.generated.d.ts +7 -0
  94. package/dist/server/api-client-core/apis/cms/source-code.generated.js +52 -0
  95. package/dist/server/api-client-core/apis/cms/source-code.generated.js.map +1 -0
  96. package/dist/server/api-client-core/apis/cms/tags-types.generated.d.ts +515 -0
  97. package/dist/server/api-client-core/apis/cms/tags.generated.d.ts +7 -0
  98. package/dist/server/api-client-core/apis/cms/tags.generated.js +163 -0
  99. package/dist/server/api-client-core/apis/cms/tags.generated.js.map +1 -0
  100. package/dist/server/api-client-core/apis/cms/url-mappings-types.generated.d.ts +177 -0
  101. package/dist/server/api-client-core/apis/cms/url-mappings.generated.d.ts +7 -0
  102. package/dist/server/api-client-core/apis/cms/url-mappings.generated.js +14 -0
  103. package/dist/server/api-client-core/apis/cms/url-mappings.generated.js.map +1 -0
  104. package/dist/server/api-client-core/apis/cms/url-redirects-types.generated.d.ts +226 -0
  105. package/dist/server/api-client-core/apis/cms/url-redirects.generated.d.ts +7 -0
  106. package/dist/server/api-client-core/apis/cms/url-redirects.generated.js +26 -0
  107. package/dist/server/api-client-core/apis/cms/url-redirects.generated.js.map +1 -0
  108. package/dist/server/api-client-core/apis/communication-preferences/subscriptions-types.generated.d.ts +802 -0
  109. package/dist/server/api-client-core/apis/communication-preferences/subscriptions.generated.d.ts +7 -0
  110. package/dist/server/api-client-core/apis/communication-preferences/subscriptions.generated.js +74 -0
  111. package/dist/server/api-client-core/apis/communication-preferences/subscriptions.generated.js.map +1 -0
  112. package/dist/server/api-client-core/apis/conversations/custom-channels-types.generated.d.ts +551 -0
  113. package/dist/server/api-client-core/apis/conversations/custom-channels.generated.d.ts +7 -0
  114. package/dist/server/api-client-core/apis/conversations/custom-channels.generated.js +80 -0
  115. package/dist/server/api-client-core/apis/conversations/custom-channels.generated.js.map +1 -0
  116. package/dist/server/api-client-core/apis/conversations/visitor-identification-types.generated.d.ts +60 -0
  117. package/dist/server/api-client-core/apis/conversations/visitor-identification.generated.d.ts +7 -0
  118. package/dist/server/api-client-core/apis/conversations/visitor-identification.generated.js +6 -0
  119. package/dist/server/api-client-core/apis/conversations/visitor-identification.generated.js.map +1 -0
  120. package/dist/server/api-client-core/apis/conversations-types.generated.d.ts +908 -0
  121. package/dist/server/api-client-core/apis/conversations.generated.d.ts +7 -0
  122. package/dist/server/api-client-core/apis/conversations.generated.js +108 -0
  123. package/dist/server/api-client-core/apis/conversations.generated.js.map +1 -0
  124. package/dist/server/api-client-core/apis/crm/app-uninstalls-types.generated.d.ts +37 -0
  125. package/dist/server/api-client-core/apis/crm/app-uninstalls.generated.d.ts +7 -0
  126. package/dist/server/api-client-core/apis/crm/app-uninstalls.generated.js +6 -0
  127. package/dist/server/api-client-core/apis/crm/app-uninstalls.generated.js.map +1 -0
  128. package/dist/server/api-client-core/apis/crm/appointments-types.generated.d.ts +989 -0
  129. package/dist/server/api-client-core/apis/crm/appointments.generated.d.ts +7 -0
  130. package/dist/server/api-client-core/apis/crm/appointments.generated.js +118 -0
  131. package/dist/server/api-client-core/apis/crm/appointments.generated.js.map +1 -0
  132. package/dist/server/api-client-core/apis/crm/associations-schema-types.generated.d.ts +329 -0
  133. package/dist/server/api-client-core/apis/crm/associations-schema.generated.d.ts +7 -0
  134. package/dist/server/api-client-core/apis/crm/associations-schema.generated.js +60 -0
  135. package/dist/server/api-client-core/apis/crm/associations-schema.generated.js.map +1 -0
  136. package/dist/server/api-client-core/apis/crm/associations-types.generated.d.ts +661 -0
  137. package/dist/server/api-client-core/apis/crm/associations.generated.d.ts +7 -0
  138. package/dist/server/api-client-core/apis/crm/associations.generated.js +83 -0
  139. package/dist/server/api-client-core/apis/crm/associations.generated.js.map +1 -0
  140. package/dist/server/api-client-core/apis/crm/calling-extensions-types.generated.d.ts +466 -0
  141. package/dist/server/api-client-core/apis/crm/calling-extensions.generated.d.ts +7 -0
  142. package/dist/server/api-client-core/apis/crm/calling-extensions.generated.js +42 -0
  143. package/dist/server/api-client-core/apis/crm/calling-extensions.generated.js.map +1 -0
  144. package/dist/server/api-client-core/apis/crm/calls-types.generated.d.ts +850 -0
  145. package/dist/server/api-client-core/apis/crm/calls.generated.d.ts +7 -0
  146. package/dist/server/api-client-core/apis/crm/calls.generated.js +66 -0
  147. package/dist/server/api-client-core/apis/crm/calls.generated.js.map +1 -0
  148. package/dist/server/api-client-core/apis/crm/carts-types.generated.d.ts +850 -0
  149. package/dist/server/api-client-core/apis/crm/carts.generated.d.ts +7 -0
  150. package/dist/server/api-client-core/apis/crm/carts.generated.js +66 -0
  151. package/dist/server/api-client-core/apis/crm/carts.generated.js.map +1 -0
  152. package/dist/server/api-client-core/apis/crm/commerce-payments-types.generated.d.ts +850 -0
  153. package/dist/server/api-client-core/apis/crm/commerce-payments.generated.d.ts +7 -0
  154. package/dist/server/api-client-core/apis/crm/commerce-payments.generated.js +66 -0
  155. package/dist/server/api-client-core/apis/crm/commerce-payments.generated.js.map +1 -0
  156. package/dist/server/api-client-core/apis/crm/commerce-subscriptions-types.generated.d.ts +847 -0
  157. package/dist/server/api-client-core/apis/crm/commerce-subscriptions.generated.d.ts +7 -0
  158. package/dist/server/api-client-core/apis/crm/commerce-subscriptions.generated.js +66 -0
  159. package/dist/server/api-client-core/apis/crm/commerce-subscriptions.generated.js.map +1 -0
  160. package/dist/server/api-client-core/apis/crm/communications-types.generated.d.ts +850 -0
  161. package/dist/server/api-client-core/apis/crm/communications.generated.d.ts +7 -0
  162. package/dist/server/api-client-core/apis/crm/communications.generated.js +66 -0
  163. package/dist/server/api-client-core/apis/crm/communications.generated.js.map +1 -0
  164. package/dist/server/api-client-core/apis/crm/companies-types.generated.d.ts +884 -0
  165. package/dist/server/api-client-core/apis/crm/companies.generated.d.ts +7 -0
  166. package/dist/server/api-client-core/apis/crm/companies.generated.js +67 -0
  167. package/dist/server/api-client-core/apis/crm/companies.generated.js.map +1 -0
  168. package/dist/server/api-client-core/apis/crm/contacts-types.generated.d.ts +899 -0
  169. package/dist/server/api-client-core/apis/crm/contacts.generated.d.ts +7 -0
  170. package/dist/server/api-client-core/apis/crm/contacts.generated.js +70 -0
  171. package/dist/server/api-client-core/apis/crm/contacts.generated.js.map +1 -0
  172. package/dist/server/api-client-core/apis/crm/contracts-types.generated.d.ts +850 -0
  173. package/dist/server/api-client-core/apis/crm/contracts.generated.d.ts +7 -0
  174. package/dist/server/api-client-core/apis/crm/contracts.generated.js +66 -0
  175. package/dist/server/api-client-core/apis/crm/contracts.generated.js.map +1 -0
  176. package/dist/server/api-client-core/apis/crm/courses-types.generated.d.ts +853 -0
  177. package/dist/server/api-client-core/apis/crm/courses.generated.d.ts +7 -0
  178. package/dist/server/api-client-core/apis/crm/courses.generated.js +66 -0
  179. package/dist/server/api-client-core/apis/crm/courses.generated.js.map +1 -0
  180. package/dist/server/api-client-core/apis/crm/crm-owners-types.generated.d.ts +140 -0
  181. package/dist/server/api-client-core/apis/crm/crm-owners.generated.d.ts +7 -0
  182. package/dist/server/api-client-core/apis/crm/crm-owners.generated.js +20 -0
  183. package/dist/server/api-client-core/apis/crm/crm-owners.generated.js.map +1 -0
  184. package/dist/server/api-client-core/apis/crm/custom-objects-types.generated.d.ts +934 -0
  185. package/dist/server/api-client-core/apis/crm/custom-objects.generated.d.ts +7 -0
  186. package/dist/server/api-client-core/apis/crm/custom-objects.generated.js +101 -0
  187. package/dist/server/api-client-core/apis/crm/custom-objects.generated.js.map +1 -0
  188. package/dist/server/api-client-core/apis/crm/deal-splits-types.generated.d.ts +196 -0
  189. package/dist/server/api-client-core/apis/crm/deal-splits.generated.d.ts +7 -0
  190. package/dist/server/api-client-core/apis/crm/deal-splits.generated.js +9 -0
  191. package/dist/server/api-client-core/apis/crm/deal-splits.generated.js.map +1 -0
  192. package/dist/server/api-client-core/apis/crm/deals-types.generated.d.ts +872 -0
  193. package/dist/server/api-client-core/apis/crm/deals.generated.d.ts +7 -0
  194. package/dist/server/api-client-core/apis/crm/deals.generated.js +67 -0
  195. package/dist/server/api-client-core/apis/crm/deals.generated.js.map +1 -0
  196. package/dist/server/api-client-core/apis/crm/discounts-types.generated.d.ts +846 -0
  197. package/dist/server/api-client-core/apis/crm/discounts.generated.d.ts +7 -0
  198. package/dist/server/api-client-core/apis/crm/discounts.generated.js +66 -0
  199. package/dist/server/api-client-core/apis/crm/discounts.generated.js.map +1 -0
  200. package/dist/server/api-client-core/apis/crm/emails-types.generated.d.ts +850 -0
  201. package/dist/server/api-client-core/apis/crm/emails.generated.d.ts +7 -0
  202. package/dist/server/api-client-core/apis/crm/emails.generated.js +66 -0
  203. package/dist/server/api-client-core/apis/crm/emails.generated.js.map +1 -0
  204. package/dist/server/api-client-core/apis/crm/exports-types.generated.d.ts +281 -0
  205. package/dist/server/api-client-core/apis/crm/exports.generated.d.ts +7 -0
  206. package/dist/server/api-client-core/apis/crm/exports.generated.js +12 -0
  207. package/dist/server/api-client-core/apis/crm/exports.generated.js.map +1 -0
  208. package/dist/server/api-client-core/apis/crm/feedback-submissions-types.generated.d.ts +616 -0
  209. package/dist/server/api-client-core/apis/crm/feedback-submissions.generated.d.ts +7 -0
  210. package/dist/server/api-client-core/apis/crm/feedback-submissions.generated.js +55 -0
  211. package/dist/server/api-client-core/apis/crm/feedback-submissions.generated.js.map +1 -0
  212. package/dist/server/api-client-core/apis/crm/fees-types.generated.d.ts +850 -0
  213. package/dist/server/api-client-core/apis/crm/fees.generated.d.ts +7 -0
  214. package/dist/server/api-client-core/apis/crm/fees.generated.js +66 -0
  215. package/dist/server/api-client-core/apis/crm/fees.generated.js.map +1 -0
  216. package/dist/server/api-client-core/apis/crm/goal-targets-types.generated.d.ts +850 -0
  217. package/dist/server/api-client-core/apis/crm/goal-targets.generated.d.ts +7 -0
  218. package/dist/server/api-client-core/apis/crm/goal-targets.generated.js +66 -0
  219. package/dist/server/api-client-core/apis/crm/goal-targets.generated.js.map +1 -0
  220. package/dist/server/api-client-core/apis/crm/imports-types.generated.d.ts +371 -0
  221. package/dist/server/api-client-core/apis/crm/imports.generated.d.ts +7 -0
  222. package/dist/server/api-client-core/apis/crm/imports.generated.js +30 -0
  223. package/dist/server/api-client-core/apis/crm/imports.generated.js.map +1 -0
  224. package/dist/server/api-client-core/apis/crm/invoices-types.generated.d.ts +850 -0
  225. package/dist/server/api-client-core/apis/crm/invoices.generated.d.ts +7 -0
  226. package/dist/server/api-client-core/apis/crm/invoices.generated.js +66 -0
  227. package/dist/server/api-client-core/apis/crm/invoices.generated.js.map +1 -0
  228. package/dist/server/api-client-core/apis/crm/leads-types.generated.d.ts +850 -0
  229. package/dist/server/api-client-core/apis/crm/leads.generated.d.ts +7 -0
  230. package/dist/server/api-client-core/apis/crm/leads.generated.js +66 -0
  231. package/dist/server/api-client-core/apis/crm/leads.generated.js.map +1 -0
  232. package/dist/server/api-client-core/apis/crm/limits-tracking-types.generated.d.ts +331 -0
  233. package/dist/server/api-client-core/apis/crm/limits-tracking.generated.d.ts +7 -0
  234. package/dist/server/api-client-core/apis/crm/limits-tracking.generated.js +22 -0
  235. package/dist/server/api-client-core/apis/crm/limits-tracking.generated.js.map +1 -0
  236. package/dist/server/api-client-core/apis/crm/line-items-types.generated.d.ts +850 -0
  237. package/dist/server/api-client-core/apis/crm/line-items.generated.d.ts +7 -0
  238. package/dist/server/api-client-core/apis/crm/line-items.generated.js +66 -0
  239. package/dist/server/api-client-core/apis/crm/line-items.generated.js.map +1 -0
  240. package/dist/server/api-client-core/apis/crm/listings-types.generated.d.ts +853 -0
  241. package/dist/server/api-client-core/apis/crm/listings.generated.d.ts +7 -0
  242. package/dist/server/api-client-core/apis/crm/listings.generated.js +66 -0
  243. package/dist/server/api-client-core/apis/crm/listings.generated.js.map +1 -0
  244. package/dist/server/api-client-core/apis/crm/lists-types.generated.d.ts +2265 -0
  245. package/dist/server/api-client-core/apis/crm/lists.generated.d.ts +7 -0
  246. package/dist/server/api-client-core/apis/crm/lists.generated.js +105 -0
  247. package/dist/server/api-client-core/apis/crm/lists.generated.js.map +1 -0
  248. package/dist/server/api-client-core/apis/crm/meetings-types.generated.d.ts +850 -0
  249. package/dist/server/api-client-core/apis/crm/meetings.generated.d.ts +7 -0
  250. package/dist/server/api-client-core/apis/crm/meetings.generated.js +66 -0
  251. package/dist/server/api-client-core/apis/crm/meetings.generated.js.map +1 -0
  252. package/dist/server/api-client-core/apis/crm/notes-types.generated.d.ts +850 -0
  253. package/dist/server/api-client-core/apis/crm/notes.generated.d.ts +7 -0
  254. package/dist/server/api-client-core/apis/crm/notes.generated.js +66 -0
  255. package/dist/server/api-client-core/apis/crm/notes.generated.js.map +1 -0
  256. package/dist/server/api-client-core/apis/crm/object-library-types.generated.d.ts +60 -0
  257. package/dist/server/api-client-core/apis/crm/object-library.generated.d.ts +7 -0
  258. package/dist/server/api-client-core/apis/crm/object-library.generated.js +9 -0
  259. package/dist/server/api-client-core/apis/crm/object-library.generated.js.map +1 -0
  260. package/dist/server/api-client-core/apis/crm/objects-types.generated.d.ts +712 -0
  261. package/dist/server/api-client-core/apis/crm/objects.generated.d.ts +7 -0
  262. package/dist/server/api-client-core/apis/crm/objects.generated.js +76 -0
  263. package/dist/server/api-client-core/apis/crm/objects.generated.js.map +1 -0
  264. package/dist/server/api-client-core/apis/crm/orders-types.generated.d.ts +850 -0
  265. package/dist/server/api-client-core/apis/crm/orders.generated.d.ts +7 -0
  266. package/dist/server/api-client-core/apis/crm/orders.generated.js +66 -0
  267. package/dist/server/api-client-core/apis/crm/orders.generated.js.map +1 -0
  268. package/dist/server/api-client-core/apis/crm/partner-clients-types.generated.d.ts +725 -0
  269. package/dist/server/api-client-core/apis/crm/partner-clients.generated.d.ts +7 -0
  270. package/dist/server/api-client-core/apis/crm/partner-clients.generated.js +71 -0
  271. package/dist/server/api-client-core/apis/crm/partner-clients.generated.js.map +1 -0
  272. package/dist/server/api-client-core/apis/crm/partner-services-types.generated.d.ts +725 -0
  273. package/dist/server/api-client-core/apis/crm/partner-services.generated.d.ts +7 -0
  274. package/dist/server/api-client-core/apis/crm/partner-services.generated.js +71 -0
  275. package/dist/server/api-client-core/apis/crm/partner-services.generated.js.map +1 -0
  276. package/dist/server/api-client-core/apis/crm/pipelines-types.generated.d.ts +430 -0
  277. package/dist/server/api-client-core/apis/crm/pipelines.generated.d.ts +7 -0
  278. package/dist/server/api-client-core/apis/crm/pipelines.generated.js +94 -0
  279. package/dist/server/api-client-core/apis/crm/pipelines.generated.js.map +1 -0
  280. package/dist/server/api-client-core/apis/crm/postal-mail-types.generated.d.ts +844 -0
  281. package/dist/server/api-client-core/apis/crm/postal-mail.generated.d.ts +7 -0
  282. package/dist/server/api-client-core/apis/crm/postal-mail.generated.js +66 -0
  283. package/dist/server/api-client-core/apis/crm/postal-mail.generated.js.map +1 -0
  284. package/dist/server/api-client-core/apis/crm/products-types.generated.d.ts +850 -0
  285. package/dist/server/api-client-core/apis/crm/products.generated.d.ts +7 -0
  286. package/dist/server/api-client-core/apis/crm/products.generated.js +66 -0
  287. package/dist/server/api-client-core/apis/crm/products.generated.js.map +1 -0
  288. package/dist/server/api-client-core/apis/crm/projects-types.generated.d.ts +881 -0
  289. package/dist/server/api-client-core/apis/crm/projects.generated.d.ts +7 -0
  290. package/dist/server/api-client-core/apis/crm/projects.generated.js +67 -0
  291. package/dist/server/api-client-core/apis/crm/projects.generated.js.map +1 -0
  292. package/dist/server/api-client-core/apis/crm/properties-types.generated.d.ts +603 -0
  293. package/dist/server/api-client-core/apis/crm/properties.generated.d.ts +7 -0
  294. package/dist/server/api-client-core/apis/crm/properties.generated.js +86 -0
  295. package/dist/server/api-client-core/apis/crm/properties.generated.js.map +1 -0
  296. package/dist/server/api-client-core/apis/crm/property-validations-types.generated.d.ts +121 -0
  297. package/dist/server/api-client-core/apis/crm/property-validations.generated.d.ts +7 -0
  298. package/dist/server/api-client-core/apis/crm/property-validations.generated.js +25 -0
  299. package/dist/server/api-client-core/apis/crm/property-validations.generated.js.map +1 -0
  300. package/dist/server/api-client-core/apis/crm/public-app-crm-cards-types.generated.d.ts +486 -0
  301. package/dist/server/api-client-core/apis/crm/public-app-crm-cards.generated.d.ts +7 -0
  302. package/dist/server/api-client-core/apis/crm/public-app-crm-cards.generated.js +34 -0
  303. package/dist/server/api-client-core/apis/crm/public-app-crm-cards.generated.js.map +1 -0
  304. package/dist/server/api-client-core/apis/crm/public-app-feature-flags-types.generated.d.ts +247 -0
  305. package/dist/server/api-client-core/apis/crm/public-app-feature-flags.generated.d.ts +7 -0
  306. package/dist/server/api-client-core/apis/crm/public-app-feature-flags.generated.js +69 -0
  307. package/dist/server/api-client-core/apis/crm/public-app-feature-flags.generated.js.map +1 -0
  308. package/dist/server/api-client-core/apis/crm/quotes-types.generated.d.ts +850 -0
  309. package/dist/server/api-client-core/apis/crm/quotes.generated.d.ts +7 -0
  310. package/dist/server/api-client-core/apis/crm/quotes.generated.js +66 -0
  311. package/dist/server/api-client-core/apis/crm/quotes.generated.js.map +1 -0
  312. package/dist/server/api-client-core/apis/crm/schemas-types.generated.d.ts +669 -0
  313. package/dist/server/api-client-core/apis/crm/schemas.generated.d.ts +7 -0
  314. package/dist/server/api-client-core/apis/crm/schemas.generated.js +41 -0
  315. package/dist/server/api-client-core/apis/crm/schemas.generated.js.map +1 -0
  316. package/dist/server/api-client-core/apis/crm/services-types.generated.d.ts +853 -0
  317. package/dist/server/api-client-core/apis/crm/services.generated.d.ts +7 -0
  318. package/dist/server/api-client-core/apis/crm/services.generated.js +66 -0
  319. package/dist/server/api-client-core/apis/crm/services.generated.js.map +1 -0
  320. package/dist/server/api-client-core/apis/crm/tasks-types.generated.d.ts +850 -0
  321. package/dist/server/api-client-core/apis/crm/tasks.generated.d.ts +7 -0
  322. package/dist/server/api-client-core/apis/crm/tasks.generated.js +66 -0
  323. package/dist/server/api-client-core/apis/crm/tasks.generated.js.map +1 -0
  324. package/dist/server/api-client-core/apis/crm/taxes-types.generated.d.ts +850 -0
  325. package/dist/server/api-client-core/apis/crm/taxes.generated.d.ts +7 -0
  326. package/dist/server/api-client-core/apis/crm/taxes.generated.js +66 -0
  327. package/dist/server/api-client-core/apis/crm/taxes.generated.js.map +1 -0
  328. package/dist/server/api-client-core/apis/crm/tickets-types.generated.d.ts +884 -0
  329. package/dist/server/api-client-core/apis/crm/tickets.generated.d.ts +7 -0
  330. package/dist/server/api-client-core/apis/crm/tickets.generated.js +67 -0
  331. package/dist/server/api-client-core/apis/crm/tickets.generated.js.map +1 -0
  332. package/dist/server/api-client-core/apis/crm/timeline-types.generated.d.ts +187 -0
  333. package/dist/server/api-client-core/apis/crm/timeline.generated.d.ts +7 -0
  334. package/dist/server/api-client-core/apis/crm/timeline.generated.js +12 -0
  335. package/dist/server/api-client-core/apis/crm/timeline.generated.js.map +1 -0
  336. package/dist/server/api-client-core/apis/crm/transcriptions-types.generated.d.ts +152 -0
  337. package/dist/server/api-client-core/apis/crm/transcriptions.generated.d.ts +7 -0
  338. package/dist/server/api-client-core/apis/crm/transcriptions.generated.js +15 -0
  339. package/dist/server/api-client-core/apis/crm/transcriptions.generated.js.map +1 -0
  340. package/dist/server/api-client-core/apis/crm/users-types.generated.d.ts +850 -0
  341. package/dist/server/api-client-core/apis/crm/users.generated.d.ts +7 -0
  342. package/dist/server/api-client-core/apis/crm/users.generated.js +66 -0
  343. package/dist/server/api-client-core/apis/crm/users.generated.js.map +1 -0
  344. package/dist/server/api-client-core/apis/crm/video-conferencing-extension-types.generated.d.ts +72 -0
  345. package/dist/server/api-client-core/apis/crm/video-conferencing-extension.generated.d.ts +7 -0
  346. package/dist/server/api-client-core/apis/crm/video-conferencing-extension.generated.js +13 -0
  347. package/dist/server/api-client-core/apis/crm/video-conferencing-extension.generated.js.map +1 -0
  348. package/dist/server/api-client-core/apis/events/manage-event-definitions-types.generated.d.ts +1005 -0
  349. package/dist/server/api-client-core/apis/events/manage-event-definitions.generated.d.ts +7 -0
  350. package/dist/server/api-client-core/apis/events/manage-event-definitions.generated.js +39 -0
  351. package/dist/server/api-client-core/apis/events/manage-event-definitions.generated.js.map +1 -0
  352. package/dist/server/api-client-core/apis/events/send-event-completions-types.generated.d.ts +94 -0
  353. package/dist/server/api-client-core/apis/events/send-event-completions.generated.d.ts +7 -0
  354. package/dist/server/api-client-core/apis/events/send-event-completions.generated.js +9 -0
  355. package/dist/server/api-client-core/apis/events/send-event-completions.generated.js.map +1 -0
  356. package/dist/server/api-client-core/apis/events-types.generated.d.ts +137 -0
  357. package/dist/server/api-client-core/apis/events.generated.d.ts +7 -0
  358. package/dist/server/api-client-core/apis/events.generated.js +23 -0
  359. package/dist/server/api-client-core/apis/events.generated.js.map +1 -0
  360. package/dist/server/api-client-core/apis/files-types.generated.d.ts +791 -0
  361. package/dist/server/api-client-core/apis/files.generated.d.ts +7 -0
  362. package/dist/server/api-client-core/apis/files.generated.js +119 -0
  363. package/dist/server/api-client-core/apis/files.generated.js.map +1 -0
  364. package/dist/server/api-client-core/apis/marketing/campaigns-public-api-types.generated.d.ts +989 -0
  365. package/dist/server/api-client-core/apis/marketing/campaigns-public-api.generated.d.ts +7 -0
  366. package/dist/server/api-client-core/apis/marketing/campaigns-public-api.generated.js +139 -0
  367. package/dist/server/api-client-core/apis/marketing/campaigns-public-api.generated.js.map +1 -0
  368. package/dist/server/api-client-core/apis/marketing/marketing-emails-types.generated.d.ts +883 -0
  369. package/dist/server/api-client-core/apis/marketing/marketing-emails.generated.d.ts +7 -0
  370. package/dist/server/api-client-core/apis/marketing/marketing-emails.generated.js +108 -0
  371. package/dist/server/api-client-core/apis/marketing/marketing-emails.generated.js.map +1 -0
  372. package/dist/server/api-client-core/apis/marketing/marketing-events-types.generated.d.ts +1788 -0
  373. package/dist/server/api-client-core/apis/marketing/marketing-events.generated.d.ts +7 -0
  374. package/dist/server/api-client-core/apis/marketing/marketing-events.generated.js +176 -0
  375. package/dist/server/api-client-core/apis/marketing/marketing-events.generated.js.map +1 -0
  376. package/dist/server/api-client-core/apis/marketing/single-send-types.generated.d.ts +123 -0
  377. package/dist/server/api-client-core/apis/marketing/single-send.generated.d.ts +7 -0
  378. package/dist/server/api-client-core/apis/marketing/single-send.generated.js +6 -0
  379. package/dist/server/api-client-core/apis/marketing/single-send.generated.js.map +1 -0
  380. package/dist/server/api-client-core/apis/marketing/transactional-single-send-types.generated.d.ts +257 -0
  381. package/dist/server/api-client-core/apis/marketing/transactional-single-send.generated.d.ts +7 -0
  382. package/dist/server/api-client-core/apis/marketing/transactional-single-send.generated.js +20 -0
  383. package/dist/server/api-client-core/apis/marketing/transactional-single-send.generated.js.map +1 -0
  384. package/dist/server/api-client-core/apis/meta/origins-types.generated.d.ts +77 -0
  385. package/dist/server/api-client-core/apis/meta/origins.generated.d.ts +7 -0
  386. package/dist/server/api-client-core/apis/meta/origins.generated.js +15 -0
  387. package/dist/server/api-client-core/apis/meta/origins.generated.js.map +1 -0
  388. package/dist/server/api-client-core/apis/scheduler/meetings-types.generated.d.ts +913 -0
  389. package/dist/server/api-client-core/apis/scheduler/meetings.generated.d.ts +7 -0
  390. package/dist/server/api-client-core/apis/scheduler/meetings.generated.js +34 -0
  391. package/dist/server/api-client-core/apis/scheduler/meetings.generated.js.map +1 -0
  392. package/dist/server/api-client-core/apis/settings/multicurrency-types.generated.d.ts +404 -0
  393. package/dist/server/api-client-core/apis/settings/multicurrency.generated.d.ts +7 -0
  394. package/dist/server/api-client-core/apis/settings/multicurrency.generated.js +38 -0
  395. package/dist/server/api-client-core/apis/settings/multicurrency.generated.js.map +1 -0
  396. package/dist/server/api-client-core/apis/settings/tax-rates-types.generated.d.ts +111 -0
  397. package/dist/server/api-client-core/apis/settings/tax-rates.generated.d.ts +7 -0
  398. package/dist/server/api-client-core/apis/settings/tax-rates.generated.js +13 -0
  399. package/dist/server/api-client-core/apis/settings/tax-rates.generated.js.map +1 -0
  400. package/dist/server/api-client-core/apis/settings/user-provisioning-types.generated.d.ts +297 -0
  401. package/dist/server/api-client-core/apis/settings/user-provisioning.generated.d.ts +7 -0
  402. package/dist/server/api-client-core/apis/settings/user-provisioning.generated.js +31 -0
  403. package/dist/server/api-client-core/apis/settings/user-provisioning.generated.js.map +1 -0
  404. package/dist/server/api-client-core/apis/webhooks-journal-types.generated.d.ts +643 -0
  405. package/dist/server/api-client-core/apis/webhooks-journal.generated.d.ts +7 -0
  406. package/dist/server/api-client-core/apis/webhooks-journal.generated.js +75 -0
  407. package/dist/server/api-client-core/apis/webhooks-journal.generated.js.map +1 -0
  408. package/dist/server/api-client-core/apis/webhooks-types.generated.d.ts +1016 -0
  409. package/dist/server/api-client-core/apis/webhooks.generated.d.ts +7 -0
  410. package/dist/server/api-client-core/apis/webhooks.generated.js +105 -0
  411. package/dist/server/api-client-core/apis/webhooks.generated.js.map +1 -0
  412. package/dist/server/api-client-core/binary-data.d.ts +33 -0
  413. package/dist/server/api-client-core/binary-data.js +29 -0
  414. package/dist/server/api-client-core/binary-data.js.map +1 -0
  415. package/dist/server/api-client-core/client.d.ts +14 -0
  416. package/dist/server/api-client-core/client.js +75 -0
  417. package/dist/server/api-client-core/client.js.map +1 -0
  418. package/dist/server/api-client-core/codegen-helpers/file-op-wrappers.js +25 -0
  419. package/dist/server/api-client-core/codegen-helpers/file-op-wrappers.js.map +1 -0
  420. package/dist/server/api-client-core/errors.d.ts +27 -0
  421. package/dist/server/api-client-core/errors.js +33 -0
  422. package/dist/server/api-client-core/errors.js.map +1 -0
  423. package/dist/server/api-client-core/op.d.ts +37 -0
  424. package/dist/server/api-client-core/op.js +44 -0
  425. package/dist/server/api-client-core/op.js.map +1 -0
  426. package/dist/server/api-client-core/pagination.d.ts +60 -0
  427. package/dist/server/api-client-core/pagination.js +103 -0
  428. package/dist/server/api-client-core/pagination.js.map +1 -0
  429. package/dist/server/api-client-core/plugins/fetch-transport.js +72 -0
  430. package/dist/server/api-client-core/plugins/fetch-transport.js.map +1 -0
  431. package/dist/server/api-client-core/types.d.ts +135 -0
  432. package/dist/server/api-client.d.ts +197 -0
  433. package/dist/server/api-client.js +101 -0
  434. package/dist/server/constants.js +46 -0
  435. package/dist/server/constants.js.map +1 -0
  436. package/dist/server/deno/start.d.ts +12 -0
  437. package/dist/server/deno/start.js +21 -0
  438. package/dist/server/deno/start.js.map +1 -0
  439. package/dist/server/hono/hono-request-handler.js +54 -0
  440. package/dist/server/hono/hono-request-handler.js.map +1 -0
  441. package/dist/server/hono/hubspot-connect-routes/auth-callback.js +125 -0
  442. package/dist/server/hono/hubspot-connect-routes/auth-callback.js.map +1 -0
  443. package/dist/server/hono/hubspot-connect-routes/auth-init-session.js +90 -0
  444. package/dist/server/hono/hubspot-connect-routes/auth-init-session.js.map +1 -0
  445. package/dist/server/hono/hubspot-connect-routes/auth-logout.js +97 -0
  446. package/dist/server/hono/hubspot-connect-routes/auth-logout.js.map +1 -0
  447. package/dist/server/hono/hubspot-connect-routes/auth-refresh.js +101 -0
  448. package/dist/server/hono/hubspot-connect-routes/auth-refresh.js.map +1 -0
  449. package/dist/server/hono/hubspot-connect-routes/cimd-client-metadata-types.d.ts +16 -0
  450. package/dist/server/hono/hubspot-connect-routes/cimd-client-metadata-types.js +13 -0
  451. package/dist/server/hono/hubspot-connect-routes/cimd-client-metadata-types.js.map +1 -0
  452. package/dist/server/hono/hubspot-connect-routes/cimd-public-routes.js +42 -0
  453. package/dist/server/hono/hubspot-connect-routes/cimd-public-routes.js.map +1 -0
  454. package/dist/server/hono/hubspot-connect-routes/constants.js +8 -0
  455. package/dist/server/hono/hubspot-connect-routes/constants.js.map +1 -0
  456. package/dist/server/hono/hubspot-connect-routes/fetch-hubspot-client-metadata.js +43 -0
  457. package/dist/server/hono/hubspot-connect-routes/fetch-hubspot-client-metadata.js.map +1 -0
  458. package/dist/server/hono/hubspot-connect-routes/hubspot-connect-routes.js +35 -0
  459. package/dist/server/hono/hubspot-connect-routes/hubspot-connect-routes.js.map +1 -0
  460. package/dist/server/hono/hubspot-connect-routes/load-hubspot-connect-routes-env.js +34 -0
  461. package/dist/server/hono/hubspot-connect-routes/load-hubspot-connect-routes-env.js.map +1 -0
  462. package/dist/server/hono/hubspot-connect-routes/oauth-client.js +104 -0
  463. package/dist/server/hono/hubspot-connect-routes/oauth-client.js.map +1 -0
  464. package/dist/server/hono/hubspot-connect-routes/utils.js +73 -0
  465. package/dist/server/hono/hubspot-connect-routes/utils.js.map +1 -0
  466. package/dist/server/hono/index.js +4 -0
  467. package/dist/server/hono/types.d.ts +28 -0
  468. package/dist/server/hono/utils/cookie-utils.js +29 -0
  469. package/dist/server/hono/utils/cookie-utils.js.map +1 -0
  470. package/dist/server/import-app-keys.js +42 -0
  471. package/dist/server/import-app-keys.js.map +1 -0
  472. package/dist/server/lovable/create-app-function-start.d.ts +26 -0
  473. package/dist/server/lovable/create-app-function-start.js +28 -0
  474. package/dist/server/lovable/create-app-function-start.js.map +1 -0
  475. package/dist/server/lovable/hubspot-connect/index.d.ts +15 -0
  476. package/dist/server/lovable/hubspot-connect/index.js +20 -0
  477. package/dist/server/lovable/hubspot-connect/index.js.map +1 -0
  478. package/dist/server/lovable/hubspot-connect/run-hubspot-connect-lovable-server.js +29 -0
  479. package/dist/server/lovable/hubspot-connect/run-hubspot-connect-lovable-server.js.map +1 -0
  480. package/dist/server/lovable.d.ts +6 -0
  481. package/dist/server/lovable.js +4 -0
  482. package/dist/server/oauth.d.ts +6 -0
  483. package/dist/server/oauth.js +5 -0
  484. package/dist/server/proxy.js +68 -0
  485. package/dist/server/proxy.js.map +1 -0
  486. package/dist/server/sanitize-request.js +41 -0
  487. package/dist/server/sanitize-request.js.map +1 -0
  488. package/dist/server/secure-start-core.d.ts +23 -0
  489. package/dist/server/secure-start-core.js +28 -0
  490. package/dist/server/secure-start-core.js.map +1 -0
  491. package/dist/server/shared/constants.js +17 -0
  492. package/dist/server/shared/constants.js.map +1 -0
  493. package/dist/server/shared/encoding/base64.js +45 -0
  494. package/dist/server/shared/encoding/base64.js.map +1 -0
  495. package/dist/server/shared/encoding/sha256.d.ts +10 -0
  496. package/dist/server/shared/encoding/sha256.js +15 -0
  497. package/dist/server/shared/encoding/sha256.js.map +1 -0
  498. package/dist/server/shared/logger.d.ts +15 -0
  499. package/dist/server/shared/logger.js +16 -0
  500. package/dist/server/shared/logger.js.map +1 -0
  501. package/dist/server/types.d.ts +56 -0
  502. package/dist/server/utils/cookie-utils.js +21 -0
  503. package/dist/server/utils/cookie-utils.js.map +1 -0
  504. package/dist/server/utils/dpop-utils.d.ts +67 -0
  505. package/dist/server/utils/dpop-utils.js +75 -0
  506. package/dist/server/utils/dpop-utils.js.map +1 -0
  507. package/dist/server/utils/env-utils.js +54 -0
  508. package/dist/server/utils/env-utils.js.map +1 -0
  509. package/dist/server/utils/jwk-utils.d.ts +16 -0
  510. package/dist/server/utils/jwk-utils.js +24 -0
  511. package/dist/server/utils/jwk-utils.js.map +1 -0
  512. package/dist/server/utils/jwt-utils.d.ts +39 -0
  513. package/dist/server/utils/jwt-utils.js +87 -0
  514. package/dist/server/utils/jwt-utils.js.map +1 -0
  515. package/eslint.config.js +5 -0
  516. package/package.json +68 -0
  517. package/src/browser/app-connect-controller/README.md +92 -0
  518. package/src/browser/app-connect-controller/connect-start.ts +45 -0
  519. package/src/browser/app-connect-controller/constants.ts +15 -0
  520. package/src/browser/app-connect-controller/create.ts +137 -0
  521. package/src/browser/app-connect-controller/default-session-storage.ts +21 -0
  522. package/src/browser/app-connect-controller/disconnect.ts +54 -0
  523. package/src/browser/app-connect-controller/init.ts +35 -0
  524. package/src/browser/app-connect-controller/refresh.ts +124 -0
  525. package/src/browser/app-connect-controller/types.ts +48 -0
  526. package/src/browser/app-connect-controller/utils/crypto-utils.ts +1 -0
  527. package/src/browser/app-connect-controller/utils/encode-utils.ts +1 -0
  528. package/src/browser/app-connect-controller/utils/memoize-utils.test.ts +48 -0
  529. package/src/browser/app-connect-controller/utils/memoize-utils.ts +26 -0
  530. package/src/browser/app-connect-controller/utils/session-utils.test.ts +127 -0
  531. package/src/browser/app-connect-controller/utils/session-utils.ts +58 -0
  532. package/src/browser/app-connect-controller/utils/store-utils.test.ts +102 -0
  533. package/src/browser/app-connect-controller/utils/store-utils.ts +119 -0
  534. package/src/browser/app-connect-controller/utils/timeout-utils.ts +8 -0
  535. package/src/browser/app-connect-controller/view-state.test.ts +70 -0
  536. package/src/browser/app-connect-controller/view-state.ts +40 -0
  537. package/src/browser/index.ts +13 -0
  538. package/src/browser/react/components/AppConnectHeader/AppConnectHeader.css.ts +231 -0
  539. package/src/browser/react/components/AppConnectHeader/AppConnectHeader.tsx +124 -0
  540. package/src/browser/react/components/Button/Button.css.ts +59 -0
  541. package/src/browser/react/components/Button/Button.tsx +38 -0
  542. package/src/browser/react/components/ConnectButton/ConnectButton.css.ts +73 -0
  543. package/src/browser/react/components/ConnectButton/ConnectButton.tsx +43 -0
  544. package/src/browser/react/components/DisconnectedBody/DisconnectedBody.css.ts +25 -0
  545. package/src/browser/react/components/DisconnectedBody/DisconnectedBody.tsx +25 -0
  546. package/src/browser/react/components/HubSpotAppConnect/HubSpotAppConnect.css.ts +23 -0
  547. package/src/browser/react/components/HubSpotAppConnect/HubSpotAppConnect.tsx +90 -0
  548. package/src/browser/react/components/LoadingIndicator/LoadingIndicator.css.ts +28 -0
  549. package/src/browser/react/components/LoadingIndicator/LoadingIndicator.tsx +9 -0
  550. package/src/browser/react/components/ShareButton/ShareButton.css.ts +52 -0
  551. package/src/browser/react/components/ShareButton/ShareButton.tsx +43 -0
  552. package/src/browser/react/components/icons/ChevronDownIcon.tsx +23 -0
  553. package/src/browser/react/components/icons/ExternalLinkIcon.tsx +23 -0
  554. package/src/browser/react/components/icons/HubSpotDataSourceIcon.tsx +33 -0
  555. package/src/browser/react/components/icons/LogoutIcon.tsx +37 -0
  556. package/src/browser/react/components/icons/ShareIcon.tsx +31 -0
  557. package/src/browser/react/context.ts +12 -0
  558. package/src/browser/react/hooks.ts +28 -0
  559. package/src/browser/react/index.ts +6 -0
  560. package/src/browser/react/lovable/LovableHubSpotAppConnect.tsx +37 -0
  561. package/src/browser/react/lovable/index.ts +4 -0
  562. package/src/browser/theme-tokens.generated.css.ts +424 -0
  563. package/src/browser/theme.css.ts +21 -0
  564. package/src/browser/types.ts +83 -0
  565. package/src/server/api-client-core/apis/account/account-info-types.generated.ts +116 -0
  566. package/src/server/api-client-core/apis/account/account-info.generated.ts +14 -0
  567. package/src/server/api-client-core/apis/account/audit-logs-types.generated.ts +409 -0
  568. package/src/server/api-client-core/apis/account/audit-logs.generated.ts +41 -0
  569. package/src/server/api-client-core/apis/auth/oauth-types.generated.ts +138 -0
  570. package/src/server/api-client-core/apis/auth/oauth.generated.ts +26 -0
  571. package/src/server/api-client-core/apis/automation/actions-types.generated.ts +1337 -0
  572. package/src/server/api-client-core/apis/automation/actions.generated.ts +166 -0
  573. package/src/server/api-client-core/apis/automation/sequences-types.generated.ts +456 -0
  574. package/src/server/api-client-core/apis/automation/sequences.generated.ts +34 -0
  575. package/src/server/api-client-core/apis/business-units-types.generated.ts +82 -0
  576. package/src/server/api-client-core/apis/business-units.generated.ts +16 -0
  577. package/src/server/api-client-core/apis/cms/authors-types.generated.ts +4003 -0
  578. package/src/server/api-client-core/apis/cms/authors.generated.ts +199 -0
  579. package/src/server/api-client-core/apis/cms/blog-settings-types.generated.ts +3795 -0
  580. package/src/server/api-client-core/apis/cms/blog-settings.generated.ts +79 -0
  581. package/src/server/api-client-core/apis/cms/cms-content-audit-types.generated.ts +198 -0
  582. package/src/server/api-client-core/apis/cms/cms-content-audit.generated.ts +31 -0
  583. package/src/server/api-client-core/apis/cms/domains-types.generated.ts +201 -0
  584. package/src/server/api-client-core/apis/cms/domains.generated.ts +30 -0
  585. package/src/server/api-client-core/apis/cms/hubdb-types.generated.ts +1276 -0
  586. package/src/server/api-client-core/apis/cms/hubdb.generated.ts +220 -0
  587. package/src/server/api-client-core/apis/cms/media-bridge-types.generated.ts +8928 -0
  588. package/src/server/api-client-core/apis/cms/media-bridge.generated.ts +244 -0
  589. package/src/server/api-client-core/apis/cms/pages-types.generated.ts +5548 -0
  590. package/src/server/api-client-core/apis/cms/pages.generated.ts +423 -0
  591. package/src/server/api-client-core/apis/cms/posts-types.generated.ts +4682 -0
  592. package/src/server/api-client-core/apis/cms/posts.generated.ts +254 -0
  593. package/src/server/api-client-core/apis/cms/site-search-types.generated.ts +1914 -0
  594. package/src/server/api-client-core/apis/cms/site-search.generated.ts +40 -0
  595. package/src/server/api-client-core/apis/cms/source-code-types.generated.ts +240 -0
  596. package/src/server/api-client-core/apis/cms/source-code.generated.ts +54 -0
  597. package/src/server/api-client-core/apis/cms/tags-types.generated.ts +3969 -0
  598. package/src/server/api-client-core/apis/cms/tags.generated.ts +199 -0
  599. package/src/server/api-client-core/apis/cms/url-mappings-types.generated.ts +245 -0
  600. package/src/server/api-client-core/apis/cms/url-mappings.generated.ts +25 -0
  601. package/src/server/api-client-core/apis/cms/url-redirects-types.generated.ts +241 -0
  602. package/src/server/api-client-core/apis/cms/url-redirects.generated.ts +40 -0
  603. package/src/server/api-client-core/apis/communication-preferences/subscriptions-types.generated.ts +893 -0
  604. package/src/server/api-client-core/apis/communication-preferences/subscriptions.generated.ts +108 -0
  605. package/src/server/api-client-core/apis/conversations/custom-channels-types.generated.ts +687 -0
  606. package/src/server/api-client-core/apis/conversations/custom-channels.generated.ts +121 -0
  607. package/src/server/api-client-core/apis/conversations/visitor-identification-types.generated.ts +66 -0
  608. package/src/server/api-client-core/apis/conversations/visitor-identification.generated.ts +14 -0
  609. package/src/server/api-client-core/apis/conversations-types.generated.ts +1126 -0
  610. package/src/server/api-client-core/apis/conversations.generated.ts +152 -0
  611. package/src/server/api-client-core/apis/crm/app-uninstalls-types.generated.ts +37 -0
  612. package/src/server/api-client-core/apis/crm/app-uninstalls.generated.ts +12 -0
  613. package/src/server/api-client-core/apis/crm/appointments-types.generated.ts +1094 -0
  614. package/src/server/api-client-core/apis/crm/appointments.generated.ts +153 -0
  615. package/src/server/api-client-core/apis/crm/associations-schema-types.generated.ts +403 -0
  616. package/src/server/api-client-core/apis/crm/associations-schema.generated.ts +99 -0
  617. package/src/server/api-client-core/apis/crm/associations-types.generated.ts +750 -0
  618. package/src/server/api-client-core/apis/crm/associations.generated.ts +134 -0
  619. package/src/server/api-client-core/apis/crm/calling-extensions-types.generated.ts +565 -0
  620. package/src/server/api-client-core/apis/crm/calling-extensions.generated.ts +75 -0
  621. package/src/server/api-client-core/apis/crm/calls-types.generated.ts +938 -0
  622. package/src/server/api-client-core/apis/crm/calls.generated.ts +106 -0
  623. package/src/server/api-client-core/apis/crm/carts-types.generated.ts +938 -0
  624. package/src/server/api-client-core/apis/crm/carts.generated.ts +106 -0
  625. package/src/server/api-client-core/apis/crm/commerce-payments-types.generated.ts +938 -0
  626. package/src/server/api-client-core/apis/crm/commerce-payments.generated.ts +115 -0
  627. package/src/server/api-client-core/apis/crm/commerce-subscriptions-types.generated.ts +935 -0
  628. package/src/server/api-client-core/apis/crm/commerce-subscriptions.generated.ts +109 -0
  629. package/src/server/api-client-core/apis/crm/communications-types.generated.ts +938 -0
  630. package/src/server/api-client-core/apis/crm/communications.generated.ts +115 -0
  631. package/src/server/api-client-core/apis/crm/companies-types.generated.ts +976 -0
  632. package/src/server/api-client-core/apis/crm/companies.generated.ts +112 -0
  633. package/src/server/api-client-core/apis/crm/contacts-types.generated.ts +996 -0
  634. package/src/server/api-client-core/apis/crm/contacts.generated.ts +114 -0
  635. package/src/server/api-client-core/apis/crm/contracts-types.generated.ts +938 -0
  636. package/src/server/api-client-core/apis/crm/contracts.generated.ts +106 -0
  637. package/src/server/api-client-core/apis/crm/courses-types.generated.ts +941 -0
  638. package/src/server/api-client-core/apis/crm/courses.generated.ts +106 -0
  639. package/src/server/api-client-core/apis/crm/crm-owners-types.generated.ts +148 -0
  640. package/src/server/api-client-core/apis/crm/crm-owners.generated.ts +25 -0
  641. package/src/server/api-client-core/apis/crm/custom-objects-types.generated.ts +1024 -0
  642. package/src/server/api-client-core/apis/crm/custom-objects.generated.ts +136 -0
  643. package/src/server/api-client-core/apis/crm/deal-splits-types.generated.ts +208 -0
  644. package/src/server/api-client-core/apis/crm/deal-splits.generated.ts +14 -0
  645. package/src/server/api-client-core/apis/crm/deals-types.generated.ts +963 -0
  646. package/src/server/api-client-core/apis/crm/deals.generated.ts +107 -0
  647. package/src/server/api-client-core/apis/crm/discounts-types.generated.ts +934 -0
  648. package/src/server/api-client-core/apis/crm/discounts.generated.ts +106 -0
  649. package/src/server/api-client-core/apis/crm/emails-types.generated.ts +938 -0
  650. package/src/server/api-client-core/apis/crm/emails.generated.ts +106 -0
  651. package/src/server/api-client-core/apis/crm/exports-types.generated.ts +360 -0
  652. package/src/server/api-client-core/apis/crm/exports.generated.ts +24 -0
  653. package/src/server/api-client-core/apis/crm/feedback-submissions-types.generated.ts +676 -0
  654. package/src/server/api-client-core/apis/crm/feedback-submissions.generated.ts +89 -0
  655. package/src/server/api-client-core/apis/crm/fees-types.generated.ts +938 -0
  656. package/src/server/api-client-core/apis/crm/fees.generated.ts +106 -0
  657. package/src/server/api-client-core/apis/crm/goal-targets-types.generated.ts +938 -0
  658. package/src/server/api-client-core/apis/crm/goal-targets.generated.ts +107 -0
  659. package/src/server/api-client-core/apis/crm/imports-types.generated.ts +754 -0
  660. package/src/server/api-client-core/apis/crm/imports.generated.ts +41 -0
  661. package/src/server/api-client-core/apis/crm/invoices-types.generated.ts +938 -0
  662. package/src/server/api-client-core/apis/crm/invoices.generated.ts +106 -0
  663. package/src/server/api-client-core/apis/crm/leads-types.generated.ts +938 -0
  664. package/src/server/api-client-core/apis/crm/leads.generated.ts +106 -0
  665. package/src/server/api-client-core/apis/crm/limits-tracking-types.generated.ts +371 -0
  666. package/src/server/api-client-core/apis/crm/limits-tracking.generated.ts +42 -0
  667. package/src/server/api-client-core/apis/crm/line-items-types.generated.ts +938 -0
  668. package/src/server/api-client-core/apis/crm/line-items.generated.ts +107 -0
  669. package/src/server/api-client-core/apis/crm/listings-types.generated.ts +941 -0
  670. package/src/server/api-client-core/apis/crm/listings.generated.ts +106 -0
  671. package/src/server/api-client-core/apis/crm/lists-types.generated.ts +3053 -0
  672. package/src/server/api-client-core/apis/crm/lists.generated.ts +166 -0
  673. package/src/server/api-client-core/apis/crm/meetings-types.generated.ts +938 -0
  674. package/src/server/api-client-core/apis/crm/meetings.generated.ts +106 -0
  675. package/src/server/api-client-core/apis/crm/notes-types.generated.ts +938 -0
  676. package/src/server/api-client-core/apis/crm/notes.generated.ts +106 -0
  677. package/src/server/api-client-core/apis/crm/object-library-types.generated.ts +67 -0
  678. package/src/server/api-client-core/apis/crm/object-library.generated.ts +16 -0
  679. package/src/server/api-client-core/apis/crm/objects-types.generated.ts +785 -0
  680. package/src/server/api-client-core/apis/crm/objects.generated.ts +90 -0
  681. package/src/server/api-client-core/apis/crm/orders-types.generated.ts +938 -0
  682. package/src/server/api-client-core/apis/crm/orders.generated.ts +106 -0
  683. package/src/server/api-client-core/apis/crm/partner-clients-types.generated.ts +804 -0
  684. package/src/server/api-client-core/apis/crm/partner-clients.generated.ts +108 -0
  685. package/src/server/api-client-core/apis/crm/partner-services-types.generated.ts +802 -0
  686. package/src/server/api-client-core/apis/crm/partner-services.generated.ts +108 -0
  687. package/src/server/api-client-core/apis/crm/pipelines-types.generated.ts +491 -0
  688. package/src/server/api-client-core/apis/crm/pipelines.generated.ts +144 -0
  689. package/src/server/api-client-core/apis/crm/postal-mail-types.generated.ts +932 -0
  690. package/src/server/api-client-core/apis/crm/postal-mail.generated.ts +107 -0
  691. package/src/server/api-client-core/apis/crm/products-types.generated.ts +938 -0
  692. package/src/server/api-client-core/apis/crm/products.generated.ts +106 -0
  693. package/src/server/api-client-core/apis/crm/projects-types.generated.ts +973 -0
  694. package/src/server/api-client-core/apis/crm/projects.generated.ts +112 -0
  695. package/src/server/api-client-core/apis/crm/properties-types.generated.ts +705 -0
  696. package/src/server/api-client-core/apis/crm/properties.generated.ts +97 -0
  697. package/src/server/api-client-core/apis/crm/property-validations-types.generated.ts +225 -0
  698. package/src/server/api-client-core/apis/crm/property-validations.generated.ts +47 -0
  699. package/src/server/api-client-core/apis/crm/public-app-crm-cards-types.generated.ts +550 -0
  700. package/src/server/api-client-core/apis/crm/public-app-crm-cards.generated.ts +46 -0
  701. package/src/server/api-client-core/apis/crm/public-app-feature-flags-types.generated.ts +284 -0
  702. package/src/server/api-client-core/apis/crm/public-app-feature-flags.generated.ts +89 -0
  703. package/src/server/api-client-core/apis/crm/quotes-types.generated.ts +938 -0
  704. package/src/server/api-client-core/apis/crm/quotes.generated.ts +106 -0
  705. package/src/server/api-client-core/apis/crm/schemas-types.generated.ts +735 -0
  706. package/src/server/api-client-core/apis/crm/schemas.generated.ts +68 -0
  707. package/src/server/api-client-core/apis/crm/services-types.generated.ts +941 -0
  708. package/src/server/api-client-core/apis/crm/services.generated.ts +106 -0
  709. package/src/server/api-client-core/apis/crm/tasks-types.generated.ts +938 -0
  710. package/src/server/api-client-core/apis/crm/tasks.generated.ts +106 -0
  711. package/src/server/api-client-core/apis/crm/taxes-types.generated.ts +938 -0
  712. package/src/server/api-client-core/apis/crm/taxes.generated.ts +106 -0
  713. package/src/server/api-client-core/apis/crm/tickets-types.generated.ts +976 -0
  714. package/src/server/api-client-core/apis/crm/tickets.generated.ts +112 -0
  715. package/src/server/api-client-core/apis/crm/timeline-types.generated.ts +207 -0
  716. package/src/server/api-client-core/apis/crm/timeline.generated.ts +23 -0
  717. package/src/server/api-client-core/apis/crm/transcriptions-types.generated.ts +200 -0
  718. package/src/server/api-client-core/apis/crm/transcriptions.generated.ts +29 -0
  719. package/src/server/api-client-core/apis/crm/users-types.generated.ts +938 -0
  720. package/src/server/api-client-core/apis/crm/users.generated.ts +106 -0
  721. package/src/server/api-client-core/apis/crm/video-conferencing-extension-types.generated.ts +78 -0
  722. package/src/server/api-client-core/apis/crm/video-conferencing-extension.generated.ts +25 -0
  723. package/src/server/api-client-core/apis/events/manage-event-definitions-types.generated.ts +1621 -0
  724. package/src/server/api-client-core/apis/events/manage-event-definitions.generated.ts +73 -0
  725. package/src/server/api-client-core/apis/events/send-event-completions-types.generated.ts +103 -0
  726. package/src/server/api-client-core/apis/events/send-event-completions.generated.ts +19 -0
  727. package/src/server/api-client-core/apis/events-types.generated.ts +145 -0
  728. package/src/server/api-client-core/apis/events.generated.ts +30 -0
  729. package/src/server/api-client-core/apis/files-types.generated.ts +904 -0
  730. package/src/server/api-client-core/apis/files.generated.ts +164 -0
  731. package/src/server/api-client-core/apis/index.generated.ts +97 -0
  732. package/src/server/api-client-core/apis/marketing/campaigns-public-api-types.generated.ts +1434 -0
  733. package/src/server/api-client-core/apis/marketing/campaigns-public-api.generated.ts +191 -0
  734. package/src/server/api-client-core/apis/marketing/marketing-emails-types.generated.ts +3858 -0
  735. package/src/server/api-client-core/apis/marketing/marketing-emails.generated.ts +146 -0
  736. package/src/server/api-client-core/apis/marketing/marketing-events-types.generated.ts +2122 -0
  737. package/src/server/api-client-core/apis/marketing/marketing-events.generated.ts +320 -0
  738. package/src/server/api-client-core/apis/marketing/single-send-types.generated.ts +178 -0
  739. package/src/server/api-client-core/apis/marketing/single-send.generated.ts +15 -0
  740. package/src/server/api-client-core/apis/marketing/transactional-single-send-types.generated.ts +337 -0
  741. package/src/server/api-client-core/apis/marketing/transactional-single-send.generated.ts +44 -0
  742. package/src/server/api-client-core/apis/meta/origins-types.generated.ts +84 -0
  743. package/src/server/api-client-core/apis/meta/origins.generated.ts +19 -0
  744. package/src/server/api-client-core/apis/scheduler/meetings-types.generated.ts +1110 -0
  745. package/src/server/api-client-core/apis/scheduler/meetings.generated.ts +50 -0
  746. package/src/server/api-client-core/apis/settings/multicurrency-types.generated.ts +2054 -0
  747. package/src/server/api-client-core/apis/settings/multicurrency.generated.ts +78 -0
  748. package/src/server/api-client-core/apis/settings/tax-rates-types.generated.ts +119 -0
  749. package/src/server/api-client-core/apis/settings/tax-rates.generated.ts +23 -0
  750. package/src/server/api-client-core/apis/settings/user-provisioning-types.generated.ts +322 -0
  751. package/src/server/api-client-core/apis/settings/user-provisioning.generated.ts +48 -0
  752. package/src/server/api-client-core/apis/webhooks-journal-types.generated.ts +906 -0
  753. package/src/server/api-client-core/apis/webhooks-journal.generated.ts +131 -0
  754. package/src/server/api-client-core/apis/webhooks-types.generated.ts +1423 -0
  755. package/src/server/api-client-core/apis/webhooks.generated.ts +171 -0
  756. package/src/server/api-client-core/binary-data.ts +38 -0
  757. package/src/server/api-client-core/client.ts +115 -0
  758. package/src/server/api-client-core/codegen-helpers/file-op-wrappers.ts +25 -0
  759. package/src/server/api-client-core/errors.ts +31 -0
  760. package/src/server/api-client-core/index.ts +49 -0
  761. package/src/server/api-client-core/op.ts +61 -0
  762. package/src/server/api-client-core/pagination.ts +106 -0
  763. package/src/server/api-client-core/plugins/fetch-transport.ts +115 -0
  764. package/src/server/api-client-core/plugins/index.ts +10 -0
  765. package/src/server/api-client-core/types.ts +148 -0
  766. package/src/server/api-client.ts +1 -0
  767. package/src/server/constants.ts +53 -0
  768. package/src/server/deno/index.ts +1 -0
  769. package/src/server/deno/start.ts +25 -0
  770. package/src/server/hono/hono-request-handler.ts +106 -0
  771. package/src/server/hono/hubspot-connect-routes/auth-callback.test.ts +225 -0
  772. package/src/server/hono/hubspot-connect-routes/auth-callback.ts +198 -0
  773. package/src/server/hono/hubspot-connect-routes/auth-init-session.test.ts +144 -0
  774. package/src/server/hono/hubspot-connect-routes/auth-init-session.ts +126 -0
  775. package/src/server/hono/hubspot-connect-routes/auth-logout.test.ts +124 -0
  776. package/src/server/hono/hubspot-connect-routes/auth-logout.ts +140 -0
  777. package/src/server/hono/hubspot-connect-routes/auth-refresh.test.ts +224 -0
  778. package/src/server/hono/hubspot-connect-routes/auth-refresh.ts +171 -0
  779. package/src/server/hono/hubspot-connect-routes/cimd-client-metadata-types.ts +54 -0
  780. package/src/server/hono/hubspot-connect-routes/cimd-public-routes.test.ts +128 -0
  781. package/src/server/hono/hubspot-connect-routes/cimd-public-routes.ts +72 -0
  782. package/src/server/hono/hubspot-connect-routes/constants.ts +3 -0
  783. package/src/server/hono/hubspot-connect-routes/fetch-hubspot-client-metadata.test.ts +75 -0
  784. package/src/server/hono/hubspot-connect-routes/fetch-hubspot-client-metadata.ts +73 -0
  785. package/src/server/hono/hubspot-connect-routes/hubspot-connect-routes.ts +95 -0
  786. package/src/server/hono/hubspot-connect-routes/load-hubspot-connect-routes-env.test.ts +145 -0
  787. package/src/server/hono/hubspot-connect-routes/load-hubspot-connect-routes-env.ts +67 -0
  788. package/src/server/hono/hubspot-connect-routes/oauth-client.ts +181 -0
  789. package/src/server/hono/hubspot-connect-routes/types.ts +36 -0
  790. package/src/server/hono/hubspot-connect-routes/utils.test.ts +132 -0
  791. package/src/server/hono/hubspot-connect-routes/utils.ts +138 -0
  792. package/src/server/hono/index.ts +6 -0
  793. package/src/server/hono/types.ts +25 -0
  794. package/src/server/hono/utils/cookie-utils.ts +55 -0
  795. package/src/server/import-app-keys.ts +55 -0
  796. package/src/server/lovable/create-app-function-start.ts +55 -0
  797. package/src/server/lovable/hubspot-connect/index.ts +28 -0
  798. package/src/server/lovable/hubspot-connect/run-hubspot-connect-lovable-server.ts +40 -0
  799. package/src/server/lovable/index.ts +16 -0
  800. package/src/server/node/index.ts +1 -0
  801. package/src/server/node/start.ts +25 -0
  802. package/src/server/oauth.ts +6 -0
  803. package/src/server/proxy.test.ts +80 -0
  804. package/src/server/proxy.ts +116 -0
  805. package/src/server/sanitize-request.test.ts +65 -0
  806. package/src/server/sanitize-request.ts +52 -0
  807. package/src/server/secure-start-core.ts +67 -0
  808. package/src/server/types.ts +62 -0
  809. package/src/server/utils/base64-utils.ts +5 -0
  810. package/src/server/utils/cookie-utils.test.ts +48 -0
  811. package/src/server/utils/cookie-utils.ts +26 -0
  812. package/src/server/utils/crypto-utils.ts +1 -0
  813. package/src/server/utils/dpop-utils.test.ts +102 -0
  814. package/src/server/utils/dpop-utils.ts +161 -0
  815. package/src/server/utils/env-utils.test.ts +92 -0
  816. package/src/server/utils/env-utils.ts +65 -0
  817. package/src/server/utils/jwk-utils.test.ts +34 -0
  818. package/src/server/utils/jwk-utils.ts +30 -0
  819. package/src/server/utils/jwt-utils.test.ts +81 -0
  820. package/src/server/utils/jwt-utils.ts +141 -0
  821. package/src/server/utils/test-fixtures.ts +32 -0
  822. package/src/shared/constants.ts +13 -0
  823. package/src/shared/encoding/base64.test.ts +57 -0
  824. package/src/shared/encoding/base64.ts +50 -0
  825. package/src/shared/encoding/sha256.test.ts +25 -0
  826. package/src/shared/encoding/sha256.ts +14 -0
  827. package/src/shared/logger.ts +50 -0
  828. package/src/shared/wire-types.ts +40 -0
  829. package/tsconfig.browser.json +10 -0
  830. package/tsconfig.json +8 -0
  831. package/tsconfig.server.json +12 -0
  832. package/tsdown.config.ts +38 -0
  833. package/vitest.config.ts +9 -0
@@ -0,0 +1,517 @@
1
+ //#region src/shared/logger.ts
2
+ function formatPrefix(name) {
3
+ return `[${name}]`;
4
+ }
5
+ /**
6
+ * Creates a console-backed logger that prefixes every line with the
7
+ * supplied `name`. Used as the default when no custom logger is
8
+ * provided.
9
+ */
10
+ function createLogger(name) {
11
+ const prefix = formatPrefix(name);
12
+ return {
13
+ debug: (message, ...args) => {
14
+ console.debug(prefix, message, ...args);
15
+ },
16
+ info: (message, ...args) => {
17
+ console.info(prefix, message, ...args);
18
+ },
19
+ warn: (message, ...args) => {
20
+ console.warn(prefix, message, ...args);
21
+ },
22
+ error: (message, ...args) => {
23
+ console.error(prefix, message, ...args);
24
+ }
25
+ };
26
+ }
27
+ /**
28
+ * Logger that swallows every message. Convenient for tests and for
29
+ * the SDK's server-side handlers when no logger is provided by the
30
+ * host application.
31
+ */
32
+ const noopLogger = {
33
+ debug: () => {},
34
+ info: () => {},
35
+ warn: () => {},
36
+ error: () => {}
37
+ };
38
+ //#endregion
39
+ //#region src/browser/app-connect-controller/utils/timeout-utils.ts
40
+ function delay(ms) {
41
+ if (ms <= 0) return Promise.resolve();
42
+ return new Promise((resolve) => {
43
+ setTimeout(resolve, ms);
44
+ });
45
+ }
46
+ //#endregion
47
+ //#region src/browser/app-connect-controller/connect-start.ts
48
+ /** Extra wait before redirect so the connect progress UI is visible; set to `0` to disable. */
49
+ const ARTIFICIAL_CONNECT_REDIRECT_DELAY_MS = 500;
50
+ /**
51
+ * Begins the OAuth connect flow:
52
+ *
53
+ * 1. Calls the SDK's `auth/init-session` route to mint a fresh PKCE
54
+ * verifier + state and obtain HubSpot's `authorize` URL.
55
+ * 2. Navigates the browser to that URL (full-page redirect).
56
+ *
57
+ * The `return_path` is the current path + query so the user lands
58
+ * back where they started after authorizing.
59
+ *
60
+ * Throws when the init call fails. Does not return after the redirect
61
+ * begins because the page is unloaded.
62
+ */
63
+ async function startHubSpotConnection(context) {
64
+ const { config } = context;
65
+ const returnPath = `${window.location.pathname}${window.location.search}`;
66
+ const initUrl = new URL(`${config.hubSpotConnectBaseUrl}/auth/init-session`, window.location.origin);
67
+ initUrl.searchParams.set("return_path", returnPath);
68
+ const initResponse = await fetch(initUrl.toString(), { credentials: "include" });
69
+ if (!initResponse.ok) throw new Error(`Failed to init session: ${initResponse.status}`);
70
+ const { authorization_url: authorizationUrl } = await initResponse.json();
71
+ await delay(ARTIFICIAL_CONNECT_REDIRECT_DELAY_MS);
72
+ window.location.href = authorizationUrl;
73
+ }
74
+ //#endregion
75
+ //#region src/browser/app-connect-controller/default-session-storage.ts
76
+ /**
77
+ * Builds a `SessionStorage` adapter that delegates to the global
78
+ * `sessionStorage` object exposed by browsers. The controller uses
79
+ * this when no custom storage is supplied (e.g. for tests or non-DOM
80
+ * environments).
81
+ */
82
+ function createDefaultSessionStorage() {
83
+ return {
84
+ setItem: (key, value) => {
85
+ sessionStorage.setItem(key, value);
86
+ },
87
+ getItem: (key) => {
88
+ return sessionStorage.getItem(key);
89
+ },
90
+ removeItem: (key) => {
91
+ sessionStorage.removeItem(key);
92
+ }
93
+ };
94
+ }
95
+ //#endregion
96
+ //#region src/shared/constants.ts
97
+ /**
98
+ * Constants whose values are part of the contract between the browser
99
+ * controller and the server-side hubspot-connect routes. Both halves
100
+ * import from this module so the wire format stays in sync.
101
+ */
102
+ /**
103
+ * Query parameter on the OAuth return URL that carries the new access
104
+ * token's expiry (Unix epoch milliseconds). The server emits this on
105
+ * the `auth/callback` redirect; the browser parses it during `initSdk`
106
+ * and then strips it from the URL via `history.replaceState`.
107
+ */
108
+ const EXPIRES_AT_URL_PARAM = "__hs_expires_at";
109
+ //#endregion
110
+ //#region src/browser/app-connect-controller/constants.ts
111
+ /**
112
+ * Key the controller persists the access-token `expiresAt` (Unix
113
+ * epoch milliseconds) under in `sessionStorage`. Survives full-page
114
+ * navigations within the same tab.
115
+ */
116
+ const EXPIRES_AT_KEY = "hubspot_token_expires_at";
117
+ /**
118
+ * Number of milliseconds before `expiresAt` that the refresh
119
+ * scheduler attempts to mint a new access token. 60s is comfortably
120
+ * larger than typical network latency without burning lifetime.
121
+ */
122
+ const REFRESH_BUFFER_MS = 6e4;
123
+ //#endregion
124
+ //#region src/browser/app-connect-controller/utils/session-utils.ts
125
+ /**
126
+ * Persists the access-token `expiresAt` (Unix epoch milliseconds) to
127
+ * both the in-memory store and `sessionStorage` so it survives
128
+ * full-page navigations within the same tab.
129
+ */
130
+ function storeExpiresAt(options) {
131
+ const { context, expiresAtMs } = options;
132
+ context.store.setState({ expiresAt: expiresAtMs });
133
+ context.sessionStorage.setItem(EXPIRES_AT_KEY, String(expiresAtMs));
134
+ }
135
+ /**
136
+ * Reads the persisted `expiresAt` from `sessionStorage`. Removes the
137
+ * value (and returns `null`) if it is malformed or already expired,
138
+ * so a stale entry never reactivates a dead session.
139
+ */
140
+ function getExpiresAtFromSessionStorage(context) {
141
+ const raw = context.sessionStorage.getItem(EXPIRES_AT_KEY);
142
+ if (!raw) return null;
143
+ const val = parseInt(raw, 10);
144
+ if (isNaN(val)) {
145
+ context.sessionStorage.removeItem(EXPIRES_AT_KEY);
146
+ return null;
147
+ }
148
+ if (Date.now() > val) {
149
+ context.sessionStorage.removeItem(EXPIRES_AT_KEY);
150
+ return null;
151
+ }
152
+ return val;
153
+ }
154
+ /**
155
+ * Clears the persisted session-storage state. Called on disconnect.
156
+ */
157
+ function clearSessionStorage(context) {
158
+ context.sessionStorage.removeItem(EXPIRES_AT_KEY);
159
+ }
160
+ /**
161
+ * Returns `true` when the controller has an `expiresAt` whose value
162
+ * is still in the future. Used both to drive the UI status and to
163
+ * decide whether the refresh scheduler should run.
164
+ */
165
+ function isClientSessionActive(context) {
166
+ const expiresAt = context.store.getSnapshot().expiresAt;
167
+ return expiresAt !== null && Date.now() < expiresAt;
168
+ }
169
+ //#endregion
170
+ //#region src/browser/app-connect-controller/disconnect.ts
171
+ /**
172
+ * Disconnect flow:
173
+ *
174
+ * 1. Calls the SDK's `auth/logout` route to revoke the upstream token
175
+ * and clear the refresh-token cookie.
176
+ * 2. Clears the local session-storage `expiresAt` entry.
177
+ * 3. Updates the controller state to `disconnected` and navigates the
178
+ * browser to the URL the server returned in `redirect_to`.
179
+ *
180
+ * Errors are caught, logged, and surfaced via the controller's
181
+ * `error` field so the UI can show a retry state.
182
+ */
183
+ async function disconnectFromHubSpot(context) {
184
+ const { config, logger, store } = context;
185
+ logger.info("disconnectFromHubSpot: starting");
186
+ store.setState({
187
+ error: null,
188
+ isDisconnectInFlight: true
189
+ });
190
+ const { hubSpotConnectBaseUrl: appConnectBaseUrl } = config;
191
+ try {
192
+ clearSessionStorage(context);
193
+ const response = await fetch(`${appConnectBaseUrl}/auth/logout`, {
194
+ method: "POST",
195
+ credentials: "include"
196
+ });
197
+ if (!response.ok) throw new Error(`Logout failed: ${response.status}`);
198
+ const { redirect_to: redirectTo } = await response.json();
199
+ store.setState({
200
+ expiresAt: null,
201
+ isSessionConnected: false,
202
+ isDisconnectInFlight: false
203
+ });
204
+ window.location.href = redirectTo;
205
+ logger.info("disconnectFromHubSpot: redirecting");
206
+ } catch (err) {
207
+ const message = err instanceof Error ? err.message : "Disconnect failed";
208
+ logger.error("disconnectFromHubSpot: failed", err);
209
+ store.setState({
210
+ error: message,
211
+ isDisconnectInFlight: false
212
+ });
213
+ }
214
+ }
215
+ //#endregion
216
+ //#region src/browser/app-connect-controller/init.ts
217
+ /**
218
+ * Picks up the `__hs_expires_at` parameter the OAuth callback adds to
219
+ * the redirect URL, persists it to the controller, and strips it from
220
+ * the address bar so it's not logged or bookmarked.
221
+ *
222
+ * Called once by `controller.start()`. A no-op when the parameter
223
+ * isn't present (e.g. on every page load other than the OAuth return
224
+ * trip).
225
+ */
226
+ async function initAppConnect(context) {
227
+ const params = new URLSearchParams(window.location.search);
228
+ const expiresAtStr = params.get(EXPIRES_AT_URL_PARAM);
229
+ if (!expiresAtStr) return;
230
+ const expiresAt = parseInt(expiresAtStr, 10);
231
+ if (isNaN(expiresAt)) return;
232
+ params.delete(EXPIRES_AT_URL_PARAM);
233
+ const cleanSearch = params.toString();
234
+ history.replaceState(null, "", cleanSearch ? `${window.location.pathname}?${cleanSearch}` : window.location.pathname);
235
+ context.store.setState({ expiresAt });
236
+ context.sessionStorage.setItem(EXPIRES_AT_KEY, String(expiresAt));
237
+ }
238
+ //#endregion
239
+ //#region src/browser/app-connect-controller/refresh.ts
240
+ async function refreshAccessToken(context) {
241
+ const { config } = context;
242
+ const refreshResponse = await fetch(`${config.hubSpotConnectBaseUrl}/auth/refresh`, {
243
+ method: "POST",
244
+ credentials: "include"
245
+ });
246
+ if (!refreshResponse.ok) throw new Error(`Refresh failed: ${refreshResponse.status}`);
247
+ const { expires_in: expiresInSeconds } = await refreshResponse.json();
248
+ if (typeof expiresInSeconds !== "number" || !Number.isFinite(expiresInSeconds) || expiresInSeconds <= 0) throw new Error("Refresh response missing or invalid expires_in");
249
+ storeExpiresAt({
250
+ context,
251
+ expiresAtMs: Date.now() + expiresInSeconds * 1e3
252
+ });
253
+ }
254
+ /**
255
+ * Subscribes to store changes and (re)schedules a token refresh
256
+ * whenever `expiresAt` moves. Returns a handle that the caller can
257
+ * use to stop the scheduler when the controller is destroyed.
258
+ */
259
+ function startRefreshScheduler(context) {
260
+ const { logger, store } = context;
261
+ let refreshTimer = null;
262
+ let stopped = false;
263
+ const scheduleRefresh = () => {
264
+ if (refreshTimer) {
265
+ clearTimeout(refreshTimer);
266
+ refreshTimer = null;
267
+ }
268
+ if (stopped) return;
269
+ const state = store.getSnapshot();
270
+ if (!state.isInitComplete || !state.isSessionConnected) return;
271
+ const expiresAt = state.expiresAt;
272
+ if (!expiresAt) {
273
+ logger.debug("scheduleRefresh: no expiresAt, skipping");
274
+ return;
275
+ }
276
+ const delayMs = Math.max(0, expiresAt - Date.now() - REFRESH_BUFFER_MS);
277
+ logger.debug("scheduleRefresh: next refresh in ", (delayMs / 1e3).toFixed(1), "s", { expiresAt });
278
+ refreshTimer = setTimeout(() => {
279
+ logger.debug("scheduleRefresh: timer fired, refreshing token");
280
+ refreshTimer = null;
281
+ if (stopped) return;
282
+ (async () => {
283
+ try {
284
+ await refreshAccessToken(context);
285
+ if (stopped) return;
286
+ if (isClientSessionActive(context)) logger.info("token refresh: success, session still active");
287
+ else {
288
+ logger.warn("token refresh: success but no active session in storage");
289
+ store.setState({ isSessionConnected: false });
290
+ }
291
+ } catch (err) {
292
+ logger.error("token refresh: failed", err);
293
+ if (stopped) return;
294
+ store.setState({ isSessionConnected: false });
295
+ }
296
+ })();
297
+ }, delayMs);
298
+ };
299
+ const unsubscribe = store.subscribe(() => {
300
+ scheduleRefresh();
301
+ });
302
+ return { stop: () => {
303
+ stopped = true;
304
+ unsubscribe();
305
+ if (refreshTimer) {
306
+ clearTimeout(refreshTimer);
307
+ refreshTimer = null;
308
+ }
309
+ } };
310
+ }
311
+ //#endregion
312
+ //#region src/browser/app-connect-controller/utils/memoize-utils.ts
313
+ /**
314
+ * Wraps `fn` so that calls with the same input (compared via
315
+ * `Object.is`) return the previous output without re-invoking `fn`.
316
+ * The cache holds at most one entry, so this is safe to use for
317
+ * derived view-state from a single store snapshot.
318
+ *
319
+ * Used by `getSnapshot` to keep the React state reference stable
320
+ * between unrelated store updates — `useSyncExternalStore` would
321
+ * otherwise re-render every consumer on every change.
322
+ */
323
+ function memoizeLast(fn) {
324
+ let lastInput;
325
+ let lastOutput;
326
+ let hasValue = false;
327
+ return (input) => {
328
+ if (hasValue && Object.is(lastInput, input)) return lastOutput;
329
+ lastInput = input;
330
+ lastOutput = fn(input);
331
+ hasValue = true;
332
+ return lastOutput;
333
+ };
334
+ }
335
+ //#endregion
336
+ //#region src/browser/app-connect-controller/utils/store-utils.ts
337
+ function shallowEqualState(a, b) {
338
+ const keys = new Set([...Object.keys(a), ...Object.keys(b)]);
339
+ for (const k of keys) if (!Object.is(a[k], b[k])) return false;
340
+ return true;
341
+ }
342
+ function mergeState(prev, partial) {
343
+ return {
344
+ ...prev,
345
+ ...partial
346
+ };
347
+ }
348
+ /**
349
+ * Creates a new {@link Store}. The store starts with a shallow copy
350
+ * of `initialState`; subsequent mutations never touch the caller's
351
+ * object.
352
+ */
353
+ function createStore(initialState) {
354
+ let state = { ...initialState };
355
+ const listeners = /* @__PURE__ */ new Set();
356
+ let destroyed = false;
357
+ const notify = () => {
358
+ for (const listener of listeners) listener();
359
+ };
360
+ return {
361
+ getSnapshot() {
362
+ return state;
363
+ },
364
+ subscribe(onChange) {
365
+ listeners.add(onChange);
366
+ return () => {
367
+ listeners.delete(onChange);
368
+ };
369
+ },
370
+ setState(update) {
371
+ if (destroyed) return;
372
+ const patch = typeof update === "function" ? update(state) : update;
373
+ if (typeof patch !== "object" || patch == null) return;
374
+ const next = mergeState(state, patch);
375
+ if (shallowEqualState(state, next)) return;
376
+ state = next;
377
+ notify();
378
+ },
379
+ get(key) {
380
+ return state[key];
381
+ },
382
+ set(key, value) {
383
+ if (destroyed) return;
384
+ if (Object.is(state[key], value)) return;
385
+ state = {
386
+ ...state,
387
+ [key]: value
388
+ };
389
+ notify();
390
+ },
391
+ destroy() {
392
+ destroyed = true;
393
+ listeners.clear();
394
+ }
395
+ };
396
+ }
397
+ //#endregion
398
+ //#region src/browser/app-connect-controller/view-state.ts
399
+ const noop = () => Promise.resolve();
400
+ /**
401
+ * Snapshot returned by `getServerSnapshot` for SSR. Has stable
402
+ * references and inert connect/disconnect actions because actions are
403
+ * meaningless before hydration.
404
+ */
405
+ const SERVER_VIEW = {
406
+ status: "initializing",
407
+ error: null,
408
+ connectToHubSpot: noop,
409
+ disconnectFromHubSpot: noop
410
+ };
411
+ /**
412
+ * Reduces the boolean lifecycle flags into the user-facing
413
+ * `AppConnectStatus` enum value. The order of checks matters:
414
+ * disconnect-in-flight beats connect-in-flight (a transitional logout
415
+ * shouldn't show a "connecting" spinner), and connected beats default.
416
+ */
417
+ function getDerivedStatus(state) {
418
+ const { isInitComplete, isConnectInFlight, isSessionConnected, isDisconnectInFlight } = state;
419
+ if (!isInitComplete) return "initializing";
420
+ if (isDisconnectInFlight) return "disconnecting";
421
+ if (isConnectInFlight) return "connecting";
422
+ if (isSessionConnected) return "connected";
423
+ return "disconnected";
424
+ }
425
+ //#endregion
426
+ //#region src/browser/app-connect-controller/create.ts
427
+ /**
428
+ * Creates an `AppConnectController`. Exactly one controller should be
429
+ * shared by the entire app — the React provider takes the controller
430
+ * as a prop and exposes it via context.
431
+ *
432
+ * The returned controller is inert until `start()` is called: nothing
433
+ * is read from session storage, no refresh timer is scheduled, and no
434
+ * fetches are issued. Tests can construct a controller and inspect
435
+ * its initial snapshot without triggering side effects.
436
+ */
437
+ function createAppConnectController(options) {
438
+ const { config, logger = noopLogger } = options;
439
+ const sessionStorage = createDefaultSessionStorage();
440
+ const store = createStore({
441
+ isInitComplete: false,
442
+ isConnectInFlight: false,
443
+ isDisconnectInFlight: false,
444
+ isSessionConnected: false,
445
+ error: null,
446
+ expiresAt: null
447
+ });
448
+ const context = {
449
+ config,
450
+ logger,
451
+ sessionStorage,
452
+ store
453
+ };
454
+ store.setState({ expiresAt: getExpiresAtFromSessionStorage(context) });
455
+ let hasStarted = false;
456
+ const connectToHubSpot = async () => {
457
+ logger.info("connectToHubSpot: starting");
458
+ store.setState({
459
+ error: null,
460
+ isConnectInFlight: true
461
+ });
462
+ try {
463
+ await startHubSpotConnection(context);
464
+ } catch (err) {
465
+ const message = err instanceof Error ? err.message : "Connection failed";
466
+ logger.error("connectToHubSpot: failed", err);
467
+ store.setState({ error: message });
468
+ } finally {
469
+ logger.debug("connectToHubSpot: connect flow step finished (may redirect to HubSpot)");
470
+ store.setState({ isConnectInFlight: false });
471
+ }
472
+ };
473
+ const disconnectFromHubSpot$1 = () => disconnectFromHubSpot(context);
474
+ const getViewStateMemoized = memoizeLast((storeState) => ({
475
+ status: getDerivedStatus(storeState),
476
+ error: storeState.error,
477
+ connectToHubSpot,
478
+ disconnectFromHubSpot: disconnectFromHubSpot$1
479
+ }));
480
+ function getSnapshot() {
481
+ return getViewStateMemoized(store.getSnapshot());
482
+ }
483
+ return {
484
+ start() {
485
+ if (hasStarted) {
486
+ logger.debug("start skipped (already started)");
487
+ return;
488
+ }
489
+ hasStarted = true;
490
+ startRefreshScheduler(context);
491
+ logger.info("start: initSdk (OAuth return handling if applicable)");
492
+ (async () => {
493
+ try {
494
+ await initAppConnect(context);
495
+ logger.info("initSdk: completed without error");
496
+ } catch (err) {
497
+ logger.error("initSdk: failed", err);
498
+ store.setState({ error: err instanceof Error ? err.message : "App Connect initialization failed" });
499
+ } finally {
500
+ const sessionActive = isClientSessionActive(context);
501
+ logger.info("start: init complete, session active:", sessionActive);
502
+ store.setState({
503
+ isInitComplete: true,
504
+ isSessionConnected: sessionActive
505
+ });
506
+ }
507
+ })();
508
+ },
509
+ subscribe: (fn) => store.subscribe(fn),
510
+ getSnapshot,
511
+ getServerSnapshot: () => SERVER_VIEW
512
+ };
513
+ }
514
+ //#endregion
515
+ export { createLogger as n, createAppConnectController as t };
516
+
517
+ //# sourceMappingURL=create-vctOhpX9.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-vctOhpX9.js","names":["disconnectFromHubSpot","runDisconnectFromHubSpot"],"sources":["../../src/shared/logger.ts","../../src/browser/app-connect-controller/utils/timeout-utils.ts","../../src/browser/app-connect-controller/connect-start.ts","../../src/browser/app-connect-controller/default-session-storage.ts","../../src/shared/constants.ts","../../src/browser/app-connect-controller/constants.ts","../../src/browser/app-connect-controller/utils/session-utils.ts","../../src/browser/app-connect-controller/disconnect.ts","../../src/browser/app-connect-controller/init.ts","../../src/browser/app-connect-controller/refresh.ts","../../src/browser/app-connect-controller/utils/memoize-utils.ts","../../src/browser/app-connect-controller/utils/store-utils.ts","../../src/browser/app-connect-controller/view-state.ts","../../src/browser/app-connect-controller/create.ts"],"sourcesContent":["/**\n * Pluggable logger contract used by the SDK on both the browser and\n * server. Consumers can pass `console`-like loggers, structured\n * loggers (pino / winston / etc.) or no-op stubs in tests.\n */\nexport interface Logger {\n debug: (message: string, ...args: unknown[]) => void;\n info: (message: string, ...args: unknown[]) => void;\n warn: (message: string, ...args: unknown[]) => void;\n error: (message: string, ...args: unknown[]) => void;\n}\n\nfunction formatPrefix(name: string): string {\n return `[${name}]`;\n}\n\n/**\n * Creates a console-backed logger that prefixes every line with the\n * supplied `name`. Used as the default when no custom logger is\n * provided.\n */\nexport function createLogger(name: string): Logger {\n const prefix = formatPrefix(name);\n return {\n debug: (message, ...args) => {\n console.debug(prefix, message, ...args);\n },\n info: (message, ...args) => {\n console.info(prefix, message, ...args);\n },\n warn: (message, ...args) => {\n console.warn(prefix, message, ...args);\n },\n error: (message, ...args) => {\n console.error(prefix, message, ...args);\n },\n };\n}\n\n/**\n * Logger that swallows every message. Convenient for tests and for\n * the SDK's server-side handlers when no logger is provided by the\n * host application.\n */\nexport const noopLogger: Logger = {\n debug: () => {},\n info: () => {},\n warn: () => {},\n error: () => {},\n};\n","export function delay(ms: number): Promise<void> {\n if (ms <= 0) {\n return Promise.resolve();\n }\n return new Promise((resolve) => {\n setTimeout(resolve, ms);\n });\n}\n","import type { InitSessionResponse } from '../../shared/wire-types.ts';\nimport type { AppConnectContext } from './types.ts';\nimport { delay } from './utils/timeout-utils.ts';\n\n/** Extra wait before redirect so the connect progress UI is visible; set to `0` to disable. */\nconst ARTIFICIAL_CONNECT_REDIRECT_DELAY_MS = 500;\n\n/**\n * Begins the OAuth connect flow:\n *\n * 1. Calls the SDK's `auth/init-session` route to mint a fresh PKCE\n * verifier + state and obtain HubSpot's `authorize` URL.\n * 2. Navigates the browser to that URL (full-page redirect).\n *\n * The `return_path` is the current path + query so the user lands\n * back where they started after authorizing.\n *\n * Throws when the init call fails. Does not return after the redirect\n * begins because the page is unloaded.\n */\nexport async function startHubSpotConnection(\n context: AppConnectContext\n): Promise<void> {\n const { config } = context;\n\n const returnPath = `${window.location.pathname}${window.location.search}`;\n\n const initUrl = new URL(\n `${config.hubSpotConnectBaseUrl}/auth/init-session`,\n window.location.origin\n );\n initUrl.searchParams.set('return_path', returnPath);\n\n const initResponse = await fetch(initUrl.toString(), {\n credentials: 'include',\n });\n if (!initResponse.ok)\n throw new Error(`Failed to init session: ${initResponse.status}`);\n const { authorization_url: authorizationUrl } =\n (await initResponse.json()) as InitSessionResponse;\n\n await delay(ARTIFICIAL_CONNECT_REDIRECT_DELAY_MS);\n\n window.location.href = authorizationUrl;\n}\n","import type { SessionStorage } from './types.ts';\n\n/**\n * Builds a `SessionStorage` adapter that delegates to the global\n * `sessionStorage` object exposed by browsers. The controller uses\n * this when no custom storage is supplied (e.g. for tests or non-DOM\n * environments).\n */\nexport function createDefaultSessionStorage(): SessionStorage {\n return {\n setItem: (key, value) => {\n sessionStorage.setItem(key, value);\n },\n getItem: (key) => {\n return sessionStorage.getItem(key);\n },\n removeItem: (key) => {\n sessionStorage.removeItem(key);\n },\n };\n}\n","/**\n * Constants whose values are part of the contract between the browser\n * controller and the server-side hubspot-connect routes. Both halves\n * import from this module so the wire format stays in sync.\n */\n\n/**\n * Query parameter on the OAuth return URL that carries the new access\n * token's expiry (Unix epoch milliseconds). The server emits this on\n * the `auth/callback` redirect; the browser parses it during `initSdk`\n * and then strips it from the URL via `history.replaceState`.\n */\nexport const EXPIRES_AT_URL_PARAM = '__hs_expires_at';\n","export { EXPIRES_AT_URL_PARAM } from '../../shared/constants.ts';\n\n/**\n * Key the controller persists the access-token `expiresAt` (Unix\n * epoch milliseconds) under in `sessionStorage`. Survives full-page\n * navigations within the same tab.\n */\nexport const EXPIRES_AT_KEY = 'hubspot_token_expires_at';\n\n/**\n * Number of milliseconds before `expiresAt` that the refresh\n * scheduler attempts to mint a new access token. 60s is comfortably\n * larger than typical network latency without burning lifetime.\n */\nexport const REFRESH_BUFFER_MS = 60_000;\n","import { EXPIRES_AT_KEY } from '../constants.ts';\nimport type { AppConnectContext } from '../types.ts';\n\ninterface StoreExpiresAtOptions {\n context: AppConnectContext;\n expiresAtMs: number;\n}\n\n/**\n * Persists the access-token `expiresAt` (Unix epoch milliseconds) to\n * both the in-memory store and `sessionStorage` so it survives\n * full-page navigations within the same tab.\n */\nexport function storeExpiresAt(options: StoreExpiresAtOptions): void {\n const { context, expiresAtMs } = options;\n context.store.setState({ expiresAt: expiresAtMs });\n context.sessionStorage.setItem(EXPIRES_AT_KEY, String(expiresAtMs));\n}\n\n/**\n * Reads the persisted `expiresAt` from `sessionStorage`. Removes the\n * value (and returns `null`) if it is malformed or already expired,\n * so a stale entry never reactivates a dead session.\n */\nexport function getExpiresAtFromSessionStorage(\n context: AppConnectContext\n): number | null {\n const raw = context.sessionStorage.getItem(EXPIRES_AT_KEY);\n if (!raw) return null;\n const val = parseInt(raw, 10);\n if (isNaN(val)) {\n context.sessionStorage.removeItem(EXPIRES_AT_KEY);\n return null;\n }\n if (Date.now() > val) {\n context.sessionStorage.removeItem(EXPIRES_AT_KEY);\n return null;\n }\n return val;\n}\n\n/**\n * Clears the persisted session-storage state. Called on disconnect.\n */\nexport function clearSessionStorage(context: AppConnectContext): void {\n context.sessionStorage.removeItem(EXPIRES_AT_KEY);\n}\n\n/**\n * Returns `true` when the controller has an `expiresAt` whose value\n * is still in the future. Used both to drive the UI status and to\n * decide whether the refresh scheduler should run.\n */\nexport function isClientSessionActive(context: AppConnectContext): boolean {\n const state = context.store.getSnapshot();\n const expiresAt = state.expiresAt;\n return expiresAt !== null && Date.now() < expiresAt;\n}\n","import type { LogoutResponse } from '../../shared/wire-types.ts';\nimport type { AppConnectContext } from './types.ts';\nimport { clearSessionStorage } from './utils/session-utils.ts';\n\n/**\n * Disconnect flow:\n *\n * 1. Calls the SDK's `auth/logout` route to revoke the upstream token\n * and clear the refresh-token cookie.\n * 2. Clears the local session-storage `expiresAt` entry.\n * 3. Updates the controller state to `disconnected` and navigates the\n * browser to the URL the server returned in `redirect_to`.\n *\n * Errors are caught, logged, and surfaced via the controller's\n * `error` field so the UI can show a retry state.\n */\nexport async function disconnectFromHubSpot(\n context: AppConnectContext\n): Promise<void> {\n const { config, logger, store } = context;\n logger.info('disconnectFromHubSpot: starting');\n store.setState({ error: null, isDisconnectInFlight: true });\n const { hubSpotConnectBaseUrl: appConnectBaseUrl } = config;\n\n try {\n clearSessionStorage(context);\n\n const response = await fetch(`${appConnectBaseUrl}/auth/logout`, {\n method: 'POST',\n credentials: 'include',\n });\n if (!response.ok) {\n throw new Error(`Logout failed: ${response.status}`);\n }\n const { redirect_to: redirectTo } =\n (await response.json()) as LogoutResponse;\n\n store.setState({\n expiresAt: null,\n isSessionConnected: false,\n isDisconnectInFlight: false,\n });\n\n window.location.href = redirectTo;\n logger.info('disconnectFromHubSpot: redirecting');\n } catch (err) {\n const message = err instanceof Error ? err.message : 'Disconnect failed';\n logger.error('disconnectFromHubSpot: failed', err);\n store.setState({\n error: message,\n isDisconnectInFlight: false,\n });\n }\n}\n","import { EXPIRES_AT_KEY, EXPIRES_AT_URL_PARAM } from './constants.ts';\nimport type { AppConnectContext } from './types.ts';\n\n/**\n * Picks up the `__hs_expires_at` parameter the OAuth callback adds to\n * the redirect URL, persists it to the controller, and strips it from\n * the address bar so it's not logged or bookmarked.\n *\n * Called once by `controller.start()`. A no-op when the parameter\n * isn't present (e.g. on every page load other than the OAuth return\n * trip).\n */\nexport async function initAppConnect(\n context: AppConnectContext\n): Promise<void> {\n const params = new URLSearchParams(window.location.search);\n const expiresAtStr = params.get(EXPIRES_AT_URL_PARAM);\n if (!expiresAtStr) return;\n\n const expiresAt = parseInt(expiresAtStr, 10);\n if (isNaN(expiresAt)) return;\n\n params.delete(EXPIRES_AT_URL_PARAM);\n const cleanSearch = params.toString();\n history.replaceState(\n null,\n '',\n cleanSearch\n ? `${window.location.pathname}?${cleanSearch}`\n : window.location.pathname\n );\n\n context.store.setState({ expiresAt });\n context.sessionStorage.setItem(EXPIRES_AT_KEY, String(expiresAt));\n}\n","import type { RefreshTokenResponse } from '../../shared/wire-types.ts';\nimport { REFRESH_BUFFER_MS } from './constants.ts';\nimport type { AppConnectContext } from './types.ts';\nimport {\n isClientSessionActive,\n storeExpiresAt,\n} from './utils/session-utils.ts';\n\n/**\n * Tear-down handle returned by {@link startRefreshScheduler}. Calling\n * `stop()` clears any pending refresh timer and unsubscribes from the\n * store so the controller can be garbage-collected.\n */\nexport interface RefreshSchedulerHandle {\n stop: () => void;\n}\n\nasync function refreshAccessToken(context: AppConnectContext): Promise<void> {\n const { config } = context;\n\n const refreshResponse = await fetch(\n `${config.hubSpotConnectBaseUrl}/auth/refresh`,\n {\n method: 'POST',\n credentials: 'include',\n }\n );\n if (!refreshResponse.ok) {\n throw new Error(`Refresh failed: ${refreshResponse.status}`);\n }\n const { expires_in: expiresInSeconds } =\n (await refreshResponse.json()) as RefreshTokenResponse;\n if (\n typeof expiresInSeconds !== 'number' ||\n !Number.isFinite(expiresInSeconds) ||\n expiresInSeconds <= 0\n ) {\n throw new Error('Refresh response missing or invalid expires_in');\n }\n const expiresAtMs = Date.now() + expiresInSeconds * 1000;\n\n storeExpiresAt({ context, expiresAtMs });\n}\n\n/**\n * Subscribes to store changes and (re)schedules a token refresh\n * whenever `expiresAt` moves. Returns a handle that the caller can\n * use to stop the scheduler when the controller is destroyed.\n */\nexport function startRefreshScheduler(\n context: AppConnectContext\n): RefreshSchedulerHandle {\n const { logger, store } = context;\n\n let refreshTimer: ReturnType<typeof setTimeout> | null = null;\n let stopped = false;\n\n const scheduleRefresh = () => {\n if (refreshTimer) {\n clearTimeout(refreshTimer);\n refreshTimer = null;\n }\n if (stopped) return;\n\n const state = store.getSnapshot();\n if (!state.isInitComplete || !state.isSessionConnected) {\n return;\n }\n\n const expiresAt = state.expiresAt;\n if (!expiresAt) {\n logger.debug('scheduleRefresh: no expiresAt, skipping');\n return;\n }\n const delayMs = Math.max(0, expiresAt - Date.now() - REFRESH_BUFFER_MS);\n logger.debug(\n 'scheduleRefresh: next refresh in ',\n (delayMs / 1000).toFixed(1),\n 's',\n {\n expiresAt,\n }\n );\n refreshTimer = setTimeout(() => {\n logger.debug('scheduleRefresh: timer fired, refreshing token');\n refreshTimer = null;\n if (stopped) return;\n\n void (async () => {\n try {\n await refreshAccessToken(context);\n if (stopped) return;\n if (isClientSessionActive(context)) {\n logger.info('token refresh: success, session still active');\n } else {\n logger.warn(\n 'token refresh: success but no active session in storage'\n );\n store.setState({ isSessionConnected: false });\n }\n } catch (err) {\n logger.error('token refresh: failed', err);\n if (stopped) return;\n store.setState({ isSessionConnected: false });\n }\n })();\n }, delayMs);\n };\n\n const unsubscribe = store.subscribe(() => {\n scheduleRefresh();\n });\n\n return {\n stop: () => {\n stopped = true;\n unsubscribe();\n if (refreshTimer) {\n clearTimeout(refreshTimer);\n refreshTimer = null;\n }\n },\n };\n}\n","/**\n * Wraps `fn` so that calls with the same input (compared via\n * `Object.is`) return the previous output without re-invoking `fn`.\n * The cache holds at most one entry, so this is safe to use for\n * derived view-state from a single store snapshot.\n *\n * Used by `getSnapshot` to keep the React state reference stable\n * between unrelated store updates — `useSyncExternalStore` would\n * otherwise re-render every consumer on every change.\n */\nexport function memoizeLast<TInput, TOutput>(\n fn: (input: TInput) => TOutput\n): (input: TInput) => TOutput {\n let lastInput: TInput;\n let lastOutput: TOutput;\n let hasValue = false;\n return (input: TInput): TOutput => {\n if (hasValue && Object.is(lastInput, input)) {\n return lastOutput;\n }\n lastInput = input;\n lastOutput = fn(input);\n hasValue = true;\n return lastOutput;\n };\n}\n","/**\n * Tiny external store used by the controller. Shaped to be compatible\n * with React's `useSyncExternalStore` while remaining usable outside\n * React.\n */\nexport interface Store<TState extends object> {\n /** Returns the current state. The reference changes on every update. */\n getSnapshot: () => Readonly<TState>;\n /**\n * Subscribes to state changes. Returns an unsubscribe function the\n * caller can invoke at teardown.\n */\n subscribe: (onChange: () => void) => () => void;\n /**\n * Merges `update` into the current state. When `update` is a\n * function, it receives the current state and returns a partial.\n * Listeners are only notified when at least one key actually\n * changed (shallow compare).\n */\n setState: (\n update:\n | Partial<TState>\n | ((prev: Readonly<TState>) => Partial<TState> | TState)\n ) => void;\n /** Reads a single key from the current state. */\n get: <K extends keyof TState>(key: K) => TState[K];\n /** Writes a single key. Listeners only fire when the value changes. */\n set: <K extends keyof TState>(key: K, value: TState[K]) => void;\n /**\n * Drops every listener and prevents future `setState`/`set` calls\n * from notifying. Used by `controller.destroy()`.\n */\n destroy: () => void;\n}\n\nfunction shallowEqualState<TState extends object>(\n a: TState,\n b: TState\n): boolean {\n const keys = new Set([\n ...Object.keys(a),\n ...Object.keys(b),\n ] as (keyof TState)[]);\n for (const k of keys) {\n if (!Object.is(a[k], b[k])) {\n return false;\n }\n }\n return true;\n}\n\nfunction mergeState<TState extends object>(\n prev: TState,\n partial: Partial<TState>\n): TState {\n return { ...prev, ...partial } as TState;\n}\n\n/**\n * Creates a new {@link Store}. The store starts with a shallow copy\n * of `initialState`; subsequent mutations never touch the caller's\n * object.\n */\nexport function createStore<TState extends object>(\n initialState: TState\n): Store<TState> {\n let state: TState = { ...initialState };\n const listeners = new Set<() => void>();\n let destroyed = false;\n\n const notify = () => {\n for (const listener of listeners) {\n listener();\n }\n };\n\n return {\n getSnapshot() {\n return state as Readonly<TState>;\n },\n subscribe(onChange) {\n listeners.add(onChange);\n return () => {\n listeners.delete(onChange);\n };\n },\n setState(update) {\n if (destroyed) return;\n const patch =\n typeof update === 'function'\n ? update(state as Readonly<TState>)\n : update;\n if (typeof patch !== 'object' || patch == null) {\n return;\n }\n const next = mergeState(state, patch as Partial<TState>);\n if (shallowEqualState(state, next)) {\n return;\n }\n state = next;\n notify();\n },\n get(key) {\n return state[key];\n },\n set(key, value) {\n if (destroyed) return;\n if (Object.is(state[key], value)) {\n return;\n }\n state = { ...state, [key]: value } as TState;\n notify();\n },\n destroy() {\n destroyed = true;\n listeners.clear();\n },\n };\n}\n","import type { AppConnectState, AppConnectStatus } from '../types.ts';\nimport type { AppConnectInternalState } from './types.ts';\n\nconst noop = (): Promise<void> => Promise.resolve();\n\n/**\n * Snapshot returned by `getServerSnapshot` for SSR. Has stable\n * references and inert connect/disconnect actions because actions are\n * meaningless before hydration.\n */\nexport const SERVER_VIEW: AppConnectState = {\n status: 'initializing',\n error: null,\n connectToHubSpot: noop,\n disconnectFromHubSpot: noop,\n};\n\n/**\n * Reduces the boolean lifecycle flags into the user-facing\n * `AppConnectStatus` enum value. The order of checks matters:\n * disconnect-in-flight beats connect-in-flight (a transitional logout\n * shouldn't show a \"connecting\" spinner), and connected beats default.\n */\nexport function getDerivedStatus(\n state: AppConnectInternalState\n): AppConnectStatus {\n const {\n isInitComplete,\n isConnectInFlight,\n isSessionConnected,\n isDisconnectInFlight,\n } = state;\n if (!isInitComplete) {\n return 'initializing';\n }\n if (isDisconnectInFlight) return 'disconnecting';\n if (isConnectInFlight) return 'connecting';\n if (isSessionConnected) return 'connected';\n return 'disconnected';\n}\n","import { noopLogger, type Logger } from '../../shared/logger.ts';\nimport type {\n AppConnectBrowserConfig,\n AppConnectController,\n AppConnectState,\n} from '../types.ts';\nimport { startHubSpotConnection } from './connect-start.ts';\nimport { createDefaultSessionStorage } from './default-session-storage.ts';\nimport { disconnectFromHubSpot as runDisconnectFromHubSpot } from './disconnect.ts';\nimport { initAppConnect } from './init.ts';\nimport { startRefreshScheduler } from './refresh.ts';\nimport type {\n AppConnectContext,\n AppConnectInternalState,\n AppConnectStore,\n} from './types.ts';\nimport { memoizeLast } from './utils/memoize-utils.ts';\nimport {\n getExpiresAtFromSessionStorage,\n isClientSessionActive,\n} from './utils/session-utils.ts';\nimport { createStore } from './utils/store-utils.ts';\nimport { getDerivedStatus, SERVER_VIEW } from './view-state.ts';\n\n/**\n * Options accepted by {@link createAppConnectController}.\n */\nexport interface CreateAppConnectControllerOptions {\n /** Runtime configuration; see {@link AppConnectBrowserConfig}. */\n config: AppConnectBrowserConfig;\n /** Logger the controller uses for status/debug messages. */\n logger?: Logger;\n}\n\n/**\n * Creates an `AppConnectController`. Exactly one controller should be\n * shared by the entire app — the React provider takes the controller\n * as a prop and exposes it via context.\n *\n * The returned controller is inert until `start()` is called: nothing\n * is read from session storage, no refresh timer is scheduled, and no\n * fetches are issued. Tests can construct a controller and inspect\n * its initial snapshot without triggering side effects.\n */\nexport function createAppConnectController(\n options: CreateAppConnectControllerOptions\n): AppConnectController {\n const { config, logger = noopLogger } = options;\n const sessionStorage = createDefaultSessionStorage();\n const store: AppConnectStore = createStore<AppConnectInternalState>({\n isInitComplete: false,\n isConnectInFlight: false,\n isDisconnectInFlight: false,\n isSessionConnected: false,\n error: null,\n expiresAt: null,\n });\n const context: AppConnectContext = {\n config,\n logger,\n sessionStorage,\n store,\n };\n\n store.setState({ expiresAt: getExpiresAtFromSessionStorage(context) });\n\n let hasStarted = false;\n\n const connectToHubSpot = async () => {\n logger.info('connectToHubSpot: starting');\n store.setState({ error: null, isConnectInFlight: true });\n try {\n await startHubSpotConnection(context);\n } catch (err) {\n const message = err instanceof Error ? err.message : 'Connection failed';\n logger.error('connectToHubSpot: failed', err);\n store.setState({ error: message });\n } finally {\n logger.debug(\n 'connectToHubSpot: connect flow step finished (may redirect to HubSpot)'\n );\n store.setState({ isConnectInFlight: false });\n }\n };\n const disconnectFromHubSpot = () => runDisconnectFromHubSpot(context);\n\n const getViewStateMemoized = memoizeLast<\n Readonly<AppConnectInternalState>,\n AppConnectState\n >((storeState) => ({\n status: getDerivedStatus(storeState),\n error: storeState.error,\n connectToHubSpot,\n disconnectFromHubSpot,\n }));\n\n function getSnapshot() {\n return getViewStateMemoized(store.getSnapshot());\n }\n\n return {\n start() {\n if (hasStarted) {\n logger.debug('start skipped (already started)');\n return;\n }\n hasStarted = true;\n startRefreshScheduler(context);\n\n logger.info('start: initSdk (OAuth return handling if applicable)');\n void (async () => {\n try {\n await initAppConnect(context);\n logger.info('initSdk: completed without error');\n } catch (err) {\n logger.error('initSdk: failed', err);\n store.setState({\n error:\n err instanceof Error\n ? err.message\n : 'App Connect initialization failed',\n });\n } finally {\n const sessionActive = isClientSessionActive(context);\n logger.info('start: init complete, session active:', sessionActive);\n store.setState({\n isInitComplete: true,\n isSessionConnected: sessionActive,\n });\n }\n })();\n },\n subscribe: (fn) => store.subscribe(fn),\n getSnapshot,\n getServerSnapshot: () => SERVER_VIEW,\n };\n}\n"],"mappings":";AAYA,SAAS,aAAa,MAAsB;CAC1C,OAAO,IAAI,KAAK;;;;;;;AAQlB,SAAgB,aAAa,MAAsB;CACjD,MAAM,SAAS,aAAa,KAAK;CACjC,OAAO;EACL,QAAQ,SAAS,GAAG,SAAS;GAC3B,QAAQ,MAAM,QAAQ,SAAS,GAAG,KAAK;;EAEzC,OAAO,SAAS,GAAG,SAAS;GAC1B,QAAQ,KAAK,QAAQ,SAAS,GAAG,KAAK;;EAExC,OAAO,SAAS,GAAG,SAAS;GAC1B,QAAQ,KAAK,QAAQ,SAAS,GAAG,KAAK;;EAExC,QAAQ,SAAS,GAAG,SAAS;GAC3B,QAAQ,MAAM,QAAQ,SAAS,GAAG,KAAK;;EAE1C;;;;;;;AAQH,MAAa,aAAqB;CAChC,aAAa;CACb,YAAY;CACZ,YAAY;CACZ,aAAa;CACd;;;ACjDD,SAAgB,MAAM,IAA2B;CAC/C,IAAI,MAAM,GACR,OAAO,QAAQ,SAAS;CAE1B,OAAO,IAAI,SAAS,YAAY;EAC9B,WAAW,SAAS,GAAG;GACvB;;;;;ACDJ,MAAM,uCAAuC;;;;;;;;;;;;;;AAe7C,eAAsB,uBACpB,SACe;CACf,MAAM,EAAE,WAAW;CAEnB,MAAM,aAAa,GAAG,OAAO,SAAS,WAAW,OAAO,SAAS;CAEjE,MAAM,UAAU,IAAI,IAClB,GAAG,OAAO,sBAAsB,qBAChC,OAAO,SAAS,OACjB;CACD,QAAQ,aAAa,IAAI,eAAe,WAAW;CAEnD,MAAM,eAAe,MAAM,MAAM,QAAQ,UAAU,EAAE,EACnD,aAAa,WACd,CAAC;CACF,IAAI,CAAC,aAAa,IAChB,MAAM,IAAI,MAAM,2BAA2B,aAAa,SAAS;CACnE,MAAM,EAAE,mBAAmB,qBACxB,MAAM,aAAa,MAAM;CAE5B,MAAM,MAAM,qCAAqC;CAEjD,OAAO,SAAS,OAAO;;;;;;;;;;ACnCzB,SAAgB,8BAA8C;CAC5D,OAAO;EACL,UAAU,KAAK,UAAU;GACvB,eAAe,QAAQ,KAAK,MAAM;;EAEpC,UAAU,QAAQ;GAChB,OAAO,eAAe,QAAQ,IAAI;;EAEpC,aAAa,QAAQ;GACnB,eAAe,WAAW,IAAI;;EAEjC;;;;;;;;;;;;;;;ACPH,MAAa,uBAAuB;;;;;;;;ACLpC,MAAa,iBAAiB;;;;;;AAO9B,MAAa,oBAAoB;;;;;;;;ACDjC,SAAgB,eAAe,SAAsC;CACnE,MAAM,EAAE,SAAS,gBAAgB;CACjC,QAAQ,MAAM,SAAS,EAAE,WAAW,aAAa,CAAC;CAClD,QAAQ,eAAe,QAAQ,gBAAgB,OAAO,YAAY,CAAC;;;;;;;AAQrE,SAAgB,+BACd,SACe;CACf,MAAM,MAAM,QAAQ,eAAe,QAAQ,eAAe;CAC1D,IAAI,CAAC,KAAK,OAAO;CACjB,MAAM,MAAM,SAAS,KAAK,GAAG;CAC7B,IAAI,MAAM,IAAI,EAAE;EACd,QAAQ,eAAe,WAAW,eAAe;EACjD,OAAO;;CAET,IAAI,KAAK,KAAK,GAAG,KAAK;EACpB,QAAQ,eAAe,WAAW,eAAe;EACjD,OAAO;;CAET,OAAO;;;;;AAMT,SAAgB,oBAAoB,SAAkC;CACpE,QAAQ,eAAe,WAAW,eAAe;;;;;;;AAQnD,SAAgB,sBAAsB,SAAqC;CAEzE,MAAM,YADQ,QAAQ,MAAM,aACL,CAAC;CACxB,OAAO,cAAc,QAAQ,KAAK,KAAK,GAAG;;;;;;;;;;;;;;;;ACxC5C,eAAsB,sBACpB,SACe;CACf,MAAM,EAAE,QAAQ,QAAQ,UAAU;CAClC,OAAO,KAAK,kCAAkC;CAC9C,MAAM,SAAS;EAAE,OAAO;EAAM,sBAAsB;EAAM,CAAC;CAC3D,MAAM,EAAE,uBAAuB,sBAAsB;CAErD,IAAI;EACF,oBAAoB,QAAQ;EAE5B,MAAM,WAAW,MAAM,MAAM,GAAG,kBAAkB,eAAe;GAC/D,QAAQ;GACR,aAAa;GACd,CAAC;EACF,IAAI,CAAC,SAAS,IACZ,MAAM,IAAI,MAAM,kBAAkB,SAAS,SAAS;EAEtD,MAAM,EAAE,aAAa,eAClB,MAAM,SAAS,MAAM;EAExB,MAAM,SAAS;GACb,WAAW;GACX,oBAAoB;GACpB,sBAAsB;GACvB,CAAC;EAEF,OAAO,SAAS,OAAO;EACvB,OAAO,KAAK,qCAAqC;UAC1C,KAAK;EACZ,MAAM,UAAU,eAAe,QAAQ,IAAI,UAAU;EACrD,OAAO,MAAM,iCAAiC,IAAI;EAClD,MAAM,SAAS;GACb,OAAO;GACP,sBAAsB;GACvB,CAAC;;;;;;;;;;;;;;ACvCN,eAAsB,eACpB,SACe;CACf,MAAM,SAAS,IAAI,gBAAgB,OAAO,SAAS,OAAO;CAC1D,MAAM,eAAe,OAAO,IAAI,qBAAqB;CACrD,IAAI,CAAC,cAAc;CAEnB,MAAM,YAAY,SAAS,cAAc,GAAG;CAC5C,IAAI,MAAM,UAAU,EAAE;CAEtB,OAAO,OAAO,qBAAqB;CACnC,MAAM,cAAc,OAAO,UAAU;CACrC,QAAQ,aACN,MACA,IACA,cACI,GAAG,OAAO,SAAS,SAAS,GAAG,gBAC/B,OAAO,SAAS,SACrB;CAED,QAAQ,MAAM,SAAS,EAAE,WAAW,CAAC;CACrC,QAAQ,eAAe,QAAQ,gBAAgB,OAAO,UAAU,CAAC;;;;AChBnE,eAAe,mBAAmB,SAA2C;CAC3E,MAAM,EAAE,WAAW;CAEnB,MAAM,kBAAkB,MAAM,MAC5B,GAAG,OAAO,sBAAsB,gBAChC;EACE,QAAQ;EACR,aAAa;EACd,CACF;CACD,IAAI,CAAC,gBAAgB,IACnB,MAAM,IAAI,MAAM,mBAAmB,gBAAgB,SAAS;CAE9D,MAAM,EAAE,YAAY,qBACjB,MAAM,gBAAgB,MAAM;CAC/B,IACE,OAAO,qBAAqB,YAC5B,CAAC,OAAO,SAAS,iBAAiB,IAClC,oBAAoB,GAEpB,MAAM,IAAI,MAAM,iDAAiD;CAInE,eAAe;EAAE;EAAS,aAFN,KAAK,KAAK,GAAG,mBAAmB;EAEb,CAAC;;;;;;;AAQ1C,SAAgB,sBACd,SACwB;CACxB,MAAM,EAAE,QAAQ,UAAU;CAE1B,IAAI,eAAqD;CACzD,IAAI,UAAU;CAEd,MAAM,wBAAwB;EAC5B,IAAI,cAAc;GAChB,aAAa,aAAa;GAC1B,eAAe;;EAEjB,IAAI,SAAS;EAEb,MAAM,QAAQ,MAAM,aAAa;EACjC,IAAI,CAAC,MAAM,kBAAkB,CAAC,MAAM,oBAClC;EAGF,MAAM,YAAY,MAAM;EACxB,IAAI,CAAC,WAAW;GACd,OAAO,MAAM,0CAA0C;GACvD;;EAEF,MAAM,UAAU,KAAK,IAAI,GAAG,YAAY,KAAK,KAAK,GAAG,kBAAkB;EACvE,OAAO,MACL,sCACC,UAAU,KAAM,QAAQ,EAAE,EAC3B,KACA,EACE,WACD,CACF;EACD,eAAe,iBAAiB;GAC9B,OAAO,MAAM,iDAAiD;GAC9D,eAAe;GACf,IAAI,SAAS;GAEb,CAAM,YAAY;IAChB,IAAI;KACF,MAAM,mBAAmB,QAAQ;KACjC,IAAI,SAAS;KACb,IAAI,sBAAsB,QAAQ,EAChC,OAAO,KAAK,+CAA+C;UACtD;MACL,OAAO,KACL,0DACD;MACD,MAAM,SAAS,EAAE,oBAAoB,OAAO,CAAC;;aAExC,KAAK;KACZ,OAAO,MAAM,yBAAyB,IAAI;KAC1C,IAAI,SAAS;KACb,MAAM,SAAS,EAAE,oBAAoB,OAAO,CAAC;;OAE7C;KACH,QAAQ;;CAGb,MAAM,cAAc,MAAM,gBAAgB;EACxC,iBAAiB;GACjB;CAEF,OAAO,EACL,YAAY;EACV,UAAU;EACV,aAAa;EACb,IAAI,cAAc;GAChB,aAAa,aAAa;GAC1B,eAAe;;IAGpB;;;;;;;;;;;;;;AChHH,SAAgB,YACd,IAC4B;CAC5B,IAAI;CACJ,IAAI;CACJ,IAAI,WAAW;CACf,QAAQ,UAA2B;EACjC,IAAI,YAAY,OAAO,GAAG,WAAW,MAAM,EACzC,OAAO;EAET,YAAY;EACZ,aAAa,GAAG,MAAM;EACtB,WAAW;EACX,OAAO;;;;;ACYX,SAAS,kBACP,GACA,GACS;CACT,MAAM,OAAO,IAAI,IAAI,CACnB,GAAG,OAAO,KAAK,EAAE,EACjB,GAAG,OAAO,KAAK,EAAE,CAClB,CAAqB;CACtB,KAAK,MAAM,KAAK,MACd,IAAI,CAAC,OAAO,GAAG,EAAE,IAAI,EAAE,GAAG,EACxB,OAAO;CAGX,OAAO;;AAGT,SAAS,WACP,MACA,SACQ;CACR,OAAO;EAAE,GAAG;EAAM,GAAG;EAAS;;;;;;;AAQhC,SAAgB,YACd,cACe;CACf,IAAI,QAAgB,EAAE,GAAG,cAAc;CACvC,MAAM,4BAAY,IAAI,KAAiB;CACvC,IAAI,YAAY;CAEhB,MAAM,eAAe;EACnB,KAAK,MAAM,YAAY,WACrB,UAAU;;CAId,OAAO;EACL,cAAc;GACZ,OAAO;;EAET,UAAU,UAAU;GAClB,UAAU,IAAI,SAAS;GACvB,aAAa;IACX,UAAU,OAAO,SAAS;;;EAG9B,SAAS,QAAQ;GACf,IAAI,WAAW;GACf,MAAM,QACJ,OAAO,WAAW,aACd,OAAO,MAA0B,GACjC;GACN,IAAI,OAAO,UAAU,YAAY,SAAS,MACxC;GAEF,MAAM,OAAO,WAAW,OAAO,MAAyB;GACxD,IAAI,kBAAkB,OAAO,KAAK,EAChC;GAEF,QAAQ;GACR,QAAQ;;EAEV,IAAI,KAAK;GACP,OAAO,MAAM;;EAEf,IAAI,KAAK,OAAO;GACd,IAAI,WAAW;GACf,IAAI,OAAO,GAAG,MAAM,MAAM,MAAM,EAC9B;GAEF,QAAQ;IAAE,GAAG;KAAQ,MAAM;IAAO;GAClC,QAAQ;;EAEV,UAAU;GACR,YAAY;GACZ,UAAU,OAAO;;EAEpB;;;;AClHH,MAAM,aAA4B,QAAQ,SAAS;;;;;;AAOnD,MAAa,cAA+B;CAC1C,QAAQ;CACR,OAAO;CACP,kBAAkB;CAClB,uBAAuB;CACxB;;;;;;;AAQD,SAAgB,iBACd,OACkB;CAClB,MAAM,EACJ,gBACA,mBACA,oBACA,yBACE;CACJ,IAAI,CAAC,gBACH,OAAO;CAET,IAAI,sBAAsB,OAAO;CACjC,IAAI,mBAAmB,OAAO;CAC9B,IAAI,oBAAoB,OAAO;CAC/B,OAAO;;;;;;;;;;;;;;ACMT,SAAgB,2BACd,SACsB;CACtB,MAAM,EAAE,QAAQ,SAAS,eAAe;CACxC,MAAM,iBAAiB,6BAA6B;CACpD,MAAM,QAAyB,YAAqC;EAClE,gBAAgB;EAChB,mBAAmB;EACnB,sBAAsB;EACtB,oBAAoB;EACpB,OAAO;EACP,WAAW;EACZ,CAAC;CACF,MAAM,UAA6B;EACjC;EACA;EACA;EACA;EACD;CAED,MAAM,SAAS,EAAE,WAAW,+BAA+B,QAAQ,EAAE,CAAC;CAEtE,IAAI,aAAa;CAEjB,MAAM,mBAAmB,YAAY;EACnC,OAAO,KAAK,6BAA6B;EACzC,MAAM,SAAS;GAAE,OAAO;GAAM,mBAAmB;GAAM,CAAC;EACxD,IAAI;GACF,MAAM,uBAAuB,QAAQ;WAC9B,KAAK;GACZ,MAAM,UAAU,eAAe,QAAQ,IAAI,UAAU;GACrD,OAAO,MAAM,4BAA4B,IAAI;GAC7C,MAAM,SAAS,EAAE,OAAO,SAAS,CAAC;YAC1B;GACR,OAAO,MACL,yEACD;GACD,MAAM,SAAS,EAAE,mBAAmB,OAAO,CAAC;;;CAGhD,MAAMA,gCAA8BC,sBAAyB,QAAQ;CAErE,MAAM,uBAAuB,aAG1B,gBAAgB;EACjB,QAAQ,iBAAiB,WAAW;EACpC,OAAO,WAAW;EAClB;EACA,uBAAA;EACD,EAAE;CAEH,SAAS,cAAc;EACrB,OAAO,qBAAqB,MAAM,aAAa,CAAC;;CAGlD,OAAO;EACL,QAAQ;GACN,IAAI,YAAY;IACd,OAAO,MAAM,kCAAkC;IAC/C;;GAEF,aAAa;GACb,sBAAsB,QAAQ;GAE9B,OAAO,KAAK,uDAAuD;GACnE,CAAM,YAAY;IAChB,IAAI;KACF,MAAM,eAAe,QAAQ;KAC7B,OAAO,KAAK,mCAAmC;aACxC,KAAK;KACZ,OAAO,MAAM,mBAAmB,IAAI;KACpC,MAAM,SAAS,EACb,OACE,eAAe,QACX,IAAI,UACJ,qCACP,CAAC;cACM;KACR,MAAM,gBAAgB,sBAAsB,QAAQ;KACpD,OAAO,KAAK,yCAAyC,cAAc;KACnE,MAAM,SAAS;MACb,gBAAgB;MAChB,oBAAoB;MACrB,CAAC;;OAEF;;EAEN,YAAY,OAAO,MAAM,UAAU,GAAG;EACtC;EACA,yBAAyB;EAC1B"}