@prisma/dev
Version:
A local Prisma Postgres server for development and testing
2 lines (1 loc) • 4.57 kB
JavaScript
import{existsSync as u,readFileSync as D}from"fs";import{copyFile as b,mkdir as B,readFile as d}from"fs/promises";import{createRequire as z}from"module";import{dirname as E}from"path";import{fileURLToPath as r,pathToFileURL as A}from"url";var v=z(import.meta.url),T=["initdb.wasm","pglite.data","pglite.wasm"],p="pglite-seed.tar.gz",w={amcheck:"amcheck.tar.gz",bloom:"bloom.tar.gz",btree_gin:"btree_gin.tar.gz",btree_gist:"btree_gist.tar.gz",citext:"citext.tar.gz",cube:"cube.tar.gz",dict_int:"dict_int.tar.gz",dict_xsyn:"dict_xsyn.tar.gz",earthdistance:"earthdistance.tar.gz",file_fdw:"file_fdw.tar.gz",fuzzystrmatch:"fuzzystrmatch.tar.gz",hstore:"hstore.tar.gz",intarray:"intarray.tar.gz",isn:"isn.tar.gz",lo:"lo.tar.gz",ltree:"ltree.tar.gz",pageinspect:"pageinspect.tar.gz",pg_buffercache:"pg_buffercache.tar.gz",pg_freespacemap:"pg_freespacemap.tar.gz",pg_surgery:"pg_surgery.tar.gz",pg_trgm:"pg_trgm.tar.gz",pg_visibility:"pg_visibility.tar.gz",pg_walinspect:"pg_walinspect.tar.gz",seg:"seg.tar.gz",tablefunc:"tablefunc.tar.gz",tcn:"tcn.tar.gz",tsm_system_rows:"tsm_system_rows.tar.gz",tsm_system_time:"tsm_system_time.tar.gz",unaccent:"unaccent.tar.gz",uuid_ossp:"uuid-ossp.tar.gz",vector:"vector.tar.gz"},U=[...T.map(e=>({fileName:e,kind:"core",name:e})),{fileName:p,kind:"core",name:p},...Object.entries(w).map(([e,t])=>({fileName:t,kind:"extension",name:e}))],f=new Map,P=Symbol.for("@prisma/dev/bundled-pglite-runtime-asset-sources"),c=null;async function Z(e){let t=a(e),n=r(t);await B(n,{recursive:!0});let s=[];for(let i of x()){let g=new URL(i.fileName,t),m=r(g);await b(i.sourcePath,m),s.push({...i,destinationPath:m})}return s}function x(){let e=L(),t=a(new URL("./runtime-assets/",import.meta.url));return U.map(n=>({...n,sourcePath:r(l(n.fileName,e,t))}))}async function H(){await W();let e=h();if(e)return await M(e),await G(e);let t=N(),n=t.href,s=f.get(n);return s||(s=I(t),f.set(n,s)),await s}function Q(e){let t=globalThis;t[P]={extensions:Object.fromEntries(Object.entries(e.extensions).map(([n,s])=>[n,o(s)])),fsBundle:o(e.fsBundle),initdbWasm:o(e.initdbWasm),loadDataDir:o(e.loadDataDir),wasmModule:o(e.wasmModule)}}function o(e,t=import.meta.url){return e instanceof URL?e:/^(?:https?:|data:|file:)/.test(e)?new URL(e):e.startsWith("/")||/^[a-zA-Z]:[\\/]/.test(e)?A(e):new URL(e,t)}async function G(e){let t=`bundled:${e.wasmModule.href}:${e.fsBundle.href}`,n=f.get(t);return n||(n=k(e),f.set(t,n)),await n}async function I(e){let t=a(new URL("./runtime-assets/",import.meta.url)),[n,s,i]=await Promise.all([d(l("pglite.data",e,t)),d(l(p,e,t)),d(l("pglite.wasm",e,t))]),g=_();return{extensions:Object.fromEntries(Object.entries(w).map(([m,S])=>[m,l(S,e,t)])),fsBundle:new Blob([Uint8Array.from(n)]),loadDataDir:new Blob([Uint8Array.from(s)]),wasmModule:await g.compile(i)}}async function k(e){let[t,n,s]=await Promise.all([R(e.fsBundle),R(e.loadDataDir),R(e.wasmModule)]),i=_();return{extensions:e.extensions,fsBundle:new Blob([Uint8Array.from(t)]),loadDataDir:new Blob([Uint8Array.from(n)]),wasmModule:await i.compile(s)}}async function M(e){if(e.initdbWasm.protocol!=="file:")return;let t=new URL("initdb.wasm",a(new URL("./",e.initdbWasm))),n=r(t);u(n)||await b(r(e.initdbWasm),n)}function a(e){return e instanceof URL?y(e):y(A(e))}function y(e){return e.href.endsWith("/")?e:new URL(`${e.href}/`)}function L(){let e=v.resolve("@electric-sql/pglite");return a(E(e))}function N(){let e=a(new URL("./",import.meta.url));if(O(e))return e;if(C())return L();throw new Error("Unable to locate PGlite runtime assets. If you bundled @prisma/dev, copy them next to the bundle with copyPrismaDevRuntimeAssets().")}function O(e){return U.every(t=>u(r(new URL(t.fileName,e))))}function h(){return globalThis[P]??null}async function W(){!F()||h()||(c||(c=import("./runtime-assets-manifest.bun.js").then(()=>{}).catch(e=>{throw c=null,e})),await c)}function C(){let e=r(new URL("../package.json",import.meta.url));if(!u(e))return!1;try{return JSON.parse(D(e,"utf8")).name==="@prisma/dev"}catch{return!1}}function F(){return typeof globalThis.Bun<"u"}function _(){let e=globalThis.WebAssembly;if(!e)throw new Error("WebAssembly is not available in this runtime.");return e}async function R(e){if(e.protocol==="file:")return await d(e);let t=await fetch(e);if(!t.ok)throw new Error(`Failed to fetch runtime asset ${e.href}: ${t.status} ${t.statusText}`);return new Uint8Array(await t.arrayBuffer())}function l(e,t,n){let s=new URL(e,t);if(u(r(s)))return s;if(n){let i=new URL(e,n);if(u(r(i)))return i}return s}export{Z as a,x as b,H as c,Q as d,o as e};