@hubspot/app-connect-sdk 1.0.0-alpha.4 → 1.0.0-alpha.5

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 (510) hide show
  1. package/.turbo/turbo-tsc.log +1 -2
  2. package/.turbo/turbo-tsdown.log +523 -52
  3. package/build/tsconfig.browser.tsbuildinfo +1 -1
  4. package/build/tsconfig.server.tsbuildinfo +1 -1
  5. package/dist/browser/{create-hzqjIhmO.js → create-crdncXsh.js} +2 -2
  6. package/dist/browser/create-crdncXsh.js.map +1 -0
  7. package/dist/browser/index.js +1 -1
  8. package/dist/browser/react/lovable.js +1 -1
  9. package/dist/server/api-client-core/apis/account/account-info-types.generated.d.ts +111 -0
  10. package/dist/server/api-client-core/apis/account/account-info.generated.d.ts +7 -0
  11. package/dist/server/api-client-core/apis/account/account-info.generated.js +9 -0
  12. package/dist/server/api-client-core/apis/account/account-info.generated.js.map +1 -0
  13. package/dist/server/api-client-core/apis/account/audit-logs-types.generated.d.ts +247 -0
  14. package/dist/server/api-client-core/apis/account/audit-logs.generated.d.ts +7 -0
  15. package/dist/server/api-client-core/apis/account/audit-logs.generated.js +28 -0
  16. package/dist/server/api-client-core/apis/account/audit-logs.generated.js.map +1 -0
  17. package/dist/server/api-client-core/apis/auth/oauth-types.generated.d.ts +121 -0
  18. package/dist/server/api-client-core/apis/auth/oauth.generated.d.ts +7 -0
  19. package/dist/server/api-client-core/apis/auth/oauth.generated.js +19 -0
  20. package/dist/server/api-client-core/apis/auth/oauth.generated.js.map +1 -0
  21. package/dist/server/api-client-core/apis/automation/actions-types.generated.d.ts +933 -0
  22. package/dist/server/api-client-core/apis/automation/actions.generated.d.ts +7 -0
  23. package/dist/server/api-client-core/apis/automation/actions.generated.js +121 -0
  24. package/dist/server/api-client-core/apis/automation/actions.generated.js.map +1 -0
  25. package/dist/server/api-client-core/apis/automation/sequences-types.generated.d.ts +422 -0
  26. package/dist/server/api-client-core/apis/automation/sequences.generated.d.ts +7 -0
  27. package/dist/server/api-client-core/apis/automation/sequences.generated.js +22 -0
  28. package/dist/server/api-client-core/apis/automation/sequences.generated.js.map +1 -0
  29. package/dist/server/api-client-core/apis/business-units-types.generated.d.ts +75 -0
  30. package/dist/server/api-client-core/apis/business-units.generated.d.ts +7 -0
  31. package/dist/server/api-client-core/apis/business-units.generated.js +12 -0
  32. package/dist/server/api-client-core/apis/business-units.generated.js.map +1 -0
  33. package/dist/server/api-client-core/apis/cms/authors-types.generated.d.ts +551 -0
  34. package/dist/server/api-client-core/apis/cms/authors.generated.d.ts +7 -0
  35. package/dist/server/api-client-core/apis/cms/authors.generated.js +163 -0
  36. package/dist/server/api-client-core/apis/cms/authors.generated.js.map +1 -0
  37. package/dist/server/api-client-core/apis/cms/blog-settings-types.generated.d.ts +366 -0
  38. package/dist/server/api-client-core/apis/cms/blog-settings.generated.d.ts +7 -0
  39. package/dist/server/api-client-core/apis/cms/blog-settings.generated.js +43 -0
  40. package/dist/server/api-client-core/apis/cms/blog-settings.generated.js.map +1 -0
  41. package/dist/server/api-client-core/apis/cms/cms-content-audit-types.generated.d.ts +157 -0
  42. package/dist/server/api-client-core/apis/cms/cms-content-audit.generated.d.ts +7 -0
  43. package/dist/server/api-client-core/apis/cms/cms-content-audit.generated.js +18 -0
  44. package/dist/server/api-client-core/apis/cms/cms-content-audit.generated.js.map +1 -0
  45. package/dist/server/api-client-core/apis/cms/domains-types.generated.d.ts +193 -0
  46. package/dist/server/api-client-core/apis/cms/domains.generated.d.ts +7 -0
  47. package/dist/server/api-client-core/apis/cms/domains.generated.js +20 -0
  48. package/dist/server/api-client-core/apis/cms/domains.generated.js.map +1 -0
  49. package/dist/server/api-client-core/apis/cms/hubdb-types.generated.d.ts +1097 -0
  50. package/dist/server/api-client-core/apis/cms/hubdb.generated.d.ts +7 -0
  51. package/dist/server/api-client-core/apis/cms/hubdb.generated.js +192 -0
  52. package/dist/server/api-client-core/apis/cms/hubdb.generated.js.map +1 -0
  53. package/dist/server/api-client-core/apis/cms/media-bridge-types.generated.d.ts +1780 -0
  54. package/dist/server/api-client-core/apis/cms/media-bridge.generated.d.ts +7 -0
  55. package/dist/server/api-client-core/apis/cms/media-bridge.generated.js +185 -0
  56. package/dist/server/api-client-core/apis/cms/media-bridge.generated.js.map +1 -0
  57. package/dist/server/api-client-core/apis/cms/pages-types.generated.d.ts +1768 -0
  58. package/dist/server/api-client-core/apis/cms/pages.generated.d.ts +7 -0
  59. package/dist/server/api-client-core/apis/cms/pages.generated.js +331 -0
  60. package/dist/server/api-client-core/apis/cms/pages.generated.js.map +1 -0
  61. package/dist/server/api-client-core/apis/cms/posts-types.generated.d.ts +1090 -0
  62. package/dist/server/api-client-core/apis/cms/posts.generated.d.ts +7 -0
  63. package/dist/server/api-client-core/apis/cms/posts.generated.js +201 -0
  64. package/dist/server/api-client-core/apis/cms/posts.generated.js.map +1 -0
  65. package/dist/server/api-client-core/apis/cms/site-search-types.generated.d.ts +200 -0
  66. package/dist/server/api-client-core/apis/cms/site-search.generated.d.ts +7 -0
  67. package/dist/server/api-client-core/apis/cms/site-search.generated.js +32 -0
  68. package/dist/server/api-client-core/apis/cms/site-search.generated.js.map +1 -0
  69. package/dist/server/api-client-core/apis/cms/source-code-types.generated.d.ts +218 -0
  70. package/dist/server/api-client-core/apis/cms/source-code.generated.d.ts +7 -0
  71. package/dist/server/api-client-core/apis/cms/source-code.generated.js +52 -0
  72. package/dist/server/api-client-core/apis/cms/source-code.generated.js.map +1 -0
  73. package/dist/server/api-client-core/apis/cms/tags-types.generated.d.ts +515 -0
  74. package/dist/server/api-client-core/apis/cms/tags.generated.d.ts +7 -0
  75. package/dist/server/api-client-core/apis/cms/tags.generated.js +163 -0
  76. package/dist/server/api-client-core/apis/cms/tags.generated.js.map +1 -0
  77. package/dist/server/api-client-core/apis/cms/url-mappings-types.generated.d.ts +177 -0
  78. package/dist/server/api-client-core/apis/cms/url-mappings.generated.d.ts +7 -0
  79. package/dist/server/api-client-core/apis/cms/url-mappings.generated.js +14 -0
  80. package/dist/server/api-client-core/apis/cms/url-mappings.generated.js.map +1 -0
  81. package/dist/server/api-client-core/apis/cms/url-redirects-types.generated.d.ts +226 -0
  82. package/dist/server/api-client-core/apis/cms/url-redirects.generated.d.ts +7 -0
  83. package/dist/server/api-client-core/apis/cms/url-redirects.generated.js +26 -0
  84. package/dist/server/api-client-core/apis/cms/url-redirects.generated.js.map +1 -0
  85. package/dist/server/api-client-core/apis/communication-preferences/subscriptions-types.generated.d.ts +802 -0
  86. package/dist/server/api-client-core/apis/communication-preferences/subscriptions.generated.d.ts +7 -0
  87. package/dist/server/api-client-core/apis/communication-preferences/subscriptions.generated.js +74 -0
  88. package/dist/server/api-client-core/apis/communication-preferences/subscriptions.generated.js.map +1 -0
  89. package/dist/server/api-client-core/apis/conversations/custom-channels-types.generated.d.ts +551 -0
  90. package/dist/server/api-client-core/apis/conversations/custom-channels.generated.d.ts +7 -0
  91. package/dist/server/api-client-core/apis/conversations/custom-channels.generated.js +80 -0
  92. package/dist/server/api-client-core/apis/conversations/custom-channels.generated.js.map +1 -0
  93. package/dist/server/api-client-core/apis/conversations/visitor-identification-types.generated.d.ts +60 -0
  94. package/dist/server/api-client-core/apis/conversations/visitor-identification.generated.d.ts +7 -0
  95. package/dist/server/api-client-core/apis/conversations/visitor-identification.generated.js +6 -0
  96. package/dist/server/api-client-core/apis/conversations/visitor-identification.generated.js.map +1 -0
  97. package/dist/server/api-client-core/apis/conversations-types.generated.d.ts +908 -0
  98. package/dist/server/api-client-core/apis/conversations.generated.d.ts +7 -0
  99. package/dist/server/api-client-core/apis/conversations.generated.js +108 -0
  100. package/dist/server/api-client-core/apis/conversations.generated.js.map +1 -0
  101. package/dist/server/api-client-core/apis/crm/app-uninstalls-types.generated.d.ts +37 -0
  102. package/dist/server/api-client-core/apis/crm/app-uninstalls.generated.d.ts +7 -0
  103. package/dist/server/api-client-core/apis/crm/app-uninstalls.generated.js +6 -0
  104. package/dist/server/api-client-core/apis/crm/app-uninstalls.generated.js.map +1 -0
  105. package/dist/server/api-client-core/apis/crm/appointments-types.generated.d.ts +989 -0
  106. package/dist/server/api-client-core/apis/crm/appointments.generated.d.ts +7 -0
  107. package/dist/server/api-client-core/apis/crm/appointments.generated.js +118 -0
  108. package/dist/server/api-client-core/apis/crm/appointments.generated.js.map +1 -0
  109. package/dist/server/api-client-core/apis/crm/associations-schema-types.generated.d.ts +329 -0
  110. package/dist/server/api-client-core/apis/crm/associations-schema.generated.d.ts +7 -0
  111. package/dist/server/api-client-core/apis/crm/associations-schema.generated.js +60 -0
  112. package/dist/server/api-client-core/apis/crm/associations-schema.generated.js.map +1 -0
  113. package/dist/server/api-client-core/apis/crm/associations-types.generated.d.ts +661 -0
  114. package/dist/server/api-client-core/apis/crm/associations.generated.d.ts +7 -0
  115. package/dist/server/api-client-core/apis/crm/associations.generated.js +83 -0
  116. package/dist/server/api-client-core/apis/crm/associations.generated.js.map +1 -0
  117. package/dist/server/api-client-core/apis/crm/calling-extensions-types.generated.d.ts +466 -0
  118. package/dist/server/api-client-core/apis/crm/calling-extensions.generated.d.ts +7 -0
  119. package/dist/server/api-client-core/apis/crm/calling-extensions.generated.js +42 -0
  120. package/dist/server/api-client-core/apis/crm/calling-extensions.generated.js.map +1 -0
  121. package/dist/server/api-client-core/apis/crm/calls-types.generated.d.ts +850 -0
  122. package/dist/server/api-client-core/apis/crm/calls.generated.d.ts +7 -0
  123. package/dist/server/api-client-core/apis/crm/calls.generated.js +66 -0
  124. package/dist/server/api-client-core/apis/crm/calls.generated.js.map +1 -0
  125. package/dist/server/api-client-core/apis/crm/carts-types.generated.d.ts +850 -0
  126. package/dist/server/api-client-core/apis/crm/carts.generated.d.ts +7 -0
  127. package/dist/server/api-client-core/apis/crm/carts.generated.js +66 -0
  128. package/dist/server/api-client-core/apis/crm/carts.generated.js.map +1 -0
  129. package/dist/server/api-client-core/apis/crm/commerce-payments-types.generated.d.ts +850 -0
  130. package/dist/server/api-client-core/apis/crm/commerce-payments.generated.d.ts +7 -0
  131. package/dist/server/api-client-core/apis/crm/commerce-payments.generated.js +66 -0
  132. package/dist/server/api-client-core/apis/crm/commerce-payments.generated.js.map +1 -0
  133. package/dist/server/api-client-core/apis/crm/commerce-subscriptions-types.generated.d.ts +847 -0
  134. package/dist/server/api-client-core/apis/crm/commerce-subscriptions.generated.d.ts +7 -0
  135. package/dist/server/api-client-core/apis/crm/commerce-subscriptions.generated.js +66 -0
  136. package/dist/server/api-client-core/apis/crm/commerce-subscriptions.generated.js.map +1 -0
  137. package/dist/server/api-client-core/apis/crm/communications-types.generated.d.ts +850 -0
  138. package/dist/server/api-client-core/apis/crm/communications.generated.d.ts +7 -0
  139. package/dist/server/api-client-core/apis/crm/communications.generated.js +66 -0
  140. package/dist/server/api-client-core/apis/crm/communications.generated.js.map +1 -0
  141. package/dist/server/api-client-core/apis/crm/companies-types.generated.d.ts +884 -0
  142. package/dist/server/api-client-core/apis/crm/companies.generated.d.ts +7 -0
  143. package/dist/server/api-client-core/apis/crm/companies.generated.js +67 -0
  144. package/dist/server/api-client-core/apis/crm/companies.generated.js.map +1 -0
  145. package/dist/server/api-client-core/apis/crm/contacts-types.generated.d.ts +899 -0
  146. package/dist/server/api-client-core/apis/crm/contacts.generated.d.ts +7 -0
  147. package/dist/server/api-client-core/apis/crm/contacts.generated.js +70 -0
  148. package/dist/server/api-client-core/apis/crm/contacts.generated.js.map +1 -0
  149. package/dist/server/api-client-core/apis/crm/contracts-types.generated.d.ts +850 -0
  150. package/dist/server/api-client-core/apis/crm/contracts.generated.d.ts +7 -0
  151. package/dist/server/api-client-core/apis/crm/contracts.generated.js +66 -0
  152. package/dist/server/api-client-core/apis/crm/contracts.generated.js.map +1 -0
  153. package/dist/server/api-client-core/apis/crm/courses-types.generated.d.ts +853 -0
  154. package/dist/server/api-client-core/apis/crm/courses.generated.d.ts +7 -0
  155. package/dist/server/api-client-core/apis/crm/courses.generated.js +66 -0
  156. package/dist/server/api-client-core/apis/crm/courses.generated.js.map +1 -0
  157. package/dist/server/api-client-core/apis/crm/crm-owners-types.generated.d.ts +140 -0
  158. package/dist/server/api-client-core/apis/crm/crm-owners.generated.d.ts +7 -0
  159. package/dist/server/api-client-core/apis/crm/crm-owners.generated.js +20 -0
  160. package/dist/server/api-client-core/apis/crm/crm-owners.generated.js.map +1 -0
  161. package/dist/server/api-client-core/apis/crm/custom-objects-types.generated.d.ts +934 -0
  162. package/dist/server/api-client-core/apis/crm/custom-objects.generated.d.ts +7 -0
  163. package/dist/server/api-client-core/apis/crm/custom-objects.generated.js +101 -0
  164. package/dist/server/api-client-core/apis/crm/custom-objects.generated.js.map +1 -0
  165. package/dist/server/api-client-core/apis/crm/deal-splits-types.generated.d.ts +196 -0
  166. package/dist/server/api-client-core/apis/crm/deal-splits.generated.d.ts +7 -0
  167. package/dist/server/api-client-core/apis/crm/deal-splits.generated.js +9 -0
  168. package/dist/server/api-client-core/apis/crm/deal-splits.generated.js.map +1 -0
  169. package/dist/server/api-client-core/apis/crm/deals-types.generated.d.ts +872 -0
  170. package/dist/server/api-client-core/apis/crm/deals.generated.d.ts +7 -0
  171. package/dist/server/api-client-core/apis/crm/deals.generated.js +67 -0
  172. package/dist/server/api-client-core/apis/crm/deals.generated.js.map +1 -0
  173. package/dist/server/api-client-core/apis/crm/discounts-types.generated.d.ts +846 -0
  174. package/dist/server/api-client-core/apis/crm/discounts.generated.d.ts +7 -0
  175. package/dist/server/api-client-core/apis/crm/discounts.generated.js +66 -0
  176. package/dist/server/api-client-core/apis/crm/discounts.generated.js.map +1 -0
  177. package/dist/server/api-client-core/apis/crm/emails-types.generated.d.ts +850 -0
  178. package/dist/server/api-client-core/apis/crm/emails.generated.d.ts +7 -0
  179. package/dist/server/api-client-core/apis/crm/emails.generated.js +66 -0
  180. package/dist/server/api-client-core/apis/crm/emails.generated.js.map +1 -0
  181. package/dist/server/api-client-core/apis/crm/exports-types.generated.d.ts +281 -0
  182. package/dist/server/api-client-core/apis/crm/exports.generated.d.ts +7 -0
  183. package/dist/server/api-client-core/apis/crm/exports.generated.js +12 -0
  184. package/dist/server/api-client-core/apis/crm/exports.generated.js.map +1 -0
  185. package/dist/server/api-client-core/apis/crm/feedback-submissions-types.generated.d.ts +616 -0
  186. package/dist/server/api-client-core/apis/crm/feedback-submissions.generated.d.ts +7 -0
  187. package/dist/server/api-client-core/apis/crm/feedback-submissions.generated.js +55 -0
  188. package/dist/server/api-client-core/apis/crm/feedback-submissions.generated.js.map +1 -0
  189. package/dist/server/api-client-core/apis/crm/fees-types.generated.d.ts +850 -0
  190. package/dist/server/api-client-core/apis/crm/fees.generated.d.ts +7 -0
  191. package/dist/server/api-client-core/apis/crm/fees.generated.js +66 -0
  192. package/dist/server/api-client-core/apis/crm/fees.generated.js.map +1 -0
  193. package/dist/server/api-client-core/apis/crm/goal-targets-types.generated.d.ts +850 -0
  194. package/dist/server/api-client-core/apis/crm/goal-targets.generated.d.ts +7 -0
  195. package/dist/server/api-client-core/apis/crm/goal-targets.generated.js +66 -0
  196. package/dist/server/api-client-core/apis/crm/goal-targets.generated.js.map +1 -0
  197. package/dist/server/api-client-core/apis/crm/imports-types.generated.d.ts +371 -0
  198. package/dist/server/api-client-core/apis/crm/imports.generated.d.ts +7 -0
  199. package/dist/server/api-client-core/apis/crm/imports.generated.js +30 -0
  200. package/dist/server/api-client-core/apis/crm/imports.generated.js.map +1 -0
  201. package/dist/server/api-client-core/apis/crm/invoices-types.generated.d.ts +850 -0
  202. package/dist/server/api-client-core/apis/crm/invoices.generated.d.ts +7 -0
  203. package/dist/server/api-client-core/apis/crm/invoices.generated.js +66 -0
  204. package/dist/server/api-client-core/apis/crm/invoices.generated.js.map +1 -0
  205. package/dist/server/api-client-core/apis/crm/leads-types.generated.d.ts +850 -0
  206. package/dist/server/api-client-core/apis/crm/leads.generated.d.ts +7 -0
  207. package/dist/server/api-client-core/apis/crm/leads.generated.js +66 -0
  208. package/dist/server/api-client-core/apis/crm/leads.generated.js.map +1 -0
  209. package/dist/server/api-client-core/apis/crm/limits-tracking-types.generated.d.ts +331 -0
  210. package/dist/server/api-client-core/apis/crm/limits-tracking.generated.d.ts +7 -0
  211. package/dist/server/api-client-core/apis/crm/limits-tracking.generated.js +22 -0
  212. package/dist/server/api-client-core/apis/crm/limits-tracking.generated.js.map +1 -0
  213. package/dist/server/api-client-core/apis/crm/line-items-types.generated.d.ts +850 -0
  214. package/dist/server/api-client-core/apis/crm/line-items.generated.d.ts +7 -0
  215. package/dist/server/api-client-core/apis/crm/line-items.generated.js +66 -0
  216. package/dist/server/api-client-core/apis/crm/line-items.generated.js.map +1 -0
  217. package/dist/server/api-client-core/apis/crm/listings-types.generated.d.ts +853 -0
  218. package/dist/server/api-client-core/apis/crm/listings.generated.d.ts +7 -0
  219. package/dist/server/api-client-core/apis/crm/listings.generated.js +66 -0
  220. package/dist/server/api-client-core/apis/crm/listings.generated.js.map +1 -0
  221. package/dist/server/api-client-core/apis/crm/lists-types.generated.d.ts +2265 -0
  222. package/dist/server/api-client-core/apis/crm/lists.generated.d.ts +7 -0
  223. package/dist/server/api-client-core/apis/crm/lists.generated.js +105 -0
  224. package/dist/server/api-client-core/apis/crm/lists.generated.js.map +1 -0
  225. package/dist/server/api-client-core/apis/crm/meetings-types.generated.d.ts +850 -0
  226. package/dist/server/api-client-core/apis/crm/meetings.generated.d.ts +7 -0
  227. package/dist/server/api-client-core/apis/crm/meetings.generated.js +66 -0
  228. package/dist/server/api-client-core/apis/crm/meetings.generated.js.map +1 -0
  229. package/dist/server/api-client-core/apis/crm/notes-types.generated.d.ts +850 -0
  230. package/dist/server/api-client-core/apis/crm/notes.generated.d.ts +7 -0
  231. package/dist/server/api-client-core/apis/crm/notes.generated.js +66 -0
  232. package/dist/server/api-client-core/apis/crm/notes.generated.js.map +1 -0
  233. package/dist/server/api-client-core/apis/crm/object-library-types.generated.d.ts +60 -0
  234. package/dist/server/api-client-core/apis/crm/object-library.generated.d.ts +7 -0
  235. package/dist/server/api-client-core/apis/crm/object-library.generated.js +9 -0
  236. package/dist/server/api-client-core/apis/crm/object-library.generated.js.map +1 -0
  237. package/dist/server/api-client-core/apis/crm/objects-types.generated.d.ts +712 -0
  238. package/dist/server/api-client-core/apis/crm/objects.generated.d.ts +7 -0
  239. package/dist/server/api-client-core/apis/crm/objects.generated.js +76 -0
  240. package/dist/server/api-client-core/apis/crm/objects.generated.js.map +1 -0
  241. package/dist/server/api-client-core/apis/crm/orders-types.generated.d.ts +850 -0
  242. package/dist/server/api-client-core/apis/crm/orders.generated.d.ts +7 -0
  243. package/dist/server/api-client-core/apis/crm/orders.generated.js +66 -0
  244. package/dist/server/api-client-core/apis/crm/orders.generated.js.map +1 -0
  245. package/dist/server/api-client-core/apis/crm/partner-clients-types.generated.d.ts +725 -0
  246. package/dist/server/api-client-core/apis/crm/partner-clients.generated.d.ts +7 -0
  247. package/dist/server/api-client-core/apis/crm/partner-clients.generated.js +71 -0
  248. package/dist/server/api-client-core/apis/crm/partner-clients.generated.js.map +1 -0
  249. package/dist/server/api-client-core/apis/crm/partner-services-types.generated.d.ts +725 -0
  250. package/dist/server/api-client-core/apis/crm/partner-services.generated.d.ts +7 -0
  251. package/dist/server/api-client-core/apis/crm/partner-services.generated.js +71 -0
  252. package/dist/server/api-client-core/apis/crm/partner-services.generated.js.map +1 -0
  253. package/dist/server/api-client-core/apis/crm/pipelines-types.generated.d.ts +430 -0
  254. package/dist/server/api-client-core/apis/crm/pipelines.generated.d.ts +7 -0
  255. package/dist/server/api-client-core/apis/crm/pipelines.generated.js +94 -0
  256. package/dist/server/api-client-core/apis/crm/pipelines.generated.js.map +1 -0
  257. package/dist/server/api-client-core/apis/crm/postal-mail-types.generated.d.ts +844 -0
  258. package/dist/server/api-client-core/apis/crm/postal-mail.generated.d.ts +7 -0
  259. package/dist/server/api-client-core/apis/crm/postal-mail.generated.js +66 -0
  260. package/dist/server/api-client-core/apis/crm/postal-mail.generated.js.map +1 -0
  261. package/dist/server/api-client-core/apis/crm/products-types.generated.d.ts +850 -0
  262. package/dist/server/api-client-core/apis/crm/products.generated.d.ts +7 -0
  263. package/dist/server/api-client-core/apis/crm/products.generated.js +66 -0
  264. package/dist/server/api-client-core/apis/crm/products.generated.js.map +1 -0
  265. package/dist/server/api-client-core/apis/crm/projects-types.generated.d.ts +881 -0
  266. package/dist/server/api-client-core/apis/crm/projects.generated.d.ts +7 -0
  267. package/dist/server/api-client-core/apis/crm/projects.generated.js +67 -0
  268. package/dist/server/api-client-core/apis/crm/projects.generated.js.map +1 -0
  269. package/dist/server/api-client-core/apis/crm/properties-types.generated.d.ts +603 -0
  270. package/dist/server/api-client-core/apis/crm/properties.generated.d.ts +7 -0
  271. package/dist/server/api-client-core/apis/crm/properties.generated.js +86 -0
  272. package/dist/server/api-client-core/apis/crm/properties.generated.js.map +1 -0
  273. package/dist/server/api-client-core/apis/crm/property-validations-types.generated.d.ts +121 -0
  274. package/dist/server/api-client-core/apis/crm/property-validations.generated.d.ts +7 -0
  275. package/dist/server/api-client-core/apis/crm/property-validations.generated.js +25 -0
  276. package/dist/server/api-client-core/apis/crm/property-validations.generated.js.map +1 -0
  277. package/dist/server/api-client-core/apis/crm/public-app-crm-cards-types.generated.d.ts +486 -0
  278. package/dist/server/api-client-core/apis/crm/public-app-crm-cards.generated.d.ts +7 -0
  279. package/dist/server/api-client-core/apis/crm/public-app-crm-cards.generated.js +34 -0
  280. package/dist/server/api-client-core/apis/crm/public-app-crm-cards.generated.js.map +1 -0
  281. package/dist/server/api-client-core/apis/crm/public-app-feature-flags-types.generated.d.ts +247 -0
  282. package/dist/server/api-client-core/apis/crm/public-app-feature-flags.generated.d.ts +7 -0
  283. package/dist/server/api-client-core/apis/crm/public-app-feature-flags.generated.js +69 -0
  284. package/dist/server/api-client-core/apis/crm/public-app-feature-flags.generated.js.map +1 -0
  285. package/dist/server/api-client-core/apis/crm/quotes-types.generated.d.ts +850 -0
  286. package/dist/server/api-client-core/apis/crm/quotes.generated.d.ts +7 -0
  287. package/dist/server/api-client-core/apis/crm/quotes.generated.js +66 -0
  288. package/dist/server/api-client-core/apis/crm/quotes.generated.js.map +1 -0
  289. package/dist/server/api-client-core/apis/crm/schemas-types.generated.d.ts +669 -0
  290. package/dist/server/api-client-core/apis/crm/schemas.generated.d.ts +7 -0
  291. package/dist/server/api-client-core/apis/crm/schemas.generated.js +41 -0
  292. package/dist/server/api-client-core/apis/crm/schemas.generated.js.map +1 -0
  293. package/dist/server/api-client-core/apis/crm/services-types.generated.d.ts +853 -0
  294. package/dist/server/api-client-core/apis/crm/services.generated.d.ts +7 -0
  295. package/dist/server/api-client-core/apis/crm/services.generated.js +66 -0
  296. package/dist/server/api-client-core/apis/crm/services.generated.js.map +1 -0
  297. package/dist/server/api-client-core/apis/crm/tasks-types.generated.d.ts +850 -0
  298. package/dist/server/api-client-core/apis/crm/tasks.generated.d.ts +7 -0
  299. package/dist/server/api-client-core/apis/crm/tasks.generated.js +66 -0
  300. package/dist/server/api-client-core/apis/crm/tasks.generated.js.map +1 -0
  301. package/dist/server/api-client-core/apis/crm/taxes-types.generated.d.ts +850 -0
  302. package/dist/server/api-client-core/apis/crm/taxes.generated.d.ts +7 -0
  303. package/dist/server/api-client-core/apis/crm/taxes.generated.js +66 -0
  304. package/dist/server/api-client-core/apis/crm/taxes.generated.js.map +1 -0
  305. package/dist/server/api-client-core/apis/crm/tickets-types.generated.d.ts +884 -0
  306. package/dist/server/api-client-core/apis/crm/tickets.generated.d.ts +7 -0
  307. package/dist/server/api-client-core/apis/crm/tickets.generated.js +67 -0
  308. package/dist/server/api-client-core/apis/crm/tickets.generated.js.map +1 -0
  309. package/dist/server/api-client-core/apis/crm/timeline-types.generated.d.ts +187 -0
  310. package/dist/server/api-client-core/apis/crm/timeline.generated.d.ts +7 -0
  311. package/dist/server/api-client-core/apis/crm/timeline.generated.js +12 -0
  312. package/dist/server/api-client-core/apis/crm/timeline.generated.js.map +1 -0
  313. package/dist/server/api-client-core/apis/crm/transcriptions-types.generated.d.ts +152 -0
  314. package/dist/server/api-client-core/apis/crm/transcriptions.generated.d.ts +7 -0
  315. package/dist/server/api-client-core/apis/crm/transcriptions.generated.js +15 -0
  316. package/dist/server/api-client-core/apis/crm/transcriptions.generated.js.map +1 -0
  317. package/dist/server/api-client-core/apis/crm/users-types.generated.d.ts +850 -0
  318. package/dist/server/api-client-core/apis/crm/users.generated.d.ts +7 -0
  319. package/dist/server/api-client-core/apis/crm/users.generated.js +66 -0
  320. package/dist/server/api-client-core/apis/crm/users.generated.js.map +1 -0
  321. package/dist/server/api-client-core/apis/crm/video-conferencing-extension-types.generated.d.ts +72 -0
  322. package/dist/server/api-client-core/apis/crm/video-conferencing-extension.generated.d.ts +7 -0
  323. package/dist/server/api-client-core/apis/crm/video-conferencing-extension.generated.js +13 -0
  324. package/dist/server/api-client-core/apis/crm/video-conferencing-extension.generated.js.map +1 -0
  325. package/dist/server/api-client-core/apis/events/manage-event-definitions-types.generated.d.ts +1005 -0
  326. package/dist/server/api-client-core/apis/events/manage-event-definitions.generated.d.ts +7 -0
  327. package/dist/server/api-client-core/apis/events/manage-event-definitions.generated.js +39 -0
  328. package/dist/server/api-client-core/apis/events/manage-event-definitions.generated.js.map +1 -0
  329. package/dist/server/api-client-core/apis/events/send-event-completions-types.generated.d.ts +94 -0
  330. package/dist/server/api-client-core/apis/events/send-event-completions.generated.d.ts +7 -0
  331. package/dist/server/api-client-core/apis/events/send-event-completions.generated.js +9 -0
  332. package/dist/server/api-client-core/apis/events/send-event-completions.generated.js.map +1 -0
  333. package/dist/server/api-client-core/apis/events-types.generated.d.ts +137 -0
  334. package/dist/server/api-client-core/apis/events.generated.d.ts +7 -0
  335. package/dist/server/api-client-core/apis/events.generated.js +23 -0
  336. package/dist/server/api-client-core/apis/events.generated.js.map +1 -0
  337. package/dist/server/api-client-core/apis/files-types.generated.d.ts +791 -0
  338. package/dist/server/api-client-core/apis/files.generated.d.ts +7 -0
  339. package/dist/server/api-client-core/apis/files.generated.js +119 -0
  340. package/dist/server/api-client-core/apis/files.generated.js.map +1 -0
  341. package/dist/server/api-client-core/apis/marketing/campaigns-public-api-types.generated.d.ts +989 -0
  342. package/dist/server/api-client-core/apis/marketing/campaigns-public-api.generated.d.ts +7 -0
  343. package/dist/server/api-client-core/apis/marketing/campaigns-public-api.generated.js +139 -0
  344. package/dist/server/api-client-core/apis/marketing/campaigns-public-api.generated.js.map +1 -0
  345. package/dist/server/api-client-core/apis/marketing/marketing-emails-types.generated.d.ts +883 -0
  346. package/dist/server/api-client-core/apis/marketing/marketing-emails.generated.d.ts +7 -0
  347. package/dist/server/api-client-core/apis/marketing/marketing-emails.generated.js +108 -0
  348. package/dist/server/api-client-core/apis/marketing/marketing-emails.generated.js.map +1 -0
  349. package/dist/server/api-client-core/apis/marketing/marketing-events-types.generated.d.ts +1788 -0
  350. package/dist/server/api-client-core/apis/marketing/marketing-events.generated.d.ts +7 -0
  351. package/dist/server/api-client-core/apis/marketing/marketing-events.generated.js +176 -0
  352. package/dist/server/api-client-core/apis/marketing/marketing-events.generated.js.map +1 -0
  353. package/dist/server/api-client-core/apis/marketing/single-send-types.generated.d.ts +123 -0
  354. package/dist/server/api-client-core/apis/marketing/single-send.generated.d.ts +7 -0
  355. package/dist/server/api-client-core/apis/marketing/single-send.generated.js +6 -0
  356. package/dist/server/api-client-core/apis/marketing/single-send.generated.js.map +1 -0
  357. package/dist/server/api-client-core/apis/marketing/transactional-single-send-types.generated.d.ts +257 -0
  358. package/dist/server/api-client-core/apis/marketing/transactional-single-send.generated.d.ts +7 -0
  359. package/dist/server/api-client-core/apis/marketing/transactional-single-send.generated.js +20 -0
  360. package/dist/server/api-client-core/apis/marketing/transactional-single-send.generated.js.map +1 -0
  361. package/dist/server/api-client-core/apis/meta/origins-types.generated.d.ts +77 -0
  362. package/dist/server/api-client-core/apis/meta/origins.generated.d.ts +7 -0
  363. package/dist/server/api-client-core/apis/meta/origins.generated.js +15 -0
  364. package/dist/server/api-client-core/apis/meta/origins.generated.js.map +1 -0
  365. package/dist/server/api-client-core/apis/scheduler/meetings-types.generated.d.ts +913 -0
  366. package/dist/server/api-client-core/apis/scheduler/meetings.generated.d.ts +7 -0
  367. package/dist/server/api-client-core/apis/scheduler/meetings.generated.js +34 -0
  368. package/dist/server/api-client-core/apis/scheduler/meetings.generated.js.map +1 -0
  369. package/dist/server/api-client-core/apis/settings/multicurrency-types.generated.d.ts +404 -0
  370. package/dist/server/api-client-core/apis/settings/multicurrency.generated.d.ts +7 -0
  371. package/dist/server/api-client-core/apis/settings/multicurrency.generated.js +38 -0
  372. package/dist/server/api-client-core/apis/settings/multicurrency.generated.js.map +1 -0
  373. package/dist/server/api-client-core/apis/settings/tax-rates-types.generated.d.ts +111 -0
  374. package/dist/server/api-client-core/apis/settings/tax-rates.generated.d.ts +7 -0
  375. package/dist/server/api-client-core/apis/settings/tax-rates.generated.js +13 -0
  376. package/dist/server/api-client-core/apis/settings/tax-rates.generated.js.map +1 -0
  377. package/dist/server/api-client-core/apis/settings/user-provisioning-types.generated.d.ts +297 -0
  378. package/dist/server/api-client-core/apis/settings/user-provisioning.generated.d.ts +7 -0
  379. package/dist/server/api-client-core/apis/settings/user-provisioning.generated.js +31 -0
  380. package/dist/server/api-client-core/apis/settings/user-provisioning.generated.js.map +1 -0
  381. package/dist/server/api-client-core/apis/webhooks-journal-types.generated.d.ts +643 -0
  382. package/dist/server/api-client-core/apis/webhooks-journal.generated.d.ts +7 -0
  383. package/dist/server/api-client-core/apis/webhooks-journal.generated.js +75 -0
  384. package/dist/server/api-client-core/apis/webhooks-journal.generated.js.map +1 -0
  385. package/dist/server/api-client-core/apis/webhooks-types.generated.d.ts +1016 -0
  386. package/dist/server/api-client-core/apis/webhooks.generated.d.ts +7 -0
  387. package/dist/server/api-client-core/apis/webhooks.generated.js +105 -0
  388. package/dist/server/api-client-core/apis/webhooks.generated.js.map +1 -0
  389. package/dist/server/api-client-core/binary-data.d.ts +33 -0
  390. package/dist/server/api-client-core/binary-data.js +29 -0
  391. package/dist/server/api-client-core/binary-data.js.map +1 -0
  392. package/dist/server/api-client-core/client.d.ts +14 -0
  393. package/dist/server/{binary-data-BOalJzKu.js → api-client-core/client.js} +3 -58
  394. package/dist/server/api-client-core/client.js.map +1 -0
  395. package/dist/server/api-client-core/codegen-helpers/file-op-wrappers.js +25 -0
  396. package/dist/server/api-client-core/codegen-helpers/file-op-wrappers.js.map +1 -0
  397. package/dist/server/api-client-core/errors.d.ts +27 -0
  398. package/dist/server/api-client-core/errors.js +33 -0
  399. package/dist/server/api-client-core/errors.js.map +1 -0
  400. package/dist/server/api-client-core/op.d.ts +37 -0
  401. package/dist/server/api-client-core/op.js +44 -0
  402. package/dist/server/api-client-core/op.js.map +1 -0
  403. package/dist/server/api-client-core/pagination.d.ts +60 -0
  404. package/dist/server/api-client-core/pagination.js +103 -0
  405. package/dist/server/api-client-core/pagination.js.map +1 -0
  406. package/dist/server/api-client-core/plugins/fetch-transport.js +76 -0
  407. package/dist/server/api-client-core/plugins/fetch-transport.js.map +1 -0
  408. package/dist/server/{types-DEOUH4wE.d.ts → api-client-core/types.d.ts} +2 -2
  409. package/dist/server/api-client.d.ts +197 -60625
  410. package/dist/server/api-client.js +100 -5826
  411. package/dist/server/constants.js +73 -0
  412. package/dist/server/constants.js.map +1 -0
  413. package/dist/server/deno/start.d.ts +12 -0
  414. package/dist/server/deno/start.js +21 -0
  415. package/dist/server/deno/start.js.map +1 -0
  416. package/dist/server/hono/hono-request-handler.js +59 -0
  417. package/dist/server/hono/hono-request-handler.js.map +1 -0
  418. package/dist/server/hono/hubspot-connect-routes/auth-complete.js +154 -0
  419. package/dist/server/hono/hubspot-connect-routes/auth-complete.js.map +1 -0
  420. package/dist/server/hono/hubspot-connect-routes/auth-init-session.js +101 -0
  421. package/dist/server/hono/hubspot-connect-routes/auth-init-session.js.map +1 -0
  422. package/dist/server/hono/hubspot-connect-routes/auth-logout.js +114 -0
  423. package/dist/server/hono/hubspot-connect-routes/auth-logout.js.map +1 -0
  424. package/dist/server/hono/hubspot-connect-routes/auth-refresh.js +107 -0
  425. package/dist/server/hono/hubspot-connect-routes/auth-refresh.js.map +1 -0
  426. package/dist/server/hono/hubspot-connect-routes/cimd-client-metadata-types.d.ts +16 -0
  427. package/dist/server/hono/hubspot-connect-routes/cimd-client-metadata-types.js +13 -0
  428. package/dist/server/hono/hubspot-connect-routes/cimd-client-metadata-types.js.map +1 -0
  429. package/dist/server/hono/hubspot-connect-routes/cimd-public-routes.js +42 -0
  430. package/dist/server/hono/hubspot-connect-routes/cimd-public-routes.js.map +1 -0
  431. package/dist/server/hono/hubspot-connect-routes/constants.js +8 -0
  432. package/dist/server/hono/hubspot-connect-routes/constants.js.map +1 -0
  433. package/dist/server/hono/hubspot-connect-routes/fetch-hubspot-client-metadata.js +43 -0
  434. package/dist/server/hono/hubspot-connect-routes/fetch-hubspot-client-metadata.js.map +1 -0
  435. package/dist/server/hono/hubspot-connect-routes/hubspot-connect-routes.js +37 -0
  436. package/dist/server/hono/hubspot-connect-routes/hubspot-connect-routes.js.map +1 -0
  437. package/dist/server/hono/hubspot-connect-routes/load-hubspot-connect-routes-env.js +34 -0
  438. package/dist/server/hono/hubspot-connect-routes/load-hubspot-connect-routes-env.js.map +1 -0
  439. package/dist/server/hono/hubspot-connect-routes/oauth-client.js +104 -0
  440. package/dist/server/hono/hubspot-connect-routes/oauth-client.js.map +1 -0
  441. package/dist/server/hono/hubspot-connect-routes/utils.js +120 -0
  442. package/dist/server/hono/hubspot-connect-routes/utils.js.map +1 -0
  443. package/dist/server/hono/index.js +4 -0
  444. package/dist/server/hono/types.d.ts +32 -0
  445. package/dist/server/hono/utils/cookie-utils.js +30 -0
  446. package/dist/server/hono/utils/cookie-utils.js.map +1 -0
  447. package/dist/server/hono/utils/cors-middleware.js +85 -0
  448. package/dist/server/hono/utils/cors-middleware.js.map +1 -0
  449. package/dist/server/import-app-keys.js +42 -0
  450. package/dist/server/import-app-keys.js.map +1 -0
  451. package/dist/server/lovable/create-app-function-start.d.ts +26 -0
  452. package/dist/server/lovable/create-app-function-start.js +28 -0
  453. package/dist/server/lovable/create-app-function-start.js.map +1 -0
  454. package/dist/server/lovable/hubspot-connect/index.d.ts +15 -0
  455. package/dist/server/lovable/hubspot-connect/index.js +20 -0
  456. package/dist/server/lovable/hubspot-connect/index.js.map +1 -0
  457. package/dist/server/lovable/hubspot-connect/run-hubspot-connect-lovable-server.js +29 -0
  458. package/dist/server/lovable/hubspot-connect/run-hubspot-connect-lovable-server.js.map +1 -0
  459. package/dist/server/lovable.d.ts +6 -117
  460. package/dist/server/lovable.js +3 -1458
  461. package/dist/server/oauth.d.ts +6 -128
  462. package/dist/server/oauth.js +4 -1
  463. package/dist/server/proxy.js +68 -0
  464. package/dist/server/proxy.js.map +1 -0
  465. package/dist/server/sanitize-request.js +55 -0
  466. package/dist/server/sanitize-request.js.map +1 -0
  467. package/dist/server/secure-start-core.d.ts +23 -0
  468. package/dist/server/secure-start-core.js +27 -0
  469. package/dist/server/secure-start-core.js.map +1 -0
  470. package/dist/server/shared/constants.js +30 -0
  471. package/dist/server/shared/constants.js.map +1 -0
  472. package/dist/server/shared/encoding/base64.js +45 -0
  473. package/dist/server/shared/encoding/base64.js.map +1 -0
  474. package/dist/server/shared/encoding/sha256.d.ts +10 -0
  475. package/dist/server/shared/encoding/sha256.js +15 -0
  476. package/dist/server/shared/encoding/sha256.js.map +1 -0
  477. package/dist/server/shared/logger.d.ts +15 -0
  478. package/dist/server/shared/logger.js +16 -0
  479. package/dist/server/shared/logger.js.map +1 -0
  480. package/dist/server/{types-5gfN91Fq.d.ts → types.d.ts} +4 -4
  481. package/dist/server/utils/cookie-utils.js +21 -0
  482. package/dist/server/utils/cookie-utils.js.map +1 -0
  483. package/dist/server/utils/dpop-utils.d.ts +67 -0
  484. package/dist/server/utils/dpop-utils.js +75 -0
  485. package/dist/server/utils/dpop-utils.js.map +1 -0
  486. package/dist/server/utils/env-utils.js +107 -0
  487. package/dist/server/utils/env-utils.js.map +1 -0
  488. package/dist/server/utils/jwk-utils.d.ts +16 -0
  489. package/dist/server/utils/jwk-utils.js +24 -0
  490. package/dist/server/utils/jwk-utils.js.map +1 -0
  491. package/dist/server/utils/jwt-utils.d.ts +39 -0
  492. package/dist/server/utils/jwt-utils.js +87 -0
  493. package/dist/server/utils/jwt-utils.js.map +1 -0
  494. package/package.json +3 -3
  495. package/src/browser/app-connect-controller/connect-start.ts +1 -2
  496. package/src/server/hono/hubspot-connect-routes/load-hubspot-connect-routes-env.test.ts +17 -24
  497. package/src/server/hono/hubspot-connect-routes/load-hubspot-connect-routes-env.ts +8 -8
  498. package/src/server/proxy.test.ts +1 -1
  499. package/src/server/proxy.ts +4 -4
  500. package/src/server/secure-start-core.ts +7 -6
  501. package/src/server/types.ts +2 -2
  502. package/src/server/utils/env-utils.test.ts +140 -12
  503. package/src/server/utils/env-utils.ts +80 -6
  504. package/tsdown.config.ts +1 -1
  505. package/dist/browser/create-hzqjIhmO.js.map +0 -1
  506. package/dist/server/api-client.js.map +0 -1
  507. package/dist/server/binary-data-BOalJzKu.js.map +0 -1
  508. package/dist/server/lovable.js.map +0 -1
  509. package/dist/server/sha256-B7y8GBFB.js +0 -228
  510. package/dist/server/sha256-B7y8GBFB.js.map +0 -1
