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

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 (504) hide show
  1. package/.turbo/turbo-tsdown.log +20 -492
  2. package/build/tsconfig.browser.tsbuildinfo +1 -1
  3. package/build/tsconfig.server.tsbuildinfo +1 -1
  4. package/dist/browser/{create-crdncXsh.js → create-hzqjIhmO.js} +2 -2
  5. package/dist/browser/create-hzqjIhmO.js.map +1 -0
  6. package/dist/browser/index.js +1 -1
  7. package/dist/browser/react/lovable.js +1 -1
  8. package/dist/server/api-client.d.ts +60625 -197
  9. package/dist/server/api-client.js +5826 -100
  10. package/dist/server/api-client.js.map +1 -0
  11. package/dist/server/{api-client-core/client.js → binary-data-BOalJzKu.js} +58 -3
  12. package/dist/server/binary-data-BOalJzKu.js.map +1 -0
  13. package/dist/server/lovable.d.ts +117 -6
  14. package/dist/server/lovable.js +1458 -3
  15. package/dist/server/lovable.js.map +1 -0
  16. package/dist/server/oauth.d.ts +128 -6
  17. package/dist/server/oauth.js +1 -4
  18. package/dist/server/sha256-B7y8GBFB.js +228 -0
  19. package/dist/server/sha256-B7y8GBFB.js.map +1 -0
  20. package/dist/server/{types.d.ts → types-5gfN91Fq.d.ts} +2 -2
  21. package/dist/server/{api-client-core/types.d.ts → types-DEOUH4wE.d.ts} +2 -2
  22. package/package.json +5 -11
  23. package/src/browser/app-connect-controller/connect-start.ts +2 -1
  24. package/tsdown.config.ts +1 -1
  25. package/.turbo/turbo-format$colon$check.log +0 -4
  26. package/.turbo/turbo-lint.log +0 -2
  27. package/.turbo/turbo-test.log +0 -78
  28. package/dist/browser/create-crdncXsh.js.map +0 -1
  29. package/dist/server/api-client-core/apis/account/account-info-types.generated.d.ts +0 -111
  30. package/dist/server/api-client-core/apis/account/account-info.generated.d.ts +0 -7
  31. package/dist/server/api-client-core/apis/account/account-info.generated.js +0 -9
  32. package/dist/server/api-client-core/apis/account/account-info.generated.js.map +0 -1
  33. package/dist/server/api-client-core/apis/account/audit-logs-types.generated.d.ts +0 -247
  34. package/dist/server/api-client-core/apis/account/audit-logs.generated.d.ts +0 -7
  35. package/dist/server/api-client-core/apis/account/audit-logs.generated.js +0 -28
  36. package/dist/server/api-client-core/apis/account/audit-logs.generated.js.map +0 -1
  37. package/dist/server/api-client-core/apis/auth/oauth-types.generated.d.ts +0 -121
  38. package/dist/server/api-client-core/apis/auth/oauth.generated.d.ts +0 -7
  39. package/dist/server/api-client-core/apis/auth/oauth.generated.js +0 -19
  40. package/dist/server/api-client-core/apis/auth/oauth.generated.js.map +0 -1
  41. package/dist/server/api-client-core/apis/automation/actions-types.generated.d.ts +0 -933
  42. package/dist/server/api-client-core/apis/automation/actions.generated.d.ts +0 -7
  43. package/dist/server/api-client-core/apis/automation/actions.generated.js +0 -121
  44. package/dist/server/api-client-core/apis/automation/actions.generated.js.map +0 -1
  45. package/dist/server/api-client-core/apis/automation/sequences-types.generated.d.ts +0 -422
  46. package/dist/server/api-client-core/apis/automation/sequences.generated.d.ts +0 -7
  47. package/dist/server/api-client-core/apis/automation/sequences.generated.js +0 -22
  48. package/dist/server/api-client-core/apis/automation/sequences.generated.js.map +0 -1
  49. package/dist/server/api-client-core/apis/business-units-types.generated.d.ts +0 -75
  50. package/dist/server/api-client-core/apis/business-units.generated.d.ts +0 -7
  51. package/dist/server/api-client-core/apis/business-units.generated.js +0 -12
  52. package/dist/server/api-client-core/apis/business-units.generated.js.map +0 -1
  53. package/dist/server/api-client-core/apis/cms/authors-types.generated.d.ts +0 -551
  54. package/dist/server/api-client-core/apis/cms/authors.generated.d.ts +0 -7
  55. package/dist/server/api-client-core/apis/cms/authors.generated.js +0 -163
  56. package/dist/server/api-client-core/apis/cms/authors.generated.js.map +0 -1
  57. package/dist/server/api-client-core/apis/cms/blog-settings-types.generated.d.ts +0 -366
  58. package/dist/server/api-client-core/apis/cms/blog-settings.generated.d.ts +0 -7
  59. package/dist/server/api-client-core/apis/cms/blog-settings.generated.js +0 -43
  60. package/dist/server/api-client-core/apis/cms/blog-settings.generated.js.map +0 -1
  61. package/dist/server/api-client-core/apis/cms/cms-content-audit-types.generated.d.ts +0 -157
  62. package/dist/server/api-client-core/apis/cms/cms-content-audit.generated.d.ts +0 -7
  63. package/dist/server/api-client-core/apis/cms/cms-content-audit.generated.js +0 -18
  64. package/dist/server/api-client-core/apis/cms/cms-content-audit.generated.js.map +0 -1
  65. package/dist/server/api-client-core/apis/cms/domains-types.generated.d.ts +0 -193
  66. package/dist/server/api-client-core/apis/cms/domains.generated.d.ts +0 -7
  67. package/dist/server/api-client-core/apis/cms/domains.generated.js +0 -20
  68. package/dist/server/api-client-core/apis/cms/domains.generated.js.map +0 -1
  69. package/dist/server/api-client-core/apis/cms/hubdb-types.generated.d.ts +0 -1097
  70. package/dist/server/api-client-core/apis/cms/hubdb.generated.d.ts +0 -7
  71. package/dist/server/api-client-core/apis/cms/hubdb.generated.js +0 -192
  72. package/dist/server/api-client-core/apis/cms/hubdb.generated.js.map +0 -1
  73. package/dist/server/api-client-core/apis/cms/media-bridge-types.generated.d.ts +0 -1780
  74. package/dist/server/api-client-core/apis/cms/media-bridge.generated.d.ts +0 -7
  75. package/dist/server/api-client-core/apis/cms/media-bridge.generated.js +0 -185
  76. package/dist/server/api-client-core/apis/cms/media-bridge.generated.js.map +0 -1
  77. package/dist/server/api-client-core/apis/cms/pages-types.generated.d.ts +0 -1768
  78. package/dist/server/api-client-core/apis/cms/pages.generated.d.ts +0 -7
  79. package/dist/server/api-client-core/apis/cms/pages.generated.js +0 -331
  80. package/dist/server/api-client-core/apis/cms/pages.generated.js.map +0 -1
  81. package/dist/server/api-client-core/apis/cms/posts-types.generated.d.ts +0 -1090
  82. package/dist/server/api-client-core/apis/cms/posts.generated.d.ts +0 -7
  83. package/dist/server/api-client-core/apis/cms/posts.generated.js +0 -201
  84. package/dist/server/api-client-core/apis/cms/posts.generated.js.map +0 -1
  85. package/dist/server/api-client-core/apis/cms/site-search-types.generated.d.ts +0 -200
  86. package/dist/server/api-client-core/apis/cms/site-search.generated.d.ts +0 -7
  87. package/dist/server/api-client-core/apis/cms/site-search.generated.js +0 -32
  88. package/dist/server/api-client-core/apis/cms/site-search.generated.js.map +0 -1
  89. package/dist/server/api-client-core/apis/cms/source-code-types.generated.d.ts +0 -218
  90. package/dist/server/api-client-core/apis/cms/source-code.generated.d.ts +0 -7
  91. package/dist/server/api-client-core/apis/cms/source-code.generated.js +0 -52
  92. package/dist/server/api-client-core/apis/cms/source-code.generated.js.map +0 -1
  93. package/dist/server/api-client-core/apis/cms/tags-types.generated.d.ts +0 -515
  94. package/dist/server/api-client-core/apis/cms/tags.generated.d.ts +0 -7
  95. package/dist/server/api-client-core/apis/cms/tags.generated.js +0 -163
  96. package/dist/server/api-client-core/apis/cms/tags.generated.js.map +0 -1
  97. package/dist/server/api-client-core/apis/cms/url-mappings-types.generated.d.ts +0 -177
  98. package/dist/server/api-client-core/apis/cms/url-mappings.generated.d.ts +0 -7
  99. package/dist/server/api-client-core/apis/cms/url-mappings.generated.js +0 -14
  100. package/dist/server/api-client-core/apis/cms/url-mappings.generated.js.map +0 -1
  101. package/dist/server/api-client-core/apis/cms/url-redirects-types.generated.d.ts +0 -226
  102. package/dist/server/api-client-core/apis/cms/url-redirects.generated.d.ts +0 -7
  103. package/dist/server/api-client-core/apis/cms/url-redirects.generated.js +0 -26
  104. package/dist/server/api-client-core/apis/cms/url-redirects.generated.js.map +0 -1
  105. package/dist/server/api-client-core/apis/communication-preferences/subscriptions-types.generated.d.ts +0 -802
  106. package/dist/server/api-client-core/apis/communication-preferences/subscriptions.generated.d.ts +0 -7
  107. package/dist/server/api-client-core/apis/communication-preferences/subscriptions.generated.js +0 -74
  108. package/dist/server/api-client-core/apis/communication-preferences/subscriptions.generated.js.map +0 -1
  109. package/dist/server/api-client-core/apis/conversations/custom-channels-types.generated.d.ts +0 -551
  110. package/dist/server/api-client-core/apis/conversations/custom-channels.generated.d.ts +0 -7
  111. package/dist/server/api-client-core/apis/conversations/custom-channels.generated.js +0 -80
  112. package/dist/server/api-client-core/apis/conversations/custom-channels.generated.js.map +0 -1
  113. package/dist/server/api-client-core/apis/conversations/visitor-identification-types.generated.d.ts +0 -60
  114. package/dist/server/api-client-core/apis/conversations/visitor-identification.generated.d.ts +0 -7
  115. package/dist/server/api-client-core/apis/conversations/visitor-identification.generated.js +0 -6
  116. package/dist/server/api-client-core/apis/conversations/visitor-identification.generated.js.map +0 -1
  117. package/dist/server/api-client-core/apis/conversations-types.generated.d.ts +0 -908
  118. package/dist/server/api-client-core/apis/conversations.generated.d.ts +0 -7
  119. package/dist/server/api-client-core/apis/conversations.generated.js +0 -108
  120. package/dist/server/api-client-core/apis/conversations.generated.js.map +0 -1
  121. package/dist/server/api-client-core/apis/crm/app-uninstalls-types.generated.d.ts +0 -37
  122. package/dist/server/api-client-core/apis/crm/app-uninstalls.generated.d.ts +0 -7
  123. package/dist/server/api-client-core/apis/crm/app-uninstalls.generated.js +0 -6
  124. package/dist/server/api-client-core/apis/crm/app-uninstalls.generated.js.map +0 -1
  125. package/dist/server/api-client-core/apis/crm/appointments-types.generated.d.ts +0 -989
  126. package/dist/server/api-client-core/apis/crm/appointments.generated.d.ts +0 -7
  127. package/dist/server/api-client-core/apis/crm/appointments.generated.js +0 -118
  128. package/dist/server/api-client-core/apis/crm/appointments.generated.js.map +0 -1
  129. package/dist/server/api-client-core/apis/crm/associations-schema-types.generated.d.ts +0 -329
  130. package/dist/server/api-client-core/apis/crm/associations-schema.generated.d.ts +0 -7
  131. package/dist/server/api-client-core/apis/crm/associations-schema.generated.js +0 -60
  132. package/dist/server/api-client-core/apis/crm/associations-schema.generated.js.map +0 -1
  133. package/dist/server/api-client-core/apis/crm/associations-types.generated.d.ts +0 -661
  134. package/dist/server/api-client-core/apis/crm/associations.generated.d.ts +0 -7
  135. package/dist/server/api-client-core/apis/crm/associations.generated.js +0 -83
  136. package/dist/server/api-client-core/apis/crm/associations.generated.js.map +0 -1
  137. package/dist/server/api-client-core/apis/crm/calling-extensions-types.generated.d.ts +0 -466
  138. package/dist/server/api-client-core/apis/crm/calling-extensions.generated.d.ts +0 -7
  139. package/dist/server/api-client-core/apis/crm/calling-extensions.generated.js +0 -42
  140. package/dist/server/api-client-core/apis/crm/calling-extensions.generated.js.map +0 -1
  141. package/dist/server/api-client-core/apis/crm/calls-types.generated.d.ts +0 -850
  142. package/dist/server/api-client-core/apis/crm/calls.generated.d.ts +0 -7
  143. package/dist/server/api-client-core/apis/crm/calls.generated.js +0 -66
  144. package/dist/server/api-client-core/apis/crm/calls.generated.js.map +0 -1
  145. package/dist/server/api-client-core/apis/crm/carts-types.generated.d.ts +0 -850
  146. package/dist/server/api-client-core/apis/crm/carts.generated.d.ts +0 -7
  147. package/dist/server/api-client-core/apis/crm/carts.generated.js +0 -66
  148. package/dist/server/api-client-core/apis/crm/carts.generated.js.map +0 -1
  149. package/dist/server/api-client-core/apis/crm/commerce-payments-types.generated.d.ts +0 -850
  150. package/dist/server/api-client-core/apis/crm/commerce-payments.generated.d.ts +0 -7
  151. package/dist/server/api-client-core/apis/crm/commerce-payments.generated.js +0 -66
  152. package/dist/server/api-client-core/apis/crm/commerce-payments.generated.js.map +0 -1
  153. package/dist/server/api-client-core/apis/crm/commerce-subscriptions-types.generated.d.ts +0 -847
  154. package/dist/server/api-client-core/apis/crm/commerce-subscriptions.generated.d.ts +0 -7
  155. package/dist/server/api-client-core/apis/crm/commerce-subscriptions.generated.js +0 -66
  156. package/dist/server/api-client-core/apis/crm/commerce-subscriptions.generated.js.map +0 -1
  157. package/dist/server/api-client-core/apis/crm/communications-types.generated.d.ts +0 -850
  158. package/dist/server/api-client-core/apis/crm/communications.generated.d.ts +0 -7
  159. package/dist/server/api-client-core/apis/crm/communications.generated.js +0 -66
  160. package/dist/server/api-client-core/apis/crm/communications.generated.js.map +0 -1
  161. package/dist/server/api-client-core/apis/crm/companies-types.generated.d.ts +0 -884
  162. package/dist/server/api-client-core/apis/crm/companies.generated.d.ts +0 -7
  163. package/dist/server/api-client-core/apis/crm/companies.generated.js +0 -67
  164. package/dist/server/api-client-core/apis/crm/companies.generated.js.map +0 -1
  165. package/dist/server/api-client-core/apis/crm/contacts-types.generated.d.ts +0 -899
  166. package/dist/server/api-client-core/apis/crm/contacts.generated.d.ts +0 -7
  167. package/dist/server/api-client-core/apis/crm/contacts.generated.js +0 -70
  168. package/dist/server/api-client-core/apis/crm/contacts.generated.js.map +0 -1
  169. package/dist/server/api-client-core/apis/crm/contracts-types.generated.d.ts +0 -850
  170. package/dist/server/api-client-core/apis/crm/contracts.generated.d.ts +0 -7
  171. package/dist/server/api-client-core/apis/crm/contracts.generated.js +0 -66
  172. package/dist/server/api-client-core/apis/crm/contracts.generated.js.map +0 -1
  173. package/dist/server/api-client-core/apis/crm/courses-types.generated.d.ts +0 -853
  174. package/dist/server/api-client-core/apis/crm/courses.generated.d.ts +0 -7
  175. package/dist/server/api-client-core/apis/crm/courses.generated.js +0 -66
  176. package/dist/server/api-client-core/apis/crm/courses.generated.js.map +0 -1
  177. package/dist/server/api-client-core/apis/crm/crm-owners-types.generated.d.ts +0 -140
  178. package/dist/server/api-client-core/apis/crm/crm-owners.generated.d.ts +0 -7
  179. package/dist/server/api-client-core/apis/crm/crm-owners.generated.js +0 -20
  180. package/dist/server/api-client-core/apis/crm/crm-owners.generated.js.map +0 -1
  181. package/dist/server/api-client-core/apis/crm/custom-objects-types.generated.d.ts +0 -934
  182. package/dist/server/api-client-core/apis/crm/custom-objects.generated.d.ts +0 -7
  183. package/dist/server/api-client-core/apis/crm/custom-objects.generated.js +0 -101
  184. package/dist/server/api-client-core/apis/crm/custom-objects.generated.js.map +0 -1
  185. package/dist/server/api-client-core/apis/crm/deal-splits-types.generated.d.ts +0 -196
  186. package/dist/server/api-client-core/apis/crm/deal-splits.generated.d.ts +0 -7
  187. package/dist/server/api-client-core/apis/crm/deal-splits.generated.js +0 -9
  188. package/dist/server/api-client-core/apis/crm/deal-splits.generated.js.map +0 -1
  189. package/dist/server/api-client-core/apis/crm/deals-types.generated.d.ts +0 -872
  190. package/dist/server/api-client-core/apis/crm/deals.generated.d.ts +0 -7
  191. package/dist/server/api-client-core/apis/crm/deals.generated.js +0 -67
  192. package/dist/server/api-client-core/apis/crm/deals.generated.js.map +0 -1
  193. package/dist/server/api-client-core/apis/crm/discounts-types.generated.d.ts +0 -846
  194. package/dist/server/api-client-core/apis/crm/discounts.generated.d.ts +0 -7
  195. package/dist/server/api-client-core/apis/crm/discounts.generated.js +0 -66
  196. package/dist/server/api-client-core/apis/crm/discounts.generated.js.map +0 -1
  197. package/dist/server/api-client-core/apis/crm/emails-types.generated.d.ts +0 -850
  198. package/dist/server/api-client-core/apis/crm/emails.generated.d.ts +0 -7
  199. package/dist/server/api-client-core/apis/crm/emails.generated.js +0 -66
  200. package/dist/server/api-client-core/apis/crm/emails.generated.js.map +0 -1
  201. package/dist/server/api-client-core/apis/crm/exports-types.generated.d.ts +0 -281
  202. package/dist/server/api-client-core/apis/crm/exports.generated.d.ts +0 -7
  203. package/dist/server/api-client-core/apis/crm/exports.generated.js +0 -12
  204. package/dist/server/api-client-core/apis/crm/exports.generated.js.map +0 -1
  205. package/dist/server/api-client-core/apis/crm/feedback-submissions-types.generated.d.ts +0 -616
  206. package/dist/server/api-client-core/apis/crm/feedback-submissions.generated.d.ts +0 -7
  207. package/dist/server/api-client-core/apis/crm/feedback-submissions.generated.js +0 -55
  208. package/dist/server/api-client-core/apis/crm/feedback-submissions.generated.js.map +0 -1
  209. package/dist/server/api-client-core/apis/crm/fees-types.generated.d.ts +0 -850
  210. package/dist/server/api-client-core/apis/crm/fees.generated.d.ts +0 -7
  211. package/dist/server/api-client-core/apis/crm/fees.generated.js +0 -66
  212. package/dist/server/api-client-core/apis/crm/fees.generated.js.map +0 -1
  213. package/dist/server/api-client-core/apis/crm/goal-targets-types.generated.d.ts +0 -850
  214. package/dist/server/api-client-core/apis/crm/goal-targets.generated.d.ts +0 -7
  215. package/dist/server/api-client-core/apis/crm/goal-targets.generated.js +0 -66
  216. package/dist/server/api-client-core/apis/crm/goal-targets.generated.js.map +0 -1
  217. package/dist/server/api-client-core/apis/crm/imports-types.generated.d.ts +0 -371
  218. package/dist/server/api-client-core/apis/crm/imports.generated.d.ts +0 -7
  219. package/dist/server/api-client-core/apis/crm/imports.generated.js +0 -30
  220. package/dist/server/api-client-core/apis/crm/imports.generated.js.map +0 -1
  221. package/dist/server/api-client-core/apis/crm/invoices-types.generated.d.ts +0 -850
  222. package/dist/server/api-client-core/apis/crm/invoices.generated.d.ts +0 -7
  223. package/dist/server/api-client-core/apis/crm/invoices.generated.js +0 -66
  224. package/dist/server/api-client-core/apis/crm/invoices.generated.js.map +0 -1
  225. package/dist/server/api-client-core/apis/crm/leads-types.generated.d.ts +0 -850
  226. package/dist/server/api-client-core/apis/crm/leads.generated.d.ts +0 -7
  227. package/dist/server/api-client-core/apis/crm/leads.generated.js +0 -66
  228. package/dist/server/api-client-core/apis/crm/leads.generated.js.map +0 -1
  229. package/dist/server/api-client-core/apis/crm/limits-tracking-types.generated.d.ts +0 -331
  230. package/dist/server/api-client-core/apis/crm/limits-tracking.generated.d.ts +0 -7
  231. package/dist/server/api-client-core/apis/crm/limits-tracking.generated.js +0 -22
  232. package/dist/server/api-client-core/apis/crm/limits-tracking.generated.js.map +0 -1
  233. package/dist/server/api-client-core/apis/crm/line-items-types.generated.d.ts +0 -850
  234. package/dist/server/api-client-core/apis/crm/line-items.generated.d.ts +0 -7
  235. package/dist/server/api-client-core/apis/crm/line-items.generated.js +0 -66
  236. package/dist/server/api-client-core/apis/crm/line-items.generated.js.map +0 -1
  237. package/dist/server/api-client-core/apis/crm/listings-types.generated.d.ts +0 -853
  238. package/dist/server/api-client-core/apis/crm/listings.generated.d.ts +0 -7
  239. package/dist/server/api-client-core/apis/crm/listings.generated.js +0 -66
  240. package/dist/server/api-client-core/apis/crm/listings.generated.js.map +0 -1
  241. package/dist/server/api-client-core/apis/crm/lists-types.generated.d.ts +0 -2265
  242. package/dist/server/api-client-core/apis/crm/lists.generated.d.ts +0 -7
  243. package/dist/server/api-client-core/apis/crm/lists.generated.js +0 -105
  244. package/dist/server/api-client-core/apis/crm/lists.generated.js.map +0 -1
  245. package/dist/server/api-client-core/apis/crm/meetings-types.generated.d.ts +0 -850
  246. package/dist/server/api-client-core/apis/crm/meetings.generated.d.ts +0 -7
  247. package/dist/server/api-client-core/apis/crm/meetings.generated.js +0 -66
  248. package/dist/server/api-client-core/apis/crm/meetings.generated.js.map +0 -1
  249. package/dist/server/api-client-core/apis/crm/notes-types.generated.d.ts +0 -850
  250. package/dist/server/api-client-core/apis/crm/notes.generated.d.ts +0 -7
  251. package/dist/server/api-client-core/apis/crm/notes.generated.js +0 -66
  252. package/dist/server/api-client-core/apis/crm/notes.generated.js.map +0 -1
  253. package/dist/server/api-client-core/apis/crm/object-library-types.generated.d.ts +0 -60
  254. package/dist/server/api-client-core/apis/crm/object-library.generated.d.ts +0 -7
  255. package/dist/server/api-client-core/apis/crm/object-library.generated.js +0 -9
  256. package/dist/server/api-client-core/apis/crm/object-library.generated.js.map +0 -1
  257. package/dist/server/api-client-core/apis/crm/objects-types.generated.d.ts +0 -712
  258. package/dist/server/api-client-core/apis/crm/objects.generated.d.ts +0 -7
  259. package/dist/server/api-client-core/apis/crm/objects.generated.js +0 -76
  260. package/dist/server/api-client-core/apis/crm/objects.generated.js.map +0 -1
  261. package/dist/server/api-client-core/apis/crm/orders-types.generated.d.ts +0 -850
  262. package/dist/server/api-client-core/apis/crm/orders.generated.d.ts +0 -7
  263. package/dist/server/api-client-core/apis/crm/orders.generated.js +0 -66
  264. package/dist/server/api-client-core/apis/crm/orders.generated.js.map +0 -1
  265. package/dist/server/api-client-core/apis/crm/partner-clients-types.generated.d.ts +0 -725
  266. package/dist/server/api-client-core/apis/crm/partner-clients.generated.d.ts +0 -7
  267. package/dist/server/api-client-core/apis/crm/partner-clients.generated.js +0 -71
  268. package/dist/server/api-client-core/apis/crm/partner-clients.generated.js.map +0 -1
  269. package/dist/server/api-client-core/apis/crm/partner-services-types.generated.d.ts +0 -725
  270. package/dist/server/api-client-core/apis/crm/partner-services.generated.d.ts +0 -7
  271. package/dist/server/api-client-core/apis/crm/partner-services.generated.js +0 -71
  272. package/dist/server/api-client-core/apis/crm/partner-services.generated.js.map +0 -1
  273. package/dist/server/api-client-core/apis/crm/pipelines-types.generated.d.ts +0 -430
  274. package/dist/server/api-client-core/apis/crm/pipelines.generated.d.ts +0 -7
  275. package/dist/server/api-client-core/apis/crm/pipelines.generated.js +0 -94
  276. package/dist/server/api-client-core/apis/crm/pipelines.generated.js.map +0 -1
  277. package/dist/server/api-client-core/apis/crm/postal-mail-types.generated.d.ts +0 -844
  278. package/dist/server/api-client-core/apis/crm/postal-mail.generated.d.ts +0 -7
  279. package/dist/server/api-client-core/apis/crm/postal-mail.generated.js +0 -66
  280. package/dist/server/api-client-core/apis/crm/postal-mail.generated.js.map +0 -1
  281. package/dist/server/api-client-core/apis/crm/products-types.generated.d.ts +0 -850
  282. package/dist/server/api-client-core/apis/crm/products.generated.d.ts +0 -7
  283. package/dist/server/api-client-core/apis/crm/products.generated.js +0 -66
  284. package/dist/server/api-client-core/apis/crm/products.generated.js.map +0 -1
  285. package/dist/server/api-client-core/apis/crm/projects-types.generated.d.ts +0 -881
  286. package/dist/server/api-client-core/apis/crm/projects.generated.d.ts +0 -7
  287. package/dist/server/api-client-core/apis/crm/projects.generated.js +0 -67
  288. package/dist/server/api-client-core/apis/crm/projects.generated.js.map +0 -1
  289. package/dist/server/api-client-core/apis/crm/properties-types.generated.d.ts +0 -603
  290. package/dist/server/api-client-core/apis/crm/properties.generated.d.ts +0 -7
  291. package/dist/server/api-client-core/apis/crm/properties.generated.js +0 -86
  292. package/dist/server/api-client-core/apis/crm/properties.generated.js.map +0 -1
  293. package/dist/server/api-client-core/apis/crm/property-validations-types.generated.d.ts +0 -121
  294. package/dist/server/api-client-core/apis/crm/property-validations.generated.d.ts +0 -7
  295. package/dist/server/api-client-core/apis/crm/property-validations.generated.js +0 -25
  296. package/dist/server/api-client-core/apis/crm/property-validations.generated.js.map +0 -1
  297. package/dist/server/api-client-core/apis/crm/public-app-crm-cards-types.generated.d.ts +0 -486
  298. package/dist/server/api-client-core/apis/crm/public-app-crm-cards.generated.d.ts +0 -7
  299. package/dist/server/api-client-core/apis/crm/public-app-crm-cards.generated.js +0 -34
  300. package/dist/server/api-client-core/apis/crm/public-app-crm-cards.generated.js.map +0 -1
  301. package/dist/server/api-client-core/apis/crm/public-app-feature-flags-types.generated.d.ts +0 -247
  302. package/dist/server/api-client-core/apis/crm/public-app-feature-flags.generated.d.ts +0 -7
  303. package/dist/server/api-client-core/apis/crm/public-app-feature-flags.generated.js +0 -69
  304. package/dist/server/api-client-core/apis/crm/public-app-feature-flags.generated.js.map +0 -1
  305. package/dist/server/api-client-core/apis/crm/quotes-types.generated.d.ts +0 -850
  306. package/dist/server/api-client-core/apis/crm/quotes.generated.d.ts +0 -7
  307. package/dist/server/api-client-core/apis/crm/quotes.generated.js +0 -66
  308. package/dist/server/api-client-core/apis/crm/quotes.generated.js.map +0 -1
  309. package/dist/server/api-client-core/apis/crm/schemas-types.generated.d.ts +0 -669
  310. package/dist/server/api-client-core/apis/crm/schemas.generated.d.ts +0 -7
  311. package/dist/server/api-client-core/apis/crm/schemas.generated.js +0 -41
  312. package/dist/server/api-client-core/apis/crm/schemas.generated.js.map +0 -1
  313. package/dist/server/api-client-core/apis/crm/services-types.generated.d.ts +0 -853
  314. package/dist/server/api-client-core/apis/crm/services.generated.d.ts +0 -7
  315. package/dist/server/api-client-core/apis/crm/services.generated.js +0 -66
  316. package/dist/server/api-client-core/apis/crm/services.generated.js.map +0 -1
  317. package/dist/server/api-client-core/apis/crm/tasks-types.generated.d.ts +0 -850
  318. package/dist/server/api-client-core/apis/crm/tasks.generated.d.ts +0 -7
  319. package/dist/server/api-client-core/apis/crm/tasks.generated.js +0 -66
  320. package/dist/server/api-client-core/apis/crm/tasks.generated.js.map +0 -1
  321. package/dist/server/api-client-core/apis/crm/taxes-types.generated.d.ts +0 -850
  322. package/dist/server/api-client-core/apis/crm/taxes.generated.d.ts +0 -7
  323. package/dist/server/api-client-core/apis/crm/taxes.generated.js +0 -66
  324. package/dist/server/api-client-core/apis/crm/taxes.generated.js.map +0 -1
  325. package/dist/server/api-client-core/apis/crm/tickets-types.generated.d.ts +0 -884
  326. package/dist/server/api-client-core/apis/crm/tickets.generated.d.ts +0 -7
  327. package/dist/server/api-client-core/apis/crm/tickets.generated.js +0 -67
  328. package/dist/server/api-client-core/apis/crm/tickets.generated.js.map +0 -1
  329. package/dist/server/api-client-core/apis/crm/timeline-types.generated.d.ts +0 -187
  330. package/dist/server/api-client-core/apis/crm/timeline.generated.d.ts +0 -7
  331. package/dist/server/api-client-core/apis/crm/timeline.generated.js +0 -12
  332. package/dist/server/api-client-core/apis/crm/timeline.generated.js.map +0 -1
  333. package/dist/server/api-client-core/apis/crm/transcriptions-types.generated.d.ts +0 -152
  334. package/dist/server/api-client-core/apis/crm/transcriptions.generated.d.ts +0 -7
  335. package/dist/server/api-client-core/apis/crm/transcriptions.generated.js +0 -15
  336. package/dist/server/api-client-core/apis/crm/transcriptions.generated.js.map +0 -1
  337. package/dist/server/api-client-core/apis/crm/users-types.generated.d.ts +0 -850
  338. package/dist/server/api-client-core/apis/crm/users.generated.d.ts +0 -7
  339. package/dist/server/api-client-core/apis/crm/users.generated.js +0 -66
  340. package/dist/server/api-client-core/apis/crm/users.generated.js.map +0 -1
  341. package/dist/server/api-client-core/apis/crm/video-conferencing-extension-types.generated.d.ts +0 -72
  342. package/dist/server/api-client-core/apis/crm/video-conferencing-extension.generated.d.ts +0 -7
  343. package/dist/server/api-client-core/apis/crm/video-conferencing-extension.generated.js +0 -13
  344. package/dist/server/api-client-core/apis/crm/video-conferencing-extension.generated.js.map +0 -1
  345. package/dist/server/api-client-core/apis/events/manage-event-definitions-types.generated.d.ts +0 -1005
  346. package/dist/server/api-client-core/apis/events/manage-event-definitions.generated.d.ts +0 -7
  347. package/dist/server/api-client-core/apis/events/manage-event-definitions.generated.js +0 -39
  348. package/dist/server/api-client-core/apis/events/manage-event-definitions.generated.js.map +0 -1
  349. package/dist/server/api-client-core/apis/events/send-event-completions-types.generated.d.ts +0 -94
  350. package/dist/server/api-client-core/apis/events/send-event-completions.generated.d.ts +0 -7
  351. package/dist/server/api-client-core/apis/events/send-event-completions.generated.js +0 -9
  352. package/dist/server/api-client-core/apis/events/send-event-completions.generated.js.map +0 -1
  353. package/dist/server/api-client-core/apis/events-types.generated.d.ts +0 -137
  354. package/dist/server/api-client-core/apis/events.generated.d.ts +0 -7
  355. package/dist/server/api-client-core/apis/events.generated.js +0 -23
  356. package/dist/server/api-client-core/apis/events.generated.js.map +0 -1
  357. package/dist/server/api-client-core/apis/files-types.generated.d.ts +0 -791
  358. package/dist/server/api-client-core/apis/files.generated.d.ts +0 -7
  359. package/dist/server/api-client-core/apis/files.generated.js +0 -119
  360. package/dist/server/api-client-core/apis/files.generated.js.map +0 -1
  361. package/dist/server/api-client-core/apis/marketing/campaigns-public-api-types.generated.d.ts +0 -989
  362. package/dist/server/api-client-core/apis/marketing/campaigns-public-api.generated.d.ts +0 -7
  363. package/dist/server/api-client-core/apis/marketing/campaigns-public-api.generated.js +0 -139
  364. package/dist/server/api-client-core/apis/marketing/campaigns-public-api.generated.js.map +0 -1
  365. package/dist/server/api-client-core/apis/marketing/marketing-emails-types.generated.d.ts +0 -883
  366. package/dist/server/api-client-core/apis/marketing/marketing-emails.generated.d.ts +0 -7
  367. package/dist/server/api-client-core/apis/marketing/marketing-emails.generated.js +0 -108
  368. package/dist/server/api-client-core/apis/marketing/marketing-emails.generated.js.map +0 -1
  369. package/dist/server/api-client-core/apis/marketing/marketing-events-types.generated.d.ts +0 -1788
  370. package/dist/server/api-client-core/apis/marketing/marketing-events.generated.d.ts +0 -7
  371. package/dist/server/api-client-core/apis/marketing/marketing-events.generated.js +0 -176
  372. package/dist/server/api-client-core/apis/marketing/marketing-events.generated.js.map +0 -1
  373. package/dist/server/api-client-core/apis/marketing/single-send-types.generated.d.ts +0 -123
  374. package/dist/server/api-client-core/apis/marketing/single-send.generated.d.ts +0 -7
  375. package/dist/server/api-client-core/apis/marketing/single-send.generated.js +0 -6
  376. package/dist/server/api-client-core/apis/marketing/single-send.generated.js.map +0 -1
  377. package/dist/server/api-client-core/apis/marketing/transactional-single-send-types.generated.d.ts +0 -257
  378. package/dist/server/api-client-core/apis/marketing/transactional-single-send.generated.d.ts +0 -7
  379. package/dist/server/api-client-core/apis/marketing/transactional-single-send.generated.js +0 -20
  380. package/dist/server/api-client-core/apis/marketing/transactional-single-send.generated.js.map +0 -1
  381. package/dist/server/api-client-core/apis/meta/origins-types.generated.d.ts +0 -77
  382. package/dist/server/api-client-core/apis/meta/origins.generated.d.ts +0 -7
  383. package/dist/server/api-client-core/apis/meta/origins.generated.js +0 -15
  384. package/dist/server/api-client-core/apis/meta/origins.generated.js.map +0 -1
  385. package/dist/server/api-client-core/apis/scheduler/meetings-types.generated.d.ts +0 -913
  386. package/dist/server/api-client-core/apis/scheduler/meetings.generated.d.ts +0 -7
  387. package/dist/server/api-client-core/apis/scheduler/meetings.generated.js +0 -34
  388. package/dist/server/api-client-core/apis/scheduler/meetings.generated.js.map +0 -1
  389. package/dist/server/api-client-core/apis/settings/multicurrency-types.generated.d.ts +0 -404
  390. package/dist/server/api-client-core/apis/settings/multicurrency.generated.d.ts +0 -7
  391. package/dist/server/api-client-core/apis/settings/multicurrency.generated.js +0 -38
  392. package/dist/server/api-client-core/apis/settings/multicurrency.generated.js.map +0 -1
  393. package/dist/server/api-client-core/apis/settings/tax-rates-types.generated.d.ts +0 -111
  394. package/dist/server/api-client-core/apis/settings/tax-rates.generated.d.ts +0 -7
  395. package/dist/server/api-client-core/apis/settings/tax-rates.generated.js +0 -13
  396. package/dist/server/api-client-core/apis/settings/tax-rates.generated.js.map +0 -1
  397. package/dist/server/api-client-core/apis/settings/user-provisioning-types.generated.d.ts +0 -297
  398. package/dist/server/api-client-core/apis/settings/user-provisioning.generated.d.ts +0 -7
  399. package/dist/server/api-client-core/apis/settings/user-provisioning.generated.js +0 -31
  400. package/dist/server/api-client-core/apis/settings/user-provisioning.generated.js.map +0 -1
  401. package/dist/server/api-client-core/apis/webhooks-journal-types.generated.d.ts +0 -643
  402. package/dist/server/api-client-core/apis/webhooks-journal.generated.d.ts +0 -7
  403. package/dist/server/api-client-core/apis/webhooks-journal.generated.js +0 -75
  404. package/dist/server/api-client-core/apis/webhooks-journal.generated.js.map +0 -1
  405. package/dist/server/api-client-core/apis/webhooks-types.generated.d.ts +0 -1016
  406. package/dist/server/api-client-core/apis/webhooks.generated.d.ts +0 -7
  407. package/dist/server/api-client-core/apis/webhooks.generated.js +0 -105
  408. package/dist/server/api-client-core/apis/webhooks.generated.js.map +0 -1
  409. package/dist/server/api-client-core/binary-data.d.ts +0 -33
  410. package/dist/server/api-client-core/binary-data.js +0 -29
  411. package/dist/server/api-client-core/binary-data.js.map +0 -1
  412. package/dist/server/api-client-core/client.d.ts +0 -14
  413. package/dist/server/api-client-core/client.js.map +0 -1
  414. package/dist/server/api-client-core/codegen-helpers/file-op-wrappers.js +0 -25
  415. package/dist/server/api-client-core/codegen-helpers/file-op-wrappers.js.map +0 -1
  416. package/dist/server/api-client-core/errors.d.ts +0 -27
  417. package/dist/server/api-client-core/errors.js +0 -33
  418. package/dist/server/api-client-core/errors.js.map +0 -1
  419. package/dist/server/api-client-core/op.d.ts +0 -37
  420. package/dist/server/api-client-core/op.js +0 -44
  421. package/dist/server/api-client-core/op.js.map +0 -1
  422. package/dist/server/api-client-core/pagination.d.ts +0 -60
  423. package/dist/server/api-client-core/pagination.js +0 -103
  424. package/dist/server/api-client-core/pagination.js.map +0 -1
  425. package/dist/server/api-client-core/plugins/fetch-transport.js +0 -76
  426. package/dist/server/api-client-core/plugins/fetch-transport.js.map +0 -1
  427. package/dist/server/constants.js +0 -73
  428. package/dist/server/constants.js.map +0 -1
  429. package/dist/server/deno/start.d.ts +0 -12
  430. package/dist/server/deno/start.js +0 -21
  431. package/dist/server/deno/start.js.map +0 -1
  432. package/dist/server/hono/hono-request-handler.js +0 -59
  433. package/dist/server/hono/hono-request-handler.js.map +0 -1
  434. package/dist/server/hono/hubspot-connect-routes/auth-complete.js +0 -154
  435. package/dist/server/hono/hubspot-connect-routes/auth-complete.js.map +0 -1
  436. package/dist/server/hono/hubspot-connect-routes/auth-init-session.js +0 -101
  437. package/dist/server/hono/hubspot-connect-routes/auth-init-session.js.map +0 -1
  438. package/dist/server/hono/hubspot-connect-routes/auth-logout.js +0 -114
  439. package/dist/server/hono/hubspot-connect-routes/auth-logout.js.map +0 -1
  440. package/dist/server/hono/hubspot-connect-routes/auth-refresh.js +0 -107
  441. package/dist/server/hono/hubspot-connect-routes/auth-refresh.js.map +0 -1
  442. package/dist/server/hono/hubspot-connect-routes/cimd-client-metadata-types.d.ts +0 -16
  443. package/dist/server/hono/hubspot-connect-routes/cimd-client-metadata-types.js +0 -13
  444. package/dist/server/hono/hubspot-connect-routes/cimd-client-metadata-types.js.map +0 -1
  445. package/dist/server/hono/hubspot-connect-routes/cimd-public-routes.js +0 -42
  446. package/dist/server/hono/hubspot-connect-routes/cimd-public-routes.js.map +0 -1
  447. package/dist/server/hono/hubspot-connect-routes/constants.js +0 -8
  448. package/dist/server/hono/hubspot-connect-routes/constants.js.map +0 -1
  449. package/dist/server/hono/hubspot-connect-routes/fetch-hubspot-client-metadata.js +0 -43
  450. package/dist/server/hono/hubspot-connect-routes/fetch-hubspot-client-metadata.js.map +0 -1
  451. package/dist/server/hono/hubspot-connect-routes/hubspot-connect-routes.js +0 -37
  452. package/dist/server/hono/hubspot-connect-routes/hubspot-connect-routes.js.map +0 -1
  453. package/dist/server/hono/hubspot-connect-routes/load-hubspot-connect-routes-env.js +0 -34
  454. package/dist/server/hono/hubspot-connect-routes/load-hubspot-connect-routes-env.js.map +0 -1
  455. package/dist/server/hono/hubspot-connect-routes/oauth-client.js +0 -104
  456. package/dist/server/hono/hubspot-connect-routes/oauth-client.js.map +0 -1
  457. package/dist/server/hono/hubspot-connect-routes/utils.js +0 -120
  458. package/dist/server/hono/hubspot-connect-routes/utils.js.map +0 -1
  459. package/dist/server/hono/index.js +0 -4
  460. package/dist/server/hono/types.d.ts +0 -32
  461. package/dist/server/hono/utils/cookie-utils.js +0 -30
  462. package/dist/server/hono/utils/cookie-utils.js.map +0 -1
  463. package/dist/server/hono/utils/cors-middleware.js +0 -85
  464. package/dist/server/hono/utils/cors-middleware.js.map +0 -1
  465. package/dist/server/import-app-keys.js +0 -42
  466. package/dist/server/import-app-keys.js.map +0 -1
  467. package/dist/server/lovable/create-app-function-start.d.ts +0 -26
  468. package/dist/server/lovable/create-app-function-start.js +0 -28
  469. package/dist/server/lovable/create-app-function-start.js.map +0 -1
  470. package/dist/server/lovable/hubspot-connect/index.d.ts +0 -15
  471. package/dist/server/lovable/hubspot-connect/index.js +0 -20
  472. package/dist/server/lovable/hubspot-connect/index.js.map +0 -1
  473. package/dist/server/lovable/hubspot-connect/run-hubspot-connect-lovable-server.js +0 -29
  474. package/dist/server/lovable/hubspot-connect/run-hubspot-connect-lovable-server.js.map +0 -1
  475. package/dist/server/proxy.js +0 -68
  476. package/dist/server/proxy.js.map +0 -1
  477. package/dist/server/sanitize-request.js +0 -55
  478. package/dist/server/sanitize-request.js.map +0 -1
  479. package/dist/server/secure-start-core.d.ts +0 -23
  480. package/dist/server/secure-start-core.js +0 -28
  481. package/dist/server/secure-start-core.js.map +0 -1
  482. package/dist/server/shared/constants.js +0 -30
  483. package/dist/server/shared/constants.js.map +0 -1
  484. package/dist/server/shared/encoding/base64.js +0 -45
  485. package/dist/server/shared/encoding/base64.js.map +0 -1
  486. package/dist/server/shared/encoding/sha256.d.ts +0 -10
  487. package/dist/server/shared/encoding/sha256.js +0 -15
  488. package/dist/server/shared/encoding/sha256.js.map +0 -1
  489. package/dist/server/shared/logger.d.ts +0 -15
  490. package/dist/server/shared/logger.js +0 -16
  491. package/dist/server/shared/logger.js.map +0 -1
  492. package/dist/server/utils/cookie-utils.js +0 -21
  493. package/dist/server/utils/cookie-utils.js.map +0 -1
  494. package/dist/server/utils/dpop-utils.d.ts +0 -67
  495. package/dist/server/utils/dpop-utils.js +0 -75
  496. package/dist/server/utils/dpop-utils.js.map +0 -1
  497. package/dist/server/utils/env-utils.js +0 -54
  498. package/dist/server/utils/env-utils.js.map +0 -1
  499. package/dist/server/utils/jwk-utils.d.ts +0 -16
  500. package/dist/server/utils/jwk-utils.js +0 -24
  501. package/dist/server/utils/jwk-utils.js.map +0 -1
  502. package/dist/server/utils/jwt-utils.d.ts +0 -39
  503. package/dist/server/utils/jwt-utils.js +0 -87
  504. package/dist/server/utils/jwt-utils.js.map +0 -1
