@datawheel/bespoke 1.0.0-beta.6 → 1.0.0-beta.7

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.
Files changed (2) hide show
  1. package/dist/server.js +19 -15
  2. package/package.json +1 -1
package/dist/server.js CHANGED
@@ -1,40 +1,44 @@
1
- import xs,{getServerSession}from'next-auth';import Ts from'next-auth/providers/auth0';import He from'auth0';import*as Ni 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 ti from'd3-array';import*as ri from'd3-collection';import*as oi from'd3-format';import {formatLocale}from'd3-format';import*as ni 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 Vi from'slugify';import Or from'axios';import zi from'jsonwebtoken';import qi from'next/config';import {Document}from'flexsearch';import kc from'base58';import xc from'flickr-sdk';import {createApi}from'unsplash-js';import Mc from'fs';import {createContext,createElement}from'react';import {renderToString}from'react-dom/server';import*as ho from'@tabler/icons-react';import hl from'cors';import Rl from'image-type';import nl from'formidable';import ul from'dom-parser';import Gu from'path';import Da from'axios-retry';import {format}from'pretty-format';import $l 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 Es=Object.defineProperty;var As=(e,t)=>{for(var r in t)Es(e,r,{get:t[r],enumerable:true});};var ws={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=Ts({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(ws),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 Ps=(e={providers:[]})=>{let t=Ke(e);return xs(t)},vs=Ps;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 Is(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(Is,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 Cs=(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"});}})();}),Ls=Cs;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={...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"});}})();}),Ms=Bs;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 Os=(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);},Ns=Os;var Ds=(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 "});}})();}),Us=Ds;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 $s(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=$s;var fr=class extends Model{};function qs(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=qs;var gr=class extends Model{};function Ks(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=Ks;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 Hs(e){"@swc/helpers - typeof";return e&&typeof Symbol<"u"&&e.constructor===Symbol?"symbol":typeof e}var Ws=function(e,t){return parseFloat(Math.round(e*Math.pow(10,t))/Math.pow(10,t)).toFixed(t)};function Ys(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:Ws(a.scale(n),t),symbol:a.symbol}}function Js(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":Hs(t))==="object"?t:yr[t]||yr["en-US"],s=a.suffixes.map(Js),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=Ys(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 Qs(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 Zs(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 Xs(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 ei(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:Qs,binP:Gt,computeMidP:Xs,criticalValue:Zs,smr:ei};var Je={d3:{...ti,...ri,...oi,...ni},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"},pi={ACCESS:"access",ACCESS_LOGIC:"accessLogic"},di={DISABLED:"disabled"},mi={FALLBACK:"fallback"};var fi={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={...fi,...ro},Ce={NAME:"name",DESCRIPTION:"description",...to,...pi,...mi,...di};var Rr={FORMATTER:"formatter"},At={STRING:"string"};var Tt=class extends Model{};function hi(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=hi;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 bi(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=bi;var br=class extends Model{};function Ei(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=Ei;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 Ti(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=Ti;var xt=class extends Model{toJSON(){let t=this.get({plain:true}),{variants:r=[]}=this;return {...t,variants:r.map(o=>o.toJSON())}}};function wi(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=wi;var Pt=class extends Model{get report(){return this.dimension?.report}toJSON(){return this.get({plain:true})}};function xi(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=xi;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 vi(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=vi;var Sr=class extends Model{};function Ci(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=Ci;var jt=class extends Model{toJSON(){let t=this.get({plain:true}),{blocks:r=[]}=this;return {...t,blocks:r.map(o=>o.toJSON())}}};function Bi(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=Bi;var Ar=class extends Model{};function Oi(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 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 {
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=Oi;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=ve(),un=process.env.REPORTS_DB_CONNECTION||"";if(!un)throw new Error(`
6
+ };`,testUrl:""}}},{sequelize:e,modelName:"datasource",tableName:"bespoke_reports_data_source",freezeTableName:true,timestamps:false}),()=>Ar}var cn=Ni;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=ve(),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:Ni,pool:{max:10,min:1,acquire:5*1e3,idle:10*1e3,evict:1*1e3}});}catch(t){throw new Error(`
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:Di,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 Fi=()=>{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=Fi;function $(e){let t={"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#x27;":"'","&#x60;":"`","&nbsp;":""},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 $i(e){return e?Vi(Wt($(e)),{replacement:"-",remove:/[*+~.()'"!:@]/g,lower:true,strict:true,trim:true}):""}var Tr=$i;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:zi};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 Gi(){let{publicRuntimeConfig:e}=qi(),t=e.bespoke_report_env_vars||{};return {...Object.keys(t).reduce((r,o)=>(r[`ENV_${o}`]=t[o]||"N/A",r),{})}}var ue=Gi;function Ki(){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=Ki;var{localeDefault:Wi}=G();function fe(e){return {variables:e.variables||{},query:e.query||{},locale:e.locale||Wi}}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=Yi;function Yi(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 Qi(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||Qi(h,S))){let x=await wr({vars:["url","libs","session"],logic:f.content.logic},d)(c.url);if(x.axiosConfig)c=x.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 v=qt(S.data,m),x=[];try{console.info(`Ingesting default items for variant ${s.name} for ${u}`),x=await a(s,u,v);}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:x.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),P=await r.findAll({where:{id:x,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&&P[b.content_id]?(E={...P[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:v,overrideRelevance:x,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=[],P=[],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 J;try{J=parseInt(b[R],10);}catch{J=0;}let H=D!==null&&M!==null&&D!==M?(J-M)/(D-M):0;Z=D===M?1:parseFloat(H.toPrecision(5));}if(N[E]){if(h||S||x||U){let J=N[E];if((h||U)&&P.push(J.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 Pe=X?`${w}-${E}`:w;J.slug!==Pe&&(J.slug=Pe,L.push(w),j=true,console.info("UPDATE SLUG",E,w));}R&&R!==""&&x&&J.zvalue!==Z&&(J.zvalue=Z,j=true,console.warn("UPDATE ZVALUE",E,Z)),j&&V.push(J);}}else {console.info("INSERT ID",E);let J=C[w]||k.includes[w]||L.includes(w);J&&console.warn("Duplicate slug!",w,"replaced by",`${w}-${E}`);let H=J?`${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(!v){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)),P}catch(b){throw console.error(`[ERROR] Ingesting search members for ${i}`,b),new Error(b)}}}var rc=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,v)=>S.concat(v),[]));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 rc&&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),v=f.image?.getContent(a),x=v&&{id:f.image.id,author:f.image.author,url:f.image.url,license:f.image.license,meta:v.meta};R={...h,locale:S.locale,name:S.name,attributes:S.attributes,keywords:S.keywords,image:x||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 nc(e,t=true){if(!e)return "";let r=Wt($(e.toLowerCase()));return (t?Vi(r,{replacement:" ",remove:/[*+~.()'"!:@-]/g,lower:true,strict:false,trim:true}):r).replace(/\s\s+/g," ")}var It=nc;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=ve(),{locales:sc}=G(),ic=sc.filter(e=>xr.includes(e)),uo=false,cc=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 lc(e,r));}catch(o){throw new Error(`
16
+ `,t.stack||t.message),global.sequelize=void 0;}).then(()=>({...e.models,sequelize:e}));}return global.sequelize};var Vi=()=>{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=Vi;function $(e){let t={"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#x27;":"'","&#x60;":"`","&nbsp;":""},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 zi(e){return e?$i(Wt($(e)),{replacement:"-",remove:/[*+~.()'"!:@]/g,lower:true,strict:true,trim:true}):""}var Tr=zi;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:qi};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 Ki(){let{publicRuntimeConfig:e}=Gi(),t=e.bespoke_report_env_vars||{};return {...Object.keys(t).reduce((r,o)=>(r[`ENV_${o}`]=t[o]||"N/A",r),{})}}var ue=Ki;function Hi(){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=Hi;var{localeDefault:Yi}=G();function fe(e){return {variables:e.variables||{},query:e.query||{},locale:e.locale||Yi}}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=Ji;function Ji(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 Zi(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||Zi(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 J;try{J=parseInt(b[R],10);}catch{J=0;}let H=D!==null&&M!==null&&D!==M?(J-M)/(D-M):0;Z=D===M?1:parseFloat(H.toPrecision(5));}if(N[E]){if(h||S||P||U){let J=N[E];if((h||U)&&v.push(J.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 Pe=X?`${w}-${E}`:w;J.slug!==Pe&&(J.slug=Pe,L.push(w),j=true,console.info("UPDATE SLUG",E,w));}R&&R!==""&&P&&J.zvalue!==Z&&(J.zvalue=Z,j=true,console.warn("UPDATE ZVALUE",E,Z)),j&&V.push(J);}}else {console.info("INSERT ID",E);let J=C[w]||k.includes[w]||L.includes(w);J&&console.warn("Duplicate slug!",w,"replaced by",`${w}-${E}`);let H=J?`${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 oc=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 oc&&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 ac(e,t=true){if(!e)return "";let r=Wt($(e.toLowerCase()));return (t?$i(r,{replacement:" ",remove:/[*+~.()'"!:@-]/g,lower:true,strict:false,trim:true}):r).replace(/\s\s+/g," ")}var It=ac;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=ve(),{locales:ic}=G(),cc=ic.filter(e=>xr.includes(e)),uo=false,lc=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 uc(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 lc(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=ic.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 v=f.attributes||{};l.forEach(x=>{v[x]!==void 0&&(S[x]=v[x]);});}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=cc;var Ct=process.env.REPORTS_EXTERNAL_SEARCH,Le=ve(),{locales:uc}=G(),pc=uc.filter(e=>xr.includes(e)),po=false,dc=async(e=false)=>{if(e&&(Le&&console.info("0\uFE0F\u20E3 CLEARING SEARCH INDEX"),global.typesense=void 0,po=false),global.typesense)return Le&&console.info("\u{1F501} RE-UTILIZING SEARCH INDEX"),global.typesense;try{po||(Le&&console.info("1\uFE0F\u20E3 INITIALIZING SEARCH INDEX"),po=!0,global.typesense=await fc());}catch(t){throw new Error(`
21
+ `)}return global.flexsearch};async function uc(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=cc.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=lc;var Ct=process.env.REPORTS_EXTERNAL_SEARCH,Le=ve(),{locales:pc}=G(),dc=pc.filter(e=>xr.includes(e)),po=false,mc=async(e=false)=>{if(e&&(Le&&console.info("0\uFE0F\u20E3 CLEARING SEARCH INDEX"),global.typesense=void 0,po=false),global.typesense)return Le&&console.info("\u{1F501} RE-UTILIZING SEARCH INDEX"),global.typesense;try{po||(Le&&console.info("1\uFE0F\u20E3 INITIALIZING SEARCH INDEX"),po=!0,global.typesense=await gc());}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 mc(){try{if(Ct){let e=await Or.get(new URL(Ct).origin);if(e?.data["typesense-health"]===!0)return Le&&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 fc(){if(Le&&console.info(`\u{1F3F3}\uFE0F INITIALIZING TYPESENSE SEARCH AGAINST ${Ct}`),!await mc())throw new Error("TYPESENSE_URL service is not healthy.");let t=pc.map(r=>(Le&&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(",")),Le&&console.info("Typesense URL:",Ct,a),Or.get(Ct,{params:a}).then(i=>(Le&&(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=dc;var{localeDefault:hc}=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:v,noImage:x,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 P=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||[],J={};return Z.forEach(H=>{w[H]!==void 0&&(J[H]=w[H]);}),{...b.toJSON(),...J,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[hc],w={query:P===""?"*":P,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((bs,Ss)=>bs.concat(Ss.result),[]);zt=mr(zt),b=mr([...b,...zt]);}}let w={...f?{visible:f}:{},...x?{image_id:{[Op.eq]:null}}:{},...R.length?{variant_id:R}:{},...h.length?{dimension_id:h}:{},...S.length?{report_id:S}:{}},Z={locale:v?{[Op.ne]:null}:u},J=A&&A.startsWith("attr.")?A.replace("attr.",""):"",H=J&&/^[a-zA-Z0-9_-]+$/.test(J)?e.sequelize.escape(J):"",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([e.sequelize.col("contentByLocale.name"),k.startsWith("DESC")?"DESC":"ASC"]),l&&l!==""&&(w.content_id=b);let Pe=[{association:"contentByLocale",where:Z,separate:true}];(U||A==="report")&&Pe.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=[],Q=A&&A.startsWith("attr.")?{include:[[literal(`
26
- CASE
27
- WHEN "contentByLocale".attributes->>${H} ~ '^[0-9]+(\\.[0-9]+)?$'
28
- THEN CAST("contentByLocale".attributes->>${H} AS DOUBLE PRECISION)
25
+ `)}return global.typesense};async function fc(){try{if(Ct){let e=await Or.get(new URL(Ct).origin);if(e?.data["typesense-health"]===!0)return Le&&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 gc(){if(Le&&console.info(`\u{1F3F3}\uFE0F INITIALIZING TYPESENSE SEARCH AGAINST ${Ct}`),!await fc())throw new Error("TYPESENSE_URL service is not healthy.");let t=dc.map(r=>(Le&&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(",")),Le&&console.info("Typesense URL:",Ct,a),Or.get(Ct,{params:a}).then(i=>(Le&&(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=mc;var{localeDefault:Rc}=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||[],J={};return Z.forEach(H=>{w[H]!==void 0&&(J[H]=w[H]);}),{...b.toJSON(),...J,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[Rc],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((Ss,Es)=>Ss.concat(Es.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},J=A&&A.startsWith("attr.")?A.replace("attr.",""):"",H=J&&/^[a-zA-Z0-9_-]+$/.test(J)?e.sequelize.escape(J):"",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([e.sequelize.col("contentByLocale.name"),k.startsWith("DESC")?"DESC":"ASC"]),l&&l!==""&&(w.content_id=b);let Pe=[{association:"contentByLocale",where:Z,separate:true}];(U||A==="report")&&Pe.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=[],Q=x?"AND sc.locale IS NOT NULL":`AND sc.locale = ${e.sequelize.escape(u)}`,Te=A&&A.startsWith("attr.")?{include:[[literal(`
26
+ (SELECT CASE
27
+ WHEN sc.attributes->>${H} ~ '^[0-9]+(\\.[0-9]+)?$'
28
+ THEN CAST(sc.attributes->>${H} AS DOUBLE PRECISION)
29
29
  ELSE NULL
30
30
  END
31
+ FROM bespoke_reports_search_content sc
32
+ WHERE sc.id = "content_id" ${Q} LIMIT 1)
31
33
  `),"sort_attribute_num"],[literal(`
32
- CASE
33
- WHEN "contentByLocale".attributes->>${H} ~ '^[0-9]+(\\.[0-9]+)?$'
34
+ (SELECT CASE
35
+ WHEN sc.attributes->>${H} ~ '^[0-9]+(\\.[0-9]+)?$'
34
36
  THEN NULL
35
- ELSE "contentByLocale".attributes->>${H}
37
+ ELSE sc.attributes->>${H}
36
38
  END
37
- `),"sort_attribute_str"]]}:{},Te=l&&l!==""&&b.length?{include:[[literal(`array_position(array[${b.join(",")}], "content_id")`),"rank"]]}:{},[se,ie]=await Promise.all([r.findAll({limit:D,offset:C,where:w,include:Pe,order:X,subQuery:false,attributes:{include:[...Te.include||[],...Q.include||[]]}}),r.findAll({attributes:["variant_id",[fn("COUNT",col("variant_id")),"members_count"]],where:K,group:["variant_id"]})]),hs=ie.map(ce=>ce.toJSON()),Rs=m==="nested"?j:_;return ae=se.map(Rs),{meta:{origin:"flexsearch",...Object.fromEntries(Object.entries(s).map(ce=>[ce[0],$(ce[1])])),variantCount:hs.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 v=Object.values(d);await r.bulkCreate(v,{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:v,inputAction:x,...U}=f;return {id:R,contentByLocale:h,inputAction:x,...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:v,contentByLocale:x,inputAction:U,...A}=S;if(U&&(U.operation==="create"?await o.create(U.input):await o.destroy({where:U.input})),x){let F=Object.values(x);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:Ec}=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=Ec}={}){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(v=>({...v,contentByLocale:Object.keys(v.contentByLocale).reduce((x,U)=>({...x,...[...l,"logic"].includes(U)?{[U]:v.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)},Tc=Number(process.env.NEXT_PUBLIC_IMAGE_SPLASH_WIDTH)||1400,_c=Number(process.env.NEXT_PUBLIC_IMAGE_THUMB_WIDTH)||400,wc=async(e,t,r)=>{let o=[{type:"splash",res:Tc},{type:"thumb",res:_c}],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=wc;var On="SECTION_ALLOWED";var Nn=["4","5","7","8","9","10"],Pc=Nn.join(),{locales:vc}=G(),Me;if(process.env.FLICKR_API_KEY)try{Me=new xc(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:Pc,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/${kc.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)),v={url:s,author:i.photo.owner.realname||i.photo.owner.username,license:S?`${S.name}: ${S.url}`:""},x=await e.image.create(v);await e.image_content.destroy({where:{id:x.id}});let U=vc.map(A=>({id:x.id,locale:A,meta:i.photo.title._content}));await e.image_content.bulkCreate(U),await e.search.update({image_id:x.id},{where:{content_id:r}}),await Ee(e,x.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=Ic(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 Ic(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:Bc}=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=Bc.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:Oc}=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 Mc.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=Oc.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:Nc}=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=Nc.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:Dc}=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(x=>x.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 v=Dc.map(x=>({id:S.id,locale:x,meta:l.tags||l.description||""}));await e.image_content.bulkCreate(v),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 Uc={local:$n,flickr:Un,unsplash:qn,upload:Gn,adobe:jn,pixabay:Jn};function st(e,t){let r=Uc[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 Fc={local:Vn,flickr:Dn,unsplash:zn,adobe:Hn,pixabay:Yn};function Mt(e,t,r){let o=Fc[t];if(!o)throw new T(500,`Wrong provider dbImageSearchFactory.ts: ${t}`);return I(n=>o(e,n,r))}var Hc=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=>({...Hc(l.toJSON()),mode:l.dimensions.length===1?Ie.UNILATERAL:Ie.MULTILATERAL}))}}}function Qn(e){return async()=>(await nt(e,true),{error:false})}var{locales:jc,localeDefault:Wc}=G(),Yc=(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},Jc=(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=jc.includes(a.locale)?a.locale:Wc,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=Jc(p,m);return {meta:{...u.meta,origin:"flexsearch",format:s},results:Yc(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 Zc(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")||Zc(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 tl=Object.keys(ho).filter(e=>e.indexOf("Icon")===0);async function ra(){return {meta:{provider:"tabler"},results:tl}}async function oa(e){let t=ho[e.name]?ho[e.name]:()=>"";return renderToString(createElement(t))}var rl={tabler:ra};function na(e){let t=rl[e];if(!t)throw new T(500,`Wrong provider dbListIconsFactory.ts: ${e}`);return I(()=>t())}var ol={tabler:oa};function aa(e){return I(t=>{let r=ol[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 nl.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=sl(r.query);return t(o)})}function sl(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:cl}=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=zi.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||cl,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 ll(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 ll()}}})}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 ul().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 dl=lt();function ml(e){let t={email:e.user.email,name:e.user.name,roles:e.user.bespoke_roles||[]};return zi.sign(t,dl,{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:ml(r)}}}catch(o){throw console.error("Error generating token:",o),new T(500,"Internal Server Error")}})}var gl=lt(),yl=e=>!!zi.verify(e,gl);function Pa(){return O("POST","users/validate-token",async(e,t)=>{let{token:r}=e.body;try{return yl(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 bl=ve();function bo(e,t){return `${e.toUpperCase()} ${t.toLowerCase()}`}function Sl(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 El(e){return (t,r,o)=>new Promise((n,a)=>{e(o)(t,r,s=>s instanceof Error?a(s):n(s));})}var Al=El(hl);function Tl(e,t){let r=rt().then(o=>Sl(o,e,t));return async function(n,a){await Al(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 Rl(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=>{bl&&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 _l=e=>{let t=e;return async function(r,o){let n=await t({test:"pala"});return o.json(n)}},wl=_l;var Rt={};As(Rt,{addBlockToState:()=>lr,addRunConsumersRunning:()=>ns,cloneEntity:()=>Qa,createEntity:()=>Wa,deleteEntity:()=>Ja,deleteQueryParam:()=>vu,readEntity:()=>ne,readEnvSecrets:()=>Vu,readMember:()=>ze,readMetadata:()=>cr,readPrivateBlocks:()=>Du,readUser:()=>Mu,recalculateVariables:()=>is,removeBlocksFromState:()=>qe,removeDataSourceLogic:()=>ur,removeRunConsumersRunning:()=>as,reportSearch:()=>ku,resetSectionState:()=>os,revalidateReport:()=>Fu,revalidateUrl:()=>Uu,searchMember:()=>Pu,searchRegenerate:()=>xu,searchRole:()=>Lu,searchUser:()=>Bu,setCurrentLocale:()=>Tu,setPreferredLocale:()=>_u,setPreviews:()=>Au,setQueryParam:()=>Iu,setSectionState:()=>rs,setStatus:()=>ts,updateEntity:()=>Ya,updateMyData:()=>Nu,updateUser:()=>Ou,urlProxy:()=>Cu,variantValidateSlug:()=>wu});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}),xl=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",xl),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 Il=Xt(process.env.REPORTS_LOGGING),dt=Cl;function Cl(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 Ll(d,"log","debug","info","warn","error")?(...m)=>{i.push(`${d} ${Date.now()} - ${m.map(f=>format(f)).join(" ")}`),Il&&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 Ll(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 Bl=(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=Bl;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,v=c.defaultValue,x;if(v&&(v=S(v),Eo(p,v,h)&&(x=v)),!x){let A=h&&h[0]&&h[0].id||h[0]||"";x=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:x,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 Ml=(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=Ml;var Ol=(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=Ol;var{localeDefault:Ma,locales:Nl}=G(),Dl=Object.values(ro),Ul=(e,t=Ma)=>e&&Dl.includes(e.type)?{locale:oo,locales:[oo]}:{locale:t,locales:Nl},Oa=(e,t=Ma)=>{if(!e)return {};let{locale:r}=Ul(e,t);return e.contentByLocale?.[r]?.content};function Fl(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=Fl;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),Kl=process.env.REPORTS_ORIGIN||"",Hl=process.env.NEXT_PUBLIC_REPORTS_AXIOS_RETRIES,Va=5;try{Va=parseInt(`${Hl||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 jl=(e,t,r)=>{let o=ye(e,t,r);return o.startsWith("http")||(o=`${Kl}${o.startsWith("/")?"":"/"}${o}`),o},{urlProxy:Wl}=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 Yl(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(v=>{if(!v.content?.pattern)return false;try{let x=new RegExp(v.content.pattern,"gm");return x.test(s)?(m.datasource=v,!0):x.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 v=await Wl({url:s,timeout:Ua});if(v.ok===true)i=v.data;else throw new Br(v?.error)}else try{let x={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)x=C.axiosConfig;else throw new Br(`AxiosConfig is missing in Data Source ${m.datasource.name} (ID: ${m.datasource.id}).`)}let U=await Or(x);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(v){throw new Br(v.message)}if(d.has("bespoke_slugs")){let v=d.get("bespoke_slugs");if(v){let x=v.split(",");if(x.length===3){let[U,A,F]=x,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 Jl(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=Zl(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=jl(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(Yl(M,o,a,n,e).catch(Y=>{throw new Jl(` Excecution of ${e.type}-${e.id} in section ${e.section_id} in report ${s.report_name} (${s.report_id}) failed.
39
+ FROM bespoke_reports_search_content sc
40
+ WHERE sc.id = "content_id" ${Q} LIMIT 1)
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.
38
42
  Error fetching ${M}.
39
43
  Message: ${Y.message}.
40
- `)}));}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),P={mode:"related",locale:a,related:N??4,current_ids:V,output:"full"};C&&(C==="report"?P.report_ids=k:C==="dimension"?P.dimension_ids=L:P.variant_ids=M);let j=await o(P).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),v=dt("resp",l||{},S,t,s,r),{vars:x,error:U,log:A}=v;if(typeof x!="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(x).reduce((C,N)=>({...C,[`${e.type}${e.id}${N}`]:x[N]}),{});return {renderVariables:x,outputVariables:[B.GENERATOR,B.SECTION_FLAG].includes(e.type)?x:F,status:{log:A,error:U,duration:p,responseSize:d,resp:l,api:m,allowed:c,apiFinalUrls:R,apiDataSources:f}}}function Ql(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&&Ql(i,t,e,r,a,n,s),r},Zl=(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:P})=>({...V,...Na(P,e)}),{}):h=Object.values(e).filter(V=>wo(V)).reduce((V,P)=>({...V,[P.id]:P}),{});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 v=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&&(v=Object.fromEntries(Object.entries(v).map(([V,P])=>{let j={...P,inputs:P.inputs.filter(_=>!R.includes(_)),consumers:P.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 x=Object.keys(h).reduce((V,P)=>{let j=new Date,_=ko(Number(P),v,[],!r,true,l).map(w=>w.split("-")),E=(new Date().getTime()-j.getTime())/1e3;return Fe&&console.info(`%cResolved dependencies for ${P} (${E.toFixed(2)}s)`,"color:blue"),[...V,..._]},[]),U=new Date,A=Object.keys(h).reduce((V,P)=>V.includes(P)?[...V]:[P,...V],$l(x)),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,P){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=P[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,v);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 Xl(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=Xl;function eu(e,t){return +(e<t)-+(e>t)}function Nr(e,t,r="ordering"){return eu(t[r],e[r])}var{localeDefault:ru}=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]}),ou=new schema.Entity("report",{dimensions:[za],sections:[qa]},{processStrategy(e){return {...e,sections:"sections"in e?e.sections.sort(Nr):[]}}}),nu=new schema.Entity("formatter"),au=new schema.Entity("datasource"),su={report:ou,section:qa,block:nr,dimension:za,variant:$a,formatter:nu,datasource:au};function Dr(e,t){let r=su[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=ru)=>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 lu={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:lu,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 du={attributes:{},variables:{},status:{}},Vr=createSlice({name:"variables",initialState:du,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 gu={tree:[],reports:null,entities:{block:{},dimension:{},report:{},section:{},variant:{},formatter:{},datasource:{}},requests:{block:{},dimension:{},report:{},section:{},variant:{},formatter:{},datasource:{}}},xe=createSlice({name:"records",initialState:gu,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`;yu(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 yu(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"&&notifications.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 bu(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 Su(e){return e.section_id!==void 0}function Eu(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"&&Su(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,v)=>{let x=m?m[v]:{};return S[v]={...x,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"&&Eu(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 bu("block")(R)(o,n,a).then(h=>{if(h.ok){let S=h.data,v=[],x=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);}}v.push({id:b,inputAction:{operation:"create",input:{input_id:b,block_id:N}}});}),Y});return ja("block")([...x,...v])(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:Au,setSectionState:rs,resetSectionState:os,setCurrentLocale:Tu,setPreferredLocale:_u,addRunConsumersRunning:ns,removeRunConsumersRunning:as}=ke;function wu(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 ku(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 xu(){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 Pu(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 vu(e,t){return async(r,o)=>ss(e,r,o,{query:{[t]:void 0}})}function Iu(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],v=async x=>r(ze(x));try{let x=await Ut(s,S&&[S],d,i,h,void 0,v,"section",c),{variables:U,status:A}=x;r(Vt.setVariableChange({attributes:R,variables:U,status:A})),r(ke.removeRunConsumersRunning([p]));}catch(x){console.error("Error in runConsumers client side: recalculateVariables",x);}}}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 Cu(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 Lu(){return async(e,t,r)=>{let o=await r.searchRole("");if("error"in o)throw new Error(o.error);return o.data}}function Bu(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 Mu(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 Ou({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 Nu(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 Du(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 Uu(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 Fu(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 Vu(){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 Ku(e){let t=process.cwd(),r=Gu.resolve(t.endsWith("/example")?t.replace("/example",""):t,"package-lock.json"),o;try{let n=JSON.parse(Mc.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 Hu(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 Ku("@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:Wu}=G(),Yu={pathSegment:"path",formatterFunctions:Wu.reduce((e,t)=>({...e,[t]:{}}),{}),datasourceFunctions:[],profilePrefix:"path",previewPrefix:null,siteProps:{}};createContext(Yu);G();var dp=e=>e.records.entities.report;var Gr=e=>e.records.entities.block;var mp=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([dp],e=>Object.values(e)[0]);var fp=ue(),gp=[],jr=createSelector([mp],e=>e?Object.values(e).sort((t,r)=>t.content.order>r.content.order?1:-1).map(t=>{let r={...fp};return {...t,content:{...t.content,pattern:ye(t.content.pattern,{},{variables:r})}}}):gp);var yp=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=yp;function hp(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 Rp(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={},v=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),[]),x=v.filter(k=>h[k].settings[Ce.FALLBACK]),U=Array.from(new Set([...x,...he(x,Object.values(h))])),A=v.filter(k=>[B.SELECTOR,B.MULTIHIERARCHY_SELECTOR].includes(h[k].type)),F=Array.from(new Set([...A,...he(A,Object.values(h))]));v=Array.from(new Set([...v,...U,...F,...he(v,Object.values(h))])),v.forEach(k=>{x.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(v.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 bp(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(([P])=>P.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(P){return console.error("[Bespoke slug validation Failed]: Return 404:",P.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(P=>P.report_id),include:!0,locales:[u]}))]);let R=r.getState(),h=Hr(R),S=jr(R),v=ar(h,u),x=Kr(R).filter(P=>P.id===c),U=Gr(R),A={...U},F={},C=Object.values(U).reduce((P,j)=>("access"in j.settings&&!["public","guest"].some(_=>!j.settings.access||j.settings.access.includes(_))&&P.push(j.id),P),[]),N=C.filter(P=>A[P].settings[Ce.FALLBACK]),k=Array.from(new Set([...N,...he(N,Object.values(A))])),L=C.filter(P=>[B.SELECTOR,B.MULTIHIERARCHY_SELECTOR].includes(A[P].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(P=>{N.includes(P)?(F[P]={...A[P],type:B.FALLBACK,original_type:A[P].type},delete A[P]):L.includes(P)&&(F[P]={...A[P],settings:{...A[P].settings,[Ce.DISABLED]:!0}},delete A[P]),M.includes(P)||delete A[P];}),await o(qe(C.filter(P=>!M.includes(P)))),await o(lr(F));let D={...Ft(f.results),locale:u,...ue()},Y=async P=>await o(ze(P));await Ut({...A,...F},x,void 0,v,{locale:u,query:{...p,...i},variables:D},void 0,Y,"section",S).then(async P=>{let j=Object.keys({...A,...F}).reduce((_,b)=>(P.variables[b]&&P.status[b]||_.push(Number(b)),_),[]);await Promise.all([o(qe(j)),o(Vt.setVariableChange({...P,attributes:D})),o(ur())]);});let V=Object.keys({...A,...F}).filter(P=>a&&s?P!==s:A[P]&&A[P].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{bp as BespokeEmbedServerSideProps,Tl as BespokeEndpointNextJsHandlerFactory,me as BespokeGetSession,vs as BespokeHandleAuth,Hu as BespokeManagerServerSideProps,hp as BespokeRendererStaticPaths,Rp as BespokeRendererStaticProps,Us as BespokeSearchUsersByMetadata,Ls as BespokeUpdateCurrentUserAppMetadata,Ms as BespokeUpdateCurrentUserMetadata,Ns as BespokeWithApiRoleAuthRequired,wl as ReportCrosswalkHandler,Ot as dbApiFactory,bo as endpointKey,rt as getDB,it as useDatabaseApi};
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"&&notifications.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};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@datawheel/bespoke",
3
- "version": "1.0.0-beta.6",
3
+ "version": "1.0.0-beta.7",
4
4
  "description": "Content management system for creating automated data reports",
5
5
  "exports": {
6
6
  ".": {