@@ -1,128 +1,6 @@
1
- import { r as JwkSet } from "./types-5gfN91Fq.js";
2
-
3
- //#region src/server/utils/jwk-utils.d.ts
4
- interface GetJwkThumbprintOptions {
5
- /** EC P-256 public JWK whose thumbprint to compute. */
6
- publicKeyJwk: JsonWebKey;
7
- }
8
- /**
9
- * Computes the RFC 7638 JWK thumbprint of an EC P-256 public JWK.
10
- * Per §3.2 the canonical form contains only `crv`, `kty`, `x`, `y`,
11
- * sorted lexicographically — no whitespace, no other members. The
12
- * SHA-256 of this canonical UTF-8 JSON, base64url-encoded, is the
13
- * stable identifier (`jkt`) DPoP uses to bind tokens to public keys.
14
- */
15
- declare function getJwkThumbprint(options: GetJwkThumbprintOptions): Promise<string>;
16
- //#endregion
17
- //#region src/server/utils/dpop-utils.d.ts
18
- /**
19
- * Claims that go into a DPoP proof JWT (RFC 9449 §4.2). Extra
20
- * properties pass through to the encoder unchanged so callers can
21
- * include implementation-specific claims.
22
- */
23
- interface DpopClaims {
24
- /** HTTP method of the protected request, uppercase. */
25
- htm: string;
26
- /** Target URI of the protected request, fully-qualified. */
27
- htu: string;
28
- /** Unique proof identifier (RFC 9449 §4.2, recommended UUID). */
29
- jti: string;
30
- /** Issuance time, Unix epoch seconds. */
31
- iat: number;
32
- /**
33
- * Hash of the access token presented alongside this proof, if any
34
- * (RFC 9449 §4.2). Required for resource-server DPoP.
35
- */
36
- ath?: string;
37
- /**
38
- * App session ID hash. Custom HubSpot extension that lets the auth
39
- * server bind tokens to the browser session that minted them.
40
- */
41
- sid?: string;
42
- [key: string]: unknown;
43
- }
44
- /**
45
- * Result of a successful {@link verifyDpopProof} call.
46
- */
47
- interface VerifiedDpopProof {
48
- /** Public JWK extracted from the proof's header. */
49
- publicKeyJwk: JsonWebKey;
50
- /** RFC 7638 JWK thumbprint of `publicKeyJwk`. */
51
- jkt: string;
52
- /** Decoded claims from the proof's payload. */
53
- claims: DpopClaims;
54
- }
55
- interface VerifyDpopProofOptions {
56
- /** The compact-serialized DPoP proof. */
57
- proof: string;
58
- /** Expected HTTP method (RFC 9449 `htm` claim). */
59
- htm: string;
60
- /** Expected request URI (RFC 9449 `htu` claim). */
61
- htu: string;
62
- /** Expected access-token hash (RFC 9449 `ath` claim). */
63
- ath?: string;
64
- /** Expected app-session-ID hash (`sid` claim). */
65
- sid?: string;
66
- }
67
- /**
68
- * Verifies a DPoP proof JWT and returns the embedded public JWK,
69
- * its thumbprint, and the decoded claims.
70
- *
71
- * Enforces RFC 9449's required checks:
72
- *
73
- * - `typ=dpop+jwt`, `alg=ES256`, and a JWK in the header.
74
- * - Signature is valid against the embedded JWK.
75
- * - `htm`, `htu`, and (when supplied) `ath`/`sid` match.
76
- * - `iat` is within ±5 minutes of "now".
77
- *
78
- * @throws {Error} If any of the above checks fail.
79
- */
80
- declare function verifyDpopProof(options: VerifyDpopProofOptions): Promise<VerifiedDpopProof>;
81
- //#endregion
82
- //#region src/server/utils/jwt-utils.d.ts
83
- interface VerifyJwtOptions {
84
- /** Compact-serialized JWT to verify. */
85
- token: string;
86
- /** Public key in JWK form. Caller is responsible for trusting it. */
87
- publicKeyJwk: JsonWebKey;
88
- }
89
- /**
90
- * Verifies signature and (if present) `exp` (RFC 7519 §4.1.4) on a
91
- * JWT and returns its payload.
92
- *
93
- * @throws {Error} When the signature fails or when `exp` has passed.
94
- */
95
- declare function verifyJwt(options: VerifyJwtOptions): Promise<Record<string, unknown>>;
96
- interface SignJwtOptions {
97
- /** ES256 private key as a non-extractable WebCrypto key. */
98
- privateKey: CryptoKey;
99
- /**
100
- * Custom claims merged onto an `iat` claim (and `exp` when
101
- * `ttlSeconds` is supplied). Caller-provided keys override the
102
- * standard ones.
103
- */
104
- payload: Record<string, unknown>;
105
- /**
106
- * Lifetime of the token in seconds. When set, the JWT's `exp` claim
107
- * is computed as `iat + ttlSeconds`. When omitted, no `exp` is added
108
- * (the caller is responsible for one if needed).
109
- */
110
- ttlSeconds?: number;
111
- }
112
- /**
113
- * Signs a JWT (RFC 7519) with `alg=ES256, typ=JWT` and returns the
114
- * compact serialization. Always sets `iat` to the current second; the
115
- * caller controls every other claim via `payload`.
116
- */
117
- declare function signJwt(options: SignJwtOptions): Promise<string>;
118
- //#endregion
119
- //#region src/shared/encoding/sha256.d.ts
120
- /**
121
- * Hashes a UTF-8 string with SHA-256 and encodes the digest as
122
- * base64url. Used to compute DPoP `ath`/`sid` claims, JWK thumbprints
123
- * (RFC 7638), and PKCE code challenges.
124
- */
125
- declare function sha256base64url(input: string): Promise<string>;
126
- //#endregion
127
- export { type JwkSet, getJwkThumbprint, sha256base64url, signJwt, verifyDpopProof, verifyJwt };
128
- //# sourceMappingURL=oauth.d.ts.map
1
+ import { JwkSet } from "./types.js";
2
+ import { getJwkThumbprint } from "./utils/jwk-utils.js";
3
+ import { verifyDpopProof } from "./utils/dpop-utils.js";
4
+ import { signJwt, verifyJwt } from "./utils/jwt-utils.js";
5
+ import { sha256base64url } from "./shared/encoding/sha256.js";
6
+ export { type JwkSet, getJwkThumbprint, sha256base64url, signJwt, verifyDpopProof, verifyJwt };
@@ -1,2 +1,5 @@
1
- import { a as verifyJwt, i as signJwt, o as getJwkThumbprint, r as verifyDpopProof, t as sha256base64url } from "./sha256-B7y8GBFB.js";
1
+ import { getJwkThumbprint } from "./utils/jwk-utils.js";
2
+ import { signJwt, verifyJwt } from "./utils/jwt-utils.js";
3
+ import { verifyDpopProof } from "./utils/dpop-utils.js";
4
+ import { sha256base64url } from "./shared/encoding/sha256.js";
2
5
  export { getJwkThumbprint, sha256base64url, signJwt, verifyDpopProof, verifyJwt };
