@qlever-llc/trellis 0.8.4 → 0.9.0-rc.10

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 (693) hide show
  1. package/README.md +1 -1
  2. package/bin/trellis-generate.js +0 -0
  3. package/esm/auth/browser/login.d.ts.map +1 -1
  4. package/esm/auth/browser/login.js +46 -3
  5. package/esm/auth/browser/portal.d.ts.map +1 -1
  6. package/esm/auth/browser/portal.js +5 -1
  7. package/esm/auth/browser/session.d.ts +18 -7
  8. package/esm/auth/browser/session.d.ts.map +1 -1
  9. package/esm/auth/browser/session.js +47 -11
  10. package/esm/auth/browser/storage.d.ts +6 -1
  11. package/esm/auth/browser/storage.d.ts.map +1 -1
  12. package/esm/auth/browser/storage.js +15 -3
  13. package/esm/auth/browser.d.ts +2 -2
  14. package/esm/auth/browser.d.ts.map +1 -1
  15. package/esm/auth/browser.js +1 -1
  16. package/esm/auth/device_activation.d.ts +36 -33
  17. package/esm/auth/device_activation.d.ts.map +1 -1
  18. package/esm/auth/device_activation.js +26 -22
  19. package/esm/auth/mod.d.ts +4 -4
  20. package/esm/auth/mod.d.ts.map +1 -1
  21. package/esm/auth/mod.js +2 -2
  22. package/esm/auth/proof.d.ts +3 -1
  23. package/esm/auth/proof.d.ts.map +1 -1
  24. package/esm/auth/proof.js +21 -15
  25. package/esm/auth/protocol.d.ts +2457 -941
  26. package/esm/auth/protocol.d.ts.map +1 -1
  27. package/esm/auth/protocol.js +747 -375
  28. package/esm/auth/schemas.d.ts +25 -4
  29. package/esm/auth/schemas.d.ts.map +1 -1
  30. package/esm/auth/schemas.js +14 -4
  31. package/esm/auth/session_auth.d.ts +1 -1
  32. package/esm/auth/session_auth.d.ts.map +1 -1
  33. package/esm/auth/session_auth.js +7 -1
  34. package/esm/client_connect.d.ts +2 -0
  35. package/esm/client_connect.d.ts.map +1 -1
  36. package/esm/client_connect.js +76 -15
  37. package/esm/contract.d.ts +3 -0
  38. package/esm/contract.d.ts.map +1 -1
  39. package/esm/contract_support/mod.d.ts +422 -43
  40. package/esm/contract_support/mod.d.ts.map +1 -1
  41. package/esm/contract_support/mod.js +734 -33
  42. package/esm/contract_support/protocol.d.ts +20 -5
  43. package/esm/contract_support/protocol.d.ts.map +1 -1
  44. package/esm/contract_support/protocol.js +18 -10
  45. package/esm/contract_support/runtime.d.ts +11 -0
  46. package/esm/contract_support/runtime.d.ts.map +1 -1
  47. package/esm/contract_support/schema_pointers.d.ts.map +1 -1
  48. package/esm/contract_support/schema_pointers.js +32 -14
  49. package/esm/device.d.ts +2 -0
  50. package/esm/device.d.ts.map +1 -1
  51. package/esm/device.js +3 -0
  52. package/esm/errors/AuthError.d.ts +2 -1
  53. package/esm/errors/AuthError.d.ts.map +1 -1
  54. package/esm/errors/AuthError.js +8 -3
  55. package/esm/errors/index.d.ts +4 -4
  56. package/esm/errors/index.d.ts.map +1 -1
  57. package/esm/errors/index.js +1 -0
  58. package/esm/generated-sdk/auth/api.d.ts +27 -9
  59. package/esm/generated-sdk/auth/api.d.ts.map +1 -1
  60. package/esm/generated-sdk/auth/api.js +16 -590
  61. package/esm/generated-sdk/auth/client.d.ts +91 -85
  62. package/esm/generated-sdk/auth/client.d.ts.map +1 -1
  63. package/esm/generated-sdk/auth/contract.d.ts +1 -1
  64. package/esm/generated-sdk/auth/contract.d.ts.map +1 -1
  65. package/esm/generated-sdk/auth/contract.js +4 -2
  66. package/esm/generated-sdk/auth/mod.d.ts +1 -0
  67. package/esm/generated-sdk/auth/mod.d.ts.map +1 -1
  68. package/esm/generated-sdk/auth/owned_api.d.ts +3 -0
  69. package/esm/generated-sdk/auth/owned_api.d.ts.map +1 -0
  70. package/esm/generated-sdk/auth/owned_api.js +594 -0
  71. package/esm/generated-sdk/auth/schemas.d.ts +9959 -5160
  72. package/esm/generated-sdk/auth/schemas.d.ts.map +1 -1
  73. package/esm/generated-sdk/auth/schemas.js +136 -137
  74. package/esm/generated-sdk/auth/types.d.ts +2418 -1557
  75. package/esm/generated-sdk/auth/types.d.ts.map +1 -1
  76. package/esm/generated-sdk/auth/types.js +1 -1
  77. package/esm/generated-sdk/health/api.d.ts +24 -9
  78. package/esm/generated-sdk/health/api.d.ts.map +1 -1
  79. package/esm/generated-sdk/health/api.js +12 -20
  80. package/esm/generated-sdk/health/client.d.ts +2 -1
  81. package/esm/generated-sdk/health/client.d.ts.map +1 -1
  82. package/esm/generated-sdk/health/contract.d.ts.map +1 -1
  83. package/esm/generated-sdk/health/contract.js +2 -0
  84. package/esm/generated-sdk/health/owned_api.d.ts +3 -0
  85. package/esm/generated-sdk/health/owned_api.d.ts.map +1 -0
  86. package/esm/generated-sdk/health/owned_api.js +16 -0
  87. package/esm/generated-sdk/health/types.d.ts +2 -0
  88. package/esm/generated-sdk/health/types.d.ts.map +1 -1
  89. package/esm/generated-sdk/jobs/api.d.ts +33 -9
  90. package/esm/generated-sdk/jobs/api.d.ts.map +1 -1
  91. package/esm/generated-sdk/jobs/api.js +22 -87
  92. package/esm/generated-sdk/jobs/client.d.ts +9 -2
  93. package/esm/generated-sdk/jobs/client.d.ts.map +1 -1
  94. package/esm/generated-sdk/jobs/contract.d.ts +1 -1
  95. package/esm/generated-sdk/jobs/contract.d.ts.map +1 -1
  96. package/esm/generated-sdk/jobs/contract.js +4 -2
  97. package/esm/generated-sdk/jobs/owned_api.d.ts +3 -0
  98. package/esm/generated-sdk/jobs/owned_api.d.ts.map +1 -0
  99. package/esm/generated-sdk/jobs/owned_api.js +118 -0
  100. package/esm/generated-sdk/jobs/schemas.d.ts +336 -123
  101. package/esm/generated-sdk/jobs/schemas.d.ts.map +1 -1
  102. package/esm/generated-sdk/jobs/schemas.js +17 -15
  103. package/esm/generated-sdk/jobs/types.d.ts +144 -34
  104. package/esm/generated-sdk/jobs/types.d.ts.map +1 -1
  105. package/esm/generated-sdk/jobs/types.js +36 -1
  106. package/esm/generated-sdk/state/api.d.ts +27 -9
  107. package/esm/generated-sdk/state/api.d.ts.map +1 -1
  108. package/esm/generated-sdk/state/api.js +16 -71
  109. package/esm/generated-sdk/state/client.d.ts +4 -2
  110. package/esm/generated-sdk/state/client.d.ts.map +1 -1
  111. package/esm/generated-sdk/state/contract.d.ts +1 -1
  112. package/esm/generated-sdk/state/contract.d.ts.map +1 -1
  113. package/esm/generated-sdk/state/contract.js +4 -2
  114. package/esm/generated-sdk/state/owned_api.d.ts +3 -0
  115. package/esm/generated-sdk/state/owned_api.d.ts.map +1 -0
  116. package/esm/generated-sdk/state/owned_api.js +66 -0
  117. package/esm/generated-sdk/state/schemas.d.ts +264 -284
  118. package/esm/generated-sdk/state/schemas.d.ts.map +1 -1
  119. package/esm/generated-sdk/state/schemas.js +6 -6
  120. package/esm/generated-sdk/state/types.d.ts +24 -23
  121. package/esm/generated-sdk/state/types.d.ts.map +1 -1
  122. package/esm/generated-sdk/state/types.js +1 -1
  123. package/esm/generated-sdk/trellis-core/api.d.ts +27 -9
  124. package/esm/generated-sdk/trellis-core/api.d.ts.map +1 -1
  125. package/esm/generated-sdk/trellis-core/api.js +16 -39
  126. package/esm/generated-sdk/trellis-core/client.d.ts +5 -2
  127. package/esm/generated-sdk/trellis-core/client.d.ts.map +1 -1
  128. package/esm/generated-sdk/trellis-core/contract.d.ts +1 -1
  129. package/esm/generated-sdk/trellis-core/contract.d.ts.map +1 -1
  130. package/esm/generated-sdk/trellis-core/contract.js +4 -2
  131. package/esm/generated-sdk/trellis-core/owned_api.d.ts +3 -0
  132. package/esm/generated-sdk/trellis-core/owned_api.d.ts.map +1 -0
  133. package/esm/generated-sdk/trellis-core/owned_api.js +42 -0
  134. package/esm/generated-sdk/trellis-core/schemas.d.ts +259 -11
  135. package/esm/generated-sdk/trellis-core/schemas.d.ts.map +1 -1
  136. package/esm/generated-sdk/trellis-core/schemas.js +5 -3
  137. package/esm/generated-sdk/trellis-core/types.d.ts +56 -1
  138. package/esm/generated-sdk/trellis-core/types.d.ts.map +1 -1
  139. package/esm/generated-sdk/trellis-core/types.js +1 -1
  140. package/esm/helpers.d.ts.map +1 -1
  141. package/esm/index.d.ts +4 -3
  142. package/esm/index.d.ts.map +1 -1
  143. package/esm/index.js +1 -0
  144. package/esm/jobs.d.ts +10 -1
  145. package/esm/jobs.d.ts.map +1 -1
  146. package/esm/jobs.js +16 -1
  147. package/esm/kv.d.ts.map +1 -1
  148. package/esm/kv.js +10 -4
  149. package/esm/models/auth/rpc/Logout.d.ts +4 -4
  150. package/esm/models/auth/rpc/Logout.d.ts.map +1 -1
  151. package/esm/models/auth/rpc/Logout.js +2 -2
  152. package/esm/models/trellis/Page.d.ts +2 -0
  153. package/esm/models/trellis/Page.d.ts.map +1 -0
  154. package/esm/models/trellis/Page.js +1 -0
  155. package/esm/models/trellis/State.d.ts +1 -0
  156. package/esm/models/trellis/State.d.ts.map +1 -1
  157. package/esm/models/trellis/State.js +1 -0
  158. package/esm/models/trellis/rpc/StateList.d.ts +9 -12
  159. package/esm/models/trellis/rpc/StateList.d.ts.map +1 -1
  160. package/esm/models/trellis/rpc/StateList.js +16 -18
  161. package/esm/npm/src/auth/browser/login.d.ts.map +1 -1
  162. package/esm/npm/src/auth/browser/login.js +46 -3
  163. package/esm/npm/src/auth/browser/portal.d.ts.map +1 -1
  164. package/esm/npm/src/auth/browser/portal.js +5 -1
  165. package/esm/npm/src/auth/browser/session.d.ts +18 -7
  166. package/esm/npm/src/auth/browser/session.d.ts.map +1 -1
  167. package/esm/npm/src/auth/browser/session.js +47 -11
  168. package/esm/npm/src/auth/browser/storage.d.ts +6 -1
  169. package/esm/npm/src/auth/browser/storage.d.ts.map +1 -1
  170. package/esm/npm/src/auth/browser/storage.js +15 -3
  171. package/esm/npm/src/auth/browser.d.ts +2 -2
  172. package/esm/npm/src/auth/browser.d.ts.map +1 -1
  173. package/esm/npm/src/auth/browser.js +1 -1
  174. package/esm/npm/src/auth/device_activation.d.ts +36 -33
  175. package/esm/npm/src/auth/device_activation.d.ts.map +1 -1
  176. package/esm/npm/src/auth/device_activation.js +26 -22
  177. package/esm/npm/src/auth/mod.d.ts +4 -4
  178. package/esm/npm/src/auth/mod.d.ts.map +1 -1
  179. package/esm/npm/src/auth/mod.js +2 -2
  180. package/esm/npm/src/auth/proof.d.ts +3 -1
  181. package/esm/npm/src/auth/proof.d.ts.map +1 -1
  182. package/esm/npm/src/auth/proof.js +21 -15
  183. package/esm/npm/src/auth/protocol.d.ts +2457 -941
  184. package/esm/npm/src/auth/protocol.d.ts.map +1 -1
  185. package/esm/npm/src/auth/protocol.js +747 -375
  186. package/esm/npm/src/auth/schemas.d.ts +25 -4
  187. package/esm/npm/src/auth/schemas.d.ts.map +1 -1
  188. package/esm/npm/src/auth/schemas.js +14 -4
  189. package/esm/npm/src/auth/session_auth.d.ts +1 -1
  190. package/esm/npm/src/auth/session_auth.d.ts.map +1 -1
  191. package/esm/npm/src/auth/session_auth.js +7 -1
  192. package/esm/npm/src/client_connect.d.ts +2 -0
  193. package/esm/npm/src/client_connect.d.ts.map +1 -1
  194. package/esm/npm/src/client_connect.js +76 -15
  195. package/esm/npm/src/contract.d.ts +3 -0
  196. package/esm/npm/src/contract.d.ts.map +1 -1
  197. package/esm/npm/src/contract_support/mod.d.ts +422 -43
  198. package/esm/npm/src/contract_support/mod.d.ts.map +1 -1
  199. package/esm/npm/src/contract_support/mod.js +734 -33
  200. package/esm/npm/src/contract_support/protocol.d.ts +20 -5
  201. package/esm/npm/src/contract_support/protocol.d.ts.map +1 -1
  202. package/esm/npm/src/contract_support/protocol.js +18 -10
  203. package/esm/npm/src/contract_support/runtime.d.ts +11 -0
  204. package/esm/npm/src/contract_support/runtime.d.ts.map +1 -1
  205. package/esm/npm/src/contract_support/schema_pointers.d.ts.map +1 -1
  206. package/esm/npm/src/contract_support/schema_pointers.js +32 -14
  207. package/esm/npm/src/device/deno.d.ts.map +1 -1
  208. package/esm/npm/src/device/deno.js +6 -0
  209. package/esm/npm/src/device.d.ts +2 -0
  210. package/esm/npm/src/device.d.ts.map +1 -1
  211. package/esm/npm/src/device.js +3 -0
  212. package/esm/npm/src/errors/AuthError.d.ts +2 -1
  213. package/esm/npm/src/errors/AuthError.d.ts.map +1 -1
  214. package/esm/npm/src/errors/AuthError.js +8 -3
  215. package/esm/npm/src/errors/index.d.ts +4 -4
  216. package/esm/npm/src/errors/index.d.ts.map +1 -1
  217. package/esm/npm/src/errors/index.js +1 -0
  218. package/esm/npm/src/generate.js +39 -26
  219. package/esm/npm/src/helpers.d.ts.map +1 -1
  220. package/esm/npm/src/index.d.ts +4 -3
  221. package/esm/npm/src/index.d.ts.map +1 -1
  222. package/esm/npm/src/index.js +1 -0
  223. package/esm/npm/src/jobs.d.ts +10 -1
  224. package/esm/npm/src/jobs.d.ts.map +1 -1
  225. package/esm/npm/src/jobs.js +16 -1
  226. package/esm/npm/src/kv.d.ts.map +1 -1
  227. package/esm/npm/src/kv.js +10 -4
  228. package/esm/npm/src/models/auth/rpc/Logout.d.ts +4 -4
  229. package/esm/npm/src/models/auth/rpc/Logout.d.ts.map +1 -1
  230. package/esm/npm/src/models/auth/rpc/Logout.js +2 -2
  231. package/esm/npm/src/models/trellis/Page.d.ts +2 -0
  232. package/esm/npm/src/models/trellis/Page.d.ts.map +1 -0
  233. package/esm/npm/src/models/trellis/Page.js +1 -0
  234. package/esm/npm/src/models/trellis/State.d.ts +1 -0
  235. package/esm/npm/src/models/trellis/State.d.ts.map +1 -1
  236. package/esm/npm/src/models/trellis/State.js +1 -0
  237. package/esm/npm/src/models/trellis/rpc/StateList.d.ts +9 -12
  238. package/esm/npm/src/models/trellis/rpc/StateList.d.ts.map +1 -1
  239. package/esm/npm/src/models/trellis/rpc/StateList.js +16 -18
  240. package/esm/npm/src/operations.d.ts +16 -7
  241. package/esm/npm/src/operations.d.ts.map +1 -1
  242. package/esm/npm/src/operations.js +84 -19
  243. package/esm/npm/src/runtime_transport.d.ts +2 -0
  244. package/esm/npm/src/runtime_transport.d.ts.map +1 -1
  245. package/esm/npm/src/runtime_transport.js +1 -0
  246. package/esm/npm/src/server/internal_jobs/active-job.d.ts +2 -1
  247. package/esm/npm/src/server/internal_jobs/active-job.d.ts.map +1 -1
  248. package/esm/npm/src/server/internal_jobs/active-job.js +3 -0
  249. package/esm/npm/src/server/internal_jobs/job-manager.d.ts +4 -1
  250. package/esm/npm/src/server/internal_jobs/job-manager.d.ts.map +1 -1
  251. package/esm/npm/src/server/internal_jobs/job-manager.js +61 -1
  252. package/esm/npm/src/server/internal_jobs/projection.js +1 -0
  253. package/esm/npm/src/server/internal_jobs/runtime-worker.d.ts +13 -1
  254. package/esm/npm/src/server/internal_jobs/runtime-worker.d.ts.map +1 -1
  255. package/esm/npm/src/server/internal_jobs/runtime-worker.js +73 -13
  256. package/esm/npm/src/server/internal_jobs/types.d.ts +19 -0
  257. package/esm/npm/src/server/internal_jobs/types.d.ts.map +1 -1
  258. package/esm/npm/src/server/internal_jobs/types.js +10 -0
  259. package/esm/npm/src/server/runtime.d.ts +1 -0
  260. package/esm/npm/src/server/runtime.d.ts.map +1 -1
  261. package/esm/npm/src/server/service.d.ts +10 -1
  262. package/esm/npm/src/server/service.d.ts.map +1 -1
  263. package/esm/npm/src/server/service.js +210 -64
  264. package/esm/npm/src/server/transfer.d.ts.map +1 -1
  265. package/esm/npm/src/server/transfer.js +4 -0
  266. package/esm/npm/src/server.d.ts.map +1 -1
  267. package/esm/npm/src/server.js +337 -34
  268. package/esm/npm/src/store.d.ts +8 -1
  269. package/esm/npm/src/store.d.ts.map +1 -1
  270. package/esm/npm/src/store.js +46 -8
  271. package/esm/npm/src/transfer.d.ts +3 -0
  272. package/esm/npm/src/transfer.d.ts.map +1 -1
  273. package/esm/npm/src/transfer.js +20 -30
  274. package/esm/npm/src/trellis.d.ts +85 -22
  275. package/esm/npm/src/trellis.d.ts.map +1 -1
  276. package/esm/npm/src/trellis.js +525 -61
  277. package/esm/operations.d.ts +16 -7
  278. package/esm/operations.d.ts.map +1 -1
  279. package/esm/operations.js +84 -19
  280. package/esm/runtime_transport.d.ts +2 -0
  281. package/esm/runtime_transport.d.ts.map +1 -1
  282. package/esm/runtime_transport.js +1 -0
  283. package/esm/store.d.ts +8 -1
  284. package/esm/store.d.ts.map +1 -1
  285. package/esm/store.js +46 -8
  286. package/esm/transfer.d.ts +3 -0
  287. package/esm/transfer.d.ts.map +1 -1
  288. package/esm/transfer.js +20 -30
  289. package/esm/trellis.d.ts +85 -22
  290. package/esm/trellis.d.ts.map +1 -1
  291. package/esm/trellis.js +525 -61
  292. package/package.json +6 -3
  293. package/script/auth/browser/login.d.ts.map +1 -1
  294. package/script/auth/browser/login.js +46 -3
  295. package/script/auth/browser/portal.d.ts.map +1 -1
  296. package/script/auth/browser/portal.js +5 -1
  297. package/script/auth/browser/session.d.ts +18 -7
  298. package/script/auth/browser/session.d.ts.map +1 -1
  299. package/script/auth/browser/session.js +47 -11
  300. package/script/auth/browser/storage.d.ts +6 -1
  301. package/script/auth/browser/storage.d.ts.map +1 -1
  302. package/script/auth/browser/storage.js +15 -3
  303. package/script/auth/browser.d.ts +2 -2
  304. package/script/auth/browser.d.ts.map +1 -1
  305. package/script/auth/browser.js +2 -1
  306. package/script/auth/device_activation.d.ts +36 -33
  307. package/script/auth/device_activation.d.ts.map +1 -1
  308. package/script/auth/device_activation.js +25 -21
  309. package/script/auth/mod.d.ts +4 -4
  310. package/script/auth/mod.d.ts.map +1 -1
  311. package/script/auth/mod.js +132 -137
  312. package/script/auth/proof.d.ts +3 -1
  313. package/script/auth/proof.d.ts.map +1 -1
  314. package/script/auth/proof.js +21 -15
  315. package/script/auth/protocol.d.ts +2457 -941
  316. package/script/auth/protocol.d.ts.map +1 -1
  317. package/script/auth/protocol.js +749 -377
  318. package/script/auth/schemas.d.ts +25 -4
  319. package/script/auth/schemas.d.ts.map +1 -1
  320. package/script/auth/schemas.js +16 -5
  321. package/script/auth/session_auth.d.ts +1 -1
  322. package/script/auth/session_auth.d.ts.map +1 -1
  323. package/script/auth/session_auth.js +7 -1
  324. package/script/client_connect.d.ts +2 -0
  325. package/script/client_connect.d.ts.map +1 -1
  326. package/script/client_connect.js +76 -15
  327. package/script/contract.d.ts +3 -0
  328. package/script/contract.d.ts.map +1 -1
  329. package/script/contract_support/mod.d.ts +422 -43
  330. package/script/contract_support/mod.d.ts.map +1 -1
  331. package/script/contract_support/mod.js +757 -51
  332. package/script/contract_support/protocol.d.ts +20 -5
  333. package/script/contract_support/protocol.d.ts.map +1 -1
  334. package/script/contract_support/protocol.js +20 -11
  335. package/script/contract_support/runtime.d.ts +11 -0
  336. package/script/contract_support/runtime.d.ts.map +1 -1
  337. package/script/contract_support/schema_pointers.d.ts.map +1 -1
  338. package/script/contract_support/schema_pointers.js +32 -14
  339. package/script/device.d.ts +2 -0
  340. package/script/device.d.ts.map +1 -1
  341. package/script/device.js +3 -0
  342. package/script/errors/AuthError.d.ts +2 -1
  343. package/script/errors/AuthError.d.ts.map +1 -1
  344. package/script/errors/AuthError.js +8 -3
  345. package/script/errors/index.d.ts +4 -4
  346. package/script/errors/index.d.ts.map +1 -1
  347. package/script/errors/index.js +1 -0
  348. package/script/generated-sdk/auth/api.d.ts +27 -9
  349. package/script/generated-sdk/auth/api.d.ts.map +1 -1
  350. package/script/generated-sdk/auth/api.js +17 -591
  351. package/script/generated-sdk/auth/client.d.ts +91 -85
  352. package/script/generated-sdk/auth/client.d.ts.map +1 -1
  353. package/script/generated-sdk/auth/contract.d.ts +1 -1
  354. package/script/generated-sdk/auth/contract.d.ts.map +1 -1
  355. package/script/generated-sdk/auth/contract.js +4 -2
  356. package/script/generated-sdk/auth/mod.d.ts +1 -0
  357. package/script/generated-sdk/auth/mod.d.ts.map +1 -1
  358. package/script/generated-sdk/auth/owned_api.d.ts +3 -0
  359. package/script/generated-sdk/auth/owned_api.d.ts.map +1 -0
  360. package/script/generated-sdk/auth/owned_api.js +597 -0
  361. package/script/generated-sdk/auth/schemas.d.ts +9959 -5160
  362. package/script/generated-sdk/auth/schemas.d.ts.map +1 -1
  363. package/script/generated-sdk/auth/schemas.js +139 -140
  364. package/script/generated-sdk/auth/types.d.ts +2418 -1557
  365. package/script/generated-sdk/auth/types.d.ts.map +1 -1
  366. package/script/generated-sdk/auth/types.js +1 -1
  367. package/script/generated-sdk/health/api.d.ts +24 -9
  368. package/script/generated-sdk/health/api.d.ts.map +1 -1
  369. package/script/generated-sdk/health/api.js +13 -21
  370. package/script/generated-sdk/health/client.d.ts +2 -1
  371. package/script/generated-sdk/health/client.d.ts.map +1 -1
  372. package/script/generated-sdk/health/contract.d.ts.map +1 -1
  373. package/script/generated-sdk/health/contract.js +2 -0
  374. package/script/generated-sdk/health/owned_api.d.ts +3 -0
  375. package/script/generated-sdk/health/owned_api.d.ts.map +1 -0
  376. package/script/generated-sdk/health/owned_api.js +19 -0
  377. package/script/generated-sdk/health/types.d.ts +2 -0
  378. package/script/generated-sdk/health/types.d.ts.map +1 -1
  379. package/script/generated-sdk/jobs/api.d.ts +33 -9
  380. package/script/generated-sdk/jobs/api.d.ts.map +1 -1
  381. package/script/generated-sdk/jobs/api.js +23 -88
  382. package/script/generated-sdk/jobs/client.d.ts +9 -2
  383. package/script/generated-sdk/jobs/client.d.ts.map +1 -1
  384. package/script/generated-sdk/jobs/contract.d.ts +1 -1
  385. package/script/generated-sdk/jobs/contract.d.ts.map +1 -1
  386. package/script/generated-sdk/jobs/contract.js +4 -2
  387. package/script/generated-sdk/jobs/owned_api.d.ts +3 -0
  388. package/script/generated-sdk/jobs/owned_api.d.ts.map +1 -0
  389. package/script/generated-sdk/jobs/owned_api.js +154 -0
  390. package/script/generated-sdk/jobs/schemas.d.ts +336 -123
  391. package/script/generated-sdk/jobs/schemas.d.ts.map +1 -1
  392. package/script/generated-sdk/jobs/schemas.js +18 -16
  393. package/script/generated-sdk/jobs/types.d.ts +144 -34
  394. package/script/generated-sdk/jobs/types.d.ts.map +1 -1
  395. package/script/generated-sdk/jobs/types.js +38 -2
  396. package/script/generated-sdk/state/api.d.ts +27 -9
  397. package/script/generated-sdk/state/api.d.ts.map +1 -1
  398. package/script/generated-sdk/state/api.js +17 -72
  399. package/script/generated-sdk/state/client.d.ts +4 -2
  400. package/script/generated-sdk/state/client.d.ts.map +1 -1
  401. package/script/generated-sdk/state/contract.d.ts +1 -1
  402. package/script/generated-sdk/state/contract.d.ts.map +1 -1
  403. package/script/generated-sdk/state/contract.js +4 -2
  404. package/script/generated-sdk/state/owned_api.d.ts +3 -0
  405. package/script/generated-sdk/state/owned_api.d.ts.map +1 -0
  406. package/script/generated-sdk/state/owned_api.js +69 -0
  407. package/script/generated-sdk/state/schemas.d.ts +264 -284
  408. package/script/generated-sdk/state/schemas.d.ts.map +1 -1
  409. package/script/generated-sdk/state/schemas.js +6 -6
  410. package/script/generated-sdk/state/types.d.ts +24 -23
  411. package/script/generated-sdk/state/types.d.ts.map +1 -1
  412. package/script/generated-sdk/state/types.js +1 -1
  413. package/script/generated-sdk/trellis-core/api.d.ts +27 -9
  414. package/script/generated-sdk/trellis-core/api.d.ts.map +1 -1
  415. package/script/generated-sdk/trellis-core/api.js +17 -40
  416. package/script/generated-sdk/trellis-core/client.d.ts +5 -2
  417. package/script/generated-sdk/trellis-core/client.d.ts.map +1 -1
  418. package/script/generated-sdk/trellis-core/contract.d.ts +1 -1
  419. package/script/generated-sdk/trellis-core/contract.d.ts.map +1 -1
  420. package/script/generated-sdk/trellis-core/contract.js +4 -2
  421. package/script/generated-sdk/trellis-core/owned_api.d.ts +3 -0
  422. package/script/generated-sdk/trellis-core/owned_api.d.ts.map +1 -0
  423. package/script/generated-sdk/trellis-core/owned_api.js +45 -0
  424. package/script/generated-sdk/trellis-core/schemas.d.ts +259 -11
  425. package/script/generated-sdk/trellis-core/schemas.d.ts.map +1 -1
  426. package/script/generated-sdk/trellis-core/schemas.js +6 -4
  427. package/script/generated-sdk/trellis-core/types.d.ts +56 -1
  428. package/script/generated-sdk/trellis-core/types.d.ts.map +1 -1
  429. package/script/generated-sdk/trellis-core/types.js +1 -1
  430. package/script/helpers.d.ts.map +1 -1
  431. package/script/index.d.ts +4 -3
  432. package/script/index.d.ts.map +1 -1
  433. package/script/index.js +5 -2
  434. package/script/jobs.d.ts +10 -1
  435. package/script/jobs.d.ts.map +1 -1
  436. package/script/jobs.js +17 -2
  437. package/script/kv.d.ts.map +1 -1
  438. package/script/kv.js +10 -4
  439. package/script/models/auth/rpc/Logout.d.ts +4 -4
  440. package/script/models/auth/rpc/Logout.d.ts.map +1 -1
  441. package/script/models/auth/rpc/Logout.js +3 -3
  442. package/script/models/trellis/Page.d.ts +2 -0
  443. package/script/models/trellis/Page.d.ts.map +1 -0
  444. package/script/models/trellis/Page.js +6 -0
  445. package/script/models/trellis/State.d.ts +1 -0
  446. package/script/models/trellis/State.d.ts.map +1 -1
  447. package/script/models/trellis/State.js +1 -0
  448. package/script/models/trellis/rpc/StateList.d.ts +9 -12
  449. package/script/models/trellis/rpc/StateList.d.ts.map +1 -1
  450. package/script/models/trellis/rpc/StateList.js +16 -18
  451. package/script/npm/src/auth/browser/login.d.ts.map +1 -1
  452. package/script/npm/src/auth/browser/login.js +46 -3
  453. package/script/npm/src/auth/browser/portal.d.ts.map +1 -1
  454. package/script/npm/src/auth/browser/portal.js +5 -1
  455. package/script/npm/src/auth/browser/session.d.ts +18 -7
  456. package/script/npm/src/auth/browser/session.d.ts.map +1 -1
  457. package/script/npm/src/auth/browser/session.js +47 -11
  458. package/script/npm/src/auth/browser/storage.d.ts +6 -1
  459. package/script/npm/src/auth/browser/storage.d.ts.map +1 -1
  460. package/script/npm/src/auth/browser/storage.js +15 -3
  461. package/script/npm/src/auth/browser.d.ts +2 -2
  462. package/script/npm/src/auth/browser.d.ts.map +1 -1
  463. package/script/npm/src/auth/browser.js +2 -1
  464. package/script/npm/src/auth/device_activation.d.ts +36 -33
  465. package/script/npm/src/auth/device_activation.d.ts.map +1 -1
  466. package/script/npm/src/auth/device_activation.js +25 -21
  467. package/script/npm/src/auth/mod.d.ts +4 -4
  468. package/script/npm/src/auth/mod.d.ts.map +1 -1
  469. package/script/npm/src/auth/mod.js +132 -137
  470. package/script/npm/src/auth/proof.d.ts +3 -1
  471. package/script/npm/src/auth/proof.d.ts.map +1 -1
  472. package/script/npm/src/auth/proof.js +21 -15
  473. package/script/npm/src/auth/protocol.d.ts +2457 -941
  474. package/script/npm/src/auth/protocol.d.ts.map +1 -1
  475. package/script/npm/src/auth/protocol.js +749 -377
  476. package/script/npm/src/auth/schemas.d.ts +25 -4
  477. package/script/npm/src/auth/schemas.d.ts.map +1 -1
  478. package/script/npm/src/auth/schemas.js +16 -5
  479. package/script/npm/src/auth/session_auth.d.ts +1 -1
  480. package/script/npm/src/auth/session_auth.d.ts.map +1 -1
  481. package/script/npm/src/auth/session_auth.js +7 -1
  482. package/script/npm/src/client_connect.d.ts +2 -0
  483. package/script/npm/src/client_connect.d.ts.map +1 -1
  484. package/script/npm/src/client_connect.js +76 -15
  485. package/script/npm/src/contract.d.ts +3 -0
  486. package/script/npm/src/contract.d.ts.map +1 -1
  487. package/script/npm/src/contract_support/mod.d.ts +422 -43
  488. package/script/npm/src/contract_support/mod.d.ts.map +1 -1
  489. package/script/npm/src/contract_support/mod.js +757 -51
  490. package/script/npm/src/contract_support/protocol.d.ts +20 -5
  491. package/script/npm/src/contract_support/protocol.d.ts.map +1 -1
  492. package/script/npm/src/contract_support/protocol.js +20 -11
  493. package/script/npm/src/contract_support/runtime.d.ts +11 -0
  494. package/script/npm/src/contract_support/runtime.d.ts.map +1 -1
  495. package/script/npm/src/contract_support/schema_pointers.d.ts.map +1 -1
  496. package/script/npm/src/contract_support/schema_pointers.js +32 -14
  497. package/script/npm/src/device/deno.d.ts.map +1 -1
  498. package/script/npm/src/device/deno.js +6 -0
  499. package/script/npm/src/device.d.ts +2 -0
  500. package/script/npm/src/device.d.ts.map +1 -1
  501. package/script/npm/src/device.js +3 -0
  502. package/script/npm/src/errors/AuthError.d.ts +2 -1
  503. package/script/npm/src/errors/AuthError.d.ts.map +1 -1
  504. package/script/npm/src/errors/AuthError.js +8 -3
  505. package/script/npm/src/errors/index.d.ts +4 -4
  506. package/script/npm/src/errors/index.d.ts.map +1 -1
  507. package/script/npm/src/errors/index.js +1 -0
  508. package/script/npm/src/generate.js +39 -59
  509. package/script/npm/src/helpers.d.ts.map +1 -1
  510. package/script/npm/src/index.d.ts +4 -3
  511. package/script/npm/src/index.d.ts.map +1 -1
  512. package/script/npm/src/index.js +5 -2
  513. package/script/npm/src/jobs.d.ts +10 -1
  514. package/script/npm/src/jobs.d.ts.map +1 -1
  515. package/script/npm/src/jobs.js +17 -2
  516. package/script/npm/src/kv.d.ts.map +1 -1
  517. package/script/npm/src/kv.js +10 -4
  518. package/script/npm/src/models/auth/rpc/Logout.d.ts +4 -4
  519. package/script/npm/src/models/auth/rpc/Logout.d.ts.map +1 -1
  520. package/script/npm/src/models/auth/rpc/Logout.js +3 -3
  521. package/script/npm/src/models/trellis/Page.d.ts +2 -0
  522. package/script/npm/src/models/trellis/Page.d.ts.map +1 -0
  523. package/script/npm/src/models/trellis/Page.js +6 -0
  524. package/script/npm/src/models/trellis/State.d.ts +1 -0
  525. package/script/npm/src/models/trellis/State.d.ts.map +1 -1
  526. package/script/npm/src/models/trellis/State.js +1 -0
  527. package/script/npm/src/models/trellis/rpc/StateList.d.ts +9 -12
  528. package/script/npm/src/models/trellis/rpc/StateList.d.ts.map +1 -1
  529. package/script/npm/src/models/trellis/rpc/StateList.js +16 -18
  530. package/script/npm/src/operations.d.ts +16 -7
  531. package/script/npm/src/operations.d.ts.map +1 -1
  532. package/script/npm/src/operations.js +84 -19
  533. package/script/npm/src/runtime_transport.d.ts +2 -0
  534. package/script/npm/src/runtime_transport.d.ts.map +1 -1
  535. package/script/npm/src/runtime_transport.js +2 -1
  536. package/script/npm/src/server/internal_jobs/active-job.d.ts +2 -1
  537. package/script/npm/src/server/internal_jobs/active-job.d.ts.map +1 -1
  538. package/script/npm/src/server/internal_jobs/active-job.js +3 -0
  539. package/script/npm/src/server/internal_jobs/job-manager.d.ts +4 -1
  540. package/script/npm/src/server/internal_jobs/job-manager.d.ts.map +1 -1
  541. package/script/npm/src/server/internal_jobs/job-manager.js +61 -1
  542. package/script/npm/src/server/internal_jobs/projection.js +1 -0
  543. package/script/npm/src/server/internal_jobs/runtime-worker.d.ts +13 -1
  544. package/script/npm/src/server/internal_jobs/runtime-worker.d.ts.map +1 -1
  545. package/script/npm/src/server/internal_jobs/runtime-worker.js +74 -13
  546. package/script/npm/src/server/internal_jobs/types.d.ts +19 -0
  547. package/script/npm/src/server/internal_jobs/types.d.ts.map +1 -1
  548. package/script/npm/src/server/internal_jobs/types.js +11 -1
  549. package/script/npm/src/server/runtime.d.ts +1 -0
  550. package/script/npm/src/server/runtime.d.ts.map +1 -1
  551. package/script/npm/src/server/service.d.ts +10 -1
  552. package/script/npm/src/server/service.d.ts.map +1 -1
  553. package/script/npm/src/server/service.js +208 -62
  554. package/script/npm/src/server/transfer.d.ts.map +1 -1
  555. package/script/npm/src/server/transfer.js +4 -0
  556. package/script/npm/src/server.d.ts.map +1 -1
  557. package/script/npm/src/server.js +336 -33
  558. package/script/npm/src/store.d.ts +8 -1
  559. package/script/npm/src/store.d.ts.map +1 -1
  560. package/script/npm/src/store.js +46 -8
  561. package/script/npm/src/transfer.d.ts +3 -0
  562. package/script/npm/src/transfer.d.ts.map +1 -1
  563. package/script/npm/src/transfer.js +19 -29
  564. package/script/npm/src/trellis.d.ts +85 -22
  565. package/script/npm/src/trellis.d.ts.map +1 -1
  566. package/script/npm/src/trellis.js +525 -61
  567. package/script/operations.d.ts +16 -7
  568. package/script/operations.d.ts.map +1 -1
  569. package/script/operations.js +84 -19
  570. package/script/runtime_transport.d.ts +2 -0
  571. package/script/runtime_transport.d.ts.map +1 -1
  572. package/script/runtime_transport.js +2 -1
  573. package/script/store.d.ts +8 -1
  574. package/script/store.d.ts.map +1 -1
  575. package/script/store.js +46 -8
  576. package/script/transfer.d.ts +3 -0
  577. package/script/transfer.d.ts.map +1 -1
  578. package/script/transfer.js +19 -29
  579. package/script/trellis.d.ts +85 -22
  580. package/script/trellis.d.ts.map +1 -1
  581. package/script/trellis.js +525 -61
  582. package/src/_dnt.polyfills.ts +274 -0
  583. package/src/_dnt.shims.ts +64 -0
  584. package/src/auth/browser/login.ts +295 -0
  585. package/src/auth/browser/portal.ts +75 -0
  586. package/src/auth/browser/session.ts +197 -0
  587. package/src/auth/browser/storage.ts +105 -0
  588. package/src/auth/browser.ts +82 -0
  589. package/src/auth/device_activation.ts +715 -0
  590. package/src/auth/keys.ts +116 -0
  591. package/src/auth/mod.ts +298 -0
  592. package/src/auth/proof.ts +111 -0
  593. package/src/auth/protocol.ts +1629 -0
  594. package/src/auth/schemas.ts +145 -0
  595. package/src/auth/session_auth.ts +167 -0
  596. package/src/auth/time.ts +15 -0
  597. package/src/auth/trellis_id.ts +9 -0
  598. package/src/auth/types.ts +4 -0
  599. package/src/auth/utils.ts +87 -0
  600. package/src/auth.ts +2 -0
  601. package/src/browser.ts +8 -0
  602. package/src/client.ts +164 -0
  603. package/src/client_connect.ts +1328 -0
  604. package/src/codec.ts +107 -0
  605. package/src/connection.ts +466 -0
  606. package/src/contract.ts +84 -0
  607. package/src/contract_support/canonical.ts +217 -0
  608. package/src/contract_support/mod.ts +5079 -0
  609. package/src/contract_support/protocol.ts +213 -0
  610. package/src/contract_support/runtime.ts +129 -0
  611. package/src/contract_support/schema_pointers.ts +161 -0
  612. package/src/contracts.ts +9 -0
  613. package/src/device/deno.ts +941 -0
  614. package/src/device.ts +989 -0
  615. package/src/env.ts +1 -0
  616. package/src/errors/AuthError.ts +82 -0
  617. package/src/errors/KVError.ts +47 -0
  618. package/src/errors/RemoteError.ts +111 -0
  619. package/src/errors/StoreError.ts +43 -0
  620. package/src/errors/TransferError.ts +43 -0
  621. package/src/errors/TransportError.ts +48 -0
  622. package/src/errors/TrellisError.ts +20 -0
  623. package/src/errors/ValidationError.ts +80 -0
  624. package/src/errors/index.ts +195 -0
  625. package/src/generate.ts +329 -0
  626. package/src/globals.ts +26 -0
  627. package/src/health.ts +28 -0
  628. package/src/helpers.ts +63 -0
  629. package/src/host/mod.ts +9 -0
  630. package/src/host/node.ts +9 -0
  631. package/src/index.ts +233 -0
  632. package/src/jobs.ts +344 -0
  633. package/src/kv.ts +564 -0
  634. package/src/models/auth/rpc/Logout.ts +15 -0
  635. package/src/models/trellis/Page.ts +6 -0
  636. package/src/models/trellis/State.ts +55 -0
  637. package/src/models/trellis/TrellisError.ts +21 -0
  638. package/src/models/trellis/rpc/StateDelete.ts +13 -0
  639. package/src/models/trellis/rpc/StateGet.ts +25 -0
  640. package/src/models/trellis/rpc/StateList.ts +26 -0
  641. package/src/models/trellis/rpc/StatePut.ts +42 -0
  642. package/src/operations.ts +1508 -0
  643. package/src/runtime_transport.ts +132 -0
  644. package/src/sdk/auth.ts +2 -0
  645. package/src/sdk/core.ts +2 -0
  646. package/src/sdk/health.ts +2 -0
  647. package/src/sdk/jobs.ts +2 -0
  648. package/src/sdk/state.ts +2 -0
  649. package/src/server/health.ts +379 -0
  650. package/src/server/health_rpc.ts +51 -0
  651. package/src/server/health_schemas.ts +61 -0
  652. package/src/server/internal_jobs/active-job.ts +115 -0
  653. package/src/server/internal_jobs/bindings.ts +26 -0
  654. package/src/server/internal_jobs/cancellation-registry.ts +71 -0
  655. package/src/server/internal_jobs/heartbeat.ts +120 -0
  656. package/src/server/internal_jobs/job-manager.ts +456 -0
  657. package/src/server/internal_jobs/projection.ts +48 -0
  658. package/src/server/internal_jobs/runtime-worker.ts +741 -0
  659. package/src/server/internal_jobs/types.ts +124 -0
  660. package/src/server/runtime.ts +27 -0
  661. package/src/server/service.ts +2377 -0
  662. package/src/server/subscription.ts +143 -0
  663. package/src/server/transfer.ts +962 -0
  664. package/src/server.ts +1725 -0
  665. package/src/server_logger.ts +10 -0
  666. package/src/service/deno.ts +18 -0
  667. package/src/service/mod.ts +68 -0
  668. package/src/service/node.ts +18 -0
  669. package/src/store.ts +658 -0
  670. package/src/tasks.ts +34 -0
  671. package/src/telemetry/carrier.ts +35 -0
  672. package/src/telemetry/core.ts +31 -0
  673. package/src/telemetry/env.ts +23 -0
  674. package/src/telemetry/mod.ts +26 -0
  675. package/src/telemetry/nats.ts +15 -0
  676. package/src/telemetry/result.ts +20 -0
  677. package/src/telemetry/trace.ts +39 -0
  678. package/src/telemetry/trellis.ts +1 -0
  679. package/src/tracing.ts +28 -0
  680. package/src/transfer.ts +602 -0
  681. package/src/trellis.ts +3650 -0
  682. package/esm/models/trellis/Paginate.d.ts +0 -7
  683. package/esm/models/trellis/Paginate.d.ts.map +0 -1
  684. package/esm/models/trellis/Paginate.js +0 -5
  685. package/esm/npm/src/models/trellis/Paginate.d.ts +0 -7
  686. package/esm/npm/src/models/trellis/Paginate.d.ts.map +0 -1
  687. package/esm/npm/src/models/trellis/Paginate.js +0 -5
  688. package/script/models/trellis/Paginate.d.ts +0 -7
  689. package/script/models/trellis/Paginate.d.ts.map +0 -1
  690. package/script/models/trellis/Paginate.js +0 -11
  691. package/script/npm/src/models/trellis/Paginate.d.ts +0 -7
  692. package/script/npm/src/models/trellis/Paginate.d.ts.map +0 -1
  693. package/script/npm/src/models/trellis/Paginate.js +0 -11
