UNPKG

bknd

Version:

Lightweight Firebase/Supabase alternative built to run anywhere — incl. Next.js, React Router, Astro, Cloudflare, Bun, Node, AWS Lambda & more.

2 lines (1 loc) 7.3 kB
var D=Object.create;var b=Object.defineProperty;var P=Object.getOwnPropertyDescriptor;var N=Object.getOwnPropertyNames;var j=Object.getPrototypeOf,A=Object.prototype.hasOwnProperty;var M=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var $=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of N(e))!A.call(t,o)&&o!==r&&b(t,o,{get:()=>e[o],enumerable:!(n=P(e,o))||n.enumerable});return t};var H=(t,e,r)=>(r=t!=null?D(j(t)):{},$(e||!t||!t.__esModule?b(r,"default",{value:t,enumerable:!0}):r,t));var E=M((fe,f)=>{"use strict";var m=process||{},C=m.argv||[],c=m.env||{},J=!(c.NO_COLOR||C.includes("--no-color"))&&(!!c.FORCE_COLOR||C.includes("--color")||m.platform==="win32"||(m.stdout||{}).isTTY&&c.TERM!=="dumb"||!!c.CI),q=(t,e,r=t)=>n=>{let o=""+n,i=o.indexOf(e,t.length);return~i?t+Q(o,e,r,i)+e:t+o+e},Q=(t,e,r,n)=>{let o="",i=0;do o+=t.substring(i,n)+r,i=n+e.length,n=t.indexOf(e,i);while(~n);return o+t.substring(i)},_=(t=J)=>{let e=t?q:()=>String;return{isColorSupported:t,reset:e("\x1B[0m","\x1B[0m"),bold:e("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:e("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:e("\x1B[3m","\x1B[23m"),underline:e("\x1B[4m","\x1B[24m"),inverse:e("\x1B[7m","\x1B[27m"),hidden:e("\x1B[8m","\x1B[28m"),strikethrough:e("\x1B[9m","\x1B[29m"),black:e("\x1B[30m","\x1B[39m"),red:e("\x1B[31m","\x1B[39m"),green:e("\x1B[32m","\x1B[39m"),yellow:e("\x1B[33m","\x1B[39m"),blue:e("\x1B[34m","\x1B[39m"),magenta:e("\x1B[35m","\x1B[39m"),cyan:e("\x1B[36m","\x1B[39m"),white:e("\x1B[37m","\x1B[39m"),gray:e("\x1B[90m","\x1B[39m"),bgBlack:e("\x1B[40m","\x1B[49m"),bgRed:e("\x1B[41m","\x1B[49m"),bgGreen:e("\x1B[42m","\x1B[49m"),bgYellow:e("\x1B[43m","\x1B[49m"),bgBlue:e("\x1B[44m","\x1B[49m"),bgMagenta:e("\x1B[45m","\x1B[49m"),bgCyan:e("\x1B[46m","\x1B[49m"),bgWhite:e("\x1B[47m","\x1B[49m"),blackBright:e("\x1B[90m","\x1B[39m"),redBright:e("\x1B[91m","\x1B[39m"),greenBright:e("\x1B[92m","\x1B[39m"),yellowBright:e("\x1B[93m","\x1B[39m"),blueBright:e("\x1B[94m","\x1B[39m"),magentaBright:e("\x1B[95m","\x1B[39m"),cyanBright:e("\x1B[96m","\x1B[39m"),whiteBright:e("\x1B[97m","\x1B[39m"),bgBlackBright:e("\x1B[100m","\x1B[49m"),bgRedBright:e("\x1B[101m","\x1B[49m"),bgGreenBright:e("\x1B[102m","\x1B[49m"),bgYellowBright:e("\x1B[103m","\x1B[49m"),bgBlueBright:e("\x1B[104m","\x1B[49m"),bgMagentaBright:e("\x1B[105m","\x1B[49m"),bgCyanBright:e("\x1B[106m","\x1B[49m"),bgWhiteBright:e("\x1B[107m","\x1B[49m")}};f.exports=_();f.exports.createColors=_});import{registries as se}from"bknd";import{readFile as Y,readdir as z,stat as g,unlink as I,writeFile as K}from"node:fs/promises";import{isFile as x,parse as U}from"bknd/utils";import{StorageAdapter as G,guessMimeType as y}from"bknd/media";import*as V from"@sinclair/typebox";var{Type:h}=V,v=h.Object({path:h.String({default:"./"})},{title:"Local",description:"Local file system storage",additionalProperties:!1}),l=class extends G{config;constructor(e={}){super(),this.config=U(v,e)}getSchema(){return v}getName(){return"local"}async listObjects(e){let r=await z(this.config.path);return await Promise.all(r.filter(o=>!e||o.startsWith(e)).map(async o=>{let i=await g(`${this.config.path}/${o}`);return{key:o,last_modified:i.mtime,size:i.size}}))}async computeEtag(e){let r=x(e)?e:new Response(e),n=await crypto.subtle.digest("SHA-256",await r.arrayBuffer());return`"${Array.from(new Uint8Array(n)).map(s=>s.toString(16).padStart(2,"0")).join("")}"`}async putObject(e,r){if(r===null)throw new Error("Body is empty");let n=`${this.config.path}/${e}`,o=x(r);return await K(n,o?r.stream():r),await this.computeEtag(r)}async deleteObject(e){try{await I(`${this.config.path}/${e}`)}catch{}}async objectExists(e){try{return(await g(`${this.config.path}/${e}`)).isFile()}catch{return!1}}async getObject(e,r){try{let n=await Y(`${this.config.path}/${e}`),o=y(e);return new Response(n,{status:200,headers:{"Content-Type":o||"application/octet-stream","Content-Length":n.length.toString()}})}catch{return new Response("",{status:404})}}getObjectUrl(e){throw new Error("Method not implemented.")}async getObjectMeta(e){let r=await g(`${this.config.path}/${e}`);return{type:y(e)||"application/octet-stream",size:r.size}}toJSON(e){return{type:this.getName(),config:this.config}}};import S from"node:path";import{serve as te}from"@hono/node-server";import{serveStatic as re}from"@hono/node-server/serve-static";import{createRuntimeApp as oe}from"bknd/adapter";import{config as ne}from"bknd/core";var w=(t,e)=>typeof t=="string"?[1,"1","true"].includes(t):!!(t||e);var W={cli_log_level:{key:"BKND_CLI_LOG_LEVEL",validate:t=>{if(typeof t=="string"&&["log","info","warn","error","debug"].includes(t.toLowerCase()))return t.toLowerCase()}},cli_create_ref:{key:"BKND_CLI_CREATE_REF",validate:t=>typeof t=="string"?t:void 0},cli_telemetry:{key:"BKND_CLI_TELEMETRY",validate:t=>{if(!(typeof t>"u"))return w(t,!0)}},modules_debug:{key:"BKND_MODULES_DEBUG",validate:w}},d=(t,e,r)=>{try{let n=r?.source??process.env,o=W[t],i=n[o.key],s=o.validate(i);if(typeof s<"u")return r?.onValid?.(s),s;r?.onFallback?.(i)}catch{r?.onFallback?.(void 0)}return e};var a=H(E(),1);function Z(){try{let t=process||{},e=t.argv||[],r=t.env||{};return!(r.NO_COLOR||e.includes("--no-color"))&&(!!r.FORCE_COLOR||e.includes("--color")||t.platform==="win32"||(t.stdout||{}).isTTY&&r.TERM!=="dumb"||!!r.CI)}catch{return!1}}var u={critical:{prefix:"CRT",color:a.default.red,args_color:a.default.red,original:console.error},error:{prefix:"ERR",color:a.default.red,args_color:a.default.red,original:console.error},warn:{prefix:"WRN",color:a.default.yellow,args_color:a.default.yellow,original:console.warn},info:{prefix:"INF",color:a.default.cyan,original:console.info},log:{prefix:"LOG",color:a.default.dim,args_color:a.default.dim,original:console.log},debug:{prefix:"DBG",color:a.default.yellow,args_color:a.default.dim,original:console.debug}};function X(t,e){let r=Z(),n=u[t],o=n.color(`[${n.prefix}]`),i=e.map(s=>"args_color"in n&&r&&typeof s=="string"?n.args_color(s):s);return n.original(o,a.default.gray(L()),...i)}var B=d("cli_log_level","log"),p=globalThis.__consoleConfig??={level:B},k=Object.keys(u),O=new Proxy(p,{get:(t,e)=>{switch(e){case"original":return console;case"setLevel":return o=>{p.level=o};case"resetLevel":return()=>{p.level=B}}let r=k.indexOf(p.level),n=k.indexOf(e);return e in u&&n<=r?(...o)=>X(e,o):()=>null}});import R from"dayjs";import ee from"dayjs/plugin/weekOfYear.js";R.extend(ee);function L(t){return R(t).format("YYYY-MM-DD HH:mm:ss")}async function ie({distPath:t,relativeDistPath:e,...r}={},n={},o){let i=S.relative(process.cwd(),S.resolve(t??e??"./node_modules/bknd/dist","static"));return e&&console.warn("relativeDistPath is deprecated, please use distPath instead"),T(),await oe({...r,serveStatic:re({root:i})},n??{env:process.env},o)}function ae(t={},e={},r){return async n=>(await ie(t,e??process.env,r)).fetch(n)}function De({port:t=ne.server.default_port,hostname:e,listener:r,...n}={},o={},i){te({port:t,hostname:e,fetch:ae(n,o,i)},s=>{O.log(`Server is running on http://localhost:${s.port}`),r?.(s)})}var F=!1;function T(){return F||(se.media.register("local",l),F=!0),(t={})=>new l(t).toJSON(!0)}export{l as StorageLocalAdapter,ie as createApp,ae as createHandler,T as registerLocalMediaAdapter,De as serve};