gemi 0.155.0 → 0.157.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.
- package/dist/ai/Agent.d.ts +15 -0
- package/dist/ai/Agent.d.ts.map +1 -1
- package/dist/ai/AgentController.d.ts +25 -1
- package/dist/ai/AgentController.d.ts.map +1 -1
- package/dist/ai/ImageModel.d.ts +2 -0
- package/dist/ai/ImageModel.d.ts.map +1 -1
- package/dist/ai/contextCompaction.d.ts +9 -1
- package/dist/ai/contextCompaction.d.ts.map +1 -1
- package/dist/ai/eval/Eval.d.ts +323 -0
- package/dist/ai/eval/Eval.d.ts.map +1 -0
- package/dist/ai/eval/stats.d.ts +70 -0
- package/dist/ai/eval/stats.d.ts.map +1 -0
- package/dist/ai/generate.d.ts.map +1 -1
- package/dist/ai/index.d.ts +5 -0
- package/dist/ai/index.d.ts.map +1 -1
- package/dist/ai/index.js +27 -26
- package/dist/ai/index.js.map +7 -5
- package/dist/ai/usageMeter.d.ts +23 -0
- package/dist/ai/usageMeter.d.ts.map +1 -0
- package/dist/app/index.js +1 -1
- package/dist/bun/plugin.js +1 -1
- package/dist/bun/preload.js +1 -1
- package/dist/{chunk-rb7518zz.js → chunk-00z7s34q.js} +2 -2
- package/dist/{chunk-rb7518zz.js.map → chunk-00z7s34q.js.map} +1 -1
- package/dist/{chunk-2r2j2nvq.js → chunk-0v3bca8k.js} +3 -3
- package/dist/{chunk-2r2j2nvq.js.map → chunk-0v3bca8k.js.map} +1 -1
- package/dist/{chunk-4y74s15p.js → chunk-0vc2akg0.js} +1 -1
- package/dist/{chunk-877yc341.js → chunk-0yjm936b.js} +3 -3
- package/dist/{chunk-877yc341.js.map → chunk-0yjm936b.js.map} +1 -1
- package/dist/{chunk-a8n9ec43.js → chunk-159j20yr.js} +2 -2
- package/dist/{chunk-a8n9ec43.js.map → chunk-159j20yr.js.map} +1 -1
- package/dist/{chunk-3csz8pfk.js → chunk-1de3awrh.js} +3 -3
- package/dist/{chunk-3csz8pfk.js.map → chunk-1de3awrh.js.map} +1 -1
- package/dist/{chunk-3nf0nmpp.js → chunk-38kjpa6q.js} +1 -1
- package/dist/{chunk-afaff2se.js → chunk-3ndc8adc.js} +2 -2
- package/dist/{chunk-afaff2se.js.map → chunk-3ndc8adc.js.map} +1 -1
- package/dist/{chunk-z38m1nh5.js → chunk-3t4nw1n2.js} +2 -2
- package/dist/{chunk-z38m1nh5.js.map → chunk-3t4nw1n2.js.map} +1 -1
- package/dist/{chunk-rnd8s0n5.js → chunk-42646nt7.js} +2 -2
- package/dist/{chunk-rnd8s0n5.js.map → chunk-42646nt7.js.map} +1 -1
- package/dist/{chunk-9xyd5r54.js → chunk-4t2j3zcg.js} +2 -2
- package/dist/{chunk-9xyd5r54.js.map → chunk-4t2j3zcg.js.map} +1 -1
- package/dist/{chunk-hh5bs656.js → chunk-4vnrnbn3.js} +3 -3
- package/dist/{chunk-hh5bs656.js.map → chunk-4vnrnbn3.js.map} +1 -1
- package/dist/{chunk-m5f6ksqe.js → chunk-517fjfme.js} +3 -3
- package/dist/{chunk-m5f6ksqe.js.map → chunk-517fjfme.js.map} +1 -1
- package/dist/{chunk-wckbrbzx.js → chunk-56a3vnrj.js} +2 -2
- package/dist/{chunk-wckbrbzx.js.map → chunk-56a3vnrj.js.map} +1 -1
- package/dist/{chunk-ja1289jh.js → chunk-5zxxd7qp.js} +1 -1
- package/dist/{chunk-4ptz62pz.js → chunk-69c2s43a.js} +2 -2
- package/dist/{chunk-4ptz62pz.js.map → chunk-69c2s43a.js.map} +1 -1
- package/dist/chunk-6np1r9gk.js +5 -0
- package/dist/{chunk-49s8wwp2.js.map → chunk-6np1r9gk.js.map} +1 -1
- package/dist/{chunk-bstn00nx.js → chunk-72f6pbap.js} +2 -2
- package/dist/{chunk-bstn00nx.js.map → chunk-72f6pbap.js.map} +1 -1
- package/dist/{chunk-0mgswwbj.js → chunk-7426gfgw.js} +2 -2
- package/dist/{chunk-0mgswwbj.js.map → chunk-7426gfgw.js.map} +1 -1
- package/dist/{chunk-baj76zja.js → chunk-78wht1ph.js} +2 -2
- package/dist/{chunk-baj76zja.js.map → chunk-78wht1ph.js.map} +1 -1
- package/dist/{chunk-mzkzgp2j.js → chunk-7yww9aq7.js} +2 -2
- package/dist/{chunk-mzkzgp2j.js.map → chunk-7yww9aq7.js.map} +1 -1
- package/dist/{chunk-djyx6eyh.js → chunk-7zy6nq9e.js} +2 -2
- package/dist/{chunk-djyx6eyh.js.map → chunk-7zy6nq9e.js.map} +1 -1
- package/dist/{chunk-w6jff43c.js → chunk-8eyxj78g.js} +3 -3
- package/dist/{chunk-w6jff43c.js.map → chunk-8eyxj78g.js.map} +1 -1
- package/dist/{chunk-twrf6d08.js → chunk-986eh0n3.js} +2 -2
- package/dist/{chunk-twrf6d08.js.map → chunk-986eh0n3.js.map} +1 -1
- package/dist/{chunk-mv1rs9he.js → chunk-9gt9qdge.js} +1 -1
- package/dist/{chunk-v9z4x5j2.js → chunk-9kyfaeey.js} +2 -2
- package/dist/{chunk-v9z4x5j2.js.map → chunk-9kyfaeey.js.map} +1 -1
- package/dist/{chunk-198ywkt2.js → chunk-9md6acv2.js} +1 -1
- package/dist/{chunk-6tkkvaqg.js → chunk-ah2jy1vx.js} +2 -2
- package/dist/{chunk-6tkkvaqg.js.map → chunk-ah2jy1vx.js.map} +1 -1
- package/dist/{chunk-xv58jnpb.js → chunk-aq5zx3vg.js} +2 -2
- package/dist/{chunk-xv58jnpb.js.map → chunk-aq5zx3vg.js.map} +1 -1
- package/dist/{chunk-tdvjrftz.js → chunk-cmt3jw6j.js} +2 -2
- package/dist/{chunk-tdvjrftz.js.map → chunk-cmt3jw6j.js.map} +1 -1
- package/dist/{chunk-0hqg6ema.js → chunk-dce3w52r.js} +2 -2
- package/dist/{chunk-0hqg6ema.js.map → chunk-dce3w52r.js.map} +1 -1
- package/dist/{chunk-403b2rfp.js → chunk-dhq7zv0t.js} +2 -2
- package/dist/{chunk-403b2rfp.js.map → chunk-dhq7zv0t.js.map} +1 -1
- package/dist/{chunk-rq8b8pr5.js → chunk-exb35whf.js} +2 -2
- package/dist/{chunk-rq8b8pr5.js.map → chunk-exb35whf.js.map} +1 -1
- package/dist/{chunk-73rzf7ys.js → chunk-fe12f946.js} +2 -2
- package/dist/{chunk-73rzf7ys.js.map → chunk-fe12f946.js.map} +1 -1
- package/dist/{chunk-nh01ncyy.js → chunk-g5d62d1n.js} +2 -2
- package/dist/{chunk-nh01ncyy.js.map → chunk-g5d62d1n.js.map} +1 -1
- package/dist/{chunk-ydkv9e8w.js → chunk-h3gcxf2k.js} +3 -3
- package/dist/{chunk-ydkv9e8w.js.map → chunk-h3gcxf2k.js.map} +1 -1
- package/dist/{chunk-902qqwdt.js → chunk-jr9qerbr.js} +2 -2
- package/dist/{chunk-902qqwdt.js.map → chunk-jr9qerbr.js.map} +1 -1
- package/dist/{chunk-2t61pc8v.js → chunk-jrv31jp9.js} +2 -2
- package/dist/{chunk-2t61pc8v.js.map → chunk-jrv31jp9.js.map} +1 -1
- package/dist/{chunk-dewn1kmd.js → chunk-k1aw97dm.js} +2 -2
- package/dist/{chunk-dewn1kmd.js.map → chunk-k1aw97dm.js.map} +1 -1
- package/dist/{chunk-313593t3.js → chunk-kbdt84xg.js} +2 -2
- package/dist/{chunk-313593t3.js.map → chunk-kbdt84xg.js.map} +1 -1
- package/dist/{chunk-wjdw128m.js → chunk-ks9t82g0.js} +2 -2
- package/dist/{chunk-wjdw128m.js.map → chunk-ks9t82g0.js.map} +1 -1
- package/dist/{chunk-vfwpbveq.js → chunk-kwc68y45.js} +2 -2
- package/dist/{chunk-vfwpbveq.js.map → chunk-kwc68y45.js.map} +1 -1
- package/dist/{chunk-86zhngpg.js → chunk-n95dppzm.js} +2 -2
- package/dist/{chunk-86zhngpg.js.map → chunk-n95dppzm.js.map} +1 -1
- package/dist/{chunk-apga49vp.js → chunk-nvhbkqmd.js} +2 -2
- package/dist/{chunk-apga49vp.js.map → chunk-nvhbkqmd.js.map} +1 -1
- package/dist/{chunk-0t531zdt.js → chunk-p83cjehh.js} +2 -2
- package/dist/{chunk-0t531zdt.js.map → chunk-p83cjehh.js.map} +1 -1
- package/dist/{chunk-wf4kywta.js → chunk-pgdxqrjv.js} +3 -3
- package/dist/{chunk-wf4kywta.js.map → chunk-pgdxqrjv.js.map} +1 -1
- package/dist/{chunk-f4hx69cr.js → chunk-pw5h5935.js} +2 -2
- package/dist/{chunk-f4hx69cr.js.map → chunk-pw5h5935.js.map} +1 -1
- package/dist/{chunk-4d4td4k9.js → chunk-px3ctjxh.js} +2 -2
- package/dist/{chunk-4d4td4k9.js.map → chunk-px3ctjxh.js.map} +1 -1
- package/dist/{chunk-5gq41j99.js → chunk-q3e1bqrs.js} +3 -3
- package/dist/{chunk-5gq41j99.js.map → chunk-q3e1bqrs.js.map} +1 -1
- package/dist/{chunk-c94a3qsx.js → chunk-q7k2hc45.js} +2 -2
- package/dist/{chunk-c94a3qsx.js.map → chunk-q7k2hc45.js.map} +1 -1
- package/dist/{chunk-41bvpent.js → chunk-qbvm5q1g.js} +1 -1
- package/dist/{chunk-7j8x62yb.js → chunk-qvngsa1c.js} +2 -2
- package/dist/{chunk-7j8x62yb.js.map → chunk-qvngsa1c.js.map} +1 -1
- package/dist/{chunk-g8sh9btf.js → chunk-r5y2khw4.js} +2 -2
- package/dist/{chunk-g8sh9btf.js.map → chunk-r5y2khw4.js.map} +1 -1
- package/dist/{chunk-1a11x8ww.js → chunk-rrz2ry81.js} +2 -2
- package/dist/{chunk-1a11x8ww.js.map → chunk-rrz2ry81.js.map} +1 -1
- package/dist/{chunk-e9z8p2fy.js → chunk-rtv4ax8z.js} +2 -2
- package/dist/{chunk-e9z8p2fy.js.map → chunk-rtv4ax8z.js.map} +1 -1
- package/dist/{chunk-ae5ycktd.js → chunk-set6qmjw.js} +2 -2
- package/dist/{chunk-ae5ycktd.js.map → chunk-set6qmjw.js.map} +1 -1
- package/dist/{chunk-sbzqxtqg.js → chunk-ss3yn4g2.js} +3 -3
- package/dist/{chunk-sbzqxtqg.js.map → chunk-ss3yn4g2.js.map} +1 -1
- package/dist/{chunk-fe9fvtvt.js → chunk-t66ex43f.js} +4 -4
- package/dist/{chunk-fe9fvtvt.js.map → chunk-t66ex43f.js.map} +1 -1
- package/dist/{chunk-rv751mxq.js → chunk-t7yt8egz.js} +2 -2
- package/dist/{chunk-rv751mxq.js.map → chunk-t7yt8egz.js.map} +1 -1
- package/dist/{chunk-rnegd7ya.js → chunk-tr8se94g.js} +3 -3
- package/dist/{chunk-rnegd7ya.js.map → chunk-tr8se94g.js.map} +1 -1
- package/dist/{chunk-1fyn63ka.js → chunk-tzheb6ak.js} +3 -3
- package/dist/{chunk-1fyn63ka.js.map → chunk-tzheb6ak.js.map} +1 -1
- package/dist/{chunk-h0kyymhv.js → chunk-v10xzpqs.js} +2 -2
- package/dist/{chunk-h0kyymhv.js.map → chunk-v10xzpqs.js.map} +1 -1
- package/dist/{chunk-2b3hh9xw.js → chunk-wbv6218d.js} +3 -3
- package/dist/{chunk-2b3hh9xw.js.map → chunk-wbv6218d.js.map} +1 -1
- package/dist/{chunk-mp3ecfnh.js → chunk-wg0ttent.js} +2 -2
- package/dist/{chunk-mp3ecfnh.js.map → chunk-wg0ttent.js.map} +1 -1
- package/dist/{chunk-7jnawtcm.js → chunk-wnjvfmqc.js} +2 -2
- package/dist/{chunk-7jnawtcm.js.map → chunk-wnjvfmqc.js.map} +1 -1
- package/dist/{chunk-nhhnkv0e.js → chunk-x82f3q6a.js} +4 -4
- package/dist/{chunk-nhhnkv0e.js.map → chunk-x82f3q6a.js.map} +1 -1
- package/dist/{chunk-mr3szvr3.js → chunk-xff7tkde.js} +2 -2
- package/dist/{chunk-mr3szvr3.js.map → chunk-xff7tkde.js.map} +1 -1
- package/dist/chunk-xp5axyb5.js +30 -0
- package/dist/chunk-xp5axyb5.js.map +28 -0
- package/dist/{chunk-2x6cv37t.js → chunk-xtqd9vpp.js} +2 -2
- package/dist/{chunk-2x6cv37t.js.map → chunk-xtqd9vpp.js.map} +1 -1
- package/dist/{chunk-cee5gq7t.js → chunk-xyyq577r.js} +2 -2
- package/dist/{chunk-cee5gq7t.js.map → chunk-xyyq577r.js.map} +1 -1
- package/dist/{chunk-eqv7yxk7.js → chunk-ycn7w2e9.js} +2 -2
- package/dist/{chunk-eqv7yxk7.js.map → chunk-ycn7w2e9.js.map} +1 -1
- package/dist/{chunk-0fjn202c.js → chunk-yewj83ez.js} +3 -3
- package/dist/{chunk-0fjn202c.js.map → chunk-yewj83ez.js.map} +1 -1
- package/dist/{chunk-2ery6a75.js → chunk-yzsyg1f7.js} +3 -3
- package/dist/{chunk-2ery6a75.js.map → chunk-yzsyg1f7.js.map} +1 -1
- package/dist/{chunk-jgpbr2k1.js → chunk-z7224rhm.js} +2 -2
- package/dist/{chunk-jgpbr2k1.js.map → chunk-z7224rhm.js.map} +1 -1
- package/dist/{chunk-attr793y.js → chunk-zcg6m7gf.js} +2 -2
- package/dist/{chunk-attr793y.js.map → chunk-zcg6m7gf.js.map} +1 -1
- package/dist/{chunk-yhgt9dxj.js → chunk-zfbqgzwa.js} +2 -2
- package/dist/{chunk-yhgt9dxj.js.map → chunk-zfbqgzwa.js.map} +1 -1
- package/dist/{chunk-x5z6r7z9.js → chunk-zv9d6jkj.js} +2 -2
- package/dist/{chunk-x5z6r7z9.js.map → chunk-zv9d6jkj.js.map} +1 -1
- package/dist/config/index.js +1 -1
- package/dist/console/run.js +2 -2
- package/dist/console/run.js.map +1 -1
- package/dist/container/index.js +2 -2
- package/dist/container/index.js.map +1 -1
- package/dist/database/index.js +2 -2
- package/dist/database/index.js.map +1 -1
- package/dist/email/index.js +2 -2
- package/dist/email/index.js.map +1 -1
- package/dist/facades/index.js +2 -2
- package/dist/facades/index.js.map +1 -1
- package/dist/foundation/index.js +2 -2
- package/dist/foundation/index.js.map +1 -1
- package/dist/http/index.js +2 -2
- package/dist/http/index.js.map +1 -1
- package/dist/i18n/dictionaryRuntime.js +2 -2
- package/dist/i18n/dictionaryRuntime.js.map +1 -1
- package/dist/i18n/index.js +2 -2
- package/dist/i18n/index.js.map +1 -1
- package/dist/kernel/index.js +2 -2
- package/dist/kernel/index.js.map +1 -1
- package/dist/orm/index.js +2 -2
- package/dist/orm/index.js.map +1 -1
- package/dist/server/index.js +2 -2
- package/dist/server/index.js.map +1 -1
- package/dist/services/index.js +2 -2
- package/dist/services/index.js.map +1 -1
- package/dist/services/queue/work.js +2 -2
- package/dist/services/queue/work.js.map +1 -1
- package/dist/stats/route-table.js +1 -1
- package/dist/support/index.js +2 -2
- package/dist/support/index.js.map +1 -1
- package/dist/vitest/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-1q5eagpm.js +0 -30
- package/dist/chunk-1q5eagpm.js.map +0 -27
- package/dist/chunk-49s8wwp2.js +0 -5
- /package/dist/{chunk-4y74s15p.js.map → chunk-0vc2akg0.js.map} +0 -0
- /package/dist/{chunk-3nf0nmpp.js.map → chunk-38kjpa6q.js.map} +0 -0
- /package/dist/{chunk-ja1289jh.js.map → chunk-5zxxd7qp.js.map} +0 -0
- /package/dist/{chunk-mv1rs9he.js.map → chunk-9gt9qdge.js.map} +0 -0
- /package/dist/{chunk-198ywkt2.js.map → chunk-9md6acv2.js.map} +0 -0
- /package/dist/{chunk-41bvpent.js.map → chunk-qbvm5q1g.js.map} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
var j=globalThis.__GEMI_DICTIONARY_REGISTRY__??={registry:new Map,resolved:new Map,inFlight:new Map,renderThenables:new Map,order:[],warmed:new Map,activeLocale:null},{registry:W,resolved:Z,inFlight:V,renderThenables:I,order:E,warmed:X}=j;function N(q,x){return`${q}\x00${x}`}function D(q){if(W.has(q.id))return;W.set(q.id,q),E.push(q.id)}function H(){return E.length}function P(q,x){return Z.get(q)?.get(x)}function $(q,x,A){let z=Z.get(q);if(!z)z=new Map,Z.set(q,z);z.set(x,A)}function U(q,x){let A=P(q,x);if(A)return A;let z=N(q,x),C=V.get(z);if(C)return C;let B=W.get(q);if(!B)throw Error(`Unknown dictionary "${q}". A dictionary must be created with defineDictionary() and its module must have been evaluated before it is read.`);let J=B.load(x);if(!(J instanceof Promise))return $(q,x,J),J;let O=J.then((Q)=>{return $(q,x,Q),V.delete(z),Q},(Q)=>{throw V.delete(z),Q});return V.set(z,O),O}function K(q,x){let A=N(q,x),z=P(q,x),C=I.get(A);if(C&&!(C.degraded&&z))return C;if(z)return G(A,M(z,!C));let B=U(q,x);if(!(B instanceof Promise))return G(A,M(B,!0));let J=B.then((O)=>O,(O)=>{return console.error(`Failed to load dictionary ${q} for locale ${x}; rendering keys instead.`,O),J.degraded=!0,Y});return G(A,J)}function G(q,x){return I.set(q,x),x}function M(q,x){return Object.assign(Promise.resolve(q),{status:"fulfilled",value:q,inHand:x?q:void 0})}var Y={};async function S(q,x){let A=x??X.get(q)??0,z=E.slice(A);if(z.length===0)return;let C=await Promise.all(z.map(async(B)=>{try{return await U(B,_(B,q)),!0}catch{return!1}}));if(x===void 0){let B=C.indexOf(!1),J=B===-1?z.length:B;X.set(q,Math.max(X.get(q)??0,A+J))}}function _(q,x){if(x)return x;return W.get(q)?.locales[0]??x}function L(q,x){if(!q)return;for(let[A,z]of Object.entries(q))$(A,x,z)}function R(q){if(q)j.activeLocale=q}function w(){return j.activeLocale}if(typeof window<"u"){let q=window,x=([z,C,B])=>{$(z,C,B)},A=Array.isArray(q.__GEMI_DICT__)?q.__GEMI_DICT__:[];q.__GEMI_DICT__={push:x};for(let z of A)x(z)}function F(){W.clear(),Z.clear(),V.clear(),I.clear(),X.clear(),E.length=0,j.activeLocale=null}function f(){let q=new Set,x=[],A=[];return{use(z,C,B){let J=`${z} ${C}`;if(q.has(J))return;q.add(J);let O={id:z,locale:C,strings:B};if(x.length===0){A.push(O);return}for(let Q of x)Q(O)},onUse(z){x.push(z);while(A.length>0)z(A.shift())}}}
|
|
3
|
-
export{D as
|
|
3
|
+
export{D as Bk,H as Ck,U as Dk,K as Ek,S as Fk,L as Gk,R as Hk,w as Ik,F as Jk,f as Kk};
|
|
4
4
|
|
|
5
|
-
//# debugId=
|
|
5
|
+
//# debugId=119BD8820097BB5064756E2164756E21
|
|
@@ -6,6 +6,6 @@
|
|
|
6
6
|
"import type { LocaleStrings } from \"./dictionaryShape\";\n\n/**\n * Collects the dictionaries one SSR render actually read.\n *\n * Scoped per request by living in React context rather than in module state: a\n * streaming server has several renders in flight at once, so a module-level\n * collector would mix one page's dictionaries into another's payload. Context\n * is per render tree, which is exactly the boundary wanted, and it needs no\n * async-local storage to survive React's internal scheduling.\n *\n * Why stream these rather than put them in `__GEMI_DATA__`: that snapshot is\n * serialized before `renderToReadableStream` is even called, and which\n * dictionaries a page reads is only known once it has rendered. A suspended\n * segment reveals later still, long after the shell has flushed.\n *\n * The sink deliberately emits data, not markup — `streamQueryInjection` owns\n * script formatting and the `</script>`-safe encoding that goes with it.\n */\nexport interface DictionaryUse {\n id: string;\n locale: string;\n strings: LocaleStrings;\n}\n\nexport interface DictionarySink {\n /** Called during render, the first time a dictionary is read. */\n use(id: string, locale: string, strings: LocaleStrings): void;\n /** The response injector subscribes to receive uses as they happen. */\n onUse(cb: (use: DictionaryUse) => void): void;\n}\n\nexport function createDictionarySink(): DictionarySink {\n const seen = new Set<string>();\n const listeners: Array<(use: DictionaryUse) => void> = [];\n // Uses recorded before the injector subscribed — the render begins before the\n // response stream is wrapped.\n const pending: DictionaryUse[] = [];\n\n return {\n use(id, locale, strings) {\n const key = `${id} ${locale}`;\n if (seen.has(key)) return;\n seen.add(key);\n const entry: DictionaryUse = { id, locale, strings };\n if (listeners.length === 0) {\n pending.push(entry);\n return;\n }\n for (const listener of listeners) listener(entry);\n },\n onUse(cb) {\n listeners.push(cb);\n while (pending.length > 0) {\n cb(pending.shift()!);\n }\n },\n };\n}\n"
|
|
7
7
|
],
|
|
8
8
|
"mappings": "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",
|
|
9
|
-
"debugId": "
|
|
9
|
+
"debugId": "119BD8820097BB5064756E2164756E21",
|
|
10
10
|
"names": []
|
|
11
11
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
function H(z){if(z===401)return"authentication";if(z===403)return"permission";if(z===404)return"not_found";if(z===416)return"range_not_satisfiable";if(z===429)return"rate_limit";if(z>=500)return"server_error";return"form_error"}var N="GEMI_REQUEST_BREAKER_ERROR";class J extends Error{static legacyStringPayload=!1;kind=N;payload;constructor(z,C={}){super(z);let D=C.status??400;this.payload={api:{status:D,data:{error:L(C.kind??H(D),z??"",D)},...C.headers?{headers:C.headers}:{}},view:{status:D}}}}function L(z,C,D){return{kind:z,message:C,status:D}}function X(z,C,D){return J.legacyStringPayload?C:L(z,C,D)}
|
|
3
|
-
export{H as
|
|
3
|
+
export{H as Ji,N as Ki,J as Li,L as Mi,X as Ni};
|
|
4
4
|
|
|
5
|
-
//# debugId=
|
|
5
|
+
//# debugId=3F44264437115E9364756E2164756E21
|
|
@@ -6,6 +6,6 @@
|
|
|
6
6
|
"import { refusalKindForStatus, type Refusal, type RefusalKind } from \"./refusal\";\n\nexport const GEMI_REQUEST_BREAKER_ERROR = \"GEMI_REQUEST_BREAKER_ERROR\";\n\nexport type RequestBreakerOptions = {\n /** The answer's status. 400 when absent. */\n status?: number;\n /**\n * What the client's guards classify it as. Absent, it follows from\n * `status`: 401 `authentication`, 403 `permission`, 404 `not_found`, 429\n * `rate_limit`, 5xx `server_error`, any other status `form_error`.\n */\n kind?: Exclude<RefusalKind, \"validation_error\">;\n /** Extra headers for the API answer. */\n headers?: Record<string, string>;\n};\n\nexport class RequestBreakerError extends Error {\n /**\n * Answer the refusals that were bare strings before 0.88 — authentication,\n * authorization, permission, CSRF and a 500 — with that string again,\n * instead of `{ kind, message, status }`.\n *\n * For a shipped native client that reads `body.error` as a string and cannot\n * be rolled forward in the same deploy as the server. Set it once at boot,\n * and remove the line when the clients read `body.error.message`:\n *\n * ```ts\n * RequestBreakerError.legacyStringPayload = true;\n * ```\n *\n * gemi's own web client reads either shape. Refusals that were already\n * objects (404, 429, a policy 403) stay objects.\n */\n static legacyStringPayload = false;\n\n public kind = GEMI_REQUEST_BREAKER_ERROR;\n public payload: {\n api: Record<string, any>;\n view: Record<string, any>;\n /**\n * What a `.json` view navigation answers, when that differs from `api`.\n * Absent, it gets `api` — right for most breakers, but not for one that\n * must be a 401 to an API client and a redirect to the client router.\n */\n viewData?: Record<string, any>;\n };\n\n /**\n * A refusal that answers `{ error: { kind, message, status } }` with\n * `status`, so the client's guards classify it without a payload of your\n * own. A subclass that sets `payload` itself replaces this.\n *\n * ```ts\n * throw new RequestBreakerError(\"This slug is taken\", { status: 409 });\n * // → 409 { error: { kind: \"form_error\", message: \"This slug is taken\", status: 409 } }\n * ```\n */\n constructor(message?: string, options: RequestBreakerOptions = {}) {\n super(message);\n const status = options.status ?? 400;\n this.payload = {\n api: {\n status,\n data: {\n error: refusal(options.kind ?? refusalKindForStatus(status), message ?? \"\", status),\n },\n ...(options.headers ? { headers: options.headers } : {}),\n },\n view: { status },\n };\n }\n}\n\n/** A refusal's `error` field. */\nexport function refusal<K extends Exclude<RefusalKind, \"validation_error\">>(\n kind: K,\n message: string,\n status: number,\n): Refusal<K> {\n return { kind, message, status };\n}\n\n/**\n * A refusal that was a bare string before 0.88: the object, or the string\n * under `RequestBreakerError.legacyStringPayload`.\n *\n * @internal\n */\nexport function stringEraRefusal<K extends Exclude<RefusalKind, \"validation_error\">>(\n kind: K,\n message: string,\n status: number,\n): Refusal<K> | string {\n return RequestBreakerError.legacyStringPayload ? message : refusal(kind, message, status);\n}\n"
|
|
7
7
|
],
|
|
8
8
|
"mappings": ";AA0DO,SAAS,CAAoB,CAAC,EAA0D,CAC7F,GAAI,IAAW,IAAK,MAAO,iBAC3B,GAAI,IAAW,IAAK,MAAO,aAC3B,GAAI,IAAW,IAAK,MAAO,YAC3B,GAAI,IAAW,IAAK,MAAO,wBAC3B,GAAI,IAAW,IAAK,MAAO,aAC3B,GAAI,GAAU,IAAK,MAAO,eAC1B,MAAO,aC/DF,IAAM,EAA6B,6BAenC,MAAM,UAA4B,KAAM,OAiBtC,qBAAsB,GAEtB,KAAO,EACP,QAqBP,WAAW,CAAC,EAAkB,EAAiC,CAAC,EAAG,CACjE,MAAM,CAAO,EACb,IAAM,EAAS,EAAQ,QAAU,IACjC,KAAK,QAAU,CACb,IAAK,CACH,SACA,KAAM,CACJ,MAAO,EAAQ,EAAQ,MAAQ,EAAqB,CAAM,EAAG,GAAW,GAAI,CAAM,CACpF,KACI,EAAQ,QAAU,CAAE,QAAS,EAAQ,OAAQ,EAAI,CAAC,CACxD,EACA,KAAM,CAAE,QAAO,CACjB,EAEJ,CAGO,SAAS,CAA2D,CACzE,EACA,EACA,EACY,CACZ,MAAO,CAAE,OAAM,UAAS,QAAO,EAS1B,SAAS,CAAoE,CAClF,EACA,EACA,EACqB,CACrB,OAAO,EAAoB,oBAAsB,EAAU,EAAQ,EAAM,EAAS,CAAM",
|
|
9
|
-
"debugId": "
|
|
9
|
+
"debugId": "3F44264437115E9364756E2164756E21",
|
|
10
10
|
"names": []
|
|
11
11
|
}
|
|
@@ -5,6 +5,6 @@
|
|
|
5
5
|
"import type { Application } from \"../foundation/Application\";\n\n/**\n * What a provider's `shutdown()` may resolve: nothing, or whether it\n * abandoned work at the deadline. See `ServiceProvider` below.\n */\nexport type ProviderShutdownResult = void | { abandoned: boolean };\n\n/**\n * Every hook defaults to a no-op. `register()` binds services into the\n * container and must not resolve any of them; `boot()` runs after every\n * provider has registered, so it may resolve freely.\n *\n * `shutdown()` runs once when a production server is told to stop (`SIGTERM`\n * or `SIGINT`), after it has stopped accepting requests and the in-flight ones\n * have finished or run out of grace — so nothing a request needs is torn down\n * under it. Providers shut down in reverse registration order, so one\n * registered after another may still use it. Each is awaited, but under a\n * shared deadline (`GEMI_SHUTDOWN_PROVIDER_TIMEOUT`): one that overruns is\n * abandoned and the next begins, and one that throws is logged and does not\n * stop the rest. See `Application.shutdown`.\n *\n * Under `gemi dev` it also runs on every `bun --hot` reload, for the\n * application the reload replaced, once the new one is serving and the old\n * one's requests have finished (see `server/devReload.ts`). A hook that closes\n * something kept on `globalThis` across reloads would close it for the new\n * application too.\n *\n * `timeoutMs` is what is left of that shared deadline when this provider is\n * reached. A provider that waits for something — jobs finishing, a queue\n * draining — should bound its own wait by a little less than this, so that it\n * is still the one to report what it gave up on. Ignoring it is fine; the\n * provider is then simply abandoned at the deadline, with only a generic line\n * from `Application` to say so.\n *\n * A provider that bounds its own wait and gives up on work it was waiting for\n * resolves `{ abandoned: true }`. `Application` then reports it in `timedOut`\n * as if it had overrun, and the process exits `1` — the work was cut off just\n * the same, and an orchestrator or a log alert has to be able to see that from\n * the exit code. The provider names what it abandoned in its own log line.\n */\nexport abstract class ServiceProvider {\n constructor(protected app: Application) {}\n\n register(): void {}\n\n boot(): void | Promise<void> {}\n\n shutdown(options?: {\n timeoutMs: number;\n }): ProviderShutdownResult | Promise<ProviderShutdownResult> {}\n}\n"
|
|
6
6
|
],
|
|
7
7
|
"mappings": ";AAyCO,MAAe,CAAgB,CACd,IAAtB,WAAW,CAAW,EAAkB,CAAlB,WAEtB,QAAQ,EAAS,EAEjB,IAAI,EAAyB,EAE7B,QAAQ,CAAC,EAEoD,EAC/D",
|
|
8
|
-
"debugId": "
|
|
8
|
+
"debugId": "7C4D45D05C4307AC64756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|