pocketbase-tools
Version:
2 lines (1 loc) • 7.17 kB
JavaScript
;Object.defineProperties(exports,{t:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("pocketbase");var t="undefined"!=typeof document?document.currentScript:null;const r={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1};function n(e,n){if(void 0!=={url:"undefined"==typeof document?require("url").pathToFileURL(__filename).href:t&&"SCRIPT"===t.tagName.toUpperCase()&&t.src||new URL("index.cjs",document.baseURI).href}&&r?.[e])return r[e]||n;if("undefined"!=typeof process&&process.env?.[e])return process.env[e]||n;if(void 0!==n)return n;throw new Error(`[Config Error] 必需环境变量未配置: ${e}`)}let o=null,s=null;function a(t){return new e(t)}function i(e){if(e?.override){if(e.instance)return s=e.instance,s;if(e.url)return s=a(e.url),s;c()}return e?.instance?(s&&!1===e.override||(s=e.instance),s):e?.url?(s&&!1===e.override||(s=a(e.url)),s):s||o||function(){const e=n("VITE_POCKETBASE_URL","http://localhost:8090");return o=a(e),o}()}function c(){o=null,s=null}const u=e=>i().collection(e),p=u("files"),d=u("products"),l=u("profile"),y=u("users"),f=u("_superusers");class m{constructor(e){this.enableConsole="boolean"==typeof e?e:"production"!==process.env.NODE_ENV}success(e,t){this.enableConsole}error(e,t){this.enableConsole}warn(e,t){this.enableConsole}info(e,t){this.enableConsole}}const x=new m,w=async(e,t)=>{try{const r=await t();return x.success(e,r),r}catch(r){const t=r.response?.data?.message||r.message;return x.error(e,t),null}},v=()=>i(),R={getTokenPayload:async()=>await v().files.getToken(),getAbsoluteURL:(e,t)=>v().files.getURL(e,t)},g=(e,t,r)=>x.success(`${e} ${t}`,r),h=e=>i(e),E=e=>"admin"===e?"_superusers":"users",q={login:async(e,t,r)=>{const{password:n}=t;if(!n)throw new Error("缺少密码");const o=h(r),s=E(e),a=(e=>"admin"===e?"email":"username")(e),i=t[a];if(!i)throw new Error("缺少"+("email"===a?"邮箱":"用户名"));const c=await o.collection(s).authWithPassword(i,n);return g(e,"认证成功"),c},logout:()=>{const e=h();e.authStore.isValid&&e.authStore.clear(),g("","已登出")},refresh:async(e,t)=>{const r=h(t),n=E(e),o=await r.collection(n).authRefresh();return g(e,"获取信息成功",o),o},verify:async e=>{const t=await y.requestVerification(e);return g(e,"验证邮箱"),t}};function b(e){return{id:e.id,title:e.title,desc:e.desc,img:e.img,video:e.video,addtime:e.addtime,created:e.created,updated:e.updated}}function _(e){return{collectionId:e.collectionId??void 0,collectionName:e.collectionName??void 0,id:e.id??void 0,email:e.email??"",name:e.name??void 0,emailVisibility:e.emailVisibility??void 0,avatar:e.avatar??void 0,verified:e.verified??void 0,created:e.created??void 0,updated:e.updated??void 0}}const S=i();exports.ErrorHandler=class{handle(e){const t=this.parseError(e);x.error(t.message,t)}parseError(e){return e.response?{code:e.response.code||"UNKNOWN_ERROR",message:e.response.message||"未知错误",details:e.response.data}:{code:"UNKNOWN_ERROR",message:e.message||"发生未知错误",details:e}}},exports.Logger=m,exports.addCompanyProfile=function(e,t,r,n,o){return w("添加公司数据",async()=>{let s;return s="object"==typeof e?e:{companyName:e,contactEmail:t,contactPhone:r,companyAddress:n,allowRegistration:o},await l.create(s)})},exports.addProduct=async function(e,t,r,n){return w("添加产品",async()=>{let o;o="object"==typeof e?e:{title:e,desc:t||"",img:r||"",video:n||"",addtime:(new Date).toISOString()};const s=await d.create(o);return x.success("添加产品成功",s),b(s)})},exports.addUser=async function(e){return w("添加用户",async()=>{const t=i().collection("users"),r=await t.create(e);return x.success("添加用户成功",r),_(r)})},exports.checkProfileCollectionExists=async function(){return w("检查 profile 表是否存在",async()=>{const e=i();return!!(await e.collections.getFullList()).find(e=>"profile"===e.name)})},exports.createProductsCollection=async function(){return w("创建 products 表",async()=>{const e=await d.client.collections.create({name:"products",type:"base",listRule:null,viewRule:null,createRule:"",updateRule:"",deleteRule:"",fields:[{name:"title",type:"text",required:!0},{name:"desc",type:"text",required:!1},{name:"images",type:"file",required:!1,maxSelect:5,maxSize:5242880,mimeTypes:["image/png","image/jpeg","image/gif","image/webp","application/octet-stream"],protected:!0},{name:"video",type:"file",required:!1,maxSelect:1,maxSize:104857600,mimeTypes:["video/mp4","video/gif"],protected:!0},{name:"addtime",type:"date",required:!1}]});return x.success("products 表创建成功",e),e})},exports.createProfileCollection=async function(){return w("创建 profile 表结构",async()=>{const e=i();return await e.collections.create({name:"profile",type:"base",listRule:'@request.auth.id != ""',fields:[{name:"companyName",type:"text",required:!0},{name:"contactEmail",type:"text",required:!0},{name:"contactPhone",type:"text",required:!0},{name:"companyAddress",type:"text",required:!0},{name:"allowRegistration",type:"bool",required:!0}]})})},exports.default=S,exports.deleteCompanyProfile=async function(e){return w("删除记录",async()=>await l.delete(e))},exports.deleteProduct=async function(e){return w(`删除产品 (ID: ${e})`,async()=>(await d.delete(e),x.success(`产品删除成功: ${e}`),!0))},exports.deleteUser=async function(e){return w("删除用户",async()=>{const t=i().collection("users"),r=await t.delete(e);return x.success("用户删除成功",r),!!r})},exports.filesCollect=p,exports.getAllProducts=async function(e){return w("获取所有产品列表",async()=>{const t=await d.getFullList({filter:e?.filter,sort:e?.sort||void 0,expand:e?.expand?.join(",")});return x.success(`成功获取到 ${t.length} 个产品`),t.map(b)})},exports.getAllUsers=async function(e={}){return w("获取所有用户列表",async()=>{const t=i().collection("users"),r=await t.getFullList({filter:e.filter,sort:e.sort||"-created",expand:e.expand?.join(",")});return x.success("成功获取用户列表",{total:r.length,filter:e.filter}),r.map(_)})},exports.getCollect=u,exports.getEnvVar=n,exports.getProductById=async function(e){return w(`获取产品详情 (ID: ${e})`,async()=>{const t=await d.getOne(e);return x.success(`成功获取产品: ${t.title}`),b(t)})},exports.listAllCompanyProfiles=async function(){return w("列出所有记录",async()=>await l.getFullList())},exports.logger=x,exports.productCollect=d,exports.profileCollect=l,exports.resetPBInstances=c,exports.superusersCollect=f,exports.updateCompanyProfile=async function(e,t){return w("更新记录",async()=>await l.update(e,t))},exports.updateProduct=async function(e,t){return w(`更新产品 (ID: ${e})`,async()=>{const r=await d.update(e,t);return x.success(`产品更新成功: ${r.title}`),b(r)})},exports.updateUser=async function(e,t){return w("更新用户",async()=>{const r=i().collection("users"),n=await r.update(e,t);return x.success("用户更新成功",n),_(n)})},exports.useAuth=q,exports.useFiles=R,exports.usePBClient=i,exports.userCollect=y,exports.validateEnvVars=function(e){e.forEach(e=>{try{n(e)}catch(t){}})},exports.withErrorHandling=w;//# sourceMappingURL=index.cjs.map