@budibase/server 3.9.4 → 3.9.5
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/index.js
CHANGED
|
@@ -1092,7 +1092,7 @@ KF8 6ZS`,"Works Start":"2022-09-23T12:00:00.000","Quote Price":1412,"Quote Date"
|
|
|
1092
1092
|
--spectrum-global-color-gray-300: hsl(var(--hue), var(--sat), 24%);
|
|
1093
1093
|
--spectrum-alias-background-color-primary: var(--spectrum-global-color-gray-100);
|
|
1094
1094
|
`}});async function UIt(e){let t=e.request.files?.file;(!t||Array.isArray(t))&&e.throw(400,"No file or multiple files provided"),(!t.path||!t.name?.toLowerCase().endsWith(".zip"))&&e.throw(400,"Invalid file - must be a zip file");let r=Bs((0,NIt.tmpdir)(),`pwa-${Date.now()}`);try{await yme.default.mkdir(r,{recursive:!0}),await(0,PIt.default)(t.path,{dir:r});let n=Bs(r,"icons.json");Wg.default.existsSync(n)||e.throw(400,"Invalid zip structure - missing icons.json");let i;try{let u=await yme.default.readFile(n,"utf-8");i=JSON.parse(u)}catch{e.throw(400,"Invalid icons.json file - could not parse JSON")}(!i.icons||!Array.isArray(i.icons))&&e.throw(400,"Invalid icons.json file - missing icons array");let o=[],a=bme.default.dirname(n),s=B.getProdAppId();for(let u of i.icons){if(!u.src||!u.sizes||!Wg.default.existsSync(Bs(a,u.src)))continue;let c=bme.default.extname(u.src)||".png",l=`${s}/pwa/${vme.v4()}${c}`,f=u.type||(c===".png"?"image/png":"image/jpeg");try{let d=await He.upload({bucket:Zr.APPS,filename:l,path:Bs(a,u.src),type:f});d.Key&&o.push({src:d.Key,sizes:u.sizes,type:f})}catch(d){throw new Error(`Failed to upload icon ${u.src}: ${d}`)}}o.length===0&&e.throw(400,"No valid icons found in the zip file"),e.body={icons:o}}catch(n){e.throw(500,`Error processing zip: ${n.message}`)}}async function qIt(e){B.getAppId()||e.throw(404);try{let n=await B.getAppDB({skip_setup:!0}).get("app_metadata");n.pwa||e.throw(404);let i={name:n.pwa.name||n.name,short_name:n.pwa.short_name||n.name,description:n.pwa.description||"",start_url:`/app${n.url}`,display:n.pwa.display||"standalone",background_color:n.pwa.background_color||"#FFFFFF",theme_color:n.pwa.theme_color||"#FFFFFF",icons:[],screenshots:[]};if(n.pwa.icons&&n.pwa.icons.length>0)try{i.icons=await He.enrichPWAImages(n.pwa.icons);let o=i.icons.find(s=>s.sizes==="1240x600"||s.sizes==="2480x1200");o&&i.screenshots.push({src:o.src,sizes:o.sizes,type:"image/png",form_factor:"wide",label:"Desktop view"});let a=i.icons.find(s=>s.sizes==="620x620"||s.sizes==="1024x1024");a&&i.screenshots.push({src:a.src,sizes:a.sizes,type:"image/png",label:"Mobile view"})}catch(o){throw new Error("Error processing manifest icons: "+o)}e.set("Content-Type","application/json"),e.body=i}catch{e.status=500,e.body={message:"Error generating manifest"}}}var vme,kIt,n$,Wg,yme,DIt,bme,PIt,NIt,LIt,wme,JWr,r$,_me,FIt,MIt,jIt,BIt,$It=b(()=>{"use strict";xt();IIt();gq();vme=Q(require("uuid"));Xo();yo();Ji();Ht();X();kIt=require("@aws-sdk/s3-request-presigner"),n$=require("@aws-sdk/client-s3"),Wg=Q(require("fs")),yme=Q(require("fs/promises"));vt();en();W();v1();DIt=Q(require("koa-send"));CIt();bme=Q(require("path")),PIt=Q(require("extract-zip")),NIt=require("os"),LIt=async function(e){let t=`beta:${e.params.feature}`;if(e.cookies.get(t)){Wt.clearCookie(e,t),e.body={message:`${e.params.feature} disabled`};return}let r=Bs($l,"new_design_ui");Wg.default.existsSync(r)||Wg.default.mkdirSync(r),await He.downloadTarballDirect("https://cdn.budi.live/beta:design_ui/new_ui.tar.gz",r),Wt.setCookie(e,{},t),e.body={message:`${e.params.feature} enabled`}},wme=async function(e){let t=e.request?.files?.file;if(!t)throw new ki("No file provided");let r=t&&Array.isArray(t)?Array.from(t):[t];e.body=await Promise.all(r.map(async n=>{if(!n.name)throw new ki("Attempted to upload a file without a filename");let i=[...n.name.split(".")].pop();if(!i)throw new ki(`File "${n.name}" has no extension, an extension is required to upload a file`);if(!le.SELF_HOSTED&&bve.includes(i.toLowerCase()))throw new ki(`File "${n.name}" has an invalid extension: "${i}"`);let o=`${vme.v4()}.${i}`,a=`${B.getProdAppId()}/attachments/${o}`,s=await He.upload({bucket:Zr.APPS,filename:a,path:n.path,type:n.type});return{size:n.size,name:n.name,url:await He.getAppFileUrl(a),extension:i,key:s.Key}}))};JWr=async e=>{let t=B.getAppId();t||e.throw("AppId could not be found");let r=Ow();return r?await Gg(t)!==r:!1},r$=(e,t,r)=>e.scripts?.length?e.scripts.filter(n=>n.location===t&&n.html?.length).map(n=>n.html).join(`
|
|
1095
|
-
`).replaceAll("<script",`<script nonce="${r}"`):"",_me=async function(e){if(e.url.includes("apple-touch-icon.png")){e.redirect("/builder/bblogo.png");return}if(!B.getAppId()){e.body="No content found - requires app ID";return}let t=await JWr(e),r=e.request.get("x-budibase-embed")?.toLowerCase()==="true",{config:n}=await Vo.getSettingsConfigDoc(),i=await Sk.getBrandingConfig(n),o=Bs(__dirname,"app.hbs");Wg.default.existsSync(o)||(o=Bs(__dirname,"templates","app.hbs"));let a;try{a=B.getAppDB({skip_setup:!0});let s=await a.get("app_metadata"),u=B.getAppId(),c=!!e.params.appUrl,l=s.navigation.navigation==="Left",f=e?.user?.license?.features?.includes("branding")||!1,d=OIt(s?.theme
|
|
1095
|
+
`).replaceAll("<script",`<script nonce="${r}"`):"",_me=async function(e){if(e.url.includes("apple-touch-icon.png")){e.redirect("/builder/bblogo.png");return}if(!B.getAppId()){e.body="No content found - requires app ID";return}let t=await JWr(e),r=e.request.get("x-budibase-embed")?.toLowerCase()==="true",{config:n}=await Vo.getSettingsConfigDoc(),i=await Sk.getBrandingConfig(n),o=Bs(__dirname,"app.hbs");Wg.default.existsSync(o)||(o=Bs(__dirname,"templates","app.hbs"));let a;try{a=B.getAppDB({skip_setup:!0});let s=await a.get("app_metadata"),u=B.getAppId(),c=!!e.params.appUrl,l=s.navigation.navigation==="Left",f=e?.user?.license?.features?.includes("branding")||!1,d=OIt(s?.theme),p=Object.keys(s.pwa||{}).length>0,m=p?`/api/apps/${u}/manifest.json`:"",h=e?.user?.license?.features?.includes("customAppScripts")||!1;if(le.isJest())e.body=s;else{let g=await He.enrichPluginURLs(s.usedPlugins),y=e.state.nonce||"",v={title:i?.platformTitle||`${s.name}`,showSkeletonLoader:s.features?.skeletonLoader??!1,hideDevTools:c,sideNav:l,hideFooter:f,metaImage:i?.metaImageUrl||"https://res.cloudinary.com/daog6scxm/image/upload/v1698759482/meta-images/plain-branded-meta-image-coral_ocxmgu.png",metaDescription:i?.metaDescription||"",metaTitle:i?.metaTitle||`${s.name} - built with Budibase`,clientLibPath:He.clientLibraryUrl(u,s.version),usedPlugins:g,favicon:i.faviconUrl!==""?await He.getGlobalFileUrl("settings","faviconUrl"):"",appMigrating:t,nonce:y};h&&(v.headAppScripts=r$(s,"Head",y),v.bodyAppScripts=r$(s,"Body",y));let{head:w,html:x,css:A}=RIt.render({props:v}),O=Yie(o),R="",C=await Mi.isPWAEnabled();if(p&&C&&(R=`<link rel="manifest" href="${m}">`,R+=`<meta name="mobile-web-app-capable" content="yes">
|
|
1096
1096
|
<meta name="apple-mobile-web-app-status-bar-style" content=${s.pwa.theme_color}>
|
|
1097
1097
|
<meta name="apple-mobile-web-app-title" content="${s.pwa.short_name||s.name}">`,s.pwa.icons&&s.pwa.icons.length>0))try{let k=await He.enrichPWAImages(s.pwa.icons),F=k.find(M=>M.sizes==="180x180");!F&&k.length>0&&(F=k[0]),F&&(R+=`<link rel="apple-touch-icon" sizes="${F.sizes}" href="${F.src}">`)}catch(k){throw new Error("Error enriching PWA icons: "+k)}e.body=await Hx(O,{head:`${w}${R}`,body:x,css:`:root{${d}} ${A.code}`,appId:u,embedded:r,nonce:e.state.nonce})}}catch(s){let u="An unknown error occurred";typeof s=="string"?u=s:s?.message&&(u=s.message),e.throw(500,u)}},FIt=async function(e){let r=await B.getAppDB({skip_setup:!0}).get("app_metadata");if(le.isJest())e.body={...r,builderPreview:!0};else{let n=B.getAppId(),i=Bs(__dirname,"templates"),o=Wg.default.existsSync(i)?i:__dirname,a=Yie(Bs(o,"preview.hbs")),s=e.state.nonce||"",u=e?.user?.license?.features?.includes("customAppScripts")||!1,c={clientLibPath:He.clientLibraryUrl(n,r.version),nonce:s};u&&(c.headAppScripts=r$(r,"Head",s),c.bodyAppScripts=r$(r,"Body",s)),e.body=await Hx(a,c)}},MIt=async function(e){let t=e.request.query.version;Array.isArray(t)&&e.throw(400);let r=B.getAppId()||e.request.query.appId,n=Bs(Jnt,"@budibase","client","dist");if(r||e.throw(400,"No app ID provided - cannot fetch client library."),!Iq(t||""))e.body=await He.getReadStream(Zr.APPS,He.clientLibraryPath(r)),e.set("Content-Type","application/javascript");else{let o=Bs(require.resolve("@budibase/client"),"..");return(0,DIt.default)(e,"budibase-client.js",{root:Wg.default.existsSync(n)?n:o})}},jIt=async function(e){let t=`
|
|
1098
1098
|
self.addEventListener('install', () => {
|