@@ -0,0 +1,68 @@
1
+ import { signDpopProof } from "./utils/dpop-utils.js";
2
+ import { sha256base64url } from "./shared/encoding/sha256.js";
3
+ import { getHubSpotApiOrigin, isHubspotDpopEnabled } from "./utils/env-utils.js";
4
+ import { noopLogger } from "./shared/logger.js";
5
+ //#region src/server/proxy.ts
6
+ const hubSpotApiOrigin = getHubSpotApiOrigin();
7
+ const notAuthenticated = {
8
+ authenticated: false,
9
+ fetch: async () => {
10
+ return new Response(null, {
11
+ status: 401,
12
+ statusText: "Unauthorized",
13
+ headers: { "Content-Type": "application/json" }
14
+ });
15
+ }
16
+ };
17
+ const EMPTY_HEADERS = {};
18
+ function createHubSpotProxy(options) {
19
+ const { userCredentials, appKeys, logger = noopLogger } = options;
20
+ if (isHubspotDpopEnabled() && appKeys === null) throw new Error("createHubSpotProxy: appKeys is required when HUBSPOT_DPOP_ENABLED is true");
21
+ const { accessToken, sessionId } = userCredentials;
22
+ if (!accessToken || !sessionId) {
23
+ logger.debug("createHubSpotProxy: returning unauthenticated proxy (missing cookies)");
24
+ return notAuthenticated;
25
+ }
26
+ async function proxyFetch(request) {
27
+ const { path, method = "GET", headers = EMPTY_HEADERS, body } = request;
28
+ const targetUrl = `${hubSpotApiOrigin}${path}`;
29
+ const useDpop = isHubspotDpopEnabled();
30
+ let authorizationHeaders;
31
+ if (useDpop) {
32
+ const ath = await sha256base64url(accessToken);
33
+ const sid = await sha256base64url(sessionId);
34
+ const dpopProof = await signDpopProof({
35
+ appKeys,
36
+ claims: {
37
+ htm: method,
38
+ htu: targetUrl,
39
+ jti: crypto.randomUUID(),
40
+ iat: Math.floor(Date.now() / 1e3),
41
+ ath,
42
+ sid
43
+ }
44
+ });
45
+ authorizationHeaders = {
46
+ Authorization: `DPoP ${accessToken}`,
47
+ DPoP: dpopProof
48
+ };
49
+ } else authorizationHeaders = { Authorization: `Bearer ${accessToken}` };
50
+ const requestInit = {
51
+ headers: {
52
+ ...headers,
53
+ ...authorizationHeaders
54
+ },
55
+ method
56
+ };
57
+ if (body != null) requestInit.body = body;
58
+ return fetch(targetUrl, requestInit);
59
+ }
60
+ return {
61
+ authenticated: true,
62
+ fetch: proxyFetch
63
+ };
64
+ }
65
+ //#endregion
66
+ export { createHubSpotProxy };
67
+
68
+ //# sourceMappingURL=proxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy.js","names":[],"sources":["../../src/server/proxy.ts"],"sourcesContent":["import { noopLogger, type Logger } from '../shared/logger.ts';\nimport {\n type AppKeys,\n type HubSpotProxy,\n type HubSpotProxyRequest,\n type UserCredentials,\n} from './types.ts';\nimport { sha256base64url } from './utils/crypto-utils.ts';\nimport { signDpopProof } from './utils/dpop-utils.ts';\nimport { getHubSpotApiOrigin, isHubspotDpopEnabled } from './utils/env-utils.ts';\n\nconst hubSpotApiOrigin = getHubSpotApiOrigin();\n\n/**\n * Options accepted by {@link createHubSpotProxy}.\n */\nexport interface CreateHubSpotProxyOptions {\n /**\n * User session context from the incoming browser request.\n */\n userCredentials: UserCredentials;\n\n /**\n * Imported app keys from `secureStart`, or `null` when CIMD and DPoP\n * are both disabled.\n */\n appKeys: AppKeys | null;\n /** Optional logger. Defaults to a no-op logger. */\n logger?: Logger;\n}\n\nconst notAuthenticated: HubSpotProxy = {\n authenticated: false,\n fetch: async (): Promise<Response> => {\n return new Response(null, {\n status: 401,\n statusText: 'Unauthorized',\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n },\n};\n\nconst EMPTY_HEADERS = {};\n\nexport function createHubSpotProxy(\n options: CreateHubSpotProxyOptions\n): HubSpotProxy {\n const { userCredentials, appKeys, logger = noopLogger } = options;\n\n if (isHubspotDpopEnabled() && appKeys === null) {\n throw new Error(\n 'createHubSpotProxy: appKeys is required when HUBSPOT_DPOP_ENABLED is true'\n );\n }\n\n const { accessToken, sessionId } = userCredentials;\n\n if (!accessToken || !sessionId) {\n logger.debug(\n 'createHubSpotProxy: returning unauthenticated proxy (missing cookies)'\n );\n return notAuthenticated;\n }\n\n async function proxyFetch(request: HubSpotProxyRequest): Promise<Response> {\n const { path, method = 'GET', headers = EMPTY_HEADERS, body } = request;\n\n const targetUrl = `${hubSpotApiOrigin}${path}`;\n const useDpop = isHubspotDpopEnabled();\n\n let authorizationHeaders: Record<string, string>;\n if (useDpop) {\n const ath = await sha256base64url(accessToken!);\n const sid = await sha256base64url(sessionId!);\n const dpopProof = await signDpopProof({\n appKeys: appKeys!,\n claims: {\n htm: method,\n htu: targetUrl,\n jti: crypto.randomUUID(),\n iat: Math.floor(Date.now() / 1000),\n ath,\n sid,\n },\n });\n authorizationHeaders = {\n Authorization: `DPoP ${accessToken}`,\n DPoP: dpopProof,\n };\n } else {\n authorizationHeaders = {\n Authorization: `Bearer ${accessToken}`,\n };\n }\n\n const finalHeaders = { ...headers, ...authorizationHeaders };\n\n const requestInit: RequestInit = {\n headers: finalHeaders,\n method,\n };\n\n if (body != null) {\n requestInit.body = body;\n }\n\n return fetch(targetUrl, requestInit);\n }\n\n return {\n authenticated: true,\n fetch: proxyFetch,\n };\n}\n"],"mappings":";;;;;AAWA,MAAM,mBAAmB,qBAAqB;AAoB9C,MAAM,mBAAiC;CACrC,eAAe;CACf,OAAO,YAA+B;EACpC,OAAO,IAAI,SAAS,MAAM;GACxB,QAAQ;GACR,YAAY;GACZ,SAAS,EACP,gBAAgB,oBACjB;GACF,CAAC;;CAEL;AAED,MAAM,gBAAgB,EAAE;AAExB,SAAgB,mBACd,SACc;CACd,MAAM,EAAE,iBAAiB,SAAS,SAAS,eAAe;CAE1D,IAAI,sBAAsB,IAAI,YAAY,MACxC,MAAM,IAAI,MACR,4EACD;CAGH,MAAM,EAAE,aAAa,cAAc;CAEnC,IAAI,CAAC,eAAe,CAAC,WAAW;EAC9B,OAAO,MACL,wEACD;EACD,OAAO;;CAGT,eAAe,WAAW,SAAiD;EACzE,MAAM,EAAE,MAAM,SAAS,OAAO,UAAU,eAAe,SAAS;EAEhE,MAAM,YAAY,GAAG,mBAAmB;EACxC,MAAM,UAAU,sBAAsB;EAEtC,IAAI;EACJ,IAAI,SAAS;GACX,MAAM,MAAM,MAAM,gBAAgB,YAAa;GAC/C,MAAM,MAAM,MAAM,gBAAgB,UAAW;GAC7C,MAAM,YAAY,MAAM,cAAc;IAC3B;IACT,QAAQ;KACN,KAAK;KACL,KAAK;KACL,KAAK,OAAO,YAAY;KACxB,KAAK,KAAK,MAAM,KAAK,KAAK,GAAG,IAAK;KAClC;KACA;KACD;IACF,CAAC;GACF,uBAAuB;IACrB,eAAe,QAAQ;IACvB,MAAM;IACP;SAED,uBAAuB,EACrB,eAAe,UAAU,eAC1B;EAKH,MAAM,cAA2B;GAC/B,SAAS;IAHY,GAAG;IAAS,GAAG;IAGf;GACrB;GACD;EAED,IAAI,QAAQ,MACV,YAAY,OAAO;EAGrB,OAAO,MAAM,WAAW,YAAY;;CAGtC,OAAO;EACL,eAAe;EACf,OAAO;EACR"}
@@ -0,0 +1,55 @@
1
+ import { isProtectedCookieName } from "./constants.js";
2
+ import { parseCookies } from "./utils/cookie-utils.js";
3
+ //#region src/server/sanitize-request.ts
4
+ function serializeCookies(cookies) {
5
+ const parts = [];
6
+ for (const [name, value] of cookies) parts.push(`${name}=${value}`);
7
+ return parts.join("; ");
8
+ }
9
+ /**
10
+ * Mutates `headers` in place: parses the `Cookie` header, drops every
11
+ * protected cookie (see {@link isProtectedCookieName}), and rewrites
12
+ * the header. Deletes the header entirely when nothing survives.
13
+ *
14
+ * Used by the SDK's auth middleware after it has read the access
15
+ * token / session ID, so user route handlers never see — and
16
+ * therefore cannot leak — those cookies, while CORS / auth
17
+ * middleware that ran first still got the raw values.
18
+ */
19
+ function stripProtectedCookies(headers) {
20
+ const cookies = parseCookies(headers.get("Cookie"));
21
+ const surviving = /* @__PURE__ */ new Map();
22
+ for (const [name, value] of Object.entries(cookies)) if (!isProtectedCookieName(name)) surviving.set(name, value);
23
+ if (surviving.size === 0) headers.delete("cookie");
24
+ else headers.set("cookie", serializeCookies(surviving));
25
+ }
26
+ /**
27
+ * Returns a clone of `original` whose `Cookie` header has every
28
+ * protected cookie removed (see {@link isProtectedCookieName}). When
29
+ * no other cookies remain, the header is dropped entirely.
30
+ *
31
+ * Standalone helper retained for callers that want a new Request
32
+ * (e.g. tests). Inside the SDK's per-request handler, the auth
33
+ * middleware uses {@link stripProtectedCookies} directly on
34
+ * `c.req.raw.headers` so the auth check itself can still read the
35
+ * protected cookies before they are stripped.
36
+ */
37
+ function sanitizeRequest(original) {
38
+ const headers = new Headers(original.headers);
39
+ stripProtectedCookies(headers);
40
+ const init = {
41
+ method: original.method,
42
+ headers,
43
+ redirect: original.redirect,
44
+ signal: original.signal
45
+ };
46
+ if (original.body !== null) {
47
+ init.body = original.body;
48
+ init.duplex = "half";
49
+ }
50
+ return new Request(original.url, init);
51
+ }
52
+ //#endregion
53
+ export { sanitizeRequest };
54
+
55
+ //# sourceMappingURL=sanitize-request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sanitize-request.js","names":[],"sources":["../../src/server/sanitize-request.ts"],"sourcesContent":["import { isProtectedCookieName } from './constants.ts';\nimport { parseCookies } from './utils/cookie-utils.ts';\n\nfunction serializeCookies(cookies: Map<string, string>): string {\n const parts: string[] = [];\n for (const [name, value] of cookies) {\n parts.push(`${name}=${value}`);\n }\n return parts.join('; ');\n}\n\n/**\n * Mutates `headers` in place: parses the `Cookie` header, drops every\n * protected cookie (see {@link isProtectedCookieName}), and rewrites\n * the header. Deletes the header entirely when nothing survives.\n *\n * Used by the SDK's auth middleware after it has read the access\n * token / session ID, so user route handlers never see — and\n * therefore cannot leak — those cookies, while CORS / auth\n * middleware that ran first still got the raw values.\n */\nexport function stripProtectedCookies(headers: Headers): void {\n const cookies = parseCookies(headers.get('Cookie'));\n const surviving = new Map<string, string>();\n for (const [name, value] of Object.entries(cookies)) {\n if (!isProtectedCookieName(name)) {\n surviving.set(name, value);\n }\n }\n\n if (surviving.size === 0) {\n headers.delete('cookie');\n } else {\n headers.set('cookie', serializeCookies(surviving));\n }\n}\n\n/**\n * Returns a clone of `original` whose `Cookie` header has every\n * protected cookie removed (see {@link isProtectedCookieName}). When\n * no other cookies remain, the header is dropped entirely.\n *\n * Standalone helper retained for callers that want a new Request\n * (e.g. tests). Inside the SDK's per-request handler, the auth\n * middleware uses {@link stripProtectedCookies} directly on\n * `c.req.raw.headers` so the auth check itself can still read the\n * protected cookies before they are stripped.\n */\nexport function sanitizeRequest(original: Request): Request {\n const headers = new Headers(original.headers);\n stripProtectedCookies(headers);\n\n const init: RequestInit = {\n method: original.method,\n headers,\n redirect: original.redirect,\n signal: original.signal,\n };\n\n if (original.body !== null) {\n init.body = original.body;\n (init as RequestInit & { duplex: 'half' }).duplex = 'half';\n }\n\n return new Request(original.url, init);\n}\n"],"mappings":";;;AAGA,SAAS,iBAAiB,SAAsC;CAC9D,MAAM,QAAkB,EAAE;CAC1B,KAAK,MAAM,CAAC,MAAM,UAAU,SAC1B,MAAM,KAAK,GAAG,KAAK,GAAG,QAAQ;CAEhC,OAAO,MAAM,KAAK,KAAK;;;;;;;;;;;;AAazB,SAAgB,sBAAsB,SAAwB;CAC5D,MAAM,UAAU,aAAa,QAAQ,IAAI,SAAS,CAAC;CACnD,MAAM,4BAAY,IAAI,KAAqB;CAC3C,KAAK,MAAM,CAAC,MAAM,UAAU,OAAO,QAAQ,QAAQ,EACjD,IAAI,CAAC,sBAAsB,KAAK,EAC9B,UAAU,IAAI,MAAM,MAAM;CAI9B,IAAI,UAAU,SAAS,GACrB,QAAQ,OAAO,SAAS;MAExB,QAAQ,IAAI,UAAU,iBAAiB,UAAU,CAAC;;;;;;;;;;;;;AAetD,SAAgB,gBAAgB,UAA4B;CAC1D,MAAM,UAAU,IAAI,QAAQ,SAAS,QAAQ;CAC7C,sBAAsB,QAAQ;CAE9B,MAAM,OAAoB;EACxB,QAAQ,SAAS;EACjB;EACA,UAAU,SAAS;EACnB,QAAQ,SAAS;EAClB;CAED,IAAI,SAAS,SAAS,MAAM;EAC1B,KAAK,OAAO,SAAS;EACrB,KAA2C,SAAS;;CAGtD,OAAO,IAAI,QAAQ,SAAS,KAAK,KAAK"}
@@ -0,0 +1,23 @@
1
+ import { AppKeys } from "./types.js";
2
+
3
+ //#region src/server/secure-start-core.d.ts
4
+ /**
5
+ * Context passed to a function-style entrypoint loaded by `runSecureStart`.
6
+ * Contains imported `AppKeys` when CIMD or DPoP is enabled; otherwise
7
+ * `null` (traditional OAuth with `client_secret` and Bearer API calls).
8
+ */
9
+ interface SecureStartContext {
10
+ appKeys: AppKeys | null;
11
+ }
12
+ interface SecureEntryPointExports {
13
+ start: (context: SecureStartContext) => Promise<void>;
14
+ }
15
+ /**
16
+ * Loader returned to `runSecureStart` that produces the entrypoint
17
+ * module. Always pass an `() => import('...')` arrow so the bundler
18
+ * preserves dynamic-import semantics.
19
+ */
20
+ type SecureStartLoader = () => Promise<SecureEntryPointExports>;
21
+ //#endregion
22
+ export { SecureStartContext, SecureStartLoader };
23
+ //# sourceMappingURL=secure-start-core.d.ts.map
@@ -0,0 +1,27 @@
1
+ import { importAppKeys } from "./import-app-keys.js";
2
+ import { HUBSPOT_APP_PRIVATE_KEY_ENV, isHubspotAppPrivateKeyRequired } from "./utils/env-utils.js";
3
+ //#region src/server/secure-start-core.ts
4
+ /**
5
+ * Loads `HUBSPOT_APP_PRIVATE_KEY` when CIMD or DPoP is enabled, deletes
6
+ * it from the environment so later code cannot re-read it, imports the
7
+ * entrypoint module via `loader`, and invokes `start` with `AppKeys` or
8
+ * `null` when both features are off. On failure, logs the error and
9
+ * exits with code 1.
10
+ */
11
+ async function runSecureStart(loader, adapter) {
12
+ let appKeys = null;
13
+ if (isHubspotAppPrivateKeyRequired()) {
14
+ const envKey = adapter.readEnv(HUBSPOT_APP_PRIVATE_KEY_ENV)?.trim();
15
+ if (!envKey) throw new Error(`${HUBSPOT_APP_PRIVATE_KEY_ENV} is not set`);
16
+ appKeys = await importAppKeys(envKey);
17
+ adapter.deleteEnv(HUBSPOT_APP_PRIVATE_KEY_ENV);
18
+ }
19
+ return (await loader()).start({ appKeys }).catch((error) => {
20
+ console.error(error);
21
+ return adapter.exit(1);
22
+ });
23
+ }
24
+ //#endregion
25
+ export { runSecureStart };
26
+
27
+ //# sourceMappingURL=secure-start-core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secure-start-core.js","names":[],"sources":["../../src/server/secure-start-core.ts"],"sourcesContent":["import { importAppKeys } from './import-app-keys.ts';\nimport type { AppKeys } from './types.ts';\nimport {\n HUBSPOT_APP_PRIVATE_KEY_ENV,\n isHubspotAppPrivateKeyRequired,\n} from './utils/env-utils.ts';\n\n/**\n * Context passed to a function-style entrypoint loaded by `runSecureStart`.\n * Contains imported `AppKeys` when CIMD or DPoP is enabled; otherwise\n * `null` (traditional OAuth with `client_secret` and Bearer API calls).\n */\nexport interface SecureStartContext {\n appKeys: AppKeys | null;\n}\n\ninterface SecureEntryPointExports {\n start: (context: SecureStartContext) => Promise<void>;\n}\n\n/**\n * Loader returned to `runSecureStart` that produces the entrypoint\n * module. Always pass an `() => import('...')` arrow so the bundler\n * preserves dynamic-import semantics.\n */\nexport type SecureStartLoader = () => Promise<SecureEntryPointExports>;\n\n/**\n * Platform adapters injected by the runtime-specific shim\n * (`node/start.ts` or `deno/start.ts`). Keeping the env/exit/delete\n * functions out of the core lets the shared logic stay platform-free.\n */\nexport interface SecureStartAdapter {\n /** Reads the named env var, or returns `undefined` when unset. */\n readEnv: (key: string) => string | undefined;\n /** Removes the named env var so child processes cannot read it. */\n deleteEnv: (key: string) => void;\n /** Terminates the process with the given exit code. */\n exit: (code: number) => never;\n}\n\n/**\n * Loads `HUBSPOT_APP_PRIVATE_KEY` when CIMD or DPoP is enabled, deletes\n * it from the environment so later code cannot re-read it, imports the\n * entrypoint module via `loader`, and invokes `start` with `AppKeys` or\n * `null` when both features are off. On failure, logs the error and\n * exits with code 1.\n */\nexport async function runSecureStart(\n loader: SecureStartLoader,\n adapter: SecureStartAdapter\n): Promise<void> {\n let appKeys: AppKeys | null = null;\n if (isHubspotAppPrivateKeyRequired()) {\n const envKey = adapter.readEnv(HUBSPOT_APP_PRIVATE_KEY_ENV)?.trim();\n if (!envKey) {\n throw new Error(`${HUBSPOT_APP_PRIVATE_KEY_ENV} is not set`);\n }\n appKeys = await importAppKeys(envKey);\n adapter.deleteEnv(HUBSPOT_APP_PRIVATE_KEY_ENV);\n }\n\n const exports = await loader();\n return exports.start({ appKeys }).catch((error) => {\n console.error(error);\n return adapter.exit(1);\n });\n}\n"],"mappings":";;;;;;;;;;AAgDA,eAAsB,eACpB,QACA,SACe;CACf,IAAI,UAA0B;CAC9B,IAAI,gCAAgC,EAAE;EACpC,MAAM,SAAS,QAAQ,QAAQ,4BAA4B,EAAE,MAAM;EACnE,IAAI,CAAC,QACH,MAAM,IAAI,MAAM,GAAG,4BAA4B,aAAa;EAE9D,UAAU,MAAM,cAAc,OAAO;EACrC,QAAQ,UAAU,4BAA4B;;CAIhD,QAAO,MADe,QAAQ,EACf,MAAM,EAAE,SAAS,CAAC,CAAC,OAAO,UAAU;EACjD,QAAQ,MAAM,MAAM;EACpB,OAAO,QAAQ,KAAK,EAAE;GACtB"}
@@ -0,0 +1,30 @@
1
+ //#region src/shared/constants.ts
2
+ /**
3
+ * Path the browser visits after HubSpot's authorize endpoint
4
+ * redirects back to the app. Mounted on the **frontend** origin (not
5
+ * the SDK's edge function host) so all OAuth-related cookies live in
6
+ * the `(frontend, edge)` CHIPS partition.
7
+ *
8
+ * The SDK's `auth/init-session` builds the OAuth `redirect_uri` as
9
+ * `${requestOrigin}${HUBSPOT_FRONTEND_CALLBACK_PATH}`. The browser
10
+ * controller, on `start()`, recognizes this path on `window.location`
11
+ * and forwards `?code` + `?state` to the SDK's `auth/complete`
12
+ * endpoint via a credentialed cross-site fetch. The host app must
13
+ * register `${app_origin}${HUBSPOT_FRONTEND_CALLBACK_PATH}` as a
14
+ * redirect URI in its HubSpot app settings.
15
+ */
16
+ const HUBSPOT_FRONTEND_CALLBACK_PATH = "/__hubspot_oauth_callback";
17
+ /**
18
+ * Query parameter on the `auth/complete` POST request carrying the
19
+ * authorization `code` HubSpot returned to the frontend callback.
20
+ */
21
+ const AUTH_COMPLETE_CODE_PARAM = "code";
22
+ /**
23
+ * Query parameter on the `auth/complete` POST request carrying the
24
+ * OAuth `state` HubSpot echoed back to the frontend callback.
25
+ */
26
+ const AUTH_COMPLETE_STATE_PARAM = "state";
27
+ //#endregion
28
+ export { AUTH_COMPLETE_CODE_PARAM, AUTH_COMPLETE_STATE_PARAM, HUBSPOT_FRONTEND_CALLBACK_PATH };
29
+
30
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","names":[],"sources":["../../../src/shared/constants.ts"],"sourcesContent":["/**\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 browser controller\n * sets this in the URL after a successful `auth/complete` call and\n * then strips it during `initAppConnect` via `history.replaceState`.\n */\nexport const EXPIRES_AT_URL_PARAM = '__hs_expires_at';\n\n/**\n * Path the browser visits after HubSpot's authorize endpoint\n * redirects back to the app. Mounted on the **frontend** origin (not\n * the SDK's edge function host) so all OAuth-related cookies live in\n * the `(frontend, edge)` CHIPS partition.\n *\n * The SDK's `auth/init-session` builds the OAuth `redirect_uri` as\n * `${requestOrigin}${HUBSPOT_FRONTEND_CALLBACK_PATH}`. The browser\n * controller, on `start()`, recognizes this path on `window.location`\n * and forwards `?code` + `?state` to the SDK's `auth/complete`\n * endpoint via a credentialed cross-site fetch. The host app must\n * register `${app_origin}${HUBSPOT_FRONTEND_CALLBACK_PATH}` as a\n * redirect URI in its HubSpot app settings.\n */\nexport const HUBSPOT_FRONTEND_CALLBACK_PATH = '/__hubspot_oauth_callback';\n\n/**\n * Query parameter on the `auth/complete` POST request carrying the\n * authorization `code` HubSpot returned to the frontend callback.\n */\nexport const AUTH_COMPLETE_CODE_PARAM = 'code';\n\n/**\n * Query parameter on the `auth/complete` POST request carrying the\n * OAuth `state` HubSpot echoed back to the frontend callback.\n */\nexport const AUTH_COMPLETE_STATE_PARAM = 'state';\n"],"mappings":";;;;;;;;;;;;;;;AA4BA,MAAa,iCAAiC;;;;;AAM9C,MAAa,2BAA2B;;;;;AAMxC,MAAa,4BAA4B"}
@@ -0,0 +1,45 @@
1
+ //#region src/shared/encoding/base64.ts
2
+ /**
3
+ * Base64url encoding and decoding helpers shared by the browser and
4
+ * server halves of `@hubspot/app-connect-sdk`.
5
+ *
6
+ * Base64url (RFC 4648 §5) replaces `+`/`/` with `-`/`_` and drops `=`
7
+ * padding. JWT, DPoP, and JWK thumbprints all use this variant.
8
+ */
9
+ /**
10
+ * Encodes a binary buffer as a base64url string (RFC 4648 §5).
11
+ */
12
+ function base64url(input) {
13
+ const bytes = input instanceof Uint8Array ? input : new Uint8Array(input);
14
+ let binary = "";
15
+ for (const byte of bytes) binary += String.fromCharCode(byte);
16
+ return btoa(binary).replace(/\+/g, "-").replace(/\//g, "_").replace(/=/g, "");
17
+ }
18
+ /**
19
+ * Decodes a base64url string into a `Uint8Array`. Tolerates missing
20
+ * padding by re-adding it before delegating to `atob`.
21
+ */
22
+ function base64urlDecode(encoded) {
23
+ const padLen = (4 - encoded.length % 4) % 4;
24
+ const padded = encoded.replace(/-/g, "+").replace(/_/g, "/") + "=".repeat(padLen);
25
+ const binary = atob(padded);
26
+ const out = new Uint8Array(new ArrayBuffer(binary.length));
27
+ for (let i = 0; i < binary.length; i++) out[i] = binary.charCodeAt(i) ?? 0;
28
+ return out;
29
+ }
30
+ /**
31
+ * Decodes a *standard* base64 string (with `+`/`/` and required `=`
32
+ * padding) into an `ArrayBuffer`. Used for PKCS8-encoded private keys
33
+ * stored in environment variables.
34
+ */
35
+ function base64StandardToArrayBuffer(b64) {
36
+ const bin = atob(b64);
37
+ const buf = new ArrayBuffer(bin.length);
38
+ const view = new Uint8Array(buf);
39
+ for (let i = 0; i < bin.length; i++) view[i] = bin.charCodeAt(i) ?? 0;
40
+ return buf;
41
+ }
42
+ //#endregion
43
+ export { base64StandardToArrayBuffer, base64url, base64urlDecode };
44
+
45
+ //# sourceMappingURL=base64.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base64.js","names":[],"sources":["../../../../src/shared/encoding/base64.ts"],"sourcesContent":["/**\n * Base64url encoding and decoding helpers shared by the browser and\n * server halves of `@hubspot/app-connect-sdk`.\n *\n * Base64url (RFC 4648 §5) replaces `+`/`/` with `-`/`_` and drops `=`\n * padding. JWT, DPoP, and JWK thumbprints all use this variant.\n */\n\n/**\n * Encodes a binary buffer as a base64url string (RFC 4648 §5).\n */\nexport function base64url(input: ArrayBuffer | Uint8Array): string {\n const bytes = input instanceof Uint8Array ? input : new Uint8Array(input);\n let binary = '';\n for (const byte of bytes) {\n binary += String.fromCharCode(byte);\n }\n return btoa(binary).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=/g, '');\n}\n\n/**\n * Decodes a base64url string into a `Uint8Array`. Tolerates missing\n * padding by re-adding it before delegating to `atob`.\n */\nexport function base64urlDecode(encoded: string): Uint8Array<ArrayBuffer> {\n const padLen = (4 - (encoded.length % 4)) % 4;\n const padded =\n encoded.replace(/-/g, '+').replace(/_/g, '/') + '='.repeat(padLen);\n const binary = atob(padded);\n const out = new Uint8Array(new ArrayBuffer(binary.length));\n for (let i = 0; i < binary.length; i++) {\n out[i] = binary.charCodeAt(i) ?? 0;\n }\n return out;\n}\n\n/**\n * Decodes a *standard* base64 string (with `+`/`/` and required `=`\n * padding) into an `ArrayBuffer`. Used for PKCS8-encoded private keys\n * stored in environment variables.\n */\nexport function base64StandardToArrayBuffer(b64: string): ArrayBuffer {\n const bin = atob(b64);\n const buf = new ArrayBuffer(bin.length);\n const view = new Uint8Array(buf);\n for (let i = 0; i < bin.length; i++) {\n view[i] = bin.charCodeAt(i) ?? 0;\n }\n return buf;\n}\n"],"mappings":";;;;;;;;;;;AAWA,SAAgB,UAAU,OAAyC;CACjE,MAAM,QAAQ,iBAAiB,aAAa,QAAQ,IAAI,WAAW,MAAM;CACzE,IAAI,SAAS;CACb,KAAK,MAAM,QAAQ,OACjB,UAAU,OAAO,aAAa,KAAK;CAErC,OAAO,KAAK,OAAO,CAAC,QAAQ,OAAO,IAAI,CAAC,QAAQ,OAAO,IAAI,CAAC,QAAQ,MAAM,GAAG;;;;;;AAO/E,SAAgB,gBAAgB,SAA0C;CACxE,MAAM,UAAU,IAAK,QAAQ,SAAS,KAAM;CAC5C,MAAM,SACJ,QAAQ,QAAQ,MAAM,IAAI,CAAC,QAAQ,MAAM,IAAI,GAAG,IAAI,OAAO,OAAO;CACpE,MAAM,SAAS,KAAK,OAAO;CAC3B,MAAM,MAAM,IAAI,WAAW,IAAI,YAAY,OAAO,OAAO,CAAC;CAC1D,KAAK,IAAI,IAAI,GAAG,IAAI,OAAO,QAAQ,KACjC,IAAI,KAAK,OAAO,WAAW,EAAE,IAAI;CAEnC,OAAO;;;;;;;AAQT,SAAgB,4BAA4B,KAA0B;CACpE,MAAM,MAAM,KAAK,IAAI;CACrB,MAAM,MAAM,IAAI,YAAY,IAAI,OAAO;CACvC,MAAM,OAAO,IAAI,WAAW,IAAI;CAChC,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,QAAQ,KAC9B,KAAK,KAAK,IAAI,WAAW,EAAE,IAAI;CAEjC,OAAO"}
@@ -0,0 +1,10 @@
1
+ //#region src/shared/encoding/sha256.d.ts
2
+ /**
3
+ * Hashes a UTF-8 string with SHA-256 and encodes the digest as
4
+ * base64url. Used to compute DPoP `ath`/`sid` claims, JWK thumbprints
5
+ * (RFC 7638), and PKCE code challenges.
6
+ */
7
+ declare function sha256base64url(input: string): Promise<string>;
8
+ //#endregion
9
+ export { sha256base64url };
10
+ //# sourceMappingURL=sha256.d.ts.map
@@ -0,0 +1,15 @@
1
+ import { base64url } from "./base64.js";
2
+ //#region src/shared/encoding/sha256.ts
3
+ /**
4
+ * Hashes a UTF-8 string with SHA-256 and encodes the digest as
5
+ * base64url. Used to compute DPoP `ath`/`sid` claims, JWK thumbprints
6
+ * (RFC 7638), and PKCE code challenges.
7
+ */
8
+ async function sha256base64url(input) {
9
+ const digest = await crypto.subtle.digest("SHA-256", new TextEncoder().encode(input));
10
+ return base64url(new Uint8Array(digest));
11
+ }
12
+ //#endregion
13
+ export { sha256base64url };
14
+
15
+ //# sourceMappingURL=sha256.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sha256.js","names":[],"sources":["../../../../src/shared/encoding/sha256.ts"],"sourcesContent":["import { base64url } from './base64.ts';\n\n/**\n * Hashes a UTF-8 string with SHA-256 and encodes the digest as\n * base64url. Used to compute DPoP `ath`/`sid` claims, JWK thumbprints\n * (RFC 7638), and PKCE code challenges.\n */\nexport async function sha256base64url(input: string): Promise<string> {\n const digest = await crypto.subtle.digest(\n 'SHA-256',\n new TextEncoder().encode(input)\n );\n return base64url(new Uint8Array(digest));\n}\n"],"mappings":";;;;;;;AAOA,eAAsB,gBAAgB,OAAgC;CACpE,MAAM,SAAS,MAAM,OAAO,OAAO,OACjC,WACA,IAAI,aAAa,CAAC,OAAO,MAAM,CAChC;CACD,OAAO,UAAU,IAAI,WAAW,OAAO,CAAC"}
@@ -0,0 +1,15 @@
1
+ //#region src/shared/logger.d.ts
2
+ /**
3
+ * Pluggable logger contract used by the SDK on both the browser and
4
+ * server. Consumers can pass `console`-like loggers, structured
5
+ * loggers (pino / winston / etc.) or no-op stubs in tests.
6
+ */
7
+ interface Logger {
8
+ debug: (message: string, ...args: unknown[]) => void;
9
+ info: (message: string, ...args: unknown[]) => void;
10
+ warn: (message: string, ...args: unknown[]) => void;
11
+ error: (message: string, ...args: unknown[]) => void;
12
+ }
13
+ //#endregion
14
+ export { Logger };
15
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1,16 @@
1
+ //#region src/shared/logger.ts
2
+ /**
3
+ * Logger that swallows every message. Convenient for tests and for
4
+ * the SDK's server-side handlers when no logger is provided by the
5
+ * host application.
6
+ */
7
+ const noopLogger = {
8
+ debug: () => {},
9
+ info: () => {},
10
+ warn: () => {},
11
+ error: () => {}
12
+ };
13
+ //#endregion
14
+ export { noopLogger };
15
+
16
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","names":[],"sources":["../../../src/shared/logger.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"],"mappings":";;;;;;AA4CA,MAAa,aAAqB;CAChC,aAAa;CACb,YAAY;CACZ,YAAY;CACZ,aAAa;CACd"}
@@ -21,8 +21,8 @@ interface HubSpotProxyRequest {
21
21
  method?: string;
22
22
  /**
23
23
  * Extra request headers. The proxy adds `Authorization` itself
24
- * (`DPoP` access token plus `DPoP` proof when `HUBSPOT_DPOP_ENABLED` is
25
- * not `"false"` and `appKeys` is non-null; otherwise `Bearer` only).
24
+ * (`DPoP` access token plus `DPoP` proof when DPoP is enabled and
25
+ * `appKeys` is non-null; otherwise `Bearer` only).
26
26
  */
27
27
  headers?: Record<string, string>;
28
28
  /** Optional request body. Pass `null`/`undefined` for empty bodies. */
@@ -52,5 +52,5 @@ interface JwkSet {
52
52
  keys: JsonWebKey[];
53
53
  }
54
54
  //#endregion
55
- export { HubSpotProxy as n, JwkSet as r, AppKeys as t };
56
- //# sourceMappingURL=types-5gfN91Fq.d.ts.map
55
+ export { AppKeys, HubSpotProxy, JwkSet };
56
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1,21 @@
1
+ //#region src/server/utils/cookie-utils.ts
2
+ /**
3
+ * Parses an HTTP `Cookie` request header into a `name -> value` map.
4
+ * Tolerates leading/trailing whitespace, missing `=` (treats the
5
+ * cookie value as empty), and duplicate names (last write wins).
6
+ *
7
+ * Returns an empty object when `cookieHeader` is `null`/`undefined`
8
+ * /empty so callers don't have to null-check the input.
9
+ */
10
+ function parseCookies(cookieHeader) {
11
+ if (!cookieHeader) return {};
12
+ return Object.fromEntries(cookieHeader.split(";").map((pair) => {
13
+ const eqIdx = pair.indexOf("=");
14
+ if (eqIdx === -1) return [pair.trim(), ""];
15
+ return [pair.slice(0, eqIdx).trim(), pair.slice(eqIdx + 1).trim()];
16
+ }).filter(([name]) => name.length > 0));
17
+ }
18
+ //#endregion
19
+ export { parseCookies };
20
+
21
+ //# sourceMappingURL=cookie-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cookie-utils.js","names":[],"sources":["../../../src/server/utils/cookie-utils.ts"],"sourcesContent":["/**\n * Parses an HTTP `Cookie` request header into a `name -> value` map.\n * Tolerates leading/trailing whitespace, missing `=` (treats the\n * cookie value as empty), and duplicate names (last write wins).\n *\n * Returns an empty object when `cookieHeader` is `null`/`undefined`\n * /empty so callers don't have to null-check the input.\n */\nexport function parseCookies(\n cookieHeader: string | null | undefined\n): Record<string, string> {\n if (!cookieHeader) return {};\n return Object.fromEntries(\n cookieHeader\n .split(';')\n .map((pair) => {\n const eqIdx = pair.indexOf('=');\n if (eqIdx === -1) return [pair.trim(), ''] as [string, string];\n return [pair.slice(0, eqIdx).trim(), pair.slice(eqIdx + 1).trim()] as [\n string,\n string,\n ];\n })\n .filter(([name]) => name.length > 0)\n );\n}\n"],"mappings":";;;;;;;;;AAQA,SAAgB,aACd,cACwB;CACxB,IAAI,CAAC,cAAc,OAAO,EAAE;CAC5B,OAAO,OAAO,YACZ,aACG,MAAM,IAAI,CACV,KAAK,SAAS;EACb,MAAM,QAAQ,KAAK,QAAQ,IAAI;EAC/B,IAAI,UAAU,IAAI,OAAO,CAAC,KAAK,MAAM,EAAE,GAAG;EAC1C,OAAO,CAAC,KAAK,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,MAAM,QAAQ,EAAE,CAAC,MAAM,CAAC;GAIlE,CACD,QAAQ,CAAC,UAAU,KAAK,SAAS,EAAE,CACvC"}
@@ -0,0 +1,67 @@
1
+ //#region src/server/utils/dpop-utils.d.ts
2
+ /**
3
+ * Claims that go into a DPoP proof JWT (RFC 9449 §4.2). Extra
4
+ * properties pass through to the encoder unchanged so callers can
5
+ * include implementation-specific claims.
6
+ */
7
+ interface DpopClaims {
8
+ /** HTTP method of the protected request, uppercase. */
9
+ htm: string;
10
+ /** Target URI of the protected request, fully-qualified. */
11
+ htu: string;
12
+ /** Unique proof identifier (RFC 9449 §4.2, recommended UUID). */
13
+ jti: string;
14
+ /** Issuance time, Unix epoch seconds. */
15
+ iat: number;
16
+ /**
17
+ * Hash of the access token presented alongside this proof, if any
18
+ * (RFC 9449 §4.2). Required for resource-server DPoP.
19
+ */
20
+ ath?: string;
21
+ /**
22
+ * App session ID hash. Custom HubSpot extension that lets the auth
23
+ * server bind tokens to the browser session that minted them.
24
+ */
25
+ sid?: string;
26
+ [key: string]: unknown;
27
+ }
28
+ /**
29
+ * Result of a successful {@link verifyDpopProof} call.
30
+ */
31
+ interface VerifiedDpopProof {
32
+ /** Public JWK extracted from the proof's header. */
33
+ publicKeyJwk: JsonWebKey;
34
+ /** RFC 7638 JWK thumbprint of `publicKeyJwk`. */
35
+ jkt: string;
36
+ /** Decoded claims from the proof's payload. */
37
+ claims: DpopClaims;
38
+ }
39
+ interface VerifyDpopProofOptions {
40
+ /** The compact-serialized DPoP proof. */
41
+ proof: string;
42
+ /** Expected HTTP method (RFC 9449 `htm` claim). */
43
+ htm: string;
44
+ /** Expected request URI (RFC 9449 `htu` claim). */
45
+ htu: string;
46
+ /** Expected access-token hash (RFC 9449 `ath` claim). */
47
+ ath?: string;
48
+ /** Expected app-session-ID hash (`sid` claim). */
49
+ sid?: string;
50
+ }
51
+ /**
52
+ * Verifies a DPoP proof JWT and returns the embedded public JWK,
53
+ * its thumbprint, and the decoded claims.
54
+ *
55
+ * Enforces RFC 9449's required checks:
56
+ *
57
+ * - `typ=dpop+jwt`, `alg=ES256`, and a JWK in the header.
58
+ * - Signature is valid against the embedded JWK.
59
+ * - `htm`, `htu`, and (when supplied) `ath`/`sid` match.
60
+ * - `iat` is within ±5 minutes of "now".
61
+ *
62
+ * @throws {Error} If any of the above checks fail.
63
+ */
64
+ declare function verifyDpopProof(options: VerifyDpopProofOptions): Promise<VerifiedDpopProof>;
65
+ //#endregion
66
+ export { verifyDpopProof };
67
+ //# sourceMappingURL=dpop-utils.d.ts.map