@tailorkit/cli 0.1.0-beta.16 → 0.1.0-beta.17

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 (2) hide show
  1. package/dist/index.js +44 -80
  2. package/package.json +5 -5
package/dist/index.js CHANGED
@@ -1,18 +1,18 @@
1
1
  #!/usr/bin/env node
2
- import{fileURLToPath as e}from"node:url";import{dirname as t}from"node:path";const n=e(import.meta.url);t(n);import{createRequire as r}from"node:module";import{cancel as i,confirm as a,intro as o,isCancel as s,log as c,outro as l,select as u,spinner as d,text as f}from"@clack/prompts";import{cac as p}from"cac";import m from"picocolors";import{chmod as h,mkdir as g,mkdtemp as _,readFile as v,readdir as y,realpath as ee,rm as b,stat as x,writeFile as S}from"node:fs/promises";import{homedir as C,platform as te}from"node:os";import w from"node:path";import{loadTailorKitConfig as ne}from"@tailorkit/app/config/loader";import{z as T}from"zod";import{createHash as E}from"node:crypto";import{execFile as re,spawn as ie}from"node:child_process";import{existsSync as ae}from"node:fs";import{promisify as oe}from"node:util";import{gzip as D}from"node:zlib";import{Liquid as se}from"liquidjs";function O(e){return Array.isArray(e)?e:e==null?[]:[e]}var k=class extends Error{constructor(...e){super(...e),this.name=`AbortError`}};function ce(e){let t=Promise.resolve();return(...n)=>t=t.catch(()=>{}).then(()=>e(...n))}var le=class{index=BigInt(1);generate(){let e=this.index.toString(36);return this.index++,e}};function A(e){return!e||typeof e!=`object`?!1:`next`in e&&typeof e.next==`function`&&Symbol.asyncIterator in e&&typeof e[Symbol.asyncIterator]==`function`}var ue=Symbol.asyncDispose??Symbol.for(`asyncDispose`),de=class{isDone=!1;isExecuteComplete=!1;cleanup;next;constructor(e,t){this.cleanup=t,this.next=ce(async()=>{if(this.isDone)return{done:!0,value:void 0};let t;try{let t=await e();return t.done&&(this.isDone=!0),t}catch(e){throw t={value:e},this.isDone=!0,e}finally{this.isDone&&!this.isExecuteComplete&&(this.isExecuteComplete=!0,await this.cleanup(t?{kind:`error`,error:t.value}:{kind:`success`}))}})}async return(e){return this.isDone=!0,this.isExecuteComplete||(this.isExecuteComplete=!0,await this.cleanup({kind:`cancelled`})),{done:!0,value:e}}async throw(e){throw this.isDone=!0,this.isExecuteComplete||(this.isExecuteComplete=!0,await this.cleanup({kind:`cancelled`,error:e})),e}async[ue](){this.isDone=!0,this.isExecuteComplete||(this.isExecuteComplete=!0,await this.cleanup({kind:`cancelled`}))}[Symbol.asyncIterator](){return this}};function fe(e){if(e)return JSON.parse(e)}function j(e){return JSON.stringify(e)}function pe(e){for(let t of Object.values(e))if(t!==void 0)return!0;return!1}function M(e){if(!e)return!1;let t=typeof e;return t===`object`||t===`function`}var me=new WeakMap;function he(e,t,{bind:n=!0}={}){let r=Reflect.get(e,t);if(!n||typeof r!=`function`)return r;let i=me.get(r);i||me.set(r,i=new WeakMap);let a=i.get(e);return a||i.set(e,a=r.bind(e)),a}var ge=class{items=[];pendingPulls=[];closed;push(e){if(this.closed)throw this.closed.reason;let t=this.pendingPulls.shift();t?t[0](e):this.items.push(e)}async pull(){if(this.items.length>0)return this.items.shift();if(this.closed)throw this.closed.reason;return new Promise((e,t)=>{this.pendingPulls.push([e,t])})}close(e){this.closed||(e??=new k(`Queue was closed.`),this.closed={reason:e},this.pendingPulls.forEach(([,t])=>t(e)),this.pendingPulls.length=0)}abort(e){e??=new k(`Queue was aborted.`),this.items.length=0,this.close(e)}};function _e(e,{signal:t}={}){return new Promise((n,r)=>{if(t?.aborted){r(t.reason);return}let i=null,a=setTimeout(()=>{i&&t?.removeEventListener(`abort`,i),n()},e);t&&t.addEventListener(`abort`,i=()=>{clearTimeout(a),r(t?.reason)},{once:!0})})}var ve=/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g;function ye(e){try{return encodeURIComponent(e)}catch{return encodeURIComponent(e.replace(ve,`�`))}}function be(e){if(!e.includes(`%`))return e;try{return decodeURIComponent(e)}catch{return e}}function xe(e){return e[0]??{}}async function Se(e){return typeof e.bytes==`function`?e.bytes():new Uint8Array(await e.arrayBuffer())}function Ce(e){return typeof e==`string`?e:e instanceof ArrayBuffer?new Uint8Array(e):Array.isArray(e)?Te(e):e instanceof Uint8Array?e:new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}function we(e){return typeof e==`string`?new TextEncoder().encode(e):e instanceof ArrayBuffer?new Uint8Array(e):e instanceof Uint8Array?e:new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}function Te(e){let t=e.map(we),n=t.reduce((e,t)=>e+t.byteLength,0),r=new Uint8Array(n),i=0;for(let e of t)r.set(e,i),i+=e.byteLength;return r}var Ee=`orpc`;function De(e){return e instanceof Error&&e.name.includes(`Abort`)}Object.getPrototypeOf(async function*(){}).constructor;function Oe(e){let t;return()=>{if(t)return t.result;let n=e();return t={result:n},n}}function ke(e){return`/${e.map(ye).join(`/`)}`}var Ae=Symbol.for(`ORPC_TRACER`);function N(){return globalThis[Ae]}function je(e){let t=N();if(t)return typeof e==`string`?t.startSpan(e):t.startSpan(e.name,e.parent)}function Me(e,t){e&&e.recordException(De(t)?`info`:`error`,Ne(t))}function Ne(e){if(e instanceof Error){let t={message:e.message,name:e.name,stack:e.stack};return`code`in e&&(typeof e.code==`string`||typeof e.code==`number`)&&(t.code=e.code),t}return{message:String(e)}}async function Pe(e,t){let n=N();if(!n)return t();let r=typeof e==`string`?e:e.name,i=typeof e==`string`?void 0:e.parent;return n.startActiveSpan(r,i,async e=>{try{return await t(e)}catch(t){throw Me(e,t),t}finally{e.end()}})}function Fe(e,t){let n=N();return!e||!n?t():n.withActiveSpan(e,t)}function Ie(e,{runWith:t,mapResult:n,mapError:r,onError:i,onFinish:a}){t??=e=>e();let o;return new de(async()=>{try{let r;try{r=await t(()=>e.next()),o=r.done}catch(e){throw o=!0,e}return n?await n(r):r}catch(e){throw await i?.(e),r?await r(e):e}},async n=>{try{if(!o)try{await t(async()=>e.return?.())}catch(e){throw await i?.(e),e}}finally{await a?.()}})}function Le(e,t){let n=Oe(()=>je(e));return Ie(t,{runWith:e=>Fe(n(),e),mapResult(e){return n()?.addEvent(e.done?`completed`:`yielded`),e},onError(e){Me(n(),e)},onFinish(){n()?.end()}})}function P(e,...t){return typeof e==`function`?e(...t):e}function Re(e,t){return new Proxy(typeof e==`function`?t:e,{get(n,r){return he(r in t?t:P(e),r)},has(n,r){return Reflect.has(t,r)||Reflect.has(P(e),r)}})}function ze(e){return M(e)?Object.getPrototypeOf(e)?.constructor:null}function*Be(e){if(!M(e))return;let t=Object.getPrototypeOf(e);for(;t!=null;)t.constructor&&(yield t.constructor),t=Object.getPrototypeOf(t)}function Ve(e){if(!e||typeof e!=`object`)return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||!t||!t.constructor}function He(e,t,n){t===`__proto__`?Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0}):e[t]=n}function Ue(e,t){let n={...e};for(let e of t)delete n[e];return n}function We(e,t,n){let r=e[t];if(r!==n)return r;let i;if(Array.isArray(r))i=r.slice();else if(Ve(r))i={...r};else return r;return He(e,t,i),i}var Ge=(()=>{let e=function(){};return e.prototype=Object.create(null),Object.freeze(e.prototype),e})();function Ke(){let e={};return e.promise=new Promise((t,n)=>{e.resolve=t,e.reject=n}),e}function qe(e,{runWith:t,mapResult:n,mapError:r,onError:i,onFinish:a}){t??=e=>e();let o=Oe(()=>e.getReader()),s=Oe(async()=>a?.());return new ReadableStream({async pull(e){let a;try{let e=await t(()=>o().read());a=n?await n(e):e}catch(t){try{await i?.(t),e.error(r?await r(t):t)}finally{await s()}return}a.done?(e.close(),await s()):e.enqueue(a.value)},async cancel(e){try{try{await t(()=>o().cancel(e))}catch(e){throw await i?.(e),e}}finally{await s()}}})}function Je(e,t){let n=Oe(()=>je(e));return qe(t,{runWith:e=>Fe(n(),e),mapResult(e){return n()?.addEvent(e.done?`closed`:`enqueued`),e},onError(e){Me(n(),e)},onFinish(){n()?.end()}})}function Ye(e,t,n){if(!e?.length)return n(t);let r=(t,i)=>{let a=e[i];return a?a({...t,next:(e=t)=>r(e,i+1)}):n(t)};return r(t,0)}function Xe(e){let t=e.length,n=new Map;for(let r=0;r<t;r++){let t=e[r],i=n.get(t.name);i===void 0?n.set(t.name,[r]):i.push(r)}let r=Array.from({length:t},()=>[]);for(let i=0;i<t;i++){let t=e[i];if(t.before!==void 0)for(let e of t.before){let t=n.get(e);if(t!==void 0)for(let e of t)r[e].push(i)}if(t.after!==void 0)for(let e of t.after){let t=n.get(e);if(t!==void 0)for(let e of t)r[i].push(e)}}let i=[],a=new Set;for(;i.length<t;){let t=e.findIndex((e,t)=>!a.has(t)&&r[t].every(e=>a.has(e)));if(t===-1)throw Error(`Circular dependency detected involving plugin "${Ze(e,r,a).name}"`);a.add(t),i.push(e[t])}return i}function Ze(e,t,n){let r=new Set,i=e.findIndex((e,t)=>!n.has(t));for(;!r.has(i);)r.add(i),i=t[i].find(e=>!n.has(e));return e[i]}async function Qe(e,t){if(!e)return t();e.throwIfAborted();let{promise:n,reject:r,resolve:i}=Ke(),a;e.addEventListener(`abort`,a=()=>{r(e.reason),a=void 0});try{return t().then(i,r),await n}finally{a&&e.removeEventListener(`abort`,a)}}var $e=class extends TypeError{},et=class extends TypeError{},F=class extends Error{constructor(e,t={}){super(t?.message??`Error Event`,t),this.data=e}},tt=/\r\n|\r(?!\n)|\n/,nt=/(?:\r\n|\r(?!\n)|\n){2}/,rt=/(?:\r\n|\r(?!\n)|\n){2}/g,it=13,at=10,ot=32;function st(e){let t={};for(let n of e.split(tt)){if(n===``)continue;let e=n.indexOf(`:`),r=e===-1?``:n.slice(n.charCodeAt(e+1)===ot?e+2:e+1);if(e===0){(t.comments??=[]).push(r);continue}switch(e===-1?n:n.slice(0,e)){case`data`:t.data=t.data===void 0?r:`${t.data}
3
- ${r}`;break;case`event`:t.event=r;break;case`id`:t.id=r;break;case`retry`:{let e=Number.parseInt(r,10);e>=0&&e.toString()===r&&(t.retry=e);break}}}return t}var ct=class{constructor(e){this.onEvent=e}pending=[];tail=``;discardLeadingLF=!1;feed(e){if(e===``||this.discardLeadingLF&&(this.discardLeadingLF=!1,e.charCodeAt(0)===at&&(e=e.slice(1),e===``)))return;let t=this.tail+e;if(!nt.test(t)){this.pending.push(e),this.tail=t.slice(-3);return}this.pending.push(e);let n=this.pending.length===1?e:this.pending.join(``),r=n.length-t.length,i=[],a=0;for(let e of t.matchAll(rt))i.push(n.slice(a,r+e.index)),a=r+e.index+e[0].length;let o=n.slice(a);this.pending.length=0,this.tail=o.slice(-3),o===``?this.discardLeadingLF=e.charCodeAt(e.length-1)===it:this.pending.push(o);for(let e of i)this.onEvent(st(e))}end(){if(this.pending.length!==0)throw new et(`Event Stream ended before complete`)}},lt=class{readable;writable;constructor(){let e,t=new TransformStream({start(t){e=new ct(e=>{t.enqueue(e)})},transform(t){e.feed(t)},flush(){e.end()}});this.readable=t.readable,this.writable=t.writable}},ut=/\r\n|[\n\r]/,dt=/\r\n|[\n\r]/g;function ft(e){return ut.test(e)}function pt(e){if(ft(e))throw new $e(`Event's id must not contain a carriage return or newline character`)}function mt(e){if(ft(e))throw new $e(`Event's event must not contain a carriage return or newline character`)}function ht(e){if(!Number.isInteger(e)||e<0)throw new $e(`Event's retry must be a integer and >= 0`)}function gt(e){if(ft(e))throw new $e(`Event's comment must not contain a carriage return or newline character`)}function _t(e){return e===void 0?``:`data: ${e.replace(dt,`
2
+ import{fileURLToPath as e}from"node:url";import{dirname as t}from"node:path";const n=e(import.meta.url);t(n);import{createRequire as r}from"node:module";import{cancel as i,confirm as a,intro as o,isCancel as s,log as c,outro as l,select as u,spinner as d,text as f}from"@clack/prompts";import{cac as p}from"cac";import m from"picocolors";import{chmod as h,mkdir as g,mkdtemp as _,readFile as v,readdir as y,realpath as b,rm as x,stat as S,writeFile as C}from"node:fs/promises";import{homedir as w,platform as ee}from"node:os";import T from"node:path";import{loadTailorKitConfig as te}from"@tailorkit/app/config/loader";import{z as E}from"zod";import{createHash as D}from"node:crypto";import{execFile as ne,spawn as re}from"node:child_process";import{existsSync as ie}from"node:fs";import{promisify as ae}from"node:util";import{gzip as O}from"node:zlib";import{Liquid as oe}from"liquidjs";function k(e){return Array.isArray(e)?e:e==null?[]:[e]}var A=class extends Error{constructor(...e){super(...e),this.name=`AbortError`}};function se(e){let t=Promise.resolve();return(...n)=>t=t.catch(()=>{}).then(()=>e(...n))}var ce=class{index=BigInt(1);generate(){let e=this.index.toString(36);return this.index++,e}};function j(e){return!e||typeof e!=`object`?!1:`next`in e&&typeof e.next==`function`&&Symbol.asyncIterator in e&&typeof e[Symbol.asyncIterator]==`function`}var le=Symbol.asyncDispose??Symbol.for(`asyncDispose`),ue=class{isDone=!1;isExecuteComplete=!1;cleanup;next;constructor(e,t){this.cleanup=t,this.next=se(async()=>{if(this.isDone)return{done:!0,value:void 0};let t;try{let t=await e();return t.done&&(this.isDone=!0),t}catch(e){throw t={value:e},this.isDone=!0,e}finally{this.isDone&&!this.isExecuteComplete&&(this.isExecuteComplete=!0,await this.cleanup(t?{kind:`error`,error:t.value}:{kind:`success`}))}})}async return(e){return this.isDone=!0,this.isExecuteComplete||(this.isExecuteComplete=!0,await this.cleanup({kind:`cancelled`})),{done:!0,value:e}}async throw(e){throw this.isDone=!0,this.isExecuteComplete||(this.isExecuteComplete=!0,await this.cleanup({kind:`cancelled`,error:e})),e}async[le](){this.isDone=!0,this.isExecuteComplete||(this.isExecuteComplete=!0,await this.cleanup({kind:`cancelled`}))}[Symbol.asyncIterator](){return this}};function de(e){if(e)return JSON.parse(e)}function M(e){return JSON.stringify(e)}function fe(e){for(let t of Object.values(e))if(t!==void 0)return!0;return!1}function N(e){if(!e)return!1;let t=typeof e;return t===`object`||t===`function`}var pe=new WeakMap;function me(e,t,{bind:n=!0}={}){let r=Reflect.get(e,t);if(!n||typeof r!=`function`)return r;let i=pe.get(r);i||pe.set(r,i=new WeakMap);let a=i.get(e);return a||i.set(e,a=r.bind(e)),a}var he=class{items=[];pendingPulls=[];closed;push(e){if(this.closed)throw this.closed.reason;let t=this.pendingPulls.shift();t?t[0](e):this.items.push(e)}async pull(){if(this.items.length>0)return this.items.shift();if(this.closed)throw this.closed.reason;return new Promise((e,t)=>{this.pendingPulls.push([e,t])})}close(e){this.closed||(e??=new A(`Queue was closed.`),this.closed={reason:e},this.pendingPulls.forEach(([,t])=>t(e)),this.pendingPulls.length=0)}abort(e){e??=new A(`Queue was aborted.`),this.items.length=0,this.close(e)}};function ge(e,{signal:t}={}){return new Promise((n,r)=>{if(t?.aborted){r(t.reason);return}let i=null,a=setTimeout(()=>{i&&t?.removeEventListener(`abort`,i),n()},e);t&&t.addEventListener(`abort`,i=()=>{clearTimeout(a),r(t?.reason)},{once:!0})})}var _e=/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g;function ve(e){try{return encodeURIComponent(e)}catch{return encodeURIComponent(e.replace(_e,`�`))}}function ye(e){if(!e.includes(`%`))return e;try{return decodeURIComponent(e)}catch{return e}}function be(e){return e[0]??{}}async function xe(e){return typeof e.bytes==`function`?e.bytes():new Uint8Array(await e.arrayBuffer())}function Se(e){return typeof e==`string`?e:e instanceof ArrayBuffer?new Uint8Array(e):Array.isArray(e)?we(e):e instanceof Uint8Array?e:new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}function Ce(e){return typeof e==`string`?new TextEncoder().encode(e):e instanceof ArrayBuffer?new Uint8Array(e):e instanceof Uint8Array?e:new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}function we(e){let t=e.map(Ce),n=t.reduce((e,t)=>e+t.byteLength,0),r=new Uint8Array(n),i=0;for(let e of t)r.set(e,i),i+=e.byteLength;return r}var Te=`orpc`;function Ee(e){return e instanceof Error&&e.name.includes(`Abort`)}Object.getPrototypeOf(async function*(){}).constructor;function De(e){let t;return()=>{if(t)return t.result;let n=e();return t={result:n},n}}function Oe(e){return`/${e.map(ve).join(`/`)}`}var ke=Symbol.for(`ORPC_TRACER`);function P(){return globalThis[ke]}function Ae(e){let t=P();if(t)return typeof e==`string`?t.startSpan(e):t.startSpan(e.name,e.parent)}function je(e,t){e&&e.recordException(Ee(t)?`info`:`error`,Me(t))}function Me(e){if(e instanceof Error){let t={message:e.message,name:e.name,stack:e.stack};return`code`in e&&(typeof e.code==`string`||typeof e.code==`number`)&&(t.code=e.code),t}return{message:String(e)}}async function Ne(e,t){let n=P();if(!n)return t();let r=typeof e==`string`?e:e.name,i=typeof e==`string`?void 0:e.parent;return n.startActiveSpan(r,i,async e=>{try{return await t(e)}catch(t){throw je(e,t),t}finally{e.end()}})}function Pe(e,t){let n=P();return!e||!n?t():n.withActiveSpan(e,t)}function Fe(e,{runWith:t,mapResult:n,mapError:r,onError:i,onFinish:a}){t??=e=>e();let o;return new ue(async()=>{try{let r;try{r=await t(()=>e.next()),o=r.done}catch(e){throw o=!0,e}return n?await n(r):r}catch(e){throw await i?.(e),r?await r(e):e}},async n=>{try{if(!o)try{await t(async()=>e.return?.())}catch(e){throw await i?.(e),e}}finally{await a?.()}})}function Ie(e,t){let n=De(()=>Ae(e));return Fe(t,{runWith:e=>Pe(n(),e),mapResult(e){return n()?.addEvent(e.done?`completed`:`yielded`),e},onError(e){je(n(),e)},onFinish(){n()?.end()}})}function F(e,...t){return typeof e==`function`?e(...t):e}function Le(e,t){return new Proxy(typeof e==`function`?t:e,{get(n,r){return me(r in t?t:F(e),r)},has(n,r){return Reflect.has(t,r)||Reflect.has(F(e),r)}})}function Re(e){return N(e)?Object.getPrototypeOf(e)?.constructor:null}function*ze(e){if(!N(e))return;let t=Object.getPrototypeOf(e);for(;t!=null;)t.constructor&&(yield t.constructor),t=Object.getPrototypeOf(t)}function Be(e){if(!e||typeof e!=`object`)return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||!t||!t.constructor}function Ve(e,t,n){t===`__proto__`?Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0}):e[t]=n}function He(e,t){let n={...e};for(let e of t)delete n[e];return n}function Ue(e,t,n){let r=e[t];if(r!==n)return r;let i;if(Array.isArray(r))i=r.slice();else if(Be(r))i={...r};else return r;return Ve(e,t,i),i}var We=(()=>{let e=function(){};return e.prototype=Object.create(null),Object.freeze(e.prototype),e})();function Ge(){let e={};return e.promise=new Promise((t,n)=>{e.resolve=t,e.reject=n}),e}function Ke(e,{runWith:t,mapResult:n,mapError:r,onError:i,onFinish:a}){t??=e=>e();let o=De(()=>e.getReader()),s=De(async()=>a?.());return new ReadableStream({async pull(e){let a;try{let e=await t(()=>o().read());a=n?await n(e):e}catch(t){try{await i?.(t),e.error(r?await r(t):t)}finally{await s()}return}a.done?(e.close(),await s()):e.enqueue(a.value)},async cancel(e){try{try{await t(()=>o().cancel(e))}catch(e){throw await i?.(e),e}}finally{await s()}}})}function qe(e,t){let n=De(()=>Ae(e));return Ke(t,{runWith:e=>Pe(n(),e),mapResult(e){return n()?.addEvent(e.done?`closed`:`enqueued`),e},onError(e){je(n(),e)},onFinish(){n()?.end()}})}function Je(e,t,n){if(!e?.length)return n(t);let r=(t,i)=>{let a=e[i];return a?a({...t,next:(e=t)=>r(e,i+1)}):n(t)};return r(t,0)}function Ye(e){let t=e.length,n=new Map;for(let r=0;r<t;r++){let t=e[r],i=n.get(t.name);i===void 0?n.set(t.name,[r]):i.push(r)}let r=Array.from({length:t},()=>[]);for(let i=0;i<t;i++){let t=e[i];if(t.before!==void 0)for(let e of t.before){let t=n.get(e);if(t!==void 0)for(let e of t)r[e].push(i)}if(t.after!==void 0)for(let e of t.after){let t=n.get(e);if(t!==void 0)for(let e of t)r[i].push(e)}}let i=[],a=new Set;for(;i.length<t;){let t=e.findIndex((e,t)=>!a.has(t)&&r[t].every(e=>a.has(e)));if(t===-1)throw Error(`Circular dependency detected involving plugin "${Xe(e,r,a).name}"`);a.add(t),i.push(e[t])}return i}function Xe(e,t,n){let r=new Set,i=e.findIndex((e,t)=>!n.has(t));for(;!r.has(i);)r.add(i),i=t[i].find(e=>!n.has(e));return e[i]}async function Ze(e,t){if(!e)return t();e.throwIfAborted();let{promise:n,reject:r,resolve:i}=Ge(),a;e.addEventListener(`abort`,a=()=>{r(e.reason),a=void 0});try{return t().then(i,r),await n}finally{a&&e.removeEventListener(`abort`,a)}}var Qe=class extends TypeError{},$e=class extends TypeError{},I=class extends Error{constructor(e,t={}){super(t?.message??`Error Event`,t),this.data=e}},et=/\r\n|\r(?!\n)|\n/,tt=/(?:\r\n|\r(?!\n)|\n){2}/,nt=/(?:\r\n|\r(?!\n)|\n){2}/g,rt=13,it=10,at=32;function ot(e){let t={};for(let n of e.split(et)){if(n===``)continue;let e=n.indexOf(`:`),r=e===-1?``:n.slice(n.charCodeAt(e+1)===at?e+2:e+1);if(e===0){(t.comments??=[]).push(r);continue}switch(e===-1?n:n.slice(0,e)){case`data`:t.data=t.data===void 0?r:`${t.data}
3
+ ${r}`;break;case`event`:t.event=r;break;case`id`:t.id=r;break;case`retry`:{let e=Number.parseInt(r,10);e>=0&&e.toString()===r&&(t.retry=e);break}}}return t}var st=class{constructor(e){this.onEvent=e}pending=[];tail=``;discardLeadingLF=!1;feed(e){if(e===``||this.discardLeadingLF&&(this.discardLeadingLF=!1,e.charCodeAt(0)===it&&(e=e.slice(1),e===``)))return;let t=this.tail+e;if(!tt.test(t)){this.pending.push(e),this.tail=t.slice(-3);return}this.pending.push(e);let n=this.pending.length===1?e:this.pending.join(``),r=n.length-t.length,i=[],a=0;for(let e of t.matchAll(nt))i.push(n.slice(a,r+e.index)),a=r+e.index+e[0].length;let o=n.slice(a);this.pending.length=0,this.tail=o.slice(-3),o===``?this.discardLeadingLF=e.charCodeAt(e.length-1)===rt:this.pending.push(o);for(let e of i)this.onEvent(ot(e))}end(){if(this.pending.length!==0)throw new $e(`Event Stream ended before complete`)}},ct=class{readable;writable;constructor(){let e,t=new TransformStream({start(t){e=new st(e=>{t.enqueue(e)})},transform(t){e.feed(t)},flush(){e.end()}});this.readable=t.readable,this.writable=t.writable}},lt=/\r\n|[\n\r]/,ut=/\r\n|[\n\r]/g;function dt(e){return lt.test(e)}function ft(e){if(dt(e))throw new Qe(`Event's id must not contain a carriage return or newline character`)}function pt(e){if(dt(e))throw new Qe(`Event's event must not contain a carriage return or newline character`)}function mt(e){if(!Number.isInteger(e)||e<0)throw new Qe(`Event's retry must be a integer and >= 0`)}function ht(e){if(dt(e))throw new Qe(`Event's comment must not contain a carriage return or newline character`)}function gt(e){return e===void 0?``:`data: ${e.replace(ut,`
4
4
  data: `)}
5
- `}function vt(e){let t=``;for(let n of e??[])gt(n),t+=`: ${n}
6
- `;return t}function yt(e){let t=``;return t+=vt(e.comments),e.event!==void 0&&(mt(e.event),t+=`event: ${e.event}
7
- `),e.retry!==void 0&&(ht(e.retry),t+=`retry: ${e.retry}
8
- `),e.id!==void 0&&(pt(e.id),t+=`id: ${e.id}
9
- `),t+=_t(e.data),t+=`
10
- `,t}var bt=Symbol.for(`STANDARD_SERVER_EVENT_META`),xt=Symbol.for(`STANDARD_SERVER_EVENT_SOURCE`);function I(e,t){let n;if(t.id!==void 0&&(pt(t.id),n??={},n.id=t.id),t.retry!==void 0&&(ht(t.retry),n??={},n.retry=t.retry),t.comments!==void 0){for(let e of t.comments)gt(e);n??={},n.comments=t.comments}return n?new Proxy(e,{get(e,t,r){return t===xt?e:t===bt?n:he(e,t)}}):e}function St(e){if(!M(e))return[e,void 0];let t=e[bt];return[e[xt]??e,t]}function Ct(e){if(M(e))return e[bt]}function wt(e,t=`inline`){return`${t}; filename="${e.replace(/[^\x20-\x7E]/g,`_`).replace(/[\\"]/g,`\\$&`)}"; filename*=utf-8''${ye(e).replace(/['()*]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`).replace(/%(7C|60|5E)/g,(e,t)=>String.fromCharCode(Number.parseInt(t,16)))}`}function Tt(e){let t=e.match(/(?:^|;)\s*filename\*=([^;]*)/i)?.[1]?.trim(),n=t?.match(/^([^']*)'[^']*'(.*)$/);if(n){let[,e=``,t=``]=n;if(/^(?:utf-8|us-ascii)$/i.test(e))return be(t)}else if(t)return be(t);let r=e.match(/(?:^|;)\s*filename=(?:"((?:\\.|[^"\\])*)"|([^";]*))/i);return r?.[1]===void 0?r?.[2]?.trim()||void 0:r[1].replace(/\\(.)/g,`$1`)}function L(e){if(typeof e==`string`||e===void 0)return e;if(e.length!==0)return e.join(`, `)}var Et=new Set([`json`,`form-data`,`url-search-params`,`event-stream`,`octet-stream`,`file`,`none`]);function Dt(e){let t=L(e[`standard-server`]);if(t!==void 0&&Et.has(t))return t;let n=L(e[`content-type`])?.split(`;`)[0]?.trim().toLowerCase(),r=L(e[`content-length`]),i=L(e[`content-disposition`]),a=i===void 0?void 0:Tt(i);return n===void 0&&(r===void 0||r===`0`)?`none`:n===`application/json`?`json`:n===`multipart/form-data`?`form-data`:n===`application/x-www-form-urlencoded`?`url-search-params`:n===`text/event-stream`?`event-stream`:a!==void 0||r!==void 0?`file`:`octet-stream`}function Ot(e,t){let n={...e,...t};for(let r of Object.keys(t)){if(!Object.hasOwn(e,r))continue;let i=e[r],a=t[r];n[r]=i===void 0||a===void 0?i??a:[...O(i),...O(a)]}return n}function kt(e){let t=e.indexOf(`#`),n=e.indexOf(`?`),r=n!==-1&&(t===-1||n<t),i=r?n:t===-1?e.length:t,a=t===-1?e.length:t;return[e.slice(0,i),r?e.slice(n,a):void 0,t===-1?void 0:e.slice(t)]}function At(e){return M(e)?Object.values(e).every(e=>e===void 0||typeof e==`string`||Array.isArray(e)&&e.every(e=>typeof e==`string`)):!1}function jt(e){return Number.isInteger(e)}var Mt={BAD_REQUEST:400,UNAUTHORIZED:401,PAYMENT_REQUIRED:402,FORBIDDEN:403,NOT_FOUND:404,METHOD_NOT_SUPPORTED:405,NOT_ACCEPTABLE:406,TIMEOUT:408,CONFLICT:409,GONE:410,PRECONDITION_FAILED:412,PAYLOAD_TOO_LARGE:413,UNSUPPORTED_MEDIA_TYPE:415,UNPROCESSABLE_CONTENT:422,PRECONDITION_REQUIRED:428,TOO_MANY_REQUESTS:429,CLIENT_CLOSED_REQUEST:499,INTERNAL_SERVER_ERROR:500,NOT_IMPLEMENTED:501,BAD_GATEWAY:502,SERVICE_UNAVAILABLE:503,GATEWAY_TIMEOUT:504},Nt,R=class e extends Error{static{let t=Symbol.for(`ORPC_ERROR_CONSTRUCTORS`);globalThis[t]??=new WeakSet,Nt=globalThis[t],Nt.add(e)}name=`ORPCError`;defined=!1;code;data;constructor(e,...t){let n=xe(t),r=n.message??e.split(`_`).map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(` `);super(r,n),this.code=e,this.data=n.data}toJSON(){return{defined:this.defined,code:this.code,message:this.message,data:this.data}}static[Symbol.hasInstance](e){if(!Nt.has(this))return super[Symbol.hasInstance](e);for(let t of Be(e))if(Nt.has(t))return!0;return!1}},Pt=class extends Error{name=`MalformedResponseError`;response;constructor(e){super(e.message,e),this.response=e.response}};function Ft(e){return e instanceof R?e:new R(`INTERNAL_SERVER_ERROR`,{cause:e})}function It(e){if(!Ve(e))return!1;let t=[`defined`,`code`,`message`,`data`];return!Object.keys(e).some(e=>!t.includes(e))&&`defined`in e&&typeof e.defined==`boolean`&&`code`in e&&typeof e.code==`string`&&`message`in e&&typeof e.message==`string`}function Lt(e,t={}){let n=new R(e.code,{...e,...t});return n.defined=e.defined,n}function Rt(e){let t=new R(`MALFORMED_ORPC_RESPONSE`,{message:e.message??Ht(e.response),data:e.response});return t.cause=new Pt({...e,message:t.message}),t}var zt=1,Bt=256;function Vt(e){return e.length>=zt&&e.length<=Bt}function Ht(e){return typeof e.body==`string`&&Vt(e.body)?e.body:Ve(e.body)&&typeof e.body.message==`string`&&Vt(e.body.message)?e.body.message:(Object.entries(Mt).find(([,t])=>t===e.status)?.[0])?.split(`_`).map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(` `)}function Ut(e,{mapResult:t,mapError:n,...r}){return Ie(e,{...r,mapResult:t&&(async e=>{let n=await t(e);if(n.value!==e.value){let t=Ct(e.value);if(t&&M(n.value))return{done:n.done,value:I(n.value,t)}}return n}),mapError:n&&(async e=>{let t=await n(e);if(t!==e){let n=Ct(e);if(n&&M(t))return I(t,n)}return t})})}function Wt(e){return TypeError(`Invalid RPC serialized data: ${e}`)}function z(e,t,n){if(!e)throw Wt(`type "${t}" expects ${n}.`)}var Gt={undefined:{condition(e){return e===void 0},serialize(){return null},deserialize(e){z(e===null,`undefined`,`null`)},isTerminal:!0},bigint:{condition(e){return typeof e==`bigint`},serialize(e){return e.toString()},deserialize(e){return z(typeof e==`string`,`bigint`,`a string`),BigInt(e)},isTerminal:!0},date:{condition(e){return e instanceof Date},serialize(e){return Number.isNaN(e.getTime())?null:e.toISOString()},deserialize(e){return z(typeof e==`string`||e===null,`date`,`a string or null`),new Date(e??NaN)},isTerminal:!0},nan:{condition(e){return typeof e==`number`&&Number.isNaN(e)},serialize(){return null},deserialize(e){return z(e===null,`nan`,`null`),NaN},isTerminal:!0},url:{condition(e){return e instanceof URL},serialize(e){return e.toString()},deserialize(e){return z(typeof e==`string`,`url`,`a string`),new URL(e)},isTerminal:!0},set:{condition(e){return e instanceof Set},serialize(e){return Array.from(e)},deserialize(e){return z(Array.isArray(e),`set`,`an array`),new Set(e)}},map:{condition(e){return e instanceof Map},serialize(e){return Array.from(e.entries())},deserialize(e){return z(Array.isArray(e),`map`,`an array`),new Map(e)}}},Kt=class{handlers;inlineBuiltInHandlers;handlerEntries;omitUndefinedProperties;constructor(e={}){this.omitUndefinedProperties=e.omitUndefinedProperties!==!1,this.handlers=Object.assign(new Ge,Gt);let t=e.handlers;if(t===void 0){this.inlineBuiltInHandlers=!0;return}let n=!0,r=[];for(let e of Object.keys(t)){let i=t[e];this.handlers[e]=i,n&&e in Gt&&(n=!1),n&&i!==void 0&&r.push([e,i])}if(!n){r=[];for(let e of Object.keys(this.handlers)){let t=this.handlers[e];t!==void 0&&r.push([e,t])}}this.inlineBuiltInHandlers=n,this.handlerEntries=r}serialize(e){let t=[],n=[],r=[],i=this.serializeValue(e,[],t,n,r);return t=t.length===0?void 0:t,n.length===0?{json:i,meta:t}:{json:i,meta:t,maps:n,blobs:r}}serializeValue(e,t,n,r,i){if(this.inlineBuiltInHandlers)switch(typeof e){case`string`:case`boolean`:return e;case`number`:return Number.isNaN(e)?(n.push([`nan`,...t]),null):e;case`undefined`:return n.push([`undefined`,...t]),null;case`bigint`:return n.push([`bigint`,...t]),e.toString();case`object`:if(e===null)return e;if(e instanceof Date)return n.push([`date`,...t]),Number.isNaN(e.getTime())?null:e.toISOString();if(e instanceof URL)return n.push([`url`,...t]),e.toString();if(e instanceof Set){let a=this.serializeValue(Array.from(e),t,n,r,i);return n.push([`set`,...t]),a}if(e instanceof Map){let a=this.serializeValue(Array.from(e.entries()),t,n,r,i);return n.push([`map`,...t]),a}}let a=this.handlerEntries;if(a)for(let o=0;o<a.length;o++){let s=a[o],c=s[1];if(c.condition(e)){let a=c.serialize(e);if(c.isTerminal)return n.push([s[0],...t]),a instanceof Blob&&(r.push(t.slice()),i.push(a)),a;let o=this.serializeValue(a,t,n,r,i);return n.push([s[0],...t]),o}}if(e instanceof Blob)return r.push(t.slice()),i.push(e),e;if(Array.isArray(e)){let a=[];for(let o=0;o<e.length;o++)t.push(o),a.push(this.serializeValue(e[o],t,n,r,i)),t.pop();return a}if(Ve(e)){let a=new Ge;for(let o of Object.keys(e)){let s=e[o];(o!==`toJSON`||typeof s!=`function`)&&(s===void 0&&this.omitUndefinedProperties||(t.push(o),a[o]=this.serializeValue(s,t,n,r,i),t.pop()))}return a}return e}deserialize(e){let t={json:e.json};if(e.blobs?.length)for(let n=0;n<e.maps.length;n++){let r=e.blobs[n];if(!(r instanceof Blob))throw Wt(`blob ${n} is not a Blob.`);let i=e.maps[n],a=e,o=t,s=`json`;for(let e=0;e<i.length;e++)if(a=a[s],o=We(o,s,a),s=i[e],!Object.hasOwn(o,s))throw Wt(`segment "${s}" does not exist.`);o[s]=r}if(e.meta)for(let n of e.meta){let r=n[0],i=this.handlers[r];if(i===void 0)throw Wt(`type "${r}" is not supported.`);let a=e,o=t,s=`json`;for(let e=1;e<n.length;e++)if(a=a[s],o=We(o,s,a),s=n[e],!Object.hasOwn(o,s))throw Wt(`segment "${s}" does not exist.`);o[s]=i.deserialize(o[s])}return t.json}},qt=class{jsonSerializer;defaultSerializeOptions;constructor(e={}){this.jsonSerializer=new Kt(e),this.defaultSerializeOptions=e.serialize}serialize(e,t={}){if(e===void 0||e instanceof ReadableStream||e instanceof Blob)return e;if(A(e))return Ut(e,{mapResult:e=>e.value===void 0?e:{done:e.done,value:this.serializeValue(e.value,!1)},mapError:e=>new F(this.serializeValue(Ft(e).toJSON(),!1),{cause:e})});let n=t.useFormDataForBlobFields??this.defaultSerializeOptions?.useFormDataForBlobFields??!0;return this.serializeValue(e,n)}serializeValue(e,t){let{json:n,meta:r,maps:i,blobs:a}=this.jsonSerializer.serialize(e);if(!t||!a?.length)return{json:n,meta:r};let o=new FormData;return o.set(`data`,j({json:n,meta:r,maps:i})),a.forEach((e,t)=>{o.set(t.toString(),e)}),o}deserialize(e){return e===void 0||e instanceof ReadableStream||e instanceof Blob?e:A(e)?Ut(e,{mapResult:e=>e.value===void 0?e:{done:e.done,value:this.deserializeValue(e.value)},mapError:e=>{if(!(e instanceof F))return e;let t=this.deserializeValue(e.data);return It(t)?Lt(t,{cause:e}):new F(t,{cause:e})}}):this.deserializeValue(e)}deserializeValue(e){if(!(e instanceof FormData))return this.jsonSerializer.deserialize(e);let t=JSON.parse(e.get(`data`)),n=[];for(let[t,r]of e)r instanceof Blob&&(n[Number(t)]=r);return this.jsonSerializer.deserialize({...t,blobs:n})}},Jt=new Set([`then`,`bind`,`call`,`apply`,`valueOf`,`toString`,`toJSON`]);function Yt(e){return{...e,context:e.context??{}}}function Xt(e){return[e[0],Yt(e[1]??{})]}function Zt(e,{path:t=[],...n}={}){let r=(...r)=>{let[i,a]=Xt(r);return Ye([...O(n.interceptors),...O(n.scoped?.interceptors)],{...a,input:i,path:t},({path:t,input:n,...r})=>e.call(t,n,r))},i=new Map;return new Proxy(r,{get(r,a){if(typeof a!=`string`||Jt.has(a))return Reflect.get(r,a);let o=i.get(a);return o===void 0&&(o=Zt(e,{...n,path:[...t,a],scoped:n.scoped?.[a]}),i.set(a,o)),o}})}function Qt(e){let t=(e?.pipeThrough(new TextDecoderStream).pipeThrough(new lt))?.getReader(),n=!1;return new de(async()=>{for(;;){if(t===void 0)return{done:!0,value:void 0};let{done:e,value:r}=await t.read();if(e){if(n)throw new k(`Stream was cancelled`);return{done:!0,value:void 0}}switch(r.event){case`message`:{let e=fe(r.data);return M(e)&&(e=I(e,r)),{done:!1,value:e}}case`error`:{let e=new F(fe(r.data));throw e=I(e,r),e}case`close`:{let e=fe(r.data);return M(e)&&(e=I(e,r)),{done:!0,value:e}}}}},async e=>{e.kind===`cancelled`&&(n=!0),await t?.cancel()})}function $t(e,t={}){let n=t.keepAlive?.enabled??!0,r=t.keepAlive?.interval??15e3,i=t.keepAlive?.comment??``,a=t.initialComment?.enabled??!0,o=t.initialComment?.comment??``,s=t.emptyCloseEventEnabled??!0,c=!1,l;return new ReadableStream({start(e){a&&e.enqueue(yt({comments:[o]}))},async pull(t){try{n&&(l=setInterval(()=>{t.enqueue(yt({comments:[i]}))},r));let a=await e.next();if(clearInterval(l),c)return;let[o,u]=St(a.value);if(!a.done||o!==void 0||u!==void 0||s){let e=a.done?`close`:`message`;t.enqueue(yt({...u,event:e,data:j(o)}))}a.done&&t.close()}catch(e){if(clearInterval(l),c)return;e instanceof F?(t.enqueue(yt({...Ct(e),event:`error`,data:j(e.data)})),t.close()):t.error(e)}},async cancel(){c=!0,clearInterval(l),await e.return?.()}}).pipeThrough(new TextEncoderStream)}async function en(e,t){let n=t?.hint??Dt({"standard-server":e.headers.get(`standard-server`)??void 0,"content-type":e.headers.get(`content-type`)??void 0,"content-length":e.headers.get(`content-length`)??void 0,"content-disposition":e.headers.get(`content-disposition`)??void 0});if(n!==`none`){if(e.bodyUsed)throw TypeError(`Failed to read body: body stream already read`);if(n===`json`)return fe(await e.text());if(n===`form-data`)return await e.formData();if(n===`url-search-params`){let t=await e.text();return new URLSearchParams(t)}if(n===`event-stream`)return Qt(e.body);if(n===`file`){let t=e.headers.get(`content-disposition`),n=t===null?void 0:Tt(t),r=await e.blob();return new File([r],n??`blob`,{type:r.type})}return e.body??new ReadableStream({start(e){e.close()}})}}function tn(e,t,n={}){return t={...t},e instanceof ReadableStream?(t[`standard-server`]??=`octet-stream`,t[`content-type`]??=`application/octet-stream`,[e,t]):e instanceof Blob?(t[`standard-server`]??=`file`,t[`content-type`]=e.type,t[`content-disposition`]??=wt(e instanceof File?e.name??``:`blob`),Number.isFinite(e.size)?(t[`content-length`]=e.size.toString(),[e,t]):[e.stream(),t]):(t[`standard-server`]=void 0,t[`content-length`]=void 0,e===void 0?(t[`content-type`]=void 0,[void 0,t]):e instanceof FormData||e instanceof URLSearchParams?(t[`content-type`]=void 0,[e,t]):A(e)?(t[`content-type`]=`text/event-stream`,[$t(e,n.eventStream),t]):(t[`content-type`]=`application/json`,[j(e),t]))}function nn(e){let t=Object.create(null);return e.forEach((e,n)=>{Array.isArray(t[n])?t[n].push(e):t[n]===void 0?t[n]=e:t[n]=[t[n],e]}),t}function rn(e){let t=new Headers;for(let n of Object.keys(e)){let r=e[n];if(Array.isArray(r))for(let e of r)t.append(n,e);else r!==void 0&&t.append(n,r)}return t}function an(e){return{resolveBody:t=>en(e,{hint:t}),status:e.status,get headers(){let t=nn(e.headers);return Object.defineProperty(this,"headers",{value:t,writable:!0}),t},set headers(e){Object.defineProperty(this,"headers",{value:e,writable:!0})}}}var on=class{name=`~composite`;plugins;constructor(e=[]){this.plugins=Xe(e)}init(e){for(let t of this.plugins)t.init&&(e=t.init(e));return e}},sn=class{constructor(e,t,n={}){this.codec=e,this.transport=t,n=new on(n.plugins).init(n),this.interceptors=n.interceptors,this.transportInterceptors=n.transportInterceptors}interceptors;transportInterceptors;call(e,t,n){return Pe(`${Ee}.${e.join(`/`)}`,r=>(r?.setAttribute(`rpc.system`,Ee),r?.setAttribute(`rpc.method`,e.join(`.`)),N()&&A(t)?t=Re(t,Le(`consume_async_iterator_object_input`,t)):N()&&t instanceof ReadableStream&&(t=Re(t,Je(`consume_octet_stream_input`,t))),Ye(this.interceptors,{...n,path:e,input:t},async({path:e,input:t,...n})=>{let i=N(),a=i?.getActiveSpan()??r,o=await Pe({name:`encode_input`,parent:a},()=>this.codec.encodeInput(t,e,n));if(a&&i?.inject){let e={...o.headers};i.inject(a,e),o={...o,headers:e}}let s=await Ye(this.transportInterceptors,{...n,path:e,request:o},({path:e,request:t,...n})=>Pe({name:`send_request`,parent:i?.getActiveSpan()??a},()=>this.transport.send(t,e,n))),c=await Pe({name:`decode_response`,parent:a},()=>this.codec.decodeResponse(s,e,n));if(c.kind===`error`)throw c.error;let l=c.output;return N()&&A(l)?Re(l,Le(`consume_async_iterator_object_output`,l)):N()&&l instanceof ReadableStream?Re(l,Je(`consume_octet_stream_output`,l)):l})))}},cn=/\/$/,ln=class{baseUrl;maxUrlLength;fallbackMethod;expectedMethod;headers;serializer;constructor(e){this.baseUrl=e.url??`/`,this.maxUrlLength=e.maxUrlLength??2083,this.fallbackMethod=e.fallbackMethod??`POST`,this.expectedMethod=e.method??this.fallbackMethod,this.headers=e.headers??{},this.serializer=e.serializer??new qt}async encodeInput(e,t,n){let r=un(await P(this.headers,n,t,e));n.lastEventId!==void 0&&(r=Ot(r,{"last-event-id":n.lastEventId}));let i=await P(this.expectedMethod,n,t,e),[a,o,s]=kt(await P(this.baseUrl,n,t,e)),c=`${a.replace(cn,``)}${ke(t)}`,l=this.serializer.serialize(e);if(i===`GET`&&!(l instanceof Blob)&&!(l instanceof ReadableStream)&&!(l instanceof FormData)&&!A(l)){let a=await P(this.maxUrlLength,n,t,e),u=new URLSearchParams(o);u.append(`data`,j(l)??``);let d=`${c}?${u}${s??``}`;if(d.length<=a)return{body:void 0,method:i,headers:r,url:d,signal:n.signal}}return{url:`${c}${o??``}${s??``}`,method:i===`GET`?this.fallbackMethod:i,headers:r,body:l,signal:n.signal}}async decodeResponse(e){let t=e.status<400,n=await e.resolveBody(),r=await(async()=>{try{return this.serializer.deserialize(n)}catch(t){throw Rt({message:`Invalid RPC response format.`,response:{status:e.status,headers:e.headers,body:n},cause:t})}})();return t?{kind:`output`,output:r}:It(r)?{kind:`error`,error:Lt(r)}:{kind:`error`,error:Rt({response:{headers:e.headers,status:e.status,body:n}})}}};function un(e){return typeof e.forEach==`function`?nn(e):e}var dn=Oe(()=>{try{let e;return new Request(`https://example.com`,{method:`POST`,body:new ReadableStream,get duplex(){return e=`half`,`half`}}),e}catch{return}}),fn=class{origin;fetch;toFetchRequestOptions;constructor(e){this.origin=e.origin,this.fetch=e.fetch??((e,t)=>globalThis.fetch(e,t)),this.toFetchRequestOptions=e.toFetchRequest}async send(e,t,n){let r=await P(this.origin,n,t);r?.endsWith(`/`)&&(r=r.slice(0,-1));let i=`${r??``}${e.url}`,[a,o]=tn(e.body,e.headers,this.toFetchRequestOptions),s={body:a,headers:rn(o),method:e.method,signal:n.signal,redirect:`manual`};if(a instanceof ReadableStream){let e=dn();e!==void 0&&(s.duplex=e)}return an(await this.fetch(i,s,n,t))}},pn=class extends sn{constructor(e){let t=new ln(e),n=new fn(e);super(t,n,e)}};function B(e,t){return{...e,...t}}function V(e,t,n){t=O(t),n=O(n);let r=e;for(let e of n)e.init&&(r=e.init(r));let i=[...t,...n];for(let e of i)e.apply&&(r=e.apply(r));return[r,i]}var mn=class e{"~orpc";constructor(e){this[`~orpc`]=e}static[Symbol.hasInstance](t){return this===e?ze(t)===e||M(t)&&M(t[`~orpc`])&&M(t[`~orpc`].errorMap)&&M(t[`~orpc`].meta)&&(t[`~orpc`].inputSchemas===void 0||Array.isArray(t[`~orpc`].inputSchemas))&&(t[`~orpc`].outputSchemas===void 0||Array.isArray(t[`~orpc`].outputSchemas)):Function.prototype[Symbol.hasInstance].call(this,t)}};function hn(e,t){if(e instanceof mn){let[n,r]=V(t.meta,t.metaPlugins,e[`~orpc`].metaPlugins);return new mn({...e[`~orpc`],errorMap:B(t.errorMap,e[`~orpc`].errorMap),meta:n,metaPlugins:r})}if(!M(e))return e;let n={};for(let r of Object.keys(e))n[r]=hn(e[r],t);return n}var gn=Symbol.for(`ORPC_HIDDEN_META_PLUGINS`);function H(e){if(M(e))return e[gn]}(class e extends mn{constructor(e){super(e)}static create(){return new e({errorMap:{},meta:{}})}meta(...t){let[n,r]=V(this[`~orpc`].meta,this[`~orpc`].metaPlugins,t);return new e({...this[`~orpc`],meta:n,metaPlugins:r})}errors(t){let n=new e({...this[`~orpc`],errorMap:B(this[`~orpc`].errorMap,t)}),r=H(t);return r&&(n=n.meta(...r)),n}input(t){let n=new e({...this[`~orpc`],inputSchemas:[...O(this[`~orpc`].inputSchemas),t]}),r=H(t);return r&&(n=n.meta(...r)),n}output(t){let n=new e({...this[`~orpc`],outputSchemas:[...O(this[`~orpc`].outputSchemas),t]}),r=H(t);return r&&(n=n.meta(...r)),n}router(e){return hn(e,this[`~orpc`])}}).create();var _n=class e{"~orpc";constructor(e){this[`~orpc`]=e}static[Symbol.hasInstance](t){return this===e?ze(t)===e||M(t)&&M(t[`~orpc`])&&M(t[`~orpc`].meta)&&(t[`~orpc`].metaPlugins===void 0||Array.isArray(t[`~orpc`].metaPlugins))&&typeof t[`~orpc`].loader==`function`:Function.prototype[Symbol.hasInstance].call(this,t)}};function vn(e){return e instanceof _n?e[`~orpc`].loader():Promise.resolve({default:e})}var yn=class e{"~orpc";constructor(e){this[`~orpc`]=e}static[Symbol.hasInstance](t){return this===e?ze(t)===e||t instanceof mn&&Array.isArray(t[`~orpc`].orderedMiddlewares)&&typeof t[`~orpc`].handler==`function`:Function.prototype[Symbol.hasInstance].call(this,t)}};function bn(e,t){if(e instanceof _n){let[n,r]=V(t.meta,t.metaPlugins,e[`~orpc`].metaPlugins);return new _n({meta:n,metaPlugins:r,async loader(){let{default:n}=await vn(e);return vn(bn(n,t))}})}if(e instanceof yn){let[n,r]=V(t.meta,t.metaPlugins,e[`~orpc`].metaPlugins);return new yn({...Ue(t,[`middlewares`,`errorMap`,`meta`,`metaPlugins`]),...e[`~orpc`],meta:n,metaPlugins:r,errorMap:B(t.errorMap,e[`~orpc`].errorMap),orderedMiddlewares:[...t.middlewares.map(e=>({middleware:e,inputSchemasLengthAtUse:0,outputSchemasLengthAtUse:0})),...e[`~orpc`].orderedMiddlewares]})}if(!M(e))return e;let n={};for(let[r,i]of Object.entries(e))n[r]=bn(i,t);return n}function xn({onRequest:e,onSseError:t,onSseEvent:n,responseTransformer:r,responseValidator:i,sseDefaultRetryDelay:a,sseMaxRetryAttempts:o,sseMaxRetryDelay:s,sseSleepFn:c,url:l,...u}){let d,f=c??(e=>new Promise(t=>setTimeout(t,e)));return{stream:async function*(){let c=a??3e3,p=0,m=u.signal??new AbortController().signal;for(;!m.aborted;){p++;let a=u.headers instanceof Headers?u.headers:new Headers(u.headers);d!==void 0&&a.set(`Last-Event-ID`,d);try{let t={redirect:`follow`,...u,body:u.serializedBody,headers:a,signal:m},o=new Request(l,t);e&&(o=await e(l,t));let s=await(u.fetch??globalThis.fetch)(o);if(!s.ok)throw Error(`SSE failed: ${s.status} ${s.statusText}`);if(!s.body)throw Error(`No body in SSE response`);let f=s.body.pipeThrough(new TextDecoderStream).getReader(),p=``,h=()=>{try{f.cancel()}catch{}};m.addEventListener(`abort`,h);try{for(;;){let{done:e,value:t}=await f.read();if(e)break;p+=t,p=p.replace(/\r\n?/g,`
5
+ `}function _t(e){let t=``;for(let n of e??[])ht(n),t+=`: ${n}
6
+ `;return t}function vt(e){let t=``;return t+=_t(e.comments),e.event!==void 0&&(pt(e.event),t+=`event: ${e.event}
7
+ `),e.retry!==void 0&&(mt(e.retry),t+=`retry: ${e.retry}
8
+ `),e.id!==void 0&&(ft(e.id),t+=`id: ${e.id}
9
+ `),t+=gt(e.data),t+=`
10
+ `,t}var yt=Symbol.for(`STANDARD_SERVER_EVENT_META`),bt=Symbol.for(`STANDARD_SERVER_EVENT_SOURCE`);function L(e,t){let n;if(t.id!==void 0&&(ft(t.id),n??={},n.id=t.id),t.retry!==void 0&&(mt(t.retry),n??={},n.retry=t.retry),t.comments!==void 0){for(let e of t.comments)ht(e);n??={},n.comments=t.comments}return n?new Proxy(e,{get(e,t,r){return t===bt?e:t===yt?n:me(e,t)}}):e}function xt(e){if(!N(e))return[e,void 0];let t=e[yt];return[e[bt]??e,t]}function St(e){if(N(e))return e[yt]}function Ct(e,t=`inline`){return`${t}; filename="${e.replace(/[^\x20-\x7E]/g,`_`).replace(/[\\"]/g,`\\$&`)}"; filename*=utf-8''${ve(e).replace(/['()*]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`).replace(/%(7C|60|5E)/g,(e,t)=>String.fromCharCode(Number.parseInt(t,16)))}`}function wt(e){let t=e.match(/(?:^|;)\s*filename\*=([^;]*)/i)?.[1]?.trim(),n=t?.match(/^([^']*)'[^']*'(.*)$/);if(n){let[,e=``,t=``]=n;if(/^(?:utf-8|us-ascii)$/i.test(e))return ye(t)}else if(t)return ye(t);let r=e.match(/(?:^|;)\s*filename=(?:"((?:\\.|[^"\\])*)"|([^";]*))/i);return r?.[1]===void 0?r?.[2]?.trim()||void 0:r[1].replace(/\\(.)/g,`$1`)}function R(e){if(typeof e==`string`||e===void 0)return e;if(e.length!==0)return e.join(`, `)}var Tt=new Set([`json`,`form-data`,`url-search-params`,`event-stream`,`octet-stream`,`file`,`none`]);function Et(e){let t=R(e[`standard-server`]);if(t!==void 0&&Tt.has(t))return t;let n=R(e[`content-type`])?.split(`;`)[0]?.trim().toLowerCase(),r=R(e[`content-length`]),i=R(e[`content-disposition`]),a=i===void 0?void 0:wt(i);return n===void 0&&(r===void 0||r===`0`)?`none`:n===`application/json`?`json`:n===`multipart/form-data`?`form-data`:n===`application/x-www-form-urlencoded`?`url-search-params`:n===`text/event-stream`?`event-stream`:a!==void 0||r!==void 0?`file`:`octet-stream`}function Dt(e,t){let n={...e,...t};for(let r of Object.keys(t)){if(!Object.hasOwn(e,r))continue;let i=e[r],a=t[r];n[r]=i===void 0||a===void 0?i??a:[...k(i),...k(a)]}return n}function Ot(e){let t=e.indexOf(`#`),n=e.indexOf(`?`),r=n!==-1&&(t===-1||n<t),i=r?n:t===-1?e.length:t,a=t===-1?e.length:t;return[e.slice(0,i),r?e.slice(n,a):void 0,t===-1?void 0:e.slice(t)]}function kt(e){return N(e)?Object.values(e).every(e=>e===void 0||typeof e==`string`||Array.isArray(e)&&e.every(e=>typeof e==`string`)):!1}function At(e){return Number.isInteger(e)}var jt={BAD_REQUEST:400,UNAUTHORIZED:401,PAYMENT_REQUIRED:402,FORBIDDEN:403,NOT_FOUND:404,METHOD_NOT_SUPPORTED:405,NOT_ACCEPTABLE:406,TIMEOUT:408,CONFLICT:409,GONE:410,PRECONDITION_FAILED:412,PAYLOAD_TOO_LARGE:413,UNSUPPORTED_MEDIA_TYPE:415,UNPROCESSABLE_CONTENT:422,PRECONDITION_REQUIRED:428,TOO_MANY_REQUESTS:429,CLIENT_CLOSED_REQUEST:499,INTERNAL_SERVER_ERROR:500,NOT_IMPLEMENTED:501,BAD_GATEWAY:502,SERVICE_UNAVAILABLE:503,GATEWAY_TIMEOUT:504},Mt,z=class e extends Error{static{let t=Symbol.for(`ORPC_ERROR_CONSTRUCTORS`);globalThis[t]??=new WeakSet,Mt=globalThis[t],Mt.add(e)}name=`ORPCError`;defined=!1;code;data;constructor(e,...t){let n=be(t),r=n.message??e.split(`_`).map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(` `);super(r,n),this.code=e,this.data=n.data}toJSON(){return{defined:this.defined,code:this.code,message:this.message,data:this.data}}static[Symbol.hasInstance](e){if(!Mt.has(this))return super[Symbol.hasInstance](e);for(let t of ze(e))if(Mt.has(t))return!0;return!1}},Nt=class extends Error{name=`MalformedResponseError`;response;constructor(e){super(e.message,e),this.response=e.response}};function Pt(e){return e instanceof z?e:new z(`INTERNAL_SERVER_ERROR`,{cause:e})}function Ft(e){if(!Be(e))return!1;let t=[`defined`,`code`,`message`,`data`];return!Object.keys(e).some(e=>!t.includes(e))&&`defined`in e&&typeof e.defined==`boolean`&&`code`in e&&typeof e.code==`string`&&`message`in e&&typeof e.message==`string`}function It(e,t={}){let n=new z(e.code,{...e,...t});return n.defined=e.defined,n}function Lt(e){let t=new z(`MALFORMED_ORPC_RESPONSE`,{message:e.message??Vt(e.response),data:e.response});return t.cause=new Nt({...e,message:t.message}),t}var Rt=1,zt=256;function Bt(e){return e.length>=Rt&&e.length<=zt}function Vt(e){return typeof e.body==`string`&&Bt(e.body)?e.body:Be(e.body)&&typeof e.body.message==`string`&&Bt(e.body.message)?e.body.message:(Object.entries(jt).find(([,t])=>t===e.status)?.[0])?.split(`_`).map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(` `)}function Ht(e,{mapResult:t,mapError:n,...r}){return Fe(e,{...r,mapResult:t&&(async e=>{let n=await t(e);if(n.value!==e.value){let t=St(e.value);if(t&&N(n.value))return{done:n.done,value:L(n.value,t)}}return n}),mapError:n&&(async e=>{let t=await n(e);if(t!==e){let n=St(e);if(n&&N(t))return L(t,n)}return t})})}function Ut(e){return TypeError(`Invalid RPC serialized data: ${e}`)}function B(e,t,n){if(!e)throw Ut(`type "${t}" expects ${n}.`)}var Wt={undefined:{condition(e){return e===void 0},serialize(){return null},deserialize(e){B(e===null,`undefined`,`null`)},isTerminal:!0},bigint:{condition(e){return typeof e==`bigint`},serialize(e){return e.toString()},deserialize(e){return B(typeof e==`string`,`bigint`,`a string`),BigInt(e)},isTerminal:!0},date:{condition(e){return e instanceof Date},serialize(e){return Number.isNaN(e.getTime())?null:e.toISOString()},deserialize(e){return B(typeof e==`string`||e===null,`date`,`a string or null`),new Date(e??NaN)},isTerminal:!0},nan:{condition(e){return typeof e==`number`&&Number.isNaN(e)},serialize(){return null},deserialize(e){return B(e===null,`nan`,`null`),NaN},isTerminal:!0},url:{condition(e){return e instanceof URL},serialize(e){return e.toString()},deserialize(e){return B(typeof e==`string`,`url`,`a string`),new URL(e)},isTerminal:!0},set:{condition(e){return e instanceof Set},serialize(e){return Array.from(e)},deserialize(e){return B(Array.isArray(e),`set`,`an array`),new Set(e)}},map:{condition(e){return e instanceof Map},serialize(e){return Array.from(e.entries())},deserialize(e){return B(Array.isArray(e),`map`,`an array`),new Map(e)}}},Gt=class{handlers;inlineBuiltInHandlers;handlerEntries;omitUndefinedProperties;constructor(e={}){this.omitUndefinedProperties=e.omitUndefinedProperties!==!1,this.handlers=Object.assign(new We,Wt);let t=e.handlers;if(t===void 0){this.inlineBuiltInHandlers=!0;return}let n=!0,r=[];for(let e of Object.keys(t)){let i=t[e];this.handlers[e]=i,n&&e in Wt&&(n=!1),n&&i!==void 0&&r.push([e,i])}if(!n){r=[];for(let e of Object.keys(this.handlers)){let t=this.handlers[e];t!==void 0&&r.push([e,t])}}this.inlineBuiltInHandlers=n,this.handlerEntries=r}serialize(e){let t=[],n=[],r=[],i=this.serializeValue(e,[],t,n,r);return t=t.length===0?void 0:t,n.length===0?{json:i,meta:t}:{json:i,meta:t,maps:n,blobs:r}}serializeValue(e,t,n,r,i){if(this.inlineBuiltInHandlers)switch(typeof e){case`string`:case`boolean`:return e;case`number`:return Number.isNaN(e)?(n.push([`nan`,...t]),null):e;case`undefined`:return n.push([`undefined`,...t]),null;case`bigint`:return n.push([`bigint`,...t]),e.toString();case`object`:if(e===null)return e;if(e instanceof Date)return n.push([`date`,...t]),Number.isNaN(e.getTime())?null:e.toISOString();if(e instanceof URL)return n.push([`url`,...t]),e.toString();if(e instanceof Set){let a=this.serializeValue(Array.from(e),t,n,r,i);return n.push([`set`,...t]),a}if(e instanceof Map){let a=this.serializeValue(Array.from(e.entries()),t,n,r,i);return n.push([`map`,...t]),a}}let a=this.handlerEntries;if(a)for(let o=0;o<a.length;o++){let s=a[o],c=s[1];if(c.condition(e)){let a=c.serialize(e);if(c.isTerminal)return n.push([s[0],...t]),a instanceof Blob&&(r.push(t.slice()),i.push(a)),a;let o=this.serializeValue(a,t,n,r,i);return n.push([s[0],...t]),o}}if(e instanceof Blob)return r.push(t.slice()),i.push(e),e;if(Array.isArray(e)){let a=[];for(let o=0;o<e.length;o++)t.push(o),a.push(this.serializeValue(e[o],t,n,r,i)),t.pop();return a}if(Be(e)){let a=new We;for(let o of Object.keys(e)){let s=e[o];(o!==`toJSON`||typeof s!=`function`)&&(s===void 0&&this.omitUndefinedProperties||(t.push(o),a[o]=this.serializeValue(s,t,n,r,i),t.pop()))}return a}return e}deserialize(e){let t={json:e.json};if(e.blobs?.length)for(let n=0;n<e.maps.length;n++){let r=e.blobs[n];if(!(r instanceof Blob))throw Ut(`blob ${n} is not a Blob.`);let i=e.maps[n],a=e,o=t,s=`json`;for(let e=0;e<i.length;e++)if(a=a[s],o=Ue(o,s,a),s=i[e],!Object.hasOwn(o,s))throw Ut(`segment "${s}" does not exist.`);o[s]=r}if(e.meta)for(let n of e.meta){let r=n[0],i=this.handlers[r];if(i===void 0)throw Ut(`type "${r}" is not supported.`);let a=e,o=t,s=`json`;for(let e=1;e<n.length;e++)if(a=a[s],o=Ue(o,s,a),s=n[e],!Object.hasOwn(o,s))throw Ut(`segment "${s}" does not exist.`);o[s]=i.deserialize(o[s])}return t.json}},Kt=class{jsonSerializer;defaultSerializeOptions;constructor(e={}){this.jsonSerializer=new Gt(e),this.defaultSerializeOptions=e.serialize}serialize(e,t={}){if(e===void 0||e instanceof ReadableStream||e instanceof Blob)return e;if(j(e))return Ht(e,{mapResult:e=>e.value===void 0?e:{done:e.done,value:this.serializeValue(e.value,!1)},mapError:e=>new I(this.serializeValue(Pt(e).toJSON(),!1),{cause:e})});let n=t.useFormDataForBlobFields??this.defaultSerializeOptions?.useFormDataForBlobFields??!0;return this.serializeValue(e,n)}serializeValue(e,t){let{json:n,meta:r,maps:i,blobs:a}=this.jsonSerializer.serialize(e);if(!t||!a?.length)return{json:n,meta:r};let o=new FormData;return o.set(`data`,M({json:n,meta:r,maps:i})),a.forEach((e,t)=>{o.set(t.toString(),e)}),o}deserialize(e){return e===void 0||e instanceof ReadableStream||e instanceof Blob?e:j(e)?Ht(e,{mapResult:e=>e.value===void 0?e:{done:e.done,value:this.deserializeValue(e.value)},mapError:e=>{if(!(e instanceof I))return e;let t=this.deserializeValue(e.data);return Ft(t)?It(t,{cause:e}):new I(t,{cause:e})}}):this.deserializeValue(e)}deserializeValue(e){if(!(e instanceof FormData))return this.jsonSerializer.deserialize(e);let t=JSON.parse(e.get(`data`)),n=[];for(let[t,r]of e)r instanceof Blob&&(n[Number(t)]=r);return this.jsonSerializer.deserialize({...t,blobs:n})}},qt=new Set([`then`,`bind`,`call`,`apply`,`valueOf`,`toString`,`toJSON`]);function Jt(e){return{...e,context:e.context??{}}}function Yt(e){return[e[0],Jt(e[1]??{})]}function Xt(e,{path:t=[],...n}={}){let r=(...r)=>{let[i,a]=Yt(r);return Je([...k(n.interceptors),...k(n.scoped?.interceptors)],{...a,input:i,path:t},({path:t,input:n,...r})=>e.call(t,n,r))},i=new Map;return new Proxy(r,{get(r,a){if(typeof a!=`string`||qt.has(a))return Reflect.get(r,a);let o=i.get(a);return o===void 0&&(o=Xt(e,{...n,path:[...t,a],scoped:n.scoped?.[a]}),i.set(a,o)),o}})}function Zt(e){let t=(e?.pipeThrough(new TextDecoderStream).pipeThrough(new ct))?.getReader(),n=!1;return new ue(async()=>{for(;;){if(t===void 0)return{done:!0,value:void 0};let{done:e,value:r}=await t.read();if(e){if(n)throw new A(`Stream was cancelled`);return{done:!0,value:void 0}}switch(r.event){case`message`:{let e=de(r.data);return N(e)&&(e=L(e,r)),{done:!1,value:e}}case`error`:{let e=new I(de(r.data));throw e=L(e,r),e}case`close`:{let e=de(r.data);return N(e)&&(e=L(e,r)),{done:!0,value:e}}}}},async e=>{e.kind===`cancelled`&&(n=!0),await t?.cancel()})}function Qt(e,t={}){let n=t.keepAlive?.enabled??!0,r=t.keepAlive?.interval??15e3,i=t.keepAlive?.comment??``,a=t.initialComment?.enabled??!0,o=t.initialComment?.comment??``,s=t.emptyCloseEventEnabled??!0,c=!1,l;return new ReadableStream({start(e){a&&e.enqueue(vt({comments:[o]}))},async pull(t){try{n&&(l=setInterval(()=>{t.enqueue(vt({comments:[i]}))},r));let a=await e.next();if(clearInterval(l),c)return;let[o,u]=xt(a.value);if(!a.done||o!==void 0||u!==void 0||s){let e=a.done?`close`:`message`;t.enqueue(vt({...u,event:e,data:M(o)}))}a.done&&t.close()}catch(e){if(clearInterval(l),c)return;e instanceof I?(t.enqueue(vt({...St(e),event:`error`,data:M(e.data)})),t.close()):t.error(e)}},async cancel(){c=!0,clearInterval(l),await e.return?.()}}).pipeThrough(new TextEncoderStream)}async function $t(e,t){let n=t?.hint??Et({"standard-server":e.headers.get(`standard-server`)??void 0,"content-type":e.headers.get(`content-type`)??void 0,"content-length":e.headers.get(`content-length`)??void 0,"content-disposition":e.headers.get(`content-disposition`)??void 0});if(n!==`none`){if(e.bodyUsed)throw TypeError(`Failed to read body: body stream already read`);if(n===`json`)return de(await e.text());if(n===`form-data`)return await e.formData();if(n===`url-search-params`){let t=await e.text();return new URLSearchParams(t)}if(n===`event-stream`)return Zt(e.body);if(n===`file`){let t=e.headers.get(`content-disposition`),n=t===null?void 0:wt(t),r=await e.blob();return new File([r],n??`blob`,{type:r.type})}return e.body??new ReadableStream({start(e){e.close()}})}}function en(e,t,n={}){return t={...t},e instanceof ReadableStream?(t[`standard-server`]??=`octet-stream`,t[`content-type`]??=`application/octet-stream`,[e,t]):e instanceof Blob?(t[`standard-server`]??=`file`,t[`content-type`]=e.type,t[`content-disposition`]??=Ct(e instanceof File?e.name??``:`blob`),Number.isFinite(e.size)?(t[`content-length`]=e.size.toString(),[e,t]):[e.stream(),t]):(t[`standard-server`]=void 0,t[`content-length`]=void 0,e===void 0?(t[`content-type`]=void 0,[void 0,t]):e instanceof FormData||e instanceof URLSearchParams?(t[`content-type`]=void 0,[e,t]):j(e)?(t[`content-type`]=`text/event-stream`,[Qt(e,n.eventStream),t]):(t[`content-type`]=`application/json`,[M(e),t]))}function tn(e){let t=Object.create(null);return e.forEach((e,n)=>{Array.isArray(t[n])?t[n].push(e):t[n]===void 0?t[n]=e:t[n]=[t[n],e]}),t}function nn(e){let t=new Headers;for(let n of Object.keys(e)){let r=e[n];if(Array.isArray(r))for(let e of r)t.append(n,e);else r!==void 0&&t.append(n,r)}return t}function rn(e){return{resolveBody:t=>$t(e,{hint:t}),status:e.status,get headers(){let t=tn(e.headers);return Object.defineProperty(this,"headers",{value:t,writable:!0}),t},set headers(e){Object.defineProperty(this,"headers",{value:e,writable:!0})}}}var an=class{name=`~composite`;plugins;constructor(e=[]){this.plugins=Ye(e)}init(e){for(let t of this.plugins)t.init&&(e=t.init(e));return e}},on=class{constructor(e,t,n={}){this.codec=e,this.transport=t,n=new an(n.plugins).init(n),this.interceptors=n.interceptors,this.transportInterceptors=n.transportInterceptors}interceptors;transportInterceptors;call(e,t,n){return Ne(`${Te}.${e.join(`/`)}`,r=>(r?.setAttribute(`rpc.system`,Te),r?.setAttribute(`rpc.method`,e.join(`.`)),P()&&j(t)?t=Le(t,Ie(`consume_async_iterator_object_input`,t)):P()&&t instanceof ReadableStream&&(t=Le(t,qe(`consume_octet_stream_input`,t))),Je(this.interceptors,{...n,path:e,input:t},async({path:e,input:t,...n})=>{let i=P(),a=i?.getActiveSpan()??r,o=await Ne({name:`encode_input`,parent:a},()=>this.codec.encodeInput(t,e,n));if(a&&i?.inject){let e={...o.headers};i.inject(a,e),o={...o,headers:e}}let s=await Je(this.transportInterceptors,{...n,path:e,request:o},({path:e,request:t,...n})=>Ne({name:`send_request`,parent:i?.getActiveSpan()??a},()=>this.transport.send(t,e,n))),c=await Ne({name:`decode_response`,parent:a},()=>this.codec.decodeResponse(s,e,n));if(c.kind===`error`)throw c.error;let l=c.output;return P()&&j(l)?Le(l,Ie(`consume_async_iterator_object_output`,l)):P()&&l instanceof ReadableStream?Le(l,qe(`consume_octet_stream_output`,l)):l})))}},sn=/\/$/,cn=class{baseUrl;maxUrlLength;fallbackMethod;expectedMethod;headers;serializer;constructor(e){this.baseUrl=e.url??`/`,this.maxUrlLength=e.maxUrlLength??2083,this.fallbackMethod=e.fallbackMethod??`POST`,this.expectedMethod=e.method??this.fallbackMethod,this.headers=e.headers??{},this.serializer=e.serializer??new Kt}async encodeInput(e,t,n){let r=ln(await F(this.headers,n,t,e));n.lastEventId!==void 0&&(r=Dt(r,{"last-event-id":n.lastEventId}));let i=await F(this.expectedMethod,n,t,e),[a,o,s]=Ot(await F(this.baseUrl,n,t,e)),c=`${a.replace(sn,``)}${Oe(t)}`,l=this.serializer.serialize(e);if(i===`GET`&&!(l instanceof Blob)&&!(l instanceof ReadableStream)&&!(l instanceof FormData)&&!j(l)){let a=await F(this.maxUrlLength,n,t,e),u=new URLSearchParams(o);u.append(`data`,M(l)??``);let d=`${c}?${u}${s??``}`;if(d.length<=a)return{body:void 0,method:i,headers:r,url:d,signal:n.signal}}return{url:`${c}${o??``}${s??``}`,method:i===`GET`?this.fallbackMethod:i,headers:r,body:l,signal:n.signal}}async decodeResponse(e){let t=e.status<400,n=await e.resolveBody(),r=await(async()=>{try{return this.serializer.deserialize(n)}catch(t){throw Lt({message:`Invalid RPC response format.`,response:{status:e.status,headers:e.headers,body:n},cause:t})}})();return t?{kind:`output`,output:r}:Ft(r)?{kind:`error`,error:It(r)}:{kind:`error`,error:Lt({response:{headers:e.headers,status:e.status,body:n}})}}};function ln(e){return typeof e.forEach==`function`?tn(e):e}var un=De(()=>{try{let e;return new Request(`https://example.com`,{method:`POST`,body:new ReadableStream,get duplex(){return e=`half`,`half`}}),e}catch{return}}),dn=class{origin;fetch;toFetchRequestOptions;constructor(e){this.origin=e.origin,this.fetch=e.fetch??((e,t)=>globalThis.fetch(e,t)),this.toFetchRequestOptions=e.toFetchRequest}async send(e,t,n){let r=await F(this.origin,n,t);r?.endsWith(`/`)&&(r=r.slice(0,-1));let i=`${r??``}${e.url}`,[a,o]=en(e.body,e.headers,this.toFetchRequestOptions),s={body:a,headers:nn(o),method:e.method,signal:n.signal,redirect:`manual`};if(a instanceof ReadableStream){let e=un();e!==void 0&&(s.duplex=e)}return rn(await this.fetch(i,s,n,t))}},fn=class extends on{constructor(e){let t=new cn(e),n=new dn(e);super(t,n,e)}};function V(e,t){return{...e,...t}}function pn(e,t,n){t=k(t),n=k(n);let r=e;for(let e of n)e.init&&(r=e.init(r));let i=[...t,...n];for(let e of i)e.apply&&(r=e.apply(r));return[r,i]}var mn=class e{"~orpc";constructor(e){this[`~orpc`]=e}static[Symbol.hasInstance](t){return this===e?Re(t)===e||N(t)&&N(t[`~orpc`])&&N(t[`~orpc`].errorMap)&&N(t[`~orpc`].meta)&&(t[`~orpc`].inputSchemas===void 0||Array.isArray(t[`~orpc`].inputSchemas))&&(t[`~orpc`].outputSchemas===void 0||Array.isArray(t[`~orpc`].outputSchemas)):Function.prototype[Symbol.hasInstance].call(this,t)}};function hn(e,t){if(e instanceof mn){let[n,r]=pn(t.meta,t.metaPlugins,e[`~orpc`].metaPlugins);return new mn({...e[`~orpc`],errorMap:V(t.errorMap,e[`~orpc`].errorMap),meta:n,metaPlugins:r})}if(!N(e))return e;let n={};for(let r of Object.keys(e))n[r]=hn(e[r],t);return n}var gn=Symbol.for(`ORPC_HIDDEN_META_PLUGINS`);function H(e){if(N(e))return e[gn]}(class e extends mn{constructor(e){super(e)}static create(){return new e({errorMap:{},meta:{}})}meta(...t){let[n,r]=pn(this[`~orpc`].meta,this[`~orpc`].metaPlugins,t);return new e({...this[`~orpc`],meta:n,metaPlugins:r})}errors(t){let n=new e({...this[`~orpc`],errorMap:V(this[`~orpc`].errorMap,t)}),r=H(t);return r&&(n=n.meta(...r)),n}input(t){let n=new e({...this[`~orpc`],inputSchemas:[...k(this[`~orpc`].inputSchemas),t]}),r=H(t);return r&&(n=n.meta(...r)),n}output(t){let n=new e({...this[`~orpc`],outputSchemas:[...k(this[`~orpc`].outputSchemas),t]}),r=H(t);return r&&(n=n.meta(...r)),n}router(e){return hn(e,this[`~orpc`])}}).create();var _n=class e{"~orpc";constructor(e){this[`~orpc`]=e}static[Symbol.hasInstance](t){return this===e?Re(t)===e||N(t)&&N(t[`~orpc`])&&N(t[`~orpc`].meta)&&(t[`~orpc`].metaPlugins===void 0||Array.isArray(t[`~orpc`].metaPlugins))&&typeof t[`~orpc`].loader==`function`:Function.prototype[Symbol.hasInstance].call(this,t)}};function vn(e){return e instanceof _n?e[`~orpc`].loader():Promise.resolve({default:e})}var yn=class e{"~orpc";constructor(e){this[`~orpc`]=e}static[Symbol.hasInstance](t){return this===e?Re(t)===e||t instanceof mn&&Array.isArray(t[`~orpc`].orderedMiddlewares)&&typeof t[`~orpc`].handler==`function`:Function.prototype[Symbol.hasInstance].call(this,t)}};function bn(e,t){if(e instanceof _n){let[n,r]=pn(t.meta,t.metaPlugins,e[`~orpc`].metaPlugins);return new _n({meta:n,metaPlugins:r,async loader(){let{default:n}=await vn(e);return vn(bn(n,t))}})}if(e instanceof yn){let[n,r]=pn(t.meta,t.metaPlugins,e[`~orpc`].metaPlugins);return new yn({...He(t,[`middlewares`,`errorMap`,`meta`,`metaPlugins`]),...e[`~orpc`],meta:n,metaPlugins:r,errorMap:V(t.errorMap,e[`~orpc`].errorMap),orderedMiddlewares:[...t.middlewares.map(e=>({middleware:e,inputSchemasLengthAtUse:0,outputSchemasLengthAtUse:0})),...e[`~orpc`].orderedMiddlewares]})}if(!N(e))return e;let n={};for(let[r,i]of Object.entries(e))n[r]=bn(i,t);return n}function xn({onRequest:e,onSseError:t,onSseEvent:n,responseTransformer:r,responseValidator:i,sseDefaultRetryDelay:a,sseMaxRetryAttempts:o,sseMaxRetryDelay:s,sseSleepFn:c,url:l,...u}){let d,f=c??(e=>new Promise(t=>setTimeout(t,e)));return{stream:async function*(){let c=a??3e3,p=0,m=u.signal??new AbortController().signal;for(;!m.aborted;){p++;let a=u.headers instanceof Headers?u.headers:new Headers(u.headers);d!==void 0&&a.set(`Last-Event-ID`,d);try{let t={redirect:`follow`,...u,body:u.serializedBody,headers:a,signal:m},o=new Request(l,t);e&&(o=await e(l,t));let s=await(u.fetch??globalThis.fetch)(o);if(!s.ok)throw Error(`SSE failed: ${s.status} ${s.statusText}`);if(!s.body)throw Error(`No body in SSE response`);let f=s.body.pipeThrough(new TextDecoderStream).getReader(),p=``,h=()=>{try{f.cancel()}catch{}};m.addEventListener(`abort`,h);try{for(;;){let{done:e,value:t}=await f.read();if(e)break;p+=t,p=p.replace(/\r\n?/g,`
11
11
  `);let a=p.split(`
12
12
 
13
13
  `);p=a.pop()??``;for(let e of a){let t=e.split(`
14
14
  `),a=[],o;for(let e of t)if(e.startsWith(`data:`))a.push(e.replace(/^data:\s*/,``));else if(e.startsWith(`event:`))o=e.replace(/^event:\s*/,``);else if(e.startsWith(`id:`))d=e.replace(/^id:\s*/,``);else if(e.startsWith(`retry:`)){let t=Number.parseInt(e.replace(/^retry:\s*/,``),10);Number.isNaN(t)||(c=t)}let s,l=!1;if(a.length){let e=a.join(`
15
- `);try{s=JSON.parse(e),l=!0}catch{s=e}}l&&(i&&await i(s),r&&(s=await r(s))),n?.({data:s,event:o,id:d,retry:c}),a.length&&(yield s)}}}finally{m.removeEventListener(`abort`,h),f.releaseLock()}break}catch(e){if(t?.(e),o!==void 0&&p>=o)break;let n=Math.min(c*2**(p-1),s??3e4);await f(n)}}}()}}var Sn=e=>{switch(e){case`label`:return`.`;case`matrix`:return`;`;case`simple`:return`,`;default:return`&`}},Cn=e=>{switch(e){case`form`:return`,`;case`pipeDelimited`:return`|`;case`spaceDelimited`:return`%20`;default:return`,`}},wn=e=>{switch(e){case`label`:return`.`;case`matrix`:return`;`;case`simple`:return`,`;default:return`&`}},Tn=({allowReserved:e,explode:t,name:n,style:r,value:i})=>{if(!t){let t=(e?i:i.map(e=>encodeURIComponent(e))).join(Cn(r));switch(r){case`label`:return`.${t}`;case`matrix`:return`;${n}=${t}`;case`simple`:return t;default:return`${n}=${t}`}}let a=Sn(r),o=i.map(t=>r===`label`||r===`simple`?e?t:encodeURIComponent(t):En({allowReserved:e,name:n,value:t})).join(a);return r===`label`||r===`matrix`?a+o:o},En=({allowReserved:e,name:t,value:n})=>{if(n==null)return``;if(typeof n==`object`)throw Error("Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these.");return`${t}=${e?n:encodeURIComponent(n)}`},Dn=({allowReserved:e,explode:t,name:n,style:r,value:i,valueOnly:a})=>{if(i instanceof Date)return a?i.toISOString():`${n}=${i.toISOString()}`;if(r!==`deepObject`&&!t){let t=[];Object.entries(i).forEach(([n,r])=>{t=[...t,n,e?r:encodeURIComponent(r)]});let a=t.join(`,`);switch(r){case`form`:return`${n}=${a}`;case`label`:return`.${a}`;case`matrix`:return`;${n}=${a}`;default:return a}}let o=wn(r),s=Object.entries(i).map(([t,i])=>En({allowReserved:e,name:r===`deepObject`?`${n}[${t}]`:t,value:i})).join(o);return r===`label`||r===`matrix`?o+s:s},On=/\{[^{}]+\}/g,kn=({path:e,url:t})=>{let n=t,r=t.match(On);if(r)for(let t of r){let r=!1,i=t.substring(1,t.length-1),a=`simple`;i.endsWith(`*`)&&(r=!0,i=i.substring(0,i.length-1)),i.startsWith(`.`)?(i=i.substring(1),a=`label`):i.startsWith(`;`)&&(i=i.substring(1),a=`matrix`);let o=e[i];if(o==null)continue;if(Array.isArray(o)){n=n.replace(t,Tn({explode:r,name:i,style:a,value:o}));continue}if(typeof o==`object`){n=n.replace(t,Dn({explode:r,name:i,style:a,value:o,valueOnly:!0}));continue}if(a===`matrix`){n=n.replace(t,`;${En({name:i,value:o})}`);continue}let s=encodeURIComponent(a===`label`?`.${o}`:o);n=n.replace(t,s)}return n},An=({baseUrl:e,path:t,query:n,querySerializer:r,url:i})=>{let a=i.startsWith(`/`)?i:`/${i}`,o=(e??``)+a;t&&(o=kn({path:t,url:o}));let s=n?r(n):``;return s.startsWith(`?`)&&(s=s.substring(1)),s&&(o+=`?${s}`),o};function jn(e){let t=e.body!==void 0;if(t&&e.bodySerializer)return`serializedBody`in e?e.serializedBody!==void 0&&e.serializedBody!==``?e.serializedBody:null:e.body===``?null:e.body;if(t)return e.body}var Mn=async(e,t)=>{let n=typeof t==`function`?await t(e):t;if(n)return e.scheme===`bearer`?`Bearer ${n}`:e.scheme===`basic`?`Basic ${btoa(n)}`:n},Nn={bodySerializer:e=>JSON.stringify(e,(e,t)=>typeof t==`bigint`?t.toString():t)},Pn=({parameters:e={},...t}={})=>n=>{let r=[];if(n&&typeof n==`object`)for(let i in n){let a=n[i];if(a==null)continue;let o=e[i]||t;if(Array.isArray(a)){let e=Tn({allowReserved:o.allowReserved,explode:!0,name:i,style:`form`,value:a,...o.array});e&&r.push(e)}else if(typeof a==`object`){let e=Dn({allowReserved:o.allowReserved,explode:!0,name:i,style:`deepObject`,value:a,...o.object});e&&r.push(e)}else{let e=En({allowReserved:o.allowReserved,name:i,value:a});e&&r.push(e)}}return r.join(`&`)},Fn=e=>{if(!e)return`stream`;let t=e.split(`;`)[0]?.trim();if(t){if(t.startsWith(`application/json`)||t.endsWith(`+json`))return`json`;if(t===`multipart/form-data`)return`formData`;if([`application/`,`audio/`,`image/`,`video/`].some(e=>t.startsWith(e)))return`blob`;if(t.startsWith(`text/`))return`text`}},In=(e,t)=>t?!!(e.headers.has(t)||e.query?.[t]||e.headers.get(`Cookie`)?.includes(`${t}=`)):!1;async function Ln(e){for(let t of e.security??[]){if(In(e,t.name))continue;let n=await Mn(t,e.auth);if(!n)continue;let r=t.name??`Authorization`;switch(t.in){case`query`:e.query||={},e.query[r]=n;break;case`cookie`:e.headers.append(`Cookie`,`${r}=${n}`);break;default:e.headers.set(r,n)}}}var Rn=e=>An({baseUrl:e.baseUrl,path:e.path,query:e.query,querySerializer:typeof e.querySerializer==`function`?e.querySerializer:Pn(e.querySerializer),url:e.url}),zn=(e,t)=>{let n={...e,...t};return n.baseUrl?.endsWith(`/`)&&(n.baseUrl=n.baseUrl.substring(0,n.baseUrl.length-1)),n.headers=Vn(e.headers,t.headers),n},Bn=e=>{let t=[];return e.forEach((e,n)=>{t.push([n,e])}),t},Vn=(...e)=>{let t=new Headers;for(let n of e){if(!n)continue;let e=n instanceof Headers?Bn(n):Object.entries(n);for(let[n,r]of e)if(r===null)t.delete(n);else if(Array.isArray(r))for(let e of r)t.append(n,e);else r!==void 0&&t.set(n,typeof r==`object`?JSON.stringify(r):r)}return t},Hn=class{fns=[];clear(){this.fns=[]}eject(e){let t=this.getInterceptorIndex(e);this.fns[t]&&(this.fns[t]=null)}exists(e){let t=this.getInterceptorIndex(e);return!!this.fns[t]}getInterceptorIndex(e){return typeof e==`number`?this.fns[e]?e:-1:this.fns.indexOf(e)}update(e,t){let n=this.getInterceptorIndex(e);return this.fns[n]?(this.fns[n]=t,e):!1}use(e){return this.fns.push(e),this.fns.length-1}},Un=()=>({error:new Hn,request:new Hn,response:new Hn}),Wn=Pn({allowReserved:!1,array:{explode:!0,style:`form`},object:{explode:!0,style:`deepObject`}}),Gn={"Content-Type":`application/json`},Kn=(e={})=>({...Nn,headers:Gn,parseAs:`auto`,querySerializer:Wn,...e}),U=((e={})=>{let t=zn(Kn(),e),n=()=>({...t}),r=e=>(t=zn(t,e),n()),i=Un(),a=async e=>{let n={...t,...e,fetch:e.fetch??t.fetch??globalThis.fetch,headers:Vn(t.headers,e.headers),serializedBody:void 0};n.security&&await Ln(n),n.requestValidator&&await n.requestValidator(n),n.body!==void 0&&n.bodySerializer&&(n.serializedBody=n.bodySerializer(n.body)),(n.body===void 0||n.serializedBody===``)&&n.headers.delete(`Content-Type`);let r=n;return{opts:r,url:Rn(r)}},o=async e=>{let n=e.throwOnError??t.throwOnError,r=e.responseStyle??t.responseStyle,o,s;try{let{opts:t,url:n}=await a(e),r={redirect:`follow`,...t,body:jn(t)};o=new Request(n,r);for(let e of i.request.fns)e&&(o=await e(o,t));let c=t.fetch;s=await c(o);for(let e of i.response.fns)e&&(s=await e(s,o,t));let l={request:o,response:s};if(s.ok){let e=(t.parseAs===`auto`?Fn(s.headers.get(`Content-Type`)):t.parseAs)??`json`;if(s.status===204||s.headers.get(`Content-Length`)===`0`){let n;switch(e){case`arrayBuffer`:case`blob`:case`text`:n=await s[e]();break;case`formData`:n=new FormData;break;case`stream`:n=s.body;break;default:n={}}return t.responseStyle===`data`?n:{data:n,...l}}let n;switch(e){case`arrayBuffer`:case`blob`:case`formData`:case`text`:n=await s[e]();break;case`json`:{let e=await s.text();n=e?JSON.parse(e):{};break}case`stream`:return t.responseStyle===`data`?s.body:{data:s.body,...l}}return e===`json`&&(t.responseValidator&&await t.responseValidator(n),t.responseTransformer&&(n=await t.responseTransformer(n))),t.responseStyle===`data`?n:{data:n,...l}}let u=await s.text(),d;try{d=JSON.parse(u)}catch{}throw d??u}catch(t){let a=t;for(let t of i.error.fns)t&&(a=await t(a,s,o,e));if(a||={},n)throw a;return r===`data`?void 0:{error:a,request:o,response:s}}},s=e=>t=>o({...t,method:e}),c=e=>async t=>{let{opts:n,url:r}=await a(t);return xn({...n,body:n.body,method:e,onRequest:async(e,t)=>{let r=new Request(e,t);for(let e of i.request.fns)e&&(r=await e(r,n));return r},serializedBody:jn(n),url:r})};return{buildUrl:e=>Rn({...t,...e}),connect:s(`CONNECT`),delete:s(`DELETE`),get:s(`GET`),getConfig:n,head:s(`HEAD`),interceptors:i,options:s(`OPTIONS`),patch:s(`PATCH`),post:s(`POST`),put:s(`PUT`),request:o,setConfig:r,sse:{connect:c(`CONNECT`),delete:c(`DELETE`),get:c(`GET`),head:c(`HEAD`),options:c(`OPTIONS`),patch:c(`PATCH`),post:c(`POST`),put:c(`PUT`),trace:c(`TRACE`)},trace:s(`TRACE`)}})(Kn({baseUrl:`https://tailorkit.dev/api/platform`})),qn=e=>(e.client??U).post({url:`/apps/list`,...e,headers:{"Content-Type":`application/json`,...e.headers}}),Jn=e=>(e.client??U).post({url:`/apps/{appId}/lookup`,...e,headers:{"Content-Type":`application/json`,...e.headers}}),Yn=e=>(e.client??U).post({url:`/apps`,...e,headers:{"Content-Type":`application/json`,...e.headers}}),Xn=e=>(e.client??U).delete({url:`/apps/{appId}`,...e,headers:{"Content-Type":`application/json`,...e.headers}}),Zn=e=>(e.client??U).put({url:`/apps/{appId}`,...e,headers:{"Content-Type":`application/json`,...e.headers}}),Qn=e=>(e.client??U).post({url:`/apps/{appId}/deploy`,...e,headers:{"Content-Type":`application/json`,...e.headers}}),$n=e=>(e.client??U).post({url:`/cli-auth/approve`,...e,headers:{"Content-Type":`application/json`,...e.headers}}),er=e=>(e.client??U).post({url:`/cli-auth/deny`,...e,headers:{"Content-Type":`application/json`,...e.headers}}),tr=e=>(e.client??U).post({url:`/cli-auth/poll`,...e,headers:{"Content-Type":`application/json`,...e.headers}}),nr=e=>(e.client??U).post({url:`/cli-auth/start`,...e,headers:{"Content-Type":`application/json`,...e.headers}}),rr=e=>(e.client??U).post({url:`/cli-auth/verify-token`,...e,headers:{"Content-Type":`application/json`,...e.headers}}),ir=e=>(e.client??U).post({url:`/deployments/list`,...e,headers:{"Content-Type":`application/json`,...e.headers}}),ar=e=>(e.client??U).post({url:`/deployments/{deploymentId}/lookup`,...e,headers:{"Content-Type":`application/json`,...e.headers}}),or=e=>(e.client??U).post({url:`/deployments`,...e,headers:{"Content-Type":`application/json`,...e.headers}}),sr=e=>(e.client??U).post({url:`/deployments/{deploymentId}`,...e,headers:{"Content-Type":`application/json`,...e.headers}}),cr=e=>(e.client??U).post({url:`/preview/start`,...e,headers:{"Content-Type":`application/json`,...e.headers}}),lr=e=>(e.client??U).post({url:`/preview/{sessionId}/stop`,...e,headers:{"Content-Type":`application/json`,...e.headers}});Object.entries({$body_:`body`,$headers_:`headers`,$path_:`path`,$query_:`query`});var ur=class e extends yn{meta(...t){let[n,r]=V(this[`~orpc`].meta,this[`~orpc`].metaPlugins,t);return new e({...this[`~orpc`],meta:n,metaPlugins:r})}errors(t){let n=new e({...this[`~orpc`],errorMap:B(this[`~orpc`].errorMap,t)}),r=H(t);return r&&(n=n.meta(...r)),n}use(t){let n=new e({...this[`~orpc`],errorMap:B(t[`~orpc`]?.errorMap,this[`~orpc`].errorMap),orderedMiddlewares:[...this[`~orpc`].orderedMiddlewares,{middleware:t,inputSchemasLengthAtUse:this[`~orpc`].inputSchemas?.length,outputSchemasLengthAtUse:this[`~orpc`].outputSchemas?.length}]});return t[`~orpc`]?.metaPlugins&&(n=n.meta(...t[`~orpc`]?.metaPlugins)),n}};function dr(e){let t=((...t)=>e(...t));return t[`~orpc`]=e[`~orpc`],Object.defineProperty(t,"name",{value:e.name}),t.adaptInput=t=>{let n=dr((n,r,...i)=>e(n,t(r),...i));return n[`~orpc`]=e[`~orpc`],Object.defineProperty(n,"name",{value:e.name}),n},t.errors=e=>{let n=dr(t);return n[`~orpc`]={...t[`~orpc`],errorMap:B(t[`~orpc`]?.errorMap,e)},n},t.use=n=>{let r=dr((t,...r)=>e({...t,async next(e){let i=await n({...t,context:{...t.context,...e?.context},next(n,...r){return t.next({...t,context:{...e?.context,...n?.context}},...r)}},...r);return{...i,context:{...e?.context,...i.context}}}},...r));return r[`~orpc`]={...t[`~orpc`],errorMap:B(n[`~orpc`]?.errorMap,t[`~orpc`]?.errorMap),metaPlugins:[...O(e[`~orpc`]?.metaPlugins),...O(n[`~orpc`]?.metaPlugins)]},Object.defineProperty(r,"name",{value:`${e.name} + ${n.name}`}),r},t}var fr=class e{"~orpc";constructor(e){this[`~orpc`]=e}static create(){return new e({errorMap:{},meta:{},orderedMiddlewares:[]})}$context(){return this}$config(t){return new e({...this[`~orpc`],...t})}meta(...t){let[n,r]=V(this[`~orpc`].meta,this[`~orpc`].metaPlugins,t);return new e({...this[`~orpc`],meta:n,metaPlugins:r})}errors(t){let n=new e({...this[`~orpc`],errorMap:B(this[`~orpc`].errorMap,t)}),r=H(t);return r&&(n=n.meta(...r)),n}use(t){let n=new e({...this[`~orpc`],errorMap:B(t[`~orpc`]?.errorMap??{},this[`~orpc`].errorMap),orderedMiddlewares:[...this[`~orpc`].orderedMiddlewares,{middleware:t,inputSchemasLengthAtUse:this[`~orpc`].inputSchemas?.length,outputSchemasLengthAtUse:this[`~orpc`].outputSchemas?.length}]});return t[`~orpc`]?.metaPlugins&&(n=n.meta(...t[`~orpc`]?.metaPlugins)),n}middleware(e){let t=[...this[`~orpc`].orderedMiddlewares.map(({middleware:e})=>e),e],n=dr(t.shift());for(let e of t)n=n.use(e);return n[`~orpc`]={...n[`~orpc`],errorMap:this[`~orpc`].errorMap,metaPlugins:[...O(this[`~orpc`].metaPlugins),...O(e[`~orpc`]?.metaPlugins)]},n}input(t){let n=new e({...this[`~orpc`],inputSchemas:[...O(this[`~orpc`].inputSchemas),t]}),r=H(t);return r&&(n=n.meta(...r)),n}output(t){let n=new e({...this[`~orpc`],outputSchemas:[...O(this[`~orpc`].outputSchemas),t]}),r=H(t);return r&&(n=n.meta(...r)),n}handler(e){let t=new ur({...this[`~orpc`],handler:e}),n=H(e);return n&&(t=t.meta(...n)),t}router(e){return bn(e,{...this[`~orpc`],middlewares:this[`~orpc`].orderedMiddlewares.map(({middleware:e})=>e)})}lazy(e){return new _n({loader:async()=>{let{default:t}=await e();return{default:this.router(t)}},meta:this[`~orpc`].meta,metaPlugins:this[`~orpc`].metaPlugins})}}.create();function pr(e,t){return new de(async()=>{for(;;){let{json:t}=await e.pull();switch(t.event){case void 0:case`message`:{let e=t.data;return M(e)&&(e=I(e,t)),{value:e,done:!1}}case`error`:throw I(new F(t.data),t);case`close`:{let e=t.data;return M(e)&&(e=I(e,t)),{value:e,done:!0}}}}},t)}var mr=class{constructor(e,t,n){this.iterator=e,this.messageId=t,this.send=n}isDone=!1;async cancel(){this.isDone||(this.isDone=!0,await this.iterator.return?.())}async transmit(){for(;;)try{let e=await this.iterator.next();if(this.isDone)return;e.done&&(this.isDone=!0);try{let[t,n]=St(e.value);await this.send({kind:`event-stream`,id:this.messageId,json:{...n,event:e.done?`close`:void 0,data:t}})}catch(e){throw await this.cancel(),e}if(this.isDone)return}catch(e){if(e instanceof F){if(!this.isDone){this.isDone=!0;let[t,n]=St(e);await this.send({kind:`event-stream`,id:this.messageId,json:{...n,event:`error`,data:t.data}})}return}throw this.isDone=!0,e}}};function hr(e,t){return new ReadableStream({async pull(n){try{let{json:r,binary:i}=await e.pull();i&&n.enqueue(i instanceof Uint8Array?i:new Uint8Array(await i.arrayBuffer())),r.close&&(await t({kind:`success`}),n.close())}catch(e){await t({kind:`error`,error:e}),n.error(e)}},async cancel(e){await t({kind:`cancelled`,error:e})}})}var gr=class{constructor(e,t,n){this.messageId=t,this.send=n,this.reader=e.getReader()}isDone=!1;reader;async cancel(){this.isDone||(this.isDone=!0,await this.reader.cancel())}async transmit(){for(;;)try{let e=await this.reader.read();if(this.isDone)return;e.done&&(this.isDone=!0);try{await this.send({json:{close:e.done?!0:void 0},binary:e.value,kind:`octet-stream`,id:this.messageId})}catch(e){throw await this.cancel(),e}if(this.isDone)return}catch(e){throw this.isDone=!0,e}}};function _r(e,t){let n=L(e.json.headers?.[`content-type`]),r=L(e.json.headers?.[`standard-server`]);if(e.json.body===void 0&&e.binary===void 0){if(n===void 0&&r===`event-stream`){let e=new ge;return{resolveBody:async()=>pr(e,t),eventStreamMessageQueue:e}}if(n!==void 0){let e=new ge;return{resolveBody:async()=>hr(e,t),octetStreamMessageQueue:e}}}return{resolveBody:async()=>{let i;try{if(e.binary){if(r===`form-data`){let t={};return n!==void 0&&(t[`content-type`]=n),await new Response(e.binary,{headers:t}).formData()}let t=L(e.json.headers?.[`content-disposition`]),i=t===void 0?void 0:Tt(t);return new File([e.binary],i??`blob`,{type:n??`application/octet-stream`})}if(r===`url-search-params`){if(typeof e.json.body!=`string`)throw TypeError(`Expected body to be a string for url-search-params bodyHint`);return new URLSearchParams(e.json.body)}return e.json.body}catch(e){throw i={value:e},e}finally{await t(i?{kind:`error`,error:i.value}:{kind:`success`})}}}}async function vr(e,t){if(t={...t},e instanceof ReadableStream)return t[`content-type`]??=`application/octet-stream`,{jsonBody:void 0,headers:t,binary:void 0};if(e instanceof Blob)return t[`content-type`]=e.type,t[`content-disposition`]??=wt(e instanceof File?e.name??``:`blob`),Number.isFinite(e.size)&&(t[`content-length`]=e.size.toString()),{jsonBody:void 0,headers:t,binary:e};if(t[`standard-server`]=void 0,t[`content-type`]=void 0,A(e))return t[`standard-server`]=`event-stream`,{jsonBody:void 0,headers:t,binary:void 0};if(e instanceof FormData){let n=await new Response(e).blob();return t[`standard-server`]=`form-data`,t[`content-type`]=n.type,t[`content-length`]=n.size.toString(),{jsonBody:void 0,headers:t,binary:n}}return e instanceof URLSearchParams?(t[`standard-server`]=`url-search-params`,{jsonBody:e.toString(),headers:t,binary:void 0}):{jsonBody:e,headers:t,binary:void 0}}var yr=class{constructor(e){this.send=e}idGenerator=new le;requests=new Map;request(e){return new Promise((t,n)=>{let r=e.signal;r?.throwIfAborted();let i=this.idGenerator.generate(),a={resolve:t,reject:n};if(this.requests.set(i,a),r){let e=()=>{this.abortById(i,r.reason).catch(()=>{})};r.addEventListener(`abort`,e),a.removeAbortListener=()=>r.removeEventListener(`abort`,e)}this.transmitRequest(i,a,e)})}async transmitRequest(e,t,n){try{let r=await vr(n.body,n.headers);if(n.signal?.throwIfAborted(),this.requests.get(e)!==t)return;if(await this.send({id:e,kind:`request`,json:{method:n.method===`POST`?void 0:n.method,url:n.url,headers:pe(r.headers)?r.headers:void 0,body:r.jsonBody},binary:r.binary}),A(n.body)){let r=new mr(n.body,e,this.send);this.requests.get(e)===t?(t.eventStreamTransmitter=r,await r.transmit().catch(n=>{if(t.eventStreamTransmitter)return this.abortById(e,n)})):await r.cancel()}else if(n.body instanceof ReadableStream){let r=new gr(n.body,e,this.send);this.requests.get(e)===t?(t.octetStreamTransmitter=r,await r.transmit().catch(n=>{if(t.octetStreamTransmitter)return this.abortById(e,n)})):await r.cancel()}}catch(t){await this.closeById(e,t)}}async message(e){let t=e.id,n=this.requests.get(t);if(!n)return;if(e.kind===`stream/cancel`){let e=Promise.all([n.eventStreamTransmitter?.cancel(),n.octetStreamTransmitter?.cancel()]);n.eventStreamTransmitter=void 0,n.octetStreamTransmitter=void 0,await e;return}if(e.kind===`cancel`){await this.closeById(t,new k(`Server canceled the request`));return}if(e.kind===`event-stream`){n.eventStreamMessageQueue?.push(e);return}if(e.kind===`octet-stream`){n.octetStreamMessageQueue?.push(e);return}if(!n.resolve)return;let r=n.resolve;n.resolve=void 0;try{let i=_r(e,async e=>{e.kind===`cancelled`?await this.abortById(t,e.error):(n.eventStreamMessageQueue||n.octetStreamMessageQueue)&&await this.closeById(t,e.error)});n.eventStreamMessageQueue=i.eventStreamMessageQueue,n.octetStreamMessageQueue=i.octetStreamMessageQueue,r({headers:e.json.headers??{},status:e.json.status??200,resolveBody:i.resolveBody}),n.reject=void 0,!n.eventStreamMessageQueue&&!n.octetStreamMessageQueue&&await this.closeById(t)}catch(e){await this.closeById(t,e)}}async close(e){e??=new k(`Peer was closed`),await Promise.all(Array.from(this.requests.keys()).map(t=>this.closeById(t,e)))}async closeById(e,t){let n=this.requests.get(e);if(!n)return;this.requests.delete(e),(n.reject||n.eventStreamMessageQueue||n.octetStreamMessageQueue)&&(t??=new k(`Request was closed`)),n.reject?.(t),n.resolve=void 0,n.reject=void 0,n.eventStreamMessageQueue?.close(t),n.octetStreamMessageQueue?.close(t),n.eventStreamMessageQueue=void 0,n.octetStreamMessageQueue=void 0;let r=[n.eventStreamTransmitter?.cancel(),n.octetStreamTransmitter?.cancel()];n.eventStreamTransmitter=void 0,n.octetStreamTransmitter=void 0,n.removeAbortListener?.(),n.removeAbortListener=void 0,await Promise.all(r)}async abortById(e,t){let n=this.requests.get(e);if(!n)return;this.requests.delete(e),t??=new k(`Request was aborted`),n.reject?.(t),n.resolve=void 0,n.reject=void 0,n.eventStreamMessageQueue?.abort(t),n.octetStreamMessageQueue?.abort(t),n.eventStreamMessageQueue=void 0,n.octetStreamMessageQueue=void 0;let r=[this.send({id:e,kind:`cancel`}),n.eventStreamTransmitter?.cancel(),n.octetStreamTransmitter?.cancel()];n.eventStreamTransmitter=void 0,n.octetStreamTransmitter=void 0,n.removeAbortListener?.(),n.removeAbortListener=void 0,await Promise.all(r)}};function br(e){return!(!M(e)||typeof e.id!=`string`||typeof e.kind!=`string`||e.binary!==void 0&&!(e.binary instanceof Uint8Array)&&!(e.binary instanceof Blob))}function xr(e){return!(e.kind!==`response`||!M(e.json)||e.json.status!==void 0&&!jt(e.json.status)||e.json.headers!==void 0&&!At(e.json.headers))}function Sr(e){return e.kind===`cancel`&&e.json===void 0&&e.binary===void 0}function Cr(e){return!(e.kind!==`event-stream`||e.binary!==void 0||!M(e.json)||e.json.id!==void 0&&typeof e.json.id!=`string`||e.json.event!==void 0&&e.json.event!==`message`&&e.json.event!==`error`&&e.json.event!==`close`||e.json.retry!==void 0&&!Number.isFinite(e.json.retry)||e.json.comments!==void 0&&!(Array.isArray(e.json.comments)&&e.json.comments.every(e=>typeof e==`string`)))}function wr(e){return e.kind===`octet-stream`&&M(e.json)&&(e.json.close===void 0||typeof e.json.close==`boolean`)}function Tr(e){return e.kind===`stream/cancel`&&e.json===void 0&&e.binary===void 0}function Er(e){return xr(e)||Sr(e)||Cr(e)||wr(e)||Tr(e)}var Dr=255,Or=new TextEncoder,kr=new TextDecoder;async function Ar(e,t={}){if(e.binary===void 0){let n=j(e);return t.prefix?t.prefix+n:n}let n=j({...e,binary:void 0}),r=Or.encode(t.prefix?t.prefix+n:n),i=e.binary instanceof Blob?new Uint8Array(await e.binary.arrayBuffer()):e.binary,a=new Uint8Array(r.length+1+i.length);return a.set(r,0),a[r.length]=Dr,a.set(i,r.length+1),a}function jr(e,t={}){try{if(typeof e==`string`){if(t.prefix){if(!e.startsWith(t.prefix))return{matched:!1};e=e.slice(t.prefix.length)}let n=JSON.parse(e);return br(n)?{matched:!0,message:n}:{matched:!1}}if(t.prefix){let n=Or.encode(t.prefix);for(let t=0;t<n.length;t++)if(e[t]!==n[t])return{matched:!1};e=e.subarray(n.length)}let n=e.indexOf(Dr);if(n===-1){let t=JSON.parse(kr.decode(e));return br(t)?{matched:!0,message:t}:{matched:!1}}let r=e.subarray(0,n),i=e.subarray(n+1),a=JSON.parse(kr.decode(r));return br(a)?(a.binary=i,{matched:!0,message:a}):{matched:!1}}catch{return{matched:!1}}}var Mr=0,Nr=1,Pr=class{connect;reconnectEnabled;reconnectDelay;reconnectMaxAttempt;reconnectOnCloseEnabled;reconnectOnCloseDelay;encodePeerMessageOptions;decodePeerMessageOptions;constructor(e){this.connect=e.connect,this.reconnectEnabled=e.reconnect?.enabled??!1,this.reconnectDelay=e.reconnect?.delay??(e=>e.attempt===1?0:2e3),this.reconnectMaxAttempt=e.reconnect?.maxAttempt??1/0,this.reconnectOnCloseEnabled=this.reconnectEnabled&&(e.reconnect?.onClose?.enabled??!1),this.reconnectOnCloseDelay=e.reconnect?.onClose?.delay??0,this.encodePeerMessageOptions=e.encodePeerMessage,this.decodePeerMessageOptions=e.decodePeerMessage,e.connectOnInit&&this.getConnectedPeer().catch(()=>{})}async send(e,t,n){return(await Qe(e.signal,()=>this.getConnectedPeer())).request(e)}totalAttempt=0;attempt=0;current;async getConnectedPeer(){let e=this.current,t=await e;if(t&&(!this.reconnectEnabled||t.websocket.readyState===Nr))return this.attempt=0,t.peer;if(e!==this.current)return this.getConnectedPeer();if(this.attempt>=this.reconnectMaxAttempt)throw new k(`WebSocket reconnect failed after ${this.attempt} attempt(s)`);return this.current=(async()=>{this.totalAttempt+=1,this.attempt+=1;let e={totalAttempt:this.totalAttempt,attempt:this.attempt};await _e(this.reconnectDelay(e));let t=await this.connect(e),n=new yr(async e=>{let n=await Ar(e,this.encodePeerMessageOptions);return t.send(n)}),r;return t.readyState===Mr&&(r=Ke(),t.addEventListener(`open`,()=>{r?.resolve()})),t.addEventListener(`message`,ce(async e=>{let t=jr(e.data instanceof Blob?await Se(e.data):Ce(e.data),this.decodePeerMessageOptions);t.matched&&Er(t.message)&&n.message(t.message)})),t.addEventListener(`close`,async e=>{r?.resolve(),this.reconnectOnCloseEnabled&&_e(this.reconnectOnCloseDelay).then(()=>this.getConnectedPeer()).catch(()=>{});let t=new k(`WebSocket closed (code ${e.code}: ${e.reason})`);await n.close(t)}),await r?.promise,r=void 0,{websocket:t,peer:n}})().catch(e=>{if(!this.reconnectEnabled)throw e}),this.getConnectedPeer()}},Fr=class extends sn{constructor(e){let t=new ln(e),n=new Pr(e);super(t,n,e)}},Ir=T.string().regex(/^[A-Za-z0-9_-]{1,128}$/u),Lr=T.string().max(349528).regex(/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/u),Rr=e=>[...e].some(e=>(e.codePointAt(0)??0)<32),zr=T.object({path:T.string().min(1).max(1024).refine(e=>new TextEncoder().encode(e).byteLength<=1024,{message:`Preview path exceeds 1024 UTF-8 bytes`}),contentType:T.string().min(1).max(255).refine(e=>!/[\r\n]/u.test(e),{message:`Invalid preview content type`}),size:T.number().int().min(0).max(1048576),chunks:T.number().int().min(0).max(4),sha256:T.string().regex(/^[a-f0-9]{64}$/u)}),Br=T.object({files:T.array(zr).max(100)}).superRefine((e,t)=>{let n=new Set,r=0;for(let[i,a]of e.files.entries())(a.path.startsWith(`/`)||a.path.includes(`\\`)||a.path.split(`/`).some(e=>!e||e===`.`||e===`..`)||Rr(a.path)||n.has(a.path))&&t.addIssue({code:`custom`,message:`Invalid or duplicate preview path`,path:[`files`,i,`path`]}),a.chunks!==Math.ceil(a.size/262144)&&t.addIssue({code:`custom`,message:`Invalid preview chunk count`,path:[`files`,i,`chunks`]}),n.add(a.path),r+=a.size;n.has(`client.js`)||t.addIssue({code:`custom`,message:`Missing client.js`}),r>10485760&&t.addIssue({code:`custom`,message:`Preview build exceeds 10 MiB`})}),Vr=T.discriminatedUnion(`type`,[T.object({type:T.literal(`begin`),buildId:Ir,revision:T.number().int().positive(),manifest:Br}),T.object({type:T.literal(`chunk`),revision:T.number().int().positive(),fileIndex:T.number().int().min(0).max(99),chunkIndex:T.number().int().min(0).max(3),base64:Lr}),T.object({type:T.literal(`complete`),revision:T.number().int().positive()}),T.object({type:T.literal(`ended`)})]);T.object({sessionId:T.uuid(),expiresAt:T.string().min(1),websocketUrl:T.url(),token:T.string().min(1)});var Hr=T.object({manifest:Br}),Ur=T.object({buildId:Ir,fileIndex:T.number().int().min(0).max(99),chunkIndex:T.number().int().min(0).max(3),base64:Lr}),Wr=T.object({buildId:Ir}),Gr=T.object({accepted:T.literal(!0)}),Kr=T.object({revision:T.number().int().positive()});function qr(e){let t=Zt(new Fr({connect:()=>e}));return{beginBuild:async e=>Wr.parse(await t.beginBuild(Hr.parse(e))),uploadChunk:async e=>Gr.parse(await t.uploadChunk(Ur.parse(e))),commitBuild:async e=>Kr.parse(await t.commitBuild({buildId:Ir.parse(e.buildId)})),heartbeat:async()=>Gr.parse(await t.heartbeat()),subscribe:async()=>{let e=await t.subscribe();return(async function*(){for await(let t of e)yield Vr.parse(t)})()}}}function Jr(e){let t=URL.canParse(e.url)?new URL(e.url):void 0;return Zt(new pn({origin:t?.origin,async fetch(t,n){let r=await(typeof e.headers==`function`?e.headers():e.headers),i=new Headers(r);return new Headers(n.headers).forEach((e,t)=>{i.set(t,e)}),(e.fetch??fetch)(t,{...n,headers:i})},url:t?`${t.pathname}${t.search}${t.hash}`:e.url}))}var Yr=32,Xr=64,Zr=255,Qr=16,$r=100,ei=16384,ti=512,ni=/^[A-Za-z][A-Za-z0-9_-]{0,63}$/u;function ri(e){if(!ni.test(e))throw TypeError(`TailorKit scope names must start with a letter and contain only letters, numbers, "_", or "-".`);return e}function ii(e){if(!li(e))throw TypeError(`TailorKit scope values must be nonempty plain JSON objects.`);let t=0,n=si(e,0,!0,new Set,()=>{if(t+=1,t>ti)throw TypeError(`TailorKit scope values may contain at most ${ti} JSON values.`)}),r=JSON.stringify(n);if(r===void 0||new TextEncoder().encode(r).byteLength>ei)throw TypeError(`TailorKit scope values may not exceed ${ei} bytes of JSON.`);return n}function ai(e){if(!li(e))throw TypeError(`TailorKit scope identity must contain a name and value.`);if(ci(e,`TailorKit scope identity must contain data properties.`).length!==2||!Object.hasOwn(e,`name`)||!Object.hasOwn(e,`value`))throw TypeError(`TailorKit scope identity must contain only a name and value.`);let t=Object.getOwnPropertyDescriptor(e,`name`)?.value,n=Object.getOwnPropertyDescriptor(e,`value`)?.value;if(typeof t!=`string`)throw TypeError(`TailorKit scope identity must contain a name and value.`);return ri(t),{name:t,value:ii(n)}}function oi(e,t){let n=t??Object.keys(e);if(n.length===0)throw TypeError(`At least one TailorKit scope must be selected.`);let r=[],i=new Set;for(let t of n){if(ri(t),i.has(t))continue;if(i.add(t),!Object.hasOwn(e,t))throw TypeError(`TailorKit scope "${t}" is not available for this request.`);let n=e[t];if(!n)throw TypeError(`TailorKit scope "${t}" is not available for this request.`);r.push({name:t,value:n})}if(r.length===0)throw TypeError(`At least one TailorKit scope must be selected.`);return r}function si(e,t,n,r,i){if(i(),e===null||typeof e==`boolean`||typeof e==`string`){if(typeof e==`string`&&e.length>Zr)throw TypeError(`TailorKit scope strings may not exceed ${Zr} characters.`);return e}if(typeof e==`number`){if(!Number.isFinite(e)||Number.isInteger(e)&&!Number.isSafeInteger(e))throw TypeError(`TailorKit scope numbers must be finite and safe when integral.`);if(Object.is(e,-0))throw TypeError(`TailorKit scope numbers may not be negative zero.`);return e}if(typeof e!=`object`)throw TypeError(`TailorKit scope values must contain only JSON values.`);if(t>Qr)throw TypeError(`TailorKit scope values may be nested at most ${Qr} levels deep.`);if(r.has(e))throw TypeError(`TailorKit scope values may not contain cycles.`);if(r.add(e),Array.isArray(e)){if(Object.getPrototypeOf(e)!==Array.prototype)throw TypeError(`TailorKit scope arrays must be standard arrays.`);if(e.length>$r)throw TypeError(`TailorKit scope arrays may contain at most ${$r} items.`);let n=Reflect.ownKeys(e);if(n.length!==e.length+1||!n.includes(`length`)||n.some(e=>typeof e!=`string`))throw TypeError(`TailorKit scope arrays must be dense and have no extra properties.`);let a=[];for(let n=0;n<e.length;n+=1){let o=Object.getOwnPropertyDescriptor(e,String(n));if(!o?.enumerable||!(`value`in o))throw TypeError(`TailorKit scope arrays must contain enumerable data items.`);a.push(si(o.value,t+1,!1,r,i))}return r.delete(e),Object.freeze(a)}if(!li(e))throw TypeError(`TailorKit scope objects must be plain JSON objects.`);let a=ci(e,`TailorKit scope objects must contain data properties.`);if(n&&a.length===0)throw TypeError(`TailorKit scope values must be nonempty plain JSON objects.`);if(a.length>Yr)throw TypeError(`TailorKit scope objects may contain at most ${Yr} properties.`);let o=Object.fromEntries(a.sort(([e],[t])=>ui(e,t)).map(([e,n])=>[e,si(n,t+1,!1,r,i)]));return r.delete(e),Object.freeze(o)}function ci(e,t){let n=Reflect.ownKeys(e);if(n.some(e=>typeof e!=`string`))throw TypeError(t);let r=[];for(let i of n){if(i===`__proto__`)throw TypeError(`TailorKit scope property names may not be "__proto__".`);if(i.length===0||i.length>Xr)throw TypeError(`TailorKit scope property names must be 1 to ${Xr} characters.`);let n=Object.getOwnPropertyDescriptor(e,i);if(!n?.enumerable||!(`value`in n))throw TypeError(t);r.push([i,n.value])}return r}function li(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function ui(e,t){return e<t?-1:+(e>t)}var di=T.string().regex(/^[A-Za-z0-9_-]{43}$/u);T.array(di).max(20),T.enum([`accept`,`cancel`]);var W=fr.$context();function fi(e){if(!e.tailorkit)throw new R(`UNAUTHORIZED`,{message:`Unauthorized.`});return e.tailorkit}function G(e,t){let n=fi(e).scopes,r=t===void 0?Object.keys(n):[t];if(r.length!==1)throw new R(`BAD_REQUEST`,{message:`Choose one TailorKit scope for this operation.`});try{return oi(n,r)[0]}catch(e){throw new R(`BAD_REQUEST`,{message:e instanceof Error?e.message:`Invalid TailorKit scope selection.`})}}function pi(e,t){try{return oi(fi(e).scopes,t)}catch(e){throw new R(`BAD_REQUEST`,{message:e instanceof Error?e.message:`Invalid TailorKit scope selection.`})}}function mi(e){let[t,n]=e.headers.get(`authorization`)?.split(` `)??[];if(t!==`Bearer`||!n)throw new R(`UNAUTHORIZED`,{message:`Missing CLI deploy token.`});return n}var K=W.middleware(async({context:e,next:t})=>{let n=await rr({body:{deployToken:mi(e.request)},client:e.platform,headers:e.platformHeaders}),r=`data`in n?n.data:n;if(!r?.scope)throw new R(`UNAUTHORIZED`,{message:`Invalid CLI deploy token.`});let i;try{let t=ai(r.scope);if(!Object.hasOwn(e.scopeSchemas,t.name))throw TypeError(`CLI token uses an undeclared scope.`);i=Object.freeze({[t.name]:t.value})}catch{throw new R(`UNAUTHORIZED`,{message:`Invalid CLI deploy token.`})}return t({context:{tailorkit:{scopes:i}}})}),hi=W.middleware(async({context:e,next:t})=>{let n=await e.authenticate({request:e.request});if(!n)throw new R(`UNAUTHORIZED`,{message:`Unauthorized.`});return t({context:{tailorkit:n}})}),gi=async(e,t)=>{if(e===void 0)return t;let n=await e[`~standard`].validate(t);if(`issues`in n)throw new R(`BAD_REQUEST`,{message:`Invalid TailorKit payload`});return n.value};W.use(hi).input(T.object({input:T.unknown().optional(),path:T.string()})).handler(async({context:e,input:t})=>{let n=e.actions.get(t.path);if(n===void 0)throw new R(`NOT_FOUND`,{message:`Action not found`});let r=await gi(n.definition.input,t.input),i=await n.handler({context:fi(e).actionContext,input:r});return gi(n.definition.output,i)});var _i=T.object({page:T.number().int().min(1).optional(),pageSize:T.number().int().min(1).max(100).optional()}),vi=T.object({description:T.string().nullable(),name:T.string()});W.use(K).input(vi).handler(async({context:e,input:t})=>await Yn({body:{...t,scope:G(e)},client:e.platform,headers:e.platformHeaders})),W.use(K).input(T.object({appId:T.string()})).handler(async({context:e,input:t})=>await Xn({body:{scope:G(e)},client:e.platform,headers:e.platformHeaders,path:{appId:t.appId}})),W.use(K).input(T.object({appId:T.string(),deploymentId:T.string()})).handler(async({context:e,input:t})=>await Qn({body:{deploymentId:t.deploymentId,scope:G(e)},client:e.platform,headers:e.platformHeaders,path:{appId:t.appId}})),W.use(K).input(T.object({appId:T.string(),scopes:T.array(T.string()).optional()})).handler(async({context:e,input:t})=>await Jn({body:{scopes:pi(e,t.scopes)},client:e.platform,headers:e.platformHeaders,path:{appId:t.appId}})),W.use(K).input(_i.extend({scopes:T.array(T.string()).optional()}).optional()).handler(async({context:e,input:t})=>await qn({client:e.platform,headers:e.platformHeaders,body:{page:t?.page,pageSize:t?.pageSize,scopes:pi(e,t?.scopes)}})),W.use(K).input(T.object({appId:T.string()}).extend(vi.shape)).handler(async({context:e,input:t})=>await Zn({body:{description:t.description,name:t.name,scope:G(e)},client:e.platform,headers:e.platformHeaders,path:{appId:t.appId}}));var yi=async e=>{try{return await e}catch(e){throw typeof e==`string`&&e.toLowerCase()===`unauthorized`?new R(`UNAUTHORIZED`,{message:`TailorKit platform rejected the host project key. Check TAILORKIT_PROJECT_KEY.`}):e}};W.use(hi).input(T.object({scope:T.string().min(1),userCode:T.string().min(1)})).handler(async({context:e,input:t})=>await yi($n({body:{scope:G(e,t.scope),userCode:t.userCode},client:e.platform,headers:e.platformHeaders}))),W.use(hi).input(T.object({userCode:T.string().min(1)})).handler(async({context:e,input:t})=>await yi(er({body:{userCode:t.userCode},client:e.platform,headers:e.platformHeaders}))),W.input(T.object({deviceCode:T.string().min(1)})).handler(async({context:e,input:t})=>await yi(tr({body:{deviceCode:t.deviceCode},client:e.platform,headers:e.platformHeaders}))),W.input(T.object({})).handler(async({context:e})=>await yi(nr({body:{},client:e.platform,headers:e.platformHeaders}))),W.input(T.object({})).use(K).handler(({context:e})=>({scope:G(e)}));var bi=T.object({page:T.number().int().min(1).optional(),pageSize:T.number().int().min(1).max(100).optional()}),xi=T.object({checksum:T.string(),contentLength:T.number().int().min(1),contentType:T.literal(`application/javascript`),encoding:T.literal(`utf-8`),objectKey:T.literal(`client.js`)}),Si=xi.extend({objectKey:T.literal(`server.js`)}),Ci=T.object({checksum:T.string(),contentLength:T.number().int().min(1).max(262144),contentType:T.enum([`image/svg+xml`,`image/png`,`image/webp`])}),wi=T.tuple([xi]),Ti=T.object({dark:Ci.optional(),light:Ci.optional()}).optional(),Ei=e=>{if(e instanceof Error)return e.message;if(typeof e==`string`)return e;if(e&&typeof e==`object`&&`message`in e){let t=e.message;return typeof t==`string`?t:void 0}},Di=e=>Ei(e)?.toLowerCase().includes(`not found`)??!1,Oi=e=>{throw Di(e)?new R(`NOT_FOUND`,{message:`App not found.`}):e};W.use(K).input(T.object({appId:T.string(),assets:wi,server:Si.optional(),logos:Ti})).handler(async({context:e,input:t})=>{try{return await or({body:{appId:t.appId,assets:t.assets,server:t.server,logos:t.logos,scope:G(e)},client:e.platform,headers:e.platformHeaders})}catch(e){Oi(e)}}),W.use(K).input(T.object({deploymentId:T.string(),scopes:T.array(T.string()).optional()})).handler(async({context:e,input:t})=>await ar({body:{scopes:pi(e,t.scopes)},client:e.platform,headers:e.platformHeaders,path:{deploymentId:t.deploymentId}})),W.use(K).input(T.object({appId:T.string(),scopes:T.array(T.string()).optional()}).merge(bi)).handler(async({context:e,input:t})=>await ir({client:e.platform,headers:e.platformHeaders,body:{appId:t.appId,page:t.page,pageSize:t.pageSize,scopes:pi(e,t.scopes)}})),W.use(K).input(T.object({deploymentId:T.string(),rollout:T.boolean().optional()})).handler(async({context:e,input:t})=>await sr({body:{scope:G(e),rollout:t.rollout},client:e.platform,headers:e.platformHeaders,path:{deploymentId:t.deploymentId}}));function ki(e){if(!e||typeof e!=`object`)return!1;if(`data`in e&&e.data&&typeof e.data==`object`&&`reason`in e.data&&e.data.reason===`ACTIVE_PREVIEW_EXISTS`)return!0;let t=`message`in e&&typeof e.message==`string`?e.message:``;return/active preview already exists|preview is already running/iu.test(t)?!0:`error`in e&&ki(e.error)||`cause`in e&&ki(e.cause)}W.use(K).input(T.object({appId:T.string().min(1),replaceActive:T.boolean().optional()})).handler(async({context:e,input:t})=>{try{return await cr({body:{appId:t.appId,deployToken:mi(e.request),replaceActive:t.replaceActive},client:e.platform,headers:e.platformHeaders})}catch(e){throw ki(e)?new R(`CONFLICT`,{message:"A preview is already running for this app. Run `pnpm tailorkit preview --replace` to end it and start a new one."}):e}}),W.use(K).input(T.object({sessionId:T.uuid()})).handler(async({context:e,input:t})=>await lr({body:{deployToken:mi(e.request)},client:e.platform,headers:e.platformHeaders,path:{sessionId:t.sessionId}}));var Ai=e=>{let t=new URL(e);return t.hash=``,t.search=``,t.pathname=t.pathname.replace(/\/+$/u,``),t.toString().replace(/\/$/u,``)},ji=T.object({name:T.string().min(1),value:T.record(T.string(),T.unknown())}),Mi=T.record(T.string(),T.string()),Ni=T.preprocess(e=>typeof e==`object`&&e&&!Array.isArray(e)&&!Object.hasOwn(e,`value`)&&Mi.safeParse(e).success?void 0:e,ji.optional()),Pi=w.join(C(),`.tailorkit`,`auth.json`),Fi=18e5,Ii=2e3,Li=T.object({deployToken:T.string().min(1),scope:Ni}),Ri=T.object({deployToken:T.string().min(1),scope:ji}),zi=T.object({scope:ji}),Bi=T.object({hosts:T.record(T.string(),Li).optional()}).passthrough(),Vi=e=>new Promise(t=>setTimeout(t,e)),Hi=e=>{if(e&&typeof e==`object`&&`error`in e&&e.error!==void 0)throw e.error},Ui=async()=>{try{return Bi.parse(JSON.parse(await v(Pi,`utf-8`)))}catch(e){if(e&&typeof e==`object`&&`code`in e&&e.code===`ENOENT`)return{};throw e}},Wi=async e=>{await g(w.dirname(Pi),{recursive:!0}),await S(Pi,`${JSON.stringify(e,null,2)}\n`,{encoding:`utf-8`,mode:384}),await h(Pi,384)},Gi=async e=>{let t=await ne(e.configPath,e.cwd);if(t.config.host)return Ai(t.config.host);throw Error(`Missing TailorKit host URL. Set host in tailorkit.config.ts.`)},Ki=(e,t)=>{let n=new URL(e);return n.pathname=`${n.pathname.replace(/\/+$/u,``)}/cli-auth/approve`,n.search=``,n.searchParams.set(`code`,t),n.hash=``,n.toString()},qi=e=>Error(`Not logged in for ${e}. Run tailorkit login after checking host in tailorkit.config.ts.`),Ji=async(e,t)=>{let n=await Ui();await Wi({...n,hosts:{...n.hosts,[e]:t}})},Yi=async e=>{let t=await Ui();if(!t.hosts?.[e])return!1;let{[e]:n,...r}=t.hosts,i={...t,hosts:r};return Object.keys(r).length===0?(await b(Pi,{force:!0}),!0):(await Wi(i),!0)},Xi=async e=>(await Ui()).hosts?.[e],Zi=async(e,t)=>{let n=await Gi(e),r=Jr({url:n}),i=await r.cliAuth.start({});Hi(i);let a=`data`in i?i.data:i,o=new Date(a.expiresAt),s=Date.now()+(e.timeout??Fi);for(t({expiresAt:o,hostUrl:n,userCode:a.userCode});Date.now()<s&&Date.now()<o.getTime();){await Vi(Ii);let e=await r.cliAuth.poll({deviceCode:a.deviceCode});Hi(e);let t=`data`in e?e.data:e;switch(t.status){case`pending`:continue;case`denied`:throw Error(`CLI login was denied.`);case`expired`:throw Error(`CLI login expired.`);case`approved`:{let e=Ri.parse(t);return await Ji(n,{deployToken:e.deployToken,scope:e.scope}),{hostUrl:n,scope:e.scope}}default:throw Error(`Unexpected CLI login status.`)}}throw Error(`Timed out waiting for CLI login approval.`)},Qi=async e=>{let t=await Gi(e),n=await Xi(t);if(!n?.deployToken)throw qi(t);let r=Jr({headers:{authorization:`Bearer ${n.deployToken}`},url:t}),i;try{let e=await r.cliAuth.verifyToken({});Hi(e),i=zi.parse(`data`in e?e.data:e)}catch{throw qi(t)}return await Ji(t,{deployToken:n.deployToken,scope:i.scope}),{hostUrl:t,scope:i.scope}},$i=async e=>{let t=await Gi(e);return{hostUrl:t,removed:await Yi(t)}},ea=1048576,ta=oe(D),na={png:`image/png`,svg:`image/svg+xml`,webp:`image/webp`},ra=e=>{if(e&&typeof e==`object`&&`error`in e&&e.error!==void 0)throw e.error;let t=e&&typeof e==`object`&&`data`in e?e.data:e;return t&&typeof t==`object`&&`body`in t?t.body:t},ia=e=>{if(e instanceof Error)return e.message;if(typeof e==`string`)return e;if(e&&typeof e==`object`&&`message`in e){let t=e.message;return typeof t==`string`?t:void 0}},aa=e=>ia(e)?.toLowerCase().includes(`not found`)??!1,oa=async(e,t)=>{let n=w.join(e,`tailorkit-upload.json`);return t.parse(JSON.parse(await v(n,`utf-8`)))},sa=e=>E(`sha256`).update(e).digest(`hex`),ca=async e=>{try{let t=JSON.parse(await v(w.join(e,`package.json`),`utf-8`));if(typeof t.name==`string`&&t.name.trim())return t.name.trim()}catch{}return w.basename(e)},la=async(e,t)=>{let n=await v(e,`utf-8`),r=` appId: ${JSON.stringify(t)},`;if(/^\s*appId\s*:/mu.test(n)){await S(e,n.replace(/^(\s*)appId\s*:\s*(['"]).*?\2\s*,?/mu,`$1appId: ${JSON.stringify(t)},`),`utf-8`);return}let i=/(export\s+default\s+\{)(\r?\n)/u;if(i.test(n)){await S(e,n.replace(i,`$1$2${r}$2`),`utf-8`);return}let a=/(export\s+default\s+(?:defineTailorKitConfig|defineConfig)\(\s*\{)(\r?\n)/u;if(a.test(n)){await S(e,n.replace(a,`$1$2${r}$2`),`utf-8`);return}throw Error(`Could not write appId to ${e}. Add appId: ${JSON.stringify(t)} manually.`)},ua=async(e,t)=>{if(!e.uploadUrl)return;if(t.byteLength>ea)throw Error(`Deployment asset exceeds ${ea} bytes.`);let n=new Headers(e.headers);n.has(`content-type`)||n.set(`content-type`,`application/javascript`);let r=await fetch(e.uploadUrl,{body:new Uint8Array(t),headers:n,method:`PUT`});if(!r.ok)throw Error(`Asset upload failed with ${r.status} ${r.statusText}.`)},da=e=>{for(let t of[`tsconfig.json`,`jsconfig.json`]){let n=w.join(e,t);if(ae(n))return n}},fa=async e=>{let t=da(e.root);if(!t)return;let n=r(w.join(e.root,`package.json`)),i;try{i=w.join(w.dirname(n.resolve(`typescript/package.json`)),`bin/tsc`)}catch{return}let a=w.resolve(e.root,e.config.client?.entry??`src/client.ts`),o=await _(w.join(e.root,`.tailorkit-typecheck-`));try{let n=w.join(o,`tsconfig.json`);await S(n,JSON.stringify({extends:t,compilerOptions:{noEmit:!0,incremental:!1,composite:!1},files:[a,...e.config.server?[w.resolve(e.root,e.config.server.entry??`src/server.ts`)]:[]],include:[]})),await oe(re)(process.execPath,[i,`--noEmit`,`--project`,n,`--pretty`,`false`],{cwd:e.root,maxBuffer:4194304})}catch(t){let n=t;return{command:`tsc --noEmit ${w.relative(e.root,a)}`,exitCode:typeof n.code==`number`?n.code:null,output:`${n.stdout??``}${n.stderr??``}`.trim()||n.message||String(t)}}finally{await b(o,{recursive:!0,force:!0})}},pa=async e=>{let t=await ne(e.configPath,e.cwd),n=t.config.appId,r=!1,i=await Qi(e),a=await Xi(i.hostUrl);if(!a?.deployToken)throw Error(`Not logged in for ${i.hostUrl}. Run tailorkit login after checking host in tailorkit.config.ts.`);let{buildApp:o,tailorkitUploadManifestSchema:s}=await import(`@tailorkit/app/builder`),[c,l]=await Promise.allSettled([o(e),fa(t)]);if(c.status===`rejected`)throw c.reason;if(l.status===`rejected`)throw l.reason;if(l.value!==void 0&&!await e.onTypecheckFailed?.(l.value))throw Error(`Deployment cancelled because type check failed.`);let u=w.resolve(t.root,e.outDir??t.config.build?.outDir??`.tailorkit`),d=await oa(u,s),f=w.join(u,d.assets.client),p=await v(f),m=await ta(p),h=d.assets.server?await v(w.join(u,d.assets.server)):void 0,g=Object.entries(d.assets.logos??{}),_=await Promise.all(g.map(async([e,t])=>{let n=await v(w.join(u,t)),r=na[w.extname(t).slice(1)];if(!r)throw Error(`Unsupported ${e} logo format.`);return{content:n,contentType:r,filename:t,variant:e}}));if(p.byteLength>ea)throw Error(`Combined client assets are ${p.byteLength} bytes and cannot exceed ${ea} bytes.`);let y=Jr({headers:{authorization:`Bearer ${a.deployToken}`},url:i.hostUrl}),ee=async a=>{let o=await ca(t.root);if(!await e.onMissingAppId?.({appName:o,configPath:t.filepath,hostUrl:i.hostUrl,reason:a}))throw Error(`Deployment cancelled.`);return n=ra(await y.apps.create({description:null,name:o})).id,r=!0,await la(t.filepath,n),n};n||=await ee(`missing`);let b=async e=>ra(await y.deployments.create({appId:e,assets:[{checksum:sa(p),contentLength:p.byteLength,contentType:`application/javascript`,encoding:`utf-8`,objectKey:`client.js`}],server:h?{checksum:sa(h),contentLength:h.byteLength,contentType:`application/javascript`,encoding:`utf-8`,objectKey:`server.js`}:void 0,logos:_.length>0?Object.fromEntries(_.map(e=>[e.variant,{checksum:sa(e.content),contentLength:e.content.byteLength,contentType:e.contentType}])):void 0})),x;try{x=await b(n)}catch(e){if(!aa(e))throw e;n=await ee(`not-found`),x=await b(n)}if(x.assets.length!==1||!x.assets[0])throw Error(`Deployment did not return an upload URL for the client asset.`);if(h&&!x.server)throw Error(`Deployment did not return an upload URL for the server asset.`);await Promise.all([...h&&x.server?[ua(x.server,h)]:[],ua(x.assets[0],p),..._.map(e=>{let t=x.logos?.[e.variant];if(!t)throw Error(`Deployment did not return an upload URL for the ${e.variant} logo.`);return ua(t,e.content)})]);let S=ra(await y.deployments.publish({deploymentId:x.deployment.id,rollout:!0})),C=await Promise.all(_.map(async e=>({gzipSize:(await ta(e.content)).byteLength,path:e.filename,size:e.content.byteLength}))),te=[];if(h&&d.assets.server){let e=await ta(h);te.push({gzipSize:e.byteLength,path:d.assets.server,size:h.byteLength})}return{appId:n,createdApp:r,deploymentId:S.id,hostUrl:i.hostUrl,status:S.status,uploadedFiles:[{gzipSize:m.byteLength,path:d.assets.client,size:p.byteLength},...te,...C]}};function ma(e,t){return e===`/`||e===t||t.startsWith(`${e}/`)}var ha=T.enum([`object`,`array`,`string`,`number`,`boolean`,`null`]),q=T.object({$schema:T.enum([`https://json-schema.org/draft/2020-12/schema`]).optional(),type:T.union([ha,T.array(T.string())]).optional(),properties:T.lazy(()=>T.record(T.string(),q)).optional(),required:T.array(T.string()).optional(),additionalProperties:T.union([T.boolean(),T.lazy(()=>q)]).optional(),enum:T.array(T.unknown()).optional(),const:T.unknown().optional(),items:T.lazy(()=>q).optional(),anyOf:T.lazy(()=>T.array(q)).optional(),oneOf:T.lazy(()=>T.array(q)).optional(),allOf:T.lazy(()=>T.array(q)).optional(),not:T.lazy(()=>q).optional()}).strict(),ga=T.object({async:T.boolean().optional(),input:q.optional(),output:q.optional()}),_a=T.object({fields:q.optional(),callbacks:T.record(T.string(),ga),children:T.boolean()}),va=T.record(T.string(),_a),ya=T.string().regex(/^\/.*$/u,{message:`View keys must start with "/".`}),ba=T.object({context:q.optional(),contextOptional:T.boolean().optional()}).strict(),xa=T.record(ya,ba),Sa=T.object({input:T.record(T.string(),T.unknown()).optional(),output:T.record(T.string(),T.unknown()).optional()}),Ca=T.lazy(()=>T.record(T.string(),T.union([Sa,Ca])));T.object({version:T.literal(1),slots:T.record(T.string().min(1),T.object({views:T.array(T.string().startsWith(`/`))})).default({}),actions:Ca.default({}),components:va,views:xa.default({})}).superRefine((e,t)=>{for(let[n,r]of Object.entries(e.slots))r.views.forEach((r,i)=>{Object.hasOwn(e.views,r)||t.addIssue({code:`custom`,path:[`slots`,n,`views`,i],message:`Unknown view "${r}".`})})});var wa=`/* eslint-disable */
15
+ `);try{s=JSON.parse(e),l=!0}catch{s=e}}l&&(i&&await i(s),r&&(s=await r(s))),n?.({data:s,event:o,id:d,retry:c}),a.length&&(yield s)}}}finally{m.removeEventListener(`abort`,h),f.releaseLock()}break}catch(e){if(t?.(e),o!==void 0&&p>=o)break;let n=Math.min(c*2**(p-1),s??3e4);await f(n)}}}()}}var Sn=e=>{switch(e){case`label`:return`.`;case`matrix`:return`;`;case`simple`:return`,`;default:return`&`}},Cn=e=>{switch(e){case`form`:return`,`;case`pipeDelimited`:return`|`;case`spaceDelimited`:return`%20`;default:return`,`}},wn=e=>{switch(e){case`label`:return`.`;case`matrix`:return`;`;case`simple`:return`,`;default:return`&`}},Tn=({allowReserved:e,explode:t,name:n,style:r,value:i})=>{if(!t){let t=(e?i:i.map(e=>encodeURIComponent(e))).join(Cn(r));switch(r){case`label`:return`.${t}`;case`matrix`:return`;${n}=${t}`;case`simple`:return t;default:return`${n}=${t}`}}let a=Sn(r),o=i.map(t=>r===`label`||r===`simple`?e?t:encodeURIComponent(t):En({allowReserved:e,name:n,value:t})).join(a);return r===`label`||r===`matrix`?a+o:o},En=({allowReserved:e,name:t,value:n})=>{if(n==null)return``;if(typeof n==`object`)throw Error("Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these.");return`${t}=${e?n:encodeURIComponent(n)}`},Dn=({allowReserved:e,explode:t,name:n,style:r,value:i,valueOnly:a})=>{if(i instanceof Date)return a?i.toISOString():`${n}=${i.toISOString()}`;if(r!==`deepObject`&&!t){let t=[];Object.entries(i).forEach(([n,r])=>{t=[...t,n,e?r:encodeURIComponent(r)]});let a=t.join(`,`);switch(r){case`form`:return`${n}=${a}`;case`label`:return`.${a}`;case`matrix`:return`;${n}=${a}`;default:return a}}let o=wn(r),s=Object.entries(i).map(([t,i])=>En({allowReserved:e,name:r===`deepObject`?`${n}[${t}]`:t,value:i})).join(o);return r===`label`||r===`matrix`?o+s:s},On=/\{[^{}]+\}/g,kn=({path:e,url:t})=>{let n=t,r=t.match(On);if(r)for(let t of r){let r=!1,i=t.substring(1,t.length-1),a=`simple`;i.endsWith(`*`)&&(r=!0,i=i.substring(0,i.length-1)),i.startsWith(`.`)?(i=i.substring(1),a=`label`):i.startsWith(`;`)&&(i=i.substring(1),a=`matrix`);let o=e[i];if(o==null)continue;if(Array.isArray(o)){n=n.replace(t,Tn({explode:r,name:i,style:a,value:o}));continue}if(typeof o==`object`){n=n.replace(t,Dn({explode:r,name:i,style:a,value:o,valueOnly:!0}));continue}if(a===`matrix`){n=n.replace(t,`;${En({name:i,value:o})}`);continue}let s=encodeURIComponent(a===`label`?`.${o}`:o);n=n.replace(t,s)}return n},An=({baseUrl:e,path:t,query:n,querySerializer:r,url:i})=>{let a=i.startsWith(`/`)?i:`/${i}`,o=(e??``)+a;t&&(o=kn({path:t,url:o}));let s=n?r(n):``;return s.startsWith(`?`)&&(s=s.substring(1)),s&&(o+=`?${s}`),o};function jn(e){let t=e.body!==void 0;if(t&&e.bodySerializer)return`serializedBody`in e?e.serializedBody!==void 0&&e.serializedBody!==``?e.serializedBody:null:e.body===``?null:e.body;if(t)return e.body}var Mn=async(e,t)=>{let n=typeof t==`function`?await t(e):t;if(n)return e.scheme===`bearer`?`Bearer ${n}`:e.scheme===`basic`?`Basic ${btoa(n)}`:n},Nn={bodySerializer:e=>JSON.stringify(e,(e,t)=>typeof t==`bigint`?t.toString():t)},Pn=({parameters:e={},...t}={})=>n=>{let r=[];if(n&&typeof n==`object`)for(let i in n){let a=n[i];if(a==null)continue;let o=e[i]||t;if(Array.isArray(a)){let e=Tn({allowReserved:o.allowReserved,explode:!0,name:i,style:`form`,value:a,...o.array});e&&r.push(e)}else if(typeof a==`object`){let e=Dn({allowReserved:o.allowReserved,explode:!0,name:i,style:`deepObject`,value:a,...o.object});e&&r.push(e)}else{let e=En({allowReserved:o.allowReserved,name:i,value:a});e&&r.push(e)}}return r.join(`&`)},Fn=e=>{if(!e)return`stream`;let t=e.split(`;`)[0]?.trim();if(t){if(t.startsWith(`application/json`)||t.endsWith(`+json`))return`json`;if(t===`multipart/form-data`)return`formData`;if([`application/`,`audio/`,`image/`,`video/`].some(e=>t.startsWith(e)))return`blob`;if(t.startsWith(`text/`))return`text`}},In=(e,t)=>t?!!(e.headers.has(t)||e.query?.[t]||e.headers.get(`Cookie`)?.includes(`${t}=`)):!1;async function Ln(e){for(let t of e.security??[]){if(In(e,t.name))continue;let n=await Mn(t,e.auth);if(!n)continue;let r=t.name??`Authorization`;switch(t.in){case`query`:e.query||={},e.query[r]=n;break;case`cookie`:e.headers.append(`Cookie`,`${r}=${n}`);break;default:e.headers.set(r,n)}}}var Rn=e=>An({baseUrl:e.baseUrl,path:e.path,query:e.query,querySerializer:typeof e.querySerializer==`function`?e.querySerializer:Pn(e.querySerializer),url:e.url}),zn=(e,t)=>{let n={...e,...t};return n.baseUrl?.endsWith(`/`)&&(n.baseUrl=n.baseUrl.substring(0,n.baseUrl.length-1)),n.headers=Vn(e.headers,t.headers),n},Bn=e=>{let t=[];return e.forEach((e,n)=>{t.push([n,e])}),t},Vn=(...e)=>{let t=new Headers;for(let n of e){if(!n)continue;let e=n instanceof Headers?Bn(n):Object.entries(n);for(let[n,r]of e)if(r===null)t.delete(n);else if(Array.isArray(r))for(let e of r)t.append(n,e);else r!==void 0&&t.set(n,typeof r==`object`?JSON.stringify(r):r)}return t},Hn=class{fns=[];clear(){this.fns=[]}eject(e){let t=this.getInterceptorIndex(e);this.fns[t]&&(this.fns[t]=null)}exists(e){let t=this.getInterceptorIndex(e);return!!this.fns[t]}getInterceptorIndex(e){return typeof e==`number`?this.fns[e]?e:-1:this.fns.indexOf(e)}update(e,t){let n=this.getInterceptorIndex(e);return this.fns[n]?(this.fns[n]=t,e):!1}use(e){return this.fns.push(e),this.fns.length-1}},Un=()=>({error:new Hn,request:new Hn,response:new Hn}),Wn=Pn({allowReserved:!1,array:{explode:!0,style:`form`},object:{explode:!0,style:`deepObject`}}),Gn={"Content-Type":`application/json`},Kn=(e={})=>({...Nn,headers:Gn,parseAs:`auto`,querySerializer:Wn,...e}),U=((e={})=>{let t=zn(Kn(),e),n=()=>({...t}),r=e=>(t=zn(t,e),n()),i=Un(),a=async e=>{let n={...t,...e,fetch:e.fetch??t.fetch??globalThis.fetch,headers:Vn(t.headers,e.headers),serializedBody:void 0};n.security&&await Ln(n),n.requestValidator&&await n.requestValidator(n),n.body!==void 0&&n.bodySerializer&&(n.serializedBody=n.bodySerializer(n.body)),(n.body===void 0||n.serializedBody===``)&&n.headers.delete(`Content-Type`);let r=n;return{opts:r,url:Rn(r)}},o=async e=>{let n=e.throwOnError??t.throwOnError,r=e.responseStyle??t.responseStyle,o,s;try{let{opts:t,url:n}=await a(e),r={redirect:`follow`,...t,body:jn(t)};o=new Request(n,r);for(let e of i.request.fns)e&&(o=await e(o,t));let c=t.fetch;s=await c(o);for(let e of i.response.fns)e&&(s=await e(s,o,t));let l={request:o,response:s};if(s.ok){let e=(t.parseAs===`auto`?Fn(s.headers.get(`Content-Type`)):t.parseAs)??`json`;if(s.status===204||s.headers.get(`Content-Length`)===`0`){let n;switch(e){case`arrayBuffer`:case`blob`:case`text`:n=await s[e]();break;case`formData`:n=new FormData;break;case`stream`:n=s.body;break;default:n={}}return t.responseStyle===`data`?n:{data:n,...l}}let n;switch(e){case`arrayBuffer`:case`blob`:case`formData`:case`text`:n=await s[e]();break;case`json`:{let e=await s.text();n=e?JSON.parse(e):{};break}case`stream`:return t.responseStyle===`data`?s.body:{data:s.body,...l}}return e===`json`&&(t.responseValidator&&await t.responseValidator(n),t.responseTransformer&&(n=await t.responseTransformer(n))),t.responseStyle===`data`?n:{data:n,...l}}let u=await s.text(),d;try{d=JSON.parse(u)}catch{}throw d??u}catch(t){let a=t;for(let t of i.error.fns)t&&(a=await t(a,s,o,e));if(a||={},n)throw a;return r===`data`?void 0:{error:a,request:o,response:s}}},s=e=>t=>o({...t,method:e}),c=e=>async t=>{let{opts:n,url:r}=await a(t);return xn({...n,body:n.body,method:e,onRequest:async(e,t)=>{let r=new Request(e,t);for(let e of i.request.fns)e&&(r=await e(r,n));return r},serializedBody:jn(n),url:r})};return{buildUrl:e=>Rn({...t,...e}),connect:s(`CONNECT`),delete:s(`DELETE`),get:s(`GET`),getConfig:n,head:s(`HEAD`),interceptors:i,options:s(`OPTIONS`),patch:s(`PATCH`),post:s(`POST`),put:s(`PUT`),request:o,setConfig:r,sse:{connect:c(`CONNECT`),delete:c(`DELETE`),get:c(`GET`),head:c(`HEAD`),options:c(`OPTIONS`),patch:c(`PATCH`),post:c(`POST`),put:c(`PUT`),trace:c(`TRACE`)},trace:s(`TRACE`)}})(Kn({baseUrl:`https://tailorkit.dev/api/platform`})),qn=e=>(e.client??U).post({url:`/apps/list`,...e,headers:{"Content-Type":`application/json`,...e.headers}}),Jn=e=>(e.client??U).post({url:`/apps/{appId}/lookup`,...e,headers:{"Content-Type":`application/json`,...e.headers}}),Yn=e=>(e.client??U).post({url:`/apps`,...e,headers:{"Content-Type":`application/json`,...e.headers}}),Xn=e=>(e.client??U).delete({url:`/apps/{appId}`,...e,headers:{"Content-Type":`application/json`,...e.headers}}),Zn=e=>(e.client??U).put({url:`/apps/{appId}`,...e,headers:{"Content-Type":`application/json`,...e.headers}}),Qn=e=>(e.client??U).post({url:`/apps/{appId}/deploy`,...e,headers:{"Content-Type":`application/json`,...e.headers}}),$n=e=>(e.client??U).post({url:`/cli-auth/approve`,...e,headers:{"Content-Type":`application/json`,...e.headers}}),er=e=>(e.client??U).post({url:`/cli-auth/deny`,...e,headers:{"Content-Type":`application/json`,...e.headers}}),tr=e=>(e.client??U).post({url:`/cli-auth/poll`,...e,headers:{"Content-Type":`application/json`,...e.headers}}),nr=e=>(e.client??U).post({url:`/cli-auth/start`,...e,headers:{"Content-Type":`application/json`,...e.headers}}),rr=e=>(e.client??U).post({url:`/cli-auth/verify-token`,...e,headers:{"Content-Type":`application/json`,...e.headers}}),ir=e=>(e.client??U).post({url:`/deployments/list`,...e,headers:{"Content-Type":`application/json`,...e.headers}}),ar=e=>(e.client??U).post({url:`/deployments/{deploymentId}/lookup`,...e,headers:{"Content-Type":`application/json`,...e.headers}}),or=e=>(e.client??U).post({url:`/deployments`,...e,headers:{"Content-Type":`application/json`,...e.headers}}),sr=e=>(e.client??U).post({url:`/deployments/{deploymentId}`,...e,headers:{"Content-Type":`application/json`,...e.headers}}),cr=e=>(e.client??U).post({url:`/preview/start`,...e,headers:{"Content-Type":`application/json`,...e.headers}}),lr=e=>(e.client??U).post({url:`/preview/{sessionId}/stop`,...e,headers:{"Content-Type":`application/json`,...e.headers}});Object.entries({$body_:`body`,$headers_:`headers`,$path_:`path`,$query_:`query`});var ur=class e extends yn{meta(...t){let[n,r]=pn(this[`~orpc`].meta,this[`~orpc`].metaPlugins,t);return new e({...this[`~orpc`],meta:n,metaPlugins:r})}errors(t){let n=new e({...this[`~orpc`],errorMap:V(this[`~orpc`].errorMap,t)}),r=H(t);return r&&(n=n.meta(...r)),n}use(t){let n=new e({...this[`~orpc`],errorMap:V(t[`~orpc`]?.errorMap,this[`~orpc`].errorMap),orderedMiddlewares:[...this[`~orpc`].orderedMiddlewares,{middleware:t,inputSchemasLengthAtUse:this[`~orpc`].inputSchemas?.length,outputSchemasLengthAtUse:this[`~orpc`].outputSchemas?.length}]});return t[`~orpc`]?.metaPlugins&&(n=n.meta(...t[`~orpc`]?.metaPlugins)),n}};function dr(e){let t=((...t)=>e(...t));return t[`~orpc`]=e[`~orpc`],Object.defineProperty(t,"name",{value:e.name}),t.adaptInput=t=>{let n=dr((n,r,...i)=>e(n,t(r),...i));return n[`~orpc`]=e[`~orpc`],Object.defineProperty(n,"name",{value:e.name}),n},t.errors=e=>{let n=dr(t);return n[`~orpc`]={...t[`~orpc`],errorMap:V(t[`~orpc`]?.errorMap,e)},n},t.use=n=>{let r=dr((t,...r)=>e({...t,async next(e){let i=await n({...t,context:{...t.context,...e?.context},next(n,...r){return t.next({...t,context:{...e?.context,...n?.context}},...r)}},...r);return{...i,context:{...e?.context,...i.context}}}},...r));return r[`~orpc`]={...t[`~orpc`],errorMap:V(n[`~orpc`]?.errorMap,t[`~orpc`]?.errorMap),metaPlugins:[...k(e[`~orpc`]?.metaPlugins),...k(n[`~orpc`]?.metaPlugins)]},Object.defineProperty(r,"name",{value:`${e.name} + ${n.name}`}),r},t}var fr=class e{"~orpc";constructor(e){this[`~orpc`]=e}static create(){return new e({errorMap:{},meta:{},orderedMiddlewares:[]})}$context(){return this}$config(t){return new e({...this[`~orpc`],...t})}meta(...t){let[n,r]=pn(this[`~orpc`].meta,this[`~orpc`].metaPlugins,t);return new e({...this[`~orpc`],meta:n,metaPlugins:r})}errors(t){let n=new e({...this[`~orpc`],errorMap:V(this[`~orpc`].errorMap,t)}),r=H(t);return r&&(n=n.meta(...r)),n}use(t){let n=new e({...this[`~orpc`],errorMap:V(t[`~orpc`]?.errorMap??{},this[`~orpc`].errorMap),orderedMiddlewares:[...this[`~orpc`].orderedMiddlewares,{middleware:t,inputSchemasLengthAtUse:this[`~orpc`].inputSchemas?.length,outputSchemasLengthAtUse:this[`~orpc`].outputSchemas?.length}]});return t[`~orpc`]?.metaPlugins&&(n=n.meta(...t[`~orpc`]?.metaPlugins)),n}middleware(e){let t=[...this[`~orpc`].orderedMiddlewares.map(({middleware:e})=>e),e],n=dr(t.shift());for(let e of t)n=n.use(e);return n[`~orpc`]={...n[`~orpc`],errorMap:this[`~orpc`].errorMap,metaPlugins:[...k(this[`~orpc`].metaPlugins),...k(e[`~orpc`]?.metaPlugins)]},n}input(t){let n=new e({...this[`~orpc`],inputSchemas:[...k(this[`~orpc`].inputSchemas),t]}),r=H(t);return r&&(n=n.meta(...r)),n}output(t){let n=new e({...this[`~orpc`],outputSchemas:[...k(this[`~orpc`].outputSchemas),t]}),r=H(t);return r&&(n=n.meta(...r)),n}handler(e){let t=new ur({...this[`~orpc`],handler:e}),n=H(e);return n&&(t=t.meta(...n)),t}router(e){return bn(e,{...this[`~orpc`],middlewares:this[`~orpc`].orderedMiddlewares.map(({middleware:e})=>e)})}lazy(e){return new _n({loader:async()=>{let{default:t}=await e();return{default:this.router(t)}},meta:this[`~orpc`].meta,metaPlugins:this[`~orpc`].metaPlugins})}}.create();function pr(e,t){return new ue(async()=>{for(;;){let{json:t}=await e.pull();switch(t.event){case void 0:case`message`:{let e=t.data;return N(e)&&(e=L(e,t)),{value:e,done:!1}}case`error`:throw L(new I(t.data),t);case`close`:{let e=t.data;return N(e)&&(e=L(e,t)),{value:e,done:!0}}}}},t)}var mr=class{constructor(e,t,n){this.iterator=e,this.messageId=t,this.send=n}isDone=!1;async cancel(){this.isDone||(this.isDone=!0,await this.iterator.return?.())}async transmit(){for(;;)try{let e=await this.iterator.next();if(this.isDone)return;e.done&&(this.isDone=!0);try{let[t,n]=xt(e.value);await this.send({kind:`event-stream`,id:this.messageId,json:{...n,event:e.done?`close`:void 0,data:t}})}catch(e){throw await this.cancel(),e}if(this.isDone)return}catch(e){if(e instanceof I){if(!this.isDone){this.isDone=!0;let[t,n]=xt(e);await this.send({kind:`event-stream`,id:this.messageId,json:{...n,event:`error`,data:t.data}})}return}throw this.isDone=!0,e}}};function hr(e,t){return new ReadableStream({async pull(n){try{let{json:r,binary:i}=await e.pull();i&&n.enqueue(i instanceof Uint8Array?i:new Uint8Array(await i.arrayBuffer())),r.close&&(await t({kind:`success`}),n.close())}catch(e){await t({kind:`error`,error:e}),n.error(e)}},async cancel(e){await t({kind:`cancelled`,error:e})}})}var gr=class{constructor(e,t,n){this.messageId=t,this.send=n,this.reader=e.getReader()}isDone=!1;reader;async cancel(){this.isDone||(this.isDone=!0,await this.reader.cancel())}async transmit(){for(;;)try{let e=await this.reader.read();if(this.isDone)return;e.done&&(this.isDone=!0);try{await this.send({json:{close:e.done?!0:void 0},binary:e.value,kind:`octet-stream`,id:this.messageId})}catch(e){throw await this.cancel(),e}if(this.isDone)return}catch(e){throw this.isDone=!0,e}}};function _r(e,t){let n=R(e.json.headers?.[`content-type`]),r=R(e.json.headers?.[`standard-server`]);if(e.json.body===void 0&&e.binary===void 0){if(n===void 0&&r===`event-stream`){let e=new he;return{resolveBody:async()=>pr(e,t),eventStreamMessageQueue:e}}if(n!==void 0){let e=new he;return{resolveBody:async()=>hr(e,t),octetStreamMessageQueue:e}}}return{resolveBody:async()=>{let i;try{if(e.binary){if(r===`form-data`){let t={};return n!==void 0&&(t[`content-type`]=n),await new Response(e.binary,{headers:t}).formData()}let t=R(e.json.headers?.[`content-disposition`]),i=t===void 0?void 0:wt(t);return new File([e.binary],i??`blob`,{type:n??`application/octet-stream`})}if(r===`url-search-params`){if(typeof e.json.body!=`string`)throw TypeError(`Expected body to be a string for url-search-params bodyHint`);return new URLSearchParams(e.json.body)}return e.json.body}catch(e){throw i={value:e},e}finally{await t(i?{kind:`error`,error:i.value}:{kind:`success`})}}}}async function vr(e,t){if(t={...t},e instanceof ReadableStream)return t[`content-type`]??=`application/octet-stream`,{jsonBody:void 0,headers:t,binary:void 0};if(e instanceof Blob)return t[`content-type`]=e.type,t[`content-disposition`]??=Ct(e instanceof File?e.name??``:`blob`),Number.isFinite(e.size)&&(t[`content-length`]=e.size.toString()),{jsonBody:void 0,headers:t,binary:e};if(t[`standard-server`]=void 0,t[`content-type`]=void 0,j(e))return t[`standard-server`]=`event-stream`,{jsonBody:void 0,headers:t,binary:void 0};if(e instanceof FormData){let n=await new Response(e).blob();return t[`standard-server`]=`form-data`,t[`content-type`]=n.type,t[`content-length`]=n.size.toString(),{jsonBody:void 0,headers:t,binary:n}}return e instanceof URLSearchParams?(t[`standard-server`]=`url-search-params`,{jsonBody:e.toString(),headers:t,binary:void 0}):{jsonBody:e,headers:t,binary:void 0}}var yr=class{constructor(e){this.send=e}idGenerator=new ce;requests=new Map;request(e){return new Promise((t,n)=>{let r=e.signal;r?.throwIfAborted();let i=this.idGenerator.generate(),a={resolve:t,reject:n};if(this.requests.set(i,a),r){let e=()=>{this.abortById(i,r.reason).catch(()=>{})};r.addEventListener(`abort`,e),a.removeAbortListener=()=>r.removeEventListener(`abort`,e)}this.transmitRequest(i,a,e)})}async transmitRequest(e,t,n){try{let r=await vr(n.body,n.headers);if(n.signal?.throwIfAborted(),this.requests.get(e)!==t)return;if(await this.send({id:e,kind:`request`,json:{method:n.method===`POST`?void 0:n.method,url:n.url,headers:fe(r.headers)?r.headers:void 0,body:r.jsonBody},binary:r.binary}),j(n.body)){let r=new mr(n.body,e,this.send);this.requests.get(e)===t?(t.eventStreamTransmitter=r,await r.transmit().catch(n=>{if(t.eventStreamTransmitter)return this.abortById(e,n)})):await r.cancel()}else if(n.body instanceof ReadableStream){let r=new gr(n.body,e,this.send);this.requests.get(e)===t?(t.octetStreamTransmitter=r,await r.transmit().catch(n=>{if(t.octetStreamTransmitter)return this.abortById(e,n)})):await r.cancel()}}catch(t){await this.closeById(e,t)}}async message(e){let t=e.id,n=this.requests.get(t);if(!n)return;if(e.kind===`stream/cancel`){let e=Promise.all([n.eventStreamTransmitter?.cancel(),n.octetStreamTransmitter?.cancel()]);n.eventStreamTransmitter=void 0,n.octetStreamTransmitter=void 0,await e;return}if(e.kind===`cancel`){await this.closeById(t,new A(`Server canceled the request`));return}if(e.kind===`event-stream`){n.eventStreamMessageQueue?.push(e);return}if(e.kind===`octet-stream`){n.octetStreamMessageQueue?.push(e);return}if(!n.resolve)return;let r=n.resolve;n.resolve=void 0;try{let i=_r(e,async e=>{e.kind===`cancelled`?await this.abortById(t,e.error):(n.eventStreamMessageQueue||n.octetStreamMessageQueue)&&await this.closeById(t,e.error)});n.eventStreamMessageQueue=i.eventStreamMessageQueue,n.octetStreamMessageQueue=i.octetStreamMessageQueue,r({headers:e.json.headers??{},status:e.json.status??200,resolveBody:i.resolveBody}),n.reject=void 0,!n.eventStreamMessageQueue&&!n.octetStreamMessageQueue&&await this.closeById(t)}catch(e){await this.closeById(t,e)}}async close(e){e??=new A(`Peer was closed`),await Promise.all(Array.from(this.requests.keys()).map(t=>this.closeById(t,e)))}async closeById(e,t){let n=this.requests.get(e);if(!n)return;this.requests.delete(e),(n.reject||n.eventStreamMessageQueue||n.octetStreamMessageQueue)&&(t??=new A(`Request was closed`)),n.reject?.(t),n.resolve=void 0,n.reject=void 0,n.eventStreamMessageQueue?.close(t),n.octetStreamMessageQueue?.close(t),n.eventStreamMessageQueue=void 0,n.octetStreamMessageQueue=void 0;let r=[n.eventStreamTransmitter?.cancel(),n.octetStreamTransmitter?.cancel()];n.eventStreamTransmitter=void 0,n.octetStreamTransmitter=void 0,n.removeAbortListener?.(),n.removeAbortListener=void 0,await Promise.all(r)}async abortById(e,t){let n=this.requests.get(e);if(!n)return;this.requests.delete(e),t??=new A(`Request was aborted`),n.reject?.(t),n.resolve=void 0,n.reject=void 0,n.eventStreamMessageQueue?.abort(t),n.octetStreamMessageQueue?.abort(t),n.eventStreamMessageQueue=void 0,n.octetStreamMessageQueue=void 0;let r=[this.send({id:e,kind:`cancel`}),n.eventStreamTransmitter?.cancel(),n.octetStreamTransmitter?.cancel()];n.eventStreamTransmitter=void 0,n.octetStreamTransmitter=void 0,n.removeAbortListener?.(),n.removeAbortListener=void 0,await Promise.all(r)}};function br(e){return!(!N(e)||typeof e.id!=`string`||typeof e.kind!=`string`||e.binary!==void 0&&!(e.binary instanceof Uint8Array)&&!(e.binary instanceof Blob))}function xr(e){return!(e.kind!==`response`||!N(e.json)||e.json.status!==void 0&&!At(e.json.status)||e.json.headers!==void 0&&!kt(e.json.headers))}function Sr(e){return e.kind===`cancel`&&e.json===void 0&&e.binary===void 0}function Cr(e){return!(e.kind!==`event-stream`||e.binary!==void 0||!N(e.json)||e.json.id!==void 0&&typeof e.json.id!=`string`||e.json.event!==void 0&&e.json.event!==`message`&&e.json.event!==`error`&&e.json.event!==`close`||e.json.retry!==void 0&&!Number.isFinite(e.json.retry)||e.json.comments!==void 0&&!(Array.isArray(e.json.comments)&&e.json.comments.every(e=>typeof e==`string`)))}function wr(e){return e.kind===`octet-stream`&&N(e.json)&&(e.json.close===void 0||typeof e.json.close==`boolean`)}function Tr(e){return e.kind===`stream/cancel`&&e.json===void 0&&e.binary===void 0}function Er(e){return xr(e)||Sr(e)||Cr(e)||wr(e)||Tr(e)}var Dr=255,Or=new TextEncoder,kr=new TextDecoder;async function Ar(e,t={}){if(e.binary===void 0){let n=M(e);return t.prefix?t.prefix+n:n}let n=M({...e,binary:void 0}),r=Or.encode(t.prefix?t.prefix+n:n),i=e.binary instanceof Blob?new Uint8Array(await e.binary.arrayBuffer()):e.binary,a=new Uint8Array(r.length+1+i.length);return a.set(r,0),a[r.length]=Dr,a.set(i,r.length+1),a}function jr(e,t={}){try{if(typeof e==`string`){if(t.prefix){if(!e.startsWith(t.prefix))return{matched:!1};e=e.slice(t.prefix.length)}let n=JSON.parse(e);return br(n)?{matched:!0,message:n}:{matched:!1}}if(t.prefix){let n=Or.encode(t.prefix);for(let t=0;t<n.length;t++)if(e[t]!==n[t])return{matched:!1};e=e.subarray(n.length)}let n=e.indexOf(Dr);if(n===-1){let t=JSON.parse(kr.decode(e));return br(t)?{matched:!0,message:t}:{matched:!1}}let r=e.subarray(0,n),i=e.subarray(n+1),a=JSON.parse(kr.decode(r));return br(a)?(a.binary=i,{matched:!0,message:a}):{matched:!1}}catch{return{matched:!1}}}var Mr=0,Nr=1,Pr=class{connect;reconnectEnabled;reconnectDelay;reconnectMaxAttempt;reconnectOnCloseEnabled;reconnectOnCloseDelay;encodePeerMessageOptions;decodePeerMessageOptions;constructor(e){this.connect=e.connect,this.reconnectEnabled=e.reconnect?.enabled??!1,this.reconnectDelay=e.reconnect?.delay??(e=>e.attempt===1?0:2e3),this.reconnectMaxAttempt=e.reconnect?.maxAttempt??1/0,this.reconnectOnCloseEnabled=this.reconnectEnabled&&(e.reconnect?.onClose?.enabled??!1),this.reconnectOnCloseDelay=e.reconnect?.onClose?.delay??0,this.encodePeerMessageOptions=e.encodePeerMessage,this.decodePeerMessageOptions=e.decodePeerMessage,e.connectOnInit&&this.getConnectedPeer().catch(()=>{})}async send(e,t,n){return(await Ze(e.signal,()=>this.getConnectedPeer())).request(e)}totalAttempt=0;attempt=0;current;async getConnectedPeer(){let e=this.current,t=await e;if(t&&(!this.reconnectEnabled||t.websocket.readyState===Nr))return this.attempt=0,t.peer;if(e!==this.current)return this.getConnectedPeer();if(this.attempt>=this.reconnectMaxAttempt)throw new A(`WebSocket reconnect failed after ${this.attempt} attempt(s)`);return this.current=(async()=>{this.totalAttempt+=1,this.attempt+=1;let e={totalAttempt:this.totalAttempt,attempt:this.attempt};await ge(this.reconnectDelay(e));let t=await this.connect(e),n=new yr(async e=>{let n=await Ar(e,this.encodePeerMessageOptions);return t.send(n)}),r;return t.readyState===Mr&&(r=Ge(),t.addEventListener(`open`,()=>{r?.resolve()})),t.addEventListener(`message`,se(async e=>{let t=jr(e.data instanceof Blob?await xe(e.data):Se(e.data),this.decodePeerMessageOptions);t.matched&&Er(t.message)&&n.message(t.message)})),t.addEventListener(`close`,async e=>{r?.resolve(),this.reconnectOnCloseEnabled&&ge(this.reconnectOnCloseDelay).then(()=>this.getConnectedPeer()).catch(()=>{});let t=new A(`WebSocket closed (code ${e.code}: ${e.reason})`);await n.close(t)}),await r?.promise,r=void 0,{websocket:t,peer:n}})().catch(e=>{if(!this.reconnectEnabled)throw e}),this.getConnectedPeer()}},Fr=class extends on{constructor(e){let t=new cn(e),n=new Pr(e);super(t,n,e)}},Ir=E.string().regex(/^[A-Za-z0-9_-]{1,128}$/u),Lr=E.string().max(349528).regex(/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/u),Rr=e=>[...e].some(e=>(e.codePointAt(0)??0)<32),zr=E.object({path:E.string().min(1).max(1024).refine(e=>new TextEncoder().encode(e).byteLength<=1024,{message:`Preview path exceeds 1024 UTF-8 bytes`}),contentType:E.string().min(1).max(255).refine(e=>!/[\r\n]/u.test(e),{message:`Invalid preview content type`}),size:E.number().int().min(0).max(1048576),chunks:E.number().int().min(0).max(4),sha256:E.string().regex(/^[a-f0-9]{64}$/u)}),Br=E.object({files:E.array(zr).max(100)}).superRefine((e,t)=>{let n=new Set,r=0;for(let[i,a]of e.files.entries())(a.path.startsWith(`/`)||a.path.includes(`\\`)||a.path.split(`/`).some(e=>!e||e===`.`||e===`..`)||Rr(a.path)||n.has(a.path))&&t.addIssue({code:`custom`,message:`Invalid or duplicate preview path`,path:[`files`,i,`path`]}),a.chunks!==Math.ceil(a.size/262144)&&t.addIssue({code:`custom`,message:`Invalid preview chunk count`,path:[`files`,i,`chunks`]}),n.add(a.path),r+=a.size;n.has(`client.js`)||t.addIssue({code:`custom`,message:`Missing client.js`}),r>10485760&&t.addIssue({code:`custom`,message:`Preview build exceeds 10 MiB`})}),Vr=E.discriminatedUnion(`type`,[E.object({type:E.literal(`begin`),buildId:Ir,revision:E.number().int().positive(),manifest:Br}),E.object({type:E.literal(`chunk`),revision:E.number().int().positive(),fileIndex:E.number().int().min(0).max(99),chunkIndex:E.number().int().min(0).max(3),base64:Lr}),E.object({type:E.literal(`complete`),revision:E.number().int().positive()}),E.object({type:E.literal(`ended`)})]);E.object({sessionId:E.uuid(),expiresAt:E.string().min(1),websocketUrl:E.url(),token:E.string().min(1)});var Hr=E.object({manifest:Br}),Ur=E.object({buildId:Ir,fileIndex:E.number().int().min(0).max(99),chunkIndex:E.number().int().min(0).max(3),base64:Lr}),Wr=E.object({buildId:Ir}),Gr=E.object({accepted:E.literal(!0)}),Kr=E.object({revision:E.number().int().positive()});function qr(e){let t=Xt(new Fr({connect:()=>e}));return{beginBuild:async e=>Wr.parse(await t.beginBuild(Hr.parse(e))),uploadChunk:async e=>Gr.parse(await t.uploadChunk(Ur.parse(e))),commitBuild:async e=>Kr.parse(await t.commitBuild({buildId:Ir.parse(e.buildId)})),heartbeat:async()=>Gr.parse(await t.heartbeat()),subscribe:async()=>{let e=await t.subscribe();return(async function*(){for await(let t of e)yield Vr.parse(t)})()}}}function Jr(e){let t=URL.canParse(e.url)?new URL(e.url):void 0;return Xt(new fn({origin:t?.origin,async fetch(t,n){let r=await(typeof e.headers==`function`?e.headers():e.headers),i=new Headers(r);return new Headers(n.headers).forEach((e,t)=>{i.set(t,e)}),(e.fetch??fetch)(t,{...n,headers:i})},url:t?`${t.pathname}${t.search}${t.hash}`:e.url}))}var Yr=32,Xr=64,Zr=255,Qr=16,$r=100,ei=16384,ti=512,ni=/^[A-Za-z][A-Za-z0-9_-]{0,63}$/u;function ri(e){if(!ni.test(e))throw TypeError(`TailorKit scope names must start with a letter and contain only letters, numbers, "_", or "-".`);return e}function ii(e){if(!li(e))throw TypeError(`TailorKit scope values must be nonempty plain JSON objects.`);let t=0,n=si(e,0,!0,new Set,()=>{if(t+=1,t>ti)throw TypeError(`TailorKit scope values may contain at most ${ti} JSON values.`)}),r=JSON.stringify(n);if(r===void 0||new TextEncoder().encode(r).byteLength>ei)throw TypeError(`TailorKit scope values may not exceed ${ei} bytes of JSON.`);return n}function ai(e){if(!li(e))throw TypeError(`TailorKit scope identity must contain a name and value.`);if(ci(e,`TailorKit scope identity must contain data properties.`).length!==2||!Object.hasOwn(e,`name`)||!Object.hasOwn(e,`value`))throw TypeError(`TailorKit scope identity must contain only a name and value.`);let t=Object.getOwnPropertyDescriptor(e,`name`)?.value,n=Object.getOwnPropertyDescriptor(e,`value`)?.value;if(typeof t!=`string`)throw TypeError(`TailorKit scope identity must contain a name and value.`);return ri(t),{name:t,value:ii(n)}}function oi(e,t){let n=t??Object.keys(e);if(n.length===0)throw TypeError(`At least one TailorKit scope must be selected.`);let r=[],i=new Set;for(let t of n){if(ri(t),i.has(t))continue;if(i.add(t),!Object.hasOwn(e,t))throw TypeError(`TailorKit scope "${t}" is not available for this request.`);let n=e[t];if(!n)throw TypeError(`TailorKit scope "${t}" is not available for this request.`);r.push({name:t,value:n})}if(r.length===0)throw TypeError(`At least one TailorKit scope must be selected.`);return r}function si(e,t,n,r,i){if(i(),e===null||typeof e==`boolean`||typeof e==`string`){if(typeof e==`string`&&e.length>Zr)throw TypeError(`TailorKit scope strings may not exceed ${Zr} characters.`);return e}if(typeof e==`number`){if(!Number.isFinite(e)||Number.isInteger(e)&&!Number.isSafeInteger(e))throw TypeError(`TailorKit scope numbers must be finite and safe when integral.`);if(Object.is(e,-0))throw TypeError(`TailorKit scope numbers may not be negative zero.`);return e}if(typeof e!=`object`)throw TypeError(`TailorKit scope values must contain only JSON values.`);if(t>Qr)throw TypeError(`TailorKit scope values may be nested at most ${Qr} levels deep.`);if(r.has(e))throw TypeError(`TailorKit scope values may not contain cycles.`);if(r.add(e),Array.isArray(e)){if(Object.getPrototypeOf(e)!==Array.prototype)throw TypeError(`TailorKit scope arrays must be standard arrays.`);if(e.length>$r)throw TypeError(`TailorKit scope arrays may contain at most ${$r} items.`);let n=Reflect.ownKeys(e);if(n.length!==e.length+1||!n.includes(`length`)||n.some(e=>typeof e!=`string`))throw TypeError(`TailorKit scope arrays must be dense and have no extra properties.`);let a=[];for(let n=0;n<e.length;n+=1){let o=Object.getOwnPropertyDescriptor(e,String(n));if(!o?.enumerable||!(`value`in o))throw TypeError(`TailorKit scope arrays must contain enumerable data items.`);a.push(si(o.value,t+1,!1,r,i))}return r.delete(e),Object.freeze(a)}if(!li(e))throw TypeError(`TailorKit scope objects must be plain JSON objects.`);let a=ci(e,`TailorKit scope objects must contain data properties.`);if(n&&a.length===0)throw TypeError(`TailorKit scope values must be nonempty plain JSON objects.`);if(a.length>Yr)throw TypeError(`TailorKit scope objects may contain at most ${Yr} properties.`);let o=Object.fromEntries(a.sort(([e],[t])=>ui(e,t)).map(([e,n])=>[e,si(n,t+1,!1,r,i)]));return r.delete(e),Object.freeze(o)}function ci(e,t){let n=Reflect.ownKeys(e);if(n.some(e=>typeof e!=`string`))throw TypeError(t);let r=[];for(let i of n){if(i===`__proto__`)throw TypeError(`TailorKit scope property names may not be "__proto__".`);if(i.length===0||i.length>Xr)throw TypeError(`TailorKit scope property names must be 1 to ${Xr} characters.`);let n=Object.getOwnPropertyDescriptor(e,i);if(!n?.enumerable||!(`value`in n))throw TypeError(t);r.push([i,n.value])}return r}function li(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function ui(e,t){return e<t?-1:+(e>t)}var di=E.string().regex(/^[A-Za-z0-9_-]{43}$/u);E.array(di).max(20),E.enum([`accept`,`cancel`]);var W=fr.$context();function fi(e){if(!e.tailorkit)throw new z(`UNAUTHORIZED`,{message:`Unauthorized.`});return e.tailorkit}function G(e,t){let n=fi(e).scopes,r=t===void 0?Object.keys(n):[t];if(r.length!==1)throw new z(`BAD_REQUEST`,{message:`Choose one TailorKit scope for this operation.`});try{return oi(n,r)[0]}catch(e){throw new z(`BAD_REQUEST`,{message:e instanceof Error?e.message:`Invalid TailorKit scope selection.`})}}function pi(e,t){try{return oi(fi(e).scopes,t)}catch(e){throw new z(`BAD_REQUEST`,{message:e instanceof Error?e.message:`Invalid TailorKit scope selection.`})}}function mi(e){let[t,n]=e.headers.get(`authorization`)?.split(` `)??[];if(t!==`Bearer`||!n)throw new z(`UNAUTHORIZED`,{message:`Missing CLI deploy token.`});return n}var K=W.middleware(async({context:e,next:t})=>{let n=await rr({body:{deployToken:mi(e.request)},client:e.platform,headers:e.platformHeaders}),r=`data`in n?n.data:n;if(!r?.scope)throw new z(`UNAUTHORIZED`,{message:`Invalid CLI deploy token.`});let i;try{let t=ai(r.scope);if(!Object.hasOwn(e.scopeSchemas,t.name))throw TypeError(`CLI token uses an undeclared scope.`);i=Object.freeze({[t.name]:t.value})}catch{throw new z(`UNAUTHORIZED`,{message:`Invalid CLI deploy token.`})}return t({context:{tailorkit:{scopes:i}}})}),hi=W.middleware(async({context:e,next:t})=>{let n=await e.authenticate({request:e.request});if(!n)throw new z(`UNAUTHORIZED`,{message:`Unauthorized.`});return t({context:{tailorkit:n}})}),gi=async(e,t)=>{if(e===void 0)return t;let n=await e[`~standard`].validate(t);if(`issues`in n)throw new z(`BAD_REQUEST`,{message:`Invalid TailorKit payload`});return n.value};W.use(hi).input(E.object({input:E.unknown().optional(),path:E.string()})).handler(async({context:e,input:t})=>{let n=e.actions.get(t.path);if(n===void 0)throw new z(`NOT_FOUND`,{message:`Action not found`});let r=await gi(n.definition.input,t.input),i=await n.handler({context:fi(e).actionContext,input:r});return gi(n.definition.output,i)});var _i=E.object({page:E.number().int().min(1).optional(),pageSize:E.number().int().min(1).max(100).optional()}),vi=E.object({description:E.string().nullable(),name:E.string()});W.use(K).input(vi).handler(async({context:e,input:t})=>await Yn({body:{...t,scope:G(e)},client:e.platform,headers:e.platformHeaders})),W.use(K).input(E.object({appId:E.string()})).handler(async({context:e,input:t})=>await Xn({body:{scope:G(e)},client:e.platform,headers:e.platformHeaders,path:{appId:t.appId}})),W.use(K).input(E.object({appId:E.string(),deploymentId:E.string()})).handler(async({context:e,input:t})=>await Qn({body:{deploymentId:t.deploymentId,scope:G(e)},client:e.platform,headers:e.platformHeaders,path:{appId:t.appId}})),W.use(K).input(E.object({appId:E.string(),scopes:E.array(E.string()).optional()})).handler(async({context:e,input:t})=>await Jn({body:{scopes:pi(e,t.scopes)},client:e.platform,headers:e.platformHeaders,path:{appId:t.appId}})),W.use(K).input(_i.extend({scopes:E.array(E.string()).optional()}).optional()).handler(async({context:e,input:t})=>await qn({client:e.platform,headers:e.platformHeaders,body:{page:t?.page,pageSize:t?.pageSize,scopes:pi(e,t?.scopes)}})),W.use(K).input(E.object({appId:E.string()}).extend(vi.shape)).handler(async({context:e,input:t})=>await Zn({body:{description:t.description,name:t.name,scope:G(e)},client:e.platform,headers:e.platformHeaders,path:{appId:t.appId}}));var yi=async e=>{try{return await e}catch(e){throw typeof e==`string`&&e.toLowerCase()===`unauthorized`?new z(`UNAUTHORIZED`,{message:`TailorKit platform rejected the host project key. Check TAILORKIT_PROJECT_KEY.`}):e}};W.use(hi).input(E.object({scope:E.string().min(1),userCode:E.string().min(1)})).handler(async({context:e,input:t})=>await yi($n({body:{scope:G(e,t.scope),userCode:t.userCode},client:e.platform,headers:e.platformHeaders}))),W.use(hi).input(E.object({userCode:E.string().min(1)})).handler(async({context:e,input:t})=>await yi(er({body:{userCode:t.userCode},client:e.platform,headers:e.platformHeaders}))),W.input(E.object({deviceCode:E.string().min(1)})).handler(async({context:e,input:t})=>await yi(tr({body:{deviceCode:t.deviceCode},client:e.platform,headers:e.platformHeaders}))),W.input(E.object({})).handler(async({context:e})=>await yi(nr({body:{},client:e.platform,headers:e.platformHeaders}))),W.input(E.object({})).use(K).handler(({context:e})=>({scope:G(e)}));var bi=E.object({page:E.number().int().min(1).optional(),pageSize:E.number().int().min(1).max(100).optional()}),xi=E.object({checksum:E.string(),contentLength:E.number().int().min(1),contentType:E.literal(`application/javascript`),encoding:E.literal(`utf-8`),objectKey:E.literal(`client.js`)}),Si=xi.extend({objectKey:E.literal(`server.js`)}),Ci=E.object({checksum:E.string(),contentLength:E.number().int().min(1).max(262144),contentType:E.enum([`image/svg+xml`,`image/png`,`image/webp`])}),wi=E.tuple([xi]),Ti=E.object({dark:Ci.optional(),light:Ci.optional()}).optional(),Ei=e=>{if(e instanceof Error)return e.message;if(typeof e==`string`)return e;if(e&&typeof e==`object`&&`message`in e){let t=e.message;return typeof t==`string`?t:void 0}},Di=e=>Ei(e)?.toLowerCase().includes(`not found`)??!1,Oi=e=>{throw Di(e)?new z(`NOT_FOUND`,{message:`App not found.`}):e};W.use(K).input(E.object({appId:E.string(),assets:wi,server:Si.optional(),logos:Ti})).handler(async({context:e,input:t})=>{try{return await or({body:{appId:t.appId,assets:t.assets,server:t.server,logos:t.logos,scope:G(e)},client:e.platform,headers:e.platformHeaders})}catch(e){Oi(e)}}),W.use(K).input(E.object({deploymentId:E.string(),scopes:E.array(E.string()).optional()})).handler(async({context:e,input:t})=>await ar({body:{scopes:pi(e,t.scopes)},client:e.platform,headers:e.platformHeaders,path:{deploymentId:t.deploymentId}})),W.use(K).input(E.object({appId:E.string(),scopes:E.array(E.string()).optional()}).merge(bi)).handler(async({context:e,input:t})=>await ir({client:e.platform,headers:e.platformHeaders,body:{appId:t.appId,page:t.page,pageSize:t.pageSize,scopes:pi(e,t.scopes)}})),W.use(K).input(E.object({deploymentId:E.string(),rollout:E.boolean().optional()})).handler(async({context:e,input:t})=>await sr({body:{scope:G(e),rollout:t.rollout},client:e.platform,headers:e.platformHeaders,path:{deploymentId:t.deploymentId}}));function ki(e){if(!e||typeof e!=`object`)return!1;if(`data`in e&&e.data&&typeof e.data==`object`&&`reason`in e.data&&e.data.reason===`ACTIVE_PREVIEW_EXISTS`)return!0;let t=`message`in e&&typeof e.message==`string`?e.message:``;return/active preview already exists|preview is already running/iu.test(t)?!0:`error`in e&&ki(e.error)||`cause`in e&&ki(e.cause)}W.use(K).input(E.object({appId:E.string().min(1),replaceActive:E.boolean().optional()})).handler(async({context:e,input:t})=>{try{return await cr({body:{appId:t.appId,deployToken:mi(e.request),replaceActive:t.replaceActive},client:e.platform,headers:e.platformHeaders})}catch(e){throw ki(e)?new z(`CONFLICT`,{message:"A preview is already running for this app. Run `pnpm tailorkit preview --replace` to end it and start a new one."}):e}}),W.use(K).input(E.object({sessionId:E.uuid()})).handler(async({context:e,input:t})=>await lr({body:{deployToken:mi(e.request)},client:e.platform,headers:e.platformHeaders,path:{sessionId:t.sessionId}}));var Ai=e=>{let t=new URL(e);return t.hash=``,t.search=``,t.pathname=t.pathname.replace(/\/+$/u,``),t.toString().replace(/\/$/u,``)},ji=E.object({name:E.string().min(1),value:E.record(E.string(),E.unknown())}),Mi=E.record(E.string(),E.string()),Ni=E.preprocess(e=>typeof e==`object`&&e&&!Array.isArray(e)&&!Object.hasOwn(e,`value`)&&Mi.safeParse(e).success?void 0:e,ji.optional()),Pi=T.join(w(),`.tailorkit`,`auth.json`),Fi=18e5,Ii=2e3,Li=E.object({deployToken:E.string().min(1),scope:Ni}),Ri=E.object({deployToken:E.string().min(1),scope:ji}),zi=E.object({scope:ji}),Bi=E.object({hosts:E.record(E.string(),Li).optional()}).passthrough(),Vi=e=>new Promise(t=>setTimeout(t,e)),Hi=e=>{if(e&&typeof e==`object`&&`error`in e&&e.error!==void 0)throw e.error},Ui=async()=>{try{return Bi.parse(JSON.parse(await v(Pi,`utf-8`)))}catch(e){if(e&&typeof e==`object`&&`code`in e&&e.code===`ENOENT`)return{};throw e}},Wi=async e=>{await g(T.dirname(Pi),{recursive:!0}),await C(Pi,`${JSON.stringify(e,null,2)}\n`,{encoding:`utf-8`,mode:384}),await h(Pi,384)},Gi=async e=>{let t=await te(e.configPath,e.cwd);if(t.config.host)return Ai(t.config.host);throw Error(`Missing TailorKit host URL. Set host in tailorkit.config.ts.`)},Ki=(e,t)=>{let n=new URL(e);return n.pathname=`${n.pathname.replace(/\/+$/u,``)}/cli-auth/approve`,n.search=``,n.searchParams.set(`code`,t),n.hash=``,n.toString()},qi=class extends Error{constructor(e){super(`Not logged in for ${e}. Run tailorkit login after checking host in tailorkit.config.ts.`),this.name=`NotLoggedInError`}},Ji=async(e,t)=>{let n=await Ui();await Wi({...n,hosts:{...n.hosts,[e]:t}})},Yi=async e=>{let t=await Ui();if(!t.hosts?.[e])return!1;let{[e]:n,...r}=t.hosts,i={...t,hosts:r};return Object.keys(r).length===0?(await x(Pi,{force:!0}),!0):(await Wi(i),!0)},Xi=async e=>(await Ui()).hosts?.[e],Zi=async(e,t)=>{let n=await Gi(e),r=Jr({url:n}),i=await r.cliAuth.start({});Hi(i);let a=`data`in i?i.data:i,o=new Date(a.expiresAt),s=Date.now()+(e.timeout??Fi);for(t({expiresAt:o,hostUrl:n,userCode:a.userCode});Date.now()<s&&Date.now()<o.getTime();){await Vi(Ii);let e=await r.cliAuth.poll({deviceCode:a.deviceCode});Hi(e);let t=`data`in e?e.data:e;switch(t.status){case`pending`:continue;case`denied`:throw Error(`CLI login was denied.`);case`expired`:throw Error(`CLI login expired.`);case`approved`:{let e=Ri.parse(t);return await Ji(n,{deployToken:e.deployToken,scope:e.scope}),{hostUrl:n,scope:e.scope}}default:throw Error(`Unexpected CLI login status.`)}}throw Error(`Timed out waiting for CLI login approval.`)},Qi=async e=>{let t=await Gi(e),n=await Xi(t);if(!n?.deployToken)throw new qi(t);let r=Jr({headers:{authorization:`Bearer ${n.deployToken}`},url:t}),i;try{let e=await r.cliAuth.verifyToken({});Hi(e),i=zi.parse(`data`in e?e.data:e)}catch(e){throw typeof e==`object`&&e&&`code`in e&&e.code===`UNAUTHORIZED`?new qi(t):e}return await Ji(t,{deployToken:n.deployToken,scope:i.scope}),{hostUrl:t,scope:i.scope}},$i=async e=>{let t=await Gi(e);return{hostUrl:t,removed:await Yi(t)}},ea=1048576,ta=ae(O),na={png:`image/png`,svg:`image/svg+xml`,webp:`image/webp`},ra=e=>{if(e&&typeof e==`object`&&`error`in e&&e.error!==void 0)throw e.error;let t=e&&typeof e==`object`&&`data`in e?e.data:e;return t&&typeof t==`object`&&`body`in t?t.body:t},ia=e=>{if(e instanceof Error)return e.message;if(typeof e==`string`)return e;if(e&&typeof e==`object`&&`message`in e){let t=e.message;return typeof t==`string`?t:void 0}},aa=e=>ia(e)?.toLowerCase().includes(`not found`)??!1,oa=async(e,t)=>{let n=T.join(e,`tailorkit-upload.json`);return t.parse(JSON.parse(await v(n,`utf-8`)))},sa=e=>D(`sha256`).update(e).digest(`hex`),ca=async e=>{try{let t=JSON.parse(await v(T.join(e,`package.json`),`utf-8`));if(typeof t.name==`string`&&t.name.trim())return t.name.trim()}catch{}return T.basename(e)},la=async(e,t)=>{let n=await v(e,`utf-8`),r=` appId: ${JSON.stringify(t)},`;if(/^\s*appId\s*:/mu.test(n)){await C(e,n.replace(/^(\s*)appId\s*:\s*(['"]).*?\2\s*,?/mu,`$1appId: ${JSON.stringify(t)},`),`utf-8`);return}let i=/(export\s+default\s+\{)(\r?\n)/u;if(i.test(n)){await C(e,n.replace(i,`$1$2${r}$2`),`utf-8`);return}let a=/(export\s+default\s+(?:defineTailorKitConfig|defineConfig)\(\s*\{)(\r?\n)/u;if(a.test(n)){await C(e,n.replace(a,`$1$2${r}$2`),`utf-8`);return}let{parseSync:o}=await import(`vite`),{program:s}=o(e,n),c=s.body.find(e=>e.type===`ExportDefaultDeclaration`);if(c?.declaration.type===`Identifier`){let t=c.declaration.name,i=s.body.filter(e=>e.type===`VariableDeclaration`).flatMap(e=>e.declarations).find(e=>e.id.type===`Identifier`&&e.id.name===t)?.init;for(;i?.type===`TSSatisfiesExpression`||i?.type===`TSAsExpression`;)i=i.expression;if(i?.type===`ObjectExpression`){let t=n.slice(i.start),a=/^(\{)(\r?\n)/u;if(a.test(t)){await C(e,n.slice(0,i.start)+t.replace(a,`$1$2${r}$2`),`utf-8`);return}}}throw Error(`Could not write appId to ${e}. Add appId: ${JSON.stringify(t)} manually.`)},ua=async(e,t)=>{if(!e.uploadUrl)return;if(t.byteLength>ea)throw Error(`Deployment asset exceeds ${ea} bytes.`);let n=new Headers(e.headers);n.has(`content-type`)||n.set(`content-type`,`application/javascript`);let r=await fetch(e.uploadUrl,{body:new Uint8Array(t),headers:n,method:`PUT`});if(!r.ok)throw Error(`Asset upload failed with ${r.status} ${r.statusText}.`)},da=e=>{for(let t of[`tsconfig.json`,`jsconfig.json`]){let n=T.join(e,t);if(ie(n))return n}},fa=async e=>{let t=da(e.root);if(!t)return;let n=r(T.join(e.root,`package.json`)),i;try{i=T.join(T.dirname(n.resolve(`typescript/package.json`)),`bin/tsc`)}catch{return}let a=T.resolve(e.root,e.config.client?.entry??`src/client.ts`),o=await _(T.join(e.root,`.tailorkit-typecheck-`));try{let n=T.join(o,`tsconfig.json`);await C(n,JSON.stringify({extends:t,compilerOptions:{noEmit:!0,incremental:!1,composite:!1},files:[a,...e.config.server?[T.resolve(e.root,e.config.server.entry??`src/server.ts`)]:[]],include:[]})),await ae(ne)(process.execPath,[i,`--noEmit`,`--project`,n,`--pretty`,`false`],{cwd:e.root,maxBuffer:4194304})}catch(t){let n=t;return{command:`tsc --noEmit ${T.relative(e.root,a)}`,exitCode:typeof n.code==`number`?n.code:null,output:`${n.stdout??``}${n.stderr??``}`.trim()||n.message||String(t)}}finally{await x(o,{recursive:!0,force:!0})}},pa=async e=>{let t=await te(e.configPath,e.cwd),n=t.config.appId,r=!1,i=await Qi(e).catch(t=>{if(t instanceof qi&&e.onLoginRequired)return e.onLoginRequired();throw t}),a=await Xi(i.hostUrl);if(!a?.deployToken)throw Error(`Not logged in for ${i.hostUrl}. Run tailorkit login after checking host in tailorkit.config.ts.`);let{buildApp:o,tailorkitUploadManifestSchema:s}=await import(`@tailorkit/app/builder`),[c,l]=await Promise.allSettled([o(e),fa(t)]);if(c.status===`rejected`)throw c.reason;if(l.status===`rejected`)throw l.reason;if(l.value!==void 0&&!await e.onTypecheckFailed?.(l.value))throw Error(`Deployment cancelled because type check failed.`);let u=T.resolve(t.root,e.outDir??t.config.build?.outDir??`.tailorkit`),d=await oa(u,s),f=T.join(u,d.assets.client),p=await v(f),m=await ta(p),h=d.assets.server?await v(T.join(u,d.assets.server)):void 0,g=Object.entries(d.assets.logos??{}),_=await Promise.all(g.map(async([e,t])=>{let n=await v(T.join(u,t)),r=na[T.extname(t).slice(1)];if(!r)throw Error(`Unsupported ${e} logo format.`);return{content:n,contentType:r,filename:t,variant:e}}));if(p.byteLength>ea)throw Error(`Combined client assets are ${p.byteLength} bytes and cannot exceed ${ea} bytes.`);let y=Jr({headers:{authorization:`Bearer ${a.deployToken}`},url:i.hostUrl}),b=async a=>{let o=await ca(t.root);if(!await e.onMissingAppId?.({appName:o,configPath:t.filepath,hostUrl:i.hostUrl,reason:a}))throw Error(`Deployment cancelled.`);return n=ra(await y.apps.create({description:null,name:o})).id,r=!0,await la(t.filepath,n),n};n||=await b(`missing`);let x=async e=>ra(await y.deployments.create({appId:e,assets:[{checksum:sa(p),contentLength:p.byteLength,contentType:`application/javascript`,encoding:`utf-8`,objectKey:`client.js`}],server:h?{checksum:sa(h),contentLength:h.byteLength,contentType:`application/javascript`,encoding:`utf-8`,objectKey:`server.js`}:void 0,logos:_.length>0?Object.fromEntries(_.map(e=>[e.variant,{checksum:sa(e.content),contentLength:e.content.byteLength,contentType:e.contentType}])):void 0})),S;try{S=await x(n)}catch(e){if(!aa(e))throw e;n=await b(`not-found`),S=await x(n)}if(S.assets.length!==1||!S.assets[0])throw Error(`Deployment did not return an upload URL for the client asset.`);if(h&&!S.server)throw Error(`Deployment did not return an upload URL for the server asset.`);await Promise.all([...h&&S.server?[ua(S.server,h)]:[],ua(S.assets[0],p),..._.map(e=>{let t=S.logos?.[e.variant];if(!t)throw Error(`Deployment did not return an upload URL for the ${e.variant} logo.`);return ua(t,e.content)})]);let C=ra(await y.deployments.publish({deploymentId:S.deployment.id,rollout:!0})),w=await Promise.all(_.map(async e=>({gzipSize:(await ta(e.content)).byteLength,path:e.filename,size:e.content.byteLength}))),ee=[];if(h&&d.assets.server){let e=await ta(h);ee.push({gzipSize:e.byteLength,path:d.assets.server,size:h.byteLength})}return{appId:n,createdApp:r,deploymentId:C.id,hostUrl:i.hostUrl,status:C.status,uploadedFiles:[{gzipSize:m.byteLength,path:d.assets.client,size:p.byteLength},...ee,...w]}};function ma(e,t){return e===`/`||e===t||t.startsWith(`${e}/`)}var ha=E.enum([`object`,`array`,`string`,`number`,`integer`,`boolean`,`null`]),q=E.object({$schema:E.enum([`https://json-schema.org/draft/2020-12/schema`]).optional(),type:E.union([ha,E.array(E.string())]).optional(),properties:E.lazy(()=>E.record(E.string(),q)).optional(),required:E.array(E.string()).optional(),additionalProperties:E.union([E.boolean(),E.lazy(()=>q)]).optional(),enum:E.array(E.unknown()).optional(),const:E.unknown().optional(),items:E.union([E.boolean(),E.lazy(()=>q)]).optional(),prefixItems:E.lazy(()=>E.array(q)).optional(),minItems:E.number().int().nonnegative().optional(),maxItems:E.number().int().nonnegative().optional(),propertyNames:E.lazy(()=>q).optional(),minimum:E.number().optional(),maximum:E.number().optional(),anyOf:E.lazy(()=>E.array(q)).optional(),oneOf:E.lazy(()=>E.array(q)).optional(),allOf:E.lazy(()=>E.array(q)).optional(),not:E.lazy(()=>q).optional()}).strict(),ga=E.object({async:E.boolean().optional(),input:q.optional(),output:q.optional()}),_a=E.object({fields:q.optional(),callbacks:E.record(E.string(),ga),children:E.boolean()}),va=E.record(E.string(),_a),ya=E.string().regex(/^\/.*$/u,{message:`View keys must start with "/".`}),ba=E.object({context:q.optional(),contextOptional:E.boolean().optional()}).strict(),xa=E.record(ya,ba),Sa=E.object({input:E.record(E.string(),E.unknown()).optional(),output:E.record(E.string(),E.unknown()).optional()}),Ca=E.lazy(()=>E.record(E.string(),E.union([Sa,Ca])));E.object({version:E.literal(1),slots:E.record(E.string().min(1),E.object({views:E.array(E.string().startsWith(`/`))})).default({}),actions:Ca.default({}),components:va,views:xa.default({})}).superRefine((e,t)=>{for(let[n,r]of Object.entries(e.slots))r.views.forEach((r,i)=>{Object.hasOwn(e.views,r)||t.addIssue({code:`custom`,path:[`slots`,n,`views`,i],message:`Unknown view "${r}".`})})});var wa=`/* eslint-disable */
16
16
 
17
17
  // This file was automatically generated by TailorKit.
18
18
  // Documentation: https://tailorkit.dev/docs
@@ -21,16 +21,16 @@ data: `)}
21
21
  // Exclude this file from linting and formatting to avoid checking generated code.
22
22
 
23
23
  import { createRemoteComponent } from "tailorkit/client";
24
- `,Ta=`Record<string, never>`,Ea=new Set([`Box`,`Flex`,`Grid`,`Inline`]),J=e=>JSON.stringify(e),Y=e=>/^[A-Za-z_$][A-Za-z0-9_$]*$/u.test(e)?e:J(e),Da=e=>typeof e==`string`?J(e):typeof e==`number`||typeof e==`boolean`||e===null?JSON.stringify(e):`unknown`,X=(e,t=0)=>{if(e===void 0)return`unknown`;if(Oa(e))return`never`;if(e.const!==void 0)return Da(e.const);if(e.enum!==void 0&&e.enum.length>0)return e.enum.map(Da).join(` | `);if(e.anyOf!==void 0&&e.anyOf.length>0){let n=e.anyOf.filter(e=>!Oa(e)).map(e=>X(e,t)).filter(e=>e!==`never`);return n.length===0?`never`:[...new Set(n)].join(` | `)}let n=Array.isArray(e.type)?e.type[0]:e.type;return n===`string`?`string`:n===`number`||n===`integer`?`number`:n===`boolean`?`boolean`:n===`array`?`${X(e.items,t)}[]`:n===`object`?Aa(e,t):`unknown`},Oa=e=>e.not!==void 0&&Object.keys(e.not).length===0,ka=e=>{let t=e.properties??{},n=Object.values(t);return(Array.isArray(e.type)?e.type.includes(`object`):e.type===`object`)&&n.length>0&&n.every(Oa)},Aa=(e,t)=>{let n=e.properties??{},r=Object.entries(n);if(ka(e))return`never`;if(r.length===0)return Ta;let i=new Set(e.required),a=` `.repeat(t),o=` `.repeat(t+2),s=[`{`];for(let[e,n]of r){let r=i.has(e)?``:`?`;s.push(`${o}${Y(e)}${r}: ${X(n,t+2)};`)}return s.push(`${a}}`),s.join(`
25
- `)},ja=e=>{let t=e.replaceAll(/[^A-Za-z0-9_$]/gu,`_`);return/^[A-Za-z_$]/u.test(t)?t:`_${t}`},Ma=e=>`${ja(e)}Props`,Na=e=>{let t=ja(e);return`${t.charAt(0).toUpperCase()}${t.slice(1)}`},Pa=e=>{if(e.fields?.properties!==void 0)return e.fields.properties;let t={};for(let n of e.fieldKeys??[])t[n]={};return t},Fa=(e,t)=>{if(e?.anyOf===void 0||e.anyOf.length!==2)return;let[n,r]=e.anyOf.filter(e=>!Oa(e));if(n===void 0||r===void 0)return;let i,a;if(n.type===`object`?(i=r,a=n):r.type===`object`&&(i=n,a=r),i===void 0||a===void 0)return;let o=X(i,t);if(o===`never`)return`never`;let s=Object.values(a.properties??{});if(s.length!==0&&!s.map(e=>X(e,t)).some(e=>e!==o&&e!==`never`))return`Responsive<${o}>`},Ia=(e,t)=>Fa(e,t)??X(e,t),La=e=>{let t={},n=new Map,r=new Set;for(let[i,a]of Object.entries(e))if(Ea.has(i))for(let[e,i]of Object.entries(Pa(a))){let a=Na(e),o=Ia(i,0),s=n.get(a);if(s===void 0){n.set(a,o),t[e]=a;continue}s!==o&&r.add(a)}return Object.fromEntries(Object.entries(t).filter(([,e])=>!r.has(e)))},Ra=(e,t)=>{let n=[`export type Breakpoint = "base" | "sm" | "md" | "lg" | "xl" | "2xl";`,`export type Responsive<TValue> = TValue | Partial<Record<Breakpoint, TValue>>;`],r=new Set;for(let[i,a]of Object.entries(e))if(Ea.has(i))for(let[e,i]of Object.entries(Pa(a))){let a=t[e];a===void 0||r.has(a)||(r.add(a),n.push(`export type ${a} = ${Ia(i,0)};`))}return n.join(`
26
- `)},za=e=>{let t=[`export interface ViewPropsByPath {`];for(let n of Object.keys(e)){let r=Object.entries(e).filter(([e])=>ma(e,n)).filter(([,e])=>e.context!==void 0).map(([,e])=>{let t=X(e.context,4);return e.contextOptional?`Partial<${t}>`:t}).filter(e=>e!==`Record<string, never>`),i=(r.length>1?r.map(e=>`(${e})`).join(` & `):r[0]??`Record<string, never>`).split(`
24
+ `,Ta=`Record<string, never>`,Ea=new Set([`Box`,`Flex`,`Grid`,`Inline`]),J=e=>JSON.stringify(e),Y=e=>/^[A-Za-z_$][A-Za-z0-9_$]*$/u.test(e)?e:J(e),Da=e=>typeof e==`string`?J(e):typeof e==`number`||typeof e==`boolean`||e===null?JSON.stringify(e):`unknown`,X=(e,t=0)=>{if(e===void 0)return`unknown`;if(ka(e))return`never`;if(e.const!==void 0)return Da(e.const);if(e.enum!==void 0&&e.enum.length>0)return e.enum.map(Da).join(` | `);if(e.allOf!==void 0&&e.allOf.length>0){let n=e.allOf.map(e=>X(e,t));return[...new Set(n)].map(e=>e.includes(` | `)?`(${e})`:e).join(` & `)}let n=e.anyOf??e.oneOf;if(n!==void 0&&n.length>0){let e=n.filter(e=>!ka(e)).map(e=>X(e,t)).filter(e=>e!==`never`);return e.length===0?`never`:[...new Set(e)].join(` | `)}if(Array.isArray(e.type)){let n=e.type.map(n=>X({...e,type:n},t));return[...new Set(n)].join(` | `)||`never`}let r=e.type;if(r===`null`)return`null`;if(r===`string`)return`string`;if(r===`number`||r===`integer`)return`number`;if(r===`boolean`)return`boolean`;if(r===`array`){let n=typeof e.items==`object`?e.items:void 0;if(e.prefixItems!==void 0){let r=e.prefixItems.map((n,r)=>{let i=X(n,t);return r<(e.minItems??0)?i:`(${i})?`}),i=(e.minItems??0)-e.prefixItems.length;if(i>0&&e.items===!1)return`never`;for(let e=0;e<i;e+=1)r.push(X(n,t));return e.items!==!1&&r.push(`...${Oa(X(n,t))}`),`[${r.join(`, `)}]`}return Oa(e.items===!1?`never`:X(n,t))}return r===`object`?ja(e,t):`unknown`},Oa=e=>`${e.includes(` | `)||e.includes(` & `)?`(${e})`:e}[]`,ka=e=>e.not!==void 0&&Object.keys(e.not).length===0,Aa=e=>{let t=e.properties??{},n=Object.values(t);return(Array.isArray(e.type)?e.type.includes(`object`):e.type===`object`)&&n.length>0&&n.every(ka)},ja=(e,t)=>{let n=e.properties??{},r=Object.entries(n);if(Aa(e))return`never`;let i=new Set(e.required),a=X(e.additionalProperties===!0?void 0:e.additionalProperties||void 0,t),o=[a];if(a!==`unknown`)for(let[e,n]of r)o.push(X(n,t)),i.has(e)||o.push(`undefined`);let s=e.additionalProperties===!1||e.additionalProperties===void 0?void 0:`Record<string, ${[...new Set(o)].join(` | `)}>`;if(r.length===0)return s??Ta;let c=` `.repeat(t),l=` `.repeat(t+2),u=[`{`];for(let[e,n]of r){let r=i.has(e)?``:`?`;u.push(`${l}${Y(e)}${r}: ${X(n,t+2)};`)}u.push(`${c}}`);let d=u.join(`
25
+ `);return s===void 0?d:`${d} & ${s}`},Ma=e=>{let t=e.replaceAll(/[^A-Za-z0-9_$]/gu,`_`);return/^[A-Za-z_$]/u.test(t)?t:`_${t}`},Na=e=>`${Ma(e)}Props`,Pa=e=>{let t=Ma(e);return`${t.charAt(0).toUpperCase()}${t.slice(1)}`},Fa=e=>{if(e.fields?.properties!==void 0)return e.fields.properties;let t={};for(let n of e.fieldKeys??[])t[n]={};return t},Ia=(e,t)=>{if(e?.anyOf===void 0||e.anyOf.length!==2)return;let[n,r]=e.anyOf.filter(e=>!ka(e));if(n===void 0||r===void 0)return;let i,a;if(n.type===`object`?(i=r,a=n):r.type===`object`&&(i=n,a=r),i===void 0||a===void 0)return;let o=X(i,t);if(o===`never`)return`never`;let s=Object.values(a.properties??{});if(s.length!==0&&!s.map(e=>X(e,t)).some(e=>e!==o&&e!==`never`))return`Responsive<${o}>`},La=(e,t)=>Ia(e,t)??X(e,t),Ra=e=>{let t={},n=new Map,r=new Set;for(let[i,a]of Object.entries(e))if(Ea.has(i))for(let[e,i]of Object.entries(Fa(a))){let a=Pa(e),o=La(i,0),s=n.get(a);if(s===void 0){n.set(a,o),t[e]=a;continue}s!==o&&r.add(a)}return Object.fromEntries(Object.entries(t).filter(([,e])=>!r.has(e)))},za=(e,t)=>{let n=[`export type Breakpoint = "base" | "sm" | "md" | "lg" | "xl" | "2xl";`,`export type Responsive<TValue> = TValue | Partial<Record<Breakpoint, TValue>>;`],r=new Set;for(let[i,a]of Object.entries(e))if(Ea.has(i))for(let[e,i]of Object.entries(Fa(a))){let a=t[e];a===void 0||r.has(a)||(r.add(a),n.push(`export type ${a} = ${La(i,0)};`))}return n.join(`
26
+ `)},Ba=e=>{let t=[`export interface ViewPropsByPath {`];for(let n of Object.keys(e)){let r=Object.entries(e).filter(([e])=>ma(e,n)).filter(([,e])=>e.context!==void 0).map(([,e])=>{let t=X(e.context,4);return e.contextOptional?`Partial<${t}>`:t}).filter(e=>e!==`Record<string, never>`),i=(r.length>1?r.map(e=>`(${e})`).join(` & `):r[0]??`Record<string, never>`).split(`
27
27
  `);t.push(` ${J(n)}: {`),t.push(` context: ${i[0]}`);for(let e of i.slice(1,-1))t.push(e);let a=i.at(-1);a!==void 0&&i.length>1?t.push(`${a};`):t[t.length-1]=`${t.at(-1)};`,t.push(` };`)}return t.push(`}`),t.join(`
28
- `)},Ba=(e,t,n)=>{let r=Ma(e),i=Pa(t),a=t.callbacks??{},o=[`export interface ${r} {`];for(let[e,t]of Object.entries(i))o.push(` ${Y(e)}?: ${n[e]??Ia(t,2)};`);for(let[e,t]of Object.entries(a)){let n=t.input===void 0?``:`input: ${X(t.input,2)}`;o.push(` ${Y(e)}?: (${n}) => void;`)}o.push(`}`),o.push(``);let s=Object.entries(a).map(([e,t])=>`${J(e)}: ${t.input===void 0?0:1}`),c=s.length>0?`,\n callbacks: { ${s.join(`, `)} }`:``;return o.push(`export const ${ja(e)} = /* @__PURE__ */ createRemoteComponent<${r}, ${t.children===!0}>(${J(e)}, {`),o.push(` children: ${t.children===!0}${c},`),o.push(`});`),o.join(`
29
- `)},Va=e=>`input`in e||`output`in e,Ha=(e,t=0)=>{let n=` `.repeat(t),r=` `.repeat(t+2),i=[`{`];for(let[n,a]of Object.entries(e))if(Va(a)){let e=X(a.input,t+2),o=X(a.output,t+2);i.push(`${r}${Y(n)}: (input: ${e}) => Promise<${o}>;`)}else{let e=Ha(a,t+2).split(`
28
+ `)},Va=(e,t,n)=>{let r=Na(e),i=Fa(t),a=t.callbacks??{},o=[`export interface ${r} {`];for(let[e,t]of Object.entries(i))o.push(` ${Y(e)}?: ${n[e]??La(t,2)};`);for(let[e,t]of Object.entries(a)){let n=t.input===void 0?``:`input: ${X(t.input,2)}`;o.push(` ${Y(e)}?: (${n}) => void;`)}o.push(`}`),o.push(``);let s=Object.entries(a).map(([e,t])=>`${J(e)}: ${t.input===void 0?0:1}`),c=s.length>0?`,\n callbacks: { ${s.join(`, `)} }`:``;return o.push(`export const ${Ma(e)} = /* @__PURE__ */ createRemoteComponent<${r}, ${t.children===!0}>(${J(e)}, {`),o.push(` children: ${t.children===!0}${c},`),o.push(`});`),o.join(`
29
+ `)},Ha=e=>`input`in e||`output`in e,Ua=(e,t=0)=>{let n=` `.repeat(t),r=` `.repeat(t+2),i=[`{`];for(let[n,a]of Object.entries(e))if(Ha(a)){let e=X(a.input,t+2),o=X(a.output,t+2);i.push(`${r}${Y(n)}: (input: ${e}) => Promise<${o}>;`)}else{let e=Ua(a,t+2).split(`
30
30
  `);i.push(`${r}${Y(n)}: ${e[0]}`),i.push(...e.slice(1,-1)),i.push(`${e.at(-1)};`)}return i.push(`${n}}`),i.join(`
31
- `)},Ua=(e,t=[])=>{let n=[`{`];for(let[r,i]of Object.entries(e)){let e=[...t,r];if(Va(i))n.push(` ${Y(r)}: async (input: unknown) => {`),n.push(` const response = await fetch(${J(`/api/tailorkit/actions/${e.join(`.`)}`)}, {`),n.push(` body: JSON.stringify(input),`),n.push(` headers: { "content-type": "application/json" },`),n.push(` method: "POST",`),n.push(` });`),n.push(` if (!response.ok) throw new Error(await response.text());`),n.push(` return response.json();`),n.push(` },`);else{let t=Ua(i,e).split(`
31
+ `)},Wa=(e,t=[])=>{let n=[`{`];for(let[r,i]of Object.entries(e)){let e=[...t,r];if(Ha(i))n.push(` ${Y(r)}: async (input: unknown) => {`),n.push(` const response = await fetch(${J(`/api/tailorkit/actions/${e.join(`.`)}`)}, {`),n.push(` body: JSON.stringify(input),`),n.push(` headers: { "content-type": "application/json" },`),n.push(` method: "POST",`),n.push(` });`),n.push(` if (!response.ok) throw new Error(await response.text());`),n.push(` return response.json();`),n.push(` },`);else{let t=Wa(i,e).split(`
32
32
  `);n.push(` ${Y(r)}: ${t[0]}`),n.push(...t.slice(1).map(e=>` ${e}`)),n.push(`,`)}}return n.push(`}`),n.join(`
33
- `)},Wa=(e,t={})=>{let n=Ha(e.actions??{}),r=e.components??{},i=La(r),a=[wa,za(e.views??{}),`declare module "tailorkit/client" {
33
+ `)},Ga=(e,t={})=>{let n=Ua(e.actions??{}),r=e.components??{},i=Ra(r),a=[wa,Ba(e.views??{}),`declare module "tailorkit/client" {
34
34
  interface TailorKitViews extends ViewPropsByPath {}
35
35
  interface TailorKitSlots { ${Object.entries(e.slots??{}).map(([e,t])=>`${J(e)}: ${t.views.map(J).join(` | `)||`never`};`).join(` `)} }
36
36
  }
@@ -38,9 +38,9 @@ import { createRemoteComponent } from "tailorkit/client";
38
38
  export type ViewPath = keyof ViewPropsByPath & string;
39
39
  export type ViewProps<TPath extends ViewPath> = ViewPropsByPath[TPath];
40
40
  export type TailorKitActions = ${n};
41
- export const actions = ${Ua(e.actions??{})} as TailorKitActions;`,Ra(r,i)];t.serverModule&&a.splice(1,0,`import { createApi } from "tailorkit/client";\nimport type app from ${J(t.serverModule)};\n\nexport const api = createApi<typeof app.functions>();`);for(let[e,t]of Object.entries(r)){let{children:n}=_a.parse(t);a.push(Ba(e,{...t,children:n},i))}return`${a.join(`
41
+ export const actions = ${Wa(e.actions??{})} as TailorKitActions;`,za(r,i)];t.serverModule&&a.splice(1,0,`import { createApi } from "tailorkit/client";\nimport type app from ${J(t.serverModule)};\n\nexport const api = createApi<typeof app.functions>();`);for(let[e,t]of Object.entries(r)){let{children:n}=_a.parse(t);a.push(Va(e,{...t,children:n},i))}return`${a.join(`
42
42
 
43
- `)}\n`},Ga=(e,t)=>{let n=new URL(e);return n.pathname=`${n.pathname.replace(/\/$/u,``)}/${t.replace(/^\//u,``)}`,n.toString()},Ka=async e=>{let t=Ga(e,`schema`),n=await fetch(t);if(!n.ok)throw Error(`Unable to fetch TailorKit schema from ${t}: ${n.statusText}`);return await n.json()},qa=async(e={})=>{let t=w.resolve(e.cwd??`.`),n=w.resolve(t,e.outFile??w.join(`src`,`tailorkit.gen.ts`)),r=await ne(e.configPath,t),i=await Ka(r.config.host),a=w.resolve(r.root,r.config.server?.entry??`src/server.ts`),o=await x(a).then(e=>e.isFile()).catch(e=>{let t=e.code;if(t===`ENOENT`||t===`ENOTDIR`)return!1;throw e}),s;if(o){let e=w.relative(w.dirname(n),a).replaceAll(w.sep,`/`).replace(/\.tsx?$/u,``);s=e.startsWith(`.`)?e:`./${e}`}let c=Wa(i,{serverModule:s});return await g(w.dirname(n),{recursive:!0}),await S(n,c,`utf-8`),n},Ja=`1.0.0-rc.4-5d5b77c`,Ya=`https://registry.npmjs.org`,Xa=5e3,Z={oxfmt:{fallback:`^0.46.0`,matcher:`^0`,packageName:`oxfmt`},oxlint:{fallback:`^1.61.0`,matcher:`^1`,packageName:`oxlint`},preact:{fallback:`^10.29.1`,matcher:`^10`,packageName:`preact`},tailorkit:{fallback:`latest`,matcher:`^0`,packageName:`tailorkit`},typescript:{fallback:`^6.0.3`,matcher:`^6`,packageName:`typescript`},zod:{fallback:`^4.0.0`,matcher:`^4`,packageName:`zod`}},Za=e=>{let t=/^(?<major>\d+)\.(?<minor>\d+)\.(?<patch>\d+)$/u.exec(e);if(!t?.groups)return;let{major:n,minor:r,patch:i}=t.groups;if(n&&r&&i)return{major:Number.parseInt(n,10),minor:Number.parseInt(r,10),patch:Number.parseInt(i,10),raw:e}},Qa=(e,t)=>e.major===t.major?e.minor===t.minor?e.patch-t.patch:e.minor-t.minor:e.major-t.major,$a=(e,t)=>{let n=/^\^(?<major>\d+)(?:\.(?<minor>\d+))?/u.exec(t);if(!n?.groups?.major)return!1;let r=Number.parseInt(n.groups.major,10),i=Number.parseInt(n.groups.minor??`0`,10);return e.major===r&&e.minor>=i},eo=async({fallback:e,matcher:t,packageName:n})=>{try{let r=await fetch(`${Ya}/${encodeURIComponent(n)}`,{signal:AbortSignal.timeout(Xa)});if(!r.ok)return e;let i=await r.json(),a=Object.keys(i.versions??{}).map(Za).filter(e=>e!==void 0).filter(e=>$a(e,t)).toSorted(Qa).at(-1);return a?`^${a.raw}`:e}catch{return e}},to=async()=>{let[e,t,n,r,i,a]=await Promise.all([eo(Z.oxfmt),eo(Z.oxlint),eo(Z.preact),eo(Z.tailorkit),eo(Z.typescript),eo(Z.zod)]);return{drizzleKit:Ja,drizzleOrm:Ja,oxfmt:e,oxlint:t,preact:n,tailorkit:r,typescript:i,zod:a}},no=`{
43
+ `)}\n`},Ka=(e,t)=>{let n=new URL(e);return n.pathname=`${n.pathname.replace(/\/$/u,``)}/${t.replace(/^\//u,``)}`,n.toString()},qa=async e=>{let t=Ka(e,`schema`),n=await fetch(t);if(!n.ok)throw Error(`Unable to fetch TailorKit schema from ${t}: ${n.statusText}`);return await n.json()},Ja=async(e={})=>{let t=T.resolve(e.cwd??`.`),n=T.resolve(t,e.outFile??T.join(`src`,`tailorkit.gen.ts`)),r=await te(e.configPath,t),i=e.schema??await qa(r.config.host),a=T.resolve(r.root,r.config.server?.entry??`src/server.ts`),o=await S(a).then(e=>e.isFile()).catch(e=>{let t=e.code;if(t===`ENOENT`||t===`ENOTDIR`)return!1;throw e}),s;if(o){let e=T.relative(T.dirname(n),a).replaceAll(T.sep,`/`).replace(/\.tsx?$/u,``);s=e.startsWith(`.`)?e:`./${e}`}let c=Ga(i,{serverModule:s});return await g(T.dirname(n),{recursive:!0}),await C(n,c,`utf-8`),n},Ya=`1.0.0-rc.4-5d5b77c`,Xa=`https://registry.npmjs.org`,Za=5e3,Qa={oxfmt:{fallback:`^0.46.0`,matcher:`^0`,packageName:`oxfmt`},oxlint:{fallback:`^1.61.0`,matcher:`^1`,packageName:`oxlint`},preact:{fallback:`^10.29.1`,matcher:`^10`,packageName:`preact`},tailorkit:{fallback:`latest`,matcher:`^0`,packageName:`tailorkit`},typescript:{fallback:`^6.0.3`,matcher:`^6`,packageName:`typescript`},zod:{fallback:`^4.0.0`,matcher:`^4`,packageName:`zod`}},$a=e=>{let t=/^(?<major>\d+)\.(?<minor>\d+)\.(?<patch>\d+)$/u.exec(e);if(!t?.groups)return;let{major:n,minor:r,patch:i}=t.groups;if(n&&r&&i)return{major:Number.parseInt(n,10),minor:Number.parseInt(r,10),patch:Number.parseInt(i,10),raw:e}},eo=(e,t)=>e.major===t.major?e.minor===t.minor?e.patch-t.patch:e.minor-t.minor:e.major-t.major,to=(e,t)=>{let n=/^\^(?<major>\d+)(?:\.(?<minor>\d+))?/u.exec(t);if(!n?.groups?.major)return!1;let r=Number.parseInt(n.groups.major,10),i=Number.parseInt(n.groups.minor??`0`,10);return e.major===r&&e.minor>=i},Z=async({fallback:e,matcher:t,packageName:n})=>{try{let r=await fetch(`${Xa}/${encodeURIComponent(n)}`,{signal:AbortSignal.timeout(Za)});if(!r.ok)return e;let i=await r.json(),a=Object.keys(i.versions??{}).map($a).filter(e=>e!==void 0).filter(e=>to(e,t)).toSorted(eo).at(-1);return a?`^${a.raw}`:e}catch{return e}},no=async()=>{let[e,t,n,r,i,a]=await Promise.all([Z(Qa.oxfmt),Z(Qa.oxlint),Z(Qa.preact),Z(Qa.tailorkit),Z(Qa.typescript),Z(Qa.zod)]);return{drizzleKit:Ya,drizzleOrm:Ya,oxfmt:e,oxlint:t,preact:n,tailorkit:r,typescript:i,zod:a}},ro=`{
44
44
  "name": "{{ packageName }}",
45
45
  "description": "A TailorKit.dev app that embeds in a host app to extend what it can do.",
46
46
  "private": true,
@@ -73,7 +73,7 @@ export const actions = ${Ua(e.actions??{})} as TailorKitActions;`,Ra(r,i)];t.ser
73
73
  },
74
74
  "type": "module"
75
75
  }
76
- `,ro=`{
76
+ `,io=`{
77
77
  "compilerOptions": {
78
78
  "allowSyntheticDefaultImports": true,
79
79
  "esModuleInterop": true,
@@ -84,21 +84,25 @@ export const actions = ${Ua(e.actions??{})} as TailorKitActions;`,Ra(r,i)];t.ser
84
84
  "module": "ESNext",
85
85
  "moduleResolution": "bundler",
86
86
  "noEmit": true,
87
+ "skipLibCheck": true,
87
88
  "strict": true,
88
89
  "target": "ESNext",
89
90
  "verbatimModuleSyntax": true
90
91
  },
91
92
  "include": ["src", "tailorkit.config.ts"]
92
93
  }
93
- `,io=`import type { TailorKitConfig } from "tailorkit/app/config";
94
+ `,ao=`import type { TailorKitConfig } from "tailorkit/app/config";
94
95
 
95
96
  const config = {
96
97
  host: "{{ hostUrl }}",
97
- server: {},
98
+ logos: {
99
+ dark: "logo-dark.svg",
100
+ light: "logo-light.svg",
101
+ },
98
102
  } satisfies TailorKitConfig;
99
103
 
100
104
  export default config;
101
- `,ao=`# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
105
+ `,oo=`# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
102
106
 
103
107
  # TailorKit
104
108
  .tailorkit
@@ -127,89 +131,41 @@ pnpm-debug.log*
127
131
 
128
132
  # typescript
129
133
  *.tsbuildinfo
130
- `,oo=`import { defineConfig } from "oxlint";
134
+ `,so=`import { defineConfig } from "oxlint";
131
135
 
132
136
  export default defineConfig({
133
137
  ignorePatterns: ["src/tailorkit.gen.ts"],
134
138
  });
135
- `,so=`import { defineConfig } from "oxfmt";
139
+ `,co=`import { defineConfig } from "oxfmt";
136
140
 
137
141
  export default defineConfig({
138
142
  ignorePatterns: ["src/tailorkit.gen.ts"],
139
143
  });
140
- `,co=`import { ClientProvider, defineClient } from "tailorkit/client";
144
+ `,lo=`import { ClientProvider, defineClient } from "tailorkit/client";
141
145
  import defaultView from "./views/default";
142
146
 
143
147
  const client = defineClient({
144
148
  component: ClientProvider,
145
149
  slots: {
146
- panel: { "/": defaultView },
150
+ {{ slotName }}: { {{ viewPath }}: defaultView },
147
151
  },
148
152
  });
149
153
 
150
154
  export default client;
151
- `,lo=`import { createView, useQuery } from "tailorkit/client";
152
- import { api, Card } from "#tailorkit";
155
+ `,uo=`import { createView, useQuery } from "tailorkit/client";
156
+ import { api{% if useBox %}, Box{% endif %} } from "#tailorkit";
153
157
 
154
- const view = createView("/", {
158
+ const view = createView({{ viewPath }}, {
155
159
  component: ViewComponent,
156
160
  });
157
161
 
158
162
  function ViewComponent() {
159
- const context = view.useContext();
160
- const greeting = useQuery(api.greeting, { name: context.user.name });
163
+ const greeting = useQuery(api.greeting, { name: "TailorKit" });
161
164
 
162
- return <Card>{greeting.isLoading ? "Loading…" : greeting.error?.message ?? greeting.data}</Card>;
165
+ return <{% if useBox %}Box{% endif %}>{greeting.isLoading ? "Loading…" : greeting.error?.message ?? greeting.data}</{% if useBox %}Box{% endif %}>;
163
166
  }
164
167
 
165
168
  export default view;
166
- `,uo=`/* eslint-disable */
167
-
168
- // This file was automatically generated by TailorKit.
169
- // Documentation: https://tailorkit.dev/docs
170
-
171
- // Do not make changes to this file directly, as it will be overwritten.
172
- // Exclude this file from linting and formatting to avoid checking generated code.
173
-
174
- import { createApi, createRemoteComponent } from "tailorkit/client";
175
- import type app from "./server";
176
-
177
- export const api = createApi<typeof app.functions>();
178
-
179
- export interface ViewPropsByPath {
180
- "/": {
181
- context: {
182
- user: {
183
- name: string;
184
- };
185
- };
186
- };
187
- }
188
-
189
- declare module "tailorkit/client" {
190
- interface TailorKitViews extends ViewPropsByPath {}
191
- interface TailorKitSlots { panel: "/" }
192
- }
193
-
194
- export type ViewPath = keyof ViewPropsByPath & string;
195
- export type ViewProps<TPath extends ViewPath> = ViewPropsByPath[TPath];
196
-
197
- export interface ButtonProps {
198
- disabled?: unknown;
199
- variant?: unknown;
200
- onClick?: () => void;
201
- }
202
-
203
- export const Button = createRemoteComponent<ButtonProps, true>("Button", {
204
- children: true,
205
- });
206
-
207
- export interface CardProps {
208
- }
209
-
210
- export const Card = createRemoteComponent<CardProps, true>("Card", {
211
- children: true,
212
- });
213
169
  `,fo=`import { defineServer } from "tailorkit/server";
214
170
  import * as functions from "./functions/greeting";
215
171
 
@@ -225,4 +181,12 @@ import { z } from "zod";
225
181
  export const greeting = tk.query
226
182
  .input(z.object({ name: z.string() }))
227
183
  .handler(({ input }) => \`Hello, \${input.name}!\`);
228
- `,ho=new se({strictVariables:!0}),go=(e,t)=>ho.parseAndRender(e,t),_o=e=>g(e,{recursive:!0}).then(()=>{}),vo=async(e,t,n)=>{if(!n&&ae(e))throw Error(`${e} already exists. Use --force to overwrite it.`);await S(e,t,`utf-8`)},yo=async e=>{let{targetDirectory:t,force:n,formatting:r,hostUrl:i,linting:a,packageName:o,packageVersions:s,useWorkspaceDependencies:c}=e,l=c?`workspace:*`:s.tailorkit,u=[],d=[];a&&(u.push(`pnpm run lint`),d.push(`pnpm run lint:fix`)),r&&(u.push(`pnpm run format`),d.push(`pnpm run format:fix`));let f={checkScript:u.join(` && `),fixScript:d.join(` && `),formatting:r,hostUrl:i,linting:a,oxfmtVersion:s.oxfmt,oxlintVersion:s.oxlint,packageName:o,preactVersion:s.preact,tailorkitVersion:l,typescriptVersion:s.typescript,zodVersion:s.zod??`^4.0.0`,drizzleKitVersion:s.drizzleKit??`1.0.0-rc.4-5d5b77c`,drizzleOrmVersion:s.drizzleOrm??`1.0.0-rc.4-5d5b77c`};await _o(w.join(t,`src`,`views`)),await _o(w.join(t,`src`,`functions`));let p=[{template:no,dest:`package.json`},{template:ro,dest:`tsconfig.json`},{template:io,dest:`tailorkit.config.ts`},{template:ao,dest:`.gitignore`},{template:oo,dest:`oxlint.config.ts`,condition:a},{template:so,dest:`oxfmt.config.ts`,condition:r},{template:co,dest:w.join(`src`,`client.ts`)},{template:lo,dest:w.join(`src`,`views`,`default.tsx`)},{template:uo,dest:w.join(`src`,`tailorkit.gen.ts`)},{template:fo,dest:w.join(`src`,`server.ts`)},{template:po,dest:w.join(`src`,`schema.ts`)},{template:mo,dest:w.join(`src`,`functions`,`greeting.ts`)}];await Promise.all(p.filter(e=>e.condition!==!1).map(async({template:e,dest:r})=>{let i=await go(e,f);await vo(w.join(t,r),i,n)}))},bo=[`pnpm`,`yarn`,`npm`,`bun`],xo=e=>bo.includes(e),So=e=>e.trim().toLowerCase().replaceAll(/[^a-z0-9._/-]+/gu,`-`).replaceAll(/^-+|-+$/gu,``),Q=e=>(s(e)&&(i(`Init cancelled.`),process.exit(0)),e),Co=(e,t)=>w.resolve(t,e??`.`),wo=async(e,t)=>{let n=So(w.basename(t))||`tailorkit-app`;return So(e===void 0?Q(await f({defaultValue:n,message:`Package name`,placeholder:n,validate:e=>So(e??``).length===0?`Enter a package name.`:void 0})):e)},To=async e=>{if(e!==void 0){if(xo(e))return e;throw Error(`--package-manager must be one of: ${bo.join(`, `)}.`)}return Q(await u({initialValue:`pnpm`,message:`Package manager`,options:bo.map(e=>({label:e,value:e}))}))},Eo=async e=>e===void 0?Q(await a({initialValue:!0,message:`Add linting with oxlint?`})):e,Do=async e=>e===void 0?Q(await a({initialValue:!0,message:`Add formatting with oxfmt?`})):e,Oo=e=>{try{Ai(e??``);return}catch{return`Enter a valid host URL.`}},ko=async e=>{if(e!==void 0){let t=Oo(e);if(t!==void 0)throw Error(t);return Ai(e)}let t=`https://example.com/api/tailorkit`;return Ai(Q(await f({defaultValue:t,message:`Host URL`,placeholder:t,validate:Oo})))},Ao=async e=>e===void 0?Q(await a({initialValue:!0,message:`Install dependencies?`})):e,jo=async(e,t)=>t||!ae(e)?t:Q(await a({initialValue:!1,message:`${m.cyan(e)} already exists. Overwrite matching files?`})),Mo=(e,t,n)=>new Promise((r,i)=>{let a=ie(e,t,{cwd:n,stdio:`inherit`});a.on(`close`,r),a.on(`error`,i)}),No=async(e,t)=>{let n=d();n.start(`Installing dependencies with ${t}`);let r=await Mo(t,[`install`],e);if(r!==0)throw n.stop(`Install failed.`),Error(`${t} install exited with code ${r}.`);n.stop(`Installed dependencies.`)},Po=async(e,t)=>{let n=d();n.start(`Formatting project`);let r=await Mo(t,[`run`,`format:fix`],e);if(r!==0)throw n.stop(`Formatting failed.`),Error(`${t} run format:fix exited with code ${r}.`);n.stop(`Formatted project.`)},Fo=async e=>{let t=Co(e.directory,e.cwd),n=await wo(e.name,t),r=w.join(t,n),i=await jo(r,e.force??!1),a=await To(e.packageManager),o=await ko(e.host),s=await Eo(e.linting),c=await Do(e.formatting),l=await Ao(e.install),u=d();u.start(`Resolving package versions`);let f=await to();return u.stop(`Resolved package versions.`),await g(r,{recursive:!0}),await yo({force:i,formatting:c,hostUrl:o,linting:s,packageName:n,packageVersions:f,targetDirectory:r}),l&&(await No(r,a),c&&await Po(r,a)),r},Io=262144,Lo={".css":`text/css; charset=utf-8`,".html":`text/html; charset=utf-8`,".js":`text/javascript; charset=utf-8`,".json":`application/json; charset=utf-8`,".map":`application/json; charset=utf-8`},Ro=e=>e instanceof Error?e.message:String(e),zo=e=>typeof e==`object`&&!!e&&`code`in e&&e.code===`UNAUTHORIZED`&&`message`in e&&typeof e.message==`string`&&/Preview session is unavailable|Preview developer reconnect grace expired|Preview CLI token is unavailable/u.test(e.message);async function Bo(e){let t=await ee(e),n=(await y(t,{recursive:!0,withFileTypes:!0})).filter(e=>e.isFile()).toSorted((e,t)=>w.join(e.parentPath,e.name).localeCompare(w.join(t.parentPath,t.name)));if(n.length>100)throw Error(`Preview build exceeds 100 files.`);let r=[],i={files:[]},a=0;for(let e of n){let n=await ee(w.join(e.parentPath,e.name)),o=w.relative(t,n).replaceAll(w.sep,`/`);if(!o||o.startsWith(`../`)||w.isAbsolute(o))throw Error(`Preview file escapes the build output.`);let s=await v(n);if(s.length>1048576)throw Error(`Preview file ${o} exceeds 1 MiB.`);if(a+=s.length,a>10485760)throw Error(`Preview build exceeds 10 MiB.`);r.push(s),i.files.push({path:o,contentType:Lo[w.extname(o)]??`application/octet-stream`,size:s.length,chunks:Math.ceil(s.length/Io),sha256:E(`sha256`).update(s).digest(`hex`)})}if(!i.files.some(e=>e.path===`client.js`))throw Error(`Preview build is missing client.js.`);return{files:r,manifest:i,fingerprint:E(`sha256`).update(JSON.stringify(i)).digest(`hex`)}}function Vo(e,t,n){let r=0;return async()=>{let i=++r;try{let n=await e();i===r&&t(n)}catch(e){i===r&&n(e)}}}async function Ho(e,t){let{buildId:n}=await e.beginBuild({manifest:t.manifest});for(let[r,i]of t.files.entries())for(let a=0;a<(t.manifest.files[r]?.chunks??0);a++)await e.uploadChunk({buildId:n,fileIndex:r,chunkIndex:a,base64:i.subarray(a*Io,(a+1)*Io).toString(`base64`)});await e.commitBuild({buildId:n})}var Uo=T.object({config:T.string().optional(),cwd:T.string().default(`.`),mode:T.string().optional(),outDir:T.string().optional(),replace:T.boolean().optional()}),Wo=e=>{let t=Uo.parse(e);return{configPath:t.config,cwd:t.cwd,mode:t.mode,outDir:t.outDir,replace:t.replace}};async function Go(e){let t=await ne(e.configPath,e.cwd);if(!t.config.appId)throw Error(`Missing appId. Deploy once before starting a remote preview.`);let n=await Qi(e),r=await Xi(n.hostUrl);if(!r?.deployToken)throw Error(`Not logged in. Run tailorkit login first.`);let{buildApp:i}=await import(`@tailorkit/app/builder`),a=await i({...e,watch:!0}),o=async()=>{a&&typeof a==`object`&&`close`in a&&await a.close()},s=await Jr({headers:{authorization:`Bearer ${r.deployToken}`},url:n.hostUrl}).preview.start({appId:t.config.appId,replaceActive:e.replace}).catch(async e=>{throw await o(),e}),l=`data`in s?s.data:s;if(!l)throw await o(),Error(`Unable to start preview session.`);let u=Jr({fetch:(e,t)=>fetch(e,{...t,signal:AbortSignal.timeout(5e3)}),headers:{authorization:`Bearer ${r.deployToken}`},url:n.hostUrl}),d=async()=>{try{await u.preview.stop({sessionId:l.sessionId})}catch(e){c.warn(`Unable to end preview session: ${Ro(e)}`)}},f=w.resolve(t.root,e.outDir??t.config.build?.outDir??`.tailorkit`),p,h;try{p=await ee(w.join(f,`client`)),h=await Bo(p)}catch(e){try{await o()}catch(e){c.warn(`Unable to close preview watcher: ${Ro(e)}`)}throw await d(),e}let g,_,v,y=!1,b=!1,x,S,C,te=0,T=1e3,E=0,re=()=>{y||(y=!0,process.off(`SIGINT`,D),process.off(`SIGTERM`,D),x&&clearTimeout(x),S&&clearTimeout(S),C&&clearInterval(C),v?.close(),o().catch(e=>{c.warn(`Unable to close preview watcher: ${Ro(e)}`)}),c.warn(`Preview session ended. Start a new preview to continue.`))},ie=()=>{y||!_||b||(x&&clearTimeout(x),x=setTimeout(()=>{if(x=void 0,!_||h.fingerprint===g)return;let e=h,t=_,n=E;b=!0,te=Date.now(),Ho(t,e).then(()=>{n===E&&(g=e.fingerprint)}).catch(e=>{y||c.warn(`Preview upload interrupted: ${Ro(e)}`)}).finally(()=>{n===E&&(b=!1,h.fingerprint!==g&&ie())})},Math.max(500,500-(Date.now()-te))))},ae=Vo(()=>Bo(p),e=>{y||(h=e,ie())},e=>{y||c.warn(`Keeping the last successful preview: ${Ro(e)}`)});a&&typeof a==`object`&&`on`in a&&a.on(`event`,e=>{e.code===`BUNDLE_END`&&ae()});let oe=()=>{if(y)return;let e=new URL(l.tunnelUrl);e.searchParams.set(`role`,`uploader`);let t=new WebSocket(e,l.tunnelToken);v=t,t.addEventListener(`open`,()=>{E+=1,T=1e3,_=qr(t);let e=()=>void _?.heartbeat().catch(e=>{v!==t||y||(zo(e)?re():t.close())});e(),C=setInterval(e,2e4),ie()}),t.addEventListener(`close`,()=>{E+=1,b=!1,C&&clearInterval(C),v===t&&(v=void 0,_=void 0),y||(S=setTimeout(oe,T),T=Math.min(T*2,3e4))}),t.addEventListener(`error`,()=>t.close())};oe();let D=()=>{y||(y=!0,process.off(`SIGINT`,D),process.off(`SIGTERM`,D),o().catch(e=>{c.warn(`Unable to close preview watcher: ${Ro(e)}`)}),x&&clearTimeout(x),S&&clearTimeout(S),C&&clearInterval(C),v?.close(),d().finally(()=>process.exit(0)))};process.once(`SIGINT`,D),process.once(`SIGTERM`,D);let se=new URL(n.hostUrl);se.pathname=`${se.pathname.replace(/\/+$/u,``)}/preview/${l.shareId}`,c.info(m.green(`Host preview: ${se.href}`)),c.info(m.dim(`Uploading built app assets from ${p}`))}var Ko=e=>{let t=te();return t===`darwin`?{args:[e],command:`open`}:t===`win32`?{args:[`/c`,`start`,``,e],command:`cmd`}:{args:[e],command:`xdg-open`}},qo=e=>new Promise(t=>{let{args:n,command:r}=Ko(e),i=ie(r,n,{detached:!0,stdio:`ignore`,windowsHide:!0});i.once(`error`,()=>{t(!1)}),i.once(`spawn`,()=>{i.unref(),t(!0)})}),$=p(`tailorkit`),Jo=e=>{if(e<1024)return`${e} B`;let t=[`KB`,`MB`,`GB`],n=e/1024,r=0;for(;n>=1024&&r<t.length-1;)n/=1024,r+=1;return`${n.toFixed(n>=10?1:2)} ${t[r]}`};$.option(`--cwd <path>`,`Working directory`,{default:`.`}),$.command(`preview`,`Preview the app inside a host app`).option(`--config <path>`,`Path to tailorkit config`).option(`--out-dir <path>`,`Build output directory`).option(`--mode <mode>`,`Vite mode`).option(`--replace`,`End the active preview for this app and start a new one`).action(async e=>{o(m.bold(`TailorKit`));try{await Go(Wo(e))}catch(e){c.error(e instanceof Error?e.message:String(e)),process.exit(1)}}),$.command(`login`,`Authenticate the TailorKit CLI with a host app`).option(`--config <path>`,`Path to tailorkit config`).option(`--open`,`Open the approval URL in the default browser`,{default:!0}).option(`--timeout <seconds>`,`Seconds to wait for approval`,{default:1800}).action(async e=>{o(m.bold(`TailorKit`));let t=d(),n=!1;try{let r=Number.parseInt(String(e.timeout??`1800`),10);if(!Number.isInteger(r)||r<=0)throw Error(`--timeout must be a positive integer.`);await Zi({configPath:e.config,cwd:String(e.cwd??`.`),timeout:r*1e3},({expiresAt:r,hostUrl:i,userCode:a})=>{let o=Ki(i,a);e.open!==!1&&qo(o),c.info(`Enter this code in the host app: ${m.bold(a)}`),c.info(`Approval URL: ${m.cyan(o)}`),c.info(`Code expires at ${r.toLocaleString()}.`),c.info(`Waiting for approval...`),t.start(`Checking approval status`),n=!0}),n&&t.stop(`Approved.`),l(`Authenticated successfully.`)}catch(e){n&&t.stop(`Approval failed.`),c.error(e instanceof Error?e.message:String(e)),process.exit(1)}}),$.command(`logout`,`Remove stored TailorKit CLI credentials for a host app`).option(`--config <path>`,`Path to tailorkit config`).action(async e=>{o(m.bold(`TailorKit`));try{let t=await $i({configPath:e.config,cwd:String(e.cwd??`.`)});l(t.removed?`Logged out of ${m.cyan(t.hostUrl)}.`:`No stored credentials found for ${m.cyan(t.hostUrl)}.`)}catch(e){c.error(e instanceof Error?e.message:String(e)),process.exit(1)}}),$.command(`whoami`,`Show the current TailorKit CLI authentication scope`).option(`--config <path>`,`Path to tailorkit config`).action(async e=>{o(m.bold(`TailorKit`));try{let t=await Qi({configPath:e.config,cwd:String(e.cwd??`.`)});c.info(`Host: ${m.cyan(t.hostUrl)}`),c.info(`Scope: ${m.cyan(JSON.stringify(t.scope))}`),l(`Authenticated.`)}catch(e){c.error(e instanceof Error?e.message:String(e)),process.exit(1)}}),$.command(`deploy`,`Build and deploy the TailorKit app`).option(`--config <path>`,`Path to tailorkit config`).option(`--out-dir <path>`,`Build output directory`).option(`--mode <mode>`,`Vite mode`).action(async e=>{o(m.bold(`TailorKit`));let t=d();try{t.start(`Building and deploying app`);let n=await pa({configPath:e.config,cwd:String(e.cwd??`.`),mode:e.mode,onMissingAppId:async({appName:e,configPath:n,hostUrl:r,reason:i})=>{t.stop(`App not linked.`),c.info(i===`missing`?`No appId found in ${m.cyan(n)}.`:`The appId in ${m.cyan(n)} does not exist.`),c.info(`Host: ${m.cyan(r)}`);let o=await a({initialValue:!0,message:i===`missing`?`Create a TailorKit app named ${e}?`:`Create a new TailorKit app named ${e} and update the config?`});return!s(o)&&(o&&t.start(`Creating app and deploying`),o===!0)},onTypecheckFailed:async({command:e,output:n})=>{t.stop(`Type check failed.`),c.error(`Type check failed while running ${m.cyan(e)}.`),n&&c.error(n);let r=await a({initialValue:!1,message:`Type check failed, but the app built successfully. Upload anyway?`});return!s(r)&&(r&&t.start(`Uploading app`),r===!0)},outDir:e.outDir});t.stop(`Deployed app.`),n.createdApp&&c.info(`Created app and updated tailorkit.config.ts with ${m.cyan(n.appId)}.`),c.info(`Host: ${m.cyan(n.hostUrl)}`),c.info(`App: ${m.cyan(n.appId)}`),c.info(`Deployment: ${m.cyan(n.deploymentId)}`),c.info(`Uploaded files:`);for(let e of n.uploadedFiles)c.info(` ${m.cyan(e.path)} ${m.dim(`${Jo(e.size)} raw, ${Jo(e.gzipSize)} gzip`)}`);n.status&&c.info(`Status: ${m.cyan(n.status)}`),l(`Deployment published.`)}catch(e){t.stop(`Deployment failed.`),c.error(e instanceof Error?e.message:String(e)),process.exit(1)}}),$.command(`build`,`Build the TailorKit app`).option(`--config <path>`,`Path to tailorkit config`).option(`--out-dir <path>`,`Build output directory`).option(`--mode <mode>`,`Vite mode`).action(async e=>{o(m.bold(`TailorKit`));try{let{buildApp:t}=await import(`@tailorkit/app/builder`);await t({configPath:e.config,cwd:String(e.cwd??`.`),mode:e.mode,outDir:e.outDir}),l(`Built app.`)}catch(e){c.error(e instanceof Error?e.message:String(e)),process.exit(1)}}),$.command(`db <command>`,`Generate database migrations with db generate`).option(`--config <path>`,`Path to tailorkit config`).option(`--name <name>`,`Migration name`).action(async(e,t)=>{o(m.bold(`TailorKit`));try{if(e!==`generate`)throw Error(`Unknown database command: ${e}. Use tailorkit db generate.`);let{generateAppMigrations:n}=await import(`@tailorkit/app/builder`),r=await n({configPath:t.config,cwd:String(t.cwd??`.`),name:t.name});l(`Migrations are up to date in ${m.cyan(r)}.`)}catch(e){c.error(e instanceof Error?e.message:String(e)),process.exit(1)}}),$.command(`generate`,`Generate TailorKit app bindings`).option(`--config <path>`,`Path to tailorkit config`).option(`--out <path>`,`Generated TypeScript output file`).action(async e=>{o(m.bold(`TailorKit`));try{let t=await qa({configPath:e.config,cwd:String(e.cwd??`.`),outFile:e.out});l(`Generated ${m.cyan(t)}.`)}catch(e){c.error(e instanceof Error?e.message:String(e)),process.exit(1)}}),$.command(`init [directory]`,`Create a new TailorKit app`).option(`--name <name>`,`Package name`).option(`--host <url>`,`TailorKit host URL`).option(`--package-manager <pm>`,`Package manager: bun, yarn, pnpm, or npm`).option(`--lint`,`Add oxlint (use --no-lint to skip)`).option(`--format`,`Add oxfmt (use --no-format to skip)`).option(`--install`,`Install dependencies after scaffolding (use --no-install to skip)`).option(`--force`,`Overwrite existing files`).action(async(e,t)=>{o(m.bold(`TailorKit`));try{let n=await Fo({cwd:String(t.cwd??`.`),directory:e,force:t.force,formatting:t.format,host:t.host,install:t.install,linting:t.lint,name:t.name,packageManager:t.packageManager});l(`Created app at ${m.cyan(n)}.`)}catch(e){c.error(e instanceof Error?e.message:String(e)),process.exit(1)}}),$.help(),$.version(`0.1.0-beta.16`),$.parse();export{};
184
+ `,ho=`<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2" viewBox="0 0 24 24">
185
+ <path d="M3 6h6v6H3z" style="fill:#f5f5f5" transform="matrix(1.5 0 0 1.5 10.5 -9)"/>
186
+ <path d="M2 6v12h12v-6H8V6z" style="fill:#f5f5f5" transform="matrix(1.5 0 0 1.5 -3 -3)"/>
187
+ </svg>
188
+ `,go=`<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2" viewBox="0 0 24 24">
189
+ <path d="M3 6h6v6H3z" style="fill:#262626" transform="matrix(1.5 0 0 1.5 10.5 -9)"/>
190
+ <path d="M2 6v12h12v-6H8V6z" style="fill:#262626" transform="matrix(1.5 0 0 1.5 -3 -3)"/>
191
+ </svg>
192
+ `,_o=new oe({strictVariables:!0}),vo=(e,t)=>_o.parseAndRender(e,t),yo=e=>g(e,{recursive:!0}).then(()=>{}),bo=async(e,t,n)=>{if(!n&&ie(e))throw Error(`${e} already exists. Use --force to overwrite it.`);await C(e,t,`utf-8`)},xo=async e=>{let{targetDirectory:t,force:n,formatting:r,hostUrl:i,schema:a,linting:o,packageName:s,packageVersions:c,useWorkspaceDependencies:l}=e,u=Object.keys(a.slots??{}).sort(),d=Object.keys(a.views??{}).sort().find(e=>u.some(t=>a.slots?.[t]?.views.includes(e)));if(d===void 0)throw Error(`The host schema has no views supported by a slot. Add a view and slot before running tailorkit init.`);let f=u.find(e=>a.slots?.[e]?.views.includes(d)),p=a.components?.Box,m=p?.children===!0&&!p.fields?.required?.length,h=T.join(t,`src`,`tailorkit.gen.ts`);if(!n&&ie(h))throw Error(`${h} already exists. Use --force to overwrite it.`);let g=l?`workspace:*`:c.tailorkit,_=[],v=[];o&&(_.push(`pnpm run lint`),v.push(`pnpm run lint:fix`)),r&&(_.push(`pnpm run format`),v.push(`pnpm run format:fix`));let y={viewPath:JSON.stringify(d),slotName:JSON.stringify(f),useBox:m,checkScript:_.join(` && `),fixScript:v.join(` && `),formatting:r,hostUrl:i,linting:o,oxfmtVersion:c.oxfmt,oxlintVersion:c.oxlint,packageName:s,preactVersion:c.preact,tailorkitVersion:g,typescriptVersion:c.typescript,zodVersion:c.zod??`^4.0.0`,drizzleKitVersion:c.drizzleKit??`1.0.0-rc.4-5d5b77c`,drizzleOrmVersion:c.drizzleOrm??`1.0.0-rc.4-5d5b77c`};await yo(T.join(t,`src`,`views`)),await yo(T.join(t,`src`,`functions`));let b=[{template:ro,dest:`package.json`},{template:io,dest:`tsconfig.json`},{template:ao,dest:`tailorkit.config.ts`},{template:ho,dest:`logo-dark.svg`},{template:go,dest:`logo-light.svg`},{template:oo,dest:`.gitignore`},{template:so,dest:`oxlint.config.ts`,condition:o},{template:co,dest:`oxfmt.config.ts`,condition:r},{template:lo,dest:T.join(`src`,`client.ts`)},{template:uo,dest:T.join(`src`,`views`,`default.tsx`)},{template:fo,dest:T.join(`src`,`server.ts`)},{template:po,dest:T.join(`src`,`schema.ts`)},{template:mo,dest:T.join(`src`,`functions`,`greeting.ts`)}];await Promise.all(b.filter(e=>e.condition!==!1).map(async({template:e,dest:r})=>{let i=await vo(e,y);await bo(T.join(t,r),i,n)})),await Ja({cwd:t,schema:a})},So=[`pnpm`,`yarn`,`npm`,`bun`],Co=e=>So.includes(e),wo=e=>e.trim().toLowerCase().replaceAll(/[^a-z0-9._/-]+/gu,`-`).replaceAll(/^-+|-+$/gu,``),Q=e=>(s(e)&&(i(`Init cancelled.`),process.exit(0)),e),To=(e,t)=>T.resolve(t,e??`.`),Eo=async(e,t)=>{let n=wo(T.basename(t))||`tailorkit-app`;return wo(e===void 0?Q(await f({defaultValue:n,message:`Package name`,placeholder:n,validate:e=>wo(e??``).length===0?`Enter a package name.`:void 0})):e)},Do=async e=>{if(e!==void 0){if(Co(e))return e;throw Error(`--package-manager must be one of: ${So.join(`, `)}.`)}return Q(await u({initialValue:`pnpm`,message:`Package manager`,options:So.map(e=>({label:e,value:e}))}))},Oo=async e=>e===void 0?Q(await a({initialValue:!0,message:`Add linting with oxlint?`})):e,ko=async e=>e===void 0?Q(await a({initialValue:!0,message:`Add formatting with oxfmt?`})):e,Ao=e=>{try{Ai(e??``);return}catch{return`Enter a valid host URL.`}},jo=async e=>{if(e!==void 0){let t=Ao(e);if(t!==void 0)throw Error(t);return Ai(e)}let t=`https://example.com/api/tailorkit`;return Ai(Q(await f({defaultValue:t,message:`Host URL`,placeholder:t,validate:Ao})))},Mo=async e=>e===void 0?Q(await a({initialValue:!0,message:`Install dependencies?`})):e,No=async(e,t)=>t||!ie(e)?t:Q(await a({initialValue:!1,message:`${m.cyan(e)} already exists. Overwrite matching files?`})),Po=(e,t,n)=>new Promise((r,i)=>{let a=re(e,t,{cwd:n,stdio:`inherit`});a.on(`close`,r),a.on(`error`,i)}),Fo=async(e,t)=>{let n=d();n.start(`Installing dependencies with ${t}`);let r=await Po(t,[`install`],e);if(r!==0)throw n.stop(`Install failed.`),Error(`${t} install exited with code ${r}.`);n.stop(`Installed dependencies.`)},Io=async(e,t)=>{let n=d();n.start(`Formatting project`);let r=await Po(t,[`run`,`format:fix`],e);if(r!==0)throw n.stop(`Formatting failed.`),Error(`${t} run format:fix exited with code ${r}.`);n.stop(`Formatted project.`)},Lo=async e=>{let t=To(e.directory,e.cwd),n=await Eo(e.name,t),r=T.join(t,n),i=await No(r,e.force??!1),a=await Do(e.packageManager),o=await jo(e.host),s=await Oo(e.linting),c=await ko(e.formatting),l=await Mo(e.install),u=d();u.start(`Fetching host schema`);let f;try{f=await qa(o),u.stop(`Fetched host schema.`)}catch(e){throw u.stop(`Unable to fetch host schema.`),e}u.start(`Resolving package versions`);let p=await no();return u.stop(`Resolved package versions.`),await g(r,{recursive:!0}),await xo({force:i,formatting:c,hostUrl:o,linting:s,packageName:n,packageVersions:p,schema:f,targetDirectory:r}),l&&(await Fo(r,a),c&&await Io(r,a)),r},Ro=262144,zo={".css":`text/css; charset=utf-8`,".html":`text/html; charset=utf-8`,".js":`text/javascript; charset=utf-8`,".json":`application/json; charset=utf-8`,".map":`application/json; charset=utf-8`},Bo=e=>e instanceof Error?e.message:String(e),Vo=e=>typeof e==`object`&&!!e&&`code`in e&&e.code===`UNAUTHORIZED`&&`message`in e&&typeof e.message==`string`&&/Preview session is unavailable|Preview developer reconnect grace expired|Preview CLI token is unavailable/u.test(e.message);async function Ho(e){let t=await b(e),n=(await y(t,{recursive:!0,withFileTypes:!0})).filter(e=>e.isFile()).toSorted((e,t)=>T.join(e.parentPath,e.name).localeCompare(T.join(t.parentPath,t.name)));if(n.length>100)throw Error(`Preview build exceeds 100 files.`);let r=[],i={files:[]},a=0;for(let e of n){let n=await b(T.join(e.parentPath,e.name)),o=T.relative(t,n).replaceAll(T.sep,`/`);if(!o||o.startsWith(`../`)||T.isAbsolute(o))throw Error(`Preview file escapes the build output.`);let s=await v(n);if(s.length>1048576)throw Error(`Preview file ${o} exceeds 1 MiB.`);if(a+=s.length,a>10485760)throw Error(`Preview build exceeds 10 MiB.`);r.push(s),i.files.push({path:o,contentType:zo[T.extname(o)]??`application/octet-stream`,size:s.length,chunks:Math.ceil(s.length/Ro),sha256:D(`sha256`).update(s).digest(`hex`)})}if(!i.files.some(e=>e.path===`client.js`))throw Error(`Preview build is missing client.js.`);return{files:r,manifest:i,fingerprint:D(`sha256`).update(JSON.stringify(i)).digest(`hex`)}}function Uo(e,t,n){let r=0;return async()=>{let i=++r;try{let n=await e();i===r&&t(n)}catch(e){i===r&&n(e)}}}async function Wo(e,t){let{buildId:n}=await e.beginBuild({manifest:t.manifest});for(let[r,i]of t.files.entries())for(let a=0;a<(t.manifest.files[r]?.chunks??0);a++)await e.uploadChunk({buildId:n,fileIndex:r,chunkIndex:a,base64:i.subarray(a*Ro,(a+1)*Ro).toString(`base64`)});await e.commitBuild({buildId:n})}var Go=E.object({config:E.string().optional(),cwd:E.string().default(`.`),mode:E.string().optional(),outDir:E.string().optional(),replace:E.boolean().optional()}),Ko=e=>{let t=Go.parse(e);return{configPath:t.config,cwd:t.cwd,mode:t.mode,outDir:t.outDir,replace:t.replace}};async function qo(e){let t=await te(e.configPath,e.cwd);if(!t.config.appId)throw Error(`Missing appId. Deploy once before starting a remote preview.`);let n=await Qi(e),r=await Xi(n.hostUrl);if(!r?.deployToken)throw Error(`Not logged in. Run tailorkit login first.`);let{buildApp:i}=await import(`@tailorkit/app/builder`),a=await i({...e,watch:!0}),o=async()=>{a&&typeof a==`object`&&`close`in a&&await a.close()},s=await Jr({headers:{authorization:`Bearer ${r.deployToken}`},url:n.hostUrl}).preview.start({appId:t.config.appId,replaceActive:e.replace}).catch(async e=>{throw await o(),e}),l=`data`in s?s.data:s;if(!l)throw await o(),Error(`Unable to start preview session.`);let u=Jr({fetch:(e,t)=>fetch(e,{...t,signal:AbortSignal.timeout(5e3)}),headers:{authorization:`Bearer ${r.deployToken}`},url:n.hostUrl}),d=async()=>{try{await u.preview.stop({sessionId:l.sessionId})}catch(e){c.warn(`Unable to end preview session: ${Bo(e)}`)}},f=T.resolve(t.root,e.outDir??t.config.build?.outDir??`.tailorkit`),p,h;try{p=await b(T.join(f,`client`)),h=await Ho(p)}catch(e){try{await o()}catch(e){c.warn(`Unable to close preview watcher: ${Bo(e)}`)}throw await d(),e}let g,_,v,y=!1,x=!1,S,C,w,ee=0,E=1e3,D=0,ne=()=>{y||(y=!0,process.off(`SIGINT`,O),process.off(`SIGTERM`,O),S&&clearTimeout(S),C&&clearTimeout(C),w&&clearInterval(w),v?.close(),o().catch(e=>{c.warn(`Unable to close preview watcher: ${Bo(e)}`)}),c.warn(`Preview session ended. Start a new preview to continue.`))},re=()=>{y||!_||x||(S&&clearTimeout(S),S=setTimeout(()=>{if(S=void 0,!_||h.fingerprint===g)return;let e=h,t=_,n=D;x=!0,ee=Date.now(),Wo(t,e).then(()=>{n===D&&(g=e.fingerprint)}).catch(e=>{y||c.warn(`Preview upload interrupted: ${Bo(e)}`)}).finally(()=>{n===D&&(x=!1,h.fingerprint!==g&&re())})},Math.max(500,500-(Date.now()-ee))))},ie=Uo(()=>Ho(p),e=>{y||(h=e,re())},e=>{y||c.warn(`Keeping the last successful preview: ${Bo(e)}`)});a&&typeof a==`object`&&`on`in a&&a.on(`event`,e=>{e.code===`BUNDLE_END`&&ie()});let ae=()=>{if(y)return;let e=new URL(l.tunnelUrl);e.searchParams.set(`role`,`uploader`);let t=new WebSocket(e,l.tunnelToken);v=t,t.addEventListener(`open`,()=>{D+=1,E=1e3,_=qr(t);let e=()=>void _?.heartbeat().catch(e=>{v!==t||y||(Vo(e)?ne():t.close())});e(),w=setInterval(e,2e4),re()}),t.addEventListener(`close`,()=>{D+=1,x=!1,w&&clearInterval(w),v===t&&(v=void 0,_=void 0),y||(C=setTimeout(ae,E),E=Math.min(E*2,3e4))}),t.addEventListener(`error`,()=>t.close())};ae();let O=()=>{y||(y=!0,process.off(`SIGINT`,O),process.off(`SIGTERM`,O),o().catch(e=>{c.warn(`Unable to close preview watcher: ${Bo(e)}`)}),S&&clearTimeout(S),C&&clearTimeout(C),w&&clearInterval(w),v?.close(),d().finally(()=>process.exit(0)))};process.once(`SIGINT`,O),process.once(`SIGTERM`,O);let oe=new URL(n.hostUrl);oe.pathname=`${oe.pathname.replace(/\/+$/u,``)}/preview/${l.shareId}`,c.info(m.green(`Host preview: ${oe.href}`)),c.info(m.dim(`Uploading built app assets from ${p}`))}var Jo=e=>{let t=ee();return t===`darwin`?{args:[e],command:`open`}:t===`win32`?{args:[`/c`,`start`,``,e],command:`cmd`}:{args:[e],command:`xdg-open`}},Yo=e=>new Promise(t=>{let{args:n,command:r}=Jo(e),i=re(r,n,{detached:!0,stdio:`ignore`,windowsHide:!0});i.once(`error`,()=>{t(!1)}),i.once(`spawn`,()=>{i.unref(),t(!0)})}),$=p(`tailorkit`),Xo=e=>{if(e<1024)return`${e} B`;let t=[`KB`,`MB`,`GB`],n=e/1024,r=0;for(;n>=1024&&r<t.length-1;)n/=1024,r+=1;return`${n.toFixed(n>=10?1:2)} ${t[r]}`},Zo=async(e,t=!0)=>{let n=d(),r=!1;try{let i=await Zi(e,({expiresAt:e,hostUrl:i,userCode:a})=>{let o=Ki(i,a);t&&Yo(o),c.info(`Enter this code in the host app: ${m.bold(a)}`),c.info(`Approval URL: ${m.cyan(o)}`),c.info(`Code expires at ${e.toLocaleString()}.`),c.info(`Waiting for approval...`),n.start(`Checking approval status`),r=!0});return r&&n.stop(`Approved.`),i}catch(e){throw r&&n.stop(`Approval failed.`),e}};$.option(`--cwd <path>`,`Working directory`,{default:`.`}),$.command(`preview`,`Preview the app inside a host app`).option(`--config <path>`,`Path to tailorkit config`).option(`--out-dir <path>`,`Build output directory`).option(`--mode <mode>`,`Vite mode`).option(`--replace`,`End the active preview for this app and start a new one`).action(async e=>{o(m.bold(`TailorKit`));try{await qo(Ko(e))}catch(e){c.error(e instanceof Error?e.message:String(e)),process.exit(1)}}),$.command(`login`,`Authenticate the TailorKit CLI with a host app`).option(`--config <path>`,`Path to tailorkit config`).option(`--open`,`Open the approval URL in the default browser`,{default:!0}).option(`--timeout <seconds>`,`Seconds to wait for approval`,{default:1800}).action(async e=>{o(m.bold(`TailorKit`));try{let t=Number.parseInt(String(e.timeout??`1800`),10);if(!Number.isInteger(t)||t<=0)throw Error(`--timeout must be a positive integer.`);await Zo({configPath:e.config,cwd:String(e.cwd??`.`),timeout:t*1e3},e.open!==!1),l(`Authenticated successfully.`)}catch(e){c.error(e instanceof Error?e.message:String(e)),process.exit(1)}}),$.command(`logout`,`Remove stored TailorKit CLI credentials for a host app`).option(`--config <path>`,`Path to tailorkit config`).action(async e=>{o(m.bold(`TailorKit`));try{let t=await $i({configPath:e.config,cwd:String(e.cwd??`.`)});l(t.removed?`Logged out of ${m.cyan(t.hostUrl)}.`:`No stored credentials found for ${m.cyan(t.hostUrl)}.`)}catch(e){c.error(e instanceof Error?e.message:String(e)),process.exit(1)}}),$.command(`whoami`,`Show the current TailorKit CLI authentication scope`).option(`--config <path>`,`Path to tailorkit config`).action(async e=>{o(m.bold(`TailorKit`));try{let t=await Qi({configPath:e.config,cwd:String(e.cwd??`.`)});c.info(`Host: ${m.cyan(t.hostUrl)}`),c.info(`Scope: ${m.cyan(JSON.stringify(t.scope))}`),l(`Authenticated.`)}catch(e){c.error(e instanceof Error?e.message:String(e)),process.exit(1)}}),$.command(`deploy`,`Build and deploy the TailorKit app`).option(`--config <path>`,`Path to tailorkit config`).option(`--out-dir <path>`,`Build output directory`).option(`--mode <mode>`,`Vite mode`).action(async e=>{o(m.bold(`TailorKit`));let t=d();try{t.start(`Building and deploying app`);let n=await pa({configPath:e.config,cwd:String(e.cwd??`.`),mode:e.mode,onLoginRequired:async()=>{t.stop(`Authentication required.`);let n=await Zo({configPath:e.config,cwd:String(e.cwd??`.`)});return t.start(`Building and deploying app`),n},onMissingAppId:async({appName:e,configPath:n,hostUrl:r,reason:i})=>{t.stop(`App not linked.`),c.info(i===`missing`?`No appId found in ${m.cyan(n)}.`:`The appId in ${m.cyan(n)} does not exist.`),c.info(`Host: ${m.cyan(r)}`);let o=await a({initialValue:!0,message:i===`missing`?`Create a TailorKit app named ${e}?`:`Create a new TailorKit app named ${e} and update the config?`});return!s(o)&&(o&&t.start(`Creating app and deploying`),o===!0)},onTypecheckFailed:async({command:e,output:n})=>{t.stop(`Type check failed.`),c.error(`Type check failed while running ${m.cyan(e)}.`),n&&c.error(n);let r=await a({initialValue:!1,message:`Type check failed, but the app built successfully. Upload anyway?`});return!s(r)&&(r&&t.start(`Uploading app`),r===!0)},outDir:e.outDir});t.stop(`Deployed app.`),n.createdApp&&c.info(`Created app and updated tailorkit.config.ts with ${m.cyan(n.appId)}.`),c.info(`Host: ${m.cyan(n.hostUrl)}`),c.info(`App: ${m.cyan(n.appId)}`),c.info(`Deployment: ${m.cyan(n.deploymentId)}`),c.info(`Uploaded files:`);for(let e of n.uploadedFiles)c.info(` ${m.cyan(e.path)} ${m.dim(`${Xo(e.size)} raw, ${Xo(e.gzipSize)} gzip`)}`);n.status&&c.info(`Status: ${m.cyan(n.status)}`),l(`Deployment published.`)}catch(e){t.stop(`Deployment failed.`),c.error(e instanceof Error?e.message:String(e)),process.exit(1)}}),$.command(`build`,`Build the TailorKit app`).option(`--config <path>`,`Path to tailorkit config`).option(`--out-dir <path>`,`Build output directory`).option(`--mode <mode>`,`Vite mode`).action(async e=>{o(m.bold(`TailorKit`));try{let{buildApp:t}=await import(`@tailorkit/app/builder`);await t({configPath:e.config,cwd:String(e.cwd??`.`),mode:e.mode,outDir:e.outDir}),l(`Built app.`)}catch(e){c.error(e instanceof Error?e.message:String(e)),process.exit(1)}}),$.command(`db <command>`,`Generate database migrations with db generate`).option(`--config <path>`,`Path to tailorkit config`).option(`--name <name>`,`Migration name`).action(async(e,t)=>{o(m.bold(`TailorKit`));try{if(e!==`generate`)throw Error(`Unknown database command: ${e}. Use tailorkit db generate.`);let{generateAppMigrations:n}=await import(`@tailorkit/app/builder`),r=await n({configPath:t.config,cwd:String(t.cwd??`.`),name:t.name});l(`Migrations are up to date in ${m.cyan(r)}.`)}catch(e){c.error(e instanceof Error?e.message:String(e)),process.exit(1)}}),$.command(`generate`,`Generate TailorKit app bindings`).option(`--config <path>`,`Path to tailorkit config`).option(`--out <path>`,`Generated TypeScript output file`).action(async e=>{o(m.bold(`TailorKit`));try{let t=await Ja({configPath:e.config,cwd:String(e.cwd??`.`),outFile:e.out});l(`Generated ${m.cyan(t)}.`)}catch(e){c.error(e instanceof Error?e.message:String(e)),process.exit(1)}}),$.command(`init [directory]`,`Create a new TailorKit app`).option(`--name <name>`,`Package name`).option(`--host <url>`,`TailorKit host URL`).option(`--package-manager <pm>`,`Package manager: bun, yarn, pnpm, or npm`).option(`--lint`,`Add oxlint (use --no-lint to skip)`).option(`--format`,`Add oxfmt (use --no-format to skip)`).option(`--install`,`Install dependencies after scaffolding (use --no-install to skip)`).option(`--force`,`Overwrite existing files`).action(async(e,t)=>{o(m.bold(`TailorKit`));try{let n=await Lo({cwd:String(t.cwd??`.`),directory:e,force:t.force,formatting:t.format,host:t.host,install:t.install,linting:t.lint,name:t.name,packageManager:t.packageManager});l(`Created app at ${m.cyan(n)}.`)}catch(e){c.error(e instanceof Error?e.message:String(e)),process.exit(1)}}),$.help(),$.version(`0.1.0-beta.17`),$.parse();export{};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tailorkit/cli",
3
- "version": "0.1.0-beta.16",
3
+ "version": "0.1.0-beta.17",
4
4
  "license": "Apache-2.0",
5
5
  "repository": {
6
6
  "type": "git",
@@ -23,20 +23,20 @@
23
23
  },
24
24
  "dependencies": {
25
25
  "@clack/prompts": "^1.8.1",
26
- "@tailorkit/app": "0.1.0-beta.16",
27
- "@tailorkit/client-platform": "0.1.0-beta.16",
28
- "@tailorkit/core": "0.1.0-beta.16",
26
+ "@tailorkit/app": "0.1.0-beta.17",
27
+ "@tailorkit/client-platform": "0.1.0-beta.17",
28
+ "@tailorkit/core": "0.1.0-beta.17",
29
29
  "cac": "^7.0.0",
30
30
  "jose": "6.2.12",
31
31
  "liquidjs": "^10.29.0",
32
32
  "picocolors": "^1.1.1",
33
+ "vite": "npm:@voidzero-dev/vite-plus-core@1.0.0",
33
34
  "zod": "^4.6.5"
34
35
  },
35
36
  "devDependencies": {
36
37
  "@tailorkit/config": "0.0.0",
37
38
  "@types/node": "26.6.3",
38
39
  "typescript": "^7.0.2",
39
- "vite": "npm:@voidzero-dev/vite-plus-core@1.0.0",
40
40
  "vite-plus": "1.0.0"
41
41
  },
42
42
  "scripts": {