@@ -0,0 +1,715 @@
1
+ import type { StaticDecode } from "typebox";
2
+ import { Type } from "typebox";
3
+ import { Value } from "typebox/value";
4
+ import type { BaseError } from "@qlever-llc/result";
5
+ import { AsyncResult } from "@qlever-llc/result";
6
+ import type { OperationRef } from "../operations.js";
7
+
8
+ import {
9
+ importEd25519PrivateKeyFromSeedBase64url,
10
+ importEd25519PublicKeyFromBase64url,
11
+ publicKeyBase64urlFromPrivateKey,
12
+ } from "./keys.js";
13
+ import type { NatsAuthTokenV1 } from "./schemas.js";
14
+ import {
15
+ AuthDevicesConnectInfoGetResponseSchema,
16
+ AuthDevicesConnectInfoGetSchema,
17
+ AuthDeviceUserAuthoritiesListResponseSchema,
18
+ AuthDeviceUserAuthoritiesListSchema,
19
+ AuthDeviceUserAuthoritiesRevokeResponseSchema,
20
+ AuthDeviceUserAuthoritiesRevokeSchema,
21
+ AuthResolveDeviceUserAuthoritiesProgressSchema,
22
+ AuthResolveDeviceUserAuthoritiesResponseSchema,
23
+ AuthResolveDeviceUserAuthoritiesSchema,
24
+ WaitForDeviceActivationRequestSchema,
25
+ WaitForDeviceActivationResponseSchema,
26
+ } from "./protocol.js";
27
+ import {
28
+ base64urlDecode,
29
+ base64urlEncode,
30
+ sha256,
31
+ toArrayBuffer,
32
+ utf8,
33
+ } from "./utils.js";
34
+ import { buildNatsConnectSignaturePayload } from "./session_auth.js";
35
+
36
+ const DEVICE_IDENTITY_HKDF_INFO = "trellis/device-identity/v1";
37
+ const DEVICE_ACTIVATION_HKDF_INFO = "trellis/device-activate/v1";
38
+ const DEVICE_QR_MAC_DOMAIN = "trellis-device-qr/v1";
39
+ const DEVICE_CONFIRMATION_DOMAIN = "trellis-device-confirm/v1";
40
+ const CROCKFORD_ALPHABET = "0123456789ABCDEFGHJKMNPQRSTVWXYZ";
41
+ const DEFAULT_WAIT_POLL_INTERVAL_MS = 3_000;
42
+
43
+ export const DeviceActivationPayloadSchema = Type.Object({
44
+ v: Type.Literal(1),
45
+ publicIdentityKey: Type.String({ minLength: 1 }),
46
+ nonce: Type.String({ minLength: 1 }),
47
+ qrMac: Type.String({ minLength: 1 }),
48
+ });
49
+
50
+ export const DeviceActivationWaitRequestSchema =
51
+ WaitForDeviceActivationRequestSchema;
52
+
53
+ export type DeviceActivationPayload = StaticDecode<
54
+ typeof DeviceActivationPayloadSchema
55
+ >;
56
+ export type DeviceActivationWaitRequest = StaticDecode<
57
+ typeof DeviceActivationWaitRequestSchema
58
+ >;
59
+ export type WaitForDeviceActivationResponse = StaticDecode<
60
+ typeof WaitForDeviceActivationResponseSchema
61
+ >;
62
+ export type AuthResolveDeviceUserAuthoritiesInput = StaticDecode<
63
+ typeof AuthResolveDeviceUserAuthoritiesSchema
64
+ >;
65
+ export type AuthResolveDeviceUserAuthoritiesProgress = StaticDecode<
66
+ typeof AuthResolveDeviceUserAuthoritiesProgressSchema
67
+ >;
68
+ export type AuthResolveDeviceUserAuthoritiesOutput = StaticDecode<
69
+ typeof AuthResolveDeviceUserAuthoritiesResponseSchema
70
+ >;
71
+ export type AuthDeviceUserAuthoritiesListInput = StaticDecode<
72
+ typeof AuthDeviceUserAuthoritiesListSchema
73
+ >;
74
+ export type AuthDeviceUserAuthoritiesListOutput = StaticDecode<
75
+ typeof AuthDeviceUserAuthoritiesListResponseSchema
76
+ >;
77
+ export type AuthDeviceUserAuthoritiesRevokeInput = StaticDecode<
78
+ typeof AuthDeviceUserAuthoritiesRevokeSchema
79
+ >;
80
+ export type AuthDeviceUserAuthoritiesRevokeResponse = StaticDecode<
81
+ typeof AuthDeviceUserAuthoritiesRevokeResponseSchema
82
+ >;
83
+ export type GetDeviceConnectInfoInput = StaticDecode<
84
+ typeof AuthDevicesConnectInfoGetSchema
85
+ >;
86
+ export type GetDeviceConnectInfoOutput = StaticDecode<
87
+ typeof AuthDevicesConnectInfoGetResponseSchema
88
+ >;
89
+
90
+ export type DeviceIdentity = {
91
+ identitySeed: Uint8Array;
92
+ identitySeedBase64url: string;
93
+ publicIdentityKey: string;
94
+ activationKey: Uint8Array;
95
+ activationKeyBase64url: string;
96
+ };
97
+
98
+ type DeviceActivationRpcMethod =
99
+ | "Auth.DeviceUserAuthorities.List"
100
+ | "Auth.DeviceUserAuthorities.Revoke"
101
+ | "Auth.Devices.ConnectInfo.Get";
102
+
103
+ type AuthResolveDeviceUserAuthoritiesOperationShape = {
104
+ subject: string;
105
+ input: typeof AuthResolveDeviceUserAuthoritiesSchema;
106
+ progress: typeof AuthResolveDeviceUserAuthoritiesProgressSchema;
107
+ output: typeof AuthResolveDeviceUserAuthoritiesResponseSchema;
108
+ };
109
+
110
+ export type AuthResolveDeviceUserAuthoritiesOperation = OperationRef<
111
+ AuthResolveDeviceUserAuthoritiesOperationShape,
112
+ AuthResolveDeviceUserAuthoritiesProgress,
113
+ AuthResolveDeviceUserAuthoritiesOutput
114
+ >;
115
+
116
+ type DeviceActivationRpcInputMap = {
117
+ "Auth.DeviceUserAuthorities.List": AuthDeviceUserAuthoritiesListInput;
118
+ "Auth.DeviceUserAuthorities.Revoke": AuthDeviceUserAuthoritiesRevokeInput;
119
+ "Auth.Devices.ConnectInfo.Get": GetDeviceConnectInfoInput;
120
+ };
121
+
122
+ type DeviceActivationRpcOutputMap = {
123
+ "Auth.DeviceUserAuthorities.List": AuthDeviceUserAuthoritiesListOutput;
124
+ "Auth.DeviceUserAuthorities.Revoke": AuthDeviceUserAuthoritiesRevokeResponse;
125
+ "Auth.Devices.ConnectInfo.Get": GetDeviceConnectInfoOutput;
126
+ };
127
+
128
+ type RequestClient = {
129
+ request<M extends DeviceActivationRpcMethod>(
130
+ method: M,
131
+ input: DeviceActivationRpcInputMap[M],
132
+ opts?: unknown,
133
+ ): AsyncResult<DeviceActivationRpcOutputMap[M], BaseError>;
134
+ };
135
+
136
+ type ResolveDeviceUserAuthoritiesOperationClient = {
137
+ operation(method: "Auth.DeviceUserAuthorities.Resolve"): {
138
+ input(
139
+ input: AuthResolveDeviceUserAuthoritiesInput,
140
+ ): {
141
+ start(): AsyncResult<
142
+ AuthResolveDeviceUserAuthoritiesOperation,
143
+ BaseError
144
+ >;
145
+ };
146
+ };
147
+ };
148
+
149
+ export type DeviceActivationTransport =
150
+ & RequestClient
151
+ & ResolveDeviceUserAuthoritiesOperationClient;
152
+
153
+ function concatBytes(parts: Uint8Array[]): Uint8Array {
154
+ const size = parts.reduce((total, part) => total + part.length, 0);
155
+ const bytes = new Uint8Array(size);
156
+ let offset = 0;
157
+ for (const part of parts) {
158
+ bytes.set(part, offset);
159
+ offset += part.length;
160
+ }
161
+ return bytes;
162
+ }
163
+
164
+ function normalizeSecretBytes(
165
+ value: Uint8Array | string,
166
+ name: string,
167
+ ): Uint8Array {
168
+ if (typeof value === "string") {
169
+ const decoded = base64urlDecode(value);
170
+ if (decoded.length === 0) throw new Error(`${name} must not be empty`);
171
+ return decoded;
172
+ }
173
+ if (value.length === 0) throw new Error(`${name} must not be empty`);
174
+ return value;
175
+ }
176
+
177
+ async function hkdfSha256(
178
+ inputKeyingMaterial: Uint8Array,
179
+ info: string,
180
+ length: number,
181
+ ): Promise<Uint8Array> {
182
+ const key = await crypto.subtle.importKey(
183
+ "raw",
184
+ toArrayBuffer(inputKeyingMaterial),
185
+ "HKDF",
186
+ false,
187
+ ["deriveBits"],
188
+ );
189
+ const derivedBits = await crypto.subtle.deriveBits(
190
+ {
191
+ name: "HKDF",
192
+ hash: "SHA-256",
193
+ salt: toArrayBuffer(new Uint8Array(0)),
194
+ info: toArrayBuffer(utf8(info)),
195
+ },
196
+ key,
197
+ length * 8,
198
+ );
199
+ return new Uint8Array(derivedBits);
200
+ }
201
+
202
+ async function hmacSha256(
203
+ keyBytes: Uint8Array,
204
+ data: Uint8Array,
205
+ ): Promise<Uint8Array> {
206
+ const key = await crypto.subtle.importKey(
207
+ "raw",
208
+ toArrayBuffer(keyBytes),
209
+ { name: "HMAC", hash: "SHA-256" },
210
+ false,
211
+ ["sign"],
212
+ );
213
+ return new Uint8Array(
214
+ await crypto.subtle.sign("HMAC", key, toArrayBuffer(data)),
215
+ );
216
+ }
217
+
218
+ function crockfordEncode(bytes: Uint8Array): string {
219
+ let value = 0;
220
+ let bits = 0;
221
+ let output = "";
222
+ for (const byte of bytes) {
223
+ value = (value << 8) | byte;
224
+ bits += 8;
225
+ while (bits >= 5) {
226
+ bits -= 5;
227
+ output += CROCKFORD_ALPHABET[(value >>> bits) & 31] ?? "0";
228
+ }
229
+ }
230
+ if (bits > 0) {
231
+ output += CROCKFORD_ALPHABET[(value << (5 - bits)) & 31] ?? "0";
232
+ }
233
+ return output;
234
+ }
235
+
236
+ function normalizeCrockford(value: string): string {
237
+ return value.trim().toUpperCase().replace(/O/g, "0").replace(/[IL]/g, "1");
238
+ }
239
+
240
+ async function sleep(ms: number, signal?: AbortSignal): Promise<void> {
241
+ if (signal?.aborted) {
242
+ throw signal.reason ?? new DOMException("Aborted", "AbortError");
243
+ }
244
+ await new Promise<void>((resolve, reject) => {
245
+ const timer = setTimeout(() => {
246
+ signal?.removeEventListener("abort", onAbort);
247
+ resolve();
248
+ }, ms);
249
+ function onAbort() {
250
+ clearTimeout(timer);
251
+ reject(signal?.reason ?? new DOMException("Aborted", "AbortError"));
252
+ }
253
+ signal?.addEventListener("abort", onAbort, { once: true });
254
+ });
255
+ }
256
+
257
+ function retryAfterDelayMs(response: Response): number | null {
258
+ const value = response.headers.get("Retry-After");
259
+ if (!value) return null;
260
+
261
+ const seconds = Number(value);
262
+ if (Number.isFinite(seconds) && seconds >= 0) return seconds * 1_000;
263
+
264
+ const dateMs = Date.parse(value);
265
+ if (!Number.isFinite(dateMs)) return null;
266
+ return Math.max(0, dateMs - Date.now());
267
+ }
268
+
269
+ async function responseErrorDetail(response: Response): Promise<string | null> {
270
+ const text = await response.text();
271
+ if (!text) return null;
272
+
273
+ try {
274
+ const parsed = JSON.parse(text) as Record<string, unknown>;
275
+ if (typeof parsed.reason === "string" && parsed.reason.length > 0) {
276
+ return parsed.reason;
277
+ }
278
+ if (typeof parsed.message === "string" && parsed.message.length > 0) {
279
+ return parsed.message;
280
+ }
281
+ } catch {
282
+ // Fall through to raw text below.
283
+ }
284
+
285
+ return text;
286
+ }
287
+
288
+ export async function deriveDeviceIdentity(
289
+ deviceRootSecret: Uint8Array,
290
+ ): Promise<DeviceIdentity> {
291
+ if (deviceRootSecret.length !== 32) {
292
+ throw new Error(
293
+ `Invalid device root secret length: ${deviceRootSecret.length} (expected 32)`,
294
+ );
295
+ }
296
+ const identitySeed = await hkdfSha256(
297
+ deviceRootSecret,
298
+ DEVICE_IDENTITY_HKDF_INFO,
299
+ 32,
300
+ );
301
+ const activationKey = await hkdfSha256(
302
+ deviceRootSecret,
303
+ DEVICE_ACTIVATION_HKDF_INFO,
304
+ 32,
305
+ );
306
+ const identitySeedBase64url = base64urlEncode(identitySeed);
307
+ const identityPrivateKey = await importEd25519PrivateKeyFromSeedBase64url(
308
+ identitySeedBase64url,
309
+ );
310
+ const publicIdentityKey = await publicKeyBase64urlFromPrivateKey(
311
+ identityPrivateKey,
312
+ );
313
+ return {
314
+ identitySeed,
315
+ identitySeedBase64url,
316
+ publicIdentityKey,
317
+ activationKey,
318
+ activationKeyBase64url: base64urlEncode(activationKey),
319
+ };
320
+ }
321
+
322
+ export async function deriveDeviceQrMac(input: {
323
+ activationKey: Uint8Array | string;
324
+ publicIdentityKey: string;
325
+ nonce: string;
326
+ }): Promise<string> {
327
+ const activationKey = normalizeSecretBytes(
328
+ input.activationKey,
329
+ "activationKey",
330
+ );
331
+ const mac = await hmacSha256(
332
+ activationKey,
333
+ concatBytes([
334
+ utf8(DEVICE_QR_MAC_DOMAIN),
335
+ utf8(input.publicIdentityKey),
336
+ utf8(input.nonce),
337
+ ]),
338
+ );
339
+ return base64urlEncode(mac.slice(0, 8));
340
+ }
341
+
342
+ export async function buildDeviceActivationPayload(input: {
343
+ activationKey: Uint8Array | string;
344
+ publicIdentityKey: string;
345
+ nonce: string;
346
+ }): Promise<DeviceActivationPayload> {
347
+ const qrMac = await deriveDeviceQrMac(input);
348
+ return {
349
+ v: 1,
350
+ publicIdentityKey: input.publicIdentityKey,
351
+ nonce: input.nonce,
352
+ qrMac,
353
+ };
354
+ }
355
+
356
+ export function encodeDeviceActivationPayload(
357
+ payload: DeviceActivationPayload,
358
+ ): string {
359
+ return base64urlEncode(utf8(JSON.stringify(payload)));
360
+ }
361
+
362
+ export function parseDeviceActivationPayload(
363
+ value: string,
364
+ ): DeviceActivationPayload {
365
+ const decoded = new TextDecoder().decode(base64urlDecode(value));
366
+ const parsed = JSON.parse(decoded);
367
+ if (!Value.Check(DeviceActivationPayloadSchema, parsed)) {
368
+ throw new Error("Invalid device activation payload");
369
+ }
370
+ return parsed;
371
+ }
372
+
373
+ export async function startDeviceActivationRequest(args: {
374
+ trellisUrl: string;
375
+ payload: DeviceActivationPayload;
376
+ }): Promise<
377
+ {
378
+ flowId: string;
379
+ instanceId: string;
380
+ deploymentId: string;
381
+ activationUrl: string;
382
+ }
383
+ > {
384
+ const response = await fetch(
385
+ new URL("/auth/devices/activate/requests", args.trellisUrl),
386
+ {
387
+ method: "POST",
388
+ headers: { "Content-Type": "application/json" },
389
+ body: JSON.stringify({ payload: args.payload }),
390
+ },
391
+ );
392
+ if (!response.ok) {
393
+ const detail = await responseErrorDetail(response);
394
+ throw new Error(
395
+ `Device activation request failed: ${response.status}${
396
+ detail ? ` ${detail}` : ""
397
+ }`,
398
+ );
399
+ }
400
+
401
+ const parsed = await response.json() as Record<string, unknown>;
402
+ if (
403
+ typeof parsed.flowId !== "string" ||
404
+ typeof parsed.instanceId !== "string" ||
405
+ typeof parsed.deploymentId !== "string" ||
406
+ typeof parsed.activationUrl !== "string"
407
+ ) {
408
+ throw new Error("Device activation request returned an invalid response");
409
+ }
410
+
411
+ return {
412
+ flowId: parsed.flowId,
413
+ instanceId: parsed.instanceId,
414
+ deploymentId: parsed.deploymentId,
415
+ activationUrl: parsed.activationUrl,
416
+ };
417
+ }
418
+
419
+ export async function deriveDeviceConfirmationCode(input: {
420
+ activationKey: Uint8Array | string;
421
+ publicIdentityKey: string;
422
+ nonce: string;
423
+ }): Promise<string> {
424
+ const activationKey = normalizeSecretBytes(
425
+ input.activationKey,
426
+ "activationKey",
427
+ );
428
+ const mac = await hmacSha256(
429
+ activationKey,
430
+ concatBytes([
431
+ utf8(DEVICE_CONFIRMATION_DOMAIN),
432
+ utf8(input.publicIdentityKey),
433
+ utf8(input.nonce),
434
+ ]),
435
+ );
436
+ return crockfordEncode(mac.slice(0, 5)).slice(0, 8);
437
+ }
438
+
439
+ export async function verifyDeviceConfirmationCode(input: {
440
+ activationKey: Uint8Array | string;
441
+ publicIdentityKey: string;
442
+ nonce: string;
443
+ confirmationCode: string;
444
+ }): Promise<boolean> {
445
+ const expected = await deriveDeviceConfirmationCode(input);
446
+ return normalizeCrockford(expected) ===
447
+ normalizeCrockford(input.confirmationCode);
448
+ }
449
+
450
+ export function buildDeviceWaitProofInput(
451
+ flowId: string,
452
+ publicIdentityKey: string,
453
+ nonce: string,
454
+ iat: number,
455
+ contractDigest: string,
456
+ ): Uint8Array {
457
+ const enc = new TextEncoder();
458
+ const flowIdBytes = enc.encode(flowId);
459
+ const publicIdentityKeyBytes = enc.encode(publicIdentityKey);
460
+ const nonceBytes = enc.encode(nonce);
461
+ const iatBytes = enc.encode(String(iat));
462
+ const contractDigestBytes = enc.encode(contractDigest);
463
+ const buf = new Uint8Array(
464
+ 4 + flowIdBytes.length +
465
+ 4 + publicIdentityKeyBytes.length +
466
+ 4 + nonceBytes.length +
467
+ 4 + iatBytes.length +
468
+ 4 + contractDigestBytes.length,
469
+ );
470
+ const view = new DataView(buf.buffer);
471
+ let offset = 0;
472
+ view.setUint32(offset, flowIdBytes.length);
473
+ offset += 4;
474
+ buf.set(flowIdBytes, offset);
475
+ offset += flowIdBytes.length;
476
+ view.setUint32(offset, publicIdentityKeyBytes.length);
477
+ offset += 4;
478
+ buf.set(publicIdentityKeyBytes, offset);
479
+ offset += publicIdentityKeyBytes.length;
480
+ view.setUint32(offset, nonceBytes.length);
481
+ offset += 4;
482
+ buf.set(nonceBytes, offset);
483
+ offset += nonceBytes.length;
484
+ view.setUint32(offset, iatBytes.length);
485
+ offset += 4;
486
+ buf.set(iatBytes, offset);
487
+ offset += iatBytes.length;
488
+ view.setUint32(offset, contractDigestBytes.length);
489
+ offset += 4;
490
+ buf.set(contractDigestBytes, offset);
491
+ return buf;
492
+ }
493
+
494
+ export async function signDeviceWaitRequest(args: {
495
+ flowId: string;
496
+ publicIdentityKey: string;
497
+ nonce: string;
498
+ identitySeed: Uint8Array | string;
499
+ contractDigest: string;
500
+ iat?: number;
501
+ }): Promise<DeviceActivationWaitRequest> {
502
+ const identitySeed = normalizeSecretBytes(args.identitySeed, "identitySeed");
503
+ const identityPrivateKey = await importEd25519PrivateKeyFromSeedBase64url(
504
+ base64urlEncode(identitySeed),
505
+ );
506
+ const iat = args.iat ?? Math.floor(Date.now() / 1_000);
507
+ const proofInput = buildDeviceWaitProofInput(
508
+ args.flowId,
509
+ args.publicIdentityKey,
510
+ args.nonce,
511
+ iat,
512
+ args.contractDigest,
513
+ );
514
+ const proofHash = await sha256(proofInput);
515
+ const signature = new Uint8Array(
516
+ await crypto.subtle.sign(
517
+ "Ed25519",
518
+ identityPrivateKey,
519
+ toArrayBuffer(proofHash),
520
+ ),
521
+ );
522
+ return {
523
+ flowId: args.flowId,
524
+ publicIdentityKey: args.publicIdentityKey,
525
+ nonce: args.nonce,
526
+ contractDigest: args.contractDigest,
527
+ iat,
528
+ sig: base64urlEncode(signature),
529
+ };
530
+ }
531
+
532
+ export async function createDeviceNatsAuthToken(args: {
533
+ publicIdentityKey: string;
534
+ identitySeed: Uint8Array | string;
535
+ contractDigest: string;
536
+ iat?: number;
537
+ }): Promise<NatsAuthTokenV1 & { contractDigest: string }> {
538
+ const identitySeed = normalizeSecretBytes(args.identitySeed, "identitySeed");
539
+ const identityPrivateKey = await importEd25519PrivateKeyFromSeedBase64url(
540
+ base64urlEncode(identitySeed),
541
+ );
542
+ const iat = args.iat ?? Math.floor(Date.now() / 1_000);
543
+ const digest = await crypto.subtle.digest(
544
+ "SHA-256",
545
+ toArrayBuffer(
546
+ utf8(
547
+ `nats-connect:${
548
+ buildNatsConnectSignaturePayload(iat, args.contractDigest)
549
+ }`,
550
+ ),
551
+ ),
552
+ );
553
+ const signature = new Uint8Array(
554
+ await crypto.subtle.sign("Ed25519", identityPrivateKey, digest),
555
+ );
556
+ return {
557
+ v: 1,
558
+ sessionKey: args.publicIdentityKey,
559
+ iat,
560
+ sig: base64urlEncode(signature),
561
+ contractDigest: args.contractDigest,
562
+ };
563
+ }
564
+
565
+ export async function waitForDeviceActivation(args: {
566
+ trellisUrl: string;
567
+ flowId: string;
568
+ publicIdentityKey: string;
569
+ nonce: string;
570
+ identitySeed: Uint8Array | string;
571
+ contractDigest: string;
572
+ signal?: AbortSignal;
573
+ pollIntervalMs?: number;
574
+ }): Promise<
575
+ Extract<WaitForDeviceActivationResponse, { status: "activated" }>
576
+ > {
577
+ const pollIntervalMs = args.pollIntervalMs ?? DEFAULT_WAIT_POLL_INTERVAL_MS;
578
+ while (true) {
579
+ const request = await signDeviceWaitRequest(args);
580
+ let response: Response;
581
+ try {
582
+ response = await fetch(
583
+ new URL("/auth/devices/activate/wait", args.trellisUrl),
584
+ {
585
+ method: "POST",
586
+ headers: { "Content-Type": "application/json" },
587
+ body: JSON.stringify(request),
588
+ signal: args.signal,
589
+ },
590
+ );
591
+ } catch (error) {
592
+ if (args.signal?.aborted) {
593
+ throw error;
594
+ }
595
+ await sleep(pollIntervalMs, args.signal);
596
+ continue;
597
+ }
598
+ if (!response.ok) {
599
+ if (response.status === 429) {
600
+ const retryAfterMs = retryAfterDelayMs(response);
601
+ await sleep(
602
+ retryAfterMs === null
603
+ ? pollIntervalMs
604
+ : Math.max(pollIntervalMs, retryAfterMs),
605
+ args.signal,
606
+ );
607
+ continue;
608
+ }
609
+ const detail = await responseErrorDetail(response);
610
+ throw new Error(
611
+ detail
612
+ ? `device activation wait failed: ${response.status} ${detail}`
613
+ : `device activation wait failed: ${response.status}`,
614
+ );
615
+ }
616
+ const body = await response.json();
617
+ if (!Value.Check(WaitForDeviceActivationResponseSchema, body)) {
618
+ throw new Error("Invalid device activation wait response");
619
+ }
620
+ if (body.status === "pending") {
621
+ await sleep(pollIntervalMs, args.signal);
622
+ continue;
623
+ }
624
+ if (body.status === "rejected") {
625
+ throw new Error(
626
+ `device activation rejected: ${body.reason ?? "unknown_reason"}`,
627
+ );
628
+ }
629
+ return body;
630
+ }
631
+ }
632
+
633
+ export async function getDeviceConnectInfo(args: {
634
+ trellisUrl: string;
635
+ publicIdentityKey: string;
636
+ identitySeed: Uint8Array | string;
637
+ contractDigest: string;
638
+ iat?: number;
639
+ }): Promise<GetDeviceConnectInfoOutput> {
640
+ const request = await signDeviceWaitRequest({
641
+ flowId: "connect-info",
642
+ publicIdentityKey: args.publicIdentityKey,
643
+ identitySeed: args.identitySeed,
644
+ contractDigest: args.contractDigest,
645
+ nonce: "connect-info",
646
+ iat: args.iat,
647
+ });
648
+ const payload: GetDeviceConnectInfoInput = {
649
+ publicIdentityKey: request.publicIdentityKey,
650
+ contractDigest: args.contractDigest,
651
+ iat: request.iat,
652
+ sig: request.sig,
653
+ };
654
+ const response = await fetch(
655
+ new URL("/auth/devices/connect-info", args.trellisUrl),
656
+ {
657
+ method: "POST",
658
+ headers: { "Content-Type": "application/json" },
659
+ body: JSON.stringify(payload),
660
+ },
661
+ );
662
+ if (!response.ok) {
663
+ throw new Error(`device connect info failed: ${response.status}`);
664
+ }
665
+ const body = await response.json();
666
+ if (!Value.Check(AuthDevicesConnectInfoGetResponseSchema, body)) {
667
+ throw new Error("Invalid device connect info response");
668
+ }
669
+ return body;
670
+ }
671
+
672
+ export function createDeviceActivationClient(
673
+ client: DeviceActivationTransport,
674
+ ) {
675
+ return {
676
+ resolveDeviceUserAuthorities(input: AuthResolveDeviceUserAuthoritiesInput) {
677
+ return client.operation("Auth.DeviceUserAuthorities.Resolve").input(input)
678
+ .start()
679
+ .orThrow();
680
+ },
681
+ listDeviceActivations(input: AuthDeviceUserAuthoritiesListInput) {
682
+ return client.request("Auth.DeviceUserAuthorities.List", input).orThrow();
683
+ },
684
+ revokeDeviceActivation(input: AuthDeviceUserAuthoritiesRevokeInput) {
685
+ return client.request("Auth.DeviceUserAuthorities.Revoke", input)
686
+ .orThrow();
687
+ },
688
+ getDeviceConnectInfo(input: GetDeviceConnectInfoInput) {
689
+ return client.request("Auth.Devices.ConnectInfo.Get", input).orThrow();
690
+ },
691
+ };
692
+ }
693
+
694
+ export async function verifyDeviceWaitSignature(
695
+ input: DeviceActivationWaitRequest,
696
+ ): Promise<boolean> {
697
+ const publicKey = await importEd25519PublicKeyFromBase64url(
698
+ input.publicIdentityKey,
699
+ );
700
+ const proofHash = await sha256(
701
+ buildDeviceWaitProofInput(
702
+ input.flowId,
703
+ input.publicIdentityKey,
704
+ input.nonce,
705
+ input.iat,
706
+ input.contractDigest,
707
+ ),
708
+ );
709
+ return await crypto.subtle.verify(
710
+ "Ed25519",
711
+ publicKey,
712
+ toArrayBuffer(base64urlDecode(input.sig)),
713
+ toArrayBuffer(proofHash),
714
+ );
715
+ }