UNPKG

bunny-transfer

Version:

Transfer files to and from your storage zones with bunny.net in a single cli command 🐰

3 lines (2 loc) 3.87 kB
import { createRequire } from 'module';const require = createRequire(import.meta.url); import{useSuspenseQuery as te}from"@tanstack/react-query";import re from"fs-extra";import{argument as j}from"pastel";import{z as _}from"zod";import{option as I}from"pastel";import{z as P}from"zod";var m=P.string().trim(),z=P.preprocess(e=>process.env.BUNNY_ACCESS_KEY&&!e?process.env.BUNNY_ACCESS_KEY.split(","):e,m.or(m.array()).optional().transform(e=>typeof e=="string"?[e]:e)),pe=z.describe(I({alias:"k",description:"Bunny API Access Key",valueDescription:"uuid"}));import{option as D}from"pastel";import{z as S}from"zod";var l=S.string().trim().min(1),L=S.preprocess(e=>process.env.BUNNY_PROFILE&&!e?process.env.BUNNY_PROFILE.split(","):e,l.or(l.array()).optional().transform(e=>typeof e=="string"?[e]:e)),fe=L.describe(D({alias:"p",description:"Bunny user profile name",valueDescription:"string"}));import q from"node:path";import{option as G}from"pastel";import $ from"untildify";import{z as E}from"zod";import Y from"node:path";import U from"untildify";import{z as a}from"zod";var y="~/.bunny/credentials",f=Y.resolve(U(y)),B=a.object({accessKey:a.string(),email:a.string(),id:a.string(),name:a.string().optional(),profile:a.string()});var H=E.preprocess(e=>{if(process.env.BUNNY_SHARED_CREDENTIALS_FILE&&!e){let t=process.env.BUNNY_SHARED_CREDENTIALS_FILE.trim();return q.resolve($(t))}return e},E.string().trim().optional().default(f)),w=H.describe(G({alias:"c",defaultValueDescription:y,description:"Bunny shared credentials file path",valueDescription:"file-path"}));import{createBunnyApiClient as M}from"bunny-sdk";import Q from"is-obj";function N({firstName:e,lastName:t}){if(e&&t)return`${e} ${t}`;if(t)return t;if(e)return e}async function p({accessKey:e,profile:t=e}){let r=await M({accessKey:e}).user.get().catch(n=>{throw Q(n)&&"responseStatusCode"in n&&n.responseStatusCode===401?new Error(`Cannot find user with accessKey "${e}"`):n});if(!r)throw new Error(`Cannot find user with accessKey "${e}"`);let o=N({firstName:r.firstName,lastName:r.lastName});return{accessKey:e,email:r.email,id:r.id,...o&&{name:o},profile:t}}import{stringify as V}from"smol-toml";function O(e,t){return e.reduce((i,r)=>{let{[t]:o,...n}=r;return(typeof o=="string"||typeof o=="number"||typeof o=="symbol")&&(i[o]=n),i},{})}function d(e){return V(O(e.map(t=>({...t,profile:t.profile??t.accessKey})),"profile"))}import J from"camelcase-keys";import X from"fast-deep-equal/es6/index.js";import h from"fs-extra";import Z from"is-obj";import F from"p-map";import{parse as ee}from"smol-toml";import W from"node:os";var C=W.cpus().length;function A(e,t){return e.filter((i,r)=>r===e.findIndex(o=>o[t]===i[t]))}async function R({accessKey:e=[],credentialsPath:t=f,profile:i=[]}={}){let r=typeof e=="string"?[e]:e,o=typeof i=="string"?[i]:i,n=await h.pathExists(t),u=[];if(n){let s=await h.readFile(t,"utf8"),v=ee(s),x=!1;if(u=await F(Object.entries(v),async([c,T])=>{let b=B.parse({...Z(T)?J({...T,profile:c}):{}}),K=await p({accessKey:b.accessKey,profile:c});return X(b,K)||(x=!0),K},{concurrency:C}),x){let c=d(u);await h.outputFile(t,c)}}let k=await F(r,async s=>p({accessKey:s,profile:s}),{concurrency:C}),g=A([...u,...k],"profile");return o.length>0?g.filter(s=>o.includes(s.profile??"")):g}var oe=_.object({sharedCredentialsFile:w}),ie=_.tuple([l.describe(j({description:"Bunny user profile name to save to the credentials file",name:"profile"})),m.describe(j({description:"Bunny API Access Key to save to the credentials file",name:"accessKey"}))]);function ne({args:e,options:t}){return te({async queryFn(){let i=t.sharedCredentialsFile,[r,o]=await Promise.all([R({credentialsPath:i}),p({accessKey:e[1],profile:e[0]})]);r.push(o);let n=d(r);return await re.outputFile(i,n),e[0]},queryKey:["login",e[0],e[1],t.sharedCredentialsFile]}),null}export{ie as args,ne as default,oe as options};