@@ -1,55 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,23 +0,0 @@
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
@@ -1,28 +0,0 @@
1
- import { importAppKeys } from "./import-app-keys.js";
2
- import { isHubspotAppPrivateKeyRequired } from "./utils/env-utils.js";
3
- //#region src/server/secure-start-core.ts
4
- const APP_PRIVATE_KEY_ENV = "HUBSPOT_APP_PRIVATE_KEY";
5
- /**
6
- * Loads `HUBSPOT_APP_PRIVATE_KEY` when CIMD or DPoP is enabled, deletes
7
- * it from the environment so later code cannot re-read it, imports the
8
- * entrypoint module via `loader`, and invokes `start` with `AppKeys` or
9
- * `null` when both features are off. On failure, logs the error and
10
- * exits with code 1.
11
- */
12
- async function runSecureStart(loader, adapter) {
13
- let appKeys = null;
14
- if (isHubspotAppPrivateKeyRequired()) {
15
- const envKey = adapter.readEnv(APP_PRIVATE_KEY_ENV)?.trim();
16
- if (!envKey) throw new Error(`${APP_PRIVATE_KEY_ENV} is not set`);
17
- appKeys = await importAppKeys(envKey);
18
- adapter.deleteEnv(APP_PRIVATE_KEY_ENV);
19
- }
20
- return (await loader()).start({ appKeys }).catch((error) => {
21
- console.error(error);
22
- return adapter.exit(1);
23
- });
24
- }
25
- //#endregion
26
- export { runSecureStart };
27
-
28
- //# sourceMappingURL=secure-start-core.js.map
@@ -1 +0,0 @@
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 { isHubspotAppPrivateKeyRequired } 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\nconst APP_PRIVATE_KEY_ENV = 'HUBSPOT_APP_PRIVATE_KEY';\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(APP_PRIVATE_KEY_ENV)?.trim();\n if (!envKey) {\n throw new Error(`${APP_PRIVATE_KEY_ENV} is not set`);\n }\n appKeys = await importAppKeys(envKey);\n adapter.deleteEnv(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":";;;AAsCA,MAAM,sBAAsB;;;;;;;;AAS5B,eAAsB,eACpB,QACA,SACe;CACf,IAAI,UAA0B;CAC9B,IAAI,gCAAgC,EAAE;EACpC,MAAM,SAAS,QAAQ,QAAQ,oBAAoB,EAAE,MAAM;EAC3D,IAAI,CAAC,QACH,MAAM,IAAI,MAAM,GAAG,oBAAoB,aAAa;EAEtD,UAAU,MAAM,cAAc,OAAO;EACrC,QAAQ,UAAU,oBAAoB;;CAIxC,QAAO,MADe,QAAQ,EACf,MAAM,EAAE,SAAS,CAAC,CAAC,OAAO,UAAU;EACjD,QAAQ,MAAM,MAAM;EACpB,OAAO,QAAQ,KAAK,EAAE;GACtB"}
@@ -1,30 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,45 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,10 +0,0 @@
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
@@ -1,15 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,15 +0,0 @@
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
@@ -1,16 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,21 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,67 +0,0 @@
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
@@ -1,75 +0,0 @@
1
- import { base64urlDecode } from "../shared/encoding/base64.js";
2
- import { getJwkThumbprint } from "./jwk-utils.js";
3
- import { decodeAndVerifyJwt, encodeAndSignJwt } from "./jwt-utils.js";
4
- //#region src/server/utils/dpop-utils.ts
5
- function ecPublicJwkForDpopHeader(jwk) {
6
- if (jwk.kty !== "EC" || jwk.crv !== "P-256" || typeof jwk.x !== "string" || typeof jwk.y !== "string") throw new Error("Expected P-256 EC public JWK");
7
- return {
8
- kty: "EC",
9
- crv: "P-256",
10
- x: jwk.x,
11
- y: jwk.y
12
- };
13
- }
14
- /**
15
- * Mints a DPoP proof JWT (RFC 9449) signed with the app's private
16
- * key. The header is set to `typ=dpop+jwt`, `alg=ES256`, and embeds
17
- * the public JWK so the receiver can verify the signature without
18
- * out-of-band key distribution.
19
- */
20
- async function signDpopProof(options) {
21
- const { appKeys, claims } = options;
22
- return encodeAndSignJwt({
23
- header: {
24
- alg: "ES256",
25
- typ: "dpop+jwt",
26
- jwk: ecPublicJwkForDpopHeader(appKeys.appPublicKeyJwk)
27
- },
28
- payload: claims,
29
- privateKey: appKeys.appPrivateKey
30
- });
31
- }
32
- /**
33
- * Verifies a DPoP proof JWT and returns the embedded public JWK,
34
- * its thumbprint, and the decoded claims.
35
- *
36
- * Enforces RFC 9449's required checks:
37
- *
38
- * - `typ=dpop+jwt`, `alg=ES256`, and a JWK in the header.
39
- * - Signature is valid against the embedded JWK.
40
- * - `htm`, `htu`, and (when supplied) `ath`/`sid` match.
41
- * - `iat` is within ±5 minutes of "now".
42
- *
43
- * @throws {Error} If any of the above checks fail.
44
- */
45
- async function verifyDpopProof(options) {
46
- const { proof, htm, htu, ath, sid } = options;
47
- const parts = proof.split(".");
48
- if (parts.length !== 3) throw new Error("Invalid DPoP proof format");
49
- const encodedHeader = parts[0];
50
- if (!encodedHeader) throw new Error("Missing DPoP header");
51
- const header = JSON.parse(new TextDecoder().decode(base64urlDecode(encodedHeader)));
52
- if (header.typ !== "dpop+jwt") throw new Error("Invalid DPoP typ header");
53
- if (header.alg !== "ES256") throw new Error("Unsupported DPoP algorithm");
54
- const publicKeyJwk = header.jwk;
55
- if (!publicKeyJwk) throw new Error("Missing jwk in DPoP header");
56
- const claims = await decodeAndVerifyJwt({
57
- token: proof,
58
- publicKeyJwk
59
- });
60
- if (claims.htm !== htm) throw new Error(`DPoP htm mismatch: expected ${htm}, got ${claims.htm}`);
61
- if (claims.htu !== htu) throw new Error(`DPoP htu mismatch: expected ${htu}, got ${claims.htu}`);
62
- if (ath !== void 0 && claims.ath !== ath) throw new Error("DPoP ath mismatch");
63
- if (sid !== void 0 && claims.sid !== sid) throw new Error("DPoP sid mismatch");
64
- const now = Math.floor(Date.now() / 1e3);
65
- if (Math.abs(now - claims.iat) > 300) throw new Error("DPoP proof expired or too far in future");
66
- return {
67
- publicKeyJwk,
68
- jkt: await getJwkThumbprint({ publicKeyJwk }),
69
- claims
70
- };
71
- }
72
- //#endregion
73
- export { signDpopProof, verifyDpopProof };
74
-
75
- //# sourceMappingURL=dpop-utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dpop-utils.js","names":[],"sources":["../../../src/server/utils/dpop-utils.ts"],"sourcesContent":["import { type AppKeys } from '../types.ts';\nimport { base64urlDecode } from './base64-utils.ts';\nimport { getJwkThumbprint } from './jwk-utils.ts';\nimport { decodeAndVerifyJwt, encodeAndSignJwt } from './jwt-utils.ts';\n\n/**\n * Claims that go into a DPoP proof JWT (RFC 9449 §4.2). Extra\n * properties pass through to the encoder unchanged so callers can\n * include implementation-specific claims.\n */\nexport interface DpopClaims {\n /** HTTP method of the protected request, uppercase. */\n htm: string;\n /** Target URI of the protected request, fully-qualified. */\n htu: string;\n /** Unique proof identifier (RFC 9449 §4.2, recommended UUID). */\n jti: string;\n /** Issuance time, Unix epoch seconds. */\n iat: number;\n /**\n * Hash of the access token presented alongside this proof, if any\n * (RFC 9449 §4.2). Required for resource-server DPoP.\n */\n ath?: string;\n /**\n * App session ID hash. Custom HubSpot extension that lets the auth\n * server bind tokens to the browser session that minted them.\n */\n sid?: string;\n [key: string]: unknown;\n}\n\nfunction ecPublicJwkForDpopHeader(jwk: JsonWebKey): JsonWebKey {\n if (\n jwk.kty !== 'EC' ||\n jwk.crv !== 'P-256' ||\n typeof jwk.x !== 'string' ||\n typeof jwk.y !== 'string'\n ) {\n throw new Error('Expected P-256 EC public JWK');\n }\n return {\n kty: 'EC',\n crv: 'P-256',\n x: jwk.x,\n y: jwk.y,\n };\n}\n\nexport interface SignDpopProofOptions {\n /** App key material produced by `secureStart`. */\n appKeys: AppKeys;\n /** Claims to include in the DPoP proof. */\n claims: DpopClaims;\n}\n\n/**\n * Mints a DPoP proof JWT (RFC 9449) signed with the app's private\n * key. The header is set to `typ=dpop+jwt`, `alg=ES256`, and embeds\n * the public JWK so the receiver can verify the signature without\n * out-of-band key distribution.\n */\nexport async function signDpopProof(\n options: SignDpopProofOptions\n): Promise<string> {\n const { appKeys, claims } = options;\n const publicJwk = ecPublicJwkForDpopHeader(appKeys.appPublicKeyJwk);\n return encodeAndSignJwt({\n header: { alg: 'ES256', typ: 'dpop+jwt', jwk: publicJwk },\n payload: claims,\n privateKey: appKeys.appPrivateKey,\n });\n}\n\n/**\n * Result of a successful {@link verifyDpopProof} call.\n */\nexport interface VerifiedDpopProof {\n /** Public JWK extracted from the proof's header. */\n publicKeyJwk: JsonWebKey;\n /** RFC 7638 JWK thumbprint of `publicKeyJwk`. */\n jkt: string;\n /** Decoded claims from the proof's payload. */\n claims: DpopClaims;\n}\n\nexport interface VerifyDpopProofOptions {\n /** The compact-serialized DPoP proof. */\n proof: string;\n /** Expected HTTP method (RFC 9449 `htm` claim). */\n htm: string;\n /** Expected request URI (RFC 9449 `htu` claim). */\n htu: string;\n /** Expected access-token hash (RFC 9449 `ath` claim). */\n ath?: string;\n /** Expected app-session-ID hash (`sid` claim). */\n sid?: string;\n}\n\ninterface DpopProofHeader {\n typ?: string;\n alg?: string;\n jwk?: JsonWebKey;\n}\n\n/**\n * Verifies a DPoP proof JWT and returns the embedded public JWK,\n * its thumbprint, and the decoded claims.\n *\n * Enforces RFC 9449's required checks:\n *\n * - `typ=dpop+jwt`, `alg=ES256`, and a JWK in the header.\n * - Signature is valid against the embedded JWK.\n * - `htm`, `htu`, and (when supplied) `ath`/`sid` match.\n * - `iat` is within ±5 minutes of \"now\".\n *\n * @throws {Error} If any of the above checks fail.\n */\nexport async function verifyDpopProof(\n options: VerifyDpopProofOptions\n): Promise<VerifiedDpopProof> {\n const { proof, htm, htu, ath, sid } = options;\n const parts = proof.split('.');\n if (parts.length !== 3) throw new Error('Invalid DPoP proof format');\n\n const encodedHeader = parts[0];\n if (!encodedHeader) throw new Error('Missing DPoP header');\n\n const header = JSON.parse(\n new TextDecoder().decode(base64urlDecode(encodedHeader))\n ) as DpopProofHeader;\n\n if (header.typ !== 'dpop+jwt') throw new Error('Invalid DPoP typ header');\n if (header.alg !== 'ES256') throw new Error('Unsupported DPoP algorithm');\n const publicKeyJwk = header.jwk;\n if (!publicKeyJwk) throw new Error('Missing jwk in DPoP header');\n\n const payload = await decodeAndVerifyJwt({ token: proof, publicKeyJwk });\n const claims = payload as unknown as DpopClaims;\n\n if (claims.htm !== htm) {\n throw new Error(`DPoP htm mismatch: expected ${htm}, got ${claims.htm}`);\n }\n if (claims.htu !== htu) {\n throw new Error(`DPoP htu mismatch: expected ${htu}, got ${claims.htu}`);\n }\n if (ath !== undefined && claims.ath !== ath) {\n throw new Error('DPoP ath mismatch');\n }\n if (sid !== undefined && claims.sid !== sid) {\n throw new Error('DPoP sid mismatch');\n }\n\n const now = Math.floor(Date.now() / 1000);\n if (Math.abs(now - claims.iat) > 300) {\n throw new Error('DPoP proof expired or too far in future');\n }\n\n const jkt = await getJwkThumbprint({ publicKeyJwk });\n return { publicKeyJwk, jkt, claims };\n}\n"],"mappings":";;;;AAgCA,SAAS,yBAAyB,KAA6B;CAC7D,IACE,IAAI,QAAQ,QACZ,IAAI,QAAQ,WACZ,OAAO,IAAI,MAAM,YACjB,OAAO,IAAI,MAAM,UAEjB,MAAM,IAAI,MAAM,+BAA+B;CAEjD,OAAO;EACL,KAAK;EACL,KAAK;EACL,GAAG,IAAI;EACP,GAAG,IAAI;EACR;;;;;;;;AAgBH,eAAsB,cACpB,SACiB;CACjB,MAAM,EAAE,SAAS,WAAW;CAE5B,OAAO,iBAAiB;EACtB,QAAQ;GAAE,KAAK;GAAS,KAAK;GAAY,KAFzB,yBAAyB,QAAQ,gBAEM;GAAE;EACzD,SAAS;EACT,YAAY,QAAQ;EACrB,CAAC;;;;;;;;;;;;;;;AA+CJ,eAAsB,gBACpB,SAC4B;CAC5B,MAAM,EAAE,OAAO,KAAK,KAAK,KAAK,QAAQ;CACtC,MAAM,QAAQ,MAAM,MAAM,IAAI;CAC9B,IAAI,MAAM,WAAW,GAAG,MAAM,IAAI,MAAM,4BAA4B;CAEpE,MAAM,gBAAgB,MAAM;CAC5B,IAAI,CAAC,eAAe,MAAM,IAAI,MAAM,sBAAsB;CAE1D,MAAM,SAAS,KAAK,MAClB,IAAI,aAAa,CAAC,OAAO,gBAAgB,cAAc,CAAC,CACzD;CAED,IAAI,OAAO,QAAQ,YAAY,MAAM,IAAI,MAAM,0BAA0B;CACzE,IAAI,OAAO,QAAQ,SAAS,MAAM,IAAI,MAAM,6BAA6B;CACzE,MAAM,eAAe,OAAO;CAC5B,IAAI,CAAC,cAAc,MAAM,IAAI,MAAM,6BAA6B;CAGhE,MAAM,SAAS,MADO,mBAAmB;EAAE,OAAO;EAAO;EAAc,CAAC;CAGxE,IAAI,OAAO,QAAQ,KACjB,MAAM,IAAI,MAAM,+BAA+B,IAAI,QAAQ,OAAO,MAAM;CAE1E,IAAI,OAAO,QAAQ,KACjB,MAAM,IAAI,MAAM,+BAA+B,IAAI,QAAQ,OAAO,MAAM;CAE1E,IAAI,QAAQ,KAAA,KAAa,OAAO,QAAQ,KACtC,MAAM,IAAI,MAAM,oBAAoB;CAEtC,IAAI,QAAQ,KAAA,KAAa,OAAO,QAAQ,KACtC,MAAM,IAAI,MAAM,oBAAoB;CAGtC,MAAM,MAAM,KAAK,MAAM,KAAK,KAAK,GAAG,IAAK;CACzC,IAAI,KAAK,IAAI,MAAM,OAAO,IAAI,GAAG,KAC/B,MAAM,IAAI,MAAM,0CAA0C;CAI5D,OAAO;EAAE;EAAc,KAAA,MADL,iBAAiB,EAAE,cAAc,CAAC;EACxB;EAAQ"}
@@ -1,54 +0,0 @@
1
- //#region src/server/utils/env-utils.ts
2
- /**
3
- * Reads an environment variable in a way that works under both Node
4
- * (`process.env`) and Deno (`Deno.env.get`). Returns `undefined` when
5
- * the variable is unset or when neither runtime is available.
6
- */
7
- function getEnv(key) {
8
- const g = globalThis;
9
- const proc = g.process;
10
- if (proc?.env) return proc.env[key];
11
- const deno = g.Deno;
12
- if (deno !== void 0) return deno.env.get(key);
13
- }
14
- /**
15
- * Reads an environment variable and throws when it is missing or empty.
16
- * Use for values the SDK cannot fall back on (e.g. upstream service
17
- * URLs).
18
- *
19
- * @throws {Error} When the environment variable is unset or an empty
20
- * string.
21
- */
22
- function requireEnv(key) {
23
- const value = getEnv(key);
24
- if (!value) throw new Error(`Missing required environment variable: ${key}`);
25
- return value;
26
- }
27
- /**
28
- * Whether outbound HubSpot OAuth and API calls should attach DPoP on
29
- * the wire. Disabled only when `HUBSPOT_DPOP_ENABLED` is exactly the
30
- * string `"false"` (unset or any other value keeps DPoP enabled).
31
- */
32
- function isHubspotDpopEnabled() {
33
- return getEnv("HUBSPOT_DPOP_ENABLED") !== "false";
34
- }
35
- /**
36
- * Whether the SDK should use CIMD-style OAuth (client ID URL + JWT client
37
- * assertion). Disabled only when `HUBSPOT_CIMD_ENABLED` is exactly the
38
- * string `"false"` (unset or any other value keeps CIMD enabled).
39
- */
40
- function isHubspotCimdEnabled() {
41
- return getEnv("HUBSPOT_CIMD_ENABLED") !== "false";
42
- }
43
- /**
44
- * Whether `HUBSPOT_APP_PRIVATE_KEY` must be set for `secureStart`. False
45
- * when both CIMD and DPoP are disabled — the SDK then uses
46
- * `client_secret` for OAuth and Bearer tokens only for API calls.
47
- */
48
- function isHubspotAppPrivateKeyRequired() {
49
- return isHubspotCimdEnabled() || isHubspotDpopEnabled();
50
- }
51
- //#endregion
52
- export { isHubspotAppPrivateKeyRequired, isHubspotCimdEnabled, isHubspotDpopEnabled, requireEnv };
53
-
54
- //# sourceMappingURL=env-utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"env-utils.js","names":[],"sources":["../../../src/server/utils/env-utils.ts"],"sourcesContent":["interface GlobalWithOptionalEnv {\n process?: { env?: Record<string, string | undefined> };\n Deno?: { env: { get(name: string): string | undefined } };\n}\n\n/**\n * Reads an environment variable in a way that works under both Node\n * (`process.env`) and Deno (`Deno.env.get`). Returns `undefined` when\n * the variable is unset or when neither runtime is available.\n */\nexport function getEnv(key: string): string | undefined {\n const g = globalThis as GlobalWithOptionalEnv;\n const proc = g.process;\n if (proc?.env) {\n return proc.env[key];\n }\n const deno = g.Deno;\n if (deno !== undefined) {\n return deno.env.get(key);\n }\n return undefined;\n}\n\n/**\n * Reads an environment variable and throws when it is missing or empty.\n * Use for values the SDK cannot fall back on (e.g. upstream service\n * URLs).\n *\n * @throws {Error} When the environment variable is unset or an empty\n * string.\n */\nexport function requireEnv(key: string): string {\n const value = getEnv(key);\n if (!value) {\n throw new Error(`Missing required environment variable: ${key}`);\n }\n return value;\n}\n\n/**\n * Whether outbound HubSpot OAuth and API calls should attach DPoP on\n * the wire. Disabled only when `HUBSPOT_DPOP_ENABLED` is exactly the\n * string `\"false\"` (unset or any other value keeps DPoP enabled).\n */\nexport function isHubspotDpopEnabled(): boolean {\n return getEnv('HUBSPOT_DPOP_ENABLED') !== 'false';\n}\n\n/**\n * Whether the SDK should use CIMD-style OAuth (client ID URL + JWT client\n * assertion). Disabled only when `HUBSPOT_CIMD_ENABLED` is exactly the\n * string `\"false\"` (unset or any other value keeps CIMD enabled).\n */\nexport function isHubspotCimdEnabled(): boolean {\n return getEnv('HUBSPOT_CIMD_ENABLED') !== 'false';\n}\n\n/**\n * Whether `HUBSPOT_APP_PRIVATE_KEY` must be set for `secureStart`. False\n * when both CIMD and DPoP are disabled — the SDK then uses\n * `client_secret` for OAuth and Bearer tokens only for API calls.\n */\nexport function isHubspotAppPrivateKeyRequired(): boolean {\n return isHubspotCimdEnabled() || isHubspotDpopEnabled();\n}\n"],"mappings":";;;;;;AAUA,SAAgB,OAAO,KAAiC;CACtD,MAAM,IAAI;CACV,MAAM,OAAO,EAAE;CACf,IAAI,MAAM,KACR,OAAO,KAAK,IAAI;CAElB,MAAM,OAAO,EAAE;CACf,IAAI,SAAS,KAAA,GACX,OAAO,KAAK,IAAI,IAAI,IAAI;;;;;;;;;;AAa5B,SAAgB,WAAW,KAAqB;CAC9C,MAAM,QAAQ,OAAO,IAAI;CACzB,IAAI,CAAC,OACH,MAAM,IAAI,MAAM,0CAA0C,MAAM;CAElE,OAAO;;;;;;;AAQT,SAAgB,uBAAgC;CAC9C,OAAO,OAAO,uBAAuB,KAAK;;;;;;;AAQ5C,SAAgB,uBAAgC;CAC9C,OAAO,OAAO,uBAAuB,KAAK;;;;;;;AAQ5C,SAAgB,iCAA0C;CACxD,OAAO,sBAAsB,IAAI,sBAAsB"}
@@ -1,16 +0,0 @@
1
- //#region src/server/utils/jwk-utils.d.ts
2
- interface GetJwkThumbprintOptions {
3
- /** EC P-256 public JWK whose thumbprint to compute. */
4
- publicKeyJwk: JsonWebKey;
5
- }
6
- /**
7
- * Computes the RFC 7638 JWK thumbprint of an EC P-256 public JWK.
8
- * Per §3.2 the canonical form contains only `crv`, `kty`, `x`, `y`,
9
- * sorted lexicographically — no whitespace, no other members. The
10
- * SHA-256 of this canonical UTF-8 JSON, base64url-encoded, is the
11
- * stable identifier (`jkt`) DPoP uses to bind tokens to public keys.
12
- */
13
- declare function getJwkThumbprint(options: GetJwkThumbprintOptions): Promise<string>;
14
- //#endregion
15
- export { getJwkThumbprint };
16
- //# sourceMappingURL=jwk-utils.d.ts.map
@@ -1,24 +0,0 @@
1
- import { base64url } from "../shared/encoding/base64.js";
2
- //#region src/server/utils/jwk-utils.ts
3
- /**
4
- * Computes the RFC 7638 JWK thumbprint of an EC P-256 public JWK.
5
- * Per §3.2 the canonical form contains only `crv`, `kty`, `x`, `y`,
6
- * sorted lexicographically — no whitespace, no other members. The
7
- * SHA-256 of this canonical UTF-8 JSON, base64url-encoded, is the
8
- * stable identifier (`jkt`) DPoP uses to bind tokens to public keys.
9
- */
10
- async function getJwkThumbprint(options) {
11
- const { publicKeyJwk } = options;
12
- const canonical = JSON.stringify({
13
- crv: publicKeyJwk.crv,
14
- kty: publicKeyJwk.kty,
15
- x: publicKeyJwk.x,
16
- y: publicKeyJwk.y
17
- });
18
- const digest = await crypto.subtle.digest("SHA-256", new TextEncoder().encode(canonical));
19
- return base64url(new Uint8Array(digest));
20
- }
21
- //#endregion
22
- export { getJwkThumbprint };
23
-
24
- //# sourceMappingURL=jwk-utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"jwk-utils.js","names":[],"sources":["../../../src/server/utils/jwk-utils.ts"],"sourcesContent":["import { base64url } from './base64-utils.ts';\n\nexport interface GetJwkThumbprintOptions {\n /** EC P-256 public JWK whose thumbprint to compute. */\n publicKeyJwk: JsonWebKey;\n}\n\n/**\n * Computes the RFC 7638 JWK thumbprint of an EC P-256 public JWK.\n * Per §3.2 the canonical form contains only `crv`, `kty`, `x`, `y`,\n * sorted lexicographically — no whitespace, no other members. The\n * SHA-256 of this canonical UTF-8 JSON, base64url-encoded, is the\n * stable identifier (`jkt`) DPoP uses to bind tokens to public keys.\n */\nexport async function getJwkThumbprint(\n options: GetJwkThumbprintOptions\n): Promise<string> {\n const { publicKeyJwk } = options;\n const canonical = JSON.stringify({\n crv: publicKeyJwk.crv,\n kty: publicKeyJwk.kty,\n x: publicKeyJwk.x,\n y: publicKeyJwk.y,\n });\n const digest = await crypto.subtle.digest(\n 'SHA-256',\n new TextEncoder().encode(canonical)\n );\n return base64url(new Uint8Array(digest));\n}\n"],"mappings":";;;;;;;;;AAcA,eAAsB,iBACpB,SACiB;CACjB,MAAM,EAAE,iBAAiB;CACzB,MAAM,YAAY,KAAK,UAAU;EAC/B,KAAK,aAAa;EAClB,KAAK,aAAa;EAClB,GAAG,aAAa;EAChB,GAAG,aAAa;EACjB,CAAC;CACF,MAAM,SAAS,MAAM,OAAO,OAAO,OACjC,WACA,IAAI,aAAa,CAAC,OAAO,UAAU,CACpC;CACD,OAAO,UAAU,IAAI,WAAW,OAAO,CAAC"}
@@ -1,39 +0,0 @@
1
- //#region src/server/utils/jwt-utils.d.ts
2
- interface VerifyJwtOptions {
3
- /** Compact-serialized JWT to verify. */
4
- token: string;
5
- /** Public key in JWK form. Caller is responsible for trusting it. */
6
- publicKeyJwk: JsonWebKey;
7
- }
8
- /**
9
- * Verifies signature and (if present) `exp` (RFC 7519 §4.1.4) on a
10
- * JWT and returns its payload.
11
- *
12
- * @throws {Error} When the signature fails or when `exp` has passed.
13
- */
14
- declare function verifyJwt(options: VerifyJwtOptions): Promise<Record<string, unknown>>;
15
- interface SignJwtOptions {
16
- /** ES256 private key as a non-extractable WebCrypto key. */
17
- privateKey: CryptoKey;
18
- /**
19
- * Custom claims merged onto an `iat` claim (and `exp` when
20
- * `ttlSeconds` is supplied). Caller-provided keys override the
21
- * standard ones.
22
- */
23
- payload: Record<string, unknown>;
24
- /**
25
- * Lifetime of the token in seconds. When set, the JWT's `exp` claim
26
- * is computed as `iat + ttlSeconds`. When omitted, no `exp` is added
27
- * (the caller is responsible for one if needed).
28
- */
29
- ttlSeconds?: number;
30
- }
31
- /**
32
- * Signs a JWT (RFC 7519) with `alg=ES256, typ=JWT` and returns the
33
- * compact serialization. Always sets `iat` to the current second; the
34
- * caller controls every other claim via `payload`.
35
- */
36
- declare function signJwt(options: SignJwtOptions): Promise<string>;
37
- //#endregion
38
- export { signJwt, verifyJwt };
39
- //# sourceMappingURL=jwt-utils.d.ts.map