@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,128 @@
1
+ import { Hono } from 'hono';
2
+ import { describe, expect, it, vi } from 'vitest';
3
+
4
+ import { createTestAppKeys } from '../../utils/test-fixtures.ts';
5
+ import {
6
+ handleCimdAppJwks,
7
+ handleCimdClientJson,
8
+ } from './cimd-public-routes.ts';
9
+ import type {
10
+ HubSpotConnectRoutesEnvCimd,
11
+ HubSpotConnectRoutesEnvClientSecret,
12
+ } from './load-hubspot-connect-routes-env.ts';
13
+ import type { HubSpotConnectOAuthRouteOptions } from './types.ts';
14
+
15
+ const BASE_PATH = '/functions/v1/hubspot-connect';
16
+
17
+ function buildOptions(
18
+ hubspotConnectEnv: HubSpotConnectOAuthRouteOptions['hubspotConnectEnv'],
19
+ appKeys: HubSpotConnectOAuthRouteOptions['appKeys'] = null
20
+ ): HubSpotConnectOAuthRouteOptions {
21
+ return {
22
+ appKeys,
23
+ refreshCookiePath: `${BASE_PATH}/auth`,
24
+ logger: { debug: vi.fn(), info: vi.fn(), warn: vi.fn(), error: vi.fn() },
25
+ basePath: BASE_PATH,
26
+ hubspotConnectEnv,
27
+ cimdClientMetadata: {
28
+ scope: {
29
+ required: ['crm.objects.contacts.read'],
30
+ optional: ['crm.objects.deals.read'],
31
+ },
32
+ },
33
+ };
34
+ }
35
+
36
+ const clientSecretEnv = {
37
+ hubspotAuthorizationEndpoint: 'https://auth.example.test/oauth/authorize',
38
+ hubspotOAuthApiOrigin: 'https://auth.example.test',
39
+ isCimdEnabled: false,
40
+ isDpopEnabled: false,
41
+ isAppPrivateKeyRequired: false,
42
+ hubspotClientId: 'test-client-id',
43
+ hubspotClientSecret: 'test-client-secret',
44
+ } satisfies HubSpotConnectRoutesEnvClientSecret;
45
+
46
+ const cimdEnv = {
47
+ hubspotAuthorizationEndpoint: 'https://auth.example.test/oauth/authorize',
48
+ hubspotOAuthApiOrigin: 'https://auth.example.test',
49
+ isCimdEnabled: true,
50
+ isDpopEnabled: false,
51
+ isAppPrivateKeyRequired: true,
52
+ } satisfies HubSpotConnectRoutesEnvCimd;
53
+
54
+ describe('handleCimdClientJson', () => {
55
+ it('returns client.json with redirect_uri, jwks_uri, and scope', async () => {
56
+ const app = new Hono();
57
+ app.get(`${BASE_PATH}/client.json`, (c) =>
58
+ handleCimdClientJson(c, buildOptions(clientSecretEnv))
59
+ );
60
+ const res = await app.request(
61
+ `http://app.example.test${BASE_PATH}/client.json`,
62
+ { method: 'GET' }
63
+ );
64
+
65
+ expect(res.status).toBe(200);
66
+ expect(res.headers.get('Content-Type')).toContain('application/json');
67
+
68
+ const body = (await res.json()) as {
69
+ redirect_uri: string;
70
+ jwks_uri: string;
71
+ scope: { required: string[]; optional?: string[] };
72
+ };
73
+
74
+ expect(body.redirect_uri).toBe(
75
+ `http://app.example.test${BASE_PATH}/auth/callback`
76
+ );
77
+ expect(body.jwks_uri).toBe(`http://app.example.test${BASE_PATH}/jwks.json`);
78
+ expect(body.scope.required).toContain('crm.objects.contacts.read');
79
+ expect(body.scope.optional).toContain('crm.objects.deals.read');
80
+ });
81
+ });
82
+
83
+ describe('handleCimdAppJwks', () => {
84
+ it('returns 404 when CIMD is not enabled', async () => {
85
+ const app = new Hono();
86
+ app.get('/jwks.json', (c) =>
87
+ handleCimdAppJwks(c, buildOptions(clientSecretEnv))
88
+ );
89
+ const res = await app.request('http://localhost/jwks.json', {
90
+ method: 'GET',
91
+ });
92
+ expect(res.status).toBe(404);
93
+ });
94
+
95
+ it('returns 503 when CIMD is enabled but appKeys are missing', async () => {
96
+ const app = new Hono();
97
+ app.get('/jwks.json', (c) =>
98
+ handleCimdAppJwks(c, buildOptions(cimdEnv, null))
99
+ );
100
+ const res = await app.request('http://localhost/jwks.json', {
101
+ method: 'GET',
102
+ });
103
+ expect(res.status).toBe(503);
104
+ });
105
+
106
+ it('returns JWKS with public key when CIMD is enabled and keys are present', async () => {
107
+ const appKeys = await createTestAppKeys();
108
+ const app = new Hono();
109
+ app.get('/jwks.json', (c) =>
110
+ handleCimdAppJwks(c, buildOptions(cimdEnv, appKeys))
111
+ );
112
+ const res = await app.request('http://localhost/jwks.json', {
113
+ method: 'GET',
114
+ });
115
+
116
+ expect(res.status).toBe(200);
117
+ const body = (await res.json()) as { keys: unknown[] };
118
+ expect(body.keys).toHaveLength(1);
119
+
120
+ const jwk = body.keys[0] as Record<string, unknown>;
121
+ expect(jwk.kty).toBe('EC');
122
+ expect(jwk.crv).toBe('P-256');
123
+ expect(jwk.alg).toBe('ES256');
124
+ expect(jwk.use).toBe('sig');
125
+ expect(jwk.kid).toBeDefined();
126
+ expect(jwk.d).toBeUndefined();
127
+ });
128
+ });
@@ -0,0 +1,72 @@
1
+ import type { Context } from 'hono';
2
+
3
+ import type { JwkSet } from '../../types.ts';
4
+ import { getJwkThumbprint } from '../../utils/jwk-utils.ts';
5
+ import type { HubSpotConnectCimdClientDocument } from './cimd-client-metadata-types.ts';
6
+ import type { HubSpotConnectOAuthRouteOptions } from './types.ts';
7
+ import {
8
+ buildHubSpotAppJwksUrlFromRequest,
9
+ buildOAuthRedirectUriFromRequest,
10
+ type BuildOAuthRedirectUriFromRequestOptions,
11
+ } from './utils.ts';
12
+
13
+ export async function handleCimdClientJson(
14
+ c: Context,
15
+ options: HubSpotConnectOAuthRouteOptions
16
+ ): Promise<Response> {
17
+ const { cimdClientMetadata, basePath } = options;
18
+ if (!cimdClientMetadata) {
19
+ return c.text('CIMD client metadata is not configured', 500);
20
+ }
21
+
22
+ const xForwardedProto = c.req.header('x-forwarded-proto') ?? undefined;
23
+ const xForwardedHost = c.req.header('x-forwarded-host') ?? undefined;
24
+ const requestHostHeader = c.req.header('host') ?? undefined;
25
+
26
+ const forwarded: BuildOAuthRedirectUriFromRequestOptions = {
27
+ requestUrl: c.req.url,
28
+ basePath,
29
+ xForwardedProto,
30
+ xForwardedHost,
31
+ requestHostHeader,
32
+ };
33
+
34
+ const body: HubSpotConnectCimdClientDocument = {
35
+ redirect_uri: buildOAuthRedirectUriFromRequest(forwarded),
36
+ jwks_uri: buildHubSpotAppJwksUrlFromRequest(forwarded),
37
+ scope: cimdClientMetadata.scope,
38
+ };
39
+
40
+ return c.text(JSON.stringify(body, null, 2), 200, {
41
+ 'Content-Type': 'application/json; charset=utf-8',
42
+ });
43
+ }
44
+
45
+ export async function handleCimdAppJwks(
46
+ c: Context,
47
+ options: HubSpotConnectOAuthRouteOptions
48
+ ): Promise<Response> {
49
+ const { appKeys, hubspotConnectEnv } = options;
50
+ if (!hubspotConnectEnv.isCimdEnabled) {
51
+ return c.text('Not found', 404);
52
+ }
53
+ if (!appKeys) {
54
+ return c.text('Missing app keys', 503);
55
+ }
56
+
57
+ const kid = await getJwkThumbprint({
58
+ publicKeyJwk: appKeys.appPublicKeyJwk,
59
+ });
60
+
61
+ const jwk = {
62
+ ...appKeys.appPublicKeyJwk,
63
+ kid,
64
+ use: 'sig',
65
+ alg: 'ES256',
66
+ key_ops: ['verify'],
67
+ ext: true,
68
+ } as JsonWebKey;
69
+
70
+ const jwks: JwkSet = { keys: [jwk] };
71
+ return c.json(jwks);
72
+ }
@@ -0,0 +1,3 @@
1
+ export const SESSION_MAX_AGE_SEC = 2592000;
2
+ export const OAUTH_TEMP_MAX_AGE_SEC = 3600;
3
+ export const REFRESH_COOKIE_MAX_AGE_SEC = 2592000;
@@ -0,0 +1,75 @@
1
+ import { describe, expect, it } from 'vitest';
2
+
3
+ import type { HubSpotConnectCimdClientScope } from './cimd-client-metadata-types.ts';
4
+ import { deriveHubSpotAuthorizeScopesFromClientMetadata } from './fetch-hubspot-client-metadata.ts';
5
+
6
+ describe('deriveHubSpotAuthorizeScopesFromClientMetadata', () => {
7
+ it('returns scope and optionalScope when optional scopes are present', () => {
8
+ const result = deriveHubSpotAuthorizeScopesFromClientMetadata({
9
+ scope: {
10
+ required: ['crm.objects.contacts.read', 'settings.users.read'],
11
+ optional: ['crm.objects.deals.read'],
12
+ },
13
+ });
14
+
15
+ expect(result).toEqual({
16
+ ok: true,
17
+ scope: 'crm.objects.contacts.read settings.users.read',
18
+ optionalScope: 'crm.objects.deals.read',
19
+ });
20
+ });
21
+
22
+ it('returns scope only when optional is absent', () => {
23
+ const result = deriveHubSpotAuthorizeScopesFromClientMetadata({
24
+ scope: {
25
+ required: ['crm.objects.contacts.read'],
26
+ },
27
+ });
28
+
29
+ expect(result).toEqual({
30
+ ok: true,
31
+ scope: 'crm.objects.contacts.read',
32
+ });
33
+ });
34
+
35
+ it('returns scope only when optional is an empty array', () => {
36
+ const result = deriveHubSpotAuthorizeScopesFromClientMetadata({
37
+ scope: {
38
+ required: ['crm.objects.contacts.read'],
39
+ optional: [],
40
+ },
41
+ });
42
+
43
+ expect(result).toEqual({
44
+ ok: true,
45
+ scope: 'crm.objects.contacts.read',
46
+ });
47
+ });
48
+
49
+ it('fails when scope.required is missing or empty', () => {
50
+ const result = deriveHubSpotAuthorizeScopesFromClientMetadata({
51
+ scope: {} as unknown as HubSpotConnectCimdClientScope,
52
+ });
53
+
54
+ expect(result.ok).toBe(false);
55
+ if (!result.ok) {
56
+ expect(result.status).toBe(500);
57
+ expect(result.message).toContain('scope.required');
58
+ }
59
+ });
60
+
61
+ it('fails when optional is present but not an array', () => {
62
+ const result = deriveHubSpotAuthorizeScopesFromClientMetadata({
63
+ scope: {
64
+ required: ['a'],
65
+ optional: 'not-array' as unknown as string[],
66
+ },
67
+ });
68
+
69
+ expect(result.ok).toBe(false);
70
+ if (!result.ok) {
71
+ expect(result.status).toBe(500);
72
+ expect(result.message).toBe('Invalid scope.optional in client metadata');
73
+ }
74
+ });
75
+ });
@@ -0,0 +1,73 @@
1
+ import type { HubSpotConnectCimdClientMetadata } from './cimd-client-metadata-types.ts';
2
+
3
+ export interface DeriveHubSpotAuthorizeScopesFromClientMetadataSuccess {
4
+ ok: true;
5
+ scope: string;
6
+ optionalScope?: string;
7
+ }
8
+
9
+ export interface DeriveHubSpotAuthorizeScopesFromClientMetadataFailure {
10
+ ok: false;
11
+ status: number;
12
+ message: string;
13
+ }
14
+
15
+ export type DeriveHubSpotAuthorizeScopesFromClientMetadataResult =
16
+ | DeriveHubSpotAuthorizeScopesFromClientMetadataSuccess
17
+ | DeriveHubSpotAuthorizeScopesFromClientMetadataFailure;
18
+
19
+ /**
20
+ * Builds `scope` and `optional_scope` query values for HubSpot
21
+ * `/oauth/authorize` from in-memory client metadata (same shape as
22
+ * `HubSpotConnectCimdClientMetadata` / `startHubSpotConnectFunction({ client })`).
23
+ */
24
+ export function deriveHubSpotAuthorizeScopesFromClientMetadata(
25
+ metadata: HubSpotConnectCimdClientMetadata
26
+ ): DeriveHubSpotAuthorizeScopesFromClientMetadataResult {
27
+ const required = metadata.scope?.required;
28
+ const requiredOk =
29
+ Array.isArray(required) &&
30
+ required.length > 0 &&
31
+ required.every((s) => typeof s === 'string' && s.length > 0);
32
+
33
+ if (!requiredOk) {
34
+ return {
35
+ ok: false,
36
+ status: 500,
37
+ message: 'Invalid or empty scope.required in client metadata',
38
+ };
39
+ }
40
+
41
+ const scope = required.join(' ');
42
+
43
+ const optionalRaw = metadata.scope.optional;
44
+ if (optionalRaw == null) {
45
+ return { ok: true, scope };
46
+ }
47
+
48
+ if (!Array.isArray(optionalRaw)) {
49
+ return {
50
+ ok: false,
51
+ status: 500,
52
+ message: 'Invalid scope.optional in client metadata',
53
+ };
54
+ }
55
+
56
+ if (optionalRaw.length === 0) {
57
+ return { ok: true, scope };
58
+ }
59
+
60
+ if (!optionalRaw.every((s) => typeof s === 'string' && s.length > 0)) {
61
+ return {
62
+ ok: false,
63
+ status: 500,
64
+ message: 'Invalid scope.optional in client metadata',
65
+ };
66
+ }
67
+
68
+ return {
69
+ ok: true,
70
+ scope,
71
+ optionalScope: optionalRaw.join(' '),
72
+ };
73
+ }
@@ -0,0 +1,95 @@
1
+ import type { Hono } from 'hono';
2
+
3
+ import { noopLogger, type Logger } from '../../../shared/logger.ts';
4
+ import type { AppKeys } from '../../types.ts';
5
+ import { handleAuthCallback } from './auth-callback.ts';
6
+ import { handleAuthInitSession } from './auth-init-session.ts';
7
+ import { handleAuthLogout } from './auth-logout.ts';
8
+ import { handleAuthRefresh } from './auth-refresh.ts';
9
+ import { assertHubSpotConnectCimdClientMetadata } from './cimd-client-metadata-types.ts';
10
+ import type { HubSpotConnectCimdClientMetadata } from './cimd-client-metadata-types.ts';
11
+ import {
12
+ handleCimdAppJwks,
13
+ handleCimdClientJson,
14
+ } from './cimd-public-routes.ts';
15
+ import type { HubSpotConnectRoutesEnv } from './load-hubspot-connect-routes-env.ts';
16
+
17
+ /**
18
+ * Options accepted by {@link registerHubSpotConnectRoutes}.
19
+ */
20
+ export interface RegisterHubSpotConnectRoutesOptions {
21
+ /** The Hono app to mount the OAuth routes on. */
22
+ app: Hono;
23
+ /**
24
+ * Imported app keys from `secureStart`, or `null` when CIMD and DPoP
25
+ * are both disabled.
26
+ */
27
+ appKeys: AppKeys | null;
28
+ /**
29
+ * Path the routes are mounted under (no trailing slash). Used to
30
+ * scope refresh-token cookies via `Path=${basePath}/auth`.
31
+ */
32
+ basePath: string;
33
+ /**
34
+ * OAuth and client-mode settings, typically from
35
+ * {@link loadHubSpotConnectRoutesEnv}.
36
+ */
37
+ hubspotConnectEnv: HubSpotConnectRoutesEnv;
38
+ /**
39
+ * Scope configuration for `GET /client.json` and for authorize URL
40
+ * scopes when CIMD is off. Always required.
41
+ */
42
+ cimdClientMetadata: HubSpotConnectCimdClientMetadata;
43
+ /**
44
+ * Optional logger. When omitted the SDK uses a no-op logger so
45
+ * server-side state never leaks into the host application's
46
+ * console.
47
+ */
48
+ logger?: Logger;
49
+ }
50
+
51
+ /**
52
+ * Mounts hubspot-connect routes: OAuth (`/auth/...`); `GET /client.json`
53
+ * from `cimdClientMetadata`; `GET /jwks.json` when CIMD is enabled.
54
+ */
55
+ export function registerHubSpotConnectRoutes(
56
+ options: RegisterHubSpotConnectRoutesOptions
57
+ ): void {
58
+ const {
59
+ app,
60
+ appKeys,
61
+ basePath,
62
+ hubspotConnectEnv,
63
+ cimdClientMetadata,
64
+ logger = noopLogger,
65
+ } = options;
66
+
67
+ if (!cimdClientMetadata) {
68
+ throw new Error(
69
+ 'registerHubSpotConnectRoutes: cimdClientMetadata is required'
70
+ );
71
+ }
72
+ assertHubSpotConnectCimdClientMetadata(cimdClientMetadata);
73
+
74
+ const refreshCookiePath = `${basePath}/auth`;
75
+ const oauthRouteOptions = {
76
+ appKeys,
77
+ refreshCookiePath,
78
+ logger,
79
+ basePath,
80
+ hubspotConnectEnv,
81
+ cimdClientMetadata,
82
+ };
83
+
84
+ app.get('/client.json', (c) => handleCimdClientJson(c, oauthRouteOptions));
85
+ if (hubspotConnectEnv.isCimdEnabled) {
86
+ app.get('/jwks.json', (c) => handleCimdAppJwks(c, oauthRouteOptions));
87
+ }
88
+
89
+ app.get('/auth/init-session', (c) =>
90
+ handleAuthInitSession(c, oauthRouteOptions)
91
+ );
92
+ app.get('/auth/callback', (c) => handleAuthCallback(c, oauthRouteOptions));
93
+ app.post('/auth/refresh', (c) => handleAuthRefresh(c, oauthRouteOptions));
94
+ app.post('/auth/logout', (c) => handleAuthLogout(c, oauthRouteOptions));
95
+ }
@@ -0,0 +1,145 @@
1
+ import { afterEach, describe, expect, it, vi } from 'vitest';
2
+
3
+ import { loadHubSpotConnectRoutesEnv } from './load-hubspot-connect-routes-env.ts';
4
+
5
+ const HUBSPOT_AUTHORIZATION_ENDPOINT_EXAMPLE =
6
+ 'https://auth.hubspot.com/oauth/authorize';
7
+ const HUBSPOT_OAUTH_API_ORIGIN_EXAMPLE = 'https://auth.hubspot.com';
8
+
9
+ function stubHubSpotOAuthEndpoints(): void {
10
+ vi.stubEnv(
11
+ 'HUBSPOT_AUTHORIZATION_ENDPOINT',
12
+ HUBSPOT_AUTHORIZATION_ENDPOINT_EXAMPLE
13
+ );
14
+ vi.stubEnv('HUBSPOT_OAUTH_API_ORIGIN', HUBSPOT_OAUTH_API_ORIGIN_EXAMPLE);
15
+ }
16
+
17
+ describe('loadHubSpotConnectRoutesEnv', () => {
18
+ afterEach(() => {
19
+ vi.unstubAllEnvs();
20
+ });
21
+
22
+ it('throws when HUBSPOT_AUTHORIZATION_ENDPOINT is missing', () => {
23
+ vi.stubEnv('HUBSPOT_OAUTH_API_ORIGIN', HUBSPOT_OAUTH_API_ORIGIN_EXAMPLE);
24
+ vi.stubEnv('HUBSPOT_CIMD_ENABLED', 'false');
25
+ vi.stubEnv('HUBSPOT_DPOP_ENABLED', 'false');
26
+ vi.stubEnv('HUBSPOT_CLIENT_ID', 'cid');
27
+ vi.stubEnv('HUBSPOT_CLIENT_SECRET', 'sec');
28
+ expect(() => loadHubSpotConnectRoutesEnv()).toThrow(
29
+ 'Missing required environment variable: HUBSPOT_AUTHORIZATION_ENDPOINT'
30
+ );
31
+ });
32
+
33
+ it('throws when HUBSPOT_OAUTH_API_ORIGIN is missing', () => {
34
+ vi.stubEnv(
35
+ 'HUBSPOT_AUTHORIZATION_ENDPOINT',
36
+ HUBSPOT_AUTHORIZATION_ENDPOINT_EXAMPLE
37
+ );
38
+ vi.stubEnv('HUBSPOT_CIMD_ENABLED', 'false');
39
+ vi.stubEnv('HUBSPOT_DPOP_ENABLED', 'false');
40
+ vi.stubEnv('HUBSPOT_CLIENT_ID', 'cid');
41
+ vi.stubEnv('HUBSPOT_CLIENT_SECRET', 'sec');
42
+ expect(() => loadHubSpotConnectRoutesEnv()).toThrow(
43
+ 'Missing required environment variable: HUBSPOT_OAUTH_API_ORIGIN'
44
+ );
45
+ });
46
+
47
+ it('throws when CIMD is disabled and HUBSPOT_CLIENT_ID is missing', () => {
48
+ stubHubSpotOAuthEndpoints();
49
+ vi.stubEnv('HUBSPOT_CIMD_ENABLED', 'false');
50
+ vi.stubEnv('HUBSPOT_DPOP_ENABLED', 'false');
51
+ vi.stubEnv('HUBSPOT_CLIENT_SECRET', 'sec');
52
+ expect(() => loadHubSpotConnectRoutesEnv()).toThrow(
53
+ 'Missing required environment variable: HUBSPOT_CLIENT_ID'
54
+ );
55
+ });
56
+
57
+ it('throws when CIMD is disabled and HUBSPOT_CLIENT_SECRET is missing', () => {
58
+ stubHubSpotOAuthEndpoints();
59
+ vi.stubEnv('HUBSPOT_CIMD_ENABLED', 'false');
60
+ vi.stubEnv('HUBSPOT_DPOP_ENABLED', 'false');
61
+ vi.stubEnv('HUBSPOT_CLIENT_ID', 'cid');
62
+ expect(() => loadHubSpotConnectRoutesEnv()).toThrow(
63
+ 'Missing required environment variable: HUBSPOT_CLIENT_SECRET'
64
+ );
65
+ });
66
+
67
+ it('does not require client id or secret when CIMD is enabled', () => {
68
+ stubHubSpotOAuthEndpoints();
69
+ vi.stubEnv('HUBSPOT_CIMD_ENABLED', 'true');
70
+ vi.stubEnv('HUBSPOT_DPOP_ENABLED', 'false');
71
+ const env = loadHubSpotConnectRoutesEnv();
72
+ expect(env.isCimdEnabled).toBe(true);
73
+ expect(env.hubspotAuthorizationEndpoint).toBe(
74
+ HUBSPOT_AUTHORIZATION_ENDPOINT_EXAMPLE
75
+ );
76
+ expect(env.hubspotOAuthApiOrigin).toBe(HUBSPOT_OAUTH_API_ORIGIN_EXAMPLE);
77
+ expect(env.isDpopEnabled).toBe(false);
78
+ expect(env.isAppPrivateKeyRequired).toBe(true);
79
+ });
80
+
81
+ it('returns client credentials when CIMD is disabled', () => {
82
+ stubHubSpotOAuthEndpoints();
83
+ vi.stubEnv('HUBSPOT_CIMD_ENABLED', 'false');
84
+ vi.stubEnv('HUBSPOT_DPOP_ENABLED', 'false');
85
+ vi.stubEnv('HUBSPOT_CLIENT_ID', 'my-id');
86
+ vi.stubEnv('HUBSPOT_CLIENT_SECRET', 'my-secret');
87
+ const env = loadHubSpotConnectRoutesEnv();
88
+ expect(env.isCimdEnabled).toBe(false);
89
+ if (!env.isCimdEnabled) {
90
+ expect(env.hubspotClientId).toBe('my-id');
91
+ expect(env.hubspotClientSecret).toBe('my-secret');
92
+ }
93
+ expect(env.isAppPrivateKeyRequired).toBe(false);
94
+ expect(env.isDpopEnabled).toBe(false);
95
+ });
96
+
97
+ it('sets isAppPrivateKeyRequired false when both CIMD and DPoP are false', () => {
98
+ stubHubSpotOAuthEndpoints();
99
+ vi.stubEnv('HUBSPOT_CIMD_ENABLED', 'false');
100
+ vi.stubEnv('HUBSPOT_DPOP_ENABLED', 'false');
101
+ vi.stubEnv('HUBSPOT_CLIENT_ID', 'id');
102
+ vi.stubEnv('HUBSPOT_CLIENT_SECRET', 'sec');
103
+ expect(loadHubSpotConnectRoutesEnv().isAppPrivateKeyRequired).toBe(false);
104
+ });
105
+
106
+ it('sets isAppPrivateKeyRequired true when CIMD is enabled and DPoP is false', () => {
107
+ stubHubSpotOAuthEndpoints();
108
+ vi.stubEnv('HUBSPOT_CIMD_ENABLED', 'true');
109
+ vi.stubEnv('HUBSPOT_DPOP_ENABLED', 'false');
110
+ const env = loadHubSpotConnectRoutesEnv();
111
+ expect(env.isAppPrivateKeyRequired).toBe(true);
112
+ });
113
+
114
+ it('sets isAppPrivateKeyRequired true when CIMD is false and DPoP is enabled', () => {
115
+ stubHubSpotOAuthEndpoints();
116
+ vi.stubEnv('HUBSPOT_CIMD_ENABLED', 'false');
117
+ vi.stubEnv('HUBSPOT_DPOP_ENABLED', 'true');
118
+ vi.stubEnv('HUBSPOT_CLIENT_ID', 'id');
119
+ vi.stubEnv('HUBSPOT_CLIENT_SECRET', 'sec');
120
+ expect(loadHubSpotConnectRoutesEnv().isAppPrivateKeyRequired).toBe(true);
121
+ });
122
+
123
+ it('sets isAppPrivateKeyRequired true when both are enabled by default', () => {
124
+ stubHubSpotOAuthEndpoints();
125
+ const env = loadHubSpotConnectRoutesEnv();
126
+ expect(env.isCimdEnabled).toBe(true);
127
+ expect(env.isDpopEnabled).toBe(true);
128
+ expect(env.isAppPrivateKeyRequired).toBe(true);
129
+ });
130
+
131
+ it('normalizes HUBSPOT_OAUTH_API_ORIGIN to an origin URL', () => {
132
+ vi.stubEnv(
133
+ 'HUBSPOT_AUTHORIZATION_ENDPOINT',
134
+ HUBSPOT_AUTHORIZATION_ENDPOINT_EXAMPLE
135
+ );
136
+ vi.stubEnv(
137
+ 'HUBSPOT_OAUTH_API_ORIGIN',
138
+ 'https://api.hubapi.com/extra/path/'
139
+ );
140
+ vi.stubEnv('HUBSPOT_CIMD_ENABLED', 'true');
141
+ vi.stubEnv('HUBSPOT_DPOP_ENABLED', 'false');
142
+ const env = loadHubSpotConnectRoutesEnv();
143
+ expect(env.hubspotOAuthApiOrigin).toBe('https://api.hubapi.com');
144
+ });
145
+ });
@@ -0,0 +1,67 @@
1
+ import {
2
+ isHubspotCimdEnabled,
3
+ isHubspotDpopEnabled,
4
+ requireEnv,
5
+ } from '../../utils/env-utils.ts';
6
+
7
+ /**
8
+ * HubSpot OAuth and client-mode settings read once for hubspot-connect
9
+ * routes. Built by {@link loadHubSpotConnectRoutesEnv}.
10
+ */
11
+ export type HubSpotConnectRoutesEnv =
12
+ | HubSpotConnectRoutesEnvCimd
13
+ | HubSpotConnectRoutesEnvClientSecret;
14
+
15
+ export interface HubSpotConnectRoutesEnvCimd {
16
+ hubspotAuthorizationEndpoint: string;
17
+ hubspotOAuthApiOrigin: string;
18
+ isCimdEnabled: true;
19
+ isDpopEnabled: boolean;
20
+ isAppPrivateKeyRequired: boolean;
21
+ }
22
+
23
+ export interface HubSpotConnectRoutesEnvClientSecret {
24
+ hubspotAuthorizationEndpoint: string;
25
+ hubspotOAuthApiOrigin: string;
26
+ isCimdEnabled: false;
27
+ isDpopEnabled: boolean;
28
+ isAppPrivateKeyRequired: boolean;
29
+ hubspotClientId: string;
30
+ hubspotClientSecret: string;
31
+ }
32
+
33
+ /**
34
+ * Reads hubspot-connect environment variables from `process.env` or
35
+ * `Deno.env` and returns a typed object for
36
+ * {@link registerHubSpotConnectRoutes}.
37
+ */
38
+ export function loadHubSpotConnectRoutesEnv(): HubSpotConnectRoutesEnv {
39
+ const hubspotAuthorizationEndpoint = requireEnv(
40
+ 'HUBSPOT_AUTHORIZATION_ENDPOINT'
41
+ );
42
+ const hubspotOAuthApiOrigin = new URL(requireEnv('HUBSPOT_OAUTH_API_ORIGIN'))
43
+ .origin;
44
+ const isCimdEnabled = isHubspotCimdEnabled();
45
+ const isDpopEnabled = isHubspotDpopEnabled();
46
+ const isAppPrivateKeyRequired = isCimdEnabled || isDpopEnabled;
47
+
48
+ if (isCimdEnabled) {
49
+ return {
50
+ hubspotAuthorizationEndpoint,
51
+ hubspotOAuthApiOrigin,
52
+ isCimdEnabled: true,
53
+ isDpopEnabled,
54
+ isAppPrivateKeyRequired,
55
+ };
56
+ }
57
+
58
+ return {
59
+ hubspotAuthorizationEndpoint,
60
+ hubspotOAuthApiOrigin,
61
+ isCimdEnabled: false,
62
+ isDpopEnabled,
63
+ isAppPrivateKeyRequired,
64
+ hubspotClientId: requireEnv('HUBSPOT_CLIENT_ID'),
65
+ hubspotClientSecret: requireEnv('HUBSPOT_CLIENT_SECRET'),
66
+ };
67
+ }