@datawheel/bespoke 1.0.0-beta.7 → 1.0.0-beta.8
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/server.js +15 -11
- package/package.json +1 -1
package/dist/server.js
CHANGED
|
@@ -1,35 +1,39 @@
|
|
|
1
|
-
import Ps,{getServerSession}from'next-auth';import _s from'next-auth/providers/auth0';import He from'auth0';import*as Di from'pg';import {Sequelize,Error as Error$1,DataTypes,literal,Op,where,cast,json,fn,col,Model}from'sequelize';import Xt from'yn';import*as ri from'd3-array';import*as oi from'd3-collection';import*as ni from'd3-format';import {formatLocale}from'd3-format';import*as ai from'd3-time-format';import {date,assign,isObject}from'@d3plus/dom';import {closest}from'@d3plus/math';import {merge}from'@d3plus/data';import {titleCase,strip}from'@d3plus/text';import $i from'slugify';import Or from'axios';import qi from'jsonwebtoken';import Gi from'next/config';import {Document}from'flexsearch';import xc from'base58';import Pc from'flickr-sdk';import {createApi}from'unsplash-js';import Oc from'fs';import {createContext,createElement}from'react';import {renderToString}from'react-dom/server';import*as ho from'@tabler/icons-react';import Rl from'cors';import bl from'image-type';import al from'formidable';import pl from'dom-parser';import Ku from'path';import Da from'axios-retry';import {format}from'pretty-format';import zl from'toposort';import {csvParse}from'd3-dsv';import {getSession}from'next-auth/react';import {schema,normalize}from'normalizr';import {createSlice,configureStore,createSelector}from'@reduxjs/toolkit';import {HYDRATE,createWrapper}from'next-redux-wrapper';import {notifications}from'@mantine/notifications';import {produce}from'immer';import'react-redux';import'react/jsx-runtime';import'@mantine/core';var As=Object.defineProperty;var Ts=(e,t)=>{for(var r in t)As(e,r,{get:t[r],enumerable:true});};var ks={domain:new URL(process.env.AUTH0_ISSUER_BASE_URL||"https://localhost:3000").host,clientId:process.env.AUTH0_CLIENT_ID||"",clientSecret:process.env.AUTH0_CLIENT_SECRET||""};function Ke(e){let t=e;if(t&&!t.source)if(!t.providers||t.providers.length===0){let r=_s({clientId:process.env.AUTH0_CLIENT_ID||"",clientSecret:process.env.AUTH0_CLIENT_SECRET||"",issuer:process.env.AUTH0_ISSUER_BASE_URL||""});t.providers=[r],t.callbacks={async jwt({token:o,profile:n,trigger:a,session:s}){if(n&&(o.bespoke_app_metadata=n.bespoke_app_metadata||{},o.bespoke_user_metadata=n.bespoke_user_metadata||{},o.bespoke_roles=n.bespoke_roles||[],o.name=n.name),a==="update")try{let i=new He.ManagementClient(ks),c=await i.users.get({id:o.sub});o.bespoke_user_metadata=c.user_metadata||{},o.bespoke_app_metadata=c.app_metadata||{};let l=await i.users.getRoles({id:o.sub});o.bespoke_roles=l.map(u=>u.name),s?.user_metadata&&(o.bespoke_user_metadata={...o.bespoke_user_metadata,...s.user_metadata}),s?.app_metadata&&(o.bespoke_app_metadata={...o.bespoke_app_metadata,...s.app_metadata});}catch(i){console.error("Error refreshing user data from Auth0:",i),o.bespoke_user_metadata={...o.bespoke_user_metadata,...s?.user_metadata||{}},o.bespoke_app_metadata={...o.bespoke_app_metadata,...s?.app_metadata||{}};}return o},async session({session:o,token:n}){return o&&n&&(o.user.id=n.sub,o.user.bespoke_app_metadata=n.bespoke_app_metadata,o.user.bespoke_user_metadata=n.bespoke_user_metadata,o.user.bespoke_roles=n.bespoke_roles),o}},t.source="auth0";}else t.source="custom";return t.secret||(t.secret=process.env.AUTH0_SECRET||process.env.NEXTAUTH_SECRET),t}async function me(e,t,r={providers:[]}){let o=Ke(r),n=await getServerSession(e,t,o);return n&&(n.source=o.source||""),n}var vs=(e={providers:[]})=>{let t=Ke(e);return Ps(t)},Is=vs;var T=class extends Error{constructor(t,r){super(r),this.code=t;}toJSON(){return Mo(this)}static is(t){return Object.prototype.hasOwnProperty.call(t,"code")&&typeof t.code=="number"}};function Cs(e){return {ok:true,status:200,wrapper:true,data:e}}function Mo(e){return {ok:false,status:T.is(e)?e.code:500,error:e.message}}function I(e){return t=>e(t).then(Cs,Mo)}function le(e,t,r){if(t==="createBulk"||t==="updateBulk"){let n=`${t}${Se(r)}`;return e[n]}let o=`${t}${Se(r)}`;return e[o]}function Se(e){return e[0].toUpperCase()+e.slice(1)}var z={ADMIN:"Admin",EDITOR:"Editor",WRITER:"Writer"},Oo={APP:"App",USER:"User"},No=e=>{let t=Object.values(z);return e?e.map(r=>({...r,type:t.includes(r.name)?Oo.APP:Oo.USER})):[]};var je={domain:new URL(process.env.AUTH0_ISSUER_BASE_URL||"https://localhost:3000").host,clientId:process.env.AUTH0_CLIENT_ID,clientSecret:process.env.AUTH0_CLIENT_SECRET};function Do(){return async()=>{try{let t=await new He.ManagementClient(je).roles.getAll({include_totals:!0,per_page:100});return {roles:No(t.roles)}}catch(e){throw console.error("AuthZeroError",e),new T(e.response?.status||500,e.message)}}}function Uo(){return async e=>{try{let t;if(e){let r={include_totals:!0,per_page:10,page:e.page||0},o=new He.ManagementClient(je);if(e.role_id&&e.role_id!==""){let n={...r,id:e.role_id};t=await o.roles.getUsers(n);}else {let n={...r,q:e.query};t=await o.users.getAll(n);}}return t}catch(t){throw console.error("AuthZeroError",t),new T(t.response?.status||500,t.message)}}}function Fo(){return async e=>{try{if(e){let t=new He.ManagementClient(je),r=await Promise.all([t.users.get({id:e}),t.users.getRoles({id:e})]);return {...r[0],roles:r[1]}}else throw new T(404,"User ID required")}catch(t){throw console.error("AuthZeroError",t),new T(t.response?.status||500,t.message)}}}function Vo(){return async e=>{try{if(e.user_id){if(e.app_metadata&&await Yr(e.user_id,e.app_metadata),e.user_metadata&&await Jr(e.user_id,e.user_metadata),e.roles){let t=new He.ManagementClient(je),o=(await t.users.getRoles({id:e.user_id})).map(i=>i.id),n=e.roles.map(i=>i.id),a=n.filter(i=>!o.includes(i)),s=o.filter(i=>!n.includes(i));a.length>0&&await t.users.assignRoles({id:e.user_id},{roles:a}),s.length>0&&await t.users.removeRoles({id:e.user_id},{roles:s});}return {status:"success",message:"User updated!"}}else throw new T(404,"user_id is required")}catch(t){throw console.error("AuthZeroError",t),new T(t.response?.status||500,t.message)}}}function $o(){return async e=>{try{return "NOT USED SERVICE"}catch(t){throw console.error("AuthZeroError",t),new T(t.response?.status||500,t.message)}}}async function Yr(e,t){return await new He.ManagementClient(je).users.updateAppMetadata({id:e},t)}async function Jr(e,t){return await new He.ManagementClient(je).users.updateUserMetadata({id:e},t)}async function zo(e,t){try{let r=new He.ManagementClient(je),o=await r.getUsers({search_engine:"v3",q:`user_metadata.${e}:"${t}"`});for(let n=0;n<o.length;n++){let a=o[n];a.bespoke_user_metadata=a.user_metadata||{},delete a.user_metadata,a.bespoke_roles=(await r.users.getRoles({id:a.user_id})).map(s=>s.name);}return o}catch(r){console.error(r);}}var Ls=(e,t,r,o)=>new Promise((n,a)=>{(async()=>{try{let i=await me(e,t,r);if(!i||!i.user)throw new Error("not_authenticated");{let{user:c,source:l}=i,p={...i.user.bespoke_app_metadata||{},...o};l==="custom"&&r.actions?.updateUser?await r.actions.updateUser()({user_id:c.id,app_metadata:p}):await Yr(c.id,p),n({error:"",description:`App metadata updated for user ${i.user.email}`});}}catch(i){a({error:i.message,description:"The user does not have an active session or is not authenticated"});}})();}),Bs=Ls;var Ms=(e,t,r,o)=>new Promise((n,a)=>{(async()=>{try{let i=await me(e,t,r);if(!i||!i.user)throw new Error("not_authenticated");{let{user:c,source:l}=i,p={...c.bespoke_user_metadata||{},...o};l==="custom"&&r.actions?.updateUser?await r.actions.updateUser()({user_id:c.id,user_metadata:p}):await Jr(c.id,p),n({error:"",description:`App metadata updated for user ${c.email}`});}}catch(i){a({error:i.message,description:"The user does not have an active session or is not authenticated"});}})();}),Os=Ms;var qt=(e,t)=>t&&typeof t=="string"?t.split(".").reduce((r,o)=>r[o],e):e;function dr(e,t){return e.some(r=>t.includes(r))}function mr(e){return e.filter((t,r,o)=>o.indexOf(t)===r)}var Ns=(e,t,r)=>async function(o,n){let a=await me(o,n,r);if(!a||!a.user){n.status(401).json({error:"not_authenticated",description:"The user does not have an active session or is not authenticated"});return}let s=a.user.bespoke_roles||[];if(t.length>0&&!dr(s,t)){n.status(402).json({error:"unauthorize",description:"The user requires some specific roles"});return}await e(o,n);},Ds=Ns;var Us=(e,t,r)=>new Promise((o,n)=>{(async()=>{try{if(t&&r&&t!==""&&r!==""){let s;e.actions?.searchUser?s=await e.actions.searchUser()({[t]:r}):s=await zo(t,r),o(s);}else n({error:"empty_params",description:"key or value params are empty"});}catch(s){n({error:s.message,description:"Error "});}})();}),Fs=Us;var ve=(e=process.env)=>Xt(e.REPORTS_LOGGING);var Ye=class extends Model{getContent(t){let r=this.contentByLocale.find(o=>o.locale===t);if(!r)throw new Error(`Missing SearchContent for locale '${t}' on Search ID '${this.id}'`);return r}toJSON(){let t=this.get({plain:true}),{inputs:r=[],consumers:o=[],contentByLocale:n=[]}=this;return {...t,inputs:r.map(a=>a.toJSON()),consumers:o.map(a=>a.toJSON()),contentByLocale:Object.fromEntries(n.map(a=>[a.locale,a.toJSON()]))}}};function zs(e){return Ye.init({id:{type:DataTypes.INTEGER,primaryKey:true,autoIncrement:true},settings:{type:DataTypes.JSON,defaultValue:{}},type:{type:DataTypes.STRING,defaultValue:"paragraph"},shared:{type:DataTypes.BOOLEAN,defaultValue:false},blockrow:DataTypes.STRING,blockcol:DataTypes.STRING,section_id:{type:DataTypes.INTEGER,onDelete:"cascade",references:{model:"bespoke_reports_section",key:"id"}}},{sequelize:e,modelName:"block",tableName:"bespoke_reports_block",freezeTableName:true,timestamps:false}),t=>(Ye.hasMany(t.block_content,{foreignKey:"id",sourceKey:"id",as:"contentByLocale"}),Ye.belongsToMany(t.block,{through:"block_input",foreignKey:"block_id",otherKey:"input_id",as:"inputs"}),Ye.belongsToMany(t.block,{through:"block_input",foreignKey:"input_id",otherKey:"block_id",as:"consumers"}),Ye)}var Go=zs;var fr=class extends Model{};function Gs(e){return fr.init({id:{type:DataTypes.INTEGER,primaryKey:true,onDelete:"cascade",references:{model:"bespoke_reports_block",key:"id"}},locale:{type:DataTypes.STRING,primaryKey:true},content:{type:DataTypes.JSON,defaultValue:{}}},{sequelize:e,modelName:"block_content",tableName:"bespoke_reports_block_content",freezeTableName:true,timestamps:false}),()=>fr}var Ko=Gs;var gr=class extends Model{};function Hs(e){return gr.init({id:{type:DataTypes.INTEGER,primaryKey:true,autoIncrement:true},block_id:{type:DataTypes.INTEGER,onDelete:"cascade",references:{model:"bespoke_reports_block",key:"id"}},input_id:{type:DataTypes.INTEGER,onDelete:"cascade",references:{model:"bespoke_reports_block",key:"id"}}},{sequelize:e,modelName:"block_input",tableName:"bespoke_reports_block_input",freezeTableName:true,timestamps:false}),()=>gr}var Ho=Hs;var yr={"ar-SA":{separator:"",suffixes:["y","z","a","f","p","n","\xB5","m",""," \u0623\u0644\u0641"," \u0645\u0644\u064A\u0648\u0646"," \u0628\u0644\u064A\u0648\u0646"," \u062A\u0631\u064A\u0644\u064A\u0648\u0646"," \u0643\u0648\u0627\u062F\u0631\u064A\u0644\u064A\u0648\u0646"," \u0643\u0648\u064A\u0646\u062A\u064A\u0644\u064A\u0648\u0646"," \u0633\u0643\u0633\u062A\u0644\u064A\u0648\u0646","\u0633\u0628\u062A\u064A\u0644\u064A\u0648\u0646"],grouping:[3],delimiters:{thousands:",",decimal:"."},currency:["SAR ",""]},"en-GB":{separator:"",suffixes:["y","z","a","f","p","n","\xB5","m","","k","M","B","T","q","Q","Z","Y"],grouping:[3],delimiters:{thousands:",",decimal:"."},currency:["\xA3",""]},"en-US":{separator:"",suffixes:["y","z","a","f","p","n","\xB5","m","","k","M","B","T","q","Q","Z","Y"],grouping:[3],delimiters:{thousands:",",decimal:"."},currency:["$",""]},"en-SA":{separator:"",suffixes:["y","z","a","f","p","n","\xB5","m",""," thousand"," million"," billion"," trillion"," quadrillion"," quintillion"," sextillion","septillion"],grouping:[3],delimiters:{thousands:",",decimal:"."},currency:["$",""]},"es-CL":{separator:"",suffixes:["y","z","a","f","p","n","\xB5","m","","k","M","MM","B","T","Q","Z","Y"],grouping:[3],delimiters:{thousands:".",decimal:","},currency:["$",""]},"es-MX":{separator:"",suffixes:["y","z","a","f","p","n","\xB5","m","","k","M","MM","B","T","Q","Z","Y"],grouping:[3],delimiters:{thousands:",",decimal:"."},currency:["$",""]},"es-ES":{separator:"",suffixes:["y","z","a","f","p","n","\xB5","m","","k","mm","b","t","q","Q","Z","Y"],grouping:[3],delimiters:{thousands:".",decimal:","},currency:["\u20AC",""]},"et-EE":{separator:" ",suffixes:["y","z","a","f","p","n","\xB5","m","","tuhat","miljonit","miljardit","triljonit","q","Q","Z","Y"],grouping:[3],delimiters:{thousands:" ",decimal:","},currency:["","eurot"]},"fr-FR":{suffixes:["y","z","a","f","p","n","\xB5","m","","k","m","b","t","q","Q","Z","Y"],grouping:[3],delimiters:{thousands:" ",decimal:","},currency:["\u20AC",""]},"zh-CN":{separator:"",suffixes:["\u5E7A","\u4EC4","\u963F","\u98DE","\u76AE","\u7EB3","\u5FAE","\u6BEB","","\u5343","\u5146","\u5409","\u592A","\u62CD","\u827E","\u6CFD","\u5C27"],grouping:[3],delimiters:{thousands:",",decimal:"."},currency:["\xA5",""]}};function js(e){"@swc/helpers - typeof";return e&&typeof Symbol<"u"&&e.constructor===Symbol?"symbol":typeof e}var Ys=function(e,t){return parseFloat(Math.round(e*Math.pow(10,t))/Math.pow(10,t)).toFixed(t)};function Js(e,t,r){var o=0,n=parseFloat(e.replace("\u2212","-"),10);n&&(n<0&&(n*=-1),o=1+Math.floor(1e-12+Math.log(n)/Math.LN10),o=Math.max(-24,Math.min(24,Math.floor((o-1)/3)*3)));var a=r[8+o/3];return {number:Ys(a.scale(n),t),symbol:a.symbol}}function Qs(e,t){var r=Math.pow(10,Math.abs(8-t)*3);return {scale:t>8?function(o){return o/r}:function(o){return o*r},symbol:e}}function Xr(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"en-US",r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:void 0;if(isFinite(e))e*=1;else return "N/A";var o=e<0,n=e.toString().split(".")[0].replace("-","").length,a=(typeof t>"u"?"undefined":js(t))==="object"?t:yr[t]||yr["en-US"],s=a.suffixes.map(Qs),i=a.delimiters.decimal||".",c=a.separator||"",l=a.delimiters.thousands||",",u=formatLocale({currency:a.currency||["$",""],decimal:i,grouping:a.grouping||[3],thousands:l}),p;if(r)p=u.format(r)(e);else if(e===0)p="0";else if(n>=3){var d=Js(u.format(".3r")(e),2,s),m=parseFloat(d.number).toString().replace(".",i),f=d.symbol;p="".concat(m).concat(c).concat(f);}else n===3?p=u.format(",f")(e):e<1&&e>-1?p=u.format(".2g")(e):p=u.format(".3g")(e);return "".concat(o&&p.charAt(0)!=="\u2212"?"\u2212":"").concat(p).replace(/−/g,"-").replace(/(\.[0]*[1-9]*)[0]*$/g,"$1").replace(/\.[0]*$/g,"")}function eo(e){let t=1+76.18009173/e-86.50532033/(e+1)+24.01409822/(e+2)-1.231739516/(e+3)+.00120858003/(e+4)-536382e-11/(e+5);return (e-.5)*Math.log(e+4.5)-(e+4.5)+Math.log(t*2.50662827465)}function jo(e,t,r){let o=0,n=1,a=1,s=1,i=0,c=0,l;for(;Math.abs((a-c)/a)>1e-5;)c=a,l=-(t+i)*(t+r+i)*e/(t+2*i)/(t+2*i+1),o=a+l*o,n=s+l*n,i+=1,l=i*(r-i)*e/(t+2*i-1)/(t+2*i),a=o+l*a,s=n+l*s,o/=s,n/=s,a/=s,s=1;return a/t}function Zs(e,t,r){let o,n;if(e<0)n=0;else if(e>=t)n=1;else {e=Math.floor(e);let a=r,s=e+1,i=t-e,c=s+i,l=Math.exp(eo(c)-eo(i)-eo(s)+s*Math.log(a)+i*Math.log(1-a));a<(s+1)/(c+2)?o=l*jo(a,s,i):o=1-l*jo(1-a,i,s),n=1-o;}return Math.round(n*1e5)/1e5}function Xs(e){return {.99999:15.137,.99:6.635,.95:3.841,.9:2.706}[e]}function Gt(e,t,r,o){let n=t/(1-t),a=0,s=1,i=0,c=0;for(;a<=e;)c+=s,a>=r&a<=o&&(i+=s),c>1e30&&(i/=1e30,c/=1e30,s/=1e30),a+=1,s=s*n*(e+1-a)/a;return i/c}function ei(e,t,r){let o=e/t,a=(100-r*100)/2,s,i;if(e===0)s=0;else {let c=o/2,l=0,u=o,p=a/100;for(;u-l>1e-5;)Gt(t,c,e,e)*.5+Gt(t,c,e+1,t)>p?(u=c,c=(l+c)/2):(l=c,c=(u+c)/2);s=c;}if(e===t)i=0;else {let c=(1+o)/2,l=o,u=1,p=a/100;for(;u-l>1e-5;)Gt(t,c,e,e)*.5+Gt(t,c,0,e-1)<p?(u=c,c=(l+c)/2):(l=c,c=(u+c)/2);i=c;}return {lci:s,uci:i}}function ti(e,t){let r=e,o=t,n=r,a=o,s=95,i=.5,c=.5,u=(100-s)/2/100,p=n;for(;c>1e-5;)c/=2,hr((1+p)*i/(1-i),p+1,1e10)+.5*hr((1+p)*i/(1-i),p,p)>u?i-=c:i+=c;let d=(1+p)*i/(1-i)/a;for(i=.5,c=.5,u=(100-s)/2/100;c>1e-5;)c/=2,hr((1+p)*i/(1-i),0,p-1)+.5*hr((1+p)*i/(1-i),p,p)<u?i-=c:i+=c;let f=(1+p)*i/(1-i)/a;return {lci:d,uci:f}}function hr(e,t,r){let o=1,n=0,a=0,s=0;for(;s<e||o>n*1e-10;)n+=o,s>=t&s<=r&&(a+=o),n>1e30&&(a/=1e30,n/=1e30,o/=1e30),s+=1,o=o*e/s;return a/n}var Wo={binomialCdf:Zs,binP:Gt,computeMidP:ei,criticalValue:Xs,smr:ti};var Je={d3:{...ri,...oi,...ni,...ai},d3plus:{assign:assign,closest:closest,date:date,formatAbbreviate:Xr,merge:merge,strip:strip,titleCase:titleCase},stats:Wo};var Yo={};var Ie={UNILATERAL:"uni",MULTILATERAL:"multi"},Ze={SINGLE:"single",MULTI:"multi"};var to={ALLOWED:"allowed",ALLOWED_LOGIC:"allowedLogic",IGNORE_CASCADE:"ignoreCascade"},di={ACCESS:"access",ACCESS_LOGIC:"accessLogic"},mi={DISABLED:"disabled"},fi={FALLBACK:"fallback"};var gi={IMAGE:"image",PARAGRAPH:"paragraph",SELECTOR:"selector",STAT:"stat",SUBTITLE:"subtitle",TITLE:"title",NAV:"nav",RESET_BUTTON:"reset_button",COMPARISON_BUTTON:"comparison_button",TABLE:"table",BUTTON:"button",MULTIHIERARCHY_SELECTOR:"multihierarchy_selector",FALLBACK:"fallback"},ro={GENERATOR:"generator",RELATED:"related",VIZ:"visualization",SECTION_FLAG:"section_flag"},oo="logic",B={...gi,...ro},Ce={NAME:"name",DESCRIPTION:"description",...to,...di,...fi,...mi};var Rr={FORMATTER:"formatter"},At={STRING:"string"};var Tt=class extends Model{};function Ri(e){return Tt.init({id:{type:DataTypes.INTEGER,primaryKey:true,autoIncrement:true},name:{type:DataTypes.STRING,defaultValue:""},content:{type:DataTypes.JSONB,defaultValue:{description:"",testValue:"Foo",type:Rr.FORMATTER,inputType:At.STRING,logic:"return n;"}}},{sequelize:e,modelName:"formatter",tableName:"bespoke_reports_formatter",freezeTableName:true,timestamps:false,hooks:{async afterSync(t){let r=await Tt.findAll();if(t.force||r.length===0){let o=Object.entries(Yo).map(([n,a])=>({name:n,content:a}));await Tt.bulkCreate(o);}}}}),()=>Tt}var Zo=Ri;var Kt=class extends Model{getContent(t){let{contentByLocale:r}=this;if(!r)throw new Error("This ImageModel entity didn't include its ImageContentModel association.");let o=r.find(n=>n.locale===t);if(!o)throw new Error(`Missing SearchContent for locale '${t}' on Search ID '${this.id}'`);return o}};function Si(e){return Kt.init({id:{autoIncrement:true,primaryKey:true,type:DataTypes.INTEGER},url:{type:DataTypes.TEXT,unique:true},author:DataTypes.TEXT,license:DataTypes.TEXT,splash:DataTypes.BLOB,thumb:DataTypes.BLOB},{sequelize:e,modelName:"image",tableName:"bespoke_reports_image",freezeTableName:true}),t=>(Kt.hasMany(t.image_content,{foreignKey:"id",sourceKey:"id",as:"contentByLocale"}),Kt)}var Xo=Si;var br=class extends Model{};function Ai(e){return br.init({id:{type:DataTypes.INTEGER,primaryKey:true,onDelete:"cascade",references:{model:"bespoke_reports_image",key:"id"}},locale:{type:DataTypes.STRING,primaryKey:true},meta:DataTypes.TEXT},{sequelize:e,modelName:"image_content",tableName:"bespoke_reports_image_content",freezeTableName:true,timestamps:false}),()=>br}var en=Ai;var wt=class extends Model{toJSON(){let t=this.get({plain:true}),{dimensions:r=[],sections:o=[]}=this;return {...t,settings:t.settings,date:new Date(this.date||Date.now()).toISOString(),dimensions:r.map(n=>n.toJSON()),sections:o.map(n=>n.toJSON())}}};function _i(e){return wt.init({id:{type:DataTypes.INTEGER,primaryKey:true,autoIncrement:true},name:{type:DataTypes.STRING,allowNull:false,defaultValue:""},visible:{type:DataTypes.BOOLEAN,defaultValue:true},date:{type:DataTypes.DATE,defaultValue:DataTypes.NOW},type:{type:DataTypes.STRING,defaultValue:"report",validate:{isIn:[["report","story"]]}},settings:{type:DataTypes.JSON,defaultValue:{}}},{sequelize:e,modelName:"report",tableName:"bespoke_reports_report",freezeTableName:true,timestamps:false}),t=>(wt.hasMany(t.dimension,{foreignKey:"report_id",sourceKey:"id",as:"dimensions"}),wt.hasMany(t.section,{foreignKey:"report_id",sourceKey:"id",as:"sections"}),wt)}var tn=_i;var xt=class extends Model{toJSON(){let t=this.get({plain:true}),{variants:r=[]}=this;return {...t,variants:r.map(o=>o.toJSON())}}};function ki(e){return xt.init({id:{type:DataTypes.INTEGER,primaryKey:true,autoIncrement:true},report_id:{type:DataTypes.INTEGER,onDelete:"cascade",references:{model:"bespoke_reports_report",key:"id"}},name:{type:DataTypes.STRING,defaultValue:""},settings:{type:DataTypes.JSONB,defaultValue:{}},ordering:{type:DataTypes.INTEGER,defaultValue:0},visible:{type:DataTypes.BOOLEAN,defaultValue:true}},{sequelize:e,modelName:"dimension",tableName:"bespoke_reports_report_dimension",freezeTableName:true,timestamps:false}),t=>(xt.hasMany(t.variant,{foreignKey:"dimension_id",sourceKey:"id",as:"variants",constraints:false}),xt.belongsTo(t.report,{foreignKey:"report_id",targetKey:"id",as:"report",constraints:false}),xt)}var rn=ki;var Pt=class extends Model{get report(){return this.dimension?.report}toJSON(){return this.get({plain:true})}};function Pi(e){return Pt.init({id:{type:DataTypes.INTEGER,primaryKey:true,autoIncrement:true},dimension_id:{type:DataTypes.INTEGER,onDelete:"cascade",references:{model:"bespoke_reports_report_dimension",key:"id"}},slug:{type:DataTypes.STRING,defaultValue:""},name:{type:DataTypes.STRING,defaultValue:""},settings:{type:DataTypes.JSONB,defaultValue:{}},config:{type:DataTypes.JSONB,defaultValue:{}},visible:{type:DataTypes.BOOLEAN,defaultValue:true}},{sequelize:e,modelName:"variant",tableName:"bespoke_reports_report_dimension_variant",freezeTableName:true,timestamps:false}),t=>(Pt.hasMany(t.search,{foreignKey:"variant_id",sourceKey:"id",as:"members",constraints:false}),Pt.belongsTo(t.dimension,{foreignKey:"dimension_id",targetKey:"id",as:"dimension",constraints:false}),Pt)}var on=Pi;var we=class extends Model{getContent(t){let{contentByLocale:r}=this;if(!r)throw new Error("This SearchModel entity didn't include its SearchContentModel association.");let o=r.find(n=>n.locale===t);if(!o)throw new Error(`Missing SearchContent for locale '${t}' on Search ID '${this.id}'`);return o}};function Ii(e){return we.init({id:{primaryKey:true,type:DataTypes.TEXT},zvalue:DataTypes.DOUBLE,slug:DataTypes.TEXT,image_id:{type:DataTypes.INTEGER,references:{model:"bespoke_reports_image",key:"id"}},content_id:{autoIncrement:true,type:DataTypes.INTEGER,unique:true},variant_id:{primaryKey:true,type:DataTypes.INTEGER,onDelete:"cascade",references:{model:"bespoke_reports_report_dimension_variant",key:"id"}},dimension_id:{primaryKey:true,type:DataTypes.INTEGER,onDelete:"cascade",references:{model:"bespoke_reports_report_dimension",key:"id"}},report_id:{primaryKey:true,type:DataTypes.INTEGER,onDelete:"cascade",references:{model:"bespoke_reports_report",key:"id"}},visible:{type:DataTypes.BOOLEAN,defaultValue:true}},{sequelize:e,modelName:"search",tableName:"bespoke_reports_search",freezeTableName:true,timestamps:false}),t=>(we.belongsTo(t.variant,{foreignKey:"variant_id",targetKey:"id",as:"variant",constraints:false}),we.belongsTo(t.dimension,{foreignKey:"dimension_id",targetKey:"id",as:"dimension",constraints:false}),we.belongsTo(t.report,{foreignKey:"report_id",targetKey:"id",as:"report",constraints:false}),we.belongsTo(t.image,{foreignKey:"image_id",targetKey:"id",as:"image",constraints:false}),we.hasMany(t.search_content,{foreignKey:"id",sourceKey:"content_id",as:"contentByLocale"}),we)}var nn=Ii;var Sr=class extends Model{};function Li(e){return Sr.init({id:{type:DataTypes.INTEGER,primaryKey:true,onDelete:"cascade",references:{model:"bespoke_reports_search",key:"content_id"}},locale:{type:DataTypes.STRING,primaryKey:true},name:DataTypes.TEXT,annotations:{type:DataTypes.JSONB,defaultValue:{}},attributes:{type:DataTypes.JSONB,defaultValue:{}},keywords:DataTypes.ARRAY(DataTypes.TEXT)},{sequelize:e,modelName:"search_content",tableName:"bespoke_reports_search_content",freezeTableName:true,timestamps:false}),()=>Sr}var an=Li;var jt=class extends Model{toJSON(){let t=this.get({plain:true}),{blocks:r=[]}=this;return {...t,blocks:r.map(o=>o.toJSON())}}};function Mi(e){return jt.init({id:{type:DataTypes.INTEGER,primaryKey:true,autoIncrement:true},settings:{type:DataTypes.JSON,defaultValue:{}},heading:{type:DataTypes.INTEGER,defaultValue:1},ordering:DataTypes.STRING,report_id:{type:DataTypes.INTEGER,onDelete:"cascade",references:{model:"bespoke_reports_report",key:"id"}}},{sequelize:e,modelName:"section",tableName:"bespoke_reports_section",freezeTableName:true,timestamps:false}),t=>(jt.hasMany(t.block,{foreignKey:"section_id",sourceKey:"id",as:"blocks"}),jt)}var sn=Mi;var Ar=class extends Model{};function Ni(e){return Ar.init({id:{type:DataTypes.INTEGER,primaryKey:true,autoIncrement:true},name:{type:DataTypes.STRING,defaultValue:""},description:{type:DataTypes.STRING,defaultValue:""},content:{type:DataTypes.JSONB,defaultValue:{pattern:"",logic:`return {
|
|
1
|
+
import vs,{getServerSession}from'next-auth';import ws from'next-auth/providers/auth0';import He from'auth0';import*as Ui from'pg';import {Sequelize,Error as Error$1,DataTypes,literal,Op,where,cast,json,fn,col,Model}from'sequelize';import Xt from'yn';import*as oi from'd3-array';import*as ni from'd3-collection';import*as ai from'd3-format';import {formatLocale}from'd3-format';import*as si from'd3-time-format';import {date,assign,isObject}from'@d3plus/dom';import {closest}from'@d3plus/math';import {merge}from'@d3plus/data';import {titleCase,strip}from'@d3plus/text';import zi from'slugify';import Or from'axios';import Gi from'jsonwebtoken';import Ki from'next/config';import {Document}from'flexsearch';import Pc from'base58';import vc from'flickr-sdk';import {createApi}from'unsplash-js';import Nc from'fs';import {createContext,createElement}from'react';import {renderToString}from'react-dom/server';import*as ho from'@tabler/icons-react';import bl from'cors';import Sl from'image-type';import sl from'formidable';import dl from'dom-parser';import Hu from'path';import Da from'axios-retry';import {format}from'pretty-format';import ql from'toposort';import {csvParse}from'd3-dsv';import {getSession}from'next-auth/react';import {schema,normalize}from'normalizr';import {createSlice,configureStore,createSelector}from'@reduxjs/toolkit';import {HYDRATE,createWrapper}from'next-redux-wrapper';import {notifications}from'@mantine/notifications';import {produce}from'immer';import'react-redux';import'react/jsx-runtime';import'@mantine/core';var Ts=Object.defineProperty;var _s=(e,t)=>{for(var r in t)Ts(e,r,{get:t[r],enumerable:true});};var xs={domain:new URL(process.env.AUTH0_ISSUER_BASE_URL||"https://localhost:3000").host,clientId:process.env.AUTH0_CLIENT_ID||"",clientSecret:process.env.AUTH0_CLIENT_SECRET||""};function Ke(e){let t=e;if(t&&!t.source)if(!t.providers||t.providers.length===0){let r=ws({clientId:process.env.AUTH0_CLIENT_ID||"",clientSecret:process.env.AUTH0_CLIENT_SECRET||"",issuer:process.env.AUTH0_ISSUER_BASE_URL||""});t.providers=[r],t.callbacks={async jwt({token:o,profile:n,trigger:a,session:s}){if(n&&(o.bespoke_app_metadata=n.bespoke_app_metadata||{},o.bespoke_user_metadata=n.bespoke_user_metadata||{},o.bespoke_roles=n.bespoke_roles||[],o.name=n.name),a==="update")try{let i=new He.ManagementClient(xs),c=await i.users.get({id:o.sub});o.bespoke_user_metadata=c.user_metadata||{},o.bespoke_app_metadata=c.app_metadata||{};let l=await i.users.getRoles({id:o.sub});o.bespoke_roles=l.map(u=>u.name),s?.user_metadata&&(o.bespoke_user_metadata={...o.bespoke_user_metadata,...s.user_metadata}),s?.app_metadata&&(o.bespoke_app_metadata={...o.bespoke_app_metadata,...s.app_metadata});}catch(i){console.error("Error refreshing user data from Auth0:",i),o.bespoke_user_metadata={...o.bespoke_user_metadata,...s?.user_metadata||{}},o.bespoke_app_metadata={...o.bespoke_app_metadata,...s?.app_metadata||{}};}return o},async session({session:o,token:n}){return o&&n&&(o.user.id=n.sub,o.user.bespoke_app_metadata=n.bespoke_app_metadata,o.user.bespoke_user_metadata=n.bespoke_user_metadata,o.user.bespoke_roles=n.bespoke_roles),o}},t.source="auth0";}else t.source="custom";return t.secret||(t.secret=process.env.AUTH0_SECRET||process.env.NEXTAUTH_SECRET),t}async function me(e,t,r={providers:[]}){let o=Ke(r),n=await getServerSession(e,t,o);return n&&(n.source=o.source||""),n}var Is=(e={providers:[]})=>{let t=Ke(e);return vs(t)},Cs=Is;var T=class extends Error{constructor(t,r){super(r),this.code=t;}toJSON(){return Mo(this)}static is(t){return Object.prototype.hasOwnProperty.call(t,"code")&&typeof t.code=="number"}};function Ls(e){return {ok:true,status:200,wrapper:true,data:e}}function Mo(e){return {ok:false,status:T.is(e)?e.code:500,error:e.message}}function I(e){return t=>e(t).then(Ls,Mo)}function le(e,t,r){if(t==="createBulk"||t==="updateBulk"){let n=`${t}${Se(r)}`;return e[n]}let o=`${t}${Se(r)}`;return e[o]}function Se(e){return e[0].toUpperCase()+e.slice(1)}var z={ADMIN:"Admin",EDITOR:"Editor",WRITER:"Writer"},Oo={APP:"App",USER:"User"},No=e=>{let t=Object.values(z);return e?e.map(r=>({...r,type:t.includes(r.name)?Oo.APP:Oo.USER})):[]};var je={domain:new URL(process.env.AUTH0_ISSUER_BASE_URL||"https://localhost:3000").host,clientId:process.env.AUTH0_CLIENT_ID,clientSecret:process.env.AUTH0_CLIENT_SECRET};function Do(){return async()=>{try{let t=await new He.ManagementClient(je).roles.getAll({include_totals:!0,per_page:100});return {roles:No(t.roles)}}catch(e){throw console.error("AuthZeroError",e),new T(e.response?.status||500,e.message)}}}function Uo(){return async e=>{try{let t;if(e){let r={include_totals:!0,per_page:10,page:e.page||0},o=new He.ManagementClient(je);if(e.role_id&&e.role_id!==""){let n={...r,id:e.role_id};t=await o.roles.getUsers(n);}else {let n={...r,q:e.query};t=await o.users.getAll(n);}}return t}catch(t){throw console.error("AuthZeroError",t),new T(t.response?.status||500,t.message)}}}function Fo(){return async e=>{try{if(e){let t=new He.ManagementClient(je),r=await Promise.all([t.users.get({id:e}),t.users.getRoles({id:e})]);return {...r[0],roles:r[1]}}else throw new T(404,"User ID required")}catch(t){throw console.error("AuthZeroError",t),new T(t.response?.status||500,t.message)}}}function Vo(){return async e=>{try{if(e.user_id){if(e.app_metadata&&await Yr(e.user_id,e.app_metadata),e.user_metadata&&await Jr(e.user_id,e.user_metadata),e.roles){let t=new He.ManagementClient(je),o=(await t.users.getRoles({id:e.user_id})).map(i=>i.id),n=e.roles.map(i=>i.id),a=n.filter(i=>!o.includes(i)),s=o.filter(i=>!n.includes(i));a.length>0&&await t.users.assignRoles({id:e.user_id},{roles:a}),s.length>0&&await t.users.removeRoles({id:e.user_id},{roles:s});}return {status:"success",message:"User updated!"}}else throw new T(404,"user_id is required")}catch(t){throw console.error("AuthZeroError",t),new T(t.response?.status||500,t.message)}}}function $o(){return async e=>{try{return "NOT USED SERVICE"}catch(t){throw console.error("AuthZeroError",t),new T(t.response?.status||500,t.message)}}}async function Yr(e,t){return await new He.ManagementClient(je).users.updateAppMetadata({id:e},t)}async function Jr(e,t){return await new He.ManagementClient(je).users.updateUserMetadata({id:e},t)}async function zo(e,t){try{let r=new He.ManagementClient(je),o=await r.getUsers({search_engine:"v3",q:`user_metadata.${e}:"${t}"`});for(let n=0;n<o.length;n++){let a=o[n];a.bespoke_user_metadata=a.user_metadata||{},delete a.user_metadata,a.bespoke_roles=(await r.users.getRoles({id:a.user_id})).map(s=>s.name);}return o}catch(r){console.error(r);}}var Bs=(e,t,r,o)=>new Promise((n,a)=>{(async()=>{try{let i=await me(e,t,r);if(!i||!i.user)throw new Error("not_authenticated");{let{user:c,source:l}=i,p={...i.user.bespoke_app_metadata||{},...o};l==="custom"&&r.actions?.updateUser?await r.actions.updateUser()({user_id:c.id,app_metadata:p}):await Yr(c.id,p),n({error:"",description:`App metadata updated for user ${i.user.email}`});}}catch(i){a({error:i.message,description:"The user does not have an active session or is not authenticated"});}})();}),Ms=Bs;var Os=(e,t,r,o)=>new Promise((n,a)=>{(async()=>{try{let i=await me(e,t,r);if(!i||!i.user)throw new Error("not_authenticated");{let{user:c,source:l}=i,p={...c.bespoke_user_metadata||{},...o};l==="custom"&&r.actions?.updateUser?await r.actions.updateUser()({user_id:c.id,user_metadata:p}):await Jr(c.id,p),n({error:"",description:`App metadata updated for user ${c.email}`});}}catch(i){a({error:i.message,description:"The user does not have an active session or is not authenticated"});}})();}),Ns=Os;var qt=(e,t)=>t&&typeof t=="string"?t.split(".").reduce((r,o)=>r[o],e):e;function dr(e,t){return e.some(r=>t.includes(r))}function mr(e){return e.filter((t,r,o)=>o.indexOf(t)===r)}var Ds=(e,t,r)=>async function(o,n){let a=await me(o,n,r);if(!a||!a.user){n.status(401).json({error:"not_authenticated",description:"The user does not have an active session or is not authenticated"});return}let s=a.user.bespoke_roles||[];if(t.length>0&&!dr(s,t)){n.status(402).json({error:"unauthorize",description:"The user requires some specific roles"});return}await e(o,n);},Us=Ds;var Fs=(e,t,r)=>new Promise((o,n)=>{(async()=>{try{if(t&&r&&t!==""&&r!==""){let s;e.actions?.searchUser?s=await e.actions.searchUser()({[t]:r}):s=await zo(t,r),o(s);}else n({error:"empty_params",description:"key or value params are empty"});}catch(s){n({error:s.message,description:"Error "});}})();}),Vs=Fs;var Ie=(e=process.env)=>Xt(e.REPORTS_LOGGING);var Ye=class extends Model{getContent(t){let r=this.contentByLocale.find(o=>o.locale===t);if(!r)throw new Error(`Missing SearchContent for locale '${t}' on Search ID '${this.id}'`);return r}toJSON(){let t=this.get({plain:true}),{inputs:r=[],consumers:o=[],contentByLocale:n=[]}=this;return {...t,inputs:r.map(a=>a.toJSON()),consumers:o.map(a=>a.toJSON()),contentByLocale:Object.fromEntries(n.map(a=>[a.locale,a.toJSON()]))}}};function qs(e){return Ye.init({id:{type:DataTypes.INTEGER,primaryKey:true,autoIncrement:true},settings:{type:DataTypes.JSON,defaultValue:{}},type:{type:DataTypes.STRING,defaultValue:"paragraph"},shared:{type:DataTypes.BOOLEAN,defaultValue:false},blockrow:DataTypes.STRING,blockcol:DataTypes.STRING,section_id:{type:DataTypes.INTEGER,onDelete:"cascade",references:{model:"bespoke_reports_section",key:"id"}}},{sequelize:e,modelName:"block",tableName:"bespoke_reports_block",freezeTableName:true,timestamps:false}),t=>(Ye.hasMany(t.block_content,{foreignKey:"id",sourceKey:"id",as:"contentByLocale"}),Ye.belongsToMany(t.block,{through:"block_input",foreignKey:"block_id",otherKey:"input_id",as:"inputs"}),Ye.belongsToMany(t.block,{through:"block_input",foreignKey:"input_id",otherKey:"block_id",as:"consumers"}),Ye)}var Go=qs;var fr=class extends Model{};function Ks(e){return fr.init({id:{type:DataTypes.INTEGER,primaryKey:true,onDelete:"cascade",references:{model:"bespoke_reports_block",key:"id"}},locale:{type:DataTypes.STRING,primaryKey:true},content:{type:DataTypes.JSON,defaultValue:{}}},{sequelize:e,modelName:"block_content",tableName:"bespoke_reports_block_content",freezeTableName:true,timestamps:false}),()=>fr}var Ko=Ks;var gr=class extends Model{};function js(e){return gr.init({id:{type:DataTypes.INTEGER,primaryKey:true,autoIncrement:true},block_id:{type:DataTypes.INTEGER,onDelete:"cascade",references:{model:"bespoke_reports_block",key:"id"}},input_id:{type:DataTypes.INTEGER,onDelete:"cascade",references:{model:"bespoke_reports_block",key:"id"}}},{sequelize:e,modelName:"block_input",tableName:"bespoke_reports_block_input",freezeTableName:true,timestamps:false}),()=>gr}var Ho=js;var yr={"ar-SA":{separator:"",suffixes:["y","z","a","f","p","n","\xB5","m",""," \u0623\u0644\u0641"," \u0645\u0644\u064A\u0648\u0646"," \u0628\u0644\u064A\u0648\u0646"," \u062A\u0631\u064A\u0644\u064A\u0648\u0646"," \u0643\u0648\u0627\u062F\u0631\u064A\u0644\u064A\u0648\u0646"," \u0643\u0648\u064A\u0646\u062A\u064A\u0644\u064A\u0648\u0646"," \u0633\u0643\u0633\u062A\u0644\u064A\u0648\u0646","\u0633\u0628\u062A\u064A\u0644\u064A\u0648\u0646"],grouping:[3],delimiters:{thousands:",",decimal:"."},currency:["SAR ",""]},"en-GB":{separator:"",suffixes:["y","z","a","f","p","n","\xB5","m","","k","M","B","T","q","Q","Z","Y"],grouping:[3],delimiters:{thousands:",",decimal:"."},currency:["\xA3",""]},"en-US":{separator:"",suffixes:["y","z","a","f","p","n","\xB5","m","","k","M","B","T","q","Q","Z","Y"],grouping:[3],delimiters:{thousands:",",decimal:"."},currency:["$",""]},"en-SA":{separator:"",suffixes:["y","z","a","f","p","n","\xB5","m",""," thousand"," million"," billion"," trillion"," quadrillion"," quintillion"," sextillion","septillion"],grouping:[3],delimiters:{thousands:",",decimal:"."},currency:["$",""]},"es-CL":{separator:"",suffixes:["y","z","a","f","p","n","\xB5","m","","k","M","MM","B","T","Q","Z","Y"],grouping:[3],delimiters:{thousands:".",decimal:","},currency:["$",""]},"es-MX":{separator:"",suffixes:["y","z","a","f","p","n","\xB5","m","","k","M","MM","B","T","Q","Z","Y"],grouping:[3],delimiters:{thousands:",",decimal:"."},currency:["$",""]},"es-ES":{separator:"",suffixes:["y","z","a","f","p","n","\xB5","m","","k","mm","b","t","q","Q","Z","Y"],grouping:[3],delimiters:{thousands:".",decimal:","},currency:["\u20AC",""]},"et-EE":{separator:" ",suffixes:["y","z","a","f","p","n","\xB5","m","","tuhat","miljonit","miljardit","triljonit","q","Q","Z","Y"],grouping:[3],delimiters:{thousands:" ",decimal:","},currency:["","eurot"]},"fr-FR":{suffixes:["y","z","a","f","p","n","\xB5","m","","k","m","b","t","q","Q","Z","Y"],grouping:[3],delimiters:{thousands:" ",decimal:","},currency:["\u20AC",""]},"zh-CN":{separator:"",suffixes:["\u5E7A","\u4EC4","\u963F","\u98DE","\u76AE","\u7EB3","\u5FAE","\u6BEB","","\u5343","\u5146","\u5409","\u592A","\u62CD","\u827E","\u6CFD","\u5C27"],grouping:[3],delimiters:{thousands:",",decimal:"."},currency:["\xA5",""]}};function Ws(e){"@swc/helpers - typeof";return e&&typeof Symbol<"u"&&e.constructor===Symbol?"symbol":typeof e}var Js=function(e,t){return parseFloat(Math.round(e*Math.pow(10,t))/Math.pow(10,t)).toFixed(t)};function Qs(e,t,r){var o=0,n=parseFloat(e.replace("\u2212","-"),10);n&&(n<0&&(n*=-1),o=1+Math.floor(1e-12+Math.log(n)/Math.LN10),o=Math.max(-24,Math.min(24,Math.floor((o-1)/3)*3)));var a=r[8+o/3];return {number:Js(a.scale(n),t),symbol:a.symbol}}function Zs(e,t){var r=Math.pow(10,Math.abs(8-t)*3);return {scale:t>8?function(o){return o/r}:function(o){return o*r},symbol:e}}function Xr(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"en-US",r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:void 0;if(isFinite(e))e*=1;else return "N/A";var o=e<0,n=e.toString().split(".")[0].replace("-","").length,a=(typeof t>"u"?"undefined":Ws(t))==="object"?t:yr[t]||yr["en-US"],s=a.suffixes.map(Zs),i=a.delimiters.decimal||".",c=a.separator||"",l=a.delimiters.thousands||",",u=formatLocale({currency:a.currency||["$",""],decimal:i,grouping:a.grouping||[3],thousands:l}),p;if(r)p=u.format(r)(e);else if(e===0)p="0";else if(n>=3){var d=Qs(u.format(".3r")(e),2,s),m=parseFloat(d.number).toString().replace(".",i),f=d.symbol;p="".concat(m).concat(c).concat(f);}else n===3?p=u.format(",f")(e):e<1&&e>-1?p=u.format(".2g")(e):p=u.format(".3g")(e);return "".concat(o&&p.charAt(0)!=="\u2212"?"\u2212":"").concat(p).replace(/−/g,"-").replace(/(\.[0]*[1-9]*)[0]*$/g,"$1").replace(/\.[0]*$/g,"")}function eo(e){let t=1+76.18009173/e-86.50532033/(e+1)+24.01409822/(e+2)-1.231739516/(e+3)+.00120858003/(e+4)-536382e-11/(e+5);return (e-.5)*Math.log(e+4.5)-(e+4.5)+Math.log(t*2.50662827465)}function jo(e,t,r){let o=0,n=1,a=1,s=1,i=0,c=0,l;for(;Math.abs((a-c)/a)>1e-5;)c=a,l=-(t+i)*(t+r+i)*e/(t+2*i)/(t+2*i+1),o=a+l*o,n=s+l*n,i+=1,l=i*(r-i)*e/(t+2*i-1)/(t+2*i),a=o+l*a,s=n+l*s,o/=s,n/=s,a/=s,s=1;return a/t}function Xs(e,t,r){let o,n;if(e<0)n=0;else if(e>=t)n=1;else {e=Math.floor(e);let a=r,s=e+1,i=t-e,c=s+i,l=Math.exp(eo(c)-eo(i)-eo(s)+s*Math.log(a)+i*Math.log(1-a));a<(s+1)/(c+2)?o=l*jo(a,s,i):o=1-l*jo(1-a,i,s),n=1-o;}return Math.round(n*1e5)/1e5}function ei(e){return {.99999:15.137,.99:6.635,.95:3.841,.9:2.706}[e]}function Gt(e,t,r,o){let n=t/(1-t),a=0,s=1,i=0,c=0;for(;a<=e;)c+=s,a>=r&a<=o&&(i+=s),c>1e30&&(i/=1e30,c/=1e30,s/=1e30),a+=1,s=s*n*(e+1-a)/a;return i/c}function ti(e,t,r){let o=e/t,a=(100-r*100)/2,s,i;if(e===0)s=0;else {let c=o/2,l=0,u=o,p=a/100;for(;u-l>1e-5;)Gt(t,c,e,e)*.5+Gt(t,c,e+1,t)>p?(u=c,c=(l+c)/2):(l=c,c=(u+c)/2);s=c;}if(e===t)i=0;else {let c=(1+o)/2,l=o,u=1,p=a/100;for(;u-l>1e-5;)Gt(t,c,e,e)*.5+Gt(t,c,0,e-1)<p?(u=c,c=(l+c)/2):(l=c,c=(u+c)/2);i=c;}return {lci:s,uci:i}}function ri(e,t){let r=e,o=t,n=r,a=o,s=95,i=.5,c=.5,u=(100-s)/2/100,p=n;for(;c>1e-5;)c/=2,hr((1+p)*i/(1-i),p+1,1e10)+.5*hr((1+p)*i/(1-i),p,p)>u?i-=c:i+=c;let d=(1+p)*i/(1-i)/a;for(i=.5,c=.5,u=(100-s)/2/100;c>1e-5;)c/=2,hr((1+p)*i/(1-i),0,p-1)+.5*hr((1+p)*i/(1-i),p,p)<u?i-=c:i+=c;let f=(1+p)*i/(1-i)/a;return {lci:d,uci:f}}function hr(e,t,r){let o=1,n=0,a=0,s=0;for(;s<e||o>n*1e-10;)n+=o,s>=t&s<=r&&(a+=o),n>1e30&&(a/=1e30,n/=1e30,o/=1e30),s+=1,o=o*e/s;return a/n}var Wo={binomialCdf:Xs,binP:Gt,computeMidP:ti,criticalValue:ei,smr:ri};var Je={d3:{...oi,...ni,...ai,...si},d3plus:{assign:assign,closest:closest,date:date,formatAbbreviate:Xr,merge:merge,strip:strip,titleCase:titleCase},stats:Wo};var Yo={};var Ce={UNILATERAL:"uni",MULTILATERAL:"multi"},Ze={SINGLE:"single",MULTI:"multi"};var to={ALLOWED:"allowed",ALLOWED_LOGIC:"allowedLogic",IGNORE_CASCADE:"ignoreCascade"},mi={ACCESS:"access",ACCESS_LOGIC:"accessLogic"},fi={DISABLED:"disabled"},gi={FALLBACK:"fallback"};var yi={IMAGE:"image",PARAGRAPH:"paragraph",SELECTOR:"selector",STAT:"stat",SUBTITLE:"subtitle",TITLE:"title",NAV:"nav",RESET_BUTTON:"reset_button",COMPARISON_BUTTON:"comparison_button",TABLE:"table",BUTTON:"button",MULTIHIERARCHY_SELECTOR:"multihierarchy_selector",FALLBACK:"fallback"},ro={GENERATOR:"generator",RELATED:"related",VIZ:"visualization",SECTION_FLAG:"section_flag"},oo="logic",B={...yi,...ro},Le={NAME:"name",DESCRIPTION:"description",...to,...mi,...gi,...fi};var Rr={FORMATTER:"formatter"},At={STRING:"string"};var Tt=class extends Model{};function bi(e){return Tt.init({id:{type:DataTypes.INTEGER,primaryKey:true,autoIncrement:true},name:{type:DataTypes.STRING,defaultValue:""},content:{type:DataTypes.JSONB,defaultValue:{description:"",testValue:"Foo",type:Rr.FORMATTER,inputType:At.STRING,logic:"return n;"}}},{sequelize:e,modelName:"formatter",tableName:"bespoke_reports_formatter",freezeTableName:true,timestamps:false,hooks:{async afterSync(t){let r=await Tt.findAll();if(t.force||r.length===0){let o=Object.entries(Yo).map(([n,a])=>({name:n,content:a}));await Tt.bulkCreate(o);}}}}),()=>Tt}var Zo=bi;var Kt=class extends Model{getContent(t){let{contentByLocale:r}=this;if(!r)throw new Error("This ImageModel entity didn't include its ImageContentModel association.");let o=r.find(n=>n.locale===t);if(!o)throw new Error(`Missing SearchContent for locale '${t}' on Search ID '${this.id}'`);return o}};function Ei(e){return Kt.init({id:{autoIncrement:true,primaryKey:true,type:DataTypes.INTEGER},url:{type:DataTypes.TEXT,unique:true},author:DataTypes.TEXT,license:DataTypes.TEXT,splash:DataTypes.BLOB,thumb:DataTypes.BLOB},{sequelize:e,modelName:"image",tableName:"bespoke_reports_image",freezeTableName:true}),t=>(Kt.hasMany(t.image_content,{foreignKey:"id",sourceKey:"id",as:"contentByLocale"}),Kt)}var Xo=Ei;var br=class extends Model{};function Ti(e){return br.init({id:{type:DataTypes.INTEGER,primaryKey:true,onDelete:"cascade",references:{model:"bespoke_reports_image",key:"id"}},locale:{type:DataTypes.STRING,primaryKey:true},meta:DataTypes.TEXT},{sequelize:e,modelName:"image_content",tableName:"bespoke_reports_image_content",freezeTableName:true,timestamps:false}),()=>br}var en=Ti;var wt=class extends Model{toJSON(){let t=this.get({plain:true}),{dimensions:r=[],sections:o=[]}=this;return {...t,settings:t.settings,date:new Date(this.date||Date.now()).toISOString(),dimensions:r.map(n=>n.toJSON()),sections:o.map(n=>n.toJSON())}}};function wi(e){return wt.init({id:{type:DataTypes.INTEGER,primaryKey:true,autoIncrement:true},name:{type:DataTypes.STRING,allowNull:false,defaultValue:""},visible:{type:DataTypes.BOOLEAN,defaultValue:true},date:{type:DataTypes.DATE,defaultValue:DataTypes.NOW},type:{type:DataTypes.STRING,defaultValue:"report",validate:{isIn:[["report","story"]]}},settings:{type:DataTypes.JSON,defaultValue:{}}},{sequelize:e,modelName:"report",tableName:"bespoke_reports_report",freezeTableName:true,timestamps:false}),t=>(wt.hasMany(t.dimension,{foreignKey:"report_id",sourceKey:"id",as:"dimensions"}),wt.hasMany(t.section,{foreignKey:"report_id",sourceKey:"id",as:"sections"}),wt)}var tn=wi;var xt=class extends Model{toJSON(){let t=this.get({plain:true}),{variants:r=[]}=this;return {...t,variants:r.map(o=>o.toJSON())}}};function xi(e){return xt.init({id:{type:DataTypes.INTEGER,primaryKey:true,autoIncrement:true},report_id:{type:DataTypes.INTEGER,onDelete:"cascade",references:{model:"bespoke_reports_report",key:"id"}},name:{type:DataTypes.STRING,defaultValue:""},settings:{type:DataTypes.JSONB,defaultValue:{}},ordering:{type:DataTypes.INTEGER,defaultValue:0},visible:{type:DataTypes.BOOLEAN,defaultValue:true}},{sequelize:e,modelName:"dimension",tableName:"bespoke_reports_report_dimension",freezeTableName:true,timestamps:false}),t=>(xt.hasMany(t.variant,{foreignKey:"dimension_id",sourceKey:"id",as:"variants",constraints:false}),xt.belongsTo(t.report,{foreignKey:"report_id",targetKey:"id",as:"report",constraints:false}),xt)}var rn=xi;var Pt=class extends Model{get report(){return this.dimension?.report}toJSON(){return this.get({plain:true})}};function vi(e){return Pt.init({id:{type:DataTypes.INTEGER,primaryKey:true,autoIncrement:true},dimension_id:{type:DataTypes.INTEGER,onDelete:"cascade",references:{model:"bespoke_reports_report_dimension",key:"id"}},slug:{type:DataTypes.STRING,defaultValue:""},name:{type:DataTypes.STRING,defaultValue:""},settings:{type:DataTypes.JSONB,defaultValue:{}},config:{type:DataTypes.JSONB,defaultValue:{}},visible:{type:DataTypes.BOOLEAN,defaultValue:true}},{sequelize:e,modelName:"variant",tableName:"bespoke_reports_report_dimension_variant",freezeTableName:true,timestamps:false}),t=>(Pt.hasMany(t.search,{foreignKey:"variant_id",sourceKey:"id",as:"members",constraints:false}),Pt.belongsTo(t.dimension,{foreignKey:"dimension_id",targetKey:"id",as:"dimension",constraints:false}),Pt)}var on=vi;var ke=class extends Model{getContent(t){let{contentByLocale:r}=this;if(!r)throw new Error("This SearchModel entity didn't include its SearchContentModel association.");let o=r.find(n=>n.locale===t);if(!o)throw new Error(`Missing SearchContent for locale '${t}' on Search ID '${this.id}'`);return o}};function Ci(e){return ke.init({id:{primaryKey:true,type:DataTypes.TEXT},zvalue:DataTypes.DOUBLE,slug:DataTypes.TEXT,image_id:{type:DataTypes.INTEGER,references:{model:"bespoke_reports_image",key:"id"}},content_id:{autoIncrement:true,type:DataTypes.INTEGER,unique:true},variant_id:{primaryKey:true,type:DataTypes.INTEGER,onDelete:"cascade",references:{model:"bespoke_reports_report_dimension_variant",key:"id"}},dimension_id:{primaryKey:true,type:DataTypes.INTEGER,onDelete:"cascade",references:{model:"bespoke_reports_report_dimension",key:"id"}},report_id:{primaryKey:true,type:DataTypes.INTEGER,onDelete:"cascade",references:{model:"bespoke_reports_report",key:"id"}},visible:{type:DataTypes.BOOLEAN,defaultValue:true}},{sequelize:e,modelName:"search",tableName:"bespoke_reports_search",freezeTableName:true,timestamps:false}),t=>(ke.belongsTo(t.variant,{foreignKey:"variant_id",targetKey:"id",as:"variant",constraints:false}),ke.belongsTo(t.dimension,{foreignKey:"dimension_id",targetKey:"id",as:"dimension",constraints:false}),ke.belongsTo(t.report,{foreignKey:"report_id",targetKey:"id",as:"report",constraints:false}),ke.belongsTo(t.image,{foreignKey:"image_id",targetKey:"id",as:"image",constraints:false}),ke.hasMany(t.search_content,{foreignKey:"id",sourceKey:"content_id",as:"contentByLocale"}),ke)}var nn=Ci;var Sr=class extends Model{};function Bi(e){return Sr.init({id:{type:DataTypes.INTEGER,primaryKey:true,onDelete:"cascade",references:{model:"bespoke_reports_search",key:"content_id"}},locale:{type:DataTypes.STRING,primaryKey:true},name:DataTypes.TEXT,annotations:{type:DataTypes.JSONB,defaultValue:{}},attributes:{type:DataTypes.JSONB,defaultValue:{}},keywords:DataTypes.ARRAY(DataTypes.TEXT)},{sequelize:e,modelName:"search_content",tableName:"bespoke_reports_search_content",freezeTableName:true,timestamps:false}),()=>Sr}var an=Bi;var jt=class extends Model{toJSON(){let t=this.get({plain:true}),{blocks:r=[]}=this;return {...t,blocks:r.map(o=>o.toJSON())}}};function Oi(e){return jt.init({id:{type:DataTypes.INTEGER,primaryKey:true,autoIncrement:true},settings:{type:DataTypes.JSON,defaultValue:{}},heading:{type:DataTypes.INTEGER,defaultValue:1},ordering:DataTypes.STRING,report_id:{type:DataTypes.INTEGER,onDelete:"cascade",references:{model:"bespoke_reports_report",key:"id"}}},{sequelize:e,modelName:"section",tableName:"bespoke_reports_section",freezeTableName:true,timestamps:false}),t=>(jt.hasMany(t.block,{foreignKey:"section_id",sourceKey:"id",as:"blocks"}),jt)}var sn=Oi;var Ar=class extends Model{};function Di(e){return Ar.init({id:{type:DataTypes.INTEGER,primaryKey:true,autoIncrement:true},name:{type:DataTypes.STRING,defaultValue:""},description:{type:DataTypes.STRING,defaultValue:""},content:{type:DataTypes.JSONB,defaultValue:{pattern:"",logic:`return {
|
|
2
2
|
axiosConfig: {
|
|
3
3
|
method: 'get',
|
|
4
4
|
url: url,
|
|
5
5
|
}
|
|
6
|
-
};`,testUrl:""}}},{sequelize:e,modelName:"datasource",tableName:"bespoke_reports_data_source",freezeTableName:true,timestamps:false}),()=>Ar}var cn=
|
|
6
|
+
};`,testUrl:""}}},{sequelize:e,modelName:"datasource",tableName:"bespoke_reports_data_source",freezeTableName:true,timestamps:false}),()=>Ar}var cn=Di;var ln={block:Go,block_content:Ko,block_input:Ho,formatter:Zo,image:Xo,image_content:en,report:tn,dimension:rn,variant:on,search:nn,search_content:an,section:sn,datasource:cn};var so=Ie(),un=process.env.REPORTS_DB_CONNECTION||"";if(!un)throw new Error(`
|
|
7
7
|
Env var 'REPORTS_DB_CONNECTION' is not present.
|
|
8
8
|
This is required to connect to a database to save the Reports CMS changes.
|
|
9
|
-
`);var rt=async()=>{if(global.sequelize){so&&console.info("\u267B\uFE0F RE-UTILIZING DB CONNECTION");let e=global.sequelize.sequelize;if(e)try{return await e.authenticate(),global.sequelize}catch(t){so&&console.warn(`\u26A0\uFE0F CONNECTION INACTIVE, REINITIALIZING: ${t.message}`),delete global.sequelize;}}if(!global.sequelize){so&&console.info("\u{1F511} INITIALIZING DB CONNECTION");let e;try{e=new Sequelize(un,{logging:!1,dialectModule:
|
|
9
|
+
`);var rt=async()=>{if(global.sequelize){so&&console.info("\u267B\uFE0F RE-UTILIZING DB CONNECTION");let e=global.sequelize.sequelize;if(e)try{return await e.authenticate(),global.sequelize}catch(t){so&&console.warn(`\u26A0\uFE0F CONNECTION INACTIVE, REINITIALIZING: ${t.message}`),delete global.sequelize;}}if(!global.sequelize){so&&console.info("\u{1F511} INITIALIZING DB CONNECTION");let e;try{e=new Sequelize(un,{logging:!1,dialectModule:Ui,pool:{max:10,min:1,acquire:5*1e3,idle:10*1e3,evict:1*1e3}});}catch(t){throw new Error(`
|
|
10
10
|
Could not connect to the database using the given connection string.
|
|
11
11
|
Please check that the connection string 'REPORTS_DB_CONNECTION' is correct.
|
|
12
12
|
Details:
|
|
13
13
|
${t.message}
|
|
14
14
|
`)}Object.values(ln).map(t=>t(e)).map(t=>t({...e.models,sequelize:e})),global.sequelize=e.sync().catch(t=>{t instanceof Error$1&&console.error("=".repeat(40),`
|
|
15
15
|
Error initializing sequelize connection:
|
|
16
|
-
`,t.stack||t.message),global.sequelize=void 0;}).then(()=>({...e.models,sequelize:e}));}return global.sequelize};var
|
|
17
|
-
`,`Error message: ${d.message}`),"N/A"}})}function
|
|
16
|
+
`,t.stack||t.message),global.sequelize=void 0;}).then(()=>({...e.models,sequelize:e}));}return global.sequelize};var $i=()=>{let e=process.env.NEXT_PUBLIC_REPORTS_LOCALE_DEFAULT||"en",t=process.env.NEXT_PUBLIC_REPORTS_LOCALES?.split(",")||[e];return t.includes(e)||t.push(e),{localeDefault:e,locales:t}},G=$i;function $(e){let t={"&":"&","<":"<",">":">",""":'"',"'":"'","`":"`"," ":""},r=`(?:${Object.keys(t).join("|")})`,o=RegExp(r),n=RegExp(r,"g"),a=String(e).replace(/<[^>]+>/g," ").replace(/\s+/g," ").trim();return o.test(a)?a.replace(n,s=>t[s]):a}function Wt(e){return typeof e=="string"?String(e).replace(/&([a-z0-9]+|#[0-9]{1,6}|#x[0-9a-f]{1,6});/ig," "):e}function qi(e){return e?zi(Wt($(e)),{replacement:"-",remove:/[*+~.()'"!:@]/g,lower:true,strict:true,trim:true}):""}var Tr=qi;var Yt=e=>({overrideNames:e&&typeof e.overrideNames<"u"?e.overrideNames:false,overrideRelevance:e&&typeof e.overrideRelevance<"u"?e.overrideRelevance:false,regenerateSlugs:e&&typeof e.regenerateSlugs<"u"?e.regenerateSlugs:false,keepOldMembers:e&&typeof e.keepOldMembers<"u"?e.keepOldMembers:true,doIngest:e&&typeof e.doIngest<"u"?e.doIngest:false,overrideAttributes:e&&typeof e.overrideAttributes<"u"?e.overrideAttributes:false,order:e&&typeof e.order<"u"?e.order:0});var pn={jwt:Gi};var dn=(e,t={},r="en",o={},n={})=>{let a={setVariables:o.onSetVariables?o.onSetVariables:c=>c,openModal:o.onOpenModal?o.onOpenModal:c=>c,formatters:t,libs:Je,locale:r,...n};function s(c){return Function("globals",...c.vars,`with (globals) { ${c.logic} }`).bind(a,a)}function i(c){if(c.vars&&c.logic)return s(c);for(let l in c)Array.isArray(c[l])?c[l]=c[l].map(u=>isObject(u)?i(u):u):isObject(c[l])&&(c[l]=i(c[l]));return c}return i(e)},wr=(e,t={})=>{let r={libs:pn,...t};function o(a){return Function("globals",...a.vars,`with (globals) { ${a.logic} }`).bind(r,r)}function n(a){if(a.vars&&a.logic)return o(a);for(let s in a)Array.isArray(a[s])?a[s]=a[s].map(i=>isObject(i)?n(i):i):isObject(a[s])&&(a[s]=n(a[s]));return a}return n(e)};function Hi(){let{publicRuntimeConfig:e}=Ki(),t=e.bespoke_report_env_vars||{};return {...Object.keys(t).reduce((r,o)=>(r[`ENV_${o}`]=t[o]||"N/A",r),{})}}var ue=Hi;function ji(){return typeof process>"u"?{}:Object.entries(process.env).filter(([e])=>e.startsWith("BESPOKE_SECRET_")).reduce((e,[t,r])=>({...e,[t.replace("BESPOKE_SECRET_","ENV_SECRET_")]:r}),{})}var vt=ji;var{localeDefault:Ji}=G();function fe(e){return {variables:e.variables||{},query:e.query||{},locale:e.locale||Ji}}function io(e){return e.reduce((t,r,o)=>(o?o===e.length-1&&o===1?t+=` and ${r}`:o===e.length-1?t+=`, and ${r}`:t+=`, ${r}`:t+=r,t),"")}var ye=Qi;function Qi(e,t,r,o=false){let{variables:n}=fe(r);if(!e)return e;let a=/([A-z0-9]*)\{\{([^\}]+)\}\}/g;return e.replace(a,(i,c,l)=>{let u=d=>d;if(c){let d=c.replace(/^\w/g,m=>m.toLowerCase());d in t?u=t[d]:u=m=>`${c}${m}`;}let p=Array.isArray(n[l])?io(n[l]):n[l];if(p===void 0)return o?i:"N/A";try{return u(p,Je,t)}catch(d){return console.error(`Error using formatter ${u.name}
|
|
17
|
+
`,`Error message: ${d.message}`),"N/A"}})}function Xi(e,t){return e.some(r=>t.includes(`role.${r}`))}function kr(e){return async t=>{let{url:r,method:o,timeout:n,wrapper:a=true,session:s}=t,i=n||process.env.NEXT_PUBLIC_REPORTS_API_FETCH_TIMEOUT||0,c={url:r,method:o||"GET",timeout:i},l=ue(),u=vt(),p=null;s&&s.user&&(p={user:s.user,status:"authenticated",isLoading:false,update:async()=>s});let d={envs:{...l,...u},...p?{session:p}:{}};try{let f=(await e.datasource.findAll({where:literal("(content->>'useProxy')::boolean = true"),order:[literal("(content->>'order')::integer ASC NULLS LAST")]})).map(h=>{let S={...l};return {...h.toJSON(),patternSwapped:ye(h.content.pattern,{},{variables:S})}}).find(h=>{if(!h.content?.pattern)return !1;try{return new RegExp(h.patternSwapped,"gm").test(c.url)}catch{return !1}});if(f){let h=t.user_roles&&Array.isArray(t.user_roles)?t.user_roles:[],S=f.content.access&&Array.isArray(f.content.access)?f.content.access:[];if(f.content.logic&&(S.length===0||S.includes("public")||S.includes("guest")&&h.length===0||S.includes("private")&&h.length>0||Xi(h,S))){let P=await wr({vars:["url","libs","session"],logic:f.content.logic},d)(c.url);if(P.axiosConfig)c=P.axiosConfig;else throw new T(500,`AxiosConfig is missing in Data Source ${f.name} (ID: ${f.id}).`)}else throw new T(401,`Query not allowed because user roles. Data Source ${f.name} (ID: ${f.id}).`)}let R=await Or.request(c);return {ok:!0,wrapper:a,status:R.status,data:R.data}}catch(m){throw new T(m.response?.status||500,m.message)}}}var{localeDefault:co}=G();function gn(e){let{search:t,search_content:r}=e,o=kr(e);return n;async function n(s){let{id:i,config:c={},settings:l={}}=s,u=c[co]?co:Object.keys(c)[0],{overrideNames:p,overrideAttributes:d}=Yt(l),{accessor:m,path:f,idKey:R,labelKey:h}=c[co];if(!f||!R||!h)return;let S=await o({url:f}).catch(F=>({data:[],error:F}));if("error"in S)throw new T(500,`Failed to fetch members: ${S.error}`);let x=qt(S.data,m),P=[];try{console.info(`Ingesting default items for variant ${s.name} for ${u}`),P=await a(s,u,x);}catch(F){let C=`[ERROR] Ingesting default member items for ${u}`;throw console.error(C,F),new T(500,C)}let U=await t.findAll({where:{variant_id:i}}).then(F=>Object.fromEntries(F.map(C=>[C.id,{content_id:C.content_id,needsUpdate:P.includes(C.content_id)}]))),A=Object.entries(c).map(async([F,C])=>{let{path:N,accessor:k,idKey:L,labelKey:M,attributes:D=[]}=C;if(!N||!L||!M)return;let Y=await o({url:N}).catch(_=>({data:[],error:_}));if("error"in Y)throw new T(500,`Failed to fetch members for locale ${F}: ${Y.error}`);let V=qt(Y.data,k),v=await r.findAll({where:{id:P,locale:F}}).then(_=>Object.fromEntries(_.map(b=>[b.id,b.toJSON()]))),j=V.filter(_=>typeof _[L]<"u"&&_[L]!==""&&typeof _[M]<"u"&&_[M]!=="").map(_=>{let b=U[_[L]],E,w=Object.fromEntries(D.map(Z=>[Z.name,Z.type==="constant"?Z.value:_[Z.value]||""]));return b.needsUpdate&&v[b.content_id]?(E={...v[b.content_id]},p&&(E.name=_[M]),d&&(E.attributes=w)):E={id:b.content_id,locale:F,name:_[M],attributes:w},E});try{return r.bulkCreate(j,{updateOnDuplicate:["name","attributes"]})}catch(_){let b=`[ERROR] Ingesting search content items for ${F}`;throw console.error(b,_),new T(500,b)}});await Promise.all(A);}async function a(s,i,c){let{id:l,dimension_id:u,slug:p}=s,{report_id:d}=s.dimension,{idKey:m,labelKey:f,zValueKey:R}=s.config[i],{overrideNames:h,regenerateSlugs:S,keepOldMembers:x,overrideRelevance:P,overrideAttributes:U}=Yt(s.settings),A=t.findAll({attributes:["slug",[fn("COUNT",col("variant.id")),"slugCount"]],include:{association:"variant",attributes:[],required:false,right:true,where:{dimension_id:u,slug:p,id:{[Op.not]:l}}},group:"search.slug"}).then(b=>Object.fromEntries(b.map(E=>{let w=E.getDataValue("slugCount");return [E.slug,Number.parseInt(`${w}`,10)]}))),F=t.findAll({where:{variant_id:l}}).then(b=>Object.fromEntries(b.map(E=>[E.id,E.toJSON()]))),[C,N]=await Promise.all([A,F]),k=Object.values(N).map(b=>b.slug),L=[],M=null,D=null;if(R&&R!==""){for(let b of c)if(typeof b[R]=="number"&&!isNaN(b[R])){let E=b[R];(M===null||E<M)&&(M=E),(D===null||E>D)&&(D=E);}}let Y=[],V=[],v=[],j=false;c.filter(b=>b[m]&&b[m]!==""&&b[f]&&b[f]!=="").forEach(b=>{let E=b[m],w=Tr(b[f]);j=false;let Z=parseFloat(Math.random().toPrecision(5));if(R&&R!==""&&M&&D&&b[R]){let Q;try{Q=parseInt(b[R],10);}catch{Q=0;}let H=D!==null&&M!==null&&D!==M?(Q-M)/(D-M):0;Z=D===M?1:parseFloat(H.toPrecision(5));}if(N[E]){if(h||S||P||U){let Q=N[E];if((h||U)&&v.push(Q.content_id),h&&S){let H=Object.values(N).filter(K=>K.id!==E).map(K=>K.slug),X=C[w]||H.includes[w]||L.includes(w);X&&console.warn("Duplicate slug!",w,"replaced by",`${w}-${E}`);let ve=X?`${w}-${E}`:w;Q.slug!==ve&&(Q.slug=ve,L.push(w),j=true,console.info("UPDATE SLUG",E,w));}R&&R!==""&&P&&Q.zvalue!==Z&&(Q.zvalue=Z,j=true,console.warn("UPDATE ZVALUE",E,Z)),j&&V.push(Q);}}else {console.info("INSERT ID",E);let Q=C[w]||k.includes[w]||L.includes(w);Q&&console.warn("Duplicate slug!",w,"replaced by",`${w}-${E}`);let H=Q?`${w}-${E}`:w;L.push(w),Y.push({id:E,slug:H,variant_id:l,dimension_id:u,report_id:d,zvalue:Z});}});let _=[];if(!x){let b=c.map(E=>E[m]);_=Object.keys(N).filter(E=>!b.includes(E));}try{return (Y.length>0||V.length>0)&&(await t.bulkCreate([...Y,...V],{updateOnDuplicate:["slug","zvalue"]}),console.info("New members ingested:",Y.length),console.info("New members updated:",V.length)),_.length>0&&(await t.destroy({where:{id:{[Op.in]:_},variant_id:l}}),console.warn("Old members deleted:",_.length)),v}catch(b){throw console.error(`[ERROR] Ingesting search members for ${i}`,b),new Error(b)}}}var nc=Xt(process.env.NEXT_PUBLIC_REPORTS_DEBUG);function yn(e){let{search:t}=e;return r;async function r(o){let{all:n,locale:a,mode:s,variant:i,output:c,allowNulls:l}=o,u={content_id:[],...i&&i.length?{variant_id:i}:{}};if(s==="content_ids")u.content_id=o.content_ids;else if(s==="ids"){if(n)throw new T(400,"Search by ids doesn't support locale all. Pick one locale.");let f={id:o.ids,...i&&i.length?{variant_id:i}:{}},R=await t.findAll({attributes:["content_id"],where:f,include:[{association:"contentByLocale",where:{locale:a}}]});u.content_id=R.map(h=>h.content_id);}else if(s==="slugs"){let f=o.slugs.map(h=>t.findAll({attributes:["content_id"],where:{slug:h.memberSlug},include:{association:"variant",attributes:["id","name","slug"],required:true,where:{slug:h.variantSlug}}})),R=await Promise.all(f).then(h=>h.reduce((S,x)=>S.concat(x),[]));u.content_id=R.map(h=>h.content_id);}else if(s==="related"){let f=()=>{if(o.variant_ids?.length)return {variant_id:o.variant_ids.map(S=>S)};if(o.dimension_ids?.length)return {dimension_id:o.dimension_ids.map(S=>S)};if(o.report_ids?.length)return {report_id:o.report_ids.map(S=>S)}},R=()=>o.include_ids?.length?{[Op.in]:o.include_ids.map(S=>S)}:false,h=await t.findAll({attributes:["content_id"],where:{...f(),content_id:R()||{[Op.notIn]:o.current_ids},visible:true},order:[Sequelize.fn("RANDOM")],limit:o.related||4});u.content_id=h.map(S=>S.content_id);}else if(s==="whole"){let f={...i&&i.length?{variant_id:i}:{}},R=await t.findAll({attributes:["content_id"],where:f});u.content_id=R.map(h=>h.content_id);}let p={locale:n?{[Op.ne]:null}:a},d=await t.findAll({where:u,include:[{association:"report",attributes:["id","name"]},{association:"dimension",attributes:["id","name","ordering"]},{association:"variant",attributes:["id","name","slug"]},{association:"image",attributes:["id","author","url","license"],include:[{association:"contentByLocale",where:p}]},{association:"contentByLocale",where:p}]});if(!l&&!["related","whole"].includes(s)&&o[s]&&d.length!==o[s].length)throw nc&&console.error("Error in read members. The number of members requested doesn't match the number of members found.",JSON.stringify(o)),new T(404,"One or more members were not found. "+JSON.stringify(o));d.sort((f,R)=>u.content_id.indexOf(f.content_id)-u.content_id.indexOf(R.content_id));let m=d.map(f=>{let R,h={id:f.id,slug:f.slug,visible:f.visible,zvalue:f.zvalue,content_id:f.content_id,report_id:f.report_id,report_name:f.report.name,dimension_id:f.dimension_id,dimension_name:f.dimension.name,dimension_ordering:f.dimension.ordering,variant_id:f.variant_id,variant_name:f.variant.name,variant_slug:f.variant.slug};if(n){let S=f.contentByLocale;h.contentByLocale=S,h.image=f.image,h.image_id=f.image_id,R=h;}else {let S=f.getContent(a),x=f.image?.getContent(a),P=x&&{id:f.image.id,author:f.image.author,url:f.image.url,license:f.image.license,meta:x.meta};R={...h,locale:S.locale,name:S.name,attributes:S.attributes,keywords:S.keywords,image:P||null,image_id:f.image_id};}return c==="lite"&&(delete R.image,delete R.image_id),R});return {meta:o,results:m}}}function hn(e){let{search:t}=e;return r;async function r(o){let n=await t.findOne({where:{content_id:o.member},include:[{association:"image",attributes:[o.size],include:[{association:"contentByLocale"}]}]});return n&&n.image&&n.image[o.size]?n.image[o.size]:Buffer.from("iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkkAQAAB8AG7jymN8AAAAASUVORK5CYII=","base64")}}function sc(e,t=true){if(!e)return "";let r=Wt($(e.toLowerCase()));return (t?zi(r,{replacement:" ",remove:/[*+~.()'"!:@-]/g,lower:true,strict:false,trim:true}):r).replace(/\s\s+/g," ")}var It=sc;var Jt=[{charset:"latin",locales:["en","es","fr","de","it","pt","ro","nl","sv","da","fi","no","pl","cs","hu","sk","sl"]},{charset:"cjk",locales:["zh","ja","ko"]},{charset:"arabic",locales:["ar","fa","ur","he"]},{charset:"cyrilic",locales:["bg","ru","uk","sr","mk"]}],xr=Jt.reduce((e,t)=>e.concat(t.locales),[]);var ot=Ie(),{locales:cc}=G(),lc=cc.filter(e=>xr.includes(e)),uo=false,uc=async(e,t=false,r)=>{if(t&&(ot&&console.info("0\uFE0F\u20E3 CLEARING SEARCH INDEX"),global.flexsearch=void 0,uo=false),global.flexsearch)return ot&&console.info("\u{1F501} RE-UTILIZING SEARCH INDEX"),global.flexsearch;try{uo||(ot&&console.info("1\uFE0F\u20E3 INITIALIZING SEARCH INDEX"),uo=!0,global.flexsearch=await pc(e,r));}catch(o){throw new Error(`
|
|
18
18
|
Could not initialize FlexSearch engine.
|
|
19
19
|
Details:
|
|
20
20
|
${o.message}
|
|
21
|
-
`)}return global.flexsearch};async function
|
|
21
|
+
`)}return global.flexsearch};async function pc(e,t){let r=await e.search.findAll({include:[{association:"contentByLocale"}],order:[["zvalue","DESC NULLS LAST"]]});ot&&console.info("\u{1F3F3}\uFE0F INITIALIZING FLEXSEARCH");let o=lc.map(async n=>{ot&&console.info(`\u{1F3F3}\uFE0F INITIALIZING FLEXSEARCH ${n} LOCALE`);let s=Jt.find(m=>m.locales.includes(n))?.charset||"latin",i="Default";s==="latin"?i="LatinAdvanced":s==="cjk"&&(i="CJK");let c=null;if(["en","de","fr"].includes(n))try{n==="en"?c=(await import('flexsearch/lang/en')).default:n==="de"?c=(await import('flexsearch/lang/de')).default:n==="fr"&&(c=(await import('flexsearch/lang/fr')).default);}catch(m){ot&&console.warn(` Could not load language pack for ${n}: ${m.message}`);}let l=t?.attributes||[],u={encoder:i,tokenize:t?.tokenize||"forward",cache:100,resolution:t?.indexResolution||9,context:false,worker:false,rtl:s==="arabic",document:{id:"content_id",store:false,index:["id","name","clean","keywords",...l]}};c&&(c.filter&&(u.document.filter=m=>c.filter.has(m)),c.stemmer&&(u.document.stemmer=m=>c.stemmer.get(m)||m));let p=new Document(u),d=0;return r.forEach(m=>{let f=m.contentByLocale.find(R=>R.locale===n);if(f){let R=It(f.name,s!=="arabic"),h=Array.isArray(f.keywords)?f.keywords.map(S=>It(S,s!=="arabic")):null;try{let S={id:m.id,content_id:m.content_id,name:f.name,keywords:h,clean:R};if(l.length>0){let x=f.attributes||{};l.forEach(P=>{x[P]!==void 0&&(S[P]=x[P]);});}p.add(S),d++;}catch(S){ot&&console.warn(` Could not index document ${m.id}: ${S.message}`);}}}),console.info(`\u{1F3F3}\uFE0F Indexed for ${n}: ${d} elements (with ${l.length} custom attributes)`),[n,p]});return Object.fromEntries(await Promise.all(o))}var nt=uc;var Ct=process.env.REPORTS_EXTERNAL_SEARCH,Be=Ie(),{locales:dc}=G(),mc=dc.filter(e=>xr.includes(e)),po=false,fc=async(e=false)=>{if(e&&(Be&&console.info("0\uFE0F\u20E3 CLEARING SEARCH INDEX"),global.typesense=void 0,po=false),global.typesense)return Be&&console.info("\u{1F501} RE-UTILIZING SEARCH INDEX"),global.typesense;try{po||(Be&&console.info("1\uFE0F\u20E3 INITIALIZING SEARCH INDEX"),po=!0,global.typesense=await yc());}catch(t){throw new Error(`
|
|
22
22
|
Could not initialize Typesense engine.
|
|
23
23
|
Details:
|
|
24
24
|
${t.message}
|
|
25
|
-
`)}return global.typesense};async function
|
|
25
|
+
`)}return global.typesense};async function gc(){try{if(Ct){let e=await Or.get(new URL(Ct).origin);if(e?.data["typesense-health"]===!0)return Be&&console.info(`${Ct} health check is OK. Version: ${e.data.Version}`),!0}else console.error("No envar set TYPESENSE_URL");return !1}catch(e){return console.error("Health check failed:",e.message),false}}async function yc(){if(Be&&console.info(`\u{1F3F3}\uFE0F INITIALIZING TYPESENSE SEARCH AGAINST ${Ct}`),!await gc())throw new Error("TYPESENSE_URL service is not healthy.");let t=mc.map(r=>(Be&&console.info(`\u{1F3F3}\uFE0F INITIALIZING SEARCH ${r} LOCALE`),[r,{search:async(n={query:"*",limit:12,offset:0})=>{let a={locale:r,query:n.query,limit:n.limit,offset:n.offset};return n.report&&Array.isArray(n.report)&&n.report.length>0&&(a["report[]"]=n.report.join(",")),n.variant&&Array.isArray(n.variant)&&n.variant.length>0&&(a["variant[]"]=n.variant.join(",")),Be&&console.info("Typesense URL:",Ct,a),Or.get(Ct,{params:a}).then(i=>(Be&&(console.info("Typesense URL:",i.request.res.responseUrl),console.info("Typesense Results",i.data.data.results.length)),i.data.data)).catch(i=>(console.error("Typesense Call Error:",i),[]))}}]));return Object.fromEntries(await Promise.all(t))}var bn=fc;var{localeDefault:bc}=G();function Bt(e,t){let{search:r,report:o,dimension:n}=e;return a;async function a(s){let i=s.origin||"flexsearch",c=process.env.REPORTS_EXTERNAL_SEARCH&&i==="typesense",{query:l,locale:u,preferredLocale:p,limit:d,format:m,visible:f,variant:R,dimension:h,report:S,all:x,noImage:P,includes:U,sort:A,direction:F,offset:C=0,excludeMultilateral:N}=s,k=F&&F!=="undefined"?F.toUpperCase():"DESC";["ASC","DESC","ASC NULLS LAST","DESC NULLS LAST","ASC NULLS FIRST","DESC NULLS FIRST"].includes(k)||(k="DESC");let M=Jt.find(b=>b.locales.includes(u))?.charset||"latin",D=d&&!isNaN(d)?d:20;t?.candidateLimit||2e3;let v=It(l,M!=="arabic");function j(b){return b.toJSON()}function _(b){let E=b.getContent(u),w=E.attributes||{},Z=s.attributes||t?.attributes||[],Q={};return Z.forEach(H=>{w[H]!==void 0&&(Q[H]=w[H]);}),{...b.toJSON(),...Q,locale:E.locale,name:E.name,keywords:E.keywords,rank:b.getDataValue("rank")?b.getDataValue("rank"):void 0}}if(c){let b=await bn(),E=b[u]||b[bc],w={query:v===""?"*":v,limit:D,variant:R,report:S,offset:C};return await E.search(w)}else {let b=[],E=await nt(e,false,t);if(l&&l!==""&&E[u]){let ce=It(l,M!=="arabic"),de={query:ce},Et=await E[u].search(de);if(c?b=Et.data.results.map(pr=>parseInt(pr.content_id,10)):b=Et.reduce((pr,zt)=>pr.concat(zt.result),[]),b=mr(b),p&&E[p]){let zt=E[p].search(ce).reduce((Es,As)=>Es.concat(As.result),[]);zt=mr(zt),b=mr([...b,...zt]);}}let w={...f?{visible:f}:{},...P?{image_id:{[Op.eq]:null}}:{},...R.length?{variant_id:R}:{},...h.length?{dimension_id:h}:{},...S.length?{report_id:S}:{}},Z={locale:x?{[Op.ne]:null}:u},Q=A&&A.startsWith("attr.")?A.replace("attr.",""):"",H=Q&&/^[a-zA-Z0-9_-]+$/.test(Q)?e.sequelize.escape(Q):"",X=[];if(A==="report"&&X.push([literal(`COALESCE(NULLIF("report"."settings"->>'order', '')::INTEGER, 999999)`),"ASC"],[literal(`COALESCE(NULLIF("variant"."settings"->>'order', '')::INTEGER, 999999)`),"ASC"]),l&&l!==""&&b.length&&(!A||A==="rank")){let ce=b.filter(de=>Number.isFinite(de));ce.length>0&&X.push([literal(`array_position(array[${ce.join(",")}], "content_id")`),"ASC"]);}A!=="zvalue"&&X.push(["zvalue","DESC NULLS LAST"]),X.push([literal(`COALESCE(NULLIF("report"."settings"->>'order', '')::INTEGER, 999999)`),"ASC"],[literal(`COALESCE(NULLIF("variant"."settings"->>'order', '')::INTEGER, 999999)`),"ASC"]),H?X.unshift(["sort_attribute_num",`${k} NULLS LAST`],["sort_attribute_str",`${k} NULLS LAST`]):A&&A!=="name"&&A!=="report"&&A!=="zvalue"&&A!=="rank"?X.unshift([A,`${k} NULLS LAST`]):A==="zvalue"?X.unshift(["zvalue",`${k} NULLS LAST`]):A==="name"&&X.unshift([literal('"sort_name"'),k.startsWith("DESC")?"DESC":"ASC"]),l&&l!==""&&(w.content_id=b);let ve=[{association:"contentByLocale",where:Z,separate:true}];(U||A==="report")&&ve.push({association:"report",attributes:["id","name","settings"]},{association:"dimension",attributes:["id","name","settings"]},{association:"variant",attributes:["id","slug","name","settings"]});let K={...w.visible?{visible:w.visible}:{},...w.noImage?{image_id:w.noImage}:{},...w.content_id?{content_id:w.content_id}:{}};if(!w.report_id&&!w.dimension_id&&!w.variant_id&&f){let de=(await o.findAll({attributes:["id"],where:{[Op.or]:[where(cast(json("settings.hide"),"boolean"),true)]}})).map(Et=>Et.id);de.length>0&&(w.report_id={[Op.notIn]:de},K.report_id=w.report_id);}if(N&&!w.report_id){let de=(await n.findAll({attributes:["report_id",[fn("COUNT",col("id")),"dimension_count"]],group:["report_id"],having:where(fn("COUNT",col("id")),Op.gt,1)})).map(Et=>Et.getDataValue("report_id"));de.length>0&&(w.report_id={[Op.notIn]:de},K.report_id=w.report_id);}let ae=[],J=x?"AND sc.locale IS NOT NULL":`AND sc.locale = ${e.sequelize.escape(u)}`,_e=A==="name"?{include:[[literal(`
|
|
26
|
+
(SELECT sc.name
|
|
27
|
+
FROM bespoke_reports_search_content sc
|
|
28
|
+
WHERE sc.id = "content_id" ${J} LIMIT 1)
|
|
29
|
+
`),"sort_name"]]}:{},se=A&&A.startsWith("attr.")?{include:[[literal(`
|
|
26
30
|
(SELECT CASE
|
|
27
31
|
WHEN sc.attributes->>${H} ~ '^[0-9]+(\\.[0-9]+)?$'
|
|
28
32
|
THEN CAST(sc.attributes->>${H} AS DOUBLE PRECISION)
|
|
29
33
|
ELSE NULL
|
|
30
34
|
END
|
|
31
35
|
FROM bespoke_reports_search_content sc
|
|
32
|
-
WHERE sc.id = "content_id" ${
|
|
36
|
+
WHERE sc.id = "content_id" ${J} LIMIT 1)
|
|
33
37
|
`),"sort_attribute_num"],[literal(`
|
|
34
38
|
(SELECT CASE
|
|
35
39
|
WHEN sc.attributes->>${H} ~ '^[0-9]+(\\.[0-9]+)?$'
|
|
@@ -37,8 +41,8 @@ Error initializing sequelize connection:
|
|
|
37
41
|
ELSE sc.attributes->>${H}
|
|
38
42
|
END
|
|
39
43
|
FROM bespoke_reports_search_content sc
|
|
40
|
-
WHERE sc.id = "content_id" ${
|
|
41
|
-
`),"sort_attribute_str"]]}:{},se=l&&l!==""&&b.length?{include:[[literal(`array_position(array[${b.join(",")}], "content_id")`),"rank"]]}:{},[ie,hs]=await Promise.all([r.findAll({limit:D,offset:C,where:w,include:Pe,order:X,subQuery:false,attributes:{include:[...se.include||[],...Te.include||[]]}}),r.findAll({attributes:["variant_id",[fn("COUNT",col("variant_id")),"members_count"]],where:K,group:["variant_id"]})]),Rs=hs.map(ce=>ce.toJSON()),bs=m==="nested"?j:_;return ae=ie.map(bs),{meta:{origin:"flexsearch",...Object.fromEntries(Object.entries(s).map(ce=>[ce[0],$(ce[1])])),variantCount:Rs.reduce((ce,de)=>(ce[de.variant_id]=parseInt(de.members_count,10),ce),{})},results:ae}}}}function En(e){let{image:t,image_content:r,search:o,search_content:n}=e;return a;async function a(s){let{content_id:i,contentByLocale:c,image:l,image_id:u}=s,p={where:{content_id:i}},d=await o.findOne(p);if(await o.update(s,{where:{content_id:i}}),c){for(let f=0;f<c.length;f++){let R=c[f];await n.update({name:R.name,keywords:R.keywords},{where:{id:R.id,locale:R.locale}});}p={...p,...{include:[{association:"contentByLocale",separate:true}]}};}if(l){if(l.id&&(await t.update({...l},{where:{id:l.id}}),l.contentByLocale))for(let m=0;m<l.contentByLocale.length;m++){let f=l.contentByLocale[m];await r.update({meta:f.meta},{where:{id:f.id,locale:f.locale}});}}else !u&&d.image_id&&(await e.search.findAll({where:{image_id:d.image_id}})).length===0&&await t.destroy({where:{id:d.image_id}});return o.findOne(p)}}function An(e,t){return {ingestMembers:gn(e),readMember:yn(e),searchMember:Bt(e,t),updateMember:En(e),readMemberImage:hn(e)}}var at={include:[{association:"contentByLocale",separate:true},{association:"inputs",include:[{association:"contentByLocale",separate:true}]},{association:"consumers",include:[{association:"contentByLocale",separate:true}]}]},Qt=e=>({include:[{association:"variants",separate:true,attributes:{include:[[fn("COUNT",col("members.id")),"members_count"]]},include:[{model:e,as:"members",attributes:[]}],group:["variant.id"]}],order:[["ordering","ASC"]]}),Zt={include:[{association:"blocks",separate:true,...at}]},Pr=e=>({include:[{association:"dimensions",separate:true,...Qt(e)},{association:"sections",separate:true,...Zt}]});var ge=[{association:"image",attributes:{exclude:["splash"]},include:[{association:"contentByLocale"}]},{association:"contentByLocale"}];function Tn(e){let{block:t,block_content:r,block_input:o}=e;return {createBlock:n,readBlock:s,updateBlock:i,deleteBlock:l,createBulkBlock:a,updateBulkBlock:c};async function n(u){let{locales:p,...d}=u;return (await t.create({...d,consumers:[],inputs:[],contentByLocale:p.map(f=>({locale:f}))},{include:at.include})).toJSON()}async function a(u){let p=u.map(m=>{let{locales:f,...R}=m;return {...R,consumers:[],inputs:[],contentByLocale:f.map(S=>({locale:S}))}});return (await t.bulkCreate(p,{include:at.include})).map(m=>m.toJSON())}async function s({id:u,include:p}={}){let d=u==null?[]:[].concat(u),m=await t.findAll({where:d.length>0?{id:d}:void 0,include:p?at.include:void 0});if(d.length===0||m.length===d.length)return m.map(h=>h.toJSON());let f=m.map(h=>h.id),R=d.filter(h=>!f.includes(h));throw new T(404,`Block(id=[${R}]) does not exist.`)}async function i(u){let{id:p,contentByLocale:d,consumers:m,inputs:f,inputAction:R,...h}=u,S=await t.findByPk(p,{include:at.include,rejectOnEmpty:true});if(S.set(h),d){let x=Object.values(d);await r.bulkCreate(x,{updateOnDuplicate:["content"]});}return R&&(R.operation==="create"?await o.create(R.input):await o.destroy({where:R.input})),await S.save(),await S.reload(),S.toJSON()}async function c(u){let p=u.map(f=>{let{id:R,contentByLocale:h,consumers:S,inputs:x,inputAction:P,...U}=f;return {id:R,contentByLocale:h,inputAction:P,...U}}),d=await t.findAll({where:{id:{[Op.or]:p.map(f=>f.id)}},include:at.include}),m=[];for(let f of d){let R=p.filter(h=>h.id===f.id);for(let h=0;h<R.length;h++){let S=R[h],{id:x,contentByLocale:P,inputAction:U,...A}=S;if(U&&(U.operation==="create"?await o.create(U.input):await o.destroy({where:U.input})),P){let F=Object.values(P);await r.bulkCreate(F,{updateOnDuplicate:["content"]});}f.set(A),await f.save(),await f.reload(),m.push(f.toJSON());}}return m}async function l(u){let p=await t.findByPk(u,{rejectOnEmpty:true});return await p.destroy(),{id:u,parentType:"section",parentId:p.section_id}}}function _n(e){let{dimension:t,search:r}=e;return {createDimension:o,readDimension:n,updateDimension:a,deleteDimension:s};async function o(i){return (await t.create({name:i.name,report_id:i.report_id,ordering:i.ordering||0,variants:[]},{include:Qt(r).include})).toJSON()}async function n({id:i,include:c}={}){let l=i==null?[]:[].concat(i),u=await t.findAll({where:l.length>0?{id:l}:void 0,include:c?Qt(r).include:void 0});if(l.length===0||u.length===l.length)return u.map(m=>m.toJSON());let p=u.map(m=>m.id),d=l.filter(m=>!p.includes(m));throw new T(404,`Dimension(id=[${d}]) does not exist.`)}async function a(i){let{id:c,variants:l,...u}=i,p=await t.findByPk(c,{include:Qt(r).include,rejectOnEmpty:false});if(!p)throw new T(404,`Dimension(id=${c}) does not exist.`);return p.set(u),await p.save(),p.toJSON()}async function s(i){let c=await t.findByPk(i,{rejectOnEmpty:false});return await c.destroy(),{id:i,parentType:"report",parentId:c.report_id}}}function wn(e){let{formatter:t}=e;return {createFormatter:r,readFormatter:o,updateFormatter:n,deleteFormatter:a};async function r(s){return (await t.create(s)).toJSON()}async function o({id:s}={}){let i=s==null?[]:[].concat(s),c=await t.findAll({where:i.length>0?{id:i}:void 0});if(i.length===0||c.length===i.length)return c.map(p=>p.toJSON());let l=c.map(p=>p.id),u=i.filter(p=>!l.includes(p));throw new T(404,`Formatter(id=[${u}]) does not exist.`)}async function n(s){let{id:i,...c}=s,l=await t.findByPk(i,{rejectOnEmpty:true});return await l.update(c),l.toJSON()}async function a(s){return await(await t.findByPk(s,{rejectOnEmpty:true})).destroy(),{id:s}}}function xn(e){let{datasource:t}=e;return {createDatasource:r,readDatasource:o,updateDatasource:n,deleteDatasource:a};async function r(s){return (await t.create(s)).toJSON()}async function o({id:s,include:i}={}){try{let c=s==null?[]:[].concat(s),l=i===!0,u=await t.findAll({attributes:l?["id","name","description","content"]:["id","name","description",[literal("content - 'logic' - 'testUrl' - 'access'"),"content"]],where:c.length>0?{id:c}:void 0,order:[literal("(content->>'order')::integer ASC NULLS LAST")]});if(c.length===0||u.length===c.length)return u.map(m=>m.toJSON());let p=u.map(m=>m.id),d=c.filter(m=>!p.includes(m));throw new T(404,`Datasource(id=[${d}]) does not exist.`)}catch(c){throw new T(500,c)}}async function n(s){let{id:i,...c}=s,l=await t.findByPk(i,{rejectOnEmpty:true});return await l.update(c),l.toJSON()}async function a(s){return await(await t.findByPk(s,{rejectOnEmpty:true})).destroy(),{id:s}}}var{locales:Ac}=G();function Pn(e){let{report:t,search:r}=e;return {createReport:o,readReport:n,updateReport:a,deleteReport:s};async function o(i){return (await t.create({name:i.name,sections:[],dimensions:[]},{include:Pr(r).include})).toJSON()}async function n({id:i,include:c,locales:l=Ac}={}){let p=(i==null?[]:[].concat(i)).reduce((R,h)=>(R.includes(h)||R.push(h),R),[]),d=await t.findAll({where:p.length>0?{id:p}:void 0,include:c?Pr(r).include?.filter(R=>typeof c=="string"?R.association===c:c):void 0});if(p.length===0||d.length===p.length)return d.map(R=>{let h=R.toJSON();return {...h,sections:h.sections.map(S=>({...S,blocks:S.blocks.map(x=>({...x,contentByLocale:Object.keys(x.contentByLocale).reduce((P,U)=>({...P,...[...l,"logic"].includes(U)?{[U]:x.contentByLocale[U]}:{}}),{})}))}))}});let m=d.map(R=>R.id),f=p.filter(R=>!m.includes(R));throw new T(404,`Report(id=${f}) does not exist.`)}async function a(i){let{id:c,dimensions:l,sections:u,...p}=i,d=await t.findByPk(c,{include:Pr(r).include,rejectOnEmpty:false});if(!d)throw new T(404,`Report(id=${c}) does not exist.`);return d.set(p),await d.save(),await d.reload(),d.toJSON()}async function s(i){return await(await t.findByPk(i,{rejectOnEmpty:false})).destroy(),{id:i}}}function vn(e){let{section:t}=e;return {createSection:r,readSection:o,updateSection:n,deleteSection:a};async function r(s){return (await t.create({ordering:s.ordering,report_id:s.report_id,blocks:[]},{include:Zt.include})).toJSON()}async function o({id:s,include:i}={}){let c=s==null?[]:[].concat(s),l=await t.findAll({where:c.length>0?{id:c}:void 0,include:i?Zt.include:void 0});if(c.length===0||l.length===c.length)return l.map(d=>d.toJSON());let u=l.map(d=>d.id),p=c.filter(d=>!u.includes(d));throw new T(404,`Section(id=${p}) does not exist.`)}async function n(s){let{id:i,blocks:c,...l}=s,u=await t.findByPk(i,{include:Zt.include,rejectOnEmpty:false});return u.set(l),await u.save(),await u.reload(),u.toJSON()}async function a(s){let i=await t.findByPk(s,{rejectOnEmpty:true});return await i.destroy(),{id:s,parentType:"report",parentId:i.report_id}}}function Ln(e,t){let{variant:r,search:o}=e;return {createVariant:n,readVariant:a,updateVariant:s,deleteVariant:i,validateVariantSlug:c};async function n(l){let{dimension_id:u,name:p,slug:d}=l,m=await c({dimension:u,slug:d});return (await r.create({dimension_id:u,name:p,slug:m.valid?m.candidate:m.suggestion})).toJSON()}async function a({id:l}={}){let u=l==null?[]:[].concat(l),p=await r.findAll({where:u.length>0?{id:u}:void 0,attributes:{include:[[fn("COUNT",col("members.id")),"members_count"]]},include:[{model:o,attributes:[],as:"members"}],group:["variant.id"]});if(u.length===0||p.length===u.length)return p.map(f=>f.toJSON());let d=p.map(f=>f.id),m=u.filter(f=>!d.includes(f));throw new T(404,`Variant(id=${m}) does not exist.`)}async function s(l){let{id:u,...p}=l,d=await r.findByPk(u,{include:[{association:"dimension"}],rejectOnEmpty:true});p.settings=Yt(p.settings);let m=p.settings.doIngest;return p.settings.doIngest=false,await d.update(p),m&&(await t.ingestMembers(d),await nt(e,true)),await d.reload(),d.toJSON()}async function i(l){let u=await r.findByPk(l,{rejectOnEmpty:true});return await u.destroy(),nt(e,true),{id:l,parentType:"dimension",parentId:u.dimension_id}}async function c({dimension:l,slug:u}){let p=await r.findAll({attributes:["slug",[fn("COUNT",col("id")),"slugCount"]],where:{dimension_id:{[Op.ne]:l}},group:"slug"}).then(R=>Object.fromEntries(R.map(h=>{let S=h.getDataValue("slugCount");return [h.slug,Number.parseInt(`${S}`,10)]}))),d=u,m=1,f=true;for(;p[d];)f=false,d=`${u}-${m}`,m++;return {candidate:u,dimension_id:l,suggestion:d,valid:f}}}function Bn(e,t){let r={...Tn(e),..._n(e),...wn(e),...xn(e),...An(e,t),...Pn(e),...vn(e)},o={...r,...Ln(e,r)};return {createFormatter:I(o.createFormatter),deleteFormatter:I(o.deleteFormatter),readFormatter:I(o.readFormatter),updateFormatter:I(o.updateFormatter),createReport:I(o.createReport),deleteReport:I(o.deleteReport),readReport:I(o.readReport),updateReport:I(o.updateReport),createDimension:I(o.createDimension),deleteDimension:I(o.deleteDimension),readDimension:I(o.readDimension),updateDimension:I(o.updateDimension),createVariant:I(o.createVariant),readVariant:I(o.readVariant),updateVariant:I(o.updateVariant),deleteVariant:I(o.deleteVariant),validateVariantSlug:I(o.validateVariantSlug),createSection:I(o.createSection),readSection:I(o.readSection),updateSection:I(o.updateSection),deleteSection:I(o.deleteSection),createBlock:I(o.createBlock),deleteBlock:I(o.deleteBlock),readBlock:I(o.readBlock),updateBlock:I(o.updateBlock),createBulkBlock:I(o.createBulkBlock),updateBulkBlock:I(o.updateBulkBlock),readMember:I(o.readMember),searchMember:I(o.searchMember),updateMember:I(o.updateMember),readMemberImage:I(o.readMemberImage),createDatasource:I(o.createDatasource),deleteDatasource:I(o.deleteDatasource),readDatasource:I(o.readDatasource),updateDatasource:I(o.updateDatasource)}}if(typeof window<"u")throw new Error("uploadImage.ts can only be imported on the server side");var Mn=e=>{throw console.error("/methods/helpers/uploadImage.ts:",e),new Error(e.message)},_c=Number(process.env.NEXT_PUBLIC_IMAGE_SPLASH_WIDTH)||1400,wc=Number(process.env.NEXT_PUBLIC_IMAGE_THUMB_WIDTH)||400,kc=async(e,t,r)=>{let o=[{type:"splash",res:_c},{type:"thumb",res:wc}],n=(await import('sharp')).default;for(let a of o){let s=await n(r).resize(a.res).toFormat("webp").webp({lossless:true}).toBuffer().catch(Mn);await e.image.update({[a.type]:s},{where:{id:t}}).catch(Mn);}},Ee=kc;var On="SECTION_ALLOWED";var Nn=["4","5","7","8","9","10"],vc=Nn.join(),{locales:Ic}=G(),Me;if(process.env.FLICKR_API_KEY)try{Me=new Pc(process.env.FLICKR_API_KEY);}catch(e){throw console.error("Flickr ERROR:",e),new Error(e.message)}async function Dn(e,t){try{let r={prompt:t.prompt||"",page:t.page||1};if(!Me)throw console.warn("Flickr is not initialized. Check the credentials"),new Error("Flickr is not initialized. Check the credentials");let o=r.prompt,a=(await Me.photos.search({text:o,license:vc,sort:"relevance",per_page:24,page:r.page,content_types:"0",orientation:"landscape"}).then(l=>l.body)).photos.photo,s=a.reduce((l,u)=>l.concat(Me.photos.getSizes({photo_id:u.id})),[]),c=(await Promise.all(s).then(l=>l)).reduce((l,u,p)=>{let d=u.body.sizes.size.find(m=>m.label==="Small 320");return d&&l.push({id:a[p].id,source:d.source}),l},[]);return {meta:{prompt:$(r.prompt),page:$(`${r.page}`)},results:c}}catch(r){throw console.error(r),new Error("Error in search flickr provider")}}async function Un(e,t){try{let{content_id:r,image_id:o}=t,n={content_id:$(`${r}`)||"",id:$(`${o}`)||""},s=`https://flic.kr/p/${xc.int_to_base58(o)}`;if(!Me)throw new Error("Flickr API Key not configured");let i=await Me.photos.getInfo({photo_id:o}).then(l=>l.body),c;if(i)if(Nn.includes(i.photo.license)){let l=await e.search.findOne({where:{content_id:r}}),u=await e.image.findOne({where:{url:s}});if(l){if(u)await e.search.update({image_id:u.id},{where:{content_id:r}});else {let d=await Me.photos.getSizes({photo_id:o}).then(A=>A.body),m=d.sizes.size.find(A=>parseInt(A.width,10)>=1600);if(m||(m=d.sizes.size.find(A=>parseInt(A.width,10)>=1e3)),m||(m=d.sizes.size.find(A=>parseInt(A.width,10)>=500)),!m||!m.source)throw new Error("Flickr Source Error, try another image.");let f=await fetch(m.source);if(!f.ok)throw new Error("Flickr Error retrieving image, try another image.");let R=await f.arrayBuffer(),S=(await Me.photos.licenses.getInfo().then(A=>A.body.licenses.license)).find(A=>A.id===parseInt(i.photo.license,10)),x={url:s,author:i.photo.owner.realname||i.photo.owner.username,license:S?`${S.name}: ${S.url}`:""},P=await e.image.create(x);await e.image_content.destroy({where:{id:P.id}});let U=Ic.map(A=>({id:P.id,locale:A,meta:i.photo.title._content}));await e.image_content.bulkCreate(U),await e.search.update({image_id:P.id},{where:{content_id:r}}),await Ee(e,P.id,R);}let p=await e.search.findOne({where:{content_id:r},include:ge});p&&p.image&&(p.image.thumb=!!p.image.thumb);}else throw new Error("Error updating Search")}else throw new Error("Bad License");else throw new Error("Malformed URL");return {meta:{...n},results:c}}catch(r){throw console.error(r),new Error("Error in save flickr provider")}}function O(e,t,r,o){return {method:e,path:t,handler:r,roleRequired:o}}function te(e){let t=Number.parseInt(`${e||""}`,10);if(Number.isNaN(t)||!Number.isFinite(t))throw new T(400,`Invalid numeric parameter: ${e}`);return t}function q(e){return e==null||e===""?[]:Array.isArray(e)?e:e.toString().split(",")}var{localeDefault:Ne}=G();function Fn(e){let{readMember:t,searchMember:r,updateMember:o,readMemberImage:n}=e;return [O("GET","read/members",async a=>{let s=Cc(a.query),i=s[s.mode]||[],c=s.mode==="whole";if(!c&&i.length===0)throw new T(400,`The request is missing the '${s.mode}' parameter.`);if(!c&&i.length>20&&!s.variant)throw new T(400,`You can look for up to 20 '${s.mode}' in a single request.`);return t(s)}),O("GET","search/members",a=>{let s=er(a.query);return r(s)}),O("POST","update/member",a=>{let{body:s}=a;return o(s)},[z.EDITOR]),O("GET","member/image",a=>{let s=q(a.query.size)[0];return n({member:te(a.query.member),size:s&&s==="splash"?"splash":"thumb"})})]}function Cc(e){let t=q(e.locale)[0]||Ne,r=t==="all"||Xt(e.all),o=q(e.mode)[0],a=(q(e.output)[0]||"full")==="lite"?"lite":"full",s=parseInt(q(e.related)[0],10)||5,i=Xt(e.allowNulls,{default:false}),c=q(e.variant).map(te);if(c.length===0&&(c=q(e["variant[]"]).map(te)),o==="ids")return {all:r,mode:o,variant:c,output:a,locale:r?Ne:$(t),ids:q(e.ids||e["ids[]"]),allowNulls:i};if(o==="content_ids")return {all:r,mode:o,variant:c,output:a,locale:r?Ne:$(t),content_ids:q(e.content_ids||e["content_ids[]"]).map(te),allowNulls:false};if(o==="slugs")return {all:r,mode:o,variant:c,output:a,locale:r?Ne:$(t),slugs:q(e.slugs||e["slugs[]"]).map(l=>{let[u,p]=l.split("/");return {variantSlug:u,memberSlug:p}}),allowNulls:false};if(o==="related")return {all:r,mode:o,locale:r?Ne:$(t),related:s,current_ids:q(e.current_ids||e["current_ids[]"]).map(te),include_ids:q(e.include_ids||e["include_ids[]"]).map(te),report_ids:q(e.report_ids||e["report_ids[]"]).map(te),dimension_ids:q(e.dimension_ids||e["dimension_ids[]"]).map(te),variant_ids:q(e.variant_ids||e["variant_ids[]"]).map(te),output:a,allowNulls:false};if(o==="whole")return {all:r,mode:o,variant:c,locale:r?Ne:$(t),output:a,allowNulls:i};throw new T(400,`Invalid mode: '${o}'`)}function er(e){let t=q(e.locale)[0]||Ne||"en",r=t==="all",o=q(e.format)[0],n=o?o==="nested":r,a=q(e.variant).map(te);a.length===0&&(a=q(e["variant[]"]).map(te));let s=q(e.dimension).map(te);s.length===0&&(s=q(e["dimension[]"]).map(te));let i=q(e.report).map(te);i.length===0&&(i=q(e["report[]"]).map(te));let c=e.origin==="typesense"?"typesense":"flexsearch";return {query:q(e.query||e.q)[0]||"",locale:r?Ne:t,preferredLocale:q(e.preferredLocale)[0],limit:q(e.limit).map(te)[0]??5,format:n?"nested":"plain",includes:Xt(e.includes,{default:true}),visible:Xt(e.visible,{default:true}),noImage:Xt(e.noImage,{default:false}),variant:a,dimension:s,report:i,all:r,sort:q(e.sort)[0],direction:q(e.direction)[0],offset:Number(e.offset||0),origin:c}}async function Vn(e,t,r){let o=Bt(e,r),n=er({query:t.prompt,limit:"50",visible:"false"}),s=(await o(n)).results.filter(i=>i.image_id).map(i=>({id:i.image_id,source:`/api/cms/member/image?member=${i.content_id}&size=thumb`}));return {meta:{prompt:$(n.query)},results:s}}async function $n(e,t){let{search:r}=e,{content_id:o,image_id:n}=t;await r.update({image_id:n},{where:{content_id:o}});let a=await r.findOne({where:{content_id:o},include:ge}).then(s=>s?{...s.toJSON(),image:{...s.image.toJSON(),thumb:!!s.image.thumb}}:null);return {meta:{id:n,content_id:o},results:a}}if(typeof window<"u")throw new Error("unsplash.ts can only be imported on the server side");var{locales:Mc}=G(),tr;if(process.env.UNSPLASH_API_KEY)try{tr=createApi({accessKey:process.env.UNSPLASH_API_KEY});}catch(e){throw console.error("Unsplash error:",e),new Error(e.message)}async function zn(e,t){try{let r={prompt:t.prompt||"",page:t.page||1};if(!tr)throw new Error("Unsplash API Key not configured");let o=r.prompt,a=(await tr.search.getPhotos({query:o,perPage:24,page:r.page,orientation:"landscape"}).then(s=>s.response.results)).map(s=>({id:s.id,source:s.urls.thumb}));return {meta:{prompt:$(r.prompt),page:$(`${r.page}`)},results:a}}catch(r){throw console.error(r),new Error("Error in search unsplash provider")}}async function qn(e,t){try{let{content_id:r,image_id:o}=t,n={content_id:$(`${r}`)||"",id:$(`${o}`)||""};if(!tr)throw console.warn("Unsplash is not initialized. Check the credentials"),new Error("Unsplash is not initialized. Check the credentials");let a=await tr.photos.get({photoId:o}).then(i=>i.response),s;if(a){let i=await e.search.findOne({where:{content_id:r}}),c=a.links.html,l=await e.image.findOne({where:{url:c}});if(i){if(l)await e.search.update({image_id:l.id},{where:{content_id:r}});else {let p=await Or.get(a.urls.full,{responseType:"arraybuffer"}).then(R=>R.data),d={url:c,author:a.user.name||a.user.username,license:"Free Unsplash license: https://unsplash.com/license"},m=await e.image.create(d);await e.image_content.destroy({where:{id:m.id}});let f=Mc.map(R=>({id:m.id,locale:R,meta:a.description||a.alt_description}));await e.image_content.bulkCreate(f),await e.search.update({image_id:m.id},{where:{content_id:r}}),await Ee(e,m.id,p);}let u=await e.search.findOne({where:{content_id:r},include:ge});u&&u.image&&(u.image.thumb=!!u.image.thumb);}else throw new Error("Error updating Search")}else throw new Error("Malformed URL");return {meta:{...n},results:s}}catch(r){throw console.error(r),new Error("Error in save unsplash provider")}}if(typeof window<"u")throw new Error("upload.ts can only be imported on the server side");var{locales:Nc}=G();async function Gn(e,t){try{let{content_id:r,image_source:o,files:n}=t,a={content_id:$(`${r}`)||""};if(await e.search.findOne({where:{content_id:r}})&&n){let c=await Oc.readFileSync(n.file.filepath),l={url:o,author:"",license:""},u=await e.image.create(l);await e.image_content.destroy({where:{id:u.id}});let p=Nc.map(d=>({id:u.id,locale:d,meta:""}));await e.image_content.bulkCreate(p),await e.search.update({image_id:u.id},{where:{content_id:r}}),await Ee(e,u.id,c);}let i=await e.search.findOne({where:{content_id:r},include:ge});return i&&i.image&&(i.image.thumb=!!i.image.thumb),{meta:{...a},results:i}}catch(r){throw console.error(r),new Error("Error in save upload provider")}}if(typeof window<"u")throw new Error("adobe.ts can only be imported on the server side");var{locales:Dc}=G();var Kn=async e=>{let t={"x-api-key":process.env.ADOBE_STOCK_API_KEY||"EMPTY_ADOBE_KEY","X-Product":"BespokeApp/0.1"};return t};var rr;if(process.env.ADOBE_STOCK_API_KEY)try{rr={search:async(e,t)=>await Or.get("https://stock.adobe.io/Rest/Media/1/Search/Files",{headers:await Kn(!1),params:{locale:"en_US","search_parameters[limit]":24,"search_parameters[offset]":t*24,"search_parameters[words]":e,"search_parameters[filters][content_type:photo]":"1","search_parameters[filters][content_type:image]":"1","search_parameters[filters][orientation]":"horizontal",result_columns:["id","stock_id","thumbnail_url","is_licensed"]}}).then(r=>r.data.files),get:async e=>await Or.get("https://stock.adobe.io/Rest/Media/1/Files",{headers:await Kn(!1),params:{locale:"en_US",ids:e,result_columns:["id","thumbnail_url","creator_name","title","thumbnail_1000_url","details_url","category"]}}).then(t=>t.data.files[0])};}catch{}async function Hn(e,t){try{let r={prompt:t.prompt||"",page:t.page||1};if(!rr)throw new Error("Adobe API Key not configured");let n=(await rr.search(r.prompt,r.page)).map(a=>({id:a.id,source:a.thumbnail_url}));return {meta:{prompt:$(r.prompt),page:$(`${r.page}`)},results:n}}catch(r){throw console.error(r),new Error("Error in search Adobe provider")}}async function jn(e,t){try{let{content_id:r,image_id:o}=t,n={content_id:$(`${r}`)||"",id:$(`${o}`)||""};if(!rr)throw console.warn("Adobe is not initialized. Check the credentials"),new Error("Adobe is not initialized. Check the credentials");let a=await rr.get(o),s;if(a){let i=await e.search.findOne({where:{content_id:r}}),c=a.details_url,l=await e.image.findOne({where:{url:c}});if(i){if(l)await e.search.update({image_id:l.id},{where:{content_id:r}});else {let p=await Or.get(a.thumbnail_1000_url,{responseType:"arraybuffer"}).then(R=>R.data),d={url:c,author:a.creator_name,license:"ADOBE, TO-DO"},m=await e.image.create(d);await e.image_content.destroy({where:{id:m.id}});let f=Dc.map(R=>({id:m.id,locale:R,meta:a.title||a.description}));await e.image_content.bulkCreate(f),await e.search.update({image_id:m.id},{where:{content_id:r}}),await Ee(e,m.id,p);}let u=await e.search.findOne({where:{content_id:r},include:ge});u&&u.image&&(u.image.thumb=!!u.image.thumb);}else throw new Error("Error updating Search")}else throw new Error("Malformed URL");return {meta:{...n},results:s}}catch(r){throw console.error(r),new Error("Error in save adobe provider")}}var{locales:Uc}=G(),vr=process.env.PIXABAY_API_KEY,Wn="https://pixabay.com/api/";async function Yn(e,t){try{let r={prompt:t.prompt||"",page:t.page||1};if(!vr)throw new Error("Pixabay API Key not configured");let o=encodeURIComponent(r.prompt),n=`${Wn}?key=${vr}&q=${o}&per_page=${24}&page=${r.page}&image_type=photo&orientation=horizontal&safesearch=true`,i=(await Or.get(n)).data.hits?.map(c=>({id:c.id,source:c.previewURL||c.webformatURL}))||[];return {meta:{prompt:$(r.prompt),page:$(`${r.page}`)},results:i}}catch(r){throw console.error(r),new Error("Error in search pixabay provider")}}async function Jn(e,t){try{let{content_id:r,image_id:o}=t,n={content_id:$(`${r}`)||"",id:$(`${o}`)||""};if(!vr)throw console.warn("Pixabay is not initialized. Check the credentials"),new Error("Pixabay is not initialized. Check the credentials");let a=`${Wn}?key=${vr}&id=${o}`,i=(await Or.get(a)).data,c;if(i.hits&&i.hits.length>0){let l=i.hits[0],u=await e.search.findOne({where:{content_id:r}}),p=l.pageURL,d=await e.image.findOne({where:{url:p}});if(u){if(d)await e.search.update({image_id:d.id},{where:{content_id:r}});else {let f=l.largeImageURL||l.webformatURL||l.imageURL;if(!f)throw new Error("Pixabay image URL not available");let R=await Or.get(f,{responseType:"arraybuffer"}).then(P=>P.data),h={url:p,author:l.user||`Pixabay User ${l.user_id}`,license:"Free Pixabay License: https://pixabay.com/service/license/"},S=await e.image.create(h);await e.image_content.destroy({where:{id:S.id}});let x=Uc.map(P=>({id:S.id,locale:P,meta:l.tags||l.description||""}));await e.image_content.bulkCreate(x),await e.search.update({image_id:S.id},{where:{content_id:r}}),await Ee(e,S.id,R);}let m=await e.search.findOne({where:{content_id:r},include:ge});m&&m.image&&(m.image.thumb=!!m.image.thumb);}else throw new Error("Error updating Search")}else throw new Error("Image not found in Pixabay");return {meta:{...n},results:c}}catch(r){throw console.error(r),new Error("Error in save pixabay provider")}}if(typeof window<"u")throw new Error("imageSave.ts can only be imported on the server side");var Fc={local:$n,flickr:Un,unsplash:qn,upload:Gn,adobe:jn,pixabay:Jn};function st(e,t){let r=Fc[t];if(!r)throw new T(500,`Wrong provider dbImageSaveFactory.ts: ${t}`);return I(o=>r(e,o))}if(typeof window<"u")throw new Error("imageSearch.ts can only be imported on the server side");var Vc={local:Vn,flickr:Dn,unsplash:zn,adobe:Hn,pixabay:Yn};function Mt(e,t,r){let o=Vc[t];if(!o)throw new T(500,`Wrong provider dbImageSearchFactory.ts: ${t}`);return I(n=>o(e,n,r))}var jc=e=>(e.dimensions&&e.dimensions.forEach(t=>{t.variants&&t.variants.forEach(r=>{r.members_count&&(r.members_count=parseInt(r.members_count,10));});}),e);function Cr(e){let{report:t,search:r}=e;return o;async function o(n){let a=n?.report_id?Number(n.report_id):void 0,s=!(typeof n?.count<"u"&&(n.count==="false"||n.count===false)),i={attributes:["id","name",[literal("COALESCE(NULLIF(settings ->> 'order', '')::INTEGER, 0)"),"ordering"],[literal("COALESCE(NULLIF(settings ->> 'hide', '')::BOOL, false)"),"hide"]],where:{[Op.or]:[where(cast(json("settings.hide"),"boolean"),false),literal("NOT (settings::jsonb ? 'hide')")]},order:[["ordering","ASC"]],include:[{attributes:["id","name","ordering"],association:"dimensions",separate:true,order:[["ordering","ASC"]],include:[{attributes:["id","name","slug",[literal("COALESCE(NULLIF(settings ->> 'order', '')::INTEGER, 0)"),"ordering"]],association:"variants",separate:true,group:["variant.id"],order:[["ordering","ASC"],["id","ASC"]]}]}]};return a&&(i.where={...i.where,id:a}),s&&i.include&&i.include[0]&&(i.include[0].include[0].attributes.push([fn("COUNT",col("members.id")),"members_count"]),i.include[0].include[0].include=[{model:r,attributes:[],as:"members",where:{visible:true}}]),{data:(await t.findAll(i)).map(l=>({...jc(l.toJSON()),mode:l.dimensions.length===1?Ie.UNILATERAL:Ie.MULTILATERAL}))}}}function Qn(e){return async()=>(await nt(e,true),{error:false})}var{locales:Wc,localeDefault:Yc}=G(),Jc=(e,t,r,o,n)=>{if(!e)return [];let a=[];t.forEach(i=>{let c=e.filter(l=>l.metadata.report.id===i.id);if(c.length>0)if(i.mode===Ie.UNILATERAL){let l=i.dimensions[0];l.variants.forEach(u=>{let p=c.filter(d=>d.metadata.dimension.id===l.id&&d.metadata.variant.id===u.id);p.length>0&&(a=a.concat(p.map(d=>({path:`/${u.slug}/${d.slug}`,name:d.name,zvalue:d.zvalue,rank:d.rank,report:{id:i.id,name:i.name,mode:i.mode},members:[d],id:`r-${i.id}-${[d].map(m=>`${m.id}`).join("-")}`}))));});}else i.mode;});let s=n?.toUpperCase()==="ASC"?1:-1;if(r==="name")return a.sort((i,c)=>i.name.localeCompare(c.name)*(s*-1));if(r==="zvalue")return a.sort((i,c)=>((i.zvalue||0)-(c.zvalue||0))*s);if(r==="rank")return a.sort((i,c)=>{let l=i.rank??Number.MAX_SAFE_INTEGER,u=c.rank??Number.MAX_SAFE_INTEGER;return (l-u)*s});if(r?.startsWith("attr.")){let i=r.replace("attr.","");return /^[a-zA-Z0-9_-]+$/.test(i)?a.sort((c,l)=>{let u=parseFloat(c.members?.[0]?.metadata?.attributes?.[i])||c.zvalue||0,p=parseFloat(l.members?.[0]?.metadata?.attributes?.[i])||l.zvalue||0;return (u-p)*s}):a}return o?a.sort((i,c)=>{let l=i.zvalue||0,u=o.toLowerCase(),p=i.name.toLowerCase();p===u?l+=1e3:p.startsWith(u)&&(l+=100);let d=c.zvalue||0,m=c.name.toLowerCase();return m===u?d+=1e3:m.startsWith(u)&&(d+=100),d-l}):a},Qc=(e,t)=>{if(!e)return [];let r,o,n;return e.map(a=>(r={...t.find(s=>s.id===a.report_id)},o={...r.dimensions.find(s=>s.id===a.dimension_id)},n={...o.variants.find(s=>s.id===a.variant_id)},delete r.dimensions,delete o.variants,{name:a.name,zvalue:a.zvalue,rank:a.rank,metadata:{id:a.id,slug:a.slug,report:r,dimension:o,variant:n,attributes:a.contentByLocale?.[0]?.attributes||{}},id:a.content_id,slug:a.slug}))};function Zn(e,t){let r=Bt(e,t),o=Cr(e);return n;async function n(a){let s=a.format||"results",i=Wc.includes(a.locale)?a.locale:Yc,c=a.origin||"flexsearch",l=process.env.REPORTS_EXTERNAL_SEARCH&&c==="typesense",u=await r({...a,format:"plain",locale:$(i),visible:true,excludeMultilateral:true});if(l)return u;{let p=u.results?u.results:[],m=(await o()).data,f=Qc(p,m);return {meta:{...u.meta,origin:"flexsearch",format:s},results:Jc(f,m,a.sort,a.query,a.direction)}}}}function Xn(e){return async t=>{try{let{variantPaths:r}=t,o=[];if(r)for(let n=0;n<r.length;n++){let a=r[n];(await e.search.findAll({attributes:["slug"],where:{variant_id:a.variantId}})).forEach(i=>{o.push(`/${a.prefix}/${a.variantSlug}/${i.slug}`);});}return {...t,paths:o,revalidated:0,samples:[]}}catch(r){throw new T(r.response?.status||500,r.message)}}}function ea(){return async e=>{try{let{target:t}=e;return {target:t}}catch(t){throw new T(t.response?.status||500,t.message)}}}function he(e,t){let r=[],o=a=>Object.values(t).reduce((i,c)=>("inputs"in c&&c.inputs.includes(a)&&(i.push(c.id),i=i.concat(o(c.id))),i),[]);e.forEach(a=>{r=r.concat(o(a));});let n=[];return r.forEach(a=>{n.includes(a)||n.push(a);}),n}function Xc(e,t){return e.some(r=>t.includes(`role.${r}`))}function ta(e){let{report:t}=e;return r;async function r(o){let n=await t.findByPk(o.report_id,{include:{association:"sections",separate:true,where:{id:o.section_id},include:[{association:"blocks",separate:true,include:[{association:"contentByLocale",separate:true,where:{locale:{[Op.or]:[o.locale,"logic"]}}},{association:"inputs"},{association:"consumers"}]}]}}).then(s=>s&&s.sections&&Array.isArray(s.sections)?s.sections.reduce((i,c)=>{let l=c.blocks.map(u=>{let p=u.toJSON();return p.inputs=p.inputs.map(d=>d.id),p.consumers=p.consumers.map(d=>d.id),p});return i.concat(l)},[]):[]),a=n.filter(s=>s.settings&&s.settings.access&&Array.isArray(s.settings.access)&&Array.isArray(o.roles)&&(s.settings.access.includes("private")||Xc(o.roles,s.settings.access))).map(s=>s.id);return a=a.concat(he(a,n)),{params:{...o},data:n.filter(s=>a.includes(s.id))}}}var rl=Object.keys(ho).filter(e=>e.indexOf("Icon")===0);async function ra(){return {meta:{provider:"tabler"},results:rl}}async function oa(e){let t=ho[e.name]?ho[e.name]:()=>"";return renderToString(createElement(t))}var ol={tabler:ra};function na(e){let t=ol[e];if(!t)throw new T(500,`Wrong provider dbListIconsFactory.ts: ${e}`);return I(()=>t())}var nl={tabler:oa};function aa(e){return I(t=>{let r=nl[e];if(!r)throw new T(500,`Wrong provider dbReadIconFactory.ts: ${t.provider}`);return r({name:t.name,provider:e})})}function sa(){return e;async function e(){return {secrets:vt()}}}function it(e,t,r){return rt().then(o=>{Object.assign(r,Ot(o));})}function Ot(e,t,r){let o={},n=Ke(t||{providers:[]});return t&&n.actions&&n.source==="custom"?(o.searchRole=I(n.actions.searchRole()),o.searchUser=I(n.actions.searchUser()),o.readUser=I(n.actions.readUser()),o.updateUser=I(n.actions.updateUser())):n.source==="auth0"&&(o.searchRole=I(Do()),o.searchUser=I(Uo()),o.readUser=I(Fo()),o.updateUser=I(Vo())),{...Bn(e),searchReport:I(Zn(e,r)),readMetadata:I(Cr(e)),regenerateSearch:I(Qn(e)),imageFlickrSearch:Mt(e,"flickr",r),imageLocalSearch:Mt(e,"local",r),imageUnsplashSearch:Mt(e,"unsplash",r),imageAdobeSearch:Mt(e,"adobe",r),imagePixabaySearch:Mt(e,"pixabay",r),imageFlickrSave:st(e,"flickr"),imageLocalSave:st(e,"local"),imageUnsplashSave:st(e,"unsplash"),imageUploadSave:st(e,"upload"),imageAdobeSave:st(e,"adobe"),imagePixabaySave:st(e,"pixabay"),urlProxy:kr(e),searchRole:o.searchRole,searchUser:o.searchUser,readUser:o.readUser,updateUser:o.updateUser,updateMyData:I($o()),revalidateReport:I(Xn(e)),revalidateUrl:I(ea()),readPrivateBlocks:I(ta(e)),listTablerIcons:na("tabler"),readTablerIcon:aa("tabler"),readEnvSecrets:I(sa())}}async function Ro(e){try{let t=new al.IncomingForm,r=await new Promise((o,n)=>{t.parse(e,(a,s,i)=>{if(a){console.error("Error in formidable parse function inside internal parseBody.ts",a),n(a);return}o({fields:s,files:i});});});return {...r.fields,files:r.files}}catch(t){return {error:t}}}function De(e,t){let r=le(e,"create",t),o=le(e,"read",t),n=le(e,"update",t),a=le(e,"delete",t),s=le(e,"updateBulk",t),i=le(e,"createBulk",t);return [O("POST",`create/bulk/${t}`,c=>{let{body:l}=c,{files:u,...p}=l,d=Object.keys(p).map(m=>p[m]);return i(d)},[z.EDITOR]),O("POST",`create/${t}`,c=>{let{body:l}=c;return r(l)},[z.EDITOR]),O("GET",`read/${t}`,c=>{let l=c.query,u=q(l.id).map(te);return o({id:u,include:Xt(l.include)})}),O("POST",`update/${t}`,c=>{let{body:l}=c;return n(l)},[z.EDITOR]),O("POST",`update/bulk/${t}`,c=>{let{body:l}=c,{files:u,...p}=l,d=Object.keys(p).map(m=>p[m]);return s(d)},[z.EDITOR]),O("DELETE",`delete/${t}`,c=>{let l=te(c.query.id);return a(l)},[z.EDITOR])]}function ia(e){let{validateVariantSlug:t}=e;return [...De(e,"variant"),O("GET","validate/variant",r=>{let o=r.query,n=te(o.dimension);return t({dimension:n,slug:Tr(o.slug)})},[z.EDITOR])]}function ca(e){return De(e,"datasource").map(r=>({...r,roleRequired:[z.EDITOR]}))}function ct(e,t){let r=`image${Se(t)}Save`,o=e[r];return O("POST",`images/save/${t}`,n=>{let a=n.body;if(!a.content_id)throw new T(400,"Missing 'content_id' parameter.");if(!a.image_id)throw new T(400,"Missing 'image_id' parameter.");return o(a)},[z.EDITOR])}function Nt(e,t){let r=`image${Se(t)}Search`,o=e[r];return O("GET",`images/search/${t}`,async n=>{let a=q(n.query.prompt)[0];if(!a)throw new T(400,"Empty 'prompt' param.");return o({prompt:a,page:te(n.query.page)})},[z.EDITOR])}function la(e){let{readMetadata:t}=e;return O("GET","read/metadata",r=>t(r.query))}function ua(e){let{regenerateSearch:t}=e;return O("POST","search/regenerate",()=>t(void 0),[z.EDITOR])}function pa(e){let{searchReport:t}=e;return O("GET","search/reports",r=>{let o=il(r.query);return t(o)})}function il(e){return {...er(e),format:q(e.format)[0]}}function da(e){let{urlProxy:t}=e;return O("GET","url/proxy",(r,o,n)=>{let{url:a,method:s="GET",wrapper:i="true"}=r.query;if(!a)throw new T(400,"Missing URL parameter");let c=[];return n&&n.user&&n.user.bespoke_roles&&(c=n.user.bespoke_roles),t({url:Array.isArray(a)?a.join(","):a,method:q(s)[0]==="POST"?"POST":"GET",user_roles:c,wrapper:i!=="false",session:n})})}function ma(e){let{readMetadata:t,revalidateReport:r}=e;return O("GET","revalidate/report",async(o,n)=>{let{reportId:a,profilePrefix:s}=o.query;if(!a||!s)throw new T(400,"Missing URL parameter in revalidate factory: reportId or profilePrefix");try{let i=parseInt(`${a}`,10),c=`${s}`.split("/").filter(f=>f!=="").join("/"),l=[],u=await t({}).then(f=>f.ok?f.data.data.find(R=>R.id===i):[]);u&&u.mode===Ie.UNILATERAL&&u.dimensions.forEach(f=>{f.variants.forEach(R=>{l.push({prefix:c,variantId:R.id,variantSlug:R.slug});});});let p=await r({profilePrefix:c,reportId:i,variantPaths:l}),d=[],m=0;return p.ok&&(m=p.data.paths.length,d=p.data.paths.slice(0,5),Promise.all(p.data.paths.map(f=>{let R;try{R=n.revalidate(f,{unstable_onlyGenerated:!0});}catch(h){console.error("error",f,h);}return R}))),{ok:!0,status:200,data:{reportId:a,revalidated:m,samples:d}}}catch(i){throw console.error(i),new T(500,"Error revalidating")}},[z.EDITOR])}function fa(){return O("GET","revalidate/url",async(e,t)=>{let{target:r}=e.query;if(r)try{return t.revalidate(r,{unstable_onlyGenerated:!0}),{ok:!0,status:200,data:{target:r}}}catch(o){throw console.error(o),new T(500,"Error revalidating")}else throw new T(400,"Missing target parameter in revalidate factory")},[z.ADMIN,z.EDITOR,z.WRITER])}function lt(e=process.env){let t=e.BESPOKE_JWT_SECRET;return t||(console.warn("WARNING: Using default BESPOKE_JWT_SECRET. This is insecure and not recommended for production environments."),"BESPOKE_JWT_SECRET")}var{localeDefault:ll}=G(),ga=lt();function ya(e){let{readPrivateBlocks:t}=e;return O("POST","read/blocks/private",(r,o,n)=>{let{userToken:a}=r.body,s=null;if(a&&ga)try{let l=qi.verify(a,ga);s=typeof l=="object"&&l!==null&&"roles"in l?l.roles:[];}catch(l){console.error("Failed to verify user token:",l);}if(!s&&(!n||!n.user))throw new T(401,"Unauthorized. Must be logged in or provide a valid token.");let i=a&&s?s:n&&n.user?n.user.bespoke_roles:[],c={report_id:parseInt(r.body.report_id,10),locale:r.body.locale||ll,roles:i,section_id:r.body.section_id||[]};return t(c)})}function ha(e){let{readEnvSecrets:t}=e;return O("GET","read/secrets",()=>t({}),[z.EDITOR])}function Ra(e){let{searchRole:t}=e;return O("GET","auth/search/roles",(r,o)=>t(""),[z.EDITOR,z.ADMIN])}function ba(e){let{searchUser:t}=e;return O("GET","auth/search/users",r=>t({query:r.query.query,role_id:r.query.role_id,page:r.query.page||0}),[z.ADMIN])}function Sa(e){let{readUser:t}=e;return O("GET","auth/read/user",r=>t(r.query.user_id),[z.ADMIN])}function Ea(e){let{updateUser:t}=e;return O("POST","auth/update/user",async r=>{let o=r.body;return await t(o)},[z.ADMIN])}function Aa(e){let{updateUser:t,readUser:r}=e;return O("POST","auth/update/me",async(o,n,a)=>{let{report_id:s,user_metadata:i}=o.body,c={user_id:a.user.id,user_metadata:{}};try{let{user:l}=a;return a&&l&&s&&(l.bespoke_app_metadata&&l.bespoke_app_metadata.reports&&Array.isArray(l.bespoke_app_metadata.reports)?c.app_metadata={...l.bespoke_app_metadata}:c.app_metadata={reports:[]},c.app_metadata.reports.push({reportId:s})),i&&(c.user_metadata={...l.bespoke_app_metadata,...i}),await t(c),{ok:!0,status:200,wrapper:!0,data:{ok:!0,message:"User & session updated"}}}catch(l){return {ok:false,status:500,error:l.message}}},[])}async function ul(e){try{return "JVBERi0xLjcKJYGBgYEKCjYgMCBvYmoKPDwKL0ZpbHRlciAvRmxhdGVEZWNvZGUKL0xlbmd0aCAxMTYKPj4Kc3RyZWFtCnicHYqxCsJAEAX79xVbC+Lmbm/3DoKFeEcKG2F/QCSKYgol+P0mMkwxMG8cHEwrnzt2w/j6jvPjetkalyyZLReKTH5DEPITuv/aUWKKiz6hTywiGliTZWNtFkyWitr0qEWrWmBbq2ndkz/hG1THGT/eextGCmVuZHN0cmVhbQplbmRvYmoKCjcgMCBvYmoKPDwKL0ZpbHRlciAvRmxhdGVEZWNvZGUKL1R5cGUgL09ialN0bQovTiA1Ci9GaXJzdCAyNgovTGVuZ3RoIDM2Mgo+PgpzdHJlYW0KeJzVUt9LwzAQfs9fcY/6IEnTH2llDLa1VZChbIKi+JC1YVRGIm0m87/3ru0cexCfpXwkd/cl+a73BSBAQhRBCCqFCOJQQgwqCGAyYfzx68MAf9Bb0zF+19QdvCJHwAreGF+4vfUQsOmUnbgL7fXObdlwCAIiHxkPrav3lWlhUhZlKYQSQiQRIhFC5rguEBlCYow1meIeoaIRmFOhEOEMa+WARA1nqN5z4/F8gStyE+LkAzdKh/jnXXqrGO6Qf+nJpowvXZ1rb+Aiv5ZCRiKTsQyjTKYvl/g7WqO9+7/N9fobZ3/t8GzONF4acmvIA/2U+cp0bt9WOHbilQ4rtLk1u0/jm0pfKZGlqFOlGXpsNAZ/vt+8m6qnUlgc/M3ak4YhQbmlqRs9dwd0n8APOwDshDw4s9Z5cmXvR+tRDUXJ6NEzySSI8fV+4/uQkgHjc92ZXupJJ4qwlasbuwX+1NiZ7Zpjgm78BkHDxfcKZW5kc3RyZWFtCmVuZG9iagoKOCAwIG9iago8PAovU2l6ZSA5Ci9Sb290IDIgMCBSCi9JbmZvIDMgMCBSCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlCi9UeXBlIC9YUmVmCi9MZW5ndGggNDEKL1cgWyAxIDIgMiBdCi9JbmRleCBbIDAgOSBdCj4+CnN0cmVhbQp4nBXEwQ0AIAwDsUuKxJf9JUZippb4YaDbbEhKTpWWOCDezxcGYeEDtQplbmRzdHJlYW0KZW5kb2JqCgpzdGFydHhyZWYKNjY5CiUlRU9G"}catch(t){throw console.error("Error generating PDF:",t),t}}function Ta(){return O("POST","pdf",async(e,t)=>{let{slugs:r,path:o}=e.body;if(!r||!o)throw new T(400,"Missing path parameter in request.");{new URL(o,e.headers.origin);return {ok:true,status:200,data:await ul()}}})}function _a(e,t){let r=`list${Se(t)}Icons`,o=e[r];return O("GET",`list/icons/${t}`,async()=>o({}),[z.EDITOR])}function wa(e,t){let r=`read${Se(t)}Icon`,o=e[r];return O("GET",`read/icons/${t}/icon.svg`,async n=>o({provider:t,name:n.query.name}))}function ka(){return O("GET","report",async(e,t)=>{let{report:r,prefix:o,locale:n}=e.query;if(!r)throw new T(400,"Missing report parameter.");if(!o)throw new T(400,"Missing report parameter.");if(!n)throw new T(400,"Missing report parameter.");try{let s=await(await fetch(`${process.env.NEXT_PUBLIC_REPORTS_BASE_URL}/${n}${o}${r}`)).text(),l=new pl().parseFromString(s,"text/html").getElementById("__NEXT_DATA__")?.textContent,u=JSON.parse(l).props;return {ok:!0,status:200,data:{variables:u.pageProps.initialState.variables,status:u.pageProps.initialState.status}}}catch(a){throw console.error(a),new T(500,"Couldn't find page cache")}})}var ml=lt();function fl(e){let t={email:e.user.email,name:e.user.name,roles:e.user.bespoke_roles||[]};return qi.sign(t,ml,{expiresIn:"1min"})}function xa(){return O("POST","users/generate-token",async(e,t,r)=>{if(!r||!r.user)throw new T(401,"Unauthorized. Must be logged in to generate a token.");try{return {ok:!0,status:200,wrapper:!1,data:{token:fl(r)}}}catch(o){throw console.error("Error generating token:",o),new T(500,"Internal Server Error")}})}var yl=lt(),hl=e=>!!qi.verify(e,yl);function Pa(){return O("POST","users/validate-token",async(e,t)=>{let{token:r}=e.body;try{return hl(r)?{ok:!0,status:200,wrapper:!1,data:{success:!0}}:{ok:!1,status:401,error:"Invalid token"}}catch{return {ok:false,status:401,error:"Invalid token"}}})}var Sl=ve();function bo(e,t){return `${e.toUpperCase()} ${t.toLowerCase()}`}function El(e,t,r){let o=Ot(e,t,r);return Object.fromEntries([...De(o,"block"),...De(o,"dimension"),...De(o,"formatter"),...De(o,"report"),...De(o,"section"),...ca(o),...ia(o),...Fn(o),pa(o),la(o),ua(o),ct(o,"flickr"),ct(o,"local"),ct(o,"unsplash"),ct(o,"upload"),ct(o,"adobe"),ct(o,"pixabay"),Nt(o,"flickr"),Nt(o,"local"),Nt(o,"unsplash"),Nt(o,"adobe"),Nt(o,"pixabay"),da(o),Ra(o),ba(o),Sa(o),Ea(o),Aa(o),ma(o),fa(),ya(o),Ta(),_a(o,"tabler"),wa(o,"tabler"),ka(),ha(o),xa(),Pa()].map(({handler:n,method:a,path:s,roleRequired:i})=>[bo(a,s),{handler:n,roleRequired:i}]))}function Al(e){return (t,r,o)=>new Promise((n,a)=>{e(o)(t,r,s=>s instanceof Error?a(s):n(s));})}var Tl=Al(Rl);function _l(e,t){let r=rt().then(o=>El(o,e,t));return async function(n,a){await Tl(n,a,{methods:["GET","HEAD","PUT","PATCH","POST","DELETE"],origin:"*"});let{query:s,method:i}=n,{path:c,...l}=s;if(c&&i){let u=await r.then(p=>{let d=[].concat(c).join("/"),m=bo(i,d);return p[m]});if(u){let p=await me(n,a,e);if(u.roleRequired){if(!p)return a.status(401).json({error:"Unauthorized. Must be logged in."});let d=p&&p.user&&p.user.bespoke_roles&&Array.isArray(p.user.bespoke_roles)?p.user.bespoke_roles:[];if(Array.isArray(u.roleRequired)&&u.roleRequired.length>0&&!dr(d,u.roleRequired))return a.status(402).json({error:"Forbidden. Not enough roles."})}if(u.handler)return ["POST","DELETE"].includes(i)&&(n.body=await Ro(n)),Promise.resolve(n).then(d=>u.handler(d,a,p||void 0)).then(async d=>{if(d&&"error"in d)throw new T(d.status,d.error);if(d.ok)if(d.data instanceof Buffer){let m=await bl(d.data),f=Buffer.byteLength(d.data);a.writeHead(d.status,{"Content-Type":m?m.mime:"image/jpeg","Content-Length":f.toString()}).send(d.data);}else n.url&&n.url.indexOf("/icon.svg?name=")>0?(a.setHeader("Content-Type","image/svg+xml"),a.status(d.status).send(d.data)):a.status(d.status).json(d.wrapper?{data:d.data}:d.data);}).catch(d=>{Sl&&console.error("Backend Error",d),a.status(d.code).json({error:d.message});})}}else c||await r.then(console.info);return a.status(404).json({error:"No matching route",path:c,query:l})}}var wl=e=>{let t=e;return async function(r,o){let n=await t({test:"pala"});return o.json(n)}},kl=wl;var Rt={};Ts(Rt,{addBlockToState:()=>lr,addRunConsumersRunning:()=>ns,cloneEntity:()=>Qa,createEntity:()=>Wa,deleteEntity:()=>Ja,deleteQueryParam:()=>Iu,readEntity:()=>ne,readEnvSecrets:()=>$u,readMember:()=>ze,readMetadata:()=>cr,readPrivateBlocks:()=>Uu,readUser:()=>Ou,recalculateVariables:()=>is,removeBlocksFromState:()=>qe,removeDataSourceLogic:()=>ur,removeRunConsumersRunning:()=>as,reportSearch:()=>xu,resetSectionState:()=>os,revalidateReport:()=>Vu,revalidateUrl:()=>Fu,searchMember:()=>vu,searchRegenerate:()=>Pu,searchRole:()=>Bu,searchUser:()=>Mu,setCurrentLocale:()=>_u,setPreferredLocale:()=>wu,setPreviews:()=>Tu,setQueryParam:()=>Cu,setSectionState:()=>rs,setStatus:()=>ts,updateEntity:()=>Ya,updateMyData:()=>Du,updateUser:()=>Nu,urlProxy:()=>Lu,variantValidateSlug:()=>ku});function Re(e,t){return e.request(t).then(r=>{let{status:o,data:n}=r;return "error"in n?{ok:false,status:o,error:n.error}:{ok:true,status:o,wrapper:n.wrapper,data:n.data}},r=>{if("isAxiosError"in r){let{status:o,data:n}=r.response||{status:500};return {ok:false,status:o,error:n?.error??r.message}}return {ok:false,status:500,error:r.message}})}function re(e,t,r){let o=typeof t=="string"?{url:t}:t;return n=>Re(e,{...o,method:"GET",params:r?r(n):n})}function oe(e,t,r){let o=typeof t=="string"?{url:t}:t;return n=>Re(e,{...o,method:"POST",data:n})}function Ue(e,t,r){let o=typeof t=="string"?{url:t}:t;return n=>Re(e,{...o,method:"DELETE",params:r?r(n):n})}function ut(e,t){return r=>Re(e,{method:"POST",url:`images/save/${t}`,params:{prompt:r.prompt,provider:t}})}function Dt(e,t){return r=>Re(e,{method:"GET",url:`images/search/${t}`,params:{prompt:r.prompt,page:r.page,provider:t}})}function va(e,t){return ()=>Re(e,{method:"GET",url:`list/icons/${t}`,params:{provider:t}})}function Ia(e,t){return r=>Re(e,{method:"GET",url:`read/icons/${t}/icon.svg`,params:{name:r.name}})}var pt=e=>({id:e}),Pl=e=>{if(e.mode==="slugs"){let t=e.slugs.map(r=>[r.variantSlug,r.memberSlug].join("/")).join(",");return {...e,slugs:t}}return ["related","whole"].includes(e.mode)?{...e}:{...e,[e.mode]:e[e.mode].join(",")}};function or(e){let t=Or.create({baseURL:e});return {createBulkBlock:oe(t,"create/bulk/block"),createBlock:oe(t,"create/block"),createDimension:oe(t,"create/dimension"),createFormatter:oe(t,"create/formatter"),createReport:oe(t,"create/report"),createSection:oe(t,"create/section"),createVariant:oe(t,"create/variant"),createDatasource:oe(t,"create/datasource"),deleteBlock:Ue(t,"delete/block",pt),deleteDimension:Ue(t,"delete/dimension",pt),deleteFormatter:Ue(t,"delete/formatter",pt),deleteReport:Ue(t,"delete/report",pt),deleteSection:Ue(t,"delete/section",pt),deleteVariant:Ue(t,"delete/variant",pt),deleteDatasource:Ue(t,"delete/datasource",pt),readBlock:re(t,"read/block"),readDimension:re(t,"read/dimension"),readFormatter:re(t,"read/formatter"),readReport:re(t,"read/report"),readSection:re(t,"read/section"),readVariant:re(t,"read/variant"),readDatasource:re(t,"read/datasource"),updateBulkBlock:oe(t,"update/bulk/block"),updateBlock:oe(t,"update/block"),updateDimension:oe(t,"update/dimension"),updateFormatter:oe(t,"update/formatter"),updateReport:oe(t,"update/report"),updateSection:oe(t,"update/section"),updateVariant:oe(t,"update/variant"),updateDatasource:oe(t,"update/datasource"),searchReport:re(t,"search/reports"),validateVariantSlug:re(t,"validate/variant"),readMember:re(t,"read/members",Pl),readMemberImage:re(t,{url:"member/image",responseType:"blob"}),searchMember:re(t,"search/members"),updateMember:re(t,"update/members"),imageLocalSearch:Dt(t,"local"),imageLocalSave:ut(t,"local"),imageFlickrSearch:Dt(t,"flickr"),imageFlickrSave:ut(t,"flickr"),imageUnsplashSearch:Dt(t,"unsplash"),imageUnsplashSave:ut(t,"unsplash"),imageUploadSave:ut(t,"upload"),imageAdobeSearch:Dt(t,"adobe"),imageAdobeSave:ut(t,"adobe"),imagePixabaySearch:Dt(t,"pixabay"),imagePixabaySave:ut(t,"pixabay"),readMetadata:re(t,"read/metadata"),regenerateSearch:oe(t,"search/regenerate"),urlProxy:re(t,"url/proxy"),searchRole:re(t,"auth/search/roles"),searchUser:re(t,"auth/search/users"),readUser:re(t,"auth/read/user"),updateUser:oe(t,"auth/update/user"),updateMyData:oe(t,"auth/update/me"),revalidateReport:re(t,"revalidate/report"),revalidateUrl:re(t,"revalidate/url"),readPrivateBlocks:oe(t,"read/blocks/private"),listTablerIcons:va(t,"tabler"),readTablerIcon:Ia(t,"tabler"),readEnvSecrets:re(t,"read/secrets")}}var Cl=Xt(process.env.REPORTS_LOGGING),dt=Ll;function Ll(e,t,r,o,n=void 0,a){let s={},i=[],{locale:c}=fe(a);try{if(t){let l=new Proxy(console,{get(p,d){return Bl(d,"log","debug","info","warn","error")?(...m)=>{i.push(`${d} ${Date.now()} - ${m.map(f=>format(f)).join(" ")}`),Cl&&p[d](...m);}:p[d]}}),u;return n?u=new Function(e,"console","libs","formatters","locale","variables",r)(t,l,Je,o,c,n):u=new Function(e,"console","libs","formatters","locale",r)(t,l,Je,o,c),typeof u=="object"&&Object.keys(u).length>0&&Object.assign(s,u),{vars:s,error:null,log:i,output:u}}return {vars:s,error:"Invalid API Link",log:i}}catch(l){return {vars:s,error:l.message,log:i}}}function Bl(e,...t){return t.includes(e)}var So=(e,t,r)=>{let{variables:o}=r,n=s=>s.allowed==="never"?false:!s.allowed||s.allowed==="always"||o[s.allowed],a={...e};return Object.keys(a).forEach(s=>{typeof a[s]=="string"?a[s]=ye(a[s],t,r):Array.isArray(a[s])?a[s]=a[s].filter(n).map(i=>typeof i=="object"?So(i,t,r):typeof i=="string"?ye(i,t,r):i):typeof a[s]=="object"&&a[s]!==null&&!(a[s]instanceof Date)&&(a[s]=So(a[s],t,r));}),a},Lr=So;var Ca=e=>Array.isArray(e)?e.map(t=>typeof t=="string"?{allowed:"always",label:t,id:t}:{allowed:"always",label:t.id,...t}):[];var Ml=(e,t,r)=>{if(!r)return false;if(e===Ze.SINGLE)return r.find(n=>n.id===t);let o=Array.isArray(t)?t:t.split(",");return Array.isArray(o)&&o.every(n=>r.map(a=>a.id).includes(n))},Eo=Ml;function Ao(e,t,r,o,n=false){let{variables:a}=fe(o),s=Lr({logic:t},r,o).logic,i=dt("variables",a,s,r,void 0,o),{vars:c,log:l,error:u}=i,p=c.type||Ze.SINGLE,d=c.component||"Selector",m=c.hideLabel||"false",f=c.resetSectionVars||"false",R=c.name||"Unlabeled Selector",h=Ca(c.options||[]),S=A=>p===Ze.MULTI&&!Array.isArray(A)?[A]:A,x=c.defaultValue,P;if(x&&(x=S(x),Eo(p,x,h)&&(P=x)),!P){let A=h&&h[0]&&h[0].id||h[0]||"";P=S(A);}if(n&&typeof window<"u"){let A=`selector${e}id`,F=new URLSearchParams(window.location.search),N=Object.fromEntries(F)[A];N&&!Eo(p,N,h)&&N!==void 0&&(F.delete(A),window.history.replaceState(null,null,`?${F.toString()}`));}return {config:{name:R,type:p,options:h,defaultValue:P,component:d,hideLabel:m,resetSectionVars:f},log:l,error:u}}function To(e,t,r){if(!e)return false;let o=Array.isArray(r)?r:r.split(",");return Array.isArray(o)&&o.every(n=>e.map(a=>`${a[`${t} ID`]}`).includes(n))}function _o(e,t,r,o,n=false){let{variables:a}=fe(o),s=Lr({logic:t},r,o).logic,i=dt("variables",a,s,r,void 0,o),{vars:c,log:l,error:u}=i;if(n&&typeof window<"u"){let d=`multihierarchySelector${e}-value`,m=`multihierarchySelector${e}-type`,f=new URLSearchParams(window.location.search),R=Object.fromEntries(f),h=R[d],S=R[m];h&&h!==void 0&&S&&S!==void 0&&!To(c.data,S,h)&&(f.delete(d),f.delete(m),window.history.replaceState(null,null,`?${f.toString()}`));}return {config:c,log:l,error:u}}var Ol=(e,t,r)=>{let o=`selector${e}id`,n=new URLSearchParams(typeof location<"u"&&location?.search?location.search:"").get(o),a=new URLSearchParams(t).get(o),s=n||a;if(r.type===Ze.MULTI){let l=s?s.split(","):r.defaultValue,u=r.options.filter(p=>l.includes(p.id));return {[`selector${e}id`]:l,[`selector${e}label`]:(u||[]).map(p=>p.label)}}let i=s&&r.options.find(l=>l.id===s)?s:r.defaultValue,c=r.options.find(l=>l.id===i);return {[`selector${e}id`]:i,[`selector${e}label`]:c&&c.label||void 0}},La=Ol;var Nl=(e,t,r)=>{let o=`multihierarchySelector${e}-value`,n=`multihierarchySelector${e}-type`,a=new URLSearchParams(typeof location<"u"&&location?.search?location.search:"").get(o),s=new URLSearchParams(typeof location<"u"&&location?.search?location.search:"").get(n),i=new URLSearchParams(t).get(o),c=new URLSearchParams(t).get(n),l=a||i,u=s||c,p=l?l.split(","):r.defaultValue||[],d=u||r.defaultValueType||"",m=r.data?.filter(f=>p.includes(`${f[`${d} ID`]}`))||[];return {[`multihierarchySelector${e}id`]:p,[`multihierarchySelector${e}label`]:[...new Set((m||[]).map(f=>f[d]))],[`multihierarchySelector${e}type`]:d}},Ba=Nl;var{localeDefault:Ma,locales:Dl}=G(),Ul=Object.values(ro),Fl=(e,t=Ma)=>e&&Ul.includes(e.type)?{locale:oo,locales:[oo]}:{locale:t,locales:Dl},Oa=(e,t=Ma)=>{if(!e)return {};let{locale:r}=Fl(e,t);return e.contentByLocale?.[r]?.content};function Vl(e,t){let r=Object.values(t),o=r.filter(n=>n.shared&&n.section_id!==e).map(n=>n.id);return Object.fromEntries(r.filter(n=>n.section_id===e&&(n.inputs.length===0||n.inputs.some(a=>o.includes(a)))).map(n=>[n.id,n]))}var Na=Vl;function wo(e){return e.type===B.SECTION_FLAG&&e.inputs.length===0&&e.consumers.length===0}var Fe=Xt(process.env.NEXT_PUBLIC_REPORTS_DEBUG),Hl=process.env.REPORTS_ORIGIN||"",jl=process.env.NEXT_PUBLIC_REPORTS_AXIOS_RETRIES,Va=5;try{Va=parseInt(`${jl||5}`,10);}catch(e){console.error("Error setting axios retries NEXT_PUBLIC_REPORTS_AXIOS_RETRIES defaults to 5",e);}Da(Or,{retries:Va,retryDelay:Da.exponentialDelay,onRetry:(e,t,r)=>{console.error("Generator request failed. Retrying... Count: ",e),console.error("URL: ",r.url),console.error(t.message);}});Or.interceptors.request.use(e=>({...e,requestStart:Date.now()}));Or.interceptors.response.use(e=>({...e,requestDuration:new Date().getTime()-e.config.requestStart}),e=>Promise.reject(e));var Wl=(e,t,r)=>{let o=ye(e,t,r);return o.startsWith("http")||(o=`${Hl}${o.startsWith("/")?"":"/"}${o}`),o},{urlProxy:Yl}=or("/api/cms");function Mr(e){return e.ok!==void 0}function Br(e){this.message=e,this.name="ApiFetchException";}var Ua=process.env.NEXT_PUBLIC_REPORTS_API_FETCH_TIMEOUT||0;async function Jl(e,t,r="en",o,n){let a=Date.now(),s=e,i,c=ue(),l=vt(),u={envs:{...c,...l}},p=new URL(e),d=new URLSearchParams(p.searchParams.toString());d.has("bespoke_slugs")&&(p.searchParams.delete("bespoke_slugs"),s=p.toString());let m={datasource:void 0};o.find(x=>{if(!x.content?.pattern)return false;try{let P=new RegExp(x.content.pattern,"gm");return P.test(s)?(m.datasource=x,!0):P.test(s)}catch{return false}});let f=n?n.settings:{},R=!!(f&&f.useProxy&&f.useProxy==="true"),h=m.datasource&&typeof m.datasource.content.useProxy=="boolean"?m.datasource.content.useProxy:false,S=`${process.env.NEXT_PUBLIC_REPORTS_BASE_URL}/api/cms/url/proxy?url=${encodeURIComponent(s)}`;if(typeof window=="object"&&(R||h)){let x=await Yl({url:s,timeout:Ua});if(x.ok===true)i=x.data;else throw new Br(x?.error)}else try{let P={url:s,timeout:Ua};if(m.datasource){let A=u;if(typeof window<"u")try{let N=await getSession();if(N){let k={user:N.user,status:"authenticated",isLoading:!1,update:async()=>N};A={...u,session:k};}}catch(N){console.warn("Could not retrieve user session:",N);}let C=await wr({vars:["url","libs","session"],logic:m.datasource.content.logic},A)(s);if(C.axiosConfig)P=C.axiosConfig;else throw new Br(`AxiosConfig is missing in Data Source ${m.datasource.name} (ID: ${m.datasource.id}).`)}let U=await Or(P);if(U.status===200)U.headers["content-type"]==="text/csv"?i=csvParse(U.data):i=U.data;else throw new Br("No response for: "+s)}catch(x){throw new Br(x.message)}if(d.has("bespoke_slugs")){let x=d.get("bespoke_slugs");if(x){let P=x.split(",");if(P.length===3){let[U,A,F]=P,C=qt(i,F);if(C&&Array.isArray(C)){let N=Array.from(new Set(C.map(k=>`${k[A]}`).filter(k=>!["","undefined"].includes(k))));if(N.length>0){let k=N.join("").length>2e3,L=await t({mode:k?"whole":"ids",ids:k?void 0:N,all:false,locale:r,variant:[parseInt(U,10)],output:"lite",limit:N.length+1,allowNulls:true}).then(M=>{let D=[];return Mr(M)?M.ok&&(D=M.data.results):D=M.results,D&&Array.isArray(D)?D:[]}).catch(M=>(console.error(`Error hydrating slugs for Variant: ${U}, Key: ${A}, Accessor: ${F}`),console.error(` Url ${e}`),n&&console.error(` From Section ${n.section_id} and Block ${n.id}`),console.error(M),[]));if(L){let M=Object.fromEntries(L.map(D=>[D.id,`/${D.variant_slug}/${D.slug}`]));C.map(D=>(D.bespoke_slug=M[D[A]]?M[D[A]]:null,D));}}}}}}return {data:i,requestDuration:Date.now()-a,finalUrl:h||R?S:s,apiDataSource:m.datasource?m.datasource:false}}function Ql(e){this.name="BlockException",this.message=e;}async function Fa(e,t,r,o,n){let{locale:a,variables:s,query:i}=fe(r),c=Xl(e,r,s,t),l=null,u=e.contentByLocale?.logic?.content?.api,p=null,d=null,m=null,f=null,R=null;if(!c)return {outputVariables:{},renderVariables:{},status:{allowed:false,hiddenByCascade:e.id}};if(e.type===B.FALLBACK)return {outputVariables:{},renderVariables:{},status:{allowed:c,hiddenByCascade:e.id}};if(u){m=Wl(u,t,r);let C=m.split("|||").filter(L=>L!==""),N=[];for(let L=0;L<C.length;L++){let M=C[L];new RegExp("^(?:[a-z+]+:)?//","i").test(m)||(M=`${process.env.NEXT_PUBLIC_REPORTS_BASE_URL}/${M}`.replace(/([^:]\/)\/+/g,"$1")),N.push(Jl(M,o,a,n,e).catch(Y=>{throw new Ql(` Excecution of ${e.type}-${e.id} in section ${e.section_id} in report ${s.report_name} (${s.report_id}) failed.
|
|
44
|
+
WHERE sc.id = "content_id" ${J} LIMIT 1)
|
|
45
|
+
`),"sort_attribute_str"]]}:{},ie=l&&l!==""&&b.length?{include:[[literal(`array_position(array[${b.join(",")}], "content_id")`),"rank"]]}:{},[hs,Rs]=await Promise.all([r.findAll({limit:D,offset:C,where:w,include:ve,order:X,subQuery:false,attributes:{include:[...ie.include||[],...se.include||[],..._e.include||[]]}}),r.findAll({attributes:["variant_id",[fn("COUNT",col("variant_id")),"members_count"]],where:K,group:["variant_id"]})]),bs=Rs.map(ce=>ce.toJSON()),Ss=m==="nested"?j:_;return ae=hs.map(Ss),{meta:{origin:"flexsearch",...Object.fromEntries(Object.entries(s).map(ce=>[ce[0],$(ce[1])])),variantCount:bs.reduce((ce,de)=>(ce[de.variant_id]=parseInt(de.members_count,10),ce),{})},results:ae}}}}function En(e){let{image:t,image_content:r,search:o,search_content:n}=e;return a;async function a(s){let{content_id:i,contentByLocale:c,image:l,image_id:u}=s,p={where:{content_id:i}},d=await o.findOne(p);if(await o.update(s,{where:{content_id:i}}),c){for(let f=0;f<c.length;f++){let R=c[f];await n.update({name:R.name,keywords:R.keywords},{where:{id:R.id,locale:R.locale}});}p={...p,...{include:[{association:"contentByLocale",separate:true}]}};}if(l){if(l.id&&(await t.update({...l},{where:{id:l.id}}),l.contentByLocale))for(let m=0;m<l.contentByLocale.length;m++){let f=l.contentByLocale[m];await r.update({meta:f.meta},{where:{id:f.id,locale:f.locale}});}}else !u&&d.image_id&&(await e.search.findAll({where:{image_id:d.image_id}})).length===0&&await t.destroy({where:{id:d.image_id}});return o.findOne(p)}}function An(e,t){return {ingestMembers:gn(e),readMember:yn(e),searchMember:Bt(e,t),updateMember:En(e),readMemberImage:hn(e)}}var at={include:[{association:"contentByLocale",separate:true},{association:"inputs",include:[{association:"contentByLocale",separate:true}]},{association:"consumers",include:[{association:"contentByLocale",separate:true}]}]},Qt=e=>({include:[{association:"variants",separate:true,attributes:{include:[[fn("COUNT",col("members.id")),"members_count"]]},include:[{model:e,as:"members",attributes:[]}],group:["variant.id"]}],order:[["ordering","ASC"]]}),Zt={include:[{association:"blocks",separate:true,...at}]},Pr=e=>({include:[{association:"dimensions",separate:true,...Qt(e)},{association:"sections",separate:true,...Zt}]});var ge=[{association:"image",attributes:{exclude:["splash"]},include:[{association:"contentByLocale"}]},{association:"contentByLocale"}];function Tn(e){let{block:t,block_content:r,block_input:o}=e;return {createBlock:n,readBlock:s,updateBlock:i,deleteBlock:l,createBulkBlock:a,updateBulkBlock:c};async function n(u){let{locales:p,...d}=u;return (await t.create({...d,consumers:[],inputs:[],contentByLocale:p.map(f=>({locale:f}))},{include:at.include})).toJSON()}async function a(u){let p=u.map(m=>{let{locales:f,...R}=m;return {...R,consumers:[],inputs:[],contentByLocale:f.map(S=>({locale:S}))}});return (await t.bulkCreate(p,{include:at.include})).map(m=>m.toJSON())}async function s({id:u,include:p}={}){let d=u==null?[]:[].concat(u),m=await t.findAll({where:d.length>0?{id:d}:void 0,include:p?at.include:void 0});if(d.length===0||m.length===d.length)return m.map(h=>h.toJSON());let f=m.map(h=>h.id),R=d.filter(h=>!f.includes(h));throw new T(404,`Block(id=[${R}]) does not exist.`)}async function i(u){let{id:p,contentByLocale:d,consumers:m,inputs:f,inputAction:R,...h}=u,S=await t.findByPk(p,{include:at.include,rejectOnEmpty:true});if(S.set(h),d){let x=Object.values(d);await r.bulkCreate(x,{updateOnDuplicate:["content"]});}return R&&(R.operation==="create"?await o.create(R.input):await o.destroy({where:R.input})),await S.save(),await S.reload(),S.toJSON()}async function c(u){let p=u.map(f=>{let{id:R,contentByLocale:h,consumers:S,inputs:x,inputAction:P,...U}=f;return {id:R,contentByLocale:h,inputAction:P,...U}}),d=await t.findAll({where:{id:{[Op.or]:p.map(f=>f.id)}},include:at.include}),m=[];for(let f of d){let R=p.filter(h=>h.id===f.id);for(let h=0;h<R.length;h++){let S=R[h],{id:x,contentByLocale:P,inputAction:U,...A}=S;if(U&&(U.operation==="create"?await o.create(U.input):await o.destroy({where:U.input})),P){let F=Object.values(P);await r.bulkCreate(F,{updateOnDuplicate:["content"]});}f.set(A),await f.save(),await f.reload(),m.push(f.toJSON());}}return m}async function l(u){let p=await t.findByPk(u,{rejectOnEmpty:true});return await p.destroy(),{id:u,parentType:"section",parentId:p.section_id}}}function _n(e){let{dimension:t,search:r}=e;return {createDimension:o,readDimension:n,updateDimension:a,deleteDimension:s};async function o(i){return (await t.create({name:i.name,report_id:i.report_id,ordering:i.ordering||0,variants:[]},{include:Qt(r).include})).toJSON()}async function n({id:i,include:c}={}){let l=i==null?[]:[].concat(i),u=await t.findAll({where:l.length>0?{id:l}:void 0,include:c?Qt(r).include:void 0});if(l.length===0||u.length===l.length)return u.map(m=>m.toJSON());let p=u.map(m=>m.id),d=l.filter(m=>!p.includes(m));throw new T(404,`Dimension(id=[${d}]) does not exist.`)}async function a(i){let{id:c,variants:l,...u}=i,p=await t.findByPk(c,{include:Qt(r).include,rejectOnEmpty:false});if(!p)throw new T(404,`Dimension(id=${c}) does not exist.`);return p.set(u),await p.save(),p.toJSON()}async function s(i){let c=await t.findByPk(i,{rejectOnEmpty:false});return await c.destroy(),{id:i,parentType:"report",parentId:c.report_id}}}function wn(e){let{formatter:t}=e;return {createFormatter:r,readFormatter:o,updateFormatter:n,deleteFormatter:a};async function r(s){return (await t.create(s)).toJSON()}async function o({id:s}={}){let i=s==null?[]:[].concat(s),c=await t.findAll({where:i.length>0?{id:i}:void 0});if(i.length===0||c.length===i.length)return c.map(p=>p.toJSON());let l=c.map(p=>p.id),u=i.filter(p=>!l.includes(p));throw new T(404,`Formatter(id=[${u}]) does not exist.`)}async function n(s){let{id:i,...c}=s,l=await t.findByPk(i,{rejectOnEmpty:true});return await l.update(c),l.toJSON()}async function a(s){return await(await t.findByPk(s,{rejectOnEmpty:true})).destroy(),{id:s}}}function xn(e){let{datasource:t}=e;return {createDatasource:r,readDatasource:o,updateDatasource:n,deleteDatasource:a};async function r(s){return (await t.create(s)).toJSON()}async function o({id:s,include:i}={}){try{let c=s==null?[]:[].concat(s),l=i===!0,u=await t.findAll({attributes:l?["id","name","description","content"]:["id","name","description",[literal("content - 'logic' - 'testUrl' - 'access'"),"content"]],where:c.length>0?{id:c}:void 0,order:[literal("(content->>'order')::integer ASC NULLS LAST")]});if(c.length===0||u.length===c.length)return u.map(m=>m.toJSON());let p=u.map(m=>m.id),d=c.filter(m=>!p.includes(m));throw new T(404,`Datasource(id=[${d}]) does not exist.`)}catch(c){throw new T(500,c)}}async function n(s){let{id:i,...c}=s,l=await t.findByPk(i,{rejectOnEmpty:true});return await l.update(c),l.toJSON()}async function a(s){return await(await t.findByPk(s,{rejectOnEmpty:true})).destroy(),{id:s}}}var{locales:Tc}=G();function Pn(e){let{report:t,search:r}=e;return {createReport:o,readReport:n,updateReport:a,deleteReport:s};async function o(i){return (await t.create({name:i.name,sections:[],dimensions:[]},{include:Pr(r).include})).toJSON()}async function n({id:i,include:c,locales:l=Tc}={}){let p=(i==null?[]:[].concat(i)).reduce((R,h)=>(R.includes(h)||R.push(h),R),[]),d=await t.findAll({where:p.length>0?{id:p}:void 0,include:c?Pr(r).include?.filter(R=>typeof c=="string"?R.association===c:c):void 0});if(p.length===0||d.length===p.length)return d.map(R=>{let h=R.toJSON();return {...h,sections:h.sections.map(S=>({...S,blocks:S.blocks.map(x=>({...x,contentByLocale:Object.keys(x.contentByLocale).reduce((P,U)=>({...P,...[...l,"logic"].includes(U)?{[U]:x.contentByLocale[U]}:{}}),{})}))}))}});let m=d.map(R=>R.id),f=p.filter(R=>!m.includes(R));throw new T(404,`Report(id=${f}) does not exist.`)}async function a(i){let{id:c,dimensions:l,sections:u,...p}=i,d=await t.findByPk(c,{include:Pr(r).include,rejectOnEmpty:false});if(!d)throw new T(404,`Report(id=${c}) does not exist.`);return d.set(p),await d.save(),await d.reload(),d.toJSON()}async function s(i){return await(await t.findByPk(i,{rejectOnEmpty:false})).destroy(),{id:i}}}function vn(e){let{section:t}=e;return {createSection:r,readSection:o,updateSection:n,deleteSection:a};async function r(s){return (await t.create({ordering:s.ordering,report_id:s.report_id,blocks:[]},{include:Zt.include})).toJSON()}async function o({id:s,include:i}={}){let c=s==null?[]:[].concat(s),l=await t.findAll({where:c.length>0?{id:c}:void 0,include:i?Zt.include:void 0});if(c.length===0||l.length===c.length)return l.map(d=>d.toJSON());let u=l.map(d=>d.id),p=c.filter(d=>!u.includes(d));throw new T(404,`Section(id=${p}) does not exist.`)}async function n(s){let{id:i,blocks:c,...l}=s,u=await t.findByPk(i,{include:Zt.include,rejectOnEmpty:false});return u.set(l),await u.save(),await u.reload(),u.toJSON()}async function a(s){let i=await t.findByPk(s,{rejectOnEmpty:true});return await i.destroy(),{id:s,parentType:"report",parentId:i.report_id}}}function Ln(e,t){let{variant:r,search:o}=e;return {createVariant:n,readVariant:a,updateVariant:s,deleteVariant:i,validateVariantSlug:c};async function n(l){let{dimension_id:u,name:p,slug:d}=l,m=await c({dimension:u,slug:d});return (await r.create({dimension_id:u,name:p,slug:m.valid?m.candidate:m.suggestion})).toJSON()}async function a({id:l}={}){let u=l==null?[]:[].concat(l),p=await r.findAll({where:u.length>0?{id:u}:void 0,attributes:{include:[[fn("COUNT",col("members.id")),"members_count"]]},include:[{model:o,attributes:[],as:"members"}],group:["variant.id"]});if(u.length===0||p.length===u.length)return p.map(f=>f.toJSON());let d=p.map(f=>f.id),m=u.filter(f=>!d.includes(f));throw new T(404,`Variant(id=${m}) does not exist.`)}async function s(l){let{id:u,...p}=l,d=await r.findByPk(u,{include:[{association:"dimension"}],rejectOnEmpty:true});p.settings=Yt(p.settings);let m=p.settings.doIngest;return p.settings.doIngest=false,await d.update(p),m&&(await t.ingestMembers(d),await nt(e,true)),await d.reload(),d.toJSON()}async function i(l){let u=await r.findByPk(l,{rejectOnEmpty:true});return await u.destroy(),nt(e,true),{id:l,parentType:"dimension",parentId:u.dimension_id}}async function c({dimension:l,slug:u}){let p=await r.findAll({attributes:["slug",[fn("COUNT",col("id")),"slugCount"]],where:{dimension_id:{[Op.ne]:l}},group:"slug"}).then(R=>Object.fromEntries(R.map(h=>{let S=h.getDataValue("slugCount");return [h.slug,Number.parseInt(`${S}`,10)]}))),d=u,m=1,f=true;for(;p[d];)f=false,d=`${u}-${m}`,m++;return {candidate:u,dimension_id:l,suggestion:d,valid:f}}}function Bn(e,t){let r={...Tn(e),..._n(e),...wn(e),...xn(e),...An(e,t),...Pn(e),...vn(e)},o={...r,...Ln(e,r)};return {createFormatter:I(o.createFormatter),deleteFormatter:I(o.deleteFormatter),readFormatter:I(o.readFormatter),updateFormatter:I(o.updateFormatter),createReport:I(o.createReport),deleteReport:I(o.deleteReport),readReport:I(o.readReport),updateReport:I(o.updateReport),createDimension:I(o.createDimension),deleteDimension:I(o.deleteDimension),readDimension:I(o.readDimension),updateDimension:I(o.updateDimension),createVariant:I(o.createVariant),readVariant:I(o.readVariant),updateVariant:I(o.updateVariant),deleteVariant:I(o.deleteVariant),validateVariantSlug:I(o.validateVariantSlug),createSection:I(o.createSection),readSection:I(o.readSection),updateSection:I(o.updateSection),deleteSection:I(o.deleteSection),createBlock:I(o.createBlock),deleteBlock:I(o.deleteBlock),readBlock:I(o.readBlock),updateBlock:I(o.updateBlock),createBulkBlock:I(o.createBulkBlock),updateBulkBlock:I(o.updateBulkBlock),readMember:I(o.readMember),searchMember:I(o.searchMember),updateMember:I(o.updateMember),readMemberImage:I(o.readMemberImage),createDatasource:I(o.createDatasource),deleteDatasource:I(o.deleteDatasource),readDatasource:I(o.readDatasource),updateDatasource:I(o.updateDatasource)}}if(typeof window<"u")throw new Error("uploadImage.ts can only be imported on the server side");var Mn=e=>{throw console.error("/methods/helpers/uploadImage.ts:",e),new Error(e.message)},wc=Number(process.env.NEXT_PUBLIC_IMAGE_SPLASH_WIDTH)||1400,kc=Number(process.env.NEXT_PUBLIC_IMAGE_THUMB_WIDTH)||400,xc=async(e,t,r)=>{let o=[{type:"splash",res:wc},{type:"thumb",res:kc}],n=(await import('sharp')).default;for(let a of o){let s=await n(r).resize(a.res).toFormat("webp").webp({lossless:true}).toBuffer().catch(Mn);await e.image.update({[a.type]:s},{where:{id:t}}).catch(Mn);}},Ae=xc;var On="SECTION_ALLOWED";var Nn=["4","5","7","8","9","10"],Ic=Nn.join(),{locales:Cc}=G(),Me;if(process.env.FLICKR_API_KEY)try{Me=new vc(process.env.FLICKR_API_KEY);}catch(e){throw console.error("Flickr ERROR:",e),new Error(e.message)}async function Dn(e,t){try{let r={prompt:t.prompt||"",page:t.page||1};if(!Me)throw console.warn("Flickr is not initialized. Check the credentials"),new Error("Flickr is not initialized. Check the credentials");let o=r.prompt,a=(await Me.photos.search({text:o,license:Ic,sort:"relevance",per_page:24,page:r.page,content_types:"0",orientation:"landscape"}).then(l=>l.body)).photos.photo,s=a.reduce((l,u)=>l.concat(Me.photos.getSizes({photo_id:u.id})),[]),c=(await Promise.all(s).then(l=>l)).reduce((l,u,p)=>{let d=u.body.sizes.size.find(m=>m.label==="Small 320");return d&&l.push({id:a[p].id,source:d.source}),l},[]);return {meta:{prompt:$(r.prompt),page:$(`${r.page}`)},results:c}}catch(r){throw console.error(r),new Error("Error in search flickr provider")}}async function Un(e,t){try{let{content_id:r,image_id:o}=t,n={content_id:$(`${r}`)||"",id:$(`${o}`)||""},s=`https://flic.kr/p/${Pc.int_to_base58(o)}`;if(!Me)throw new Error("Flickr API Key not configured");let i=await Me.photos.getInfo({photo_id:o}).then(l=>l.body),c;if(i)if(Nn.includes(i.photo.license)){let l=await e.search.findOne({where:{content_id:r}}),u=await e.image.findOne({where:{url:s}});if(l){if(u)await e.search.update({image_id:u.id},{where:{content_id:r}});else {let d=await Me.photos.getSizes({photo_id:o}).then(A=>A.body),m=d.sizes.size.find(A=>parseInt(A.width,10)>=1600);if(m||(m=d.sizes.size.find(A=>parseInt(A.width,10)>=1e3)),m||(m=d.sizes.size.find(A=>parseInt(A.width,10)>=500)),!m||!m.source)throw new Error("Flickr Source Error, try another image.");let f=await fetch(m.source);if(!f.ok)throw new Error("Flickr Error retrieving image, try another image.");let R=await f.arrayBuffer(),S=(await Me.photos.licenses.getInfo().then(A=>A.body.licenses.license)).find(A=>A.id===parseInt(i.photo.license,10)),x={url:s,author:i.photo.owner.realname||i.photo.owner.username,license:S?`${S.name}: ${S.url}`:""},P=await e.image.create(x);await e.image_content.destroy({where:{id:P.id}});let U=Cc.map(A=>({id:P.id,locale:A,meta:i.photo.title._content}));await e.image_content.bulkCreate(U),await e.search.update({image_id:P.id},{where:{content_id:r}}),await Ae(e,P.id,R);}let p=await e.search.findOne({where:{content_id:r},include:ge});p&&p.image&&(p.image.thumb=!!p.image.thumb);}else throw new Error("Error updating Search")}else throw new Error("Bad License");else throw new Error("Malformed URL");return {meta:{...n},results:c}}catch(r){throw console.error(r),new Error("Error in save flickr provider")}}function O(e,t,r,o){return {method:e,path:t,handler:r,roleRequired:o}}function te(e){let t=Number.parseInt(`${e||""}`,10);if(Number.isNaN(t)||!Number.isFinite(t))throw new T(400,`Invalid numeric parameter: ${e}`);return t}function q(e){return e==null||e===""?[]:Array.isArray(e)?e:e.toString().split(",")}var{localeDefault:Ne}=G();function Fn(e){let{readMember:t,searchMember:r,updateMember:o,readMemberImage:n}=e;return [O("GET","read/members",async a=>{let s=Lc(a.query),i=s[s.mode]||[],c=s.mode==="whole";if(!c&&i.length===0)throw new T(400,`The request is missing the '${s.mode}' parameter.`);if(!c&&i.length>20&&!s.variant)throw new T(400,`You can look for up to 20 '${s.mode}' in a single request.`);return t(s)}),O("GET","search/members",a=>{let s=er(a.query);return r(s)}),O("POST","update/member",a=>{let{body:s}=a;return o(s)},[z.EDITOR]),O("GET","member/image",a=>{let s=q(a.query.size)[0];return n({member:te(a.query.member),size:s&&s==="splash"?"splash":"thumb"})})]}function Lc(e){let t=q(e.locale)[0]||Ne,r=t==="all"||Xt(e.all),o=q(e.mode)[0],a=(q(e.output)[0]||"full")==="lite"?"lite":"full",s=parseInt(q(e.related)[0],10)||5,i=Xt(e.allowNulls,{default:false}),c=q(e.variant).map(te);if(c.length===0&&(c=q(e["variant[]"]).map(te)),o==="ids")return {all:r,mode:o,variant:c,output:a,locale:r?Ne:$(t),ids:q(e.ids||e["ids[]"]),allowNulls:i};if(o==="content_ids")return {all:r,mode:o,variant:c,output:a,locale:r?Ne:$(t),content_ids:q(e.content_ids||e["content_ids[]"]).map(te),allowNulls:false};if(o==="slugs")return {all:r,mode:o,variant:c,output:a,locale:r?Ne:$(t),slugs:q(e.slugs||e["slugs[]"]).map(l=>{let[u,p]=l.split("/");return {variantSlug:u,memberSlug:p}}),allowNulls:false};if(o==="related")return {all:r,mode:o,locale:r?Ne:$(t),related:s,current_ids:q(e.current_ids||e["current_ids[]"]).map(te),include_ids:q(e.include_ids||e["include_ids[]"]).map(te),report_ids:q(e.report_ids||e["report_ids[]"]).map(te),dimension_ids:q(e.dimension_ids||e["dimension_ids[]"]).map(te),variant_ids:q(e.variant_ids||e["variant_ids[]"]).map(te),output:a,allowNulls:false};if(o==="whole")return {all:r,mode:o,variant:c,locale:r?Ne:$(t),output:a,allowNulls:i};throw new T(400,`Invalid mode: '${o}'`)}function er(e){let t=q(e.locale)[0]||Ne||"en",r=t==="all",o=q(e.format)[0],n=o?o==="nested":r,a=q(e.variant).map(te);a.length===0&&(a=q(e["variant[]"]).map(te));let s=q(e.dimension).map(te);s.length===0&&(s=q(e["dimension[]"]).map(te));let i=q(e.report).map(te);i.length===0&&(i=q(e["report[]"]).map(te));let c=e.origin==="typesense"?"typesense":"flexsearch";return {query:q(e.query||e.q)[0]||"",locale:r?Ne:t,preferredLocale:q(e.preferredLocale)[0],limit:q(e.limit).map(te)[0]??5,format:n?"nested":"plain",includes:Xt(e.includes,{default:true}),visible:Xt(e.visible,{default:true}),noImage:Xt(e.noImage,{default:false}),variant:a,dimension:s,report:i,all:r,sort:q(e.sort)[0],direction:q(e.direction)[0],offset:Number(e.offset||0),origin:c}}async function Vn(e,t,r){let o=Bt(e,r),n=er({query:t.prompt,limit:"50",visible:"false"}),s=(await o(n)).results.filter(i=>i.image_id).map(i=>({id:i.image_id,source:`/api/cms/member/image?member=${i.content_id}&size=thumb`}));return {meta:{prompt:$(n.query)},results:s}}async function $n(e,t){let{search:r}=e,{content_id:o,image_id:n}=t;await r.update({image_id:n},{where:{content_id:o}});let a=await r.findOne({where:{content_id:o},include:ge}).then(s=>s?{...s.toJSON(),image:{...s.image.toJSON(),thumb:!!s.image.thumb}}:null);return {meta:{id:n,content_id:o},results:a}}if(typeof window<"u")throw new Error("unsplash.ts can only be imported on the server side");var{locales:Oc}=G(),tr;if(process.env.UNSPLASH_API_KEY)try{tr=createApi({accessKey:process.env.UNSPLASH_API_KEY});}catch(e){throw console.error("Unsplash error:",e),new Error(e.message)}async function zn(e,t){try{let r={prompt:t.prompt||"",page:t.page||1};if(!tr)throw new Error("Unsplash API Key not configured");let o=r.prompt,a=(await tr.search.getPhotos({query:o,perPage:24,page:r.page,orientation:"landscape"}).then(s=>s.response.results)).map(s=>({id:s.id,source:s.urls.thumb}));return {meta:{prompt:$(r.prompt),page:$(`${r.page}`)},results:a}}catch(r){throw console.error(r),new Error("Error in search unsplash provider")}}async function qn(e,t){try{let{content_id:r,image_id:o}=t,n={content_id:$(`${r}`)||"",id:$(`${o}`)||""};if(!tr)throw console.warn("Unsplash is not initialized. Check the credentials"),new Error("Unsplash is not initialized. Check the credentials");let a=await tr.photos.get({photoId:o}).then(i=>i.response),s;if(a){let i=await e.search.findOne({where:{content_id:r}}),c=a.links.html,l=await e.image.findOne({where:{url:c}});if(i){if(l)await e.search.update({image_id:l.id},{where:{content_id:r}});else {let p=await Or.get(a.urls.full,{responseType:"arraybuffer"}).then(R=>R.data),d={url:c,author:a.user.name||a.user.username,license:"Free Unsplash license: https://unsplash.com/license"},m=await e.image.create(d);await e.image_content.destroy({where:{id:m.id}});let f=Oc.map(R=>({id:m.id,locale:R,meta:a.description||a.alt_description}));await e.image_content.bulkCreate(f),await e.search.update({image_id:m.id},{where:{content_id:r}}),await Ae(e,m.id,p);}let u=await e.search.findOne({where:{content_id:r},include:ge});u&&u.image&&(u.image.thumb=!!u.image.thumb);}else throw new Error("Error updating Search")}else throw new Error("Malformed URL");return {meta:{...n},results:s}}catch(r){throw console.error(r),new Error("Error in save unsplash provider")}}if(typeof window<"u")throw new Error("upload.ts can only be imported on the server side");var{locales:Dc}=G();async function Gn(e,t){try{let{content_id:r,image_source:o,files:n}=t,a={content_id:$(`${r}`)||""};if(await e.search.findOne({where:{content_id:r}})&&n){let c=await Nc.readFileSync(n.file.filepath),l={url:o,author:"",license:""},u=await e.image.create(l);await e.image_content.destroy({where:{id:u.id}});let p=Dc.map(d=>({id:u.id,locale:d,meta:""}));await e.image_content.bulkCreate(p),await e.search.update({image_id:u.id},{where:{content_id:r}}),await Ae(e,u.id,c);}let i=await e.search.findOne({where:{content_id:r},include:ge});return i&&i.image&&(i.image.thumb=!!i.image.thumb),{meta:{...a},results:i}}catch(r){throw console.error(r),new Error("Error in save upload provider")}}if(typeof window<"u")throw new Error("adobe.ts can only be imported on the server side");var{locales:Uc}=G();var Kn=async e=>{let t={"x-api-key":process.env.ADOBE_STOCK_API_KEY||"EMPTY_ADOBE_KEY","X-Product":"BespokeApp/0.1"};return t};var rr;if(process.env.ADOBE_STOCK_API_KEY)try{rr={search:async(e,t)=>await Or.get("https://stock.adobe.io/Rest/Media/1/Search/Files",{headers:await Kn(!1),params:{locale:"en_US","search_parameters[limit]":24,"search_parameters[offset]":t*24,"search_parameters[words]":e,"search_parameters[filters][content_type:photo]":"1","search_parameters[filters][content_type:image]":"1","search_parameters[filters][orientation]":"horizontal",result_columns:["id","stock_id","thumbnail_url","is_licensed"]}}).then(r=>r.data.files),get:async e=>await Or.get("https://stock.adobe.io/Rest/Media/1/Files",{headers:await Kn(!1),params:{locale:"en_US",ids:e,result_columns:["id","thumbnail_url","creator_name","title","thumbnail_1000_url","details_url","category"]}}).then(t=>t.data.files[0])};}catch{}async function Hn(e,t){try{let r={prompt:t.prompt||"",page:t.page||1};if(!rr)throw new Error("Adobe API Key not configured");let n=(await rr.search(r.prompt,r.page)).map(a=>({id:a.id,source:a.thumbnail_url}));return {meta:{prompt:$(r.prompt),page:$(`${r.page}`)},results:n}}catch(r){throw console.error(r),new Error("Error in search Adobe provider")}}async function jn(e,t){try{let{content_id:r,image_id:o}=t,n={content_id:$(`${r}`)||"",id:$(`${o}`)||""};if(!rr)throw console.warn("Adobe is not initialized. Check the credentials"),new Error("Adobe is not initialized. Check the credentials");let a=await rr.get(o),s;if(a){let i=await e.search.findOne({where:{content_id:r}}),c=a.details_url,l=await e.image.findOne({where:{url:c}});if(i){if(l)await e.search.update({image_id:l.id},{where:{content_id:r}});else {let p=await Or.get(a.thumbnail_1000_url,{responseType:"arraybuffer"}).then(R=>R.data),d={url:c,author:a.creator_name,license:"ADOBE, TO-DO"},m=await e.image.create(d);await e.image_content.destroy({where:{id:m.id}});let f=Uc.map(R=>({id:m.id,locale:R,meta:a.title||a.description}));await e.image_content.bulkCreate(f),await e.search.update({image_id:m.id},{where:{content_id:r}}),await Ae(e,m.id,p);}let u=await e.search.findOne({where:{content_id:r},include:ge});u&&u.image&&(u.image.thumb=!!u.image.thumb);}else throw new Error("Error updating Search")}else throw new Error("Malformed URL");return {meta:{...n},results:s}}catch(r){throw console.error(r),new Error("Error in save adobe provider")}}var{locales:Fc}=G(),vr=process.env.PIXABAY_API_KEY,Wn="https://pixabay.com/api/";async function Yn(e,t){try{let r={prompt:t.prompt||"",page:t.page||1};if(!vr)throw new Error("Pixabay API Key not configured");let o=encodeURIComponent(r.prompt),n=`${Wn}?key=${vr}&q=${o}&per_page=${24}&page=${r.page}&image_type=photo&orientation=horizontal&safesearch=true`,i=(await Or.get(n)).data.hits?.map(c=>({id:c.id,source:c.previewURL||c.webformatURL}))||[];return {meta:{prompt:$(r.prompt),page:$(`${r.page}`)},results:i}}catch(r){throw console.error(r),new Error("Error in search pixabay provider")}}async function Jn(e,t){try{let{content_id:r,image_id:o}=t,n={content_id:$(`${r}`)||"",id:$(`${o}`)||""};if(!vr)throw console.warn("Pixabay is not initialized. Check the credentials"),new Error("Pixabay is not initialized. Check the credentials");let a=`${Wn}?key=${vr}&id=${o}`,i=(await Or.get(a)).data,c;if(i.hits&&i.hits.length>0){let l=i.hits[0],u=await e.search.findOne({where:{content_id:r}}),p=l.pageURL,d=await e.image.findOne({where:{url:p}});if(u){if(d)await e.search.update({image_id:d.id},{where:{content_id:r}});else {let f=l.largeImageURL||l.webformatURL||l.imageURL;if(!f)throw new Error("Pixabay image URL not available");let R=await Or.get(f,{responseType:"arraybuffer"}).then(P=>P.data),h={url:p,author:l.user||`Pixabay User ${l.user_id}`,license:"Free Pixabay License: https://pixabay.com/service/license/"},S=await e.image.create(h);await e.image_content.destroy({where:{id:S.id}});let x=Fc.map(P=>({id:S.id,locale:P,meta:l.tags||l.description||""}));await e.image_content.bulkCreate(x),await e.search.update({image_id:S.id},{where:{content_id:r}}),await Ae(e,S.id,R);}let m=await e.search.findOne({where:{content_id:r},include:ge});m&&m.image&&(m.image.thumb=!!m.image.thumb);}else throw new Error("Error updating Search")}else throw new Error("Image not found in Pixabay");return {meta:{...n},results:c}}catch(r){throw console.error(r),new Error("Error in save pixabay provider")}}if(typeof window<"u")throw new Error("imageSave.ts can only be imported on the server side");var Vc={local:$n,flickr:Un,unsplash:qn,upload:Gn,adobe:jn,pixabay:Jn};function st(e,t){let r=Vc[t];if(!r)throw new T(500,`Wrong provider dbImageSaveFactory.ts: ${t}`);return I(o=>r(e,o))}if(typeof window<"u")throw new Error("imageSearch.ts can only be imported on the server side");var $c={local:Vn,flickr:Dn,unsplash:zn,adobe:Hn,pixabay:Yn};function Mt(e,t,r){let o=$c[t];if(!o)throw new T(500,`Wrong provider dbImageSearchFactory.ts: ${t}`);return I(n=>o(e,n,r))}var Wc=e=>(e.dimensions&&e.dimensions.forEach(t=>{t.variants&&t.variants.forEach(r=>{r.members_count&&(r.members_count=parseInt(r.members_count,10));});}),e);function Cr(e){let{report:t,search:r}=e;return o;async function o(n){let a=n?.report_id?Number(n.report_id):void 0,s=!(typeof n?.count<"u"&&(n.count==="false"||n.count===false)),i={attributes:["id","name",[literal("COALESCE(NULLIF(settings ->> 'order', '')::INTEGER, 0)"),"ordering"],[literal("COALESCE(NULLIF(settings ->> 'hide', '')::BOOL, false)"),"hide"]],where:{[Op.or]:[where(cast(json("settings.hide"),"boolean"),false),literal("NOT (settings::jsonb ? 'hide')")]},order:[["ordering","ASC"]],include:[{attributes:["id","name","ordering"],association:"dimensions",separate:true,order:[["ordering","ASC"]],include:[{attributes:["id","name","slug",[literal("COALESCE(NULLIF(settings ->> 'order', '')::INTEGER, 0)"),"ordering"]],association:"variants",separate:true,group:["variant.id"],order:[["ordering","ASC"],["id","ASC"]]}]}]};return a&&(i.where={...i.where,id:a}),s&&i.include&&i.include[0]&&(i.include[0].include[0].attributes.push([fn("COUNT",col("members.id")),"members_count"]),i.include[0].include[0].include=[{model:r,attributes:[],as:"members",where:{visible:true}}]),{data:(await t.findAll(i)).map(l=>({...Wc(l.toJSON()),mode:l.dimensions.length===1?Ce.UNILATERAL:Ce.MULTILATERAL}))}}}function Qn(e){return async()=>(await nt(e,true),{error:false})}var{locales:Yc,localeDefault:Jc}=G(),Qc=(e,t,r,o,n)=>{if(!e)return [];let a=[];t.forEach(i=>{let c=e.filter(l=>l.metadata.report.id===i.id);if(c.length>0)if(i.mode===Ce.UNILATERAL){let l=i.dimensions[0];l.variants.forEach(u=>{let p=c.filter(d=>d.metadata.dimension.id===l.id&&d.metadata.variant.id===u.id);p.length>0&&(a=a.concat(p.map(d=>({path:`/${u.slug}/${d.slug}`,name:d.name,zvalue:d.zvalue,rank:d.rank,report:{id:i.id,name:i.name,mode:i.mode},members:[d],id:`r-${i.id}-${[d].map(m=>`${m.id}`).join("-")}`}))));});}else i.mode;});let s=n?.toUpperCase()==="ASC"?1:-1;if(r==="name")return a.sort((i,c)=>i.name.localeCompare(c.name)*(s*-1));if(r==="zvalue")return a.sort((i,c)=>((i.zvalue||0)-(c.zvalue||0))*s);if(r==="rank")return a.sort((i,c)=>{let l=i.rank??Number.MAX_SAFE_INTEGER,u=c.rank??Number.MAX_SAFE_INTEGER;return (l-u)*s});if(r?.startsWith("attr.")){let i=r.replace("attr.","");return /^[a-zA-Z0-9_-]+$/.test(i)?a.sort((c,l)=>{let u=parseFloat(c.members?.[0]?.metadata?.attributes?.[i])||c.zvalue||0,p=parseFloat(l.members?.[0]?.metadata?.attributes?.[i])||l.zvalue||0;return (u-p)*s}):a}return o?a.sort((i,c)=>{let l=i.zvalue||0,u=o.toLowerCase(),p=i.name.toLowerCase();p===u?l+=1e3:p.startsWith(u)&&(l+=100);let d=c.zvalue||0,m=c.name.toLowerCase();return m===u?d+=1e3:m.startsWith(u)&&(d+=100),d-l}):a},Zc=(e,t)=>{if(!e)return [];let r,o,n;return e.map(a=>(r={...t.find(s=>s.id===a.report_id)},o={...r.dimensions.find(s=>s.id===a.dimension_id)},n={...o.variants.find(s=>s.id===a.variant_id)},delete r.dimensions,delete o.variants,{name:a.name,zvalue:a.zvalue,rank:a.rank,metadata:{id:a.id,slug:a.slug,report:r,dimension:o,variant:n,attributes:a.contentByLocale?.[0]?.attributes||{}},id:a.content_id,slug:a.slug}))};function Zn(e,t){let r=Bt(e,t),o=Cr(e);return n;async function n(a){let s=a.format||"results",i=Yc.includes(a.locale)?a.locale:Jc,c=a.origin||"flexsearch",l=process.env.REPORTS_EXTERNAL_SEARCH&&c==="typesense",u=await r({...a,format:"plain",locale:$(i),visible:true,excludeMultilateral:true});if(l)return u;{let p=u.results?u.results:[],m=(await o()).data,f=Zc(p,m);return {meta:{...u.meta,origin:"flexsearch",format:s},results:Qc(f,m,a.sort,a.query,a.direction)}}}}function Xn(e){return async t=>{try{let{variantPaths:r}=t,o=[];if(r)for(let n=0;n<r.length;n++){let a=r[n];(await e.search.findAll({attributes:["slug"],where:{variant_id:a.variantId}})).forEach(i=>{o.push(`/${a.prefix}/${a.variantSlug}/${i.slug}`);});}return {...t,paths:o,revalidated:0,samples:[]}}catch(r){throw new T(r.response?.status||500,r.message)}}}function ea(){return async e=>{try{let{target:t}=e;return {target:t}}catch(t){throw new T(t.response?.status||500,t.message)}}}function he(e,t){let r=[],o=a=>Object.values(t).reduce((i,c)=>("inputs"in c&&c.inputs.includes(a)&&(i.push(c.id),i=i.concat(o(c.id))),i),[]);e.forEach(a=>{r=r.concat(o(a));});let n=[];return r.forEach(a=>{n.includes(a)||n.push(a);}),n}function el(e,t){return e.some(r=>t.includes(`role.${r}`))}function ta(e){let{report:t}=e;return r;async function r(o){let n=await t.findByPk(o.report_id,{include:{association:"sections",separate:true,where:{id:o.section_id},include:[{association:"blocks",separate:true,include:[{association:"contentByLocale",separate:true,where:{locale:{[Op.or]:[o.locale,"logic"]}}},{association:"inputs"},{association:"consumers"}]}]}}).then(s=>s&&s.sections&&Array.isArray(s.sections)?s.sections.reduce((i,c)=>{let l=c.blocks.map(u=>{let p=u.toJSON();return p.inputs=p.inputs.map(d=>d.id),p.consumers=p.consumers.map(d=>d.id),p});return i.concat(l)},[]):[]),a=n.filter(s=>s.settings&&s.settings.access&&Array.isArray(s.settings.access)&&Array.isArray(o.roles)&&(s.settings.access.includes("private")||el(o.roles,s.settings.access))).map(s=>s.id);return a=a.concat(he(a,n)),{params:{...o},data:n.filter(s=>a.includes(s.id))}}}var ol=Object.keys(ho).filter(e=>e.indexOf("Icon")===0);async function ra(){return {meta:{provider:"tabler"},results:ol}}async function oa(e){let t=ho[e.name]?ho[e.name]:()=>"";return renderToString(createElement(t))}var nl={tabler:ra};function na(e){let t=nl[e];if(!t)throw new T(500,`Wrong provider dbListIconsFactory.ts: ${e}`);return I(()=>t())}var al={tabler:oa};function aa(e){return I(t=>{let r=al[e];if(!r)throw new T(500,`Wrong provider dbReadIconFactory.ts: ${t.provider}`);return r({name:t.name,provider:e})})}function sa(){return e;async function e(){return {secrets:vt()}}}function it(e,t,r){return rt().then(o=>{Object.assign(r,Ot(o));})}function Ot(e,t,r){let o={},n=Ke(t||{providers:[]});return t&&n.actions&&n.source==="custom"?(o.searchRole=I(n.actions.searchRole()),o.searchUser=I(n.actions.searchUser()),o.readUser=I(n.actions.readUser()),o.updateUser=I(n.actions.updateUser())):n.source==="auth0"&&(o.searchRole=I(Do()),o.searchUser=I(Uo()),o.readUser=I(Fo()),o.updateUser=I(Vo())),{...Bn(e),searchReport:I(Zn(e,r)),readMetadata:I(Cr(e)),regenerateSearch:I(Qn(e)),imageFlickrSearch:Mt(e,"flickr",r),imageLocalSearch:Mt(e,"local",r),imageUnsplashSearch:Mt(e,"unsplash",r),imageAdobeSearch:Mt(e,"adobe",r),imagePixabaySearch:Mt(e,"pixabay",r),imageFlickrSave:st(e,"flickr"),imageLocalSave:st(e,"local"),imageUnsplashSave:st(e,"unsplash"),imageUploadSave:st(e,"upload"),imageAdobeSave:st(e,"adobe"),imagePixabaySave:st(e,"pixabay"),urlProxy:kr(e),searchRole:o.searchRole,searchUser:o.searchUser,readUser:o.readUser,updateUser:o.updateUser,updateMyData:I($o()),revalidateReport:I(Xn(e)),revalidateUrl:I(ea()),readPrivateBlocks:I(ta(e)),listTablerIcons:na("tabler"),readTablerIcon:aa("tabler"),readEnvSecrets:I(sa())}}async function Ro(e){try{let t=new sl.IncomingForm,r=await new Promise((o,n)=>{t.parse(e,(a,s,i)=>{if(a){console.error("Error in formidable parse function inside internal parseBody.ts",a),n(a);return}o({fields:s,files:i});});});return {...r.fields,files:r.files}}catch(t){return {error:t}}}function De(e,t){let r=le(e,"create",t),o=le(e,"read",t),n=le(e,"update",t),a=le(e,"delete",t),s=le(e,"updateBulk",t),i=le(e,"createBulk",t);return [O("POST",`create/bulk/${t}`,c=>{let{body:l}=c,{files:u,...p}=l,d=Object.keys(p).map(m=>p[m]);return i(d)},[z.EDITOR]),O("POST",`create/${t}`,c=>{let{body:l}=c;return r(l)},[z.EDITOR]),O("GET",`read/${t}`,c=>{let l=c.query,u=q(l.id).map(te);return o({id:u,include:Xt(l.include)})}),O("POST",`update/${t}`,c=>{let{body:l}=c;return n(l)},[z.EDITOR]),O("POST",`update/bulk/${t}`,c=>{let{body:l}=c,{files:u,...p}=l,d=Object.keys(p).map(m=>p[m]);return s(d)},[z.EDITOR]),O("DELETE",`delete/${t}`,c=>{let l=te(c.query.id);return a(l)},[z.EDITOR])]}function ia(e){let{validateVariantSlug:t}=e;return [...De(e,"variant"),O("GET","validate/variant",r=>{let o=r.query,n=te(o.dimension);return t({dimension:n,slug:Tr(o.slug)})},[z.EDITOR])]}function ca(e){return De(e,"datasource").map(r=>({...r,roleRequired:[z.EDITOR]}))}function ct(e,t){let r=`image${Se(t)}Save`,o=e[r];return O("POST",`images/save/${t}`,n=>{let a=n.body;if(!a.content_id)throw new T(400,"Missing 'content_id' parameter.");if(!a.image_id)throw new T(400,"Missing 'image_id' parameter.");return o(a)},[z.EDITOR])}function Nt(e,t){let r=`image${Se(t)}Search`,o=e[r];return O("GET",`images/search/${t}`,async n=>{let a=q(n.query.prompt)[0];if(!a)throw new T(400,"Empty 'prompt' param.");return o({prompt:a,page:te(n.query.page)})},[z.EDITOR])}function la(e){let{readMetadata:t}=e;return O("GET","read/metadata",r=>t(r.query))}function ua(e){let{regenerateSearch:t}=e;return O("POST","search/regenerate",()=>t(void 0),[z.EDITOR])}function pa(e){let{searchReport:t}=e;return O("GET","search/reports",r=>{let o=cl(r.query);return t(o)})}function cl(e){return {...er(e),format:q(e.format)[0]}}function da(e){let{urlProxy:t}=e;return O("GET","url/proxy",(r,o,n)=>{let{url:a,method:s="GET",wrapper:i="true"}=r.query;if(!a)throw new T(400,"Missing URL parameter");let c=[];return n&&n.user&&n.user.bespoke_roles&&(c=n.user.bespoke_roles),t({url:Array.isArray(a)?a.join(","):a,method:q(s)[0]==="POST"?"POST":"GET",user_roles:c,wrapper:i!=="false",session:n})})}function ma(e){let{readMetadata:t,revalidateReport:r}=e;return O("GET","revalidate/report",async(o,n)=>{let{reportId:a,profilePrefix:s}=o.query;if(!a||!s)throw new T(400,"Missing URL parameter in revalidate factory: reportId or profilePrefix");try{let i=parseInt(`${a}`,10),c=`${s}`.split("/").filter(f=>f!=="").join("/"),l=[],u=await t({}).then(f=>f.ok?f.data.data.find(R=>R.id===i):[]);u&&u.mode===Ce.UNILATERAL&&u.dimensions.forEach(f=>{f.variants.forEach(R=>{l.push({prefix:c,variantId:R.id,variantSlug:R.slug});});});let p=await r({profilePrefix:c,reportId:i,variantPaths:l}),d=[],m=0;return p.ok&&(m=p.data.paths.length,d=p.data.paths.slice(0,5),Promise.all(p.data.paths.map(f=>{let R;try{R=n.revalidate(f,{unstable_onlyGenerated:!0});}catch(h){console.error("error",f,h);}return R}))),{ok:!0,status:200,data:{reportId:a,revalidated:m,samples:d}}}catch(i){throw console.error(i),new T(500,"Error revalidating")}},[z.EDITOR])}function fa(){return O("GET","revalidate/url",async(e,t)=>{let{target:r}=e.query;if(r)try{return t.revalidate(r,{unstable_onlyGenerated:!0}),{ok:!0,status:200,data:{target:r}}}catch(o){throw console.error(o),new T(500,"Error revalidating")}else throw new T(400,"Missing target parameter in revalidate factory")},[z.ADMIN,z.EDITOR,z.WRITER])}function lt(e=process.env){let t=e.BESPOKE_JWT_SECRET;return t||(console.warn("WARNING: Using default BESPOKE_JWT_SECRET. This is insecure and not recommended for production environments."),"BESPOKE_JWT_SECRET")}var{localeDefault:ul}=G(),ga=lt();function ya(e){let{readPrivateBlocks:t}=e;return O("POST","read/blocks/private",(r,o,n)=>{let{userToken:a}=r.body,s=null;if(a&&ga)try{let l=Gi.verify(a,ga);s=typeof l=="object"&&l!==null&&"roles"in l?l.roles:[];}catch(l){console.error("Failed to verify user token:",l);}if(!s&&(!n||!n.user))throw new T(401,"Unauthorized. Must be logged in or provide a valid token.");let i=a&&s?s:n&&n.user?n.user.bespoke_roles:[],c={report_id:parseInt(r.body.report_id,10),locale:r.body.locale||ul,roles:i,section_id:r.body.section_id||[]};return t(c)})}function ha(e){let{readEnvSecrets:t}=e;return O("GET","read/secrets",()=>t({}),[z.EDITOR])}function Ra(e){let{searchRole:t}=e;return O("GET","auth/search/roles",(r,o)=>t(""),[z.EDITOR,z.ADMIN])}function ba(e){let{searchUser:t}=e;return O("GET","auth/search/users",r=>t({query:r.query.query,role_id:r.query.role_id,page:r.query.page||0}),[z.ADMIN])}function Sa(e){let{readUser:t}=e;return O("GET","auth/read/user",r=>t(r.query.user_id),[z.ADMIN])}function Ea(e){let{updateUser:t}=e;return O("POST","auth/update/user",async r=>{let o=r.body;return await t(o)},[z.ADMIN])}function Aa(e){let{updateUser:t,readUser:r}=e;return O("POST","auth/update/me",async(o,n,a)=>{let{report_id:s,user_metadata:i}=o.body,c={user_id:a.user.id,user_metadata:{}};try{let{user:l}=a;return a&&l&&s&&(l.bespoke_app_metadata&&l.bespoke_app_metadata.reports&&Array.isArray(l.bespoke_app_metadata.reports)?c.app_metadata={...l.bespoke_app_metadata}:c.app_metadata={reports:[]},c.app_metadata.reports.push({reportId:s})),i&&(c.user_metadata={...l.bespoke_app_metadata,...i}),await t(c),{ok:!0,status:200,wrapper:!0,data:{ok:!0,message:"User & session updated"}}}catch(l){return {ok:false,status:500,error:l.message}}},[])}async function pl(e){try{return "JVBERi0xLjcKJYGBgYEKCjYgMCBvYmoKPDwKL0ZpbHRlciAvRmxhdGVEZWNvZGUKL0xlbmd0aCAxMTYKPj4Kc3RyZWFtCnicHYqxCsJAEAX79xVbC+Lmbm/3DoKFeEcKG2F/QCSKYgol+P0mMkwxMG8cHEwrnzt2w/j6jvPjetkalyyZLReKTH5DEPITuv/aUWKKiz6hTywiGliTZWNtFkyWitr0qEWrWmBbq2ndkz/hG1THGT/eextGCmVuZHN0cmVhbQplbmRvYmoKCjcgMCBvYmoKPDwKL0ZpbHRlciAvRmxhdGVEZWNvZGUKL1R5cGUgL09ialN0bQovTiA1Ci9GaXJzdCAyNgovTGVuZ3RoIDM2Mgo+PgpzdHJlYW0KeJzVUt9LwzAQfs9fcY/6IEnTH2llDLa1VZChbIKi+JC1YVRGIm0m87/3ru0cexCfpXwkd/cl+a73BSBAQhRBCCqFCOJQQgwqCGAyYfzx68MAf9Bb0zF+19QdvCJHwAreGF+4vfUQsOmUnbgL7fXObdlwCAIiHxkPrav3lWlhUhZlKYQSQiQRIhFC5rguEBlCYow1meIeoaIRmFOhEOEMa+WARA1nqN5z4/F8gStyE+LkAzdKh/jnXXqrGO6Qf+nJpowvXZ1rb+Aiv5ZCRiKTsQyjTKYvl/g7WqO9+7/N9fobZ3/t8GzONF4acmvIA/2U+cp0bt9WOHbilQ4rtLk1u0/jm0pfKZGlqFOlGXpsNAZ/vt+8m6qnUlgc/M3ak4YhQbmlqRs9dwd0n8APOwDshDw4s9Z5cmXvR+tRDUXJ6NEzySSI8fV+4/uQkgHjc92ZXupJJ4qwlasbuwX+1NiZ7Zpjgm78BkHDxfcKZW5kc3RyZWFtCmVuZG9iagoKOCAwIG9iago8PAovU2l6ZSA5Ci9Sb290IDIgMCBSCi9JbmZvIDMgMCBSCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlCi9UeXBlIC9YUmVmCi9MZW5ndGggNDEKL1cgWyAxIDIgMiBdCi9JbmRleCBbIDAgOSBdCj4+CnN0cmVhbQp4nBXEwQ0AIAwDsUuKxJf9JUZippb4YaDbbEhKTpWWOCDezxcGYeEDtQplbmRzdHJlYW0KZW5kb2JqCgpzdGFydHhyZWYKNjY5CiUlRU9G"}catch(t){throw console.error("Error generating PDF:",t),t}}function Ta(){return O("POST","pdf",async(e,t)=>{let{slugs:r,path:o}=e.body;if(!r||!o)throw new T(400,"Missing path parameter in request.");{new URL(o,e.headers.origin);return {ok:true,status:200,data:await pl()}}})}function _a(e,t){let r=`list${Se(t)}Icons`,o=e[r];return O("GET",`list/icons/${t}`,async()=>o({}),[z.EDITOR])}function wa(e,t){let r=`read${Se(t)}Icon`,o=e[r];return O("GET",`read/icons/${t}/icon.svg`,async n=>o({provider:t,name:n.query.name}))}function ka(){return O("GET","report",async(e,t)=>{let{report:r,prefix:o,locale:n}=e.query;if(!r)throw new T(400,"Missing report parameter.");if(!o)throw new T(400,"Missing report parameter.");if(!n)throw new T(400,"Missing report parameter.");try{let s=await(await fetch(`${process.env.NEXT_PUBLIC_REPORTS_BASE_URL}/${n}${o}${r}`)).text(),l=new dl().parseFromString(s,"text/html").getElementById("__NEXT_DATA__")?.textContent,u=JSON.parse(l).props;return {ok:!0,status:200,data:{variables:u.pageProps.initialState.variables,status:u.pageProps.initialState.status}}}catch(a){throw console.error(a),new T(500,"Couldn't find page cache")}})}var fl=lt();function gl(e){let t={email:e.user.email,name:e.user.name,roles:e.user.bespoke_roles||[]};return Gi.sign(t,fl,{expiresIn:"1min"})}function xa(){return O("POST","users/generate-token",async(e,t,r)=>{if(!r||!r.user)throw new T(401,"Unauthorized. Must be logged in to generate a token.");try{return {ok:!0,status:200,wrapper:!1,data:{token:gl(r)}}}catch(o){throw console.error("Error generating token:",o),new T(500,"Internal Server Error")}})}var hl=lt(),Rl=e=>!!Gi.verify(e,hl);function Pa(){return O("POST","users/validate-token",async(e,t)=>{let{token:r}=e.body;try{return Rl(r)?{ok:!0,status:200,wrapper:!1,data:{success:!0}}:{ok:!1,status:401,error:"Invalid token"}}catch{return {ok:false,status:401,error:"Invalid token"}}})}var El=Ie();function bo(e,t){return `${e.toUpperCase()} ${t.toLowerCase()}`}function Al(e,t,r){let o=Ot(e,t,r);return Object.fromEntries([...De(o,"block"),...De(o,"dimension"),...De(o,"formatter"),...De(o,"report"),...De(o,"section"),...ca(o),...ia(o),...Fn(o),pa(o),la(o),ua(o),ct(o,"flickr"),ct(o,"local"),ct(o,"unsplash"),ct(o,"upload"),ct(o,"adobe"),ct(o,"pixabay"),Nt(o,"flickr"),Nt(o,"local"),Nt(o,"unsplash"),Nt(o,"adobe"),Nt(o,"pixabay"),da(o),Ra(o),ba(o),Sa(o),Ea(o),Aa(o),ma(o),fa(),ya(o),Ta(),_a(o,"tabler"),wa(o,"tabler"),ka(),ha(o),xa(),Pa()].map(({handler:n,method:a,path:s,roleRequired:i})=>[bo(a,s),{handler:n,roleRequired:i}]))}function Tl(e){return (t,r,o)=>new Promise((n,a)=>{e(o)(t,r,s=>s instanceof Error?a(s):n(s));})}var _l=Tl(bl);function wl(e,t){let r=rt().then(o=>Al(o,e,t));return async function(n,a){await _l(n,a,{methods:["GET","HEAD","PUT","PATCH","POST","DELETE"],origin:"*"});let{query:s,method:i}=n,{path:c,...l}=s;if(c&&i){let u=await r.then(p=>{let d=[].concat(c).join("/"),m=bo(i,d);return p[m]});if(u){let p=await me(n,a,e);if(u.roleRequired){if(!p)return a.status(401).json({error:"Unauthorized. Must be logged in."});let d=p&&p.user&&p.user.bespoke_roles&&Array.isArray(p.user.bespoke_roles)?p.user.bespoke_roles:[];if(Array.isArray(u.roleRequired)&&u.roleRequired.length>0&&!dr(d,u.roleRequired))return a.status(402).json({error:"Forbidden. Not enough roles."})}if(u.handler)return ["POST","DELETE"].includes(i)&&(n.body=await Ro(n)),Promise.resolve(n).then(d=>u.handler(d,a,p||void 0)).then(async d=>{if(d&&"error"in d)throw new T(d.status,d.error);if(d.ok)if(d.data instanceof Buffer){let m=await Sl(d.data),f=Buffer.byteLength(d.data);a.writeHead(d.status,{"Content-Type":m?m.mime:"image/jpeg","Content-Length":f.toString()}).send(d.data);}else n.url&&n.url.indexOf("/icon.svg?name=")>0?(a.setHeader("Content-Type","image/svg+xml"),a.status(d.status).send(d.data)):a.status(d.status).json(d.wrapper?{data:d.data}:d.data);}).catch(d=>{El&&console.error("Backend Error",d),a.status(d.code).json({error:d.message});})}}else c||await r.then(console.info);return a.status(404).json({error:"No matching route",path:c,query:l})}}var kl=e=>{let t=e;return async function(r,o){let n=await t({test:"pala"});return o.json(n)}},xl=kl;var Rt={};_s(Rt,{addBlockToState:()=>lr,addRunConsumersRunning:()=>ns,cloneEntity:()=>Qa,createEntity:()=>Wa,deleteEntity:()=>Ja,deleteQueryParam:()=>Cu,readEntity:()=>ne,readEnvSecrets:()=>zu,readMember:()=>ze,readMetadata:()=>cr,readPrivateBlocks:()=>Fu,readUser:()=>Nu,recalculateVariables:()=>is,removeBlocksFromState:()=>qe,removeDataSourceLogic:()=>ur,removeRunConsumersRunning:()=>as,reportSearch:()=>Pu,resetSectionState:()=>os,revalidateReport:()=>$u,revalidateUrl:()=>Vu,searchMember:()=>Iu,searchRegenerate:()=>vu,searchRole:()=>Mu,searchUser:()=>Ou,setCurrentLocale:()=>wu,setPreferredLocale:()=>ku,setPreviews:()=>_u,setQueryParam:()=>Lu,setSectionState:()=>rs,setStatus:()=>ts,updateEntity:()=>Ya,updateMyData:()=>Uu,updateUser:()=>Du,urlProxy:()=>Bu,variantValidateSlug:()=>xu});function Re(e,t){return e.request(t).then(r=>{let{status:o,data:n}=r;return "error"in n?{ok:false,status:o,error:n.error}:{ok:true,status:o,wrapper:n.wrapper,data:n.data}},r=>{if("isAxiosError"in r){let{status:o,data:n}=r.response||{status:500};return {ok:false,status:o,error:n?.error??r.message}}return {ok:false,status:500,error:r.message}})}function re(e,t,r){let o=typeof t=="string"?{url:t}:t;return n=>Re(e,{...o,method:"GET",params:r?r(n):n})}function oe(e,t,r){let o=typeof t=="string"?{url:t}:t;return n=>Re(e,{...o,method:"POST",data:n})}function Ue(e,t,r){let o=typeof t=="string"?{url:t}:t;return n=>Re(e,{...o,method:"DELETE",params:r?r(n):n})}function ut(e,t){return r=>Re(e,{method:"POST",url:`images/save/${t}`,params:{prompt:r.prompt,provider:t}})}function Dt(e,t){return r=>Re(e,{method:"GET",url:`images/search/${t}`,params:{prompt:r.prompt,page:r.page,provider:t}})}function va(e,t){return ()=>Re(e,{method:"GET",url:`list/icons/${t}`,params:{provider:t}})}function Ia(e,t){return r=>Re(e,{method:"GET",url:`read/icons/${t}/icon.svg`,params:{name:r.name}})}var pt=e=>({id:e}),vl=e=>{if(e.mode==="slugs"){let t=e.slugs.map(r=>[r.variantSlug,r.memberSlug].join("/")).join(",");return {...e,slugs:t}}return ["related","whole"].includes(e.mode)?{...e}:{...e,[e.mode]:e[e.mode].join(",")}};function or(e){let t=Or.create({baseURL:e});return {createBulkBlock:oe(t,"create/bulk/block"),createBlock:oe(t,"create/block"),createDimension:oe(t,"create/dimension"),createFormatter:oe(t,"create/formatter"),createReport:oe(t,"create/report"),createSection:oe(t,"create/section"),createVariant:oe(t,"create/variant"),createDatasource:oe(t,"create/datasource"),deleteBlock:Ue(t,"delete/block",pt),deleteDimension:Ue(t,"delete/dimension",pt),deleteFormatter:Ue(t,"delete/formatter",pt),deleteReport:Ue(t,"delete/report",pt),deleteSection:Ue(t,"delete/section",pt),deleteVariant:Ue(t,"delete/variant",pt),deleteDatasource:Ue(t,"delete/datasource",pt),readBlock:re(t,"read/block"),readDimension:re(t,"read/dimension"),readFormatter:re(t,"read/formatter"),readReport:re(t,"read/report"),readSection:re(t,"read/section"),readVariant:re(t,"read/variant"),readDatasource:re(t,"read/datasource"),updateBulkBlock:oe(t,"update/bulk/block"),updateBlock:oe(t,"update/block"),updateDimension:oe(t,"update/dimension"),updateFormatter:oe(t,"update/formatter"),updateReport:oe(t,"update/report"),updateSection:oe(t,"update/section"),updateVariant:oe(t,"update/variant"),updateDatasource:oe(t,"update/datasource"),searchReport:re(t,"search/reports"),validateVariantSlug:re(t,"validate/variant"),readMember:re(t,"read/members",vl),readMemberImage:re(t,{url:"member/image",responseType:"blob"}),searchMember:re(t,"search/members"),updateMember:re(t,"update/members"),imageLocalSearch:Dt(t,"local"),imageLocalSave:ut(t,"local"),imageFlickrSearch:Dt(t,"flickr"),imageFlickrSave:ut(t,"flickr"),imageUnsplashSearch:Dt(t,"unsplash"),imageUnsplashSave:ut(t,"unsplash"),imageUploadSave:ut(t,"upload"),imageAdobeSearch:Dt(t,"adobe"),imageAdobeSave:ut(t,"adobe"),imagePixabaySearch:Dt(t,"pixabay"),imagePixabaySave:ut(t,"pixabay"),readMetadata:re(t,"read/metadata"),regenerateSearch:oe(t,"search/regenerate"),urlProxy:re(t,"url/proxy"),searchRole:re(t,"auth/search/roles"),searchUser:re(t,"auth/search/users"),readUser:re(t,"auth/read/user"),updateUser:oe(t,"auth/update/user"),updateMyData:oe(t,"auth/update/me"),revalidateReport:re(t,"revalidate/report"),revalidateUrl:re(t,"revalidate/url"),readPrivateBlocks:oe(t,"read/blocks/private"),listTablerIcons:va(t,"tabler"),readTablerIcon:Ia(t,"tabler"),readEnvSecrets:re(t,"read/secrets")}}var Ll=Xt(process.env.REPORTS_LOGGING),dt=Bl;function Bl(e,t,r,o,n=void 0,a){let s={},i=[],{locale:c}=fe(a);try{if(t){let l=new Proxy(console,{get(p,d){return Ml(d,"log","debug","info","warn","error")?(...m)=>{i.push(`${d} ${Date.now()} - ${m.map(f=>format(f)).join(" ")}`),Ll&&p[d](...m);}:p[d]}}),u;return n?u=new Function(e,"console","libs","formatters","locale","variables",r)(t,l,Je,o,c,n):u=new Function(e,"console","libs","formatters","locale",r)(t,l,Je,o,c),typeof u=="object"&&Object.keys(u).length>0&&Object.assign(s,u),{vars:s,error:null,log:i,output:u}}return {vars:s,error:"Invalid API Link",log:i}}catch(l){return {vars:s,error:l.message,log:i}}}function Ml(e,...t){return t.includes(e)}var So=(e,t,r)=>{let{variables:o}=r,n=s=>s.allowed==="never"?false:!s.allowed||s.allowed==="always"||o[s.allowed],a={...e};return Object.keys(a).forEach(s=>{typeof a[s]=="string"?a[s]=ye(a[s],t,r):Array.isArray(a[s])?a[s]=a[s].filter(n).map(i=>typeof i=="object"?So(i,t,r):typeof i=="string"?ye(i,t,r):i):typeof a[s]=="object"&&a[s]!==null&&!(a[s]instanceof Date)&&(a[s]=So(a[s],t,r));}),a},Lr=So;var Ca=e=>Array.isArray(e)?e.map(t=>typeof t=="string"?{allowed:"always",label:t,id:t}:{allowed:"always",label:t.id,...t}):[];var Ol=(e,t,r)=>{if(!r)return false;if(e===Ze.SINGLE)return r.find(n=>n.id===t);let o=Array.isArray(t)?t:t.split(",");return Array.isArray(o)&&o.every(n=>r.map(a=>a.id).includes(n))},Eo=Ol;function Ao(e,t,r,o,n=false){let{variables:a}=fe(o),s=Lr({logic:t},r,o).logic,i=dt("variables",a,s,r,void 0,o),{vars:c,log:l,error:u}=i,p=c.type||Ze.SINGLE,d=c.component||"Selector",m=c.hideLabel||"false",f=c.resetSectionVars||"false",R=c.name||"Unlabeled Selector",h=Ca(c.options||[]),S=A=>p===Ze.MULTI&&!Array.isArray(A)?[A]:A,x=c.defaultValue,P;if(x&&(x=S(x),Eo(p,x,h)&&(P=x)),!P){let A=h&&h[0]&&h[0].id||h[0]||"";P=S(A);}if(n&&typeof window<"u"){let A=`selector${e}id`,F=new URLSearchParams(window.location.search),N=Object.fromEntries(F)[A];N&&!Eo(p,N,h)&&N!==void 0&&(F.delete(A),window.history.replaceState(null,null,`?${F.toString()}`));}return {config:{name:R,type:p,options:h,defaultValue:P,component:d,hideLabel:m,resetSectionVars:f},log:l,error:u}}function To(e,t,r){if(!e)return false;let o=Array.isArray(r)?r:r.split(",");return Array.isArray(o)&&o.every(n=>e.map(a=>`${a[`${t} ID`]}`).includes(n))}function _o(e,t,r,o,n=false){let{variables:a}=fe(o),s=Lr({logic:t},r,o).logic,i=dt("variables",a,s,r,void 0,o),{vars:c,log:l,error:u}=i;if(n&&typeof window<"u"){let d=`multihierarchySelector${e}-value`,m=`multihierarchySelector${e}-type`,f=new URLSearchParams(window.location.search),R=Object.fromEntries(f),h=R[d],S=R[m];h&&h!==void 0&&S&&S!==void 0&&!To(c.data,S,h)&&(f.delete(d),f.delete(m),window.history.replaceState(null,null,`?${f.toString()}`));}return {config:c,log:l,error:u}}var Nl=(e,t,r)=>{let o=`selector${e}id`,n=new URLSearchParams(typeof location<"u"&&location?.search?location.search:"").get(o),a=new URLSearchParams(t).get(o),s=n||a;if(r.type===Ze.MULTI){let l=s?s.split(","):r.defaultValue,u=r.options.filter(p=>l.includes(p.id));return {[`selector${e}id`]:l,[`selector${e}label`]:(u||[]).map(p=>p.label)}}let i=s&&r.options.find(l=>l.id===s)?s:r.defaultValue,c=r.options.find(l=>l.id===i);return {[`selector${e}id`]:i,[`selector${e}label`]:c&&c.label||void 0}},La=Nl;var Dl=(e,t,r)=>{let o=`multihierarchySelector${e}-value`,n=`multihierarchySelector${e}-type`,a=new URLSearchParams(typeof location<"u"&&location?.search?location.search:"").get(o),s=new URLSearchParams(typeof location<"u"&&location?.search?location.search:"").get(n),i=new URLSearchParams(t).get(o),c=new URLSearchParams(t).get(n),l=a||i,u=s||c,p=l?l.split(","):r.defaultValue||[],d=u||r.defaultValueType||"",m=r.data?.filter(f=>p.includes(`${f[`${d} ID`]}`))||[];return {[`multihierarchySelector${e}id`]:p,[`multihierarchySelector${e}label`]:[...new Set((m||[]).map(f=>f[d]))],[`multihierarchySelector${e}type`]:d}},Ba=Dl;var{localeDefault:Ma,locales:Ul}=G(),Fl=Object.values(ro),Vl=(e,t=Ma)=>e&&Fl.includes(e.type)?{locale:oo,locales:[oo]}:{locale:t,locales:Ul},Oa=(e,t=Ma)=>{if(!e)return {};let{locale:r}=Vl(e,t);return e.contentByLocale?.[r]?.content};function $l(e,t){let r=Object.values(t),o=r.filter(n=>n.shared&&n.section_id!==e).map(n=>n.id);return Object.fromEntries(r.filter(n=>n.section_id===e&&(n.inputs.length===0||n.inputs.some(a=>o.includes(a)))).map(n=>[n.id,n]))}var Na=$l;function wo(e){return e.type===B.SECTION_FLAG&&e.inputs.length===0&&e.consumers.length===0}var Fe=Xt(process.env.NEXT_PUBLIC_REPORTS_DEBUG),jl=process.env.REPORTS_ORIGIN||"",Wl=process.env.NEXT_PUBLIC_REPORTS_AXIOS_RETRIES,Va=5;try{Va=parseInt(`${Wl||5}`,10);}catch(e){console.error("Error setting axios retries NEXT_PUBLIC_REPORTS_AXIOS_RETRIES defaults to 5",e);}Da(Or,{retries:Va,retryDelay:Da.exponentialDelay,onRetry:(e,t,r)=>{console.error("Generator request failed. Retrying... Count: ",e),console.error("URL: ",r.url),console.error(t.message);}});Or.interceptors.request.use(e=>({...e,requestStart:Date.now()}));Or.interceptors.response.use(e=>({...e,requestDuration:new Date().getTime()-e.config.requestStart}),e=>Promise.reject(e));var Yl=(e,t,r)=>{let o=ye(e,t,r);return o.startsWith("http")||(o=`${jl}${o.startsWith("/")?"":"/"}${o}`),o},{urlProxy:Jl}=or("/api/cms");function Mr(e){return e.ok!==void 0}function Br(e){this.message=e,this.name="ApiFetchException";}var Ua=process.env.NEXT_PUBLIC_REPORTS_API_FETCH_TIMEOUT||0;async function Ql(e,t,r="en",o,n){let a=Date.now(),s=e,i,c=ue(),l=vt(),u={envs:{...c,...l}},p=new URL(e),d=new URLSearchParams(p.searchParams.toString());d.has("bespoke_slugs")&&(p.searchParams.delete("bespoke_slugs"),s=p.toString());let m={datasource:void 0};o.find(x=>{if(!x.content?.pattern)return false;try{let P=new RegExp(x.content.pattern,"gm");return P.test(s)?(m.datasource=x,!0):P.test(s)}catch{return false}});let f=n?n.settings:{},R=!!(f&&f.useProxy&&f.useProxy==="true"),h=m.datasource&&typeof m.datasource.content.useProxy=="boolean"?m.datasource.content.useProxy:false,S=`${process.env.NEXT_PUBLIC_REPORTS_BASE_URL}/api/cms/url/proxy?url=${encodeURIComponent(s)}`;if(typeof window=="object"&&(R||h)){let x=await Jl({url:s,timeout:Ua});if(x.ok===true)i=x.data;else throw new Br(x?.error)}else try{let P={url:s,timeout:Ua};if(m.datasource){let A=u;if(typeof window<"u")try{let N=await getSession();if(N){let k={user:N.user,status:"authenticated",isLoading:!1,update:async()=>N};A={...u,session:k};}}catch(N){console.warn("Could not retrieve user session:",N);}let C=await wr({vars:["url","libs","session"],logic:m.datasource.content.logic},A)(s);if(C.axiosConfig)P=C.axiosConfig;else throw new Br(`AxiosConfig is missing in Data Source ${m.datasource.name} (ID: ${m.datasource.id}).`)}let U=await Or(P);if(U.status===200)U.headers["content-type"]==="text/csv"?i=csvParse(U.data):i=U.data;else throw new Br("No response for: "+s)}catch(x){throw new Br(x.message)}if(d.has("bespoke_slugs")){let x=d.get("bespoke_slugs");if(x){let P=x.split(",");if(P.length===3){let[U,A,F]=P,C=qt(i,F);if(C&&Array.isArray(C)){let N=Array.from(new Set(C.map(k=>`${k[A]}`).filter(k=>!["","undefined"].includes(k))));if(N.length>0){let k=N.join("").length>2e3,L=await t({mode:k?"whole":"ids",ids:k?void 0:N,all:false,locale:r,variant:[parseInt(U,10)],output:"lite",limit:N.length+1,allowNulls:true}).then(M=>{let D=[];return Mr(M)?M.ok&&(D=M.data.results):D=M.results,D&&Array.isArray(D)?D:[]}).catch(M=>(console.error(`Error hydrating slugs for Variant: ${U}, Key: ${A}, Accessor: ${F}`),console.error(` Url ${e}`),n&&console.error(` From Section ${n.section_id} and Block ${n.id}`),console.error(M),[]));if(L){let M=Object.fromEntries(L.map(D=>[D.id,`/${D.variant_slug}/${D.slug}`]));C.map(D=>(D.bespoke_slug=M[D[A]]?M[D[A]]:null,D));}}}}}}return {data:i,requestDuration:Date.now()-a,finalUrl:h||R?S:s,apiDataSource:m.datasource?m.datasource:false}}function Zl(e){this.name="BlockException",this.message=e;}async function Fa(e,t,r,o,n){let{locale:a,variables:s,query:i}=fe(r),c=eu(e,r,s,t),l=null,u=e.contentByLocale?.logic?.content?.api,p=null,d=null,m=null,f=null,R=null;if(!c)return {outputVariables:{},renderVariables:{},status:{allowed:false,hiddenByCascade:e.id}};if(e.type===B.FALLBACK)return {outputVariables:{},renderVariables:{},status:{allowed:c,hiddenByCascade:e.id}};if(u){m=Yl(u,t,r);let C=m.split("|||").filter(L=>L!==""),N=[];for(let L=0;L<C.length;L++){let M=C[L];new RegExp("^(?:[a-z+]+:)?//","i").test(m)||(M=`${process.env.NEXT_PUBLIC_REPORTS_BASE_URL}/${M}`.replace(/([^:]\/)\/+/g,"$1")),N.push(Ql(M,o,a,n,e).catch(Y=>{throw new Zl(` Excecution of ${e.type}-${e.id} in section ${e.section_id} in report ${s.report_name} (${s.report_id}) failed.
|
|
42
46
|
Error fetching ${M}.
|
|
43
47
|
Message: ${Y.message}.
|
|
44
|
-
`)}));}let k=await Promise.all(N).catch(L=>L.message);if(typeof k=="string"&&k)return {outputVariables:{},renderVariables:{},status:{error:k}};l=k.length===1?k[0].data:k.map(L=>L.data),d=k.reduce((L,M)=>L+JSON.stringify(M.data).length/1024,0),p=Math.max(...k.map(L=>L.requestDuration)),f=k.map(L=>L.apiDataSource?`${L.apiDataSource.name} (${L.apiDataSource.id})`:null),R=k.map(L=>L.finalUrl);}if(e.type===B.SELECTOR){let{config:C,log:N,error:k}=Ao(e.id,e.contentByLocale[a].content.logic,t,r,true);return {outputVariables:La(e.id,i,C),renderVariables:C,status:{log:N,error:k,allowed:c}}}if(e.type===B.MULTIHIERARCHY_SELECTOR){let{config:C,log:N,error:k}=_o(e.id,e.contentByLocale[a].content.logic,t,r,true);return {outputVariables:Ba(e.id,i,C),renderVariables:C,status:{log:N,error:k,allowed:c}}}if(e.type===B.VIZ)return {outputVariables:{},renderVariables:e.contentByLocale.logic.content,status:{log:[],allowed:c}};if(e.type===B.RELATED){let C=e.contentByLocale?.logic?.content?.simple?.compare||"variant",N=e.contentByLocale?.logic?.content?.simple?.limit||4,k=Object.keys(s).filter(b=>b.startsWith("report_id")).map(b=>s[b]),L=Object.keys(s).filter(b=>b.startsWith("dimension_id")).map(b=>s[b]),M=Object.keys(s).filter(b=>b.startsWith("variant_id")).map(b=>s[b]),D=Object.keys(s).filter(b=>b.startsWith("id")).map(b=>s[b]);if(!D.length)return {outputVariables:{related_reports:[]},renderVariables:{},status:{log:[],allowed:false}};let Y=await Promise.all(D.map((b,E)=>o({mode:"ids",locale:a,ids:[b],output:"lite",variant:[M[E]]}))).then(b=>b.flatMap(E=>{let w=[];return Mr(E)?E.ok&&(w=E.data.results):w=E.results,w&&Array.isArray(w)?w:[]})).catch(b=>(console.error("Error getting related members",b),[]));if(L.length>1){let b=Object.keys(s).filter(K=>K.startsWith("variant_slug")).map(K=>s[K]),E=Y.map((K,ae)=>{let Q={mode:"related",locale:a,related:N??4,current_ids:[K.content_id],output:"full",variant_ids:[K.variant_id]};return ae===0&&(Q.include_ids=[K.content_id]),Q}),w=await Promise.all(E.map(K=>o(K))).then(K=>K.flatMap(ae=>{let Q=[];return Mr(ae)?ae.ok&&(Q=ae.data.results):Q=ae.results,Q&&Array.isArray(Q)?Q:[]})).catch(K=>(console.error("Error getting related members",K),[])),Z=w.reduce((K,ae)=>{let Q=ae.variant_slug;return K[Q]||(K[Q]=[]),K[Q].push(ae),K},{}),J=[],H=Object.keys(Z),X=[{combination:[],index:0}];for(;X.length>0;){let K=X.pop();if(!K)continue;let{combination:ae,index:Q}=K;if(Q===H.length){J.push(ae);continue}let Te=H[Q],se=Z[Te];for(let ie of se)X.push({combination:[...ae,ie],index:Q+1});}return {outputVariables:{related_reports:J.map(K=>{let ae=K.sort((Q,Te)=>b.indexOf(Q.variant_slug)-b.indexOf(Te.variant_slug));return {entities:ae,link:"/"+ae.map(Q=>`${Q.variant_slug}/${Q.slug}`).join("/")}})},renderVariables:{},status:{log:[],allowed:w.length>0}}}let V=Y.map(b=>b.content_id),v={mode:"related",locale:a,related:N??4,current_ids:V,output:"full"};C&&(C==="report"?v.report_ids=k:C==="dimension"?v.dimension_ids=L:v.variant_ids=M);let j=await o(v).then(b=>{let E=[];return Mr(b)?b.ok&&(E=b.data.results):E=b.results,E&&Array.isArray(E)?E:[]}).catch(b=>(console.error("Error getting related members",b),[]));return {outputVariables:{related_reports:j.map(b=>({entities:[b],link:`/${b.variant_slug}/${b.slug}`}))},renderVariables:{},status:{log:[],allowed:j.length>0}}}let{logic:h}=Oa(e,a),S=ye(h,t,r),x=dt("resp",l||{},S,t,s,r),{vars:P,error:U,log:A}=x;if(typeof P!="object")return {outputVariables:{},renderVariables:{},status:{error:"Configuration did not return an object",log:A,duration:p,responseSize:d,resp:l,api:m,allowed:c,apiFinalUrls:R,apiDataSources:f}};let F=Object.keys(P).reduce((C,N)=>({...C,[`${e.type}${e.id}${N}`]:P[N]}),{});return {renderVariables:P,outputVariables:[B.GENERATOR,B.SECTION_FLAG].includes(e.type)?P:F,status:{log:A,error:U,duration:p,responseSize:d,resp:l,api:m,allowed:c,apiFinalUrls:R,apiDataSources:f}}}function Zl(e,t,r,o,n,a,s){return e.consumers.forEach(i=>{if(t[i]){let c=`${r}-${i}`;!o.includes(c)&&(t[i].section_id===t[r].section_id||!n)&&o.push(c),e.consumers.filter(l=>t[l]&&t[l].section_id===t[r].section_id||!n).forEach(l=>ko(l,t,o,false,a,n,s));}})}var ko=(e,t,r=[],o=true,n=true,a=true,s=[])=>{if(s.includes(e))return [];s.push(e);let i=t[e];return i&&i.inputs.length&&o&&i.inputs.forEach(c=>{let l=`${c}-${e}`;r.includes(l)||r.push(l),i.inputs.forEach(u=>ko(u,t,r,o,false,a,s));}),i&&i.consumers.length&&n&&Zl(i,t,e,r,a,n,s),r},Xl=(e,t,r,o)=>{let n=true;if(e&&"allowed"in e.settings&&e.settings.allowed!=="always")if(e.settings.allowed==="never")n=false;else {let a=fe(t),{error:s,output:i}=dt("variables",r,e.settings.allowedLogic||"return false;",o,void 0,a);s||(n=!!i);}return n},Ut=async(e,t,r,o,n,a={},s,i="section",c)=>{let l=i==="section",u=fe(n),p=u.variables,d={...a.variables??{}},m={...a.status??{}},f=new Set,R=[],h={};r?h={...h,[r]:e[r]}:t?h=(t??[]).reduce((V,{id:v})=>({...V,...Na(v,e)}),{}):h=Object.values(e).filter(V=>wo(V)).reduce((V,v)=>({...V,[v.id]:v}),{});let S=Object.values(h).filter(V=>wo(V));if(S.length>0){Fe&&console.info("%crunConsumers: calculating section flags","color:purple",S.map(_=>_.id).join(", "));let V=Object.fromEntries(await Promise.all(S.map(async _=>[_.id,await Fa(_,o,{...u,variables:p,locale:p.locale},s,c).then(b=>{let{outputVariables:E,status:w}=b;if(w.error){if(typeof window>"u")throw new Error(`Run consumers (Block: ${_.id}, Section ${_.section_id}) failed with message: ${w.error}. `);m[_.id]={allowed:false,error:w.error},d[_.id]={};}return (_.consumers.length>0||[B.GENERATOR,B.SECTION_FLAG,B.RELATED].includes(_.type))&&w.allowed&&Object.keys(E).length>0?d[_.id]=E:d[_.id]={},i==="report"?(m[_.id]={allowed:w.allowed},[B.GENERATOR,B.SECTION_FLAG].includes(_.type)&&w.api&&(m[_.id].api=w.api)):m[_.id]=w,b})]))),j=Object.entries(V).filter(([,_])=>!_.outputVariables[On]).map(([_])=>Number(_));f=new Set(j.map(_=>e[_].section_id)),Object.values(h).filter(_=>f.has(_.section_id)).forEach(_=>{R.push(_.id),delete h[_.id];}),Fe&&console.info("%crunConsumers: removing sections","color:purple",f.keys());}let x=f.size>0?Object.fromEntries(Object.entries(e).filter(([,V])=>f?.has(V.section_id)?(R.includes(V.id)||R.push(V.id),false):true)):e;if(R.length>0&&(x=Object.fromEntries(Object.entries(x).map(([V,v])=>{let j={...v,inputs:v.inputs.filter(_=>!R.includes(_)),consumers:v.consumers.filter(_=>!R.includes(_))};return [V,j]}))),!r&&!t)return {variables:{...a.variables??{},...d},status:{...a.status??{},...m}};i==="report"&&R.length>0&&R.forEach(V=>{delete d[V],delete m[V],delete e[V];}),Fe&&console.info("%crunConsumers: running root blocks","color:purple",Object.keys(h));let P=Object.keys(h).reduce((V,v)=>{let j=new Date,_=ko(Number(v),x,[],!r,true,l).map(w=>w.split("-")),E=(new Date().getTime()-j.getTime())/1e3;return Fe&&console.info(`%cResolved dependencies for ${v} (${E.toFixed(2)}s)`,"color:blue"),[...V,..._]},[]),U=new Date,A=Object.keys(h).reduce((V,v)=>V.includes(v)?[...V]:[v,...V],zl(P)),C=(new Date().getTime()-U.getTime())/1e3;Fe&&console.info(`%cResolved DAG (${C.toFixed(2)}s): `,"color:green",A);let N=process.env.NEXT_PUBLIC_REPORTS_MAX_CONCURRENT_QUERIES_PER_REPORT,k=parseInt(`${N||0}`,10);async function L(V,v){let j=new Map,_=[],b=async()=>_.length;for(let E of V){if(k!==0){let H=await b();for(;H>=k;)Fe&&console.info("Too many pending promises, waiting...",H,_),await new Promise(X=>setTimeout(X,500)),H=await b();}let w=v[E],J=Promise.all(w.inputs.filter(H=>V.includes(String(H))).map(H=>j.get(Number(H)))).then(async()=>{let H=w.inputs.reduce((se,ie)=>({...se,...d[ie]}),p),X=w.inputs.find(se=>(w.settings?.ignoreCascade?w.settings?.ignoreCascade:[]).includes(se)||!m[se]?false:!m[se].allowed||m[se].hiddenByCascade);if(X){m[E]={allowed:false,hiddenByCascade:m[X].hiddenByCascade||X},d[E]={},_.splice(_.indexOf(Number(E)),1);return}let Pe=new Date,K;typeof window<"u"&&[B.SELECTOR,B.MULTIHIERARCHY_SELECTOR].includes(w.type)&&w.settings[Ce.DISABLED]?K=new Promise(se=>{se({outputVariables:d[E],status:m[E]});}):K=Fa(w,o,{...u,variables:H,locale:H.locale},s,c);let ae=await K.then(({outputVariables:se,status:ie})=>{if(ie.error){if(typeof window>"u")throw new Error(`Run consumers (Block: ${E}, Section ${w.section_id}) failed with message: ${ie.error}.`);m[E]={allowed:false,error:ie.error},d[E]={};}(w.consumers.length>0||[B.GENERATOR,B.SECTION_FLAG,B.RELATED].includes(w.type))&&ie.allowed&&Object.keys(se).length>0?d[E]=se:d[E]={},i==="report"?(m[E]={allowed:ie.allowed},[B.GENERATOR,B.SECTION_FLAG].includes(w.type)&&ie.api&&(m[E].api=ie.api)):m[E]=ie;}),Te=(new Date().getTime()-Pe.getTime())/1e3;return Fe&&console.info(`%cBlock ${w.id} resolved in ${Te.toFixed(3)}s`,Te>500?"color:red":"color:green"),m[E].duration=m[E].duration?m[E].duration:Te,_.splice(_.indexOf(Number(E)),1),ae}).catch(H=>{throw _.splice(_.indexOf(Number(E)),1),H});_.push(Number(E)),j.set(Number(E),J);}await Promise.all(Array.from(j.values()));}let M=new Date;await L(A,x);let Y=(new Date().getTime()-M.getTime())/1e3;return Fe&&console.info(`%cResolved Variables (${Y.toFixed(2)}s), ${A.length} blocks`,"color:green"),{variables:{...a.variables??{},...d},status:{...a.status??{},...m}}};function eu(e=[]){return e.reduce((t,r,o)=>{if(r){let n=o+1;t[`id${n}`]=r.id,t[`name${n}`]=r.name,t[`slug${n}`]=r.slug,"attributes"in r&&Object.keys(r.attributes).forEach(a=>{t[`attr_${a}${n}`]=r.attributes[a];}),t[`variant_id${n}`]=r.variant_id,t[`variant_name${n}`]=r.variant_name,t[`variant_slug${n}`]=r.variant_slug,t[`dimension_id${n}`]=r.dimension_id,t[`dimension_name${n}`]=r.dimension_name,t.report_id=r.report_id,t.report_name=r.report_name;}return t},{})}var Ft=eu;function tu(e,t){return +(e<t)-+(e>t)}function Nr(e,t,r="ordering"){return tu(t[r],e[r])}var{localeDefault:ou}=G();var nr=new schema.Entity("block",{},{mergeStrategy(e,t){return t.block_input?e||{}:{...e,...t}}});nr.define({consumers:[nr],inputs:[nr]});var $a=new schema.Entity("variant"),za=new schema.Entity("dimension",{variants:[$a]},{processStrategy(e){return {...e,variants:"variants"in e?e.variants:[]}}}),qa=new schema.Entity("section",{blocks:[nr]}),nu=new schema.Entity("report",{dimensions:[za],sections:[qa]},{processStrategy(e){return {...e,sections:"sections"in e?e.sections.sort(Nr):[]}}}),au=new schema.Entity("formatter"),su=new schema.Entity("datasource"),iu={report:nu,section:qa,block:nr,dimension:za,variant:$a,formatter:au,datasource:su};function Dr(e,t){let r=iu[e];if(!r)throw new Error(`Invalid entity type: ${e}`);let{entities:o}=normalize(t,[r]);return {report:mt(o,"report"),dimension:mt(o,"dimension"),section:mt(o,"section"),block:mt(o,"block"),variant:mt(o,"variant"),formatter:mt(o,"formatter"),datasource:mt(o,"datasource")}}function mt(e,t){return Object.prototype.hasOwnProperty.call(e,t)?e[t]:{}}var Ga=(e,t=void 0)=>{let{sid:r,bid:o,previews:n=[],query:a={}}=t||{},s,i,c={};return r?(s=r,c.activeSection=s):s=e.activeSection,n.length>0?(i=n,c.previews=i.filter(Boolean)):i=e.previews,{parsedParams:{sid:s,bid:o,previews:i,query:a},statusPayload:c}},ar=(e=[],t=ou)=>e.reduce((r,o)=>{let n=dn({vars:["n"],logic:o.content.logic},{},t,{});return r[o.name]=n,r},{});var pe=process.env.NEXT_PUBLIC_REPORTS_LOCALE_DEFAULT||"en",Ur=process.env.NEXT_PUBLIC_REPORTS_LOCALES?.split(",")||[pe];Ur.includes(pe)||Ur.push(pe);var uu={localeDefault:pe,locales:Ur,currentLocale:pe,preferredLocale:pe,showToolbar:false,activeSection:null,previews:[],query:{},sectionState:{},activeEntity:{type:null,id:null},sidebarStatus:{tools:true,settings:false,reportEditor:false},isCMS:false,isRunConsumersRunning:[]},Fr=createSlice({name:"status",initialState:uu,reducers:{setStatus:(e,t)=>{Object.assign(e,t.payload);},setPreviews(e,t){e.previews=t.payload;},setCurrentLocale(e,t){e.currentLocale=t.payload;},setPreferredLocale(e,t){e.preferredLocale=t.payload;},setSectionState(e,t){e.sectionState={...e.sectionState,...t.payload};},resetSectionState(e,t){e.sectionState={...e.sectionState,[t.payload]:{}};},setActiveEntity(e,t){e.activeEntity=t.payload;},openSidebar(e,t){e.sidebarStatus={...e.sidebarStatus,[t.payload]:true};},closeSidebar(e,t){e.sidebarStatus={...e.sidebarStatus,[t.payload]:false};},toggleSidebar(e,t){e.sidebarStatus={...e.sidebarStatus,[t.payload]:!e.sidebarStatus[t.payload]};},addRunConsumersRunning(e,t){e.isRunConsumersRunning=e.isRunConsumersRunning.concat(t.payload);},removeRunConsumersRunning(e,t){e.isRunConsumersRunning=e.isRunConsumersRunning.filter(r=>!t.payload.includes(r));}},extraReducers:e=>{e.addCase(HYDRATE,(t,r)=>{t.previews=r.payload.status.previews;});}}),ke=Fr.actions;var mu={attributes:{},variables:{},status:{}},Vr=createSlice({name:"variables",initialState:mu,reducers:{setVariableChange:(e,t)=>{e.attributes={...e.attributes,...t.payload.attributes},e.variables={...e.variables,...t.payload.variables},e.status={...e.status,...t.payload.status};}},extraReducers:e=>{e.addCase(HYDRATE,(t,r)=>{let o=r.payload.variables;t.attributes={...t.attributes,...o.attributes},t.status={...t.status,...o.status},t.variables={...t.variables,...o.variables};});}}),Vt=Vr.actions;var yu={tree:[],reports:null,entities:{block:{},dimension:{},report:{},section:{},variant:{},formatter:{},datasource:{}},requests:{block:{},dimension:{},report:{},section:{},variant:{},formatter:{},datasource:{}}},xe=createSlice({name:"records",initialState:yu,reducers:{set:(e,t)=>{let r=t.payload;return {entities:sr(e.entities,r.entities||{}),requests:sr(e.requests,r.requests||{}),reports:r.reports||e.reports,tree:r.tree||e.tree}},setRequest:(e,t)=>{let r=t.payload;e.requests[r.type][r.key]=r;},setCreateRequest(e,t){let r=t.payload;if(e.requests[r.type][r.key]=r,r.status==="SUCCESS"){let o=Array.isArray(r.data)?r.data:[r.data],n=Dr(r.type,o),a=sr(e.entities,n);if(e.entities=a,r.type==="report"){let s=r.data;e.reports?e.reports.indexOf(s.id)===-1&&(e.reports=[...e.reports,s.id]):e.reports=[s.id];}else if(r.type==="dimension"){let s=r.data;e.entities.report[s.report_id].dimensions.push(s.id),e.entities.report[s.report_id].dimensions=$r(a.report[s.report_id].dimensions,a.dimension);}else if(r.type==="variant"){let s=r.data;e.entities.dimension[s.dimension_id].variants.push(s.id);}else if(r.type==="section"&&!Array.isArray(r.data)){let s=r.data;e.entities.report[s.report_id].sections.push(s.id),e.entities.report[s.report_id].sections=$r(a.report[s.report_id].sections,a.section);}else if(r.type==="block")if(Array.isArray(r.data)){let s=r.data,i=s[0],c=s.map(l=>l.id);e.entities.section[i.section_id].blocks.concat(c);}else {let s=r.data;e.entities.section[s.section_id].blocks.push(s.id);}}},setReadRequest(e,t){let r=t.payload;if(r.type!=="report"&&(e.requests[r.type][r.key]=r),r.status==="SUCCESS"){let o=Dr(r.type,r.data),n=sr(e.entities,o);e.entities=n;}},setUpdateRequest(e,t){let r=t.payload;if(e.requests[r.type][r.key]=r,r.status==="SUCCESS"){let o=Array.isArray(r.data)?r.data:[r.data],n=Dr(r.type,o),a,s,i;if(r.type==="block"&&!Array.isArray(r.data)){let l=e.entities.block[r.data.id].inputs,u=n.block[r.data.id].inputs;a=l.length!==u.length,a&&(i=l.length>u.length,s=i?l.filter(p=>!u.includes(p))[0]:u.filter(p=>!l.includes(p))[0]),Object.values(n.block).forEach(p=>{p.block_input&&delete n.block[p.id];});}let c=sr(e.entities,n);if(e.entities=c,r.type==="dimension"){let l=r.data;e.entities.report[l.report_id].dimensions=$r(c.report[l.report_id].dimensions,c.dimension);}else if(r.type==="section"&&!Array.isArray(r.data)){let l=r.data;e.entities.report[l.report_id].sections=$r(c.report[l.report_id].sections,c.section);}else if(r.type==="block"&&!Array.isArray(r.data)){let l=r.data;a&&(i?e.entities.block[s].consumers=e.entities.block[s].consumers.filter(u=>u!==l.id):e.entities.block[s].consumers.push(l.id));}}},setDeleteRequest(e,t){let r=t.payload;if(e.requests[r.type][r.key]=r,r.status==="SUCCESS"){let{id:o,parentId:n,parentType:a}=r.data;if(delete e.entities[r.type][o],a&&n!=null){let s=`${r.type}s`;hu(e.entities[a][n][s],o);}}},removeBlocks:(e,t)=>{let r=t.payload,o={...e.entities.block};return r.forEach(n=>{delete o[n];}),{...e,entities:{...e.entities,block:o}}},addBlocks:(e,t)=>{let r=t.payload;return {...e,entities:{...e.entities,block:{...e.entities.block,...r}}}},removeDataSourceLogic:e=>{let t={...e.entities.datasource};Object.keys(t).forEach(r=>{e.entities.datasource[r].content.useProxy&&(delete e.entities.datasource[r].content.logic,delete e.entities.datasource[r].content.testUrl,delete e.entities.datasource[r].content.access);});}},extraReducers:e=>{e.addCase(HYDRATE,(t,r)=>{let o=r.payload.records,n=o.entities;t.entities=n,t.reports=Object.values(n.report).map(a=>a.id),t.requests={block:{},dimension:{},report:{},section:{},variant:{},formatter:{},datasource:{}},t.tree=o.tree;});}});function sr(e,t){return Object.fromEntries(Object.keys(e).map(r=>[r,{...e[r],...t[r]}]))}function $r(e,t){return e.map(n=>t[n]).sort((n,a)=>typeof n.ordering=="string"&&typeof a.ordering=="string"?Nr(n,a):typeof n.ordering=="number"&&typeof a.ordering=="number"?n.ordering-a.ordering:String(n.ordering).localeCompare(String(a.ordering))).map(n=>n.id)}function hu(e,t){let r=e.indexOf(t);r>-1&&e.splice(r,1);}var be=xe.actions,Wa=ir({block:Ve("block"),dimension:Ve("dimension"),formatter:Ve("formatter"),report:Ve("report"),section:Ve("section"),variant:Ve("variant"),datasource:Ve("datasource")}),ne=ir({block:$e("block"),dimension:$e("dimension"),formatter:$e("formatter"),report:$e("report"),section:$e("section"),variant:$e("variant"),datasource:$e("datasource")}),Ya=ir({block:Ae("block"),dimension:Ae("dimension"),formatter:Ae("formatter"),report:Ae("report"),section:Ae("section"),variant:Ae("variant"),datasource:Ae("datasource")}),Ja=ir({block:gt("block"),dimension:gt("dimension"),formatter:gt("formatter"),report:gt("report"),section:gt("section"),variant:gt("variant"),datasource:gt("datasource")}),Qa=ir({block:Ha("block"),section:Ha("section")});function ir(e){return (t,r)=>{let o=e[t];if(!o)throw new Error(`Attempting to dispatch action for invalid entity type '${t}'`);return o(r)}}function ht(e,t){return (r,o)=>{let a=o().records.requests[e][t],s=!a||a.status==="UNINITIALIZED"?"LOADING":"FETCHING";r(be.setRequest({key:t,type:e,status:s}));}}function yt(e,t,r,o){return n=>{typeof window=="object"&¬ifications.show({autoClose:3e3,color:"red",id:t,message:o,title:"Error"}),n(be.setRequest({key:t,type:e,status:"FAILURE",error:{code:r,message:o}}));}}function Ve(e){return t=>{let r=vo(e,t);return (o,n,a)=>(o(ht(e,r)),le(a,"create",e)(t).then(i=>(i.ok===true?o(be.setCreateRequest({key:r,operation:"create",status:"SUCCESS",type:e,data:i.data})):o(yt(e,r,i.status,i.error)),i)))}}function Su(e){return t=>{let r=vo(e,t[0]);return (o,n,a)=>(o(ht(e,r)),le(a,"createBulk",e)(t).then(i=>(i.ok===true?o(be.setCreateRequest({key:r,operation:"createBulk",status:"SUCCESS",type:e,data:i.data})):o(yt(e,r,i.status,i.error)),i)))}}function Ka(e,t,r){return r.replace(new RegExp(e,"g"),t)}function Eu(e){return e.section_id!==void 0}function Au(e){return e.report_id!==void 0}function Ha(e){return t=>{let{create:r}=t;return (o,n,a)=>Ve(e)(r)(o,n,a).then(async i=>{if(i.ok){let{data:c}=i,{id:l}=c,{update:u}=t,p=es(e,{id:l});if(o(ht(e,`${p}`)),e==="block"&&Eu(r)){let d=produce(u,h=>{h.id=l;}),{contentByLocale:m}=d;m&&(d=produce(d,h=>{h.id=l,h.contentByLocale=Object.keys(m).reduce((S,x)=>{let P=m?m[x]:{};return S[x]={...P,id:l},S},{});}));let R=d.inputs?.map(h=>({type:h.type,id:h.id,inputAction:{operation:"create",input:{input_id:h.id,block_id:d.id}}}));return R&&R.length>0&&ja(e)([d,...R])(o,n,a).then(()=>$e("section")({id:d.section_id,include:true})(o,n,a).then(h=>(h.ok&&o(be.setRequest({key:p,type:e,status:"SUCCESS",data:h.data})),h))),Ae(e)(d)(o,n,a).then(h=>(h.ok&&o(be.setRequest({key:p,type:e,status:"SUCCESS",data:h.data})),h))}if(e==="section"&&Au(r)){let{id:d}=c,m=produce(u,h=>{h.id=d;}),{blocks:f}=m,R=f?.map(h=>({type:h.type,blockcol:h.blockcol,blockrow:h.blockrow,section_id:d,locales:Object.keys(h.contentByLocale).map(S=>S)}));return R&&f&&await Su("block")(R)(o,n,a).then(h=>{if(h.ok){let S=h.data,x=[],P=S.map((U,A)=>{let C={...U},N=C.id,k=f[A];k.contentByLocale&&(C.contentByLocale=Object.keys(k.contentByLocale).reduce((_,b)=>{let E=k.contentByLocale[b];return _[b]={...E,content:{...E.content},id:C.id},_},{}));let{settings:L}=k,{contentByLocale:M,id:D}=C;C.settings=L;let Y={id:D,contentByLocale:M,settings:L};return k.inputs.map(_=>_.id).reduce((_,b)=>{let E=f.findIndex(w=>w.id===b);return [..._,E]},[]).map(_=>({...S[_],originalBlock:f[_]})).forEach(_=>{let{id:b,type:E,originalBlock:w}=_;if([B.SELECTOR,B.VIZ].includes(E)){if(Y.contentByLocale?.logic?.content?.api){let Z=Y.contentByLocale?.logic.content.api;Y.contentByLocale.logic.content.api=Ka(`(selector${w.id}id)`,`selector${b}id`,Z);}if(Y.contentByLocale?.logic?.content?.logic){let Z=Y.contentByLocale.logic.content.logic;Y.contentByLocale.logic.content.logic=Ka(`(selector${w.id}id)`,`selector${b}id`,Z);}}x.push({id:b,inputAction:{operation:"create",input:{input_id:b,block_id:N}}});}),Y});return ja("block")([...P,...x])(o,n,a)}}),Ae(e)(m)(o,n,a).then(h=>(h.ok&&o(be.setRequest({key:p,type:e,status:"SUCCESS",data:h.data})),h))}return Ae(e)({...u,id:c.id})(o,n,a)}})}}function $e(e){return t=>{let r=Za(e,t);return (o,n,a)=>{o(ht(e,r));let s=le(a,"read",e);if(typeof s!="function"){let i=`Failed to get valid RPC method for entity "${e}"`;return o(yt(e,r,500,i)),Promise.reject(new Error(i))}return s(t).then(i=>(i.ok===true?o(be.setReadRequest({key:r,operation:"read",status:"SUCCESS",type:e,data:i.data})):o(yt(e,r,i.status,i.error)),i))}}}function Ae(e){return t=>{let r=Io(e,t);return (o,n,a)=>(o(ht(e,r)),le(a,"update",e)(t).then(i=>(i.ok===true?o(be.setUpdateRequest({key:r,operation:"update",status:"SUCCESS",type:e,data:i.data})):o(yt(e,r,i.status,i.error)),i)))}}function ja(e){return t=>{let r=Io(e,t[0]);return (o,n,a)=>(o(ht(e,r)),le(a,"updateBulk",e)(t).then(i=>(i.ok===true?o(be.setUpdateRequest({key:r,operation:"updateBulk",status:"SUCCESS",type:e,data:i.data})):o(yt(e,r,i.status,i.error)),i)))}}function gt(e){return t=>{let r=Xa(e,t);return (o,n,a)=>(o(ht(e,r)),le(a,"delete",e)(t).then(i=>{i.ok===true?o(be.setDeleteRequest({key:r,operation:"delete",status:"SUCCESS",type:e,data:i.data})):o(yt(e,r,i.status,i.error));}))}}function vo(e,t){if(e==="variant"){let r=t;return `create(variant, [${r.dimension_id}, ${r.name}])`}return `create(${e}, [${Object.keys(t)}])`}function Za(e,t={}){let r=t.id==null?null:`'${t.id}'`;return `read(${e}, ${r}, ${!!t.include})`}function Io(e,t){let{id:r,...o}=t;return `update(${e}, ${r}, [${Object.keys(o)}])`}function Xa(e,t){return `delete(${e}, ${t})`}function es(e,t){let r=t.id==null?null:`'${t.id}'`;return `clone(${e}, ${r})`}var{setStatus:ts,setPreviews:Tu,setSectionState:rs,resetSectionState:os,setCurrentLocale:_u,setPreferredLocale:wu,addRunConsumersRunning:ns,removeRunConsumersRunning:as}=ke;function ku(e,t){return async(r,o,n)=>{let a=await n.validateVariantSlug({dimension:e,slug:t});if("error"in a)throw new Error(a.error);return a.data}}function xu(e){return async(t,r,o)=>{let n=await o.searchReport(e);if("error"in n)throw new Error(n.error);return n.data}}function Pu(){return async(e,t,r)=>{let o=await r.regenerateSearch(void 0);if("error"in o)throw new Error(o.error);return o.data}}function ze(e){return async(t,r,o)=>{let n=await o.readMember(e);if("error"in n)throw new Error(n.error);return n.data}}function vu(e){return async(t,r,o)=>{let n=await o.searchMember(e);if(n.ok===true)return n.data;throw new Error(n.error)}}async function ss(e,t,r,o){let n=r().status,a={...n,...o},s={...n.query,...o.query};Object.keys(s).forEach(c=>s[c]===void 0&&delete s[c]);let i={...a,query:s};t(ts(i)),n.activeSection&&t(is(e,{query:s}));}function Iu(e,t){return async(r,o)=>ss(e,r,o,{query:{[t]:void 0}})}function Cu(e,t,r){return async(o,n)=>ss(e,o,n,{query:{[t]:r}})}function is(e,t){return async(r,o)=>{let n=o(),{currentLocale:a}=n.status,s=n.records.entities.block,i=e.formatterFunctions[a],c=e.datasourceFunctions,{parsedParams:l,statusPayload:u}=Ga(n.status,t),{sid:p,bid:d,previews:m,query:f}=l;Object.keys(u).length&&r(ke.setStatus(u));let R={...Ft(m),locale:a,...ue()},h={variables:R,query:f,locale:a};r(ke.addRunConsumersRunning([p]));let S=n.records.entities.section[p],x=async P=>r(ze(P));try{let P=await Ut(s,S&&[S],d,i,h,void 0,x,"section",c),{variables:U,status:A}=P;r(Vt.setVariableChange({attributes:R,variables:U,status:A})),r(ke.removeRunConsumersRunning([p]));}catch(P){console.error("Error in runConsumers client side: recalculateVariables",P);}}}function cr(e){return async(t,r,o)=>{let n=await o.readMetadata(e);if("error"in n)throw new Error(n.error);return n.data}}function Lu(e){return async(t,r,o)=>{let n=await o.urlProxy(e);if("error"in n)throw new Error(n.error);return n.data}}function Bu(){return async(e,t,r)=>{let o=await r.searchRole("");if("error"in o)throw new Error(o.error);return o.data}}function Mu(e){return async(t,r,o)=>{let n=await o.searchUser(e);if("error"in n)throw new Error(n.error);return n.data}}function Ou(e){return async(t,r,o)=>{let n=await o.readUser({user_id:e});if("error"in n)throw new Error(n.error);return n.data}}function Nu({user:e}){return async(t,r,o)=>{let n=await o.updateUser(e);if("error"in n)throw new Error(n.error);return n.data}}function Du(e){return async(t,r,o)=>{let n=await o.updateMyData(e);if("error"in n)throw new Error(n.error);return n.data}}function qe(e){let{removeBlocks:t}=xe.actions;return async r=>{await r(t(e));}}function lr(e){let{addBlocks:t}=xe.actions;return async r=>{await r(t(e));}}function Uu(e){return async(t,r,o)=>{let n=await o.readPrivateBlocks({...e,roles:[]});if("error"in n)throw new Error(n.error);return n.data}}function Fu(e){return async(t,r,o)=>{let n=await o.revalidateUrl({target:e.target});if("error"in n)throw new Error(n.error);return n.data}}function Vu(e){return async(t,r,o)=>{let n=await o.revalidateReport({reportId:e.reportId,profilePrefix:e.profilePrefix});if("error"in n)throw new Error(n.error);return n.data}}function $u(){return async(e,t,r)=>{let o=await r.readEnvSecrets({});if("error"in o)throw new Error(o.error);return o.data}}function ur(){let{removeDataSourceLogic:e}=xe.actions;return async t=>{await t(e());}}var cs=()=>configureStore({reducer:{[xe.name]:xe.reducer,[Fr.name]:Fr.reducer,[Vr.name]:Vr.reducer},middleware(e){return e({thunk:{extraArgument:or("/api/cms/")}})}}),Ge=createWrapper(cs);function Hu(e){let t=process.cwd(),r=Ku.resolve(t.endsWith("/example")?t.replace("/example",""):t,"package-lock.json"),o;try{let n=JSON.parse(Oc.readFileSync(r,"utf-8"));o=n.dependencies&&n.dependencies[e]&&n.dependencies[e].version!=="file:packages/reports"?n.dependencies[e].version:"0.dev";}catch{o="0.vercel";}return o||"Version not found"}function ju(e){let t=()=>Promise.resolve({}),{pathSegmentsKey:r="bespoke",preResolve:o=t,postResolve:n=t,authOptions:a={providers:[]}}=e||{};return Ge.getServerSideProps(s=>{let i=s.dispatch;return async c=>{let l=await me(c.req,c.res,a);if(!l)return {redirect:{destination:"/api/auth/signin?callbackUrl=/cms",permanent:false}};let u=new Set([z.ADMIN,z.EDITOR,z.WRITER]);if(!(l?.user?.bespoke_roles||[]).some(S=>u.has(S)))return {redirect:{destination:"/",permanent:false}};let d=c.query[r],[m]=Array.isArray(d)?d:[d];await i(it);let f=await Hu("@datawheel/bespoke"),R=await o(s,c);if("redirect"in R)return {props:R};m==="reports"&&(ls(c.query[r])?await Promise.all([i(ne("formatter",{})),i(ne("datasource",{include:true})),i(ne("report",{id:ls(c.query[r]),include:true})),ke.setStatus({isCMS:true})]):await Promise.all([i(ne("report",{include:"dimensions"})),ke.setStatus({isCMS:true})])),m==="metadata"&&await i(ne("report",{include:"dimensions"})),m==="formatters"&&await i(ne("formatter",{})),m==="datasources"&&await i(ne("datasource",{include:true}));let h=await n(s,c);return {props:{...R,...h,bespokeVersion:f,session:l}}}})}function ls(e){if(e==null||e==="")return;let[,t]=Array.isArray(e)?e:[e];return Number.parseInt(t)||void 0}var {locales:Yu}=G(),Ju={pathSegment:"path",formatterFunctions:Yu.reduce((e,t)=>({...e,[t]:{}}),{}),datasourceFunctions:[],profilePrefix:"path",previewPrefix:null,siteProps:{}};createContext(Ju);G();var mp=e=>e.records.entities.report;var Gr=e=>e.records.entities.block;var fp=e=>e.records.entities.datasource;function $t(e){return createSelector([t=>t.records.entities[e]],t=>Object.values(t))}$t("report");$t("dimension");$t("variant");var Kr=$t("section");$t("block");var Hr=$t("formatter");createSelector([mp],e=>Object.values(e)[0]);var gp=ue(),yp=[],jr=createSelector([fp],e=>e?Object.values(e).sort((t,r)=>t.content.order>r.content.order?1:-1).map(t=>{let r={...gp};return {...t,content:{...t.content,pattern:ye(t.content.pattern,{},{variables:r})}}}):yp);var hp=async(e,t,r,o,n)=>{if(e.length===0)throw new Error("No slugs provided");let a=await t(r({mode:"slugs",locale:n,slugs:e,output:"full"})),s=a.results[0].report_id;if(a.results.length>1){if(a.results.every(f=>f.report_id===s)===false)throw new Error("Members belong to different reports");let l=a.results.map(f=>f.dimension_id),u=new Set(l);if(l.length!==u.size)throw new Error("Members belong to same dimensions");let p=a.results.sort((f,R)=>f.dimension_ordering>R.dimension_ordering?1:-1).reduce((f,R,h)=>(f[R.variant_slug]=h,f),{}),d=e.reduce((f,R,h)=>(f[R.variantSlug]=h,f),{});if(!(Object.keys(p).length===Object.keys(d).length&&Object.keys(p).every(f=>Object.prototype.hasOwnProperty.call(d,f)&&p[f]===d[f])))throw new Error("Variant slugs do not match the expected dimension order")}let c=(await t(o({report_id:s,count:false}))).data.find(l=>l.id===s);if(!c||a.results.length!==c.dimensions.length)throw new Error(`Missing members for report ID ${s}`);return a},Wr=hp;function Rp(e){let{fallback:t=true,limit:r=50}=e||{};return async o=>{let{defaultLocale:n=pe,locales:a=[]}=o,s=[];if(r>0){let i=a.find(u=>u===n),{searchMember:c}=await rt().then(Ot),l=await c({query:"",limit:r,format:"plain",locale:i||pe,noImage:false,visible:true,report:[],dimension:[],variant:[],includes:true});l.ok===true&&(s=l.data.results.map(u=>({locale:a.find(p=>p===u.locale),params:{bespoke:[u.variant.slug,u.slug]}})));}return {fallback:t,paths:s}}}function bp(e){let{pathSegmentsKey:t="bespoke"}=e||{};try{return Ge.getStaticProps(r=>{let o=r.dispatch;return async n=>{await o(it);let a=new Date().toISOString(),{locale:s=pe,params:i={}}=n,c=Array.from(Bo(i[t])),l;try{l=await Wr(c,o,ze,cr,s);}catch(k){return console.error("[Bespoke slug validation Failed]: Return 404:",k.message,`[${s}] -> /${c.map(L=>`${L.variantSlug}/${L.memberSlug}`).join("/")}`),{notFound:!0}}o(Rt.setPreviews(l.results)),await Promise.all([o(ne("formatter",{})),o(ne("datasource",{include:!0})),o(ne("report",{id:l.results.map(k=>k.report_id),include:!0,locales:[s]}))]);let u=r.getState(),p=Hr(u),d=jr(u),m=ar(p,s),f=Kr(u),R=Gr(u),h={...R},S={},x=Object.values(R).reduce((k,L)=>("access"in L.settings&&!["public","guest"].some(M=>!L.settings.access||L.settings.access.includes(M))&&k.push(L.id),k),[]),P=x.filter(k=>h[k].settings[Ce.FALLBACK]),U=Array.from(new Set([...P,...he(P,Object.values(h))])),A=x.filter(k=>[B.SELECTOR,B.MULTIHIERARCHY_SELECTOR].includes(h[k].type)),F=Array.from(new Set([...A,...he(A,Object.values(h))]));x=Array.from(new Set([...x,...U,...F,...he(x,Object.values(h))])),x.forEach(k=>{P.includes(k)?(S[k]={...h[k],type:B.FALLBACK,original_type:h[k].type},delete h[k]):A.includes(k)&&(S[k]={...h[k],settings:{...h[k].settings,[Ce.DISABLED]:!0}},delete h[k]),F.includes(k)||delete h[k];}),await o(qe(x.filter(k=>!F.includes(k)))),await o(lr(S));let C={...Ft(l.results),locale:s,...ue()},N=async k=>await o(ze(k));return await Ut({...h,...S},f,void 0,m,{locale:s,query:i,variables:C},void 0,N,"report",d).then(async k=>{let L=Object.keys({...h,...S}).reduce((M,D)=>(k.variables[D]&&k.status[D]||M.push(Number(D)),M),[]);await o(qe(L)),await o(Vt.setVariableChange({...k,attributes:C})),await o(ur());}),{props:{buildTime:a}}}})}catch(r){console.error("ERROR SSR",r);}}function Bo(e=[]){let t=[].concat(e),r=0;return {next(){return {value:{variantSlug:t[r++],memberSlug:t[r++]},done:r>t.length}},[Symbol.iterator](){return this}}}function Sp(e){let{pathSegmentsKey:t="bespoke"}=e||{};try{return Ge.getServerSideProps(r=>{let o=r.dispatch;return async n=>{let{section:a,block:s}=n.query,i=Object.fromEntries(Object.entries(n.query).filter(([v])=>v.match(/selector\d+id/)));if(!a&&!s)return {notFound:!0};let c=Number(a);await o(it);let l=new Date().toISOString(),{locale:u=pe,params:p={},req:d}=n,m=Array.from(Bo(p[t])),f;try{f=await Wr(m,o,ze,cr,u);}catch(v){return console.error("[Bespoke slug validation Failed]: Return 404:",v.message,`/${u}/${d.url}`),{notFound:!0}}o(Rt.setPreviews(f.results)),await Promise.all([o(ne("formatter",{})),o(ne("datasource",{include:!0})),o(ne("report",{id:f.results.map(v=>v.report_id),include:!0,locales:[u]}))]);let R=r.getState(),h=Hr(R),S=jr(R),x=ar(h,u),P=Kr(R).filter(v=>v.id===c),U=Gr(R),A={...U},F={},C=Object.values(U).reduce((v,j)=>("access"in j.settings&&!["public","guest"].some(_=>!j.settings.access||j.settings.access.includes(_))&&v.push(j.id),v),[]),N=C.filter(v=>A[v].settings[Ce.FALLBACK]),k=Array.from(new Set([...N,...he(N,Object.values(A))])),L=C.filter(v=>[B.SELECTOR,B.MULTIHIERARCHY_SELECTOR].includes(A[v].type)),M=Array.from(new Set([...L,...he(L,Object.values(A))]));C=Array.from(new Set([...C,...k,...M,...he(C,Object.values(A))])),C.forEach(v=>{N.includes(v)?(F[v]={...A[v],type:B.FALLBACK,original_type:A[v].type},delete A[v]):L.includes(v)&&(F[v]={...A[v],settings:{...A[v].settings,[Ce.DISABLED]:!0}},delete A[v]),M.includes(v)||delete A[v];}),await o(qe(C.filter(v=>!M.includes(v)))),await o(lr(F));let D={...Ft(f.results),locale:u,...ue()},Y=async v=>await o(ze(v));await Ut({...A,...F},P,void 0,x,{locale:u,query:{...p,...i},variables:D},void 0,Y,"section",S).then(async v=>{let j=Object.keys({...A,...F}).reduce((_,b)=>(v.variables[b]&&v.status[b]||_.push(Number(b)),_),[]);await Promise.all([o(qe(j)),o(Vt.setVariableChange({...v,attributes:D})),o(ur())]);});let V=Object.keys({...A,...F}).filter(v=>a&&s?v!==s:A[v]&&A[v].section_id!==c).map(Number);return await o(qe(V)),{props:{buildTime:l}}}})}catch(r){return console.error("ERROR SSR",r),async()=>({notFound:true})}}export{Sp as BespokeEmbedServerSideProps,_l as BespokeEndpointNextJsHandlerFactory,me as BespokeGetSession,Is as BespokeHandleAuth,ju as BespokeManagerServerSideProps,Rp as BespokeRendererStaticPaths,bp as BespokeRendererStaticProps,Fs as BespokeSearchUsersByMetadata,Bs as BespokeUpdateCurrentUserAppMetadata,Os as BespokeUpdateCurrentUserMetadata,Ds as BespokeWithApiRoleAuthRequired,kl as ReportCrosswalkHandler,Ot as dbApiFactory,bo as endpointKey,rt as getDB,it as useDatabaseApi};
|
|
48
|
+
`)}));}let k=await Promise.all(N).catch(L=>L.message);if(typeof k=="string"&&k)return {outputVariables:{},renderVariables:{},status:{error:k}};l=k.length===1?k[0].data:k.map(L=>L.data),d=k.reduce((L,M)=>L+JSON.stringify(M.data).length/1024,0),p=Math.max(...k.map(L=>L.requestDuration)),f=k.map(L=>L.apiDataSource?`${L.apiDataSource.name} (${L.apiDataSource.id})`:null),R=k.map(L=>L.finalUrl);}if(e.type===B.SELECTOR){let{config:C,log:N,error:k}=Ao(e.id,e.contentByLocale[a].content.logic,t,r,true);return {outputVariables:La(e.id,i,C),renderVariables:C,status:{log:N,error:k,allowed:c}}}if(e.type===B.MULTIHIERARCHY_SELECTOR){let{config:C,log:N,error:k}=_o(e.id,e.contentByLocale[a].content.logic,t,r,true);return {outputVariables:Ba(e.id,i,C),renderVariables:C,status:{log:N,error:k,allowed:c}}}if(e.type===B.VIZ)return {outputVariables:{},renderVariables:e.contentByLocale.logic.content,status:{log:[],allowed:c}};if(e.type===B.RELATED){let C=e.contentByLocale?.logic?.content?.simple?.compare||"variant",N=e.contentByLocale?.logic?.content?.simple?.limit||4,k=Object.keys(s).filter(b=>b.startsWith("report_id")).map(b=>s[b]),L=Object.keys(s).filter(b=>b.startsWith("dimension_id")).map(b=>s[b]),M=Object.keys(s).filter(b=>b.startsWith("variant_id")).map(b=>s[b]),D=Object.keys(s).filter(b=>b.startsWith("id")).map(b=>s[b]);if(!D.length)return {outputVariables:{related_reports:[]},renderVariables:{},status:{log:[],allowed:false}};let Y=await Promise.all(D.map((b,E)=>o({mode:"ids",locale:a,ids:[b],output:"lite",variant:[M[E]]}))).then(b=>b.flatMap(E=>{let w=[];return Mr(E)?E.ok&&(w=E.data.results):w=E.results,w&&Array.isArray(w)?w:[]})).catch(b=>(console.error("Error getting related members",b),[]));if(L.length>1){let b=Object.keys(s).filter(K=>K.startsWith("variant_slug")).map(K=>s[K]),E=Y.map((K,ae)=>{let J={mode:"related",locale:a,related:N??4,current_ids:[K.content_id],output:"full",variant_ids:[K.variant_id]};return ae===0&&(J.include_ids=[K.content_id]),J}),w=await Promise.all(E.map(K=>o(K))).then(K=>K.flatMap(ae=>{let J=[];return Mr(ae)?ae.ok&&(J=ae.data.results):J=ae.results,J&&Array.isArray(J)?J:[]})).catch(K=>(console.error("Error getting related members",K),[])),Z=w.reduce((K,ae)=>{let J=ae.variant_slug;return K[J]||(K[J]=[]),K[J].push(ae),K},{}),Q=[],H=Object.keys(Z),X=[{combination:[],index:0}];for(;X.length>0;){let K=X.pop();if(!K)continue;let{combination:ae,index:J}=K;if(J===H.length){Q.push(ae);continue}let _e=H[J],se=Z[_e];for(let ie of se)X.push({combination:[...ae,ie],index:J+1});}return {outputVariables:{related_reports:Q.map(K=>{let ae=K.sort((J,_e)=>b.indexOf(J.variant_slug)-b.indexOf(_e.variant_slug));return {entities:ae,link:"/"+ae.map(J=>`${J.variant_slug}/${J.slug}`).join("/")}})},renderVariables:{},status:{log:[],allowed:w.length>0}}}let V=Y.map(b=>b.content_id),v={mode:"related",locale:a,related:N??4,current_ids:V,output:"full"};C&&(C==="report"?v.report_ids=k:C==="dimension"?v.dimension_ids=L:v.variant_ids=M);let j=await o(v).then(b=>{let E=[];return Mr(b)?b.ok&&(E=b.data.results):E=b.results,E&&Array.isArray(E)?E:[]}).catch(b=>(console.error("Error getting related members",b),[]));return {outputVariables:{related_reports:j.map(b=>({entities:[b],link:`/${b.variant_slug}/${b.slug}`}))},renderVariables:{},status:{log:[],allowed:j.length>0}}}let{logic:h}=Oa(e,a),S=ye(h,t,r),x=dt("resp",l||{},S,t,s,r),{vars:P,error:U,log:A}=x;if(typeof P!="object")return {outputVariables:{},renderVariables:{},status:{error:"Configuration did not return an object",log:A,duration:p,responseSize:d,resp:l,api:m,allowed:c,apiFinalUrls:R,apiDataSources:f}};let F=Object.keys(P).reduce((C,N)=>({...C,[`${e.type}${e.id}${N}`]:P[N]}),{});return {renderVariables:P,outputVariables:[B.GENERATOR,B.SECTION_FLAG].includes(e.type)?P:F,status:{log:A,error:U,duration:p,responseSize:d,resp:l,api:m,allowed:c,apiFinalUrls:R,apiDataSources:f}}}function Xl(e,t,r,o,n,a,s){return e.consumers.forEach(i=>{if(t[i]){let c=`${r}-${i}`;!o.includes(c)&&(t[i].section_id===t[r].section_id||!n)&&o.push(c),e.consumers.filter(l=>t[l]&&t[l].section_id===t[r].section_id||!n).forEach(l=>ko(l,t,o,false,a,n,s));}})}var ko=(e,t,r=[],o=true,n=true,a=true,s=[])=>{if(s.includes(e))return [];s.push(e);let i=t[e];return i&&i.inputs.length&&o&&i.inputs.forEach(c=>{let l=`${c}-${e}`;r.includes(l)||r.push(l),i.inputs.forEach(u=>ko(u,t,r,o,false,a,s));}),i&&i.consumers.length&&n&&Xl(i,t,e,r,a,n,s),r},eu=(e,t,r,o)=>{let n=true;if(e&&"allowed"in e.settings&&e.settings.allowed!=="always")if(e.settings.allowed==="never")n=false;else {let a=fe(t),{error:s,output:i}=dt("variables",r,e.settings.allowedLogic||"return false;",o,void 0,a);s||(n=!!i);}return n},Ut=async(e,t,r,o,n,a={},s,i="section",c)=>{let l=i==="section",u=fe(n),p=u.variables,d={...a.variables??{}},m={...a.status??{}},f=new Set,R=[],h={};r?h={...h,[r]:e[r]}:t?h=(t??[]).reduce((V,{id:v})=>({...V,...Na(v,e)}),{}):h=Object.values(e).filter(V=>wo(V)).reduce((V,v)=>({...V,[v.id]:v}),{});let S=Object.values(h).filter(V=>wo(V));if(S.length>0){Fe&&console.info("%crunConsumers: calculating section flags","color:purple",S.map(_=>_.id).join(", "));let V=Object.fromEntries(await Promise.all(S.map(async _=>[_.id,await Fa(_,o,{...u,variables:p,locale:p.locale},s,c).then(b=>{let{outputVariables:E,status:w}=b;if(w.error){if(typeof window>"u")throw new Error(`Run consumers (Block: ${_.id}, Section ${_.section_id}) failed with message: ${w.error}. `);m[_.id]={allowed:false,error:w.error},d[_.id]={};}return (_.consumers.length>0||[B.GENERATOR,B.SECTION_FLAG,B.RELATED].includes(_.type))&&w.allowed&&Object.keys(E).length>0?d[_.id]=E:d[_.id]={},i==="report"?(m[_.id]={allowed:w.allowed},[B.GENERATOR,B.SECTION_FLAG].includes(_.type)&&w.api&&(m[_.id].api=w.api)):m[_.id]=w,b})]))),j=Object.entries(V).filter(([,_])=>!_.outputVariables[On]).map(([_])=>Number(_));f=new Set(j.map(_=>e[_].section_id)),Object.values(h).filter(_=>f.has(_.section_id)).forEach(_=>{R.push(_.id),delete h[_.id];}),Fe&&console.info("%crunConsumers: removing sections","color:purple",f.keys());}let x=f.size>0?Object.fromEntries(Object.entries(e).filter(([,V])=>f?.has(V.section_id)?(R.includes(V.id)||R.push(V.id),false):true)):e;if(R.length>0&&(x=Object.fromEntries(Object.entries(x).map(([V,v])=>{let j={...v,inputs:v.inputs.filter(_=>!R.includes(_)),consumers:v.consumers.filter(_=>!R.includes(_))};return [V,j]}))),!r&&!t)return {variables:{...a.variables??{},...d},status:{...a.status??{},...m}};i==="report"&&R.length>0&&R.forEach(V=>{delete d[V],delete m[V],delete e[V];}),Fe&&console.info("%crunConsumers: running root blocks","color:purple",Object.keys(h));let P=Object.keys(h).reduce((V,v)=>{let j=new Date,_=ko(Number(v),x,[],!r,true,l).map(w=>w.split("-")),E=(new Date().getTime()-j.getTime())/1e3;return Fe&&console.info(`%cResolved dependencies for ${v} (${E.toFixed(2)}s)`,"color:blue"),[...V,..._]},[]),U=new Date,A=Object.keys(h).reduce((V,v)=>V.includes(v)?[...V]:[v,...V],ql(P)),C=(new Date().getTime()-U.getTime())/1e3;Fe&&console.info(`%cResolved DAG (${C.toFixed(2)}s): `,"color:green",A);let N=process.env.NEXT_PUBLIC_REPORTS_MAX_CONCURRENT_QUERIES_PER_REPORT,k=parseInt(`${N||0}`,10);async function L(V,v){let j=new Map,_=[],b=async()=>_.length;for(let E of V){if(k!==0){let H=await b();for(;H>=k;)Fe&&console.info("Too many pending promises, waiting...",H,_),await new Promise(X=>setTimeout(X,500)),H=await b();}let w=v[E],Q=Promise.all(w.inputs.filter(H=>V.includes(String(H))).map(H=>j.get(Number(H)))).then(async()=>{let H=w.inputs.reduce((se,ie)=>({...se,...d[ie]}),p),X=w.inputs.find(se=>(w.settings?.ignoreCascade?w.settings?.ignoreCascade:[]).includes(se)||!m[se]?false:!m[se].allowed||m[se].hiddenByCascade);if(X){m[E]={allowed:false,hiddenByCascade:m[X].hiddenByCascade||X},d[E]={},_.splice(_.indexOf(Number(E)),1);return}let ve=new Date,K;typeof window<"u"&&[B.SELECTOR,B.MULTIHIERARCHY_SELECTOR].includes(w.type)&&w.settings[Le.DISABLED]?K=new Promise(se=>{se({outputVariables:d[E],status:m[E]});}):K=Fa(w,o,{...u,variables:H,locale:H.locale},s,c);let ae=await K.then(({outputVariables:se,status:ie})=>{if(ie.error){if(typeof window>"u")throw new Error(`Run consumers (Block: ${E}, Section ${w.section_id}) failed with message: ${ie.error}.`);m[E]={allowed:false,error:ie.error},d[E]={};}(w.consumers.length>0||[B.GENERATOR,B.SECTION_FLAG,B.RELATED].includes(w.type))&&ie.allowed&&Object.keys(se).length>0?d[E]=se:d[E]={},i==="report"?(m[E]={allowed:ie.allowed},[B.GENERATOR,B.SECTION_FLAG].includes(w.type)&&ie.api&&(m[E].api=ie.api)):m[E]=ie;}),_e=(new Date().getTime()-ve.getTime())/1e3;return Fe&&console.info(`%cBlock ${w.id} resolved in ${_e.toFixed(3)}s`,_e>500?"color:red":"color:green"),m[E].duration=m[E].duration?m[E].duration:_e,_.splice(_.indexOf(Number(E)),1),ae}).catch(H=>{throw _.splice(_.indexOf(Number(E)),1),H});_.push(Number(E)),j.set(Number(E),Q);}await Promise.all(Array.from(j.values()));}let M=new Date;await L(A,x);let Y=(new Date().getTime()-M.getTime())/1e3;return Fe&&console.info(`%cResolved Variables (${Y.toFixed(2)}s), ${A.length} blocks`,"color:green"),{variables:{...a.variables??{},...d},status:{...a.status??{},...m}}};function tu(e=[]){return e.reduce((t,r,o)=>{if(r){let n=o+1;t[`id${n}`]=r.id,t[`name${n}`]=r.name,t[`slug${n}`]=r.slug,"attributes"in r&&Object.keys(r.attributes).forEach(a=>{t[`attr_${a}${n}`]=r.attributes[a];}),t[`variant_id${n}`]=r.variant_id,t[`variant_name${n}`]=r.variant_name,t[`variant_slug${n}`]=r.variant_slug,t[`dimension_id${n}`]=r.dimension_id,t[`dimension_name${n}`]=r.dimension_name,t.report_id=r.report_id,t.report_name=r.report_name;}return t},{})}var Ft=tu;function ru(e,t){return +(e<t)-+(e>t)}function Nr(e,t,r="ordering"){return ru(t[r],e[r])}var{localeDefault:nu}=G();var nr=new schema.Entity("block",{},{mergeStrategy(e,t){return t.block_input?e||{}:{...e,...t}}});nr.define({consumers:[nr],inputs:[nr]});var $a=new schema.Entity("variant"),za=new schema.Entity("dimension",{variants:[$a]},{processStrategy(e){return {...e,variants:"variants"in e?e.variants:[]}}}),qa=new schema.Entity("section",{blocks:[nr]}),au=new schema.Entity("report",{dimensions:[za],sections:[qa]},{processStrategy(e){return {...e,sections:"sections"in e?e.sections.sort(Nr):[]}}}),su=new schema.Entity("formatter"),iu=new schema.Entity("datasource"),cu={report:au,section:qa,block:nr,dimension:za,variant:$a,formatter:su,datasource:iu};function Dr(e,t){let r=cu[e];if(!r)throw new Error(`Invalid entity type: ${e}`);let{entities:o}=normalize(t,[r]);return {report:mt(o,"report"),dimension:mt(o,"dimension"),section:mt(o,"section"),block:mt(o,"block"),variant:mt(o,"variant"),formatter:mt(o,"formatter"),datasource:mt(o,"datasource")}}function mt(e,t){return Object.prototype.hasOwnProperty.call(e,t)?e[t]:{}}var Ga=(e,t=void 0)=>{let{sid:r,bid:o,previews:n=[],query:a={}}=t||{},s,i,c={};return r?(s=r,c.activeSection=s):s=e.activeSection,n.length>0?(i=n,c.previews=i.filter(Boolean)):i=e.previews,{parsedParams:{sid:s,bid:o,previews:i,query:a},statusPayload:c}},ar=(e=[],t=nu)=>e.reduce((r,o)=>{let n=dn({vars:["n"],logic:o.content.logic},{},t,{});return r[o.name]=n,r},{});var pe=process.env.NEXT_PUBLIC_REPORTS_LOCALE_DEFAULT||"en",Ur=process.env.NEXT_PUBLIC_REPORTS_LOCALES?.split(",")||[pe];Ur.includes(pe)||Ur.push(pe);var pu={localeDefault:pe,locales:Ur,currentLocale:pe,preferredLocale:pe,showToolbar:false,activeSection:null,previews:[],query:{},sectionState:{},activeEntity:{type:null,id:null},sidebarStatus:{tools:true,settings:false,reportEditor:false},isCMS:false,isRunConsumersRunning:[]},Fr=createSlice({name:"status",initialState:pu,reducers:{setStatus:(e,t)=>{Object.assign(e,t.payload);},setPreviews(e,t){e.previews=t.payload;},setCurrentLocale(e,t){e.currentLocale=t.payload;},setPreferredLocale(e,t){e.preferredLocale=t.payload;},setSectionState(e,t){e.sectionState={...e.sectionState,...t.payload};},resetSectionState(e,t){e.sectionState={...e.sectionState,[t.payload]:{}};},setActiveEntity(e,t){e.activeEntity=t.payload;},openSidebar(e,t){e.sidebarStatus={...e.sidebarStatus,[t.payload]:true};},closeSidebar(e,t){e.sidebarStatus={...e.sidebarStatus,[t.payload]:false};},toggleSidebar(e,t){e.sidebarStatus={...e.sidebarStatus,[t.payload]:!e.sidebarStatus[t.payload]};},addRunConsumersRunning(e,t){e.isRunConsumersRunning=e.isRunConsumersRunning.concat(t.payload);},removeRunConsumersRunning(e,t){e.isRunConsumersRunning=e.isRunConsumersRunning.filter(r=>!t.payload.includes(r));}},extraReducers:e=>{e.addCase(HYDRATE,(t,r)=>{t.previews=r.payload.status.previews;});}}),xe=Fr.actions;var fu={attributes:{},variables:{},status:{}},Vr=createSlice({name:"variables",initialState:fu,reducers:{setVariableChange:(e,t)=>{e.attributes={...e.attributes,...t.payload.attributes},e.variables={...e.variables,...t.payload.variables},e.status={...e.status,...t.payload.status};}},extraReducers:e=>{e.addCase(HYDRATE,(t,r)=>{let o=r.payload.variables;t.attributes={...t.attributes,...o.attributes},t.status={...t.status,...o.status},t.variables={...t.variables,...o.variables};});}}),Vt=Vr.actions;var hu={tree:[],reports:null,entities:{block:{},dimension:{},report:{},section:{},variant:{},formatter:{},datasource:{}},requests:{block:{},dimension:{},report:{},section:{},variant:{},formatter:{},datasource:{}}},Pe=createSlice({name:"records",initialState:hu,reducers:{set:(e,t)=>{let r=t.payload;return {entities:sr(e.entities,r.entities||{}),requests:sr(e.requests,r.requests||{}),reports:r.reports||e.reports,tree:r.tree||e.tree}},setRequest:(e,t)=>{let r=t.payload;e.requests[r.type][r.key]=r;},setCreateRequest(e,t){let r=t.payload;if(e.requests[r.type][r.key]=r,r.status==="SUCCESS"){let o=Array.isArray(r.data)?r.data:[r.data],n=Dr(r.type,o),a=sr(e.entities,n);if(e.entities=a,r.type==="report"){let s=r.data;e.reports?e.reports.indexOf(s.id)===-1&&(e.reports=[...e.reports,s.id]):e.reports=[s.id];}else if(r.type==="dimension"){let s=r.data;e.entities.report[s.report_id].dimensions.push(s.id),e.entities.report[s.report_id].dimensions=$r(a.report[s.report_id].dimensions,a.dimension);}else if(r.type==="variant"){let s=r.data;e.entities.dimension[s.dimension_id].variants.push(s.id);}else if(r.type==="section"&&!Array.isArray(r.data)){let s=r.data;e.entities.report[s.report_id].sections.push(s.id),e.entities.report[s.report_id].sections=$r(a.report[s.report_id].sections,a.section);}else if(r.type==="block")if(Array.isArray(r.data)){let s=r.data,i=s[0],c=s.map(l=>l.id);e.entities.section[i.section_id].blocks.concat(c);}else {let s=r.data;e.entities.section[s.section_id].blocks.push(s.id);}}},setReadRequest(e,t){let r=t.payload;if(r.type!=="report"&&(e.requests[r.type][r.key]=r),r.status==="SUCCESS"){let o=Dr(r.type,r.data),n=sr(e.entities,o);e.entities=n;}},setUpdateRequest(e,t){let r=t.payload;if(e.requests[r.type][r.key]=r,r.status==="SUCCESS"){let o=Array.isArray(r.data)?r.data:[r.data],n=Dr(r.type,o),a,s,i;if(r.type==="block"&&!Array.isArray(r.data)){let l=e.entities.block[r.data.id].inputs,u=n.block[r.data.id].inputs;a=l.length!==u.length,a&&(i=l.length>u.length,s=i?l.filter(p=>!u.includes(p))[0]:u.filter(p=>!l.includes(p))[0]),Object.values(n.block).forEach(p=>{p.block_input&&delete n.block[p.id];});}let c=sr(e.entities,n);if(e.entities=c,r.type==="dimension"){let l=r.data;e.entities.report[l.report_id].dimensions=$r(c.report[l.report_id].dimensions,c.dimension);}else if(r.type==="section"&&!Array.isArray(r.data)){let l=r.data;e.entities.report[l.report_id].sections=$r(c.report[l.report_id].sections,c.section);}else if(r.type==="block"&&!Array.isArray(r.data)){let l=r.data;a&&(i?e.entities.block[s].consumers=e.entities.block[s].consumers.filter(u=>u!==l.id):e.entities.block[s].consumers.push(l.id));}}},setDeleteRequest(e,t){let r=t.payload;if(e.requests[r.type][r.key]=r,r.status==="SUCCESS"){let{id:o,parentId:n,parentType:a}=r.data;if(delete e.entities[r.type][o],a&&n!=null){let s=`${r.type}s`;Ru(e.entities[a][n][s],o);}}},removeBlocks:(e,t)=>{let r=t.payload,o={...e.entities.block};return r.forEach(n=>{delete o[n];}),{...e,entities:{...e.entities,block:o}}},addBlocks:(e,t)=>{let r=t.payload;return {...e,entities:{...e.entities,block:{...e.entities.block,...r}}}},removeDataSourceLogic:e=>{let t={...e.entities.datasource};Object.keys(t).forEach(r=>{e.entities.datasource[r].content.useProxy&&(delete e.entities.datasource[r].content.logic,delete e.entities.datasource[r].content.testUrl,delete e.entities.datasource[r].content.access);});}},extraReducers:e=>{e.addCase(HYDRATE,(t,r)=>{let o=r.payload.records,n=o.entities;t.entities=n,t.reports=Object.values(n.report).map(a=>a.id),t.requests={block:{},dimension:{},report:{},section:{},variant:{},formatter:{},datasource:{}},t.tree=o.tree;});}});function sr(e,t){return Object.fromEntries(Object.keys(e).map(r=>[r,{...e[r],...t[r]}]))}function $r(e,t){return e.map(n=>t[n]).sort((n,a)=>typeof n.ordering=="string"&&typeof a.ordering=="string"?Nr(n,a):typeof n.ordering=="number"&&typeof a.ordering=="number"?n.ordering-a.ordering:String(n.ordering).localeCompare(String(a.ordering))).map(n=>n.id)}function Ru(e,t){let r=e.indexOf(t);r>-1&&e.splice(r,1);}var be=Pe.actions,Wa=ir({block:Ve("block"),dimension:Ve("dimension"),formatter:Ve("formatter"),report:Ve("report"),section:Ve("section"),variant:Ve("variant"),datasource:Ve("datasource")}),ne=ir({block:$e("block"),dimension:$e("dimension"),formatter:$e("formatter"),report:$e("report"),section:$e("section"),variant:$e("variant"),datasource:$e("datasource")}),Ya=ir({block:Te("block"),dimension:Te("dimension"),formatter:Te("formatter"),report:Te("report"),section:Te("section"),variant:Te("variant"),datasource:Te("datasource")}),Ja=ir({block:gt("block"),dimension:gt("dimension"),formatter:gt("formatter"),report:gt("report"),section:gt("section"),variant:gt("variant"),datasource:gt("datasource")}),Qa=ir({block:Ha("block"),section:Ha("section")});function ir(e){return (t,r)=>{let o=e[t];if(!o)throw new Error(`Attempting to dispatch action for invalid entity type '${t}'`);return o(r)}}function ht(e,t){return (r,o)=>{let a=o().records.requests[e][t],s=!a||a.status==="UNINITIALIZED"?"LOADING":"FETCHING";r(be.setRequest({key:t,type:e,status:s}));}}function yt(e,t,r,o){return n=>{typeof window=="object"&¬ifications.show({autoClose:3e3,color:"red",id:t,message:o,title:"Error"}),n(be.setRequest({key:t,type:e,status:"FAILURE",error:{code:r,message:o}}));}}function Ve(e){return t=>{let r=vo(e,t);return (o,n,a)=>(o(ht(e,r)),le(a,"create",e)(t).then(i=>(i.ok===true?o(be.setCreateRequest({key:r,operation:"create",status:"SUCCESS",type:e,data:i.data})):o(yt(e,r,i.status,i.error)),i)))}}function Eu(e){return t=>{let r=vo(e,t[0]);return (o,n,a)=>(o(ht(e,r)),le(a,"createBulk",e)(t).then(i=>(i.ok===true?o(be.setCreateRequest({key:r,operation:"createBulk",status:"SUCCESS",type:e,data:i.data})):o(yt(e,r,i.status,i.error)),i)))}}function Ka(e,t,r){return r.replace(new RegExp(e,"g"),t)}function Au(e){return e.section_id!==void 0}function Tu(e){return e.report_id!==void 0}function Ha(e){return t=>{let{create:r}=t;return (o,n,a)=>Ve(e)(r)(o,n,a).then(async i=>{if(i.ok){let{data:c}=i,{id:l}=c,{update:u}=t,p=es(e,{id:l});if(o(ht(e,`${p}`)),e==="block"&&Au(r)){let d=produce(u,h=>{h.id=l;}),{contentByLocale:m}=d;m&&(d=produce(d,h=>{h.id=l,h.contentByLocale=Object.keys(m).reduce((S,x)=>{let P=m?m[x]:{};return S[x]={...P,id:l},S},{});}));let R=d.inputs?.map(h=>({type:h.type,id:h.id,inputAction:{operation:"create",input:{input_id:h.id,block_id:d.id}}}));return R&&R.length>0&&ja(e)([d,...R])(o,n,a).then(()=>$e("section")({id:d.section_id,include:true})(o,n,a).then(h=>(h.ok&&o(be.setRequest({key:p,type:e,status:"SUCCESS",data:h.data})),h))),Te(e)(d)(o,n,a).then(h=>(h.ok&&o(be.setRequest({key:p,type:e,status:"SUCCESS",data:h.data})),h))}if(e==="section"&&Tu(r)){let{id:d}=c,m=produce(u,h=>{h.id=d;}),{blocks:f}=m,R=f?.map(h=>({type:h.type,blockcol:h.blockcol,blockrow:h.blockrow,section_id:d,locales:Object.keys(h.contentByLocale).map(S=>S)}));return R&&f&&await Eu("block")(R)(o,n,a).then(h=>{if(h.ok){let S=h.data,x=[],P=S.map((U,A)=>{let C={...U},N=C.id,k=f[A];k.contentByLocale&&(C.contentByLocale=Object.keys(k.contentByLocale).reduce((_,b)=>{let E=k.contentByLocale[b];return _[b]={...E,content:{...E.content},id:C.id},_},{}));let{settings:L}=k,{contentByLocale:M,id:D}=C;C.settings=L;let Y={id:D,contentByLocale:M,settings:L};return k.inputs.map(_=>_.id).reduce((_,b)=>{let E=f.findIndex(w=>w.id===b);return [..._,E]},[]).map(_=>({...S[_],originalBlock:f[_]})).forEach(_=>{let{id:b,type:E,originalBlock:w}=_;if([B.SELECTOR,B.VIZ].includes(E)){if(Y.contentByLocale?.logic?.content?.api){let Z=Y.contentByLocale?.logic.content.api;Y.contentByLocale.logic.content.api=Ka(`(selector${w.id}id)`,`selector${b}id`,Z);}if(Y.contentByLocale?.logic?.content?.logic){let Z=Y.contentByLocale.logic.content.logic;Y.contentByLocale.logic.content.logic=Ka(`(selector${w.id}id)`,`selector${b}id`,Z);}}x.push({id:b,inputAction:{operation:"create",input:{input_id:b,block_id:N}}});}),Y});return ja("block")([...P,...x])(o,n,a)}}),Te(e)(m)(o,n,a).then(h=>(h.ok&&o(be.setRequest({key:p,type:e,status:"SUCCESS",data:h.data})),h))}return Te(e)({...u,id:c.id})(o,n,a)}})}}function $e(e){return t=>{let r=Za(e,t);return (o,n,a)=>{o(ht(e,r));let s=le(a,"read",e);if(typeof s!="function"){let i=`Failed to get valid RPC method for entity "${e}"`;return o(yt(e,r,500,i)),Promise.reject(new Error(i))}return s(t).then(i=>(i.ok===true?o(be.setReadRequest({key:r,operation:"read",status:"SUCCESS",type:e,data:i.data})):o(yt(e,r,i.status,i.error)),i))}}}function Te(e){return t=>{let r=Io(e,t);return (o,n,a)=>(o(ht(e,r)),le(a,"update",e)(t).then(i=>(i.ok===true?o(be.setUpdateRequest({key:r,operation:"update",status:"SUCCESS",type:e,data:i.data})):o(yt(e,r,i.status,i.error)),i)))}}function ja(e){return t=>{let r=Io(e,t[0]);return (o,n,a)=>(o(ht(e,r)),le(a,"updateBulk",e)(t).then(i=>(i.ok===true?o(be.setUpdateRequest({key:r,operation:"updateBulk",status:"SUCCESS",type:e,data:i.data})):o(yt(e,r,i.status,i.error)),i)))}}function gt(e){return t=>{let r=Xa(e,t);return (o,n,a)=>(o(ht(e,r)),le(a,"delete",e)(t).then(i=>{i.ok===true?o(be.setDeleteRequest({key:r,operation:"delete",status:"SUCCESS",type:e,data:i.data})):o(yt(e,r,i.status,i.error));}))}}function vo(e,t){if(e==="variant"){let r=t;return `create(variant, [${r.dimension_id}, ${r.name}])`}return `create(${e}, [${Object.keys(t)}])`}function Za(e,t={}){let r=t.id==null?null:`'${t.id}'`;return `read(${e}, ${r}, ${!!t.include})`}function Io(e,t){let{id:r,...o}=t;return `update(${e}, ${r}, [${Object.keys(o)}])`}function Xa(e,t){return `delete(${e}, ${t})`}function es(e,t){let r=t.id==null?null:`'${t.id}'`;return `clone(${e}, ${r})`}var{setStatus:ts,setPreviews:_u,setSectionState:rs,resetSectionState:os,setCurrentLocale:wu,setPreferredLocale:ku,addRunConsumersRunning:ns,removeRunConsumersRunning:as}=xe;function xu(e,t){return async(r,o,n)=>{let a=await n.validateVariantSlug({dimension:e,slug:t});if("error"in a)throw new Error(a.error);return a.data}}function Pu(e){return async(t,r,o)=>{let n=await o.searchReport(e);if("error"in n)throw new Error(n.error);return n.data}}function vu(){return async(e,t,r)=>{let o=await r.regenerateSearch(void 0);if("error"in o)throw new Error(o.error);return o.data}}function ze(e){return async(t,r,o)=>{let n=await o.readMember(e);if("error"in n)throw new Error(n.error);return n.data}}function Iu(e){return async(t,r,o)=>{let n=await o.searchMember(e);if(n.ok===true)return n.data;throw new Error(n.error)}}async function ss(e,t,r,o){let n=r().status,a={...n,...o},s={...n.query,...o.query};Object.keys(s).forEach(c=>s[c]===void 0&&delete s[c]);let i={...a,query:s};t(ts(i)),n.activeSection&&t(is(e,{query:s}));}function Cu(e,t){return async(r,o)=>ss(e,r,o,{query:{[t]:void 0}})}function Lu(e,t,r){return async(o,n)=>ss(e,o,n,{query:{[t]:r}})}function is(e,t){return async(r,o)=>{let n=o(),{currentLocale:a}=n.status,s=n.records.entities.block,i=e.formatterFunctions[a],c=e.datasourceFunctions,{parsedParams:l,statusPayload:u}=Ga(n.status,t),{sid:p,bid:d,previews:m,query:f}=l;Object.keys(u).length&&r(xe.setStatus(u));let R={...Ft(m),locale:a,...ue()},h={variables:R,query:f,locale:a};r(xe.addRunConsumersRunning([p]));let S=n.records.entities.section[p],x=async P=>r(ze(P));try{let P=await Ut(s,S&&[S],d,i,h,void 0,x,"section",c),{variables:U,status:A}=P;r(Vt.setVariableChange({attributes:R,variables:U,status:A})),r(xe.removeRunConsumersRunning([p]));}catch(P){console.error("Error in runConsumers client side: recalculateVariables",P);}}}function cr(e){return async(t,r,o)=>{let n=await o.readMetadata(e);if("error"in n)throw new Error(n.error);return n.data}}function Bu(e){return async(t,r,o)=>{let n=await o.urlProxy(e);if("error"in n)throw new Error(n.error);return n.data}}function Mu(){return async(e,t,r)=>{let o=await r.searchRole("");if("error"in o)throw new Error(o.error);return o.data}}function Ou(e){return async(t,r,o)=>{let n=await o.searchUser(e);if("error"in n)throw new Error(n.error);return n.data}}function Nu(e){return async(t,r,o)=>{let n=await o.readUser({user_id:e});if("error"in n)throw new Error(n.error);return n.data}}function Du({user:e}){return async(t,r,o)=>{let n=await o.updateUser(e);if("error"in n)throw new Error(n.error);return n.data}}function Uu(e){return async(t,r,o)=>{let n=await o.updateMyData(e);if("error"in n)throw new Error(n.error);return n.data}}function qe(e){let{removeBlocks:t}=Pe.actions;return async r=>{await r(t(e));}}function lr(e){let{addBlocks:t}=Pe.actions;return async r=>{await r(t(e));}}function Fu(e){return async(t,r,o)=>{let n=await o.readPrivateBlocks({...e,roles:[]});if("error"in n)throw new Error(n.error);return n.data}}function Vu(e){return async(t,r,o)=>{let n=await o.revalidateUrl({target:e.target});if("error"in n)throw new Error(n.error);return n.data}}function $u(e){return async(t,r,o)=>{let n=await o.revalidateReport({reportId:e.reportId,profilePrefix:e.profilePrefix});if("error"in n)throw new Error(n.error);return n.data}}function zu(){return async(e,t,r)=>{let o=await r.readEnvSecrets({});if("error"in o)throw new Error(o.error);return o.data}}function ur(){let{removeDataSourceLogic:e}=Pe.actions;return async t=>{await t(e());}}var cs=()=>configureStore({reducer:{[Pe.name]:Pe.reducer,[Fr.name]:Fr.reducer,[Vr.name]:Vr.reducer},middleware(e){return e({thunk:{extraArgument:or("/api/cms/")}})}}),Ge=createWrapper(cs);function ju(e){let t=process.cwd(),r=Hu.resolve(t.endsWith("/example")?t.replace("/example",""):t,"package-lock.json"),o;try{let n=JSON.parse(Nc.readFileSync(r,"utf-8"));o=n.dependencies&&n.dependencies[e]&&n.dependencies[e].version!=="file:packages/reports"?n.dependencies[e].version:"0.dev";}catch{o="0.vercel";}return o||"Version not found"}function Wu(e){let t=()=>Promise.resolve({}),{pathSegmentsKey:r="bespoke",preResolve:o=t,postResolve:n=t,authOptions:a={providers:[]}}=e||{};return Ge.getServerSideProps(s=>{let i=s.dispatch;return async c=>{let l=await me(c.req,c.res,a);if(!l)return {redirect:{destination:"/api/auth/signin?callbackUrl=/cms",permanent:false}};let u=new Set([z.ADMIN,z.EDITOR,z.WRITER]);if(!(l?.user?.bespoke_roles||[]).some(S=>u.has(S)))return {redirect:{destination:"/",permanent:false}};let d=c.query[r],[m]=Array.isArray(d)?d:[d];await i(it);let f=await ju("@datawheel/bespoke"),R=await o(s,c);if("redirect"in R)return {props:R};m==="reports"&&(ls(c.query[r])?await Promise.all([i(ne("formatter",{})),i(ne("datasource",{include:true})),i(ne("report",{id:ls(c.query[r]),include:true})),xe.setStatus({isCMS:true})]):await Promise.all([i(ne("report",{include:"dimensions"})),xe.setStatus({isCMS:true})])),m==="metadata"&&await i(ne("report",{include:"dimensions"})),m==="formatters"&&await i(ne("formatter",{})),m==="datasources"&&await i(ne("datasource",{include:true}));let h=await n(s,c);return {props:{...R,...h,bespokeVersion:f,session:l}}}})}function ls(e){if(e==null||e==="")return;let[,t]=Array.isArray(e)?e:[e];return Number.parseInt(t)||void 0}var {locales:Ju}=G(),Qu={pathSegment:"path",formatterFunctions:Ju.reduce((e,t)=>({...e,[t]:{}}),{}),datasourceFunctions:[],profilePrefix:"path",previewPrefix:null,siteProps:{}};createContext(Qu);G();var fp=e=>e.records.entities.report;var Gr=e=>e.records.entities.block;var gp=e=>e.records.entities.datasource;function $t(e){return createSelector([t=>t.records.entities[e]],t=>Object.values(t))}$t("report");$t("dimension");$t("variant");var Kr=$t("section");$t("block");var Hr=$t("formatter");createSelector([fp],e=>Object.values(e)[0]);var yp=ue(),hp=[],jr=createSelector([gp],e=>e?Object.values(e).sort((t,r)=>t.content.order>r.content.order?1:-1).map(t=>{let r={...yp};return {...t,content:{...t.content,pattern:ye(t.content.pattern,{},{variables:r})}}}):hp);var Rp=async(e,t,r,o,n)=>{if(e.length===0)throw new Error("No slugs provided");let a=await t(r({mode:"slugs",locale:n,slugs:e,output:"full"})),s=a.results[0].report_id;if(a.results.length>1){if(a.results.every(f=>f.report_id===s)===false)throw new Error("Members belong to different reports");let l=a.results.map(f=>f.dimension_id),u=new Set(l);if(l.length!==u.size)throw new Error("Members belong to same dimensions");let p=a.results.sort((f,R)=>f.dimension_ordering>R.dimension_ordering?1:-1).reduce((f,R,h)=>(f[R.variant_slug]=h,f),{}),d=e.reduce((f,R,h)=>(f[R.variantSlug]=h,f),{});if(!(Object.keys(p).length===Object.keys(d).length&&Object.keys(p).every(f=>Object.prototype.hasOwnProperty.call(d,f)&&p[f]===d[f])))throw new Error("Variant slugs do not match the expected dimension order")}let c=(await t(o({report_id:s,count:false}))).data.find(l=>l.id===s);if(!c||a.results.length!==c.dimensions.length)throw new Error(`Missing members for report ID ${s}`);return a},Wr=Rp;function bp(e){let{fallback:t=true,limit:r=50}=e||{};return async o=>{let{defaultLocale:n=pe,locales:a=[]}=o,s=[];if(r>0){let i=a.find(u=>u===n),{searchMember:c}=await rt().then(Ot),l=await c({query:"",limit:r,format:"plain",locale:i||pe,noImage:false,visible:true,report:[],dimension:[],variant:[],includes:true});l.ok===true&&(s=l.data.results.map(u=>({locale:a.find(p=>p===u.locale),params:{bespoke:[u.variant.slug,u.slug]}})));}return {fallback:t,paths:s}}}function Sp(e){let{pathSegmentsKey:t="bespoke"}=e||{};try{return Ge.getStaticProps(r=>{let o=r.dispatch;return async n=>{await o(it);let a=new Date().toISOString(),{locale:s=pe,params:i={}}=n,c=Array.from(Bo(i[t])),l;try{l=await Wr(c,o,ze,cr,s);}catch(k){return console.error("[Bespoke slug validation Failed]: Return 404:",k.message,`[${s}] -> /${c.map(L=>`${L.variantSlug}/${L.memberSlug}`).join("/")}`),{notFound:!0}}o(Rt.setPreviews(l.results)),await Promise.all([o(ne("formatter",{})),o(ne("datasource",{include:!0})),o(ne("report",{id:l.results.map(k=>k.report_id),include:!0,locales:[s]}))]);let u=r.getState(),p=Hr(u),d=jr(u),m=ar(p,s),f=Kr(u),R=Gr(u),h={...R},S={},x=Object.values(R).reduce((k,L)=>("access"in L.settings&&!["public","guest"].some(M=>!L.settings.access||L.settings.access.includes(M))&&k.push(L.id),k),[]),P=x.filter(k=>h[k].settings[Le.FALLBACK]),U=Array.from(new Set([...P,...he(P,Object.values(h))])),A=x.filter(k=>[B.SELECTOR,B.MULTIHIERARCHY_SELECTOR].includes(h[k].type)),F=Array.from(new Set([...A,...he(A,Object.values(h))]));x=Array.from(new Set([...x,...U,...F,...he(x,Object.values(h))])),x.forEach(k=>{P.includes(k)?(S[k]={...h[k],type:B.FALLBACK,original_type:h[k].type},delete h[k]):A.includes(k)&&(S[k]={...h[k],settings:{...h[k].settings,[Le.DISABLED]:!0}},delete h[k]),F.includes(k)||delete h[k];}),await o(qe(x.filter(k=>!F.includes(k)))),await o(lr(S));let C={...Ft(l.results),locale:s,...ue()},N=async k=>await o(ze(k));return await Ut({...h,...S},f,void 0,m,{locale:s,query:i,variables:C},void 0,N,"report",d).then(async k=>{let L=Object.keys({...h,...S}).reduce((M,D)=>(k.variables[D]&&k.status[D]||M.push(Number(D)),M),[]);await o(qe(L)),await o(Vt.setVariableChange({...k,attributes:C})),await o(ur());}),{props:{buildTime:a}}}})}catch(r){console.error("ERROR SSR",r);}}function Bo(e=[]){let t=[].concat(e),r=0;return {next(){return {value:{variantSlug:t[r++],memberSlug:t[r++]},done:r>t.length}},[Symbol.iterator](){return this}}}function Ep(e){let{pathSegmentsKey:t="bespoke"}=e||{};try{return Ge.getServerSideProps(r=>{let o=r.dispatch;return async n=>{let{section:a,block:s}=n.query,i=Object.fromEntries(Object.entries(n.query).filter(([v])=>v.match(/selector\d+id/)));if(!a&&!s)return {notFound:!0};let c=Number(a);await o(it);let l=new Date().toISOString(),{locale:u=pe,params:p={},req:d}=n,m=Array.from(Bo(p[t])),f;try{f=await Wr(m,o,ze,cr,u);}catch(v){return console.error("[Bespoke slug validation Failed]: Return 404:",v.message,`/${u}/${d.url}`),{notFound:!0}}o(Rt.setPreviews(f.results)),await Promise.all([o(ne("formatter",{})),o(ne("datasource",{include:!0})),o(ne("report",{id:f.results.map(v=>v.report_id),include:!0,locales:[u]}))]);let R=r.getState(),h=Hr(R),S=jr(R),x=ar(h,u),P=Kr(R).filter(v=>v.id===c),U=Gr(R),A={...U},F={},C=Object.values(U).reduce((v,j)=>("access"in j.settings&&!["public","guest"].some(_=>!j.settings.access||j.settings.access.includes(_))&&v.push(j.id),v),[]),N=C.filter(v=>A[v].settings[Le.FALLBACK]),k=Array.from(new Set([...N,...he(N,Object.values(A))])),L=C.filter(v=>[B.SELECTOR,B.MULTIHIERARCHY_SELECTOR].includes(A[v].type)),M=Array.from(new Set([...L,...he(L,Object.values(A))]));C=Array.from(new Set([...C,...k,...M,...he(C,Object.values(A))])),C.forEach(v=>{N.includes(v)?(F[v]={...A[v],type:B.FALLBACK,original_type:A[v].type},delete A[v]):L.includes(v)&&(F[v]={...A[v],settings:{...A[v].settings,[Le.DISABLED]:!0}},delete A[v]),M.includes(v)||delete A[v];}),await o(qe(C.filter(v=>!M.includes(v)))),await o(lr(F));let D={...Ft(f.results),locale:u,...ue()},Y=async v=>await o(ze(v));await Ut({...A,...F},P,void 0,x,{locale:u,query:{...p,...i},variables:D},void 0,Y,"section",S).then(async v=>{let j=Object.keys({...A,...F}).reduce((_,b)=>(v.variables[b]&&v.status[b]||_.push(Number(b)),_),[]);await Promise.all([o(qe(j)),o(Vt.setVariableChange({...v,attributes:D})),o(ur())]);});let V=Object.keys({...A,...F}).filter(v=>a&&s?v!==s:A[v]&&A[v].section_id!==c).map(Number);return await o(qe(V)),{props:{buildTime:l}}}})}catch(r){return console.error("ERROR SSR",r),async()=>({notFound:true})}}export{Ep as BespokeEmbedServerSideProps,wl as BespokeEndpointNextJsHandlerFactory,me as BespokeGetSession,Cs as BespokeHandleAuth,Wu as BespokeManagerServerSideProps,bp as BespokeRendererStaticPaths,Sp as BespokeRendererStaticProps,Vs as BespokeSearchUsersByMetadata,Ms as BespokeUpdateCurrentUserAppMetadata,Ns as BespokeUpdateCurrentUserMetadata,Us as BespokeWithApiRoleAuthRequired,xl as ReportCrosswalkHandler,Ot as dbApiFactory,bo as endpointKey,rt as getDB,it as useDatabaseApi};
|