palbase 0.44.1 → 0.44.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai/index.js +2 -2
- package/dist/backend/engine.js +2 -2
- package/dist/backend/env.js +1 -1
- package/dist/backend/index.js +3 -3
- package/dist/backend/stack.js +1 -1
- package/dist/backend/test.js +2 -2
- package/dist/chunks/{RJYYBHRE.js → 2O456SJP.js} +2 -2
- package/dist/chunks/{BVLE3M57.js → 2UKXPD55.js} +2 -2
- package/dist/chunks/{BTO2F3RA.js → 32PKOO2G.js} +2 -2
- package/dist/chunks/{XMIGNCRO.js → BNMW5GTM.js} +2 -2
- package/dist/chunks/{VFXD5N7B.js → CS7ORNIL.js} +1 -1
- package/dist/chunks/{RRCMPGSQ.js → D5LMTC2J.js} +2 -2
- package/dist/chunks/{3EUGTM7R.js → DRJWUA4S.js} +1 -1
- package/dist/chunks/{DFT3KHRH.js → EHNXPFMW.js} +2 -2
- package/dist/chunks/{ANV23OPS.js → FDYCE744.js} +2 -2
- package/dist/chunks/{MFWSGSEL.js → GC7EQ7RE.js} +2 -2
- package/dist/chunks/{K3G3QG6H.js → GTUHGUQW.js} +2 -2
- package/dist/chunks/{SLIPXW3L.js → HJUNO2BJ.js} +2 -2
- package/dist/chunks/{4WWSBV72.js → HKI7EIZ2.js} +1 -1
- package/dist/chunks/{ISRUSUM5.js → HOGYHGSL.js} +2 -2
- package/dist/chunks/{2FPKHWVW.js → MPGER2LF.js} +2 -2
- package/dist/chunks/{GIQ62AMP.js → P6VBZ22Z.js} +2 -2
- package/dist/chunks/{WESL6FVS.js → R2QYK4S4.js} +2 -2
- package/dist/chunks/{CGP6K74O.js → SLJRNJ5W.js} +1 -1
- package/dist/chunks/{X6LXRZ3W.js → UVZ4TGRO.js} +2 -2
- package/dist/chunks/{5CC3IGUQ.js → X6MEWYA7.js} +1 -1
- package/dist/chunks/{FKDHMJRY.js → XCAG4JHP.js} +1 -1
- package/dist/chunks/{YBHGKJML.js → Z27XP2BK.js} +1 -1
- package/dist/chunks/{GJEJ43IS.js → ZETXRBPI.js} +2 -2
- package/dist/cli.js +3 -3
- package/dist/cloud/index.js +2 -2
- package/dist/refuse/ai.js +1 -1
- package/dist/refuse/backend.js +1 -1
- package/dist/refuse/cloud.js +1 -1
- package/dist/refuse/server.js +1 -1
- package/dist/server/index.js +2 -2
- package/dist/server/testing.js +2 -2
- package/dist/web/index.js +2 -2
- package/dist/web/message.js +2 -2
- package/dist/web/palbe.js +2 -2
- package/dist/web/paywall.js +2 -2
- package/dist/web/push-sw.js +1 -1
- package/dist/web/ssr.js +2 -2
- package/dist/web/vite.js +2 -2
- package/package.json +2 -2
- package/types/internal/src/modules/machines.d.ts +2 -2
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/*! palbase 0.44.
|
|
2
|
-
import{b as c,f as u}from"./
|
|
1
|
+
/*! palbase 0.44.2 — Palbase SDK License (see LICENSE) */
|
|
2
|
+
import{b as c,f as u}from"./FDYCE744.js";var l={attempts:3,maxWaitSeconds:30},y=new Set([429,502,503,504]);function x(e,t=l){let r=t.sleep??h;return{async send(o){let n=p(o),a=n.body,m=!a||a.kind!=="raw"||u(a.value),f=(n.method==="GET"||n.method==="HEAD"||n.idempotent===!0)&&m;for(let i=1;;i++)try{return await e.send(n)}catch(s){if(!f||i>=t.attempts||!(s instanceof c)||n.signal?.aborted)throw s;let d=b(s,i,t.maxWaitSeconds);if(d===void 0)throw s;await r(d*1e3,n.signal)}}}}function p(e){return e.idempotent?Object.entries(e.headers??{}).some(([r,o])=>r.toLowerCase()==="idempotency-key"&&o!==void 0&&o!==null&&o!=="")?e:{...e,headers:{...e.headers,"Idempotency-Key":w()}}:e}function b(e,t,r){return y.has(e.status)||e.code==="network_error"?e.retryAfter!==void 0?e.retryAfter<=r?e.retryAfter:void 0:Math.min(.5*2**(t-1),r)*(.8+Math.random()*.4):void 0}function h(e,t){return new Promise((r,o)=>{if(t?.aborted)return o(t.reason);let n=()=>{clearTimeout(a),o(t?.reason)},a=setTimeout(()=>{t?.removeEventListener("abort",n),r()},e);t?.addEventListener("abort",n,{once:!0})})}function w(){if(typeof crypto.randomUUID=="function")return crypto.randomUUID();let e=crypto.getRandomValues(new Uint8Array(16));e[6]=e[6]&15|64,e[8]=e[8]&63|128;let t=[...e].map(r=>r.toString(16).padStart(2,"0")).join("");return`${t.slice(0,8)}-${t.slice(8,12)}-${t.slice(12,16)}-${t.slice(16,20)}-${t.slice(20)}`}export{l as a,x as b,b as c,w as d};
|
package/dist/cli.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
/*! palbase 0.44.
|
|
2
|
+
/*! palbase 0.44.2 — Palbase SDK License (see LICENSE) */
|
|
3
3
|
var Bw=Object.defineProperty;var Ye=(e,t)=>{for(var n in t)Bw(e,n,{get:t[n],enumerable:!0})};import{parseArgs as Av}from"node:util";var zw=Symbol.for("palbase.data"),Ww=globalThis,Id=Ww[zw]??=new WeakSet;function Fw(e){return e instanceof Date||ArrayBuffer.isView(e)||e instanceof ArrayBuffer}function Ya(e){let t=[e];for(;t.length>0;){let n=t.pop();if(!(typeof n!="object"||n===null||Id.has(n)||Fw(n))){Id.add(n);for(let s of Array.isArray(n)?n:Object.values(n))t.push(s)}}return e}var Jw="X-PoW-Challenge-ID",Vw="X-PoW-Nonce";function Dd(e){if(typeof e!="object"||e===null)return null;let t=e;if(t.error!=="pow_required"||typeof t.challenge!="object"||t.challenge===null)return null;let{id:n,prefix:s,difficulty:a}=t.challenge;return typeof n!="string"||typeof s!="string"||typeof a!="number"||!Number.isInteger(a)||a<0?null:{id:n,prefix:s,difficulty:a}}function Hw(e){return 8*2**e}var ds;async function Yw(){if(ds)return ds;let e=globalThis;if(e.process?.versions?.node!==void 0||e.process?.versions?.bun!==void 0)try{let s=(await import("node:crypto")).createHash;if(typeof s=="function")return ds=a=>new Uint8Array(s("sha256").update(a).digest()),ds}catch{}let t=new TextEncoder;return ds=async n=>new Uint8Array(await crypto.subtle.digest("SHA-256",t.encode(n))),ds}function Xw(e){let t=0;for(let n of e){if(n===0){t+=8;continue}return t+Math.clz32(n)-24}return t}var Zw=4096,Qw=typeof globalThis.setImmediate=="function"?()=>new Promise(e=>globalThis.setImmediate(e)):()=>new Promise(e=>setTimeout(e,0));async function xd(e,t={}){if(e.difficulty>24)throw new Error(`proof-of-work: difficulty ${e.difficulty} is above auth's ceiling of 24`);let n=await Yw(),s=Hw(e.difficulty),a=Date.now()+(t.timeLimitMs??12e4);for(let i=0;i<s;i++){if(i%Zw===0&&i>0){if(await Qw(),t.signal?.aborted)throw t.signal.reason??new DOMException("proof-of-work aborted","AbortError");if(Date.now()>a)throw new Error(`proof-of-work: gave up on difficulty ${e.difficulty} after ${i} attempts`)}let r=n(e.prefix+i),o=r instanceof Uint8Array?r:await r;if(Xw(o)>=e.difficulty)return{[Jw]:e.id,[Vw]:String(i)}}throw new Error(`proof-of-work: no nonce for difficulty ${e.difficulty} within ${s} attempts`)}var C=class extends Error{status;code;requestId;retryAfter;body;op;get isNetworkError(){return this.code==="network_error"}constructor(t){super(t.message,t.cause===void 0?void 0:{cause:t.cause}),this.name="PalbaseError",this.op=t.op,this.status=t.status,this.code=t.code,this.requestId=t.requestId,this.retryAfter=t.retryAfter,this.body=t.body}};function c(e,t,n){let s=String(n);if(s===""||s==="."||s==="..")throw new C({op:e,status:0,code:"invalid_path_parameter",message:`${e}: ${t} cannot be ${s===""?"empty":JSON.stringify(s)}`});return encodeURIComponent(s)}var ev=new Set(["apikey","authorization"]),tv=64*1024;function Jr(e){let t=Xa(e.baseUrl),n=e.fetch??globalThis.fetch,s=e.solveProofOfWork??!0,a=async(i,r)=>{let o=av(t,i),l=new Headers;for(let[b,w]of Object.entries(i.headers??{}))w!=null&&!ev.has(b.toLowerCase())&&l.set(b,String(w));for(let[b,w]of Object.entries(r))l.set(b,w);await iv(i,e.credentials,l),l.has("accept")||l.set("accept","application/json");let p={method:i.method,headers:l,redirect:"manual",signal:i.signal,...i.keepalive?{keepalive:!0}:{}};i.body&&i.body.value!==void 0&&(l.set("content-type",i.body.contentType),p.body=rv(i.body.kind,i.body.value),ps(p.body)||(p.duplex="half"));let d;try{d=i.onUploadProgress&&e.xmlHttpRequest?await nv(e.xmlHttpRequest,i.op,o,p,i.onUploadProgress):await n(o,p)}catch(b){throw i.signal?.aborted||b instanceof C?b:new C({op:i.op,status:0,code:"network_error",message:`${i.op}: the request did not reach ${t.origin}`,cause:b})}let u=i.answers[d.status]??(i.ownResponse&&d.status>=200&&d.status<300?"raw":void 0);if(u===void 0)throw d.status>=200&&d.status<300?(await d.body?.cancel(),new C({op:i.op,status:d.status,code:"undeclared_answer",message:`${i.op}: the server answered ${d.status}, which its contract does not declare; the request may have taken effect`})):await lv(i.op,d);let g;switch(u){case"json":try{g=Ya(await d.json())}catch(b){throw new C({op:i.op,status:d.status,code:"invalid_json",message:`${i.op}: the answer is not JSON`,cause:b})}break;case"raw":g=d;break;default:await d.body?.cancel(),g=void 0}return{status:d.status,data:g,headers:d.headers}};return{async send(i){try{return await a(i,{})}catch(r){let o=s&&r instanceof C&&r.status===403?Dd(r.body):null,l=i.body?.value;if(!o||i.body?.kind==="raw"&&!ps(l))throw r;let p=r,d;try{d=await xd(o,{signal:i.signal})}catch(u){throw i.signal?.aborted?u:new C({op:i.op,status:403,code:"pow_unsolved",message:`${i.op}: ${u instanceof Error?u.message:String(u)}`,requestId:p.requestId,body:p.body,cause:u})}return a(i,d)}}}}function nv(e,t,n,s,a){return new Promise((i,r)=>{let o=s.signal;if(o?.aborted)return r(o.reason);let l=new e,p=()=>l.abort();o?.addEventListener("abort",p,{once:!0});let d=u=>{o?.removeEventListener("abort",p),u()};l.open(s.method??"GET",n.href),l.responseType="arraybuffer",new Headers(s.headers).forEach((u,g)=>l.setRequestHeader(g,u)),l.upload&&(l.upload.onprogress=u=>{u.lengthComputable&&a(u.loaded,u.total)}),l.onload=()=>d(()=>{if(l.responseURL!==""&&l.responseURL!==n.href){r(new C({op:t,status:0,code:"undeclared_redirect",message:`${t}: the server redirected; the answer is another address's, and was not read`}));return}if(l.status<200||l.status>599)return r(new TypeError(`${t}: answered ${l.status}`));let u=l.status===204||l.status===205||l.status===304;i(new Response(u?null:l.response,{status:l.status,statusText:l.statusText,headers:sv(l.getAllResponseHeaders())}))}),l.onerror=()=>d(()=>r(new TypeError(`${t}: the request failed`))),l.onabort=()=>d(()=>r(o?.reason??new DOMException("The request was aborted","AbortError"))),l.send(s.body)})}function sv(e){let t=new Headers;for(let n of e.split(/\r?\n/)){let s=n.indexOf(":");if(!(s<=0))try{t.append(n.slice(0,s).trim(),n.slice(s+1).trim())}catch{}}return t}function Xa(e){let t;try{t=new URL(e)}catch{throw new TypeError(`baseUrl ${JSON.stringify(e)} is not an absolute URL`)}let n=t.hostname==="localhost"||t.hostname.endsWith(".localhost")||t.hostname==="127.0.0.1"||t.hostname==="[::1]";if(t.protocol!=="https:"&&!(t.protocol==="http:"&&n))throw new TypeError(`baseUrl must be https (http only for a loopback address): ${t.origin}`);if(t.username||t.password||t.search||t.hash)throw new TypeError("baseUrl carries no user, query or fragment");if(t.pathname!=="/"&&t.pathname!=="")throw new TypeError("baseUrl is the project origin alone, with no path");return t}function av(e,t){if(!t.path.startsWith("/")||t.path.startsWith("//"))throw new C({op:t.op,status:0,code:"invalid_path",message:`${t.op}: path ${JSON.stringify(t.path)} is not absolute`});let n=new URL(t.path+ov(t.query),e);if(n.origin!==e.origin)throw new C({op:t.op,status:0,code:"invalid_path",message:`${t.op}: path leaves the project's origin`});return n}async function iv(e,t,n){if(e.auth.length===0)return;let s=e.auth.some(r=>r.includes("userJWT"))?await t.accessToken?.():void 0,a=r=>{switch(r){case"ApiKeyAuth":return!!(t.publishableKey??t.secretKey);case"SecretKeyAuth":case"AdminAuth":return!!(t.secretKey??t.token);case"PalbaseBearer":return!!t.token;case"userJWT":return!!s&&!t.token;default:return!1}},i=e.auth.filter(r=>r.every(a)).reduce((r,o)=>r===void 0||o.length>r.length?o:r,void 0);if(!i)throw new C({op:e.op,status:0,code:"missing_credential",message:`${e.op} needs one of: ${e.auth.map(r=>r.length===0?"nothing":r.join(" + ")).join(" | ")}`});for(let r of i)r==="ApiKeyAuth"?n.set("apikey",t.publishableKey??t.secretKey):(r==="SecretKeyAuth"||r==="AdminAuth"||r==="PalbaseBearer")&&t.token?n.set("authorization",`Bearer ${t.token}`):r==="SecretKeyAuth"||r==="AdminAuth"?n.set("apikey",t.secretKey):r==="userJWT"&&n.set("authorization",`Bearer ${s}`)}function rv(e,t){switch(e){case"json":return JSON.stringify(t);case"form":{let n=new URLSearchParams;for(let[s,a]of Object.entries(t))Vr(n,s,a);return n}case"raw":return t}}function ps(e){return!!(e==null||typeof e=="string"||e instanceof URLSearchParams||e instanceof Blob||e instanceof FormData||e instanceof ArrayBuffer||ArrayBuffer.isView(e))}function ov(e){if(!e)return"";let t=new URLSearchParams;for(let[s,a]of Object.entries(e))Vr(t,s,a);let n=t.toString();return n===""?"":`?${n}`}function Vr(e,t,n){if(n!=null){if(Array.isArray(n)){for(let s of n)Vr(e,t,s);return}if(n instanceof Date){e.append(t,n.toISOString());return}e.append(t,typeof n=="object"?JSON.stringify(n):String(n))}}async function lv(e,t){let n=await dv(t,tv).catch(()=>""),s;try{s=n===""?void 0:JSON.parse(n)}catch{s=n}let a=pv(s)?s:void 0,i=Number(t.headers.get("retry-after")),r=t.status>=300&&t.status<400;return new C({op:e,status:t.status,code:a?.error??(r?"undeclared_redirect":`http_${t.status}`),message:a?.error_description??(r?`${e}: the server redirected (${t.status}); the request was not followed, its credentials stay here`:`${e}: ${t.status} ${t.statusText}`.trim()),requestId:a?.request_id??t.headers.get("x-request-id")??void 0,retryAfter:a?.retry_after??(Number.isFinite(i)&&i>0?i:void 0),body:s})}async function dv(e,t){if(!e.body)return"";let n=e.body.getReader(),s=[],a=0;for(;a<t;){let{done:o,value:l}=await n.read();if(o)break;s.push(l),a+=l.byteLength}await n.cancel().catch(()=>{});let i=new Uint8Array(Math.min(a,t)),r=0;for(let o of s){let l=Math.min(o.byteLength,i.byteLength-r);if(i.set(o.subarray(0,l),r),r+=l,r>=i.byteLength)break}return new TextDecoder().decode(i)}function pv(e){return typeof e=="object"&&e!==null&&typeof e.error=="string"}var Za={project:{type:"string",short:"P",value:"project",description:"the project (name or id; org/project when the name is in two organizations)"},env:{type:"string",short:"E",value:"env",description:"the project's environment (slug or ref)"},json:{type:"boolean",description:"print the answer as JSON"},"non-interactive":{type:"boolean",description:"never ask: refuse what would need a question"},yes:{type:"boolean",short:"y",description:"confirm a change to a production environment without asking"},debug:{type:"boolean",description:"print each request the command sends"},help:{type:"boolean",short:"h",description:"show help"}};var f=class extends Error{exitCode;hint;code;reported;constructor(t,n,s={}){super(n),this.name="CliError",this.code=t,this.hint=s.hint,this.exitCode=s.exitCode??1,this.reported=s.reported??!1}};function m(e,t){return new f("usage",e,{hint:t,exitCode:2})}var Qa=class{io;json;constructor(t,n){this.io=t,this.json=n}result(t,n){this.json?this.io.stdout(`${JSON.stringify(t,null,2)}
|
|
4
4
|
`):n()}line(t=""){this.io.stdout(`${N(t)}
|
|
5
5
|
`)}note(t){this.io.stderr(`${N(t)}
|
|
@@ -9,7 +9,7 @@ var Bw=Object.defineProperty;var Ye=(e,t)=>{for(var n in t)Bw(e,n,{get:t[n],enum
|
|
|
9
9
|
`);let r;try{r=await this.io.fetch(t,{method:n.method,headers:{...n.headers,...a},body:n.body,signal:n.signal,...s?{}:{duplex:"half"},redirect:"manual"})}catch(l){throw n.signal?.aborted?l:new f("network_error",`${new URL(t).origin} could not be reached: ${l instanceof Error?l.message:String(l)}`)}if(this.debug&&this.io.stderr(`< ${r.status} ${r.headers.get("x-request-id")??""}
|
|
10
10
|
`),r.status!==503||!s||i>=Sv||!kv.has(await Xr(r)??""))return r;await r.body?.cancel();let o=Number(r.headers.get("retry-after")??"");await this.io.sleep((Number.isFinite(o)&&o>0?Math.min(o,30):1)*1e3)}}async exchange(t,n,s){let a=await this.token(),i=await this.send(t,n,s,a.value);if(i.status===401&&a.renewable){let r=await this.renew(await this.currentSession());i=await this.send(t,n,s,r.access_token)}return{res:i,renewable:a.renewable}}async answered(t,n,s,a){if(s.status===204)return;let i=await s.text(),r=i===""?void 0:$v(i);if(s.ok)return r;let o=r??{};throw s.status===401?o.error==="token_not_for_machines"?Qd(new URL(this.cloud.studioApi).host):a?us():this.tokenRefused("Studio"):new C({op:`${t} ${n}`,status:s.status,code:o.error??`http_${s.status}`,message:o.error_description??`Studio answered ${s.status}`,requestId:o.request_id??s.headers.get("x-request-id")??void 0,body:r})}tokenRefused(t){return(this.io.env.PALBASE_TOKEN??"").startsWith("pbe_")?new f("token_refused",`${t} refused PALBASE_TOKEN, an environment's token: it ended (a few hours at most), it was revoked, or what minted it no longer holds`,{hint:"mint another: palbase env:tokens:create --scope <scope> (an admin), or with the environment's secret key (Studio's POST /environments/{ref}/tokens)"}):(this.io.env.PALBASE_TOKEN??"").startsWith("pbu_")?new f("token_refused",`${t} refused PALBASE_TOKEN, an account token: it was revoked, it ended, or, in this organization, the one who made it left it`,{hint:"its maker makes a new one: palbase account:tokens:create <name>"}):new f("token_refused",`${t} refused PALBASE_TOKEN: it was revoked, it ended, or the one who made it no longer holds its role`,{hint:"an admin makes a new one: palbase tokens:create <name>"})}async token(){let t=this.io.env.PALBASE_TOKEN;return t&&t!==""?{value:t,renewable:!1}:{value:(await this.currentSession()).access_token,renewable:!0}}async renew(t){let n=await Hd(this.io,this.cloud,t);return await this.state.writeSession(n),this.session=n,n}async send(t,n,s,a){let i=`${this.cloud.studioApi}${_v}${n}`;this.debug&&this.io.stderr(`> ${t} ${i}
|
|
11
11
|
`);try{let r=await this.io.fetch(i,{method:t,headers:{...a===void 0?{}:{authorization:`Bearer ${a}`},accept:"application/json",...s===void 0?{}:{"content-type":"application/json"}},body:s===void 0?void 0:JSON.stringify(s),redirect:"manual"});return this.debug&&this.io.stderr(`< ${r.status} ${r.headers.get("x-request-id")??""}
|
|
12
|
-
`),r}catch(r){throw new f("network_error",`Studio (${this.cloud.studioApi}) could not be reached: ${r instanceof Error?r.message:String(r)}`)}}};function Qd(e){return new f("token_not_for_machines",`the platform's edge refused PALBASE_TOKEN at ${e}, taking it for a machine's address (token_not_for_machines): the token itself was not refused`,{hint:"nothing is wrong with the token: run this again in a few minutes, and tell Palbase if it lasts"})}async function Xr(e){let t=await e.clone().json().catch(()=>null),n=t&&typeof t=="object"?t.error:void 0;return typeof n=="string"&&/^(console|token|edge)_/.test(n)?n:void 0}function $v(e){try{return JSON.parse(e)}catch{return e}}var ep={version:"0.44.
|
|
12
|
+
`),r}catch(r){throw new f("network_error",`Studio (${this.cloud.studioApi}) could not be reached: ${r instanceof Error?r.message:String(r)}`)}}};function Qd(e){return new f("token_not_for_machines",`the platform's edge refused PALBASE_TOKEN at ${e}, taking it for a machine's address (token_not_for_machines): the token itself was not refused`,{hint:"nothing is wrong with the token: run this again in a few minutes, and tell Palbase if it lasts"})}async function Xr(e){let t=await e.clone().json().catch(()=>null),n=t&&typeof t=="object"?t.error:void 0;return typeof n=="string"&&/^(console|token|edge)_/.test(n)?n:void 0}function $v(e){try{return JSON.parse(e)}catch{return e}}var ep={version:"0.44.2"};var ai=ep.version;async function ip(e,t,n){let s=new Map(n.map(r=>[r.name,r])),a=e.includes("--json"),i=e.includes("--debug");try{let{name:r,at:o}=Rv(e);if(r===void 0)return e.includes("--version")?(t.stdout(`palbase ${ai}
|
|
13
13
|
`),0):(t.stdout(ap(n)),e.length===0||e.includes("--help")||e.includes("-h")?0:2);if(r==="help"){let S=e[o+1],$=S===void 0?void 0:s.get(S);if(S!==void 0&&!$)throw tp(S,n);return t.stdout($?sp($):ap(n)),0}let l=s.get(r);if(!l)throw tp(r,n);let p=[...e.slice(0,o),...e.slice(o+1)];if(p.includes("--help")||p.includes("-h"))return t.stdout(sp(l)),0;let{flags:d,positionals:u}=Tv(l,p),g=l.args??{min:0,max:0};if(u.length<g.min)throw m(`${l.name} needs ${g.min===1?"an argument":`${g.min} arguments`}`,Qr(l));if(u.length>g.max)throw m(`${l.name} takes ${g.max===0?"no argument":`at most ${g.max}`}: ${JSON.stringify(u.slice(g.max))} is left over`,Qr(l));let b={project:d.project,env:d.env,json:d.json===!0,nonInteractive:d["non-interactive"]===!0,yes:d.yes===!0,debug:d.debug===!0},w=Bd(t.env),_=new ei(Fd(t.configDir,w)),P={io:t,state:_,out:new Qa(t,b.json),global:b,args:u,flags:d,interactive:t.interactive&&!b.nonInteractive,cloud:w,studio:new si(t,w,_,b.debug)};return await l.run(P)??0}catch(r){return Ev(r,t,a,i)}}function Rv(e){let t=new Set;for(let[n,s]of Object.entries(Za))s.type==="string"&&(t.add(`--${n}`),s.short&&t.add(`-${s.short}`));for(let n=0;n<e.length;n++){let s=e[n];if(s==="--")return{at:-1};if(t.has(s)){n++;continue}if(!s.startsWith("-"))return{name:s,at:n}}return{at:-1}}function Tv(e,t){let n={...Za,...e.flags??{}},s={};for(let[a,i]of Object.entries(n))s[a]={type:i.type,...i.short?{short:i.short}:{},...i.multiple?{multiple:!0}:{}};try{let{values:a,positionals:i}=Av({args:t,options:s,strict:!0,allowPositionals:!0});return{flags:a,positionals:i}}catch(a){throw m(a instanceof Error?a.message.replace(/^.*?: /,""):String(a),`palbase help ${e.name}`)}}function Ev(e,t,n,s){let a="error",i,r,o=1,l;return e instanceof f?(a=e.code,i=e.message,r=e.hint,o=e.exitCode):e instanceof C?(a=e.code,i=e.message,l=e.requestId,e.code==="token_out_of_scope"&&t.env.PALBASE_TOKEN&&(i=`${e.op} refused PALBASE_TOKEN: ${e.message}`,r="this is the token's reach, fixed when it was minted: a person's yes does not change it \u2014 mint a token whose scopes name this call, or have a person run it signed in")):i=e instanceof Error?e.message:String(e),n&&e instanceof f&&e.reported||(n&&t.stdout(`${JSON.stringify({error:a,message:i,...r?{hint:r}:{},...l?{request_id:l}:{}},null,2)}
|
|
14
14
|
`),t.stderr(`error: ${N(i)}${l?` (request ${N(l)})`:""}
|
|
15
15
|
`),r&&t.stderr(` ${N(r)}
|
|
@@ -34,7 +34,7 @@ var Bw=Object.defineProperty;var Ye=(e,t)=>{for(var n in t)Bw(e,n,{get:t[n],enum
|
|
|
34
34
|
`)+1,s=t.slice(n,n+256);if(n>0&&s!==""){for(let a=e.indexOf(s);a>=0;a=e.indexOf(s,a+1))if(t.startsWith(e.slice(a),n))return t.slice(n+e.length-a)}return t}function vk(e){return e.pull_request?` (preview of #${e.pull_request})`:e.branch?` (preview of ${e.branch})`:""}async function _k(e,t,n,s){let a=n.name,i=!1,r=()=>{},o=new Promise(u=>r=u),l=()=>{i=!0,r()},p=async()=>(await Promise.race([e.io.sleep(2e3),o]),i),d=u=>(e.out.note(u?`Stopped following: the build ${u} goes on (palbase hosting:builds ${u} --site ${a} --wait follows it, hosting:builds:cancel ${u} --site ${a} cancels it).`:`Stopped following: the build goes on (palbase hosting:builds --site ${a}).`),130);process.once("SIGINT",l);try{let u;for(let _=0;;_++){let{builds:P}=await h(e,t,"GET",`/sites/${de(a)}/builds`);if(u=P.find(S=>!s.has(S.id)&&!S.pull_request&&!S.branch)?.id,u)break;if(_===60)throw new f("build_not_queued",`no build of ${a} was queued in 2 minutes`,{hint:`palbase hosting:builds --site ${a}`});if(await p())return d()}let g="",b="",w="";for(let _=0;;_++){let P=await h(e,t,"GET",`/sites/${de(a)}/builds/${x("the build",u)}`),S=`build ${P.id.slice(0,8)} (${P.commit.slice(0,7)}): ${P.state}`;if(S!==g&&e.out.note(` ${S}`),g=S,P.log&&!e.global.json){let $=w+wk(b,P.log),A=$.lastIndexOf(`
|
|
35
35
|
`)+1;e.io.stdout(N($.slice(0,A))),w=$.slice(A),b=P.log}if(P.state!=="queued"&&P.state!=="building")return w!==""&&e.io.stdout(`${N(w)}
|
|
36
36
|
`),e.out.result({site:a,url:n.url,build:P},()=>e.out.line(P.state==="succeeded"?`${a} serves the build of ${P.commit.slice(0,7)}: ${n.url}`:`The build ${P.state}${P.reason?`: ${P.reason}`:""} \u2014 ${a} serves what it served.`)),P.state==="succeeded"?0:1;if(_===900)throw new f("timeout",`the build ${u} was still ${P.state} after 30 minutes; it goes on`,{hint:`palbase hosting:builds ${u} --site ${a} --wait`});if(await p())return d(u)}}finally{process.removeListener("SIGINT",l)}}var kk={name:"hosting:build",summary:"build a site's branch head now and serve it, as a push does \u2014 following the build to its end, its log as it grows",usage:"[--site <name>] [--no-wait]",details:["It ends as the build does: 0 once the site serves it (its address printed), 1 when it failed or was cancelled \u2014 the site serves what it served.","Ctrl-C stops following it, not the build: hosting:builds:cancel cancels it.",te("site")],flags:{...ot,"no-wait":{type:"boolean",description:"ask for the build and end: hosting:builds follows it"}},scope:"environment",async run(e){let{t,site:{name:n}}=await rt(e,_t(e),e.flags.site!==void 0);await v(e,t,`build ${n} from the head of its branch`);let a=e.flags["no-wait"]!==!0?new Set((await h(e,t,"GET",`/sites/${de(n)}/builds`)).builds.map(r=>r.id)):void 0,i=await h(e,t,"POST",`/sites/${de(n)}/builds`);if(a)return _k(e,t,i,a);e.out.result(i,()=>e.out.line(`${i.name}: a build of ${i.source?.branch??"its branch"}'s head is on its way (palbase hosting:builds --site ${i.name}).`))}},Sk={name:"hosting:previews",summary:"a site's previews \u2014 its pull requests' and its other branches' \u2014 newest first: where each answers, and whether it is built",usage:"[--site <name>]",details:["A branch's preview answers at <name>-git-<branch>-<ref> from its first push while the site previews, until the branch is deleted or a month passes with no push.",te("site")],flags:ot,scope:"environment",async run(e){let{t,site:{name:n}}=await rt(e,_t(e),e.flags.site!==void 0),{previews:s,branches:a=[]}=await h(e,t,"GET",`/sites/${de(n)}/previews`);e.out.result({previews:s,branches:a},()=>{(s.length>0||a.length===0)&&Fo(e,s,`${n} has no preview: a site built from GitHub previews its pull requests and its other branches with hosting:sites:update ${n} --previews.`);for(let i of a)e.out.line(`branch ${i.branch} ${i.state} ${i.commit.slice(0,7)} ${i.url}`)})}},$k={name:"hosting:previews:links",summary:"a site's share links that have not ended: each opens its protected previews to whoever holds it \u2014 never their tokens",usage:"[--site <name>]",details:[te("site")],flags:ot,scope:"environment",async run(e){let{t,site:{name:n}}=await rt(e,_t(e),e.flags.site!==void 0),{links:s}=await h(e,t,"GET",`/sites/${de(n)}/previews/links`);e.out.result({links:s},()=>{s.length===0&&e.out.line(`${n} has no share link: palbase hosting:previews:link --site ${n} makes one.`),e.out.table(s,[{header:"link",value:a=>a.id},{header:"name",value:a=>a.name},{header:"made by",value:a=>a.made_by},{header:"ends",value:a=>a.expires_at}])})}},Pk={name:"hosting:previews:link",summary:"make a share link of a site's protected previews: whoever holds it opens any of them, for 1 to 30 days",usage:"[--site <name>] [--name <name>] [--days <1-30>]",details:["Its token is printed this once: add ?_palbase_pass=<token> to any preview's address and the preview opens \u2014 for a reviewer, a client, a test run. hosting:previews:unlink closes the previews to it at once.","A site has 20 at most.",te("site")],flags:{...ot,name:{type:"string",value:"name",description:"what it is for, as the links are listed: who holds it (64 at most)"},days:{type:"string",value:"days",description:"how many days it opens the previews, 1 to 30 (default: 7)"}},scope:"environment",async run(e){let t=e.flags.days===void 0?void 0:Number(e.flags.days);if(t!==void 0&&(!Number.isInteger(t)||t<1||t>30))throw m("--days is a whole number of days, 1 to 30");let n=e.flags.name;if(n!==void 0&&n.length>64)throw m("a link's --name is 64 characters at most");let{t:s,site:{name:a}}=await rt(e,_t(e),e.flags.site!==void 0);await v(e,s,`make a share link that opens ${a}'s previews to whoever holds it${t!==void 0?`, for ${t} days`:""}`);let i=await h(e,s,"POST",`/sites/${de(a)}/previews/links`,{...n!==void 0?{name:n}:{},...t!==void 0?{days:t}:{}});e.out.result(i,()=>{e.out.line(`Made the share link ${i.id}${i.name?` (${i.name})`:""}: it opens ${a}'s previews until ${i.expires_at}. Its token:`),e.out.line(` ${i.token??""}`),e.out.line(`Add ?_palbase_pass=<token> to any preview's address (palbase hosting:previews --site ${a} lists them). It is shown this once; palbase hosting:previews:unlink ${i.id} --site ${a} closes the previews to it.`)})}},Ak={name:"hosting:previews:unlink",summary:"delete a share link: the site's previews close to it at once",usage:"<link id> [--site <name>]",details:[te("site")],args:{min:1,max:1},flags:ot,scope:"environment",async run(e){let{t,site:{name:n}}=await rt(e,_t(e),e.flags.site!==void 0);await v(e,t,`delete the share link ${e.args[0]} of ${n}'s previews`),await h(e,t,"DELETE",`/sites/${de(n)}/previews/links/${x("the link's id",e.args[0])}`),e.out.result({deleted:e.args[0]},()=>e.out.line(`Deleted the share link ${e.args[0]}: ${n}'s previews are closed to it.`))}},Rk={name:"hosting:previews:pass",summary:"an address that opens one of a site's protected previews in your browser, as you: for 12 hours",usage:"<preview url> [--site <name>]",details:["The address is the preview's, with a pass of yours in its query: opened in a browser, the preview keeps it in a cookie of its own and opens for 12 hours. A team member's alone \u2014 share links (hosting:previews:link) are for others.",te("site")],args:{min:1,max:1},flags:ot,scope:"environment",async run(e){let t;try{t=new URL(e.args[0])}catch{throw m(`${JSON.stringify(e.args[0])} is not an address: a preview's, as hosting:previews lists it`)}if(t.protocol!=="https:")throw m("a preview's address is https://\u2026");let{t:n,site:{name:s}}=await rt(e,_t(e),e.flags.site!==void 0),a=await h(e,n,"POST",`/sites/${de(s)}/previews/pass`,{to:t.href});e.out.result(a,()=>{e.out.line(a.url),e.out.note(`Open it in your browser: it opens the preview, as you, until ${a.expires_at}.`)})}},Tk=zo("site","hosting",Ci,ot),Ek=Wo("site","hosting",Ci,ot),Ck=Vo("site","hosting",Ci,ot),jk=Jo("site","hosting",Ci,ot),Xc=[pk,uk,ck,hk,mk,gk,fk,yk,bk,kk,Ck,...jk,Sk,Ek,$k,Pk,Ak,Rk,...Tk];function Qc(e){return`its last push (${T(e.commit.slice(0,7))}) did not roll out \u2014 ${T(ks(e.reason))}`}function Ok(e){let t=`${e.running_version} serving`;if(e.version!==e.running_version){let s={waiting:"waiting to roll out",not_up:"not up",given_up:"given up on",migration:"held by its database migration",stopped:"not up (the machine is stopped)",failed:"not up (the machine cannot run)",no_room:"waiting for room in the cluster"}[e.state_reason_kind??""]??(e.state_reason?"not up":"rolling out");t+=`, ${e.version} ${s}`}return`${t}${e.build?` (build ${e.build.id}, ${e.build.commit.slice(0,7)})`:""}`}function Oi(e){return e.state_reason_kind==="no_room"?`${e.state}, waiting for room`:e.state}function ks(e){return e.split(/\r?\n/).map(t=>t.trim()).filter(t=>t!=="").join(" \xB7 ")}function Mk(e){let t=e.openapi_path?`, from ${e.openapi_path}`:"";switch(e.contract_state){case"refused":return`refused: ${(e.contract_error??"its app wrote none").split(/\r?\n/).filter(s=>s.trim()!=="").map(T).join(`
|
|
37
|
-
${" ".repeat(15)}`)}${t}`;case"none":return`none: its app serves none${t}`}return`${e.contract_digest?`sha256:${e.contract_digest.slice(0,12)}\u2026`:"none read"}${t}`}var Lk=/^[a-z]([a-z0-9-]{0,30}[a-z0-9])?$/;async function U(e,t,n,s,a,i){return(await _e(e.studio,t.env_ref,n,s,a,i)).body}function ne(e){if(!Lk.test(e))throw m(`${JSON.stringify(e)} is not a name: lowercase letters, digits and dashes, starting with a letter`);return encodeURIComponent(e)}async function ue(e,t){let n=await pn(e),s=n.t,{body:a,etag:i}=await _e(e.studio,s.env_ref,"GET",`/machines/${ne(t??await Dk(e,n))}`);return await On(e,n,a,()=>Ik(e,s),`the machine ${a.name}`),{t:await Ln(e,s,a.environment,`the machine ${a.name}`),name:a.name,machine:a,etag:i}}async function Ik(e,t){return oa(async n=>{let s=await U(e,t,"GET",`/machines?limit=100${n?`&cursor=${encodeURIComponent(n)}`:""}`);return{items:s.machines,next:s.next_cursor}})}async function eh(e,t,n){return oa(async s=>{let a=await U(e,t,"GET",ci(e,t,`/${n}?limit=100${s?`&cursor=${encodeURIComponent(s)}`:""}`));return{items:a[n],next:a.next_cursor}})}async function Dk(e,t){let{machines:n}=await U(e,t.t,"GET",ui(t,"/machines?limit=100"));if(n.length===1)return n[0].name;let s=await cs(e.io,e.io.cwd),a=s?.repository?n.filter(r=>r.source.repository.toLowerCase()===s.repository?.toLowerCase()&&(r.source.path??"")===s.path):[];if(a.length===1)return a[0].name;let i=t.by==="fallback"?"the project":`the environment ${t.t.env_slug}`;throw n.length===0?new f("no_machine",`${i} has no machine yet`,{hint:"make one with palbase machines:create"}):m("which machine? name it",`${i}'s machines: ${n.map(r=>r.name).join(", ")}`)}var Mi=async e=>{let{t,name:n}=await ue(e,e.flags.machine);return{t,path:`/machines/${ne(n)}`}},Ge={machine:{type:"string",value:"name",description:"the machine (default: the only one of the environment chosen here or -E's, the project's only one when neither says, or this directory's)"}},xk="Named by none, it is the only machine of the environment chosen for this directory or named by -E \u2014 never one bound elsewhere \u2014 else, when neither says, the project's only one; or the one this directory's code is built into.",ye=[te("machine"),xk];function th(e){let t=e.price_micros_per_hour;if(t===void 0)return e.free?"free":"";if(e.free)return`free, then $${(t/1e6).toFixed(3)} an hour`;let n=Math.round(t*730/1e4),s=n%100===0;return`$${(n/100).toLocaleString("en-US",{minimumFractionDigits:s?0:2,maximumFractionDigits:s?0:2})} a month${e.sleeps?" awake":""}`}function Nk(e){let t=`${(e.storage_bytes/1e9).toFixed(0)} GB`;return e.storage_adjustable?`${t}, or what you say (up to ${(e.max_storage_gb??4e3).toLocaleString("en-US")})`:t}function qk(e){return`$${(e/1e6).toFixed(2)}`}function nh(e){return e>=1024&&e%1024===0?`${e/1024} GiB`:`${e} MiB`}function ji(e){return e<1e9?`${Number((e/1e6).toFixed(1)).toLocaleString("en-US")} MB`:`${Number((e/1e9).toFixed(2)).toLocaleString("en-US")} GB`}var sh={name:"machines:sizes",summary:"the machine sizes, and which of them this environment may open now",scope:"environment",async run(e){let t=await y(e),{sizes:n}=await U(e,t,"GET","/machines/sizes");e.out.result({sizes:n},()=>e.out.table(n,[{header:"size",value:s=>s.name},{header:"cpu",value:s=>`${s.vcpu} vCPU`},{header:"memory",value:s=>nh(s.memory_mib)},{header:"sleeps",value:s=>s.sleeps?"when idle":"never"},{header:"price",value:s=>th(s)},{header:"open",value:s=>s.available?"yes":`no \u2014 ${s.reason??""}`}]))}},ah={name:"databases:sizes",summary:"the database sizes, and which of them this environment may open now",details:["A size that never sleeps holds the storage its database says \u2014 databases:create --storage, 1 GB or a multiple of 5, up to 4,000 \u2014 or the size's own: its price is its CPU and memory, and its storage is billed beside it by the GB-month past its first GB. free and hobby hold their size's."],scope:"environment",async run(e){let t=await y(e),{sizes:n}=await U(e,t,"GET","/databases/sizes");e.out.result({sizes:n},()=>{e.out.table(n,[{header:"size",value:a=>a.name},{header:"cpu",value:a=>`${a.vcpu} vCPU`},{header:"memory",value:a=>nh(a.memory_mib)},{header:"storage",value:a=>Nk(a)},{header:"sleeps",value:a=>a.sleeps?`when idle${a.awake_hours_per_month?`, ${a.awake_hours_per_month} h awake a month`:""}`:"never"},{header:"price",value:a=>`${th(a)}${a.storage_adjustable&&a.price_micros_per_hour!==void 0?" + storage":""}`},{header:"open",value:a=>a.available?"yes":`no \u2014 ${a.reason??""}`}]);let s=n.find(a=>a.storage_adjustable&&a.storage_price_micros_per_gb_month!==void 0);s&&(e.out.line(),e.out.line(`Storage: ${qk(s.storage_price_micros_per_gb_month)} a GB-month past each database's first GB \u2014 what databases:create --storage says (1 GB or a multiple of 5), or the size's; it grows, never shrinks (databases:update --storage, --storage-autoscaling).`))})}},ih={name:"machines:list",summary:"the project's machines, each with the environment it is bound to: size, state, the version serving, address",usage:"[-E <env>]",details:["A project's machines are the project's: each is bound to one of its environments, whose settings, secrets and modules it takes, and the list is every environment's you reach. -E lists that environment's alone, as an environment's own token does."],scope:"environment",async run(e){let t=await jn(e),[n,s]=await Promise.all([eh(e,t,"machines"),hs(e.studio,t)]);e.out.result({machines:n},()=>{n.length===0&&e.out.line("No machine yet: palbase machines:create makes one from the code in this directory."),e.out.table(n,[{header:"name",value:a=>a.name},{header:"env",value:a=>`${Wt(s,a.environment)}${a.moving_to?` \u2192 ${Wt(s,a.moving_to)}`:""}`},{header:"size",value:a=>`${a.size}${a.replicas>1?` \xD7${a.replicas}`:""}`},{header:"state",value:a=>Oi(a)},{header:"version",value:a=>a.running_version===a.version?`${a.version}`:`${a.running_version} \u2192 ${a.version}`},{header:"source",value:a=>`${a.source.repository}@${a.source.branch}${a.source.path?`/${a.source.path}`:""}`},{header:"url",value:a=>a.url}])})}},rh={name:"machines:move",summary:"bind a machine to another environment of the project: it starts there with that environment's settings, secrets and modules",usage:"<name> --to <env>",details:["The machine starts in the new environment at the version it serves, and what ran where it left answers until it is up there: no request goes unanswered. Its address names the new environment (<name>-<its ref>), and the one it had keeps working, for good.","Its domains of its own move with it and answer throughout. Its pull requests' previews are closed: a new push opens them in the new environment. The database it is given stays where it is kept, given to it across environments (databases:move moves a database).","It moves out of the environment it is bound to; -E picks it where two environments hold its name.","It needs the admin role in both environments, and the new environment room for it."],args:{min:1,max:1},flags:{to:{type:"string",value:"env",description:"the environment of the project it moves to (its slug)"}},scope:"environment",async run(e){let t=e.flags.to;if(typeof t!="string"||t==="")throw m("--to names the environment of the project it moves to");let{t:n,name:s}=await ue(e,e.args[0]),a=await la(e,n,t);await v(e,n,`move the machine ${s} out of this environment, into ${a.slug}`),await v(e,ie(a),`move the machine ${s} into this environment: it starts here with this environment's settings, secrets and modules`);let i=await U(e,n,"POST",`/machines/${ne(s)}/move`,{environment:a.ref});e.out.result(i,()=>e.out.line(`${i.name} moves to ${a.slug}: it starts there in a moment (palbase machines:get ${i.name}).`))}},oh={name:"machines:get",summary:"a machine of the project in full: the environment it is bound to, its source, size, database and the build serving",usage:"[name]",details:ye,args:{min:0,max:1},scope:"environment",async run(e){let{t,machine:n}=await ue(e,e.args[0]);e.out.result(n,()=>{e.out.line(`${n.name} \u2014 ${Oi(n)}${n.state_reason?` (${n.state_reason})`:""}`),e.out.line(` bound to ${t.env_slug}${n.moving_to?`, moving to ${n.moving_to.name||n.moving_to.ref}`:""}`),e.out.line(` url ${n.url}`),e.out.line(` source ${n.source.repository} @ ${n.source.branch}${n.source.path?`, ${n.source.path}`:""}${n.source.context?` (context ${n.source.context})`:""}`),e.out.line(` size ${n.size} \xD7 ${n.replicas}, port ${n.port}${n.health_path?`, health ${n.health_path}`:""}`),e.out.line(` version ${Ok(n)}`),n.failed_build&&e.out.line(` last push ${T(`${n.failed_build.commit.slice(0,7)} ${n.failed_build.state}: ${ks(n.failed_build.reason)}`)} (palbase machines:builds:log ${T(n.failed_build.id)} --machine ${n.name})`),e.out.line(` contract ${Mk(n)}`),e.out.line(` database ${n.database?.name?`${n.database.name}${n.database.migrations?", its migrations run before each release":""}`:"none"}`),e.out.line(` secrets ${n.secrets?`the ${n.secrets} secrets`:"none"}`),e.out.line(` tests ${n.test_command?`${n.test_command}${n.test_users?.length?`, as ${n.test_users.join(", ")}`:""} \u2014 run on each build before it rolls out`:"none"}`),e.out.line(` env ${Object.keys(n.env).length===0?"none":Object.keys(n.env).sort().join(", ")}`)})}},lh={repo:{type:"string",value:"owner/name",description:"the GitHub repository (default: this checkout's origin)"},branch:{type:"string",value:"branch",description:"the branch whose pushes are built and rolled out (default: the one checked out)"},path:{type:"string",value:"dir",description:"the directory built, from the repository's root (default: this directory's place in it)"},context:{type:"string",value:"dir",description:'what the build is given above --path (a monorepo: ".")'},size:{type:"string",value:"size",description:"its size (palbase machines:sizes lists them)"},replicas:{type:"string",value:"n",description:"how many copies run, 1 to 100 (one on Free), over two nodes at least, a few to a node (at most 29 of a hundred on one)"},port:{type:"string",value:"port",description:"the port it listens on (it also finds it in PORT)"},"always-on":{type:"boolean",description:"keep it awake: never put to sleep when idle (a project on Pay as you go pays its every hour; on Free a shared machine sleeps when idle)"},"no-always-on":{type:"boolean",description:"let it sleep when idle again"},...wa,health:{type:"string",value:"path",description:"where it answers 2xx while well; a release that does not is not rolled out"},"openapi-path":{type:"string",value:"path",description:`where its app serves its OpenAPI contract, when it is not a Palbase backend (apps:sync makes its client from it); "" for a Palbase backend's own`},db:{type:"string",value:"database",description:'a database of the project it is given, whichever environment keeps it (PALBASE_DB_URL); "" for none'},migrations:{type:"boolean",description:"run the database's migrations before each release (a Palbase backend's)"},secrets:{type:"string",value:"production|development",description:'the secrets it is started with, by name; "" for none'},var:{type:"string",multiple:!0,value:"K=V",description:"a setting it is started with (repeat it); secrets go in secrets:set"},"test-command":{type:"string",value:"command",description:'what each new build runs before it takes traffic, in its image, against the new version itself once its migration has run (bun test, npm test); a failure fails the build and the machine runs what it ran; "" for none'},"test-users":{type:"string",value:"names",description:'the test users each test run makes for its tests (api.signInAs), comma-separated; "" for none'}};function dh(e,t){e.flags["test-command"]!==void 0&&(t.test_command=e.flags["test-command"]),e.flags["test-users"]!==void 0&&(t.test_users=ko(e.flags["test-users"]))}function ph(e){if(!e)return;let t={};for(let n of e){let s=n.indexOf("=");if(s<=0)throw m(`a setting is K=V, not ${JSON.stringify(n)}`);t[n.slice(0,s)]=n.slice(s+1)}return t}function Xt(e,t){if(e===void 0)return;let n=Number(e);if(!Number.isInteger(n)||n<0)throw m(`--${t} is a whole number`);return n}async function uh(e,t){let{sizes:n}=await U(e,t,"GET","/machines/sizes"),s=n.find(a=>a.available)?.name;if(!s)throw new f("no_size_open","no machine size is open to this environment",{hint:"palbase machines:sizes says why"});return s}function ch(e,t,n){return{...e?{name:e}:{},source:{repository:t.repository,branch:t.branch,...t.path!==""?{path:t.path}:{},...t.context?{context:t.context}:{}},size:n}}var hh={name:"machines:create",summary:"make a machine of the project from the code in this directory, bound to one of its environments and built on every push to its branch",usage:"[name] [-E <env>] [--size <size>] [--db <database> --migrations] [--repo --branch --path --context] \u2026",details:["Run in a checkout, it reads the repository from origin, the branch from HEAD and the directory from where you are; flags say otherwise.",`${In} It takes that environment's settings, secrets and modules.`,"The first build starts at once; --wait follows it until the machine serves, and prints its address.","The environment needs its GitHub link first: palbase github:connect."],args:{min:0,max:1},flags:{...lh,wait:{type:"boolean",description:"follow the first build until the machine serves"}},scope:"environment",async run(e){let t=await Mn(e),n=await cs(e.io,e.io.cwd),s=e.flags.repo??n?.repository,a=e.flags.branch??n?.branch;if(!s)throw m("which repository? this directory's origin is not a GitHub repository","pass --repo owner/name");if(!a)throw m("which branch? none is checked out here","pass --branch <branch>");let i=e.flags.size??await uh(e,t),r=e.flags.path??n?.path??"",o=ch(e.args[0],{repository:s,branch:a,path:r,context:e.flags.context},i),l=Xt(e.flags.replicas,"replicas"),p=Xt(e.flags.port,"port");l!==void 0&&(o.replicas=l),p!==void 0&&(o.port=p),e.flags["always-on"]===!0&&(o.always_on=!0),e.flags["no-always-on"]===!0&&(o.always_on=!1),_a(e,o),e.flags.health!==void 0&&(o.health_path=e.flags.health),e.flags["openapi-path"]!==void 0&&(o.openapi_path=e.flags["openapi-path"]),e.flags.secrets!==void 0&&(o.secrets=e.flags.secrets);let d=ph(e.flags.var);if(d&&(o.env=d),e.flags.db!==void 0)o.database={name:e.flags.db,migrations:e.flags.migrations===!0};else if(e.flags.migrations===!0)throw m("--migrations goes with --db <database>");dh(e,o),await v(e,t,`make a machine from ${s}@${a}${r?`/${r}`:""} (${i})`);let u=await U(e,t,"POST","/machines",o);e.flags.wait===!0&&(u=await Gk(e,t,u.name)),e.out.result(u,()=>e.out.line(`Made the machine ${u.name} (${u.size}) \u2014 ${u.state}; it answers at ${u.url}`))}},mh={name:"machines:update",summary:"change a machine of the project, in the environment it is bound to: the change rolls out as a new version beside the one serving",usage:"[name] [--size \u2026] [--replicas \u2026] [--db \u2026] [--repo --branch --path --context] \u2026",details:ye,args:{min:0,max:1},flags:lh,scope:"environment",async run(e){let{t,name:n,machine:s}=await ue(e,e.args[0]),a={};(e.flags.repo!==void 0||e.flags.branch!==void 0||e.flags.path!==void 0||e.flags.context!==void 0)&&(a.source={repository:e.flags.repo??s.source.repository,branch:e.flags.branch??s.source.branch,path:e.flags.path??s.source.path??"",context:e.flags.context??s.source.context??""}),e.flags.size!==void 0&&(a.size=e.flags.size);let i=Xt(e.flags.replicas,"replicas"),r=Xt(e.flags.port,"port");if(i!==void 0&&(a.replicas=i),r!==void 0&&(a.port=r),e.flags["always-on"]===!0&&(a.always_on=!0),e.flags["no-always-on"]===!0&&(a.always_on=!1),_a(e,a),e.flags.health!==void 0&&(a.health_path=e.flags.health),e.flags["openapi-path"]!==void 0&&(a.openapi_path=e.flags["openapi-path"]),e.flags.secrets!==void 0&&(a.secrets=e.flags.secrets),e.flags.var!==void 0)throw m("machines:update leaves the settings as they are: machines:env:set and machines:env:unset change them");if(e.flags.db!==void 0&&(a.database={name:e.flags.db,migrations:e.flags.migrations===!0}),dh(e,a),Object.keys(a).length===0)throw m("nothing to change: give a flag","palbase help machines:update");await v(e,t,`change the machine ${n}: ${Object.keys(a).join(", ")}`);let o=await U(e,t,"PATCH",`/machines/${ne(n)}`,a);e.out.result(o,()=>e.out.line(`${o.name}: version ${o.version} rolls out beside ${o.running_version}.`))}},gh={name:"machines:env:list",summary:"what a machine of the project is started with, and where each comes from (the platform, the machine, its secrets)",usage:"[name]",details:ye,args:{min:0,max:1},scope:"environment",async run(e){let{t,machine:n}=await ue(e,e.args[0]),s=n.secrets?await U(e,t,"GET",`/secrets/${x("the machine's secret set",n.secrets)}`).then(r=>(r.items??r.secrets??[]).map(o=>o.name),()=>[]):[],a=["PORT","PALBASE_URL","PALBASE_PROJECT_ID","PALBASE_REPLICAS","PALBASE_PLATFORM_SECRET","PALBASE_SECRET_KEY","PALBASE_WEBHOOK_SECRET",...n.database?.name?["PALBASE_DB_URL","PALBASE_DB_CONNECTIONS"]:[]],i=a.map(r=>({name:r,from:"platform",note:s.includes(r)||r in n.env?`in place of the ${r} set by hand`:""}));for(let r of Object.keys(n.env).sort())a.includes(r)||i.push({name:r,from:"machine",note:s.includes(r)?`shadows the secret ${r}`:""});for(let r of s.sort())a.includes(r)||r in n.env||i.push({name:r,from:`secrets (${n.secrets})`,note:""});e.out.result({machine:n.name,env:i},()=>e.out.table(i,[{header:"name",value:r=>r.name},{header:"from",value:r=>r.from},{header:"",value:r=>r.note}]))}};async function fh(e,t){let{t:n,name:s,machine:a,etag:i}=await ue(e,e.flags.machine),r={body:a,etag:i};for(let o=1;;o++){o>1&&(r=await _e(e.studio,n.env_ref,"GET",`/machines/${ne(s)}`));let l={...r.body.env},p=t(l);if(o===1){if(r.body.secrets){let d=await U(e,n,"GET",`/secrets/${x("the machine's secret set",r.body.secrets)}`).catch(()=>({items:[]}));for(let u of Object.keys(l))(d.items??[]).some(g=>g.name===u)&&e.out.warn(`${u} in the machine's env shadows the secret of that name`)}await v(e,n,`${p.join(", ")} on the machine ${s}`)}try{let d=await U(e,n,"PATCH",`/machines/${ne(s)}`,{env:l},r.etag?{"if-match":r.etag}:void 0);e.out.result({machine:d.name,env:Object.keys(d.env).sort()},()=>e.out.line(`${d.name}: version ${d.version} rolls out with it.`));return}catch(d){if(!(d instanceof C&&d.status===412)||o===3)throw d;e.out.note(`${s} changed meanwhile: making the change again on what it is now\u2026`)}}}var yh={name:"machines:env:set",summary:"set settings a machine of the project is started with (not secrets: secrets:set keeps those)",usage:"K=V\u2026 [--machine <name>]",details:ye,args:{min:1,max:50},flags:Ge,scope:"environment",async run(e){let t=ph(e.args);await fh(e,n=>(Object.assign(n,t),Object.keys(t).map(s=>`set ${s}`)))}},bh={name:"machines:env:unset",summary:"take settings away from what a machine of the project is started with",usage:"K\u2026 [--machine <name>]",details:ye,args:{min:1,max:50},flags:Ge,scope:"environment",async run(e){await fh(e,t=>{for(let n of e.args){if(!(n in t))throw new f("no_such_setting",`the machine is not started with ${n}`);delete t[n]}return e.args.map(n=>`unset ${n}`)})}},wh={name:"machines:builds",summary:"a machine's builds, newest first",usage:"[name]",details:ye,args:{min:0,max:1},scope:"environment",async run(e){let{t,name:n}=await ue(e,e.args[0]),{builds:s}=await U(e,t,"GET",`/machines/${ne(n)}/builds?limit=20`);e.out.result({builds:s},()=>e.out.table(s,[{header:"build",value:a=>a.id},{header:"commit",value:a=>a.commit.slice(0,7)},{header:"state",value:a=>`${a.state}${a.running?" (serving)":""}${a.reason?` \u2014 ${ks(a.reason)}`:""}`},{header:"message",value:a=>a.message.split(`
|
|
37
|
+
${" ".repeat(15)}`)}${t}`;case"none":return`none: its app serves none${t}`}return`${e.contract_digest?`sha256:${e.contract_digest.slice(0,12)}\u2026`:"none read"}${t}`}var Lk=/^[a-z]([a-z0-9-]{0,30}[a-z0-9])?$/;async function U(e,t,n,s,a,i){return(await _e(e.studio,t.env_ref,n,s,a,i)).body}function ne(e){if(!Lk.test(e))throw m(`${JSON.stringify(e)} is not a name: lowercase letters, digits and dashes, starting with a letter`);return encodeURIComponent(e)}async function ue(e,t){let n=await pn(e),s=n.t,{body:a,etag:i}=await _e(e.studio,s.env_ref,"GET",`/machines/${ne(t??await Dk(e,n))}`);return await On(e,n,a,()=>Ik(e,s),`the machine ${a.name}`),{t:await Ln(e,s,a.environment,`the machine ${a.name}`),name:a.name,machine:a,etag:i}}async function Ik(e,t){return oa(async n=>{let s=await U(e,t,"GET",`/machines?limit=100${n?`&cursor=${encodeURIComponent(n)}`:""}`);return{items:s.machines,next:s.next_cursor}})}async function eh(e,t,n){return oa(async s=>{let a=await U(e,t,"GET",ci(e,t,`/${n}?limit=100${s?`&cursor=${encodeURIComponent(s)}`:""}`));return{items:a[n],next:a.next_cursor}})}async function Dk(e,t){let{machines:n}=await U(e,t.t,"GET",ui(t,"/machines?limit=100"));if(n.length===1)return n[0].name;let s=await cs(e.io,e.io.cwd),a=s?.repository?n.filter(r=>r.source.repository.toLowerCase()===s.repository?.toLowerCase()&&(r.source.path??"")===s.path):[];if(a.length===1)return a[0].name;let i=t.by==="fallback"?"the project":`the environment ${t.t.env_slug}`;throw n.length===0?new f("no_machine",`${i} has no machine yet`,{hint:"make one with palbase machines:create"}):m("which machine? name it",`${i}'s machines: ${n.map(r=>r.name).join(", ")}`)}var Mi=async e=>{let{t,name:n}=await ue(e,e.flags.machine);return{t,path:`/machines/${ne(n)}`}},Ge={machine:{type:"string",value:"name",description:"the machine (default: the only one of the environment chosen here or -E's, the project's only one when neither says, or this directory's)"}},xk="Named by none, it is the only machine of the environment chosen for this directory or named by -E \u2014 never one bound elsewhere \u2014 else, when neither says, the project's only one; or the one this directory's code is built into.",ye=[te("machine"),xk];function th(e){let t=e.price_micros_per_hour;if(t===void 0)return e.free?"free":"";if(e.free)return`free, then $${(t/1e6).toFixed(3)} an hour`;let n=Math.round(t*730/1e4),s=n%100===0;return`$${(n/100).toLocaleString("en-US",{minimumFractionDigits:s?0:2,maximumFractionDigits:s?0:2})} a month${e.sleeps?" awake":""}`}function Nk(e){let t=`${(e.storage_bytes/1e9).toFixed(0)} GB`;return e.storage_adjustable?`${t}, or what you say (up to ${(e.max_storage_gb??4e3).toLocaleString("en-US")})`:t}function qk(e){return`$${(e/1e6).toFixed(2)}`}function nh(e){return e>=1024&&e%1024===0?`${e/1024} GiB`:`${e} MiB`}function ji(e){return e<1e9?`${Number((e/1e6).toFixed(1)).toLocaleString("en-US")} MB`:`${Number((e/1e9).toFixed(2)).toLocaleString("en-US")} GB`}var sh={name:"machines:sizes",summary:"the machine sizes, and which of them this environment may open now",scope:"environment",async run(e){let t=await y(e),{sizes:n}=await U(e,t,"GET","/machines/sizes");e.out.result({sizes:n},()=>e.out.table(n,[{header:"size",value:s=>s.name},{header:"cpu",value:s=>`${s.vcpu} vCPU`},{header:"memory",value:s=>nh(s.memory_mib)},{header:"sleeps",value:s=>s.sleeps?"when idle":"never"},{header:"price",value:s=>th(s)},{header:"open",value:s=>s.available?"yes":`no \u2014 ${s.reason??""}`}]))}},ah={name:"databases:sizes",summary:"the database sizes, and which of them this environment may open now",details:["A size that never sleeps holds the storage its database says \u2014 databases:create --storage, 1 GB or a multiple of 5, up to 4,000 \u2014 or the size's own: its price is its CPU and memory, and its storage is billed beside it by the GB-month past its first GB. free and hobby hold their size's."],scope:"environment",async run(e){let t=await y(e),{sizes:n}=await U(e,t,"GET","/databases/sizes");e.out.result({sizes:n},()=>{e.out.table(n,[{header:"size",value:a=>a.name},{header:"cpu",value:a=>`${a.vcpu} vCPU`},{header:"memory",value:a=>nh(a.memory_mib)},{header:"storage",value:a=>Nk(a)},{header:"sleeps",value:a=>a.sleeps?`when idle${a.awake_hours_per_month?`, ${a.awake_hours_per_month} h awake a month`:""}`:"never"},{header:"price",value:a=>`${th(a)}${a.storage_adjustable&&a.price_micros_per_hour!==void 0?" + storage":""}`},{header:"open",value:a=>a.available?"yes":`no \u2014 ${a.reason??""}`}]);let s=n.find(a=>a.storage_adjustable&&a.storage_price_micros_per_gb_month!==void 0);s&&(e.out.line(),e.out.line(`Storage: ${qk(s.storage_price_micros_per_gb_month)} a GB-month past each database's first GB \u2014 what databases:create --storage says (1 GB or a multiple of 5), or the size's; it grows, never shrinks (databases:update --storage, --storage-autoscaling).`))})}},ih={name:"machines:list",summary:"the project's machines, each with the environment it is bound to: size, state, the version serving, address",usage:"[-E <env>]",details:["A project's machines are the project's: each is bound to one of its environments, whose settings, secrets and modules it takes, and the list is every environment's you reach. -E lists that environment's alone, as an environment's own token does."],scope:"environment",async run(e){let t=await jn(e),[n,s]=await Promise.all([eh(e,t,"machines"),hs(e.studio,t)]);e.out.result({machines:n},()=>{n.length===0&&e.out.line("No machine yet: palbase machines:create makes one from the code in this directory."),e.out.table(n,[{header:"name",value:a=>a.name},{header:"env",value:a=>`${Wt(s,a.environment)}${a.moving_to?` \u2192 ${Wt(s,a.moving_to)}`:""}`},{header:"size",value:a=>`${a.size}${a.replicas>1?` \xD7${a.replicas}`:""}`},{header:"state",value:a=>Oi(a)},{header:"version",value:a=>a.running_version===a.version?`${a.version}`:`${a.running_version} \u2192 ${a.version}`},{header:"source",value:a=>`${a.source.repository}@${a.source.branch}${a.source.path?`/${a.source.path}`:""}`},{header:"url",value:a=>a.url}])})}},rh={name:"machines:move",summary:"bind a machine to another environment of the project: it starts there with that environment's settings, secrets and modules",usage:"<name> --to <env>",details:["The machine starts in the new environment at the version it serves, and what ran where it left answers until it is up there: no request goes unanswered. Its address names the new environment (<name>-<its ref>), and the one it had keeps working, for good.","Its domains of its own move with it and answer throughout. Its pull requests' previews are closed: a new push opens them in the new environment. The database it is given stays where it is kept, given to it across environments (databases:move moves a database).","It moves out of the environment it is bound to; -E picks it where two environments hold its name.","It needs the admin role in both environments, and the new environment room for it."],args:{min:1,max:1},flags:{to:{type:"string",value:"env",description:"the environment of the project it moves to (its slug)"}},scope:"environment",async run(e){let t=e.flags.to;if(typeof t!="string"||t==="")throw m("--to names the environment of the project it moves to");let{t:n,name:s}=await ue(e,e.args[0]),a=await la(e,n,t);await v(e,n,`move the machine ${s} out of this environment, into ${a.slug}`),await v(e,ie(a),`move the machine ${s} into this environment: it starts here with this environment's settings, secrets and modules`);let i=await U(e,n,"POST",`/machines/${ne(s)}/move`,{environment:a.ref});e.out.result(i,()=>e.out.line(`${i.name} moves to ${a.slug}: it starts there in a moment (palbase machines:get ${i.name}).`))}},oh={name:"machines:get",summary:"a machine of the project in full: the environment it is bound to, its source, size, database and the build serving",usage:"[name]",details:ye,args:{min:0,max:1},scope:"environment",async run(e){let{t,machine:n}=await ue(e,e.args[0]);e.out.result(n,()=>{e.out.line(`${n.name} \u2014 ${Oi(n)}${n.state_reason?` (${n.state_reason})`:""}`),e.out.line(` bound to ${t.env_slug}${n.moving_to?`, moving to ${n.moving_to.name||n.moving_to.ref}`:""}`),e.out.line(` url ${n.url}`),e.out.line(` source ${n.source.repository} @ ${n.source.branch}${n.source.path?`, ${n.source.path}`:""}${n.source.context?` (context ${n.source.context})`:""}`),e.out.line(` size ${n.size} \xD7 ${n.replicas}, port ${n.port}${n.health_path?`, health ${n.health_path}`:""}`),e.out.line(` version ${Ok(n)}`),n.failed_build&&e.out.line(` last push ${T(`${n.failed_build.commit.slice(0,7)} ${n.failed_build.state}: ${ks(n.failed_build.reason)}`)} (palbase machines:builds:log ${T(n.failed_build.id)} --machine ${n.name})`),e.out.line(` contract ${Mk(n)}`),e.out.line(` database ${n.database?.name?`${n.database.name}${n.database.migrations?", its migrations run before each release":""}`:"none"}`),e.out.line(` secrets ${n.secrets?`the ${n.secrets} secrets`:"none"}`),e.out.line(` tests ${n.test_command?`${n.test_command}${n.test_users?.length?`, as ${n.test_users.join(", ")}`:""} \u2014 run on each build before it rolls out`:"none"}`),e.out.line(` env ${Object.keys(n.env).length===0?"none":Object.keys(n.env).sort().join(", ")}`)})}},lh={repo:{type:"string",value:"owner/name",description:"the GitHub repository (default: this checkout's origin)"},branch:{type:"string",value:"branch",description:"the branch whose pushes are built and rolled out (default: the one checked out)"},path:{type:"string",value:"dir",description:"the directory built, from the repository's root (default: this directory's place in it)"},context:{type:"string",value:"dir",description:'what the build is given above --path (a monorepo: ".")'},size:{type:"string",value:"size",description:"its size (palbase machines:sizes lists them)"},replicas:{type:"string",value:"n",description:"how many copies run, 1 to 100 (one on Free), over two nodes at least and never all on one"},port:{type:"string",value:"port",description:"the port it listens on (it also finds it in PORT)"},"always-on":{type:"boolean",description:"keep it awake: never put to sleep when idle (a project on Pay as you go pays its every hour; on Free a shared machine sleeps when idle)"},"no-always-on":{type:"boolean",description:"let it sleep when idle again"},...wa,health:{type:"string",value:"path",description:"where it answers 2xx while well; a release that does not is not rolled out"},"openapi-path":{type:"string",value:"path",description:`where its app serves its OpenAPI contract, when it is not a Palbase backend (apps:sync makes its client from it); "" for a Palbase backend's own`},db:{type:"string",value:"database",description:'a database of the project it is given, whichever environment keeps it (PALBASE_DB_URL); "" for none'},migrations:{type:"boolean",description:"run the database's migrations before each release (a Palbase backend's)"},secrets:{type:"string",value:"production|development",description:'the secrets it is started with, by name; "" for none'},var:{type:"string",multiple:!0,value:"K=V",description:"a setting it is started with (repeat it); secrets go in secrets:set"},"test-command":{type:"string",value:"command",description:'what each new build runs before it takes traffic, in its image, against the new version itself once its migration has run (bun test, npm test); a failure fails the build and the machine runs what it ran; "" for none'},"test-users":{type:"string",value:"names",description:'the test users each test run makes for its tests (api.signInAs), comma-separated; "" for none'}};function dh(e,t){e.flags["test-command"]!==void 0&&(t.test_command=e.flags["test-command"]),e.flags["test-users"]!==void 0&&(t.test_users=ko(e.flags["test-users"]))}function ph(e){if(!e)return;let t={};for(let n of e){let s=n.indexOf("=");if(s<=0)throw m(`a setting is K=V, not ${JSON.stringify(n)}`);t[n.slice(0,s)]=n.slice(s+1)}return t}function Xt(e,t){if(e===void 0)return;let n=Number(e);if(!Number.isInteger(n)||n<0)throw m(`--${t} is a whole number`);return n}async function uh(e,t){let{sizes:n}=await U(e,t,"GET","/machines/sizes"),s=n.find(a=>a.available)?.name;if(!s)throw new f("no_size_open","no machine size is open to this environment",{hint:"palbase machines:sizes says why"});return s}function ch(e,t,n){return{...e?{name:e}:{},source:{repository:t.repository,branch:t.branch,...t.path!==""?{path:t.path}:{},...t.context?{context:t.context}:{}},size:n}}var hh={name:"machines:create",summary:"make a machine of the project from the code in this directory, bound to one of its environments and built on every push to its branch",usage:"[name] [-E <env>] [--size <size>] [--db <database> --migrations] [--repo --branch --path --context] \u2026",details:["Run in a checkout, it reads the repository from origin, the branch from HEAD and the directory from where you are; flags say otherwise.",`${In} It takes that environment's settings, secrets and modules.`,"The first build starts at once; --wait follows it until the machine serves, and prints its address.","The environment needs its GitHub link first: palbase github:connect."],args:{min:0,max:1},flags:{...lh,wait:{type:"boolean",description:"follow the first build until the machine serves"}},scope:"environment",async run(e){let t=await Mn(e),n=await cs(e.io,e.io.cwd),s=e.flags.repo??n?.repository,a=e.flags.branch??n?.branch;if(!s)throw m("which repository? this directory's origin is not a GitHub repository","pass --repo owner/name");if(!a)throw m("which branch? none is checked out here","pass --branch <branch>");let i=e.flags.size??await uh(e,t),r=e.flags.path??n?.path??"",o=ch(e.args[0],{repository:s,branch:a,path:r,context:e.flags.context},i),l=Xt(e.flags.replicas,"replicas"),p=Xt(e.flags.port,"port");l!==void 0&&(o.replicas=l),p!==void 0&&(o.port=p),e.flags["always-on"]===!0&&(o.always_on=!0),e.flags["no-always-on"]===!0&&(o.always_on=!1),_a(e,o),e.flags.health!==void 0&&(o.health_path=e.flags.health),e.flags["openapi-path"]!==void 0&&(o.openapi_path=e.flags["openapi-path"]),e.flags.secrets!==void 0&&(o.secrets=e.flags.secrets);let d=ph(e.flags.var);if(d&&(o.env=d),e.flags.db!==void 0)o.database={name:e.flags.db,migrations:e.flags.migrations===!0};else if(e.flags.migrations===!0)throw m("--migrations goes with --db <database>");dh(e,o),await v(e,t,`make a machine from ${s}@${a}${r?`/${r}`:""} (${i})`);let u=await U(e,t,"POST","/machines",o);e.flags.wait===!0&&(u=await Gk(e,t,u.name)),e.out.result(u,()=>e.out.line(`Made the machine ${u.name} (${u.size}) \u2014 ${u.state}; it answers at ${u.url}`))}},mh={name:"machines:update",summary:"change a machine of the project, in the environment it is bound to: the change rolls out as a new version beside the one serving",usage:"[name] [--size \u2026] [--replicas \u2026] [--db \u2026] [--repo --branch --path --context] \u2026",details:ye,args:{min:0,max:1},flags:lh,scope:"environment",async run(e){let{t,name:n,machine:s}=await ue(e,e.args[0]),a={};(e.flags.repo!==void 0||e.flags.branch!==void 0||e.flags.path!==void 0||e.flags.context!==void 0)&&(a.source={repository:e.flags.repo??s.source.repository,branch:e.flags.branch??s.source.branch,path:e.flags.path??s.source.path??"",context:e.flags.context??s.source.context??""}),e.flags.size!==void 0&&(a.size=e.flags.size);let i=Xt(e.flags.replicas,"replicas"),r=Xt(e.flags.port,"port");if(i!==void 0&&(a.replicas=i),r!==void 0&&(a.port=r),e.flags["always-on"]===!0&&(a.always_on=!0),e.flags["no-always-on"]===!0&&(a.always_on=!1),_a(e,a),e.flags.health!==void 0&&(a.health_path=e.flags.health),e.flags["openapi-path"]!==void 0&&(a.openapi_path=e.flags["openapi-path"]),e.flags.secrets!==void 0&&(a.secrets=e.flags.secrets),e.flags.var!==void 0)throw m("machines:update leaves the settings as they are: machines:env:set and machines:env:unset change them");if(e.flags.db!==void 0&&(a.database={name:e.flags.db,migrations:e.flags.migrations===!0}),dh(e,a),Object.keys(a).length===0)throw m("nothing to change: give a flag","palbase help machines:update");await v(e,t,`change the machine ${n}: ${Object.keys(a).join(", ")}`);let o=await U(e,t,"PATCH",`/machines/${ne(n)}`,a);e.out.result(o,()=>e.out.line(`${o.name}: version ${o.version} rolls out beside ${o.running_version}.`))}},gh={name:"machines:env:list",summary:"what a machine of the project is started with, and where each comes from (the platform, the machine, its secrets)",usage:"[name]",details:ye,args:{min:0,max:1},scope:"environment",async run(e){let{t,machine:n}=await ue(e,e.args[0]),s=n.secrets?await U(e,t,"GET",`/secrets/${x("the machine's secret set",n.secrets)}`).then(r=>(r.items??r.secrets??[]).map(o=>o.name),()=>[]):[],a=["PORT","PALBASE_URL","PALBASE_PROJECT_ID","PALBASE_REPLICAS","PALBASE_PLATFORM_SECRET","PALBASE_SECRET_KEY","PALBASE_WEBHOOK_SECRET",...n.database?.name?["PALBASE_DB_URL","PALBASE_DB_CONNECTIONS"]:[]],i=a.map(r=>({name:r,from:"platform",note:s.includes(r)||r in n.env?`in place of the ${r} set by hand`:""}));for(let r of Object.keys(n.env).sort())a.includes(r)||i.push({name:r,from:"machine",note:s.includes(r)?`shadows the secret ${r}`:""});for(let r of s.sort())a.includes(r)||r in n.env||i.push({name:r,from:`secrets (${n.secrets})`,note:""});e.out.result({machine:n.name,env:i},()=>e.out.table(i,[{header:"name",value:r=>r.name},{header:"from",value:r=>r.from},{header:"",value:r=>r.note}]))}};async function fh(e,t){let{t:n,name:s,machine:a,etag:i}=await ue(e,e.flags.machine),r={body:a,etag:i};for(let o=1;;o++){o>1&&(r=await _e(e.studio,n.env_ref,"GET",`/machines/${ne(s)}`));let l={...r.body.env},p=t(l);if(o===1){if(r.body.secrets){let d=await U(e,n,"GET",`/secrets/${x("the machine's secret set",r.body.secrets)}`).catch(()=>({items:[]}));for(let u of Object.keys(l))(d.items??[]).some(g=>g.name===u)&&e.out.warn(`${u} in the machine's env shadows the secret of that name`)}await v(e,n,`${p.join(", ")} on the machine ${s}`)}try{let d=await U(e,n,"PATCH",`/machines/${ne(s)}`,{env:l},r.etag?{"if-match":r.etag}:void 0);e.out.result({machine:d.name,env:Object.keys(d.env).sort()},()=>e.out.line(`${d.name}: version ${d.version} rolls out with it.`));return}catch(d){if(!(d instanceof C&&d.status===412)||o===3)throw d;e.out.note(`${s} changed meanwhile: making the change again on what it is now\u2026`)}}}var yh={name:"machines:env:set",summary:"set settings a machine of the project is started with (not secrets: secrets:set keeps those)",usage:"K=V\u2026 [--machine <name>]",details:ye,args:{min:1,max:50},flags:Ge,scope:"environment",async run(e){let t=ph(e.args);await fh(e,n=>(Object.assign(n,t),Object.keys(t).map(s=>`set ${s}`)))}},bh={name:"machines:env:unset",summary:"take settings away from what a machine of the project is started with",usage:"K\u2026 [--machine <name>]",details:ye,args:{min:1,max:50},flags:Ge,scope:"environment",async run(e){await fh(e,t=>{for(let n of e.args){if(!(n in t))throw new f("no_such_setting",`the machine is not started with ${n}`);delete t[n]}return e.args.map(n=>`unset ${n}`)})}},wh={name:"machines:builds",summary:"a machine's builds, newest first",usage:"[name]",details:ye,args:{min:0,max:1},scope:"environment",async run(e){let{t,name:n}=await ue(e,e.args[0]),{builds:s}=await U(e,t,"GET",`/machines/${ne(n)}/builds?limit=20`);e.out.result({builds:s},()=>e.out.table(s,[{header:"build",value:a=>a.id},{header:"commit",value:a=>a.commit.slice(0,7)},{header:"state",value:a=>`${a.state}${a.running?" (serving)":""}${a.reason?` \u2014 ${ks(a.reason)}`:""}`},{header:"message",value:a=>a.message.split(`
|
|
38
38
|
`)[0].slice(0,60)},{header:"created",value:a=>a.created_at}]))}},vh={name:"machines:previews",summary:"a machine's pull request previews, newest first: each a machine of its own while its pull request is open",usage:"[name]",details:ye,args:{min:0,max:1},scope:"environment",async run(e){let{t,name:n}=await ue(e,e.args[0]),{previews:s}=await U(e,t,"GET",`/machines/${ne(n)}/previews`);e.out.result({previews:s},()=>Fo(e,s,`${n} has no preview: machines:update ${n} --previews previews its pull requests (in a preview environment).`))}},_h=zo("machine","machines",Mi,Ge),kh=Wo("machine","machines",Mi,Ge),Sh=Vo("machine","machines",Mi,Ge),$h=Jo("machine","machines",Mi,Ge),Ph={name:"machines:previews:open",summary:"open a machine's pull request preview again \u2014 one closed after 3 days with no push, or refused \u2014 at the pull request's head",usage:"<pull request> [--machine <name>]",details:["Its machine is made again and built at the pull request's head; a machine that runs its database's migrations has its preview given a new, empty database of its own, migrated by the preview's release.","A preview that is open goes on as it is, and its 3 days start again. A fork's, under fork protection, opens at a head an admin authorized (previews:authorize).",...ye],args:{min:1,max:1},flags:Ge,scope:"environment",async run(e){let t=Number(e.args[0].replace(/^#/,""));if(!Number.isInteger(t)||t<=0)throw m("the pull request is its number: 12, or #12");let{t:n,name:s}=await ue(e,e.flags.machine),a=await U(e,n,"POST",`/machines/${ne(s)}/previews/${t}/open`);e.out.result(a,()=>e.out.line(`#${t}: its preview is being built at ${a.commit.slice(0,7)} (palbase machines:previews ${s}).`))}},Ah={name:"machines:builds:log",summary:"a build's log (the newest build's when none is named)",usage:"[build] [--machine <name>]",details:ye,args:{min:0,max:1},flags:Ge,scope:"environment",async run(e){let{t,name:n}=await ue(e,e.flags.machine),s=e.args[0];if(!s){let{builds:r}=await U(e,t,"GET",`/machines/${ne(n)}/builds?limit=1`);if(r.length===0)throw new f("no_build",`${n} has no build yet`);s=r[0].id}let a;try{a=await U(e,t,"GET",`/machines/${ne(n)}/builds/${x("the build's id",s)}/log`)}catch(r){if(!(r instanceof C))throw r;if(r.code==="log_not_ready"){e.out.result({build:s,started:!1,log:""},()=>e.out.note(`The build ${s} has not started yet: its log is there once it has (palbase machines:builds ${n}).`));return}if(r.code==="no_log"){let o=await U(e,t,"GET",`/machines/${ne(n)}/builds/${x("the build's id",s)}`);throw new f("no_log",`the build ${s} ended before it ran, so it has no log: ${o.state}${o.reason?` \u2014 ${ks(o.reason)}`:""}`)}throw r}let i=typeof a=="string"?a:a==null?"":JSON.stringify(a);e.out.result({build:s,log:i},()=>{if(i==="")e.out.note(`The build ${s} has written no log yet (palbase machines:builds ${n}).`);else for(let r of i.split(`
|
|
39
39
|
`))e.out.line(r)})}},Rh={name:"machines:logs",summary:"a machine's log: the last hour, or since a time; -f follows what it writes next",usage:"[name] [-f] [--since <time>] [--lines <n>] [--search <text>]",details:["Besides the machine's own lines: its migration runs' (migration), and what a build printed while its tests ran against it (test) \u2014 the error it answered a test with, and that request's id: palbase machines:logs <name> --search <request_id>.",...ye],args:{min:0,max:1},flags:{follow:{type:"boolean",short:"f",description:"keep printing what the machine writes"},since:{type:"string",value:"time",description:"from when: an RFC 3339 time, or 10m, 2h, 1d ago"},lines:{type:"string",value:"n",description:"how many lines at most (default 200)"},search:{type:"string",value:"text",description:"only the lines that hold this text"}},scope:"environment",async run(e){let{t,name:n}=await ue(e,e.args[0]),s=Xt(e.flags.lines,"lines")??200,a=e.flags.since?Uk(e.flags.since,e.io.now()):void 0,i=e.flags.search,r=new Set,o=async p=>{let d=new URLSearchParams({lines:String(s),order:p,...a?{since:a}:{},...i?{q:i}:{}}),u=await U(e,t,"GET",`/machines/${ne(n)}/logs?${d}`),g=u!==null&&typeof u=="object"?[u]:String(u??"").split(`
|
|
40
40
|
`).filter(b=>b.trim()!=="").map(b=>JSON.parse(b));return p==="desc"?g.reverse():g},l=p=>{for(let d of p)r.has(d.id)||(r.add(d.id),e.global.json?e.io.stdout(`${JSON.stringify(d)}
|
package/dist/cloud/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/*! palbase 0.44.
|
|
2
|
-
import{a as I}from"../chunks/4WWSBV72.js";import{a as P,b as k,c as S,e as w,f as C,g as A,h as T,i as R,j,k as E,l as x,m as D,n as M,o as U}from"../chunks/MFWSGSEL.js";import{a as B,b as G}from"../chunks/GJEJ43IS.js";import{b as y,c as r,d as f}from"../chunks/ANV23OPS.js";import"../chunks/YBHGKJML.js";import"../chunks/FKDHMJRY.js";function L(t){let e=P.client(t),a=k.client(t),n=S.client(t),p=w.client(t),g=C.client(t),m=A.client(t),s=T.client(t),d=R.client(t),l=j.client(t),i=E.client(t),h=x.client(t),c=D.client(t),u=M.client(t),o=U.client(t);return{ai:{draftAgent:e.draftAgent,listAgents:e.listAgents,getAgent:e.getAgent,putAgent:e.putAgent,deleteAgent:e.deleteAgent,publishAgent:e.publishAgent,rollbackAgent:e.rollbackAgent,listAgentVersions:e.listAgentVersions,listChats:e.listChats,createChat:e.createChat,getChat:e.getChat,deleteChat:e.deleteChat,decideChatApproval:e.decideChatApproval,forkChat:e.forkChat,getChatGoal:e.getChatGoal,setChatGoal:e.setChatGoal,clearChatGoal:e.clearChatGoal,updateChatGoal:e.updateChatGoal,putChatMember:e.putChatMember,deleteChatMember:e.deleteChatMember,listChatMessages:e.listChatMessages,sendChatMessage:e.sendChatMessage,getChatMessageAttachment:e.getChatMessageAttachment,listChatParts:e.listChatParts,putChatPipe:e.putChatPipe,deleteChatPipe:e.deleteChatPipe,sendSubagentMessage:e.sendSubagentMessage,stopSubagent:e.stopSubagent,stopChat:e.stopChat,listTurnToolCalls:e.listTurnToolCalls,getChatToolCall:e.getChatToolCall,answerChatToolCall:e.answerChatToolCall,listChatTurnArtifacts:e.listChatTurnArtifacts,getChatTurnArtifact:e.getChatTurnArtifact,getChatTurnCost:e.getChatTurnCost,startChatVoice:e.startChatVoice,getChatVoice:e.getChatVoice,closeChatVoice:e.closeChatVoice,commandChatVoice:e.commandChatVoice,getChatWorkspaceFile:e.getChatWorkspaceFile,putChatWorkspaceFile:e.putChatWorkspaceFile,deleteChatWorkspaceFile:e.deleteChatWorkspaceFile,addChatWorkspaceRepo:e.addChatWorkspaceRepo,listChatWorkspaceTokens:e.listChatWorkspaceTokens,createChatWorkspaceToken:e.createChatWorkspaceToken,revokeChatWorkspaceToken:e.revokeChatWorkspaceToken,createEmbeddings:e.createEmbeddings,listEndpoints:e.listEndpoints,putEndpoint:e.putEndpoint,deleteEndpoint:e.deleteEndpoint,listEnv:e.listEnv,putEnv:e.putEnv,deleteEnv:e.deleteEnv,createImage:e.createImage,getImage:e.getImage,getImageFile:e.getImageFile,deleteMachine:e.deleteMachine,cordonMachine:e.cordonMachine,resumeMachine:e.resumeMachine,listModels:e.listModels,revokePoolKey:e.revokePoolKey,listPools:e.listPools,createPool:e.createPool,deletePool:e.deletePool,listPoolKeys:e.listPoolKeys,createPoolKey:e.createPoolKey,getPoolState:e.getPoolState,listProviders:e.listProviders,connectProvider:e.connectProvider,disconnectProvider:e.disconnectProvider,listRepos:e.listRepos,putRepo:e.putRepo,deleteRepo:e.deleteRepo,createResponse:e.createResponse,getResponse:e.getResponse,cancelResponse:e.cancelResponse,followResponse:e.followResponse,getSettings:e.getSettings,putSettings:e.putSettings,getSpend:e.getSpend,askSupport:e.askSupport,listTools:e.listTools,listUsage:e.listUsage},analytics:{listAudiences:a.listAudiences,createAudience:a.createAudience,previewAudience:a.previewAudience,getAudience:a.getAudience,deleteAudience:a.deleteAudience,updateAudience:a.updateAudience,listAudienceMembers:a.listAudienceMembers,alias:a.alias,batch:a.batch,getEventBreakdown:a.getEventBreakdown,capture:a.capture,sendConsoleHistory:a.sendConsoleHistory,getConsoleConfig:a.getConsoleConfig,listConsoleRecords:a.listConsoleRecords,listEventNames:a.listEventNames,listEvents:a.listEvents,getEventTimeline:a.getEventTimeline,runFunnel:a.runFunnel,identify:a.identify,page:a.page,sendPerf:a.sendPerf,listPerfGroups:a.listPerfGroups,getPerfConfig:a.getPerfConfig,getPerfTimeline:a.getPerfTimeline,listRequestLines:a.listRequestLines,getMachineTraffic:a.getMachineTraffic,runRetention:a.runRetention,screen:a.screen,getSettings:a.getSettings,putSettings:a.putSettings,getSummary:a.getSummary,listTraces:a.listTraces,sendTrace:a.sendTrace,sendTraceBatch:a.sendTraceBatch,getTraceHops:a.getTraceHops,listSessionTraces:a.listSessionTraces,getTraceSummary:a.getTraceSummary,getTraceTimeline:a.getTraceTimeline,searchPeople:a.searchPeople,setPersonProperties:a.setPersonProperties,getPerson:a.getPerson,listPersonEvents:a.listPersonEvents,getEventCatalog:a.getEventCatalog,defineEvent:a.defineEvent},auth:{adminVerifyDeviceAssertion:n.adminVerifyDeviceAssertion,adminGetAttestPolicy:n.adminGetAttestPolicy,adminGetAttestObservations:n.adminGetAttestObservations,adminRecordAttestObservations:n.adminRecordAttestObservations,adminListAuditEvents:n.adminListAuditEvents,adminExportAuditEvents:n.adminExportAuditEvents,adminVerifyAuditTrail:n.adminVerifyAuditTrail,adminGetAuthSettings:n.adminGetAuthSettings,adminUpdateAuthSettings:n.adminUpdateAuthSettings,adminGetBreachWatch:n.adminGetBreachWatch,adminListHooks:n.adminListHooks,adminCreateHook:n.adminCreateHook,adminUpdateHook:n.adminUpdateHook,adminDeleteHook:n.adminDeleteHook,adminListHookExecutions:n.adminListHookExecutions,adminListIntegrations:n.adminListIntegrations,adminPutIntegration:n.adminPutIntegration,adminDeleteIntegration:n.adminDeleteIntegration,adminListOAuthClients:n.adminListOAuthClients,adminCreateOAuthClient:n.adminCreateOAuthClient,adminGetOAuthClient:n.adminGetOAuthClient,adminDeleteOAuthClient:n.adminDeleteOAuthClient,adminUpdateOAuthClient:n.adminUpdateOAuthClient,adminListProviders:n.adminListProviders,adminGetPhoneSettings:n.adminGetPhoneSettings,adminUpdatePhoneSettings:n.adminUpdatePhoneSettings,adminToggleProvider:n.adminToggleProvider,adminListRoles:n.adminListRoles,adminUpsertRole:n.adminUpsertRole,adminDeleteRole:n.adminDeleteRole,adminListServiceAccounts:n.adminListServiceAccounts,adminCreateServiceAccount:n.adminCreateServiceAccount,adminGetServiceAccount:n.adminGetServiceAccount,adminRevokeServiceAccount:n.adminRevokeServiceAccount,adminRotateServiceAccount:n.adminRotateServiceAccount,adminListSessions:n.adminListSessions,adminRevokeSession:n.adminRevokeSession,adminListSigningKeys:n.adminListSigningKeys,adminRotateSigningKey:n.adminRotateSigningKey,socialAdminConfig:n.socialAdminConfig,socialCredentialPut:n.socialCredentialPut,socialCredentialDelete:n.socialCredentialDelete,socialProviderPatch:n.socialProviderPatch,adminGetStats:n.adminGetStats,adminSendTestTemplate:n.adminSendTestTemplate,adminListTestUsers:n.adminListTestUsers,adminCreateTestUsers:n.adminCreateTestUsers,adminSetTestUserPhone:n.adminSetTestUserPhone,adminCreateTestSignupAddress:n.adminCreateTestSignupAddress,adminDeleteTestUser:n.adminDeleteTestUser,adminCreateCustomToken:n.adminCreateCustomToken,adminListUsers:n.adminListUsers,adminCreateUser:n.adminCreateUser,adminImportUsers:n.adminImportUsers,adminGetUser:n.adminGetUser,adminDeleteUser:n.adminDeleteUser,adminUpdateUser:n.adminUpdateUser,adminBanUser:n.adminBanUser,adminGetUserConsents:n.adminGetUserConsents,adminRevokeUserCredentials:n.adminRevokeUserCredentials,adminExportUser:n.adminExportUser,adminListUserMfaFactors:n.adminListUserMfaFactors,adminResetUserMfa:n.adminResetUserMfa,adminResetUserPassword:n.adminResetUserPassword,adminListUserRoles:n.adminListUserRoles,adminAssignUserRole:n.adminAssignUserRole,adminRevokeUserRole:n.adminRevokeUserRole,adminRevokeUserSessions:n.adminRevokeUserSessions,adminUnbanUser:n.adminUnbanUser,adminGetInstallationConsents:n.adminGetInstallationConsents,adminRefuseConsents:n.adminRefuseConsents},calls:{adminListCalls:p.adminListCalls,adminGetCall:p.adminGetCall,adminEndCall:p.adminEndCall,createCallTicket:p.createCallTicket,getCallSettings:p.getCallSettings,putCallSettings:p.putCallSettings,rotateCallHookSecret:p.rotateCallHookSecret},flags:{getValues:g.getValues,batchUserValues:g.batchUserValues,getDelta:g.getDelta,getEvaluations:g.getEvaluations,listExperiments:g.listExperiments,startExperiment:g.startExperiment,getExperiment:g.getExperiment,getExperimentResults:g.getExperimentResults,stopExperiment:g.stopExperiment,declareExperimentWinner:g.declareExperimentWinner,getCurrentInstallations:g.getCurrentInstallations,getInstallationsDaily:g.getInstallationsDaily,getSnapshot:g.getSnapshot,listDefinitions:g.listDefinitions,getDefinition:g.getDefinition,putDefinition:g.putDefinition,deleteDefinition:g.deleteDefinition,activateTemplates:g.activateTemplates,getActiveTemplate:g.getActiveTemplate,getTemplateCapabilities:g.getTemplateCapabilities,getTemplateDraft:g.getTemplateDraft,createTemplateDraft:g.createTemplateDraft,discardTemplateDraft:g.discardTemplateDraft,putTemplateParameter:g.putTemplateParameter,removeTemplateParameter:g.removeTemplateParameter,reviewTemplateDraft:g.reviewTemplateDraft,publishTemplate:g.publishTemplate,getPublishReceipt:g.getPublishReceipt,restoreTemplateVersion:g.restoreTemplateVersion,listTemplateVersions:g.listTemplateVersions,getTemplateVersion:g.getTemplateVersion,getUserValues:g.getUserValues,putUserValues:g.putUserValues,deleteUserValues:g.deleteUserValues,putUserValue:g.putUserValue,deleteUserValue:g.deleteUserValue},journeys:{listJourneys:m.listJourneys,createJourney:m.createJourney,listPersonRuns:m.listPersonRuns,simulateJourney:m.simulateJourney,validateJourney:m.validateJourney,getJourney:m.getJourney,updateJourney:m.updateJourney,deleteJourney:m.deleteJourney,copyJourney:m.copyJourney,publishJourney:m.publishJourney,listJourneyRuns:m.listJourneyRuns,getJourneyStats:m.getJourneyStats,stopJourney:m.stopJourney,testJourney:m.testJourney},machines:{listMachines:s.listMachines,createMachine:s.createMachine,listMachineSizes:s.listMachineSizes,getMachineNetwork:s.getMachineNetwork,connectGitHub:s.connectGitHub,listInstallations:s.listInstallations,linkInstallation:s.linkInstallation,shareInstallation:s.shareInstallation,unlinkInstallation:s.unlinkInstallation,listRepositories:s.listRepositories,getMachine:s.getMachine,deleteMachine:s.deleteMachine,updateMachine:s.updateMachine,listBuilds:s.listBuilds,deployMachine:s.deployMachine,listMachinePreviews:s.listMachinePreviews,putMachinePreview:s.putMachinePreview,deleteMachinePreview:s.deleteMachinePreview,listMachineDomains:s.listMachineDomains,addMachineDomain:s.addMachineDomain,deleteMachineDomain:s.deleteMachineDomain,updateMachineDomain:s.updateMachineDomain,getBuild:s.getBuild,getBuildLog:s.getBuildLog,rollbackMachine:s.rollbackMachine,listDatabases:s.listDatabases,createDatabase:s.createDatabase,listDatabaseSizes:s.listDatabaseSizes,getDatabase:s.getDatabase,deleteDatabase:s.deleteDatabase,updateDatabase:s.updateDatabase,undeleteDatabase:s.undeleteDatabase,purgeDatabase:s.purgeDatabase,getDatabaseCredentials:s.getDatabaseCredentials,changeDatabasePassword:s.changeDatabasePassword,readMachineLogs:s.readMachineLogs,getMachineMetrics:s.getMachineMetrics,getMachineContract:s.getMachineContract,restoreDatabase:s.restoreDatabase,getDatabaseSchema:s.getDatabaseSchema,getDatabaseMetrics:s.getDatabaseMetrics,queryDatabase:s.queryDatabase,listCrons:s.listCrons,listCronRuns:s.listCronRuns,runCron:s.runCron,pauseCron:s.pauseCron,resumeCron:s.resumeCron,listTasks:s.listTasks,enqueueTask:s.enqueueTask,getTask:s.getTask,cancelTask:s.cancelTask,retryTask:s.retryTask,listTaskTypes:s.listTaskTypes,makeTemplatedTestUsers:s.makeTemplatedTestUsers,templateTestUser:s.templateTestUser,deleteTemplatedTestUser:s.deleteTemplatedTestUser,listSites:s.listSites,createSite:s.createSite,getSite:s.getSite,deleteSite:s.deleteSite,updateSite:s.updateSite,listSiteReleases:s.listSiteReleases,createSiteRelease:s.createSiteRelease,uploadSiteFile:s.uploadSiteFile,finishSiteRelease:s.finishSiteRelease,rollbackSite:s.rollbackSite,listSiteBuilds:s.listSiteBuilds,deploySite:s.deploySite,listSitePreviews:s.listSitePreviews,listSiteDomains:s.listSiteDomains,addSiteDomain:s.addSiteDomain,deleteSiteDomain:s.deleteSiteDomain,updateSiteDomain:s.updateSiteDomain,getSiteBuild:s.getSiteBuild,authorizeSitePreview:s.authorizeSitePreview,authorizeMachinePreview:s.authorizeMachinePreview,openMachinePreview:s.openMachinePreview,moveMachine:s.moveMachine,moveSite:s.moveSite,moveDatabase:s.moveDatabase,cancelSiteBuild:s.cancelSiteBuild,cancelBuild:s.cancelBuild,listSiteHooks:s.listSiteHooks,createSiteHook:s.createSiteHook,deleteSiteHook:s.deleteSiteHook,listMachineHooks:s.listMachineHooks,createMachineHook:s.createMachineHook,deleteMachineHook:s.deleteMachineHook,detectProject:s.detectProject,createPreviewPass:s.createPreviewPass,listPreviewLinks:s.listPreviewLinks,createPreviewLink:s.createPreviewLink,deletePreviewLink:s.deletePreviewLink},messaging:{adminAccessLog:d.adminAccessLog,adminListConversations:d.adminListConversations,adminCreateConversation:d.adminCreateConversation,adminGetConversation:d.adminGetConversation,adminDeleteConversation:d.adminDeleteConversation,adminUpdateConversation:d.adminUpdateConversation,adminAddMembers:d.adminAddMembers,adminRemoveMember:d.adminRemoveMember,adminListMessages:d.adminListMessages,adminSendMessage:d.adminSendMessage,adminDeleteMessage:d.adminDeleteMessage,adminFileUrl:d.adminFileUrl,adminPutProfile:d.adminPutProfile,adminListReports:d.adminListReports,adminGetReport:d.adminGetReport,adminReportFileUrl:d.adminReportFileUrl,adminResolveReport:d.adminResolveReport,getSettings:d.getSettings,putSettings:d.putSettings,rotateHookSecret:d.rotateHookSecret},notify:{getDeliverability:l.getDeliverability,listDevices:l.listDevices,getDeviceStats:l.getDeviceStats,deleteMyDevice:l.deleteMyDevice,sendEmail:l.sendEmail,listInAppCampaigns:l.listInAppCampaigns,createInAppCampaign:l.createInAppCampaign,getInAppCampaign:l.getInAppCampaign,putInAppCampaign:l.putInAppCampaign,deleteInAppCampaign:l.deleteInAppCampaign,getInAppCampaignStats:l.getInAppCampaignStats,listInAppTemplates:l.listInAppTemplates,sendInbox:l.sendInbox,listInboxMessages:l.listInboxMessages,listNotifyMessages:l.listNotifyMessages,getNotifyMessage:l.getNotifyMessage,cancelMessage:l.cancelMessage,getMetricsSummary:l.getMetricsSummary,listNotifyProviders:l.listNotifyProviders,putNotifyProvider:l.putNotifyProvider,deleteNotifyProvider:l.deleteNotifyProvider,sendPush:l.sendPush,getNotifySettings:l.getNotifySettings,putNotifySettings:l.putNotifySettings,sendSms:l.sendSms,listEmailTemplates:l.listEmailTemplates,getEmailTemplate:l.getEmailTemplate,putEmailTemplate:l.putEmailTemplate,deleteEmailTemplate:l.deleteEmailTemplate,listPushTemplates:l.listPushTemplates,getPushTemplate:l.getPushTemplate,putPushTemplate:l.putPushTemplate,deletePushTemplate:l.deletePushTemplate,listSmsTemplates:l.listSmsTemplates,getSmsTemplate:l.getSmsTemplate,putSmsTemplate:l.putSmsTemplate,deleteSmsTemplate:l.deleteSmsTemplate,listWhatsAppTemplates:l.listWhatsAppTemplates,getWhatsAppTemplate:l.getWhatsAppTemplate,putWhatsAppTemplate:l.putWhatsAppTemplate,deleteWhatsAppTemplate:l.deleteWhatsAppTemplate,listTestUserMessages:l.listTestUserMessages,listTopics:l.listTopics,createTopic:l.createTopic,deleteTopic:l.deleteTopic,changeTopic:l.changeTopic,addTopicSubscribers:l.addTopicSubscribers,removeTopicSubscriber:l.removeTopicSubscriber,listUserDevices:l.listUserDevices,getUserPreferences:l.getUserPreferences,setUserPreferences:l.setUserPreferences,startVerification:l.startVerification,checkVerification:l.checkVerification,getWebPushStatus:l.getWebPushStatus,sendWhatsApp:l.sendWhatsApp,listWhatsAppInbound:l.listWhatsAppInbound},purchases:{getAppleAccount:i.getAppleAccount,disconnectApple:i.disconnectApple,createAppleGrant:i.createAppleGrant,getAppleReadiness:i.getAppleReadiness,setXcodeCertificate:i.setXcodeCertificate,clearXcodeCertificate:i.clearXcodeCertificate,getGoogleAccount:i.getGoogleAccount,connectGoogle:i.connectGoogle,disconnectGoogle:i.disconnectGoogle,getCatalog:i.getCatalog,saveCatalog:i.saveCatalog,planCatalog:i.planCatalog,getCatalogPlan:i.getCatalogPlan,confirmCatalogPlan:i.confirmCatalogPlan,declineCatalogPlan:i.declineCatalogPlan,validateCatalog:i.validateCatalog,listCharts:i.listCharts,getChartsOverview:i.getChartsOverview,getChart:i.getChart,getCustomer:i.getCustomer,grantCredits:i.grantCredits,listCreditEntries:i.listCreditEntries,forgiveCredits:i.forgiveCredits,listCustomerGrants:i.listCustomerGrants,grantEntitlement:i.grantEntitlement,revokeGrant:i.revokeGrant,holdSpend:i.holdSpend,setCustomerLimit:i.setCustomerLimit,clearCustomerLimit:i.clearCustomerLimit,grantLimit:i.grantLimit,spend:i.spend,commitSpend:i.commitSpend,extendHold:i.extendHold,releaseSpend:i.releaseSpend,reverseSpend:i.reverseSpend,listExperiments:i.listExperiments,startExperiment:i.startExperiment,getExperiment:i.getExperiment,getExperimentResults:i.getExperimentResults,stopExperiment:i.stopExperiment,declareExperimentWinner:i.declareExperimentWinner,getOfferings:i.getOfferings,listPaywalls:i.listPaywalls,createPaywall:i.createPaywall,listPaywallAssets:i.listPaywallAssets,registerPaywallAsset:i.registerPaywallAsset,deletePaywallAsset:i.deletePaywallAsset,listPaywallTemplates:i.listPaywallTemplates,getPaywallTemplateAsset:i.getPaywallTemplateAsset,validatePaywall:i.validatePaywall,getPaywall:i.getPaywall,deletePaywall:i.deletePaywall,savePaywallDraft:i.savePaywallDraft,publishPaywall:i.publishPaywall,listPaywallVersions:i.listPaywallVersions,getPaywallVersion:i.getPaywallVersion,listPlacements:i.listPlacements,listAttributeKeys:i.listAttributeKeys,setPlacement:i.setPlacement,deletePlacement:i.deletePlacement,recordPaywallExposure:i.recordPaywallExposure,getPlacementPaywall:i.getPlacementPaywall,previewPlacement:i.previewPlacement,getPlacementResults:i.getPlacementResults,getPlacementRules:i.getPlacementRules,setPlacementRules:i.setPlacementRules,getSettings:i.getSettings,updateSettings:i.updateSettings,getStripeAccount:i.getStripeAccount,disconnectStripe:i.disconnectStripe,checkStripeAccount:i.checkStripeAccount,createCheckout:i.createCheckout,createCheckoutRedemption:i.createCheckoutRedemption,createStripeGrant:i.createStripeGrant,createStripeAppInstall:i.createStripeAppInstall,getOfferStats:i.getOfferStats,listCoupons:i.listCoupons,createCoupon:i.createCoupon,getCoupon:i.getCoupon,revokeCoupon:i.revokeCoupon,listCouponCodes:i.listCouponCodes,setXcodeOfferKey:i.setXcodeOfferKey,searchCustomers:i.searchCustomers,getCustomerHistory:i.getCustomerHistory,listCatalogRevisions:i.listCatalogRevisions,getCatalogRevision:i.getCatalogRevision,restoreCatalogRevision:i.restoreCatalogRevision,extendSubscription:i.extendSubscription,refundSubscription:i.refundSubscription,cancelSubscription:i.cancelSubscription},realtime:{broadcast:h.broadcast,getChannels:h.getChannels,putChannels:h.putChannels,getLimits:h.getLimits,putLimits:h.putLimits,revalidate:h.revalidate,writeState:h.writeState,getStats:h.getStats},secrets:{listSecretAudit:c.listSecretAudit,listFieldKeys:c.listFieldKeys,getFieldKeys:c.getFieldKeys,openFields:c.openFields,sealPlaceholder:c.sealPlaceholder,rotateFieldKeys:c.rotateFieldKeys,listTransitKeys:c.listTransitKeys,getTransitKeys:c.getTransitKeys,getTransitPublicKeys:c.getTransitPublicKeys,rotateTransitKeys:c.rotateTransitKeys,retireTransitKey:c.retireTransitKey,listSecrets:c.listSecrets,getEnvironmentValues:c.getEnvironmentValues,getSecret:c.getSecret,putSecret:c.putSecret,deleteSecret:c.deleteSecret,rollbackSecret:c.rollbackSecret,listSecretVersions:c.listSecretVersions},storage:{listBuckets:u.listBuckets,getBucket:u.getBucket,putBucket:u.putBucket,deleteBucket:u.deleteBucket,copyObject:u.copyObject,moveObject:u.moveObject,listObjects:u.listObjects,getObject:u.getObject,putObject:u.putObject,deleteObject:u.deleteObject,headObject:u.headObject,createSignedUrl:u.createSignedUrl,createUploadUrl:u.createUploadUrl,getStorageStats:u.getStorageStats},stores:{listActions:o.listActions,getAction:o.getAction,confirmAction:o.confirmAction,declineAction:o.declineAction,getAppleAccount:o.getAppleAccount,disconnectApple:o.disconnectApple,checkAppleAccount:o.checkAppleAccount,createAppleGrant:o.createAppleGrant,getSandboxReadiness:o.getSandboxReadiness,listSandboxTesters:o.listSandboxTesters,clearSandboxPurchaseHistory:o.clearSandboxPurchaseHistory,updateSandboxTester:o.updateSandboxTester,listApps:o.listApps,listFeedback:o.listFeedback,getFeedback:o.getFeedback,listGroups:o.listGroups,createGroup:o.createGroup,linkApp:o.linkApp,getListing:o.getListing,setListing:o.setListing,planListing:o.planListing,createPackage:o.createPackage,uploadScreenshot:o.uploadScreenshot,getReviewInfo:o.getReviewInfo,setReviewInfo:o.setReviewInfo,getUploadKey:o.getUploadKey,getAppStoreVersion:o.getAppStoreVersion,prepareAppStoreVersion:o.prepareAppStoreVersion,planPhasedRelease:o.planPhasedRelease,planReleaseVersion:o.planReleaseVersion,planSubmitReview:o.planSubmitReview,planWithdrawReview:o.planWithdrawReview,getAppVitals:o.getAppVitals,getAppWebhook:o.getAppWebhook,makeAppWebhook:o.makeAppWebhook,pingAppWebhook:o.pingAppWebhook,getGoogleAccount:o.getGoogleAccount,connectGoogle:o.connectGoogle,disconnectGoogle:o.disconnectGoogle,checkGoogleAccount:o.checkGoogleAccount,deleteGroup:o.deleteGroup,renameGroup:o.renameGroup,addGroupBuild:o.addGroupBuild,listTesters:o.listTesters,setTesters:o.setTesters,listPackages:o.listPackages,getPackage:o.getPackage,planBetaReview:o.planBetaReview,listDeliveries:o.listDeliveries,deliver:o.deliver,getSignedBundleLink:o.getSignedBundleLink,planExpire:o.planExpire,planExportCompliance:o.planExportCompliance,setWhatToTest:o.setWhatToTest,getAppleSession:o.getAppleSession,disconnectAppleSession:o.disconnectAppleSession,checkAppleSession:o.checkAppleSession,createAppleIdGrant:o.createAppleIdGrant,getAppReview:o.getAppReview,getReviewAttachment:o.getReviewAttachment,setReviewDraft:o.setReviewDraft,sendReviewDraft:o.sendReviewDraft,getAppPrivacy:o.getAppPrivacy,setAppPrivacy:o.setAppPrivacy,makeAppRecord:o.makeAppRecord,removeAppRecord:o.removeAppRecord,listMadeAppleKeys:o.listMadeAppleKeys,makeAppleKey:o.makeAppleKey,revokeMadeAppleKey:o.revokeMadeAppleKey,shareAppleSession:o.shareAppleSession,unshareAppleSession:o.unshareAppleSession}}}function K(t){return{orgs:{async list(e){return t.send({op:"orgs.list",method:"GET",path:"/v1/orgs",auth:[["PalbaseBearer"]],answers:{200:"json"},signal:e?.signal})},async create(e){return t.send({op:"orgs.create",method:"POST",path:"/v1/orgs",auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,body:{kind:"json",contentType:"application/json",value:e.body},signal:e.signal})},async get(e){return t.send({op:"orgs.get",method:"GET",path:"/v1/orgs/"+r("orgs.get","id",e.path.id),auth:[["PalbaseBearer"]],answers:{200:"json"},signal:e.signal})},async takeAway(e){return t.send({op:"orgs.takeAway",method:"DELETE",path:"/v1/orgs/"+r("orgs.takeAway","id",e.path.id),auth:[["PalbaseBearer"]],answers:{204:"empty"},idempotent:!0,headers:e.headers,signal:e.signal})},async rename(e){return t.send({op:"orgs.rename",method:"PATCH",path:"/v1/orgs/"+r("orgs.rename","id",e.path.id),auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,body:{kind:"json",contentType:"application/json",value:e.body},signal:e.signal})},async members(e){return t.send({op:"orgs.members",method:"GET",path:"/v1/orgs/"+r("orgs.members","id",e.path.id)+"/members",auth:[["PalbaseBearer"]],answers:{200:"json"},signal:e.signal})},async auditLog(e){return t.send({op:"orgs.auditLog",method:"GET",path:"/v1/orgs/"+r("orgs.auditLog","id",e.path.id)+"/audit",auth:[["PalbaseBearer"]],answers:{200:"json"},query:e.query,signal:e.signal})}},invitations:{async mine(e){return t.send({op:"invitations.mine",method:"GET",path:"/v1/invitations",auth:[["PalbaseBearer"]],answers:{200:"json"},signal:e?.signal})},async accept(e){return t.send({op:"invitations.accept",method:"POST",path:"/v1/invitations/"+r("invitations.accept","id",e.path.id)+"/accept",auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,signal:e.signal})}},orgWebhooks:{async list(e){return t.send({op:"orgWebhooks.list",method:"GET",path:"/v1/orgs/"+r("orgWebhooks.list","id",e.path.id)+"/webhooks",auth:[["PalbaseBearer"]],answers:{200:"json"},signal:e.signal})},async add(e){return t.send({op:"orgWebhooks.add",method:"POST",path:"/v1/orgs/"+r("orgWebhooks.add","id",e.path.id)+"/webhooks",auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,body:{kind:"json",contentType:"application/json",value:e.body},signal:e.signal})},async remove(e){return t.send({op:"orgWebhooks.remove",method:"DELETE",path:"/v1/orgs/"+r("orgWebhooks.remove","id",e.path.id)+"/webhooks/"+r("orgWebhooks.remove","endpoint",e.path.endpoint),auth:[["PalbaseBearer"]],answers:{204:"empty"},idempotent:!0,headers:e.headers,signal:e.signal})}},projects:{async mine(e){return t.send({op:"projects.mine",method:"GET",path:"/v1/projects",auth:[["PalbaseBearer"]],answers:{200:"json"},signal:e?.signal})},async environmentsMine(e){return t.send({op:"projects.environmentsMine",method:"GET",path:"/v1/environments",auth:[["PalbaseBearer"]],answers:{200:"json"},signal:e?.signal})},async list(e){return t.send({op:"projects.list",method:"GET",path:"/v1/orgs/"+r("projects.list","id",e.path.id)+"/projects",auth:[["PalbaseBearer"]],answers:{200:"json"},signal:e.signal})},async create(e){return t.send({op:"projects.create",method:"POST",path:"/v1/orgs/"+r("projects.create","id",e.path.id)+"/projects",auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,body:{kind:"json",contentType:"application/json",value:e.body},signal:e.signal})},async get(e){return t.send({op:"projects.get",method:"GET",path:"/v1/projects/"+r("projects.get","id",e.path.id),auth:[["PalbaseBearer"]],answers:{200:"json"},signal:e.signal})},async remove(e){return t.send({op:"projects.remove",method:"DELETE",path:"/v1/projects/"+r("projects.remove","id",e.path.id),auth:[["PalbaseBearer"]],answers:{204:"empty"},idempotent:!0,headers:e.headers,signal:e.signal})},async rename(e){return t.send({op:"projects.rename",method:"PATCH",path:"/v1/projects/"+r("projects.rename","id",e.path.id),auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,body:{kind:"json",contentType:"application/json",value:e.body},signal:e.signal})},async addEnvironment(e){return t.send({op:"projects.addEnvironment",method:"POST",path:"/v1/projects/"+r("projects.addEnvironment","id",e.path.id)+"/environments",auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,body:{kind:"json",contentType:"application/json",value:e.body},signal:e.signal})},async environment(e){return t.send({op:"projects.environment",method:"GET",path:"/v1/environments/"+r("projects.environment","ref",e.path.ref),auth:[["PalbaseBearer"]],answers:{200:"json"},signal:e.signal})},async removeEnvironment(e){return t.send({op:"projects.removeEnvironment",method:"DELETE",path:"/v1/environments/"+r("projects.removeEnvironment","ref",e.path.ref),auth:[["PalbaseBearer"]],answers:{204:"empty"},idempotent:!0,query:e.query,headers:e.headers,signal:e.signal})},async renameEnvironment(e){return t.send({op:"projects.renameEnvironment",method:"PATCH",path:"/v1/environments/"+r("projects.renameEnvironment","ref",e.path.ref),auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,body:{kind:"json",contentType:"application/json",value:e.body},signal:e.signal})},async keys(e){return t.send({op:"projects.keys",method:"GET",path:"/v1/environments/"+r("projects.keys","ref",e.path.ref)+"/keys",auth:[["PalbaseBearer"]],answers:{200:"json"},signal:e.signal})},async usage(e){return t.send({op:"projects.usage",method:"GET",path:"/v1/environments/"+r("projects.usage","ref",e.path.ref)+"/usage",auth:[["PalbaseBearer"]],answers:{200:"json"},query:e.query,signal:e.signal})},async personalKey(e){return t.send({op:"projects.personalKey",method:"POST",path:"/v1/environments/"+r("projects.personalKey","ref",e.path.ref)+"/personal-key",auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,body:{kind:"json",contentType:"application/json",value:e.body},signal:e.signal})},async revokePersonalKey(e){return t.send({op:"projects.revokePersonalKey",method:"DELETE",path:"/v1/environments/"+r("projects.revokePersonalKey","ref",e.path.ref)+"/personal-key/"+r("projects.revokePersonalKey","key",e.path.key),auth:[["PalbaseBearer"]],answers:{204:"empty"},idempotent:!0,headers:e.headers,signal:e.signal})},async shareInstallation(e){return t.send({op:"projects.shareInstallation",method:"POST",path:"/v1/environments/"+r("projects.shareInstallation","ref",e.path.ref)+"/github/installations",auth:[["PalbaseBearer"]],answers:{},ownResponse:!0,idempotent:!0,headers:e.headers,body:{kind:"json",contentType:"application/json",value:e.body},signal:e.signal})}},apps:{async list(e){return t.send({op:"apps.list",method:"GET",path:"/v1/projects/"+r("apps.list","id",e.path.id)+"/apps",auth:[["PalbaseBearer"]],answers:{200:"json"},signal:e.signal})},async create(e){return t.send({op:"apps.create",method:"POST",path:"/v1/projects/"+r("apps.create","id",e.path.id)+"/apps",auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,body:{kind:"json",contentType:"application/json",value:e.body},signal:e.signal})},async get(e){return t.send({op:"apps.get",method:"GET",path:"/v1/projects/"+r("apps.get","id",e.path.id)+"/apps/"+r("apps.get","app",e.path.app),auth:[["PalbaseBearer"]],answers:{200:"json"},signal:e.signal})},async remove(e){return t.send({op:"apps.remove",method:"DELETE",path:"/v1/projects/"+r("apps.remove","id",e.path.id)+"/apps/"+r("apps.remove","app",e.path.app),auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,signal:e.signal})},async update(e){return t.send({op:"apps.update",method:"PATCH",path:"/v1/projects/"+r("apps.update","id",e.path.id)+"/apps/"+r("apps.update","app",e.path.app),auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,body:{kind:"json",contentType:"application/json",value:e.body},signal:e.signal})},async restore(e){return t.send({op:"apps.restore",method:"POST",path:"/v1/projects/"+r("apps.restore","id",e.path.id)+"/apps/"+r("apps.restore","app",e.path.app)+"/restore",auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,signal:e.signal})},async setIn(e){return t.send({op:"apps.setIn",method:"PUT",path:"/v1/environments/"+r("apps.setIn","ref",e.path.ref)+"/apps/"+r("apps.setIn","app",e.path.app),auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,body:{kind:"json",contentType:"application/json",value:e.body},signal:e.signal})},async removeFrom(e){return t.send({op:"apps.removeFrom",method:"DELETE",path:"/v1/environments/"+r("apps.removeFrom","ref",e.path.ref)+"/apps/"+r("apps.removeFrom","app",e.path.app),auth:[["PalbaseBearer"]],answers:{204:"empty"},idempotent:!0,headers:e.headers,signal:e.signal})},async config(e){return t.send({op:"apps.config",method:"GET",path:"/v1/environments/"+r("apps.config","ref",e.path.ref)+"/apps/"+r("apps.config","app",e.path.app)+"/config",auth:[["PalbaseBearer"]],answers:{200:"json"},signal:e.signal})}},snippets:{async list(e){return t.send({op:"snippets.list",method:"GET",path:"/v1/environments/"+r("snippets.list","ref",e.path.ref)+"/snippets",auth:[["PalbaseBearer"]],answers:{200:"json"},signal:e.signal})},async create(e){return t.send({op:"snippets.create",method:"POST",path:"/v1/environments/"+r("snippets.create","ref",e.path.ref)+"/snippets",auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,body:{kind:"json",contentType:"application/json",value:e.body},signal:e.signal})},async remove(e){return t.send({op:"snippets.remove",method:"DELETE",path:"/v1/environments/"+r("snippets.remove","ref",e.path.ref)+"/snippets/"+r("snippets.remove","id",e.path.id),auth:[["PalbaseBearer"]],answers:{204:"empty"},idempotent:!0,headers:e.headers,signal:e.signal})},async change(e){return t.send({op:"snippets.change",method:"PATCH",path:"/v1/environments/"+r("snippets.change","ref",e.path.ref)+"/snippets/"+r("snippets.change","id",e.path.id),auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,body:{kind:"json",contentType:"application/json",value:e.body},signal:e.signal})}},chartViews:{async list(e){return t.send({op:"chartViews.list",method:"GET",path:"/v1/environments/"+r("chartViews.list","ref",e.path.ref)+"/chart-views",auth:[["PalbaseBearer"]],answers:{200:"json"},signal:e.signal})},async create(e){return t.send({op:"chartViews.create",method:"POST",path:"/v1/environments/"+r("chartViews.create","ref",e.path.ref)+"/chart-views",auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,body:{kind:"json",contentType:"application/json",value:e.body},signal:e.signal})},async remove(e){return t.send({op:"chartViews.remove",method:"DELETE",path:"/v1/environments/"+r("chartViews.remove","ref",e.path.ref)+"/chart-views/"+r("chartViews.remove","id",e.path.id),auth:[["PalbaseBearer"]],answers:{204:"empty"},idempotent:!0,headers:e.headers,signal:e.signal})},async change(e){return t.send({op:"chartViews.change",method:"PATCH",path:"/v1/environments/"+r("chartViews.change","ref",e.path.ref)+"/chart-views/"+r("chartViews.change","id",e.path.id),auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,body:{kind:"json",contentType:"application/json",value:e.body},signal:e.signal})}},webhooks:{async list(e){return t.send({op:"webhooks.list",method:"GET",path:"/v1/environments/"+r("webhooks.list","ref",e.path.ref)+"/webhooks",auth:[["PalbaseBearer"]],answers:{200:"json"},signal:e.signal})},async add(e){return t.send({op:"webhooks.add",method:"POST",path:"/v1/environments/"+r("webhooks.add","ref",e.path.ref)+"/webhooks",auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,body:{kind:"json",contentType:"application/json",value:e.body},signal:e.signal})},async deliveries(e){return t.send({op:"webhooks.deliveries",method:"GET",path:"/v1/environments/"+r("webhooks.deliveries","ref",e.path.ref)+"/webhooks/deliveries",auth:[["PalbaseBearer"]],answers:{200:"json"},query:e.query,signal:e.signal})},async redeliver(e){return t.send({op:"webhooks.redeliver",method:"POST",path:"/v1/environments/"+r("webhooks.redeliver","ref",e.path.ref)+"/webhooks/deliveries/"+r("webhooks.redeliver","delivery",e.path.delivery)+"/redeliver",auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,signal:e.signal})},async change(e){return t.send({op:"webhooks.change",method:"PUT",path:"/v1/environments/"+r("webhooks.change","ref",e.path.ref)+"/webhooks/"+r("webhooks.change","endpoint",e.path.endpoint),auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,body:{kind:"json",contentType:"application/json",value:e.body},signal:e.signal})},async remove(e){return t.send({op:"webhooks.remove",method:"DELETE",path:"/v1/environments/"+r("webhooks.remove","ref",e.path.ref)+"/webhooks/"+r("webhooks.remove","endpoint",e.path.endpoint),auth:[["PalbaseBearer"]],answers:{204:"empty"},idempotent:!0,headers:e.headers,signal:e.signal})}},environmentTokens:{async list(e){return t.send({op:"environmentTokens.list",method:"GET",path:"/v1/environments/"+r("environmentTokens.list","ref",e.path.ref)+"/tokens",auth:[["PalbaseBearer"]],answers:{200:"json"},signal:e.signal})},async mint(e){return t.send({op:"environmentTokens.mint",method:"POST",path:"/v1/environments/"+r("environmentTokens.mint","ref",e.path.ref)+"/tokens",auth:[["PalbaseBearer"],[]],answers:{200:"json"},idempotent:!0,headers:e.headers,body:{kind:"json",contentType:"application/json",value:e.body},signal:e.signal})},async revoke(e){return t.send({op:"environmentTokens.revoke",method:"DELETE",path:"/v1/environments/"+r("environmentTokens.revoke","ref",e.path.ref)+"/tokens/"+r("environmentTokens.revoke","id",e.path.id),auth:[["PalbaseBearer"]],answers:{204:"empty"},idempotent:!0,headers:e.headers,signal:e.signal})}},billing:{async bill(e){return t.send({op:"billing.bill",method:"GET",path:"/v1/orgs/"+r("billing.bill","id",e.path.id)+"/billing",auth:[["PalbaseBearer"]],answers:{200:"json"},signal:e.signal})},async confirm(e){return t.send({op:"billing.confirm",method:"POST",path:"/v1/orgs/"+r("billing.confirm","id",e.path.id)+"/billing/checkout/"+r("billing.confirm","session",e.path.session)+"/confirm",auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,signal:e.signal})},async cards(e){return t.send({op:"billing.cards",method:"GET",path:"/v1/orgs/"+r("billing.cards","id",e.path.id)+"/billing/cards",auth:[["PalbaseBearer"]],answers:{200:"json"},signal:e.signal})},async defaultCard(e){return t.send({op:"billing.defaultCard",method:"PUT",path:"/v1/orgs/"+r("billing.defaultCard","id",e.path.id)+"/billing/cards/"+r("billing.defaultCard","card",e.path.card)+"/default",auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,signal:e.signal})},async removeCard(e){return t.send({op:"billing.removeCard",method:"DELETE",path:"/v1/orgs/"+r("billing.removeCard","id",e.path.id)+"/billing/cards/"+r("billing.removeCard","card",e.path.card),auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,signal:e.signal})},async customer(e){return t.send({op:"billing.customer",method:"GET",path:"/v1/orgs/"+r("billing.customer","id",e.path.id)+"/billing/customer",auth:[["PalbaseBearer"]],answers:{200:"json"},signal:e.signal})},async setCustomer(e){return t.send({op:"billing.setCustomer",method:"PUT",path:"/v1/orgs/"+r("billing.setCustomer","id",e.path.id)+"/billing/customer",auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,body:{kind:"json",contentType:"application/json",value:e.body},signal:e.signal})},async charges(e){return t.send({op:"billing.charges",method:"GET",path:"/v1/orgs/"+r("billing.charges","id",e.path.id)+"/billing/charges",auth:[["PalbaseBearer"]],answers:{200:"json"},query:e.query,signal:e.signal})},async csv(e){return t.send({op:"billing.csv",method:"GET",path:"/v1/orgs/"+r("billing.csv","id",e.path.id)+"/billing/charges.csv",auth:[["PalbaseBearer"]],answers:{},ownResponse:!0,query:e.query,signal:e.signal})},async invoices(e){return t.send({op:"billing.invoices",method:"GET",path:"/v1/orgs/"+r("billing.invoices","id",e.path.id)+"/billing/invoices",auth:[["PalbaseBearer"]],answers:{200:"json"},signal:e.signal})},async payer(e){return t.send({op:"billing.payer",method:"PUT",path:"/v1/orgs/"+r("billing.payer","id",e.path.id)+"/billing/payer",auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,body:{kind:"json",contentType:"application/json",value:e.body},signal:e.signal})},async paid(e){return t.send({op:"billing.paid",method:"GET",path:"/v1/orgs/"+r("billing.paid","id",e.path.id)+"/billing/paid",auth:[["PalbaseBearer"]],answers:{200:"json"},signal:e.signal})},async stopPaying(e){return t.send({op:"billing.stopPaying",method:"DELETE",path:"/v1/orgs/"+r("billing.stopPaying","id",e.path.id)+"/billing/paid/"+r("billing.stopPaying","org",e.path.org),auth:[["PalbaseBearer"]],answers:{204:"empty"},idempotent:!0,headers:e.headers,signal:e.signal})},async report(e){return t.send({op:"billing.report",method:"GET",path:"/v1/orgs/"+r("billing.report","id",e.path.id)+"/billing/report",auth:[["PalbaseBearer"]],answers:{200:"json"},query:e.query,signal:e.signal})},async reportCsv(e){return t.send({op:"billing.reportCsv",method:"GET",path:"/v1/orgs/"+r("billing.reportCsv","id",e.path.id)+"/billing/report.csv",auth:[["PalbaseBearer"]],answers:{},ownResponse:!0,query:e.query,signal:e.signal})},async project(e){return t.send({op:"billing.project",method:"GET",path:"/v1/orgs/"+r("billing.project","id",e.path.id)+"/billing/projects/"+r("billing.project","project",e.path.project),auth:[["PalbaseBearer"]],answers:{200:"json"},signal:e.signal})},async steer(e){return t.send({op:"billing.steer",method:"PATCH",path:"/v1/orgs/"+r("billing.steer","id",e.path.id)+"/billing/projects/"+r("billing.steer","project",e.path.project),auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,body:{kind:"json",contentType:"application/json",value:e.body},signal:e.signal})},async freeze(e){return t.send({op:"billing.freeze",method:"PATCH",path:"/v1/orgs/"+r("billing.freeze","id",e.path.id)+"/billing/environments/"+r("billing.freeze","ref",e.path.ref),auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,body:{kind:"json",contentType:"application/json",value:e.body},signal:e.signal})}},accessRequests:{async request(e){return t.send({op:"accessRequests.request",method:"POST",path:"/v1/access-requests",auth:[["PalbaseBearer"],[]],answers:{200:"json"},idempotent:!0,headers:e.headers,body:{kind:"json",contentType:"application/json",value:e.body},signal:e.signal})}},docs:{async search(e){return t.send({op:"docs.search",method:"GET",path:"/v1/docs/search",auth:[["PalbaseBearer"],[]],answers:{200:"json"},query:e.query,signal:e.signal})}}}}function V(t){let{mint:e,revoke:a}=t;return async n=>{let p=await e(n),g=n.body?.role,m=n.body?.on_behalf_of;if(g===void 0&&m===void 0)return p;let s=p.data,d=[];if(g!==void 0&&s.role!==g&&d.push(`role ${g} (it came back ${s.role==null?"at its minter's":s.role})`),m!==void 0&&s.on_behalf_of!==m.trim()&&d.push("on_behalf_of"),d.length===0)return p;let l;try{await a({path:{ref:n.path.ref,id:String(s.id)}})}catch(h){l=h}let i=`Studio minted the token without the ${d.join(" and ")} asked for \u2014 it is older than this SDK`;throw new y({op:"environmentTokens.mint",status:0,code:"token_role_not_kept",message:l===void 0?`environmentTokens.mint: ${i}; the token (${s.id}) was revoked at once and is not returned \u2014 mint it again once Studio is updated`:`environmentTokens.mint: ${i}, and revoking it failed (${l instanceof Error?l.message:String(l)}) \u2014 revoke token ${s.id} of environment ${n.path.ref} yourself, now`,cause:l})}}var _={pbo_:"an organization's",pbu_:"an account's",pbe_:"an environment's"},J=/^[A-Za-z0-9_-]*$/,O=64,b=44;function z(t){if(typeof t!="string"||t==="")return"token is missing: pass an access token, an organization's (pbo_\u2026), an account's (pbu_\u2026) or an environment's (pbe_\u2026)";let e=t.slice(0,4);if(!Object.hasOwn(_,e))return`token has the wrong prefix: an access token starts with pbo_ (an organization's), pbu_ (an account's) or pbe_ (an environment's)${/^pb_[a-z0-9]+_[cs]/.test(t)?" \u2014 a project key belongs in palbase/server or palbase/web":""}`;let a=t.slice(4);if(a.length!==O)return`token has the wrong length: ${_[e]} access token is ${e} and ${O} characters, this one has ${a.length} after it`;if(!J.test(a))return`token is not ${_[e]} access token: after ${e} come base64url characters alone (A\u2013Z, a\u2013z, 0\u20139, - and _)`;let n=X(a),p=(n[b]<<24|n[b+1]<<16|n[b+2]<<8|n[b+3])>>>0;if(Y(e,n.subarray(0,b))!==p)return"token's checksum does not match: it was mistyped or cut, or made before access tokens carried one \u2014 make a new token"}function N(t){return z(t)===void 0}function H(t){let e=z(t);if(e!==void 0)throw new TypeError(e)}var $="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";function X(t){let e=new Uint8Array(t.length*6/8),a=0,n=0,p=0;for(let g of t)a=a<<6|$.indexOf(g),n+=6,n>=8&&(n-=8,e[p++]=a>>n&255);return e}var W=(()=>{let t=new Uint32Array(256);for(let e=0;e<256;e++){let a=e;for(let n=0;n<8;n++)a=a&1?3988292384^a>>>1:a>>>1;t[e]=a>>>0}return t})();function Y(t,e){let a=4294967295;for(let n=0;n<t.length;n++)a=W[(a^t.charCodeAt(n))&255]^a>>>8;for(let n of e)a=W[(a^n)&255]^a>>>8;return(a^4294967295)>>>0}var q="palbase.studio",Z="palbase";function Q(){let t=globalThis;return typeof t.window<"u"||typeof t.document<"u"||typeof t.importScripts=="function"||I()}var v=class{domain;#e;#t=new Map;constructor(e){if(Q())throw new TypeError("palbase/cloud runs on a server: its access token opens the organization's projects, so it never goes into a browser, a web worker or a mobile app \u2014 keep it on your server, and have your app call that");H(e?.token);let a=e.domain??q;if(typeof a!="string"||!/^[a-z0-9-]+(\.[a-z0-9-]+)+$/.test(a))throw new TypeError(`domain ${JSON.stringify(a)} is not a domain`);this.domain=a;let n=e.token;this.#e=g=>G(f({baseUrl:g,credentials:{token:n},fetch:e.fetch,solveProofOfWork:!1}),e.retry??B);let p=K(this.#e(`https://palbase.app.${a}`));p.environmentTokens.mint=V(p.environmentTokens),Object.assign(this,p)}project(e){if(typeof e!="string"||!/^[a-z0-9]{1,63}$/.test(e))throw new TypeError(`${JSON.stringify(e)} is not an environment's ref`);let a=this.#t.get(e);return a||(a=L(this.#e(e===Z?`https://connect.${this.domain}`:`https://${e}.${this.domain}`)),this.#t.set(e,a)),a}};export{q as DEFAULT_DOMAIN,v as PalbaseCloud,y as PalbaseError,N as tokenIsWellFormed};
|
|
1
|
+
/*! palbase 0.44.2 — Palbase SDK License (see LICENSE) */
|
|
2
|
+
import{a as I}from"../chunks/HKI7EIZ2.js";import{a as P,b as k,c as S,e as w,f as C,g as A,h as T,i as R,j,k as E,l as x,m as D,n as M,o as U}from"../chunks/GC7EQ7RE.js";import{a as B,b as G}from"../chunks/ZETXRBPI.js";import{b as y,c as r,d as f}from"../chunks/FDYCE744.js";import"../chunks/Z27XP2BK.js";import"../chunks/XCAG4JHP.js";function L(t){let e=P.client(t),a=k.client(t),n=S.client(t),p=w.client(t),g=C.client(t),m=A.client(t),s=T.client(t),d=R.client(t),l=j.client(t),i=E.client(t),h=x.client(t),c=D.client(t),u=M.client(t),o=U.client(t);return{ai:{draftAgent:e.draftAgent,listAgents:e.listAgents,getAgent:e.getAgent,putAgent:e.putAgent,deleteAgent:e.deleteAgent,publishAgent:e.publishAgent,rollbackAgent:e.rollbackAgent,listAgentVersions:e.listAgentVersions,listChats:e.listChats,createChat:e.createChat,getChat:e.getChat,deleteChat:e.deleteChat,decideChatApproval:e.decideChatApproval,forkChat:e.forkChat,getChatGoal:e.getChatGoal,setChatGoal:e.setChatGoal,clearChatGoal:e.clearChatGoal,updateChatGoal:e.updateChatGoal,putChatMember:e.putChatMember,deleteChatMember:e.deleteChatMember,listChatMessages:e.listChatMessages,sendChatMessage:e.sendChatMessage,getChatMessageAttachment:e.getChatMessageAttachment,listChatParts:e.listChatParts,putChatPipe:e.putChatPipe,deleteChatPipe:e.deleteChatPipe,sendSubagentMessage:e.sendSubagentMessage,stopSubagent:e.stopSubagent,stopChat:e.stopChat,listTurnToolCalls:e.listTurnToolCalls,getChatToolCall:e.getChatToolCall,answerChatToolCall:e.answerChatToolCall,listChatTurnArtifacts:e.listChatTurnArtifacts,getChatTurnArtifact:e.getChatTurnArtifact,getChatTurnCost:e.getChatTurnCost,startChatVoice:e.startChatVoice,getChatVoice:e.getChatVoice,closeChatVoice:e.closeChatVoice,commandChatVoice:e.commandChatVoice,getChatWorkspaceFile:e.getChatWorkspaceFile,putChatWorkspaceFile:e.putChatWorkspaceFile,deleteChatWorkspaceFile:e.deleteChatWorkspaceFile,addChatWorkspaceRepo:e.addChatWorkspaceRepo,listChatWorkspaceTokens:e.listChatWorkspaceTokens,createChatWorkspaceToken:e.createChatWorkspaceToken,revokeChatWorkspaceToken:e.revokeChatWorkspaceToken,createEmbeddings:e.createEmbeddings,listEndpoints:e.listEndpoints,putEndpoint:e.putEndpoint,deleteEndpoint:e.deleteEndpoint,listEnv:e.listEnv,putEnv:e.putEnv,deleteEnv:e.deleteEnv,createImage:e.createImage,getImage:e.getImage,getImageFile:e.getImageFile,deleteMachine:e.deleteMachine,cordonMachine:e.cordonMachine,resumeMachine:e.resumeMachine,listModels:e.listModels,revokePoolKey:e.revokePoolKey,listPools:e.listPools,createPool:e.createPool,deletePool:e.deletePool,listPoolKeys:e.listPoolKeys,createPoolKey:e.createPoolKey,getPoolState:e.getPoolState,listProviders:e.listProviders,connectProvider:e.connectProvider,disconnectProvider:e.disconnectProvider,listRepos:e.listRepos,putRepo:e.putRepo,deleteRepo:e.deleteRepo,createResponse:e.createResponse,getResponse:e.getResponse,cancelResponse:e.cancelResponse,followResponse:e.followResponse,getSettings:e.getSettings,putSettings:e.putSettings,getSpend:e.getSpend,askSupport:e.askSupport,listTools:e.listTools,listUsage:e.listUsage},analytics:{listAudiences:a.listAudiences,createAudience:a.createAudience,previewAudience:a.previewAudience,getAudience:a.getAudience,deleteAudience:a.deleteAudience,updateAudience:a.updateAudience,listAudienceMembers:a.listAudienceMembers,alias:a.alias,batch:a.batch,getEventBreakdown:a.getEventBreakdown,capture:a.capture,sendConsoleHistory:a.sendConsoleHistory,getConsoleConfig:a.getConsoleConfig,listConsoleRecords:a.listConsoleRecords,listEventNames:a.listEventNames,listEvents:a.listEvents,getEventTimeline:a.getEventTimeline,runFunnel:a.runFunnel,identify:a.identify,page:a.page,sendPerf:a.sendPerf,listPerfGroups:a.listPerfGroups,getPerfConfig:a.getPerfConfig,getPerfTimeline:a.getPerfTimeline,listRequestLines:a.listRequestLines,getMachineTraffic:a.getMachineTraffic,runRetention:a.runRetention,screen:a.screen,getSettings:a.getSettings,putSettings:a.putSettings,getSummary:a.getSummary,listTraces:a.listTraces,sendTrace:a.sendTrace,sendTraceBatch:a.sendTraceBatch,getTraceHops:a.getTraceHops,listSessionTraces:a.listSessionTraces,getTraceSummary:a.getTraceSummary,getTraceTimeline:a.getTraceTimeline,searchPeople:a.searchPeople,setPersonProperties:a.setPersonProperties,getPerson:a.getPerson,listPersonEvents:a.listPersonEvents,getEventCatalog:a.getEventCatalog,defineEvent:a.defineEvent},auth:{adminVerifyDeviceAssertion:n.adminVerifyDeviceAssertion,adminGetAttestPolicy:n.adminGetAttestPolicy,adminGetAttestObservations:n.adminGetAttestObservations,adminRecordAttestObservations:n.adminRecordAttestObservations,adminListAuditEvents:n.adminListAuditEvents,adminExportAuditEvents:n.adminExportAuditEvents,adminVerifyAuditTrail:n.adminVerifyAuditTrail,adminGetAuthSettings:n.adminGetAuthSettings,adminUpdateAuthSettings:n.adminUpdateAuthSettings,adminGetBreachWatch:n.adminGetBreachWatch,adminListHooks:n.adminListHooks,adminCreateHook:n.adminCreateHook,adminUpdateHook:n.adminUpdateHook,adminDeleteHook:n.adminDeleteHook,adminListHookExecutions:n.adminListHookExecutions,adminListIntegrations:n.adminListIntegrations,adminPutIntegration:n.adminPutIntegration,adminDeleteIntegration:n.adminDeleteIntegration,adminListOAuthClients:n.adminListOAuthClients,adminCreateOAuthClient:n.adminCreateOAuthClient,adminGetOAuthClient:n.adminGetOAuthClient,adminDeleteOAuthClient:n.adminDeleteOAuthClient,adminUpdateOAuthClient:n.adminUpdateOAuthClient,adminListProviders:n.adminListProviders,adminGetPhoneSettings:n.adminGetPhoneSettings,adminUpdatePhoneSettings:n.adminUpdatePhoneSettings,adminToggleProvider:n.adminToggleProvider,adminListRoles:n.adminListRoles,adminUpsertRole:n.adminUpsertRole,adminDeleteRole:n.adminDeleteRole,adminListServiceAccounts:n.adminListServiceAccounts,adminCreateServiceAccount:n.adminCreateServiceAccount,adminGetServiceAccount:n.adminGetServiceAccount,adminRevokeServiceAccount:n.adminRevokeServiceAccount,adminRotateServiceAccount:n.adminRotateServiceAccount,adminListSessions:n.adminListSessions,adminRevokeSession:n.adminRevokeSession,adminListSigningKeys:n.adminListSigningKeys,adminRotateSigningKey:n.adminRotateSigningKey,socialAdminConfig:n.socialAdminConfig,socialCredentialPut:n.socialCredentialPut,socialCredentialDelete:n.socialCredentialDelete,socialProviderPatch:n.socialProviderPatch,adminGetStats:n.adminGetStats,adminSendTestTemplate:n.adminSendTestTemplate,adminListTestUsers:n.adminListTestUsers,adminCreateTestUsers:n.adminCreateTestUsers,adminSetTestUserPhone:n.adminSetTestUserPhone,adminCreateTestSignupAddress:n.adminCreateTestSignupAddress,adminDeleteTestUser:n.adminDeleteTestUser,adminCreateCustomToken:n.adminCreateCustomToken,adminListUsers:n.adminListUsers,adminCreateUser:n.adminCreateUser,adminImportUsers:n.adminImportUsers,adminGetUser:n.adminGetUser,adminDeleteUser:n.adminDeleteUser,adminUpdateUser:n.adminUpdateUser,adminBanUser:n.adminBanUser,adminGetUserConsents:n.adminGetUserConsents,adminRevokeUserCredentials:n.adminRevokeUserCredentials,adminExportUser:n.adminExportUser,adminListUserMfaFactors:n.adminListUserMfaFactors,adminResetUserMfa:n.adminResetUserMfa,adminResetUserPassword:n.adminResetUserPassword,adminListUserRoles:n.adminListUserRoles,adminAssignUserRole:n.adminAssignUserRole,adminRevokeUserRole:n.adminRevokeUserRole,adminRevokeUserSessions:n.adminRevokeUserSessions,adminUnbanUser:n.adminUnbanUser,adminGetInstallationConsents:n.adminGetInstallationConsents,adminRefuseConsents:n.adminRefuseConsents},calls:{adminListCalls:p.adminListCalls,adminGetCall:p.adminGetCall,adminEndCall:p.adminEndCall,createCallTicket:p.createCallTicket,getCallSettings:p.getCallSettings,putCallSettings:p.putCallSettings,rotateCallHookSecret:p.rotateCallHookSecret},flags:{getValues:g.getValues,batchUserValues:g.batchUserValues,getDelta:g.getDelta,getEvaluations:g.getEvaluations,listExperiments:g.listExperiments,startExperiment:g.startExperiment,getExperiment:g.getExperiment,getExperimentResults:g.getExperimentResults,stopExperiment:g.stopExperiment,declareExperimentWinner:g.declareExperimentWinner,getCurrentInstallations:g.getCurrentInstallations,getInstallationsDaily:g.getInstallationsDaily,getSnapshot:g.getSnapshot,listDefinitions:g.listDefinitions,getDefinition:g.getDefinition,putDefinition:g.putDefinition,deleteDefinition:g.deleteDefinition,activateTemplates:g.activateTemplates,getActiveTemplate:g.getActiveTemplate,getTemplateCapabilities:g.getTemplateCapabilities,getTemplateDraft:g.getTemplateDraft,createTemplateDraft:g.createTemplateDraft,discardTemplateDraft:g.discardTemplateDraft,putTemplateParameter:g.putTemplateParameter,removeTemplateParameter:g.removeTemplateParameter,reviewTemplateDraft:g.reviewTemplateDraft,publishTemplate:g.publishTemplate,getPublishReceipt:g.getPublishReceipt,restoreTemplateVersion:g.restoreTemplateVersion,listTemplateVersions:g.listTemplateVersions,getTemplateVersion:g.getTemplateVersion,getUserValues:g.getUserValues,putUserValues:g.putUserValues,deleteUserValues:g.deleteUserValues,putUserValue:g.putUserValue,deleteUserValue:g.deleteUserValue},journeys:{listJourneys:m.listJourneys,createJourney:m.createJourney,listPersonRuns:m.listPersonRuns,simulateJourney:m.simulateJourney,validateJourney:m.validateJourney,getJourney:m.getJourney,updateJourney:m.updateJourney,deleteJourney:m.deleteJourney,copyJourney:m.copyJourney,publishJourney:m.publishJourney,listJourneyRuns:m.listJourneyRuns,getJourneyStats:m.getJourneyStats,stopJourney:m.stopJourney,testJourney:m.testJourney},machines:{listMachines:s.listMachines,createMachine:s.createMachine,listMachineSizes:s.listMachineSizes,getMachineNetwork:s.getMachineNetwork,connectGitHub:s.connectGitHub,listInstallations:s.listInstallations,linkInstallation:s.linkInstallation,shareInstallation:s.shareInstallation,unlinkInstallation:s.unlinkInstallation,listRepositories:s.listRepositories,getMachine:s.getMachine,deleteMachine:s.deleteMachine,updateMachine:s.updateMachine,listBuilds:s.listBuilds,deployMachine:s.deployMachine,listMachinePreviews:s.listMachinePreviews,putMachinePreview:s.putMachinePreview,deleteMachinePreview:s.deleteMachinePreview,listMachineDomains:s.listMachineDomains,addMachineDomain:s.addMachineDomain,deleteMachineDomain:s.deleteMachineDomain,updateMachineDomain:s.updateMachineDomain,getBuild:s.getBuild,getBuildLog:s.getBuildLog,rollbackMachine:s.rollbackMachine,listDatabases:s.listDatabases,createDatabase:s.createDatabase,listDatabaseSizes:s.listDatabaseSizes,getDatabase:s.getDatabase,deleteDatabase:s.deleteDatabase,updateDatabase:s.updateDatabase,undeleteDatabase:s.undeleteDatabase,purgeDatabase:s.purgeDatabase,getDatabaseCredentials:s.getDatabaseCredentials,changeDatabasePassword:s.changeDatabasePassword,readMachineLogs:s.readMachineLogs,getMachineMetrics:s.getMachineMetrics,getMachineContract:s.getMachineContract,restoreDatabase:s.restoreDatabase,getDatabaseSchema:s.getDatabaseSchema,getDatabaseMetrics:s.getDatabaseMetrics,queryDatabase:s.queryDatabase,listCrons:s.listCrons,listCronRuns:s.listCronRuns,runCron:s.runCron,pauseCron:s.pauseCron,resumeCron:s.resumeCron,listTasks:s.listTasks,enqueueTask:s.enqueueTask,getTask:s.getTask,cancelTask:s.cancelTask,retryTask:s.retryTask,listTaskTypes:s.listTaskTypes,makeTemplatedTestUsers:s.makeTemplatedTestUsers,templateTestUser:s.templateTestUser,deleteTemplatedTestUser:s.deleteTemplatedTestUser,listSites:s.listSites,createSite:s.createSite,getSite:s.getSite,deleteSite:s.deleteSite,updateSite:s.updateSite,listSiteReleases:s.listSiteReleases,createSiteRelease:s.createSiteRelease,uploadSiteFile:s.uploadSiteFile,finishSiteRelease:s.finishSiteRelease,rollbackSite:s.rollbackSite,listSiteBuilds:s.listSiteBuilds,deploySite:s.deploySite,listSitePreviews:s.listSitePreviews,listSiteDomains:s.listSiteDomains,addSiteDomain:s.addSiteDomain,deleteSiteDomain:s.deleteSiteDomain,updateSiteDomain:s.updateSiteDomain,getSiteBuild:s.getSiteBuild,authorizeSitePreview:s.authorizeSitePreview,authorizeMachinePreview:s.authorizeMachinePreview,openMachinePreview:s.openMachinePreview,moveMachine:s.moveMachine,moveSite:s.moveSite,moveDatabase:s.moveDatabase,cancelSiteBuild:s.cancelSiteBuild,cancelBuild:s.cancelBuild,listSiteHooks:s.listSiteHooks,createSiteHook:s.createSiteHook,deleteSiteHook:s.deleteSiteHook,listMachineHooks:s.listMachineHooks,createMachineHook:s.createMachineHook,deleteMachineHook:s.deleteMachineHook,detectProject:s.detectProject,createPreviewPass:s.createPreviewPass,listPreviewLinks:s.listPreviewLinks,createPreviewLink:s.createPreviewLink,deletePreviewLink:s.deletePreviewLink},messaging:{adminAccessLog:d.adminAccessLog,adminListConversations:d.adminListConversations,adminCreateConversation:d.adminCreateConversation,adminGetConversation:d.adminGetConversation,adminDeleteConversation:d.adminDeleteConversation,adminUpdateConversation:d.adminUpdateConversation,adminAddMembers:d.adminAddMembers,adminRemoveMember:d.adminRemoveMember,adminListMessages:d.adminListMessages,adminSendMessage:d.adminSendMessage,adminDeleteMessage:d.adminDeleteMessage,adminFileUrl:d.adminFileUrl,adminPutProfile:d.adminPutProfile,adminListReports:d.adminListReports,adminGetReport:d.adminGetReport,adminReportFileUrl:d.adminReportFileUrl,adminResolveReport:d.adminResolveReport,getSettings:d.getSettings,putSettings:d.putSettings,rotateHookSecret:d.rotateHookSecret},notify:{getDeliverability:l.getDeliverability,listDevices:l.listDevices,getDeviceStats:l.getDeviceStats,deleteMyDevice:l.deleteMyDevice,sendEmail:l.sendEmail,listInAppCampaigns:l.listInAppCampaigns,createInAppCampaign:l.createInAppCampaign,getInAppCampaign:l.getInAppCampaign,putInAppCampaign:l.putInAppCampaign,deleteInAppCampaign:l.deleteInAppCampaign,getInAppCampaignStats:l.getInAppCampaignStats,listInAppTemplates:l.listInAppTemplates,sendInbox:l.sendInbox,listInboxMessages:l.listInboxMessages,listNotifyMessages:l.listNotifyMessages,getNotifyMessage:l.getNotifyMessage,cancelMessage:l.cancelMessage,getMetricsSummary:l.getMetricsSummary,listNotifyProviders:l.listNotifyProviders,putNotifyProvider:l.putNotifyProvider,deleteNotifyProvider:l.deleteNotifyProvider,sendPush:l.sendPush,getNotifySettings:l.getNotifySettings,putNotifySettings:l.putNotifySettings,sendSms:l.sendSms,listEmailTemplates:l.listEmailTemplates,getEmailTemplate:l.getEmailTemplate,putEmailTemplate:l.putEmailTemplate,deleteEmailTemplate:l.deleteEmailTemplate,listPushTemplates:l.listPushTemplates,getPushTemplate:l.getPushTemplate,putPushTemplate:l.putPushTemplate,deletePushTemplate:l.deletePushTemplate,listSmsTemplates:l.listSmsTemplates,getSmsTemplate:l.getSmsTemplate,putSmsTemplate:l.putSmsTemplate,deleteSmsTemplate:l.deleteSmsTemplate,listWhatsAppTemplates:l.listWhatsAppTemplates,getWhatsAppTemplate:l.getWhatsAppTemplate,putWhatsAppTemplate:l.putWhatsAppTemplate,deleteWhatsAppTemplate:l.deleteWhatsAppTemplate,listTestUserMessages:l.listTestUserMessages,listTopics:l.listTopics,createTopic:l.createTopic,deleteTopic:l.deleteTopic,changeTopic:l.changeTopic,addTopicSubscribers:l.addTopicSubscribers,removeTopicSubscriber:l.removeTopicSubscriber,listUserDevices:l.listUserDevices,getUserPreferences:l.getUserPreferences,setUserPreferences:l.setUserPreferences,startVerification:l.startVerification,checkVerification:l.checkVerification,getWebPushStatus:l.getWebPushStatus,sendWhatsApp:l.sendWhatsApp,listWhatsAppInbound:l.listWhatsAppInbound},purchases:{getAppleAccount:i.getAppleAccount,disconnectApple:i.disconnectApple,createAppleGrant:i.createAppleGrant,getAppleReadiness:i.getAppleReadiness,setXcodeCertificate:i.setXcodeCertificate,clearXcodeCertificate:i.clearXcodeCertificate,getGoogleAccount:i.getGoogleAccount,connectGoogle:i.connectGoogle,disconnectGoogle:i.disconnectGoogle,getCatalog:i.getCatalog,saveCatalog:i.saveCatalog,planCatalog:i.planCatalog,getCatalogPlan:i.getCatalogPlan,confirmCatalogPlan:i.confirmCatalogPlan,declineCatalogPlan:i.declineCatalogPlan,validateCatalog:i.validateCatalog,listCharts:i.listCharts,getChartsOverview:i.getChartsOverview,getChart:i.getChart,getCustomer:i.getCustomer,grantCredits:i.grantCredits,listCreditEntries:i.listCreditEntries,forgiveCredits:i.forgiveCredits,listCustomerGrants:i.listCustomerGrants,grantEntitlement:i.grantEntitlement,revokeGrant:i.revokeGrant,holdSpend:i.holdSpend,setCustomerLimit:i.setCustomerLimit,clearCustomerLimit:i.clearCustomerLimit,grantLimit:i.grantLimit,spend:i.spend,commitSpend:i.commitSpend,extendHold:i.extendHold,releaseSpend:i.releaseSpend,reverseSpend:i.reverseSpend,listExperiments:i.listExperiments,startExperiment:i.startExperiment,getExperiment:i.getExperiment,getExperimentResults:i.getExperimentResults,stopExperiment:i.stopExperiment,declareExperimentWinner:i.declareExperimentWinner,getOfferings:i.getOfferings,listPaywalls:i.listPaywalls,createPaywall:i.createPaywall,listPaywallAssets:i.listPaywallAssets,registerPaywallAsset:i.registerPaywallAsset,deletePaywallAsset:i.deletePaywallAsset,listPaywallTemplates:i.listPaywallTemplates,getPaywallTemplateAsset:i.getPaywallTemplateAsset,validatePaywall:i.validatePaywall,getPaywall:i.getPaywall,deletePaywall:i.deletePaywall,savePaywallDraft:i.savePaywallDraft,publishPaywall:i.publishPaywall,listPaywallVersions:i.listPaywallVersions,getPaywallVersion:i.getPaywallVersion,listPlacements:i.listPlacements,listAttributeKeys:i.listAttributeKeys,setPlacement:i.setPlacement,deletePlacement:i.deletePlacement,recordPaywallExposure:i.recordPaywallExposure,getPlacementPaywall:i.getPlacementPaywall,previewPlacement:i.previewPlacement,getPlacementResults:i.getPlacementResults,getPlacementRules:i.getPlacementRules,setPlacementRules:i.setPlacementRules,getSettings:i.getSettings,updateSettings:i.updateSettings,getStripeAccount:i.getStripeAccount,disconnectStripe:i.disconnectStripe,checkStripeAccount:i.checkStripeAccount,createCheckout:i.createCheckout,createCheckoutRedemption:i.createCheckoutRedemption,createStripeGrant:i.createStripeGrant,createStripeAppInstall:i.createStripeAppInstall,getOfferStats:i.getOfferStats,listCoupons:i.listCoupons,createCoupon:i.createCoupon,getCoupon:i.getCoupon,revokeCoupon:i.revokeCoupon,listCouponCodes:i.listCouponCodes,setXcodeOfferKey:i.setXcodeOfferKey,searchCustomers:i.searchCustomers,getCustomerHistory:i.getCustomerHistory,listCatalogRevisions:i.listCatalogRevisions,getCatalogRevision:i.getCatalogRevision,restoreCatalogRevision:i.restoreCatalogRevision,extendSubscription:i.extendSubscription,refundSubscription:i.refundSubscription,cancelSubscription:i.cancelSubscription},realtime:{broadcast:h.broadcast,getChannels:h.getChannels,putChannels:h.putChannels,getLimits:h.getLimits,putLimits:h.putLimits,revalidate:h.revalidate,writeState:h.writeState,getStats:h.getStats},secrets:{listSecretAudit:c.listSecretAudit,listFieldKeys:c.listFieldKeys,getFieldKeys:c.getFieldKeys,openFields:c.openFields,sealPlaceholder:c.sealPlaceholder,rotateFieldKeys:c.rotateFieldKeys,listTransitKeys:c.listTransitKeys,getTransitKeys:c.getTransitKeys,getTransitPublicKeys:c.getTransitPublicKeys,rotateTransitKeys:c.rotateTransitKeys,retireTransitKey:c.retireTransitKey,listSecrets:c.listSecrets,getEnvironmentValues:c.getEnvironmentValues,getSecret:c.getSecret,putSecret:c.putSecret,deleteSecret:c.deleteSecret,rollbackSecret:c.rollbackSecret,listSecretVersions:c.listSecretVersions},storage:{listBuckets:u.listBuckets,getBucket:u.getBucket,putBucket:u.putBucket,deleteBucket:u.deleteBucket,copyObject:u.copyObject,moveObject:u.moveObject,listObjects:u.listObjects,getObject:u.getObject,putObject:u.putObject,deleteObject:u.deleteObject,headObject:u.headObject,createSignedUrl:u.createSignedUrl,createUploadUrl:u.createUploadUrl,getStorageStats:u.getStorageStats},stores:{listActions:o.listActions,getAction:o.getAction,confirmAction:o.confirmAction,declineAction:o.declineAction,getAppleAccount:o.getAppleAccount,disconnectApple:o.disconnectApple,checkAppleAccount:o.checkAppleAccount,createAppleGrant:o.createAppleGrant,getSandboxReadiness:o.getSandboxReadiness,listSandboxTesters:o.listSandboxTesters,clearSandboxPurchaseHistory:o.clearSandboxPurchaseHistory,updateSandboxTester:o.updateSandboxTester,listApps:o.listApps,listFeedback:o.listFeedback,getFeedback:o.getFeedback,listGroups:o.listGroups,createGroup:o.createGroup,linkApp:o.linkApp,getListing:o.getListing,setListing:o.setListing,planListing:o.planListing,createPackage:o.createPackage,uploadScreenshot:o.uploadScreenshot,getReviewInfo:o.getReviewInfo,setReviewInfo:o.setReviewInfo,getUploadKey:o.getUploadKey,getAppStoreVersion:o.getAppStoreVersion,prepareAppStoreVersion:o.prepareAppStoreVersion,planPhasedRelease:o.planPhasedRelease,planReleaseVersion:o.planReleaseVersion,planSubmitReview:o.planSubmitReview,planWithdrawReview:o.planWithdrawReview,getAppVitals:o.getAppVitals,getAppWebhook:o.getAppWebhook,makeAppWebhook:o.makeAppWebhook,pingAppWebhook:o.pingAppWebhook,getGoogleAccount:o.getGoogleAccount,connectGoogle:o.connectGoogle,disconnectGoogle:o.disconnectGoogle,checkGoogleAccount:o.checkGoogleAccount,deleteGroup:o.deleteGroup,renameGroup:o.renameGroup,addGroupBuild:o.addGroupBuild,listTesters:o.listTesters,setTesters:o.setTesters,listPackages:o.listPackages,getPackage:o.getPackage,planBetaReview:o.planBetaReview,listDeliveries:o.listDeliveries,deliver:o.deliver,getSignedBundleLink:o.getSignedBundleLink,planExpire:o.planExpire,planExportCompliance:o.planExportCompliance,setWhatToTest:o.setWhatToTest,getAppleSession:o.getAppleSession,disconnectAppleSession:o.disconnectAppleSession,checkAppleSession:o.checkAppleSession,createAppleIdGrant:o.createAppleIdGrant,getAppReview:o.getAppReview,getReviewAttachment:o.getReviewAttachment,setReviewDraft:o.setReviewDraft,sendReviewDraft:o.sendReviewDraft,getAppPrivacy:o.getAppPrivacy,setAppPrivacy:o.setAppPrivacy,makeAppRecord:o.makeAppRecord,removeAppRecord:o.removeAppRecord,listMadeAppleKeys:o.listMadeAppleKeys,makeAppleKey:o.makeAppleKey,revokeMadeAppleKey:o.revokeMadeAppleKey,shareAppleSession:o.shareAppleSession,unshareAppleSession:o.unshareAppleSession}}}function K(t){return{orgs:{async list(e){return t.send({op:"orgs.list",method:"GET",path:"/v1/orgs",auth:[["PalbaseBearer"]],answers:{200:"json"},signal:e?.signal})},async create(e){return t.send({op:"orgs.create",method:"POST",path:"/v1/orgs",auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,body:{kind:"json",contentType:"application/json",value:e.body},signal:e.signal})},async get(e){return t.send({op:"orgs.get",method:"GET",path:"/v1/orgs/"+r("orgs.get","id",e.path.id),auth:[["PalbaseBearer"]],answers:{200:"json"},signal:e.signal})},async takeAway(e){return t.send({op:"orgs.takeAway",method:"DELETE",path:"/v1/orgs/"+r("orgs.takeAway","id",e.path.id),auth:[["PalbaseBearer"]],answers:{204:"empty"},idempotent:!0,headers:e.headers,signal:e.signal})},async rename(e){return t.send({op:"orgs.rename",method:"PATCH",path:"/v1/orgs/"+r("orgs.rename","id",e.path.id),auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,body:{kind:"json",contentType:"application/json",value:e.body},signal:e.signal})},async members(e){return t.send({op:"orgs.members",method:"GET",path:"/v1/orgs/"+r("orgs.members","id",e.path.id)+"/members",auth:[["PalbaseBearer"]],answers:{200:"json"},signal:e.signal})},async auditLog(e){return t.send({op:"orgs.auditLog",method:"GET",path:"/v1/orgs/"+r("orgs.auditLog","id",e.path.id)+"/audit",auth:[["PalbaseBearer"]],answers:{200:"json"},query:e.query,signal:e.signal})}},invitations:{async mine(e){return t.send({op:"invitations.mine",method:"GET",path:"/v1/invitations",auth:[["PalbaseBearer"]],answers:{200:"json"},signal:e?.signal})},async accept(e){return t.send({op:"invitations.accept",method:"POST",path:"/v1/invitations/"+r("invitations.accept","id",e.path.id)+"/accept",auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,signal:e.signal})}},orgWebhooks:{async list(e){return t.send({op:"orgWebhooks.list",method:"GET",path:"/v1/orgs/"+r("orgWebhooks.list","id",e.path.id)+"/webhooks",auth:[["PalbaseBearer"]],answers:{200:"json"},signal:e.signal})},async add(e){return t.send({op:"orgWebhooks.add",method:"POST",path:"/v1/orgs/"+r("orgWebhooks.add","id",e.path.id)+"/webhooks",auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,body:{kind:"json",contentType:"application/json",value:e.body},signal:e.signal})},async remove(e){return t.send({op:"orgWebhooks.remove",method:"DELETE",path:"/v1/orgs/"+r("orgWebhooks.remove","id",e.path.id)+"/webhooks/"+r("orgWebhooks.remove","endpoint",e.path.endpoint),auth:[["PalbaseBearer"]],answers:{204:"empty"},idempotent:!0,headers:e.headers,signal:e.signal})}},projects:{async mine(e){return t.send({op:"projects.mine",method:"GET",path:"/v1/projects",auth:[["PalbaseBearer"]],answers:{200:"json"},signal:e?.signal})},async environmentsMine(e){return t.send({op:"projects.environmentsMine",method:"GET",path:"/v1/environments",auth:[["PalbaseBearer"]],answers:{200:"json"},signal:e?.signal})},async list(e){return t.send({op:"projects.list",method:"GET",path:"/v1/orgs/"+r("projects.list","id",e.path.id)+"/projects",auth:[["PalbaseBearer"]],answers:{200:"json"},signal:e.signal})},async create(e){return t.send({op:"projects.create",method:"POST",path:"/v1/orgs/"+r("projects.create","id",e.path.id)+"/projects",auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,body:{kind:"json",contentType:"application/json",value:e.body},signal:e.signal})},async get(e){return t.send({op:"projects.get",method:"GET",path:"/v1/projects/"+r("projects.get","id",e.path.id),auth:[["PalbaseBearer"]],answers:{200:"json"},signal:e.signal})},async remove(e){return t.send({op:"projects.remove",method:"DELETE",path:"/v1/projects/"+r("projects.remove","id",e.path.id),auth:[["PalbaseBearer"]],answers:{204:"empty"},idempotent:!0,headers:e.headers,signal:e.signal})},async rename(e){return t.send({op:"projects.rename",method:"PATCH",path:"/v1/projects/"+r("projects.rename","id",e.path.id),auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,body:{kind:"json",contentType:"application/json",value:e.body},signal:e.signal})},async addEnvironment(e){return t.send({op:"projects.addEnvironment",method:"POST",path:"/v1/projects/"+r("projects.addEnvironment","id",e.path.id)+"/environments",auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,body:{kind:"json",contentType:"application/json",value:e.body},signal:e.signal})},async environment(e){return t.send({op:"projects.environment",method:"GET",path:"/v1/environments/"+r("projects.environment","ref",e.path.ref),auth:[["PalbaseBearer"]],answers:{200:"json"},signal:e.signal})},async removeEnvironment(e){return t.send({op:"projects.removeEnvironment",method:"DELETE",path:"/v1/environments/"+r("projects.removeEnvironment","ref",e.path.ref),auth:[["PalbaseBearer"]],answers:{204:"empty"},idempotent:!0,query:e.query,headers:e.headers,signal:e.signal})},async renameEnvironment(e){return t.send({op:"projects.renameEnvironment",method:"PATCH",path:"/v1/environments/"+r("projects.renameEnvironment","ref",e.path.ref),auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,body:{kind:"json",contentType:"application/json",value:e.body},signal:e.signal})},async keys(e){return t.send({op:"projects.keys",method:"GET",path:"/v1/environments/"+r("projects.keys","ref",e.path.ref)+"/keys",auth:[["PalbaseBearer"]],answers:{200:"json"},signal:e.signal})},async usage(e){return t.send({op:"projects.usage",method:"GET",path:"/v1/environments/"+r("projects.usage","ref",e.path.ref)+"/usage",auth:[["PalbaseBearer"]],answers:{200:"json"},query:e.query,signal:e.signal})},async personalKey(e){return t.send({op:"projects.personalKey",method:"POST",path:"/v1/environments/"+r("projects.personalKey","ref",e.path.ref)+"/personal-key",auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,body:{kind:"json",contentType:"application/json",value:e.body},signal:e.signal})},async revokePersonalKey(e){return t.send({op:"projects.revokePersonalKey",method:"DELETE",path:"/v1/environments/"+r("projects.revokePersonalKey","ref",e.path.ref)+"/personal-key/"+r("projects.revokePersonalKey","key",e.path.key),auth:[["PalbaseBearer"]],answers:{204:"empty"},idempotent:!0,headers:e.headers,signal:e.signal})},async shareInstallation(e){return t.send({op:"projects.shareInstallation",method:"POST",path:"/v1/environments/"+r("projects.shareInstallation","ref",e.path.ref)+"/github/installations",auth:[["PalbaseBearer"]],answers:{},ownResponse:!0,idempotent:!0,headers:e.headers,body:{kind:"json",contentType:"application/json",value:e.body},signal:e.signal})}},apps:{async list(e){return t.send({op:"apps.list",method:"GET",path:"/v1/projects/"+r("apps.list","id",e.path.id)+"/apps",auth:[["PalbaseBearer"]],answers:{200:"json"},signal:e.signal})},async create(e){return t.send({op:"apps.create",method:"POST",path:"/v1/projects/"+r("apps.create","id",e.path.id)+"/apps",auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,body:{kind:"json",contentType:"application/json",value:e.body},signal:e.signal})},async get(e){return t.send({op:"apps.get",method:"GET",path:"/v1/projects/"+r("apps.get","id",e.path.id)+"/apps/"+r("apps.get","app",e.path.app),auth:[["PalbaseBearer"]],answers:{200:"json"},signal:e.signal})},async remove(e){return t.send({op:"apps.remove",method:"DELETE",path:"/v1/projects/"+r("apps.remove","id",e.path.id)+"/apps/"+r("apps.remove","app",e.path.app),auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,signal:e.signal})},async update(e){return t.send({op:"apps.update",method:"PATCH",path:"/v1/projects/"+r("apps.update","id",e.path.id)+"/apps/"+r("apps.update","app",e.path.app),auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,body:{kind:"json",contentType:"application/json",value:e.body},signal:e.signal})},async restore(e){return t.send({op:"apps.restore",method:"POST",path:"/v1/projects/"+r("apps.restore","id",e.path.id)+"/apps/"+r("apps.restore","app",e.path.app)+"/restore",auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,signal:e.signal})},async setIn(e){return t.send({op:"apps.setIn",method:"PUT",path:"/v1/environments/"+r("apps.setIn","ref",e.path.ref)+"/apps/"+r("apps.setIn","app",e.path.app),auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,body:{kind:"json",contentType:"application/json",value:e.body},signal:e.signal})},async removeFrom(e){return t.send({op:"apps.removeFrom",method:"DELETE",path:"/v1/environments/"+r("apps.removeFrom","ref",e.path.ref)+"/apps/"+r("apps.removeFrom","app",e.path.app),auth:[["PalbaseBearer"]],answers:{204:"empty"},idempotent:!0,headers:e.headers,signal:e.signal})},async config(e){return t.send({op:"apps.config",method:"GET",path:"/v1/environments/"+r("apps.config","ref",e.path.ref)+"/apps/"+r("apps.config","app",e.path.app)+"/config",auth:[["PalbaseBearer"]],answers:{200:"json"},signal:e.signal})}},snippets:{async list(e){return t.send({op:"snippets.list",method:"GET",path:"/v1/environments/"+r("snippets.list","ref",e.path.ref)+"/snippets",auth:[["PalbaseBearer"]],answers:{200:"json"},signal:e.signal})},async create(e){return t.send({op:"snippets.create",method:"POST",path:"/v1/environments/"+r("snippets.create","ref",e.path.ref)+"/snippets",auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,body:{kind:"json",contentType:"application/json",value:e.body},signal:e.signal})},async remove(e){return t.send({op:"snippets.remove",method:"DELETE",path:"/v1/environments/"+r("snippets.remove","ref",e.path.ref)+"/snippets/"+r("snippets.remove","id",e.path.id),auth:[["PalbaseBearer"]],answers:{204:"empty"},idempotent:!0,headers:e.headers,signal:e.signal})},async change(e){return t.send({op:"snippets.change",method:"PATCH",path:"/v1/environments/"+r("snippets.change","ref",e.path.ref)+"/snippets/"+r("snippets.change","id",e.path.id),auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,body:{kind:"json",contentType:"application/json",value:e.body},signal:e.signal})}},chartViews:{async list(e){return t.send({op:"chartViews.list",method:"GET",path:"/v1/environments/"+r("chartViews.list","ref",e.path.ref)+"/chart-views",auth:[["PalbaseBearer"]],answers:{200:"json"},signal:e.signal})},async create(e){return t.send({op:"chartViews.create",method:"POST",path:"/v1/environments/"+r("chartViews.create","ref",e.path.ref)+"/chart-views",auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,body:{kind:"json",contentType:"application/json",value:e.body},signal:e.signal})},async remove(e){return t.send({op:"chartViews.remove",method:"DELETE",path:"/v1/environments/"+r("chartViews.remove","ref",e.path.ref)+"/chart-views/"+r("chartViews.remove","id",e.path.id),auth:[["PalbaseBearer"]],answers:{204:"empty"},idempotent:!0,headers:e.headers,signal:e.signal})},async change(e){return t.send({op:"chartViews.change",method:"PATCH",path:"/v1/environments/"+r("chartViews.change","ref",e.path.ref)+"/chart-views/"+r("chartViews.change","id",e.path.id),auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,body:{kind:"json",contentType:"application/json",value:e.body},signal:e.signal})}},webhooks:{async list(e){return t.send({op:"webhooks.list",method:"GET",path:"/v1/environments/"+r("webhooks.list","ref",e.path.ref)+"/webhooks",auth:[["PalbaseBearer"]],answers:{200:"json"},signal:e.signal})},async add(e){return t.send({op:"webhooks.add",method:"POST",path:"/v1/environments/"+r("webhooks.add","ref",e.path.ref)+"/webhooks",auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,body:{kind:"json",contentType:"application/json",value:e.body},signal:e.signal})},async deliveries(e){return t.send({op:"webhooks.deliveries",method:"GET",path:"/v1/environments/"+r("webhooks.deliveries","ref",e.path.ref)+"/webhooks/deliveries",auth:[["PalbaseBearer"]],answers:{200:"json"},query:e.query,signal:e.signal})},async redeliver(e){return t.send({op:"webhooks.redeliver",method:"POST",path:"/v1/environments/"+r("webhooks.redeliver","ref",e.path.ref)+"/webhooks/deliveries/"+r("webhooks.redeliver","delivery",e.path.delivery)+"/redeliver",auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,signal:e.signal})},async change(e){return t.send({op:"webhooks.change",method:"PUT",path:"/v1/environments/"+r("webhooks.change","ref",e.path.ref)+"/webhooks/"+r("webhooks.change","endpoint",e.path.endpoint),auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,body:{kind:"json",contentType:"application/json",value:e.body},signal:e.signal})},async remove(e){return t.send({op:"webhooks.remove",method:"DELETE",path:"/v1/environments/"+r("webhooks.remove","ref",e.path.ref)+"/webhooks/"+r("webhooks.remove","endpoint",e.path.endpoint),auth:[["PalbaseBearer"]],answers:{204:"empty"},idempotent:!0,headers:e.headers,signal:e.signal})}},environmentTokens:{async list(e){return t.send({op:"environmentTokens.list",method:"GET",path:"/v1/environments/"+r("environmentTokens.list","ref",e.path.ref)+"/tokens",auth:[["PalbaseBearer"]],answers:{200:"json"},signal:e.signal})},async mint(e){return t.send({op:"environmentTokens.mint",method:"POST",path:"/v1/environments/"+r("environmentTokens.mint","ref",e.path.ref)+"/tokens",auth:[["PalbaseBearer"],[]],answers:{200:"json"},idempotent:!0,headers:e.headers,body:{kind:"json",contentType:"application/json",value:e.body},signal:e.signal})},async revoke(e){return t.send({op:"environmentTokens.revoke",method:"DELETE",path:"/v1/environments/"+r("environmentTokens.revoke","ref",e.path.ref)+"/tokens/"+r("environmentTokens.revoke","id",e.path.id),auth:[["PalbaseBearer"]],answers:{204:"empty"},idempotent:!0,headers:e.headers,signal:e.signal})}},billing:{async bill(e){return t.send({op:"billing.bill",method:"GET",path:"/v1/orgs/"+r("billing.bill","id",e.path.id)+"/billing",auth:[["PalbaseBearer"]],answers:{200:"json"},signal:e.signal})},async confirm(e){return t.send({op:"billing.confirm",method:"POST",path:"/v1/orgs/"+r("billing.confirm","id",e.path.id)+"/billing/checkout/"+r("billing.confirm","session",e.path.session)+"/confirm",auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,signal:e.signal})},async cards(e){return t.send({op:"billing.cards",method:"GET",path:"/v1/orgs/"+r("billing.cards","id",e.path.id)+"/billing/cards",auth:[["PalbaseBearer"]],answers:{200:"json"},signal:e.signal})},async defaultCard(e){return t.send({op:"billing.defaultCard",method:"PUT",path:"/v1/orgs/"+r("billing.defaultCard","id",e.path.id)+"/billing/cards/"+r("billing.defaultCard","card",e.path.card)+"/default",auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,signal:e.signal})},async removeCard(e){return t.send({op:"billing.removeCard",method:"DELETE",path:"/v1/orgs/"+r("billing.removeCard","id",e.path.id)+"/billing/cards/"+r("billing.removeCard","card",e.path.card),auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,signal:e.signal})},async customer(e){return t.send({op:"billing.customer",method:"GET",path:"/v1/orgs/"+r("billing.customer","id",e.path.id)+"/billing/customer",auth:[["PalbaseBearer"]],answers:{200:"json"},signal:e.signal})},async setCustomer(e){return t.send({op:"billing.setCustomer",method:"PUT",path:"/v1/orgs/"+r("billing.setCustomer","id",e.path.id)+"/billing/customer",auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,body:{kind:"json",contentType:"application/json",value:e.body},signal:e.signal})},async charges(e){return t.send({op:"billing.charges",method:"GET",path:"/v1/orgs/"+r("billing.charges","id",e.path.id)+"/billing/charges",auth:[["PalbaseBearer"]],answers:{200:"json"},query:e.query,signal:e.signal})},async csv(e){return t.send({op:"billing.csv",method:"GET",path:"/v1/orgs/"+r("billing.csv","id",e.path.id)+"/billing/charges.csv",auth:[["PalbaseBearer"]],answers:{},ownResponse:!0,query:e.query,signal:e.signal})},async invoices(e){return t.send({op:"billing.invoices",method:"GET",path:"/v1/orgs/"+r("billing.invoices","id",e.path.id)+"/billing/invoices",auth:[["PalbaseBearer"]],answers:{200:"json"},signal:e.signal})},async payer(e){return t.send({op:"billing.payer",method:"PUT",path:"/v1/orgs/"+r("billing.payer","id",e.path.id)+"/billing/payer",auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,body:{kind:"json",contentType:"application/json",value:e.body},signal:e.signal})},async paid(e){return t.send({op:"billing.paid",method:"GET",path:"/v1/orgs/"+r("billing.paid","id",e.path.id)+"/billing/paid",auth:[["PalbaseBearer"]],answers:{200:"json"},signal:e.signal})},async stopPaying(e){return t.send({op:"billing.stopPaying",method:"DELETE",path:"/v1/orgs/"+r("billing.stopPaying","id",e.path.id)+"/billing/paid/"+r("billing.stopPaying","org",e.path.org),auth:[["PalbaseBearer"]],answers:{204:"empty"},idempotent:!0,headers:e.headers,signal:e.signal})},async report(e){return t.send({op:"billing.report",method:"GET",path:"/v1/orgs/"+r("billing.report","id",e.path.id)+"/billing/report",auth:[["PalbaseBearer"]],answers:{200:"json"},query:e.query,signal:e.signal})},async reportCsv(e){return t.send({op:"billing.reportCsv",method:"GET",path:"/v1/orgs/"+r("billing.reportCsv","id",e.path.id)+"/billing/report.csv",auth:[["PalbaseBearer"]],answers:{},ownResponse:!0,query:e.query,signal:e.signal})},async project(e){return t.send({op:"billing.project",method:"GET",path:"/v1/orgs/"+r("billing.project","id",e.path.id)+"/billing/projects/"+r("billing.project","project",e.path.project),auth:[["PalbaseBearer"]],answers:{200:"json"},signal:e.signal})},async steer(e){return t.send({op:"billing.steer",method:"PATCH",path:"/v1/orgs/"+r("billing.steer","id",e.path.id)+"/billing/projects/"+r("billing.steer","project",e.path.project),auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,body:{kind:"json",contentType:"application/json",value:e.body},signal:e.signal})},async freeze(e){return t.send({op:"billing.freeze",method:"PATCH",path:"/v1/orgs/"+r("billing.freeze","id",e.path.id)+"/billing/environments/"+r("billing.freeze","ref",e.path.ref),auth:[["PalbaseBearer"]],answers:{200:"json"},idempotent:!0,headers:e.headers,body:{kind:"json",contentType:"application/json",value:e.body},signal:e.signal})}},accessRequests:{async request(e){return t.send({op:"accessRequests.request",method:"POST",path:"/v1/access-requests",auth:[["PalbaseBearer"],[]],answers:{200:"json"},idempotent:!0,headers:e.headers,body:{kind:"json",contentType:"application/json",value:e.body},signal:e.signal})}},docs:{async search(e){return t.send({op:"docs.search",method:"GET",path:"/v1/docs/search",auth:[["PalbaseBearer"],[]],answers:{200:"json"},query:e.query,signal:e.signal})}}}}function V(t){let{mint:e,revoke:a}=t;return async n=>{let p=await e(n),g=n.body?.role,m=n.body?.on_behalf_of;if(g===void 0&&m===void 0)return p;let s=p.data,d=[];if(g!==void 0&&s.role!==g&&d.push(`role ${g} (it came back ${s.role==null?"at its minter's":s.role})`),m!==void 0&&s.on_behalf_of!==m.trim()&&d.push("on_behalf_of"),d.length===0)return p;let l;try{await a({path:{ref:n.path.ref,id:String(s.id)}})}catch(h){l=h}let i=`Studio minted the token without the ${d.join(" and ")} asked for \u2014 it is older than this SDK`;throw new y({op:"environmentTokens.mint",status:0,code:"token_role_not_kept",message:l===void 0?`environmentTokens.mint: ${i}; the token (${s.id}) was revoked at once and is not returned \u2014 mint it again once Studio is updated`:`environmentTokens.mint: ${i}, and revoking it failed (${l instanceof Error?l.message:String(l)}) \u2014 revoke token ${s.id} of environment ${n.path.ref} yourself, now`,cause:l})}}var _={pbo_:"an organization's",pbu_:"an account's",pbe_:"an environment's"},J=/^[A-Za-z0-9_-]*$/,O=64,b=44;function z(t){if(typeof t!="string"||t==="")return"token is missing: pass an access token, an organization's (pbo_\u2026), an account's (pbu_\u2026) or an environment's (pbe_\u2026)";let e=t.slice(0,4);if(!Object.hasOwn(_,e))return`token has the wrong prefix: an access token starts with pbo_ (an organization's), pbu_ (an account's) or pbe_ (an environment's)${/^pb_[a-z0-9]+_[cs]/.test(t)?" \u2014 a project key belongs in palbase/server or palbase/web":""}`;let a=t.slice(4);if(a.length!==O)return`token has the wrong length: ${_[e]} access token is ${e} and ${O} characters, this one has ${a.length} after it`;if(!J.test(a))return`token is not ${_[e]} access token: after ${e} come base64url characters alone (A\u2013Z, a\u2013z, 0\u20139, - and _)`;let n=X(a),p=(n[b]<<24|n[b+1]<<16|n[b+2]<<8|n[b+3])>>>0;if(Y(e,n.subarray(0,b))!==p)return"token's checksum does not match: it was mistyped or cut, or made before access tokens carried one \u2014 make a new token"}function N(t){return z(t)===void 0}function H(t){let e=z(t);if(e!==void 0)throw new TypeError(e)}var $="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";function X(t){let e=new Uint8Array(t.length*6/8),a=0,n=0,p=0;for(let g of t)a=a<<6|$.indexOf(g),n+=6,n>=8&&(n-=8,e[p++]=a>>n&255);return e}var W=(()=>{let t=new Uint32Array(256);for(let e=0;e<256;e++){let a=e;for(let n=0;n<8;n++)a=a&1?3988292384^a>>>1:a>>>1;t[e]=a>>>0}return t})();function Y(t,e){let a=4294967295;for(let n=0;n<t.length;n++)a=W[(a^t.charCodeAt(n))&255]^a>>>8;for(let n of e)a=W[(a^n)&255]^a>>>8;return(a^4294967295)>>>0}var q="palbase.studio",Z="palbase";function Q(){let t=globalThis;return typeof t.window<"u"||typeof t.document<"u"||typeof t.importScripts=="function"||I()}var v=class{domain;#e;#t=new Map;constructor(e){if(Q())throw new TypeError("palbase/cloud runs on a server: its access token opens the organization's projects, so it never goes into a browser, a web worker or a mobile app \u2014 keep it on your server, and have your app call that");H(e?.token);let a=e.domain??q;if(typeof a!="string"||!/^[a-z0-9-]+(\.[a-z0-9-]+)+$/.test(a))throw new TypeError(`domain ${JSON.stringify(a)} is not a domain`);this.domain=a;let n=e.token;this.#e=g=>G(f({baseUrl:g,credentials:{token:n},fetch:e.fetch,solveProofOfWork:!1}),e.retry??B);let p=K(this.#e(`https://palbase.app.${a}`));p.environmentTokens.mint=V(p.environmentTokens),Object.assign(this,p)}project(e){if(typeof e!="string"||!/^[a-z0-9]{1,63}$/.test(e))throw new TypeError(`${JSON.stringify(e)} is not an environment's ref`);let a=this.#t.get(e);return a||(a=L(this.#e(e===Z?`https://connect.${this.domain}`:`https://${e}.${this.domain}`)),this.#t.set(e,a)),a}};export{q as DEFAULT_DOMAIN,v as PalbaseCloud,y as PalbaseError,N as tokenIsWellFormed};
|
package/dist/refuse/ai.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/*! palbase 0.44.
|
|
1
|
+
/*! palbase 0.44.2 — Palbase SDK License (see LICENSE) */
|
|
2
2
|
throw new Error("palbase/ai is for servers: it speaks with the project secret key, which never goes into a browser or a mobile app \u2014 call your backend, and let it ask the model");
|
package/dist/refuse/backend.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/*! palbase 0.44.
|
|
1
|
+
/*! palbase 0.44.2 — Palbase SDK License (see LICENSE) */
|
|
2
2
|
throw new Error("palbase/backend is a server framework: it runs on your backend, never in a browser or a mobile app \u2014 apps use palbase/web (or the native SDKs)");
|
package/dist/refuse/cloud.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/*! palbase 0.44.
|
|
1
|
+
/*! palbase 0.44.2 — Palbase SDK License (see LICENSE) */
|
|
2
2
|
throw new Error("palbase/cloud is for servers: its access token opens the organization's projects, so it belongs on your server and never in a browser or a mobile app \u2014 have your app call your server");
|
package/dist/refuse/server.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/*! palbase 0.44.
|
|
1
|
+
/*! palbase 0.44.2 — Palbase SDK License (see LICENSE) */
|
|
2
2
|
throw new Error("palbase/server is for servers: its secret key never goes into a browser or a mobile app \u2014 apps use palbase/web (or the native SDKs) with the publishable key");
|
package/dist/server/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/*! palbase 0.44.
|
|
2
|
-
import{a as e,b as f,c as g,d as h,e as i,f as j,g as k,h as l,i as m,j as n,k as o,l as p,m as q,n as r,o as s,p as t,q as u,r as v,s as w,t as x,u as y}from"../chunks/
|
|
1
|
+
/*! palbase 0.44.2 — Palbase SDK License (see LICENSE) */
|
|
2
|
+
import{a as e,b as f,c as g,d as h,e as i,f as j,g as k,h as l,i as m,j as n,k as o,l as p,m as q,n as r,o as s,p as t,q as u,r as v,s as w,t as x,u as y}from"../chunks/2UKXPD55.js";import{a as c,b as d}from"../chunks/SLJRNJ5W.js";import"../chunks/X6MEWYA7.js";import"../chunks/HKI7EIZ2.js";import{p as b}from"../chunks/GC7EQ7RE.js";import"../chunks/ZETXRBPI.js";import{b as a}from"../chunks/FDYCE744.js";import"../chunks/Z27XP2BK.js";import"../chunks/XCAG4JHP.js";export{o as AuthUnavailable,b as EVENT_TYPES,c as FieldError,d as Fields,a as PalbaseError,t as ReservationSettled,n as TokenError,q as TokenVerifier,f as Transit,e as TransitRefusal,g as TransitRequest,i as WebhookSignatureError,h as createServer,s as isEntitled,y as loadSecrets,v as pages,x as platformOwn,w as processOwn,r as requestAddress,p as sessionStanding,l as signatureHeader,k as verifySignature,j as verifyWebhook,m as verifyWebhookRequest,u as withReservation};
|
package/dist/server/testing.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/*! palbase 0.44.
|
|
2
|
-
import{a,b,c,d,e}from"../chunks/
|
|
1
|
+
/*! palbase 0.44.2 — Palbase SDK License (see LICENSE) */
|
|
2
|
+
import{a,b,c,d,e}from"../chunks/32PKOO2G.js";import"../chunks/SLJRNJ5W.js";import"../chunks/Z27XP2BK.js";import"../chunks/XCAG4JHP.js";export{b as TestApiError,e as api,c as createTestApi,a as testFields,d as testRun};
|
package/dist/web/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/*! palbase 0.44.
|
|
2
|
-
import{A as de,B as ye,a as I,b as j,c as q,d as G,e as D,f as H,g as N,h as U,i as B,j as F,k as J,l as K,m as W,n as X,o as Y,p as Z,q as ee,r as te,s as ne,t as re,u as oe,v as se,w as ae,x as ie,y as ce,z as pe}from"../chunks/
|
|
1
|
+
/*! palbase 0.44.2 — Palbase SDK License (see LICENSE) */
|
|
2
|
+
import{A as de,B as ye,a as I,b as j,c as q,d as G,e as D,f as H,g as N,h as U,i as B,j as F,k as J,l as K,m as W,n as X,o as Y,p as Z,q as ee,r as te,s as ne,t as re,u as oe,v as se,w as ae,x as ie,y as ce,z as pe}from"../chunks/GTUHGUQW.js";import{a as _,b as Q,f as z}from"../chunks/HOGYHGSL.js";import"../chunks/MPGER2LF.js";import"../chunks/BNMW5GTM.js";import"../chunks/P6VBZ22Z.js";import"../chunks/DRJWUA4S.js";import{b as k,c as O,d as T,f as x,g as R,j as A,k as V,l as M,m as E,o as P}from"../chunks/X6MEWYA7.js";import"../chunks/GC7EQ7RE.js";import"../chunks/ZETXRBPI.js";import{b as L}from"../chunks/FDYCE744.js";import"../chunks/Z27XP2BK.js";import"../chunks/XCAG4JHP.js";var le="oai-events";async function ue(e){if(typeof e?.start!="function")throw new TypeError("connectVoice: start(sdp) is the round trip to the app's backend, which starts the voice (chats.voice.start) and answers { id, sdp }");let r=e.rtc??he(),t=e.signal;t?.throwIfAborted();let l=e.audio??ge(),f=e.microphone===void 0,c=e.microphone??await r.getUserMedia({audio:!0});if(t?.aborted){if(f)for(let n of c.getTracks())n.stop();throw t.reason}let o=new r.RTCPeerConnection,s=!1,u=()=>{if(!s){if(s=!0,m.close(),o.close(),f)for(let n of c.getTracks())n.stop();l.srcObject!==null&&(l.srcObject=null)}};o.addEventListener("track",n=>{l.srcObject=n.streams[0]??new MediaStream([n.track]),l.play?.()?.catch?.(()=>{})}),o.addEventListener("connectionstatechange",()=>e.onState?.(o.connectionState));for(let n of c.getAudioTracks())o.addTrack(n,c);let m=o.createDataChannel(le);m.addEventListener("message",n=>{let d=me(n.data);d!==void 0&&e.onError?.(d)});let p=()=>u();t?.addEventListener("abort",p,{once:!0});try{await o.setLocalDescription(await o.createOffer()),t?.throwIfAborted(),await fe(o,e.iceTimeoutMs??1e4,t);let n=o.localDescription?.sdp;if(!n)throw new Error("connectVoice: the peer connection made no offer");let d=await e.start(n);if(t?.throwIfAborted(),typeof d?.id!="string"||d.id===""||typeof d.sdp!="string"||d.sdp==="")throw new TypeError("connectVoice: start answered no voice \u2014 it is { id, sdp }, chats.voice.start's answer as the backend got it");return await o.setRemoteDescription({type:"answer",sdp:d.sdp}),t?.removeEventListener("abort",p),{id:d.id,peer:o,audio:l,microphone:c,get muted(){return c.getAudioTracks().every(h=>!h.enabled)},mute(h){for(let w of c.getAudioTracks())w.enabled=!h},close:u}}catch(n){throw t?.removeEventListener("abort",p),u(),t?.aborted?t.reason:n}}function fe(e,r,t){return e.iceGatheringState==="complete"?Promise.resolve():t?.aborted?Promise.reject(t.reason):new Promise((l,f)=>{let c=()=>{clearTimeout(u),e.removeEventListener("icegatheringstatechange",o),t?.removeEventListener("abort",s)},o=()=>{e.iceGatheringState==="complete"&&(c(),l())},s=()=>{c(),f(t?.reason)},u=setTimeout(()=>{c(),f(new Error(`connectVoice: the network candidates were not gathered in ${r} ms`))},r);e.addEventListener("icegatheringstatechange",o),t?.addEventListener("abort",s,{once:!0})})}function me(e){if(typeof e=="string")try{let r=JSON.parse(e);return r.type!=="error"?void 0:typeof r.error?.message=="string"?r.error.message:typeof r.error?.code=="string"?r.error.code:"the voice failed"}catch{return}}function he(){let e=globalThis;if(typeof e.RTCPeerConnection!="function"||typeof e.navigator?.mediaDevices?.getUserMedia!="function")throw new TypeError("connectVoice: this runtime has no WebRTC (RTCPeerConnection, navigator.mediaDevices): a chat's voice is a browser's");let r=e.navigator.mediaDevices;return{RTCPeerConnection:e.RTCPeerConnection,getUserMedia:t=>r.getUserMedia(t)}}function ge(){let e=globalThis.document;if(!e)throw new TypeError("connectVoice: give audio \u2014 the element the voice plays in \u2014 where there is no document");let r=e.createElement("audio");return r.autoplay=!0,r}var i=e=>typeof e=="object"&&e!==null&&!Array.isArray(e)?e:void 0;function we(e,r,t){let l=i(i(i(e)?.components)?.schemas)??{},f=(p,n)=>{let d=new Set,h=(b,g,y)=>{let a=i(b);if(!a)return;if(typeof a.$ref=="string"){if(y.has(a.$ref)||!a.$ref.startsWith("#/components/schemas/"))return;h(l[a.$ref.slice(21)],g,new Set(y).add(a.$ref));return}if(a[k]===!0){d.add(g);return}for(let C of["anyOf","oneOf","allOf"]){let S=a[C];if(Array.isArray(S))for(let $ of S)h($,g,y)}let v=i(a.properties);if(v)for(let[C,S]of Object.entries(v))h(S,`${g}/${E(C)}`,y);i(a.items)&&h(a.items,`${g}/*`,y);for(let C of["additionalProperties","patternProperties","prefixItems"])if(a[C]!==void 0&&w(a[C],new Set(y)))throw new Error(`${t}: an encrypted field is a named property \u2014 not every key of a record, nor a tuple's place`)},w=(b,g)=>{if(Array.isArray(b))return b.some(a=>w(a,g));let y=i(b);return y?y[k]===!0?!0:typeof y.$ref=="string"&&!g.has(y.$ref)&&y.$ref.startsWith("#/components/schemas/")?(g.add(y.$ref),w(l[y.$ref.slice(21)],g)):Object.values(y).some(a=>typeof a=="object"&&a!==null&&w(a,g)):!1};return h(p,n,new Set),[...d]},c=p=>i(i(i(p)?.["application/json"])?.schema),o=[];o.push(...f(c(i(r.requestBody)?.content),"/body"));for(let p of Array.isArray(r.parameters)?r.parameters:[]){let n=i(p);if(!n)continue;let d=f(n.schema,`/query/${E(String(n.name))}`);if(d.length!==0){if(n.in!=="query")throw new Error(`${t}: ${String(n.in)} parameter ${String(n.name)} is marked encrypted \u2014 a body's or a query's field is`);if(d.some(h=>h.split("/").length!==3))throw new Error(`${t}: an encrypted query field is one of the query's own names`);o.push(...d)}}let s=i(r.responses)??{},u=Object.keys(s).filter(p=>/^2\d\d$/.test(p)).sort((p,n)=>p==="200"?-1:n==="200"?1:p.localeCompare(n)),m=u.length>0?f(c(i(s[u[0]])?.content),"/response"):[];if(o.length+m.length!==0){if(r["x-palbase-sse"]!==void 0&&m.length>0)throw new Error(`${t}: a streamed answer carries no encrypted field`);if(r["x-palbase-upload"]!==void 0)throw new Error(`${t}: an upload goes through storage, which seals nothing \u2014 it carries no encrypted field`);return{request:o,response:m}}}async function Ce(e){let r=`${e.method.toUpperCase()} ${e.path}`,t=i(i(i(i(e.contract)?.paths)?.[e.path])?.[e.method.toLowerCase()]),l=t?we(e.contract,t,r):void 0;if(!l)return{body:e.body,query:e.query,open:async s=>s};let{key:f,header:c}=await R(e.key.kid,T(e.key.publicKey),x(e.projectId,e.method,e.path,e.params??[])),o=(s,u)=>s==null?s:P(s,u,l.request,(m,p)=>A(f,m,p));return{header:c,body:await o(e.body,"/body"),query:await o(e.query,"/query"),open:s=>s===void 0?Promise.resolve(s):P(s,"/response",l.response,async(u,m)=>{if(!V(m))throw new O("unopenable",`${r}: ${u} came plain where the contract says it is encrypted`);return M(f,u,m)})}}export{N as Analytics,_ as BackendError,de as CallPlace,ce as CallSession,pe as Calls,G as Channel,U as Consent,ne as ConversationList,oe as ConversationView,re as DeletedGroupList,Z as Flags,z as GatewayError,J as InApp,B as Inbox,H as Installation,te as Messaging,W as Notify,L as PalbaseError,ie as PlaceBusyError,X as Purchases,D as RealtimeSocket,F as SESSION_START,ae as ScheduledList,I as SessionChangedError,se as ThreadView,K as WebPush,ue as connectVoice,ye as createClient,Ce as encryptedCall,ee as indexedDBKeyValue,Q as isBackendError,q as localStore,j as memoryStore,Y as redemptionToken};
|
package/dist/web/message.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/*! palbase 0.44.
|
|
2
|
-
import{a as i}from"../chunks/
|
|
1
|
+
/*! palbase 0.44.2 — Palbase SDK License (see LICENSE) */
|
|
2
|
+
import{a as i}from"../chunks/P6VBZ22Z.js";import{a as e,b as s,c as t,d as p,e as o,f as a,h as r,j as n,k as y,p as M,q as l,t as g}from"../chunks/DRJWUA4S.js";import"../chunks/XCAG4JHP.js";export{n as MESSAGE_COMPONENTS,a as MESSAGE_ICONS,r as MESSAGE_SCHEMA,s as assetId,y as countdownValues,e as fontFamily,o as htmlDocument,t as prepareAssets,i as presentMessage,g as renderMessage,M as resolveMessage,l as resolveMessageWithPaths,p as unzip};
|
package/dist/web/palbe.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/*! palbase 0.44.
|
|
2
|
-
import{c as e,d as r,i as t}from"../chunks/
|
|
1
|
+
/*! palbase 0.44.2 — Palbase SDK License (see LICENSE) */
|
|
2
|
+
import{c as e,d as r,i as t}from"../chunks/HOGYHGSL.js";import"../chunks/MPGER2LF.js";import"../chunks/X6MEWYA7.js";import"../chunks/ZETXRBPI.js";import"../chunks/FDYCE744.js";import"../chunks/Z27XP2BK.js";import"../chunks/XCAG4JHP.js";export{e as RESERVED_CLIENT_NAMES,t as __registerBackend,r as isClientName};
|
package/dist/web/paywall.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/*! palbase 0.44.
|
|
2
|
-
import{a as f,b as d,c as m,d as u,e as A,f as c,g as R}from"../chunks/
|
|
1
|
+
/*! palbase 0.44.2 — Palbase SDK License (see LICENSE) */
|
|
2
|
+
import{a as f,b as d,c as m,d as u,e as A,f as c,g as R}from"../chunks/BNMW5GTM.js";import{a as e,b as a,c as t,d as l,e as r,f as o,g as p,i as y,k as s,l as P,n,o as i,s as w}from"../chunks/DRJWUA4S.js";import"../chunks/FDYCE744.js";import"../chunks/Z27XP2BK.js";import"../chunks/XCAG4JHP.js";export{y as PAYWALL_COMPONENTS,o as PAYWALL_ICONS,p as PAYWALL_SCHEMA,c as Paywall,a as assetId,f as attributesHeader,s as countdownValues,R as defaultPaywall,e as fontFamily,u as formatPeriod,m as formatPrice,r as htmlDocument,A as packageValues,P as packagesOf,d as parseDuration,t as prepareAssets,w as renderPaywall,n as resolvePaywall,i as resolvePaywallWithPaths,l as unzip};
|