gemi 0.177.0 → 0.179.0

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 (214) hide show
  1. package/dist/ai/index.js +2 -2
  2. package/dist/ai/index.js.map +1 -1
  3. package/dist/app/index.js +1 -1
  4. package/dist/auth/connections/ConnectionManager.d.ts +7 -0
  5. package/dist/auth/connections/ConnectionManager.d.ts.map +1 -1
  6. package/dist/auth/connections/InstagramPublisher.d.ts +186 -0
  7. package/dist/auth/connections/InstagramPublisher.d.ts.map +1 -0
  8. package/dist/auth/oauth/instagram.d.ts +6 -0
  9. package/dist/auth/oauth/instagram.d.ts.map +1 -1
  10. package/dist/bun/plugin.js +1 -1
  11. package/dist/bun/preload.js +1 -1
  12. package/dist/{chunk-bhaae60h.js → chunk-47cjayhh.js} +4 -4
  13. package/dist/{chunk-bhaae60h.js.map → chunk-47cjayhh.js.map} +3 -3
  14. package/dist/{chunk-a2r94jbz.js → chunk-4hj0q8fs.js} +2 -2
  15. package/dist/{chunk-a2r94jbz.js.map → chunk-4hj0q8fs.js.map} +1 -1
  16. package/dist/{chunk-hrj2d0w4.js → chunk-51yv7x03.js} +2 -2
  17. package/dist/{chunk-hrj2d0w4.js.map → chunk-51yv7x03.js.map} +1 -1
  18. package/dist/{chunk-ygdmm1h4.js → chunk-520hnb9j.js} +2 -2
  19. package/dist/{chunk-ygdmm1h4.js.map → chunk-520hnb9j.js.map} +1 -1
  20. package/dist/{chunk-hthdwnfr.js → chunk-5cf61bb5.js} +2 -2
  21. package/dist/{chunk-hthdwnfr.js.map → chunk-5cf61bb5.js.map} +1 -1
  22. package/dist/{chunk-pv3152gj.js → chunk-5db4v8gv.js} +1 -1
  23. package/dist/{chunk-10ap3vpj.js → chunk-5v07y14d.js} +2 -2
  24. package/dist/{chunk-10ap3vpj.js.map → chunk-5v07y14d.js.map} +1 -1
  25. package/dist/{chunk-pb2bap50.js → chunk-66xyz4m3.js} +6 -6
  26. package/dist/{chunk-pb2bap50.js.map → chunk-66xyz4m3.js.map} +3 -3
  27. package/dist/{chunk-yhdwr77h.js → chunk-6nrd3djs.js} +2 -2
  28. package/dist/{chunk-yhdwr77h.js.map → chunk-6nrd3djs.js.map} +1 -1
  29. package/dist/{chunk-x9h1hchj.js → chunk-6t9zjhm6.js} +2 -2
  30. package/dist/{chunk-x9h1hchj.js.map → chunk-6t9zjhm6.js.map} +1 -1
  31. package/dist/{chunk-mg9m53kk.js → chunk-6vdvhj14.js} +2 -2
  32. package/dist/{chunk-mg9m53kk.js.map → chunk-6vdvhj14.js.map} +1 -1
  33. package/dist/{chunk-p779zv1n.js → chunk-6wwk0psy.js} +2 -2
  34. package/dist/{chunk-p779zv1n.js.map → chunk-6wwk0psy.js.map} +1 -1
  35. package/dist/{chunk-n8egkp1k.js → chunk-7jxf0kys.js} +2 -2
  36. package/dist/{chunk-n8egkp1k.js.map → chunk-7jxf0kys.js.map} +1 -1
  37. package/dist/{chunk-c6ms23fk.js → chunk-8v95cjc5.js} +2 -2
  38. package/dist/{chunk-c6ms23fk.js.map → chunk-8v95cjc5.js.map} +1 -1
  39. package/dist/chunk-8zwm5n7d.js +5 -0
  40. package/dist/{chunk-pha2mqjr.js.map → chunk-8zwm5n7d.js.map} +3 -3
  41. package/dist/{chunk-gr4vynwd.js → chunk-93s13x3v.js} +2 -2
  42. package/dist/{chunk-gr4vynwd.js.map → chunk-93s13x3v.js.map} +1 -1
  43. package/dist/{chunk-nwdtdq2k.js → chunk-9522w4e4.js} +2 -2
  44. package/dist/{chunk-nwdtdq2k.js.map → chunk-9522w4e4.js.map} +1 -1
  45. package/dist/{chunk-5yjseh8g.js → chunk-9mcweetq.js} +2 -2
  46. package/dist/{chunk-5yjseh8g.js.map → chunk-9mcweetq.js.map} +1 -1
  47. package/dist/{chunk-3szc00gq.js → chunk-b53n5696.js} +2 -2
  48. package/dist/{chunk-3szc00gq.js.map → chunk-b53n5696.js.map} +1 -1
  49. package/dist/{chunk-eq252sbg.js → chunk-bm2zz2j1.js} +2 -2
  50. package/dist/{chunk-eq252sbg.js.map → chunk-bm2zz2j1.js.map} +1 -1
  51. package/dist/{chunk-gr625kyj.js → chunk-bptarxbq.js} +2 -2
  52. package/dist/{chunk-gr625kyj.js.map → chunk-bptarxbq.js.map} +1 -1
  53. package/dist/{chunk-11aqfdr7.js → chunk-c0qq5t8a.js} +3 -3
  54. package/dist/{chunk-11aqfdr7.js.map → chunk-c0qq5t8a.js.map} +1 -1
  55. package/dist/{chunk-7e1fgzcv.js → chunk-cv496s8h.js} +2 -2
  56. package/dist/{chunk-7e1fgzcv.js.map → chunk-cv496s8h.js.map} +1 -1
  57. package/dist/{chunk-jj4w6ce5.js → chunk-czzyrw7d.js} +2 -2
  58. package/dist/{chunk-jj4w6ce5.js.map → chunk-czzyrw7d.js.map} +1 -1
  59. package/dist/{chunk-a2br22hp.js → chunk-dp5ha6qy.js} +2 -2
  60. package/dist/{chunk-a2br22hp.js.map → chunk-dp5ha6qy.js.map} +1 -1
  61. package/dist/{chunk-8bnmvhrv.js → chunk-e14fgtk1.js} +2 -2
  62. package/dist/{chunk-8bnmvhrv.js.map → chunk-e14fgtk1.js.map} +1 -1
  63. package/dist/{chunk-tpx30rbj.js → chunk-e7hb47yy.js} +2 -2
  64. package/dist/{chunk-tpx30rbj.js.map → chunk-e7hb47yy.js.map} +1 -1
  65. package/dist/{chunk-f76hstxx.js → chunk-f5mhc5eh.js} +2 -2
  66. package/dist/{chunk-f76hstxx.js.map → chunk-f5mhc5eh.js.map} +1 -1
  67. package/dist/{chunk-5zfwvabd.js → chunk-gjb7cfr4.js} +2 -2
  68. package/dist/{chunk-5zfwvabd.js.map → chunk-gjb7cfr4.js.map} +1 -1
  69. package/dist/{chunk-rhqcv3te.js → chunk-hbjatkm9.js} +2 -2
  70. package/dist/{chunk-rhqcv3te.js.map → chunk-hbjatkm9.js.map} +1 -1
  71. package/dist/{chunk-bmzznzhz.js → chunk-hm1xy515.js} +3 -3
  72. package/dist/{chunk-bmzznzhz.js.map → chunk-hm1xy515.js.map} +1 -1
  73. package/dist/{chunk-y13dsype.js → chunk-ht0atvyc.js} +3 -3
  74. package/dist/{chunk-y13dsype.js.map → chunk-ht0atvyc.js.map} +1 -1
  75. package/dist/{chunk-q21wxx5y.js → chunk-jpq74abh.js} +1 -1
  76. package/dist/{chunk-96gnm8zb.js → chunk-jwvwve00.js} +2 -2
  77. package/dist/{chunk-96gnm8zb.js.map → chunk-jwvwve00.js.map} +1 -1
  78. package/dist/{chunk-hkjfyhv4.js → chunk-ks99tx7f.js} +2 -2
  79. package/dist/{chunk-hkjfyhv4.js.map → chunk-ks99tx7f.js.map} +1 -1
  80. package/dist/{chunk-344f6c5q.js → chunk-mby1wdny.js} +2 -2
  81. package/dist/{chunk-344f6c5q.js.map → chunk-mby1wdny.js.map} +1 -1
  82. package/dist/{chunk-tdbm67bb.js → chunk-me14hs9k.js} +2 -2
  83. package/dist/{chunk-tdbm67bb.js.map → chunk-me14hs9k.js.map} +1 -1
  84. package/dist/{chunk-cmjmy3gt.js → chunk-mpv431ga.js} +1 -1
  85. package/dist/{chunk-yszn7ses.js → chunk-nv2ecda9.js} +2 -2
  86. package/dist/{chunk-yszn7ses.js.map → chunk-nv2ecda9.js.map} +1 -1
  87. package/dist/{chunk-sq2ccgxy.js → chunk-nwg70wza.js} +3 -3
  88. package/dist/{chunk-sq2ccgxy.js.map → chunk-nwg70wza.js.map} +1 -1
  89. package/dist/{chunk-0mye000w.js → chunk-pw6ssy3a.js} +2 -2
  90. package/dist/{chunk-64m4fmf0.js.map → chunk-pw6ssy3a.js.map} +1 -1
  91. package/dist/{chunk-50hrefzf.js → chunk-q30ryk1a.js} +2 -2
  92. package/dist/{chunk-50hrefzf.js.map → chunk-q30ryk1a.js.map} +1 -1
  93. package/dist/{chunk-cnnmb8p3.js → chunk-q3g4xs1z.js} +2 -2
  94. package/dist/{chunk-cnnmb8p3.js.map → chunk-q3g4xs1z.js.map} +1 -1
  95. package/dist/{chunk-h2yyyzsv.js → chunk-r36kq8x1.js} +3 -3
  96. package/dist/{chunk-h2yyyzsv.js.map → chunk-r36kq8x1.js.map} +1 -1
  97. package/dist/{chunk-h3xpvksc.js → chunk-r7j4c5t2.js} +2 -2
  98. package/dist/{chunk-h3xpvksc.js.map → chunk-r7j4c5t2.js.map} +1 -1
  99. package/dist/{chunk-w1y6x2rm.js → chunk-rv0r5fde.js} +2 -2
  100. package/dist/{chunk-w1y6x2rm.js.map → chunk-rv0r5fde.js.map} +1 -1
  101. package/dist/{chunk-8ym912fj.js → chunk-s0m717j8.js} +3 -3
  102. package/dist/{chunk-8ym912fj.js.map → chunk-s0m717j8.js.map} +1 -1
  103. package/dist/{chunk-9nks1y2h.js → chunk-s208599z.js} +2 -2
  104. package/dist/{chunk-9nks1y2h.js.map → chunk-s208599z.js.map} +1 -1
  105. package/dist/{chunk-brcn3h9b.js → chunk-sen7c0e6.js} +3 -3
  106. package/dist/{chunk-brcn3h9b.js.map → chunk-sen7c0e6.js.map} +1 -1
  107. package/dist/{chunk-fbbqy4af.js → chunk-sr1gv50s.js} +2 -2
  108. package/dist/{chunk-fbbqy4af.js.map → chunk-sr1gv50s.js.map} +1 -1
  109. package/dist/{chunk-h968axww.js → chunk-ssmq5r41.js} +2 -2
  110. package/dist/{chunk-h968axww.js.map → chunk-ssmq5r41.js.map} +1 -1
  111. package/dist/{chunk-q5j1bwny.js → chunk-sx6jmyaf.js} +1 -1
  112. package/dist/{chunk-mkb9nt5n.js → chunk-tefb1nz7.js} +2 -2
  113. package/dist/{chunk-mkb9nt5n.js.map → chunk-tefb1nz7.js.map} +1 -1
  114. package/dist/{chunk-j6sbfa2q.js → chunk-tjmw2z5z.js} +2 -2
  115. package/dist/{chunk-j6sbfa2q.js.map → chunk-tjmw2z5z.js.map} +1 -1
  116. package/dist/{chunk-r4ewwmcr.js → chunk-tv13vbcm.js} +2 -2
  117. package/dist/{chunk-r4ewwmcr.js.map → chunk-tv13vbcm.js.map} +1 -1
  118. package/dist/{chunk-2cw1et3n.js → chunk-v8qzdvpj.js} +2 -2
  119. package/dist/{chunk-2cw1et3n.js.map → chunk-v8qzdvpj.js.map} +1 -1
  120. package/dist/{chunk-bcdst4fd.js → chunk-vhk6735r.js} +2 -2
  121. package/dist/{chunk-bcdst4fd.js.map → chunk-vhk6735r.js.map} +1 -1
  122. package/dist/chunk-vq2a7qd8.js +5 -0
  123. package/dist/{chunk-sz8w3kwt.js.map → chunk-vq2a7qd8.js.map} +1 -1
  124. package/dist/{chunk-q21p7bq9.js → chunk-vv1na1vj.js} +1 -1
  125. package/dist/{chunk-xvaan2fe.js → chunk-w6br58a9.js} +4 -4
  126. package/dist/{chunk-xvaan2fe.js.map → chunk-w6br58a9.js.map} +1 -1
  127. package/dist/{chunk-zn6j65pg.js → chunk-wjkcqe8w.js} +2 -2
  128. package/dist/{chunk-zn6j65pg.js.map → chunk-wjkcqe8w.js.map} +1 -1
  129. package/dist/{chunk-z0q126b1.js → chunk-wtjfjh0x.js} +2 -2
  130. package/dist/{chunk-z0q126b1.js.map → chunk-wtjfjh0x.js.map} +1 -1
  131. package/dist/{chunk-y5c9xqme.js → chunk-xf8f9tbf.js} +2 -2
  132. package/dist/{chunk-y5c9xqme.js.map → chunk-xf8f9tbf.js.map} +1 -1
  133. package/dist/{chunk-a4s0kf20.js → chunk-xgmc7cp5.js} +2 -2
  134. package/dist/{chunk-a4s0kf20.js.map → chunk-xgmc7cp5.js.map} +1 -1
  135. package/dist/{chunk-nbmzs80j.js → chunk-xvaryyd0.js} +2 -2
  136. package/dist/{chunk-nbmzs80j.js.map → chunk-xvaryyd0.js.map} +1 -1
  137. package/dist/{chunk-64m4fmf0.js → chunk-xzzdywf6.js} +2 -2
  138. package/dist/{chunk-0mye000w.js.map → chunk-xzzdywf6.js.map} +1 -1
  139. package/dist/{chunk-aat9zhrj.js → chunk-y3pnwpvp.js} +3 -3
  140. package/dist/{chunk-aat9zhrj.js.map → chunk-y3pnwpvp.js.map} +1 -1
  141. package/dist/{chunk-ezrf5vv9.js → chunk-yef8dvmg.js} +2 -2
  142. package/dist/{chunk-ezrf5vv9.js.map → chunk-yef8dvmg.js.map} +1 -1
  143. package/dist/{chunk-kx3etqsr.js → chunk-yx26j5vk.js} +2 -2
  144. package/dist/{chunk-kx3etqsr.js.map → chunk-yx26j5vk.js.map} +1 -1
  145. package/dist/{chunk-v9g2np6k.js → chunk-z8mq4g46.js} +2 -2
  146. package/dist/{chunk-v9g2np6k.js.map → chunk-z8mq4g46.js.map} +1 -1
  147. package/dist/{chunk-zczvbygf.js → chunk-zm4fdsq5.js} +2 -2
  148. package/dist/{chunk-zczvbygf.js.map → chunk-zm4fdsq5.js.map} +1 -1
  149. package/dist/{chunk-ay60f8dy.js → chunk-znrk326r.js} +1 -1
  150. package/dist/{chunk-574s5sgz.js → chunk-zpshgset.js} +2 -2
  151. package/dist/{chunk-574s5sgz.js.map → chunk-zpshgset.js.map} +1 -1
  152. package/dist/{chunk-nfx1p5z2.js → chunk-zrrpab1x.js} +3 -3
  153. package/dist/{chunk-nfx1p5z2.js.map → chunk-zrrpab1x.js.map} +1 -1
  154. package/dist/{chunk-8tyxtp36.js → chunk-zx5tp1c6.js} +2 -2
  155. package/dist/{chunk-8tyxtp36.js.map → chunk-zx5tp1c6.js.map} +1 -1
  156. package/dist/client/Head.d.ts.map +1 -1
  157. package/dist/client/index.js +45 -7
  158. package/dist/client/index.js.map +1 -1
  159. package/dist/config/index.js +1 -1
  160. package/dist/console/run.js +2 -2
  161. package/dist/console/run.js.map +1 -1
  162. package/dist/container/index.js +2 -2
  163. package/dist/container/index.js.map +1 -1
  164. package/dist/database/index.js +2 -2
  165. package/dist/database/index.js.map +1 -1
  166. package/dist/email/index.js +2 -2
  167. package/dist/email/index.js.map +1 -1
  168. package/dist/facades/Meta.d.ts +16 -3
  169. package/dist/facades/Meta.d.ts.map +1 -1
  170. package/dist/facades/index.js +2 -2
  171. package/dist/facades/index.js.map +1 -1
  172. package/dist/foundation/index.js +2 -2
  173. package/dist/foundation/index.js.map +1 -1
  174. package/dist/http/HttpRequest.d.ts +1 -0
  175. package/dist/http/HttpRequest.d.ts.map +1 -1
  176. package/dist/http/Metadata.d.ts +40 -4
  177. package/dist/http/Metadata.d.ts.map +1 -1
  178. package/dist/http/index.d.ts +1 -1
  179. package/dist/http/index.d.ts.map +1 -1
  180. package/dist/http/index.js +2 -2
  181. package/dist/http/index.js.map +1 -1
  182. package/dist/http/requestContext.d.ts +1 -0
  183. package/dist/http/requestContext.d.ts.map +1 -1
  184. package/dist/i18n/dictionaryRuntime.js +2 -2
  185. package/dist/i18n/dictionaryRuntime.js.map +1 -1
  186. package/dist/i18n/index.js +2 -2
  187. package/dist/i18n/index.js.map +1 -1
  188. package/dist/kernel/index.js +2 -2
  189. package/dist/kernel/index.js.map +1 -1
  190. package/dist/orm/index.js +2 -2
  191. package/dist/orm/index.js.map +1 -1
  192. package/dist/probe/index.js +2 -2
  193. package/dist/probe/index.js.map +1 -1
  194. package/dist/server/index.js +2 -2
  195. package/dist/server/index.js.map +1 -1
  196. package/dist/services/index.d.ts +2 -0
  197. package/dist/services/index.d.ts.map +1 -1
  198. package/dist/services/index.js +13 -13
  199. package/dist/services/index.js.map +5 -4
  200. package/dist/services/queue/work.js +2 -2
  201. package/dist/services/queue/work.js.map +1 -1
  202. package/dist/stats/route-table.js +1 -1
  203. package/dist/support/index.js +2 -2
  204. package/dist/support/index.js.map +1 -1
  205. package/dist/vitest/index.js +1 -1
  206. package/package.json +1 -1
  207. package/dist/chunk-pha2mqjr.js +0 -5
  208. package/dist/chunk-sz8w3kwt.js +0 -5
  209. /package/dist/{chunk-pv3152gj.js.map → chunk-5db4v8gv.js.map} +0 -0
  210. /package/dist/{chunk-q21wxx5y.js.map → chunk-jpq74abh.js.map} +0 -0
  211. /package/dist/{chunk-cmjmy3gt.js.map → chunk-mpv431ga.js.map} +0 -0
  212. /package/dist/{chunk-q5j1bwny.js.map → chunk-sx6jmyaf.js.map} +0 -0
  213. /package/dist/{chunk-q21p7bq9.js.map → chunk-vv1na1vj.js.map} +0 -0
  214. /package/dist/{chunk-ay60f8dy.js.map → chunk-znrk326r.js.map} +0 -0
package/dist/app/index.js CHANGED
@@ -1,4 +1,4 @@
1
1
  // @bun
2
- import{Ea as a}from"../chunk-z0q126b1.js";import"../chunk-tpx30rbj.js";import"../chunk-0mye000w.js";export{a as App};
2
+ import{Ea as a}from"../chunk-wtjfjh0x.js";import"../chunk-e7hb47yy.js";import"../chunk-pw6ssy3a.js";export{a as App};
3
3
 
4
4
  //# debugId=A7FB3B2CC8B73BFE64756E2164756E21
@@ -106,6 +106,13 @@ export declare class ProviderConnection {
106
106
  * it; `"connected"` otherwise. Read without calling the provider.
107
107
  */
108
108
  get status(): ConnectionStatus;
109
+ /**
110
+ * The provider this connection belongs to, as configured in
111
+ * `auth.connections` (for helpers built on a connection).
112
+ *
113
+ * @internal
114
+ */
115
+ connectionProvider(): OAuthConnectionProvider;
109
116
  /** Whether every one of `scopes` was granted. */
110
117
  hasScopes(...scopes: string[]): boolean;
111
118
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ConnectionManager.d.ts","sourceRoot":"","sources":["../../../auth/connections/ConnectionManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ConnectionManager.d.ts","sourceRoot":"","sources":["../../../auth/connections/ConnectionManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,186 @@
1
+ import type { ProviderConnection } from "./ConnectionManager";
2
+ /**
3
+ * Content publishing for an Instagram connection (#1117), over
4
+ * `connection.fetch`: a media container, waiting for it when it holds video,
5
+ * then `media_publish`.
6
+ *
7
+ * ```ts
8
+ * const ig = await Connections.for(user, "instagram", igAccountId);
9
+ * const { mediaId, permalink } = await Instagram.for(ig).publishImage({ imageUrl, caption });
10
+ * ```
11
+ *
12
+ * The token handling is `connection.fetch`'s: the token goes to
13
+ * `graph.instagram.com` only, renews when close to expiring, and a dead one
14
+ * marks the connection and throws `OAuthReconnectRequiredError`.
15
+ */
16
+ /** Why a publish failed. See `InstagramPublishError`. */
17
+ export type InstagramPublishErrorCode = "invalid_input" | "permission_denied" | "rate_limited" | "quota_exceeded" | "invalid_media" | "expired" | "reconnect_required" | "transient" | "unconfirmed" | "timeout" | "graph_error";
18
+ /**
19
+ * A publish Instagram refused, or one refused before asking it. The message
20
+ * has the HTTP status, Graph's error codes and Graph's message with anything
21
+ * token-like removed; never a URL or a token.
22
+ */
23
+ export declare class InstagramPublishError extends Error {
24
+ readonly code: InstagramPublishErrorCode;
25
+ readonly status?: number;
26
+ /** Graph's `error.code`. */
27
+ readonly graphCode?: number;
28
+ /** Graph's `error.error_subcode`. */
29
+ readonly graphSubcode?: number;
30
+ /** The media container concerned, when there is one: `timeout` leaves it processing. */
31
+ readonly containerId?: string;
32
+ constructor(code: InstagramPublishErrorCode, message: string, options?: {
33
+ status?: number;
34
+ graphCode?: number;
35
+ graphSubcode?: number;
36
+ containerId?: string;
37
+ });
38
+ }
39
+ export interface InstagramPublisherOptions {
40
+ /**
41
+ * The Graph API version, such as `"v25.0"`. Default: the connection
42
+ * provider's `graphApiVersion`, else the unversioned path (the app's
43
+ * default version), as `/me` does.
44
+ */
45
+ graphApiVersion?: string;
46
+ /** First wait between container status checks. Default 2000 ms. */
47
+ pollIntervalMs?: number;
48
+ /** Longest wait between checks; each wait is 1.5 times the last. Default 10000 ms. */
49
+ maxPollIntervalMs?: number;
50
+ /** How long a container may take to finish. Default 300000 ms (5 minutes). */
51
+ timeoutMs?: number;
52
+ }
53
+ /** Per call. */
54
+ export interface InstagramPublishOptions {
55
+ /** Stops waiting and calling; the call rejects with the signal's reason. */
56
+ signal?: AbortSignal;
57
+ /** Overrides the publisher's `timeoutMs` for this call. */
58
+ timeoutMs?: number;
59
+ }
60
+ export interface InstagramUserTag {
61
+ username: string;
62
+ /** 0 (left) to 1 (right). */
63
+ x: number;
64
+ /** 0 (top) to 1 (bottom). */
65
+ y: number;
66
+ }
67
+ export interface InstagramImagePost {
68
+ /** A public https URL Instagram fetches the JPEG from. */
69
+ imageUrl: string;
70
+ caption?: string;
71
+ altText?: string;
72
+ userTags?: InstagramUserTag[];
73
+ /** A Facebook Page's location id. */
74
+ locationId?: string;
75
+ }
76
+ export type InstagramCarouselItem = {
77
+ imageUrl: string;
78
+ videoUrl?: never;
79
+ } | {
80
+ videoUrl: string;
81
+ imageUrl?: never;
82
+ };
83
+ export interface InstagramCarouselPost {
84
+ /** 2 to 10 images and videos. */
85
+ items: InstagramCarouselItem[];
86
+ caption?: string;
87
+ }
88
+ export interface InstagramReelPost {
89
+ videoUrl: string;
90
+ caption?: string;
91
+ /** A public https URL of the cover image. */
92
+ coverUrl?: string;
93
+ /** Show the reel in the feed as well as in Reels. Instagram's default is true. */
94
+ shareToFeed?: boolean;
95
+ /** The frame used as the thumbnail, in milliseconds from the start (ignored with `coverUrl`). */
96
+ thumbOffset?: number;
97
+ }
98
+ export type InstagramStoryPost = {
99
+ imageUrl: string;
100
+ videoUrl?: never;
101
+ } | {
102
+ videoUrl: string;
103
+ imageUrl?: never;
104
+ };
105
+ export interface InstagramPublished {
106
+ /** The published media's id. */
107
+ mediaId: string;
108
+ /** The post's URL; undefined when Instagram did not answer for it. */
109
+ permalink?: string;
110
+ }
111
+ export interface InstagramPublishingLimit {
112
+ /** Posts published in the current window. */
113
+ quotaUsage: number;
114
+ /** Posts allowed per window (100). */
115
+ quotaTotal: number;
116
+ /** The window, in seconds (86400). */
117
+ quotaDurationSeconds: number;
118
+ /** `quotaTotal - quotaUsage`, at least 0. */
119
+ remaining: number;
120
+ }
121
+ export type InstagramContainerStatusCode = "EXPIRED" | "ERROR" | "FINISHED" | "IN_PROGRESS" | "PUBLISHED";
122
+ export interface InstagramContainerStatus {
123
+ id: string;
124
+ statusCode: InstagramContainerStatusCode;
125
+ /** Instagram's detail, such as `"Error: Media upload has failed with error code 2207026"`. */
126
+ status?: string;
127
+ }
128
+ /** Limits Instagram documents for content publishing. */
129
+ export declare const INSTAGRAM_LIMITS: {
130
+ readonly captionLength: 2200;
131
+ readonly hashtags: 30;
132
+ readonly mentions: 20;
133
+ readonly userTags: 20;
134
+ readonly carouselMin: 2;
135
+ readonly carouselMax: 10;
136
+ };
137
+ export declare const Instagram: {
138
+ /**
139
+ * A publisher for an Instagram connection (`InstagramConnectionProvider`)
140
+ * that granted `instagram_business_content_publish`.
141
+ */
142
+ for(connection: ProviderConnection, options?: InstagramPublisherOptions): InstagramPublisher;
143
+ };
144
+ export declare class InstagramPublisher {
145
+ readonly connection: ProviderConnection;
146
+ private readonly version;
147
+ private readonly pollIntervalMs;
148
+ private readonly maxPollIntervalMs;
149
+ private readonly timeoutMs;
150
+ constructor(connection: ProviderConnection, options?: InstagramPublisherOptions);
151
+ /** One image to the feed. */
152
+ publishImage(post: InstagramImagePost, options?: InstagramPublishOptions): Promise<InstagramPublished>;
153
+ /** 2 to 10 images and videos as one post: a container per item, then the carousel's. */
154
+ publishCarousel(post: InstagramCarouselPost, options?: InstagramPublishOptions): Promise<InstagramPublished>;
155
+ /** A reel. Waits for Instagram to process the video. */
156
+ publishReel(post: InstagramReelPost, options?: InstagramPublishOptions): Promise<InstagramPublished>;
157
+ /** A story: one image or one video. */
158
+ publishStory(post: InstagramStoryPost, options?: InstagramPublishOptions): Promise<InstagramPublished>;
159
+ /** The account's use of the publishing limit (100 posts per 24 hours). */
160
+ publishingLimit(options?: Pick<InstagramPublishOptions, "signal">): Promise<InstagramPublishingLimit>;
161
+ /** A media container's processing status. */
162
+ containerStatus(id: string, options?: Pick<InstagramPublishOptions, "signal">): Promise<InstagramContainerStatus>;
163
+ private start;
164
+ private accountId;
165
+ private createContainer;
166
+ private publishContainer;
167
+ /**
168
+ * `media_publish`, retried at most once: after a transient failure only
169
+ * when the container still reads FINISHED (retrying blindly could post
170
+ * twice), and after "not ready" once the container has finished.
171
+ */
172
+ private publishOnce;
173
+ private mediaPublish;
174
+ private permalink;
175
+ private readStatus;
176
+ private waitUntilFinished;
177
+ /**
178
+ * One Graph call, retried once when Instagram says the failure is transient
179
+ * (unless `retry: false`). Errors become `InstagramPublishError`; the
180
+ * connection's own errors (`OAuthReconnectRequiredError`) and an abort pass
181
+ * through.
182
+ */
183
+ private call;
184
+ private callOnce;
185
+ }
186
+ //# sourceMappingURL=InstagramPublisher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InstagramPublisher.d.ts","sourceRoot":"","sources":["../../../auth/connections/InstagramPublisher.ts"],"names":[],"mappings":"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"}
@@ -111,4 +111,10 @@ export declare function fetchInstagramProfile(args: {
111
111
  graphApiVersion?: string;
112
112
  fields?: string[];
113
113
  }): Promise<InstagramProfile>;
114
+ /**
115
+ * `JSON.parse`, with `id` and `user_id` integers kept as strings: Instagram
116
+ * account ids (17841…, 17 digits) do not fit a double, and parsing them as
117
+ * numbers rounds them to another account's id.
118
+ */
119
+ export declare function parseInstagramJson(text: string): Record<string, unknown>;
114
120
  //# sourceMappingURL=instagram.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"instagram.d.ts","sourceRoot":"","sources":["../../../auth/oauth/instagram.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,8CAA8C;AAC9C,eAAO,MAAM,wBAAwB,UAA+B,CAAC;AAErE,+EAA+E;AAC/E,MAAM,WAAW,kBAAkB;IACjC,2DAA2D;IAC3D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6FAA6F;IAC7F,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,CAIrF,CAAC;AAEF,wEAAwE;AACxE,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB,uGAAuG;IACvG,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,6CAA6C;AAC7C,qBAAa,iBAAkB,SAAQ,KAAK;IAGxC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS;IACnC,oFAAoF;IACpF,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM;IACtB,yEAAyE;IACzE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM;gBALtB,OAAO,EAAE,MAAM,EACN,MAAM,EAAE,MAAM,GAAG,SAAS;IACnC,oFAAoF;IAC3E,IAAI,CAAC,EAAE,MAAM;IACtB,yEAAyE;IAChE,IAAI,CAAC,EAAE,MAAM,EACtB,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAKhC;AAED,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,6EAA6E;IAC7E,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,+BAA+B;IAC/B,WAAW,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,wCAAwC;IACxC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CA8BpC;AAED,gEAAgE;AAChE,wBAAsB,+BAA+B,CAAC,IAAI,EAAE;IAC1D,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAMnC;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAKnC;AAED,uCAAuC;AACvC,wBAAsB,qBAAqB,CAAC,IAAI,EAAE;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAsB5B"}
1
+ {"version":3,"file":"instagram.d.ts","sourceRoot":"","sources":["../../../auth/oauth/instagram.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  // @bun
2
- import{fa as a}from"../chunk-cmjmy3gt.js";import"../chunk-nfx1p5z2.js";import"../chunk-hkjfyhv4.js";import"../chunk-zn6j65pg.js";import"../chunk-0mye000w.js";export{a as gemiPlugin};
2
+ import{fa as a}from"../chunk-mpv431ga.js";import"../chunk-zrrpab1x.js";import"../chunk-ks99tx7f.js";import"../chunk-wjkcqe8w.js";import"../chunk-pw6ssy3a.js";export{a as gemiPlugin};
3
3
 
4
4
  //# debugId=36D1825891C6658464756E2164756E21
@@ -1,4 +1,4 @@
1
1
  // @bun
2
- import{fa as k}from"../chunk-cmjmy3gt.js";import"../chunk-nfx1p5z2.js";import"../chunk-hkjfyhv4.js";import"../chunk-zn6j65pg.js";import{za as j}from"../chunk-7txst143.js";import"../chunk-0mye000w.js";var{plugin:q}=globalThis.Bun;q(k());var y=await j(process.cwd());for(let x of y.bun?.plugins??[])q(x);
2
+ import{fa as k}from"../chunk-mpv431ga.js";import"../chunk-zrrpab1x.js";import"../chunk-ks99tx7f.js";import"../chunk-wjkcqe8w.js";import{za as j}from"../chunk-7txst143.js";import"../chunk-pw6ssy3a.js";var{plugin:q}=globalThis.Bun;q(k());var y=await j(process.cwd());for(let x of y.bun?.plugins??[])q(x);
3
3
 
4
4
  //# debugId=FF5AD9F96BE6CCA964756E2164756E21
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- import{tj as O}from"./chunk-8ym912fj.js";import{bk as S}from"./chunk-c6ms23fk.js";import{Ik as E}from"./chunk-x9h1hchj.js";import{gl as U}from"./chunk-h2yyyzsv.js";class F{rows=new Map;async find(j,G){for(let Q of this.rows.values())if(Q.userId===j&&Q.provider===G)return{...Q};return null}async list(j){return[...this.rows.values()].filter((G)=>G.userId===j).map((G)=>({...G}))}async save(j,G,Q){let V=await this.find(j,G),W=new Date,Y={id:V?.id??Bun.randomUUIDv7(),userId:j,provider:G,...P(Q),needsReconnect:!1,revision:(V?.revision??0)+1,createdAt:V?.createdAt??W,updatedAt:W};return this.rows.set(Y.id,Y),{...Y}}async updateTokens(j,G,Q){let V=this.rows.get(j);if(!V||V.revision!==G)return null;let W=P(Q);W.providerAccountId??=V.providerAccountId;let Y={...V,...W,needsReconnect:!1,revision:G+1,updatedAt:new Date};return this.rows.set(j,Y),{...Y}}async markNeedsReconnect(j){let G=this.rows.get(j);if(G)this.rows.set(j,{...G,needsReconnect:!0,updatedAt:new Date})}async delete(j){this.rows.delete(j)}}class L{encrypter;table;sql;dialect;constructor(j,G,Q={}){this.encrypter=G;let V=Q.table??"gemi_oauth_connections";if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(V))throw Error(`The connections table name "${V}" is not a plain identifier.`);this.table=V,this.sql=j.sql,this.dialect=j.dialect}async createTable(){for(let j of q(this.dialect,this.table))await this.sql.unsafe(j)}async find(j,G){let Q=this.sql,V=await Q`
2
+ import{uj as O}from"./chunk-s0m717j8.js";import{ck as S}from"./chunk-8v95cjc5.js";import{Jk as E}from"./chunk-6t9zjhm6.js";import{hl as U}from"./chunk-r36kq8x1.js";class F{rows=new Map;async find(j,G){for(let Q of this.rows.values())if(Q.userId===j&&Q.provider===G)return{...Q};return null}async list(j){return[...this.rows.values()].filter((G)=>G.userId===j).map((G)=>({...G}))}async save(j,G,Q){let V=await this.find(j,G),W=new Date,Y={id:V?.id??Bun.randomUUIDv7(),userId:j,provider:G,...P(Q),needsReconnect:!1,revision:(V?.revision??0)+1,createdAt:V?.createdAt??W,updatedAt:W};return this.rows.set(Y.id,Y),{...Y}}async updateTokens(j,G,Q){let V=this.rows.get(j);if(!V||V.revision!==G)return null;let W=P(Q);W.providerAccountId??=V.providerAccountId;let Y={...V,...W,needsReconnect:!1,revision:G+1,updatedAt:new Date};return this.rows.set(j,Y),{...Y}}async markNeedsReconnect(j){let G=this.rows.get(j);if(G)this.rows.set(j,{...G,needsReconnect:!0,updatedAt:new Date})}async delete(j){this.rows.delete(j)}}class L{encrypter;table;sql;dialect;constructor(j,G,Q={}){this.encrypter=G;let V=Q.table??"gemi_oauth_connections";if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(V))throw Error(`The connections table name "${V}" is not a plain identifier.`);this.table=V,this.sql=j.sql,this.dialect=j.dialect}async createTable(){for(let j of q(this.dialect,this.table))await this.sql.unsafe(j)}async find(j,G){let Q=this.sql,V=await Q`
3
3
  SELECT * FROM ${this.name(Q)} WHERE user_id = ${j} AND provider = ${G}
4
4
  `;return V[0]?this.decode(V[0]):null}async list(j){let G=this.sql;return(await G`
5
5
  SELECT * FROM ${this.name(G)} WHERE user_id = ${j} ORDER BY provider
@@ -65,7 +65,7 @@ import{tj as O}from"./chunk-8ym912fj.js";import{bk as S}from"./chunk-c6ms23fk.js
65
65
  "revision" BIGINT NOT NULL DEFAULT 0,
66
66
  "created_at" BIGINT NOT NULL,
67
67
  "updated_at" BIGINT NOT NULL${V}
68
- )`,`CREATE UNIQUE INDEX IF NOT EXISTS "${G}_user_id_provider_key" ON "${G}"("user_id", "provider")`]}class X extends Error{code;status;providerError;constructor(j,G,Q={}){super(G,Q.cause!==void 0?{cause:Q.cause}:void 0);this.code=j;this.name="OAuthConnectionError",this.status=Q.status,this.providerError=Q.providerError}}class K extends X{provider;constructor(j,G={}){super("reconnect_required",`The ${j} connection needs to be reconnected: its tokens were refused and could not be refreshed.`,G);this.provider=j;this.name="OAuthReconnectRequiredError"}}class C{config;constructor(j){for(let G of["authorizeUrl","tokenUrl"])_(G,j[G]);for(let G of["refreshUrl","revokeUrl"])if(j[G]!==void 0)_(G,j[G]);if(j.apiBaseUrl===void 0||j.apiBaseUrl===null||j.apiBaseUrl==="")throw Error(`OAuthConnectionProvider: apiBaseUrl is required. Set it to the provider's API origin (e.g. apiBaseUrl: "https://api.figma.com"); connection.fetch only sends the token there.`);_("apiBaseUrl",j.apiBaseUrl),this.config={scopeSeparator:" ",clientAuth:"body",pkce:!0,authorizationParams:{},refreshLeewaySeconds:60,multiple:!1,tokenPlacement:"header",...j,refreshGrantType:j.refreshGrantType??"refresh_token"}}async isTokenRejected(j){let G=this.config.isTokenRejected;if(!G)return j.status===401;return await G(j)}authorizationUrl(j){let G=new URL(this.config.authorizeUrl),Q={...this.config.authorizationParams,response_type:"code",client_id:this.config.clientId,redirect_uri:j.redirectUri,scope:this.config.scopes.join(this.config.scopeSeparator),state:j.state};if(this.config.pkce)Q.code_challenge=j.codeChallenge,Q.code_challenge_method="S256";for(let[V,W]of Object.entries(Q))G.searchParams.set(V,W);return G.toString()}exchangeCode(j){let G=new URLSearchParams({grant_type:"authorization_code",code:j.code,redirect_uri:j.redirectUri});if(this.config.pkce)G.set("code_verifier",j.codeVerifier);return this.tokenRequest(this.config.tokenUrl,G,{scopes:this.config.scopes,refreshToken:null,phase:"exchange"})}refresh(j,G){let Q=new URLSearchParams,V=this.config.refreshGrantType;if(V!==!1&&V!=="")Q.set("grant_type",V);return Q.set("refresh_token",j),this.tokenRequest(this.config.refreshUrl??this.config.tokenUrl,Q,{scopes:G,refreshToken:j,phase:"refresh"})}async revoke(j,G){if(!this.config.revokeUrl)throw new X("revoke_unsupported","This provider has no revokeUrl configured. Use disconnect() to forget the tokens locally.");let Q=new URLSearchParams({token:j,token_type_hint:G}),V;try{V=await fetch(this.config.revokeUrl,this.post(Q))}catch(W){throw new X("revoke_failed","The revocation request failed.",{cause:W})}if(!V.ok)throw new X("revoke_failed",`The provider refused the revocation (HTTP ${V.status}).`,{status:V.status})}post(j){let G={"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"};if(this.config.clientAuth==="basic"){let Q=`${encodeURIComponent(this.config.clientId)}:${encodeURIComponent(this.config.clientSecret)}`;G.Authorization=`Basic ${Buffer.from(Q).toString("base64")}`}else j.set("client_id",this.config.clientId),j.set("client_secret",this.config.clientSecret);return{method:"POST",headers:G,body:j.toString(),redirect:"error"}}async tokenRequest(j,G,Q){let V=Q.phase==="exchange"?"exchange_failed":"refresh_failed",W;try{W=await fetch(j,this.post(G))}catch($){throw new X(V,"The token request failed.",{cause:$})}let Y=await W.json().catch(()=>({}));if(!W.ok||typeof Y.access_token!=="string"||Y.access_token===""){let $=typeof Y.error==="string"&&/^[a-z0-9_]{1,64}$/.test(Y.error)?Y.error:void 0;throw new X(V,`The token endpoint refused the ${Q.phase==="exchange"?"code":"refresh token"} (HTTP ${W.status}${$?`, ${$}`:""}).`,{status:W.status,providerError:$})}let Z=Number(Y.expires_in),B=typeof Y.scope==="string"?Y.scope:void 0,J=Y.user_id_string??Y.user_id??Y.account_id;return{accessToken:Y.access_token,refreshToken:typeof Y.refresh_token==="string"&&Y.refresh_token!==""?Y.refresh_token:Q.refreshToken,tokenType:typeof Y.token_type==="string"?Y.token_type:null,expiresAt:Number.isFinite(Z)&&Z>0?new Date(Date.now()+Z*1000):null,scopes:B!==void 0?B.split(/[\s,]+/).filter(Boolean):Q.scopes,providerAccountId:typeof J==="string"||typeof J==="number"?String(J):null}}}function _(j,G){let Q;try{Q=new URL(String(G))}catch{Q=void 0}if(!Q||Q.protocol!=="https:"&&!(Q.protocol==="http:"&&M(Q.hostname)))throw Error(`OAuthConnectionProvider: ${j} must be an https URL (http only for localhost), got ${JSON.stringify(G)}.`)}function M(j){return j==="localhost"||j==="127.0.0.1"||j==="[::1]"||j==="::1"}class A{options;static token="auth.connections";resolvedStore;refreshing=new Map;fakes;fakeStore;fakeRequests=[];constructor(j){this.options=j;for(let[G,Q]of Object.entries(j.providers)){if(!Q.config.multiple)continue;let V=Object.keys(j.providers).find((W)=>W.startsWith(`${G}${D}`));if(G.includes(D)||V)throw Error(`auth.connections: "${V??G}" cannot be used alongside the multiple-account provider "${G}" ("${D}" separates a provider from an account id in the store).`)}}get providers(){return this.options.providers}get store(){if(this.fakeStore)return this.fakeStore;if(!this.resolvedStore){let j=this.options.store;this.resolvedStore=typeof j==="function"?j():j??new L(U(E).connection(),()=>O())}return this.resolvedStore}provider(j){let G=this.options.providers[j];if(!G){let Q=Object.keys(this.options.providers);throw new X("unknown_provider",`No OAuth connection provider "${j}" in auth.connections`+(Q.length>0?` (configured: ${Q.join(", ")}).`:" (none are configured)."))}return G}async for(j,G,Q){let V=this.provider(G),W=N(j);if(!V.config.multiple){let Z=await this.store.find(W,G);if(!Z||Q!==void 0&&Z.providerAccountId!==Q)return null;return new z(this,Z)}if(Q!==void 0){let Z=await this.store.find(W,T(G,Q))??await this.store.find(W,G);return Z&&Z.providerAccountId===Q?new z(this,Z):null}let[Y]=(await this.list(j,G)).sort((Z,B)=>B.connectedAt.getTime()-Z.connectedAt.getTime());return Y??null}async list(j,G){if(G!==void 0)this.provider(G);return(await this.store.list(N(j))).filter((V)=>{let W=this.providerName(V.provider);return W!==null&&(G===void 0||W===G)}).map((V)=>new z(this,V))}async save(j,G,Q){let V=this.provider(G),W=N(j),{profile:Y,...Z}=Q,B={refreshToken:null,tokenType:null,expiresAt:null,providerAccountId:null,scopes:V.config.scopes,...Z};if(!V.config.multiple)return new z(this,await this.store.save(W,G,B));let J=B.providerAccountId;if(typeof J!=="string"||J==="")throw new X("missing_account_id",`"${G}" allows several accounts per user, so a connection needs the provider's account id (providerAccountId), and the token exchange did not supply one.`);let $=await this.store.save(W,T(G,J),B),H=await this.store.find(W,G);if(H&&H.providerAccountId===J)await this.store.delete(H.id);return new z(this,$)}providerName(j){let G=this.options.providers;if(Object.hasOwn(G,j))return j;let Q=j.indexOf(D);if(Q<=0)return null;let V=j.slice(0,Q);return Object.hasOwn(G,V)&&G[V].config.multiple?V:null}fake(j={}){return this.fakes=new Map(Object.entries(j)),this.fakeStore=new F,this.fakeRequests.length=0,this}restore(){this.fakes=void 0,this.fakeStore=void 0,this.fakeRequests.length=0}get faked(){return this.fakes!==void 0}async send(j,G){if(!this.fakes)return fetch(G);this.fakeRequests.push(G.clone());let Q=this.fakes.get(j);if(!Q)throw Error(`Connections.fake() has no handler for "${j}". Pass one: Connections.fake({ ${j}: (req) => ... }).`);return Q(G)}refresh(j,G="requested"){let Q=this.refreshing.get(j.id);if(Q)return Q;let V=this.withLock(j.id,()=>this.refreshOnce(j,G)).finally(()=>this.refreshing.delete(j.id));return this.refreshing.set(j.id,V),V}async refreshOnce(j,G){let Q=this.providerName(j.provider)??j.provider,V=await this.store.find(j.userId,j.provider);if(!V||V.id!==j.id)throw new K(Q);if(V.revision!==j.revision&&!V.needsReconnect)return V;if(V.needsReconnect)throw new K(Q);let W=this.provider(Q);if(this.faked)return V;let Y=W.config.refreshStrategy;if(!Y&&V.refreshToken===null)throw await this.store.markNeedsReconnect(V.id),new K(Q);let Z;try{Z=Y?await Y({accessToken:V.accessToken,refreshToken:V.refreshToken,scopes:[...V.scopes],expiresAt:V.expiresAt,issuedAt:V.updatedAt,reason:G,providerAccountId:V.providerAccountId}):await W.refresh(V.refreshToken,V.scopes)}catch($){if($ instanceof X&&$.status!==void 0&&$.status>=400&&$.status<500&&$.providerError!=="invalid_client")throw await this.store.markNeedsReconnect(V.id),new K(Q,{cause:$,status:$.status,providerError:$.providerError});throw $}if(Z===null)return V;let B=await this.store.updateTokens(V.id,V.revision,Z);if(B)return B;let J=await this.store.find(V.userId,V.provider);if(!J)throw new K(Q);return J}async withLock(j,G){let Q=U();if(this.faked||!Q.bound(S))return G();let V=await Q.make(S).run(`gemi:oauth-connection:${j}`,{ttl:30000,wait:20000},()=>G());if(!V.acquired)throw new X("refresh_failed","Timed out waiting for another refresh of this connection to finish.");return V.value}}class z{manager;record;constructor(j,G){this.manager=j;this.record=G}get provider(){return this.manager.providerName(this.record.provider)??this.record.provider}get userId(){return this.record.userId}get providerAccountId(){return this.record.providerAccountId}get scopes(){return this.record.scopes}get expiresAt(){return this.record.expiresAt}get needsReconnect(){return this.record.needsReconnect}get connectedAt(){return this.record.createdAt}get status(){if(this.record.needsReconnect)return"needs_reconnect";let j=this.record.expiresAt?.getTime();if(this.record.refreshToken===null&&j!==void 0&&j<=Date.now())return"needs_reconnect";return"connected"}hasScopes(...j){return j.every((G)=>this.record.scopes.includes(G))}async fetch(j,G={}){let Q=this.resolveUrl(j),V=await this.current(),W=await this.send(Q,G,V.accessToken);if(!W.authorized||G.body instanceof ReadableStream)return W.response;if(!await this.manager.provider(this.provider).isTokenRejected(W.response))return W.response;await W.response.body?.cancel().catch(()=>{});let Z=await this.refreshFrom(V,"rejected");return(await this.send(Q,G,Z.accessToken)).response}async accessToken(){return(await this.current()).accessToken}async refresh(){await this.refreshFrom(this.record)}async revoke(){if(!this.manager.faked){let j=this.manager.provider(this.provider);if(this.record.refreshToken!==null)await j.revoke(this.record.refreshToken,"refresh_token");else await j.revoke(this.record.accessToken,"access_token")}await this.manager.store.delete(this.record.id)}async disconnect(){await this.manager.store.delete(this.record.id)}toJSON(){return{provider:this.provider,providerAccountId:this.providerAccountId,scopes:[...this.scopes],expiresAt:this.expiresAt,needsReconnect:this.needsReconnect,status:this.status,connectedAt:this.connectedAt}}[Symbol.for("nodejs.util.inspect.custom")](){return{ProviderConnection:this.toJSON()}}async current(){if(this.record.needsReconnect)throw new K(this.provider);let j=this.manager.provider(this.provider).config.refreshLeewaySeconds*1000,G=this.record.expiresAt?.getTime();if(G!==void 0&&G-Date.now()<=j)return this.refreshFrom(this.record,"expiring");return this.record}async refreshFrom(j,G="requested"){try{this.record=await this.manager.refresh(j,G)}catch(Q){if(Q instanceof K)this.record={...this.record,needsReconnect:!0};throw Q}return this.record}resolveUrl(j){let G=this.manager.provider(this.provider).config.apiBaseUrl,Q;try{Q=new URL(String(j),G)}catch{throw new X("forbidden_url",`connection.fetch was given ${JSON.stringify(String(j))}, which is not a URL.`)}if(Q.origin!==new URL(G).origin)throw new X("forbidden_url",`connection.fetch only sends the ${this.provider} token to ${new URL(G).origin} (apiBaseUrl), not to ${Q.origin}.`);if(Q.protocol!=="https:"&&!(Q.protocol==="http:"&&M(Q.hostname)))throw new X("forbidden_url",`connection.fetch only sends a token over https, not to ${Q.origin}.`);return Q}async send(j,G,Q){let V=j,W=(G.method??"GET").toUpperCase(),Y=G.body,Z=!0;if(G.redirect==="manual"||G.redirect==="error")return{response:await this.manager.send(this.provider,this.request(V,G,W,Y,Q)),authorized:Z};for(let B=0;;B++){let J=this.request(V,{...G,redirect:"manual"},W,Y,Z?Q:null),$=await this.manager.send(this.provider,J),H=$.headers.get("location");if(!b.has($.status)||H===null||B>=5)return{response:$,authorized:Z};await $.body?.cancel().catch(()=>{});let x=new URL(H,V);if(x.origin!==V.origin)Z=!1;if($.status===303||($.status===301||$.status===302)&&W==="POST")W="GET",Y=void 0;V=x}}request(j,G,Q,V,W){let Y=new Headers(G.headers),Z=new URL(j),B=this.manager.provider(this.provider).config.tokenPlacement;if(W===null)Y.delete("authorization");else if(B==="query")Z.searchParams.set("access_token",W);else Y.set("Authorization",`Bearer ${W}`);return new Request(Z,{...G,method:Q,body:V,headers:Y})}}var b=new Set([301,302,303,307,308]),D=":";function T(j,G){return`${j}${D}${G}`}function N(j){let G=typeof j==="object"&&j!==null?j.id:j;if(G===void 0||G===null||G==="")throw TypeError("An OAuth connection belongs to a user: pass the user (or its id).");return String(G)}
69
- export{F as cj,L as dj,X as ej,K as fj,C as gj,A as hj,z as ij};
68
+ )`,`CREATE UNIQUE INDEX IF NOT EXISTS "${G}_user_id_provider_key" ON "${G}"("user_id", "provider")`]}class X extends Error{code;status;providerError;constructor(j,G,Q={}){super(G,Q.cause!==void 0?{cause:Q.cause}:void 0);this.code=j;this.name="OAuthConnectionError",this.status=Q.status,this.providerError=Q.providerError}}class K extends X{provider;constructor(j,G={}){super("reconnect_required",`The ${j} connection needs to be reconnected: its tokens were refused and could not be refreshed.`,G);this.provider=j;this.name="OAuthReconnectRequiredError"}}class C{config;constructor(j){for(let G of["authorizeUrl","tokenUrl"])_(G,j[G]);for(let G of["refreshUrl","revokeUrl"])if(j[G]!==void 0)_(G,j[G]);if(j.apiBaseUrl===void 0||j.apiBaseUrl===null||j.apiBaseUrl==="")throw Error(`OAuthConnectionProvider: apiBaseUrl is required. Set it to the provider's API origin (e.g. apiBaseUrl: "https://api.figma.com"); connection.fetch only sends the token there.`);_("apiBaseUrl",j.apiBaseUrl),this.config={scopeSeparator:" ",clientAuth:"body",pkce:!0,authorizationParams:{},refreshLeewaySeconds:60,multiple:!1,tokenPlacement:"header",...j,refreshGrantType:j.refreshGrantType??"refresh_token"}}async isTokenRejected(j){let G=this.config.isTokenRejected;if(!G)return j.status===401;return await G(j)}authorizationUrl(j){let G=new URL(this.config.authorizeUrl),Q={...this.config.authorizationParams,response_type:"code",client_id:this.config.clientId,redirect_uri:j.redirectUri,scope:this.config.scopes.join(this.config.scopeSeparator),state:j.state};if(this.config.pkce)Q.code_challenge=j.codeChallenge,Q.code_challenge_method="S256";for(let[V,W]of Object.entries(Q))G.searchParams.set(V,W);return G.toString()}exchangeCode(j){let G=new URLSearchParams({grant_type:"authorization_code",code:j.code,redirect_uri:j.redirectUri});if(this.config.pkce)G.set("code_verifier",j.codeVerifier);return this.tokenRequest(this.config.tokenUrl,G,{scopes:this.config.scopes,refreshToken:null,phase:"exchange"})}refresh(j,G){let Q=new URLSearchParams,V=this.config.refreshGrantType;if(V!==!1&&V!=="")Q.set("grant_type",V);return Q.set("refresh_token",j),this.tokenRequest(this.config.refreshUrl??this.config.tokenUrl,Q,{scopes:G,refreshToken:j,phase:"refresh"})}async revoke(j,G){if(!this.config.revokeUrl)throw new X("revoke_unsupported","This provider has no revokeUrl configured. Use disconnect() to forget the tokens locally.");let Q=new URLSearchParams({token:j,token_type_hint:G}),V;try{V=await fetch(this.config.revokeUrl,this.post(Q))}catch(W){throw new X("revoke_failed","The revocation request failed.",{cause:W})}if(!V.ok)throw new X("revoke_failed",`The provider refused the revocation (HTTP ${V.status}).`,{status:V.status})}post(j){let G={"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"};if(this.config.clientAuth==="basic"){let Q=`${encodeURIComponent(this.config.clientId)}:${encodeURIComponent(this.config.clientSecret)}`;G.Authorization=`Basic ${Buffer.from(Q).toString("base64")}`}else j.set("client_id",this.config.clientId),j.set("client_secret",this.config.clientSecret);return{method:"POST",headers:G,body:j.toString(),redirect:"error"}}async tokenRequest(j,G,Q){let V=Q.phase==="exchange"?"exchange_failed":"refresh_failed",W;try{W=await fetch(j,this.post(G))}catch($){throw new X(V,"The token request failed.",{cause:$})}let Y=await W.json().catch(()=>({}));if(!W.ok||typeof Y.access_token!=="string"||Y.access_token===""){let $=typeof Y.error==="string"&&/^[a-z0-9_]{1,64}$/.test(Y.error)?Y.error:void 0;throw new X(V,`The token endpoint refused the ${Q.phase==="exchange"?"code":"refresh token"} (HTTP ${W.status}${$?`, ${$}`:""}).`,{status:W.status,providerError:$})}let Z=Number(Y.expires_in),B=typeof Y.scope==="string"?Y.scope:void 0,J=Y.user_id_string??Y.user_id??Y.account_id;return{accessToken:Y.access_token,refreshToken:typeof Y.refresh_token==="string"&&Y.refresh_token!==""?Y.refresh_token:Q.refreshToken,tokenType:typeof Y.token_type==="string"?Y.token_type:null,expiresAt:Number.isFinite(Z)&&Z>0?new Date(Date.now()+Z*1000):null,scopes:B!==void 0?B.split(/[\s,]+/).filter(Boolean):Q.scopes,providerAccountId:typeof J==="string"||typeof J==="number"?String(J):null}}}function _(j,G){let Q;try{Q=new URL(String(G))}catch{Q=void 0}if(!Q||Q.protocol!=="https:"&&!(Q.protocol==="http:"&&M(Q.hostname)))throw Error(`OAuthConnectionProvider: ${j} must be an https URL (http only for localhost), got ${JSON.stringify(G)}.`)}function M(j){return j==="localhost"||j==="127.0.0.1"||j==="[::1]"||j==="::1"}class A{options;static token="auth.connections";resolvedStore;refreshing=new Map;fakes;fakeStore;fakeRequests=[];constructor(j){this.options=j;for(let[G,Q]of Object.entries(j.providers)){if(!Q.config.multiple)continue;let V=Object.keys(j.providers).find((W)=>W.startsWith(`${G}${D}`));if(G.includes(D)||V)throw Error(`auth.connections: "${V??G}" cannot be used alongside the multiple-account provider "${G}" ("${D}" separates a provider from an account id in the store).`)}}get providers(){return this.options.providers}get store(){if(this.fakeStore)return this.fakeStore;if(!this.resolvedStore){let j=this.options.store;this.resolvedStore=typeof j==="function"?j():j??new L(U(E).connection(),()=>O())}return this.resolvedStore}provider(j){let G=this.options.providers[j];if(!G){let Q=Object.keys(this.options.providers);throw new X("unknown_provider",`No OAuth connection provider "${j}" in auth.connections`+(Q.length>0?` (configured: ${Q.join(", ")}).`:" (none are configured)."))}return G}async for(j,G,Q){let V=this.provider(G),W=N(j);if(!V.config.multiple){let Z=await this.store.find(W,G);if(!Z||Q!==void 0&&Z.providerAccountId!==Q)return null;return new z(this,Z)}if(Q!==void 0){let Z=await this.store.find(W,T(G,Q))??await this.store.find(W,G);return Z&&Z.providerAccountId===Q?new z(this,Z):null}let[Y]=(await this.list(j,G)).sort((Z,B)=>B.connectedAt.getTime()-Z.connectedAt.getTime());return Y??null}async list(j,G){if(G!==void 0)this.provider(G);return(await this.store.list(N(j))).filter((V)=>{let W=this.providerName(V.provider);return W!==null&&(G===void 0||W===G)}).map((V)=>new z(this,V))}async save(j,G,Q){let V=this.provider(G),W=N(j),{profile:Y,...Z}=Q,B={refreshToken:null,tokenType:null,expiresAt:null,providerAccountId:null,scopes:V.config.scopes,...Z};if(!V.config.multiple)return new z(this,await this.store.save(W,G,B));let J=B.providerAccountId;if(typeof J!=="string"||J==="")throw new X("missing_account_id",`"${G}" allows several accounts per user, so a connection needs the provider's account id (providerAccountId), and the token exchange did not supply one.`);let $=await this.store.save(W,T(G,J),B),H=await this.store.find(W,G);if(H&&H.providerAccountId===J)await this.store.delete(H.id);return new z(this,$)}providerName(j){let G=this.options.providers;if(Object.hasOwn(G,j))return j;let Q=j.indexOf(D);if(Q<=0)return null;let V=j.slice(0,Q);return Object.hasOwn(G,V)&&G[V].config.multiple?V:null}fake(j={}){return this.fakes=new Map(Object.entries(j)),this.fakeStore=new F,this.fakeRequests.length=0,this}restore(){this.fakes=void 0,this.fakeStore=void 0,this.fakeRequests.length=0}get faked(){return this.fakes!==void 0}async send(j,G){if(!this.fakes)return fetch(G);this.fakeRequests.push(G.clone());let Q=this.fakes.get(j);if(!Q)throw Error(`Connections.fake() has no handler for "${j}". Pass one: Connections.fake({ ${j}: (req) => ... }).`);return Q(G)}refresh(j,G="requested"){let Q=this.refreshing.get(j.id);if(Q)return Q;let V=this.withLock(j.id,()=>this.refreshOnce(j,G)).finally(()=>this.refreshing.delete(j.id));return this.refreshing.set(j.id,V),V}async refreshOnce(j,G){let Q=this.providerName(j.provider)??j.provider,V=await this.store.find(j.userId,j.provider);if(!V||V.id!==j.id)throw new K(Q);if(V.revision!==j.revision&&!V.needsReconnect)return V;if(V.needsReconnect)throw new K(Q);let W=this.provider(Q);if(this.faked)return V;let Y=W.config.refreshStrategy;if(!Y&&V.refreshToken===null)throw await this.store.markNeedsReconnect(V.id),new K(Q);let Z;try{Z=Y?await Y({accessToken:V.accessToken,refreshToken:V.refreshToken,scopes:[...V.scopes],expiresAt:V.expiresAt,issuedAt:V.updatedAt,reason:G,providerAccountId:V.providerAccountId}):await W.refresh(V.refreshToken,V.scopes)}catch($){if($ instanceof X&&$.status!==void 0&&$.status>=400&&$.status<500&&$.providerError!=="invalid_client")throw await this.store.markNeedsReconnect(V.id),new K(Q,{cause:$,status:$.status,providerError:$.providerError});throw $}if(Z===null)return V;let B=await this.store.updateTokens(V.id,V.revision,Z);if(B)return B;let J=await this.store.find(V.userId,V.provider);if(!J)throw new K(Q);return J}async withLock(j,G){let Q=U();if(this.faked||!Q.bound(S))return G();let V=await Q.make(S).run(`gemi:oauth-connection:${j}`,{ttl:30000,wait:20000},()=>G());if(!V.acquired)throw new X("refresh_failed","Timed out waiting for another refresh of this connection to finish.");return V.value}}class z{manager;record;constructor(j,G){this.manager=j;this.record=G}get provider(){return this.manager.providerName(this.record.provider)??this.record.provider}get userId(){return this.record.userId}get providerAccountId(){return this.record.providerAccountId}get scopes(){return this.record.scopes}get expiresAt(){return this.record.expiresAt}get needsReconnect(){return this.record.needsReconnect}get connectedAt(){return this.record.createdAt}get status(){if(this.record.needsReconnect)return"needs_reconnect";let j=this.record.expiresAt?.getTime();if(this.record.refreshToken===null&&j!==void 0&&j<=Date.now())return"needs_reconnect";return"connected"}connectionProvider(){return this.manager.provider(this.provider)}hasScopes(...j){return j.every((G)=>this.record.scopes.includes(G))}async fetch(j,G={}){let Q=this.resolveUrl(j),V=await this.current(),W=await this.send(Q,G,V.accessToken);if(!W.authorized||G.body instanceof ReadableStream)return W.response;if(!await this.manager.provider(this.provider).isTokenRejected(W.response))return W.response;await W.response.body?.cancel().catch(()=>{});let Z=await this.refreshFrom(V,"rejected");return(await this.send(Q,G,Z.accessToken)).response}async accessToken(){return(await this.current()).accessToken}async refresh(){await this.refreshFrom(this.record)}async revoke(){if(!this.manager.faked){let j=this.manager.provider(this.provider);if(this.record.refreshToken!==null)await j.revoke(this.record.refreshToken,"refresh_token");else await j.revoke(this.record.accessToken,"access_token")}await this.manager.store.delete(this.record.id)}async disconnect(){await this.manager.store.delete(this.record.id)}toJSON(){return{provider:this.provider,providerAccountId:this.providerAccountId,scopes:[...this.scopes],expiresAt:this.expiresAt,needsReconnect:this.needsReconnect,status:this.status,connectedAt:this.connectedAt}}[Symbol.for("nodejs.util.inspect.custom")](){return{ProviderConnection:this.toJSON()}}async current(){if(this.record.needsReconnect)throw new K(this.provider);let j=this.manager.provider(this.provider).config.refreshLeewaySeconds*1000,G=this.record.expiresAt?.getTime();if(G!==void 0&&G-Date.now()<=j)return this.refreshFrom(this.record,"expiring");return this.record}async refreshFrom(j,G="requested"){try{this.record=await this.manager.refresh(j,G)}catch(Q){if(Q instanceof K)this.record={...this.record,needsReconnect:!0};throw Q}return this.record}resolveUrl(j){let G=this.manager.provider(this.provider).config.apiBaseUrl,Q;try{Q=new URL(String(j),G)}catch{throw new X("forbidden_url",`connection.fetch was given ${JSON.stringify(String(j))}, which is not a URL.`)}if(Q.origin!==new URL(G).origin)throw new X("forbidden_url",`connection.fetch only sends the ${this.provider} token to ${new URL(G).origin} (apiBaseUrl), not to ${Q.origin}.`);if(Q.protocol!=="https:"&&!(Q.protocol==="http:"&&M(Q.hostname)))throw new X("forbidden_url",`connection.fetch only sends a token over https, not to ${Q.origin}.`);return Q}async send(j,G,Q){let V=j,W=(G.method??"GET").toUpperCase(),Y=G.body,Z=!0;if(G.redirect==="manual"||G.redirect==="error")return{response:await this.manager.send(this.provider,this.request(V,G,W,Y,Q)),authorized:Z};for(let B=0;;B++){let J=this.request(V,{...G,redirect:"manual"},W,Y,Z?Q:null),$=await this.manager.send(this.provider,J),H=$.headers.get("location");if(!b.has($.status)||H===null||B>=5)return{response:$,authorized:Z};await $.body?.cancel().catch(()=>{});let x=new URL(H,V);if(x.origin!==V.origin)Z=!1;if($.status===303||($.status===301||$.status===302)&&W==="POST")W="GET",Y=void 0;V=x}}request(j,G,Q,V,W){let Y=new Headers(G.headers),Z=new URL(j),B=this.manager.provider(this.provider).config.tokenPlacement;if(W===null)Y.delete("authorization");else if(B==="query")Z.searchParams.set("access_token",W);else Y.set("Authorization",`Bearer ${W}`);return new Request(Z,{...G,method:Q,body:V,headers:Y})}}var b=new Set([301,302,303,307,308]),D=":";function T(j,G){return`${j}${D}${G}`}function N(j){let G=typeof j==="object"&&j!==null?j.id:j;if(G===void 0||G===null||G==="")throw TypeError("An OAuth connection belongs to a user: pass the user (or its id).");return String(G)}
69
+ export{F as dj,L as ej,X as fj,K as gj,C as hj,A as ij,z as jj};
70
70
 
71
- //# debugId=C8DA74E1523ACB8D64756E2164756E21
71
+ //# debugId=F47363A616BDA07364756E2164756E21