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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/server.js +23 -15
  2. package/package.json +1 -1
package/dist/server.js CHANGED
@@ -1,40 +1,48 @@
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 vs,{getServerSession}from'next-auth';import ws from'next-auth/providers/auth0';import He from'auth0';import*as Ui from'pg';import {Sequelize,Error as Error$1,DataTypes,literal,Op,where,cast,json,fn,col,Model}from'sequelize';import Xt from'yn';import*as oi from'd3-array';import*as ni from'd3-collection';import*as ai from'd3-format';import {formatLocale}from'd3-format';import*as si from'd3-time-format';import {date,assign,isObject}from'@d3plus/dom';import {closest}from'@d3plus/math';import {merge}from'@d3plus/data';import {titleCase,strip}from'@d3plus/text';import zi from'slugify';import Or from'axios';import Gi from'jsonwebtoken';import Ki from'next/config';import {Document}from'flexsearch';import Pc from'base58';import vc from'flickr-sdk';import {createApi}from'unsplash-js';import Nc from'fs';import {createContext,createElement}from'react';import {renderToString}from'react-dom/server';import*as ho from'@tabler/icons-react';import bl from'cors';import Sl from'image-type';import sl from'formidable';import dl from'dom-parser';import Hu from'path';import Da from'axios-retry';import {format}from'pretty-format';import ql from'toposort';import {csvParse}from'd3-dsv';import {getSession}from'next-auth/react';import {schema,normalize}from'normalizr';import {createSlice,configureStore,createSelector}from'@reduxjs/toolkit';import {HYDRATE,createWrapper}from'next-redux-wrapper';import {notifications}from'@mantine/notifications';import {produce}from'immer';import'react-redux';import'react/jsx-runtime';import'@mantine/core';var Ts=Object.defineProperty;var _s=(e,t)=>{for(var r in t)Ts(e,r,{get:t[r],enumerable:true});};var xs={domain:new URL(process.env.AUTH0_ISSUER_BASE_URL||"https://localhost:3000").host,clientId:process.env.AUTH0_CLIENT_ID||"",clientSecret:process.env.AUTH0_CLIENT_SECRET||""};function Ke(e){let t=e;if(t&&!t.source)if(!t.providers||t.providers.length===0){let r=ws({clientId:process.env.AUTH0_CLIENT_ID||"",clientSecret:process.env.AUTH0_CLIENT_SECRET||"",issuer:process.env.AUTH0_ISSUER_BASE_URL||""});t.providers=[r],t.callbacks={async jwt({token:o,profile:n,trigger:a,session:s}){if(n&&(o.bespoke_app_metadata=n.bespoke_app_metadata||{},o.bespoke_user_metadata=n.bespoke_user_metadata||{},o.bespoke_roles=n.bespoke_roles||[],o.name=n.name),a==="update")try{let i=new He.ManagementClient(xs),c=await i.users.get({id:o.sub});o.bespoke_user_metadata=c.user_metadata||{},o.bespoke_app_metadata=c.app_metadata||{};let l=await i.users.getRoles({id:o.sub});o.bespoke_roles=l.map(u=>u.name),s?.user_metadata&&(o.bespoke_user_metadata={...o.bespoke_user_metadata,...s.user_metadata}),s?.app_metadata&&(o.bespoke_app_metadata={...o.bespoke_app_metadata,...s.app_metadata});}catch(i){console.error("Error refreshing user data from Auth0:",i),o.bespoke_user_metadata={...o.bespoke_user_metadata,...s?.user_metadata||{}},o.bespoke_app_metadata={...o.bespoke_app_metadata,...s?.app_metadata||{}};}return o},async session({session:o,token:n}){return o&&n&&(o.user.id=n.sub,o.user.bespoke_app_metadata=n.bespoke_app_metadata,o.user.bespoke_user_metadata=n.bespoke_user_metadata,o.user.bespoke_roles=n.bespoke_roles),o}},t.source="auth0";}else t.source="custom";return t.secret||(t.secret=process.env.AUTH0_SECRET||process.env.NEXTAUTH_SECRET),t}async function me(e,t,r={providers:[]}){let o=Ke(r),n=await getServerSession(e,t,o);return n&&(n.source=o.source||""),n}var Is=(e={providers:[]})=>{let t=Ke(e);return vs(t)},Cs=Is;var T=class extends Error{constructor(t,r){super(r),this.code=t;}toJSON(){return Mo(this)}static is(t){return Object.prototype.hasOwnProperty.call(t,"code")&&typeof t.code=="number"}};function Ls(e){return {ok:true,status:200,wrapper:true,data:e}}function Mo(e){return {ok:false,status:T.is(e)?e.code:500,error:e.message}}function I(e){return t=>e(t).then(Ls,Mo)}function le(e,t,r){if(t==="createBulk"||t==="updateBulk"){let n=`${t}${Se(r)}`;return e[n]}let o=`${t}${Se(r)}`;return e[o]}function Se(e){return e[0].toUpperCase()+e.slice(1)}var z={ADMIN:"Admin",EDITOR:"Editor",WRITER:"Writer"},Oo={APP:"App",USER:"User"},No=e=>{let t=Object.values(z);return e?e.map(r=>({...r,type:t.includes(r.name)?Oo.APP:Oo.USER})):[]};var je={domain:new URL(process.env.AUTH0_ISSUER_BASE_URL||"https://localhost:3000").host,clientId:process.env.AUTH0_CLIENT_ID,clientSecret:process.env.AUTH0_CLIENT_SECRET};function Do(){return async()=>{try{let t=await new He.ManagementClient(je).roles.getAll({include_totals:!0,per_page:100});return {roles:No(t.roles)}}catch(e){throw console.error("AuthZeroError",e),new T(e.response?.status||500,e.message)}}}function Uo(){return async e=>{try{let t;if(e){let r={include_totals:!0,per_page:10,page:e.page||0},o=new He.ManagementClient(je);if(e.role_id&&e.role_id!==""){let n={...r,id:e.role_id};t=await o.roles.getUsers(n);}else {let n={...r,q:e.query};t=await o.users.getAll(n);}}return t}catch(t){throw console.error("AuthZeroError",t),new T(t.response?.status||500,t.message)}}}function Fo(){return async e=>{try{if(e){let t=new He.ManagementClient(je),r=await Promise.all([t.users.get({id:e}),t.users.getRoles({id:e})]);return {...r[0],roles:r[1]}}else throw new T(404,"User ID required")}catch(t){throw console.error("AuthZeroError",t),new T(t.response?.status||500,t.message)}}}function Vo(){return async e=>{try{if(e.user_id){if(e.app_metadata&&await Yr(e.user_id,e.app_metadata),e.user_metadata&&await Jr(e.user_id,e.user_metadata),e.roles){let t=new He.ManagementClient(je),o=(await t.users.getRoles({id:e.user_id})).map(i=>i.id),n=e.roles.map(i=>i.id),a=n.filter(i=>!o.includes(i)),s=o.filter(i=>!n.includes(i));a.length>0&&await t.users.assignRoles({id:e.user_id},{roles:a}),s.length>0&&await t.users.removeRoles({id:e.user_id},{roles:s});}return {status:"success",message:"User updated!"}}else throw new T(404,"user_id is required")}catch(t){throw console.error("AuthZeroError",t),new T(t.response?.status||500,t.message)}}}function $o(){return async e=>{try{return "NOT USED SERVICE"}catch(t){throw console.error("AuthZeroError",t),new T(t.response?.status||500,t.message)}}}async function Yr(e,t){return await new He.ManagementClient(je).users.updateAppMetadata({id:e},t)}async function Jr(e,t){return await new He.ManagementClient(je).users.updateUserMetadata({id:e},t)}async function zo(e,t){try{let r=new He.ManagementClient(je),o=await r.getUsers({search_engine:"v3",q:`user_metadata.${e}:"${t}"`});for(let n=0;n<o.length;n++){let a=o[n];a.bespoke_user_metadata=a.user_metadata||{},delete a.user_metadata,a.bespoke_roles=(await r.users.getRoles({id:a.user_id})).map(s=>s.name);}return o}catch(r){console.error(r);}}var Bs=(e,t,r,o)=>new Promise((n,a)=>{(async()=>{try{let i=await me(e,t,r);if(!i||!i.user)throw new Error("not_authenticated");{let{user:c,source:l}=i,p={...i.user.bespoke_app_metadata||{},...o};l==="custom"&&r.actions?.updateUser?await r.actions.updateUser()({user_id:c.id,app_metadata:p}):await Yr(c.id,p),n({error:"",description:`App metadata updated for user ${i.user.email}`});}}catch(i){a({error:i.message,description:"The user does not have an active session or is not authenticated"});}})();}),Ms=Bs;var Os=(e,t,r,o)=>new Promise((n,a)=>{(async()=>{try{let i=await me(e,t,r);if(!i||!i.user)throw new Error("not_authenticated");{let{user:c,source:l}=i,p={...c.bespoke_user_metadata||{},...o};l==="custom"&&r.actions?.updateUser?await r.actions.updateUser()({user_id:c.id,user_metadata:p}):await Jr(c.id,p),n({error:"",description:`App metadata updated for user ${c.email}`});}}catch(i){a({error:i.message,description:"The user does not have an active session or is not authenticated"});}})();}),Ns=Os;var qt=(e,t)=>t&&typeof t=="string"?t.split(".").reduce((r,o)=>r[o],e):e;function dr(e,t){return e.some(r=>t.includes(r))}function mr(e){return e.filter((t,r,o)=>o.indexOf(t)===r)}var Ds=(e,t,r)=>async function(o,n){let a=await me(o,n,r);if(!a||!a.user){n.status(401).json({error:"not_authenticated",description:"The user does not have an active session or is not authenticated"});return}let s=a.user.bespoke_roles||[];if(t.length>0&&!dr(s,t)){n.status(402).json({error:"unauthorize",description:"The user requires some specific roles"});return}await e(o,n);},Us=Ds;var Fs=(e,t,r)=>new Promise((o,n)=>{(async()=>{try{if(t&&r&&t!==""&&r!==""){let s;e.actions?.searchUser?s=await e.actions.searchUser()({[t]:r}):s=await zo(t,r),o(s);}else n({error:"empty_params",description:"key or value params are empty"});}catch(s){n({error:s.message,description:"Error "});}})();}),Vs=Fs;var Ie=(e=process.env)=>Xt(e.REPORTS_LOGGING);var Ye=class extends Model{getContent(t){let r=this.contentByLocale.find(o=>o.locale===t);if(!r)throw new Error(`Missing SearchContent for locale '${t}' on Search ID '${this.id}'`);return r}toJSON(){let t=this.get({plain:true}),{inputs:r=[],consumers:o=[],contentByLocale:n=[]}=this;return {...t,inputs:r.map(a=>a.toJSON()),consumers:o.map(a=>a.toJSON()),contentByLocale:Object.fromEntries(n.map(a=>[a.locale,a.toJSON()]))}}};function qs(e){return Ye.init({id:{type:DataTypes.INTEGER,primaryKey:true,autoIncrement:true},settings:{type:DataTypes.JSON,defaultValue:{}},type:{type:DataTypes.STRING,defaultValue:"paragraph"},shared:{type:DataTypes.BOOLEAN,defaultValue:false},blockrow:DataTypes.STRING,blockcol:DataTypes.STRING,section_id:{type:DataTypes.INTEGER,onDelete:"cascade",references:{model:"bespoke_reports_section",key:"id"}}},{sequelize:e,modelName:"block",tableName:"bespoke_reports_block",freezeTableName:true,timestamps:false}),t=>(Ye.hasMany(t.block_content,{foreignKey:"id",sourceKey:"id",as:"contentByLocale"}),Ye.belongsToMany(t.block,{through:"block_input",foreignKey:"block_id",otherKey:"input_id",as:"inputs"}),Ye.belongsToMany(t.block,{through:"block_input",foreignKey:"input_id",otherKey:"block_id",as:"consumers"}),Ye)}var Go=qs;var fr=class extends Model{};function Ks(e){return fr.init({id:{type:DataTypes.INTEGER,primaryKey:true,onDelete:"cascade",references:{model:"bespoke_reports_block",key:"id"}},locale:{type:DataTypes.STRING,primaryKey:true},content:{type:DataTypes.JSON,defaultValue:{}}},{sequelize:e,modelName:"block_content",tableName:"bespoke_reports_block_content",freezeTableName:true,timestamps:false}),()=>fr}var Ko=Ks;var gr=class extends Model{};function js(e){return gr.init({id:{type:DataTypes.INTEGER,primaryKey:true,autoIncrement:true},block_id:{type:DataTypes.INTEGER,onDelete:"cascade",references:{model:"bespoke_reports_block",key:"id"}},input_id:{type:DataTypes.INTEGER,onDelete:"cascade",references:{model:"bespoke_reports_block",key:"id"}}},{sequelize:e,modelName:"block_input",tableName:"bespoke_reports_block_input",freezeTableName:true,timestamps:false}),()=>gr}var Ho=js;var yr={"ar-SA":{separator:"",suffixes:["y","z","a","f","p","n","\xB5","m",""," \u0623\u0644\u0641"," \u0645\u0644\u064A\u0648\u0646"," \u0628\u0644\u064A\u0648\u0646"," \u062A\u0631\u064A\u0644\u064A\u0648\u0646"," \u0643\u0648\u0627\u062F\u0631\u064A\u0644\u064A\u0648\u0646"," \u0643\u0648\u064A\u0646\u062A\u064A\u0644\u064A\u0648\u0646"," \u0633\u0643\u0633\u062A\u0644\u064A\u0648\u0646","\u0633\u0628\u062A\u064A\u0644\u064A\u0648\u0646"],grouping:[3],delimiters:{thousands:",",decimal:"."},currency:["SAR ",""]},"en-GB":{separator:"",suffixes:["y","z","a","f","p","n","\xB5","m","","k","M","B","T","q","Q","Z","Y"],grouping:[3],delimiters:{thousands:",",decimal:"."},currency:["\xA3",""]},"en-US":{separator:"",suffixes:["y","z","a","f","p","n","\xB5","m","","k","M","B","T","q","Q","Z","Y"],grouping:[3],delimiters:{thousands:",",decimal:"."},currency:["$",""]},"en-SA":{separator:"",suffixes:["y","z","a","f","p","n","\xB5","m",""," thousand"," million"," billion"," trillion"," quadrillion"," quintillion"," sextillion","septillion"],grouping:[3],delimiters:{thousands:",",decimal:"."},currency:["$",""]},"es-CL":{separator:"",suffixes:["y","z","a","f","p","n","\xB5","m","","k","M","MM","B","T","Q","Z","Y"],grouping:[3],delimiters:{thousands:".",decimal:","},currency:["$",""]},"es-MX":{separator:"",suffixes:["y","z","a","f","p","n","\xB5","m","","k","M","MM","B","T","Q","Z","Y"],grouping:[3],delimiters:{thousands:",",decimal:"."},currency:["$",""]},"es-ES":{separator:"",suffixes:["y","z","a","f","p","n","\xB5","m","","k","mm","b","t","q","Q","Z","Y"],grouping:[3],delimiters:{thousands:".",decimal:","},currency:["\u20AC",""]},"et-EE":{separator:" ",suffixes:["y","z","a","f","p","n","\xB5","m","","tuhat","miljonit","miljardit","triljonit","q","Q","Z","Y"],grouping:[3],delimiters:{thousands:" ",decimal:","},currency:["","eurot"]},"fr-FR":{suffixes:["y","z","a","f","p","n","\xB5","m","","k","m","b","t","q","Q","Z","Y"],grouping:[3],delimiters:{thousands:" ",decimal:","},currency:["\u20AC",""]},"zh-CN":{separator:"",suffixes:["\u5E7A","\u4EC4","\u963F","\u98DE","\u76AE","\u7EB3","\u5FAE","\u6BEB","","\u5343","\u5146","\u5409","\u592A","\u62CD","\u827E","\u6CFD","\u5C27"],grouping:[3],delimiters:{thousands:",",decimal:"."},currency:["\xA5",""]}};function Ws(e){"@swc/helpers - typeof";return e&&typeof Symbol<"u"&&e.constructor===Symbol?"symbol":typeof e}var Js=function(e,t){return parseFloat(Math.round(e*Math.pow(10,t))/Math.pow(10,t)).toFixed(t)};function Qs(e,t,r){var o=0,n=parseFloat(e.replace("\u2212","-"),10);n&&(n<0&&(n*=-1),o=1+Math.floor(1e-12+Math.log(n)/Math.LN10),o=Math.max(-24,Math.min(24,Math.floor((o-1)/3)*3)));var a=r[8+o/3];return {number:Js(a.scale(n),t),symbol:a.symbol}}function Zs(e,t){var r=Math.pow(10,Math.abs(8-t)*3);return {scale:t>8?function(o){return o/r}:function(o){return o*r},symbol:e}}function Xr(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"en-US",r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:void 0;if(isFinite(e))e*=1;else return "N/A";var o=e<0,n=e.toString().split(".")[0].replace("-","").length,a=(typeof t>"u"?"undefined":Ws(t))==="object"?t:yr[t]||yr["en-US"],s=a.suffixes.map(Zs),i=a.delimiters.decimal||".",c=a.separator||"",l=a.delimiters.thousands||",",u=formatLocale({currency:a.currency||["$",""],decimal:i,grouping:a.grouping||[3],thousands:l}),p;if(r)p=u.format(r)(e);else if(e===0)p="0";else if(n>=3){var d=Qs(u.format(".3r")(e),2,s),m=parseFloat(d.number).toString().replace(".",i),f=d.symbol;p="".concat(m).concat(c).concat(f);}else n===3?p=u.format(",f")(e):e<1&&e>-1?p=u.format(".2g")(e):p=u.format(".3g")(e);return "".concat(o&&p.charAt(0)!=="\u2212"?"\u2212":"").concat(p).replace(/−/g,"-").replace(/(\.[0]*[1-9]*)[0]*$/g,"$1").replace(/\.[0]*$/g,"")}function eo(e){let t=1+76.18009173/e-86.50532033/(e+1)+24.01409822/(e+2)-1.231739516/(e+3)+.00120858003/(e+4)-536382e-11/(e+5);return (e-.5)*Math.log(e+4.5)-(e+4.5)+Math.log(t*2.50662827465)}function jo(e,t,r){let o=0,n=1,a=1,s=1,i=0,c=0,l;for(;Math.abs((a-c)/a)>1e-5;)c=a,l=-(t+i)*(t+r+i)*e/(t+2*i)/(t+2*i+1),o=a+l*o,n=s+l*n,i+=1,l=i*(r-i)*e/(t+2*i-1)/(t+2*i),a=o+l*a,s=n+l*s,o/=s,n/=s,a/=s,s=1;return a/t}function Xs(e,t,r){let o,n;if(e<0)n=0;else if(e>=t)n=1;else {e=Math.floor(e);let a=r,s=e+1,i=t-e,c=s+i,l=Math.exp(eo(c)-eo(i)-eo(s)+s*Math.log(a)+i*Math.log(1-a));a<(s+1)/(c+2)?o=l*jo(a,s,i):o=1-l*jo(1-a,i,s),n=1-o;}return Math.round(n*1e5)/1e5}function ei(e){return {.99999:15.137,.99:6.635,.95:3.841,.9:2.706}[e]}function Gt(e,t,r,o){let n=t/(1-t),a=0,s=1,i=0,c=0;for(;a<=e;)c+=s,a>=r&a<=o&&(i+=s),c>1e30&&(i/=1e30,c/=1e30,s/=1e30),a+=1,s=s*n*(e+1-a)/a;return i/c}function ti(e,t,r){let o=e/t,a=(100-r*100)/2,s,i;if(e===0)s=0;else {let c=o/2,l=0,u=o,p=a/100;for(;u-l>1e-5;)Gt(t,c,e,e)*.5+Gt(t,c,e+1,t)>p?(u=c,c=(l+c)/2):(l=c,c=(u+c)/2);s=c;}if(e===t)i=0;else {let c=(1+o)/2,l=o,u=1,p=a/100;for(;u-l>1e-5;)Gt(t,c,e,e)*.5+Gt(t,c,0,e-1)<p?(u=c,c=(l+c)/2):(l=c,c=(u+c)/2);i=c;}return {lci:s,uci:i}}function ri(e,t){let r=e,o=t,n=r,a=o,s=95,i=.5,c=.5,u=(100-s)/2/100,p=n;for(;c>1e-5;)c/=2,hr((1+p)*i/(1-i),p+1,1e10)+.5*hr((1+p)*i/(1-i),p,p)>u?i-=c:i+=c;let d=(1+p)*i/(1-i)/a;for(i=.5,c=.5,u=(100-s)/2/100;c>1e-5;)c/=2,hr((1+p)*i/(1-i),0,p-1)+.5*hr((1+p)*i/(1-i),p,p)<u?i-=c:i+=c;let f=(1+p)*i/(1-i)/a;return {lci:d,uci:f}}function hr(e,t,r){let o=1,n=0,a=0,s=0;for(;s<e||o>n*1e-10;)n+=o,s>=t&s<=r&&(a+=o),n>1e30&&(a/=1e30,n/=1e30,o/=1e30),s+=1,o=o*e/s;return a/n}var Wo={binomialCdf:Xs,binP:Gt,computeMidP:ti,criticalValue:ei,smr:ri};var Je={d3:{...oi,...ni,...ai,...si},d3plus:{assign:assign,closest:closest,date:date,formatAbbreviate:Xr,merge:merge,strip:strip,titleCase:titleCase},stats:Wo};var Yo={};var Ce={UNILATERAL:"uni",MULTILATERAL:"multi"},Ze={SINGLE:"single",MULTI:"multi"};var to={ALLOWED:"allowed",ALLOWED_LOGIC:"allowedLogic",IGNORE_CASCADE:"ignoreCascade"},mi={ACCESS:"access",ACCESS_LOGIC:"accessLogic"},fi={DISABLED:"disabled"},gi={FALLBACK:"fallback"};var yi={IMAGE:"image",PARAGRAPH:"paragraph",SELECTOR:"selector",STAT:"stat",SUBTITLE:"subtitle",TITLE:"title",NAV:"nav",RESET_BUTTON:"reset_button",COMPARISON_BUTTON:"comparison_button",TABLE:"table",BUTTON:"button",MULTIHIERARCHY_SELECTOR:"multihierarchy_selector",FALLBACK:"fallback"},ro={GENERATOR:"generator",RELATED:"related",VIZ:"visualization",SECTION_FLAG:"section_flag"},oo="logic",B={...yi,...ro},Le={NAME:"name",DESCRIPTION:"description",...to,...mi,...gi,...fi};var Rr={FORMATTER:"formatter"},At={STRING:"string"};var Tt=class extends Model{};function bi(e){return Tt.init({id:{type:DataTypes.INTEGER,primaryKey:true,autoIncrement:true},name:{type:DataTypes.STRING,defaultValue:""},content:{type:DataTypes.JSONB,defaultValue:{description:"",testValue:"Foo",type:Rr.FORMATTER,inputType:At.STRING,logic:"return n;"}}},{sequelize:e,modelName:"formatter",tableName:"bespoke_reports_formatter",freezeTableName:true,timestamps:false,hooks:{async afterSync(t){let r=await Tt.findAll();if(t.force||r.length===0){let o=Object.entries(Yo).map(([n,a])=>({name:n,content:a}));await Tt.bulkCreate(o);}}}}),()=>Tt}var Zo=bi;var Kt=class extends Model{getContent(t){let{contentByLocale:r}=this;if(!r)throw new Error("This ImageModel entity didn't include its ImageContentModel association.");let o=r.find(n=>n.locale===t);if(!o)throw new Error(`Missing SearchContent for locale '${t}' on Search ID '${this.id}'`);return o}};function Ei(e){return Kt.init({id:{autoIncrement:true,primaryKey:true,type:DataTypes.INTEGER},url:{type:DataTypes.TEXT,unique:true},author:DataTypes.TEXT,license:DataTypes.TEXT,splash:DataTypes.BLOB,thumb:DataTypes.BLOB},{sequelize:e,modelName:"image",tableName:"bespoke_reports_image",freezeTableName:true}),t=>(Kt.hasMany(t.image_content,{foreignKey:"id",sourceKey:"id",as:"contentByLocale"}),Kt)}var Xo=Ei;var br=class extends Model{};function Ti(e){return br.init({id:{type:DataTypes.INTEGER,primaryKey:true,onDelete:"cascade",references:{model:"bespoke_reports_image",key:"id"}},locale:{type:DataTypes.STRING,primaryKey:true},meta:DataTypes.TEXT},{sequelize:e,modelName:"image_content",tableName:"bespoke_reports_image_content",freezeTableName:true,timestamps:false}),()=>br}var en=Ti;var wt=class extends Model{toJSON(){let t=this.get({plain:true}),{dimensions:r=[],sections:o=[]}=this;return {...t,settings:t.settings,date:new Date(this.date||Date.now()).toISOString(),dimensions:r.map(n=>n.toJSON()),sections:o.map(n=>n.toJSON())}}};function wi(e){return wt.init({id:{type:DataTypes.INTEGER,primaryKey:true,autoIncrement:true},name:{type:DataTypes.STRING,allowNull:false,defaultValue:""},visible:{type:DataTypes.BOOLEAN,defaultValue:true},date:{type:DataTypes.DATE,defaultValue:DataTypes.NOW},type:{type:DataTypes.STRING,defaultValue:"report",validate:{isIn:[["report","story"]]}},settings:{type:DataTypes.JSON,defaultValue:{}}},{sequelize:e,modelName:"report",tableName:"bespoke_reports_report",freezeTableName:true,timestamps:false}),t=>(wt.hasMany(t.dimension,{foreignKey:"report_id",sourceKey:"id",as:"dimensions"}),wt.hasMany(t.section,{foreignKey:"report_id",sourceKey:"id",as:"sections"}),wt)}var tn=wi;var xt=class extends Model{toJSON(){let t=this.get({plain:true}),{variants:r=[]}=this;return {...t,variants:r.map(o=>o.toJSON())}}};function xi(e){return xt.init({id:{type:DataTypes.INTEGER,primaryKey:true,autoIncrement:true},report_id:{type:DataTypes.INTEGER,onDelete:"cascade",references:{model:"bespoke_reports_report",key:"id"}},name:{type:DataTypes.STRING,defaultValue:""},settings:{type:DataTypes.JSONB,defaultValue:{}},ordering:{type:DataTypes.INTEGER,defaultValue:0},visible:{type:DataTypes.BOOLEAN,defaultValue:true}},{sequelize:e,modelName:"dimension",tableName:"bespoke_reports_report_dimension",freezeTableName:true,timestamps:false}),t=>(xt.hasMany(t.variant,{foreignKey:"dimension_id",sourceKey:"id",as:"variants",constraints:false}),xt.belongsTo(t.report,{foreignKey:"report_id",targetKey:"id",as:"report",constraints:false}),xt)}var rn=xi;var Pt=class extends Model{get report(){return this.dimension?.report}toJSON(){return this.get({plain:true})}};function vi(e){return Pt.init({id:{type:DataTypes.INTEGER,primaryKey:true,autoIncrement:true},dimension_id:{type:DataTypes.INTEGER,onDelete:"cascade",references:{model:"bespoke_reports_report_dimension",key:"id"}},slug:{type:DataTypes.STRING,defaultValue:""},name:{type:DataTypes.STRING,defaultValue:""},settings:{type:DataTypes.JSONB,defaultValue:{}},config:{type:DataTypes.JSONB,defaultValue:{}},visible:{type:DataTypes.BOOLEAN,defaultValue:true}},{sequelize:e,modelName:"variant",tableName:"bespoke_reports_report_dimension_variant",freezeTableName:true,timestamps:false}),t=>(Pt.hasMany(t.search,{foreignKey:"variant_id",sourceKey:"id",as:"members",constraints:false}),Pt.belongsTo(t.dimension,{foreignKey:"dimension_id",targetKey:"id",as:"dimension",constraints:false}),Pt)}var on=vi;var ke=class extends Model{getContent(t){let{contentByLocale:r}=this;if(!r)throw new Error("This SearchModel entity didn't include its SearchContentModel association.");let o=r.find(n=>n.locale===t);if(!o)throw new Error(`Missing SearchContent for locale '${t}' on Search ID '${this.id}'`);return o}};function Ci(e){return ke.init({id:{primaryKey:true,type:DataTypes.TEXT},zvalue:DataTypes.DOUBLE,slug:DataTypes.TEXT,image_id:{type:DataTypes.INTEGER,references:{model:"bespoke_reports_image",key:"id"}},content_id:{autoIncrement:true,type:DataTypes.INTEGER,unique:true},variant_id:{primaryKey:true,type:DataTypes.INTEGER,onDelete:"cascade",references:{model:"bespoke_reports_report_dimension_variant",key:"id"}},dimension_id:{primaryKey:true,type:DataTypes.INTEGER,onDelete:"cascade",references:{model:"bespoke_reports_report_dimension",key:"id"}},report_id:{primaryKey:true,type:DataTypes.INTEGER,onDelete:"cascade",references:{model:"bespoke_reports_report",key:"id"}},visible:{type:DataTypes.BOOLEAN,defaultValue:true}},{sequelize:e,modelName:"search",tableName:"bespoke_reports_search",freezeTableName:true,timestamps:false}),t=>(ke.belongsTo(t.variant,{foreignKey:"variant_id",targetKey:"id",as:"variant",constraints:false}),ke.belongsTo(t.dimension,{foreignKey:"dimension_id",targetKey:"id",as:"dimension",constraints:false}),ke.belongsTo(t.report,{foreignKey:"report_id",targetKey:"id",as:"report",constraints:false}),ke.belongsTo(t.image,{foreignKey:"image_id",targetKey:"id",as:"image",constraints:false}),ke.hasMany(t.search_content,{foreignKey:"id",sourceKey:"content_id",as:"contentByLocale"}),ke)}var nn=Ci;var Sr=class extends Model{};function Bi(e){return Sr.init({id:{type:DataTypes.INTEGER,primaryKey:true,onDelete:"cascade",references:{model:"bespoke_reports_search",key:"content_id"}},locale:{type:DataTypes.STRING,primaryKey:true},name:DataTypes.TEXT,annotations:{type:DataTypes.JSONB,defaultValue:{}},attributes:{type:DataTypes.JSONB,defaultValue:{}},keywords:DataTypes.ARRAY(DataTypes.TEXT)},{sequelize:e,modelName:"search_content",tableName:"bespoke_reports_search_content",freezeTableName:true,timestamps:false}),()=>Sr}var an=Bi;var jt=class extends Model{toJSON(){let t=this.get({plain:true}),{blocks:r=[]}=this;return {...t,blocks:r.map(o=>o.toJSON())}}};function Oi(e){return jt.init({id:{type:DataTypes.INTEGER,primaryKey:true,autoIncrement:true},settings:{type:DataTypes.JSON,defaultValue:{}},heading:{type:DataTypes.INTEGER,defaultValue:1},ordering:DataTypes.STRING,report_id:{type:DataTypes.INTEGER,onDelete:"cascade",references:{model:"bespoke_reports_report",key:"id"}}},{sequelize:e,modelName:"section",tableName:"bespoke_reports_section",freezeTableName:true,timestamps:false}),t=>(jt.hasMany(t.block,{foreignKey:"section_id",sourceKey:"id",as:"blocks"}),jt)}var sn=Oi;var Ar=class extends Model{};function Di(e){return Ar.init({id:{type:DataTypes.INTEGER,primaryKey:true,autoIncrement:true},name:{type:DataTypes.STRING,defaultValue:""},description:{type:DataTypes.STRING,defaultValue:""},content:{type:DataTypes.JSONB,defaultValue:{pattern:"",logic:`return {
2
2
  axiosConfig: {
3
3
  method: 'get',
4
4
  url: url,
5
5
  }
6
- };`,testUrl:""}}},{sequelize:e,modelName:"datasource",tableName:"bespoke_reports_data_source",freezeTableName:true,timestamps:false}),()=>Ar}var cn=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=Di;var ln={block:Go,block_content:Ko,block_input:Ho,formatter:Zo,image:Xo,image_content:en,report:tn,dimension:rn,variant:on,search:nn,search_content:an,section:sn,datasource:cn};var so=Ie(),un=process.env.REPORTS_DB_CONNECTION||"";if(!un)throw new Error(`
7
7
  Env var 'REPORTS_DB_CONNECTION' is not present.
8
8
  This is required to connect to a database to save the Reports CMS changes.
9
- `);var rt=async()=>{if(global.sequelize){so&&console.info("\u267B\uFE0F RE-UTILIZING DB CONNECTION");let e=global.sequelize.sequelize;if(e)try{return await e.authenticate(),global.sequelize}catch(t){so&&console.warn(`\u26A0\uFE0F CONNECTION INACTIVE, REINITIALIZING: ${t.message}`),delete global.sequelize;}}if(!global.sequelize){so&&console.info("\u{1F511} INITIALIZING DB CONNECTION");let e;try{e=new Sequelize(un,{logging:!1,dialectModule: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:Ui,pool:{max:10,min:1,acquire:5*1e3,idle:10*1e3,evict:1*1e3}});}catch(t){throw new Error(`
10
10
  Could not connect to the database using the given connection string.
11
11
  Please check that the connection string 'REPORTS_DB_CONNECTION' is correct.
12
12
  Details:
13
13
  ${t.message}
14
14
  `)}Object.values(ln).map(t=>t(e)).map(t=>t({...e.models,sequelize:e})),global.sequelize=e.sync().catch(t=>{t instanceof Error$1&&console.error("=".repeat(40),`
15
15
  Error initializing sequelize connection:
16
- `,t.stack||t.message),global.sequelize=void 0;}).then(()=>({...e.models,sequelize:e}));}return global.sequelize};var 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 $i=()=>{let e=process.env.NEXT_PUBLIC_REPORTS_LOCALE_DEFAULT||"en",t=process.env.NEXT_PUBLIC_REPORTS_LOCALES?.split(",")||[e];return t.includes(e)||t.push(e),{localeDefault:e,locales:t}},G=$i;function $(e){let t={"&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 qi(e){return e?zi(Wt($(e)),{replacement:"-",remove:/[*+~.()'"!:@]/g,lower:true,strict:true,trim:true}):""}var Tr=qi;var Yt=e=>({overrideNames:e&&typeof e.overrideNames<"u"?e.overrideNames:false,overrideRelevance:e&&typeof e.overrideRelevance<"u"?e.overrideRelevance:false,regenerateSlugs:e&&typeof e.regenerateSlugs<"u"?e.regenerateSlugs:false,keepOldMembers:e&&typeof e.keepOldMembers<"u"?e.keepOldMembers:true,doIngest:e&&typeof e.doIngest<"u"?e.doIngest:false,overrideAttributes:e&&typeof e.overrideAttributes<"u"?e.overrideAttributes:false,order:e&&typeof e.order<"u"?e.order:0});var pn={jwt:Gi};var dn=(e,t={},r="en",o={},n={})=>{let a={setVariables:o.onSetVariables?o.onSetVariables:c=>c,openModal:o.onOpenModal?o.onOpenModal:c=>c,formatters:t,libs:Je,locale:r,...n};function s(c){return Function("globals",...c.vars,`with (globals) { ${c.logic} }`).bind(a,a)}function i(c){if(c.vars&&c.logic)return s(c);for(let l in c)Array.isArray(c[l])?c[l]=c[l].map(u=>isObject(u)?i(u):u):isObject(c[l])&&(c[l]=i(c[l]));return c}return i(e)},wr=(e,t={})=>{let r={libs:pn,...t};function o(a){return Function("globals",...a.vars,`with (globals) { ${a.logic} }`).bind(r,r)}function n(a){if(a.vars&&a.logic)return o(a);for(let s in a)Array.isArray(a[s])?a[s]=a[s].map(i=>isObject(i)?n(i):i):isObject(a[s])&&(a[s]=n(a[s]));return a}return n(e)};function Hi(){let{publicRuntimeConfig:e}=Ki(),t=e.bespoke_report_env_vars||{};return {...Object.keys(t).reduce((r,o)=>(r[`ENV_${o}`]=t[o]||"N/A",r),{})}}var ue=Hi;function ji(){return typeof process>"u"?{}:Object.entries(process.env).filter(([e])=>e.startsWith("BESPOKE_SECRET_")).reduce((e,[t,r])=>({...e,[t.replace("BESPOKE_SECRET_","ENV_SECRET_")]:r}),{})}var vt=ji;var{localeDefault:Ji}=G();function fe(e){return {variables:e.variables||{},query:e.query||{},locale:e.locale||Ji}}function io(e){return e.reduce((t,r,o)=>(o?o===e.length-1&&o===1?t+=` and ${r}`:o===e.length-1?t+=`, and ${r}`:t+=`, ${r}`:t+=r,t),"")}var ye=Qi;function Qi(e,t,r,o=false){let{variables:n}=fe(r);if(!e)return e;let a=/([A-z0-9]*)\{\{([^\}]+)\}\}/g;return e.replace(a,(i,c,l)=>{let u=d=>d;if(c){let d=c.replace(/^\w/g,m=>m.toLowerCase());d in t?u=t[d]:u=m=>`${c}${m}`;}let p=Array.isArray(n[l])?io(n[l]):n[l];if(p===void 0)return o?i:"N/A";try{return u(p,Je,t)}catch(d){return console.error(`Error using formatter ${u.name}
17
+ `,`Error message: ${d.message}`),"N/A"}})}function Xi(e,t){return e.some(r=>t.includes(`role.${r}`))}function kr(e){return async t=>{let{url:r,method:o,timeout:n,wrapper:a=true,session:s}=t,i=n||process.env.NEXT_PUBLIC_REPORTS_API_FETCH_TIMEOUT||0,c={url:r,method:o||"GET",timeout:i},l=ue(),u=vt(),p=null;s&&s.user&&(p={user:s.user,status:"authenticated",isLoading:false,update:async()=>s});let d={envs:{...l,...u},...p?{session:p}:{}};try{let f=(await e.datasource.findAll({where:literal("(content->>'useProxy')::boolean = true"),order:[literal("(content->>'order')::integer ASC NULLS LAST")]})).map(h=>{let S={...l};return {...h.toJSON(),patternSwapped:ye(h.content.pattern,{},{variables:S})}}).find(h=>{if(!h.content?.pattern)return !1;try{return new RegExp(h.patternSwapped,"gm").test(c.url)}catch{return !1}});if(f){let h=t.user_roles&&Array.isArray(t.user_roles)?t.user_roles:[],S=f.content.access&&Array.isArray(f.content.access)?f.content.access:[];if(f.content.logic&&(S.length===0||S.includes("public")||S.includes("guest")&&h.length===0||S.includes("private")&&h.length>0||Xi(h,S))){let P=await wr({vars:["url","libs","session"],logic:f.content.logic},d)(c.url);if(P.axiosConfig)c=P.axiosConfig;else throw new T(500,`AxiosConfig is missing in Data Source ${f.name} (ID: ${f.id}).`)}else throw new T(401,`Query not allowed because user roles. Data Source ${f.name} (ID: ${f.id}).`)}let R=await Or.request(c);return {ok:!0,wrapper:a,status:R.status,data:R.data}}catch(m){throw new T(m.response?.status||500,m.message)}}}var{localeDefault:co}=G();function gn(e){let{search:t,search_content:r}=e,o=kr(e);return n;async function n(s){let{id:i,config:c={},settings:l={}}=s,u=c[co]?co:Object.keys(c)[0],{overrideNames:p,overrideAttributes:d}=Yt(l),{accessor:m,path:f,idKey:R,labelKey:h}=c[co];if(!f||!R||!h)return;let S=await o({url:f}).catch(F=>({data:[],error:F}));if("error"in S)throw new T(500,`Failed to fetch members: ${S.error}`);let x=qt(S.data,m),P=[];try{console.info(`Ingesting default items for variant ${s.name} for ${u}`),P=await a(s,u,x);}catch(F){let C=`[ERROR] Ingesting default member items for ${u}`;throw console.error(C,F),new T(500,C)}let U=await t.findAll({where:{variant_id:i}}).then(F=>Object.fromEntries(F.map(C=>[C.id,{content_id:C.content_id,needsUpdate:P.includes(C.content_id)}]))),A=Object.entries(c).map(async([F,C])=>{let{path:N,accessor:k,idKey:L,labelKey:M,attributes:D=[]}=C;if(!N||!L||!M)return;let Y=await o({url:N}).catch(_=>({data:[],error:_}));if("error"in Y)throw new T(500,`Failed to fetch members for locale ${F}: ${Y.error}`);let V=qt(Y.data,k),v=await r.findAll({where:{id:P,locale:F}}).then(_=>Object.fromEntries(_.map(b=>[b.id,b.toJSON()]))),j=V.filter(_=>typeof _[L]<"u"&&_[L]!==""&&typeof _[M]<"u"&&_[M]!=="").map(_=>{let b=U[_[L]],E,w=Object.fromEntries(D.map(Z=>[Z.name,Z.type==="constant"?Z.value:_[Z.value]||""]));return b.needsUpdate&&v[b.content_id]?(E={...v[b.content_id]},p&&(E.name=_[M]),d&&(E.attributes=w)):E={id:b.content_id,locale:F,name:_[M],attributes:w},E});try{return r.bulkCreate(j,{updateOnDuplicate:["name","attributes"]})}catch(_){let b=`[ERROR] Ingesting search content items for ${F}`;throw console.error(b,_),new T(500,b)}});await Promise.all(A);}async function a(s,i,c){let{id:l,dimension_id:u,slug:p}=s,{report_id:d}=s.dimension,{idKey:m,labelKey:f,zValueKey:R}=s.config[i],{overrideNames:h,regenerateSlugs:S,keepOldMembers:x,overrideRelevance:P,overrideAttributes:U}=Yt(s.settings),A=t.findAll({attributes:["slug",[fn("COUNT",col("variant.id")),"slugCount"]],include:{association:"variant",attributes:[],required:false,right:true,where:{dimension_id:u,slug:p,id:{[Op.not]:l}}},group:"search.slug"}).then(b=>Object.fromEntries(b.map(E=>{let w=E.getDataValue("slugCount");return [E.slug,Number.parseInt(`${w}`,10)]}))),F=t.findAll({where:{variant_id:l}}).then(b=>Object.fromEntries(b.map(E=>[E.id,E.toJSON()]))),[C,N]=await Promise.all([A,F]),k=Object.values(N).map(b=>b.slug),L=[],M=null,D=null;if(R&&R!==""){for(let b of c)if(typeof b[R]=="number"&&!isNaN(b[R])){let E=b[R];(M===null||E<M)&&(M=E),(D===null||E>D)&&(D=E);}}let Y=[],V=[],v=[],j=false;c.filter(b=>b[m]&&b[m]!==""&&b[f]&&b[f]!=="").forEach(b=>{let E=b[m],w=Tr(b[f]);j=false;let Z=parseFloat(Math.random().toPrecision(5));if(R&&R!==""&&M&&D&&b[R]){let Q;try{Q=parseInt(b[R],10);}catch{Q=0;}let H=D!==null&&M!==null&&D!==M?(Q-M)/(D-M):0;Z=D===M?1:parseFloat(H.toPrecision(5));}if(N[E]){if(h||S||P||U){let Q=N[E];if((h||U)&&v.push(Q.content_id),h&&S){let H=Object.values(N).filter(K=>K.id!==E).map(K=>K.slug),X=C[w]||H.includes[w]||L.includes(w);X&&console.warn("Duplicate slug!",w,"replaced by",`${w}-${E}`);let ve=X?`${w}-${E}`:w;Q.slug!==ve&&(Q.slug=ve,L.push(w),j=true,console.info("UPDATE SLUG",E,w));}R&&R!==""&&P&&Q.zvalue!==Z&&(Q.zvalue=Z,j=true,console.warn("UPDATE ZVALUE",E,Z)),j&&V.push(Q);}}else {console.info("INSERT ID",E);let Q=C[w]||k.includes[w]||L.includes(w);Q&&console.warn("Duplicate slug!",w,"replaced by",`${w}-${E}`);let H=Q?`${w}-${E}`:w;L.push(w),Y.push({id:E,slug:H,variant_id:l,dimension_id:u,report_id:d,zvalue:Z});}});let _=[];if(!x){let b=c.map(E=>E[m]);_=Object.keys(N).filter(E=>!b.includes(E));}try{return (Y.length>0||V.length>0)&&(await t.bulkCreate([...Y,...V],{updateOnDuplicate:["slug","zvalue"]}),console.info("New members ingested:",Y.length),console.info("New members updated:",V.length)),_.length>0&&(await t.destroy({where:{id:{[Op.in]:_},variant_id:l}}),console.warn("Old members deleted:",_.length)),v}catch(b){throw console.error(`[ERROR] Ingesting search members for ${i}`,b),new Error(b)}}}var nc=Xt(process.env.NEXT_PUBLIC_REPORTS_DEBUG);function yn(e){let{search:t}=e;return r;async function r(o){let{all:n,locale:a,mode:s,variant:i,output:c,allowNulls:l}=o,u={content_id:[],...i&&i.length?{variant_id:i}:{}};if(s==="content_ids")u.content_id=o.content_ids;else if(s==="ids"){if(n)throw new T(400,"Search by ids doesn't support locale all. Pick one locale.");let f={id:o.ids,...i&&i.length?{variant_id:i}:{}},R=await t.findAll({attributes:["content_id"],where:f,include:[{association:"contentByLocale",where:{locale:a}}]});u.content_id=R.map(h=>h.content_id);}else if(s==="slugs"){let f=o.slugs.map(h=>t.findAll({attributes:["content_id"],where:{slug:h.memberSlug},include:{association:"variant",attributes:["id","name","slug"],required:true,where:{slug:h.variantSlug}}})),R=await Promise.all(f).then(h=>h.reduce((S,x)=>S.concat(x),[]));u.content_id=R.map(h=>h.content_id);}else if(s==="related"){let f=()=>{if(o.variant_ids?.length)return {variant_id:o.variant_ids.map(S=>S)};if(o.dimension_ids?.length)return {dimension_id:o.dimension_ids.map(S=>S)};if(o.report_ids?.length)return {report_id:o.report_ids.map(S=>S)}},R=()=>o.include_ids?.length?{[Op.in]:o.include_ids.map(S=>S)}:false,h=await t.findAll({attributes:["content_id"],where:{...f(),content_id:R()||{[Op.notIn]:o.current_ids},visible:true},order:[Sequelize.fn("RANDOM")],limit:o.related||4});u.content_id=h.map(S=>S.content_id);}else if(s==="whole"){let f={...i&&i.length?{variant_id:i}:{}},R=await t.findAll({attributes:["content_id"],where:f});u.content_id=R.map(h=>h.content_id);}let p={locale:n?{[Op.ne]:null}:a},d=await t.findAll({where:u,include:[{association:"report",attributes:["id","name"]},{association:"dimension",attributes:["id","name","ordering"]},{association:"variant",attributes:["id","name","slug"]},{association:"image",attributes:["id","author","url","license"],include:[{association:"contentByLocale",where:p}]},{association:"contentByLocale",where:p}]});if(!l&&!["related","whole"].includes(s)&&o[s]&&d.length!==o[s].length)throw nc&&console.error("Error in read members. The number of members requested doesn't match the number of members found.",JSON.stringify(o)),new T(404,"One or more members were not found. "+JSON.stringify(o));d.sort((f,R)=>u.content_id.indexOf(f.content_id)-u.content_id.indexOf(R.content_id));let m=d.map(f=>{let R,h={id:f.id,slug:f.slug,visible:f.visible,zvalue:f.zvalue,content_id:f.content_id,report_id:f.report_id,report_name:f.report.name,dimension_id:f.dimension_id,dimension_name:f.dimension.name,dimension_ordering:f.dimension.ordering,variant_id:f.variant_id,variant_name:f.variant.name,variant_slug:f.variant.slug};if(n){let S=f.contentByLocale;h.contentByLocale=S,h.image=f.image,h.image_id=f.image_id,R=h;}else {let S=f.getContent(a),x=f.image?.getContent(a),P=x&&{id:f.image.id,author:f.image.author,url:f.image.url,license:f.image.license,meta:x.meta};R={...h,locale:S.locale,name:S.name,attributes:S.attributes,keywords:S.keywords,image:P||null,image_id:f.image_id};}return c==="lite"&&(delete R.image,delete R.image_id),R});return {meta:o,results:m}}}function hn(e){let{search:t}=e;return r;async function r(o){let n=await t.findOne({where:{content_id:o.member},include:[{association:"image",attributes:[o.size],include:[{association:"contentByLocale"}]}]});return n&&n.image&&n.image[o.size]?n.image[o.size]:Buffer.from("iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkkAQAAB8AG7jymN8AAAAASUVORK5CYII=","base64")}}function sc(e,t=true){if(!e)return "";let r=Wt($(e.toLowerCase()));return (t?zi(r,{replacement:" ",remove:/[*+~.()'"!:@-]/g,lower:true,strict:false,trim:true}):r).replace(/\s\s+/g," ")}var It=sc;var Jt=[{charset:"latin",locales:["en","es","fr","de","it","pt","ro","nl","sv","da","fi","no","pl","cs","hu","sk","sl"]},{charset:"cjk",locales:["zh","ja","ko"]},{charset:"arabic",locales:["ar","fa","ur","he"]},{charset:"cyrilic",locales:["bg","ru","uk","sr","mk"]}],xr=Jt.reduce((e,t)=>e.concat(t.locales),[]);var ot=Ie(),{locales:cc}=G(),lc=cc.filter(e=>xr.includes(e)),uo=false,uc=async(e,t=false,r)=>{if(t&&(ot&&console.info("0\uFE0F\u20E3 CLEARING SEARCH INDEX"),global.flexsearch=void 0,uo=false),global.flexsearch)return ot&&console.info("\u{1F501} RE-UTILIZING SEARCH INDEX"),global.flexsearch;try{uo||(ot&&console.info("1\uFE0F\u20E3 INITIALIZING SEARCH INDEX"),uo=!0,global.flexsearch=await pc(e,r));}catch(o){throw new Error(`
18
18
  Could not initialize FlexSearch engine.
19
19
  Details:
20
20
  ${o.message}
21
- `)}return global.flexsearch};async function 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 pc(e,t){let r=await e.search.findAll({include:[{association:"contentByLocale"}],order:[["zvalue","DESC NULLS LAST"]]});ot&&console.info("\u{1F3F3}\uFE0F INITIALIZING FLEXSEARCH");let o=lc.map(async n=>{ot&&console.info(`\u{1F3F3}\uFE0F INITIALIZING FLEXSEARCH ${n} LOCALE`);let s=Jt.find(m=>m.locales.includes(n))?.charset||"latin",i="Default";s==="latin"?i="LatinAdvanced":s==="cjk"&&(i="CJK");let c=null;if(["en","de","fr"].includes(n))try{n==="en"?c=(await import('flexsearch/lang/en')).default:n==="de"?c=(await import('flexsearch/lang/de')).default:n==="fr"&&(c=(await import('flexsearch/lang/fr')).default);}catch(m){ot&&console.warn(` Could not load language pack for ${n}: ${m.message}`);}let l=t?.attributes||[],u={encoder:i,tokenize:t?.tokenize||"forward",cache:100,resolution:t?.indexResolution||9,context:false,worker:false,rtl:s==="arabic",document:{id:"content_id",store:false,index:["id","name","clean","keywords",...l]}};c&&(c.filter&&(u.document.filter=m=>c.filter.has(m)),c.stemmer&&(u.document.stemmer=m=>c.stemmer.get(m)||m));let p=new Document(u),d=0;return r.forEach(m=>{let f=m.contentByLocale.find(R=>R.locale===n);if(f){let R=It(f.name,s!=="arabic"),h=Array.isArray(f.keywords)?f.keywords.map(S=>It(S,s!=="arabic")):null;try{let S={id:m.id,content_id:m.content_id,name:f.name,keywords:h,clean:R};if(l.length>0){let x=f.attributes||{};l.forEach(P=>{x[P]!==void 0&&(S[P]=x[P]);});}p.add(S),d++;}catch(S){ot&&console.warn(` Could not index document ${m.id}: ${S.message}`);}}}),console.info(`\u{1F3F3}\uFE0F Indexed for ${n}: ${d} elements (with ${l.length} custom attributes)`),[n,p]});return Object.fromEntries(await Promise.all(o))}var nt=uc;var Ct=process.env.REPORTS_EXTERNAL_SEARCH,Be=Ie(),{locales:dc}=G(),mc=dc.filter(e=>xr.includes(e)),po=false,fc=async(e=false)=>{if(e&&(Be&&console.info("0\uFE0F\u20E3 CLEARING SEARCH INDEX"),global.typesense=void 0,po=false),global.typesense)return Be&&console.info("\u{1F501} RE-UTILIZING SEARCH INDEX"),global.typesense;try{po||(Be&&console.info("1\uFE0F\u20E3 INITIALIZING SEARCH INDEX"),po=!0,global.typesense=await yc());}catch(t){throw new Error(`
22
22
  Could not initialize Typesense engine.
23
23
  Details:
24
24
  ${t.message}
25
- `)}return global.typesense};async function 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 gc(){try{if(Ct){let e=await Or.get(new URL(Ct).origin);if(e?.data["typesense-health"]===!0)return Be&&console.info(`${Ct} health check is OK. Version: ${e.data.Version}`),!0}else console.error("No envar set TYPESENSE_URL");return !1}catch(e){return console.error("Health check failed:",e.message),false}}async function yc(){if(Be&&console.info(`\u{1F3F3}\uFE0F INITIALIZING TYPESENSE SEARCH AGAINST ${Ct}`),!await gc())throw new Error("TYPESENSE_URL service is not healthy.");let t=mc.map(r=>(Be&&console.info(`\u{1F3F3}\uFE0F INITIALIZING SEARCH ${r} LOCALE`),[r,{search:async(n={query:"*",limit:12,offset:0})=>{let a={locale:r,query:n.query,limit:n.limit,offset:n.offset};return n.report&&Array.isArray(n.report)&&n.report.length>0&&(a["report[]"]=n.report.join(",")),n.variant&&Array.isArray(n.variant)&&n.variant.length>0&&(a["variant[]"]=n.variant.join(",")),Be&&console.info("Typesense URL:",Ct,a),Or.get(Ct,{params:a}).then(i=>(Be&&(console.info("Typesense URL:",i.request.res.responseUrl),console.info("Typesense Results",i.data.data.results.length)),i.data.data)).catch(i=>(console.error("Typesense Call Error:",i),[]))}}]));return Object.fromEntries(await Promise.all(t))}var bn=fc;var{localeDefault:bc}=G();function Bt(e,t){let{search:r,report:o,dimension:n}=e;return a;async function a(s){let i=s.origin||"flexsearch",c=process.env.REPORTS_EXTERNAL_SEARCH&&i==="typesense",{query:l,locale:u,preferredLocale:p,limit:d,format:m,visible:f,variant:R,dimension:h,report:S,all:x,noImage:P,includes:U,sort:A,direction:F,offset:C=0,excludeMultilateral:N}=s,k=F&&F!=="undefined"?F.toUpperCase():"DESC";["ASC","DESC","ASC NULLS LAST","DESC NULLS LAST","ASC NULLS FIRST","DESC NULLS FIRST"].includes(k)||(k="DESC");let M=Jt.find(b=>b.locales.includes(u))?.charset||"latin",D=d&&!isNaN(d)?d:20;t?.candidateLimit||2e3;let v=It(l,M!=="arabic");function j(b){return b.toJSON()}function _(b){let E=b.getContent(u),w=E.attributes||{},Z=s.attributes||t?.attributes||[],Q={};return Z.forEach(H=>{w[H]!==void 0&&(Q[H]=w[H]);}),{...b.toJSON(),...Q,locale:E.locale,name:E.name,keywords:E.keywords,rank:b.getDataValue("rank")?b.getDataValue("rank"):void 0}}if(c){let b=await bn(),E=b[u]||b[bc],w={query:v===""?"*":v,limit:D,variant:R,report:S,offset:C};return await E.search(w)}else {let b=[],E=await nt(e,false,t);if(l&&l!==""&&E[u]){let ce=It(l,M!=="arabic"),de={query:ce},Et=await E[u].search(de);if(c?b=Et.data.results.map(pr=>parseInt(pr.content_id,10)):b=Et.reduce((pr,zt)=>pr.concat(zt.result),[]),b=mr(b),p&&E[p]){let zt=E[p].search(ce).reduce((Es,As)=>Es.concat(As.result),[]);zt=mr(zt),b=mr([...b,...zt]);}}let w={...f?{visible:f}:{},...P?{image_id:{[Op.eq]:null}}:{},...R.length?{variant_id:R}:{},...h.length?{dimension_id:h}:{},...S.length?{report_id:S}:{}},Z={locale:x?{[Op.ne]:null}:u},Q=A&&A.startsWith("attr.")?A.replace("attr.",""):"",H=Q&&/^[a-zA-Z0-9_-]+$/.test(Q)?e.sequelize.escape(Q):"",X=[];if(A==="report"&&X.push([literal(`COALESCE(NULLIF("report"."settings"->>'order', '')::INTEGER, 999999)`),"ASC"],[literal(`COALESCE(NULLIF("variant"."settings"->>'order', '')::INTEGER, 999999)`),"ASC"]),l&&l!==""&&b.length&&(!A||A==="rank")){let ce=b.filter(de=>Number.isFinite(de));ce.length>0&&X.push([literal(`array_position(array[${ce.join(",")}], "content_id")`),"ASC"]);}A!=="zvalue"&&X.push(["zvalue","DESC NULLS LAST"]),X.push([literal(`COALESCE(NULLIF("report"."settings"->>'order', '')::INTEGER, 999999)`),"ASC"],[literal(`COALESCE(NULLIF("variant"."settings"->>'order', '')::INTEGER, 999999)`),"ASC"]),H?X.unshift(["sort_attribute_num",`${k} NULLS LAST`],["sort_attribute_str",`${k} NULLS LAST`]):A&&A!=="name"&&A!=="report"&&A!=="zvalue"&&A!=="rank"?X.unshift([A,`${k} NULLS LAST`]):A==="zvalue"?X.unshift(["zvalue",`${k} NULLS LAST`]):A==="name"&&X.unshift([literal('"sort_name"'),k.startsWith("DESC")?"DESC":"ASC"]),l&&l!==""&&(w.content_id=b);let ve=[{association:"contentByLocale",where:Z,separate:true}];(U||A==="report")&&ve.push({association:"report",attributes:["id","name","settings"]},{association:"dimension",attributes:["id","name","settings"]},{association:"variant",attributes:["id","slug","name","settings"]});let K={...w.visible?{visible:w.visible}:{},...w.noImage?{image_id:w.noImage}:{},...w.content_id?{content_id:w.content_id}:{}};if(!w.report_id&&!w.dimension_id&&!w.variant_id&&f){let de=(await o.findAll({attributes:["id"],where:{[Op.or]:[where(cast(json("settings.hide"),"boolean"),true)]}})).map(Et=>Et.id);de.length>0&&(w.report_id={[Op.notIn]:de},K.report_id=w.report_id);}if(N&&!w.report_id){let de=(await n.findAll({attributes:["report_id",[fn("COUNT",col("id")),"dimension_count"]],group:["report_id"],having:where(fn("COUNT",col("id")),Op.gt,1)})).map(Et=>Et.getDataValue("report_id"));de.length>0&&(w.report_id={[Op.notIn]:de},K.report_id=w.report_id);}let ae=[],J=x?"AND sc.locale IS NOT NULL":`AND sc.locale = ${e.sequelize.escape(u)}`,_e=A==="name"?{include:[[literal(`
26
+ (SELECT sc.name
27
+ FROM bespoke_reports_search_content sc
28
+ WHERE sc.id = "content_id" ${J} LIMIT 1)
29
+ `),"sort_name"]]}:{},se=A&&A.startsWith("attr.")?{include:[[literal(`
30
+ (SELECT CASE
31
+ WHEN sc.attributes->>${H} ~ '^[0-9]+(\\.[0-9]+)?$'
32
+ THEN CAST(sc.attributes->>${H} AS DOUBLE PRECISION)
29
33
  ELSE NULL
30
34
  END
35
+ FROM bespoke_reports_search_content sc
36
+ WHERE sc.id = "content_id" ${J} LIMIT 1)
31
37
  `),"sort_attribute_num"],[literal(`
32
- CASE
33
- WHEN "contentByLocale".attributes->>${H} ~ '^[0-9]+(\\.[0-9]+)?$'
38
+ (SELECT CASE
39
+ WHEN sc.attributes->>${H} ~ '^[0-9]+(\\.[0-9]+)?$'
34
40
  THEN NULL
35
- ELSE "contentByLocale".attributes->>${H}
41
+ ELSE sc.attributes->>${H}
36
42
  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.
43
+ FROM bespoke_reports_search_content sc
44
+ WHERE sc.id = "content_id" ${J} LIMIT 1)
45
+ `),"sort_attribute_str"]]}:{},ie=l&&l!==""&&b.length?{include:[[literal(`array_position(array[${b.join(",")}], "content_id")`),"rank"]]}:{},[hs,Rs]=await Promise.all([r.findAll({limit:D,offset:C,where:w,include:ve,order:X,subQuery:false,attributes:{include:[...ie.include||[],...se.include||[],..._e.include||[]]}}),r.findAll({attributes:["variant_id",[fn("COUNT",col("variant_id")),"members_count"]],where:K,group:["variant_id"]})]),bs=Rs.map(ce=>ce.toJSON()),Ss=m==="nested"?j:_;return ae=hs.map(Ss),{meta:{origin:"flexsearch",...Object.fromEntries(Object.entries(s).map(ce=>[ce[0],$(ce[1])])),variantCount:bs.reduce((ce,de)=>(ce[de.variant_id]=parseInt(de.members_count,10),ce),{})},results:ae}}}}function En(e){let{image:t,image_content:r,search:o,search_content:n}=e;return a;async function a(s){let{content_id:i,contentByLocale:c,image:l,image_id:u}=s,p={where:{content_id:i}},d=await o.findOne(p);if(await o.update(s,{where:{content_id:i}}),c){for(let f=0;f<c.length;f++){let R=c[f];await n.update({name:R.name,keywords:R.keywords},{where:{id:R.id,locale:R.locale}});}p={...p,...{include:[{association:"contentByLocale",separate:true}]}};}if(l){if(l.id&&(await t.update({...l},{where:{id:l.id}}),l.contentByLocale))for(let m=0;m<l.contentByLocale.length;m++){let f=l.contentByLocale[m];await r.update({meta:f.meta},{where:{id:f.id,locale:f.locale}});}}else !u&&d.image_id&&(await e.search.findAll({where:{image_id:d.image_id}})).length===0&&await t.destroy({where:{id:d.image_id}});return o.findOne(p)}}function An(e,t){return {ingestMembers:gn(e),readMember:yn(e),searchMember:Bt(e,t),updateMember:En(e),readMemberImage:hn(e)}}var at={include:[{association:"contentByLocale",separate:true},{association:"inputs",include:[{association:"contentByLocale",separate:true}]},{association:"consumers",include:[{association:"contentByLocale",separate:true}]}]},Qt=e=>({include:[{association:"variants",separate:true,attributes:{include:[[fn("COUNT",col("members.id")),"members_count"]]},include:[{model:e,as:"members",attributes:[]}],group:["variant.id"]}],order:[["ordering","ASC"]]}),Zt={include:[{association:"blocks",separate:true,...at}]},Pr=e=>({include:[{association:"dimensions",separate:true,...Qt(e)},{association:"sections",separate:true,...Zt}]});var ge=[{association:"image",attributes:{exclude:["splash"]},include:[{association:"contentByLocale"}]},{association:"contentByLocale"}];function Tn(e){let{block:t,block_content:r,block_input:o}=e;return {createBlock:n,readBlock:s,updateBlock:i,deleteBlock:l,createBulkBlock:a,updateBulkBlock:c};async function n(u){let{locales:p,...d}=u;return (await t.create({...d,consumers:[],inputs:[],contentByLocale:p.map(f=>({locale:f}))},{include:at.include})).toJSON()}async function a(u){let p=u.map(m=>{let{locales:f,...R}=m;return {...R,consumers:[],inputs:[],contentByLocale:f.map(S=>({locale:S}))}});return (await t.bulkCreate(p,{include:at.include})).map(m=>m.toJSON())}async function s({id:u,include:p}={}){let d=u==null?[]:[].concat(u),m=await t.findAll({where:d.length>0?{id:d}:void 0,include:p?at.include:void 0});if(d.length===0||m.length===d.length)return m.map(h=>h.toJSON());let f=m.map(h=>h.id),R=d.filter(h=>!f.includes(h));throw new T(404,`Block(id=[${R}]) does not exist.`)}async function i(u){let{id:p,contentByLocale:d,consumers:m,inputs:f,inputAction:R,...h}=u,S=await t.findByPk(p,{include:at.include,rejectOnEmpty:true});if(S.set(h),d){let x=Object.values(d);await r.bulkCreate(x,{updateOnDuplicate:["content"]});}return R&&(R.operation==="create"?await o.create(R.input):await o.destroy({where:R.input})),await S.save(),await S.reload(),S.toJSON()}async function c(u){let p=u.map(f=>{let{id:R,contentByLocale:h,consumers:S,inputs:x,inputAction:P,...U}=f;return {id:R,contentByLocale:h,inputAction:P,...U}}),d=await t.findAll({where:{id:{[Op.or]:p.map(f=>f.id)}},include:at.include}),m=[];for(let f of d){let R=p.filter(h=>h.id===f.id);for(let h=0;h<R.length;h++){let S=R[h],{id:x,contentByLocale:P,inputAction:U,...A}=S;if(U&&(U.operation==="create"?await o.create(U.input):await o.destroy({where:U.input})),P){let F=Object.values(P);await r.bulkCreate(F,{updateOnDuplicate:["content"]});}f.set(A),await f.save(),await f.reload(),m.push(f.toJSON());}}return m}async function l(u){let p=await t.findByPk(u,{rejectOnEmpty:true});return await p.destroy(),{id:u,parentType:"section",parentId:p.section_id}}}function _n(e){let{dimension:t,search:r}=e;return {createDimension:o,readDimension:n,updateDimension:a,deleteDimension:s};async function o(i){return (await t.create({name:i.name,report_id:i.report_id,ordering:i.ordering||0,variants:[]},{include:Qt(r).include})).toJSON()}async function n({id:i,include:c}={}){let l=i==null?[]:[].concat(i),u=await t.findAll({where:l.length>0?{id:l}:void 0,include:c?Qt(r).include:void 0});if(l.length===0||u.length===l.length)return u.map(m=>m.toJSON());let p=u.map(m=>m.id),d=l.filter(m=>!p.includes(m));throw new T(404,`Dimension(id=[${d}]) does not exist.`)}async function a(i){let{id:c,variants:l,...u}=i,p=await t.findByPk(c,{include:Qt(r).include,rejectOnEmpty:false});if(!p)throw new T(404,`Dimension(id=${c}) does not exist.`);return p.set(u),await p.save(),p.toJSON()}async function s(i){let c=await t.findByPk(i,{rejectOnEmpty:false});return await c.destroy(),{id:i,parentType:"report",parentId:c.report_id}}}function wn(e){let{formatter:t}=e;return {createFormatter:r,readFormatter:o,updateFormatter:n,deleteFormatter:a};async function r(s){return (await t.create(s)).toJSON()}async function o({id:s}={}){let i=s==null?[]:[].concat(s),c=await t.findAll({where:i.length>0?{id:i}:void 0});if(i.length===0||c.length===i.length)return c.map(p=>p.toJSON());let l=c.map(p=>p.id),u=i.filter(p=>!l.includes(p));throw new T(404,`Formatter(id=[${u}]) does not exist.`)}async function n(s){let{id:i,...c}=s,l=await t.findByPk(i,{rejectOnEmpty:true});return await l.update(c),l.toJSON()}async function a(s){return await(await t.findByPk(s,{rejectOnEmpty:true})).destroy(),{id:s}}}function xn(e){let{datasource:t}=e;return {createDatasource:r,readDatasource:o,updateDatasource:n,deleteDatasource:a};async function r(s){return (await t.create(s)).toJSON()}async function o({id:s,include:i}={}){try{let c=s==null?[]:[].concat(s),l=i===!0,u=await t.findAll({attributes:l?["id","name","description","content"]:["id","name","description",[literal("content - 'logic' - 'testUrl' - 'access'"),"content"]],where:c.length>0?{id:c}:void 0,order:[literal("(content->>'order')::integer ASC NULLS LAST")]});if(c.length===0||u.length===c.length)return u.map(m=>m.toJSON());let p=u.map(m=>m.id),d=c.filter(m=>!p.includes(m));throw new T(404,`Datasource(id=[${d}]) does not exist.`)}catch(c){throw new T(500,c)}}async function n(s){let{id:i,...c}=s,l=await t.findByPk(i,{rejectOnEmpty:true});return await l.update(c),l.toJSON()}async function a(s){return await(await t.findByPk(s,{rejectOnEmpty:true})).destroy(),{id:s}}}var{locales:Tc}=G();function Pn(e){let{report:t,search:r}=e;return {createReport:o,readReport:n,updateReport:a,deleteReport:s};async function o(i){return (await t.create({name:i.name,sections:[],dimensions:[]},{include:Pr(r).include})).toJSON()}async function n({id:i,include:c,locales:l=Tc}={}){let p=(i==null?[]:[].concat(i)).reduce((R,h)=>(R.includes(h)||R.push(h),R),[]),d=await t.findAll({where:p.length>0?{id:p}:void 0,include:c?Pr(r).include?.filter(R=>typeof c=="string"?R.association===c:c):void 0});if(p.length===0||d.length===p.length)return d.map(R=>{let h=R.toJSON();return {...h,sections:h.sections.map(S=>({...S,blocks:S.blocks.map(x=>({...x,contentByLocale:Object.keys(x.contentByLocale).reduce((P,U)=>({...P,...[...l,"logic"].includes(U)?{[U]:x.contentByLocale[U]}:{}}),{})}))}))}});let m=d.map(R=>R.id),f=p.filter(R=>!m.includes(R));throw new T(404,`Report(id=${f}) does not exist.`)}async function a(i){let{id:c,dimensions:l,sections:u,...p}=i,d=await t.findByPk(c,{include:Pr(r).include,rejectOnEmpty:false});if(!d)throw new T(404,`Report(id=${c}) does not exist.`);return d.set(p),await d.save(),await d.reload(),d.toJSON()}async function s(i){return await(await t.findByPk(i,{rejectOnEmpty:false})).destroy(),{id:i}}}function vn(e){let{section:t}=e;return {createSection:r,readSection:o,updateSection:n,deleteSection:a};async function r(s){return (await t.create({ordering:s.ordering,report_id:s.report_id,blocks:[]},{include:Zt.include})).toJSON()}async function o({id:s,include:i}={}){let c=s==null?[]:[].concat(s),l=await t.findAll({where:c.length>0?{id:c}:void 0,include:i?Zt.include:void 0});if(c.length===0||l.length===c.length)return l.map(d=>d.toJSON());let u=l.map(d=>d.id),p=c.filter(d=>!u.includes(d));throw new T(404,`Section(id=${p}) does not exist.`)}async function n(s){let{id:i,blocks:c,...l}=s,u=await t.findByPk(i,{include:Zt.include,rejectOnEmpty:false});return u.set(l),await u.save(),await u.reload(),u.toJSON()}async function a(s){let i=await t.findByPk(s,{rejectOnEmpty:true});return await i.destroy(),{id:s,parentType:"report",parentId:i.report_id}}}function Ln(e,t){let{variant:r,search:o}=e;return {createVariant:n,readVariant:a,updateVariant:s,deleteVariant:i,validateVariantSlug:c};async function n(l){let{dimension_id:u,name:p,slug:d}=l,m=await c({dimension:u,slug:d});return (await r.create({dimension_id:u,name:p,slug:m.valid?m.candidate:m.suggestion})).toJSON()}async function a({id:l}={}){let u=l==null?[]:[].concat(l),p=await r.findAll({where:u.length>0?{id:u}:void 0,attributes:{include:[[fn("COUNT",col("members.id")),"members_count"]]},include:[{model:o,attributes:[],as:"members"}],group:["variant.id"]});if(u.length===0||p.length===u.length)return p.map(f=>f.toJSON());let d=p.map(f=>f.id),m=u.filter(f=>!d.includes(f));throw new T(404,`Variant(id=${m}) does not exist.`)}async function s(l){let{id:u,...p}=l,d=await r.findByPk(u,{include:[{association:"dimension"}],rejectOnEmpty:true});p.settings=Yt(p.settings);let m=p.settings.doIngest;return p.settings.doIngest=false,await d.update(p),m&&(await t.ingestMembers(d),await nt(e,true)),await d.reload(),d.toJSON()}async function i(l){let u=await r.findByPk(l,{rejectOnEmpty:true});return await u.destroy(),nt(e,true),{id:l,parentType:"dimension",parentId:u.dimension_id}}async function c({dimension:l,slug:u}){let p=await r.findAll({attributes:["slug",[fn("COUNT",col("id")),"slugCount"]],where:{dimension_id:{[Op.ne]:l}},group:"slug"}).then(R=>Object.fromEntries(R.map(h=>{let S=h.getDataValue("slugCount");return [h.slug,Number.parseInt(`${S}`,10)]}))),d=u,m=1,f=true;for(;p[d];)f=false,d=`${u}-${m}`,m++;return {candidate:u,dimension_id:l,suggestion:d,valid:f}}}function Bn(e,t){let r={...Tn(e),..._n(e),...wn(e),...xn(e),...An(e,t),...Pn(e),...vn(e)},o={...r,...Ln(e,r)};return {createFormatter:I(o.createFormatter),deleteFormatter:I(o.deleteFormatter),readFormatter:I(o.readFormatter),updateFormatter:I(o.updateFormatter),createReport:I(o.createReport),deleteReport:I(o.deleteReport),readReport:I(o.readReport),updateReport:I(o.updateReport),createDimension:I(o.createDimension),deleteDimension:I(o.deleteDimension),readDimension:I(o.readDimension),updateDimension:I(o.updateDimension),createVariant:I(o.createVariant),readVariant:I(o.readVariant),updateVariant:I(o.updateVariant),deleteVariant:I(o.deleteVariant),validateVariantSlug:I(o.validateVariantSlug),createSection:I(o.createSection),readSection:I(o.readSection),updateSection:I(o.updateSection),deleteSection:I(o.deleteSection),createBlock:I(o.createBlock),deleteBlock:I(o.deleteBlock),readBlock:I(o.readBlock),updateBlock:I(o.updateBlock),createBulkBlock:I(o.createBulkBlock),updateBulkBlock:I(o.updateBulkBlock),readMember:I(o.readMember),searchMember:I(o.searchMember),updateMember:I(o.updateMember),readMemberImage:I(o.readMemberImage),createDatasource:I(o.createDatasource),deleteDatasource:I(o.deleteDatasource),readDatasource:I(o.readDatasource),updateDatasource:I(o.updateDatasource)}}if(typeof window<"u")throw new Error("uploadImage.ts can only be imported on the server side");var Mn=e=>{throw console.error("/methods/helpers/uploadImage.ts:",e),new Error(e.message)},wc=Number(process.env.NEXT_PUBLIC_IMAGE_SPLASH_WIDTH)||1400,kc=Number(process.env.NEXT_PUBLIC_IMAGE_THUMB_WIDTH)||400,xc=async(e,t,r)=>{let o=[{type:"splash",res:wc},{type:"thumb",res:kc}],n=(await import('sharp')).default;for(let a of o){let s=await n(r).resize(a.res).toFormat("webp").webp({lossless:true}).toBuffer().catch(Mn);await e.image.update({[a.type]:s},{where:{id:t}}).catch(Mn);}},Ae=xc;var On="SECTION_ALLOWED";var Nn=["4","5","7","8","9","10"],Ic=Nn.join(),{locales:Cc}=G(),Me;if(process.env.FLICKR_API_KEY)try{Me=new vc(process.env.FLICKR_API_KEY);}catch(e){throw console.error("Flickr ERROR:",e),new Error(e.message)}async function Dn(e,t){try{let r={prompt:t.prompt||"",page:t.page||1};if(!Me)throw console.warn("Flickr is not initialized. Check the credentials"),new Error("Flickr is not initialized. Check the credentials");let o=r.prompt,a=(await Me.photos.search({text:o,license:Ic,sort:"relevance",per_page:24,page:r.page,content_types:"0",orientation:"landscape"}).then(l=>l.body)).photos.photo,s=a.reduce((l,u)=>l.concat(Me.photos.getSizes({photo_id:u.id})),[]),c=(await Promise.all(s).then(l=>l)).reduce((l,u,p)=>{let d=u.body.sizes.size.find(m=>m.label==="Small 320");return d&&l.push({id:a[p].id,source:d.source}),l},[]);return {meta:{prompt:$(r.prompt),page:$(`${r.page}`)},results:c}}catch(r){throw console.error(r),new Error("Error in search flickr provider")}}async function Un(e,t){try{let{content_id:r,image_id:o}=t,n={content_id:$(`${r}`)||"",id:$(`${o}`)||""},s=`https://flic.kr/p/${Pc.int_to_base58(o)}`;if(!Me)throw new Error("Flickr API Key not configured");let i=await Me.photos.getInfo({photo_id:o}).then(l=>l.body),c;if(i)if(Nn.includes(i.photo.license)){let l=await e.search.findOne({where:{content_id:r}}),u=await e.image.findOne({where:{url:s}});if(l){if(u)await e.search.update({image_id:u.id},{where:{content_id:r}});else {let d=await Me.photos.getSizes({photo_id:o}).then(A=>A.body),m=d.sizes.size.find(A=>parseInt(A.width,10)>=1600);if(m||(m=d.sizes.size.find(A=>parseInt(A.width,10)>=1e3)),m||(m=d.sizes.size.find(A=>parseInt(A.width,10)>=500)),!m||!m.source)throw new Error("Flickr Source Error, try another image.");let f=await fetch(m.source);if(!f.ok)throw new Error("Flickr Error retrieving image, try another image.");let R=await f.arrayBuffer(),S=(await Me.photos.licenses.getInfo().then(A=>A.body.licenses.license)).find(A=>A.id===parseInt(i.photo.license,10)),x={url:s,author:i.photo.owner.realname||i.photo.owner.username,license:S?`${S.name}: ${S.url}`:""},P=await e.image.create(x);await e.image_content.destroy({where:{id:P.id}});let U=Cc.map(A=>({id:P.id,locale:A,meta:i.photo.title._content}));await e.image_content.bulkCreate(U),await e.search.update({image_id:P.id},{where:{content_id:r}}),await Ae(e,P.id,R);}let p=await e.search.findOne({where:{content_id:r},include:ge});p&&p.image&&(p.image.thumb=!!p.image.thumb);}else throw new Error("Error updating Search")}else throw new Error("Bad License");else throw new Error("Malformed URL");return {meta:{...n},results:c}}catch(r){throw console.error(r),new Error("Error in save flickr provider")}}function O(e,t,r,o){return {method:e,path:t,handler:r,roleRequired:o}}function te(e){let t=Number.parseInt(`${e||""}`,10);if(Number.isNaN(t)||!Number.isFinite(t))throw new T(400,`Invalid numeric parameter: ${e}`);return t}function q(e){return e==null||e===""?[]:Array.isArray(e)?e:e.toString().split(",")}var{localeDefault:Ne}=G();function Fn(e){let{readMember:t,searchMember:r,updateMember:o,readMemberImage:n}=e;return [O("GET","read/members",async a=>{let s=Lc(a.query),i=s[s.mode]||[],c=s.mode==="whole";if(!c&&i.length===0)throw new T(400,`The request is missing the '${s.mode}' parameter.`);if(!c&&i.length>20&&!s.variant)throw new T(400,`You can look for up to 20 '${s.mode}' in a single request.`);return t(s)}),O("GET","search/members",a=>{let s=er(a.query);return r(s)}),O("POST","update/member",a=>{let{body:s}=a;return o(s)},[z.EDITOR]),O("GET","member/image",a=>{let s=q(a.query.size)[0];return n({member:te(a.query.member),size:s&&s==="splash"?"splash":"thumb"})})]}function Lc(e){let t=q(e.locale)[0]||Ne,r=t==="all"||Xt(e.all),o=q(e.mode)[0],a=(q(e.output)[0]||"full")==="lite"?"lite":"full",s=parseInt(q(e.related)[0],10)||5,i=Xt(e.allowNulls,{default:false}),c=q(e.variant).map(te);if(c.length===0&&(c=q(e["variant[]"]).map(te)),o==="ids")return {all:r,mode:o,variant:c,output:a,locale:r?Ne:$(t),ids:q(e.ids||e["ids[]"]),allowNulls:i};if(o==="content_ids")return {all:r,mode:o,variant:c,output:a,locale:r?Ne:$(t),content_ids:q(e.content_ids||e["content_ids[]"]).map(te),allowNulls:false};if(o==="slugs")return {all:r,mode:o,variant:c,output:a,locale:r?Ne:$(t),slugs:q(e.slugs||e["slugs[]"]).map(l=>{let[u,p]=l.split("/");return {variantSlug:u,memberSlug:p}}),allowNulls:false};if(o==="related")return {all:r,mode:o,locale:r?Ne:$(t),related:s,current_ids:q(e.current_ids||e["current_ids[]"]).map(te),include_ids:q(e.include_ids||e["include_ids[]"]).map(te),report_ids:q(e.report_ids||e["report_ids[]"]).map(te),dimension_ids:q(e.dimension_ids||e["dimension_ids[]"]).map(te),variant_ids:q(e.variant_ids||e["variant_ids[]"]).map(te),output:a,allowNulls:false};if(o==="whole")return {all:r,mode:o,variant:c,locale:r?Ne:$(t),output:a,allowNulls:i};throw new T(400,`Invalid mode: '${o}'`)}function er(e){let t=q(e.locale)[0]||Ne||"en",r=t==="all",o=q(e.format)[0],n=o?o==="nested":r,a=q(e.variant).map(te);a.length===0&&(a=q(e["variant[]"]).map(te));let s=q(e.dimension).map(te);s.length===0&&(s=q(e["dimension[]"]).map(te));let i=q(e.report).map(te);i.length===0&&(i=q(e["report[]"]).map(te));let c=e.origin==="typesense"?"typesense":"flexsearch";return {query:q(e.query||e.q)[0]||"",locale:r?Ne:t,preferredLocale:q(e.preferredLocale)[0],limit:q(e.limit).map(te)[0]??5,format:n?"nested":"plain",includes:Xt(e.includes,{default:true}),visible:Xt(e.visible,{default:true}),noImage:Xt(e.noImage,{default:false}),variant:a,dimension:s,report:i,all:r,sort:q(e.sort)[0],direction:q(e.direction)[0],offset:Number(e.offset||0),origin:c}}async function Vn(e,t,r){let o=Bt(e,r),n=er({query:t.prompt,limit:"50",visible:"false"}),s=(await o(n)).results.filter(i=>i.image_id).map(i=>({id:i.image_id,source:`/api/cms/member/image?member=${i.content_id}&size=thumb`}));return {meta:{prompt:$(n.query)},results:s}}async function $n(e,t){let{search:r}=e,{content_id:o,image_id:n}=t;await r.update({image_id:n},{where:{content_id:o}});let a=await r.findOne({where:{content_id:o},include:ge}).then(s=>s?{...s.toJSON(),image:{...s.image.toJSON(),thumb:!!s.image.thumb}}:null);return {meta:{id:n,content_id:o},results:a}}if(typeof window<"u")throw new Error("unsplash.ts can only be imported on the server side");var{locales:Oc}=G(),tr;if(process.env.UNSPLASH_API_KEY)try{tr=createApi({accessKey:process.env.UNSPLASH_API_KEY});}catch(e){throw console.error("Unsplash error:",e),new Error(e.message)}async function zn(e,t){try{let r={prompt:t.prompt||"",page:t.page||1};if(!tr)throw new Error("Unsplash API Key not configured");let o=r.prompt,a=(await tr.search.getPhotos({query:o,perPage:24,page:r.page,orientation:"landscape"}).then(s=>s.response.results)).map(s=>({id:s.id,source:s.urls.thumb}));return {meta:{prompt:$(r.prompt),page:$(`${r.page}`)},results:a}}catch(r){throw console.error(r),new Error("Error in search unsplash provider")}}async function qn(e,t){try{let{content_id:r,image_id:o}=t,n={content_id:$(`${r}`)||"",id:$(`${o}`)||""};if(!tr)throw console.warn("Unsplash is not initialized. Check the credentials"),new Error("Unsplash is not initialized. Check the credentials");let a=await tr.photos.get({photoId:o}).then(i=>i.response),s;if(a){let i=await e.search.findOne({where:{content_id:r}}),c=a.links.html,l=await e.image.findOne({where:{url:c}});if(i){if(l)await e.search.update({image_id:l.id},{where:{content_id:r}});else {let p=await Or.get(a.urls.full,{responseType:"arraybuffer"}).then(R=>R.data),d={url:c,author:a.user.name||a.user.username,license:"Free Unsplash license: https://unsplash.com/license"},m=await e.image.create(d);await e.image_content.destroy({where:{id:m.id}});let f=Oc.map(R=>({id:m.id,locale:R,meta:a.description||a.alt_description}));await e.image_content.bulkCreate(f),await e.search.update({image_id:m.id},{where:{content_id:r}}),await Ae(e,m.id,p);}let u=await e.search.findOne({where:{content_id:r},include:ge});u&&u.image&&(u.image.thumb=!!u.image.thumb);}else throw new Error("Error updating Search")}else throw new Error("Malformed URL");return {meta:{...n},results:s}}catch(r){throw console.error(r),new Error("Error in save unsplash provider")}}if(typeof window<"u")throw new Error("upload.ts can only be imported on the server side");var{locales:Dc}=G();async function Gn(e,t){try{let{content_id:r,image_source:o,files:n}=t,a={content_id:$(`${r}`)||""};if(await e.search.findOne({where:{content_id:r}})&&n){let c=await Nc.readFileSync(n.file.filepath),l={url:o,author:"",license:""},u=await e.image.create(l);await e.image_content.destroy({where:{id:u.id}});let p=Dc.map(d=>({id:u.id,locale:d,meta:""}));await e.image_content.bulkCreate(p),await e.search.update({image_id:u.id},{where:{content_id:r}}),await Ae(e,u.id,c);}let i=await e.search.findOne({where:{content_id:r},include:ge});return i&&i.image&&(i.image.thumb=!!i.image.thumb),{meta:{...a},results:i}}catch(r){throw console.error(r),new Error("Error in save upload provider")}}if(typeof window<"u")throw new Error("adobe.ts can only be imported on the server side");var{locales:Uc}=G();var Kn=async e=>{let t={"x-api-key":process.env.ADOBE_STOCK_API_KEY||"EMPTY_ADOBE_KEY","X-Product":"BespokeApp/0.1"};return t};var rr;if(process.env.ADOBE_STOCK_API_KEY)try{rr={search:async(e,t)=>await Or.get("https://stock.adobe.io/Rest/Media/1/Search/Files",{headers:await Kn(!1),params:{locale:"en_US","search_parameters[limit]":24,"search_parameters[offset]":t*24,"search_parameters[words]":e,"search_parameters[filters][content_type:photo]":"1","search_parameters[filters][content_type:image]":"1","search_parameters[filters][orientation]":"horizontal",result_columns:["id","stock_id","thumbnail_url","is_licensed"]}}).then(r=>r.data.files),get:async e=>await Or.get("https://stock.adobe.io/Rest/Media/1/Files",{headers:await Kn(!1),params:{locale:"en_US",ids:e,result_columns:["id","thumbnail_url","creator_name","title","thumbnail_1000_url","details_url","category"]}}).then(t=>t.data.files[0])};}catch{}async function Hn(e,t){try{let r={prompt:t.prompt||"",page:t.page||1};if(!rr)throw new Error("Adobe API Key not configured");let n=(await rr.search(r.prompt,r.page)).map(a=>({id:a.id,source:a.thumbnail_url}));return {meta:{prompt:$(r.prompt),page:$(`${r.page}`)},results:n}}catch(r){throw console.error(r),new Error("Error in search Adobe provider")}}async function jn(e,t){try{let{content_id:r,image_id:o}=t,n={content_id:$(`${r}`)||"",id:$(`${o}`)||""};if(!rr)throw console.warn("Adobe is not initialized. Check the credentials"),new Error("Adobe is not initialized. Check the credentials");let a=await rr.get(o),s;if(a){let i=await e.search.findOne({where:{content_id:r}}),c=a.details_url,l=await e.image.findOne({where:{url:c}});if(i){if(l)await e.search.update({image_id:l.id},{where:{content_id:r}});else {let p=await Or.get(a.thumbnail_1000_url,{responseType:"arraybuffer"}).then(R=>R.data),d={url:c,author:a.creator_name,license:"ADOBE, TO-DO"},m=await e.image.create(d);await e.image_content.destroy({where:{id:m.id}});let f=Uc.map(R=>({id:m.id,locale:R,meta:a.title||a.description}));await e.image_content.bulkCreate(f),await e.search.update({image_id:m.id},{where:{content_id:r}}),await Ae(e,m.id,p);}let u=await e.search.findOne({where:{content_id:r},include:ge});u&&u.image&&(u.image.thumb=!!u.image.thumb);}else throw new Error("Error updating Search")}else throw new Error("Malformed URL");return {meta:{...n},results:s}}catch(r){throw console.error(r),new Error("Error in save adobe provider")}}var{locales:Fc}=G(),vr=process.env.PIXABAY_API_KEY,Wn="https://pixabay.com/api/";async function Yn(e,t){try{let r={prompt:t.prompt||"",page:t.page||1};if(!vr)throw new Error("Pixabay API Key not configured");let o=encodeURIComponent(r.prompt),n=`${Wn}?key=${vr}&q=${o}&per_page=${24}&page=${r.page}&image_type=photo&orientation=horizontal&safesearch=true`,i=(await Or.get(n)).data.hits?.map(c=>({id:c.id,source:c.previewURL||c.webformatURL}))||[];return {meta:{prompt:$(r.prompt),page:$(`${r.page}`)},results:i}}catch(r){throw console.error(r),new Error("Error in search pixabay provider")}}async function Jn(e,t){try{let{content_id:r,image_id:o}=t,n={content_id:$(`${r}`)||"",id:$(`${o}`)||""};if(!vr)throw console.warn("Pixabay is not initialized. Check the credentials"),new Error("Pixabay is not initialized. Check the credentials");let a=`${Wn}?key=${vr}&id=${o}`,i=(await Or.get(a)).data,c;if(i.hits&&i.hits.length>0){let l=i.hits[0],u=await e.search.findOne({where:{content_id:r}}),p=l.pageURL,d=await e.image.findOne({where:{url:p}});if(u){if(d)await e.search.update({image_id:d.id},{where:{content_id:r}});else {let f=l.largeImageURL||l.webformatURL||l.imageURL;if(!f)throw new Error("Pixabay image URL not available");let R=await Or.get(f,{responseType:"arraybuffer"}).then(P=>P.data),h={url:p,author:l.user||`Pixabay User ${l.user_id}`,license:"Free Pixabay License: https://pixabay.com/service/license/"},S=await e.image.create(h);await e.image_content.destroy({where:{id:S.id}});let x=Fc.map(P=>({id:S.id,locale:P,meta:l.tags||l.description||""}));await e.image_content.bulkCreate(x),await e.search.update({image_id:S.id},{where:{content_id:r}}),await Ae(e,S.id,R);}let m=await e.search.findOne({where:{content_id:r},include:ge});m&&m.image&&(m.image.thumb=!!m.image.thumb);}else throw new Error("Error updating Search")}else throw new Error("Image not found in Pixabay");return {meta:{...n},results:c}}catch(r){throw console.error(r),new Error("Error in save pixabay provider")}}if(typeof window<"u")throw new Error("imageSave.ts can only be imported on the server side");var Vc={local:$n,flickr:Un,unsplash:qn,upload:Gn,adobe:jn,pixabay:Jn};function st(e,t){let r=Vc[t];if(!r)throw new T(500,`Wrong provider dbImageSaveFactory.ts: ${t}`);return I(o=>r(e,o))}if(typeof window<"u")throw new Error("imageSearch.ts can only be imported on the server side");var $c={local:Vn,flickr:Dn,unsplash:zn,adobe:Hn,pixabay:Yn};function Mt(e,t,r){let o=$c[t];if(!o)throw new T(500,`Wrong provider dbImageSearchFactory.ts: ${t}`);return I(n=>o(e,n,r))}var Wc=e=>(e.dimensions&&e.dimensions.forEach(t=>{t.variants&&t.variants.forEach(r=>{r.members_count&&(r.members_count=parseInt(r.members_count,10));});}),e);function Cr(e){let{report:t,search:r}=e;return o;async function o(n){let a=n?.report_id?Number(n.report_id):void 0,s=!(typeof n?.count<"u"&&(n.count==="false"||n.count===false)),i={attributes:["id","name",[literal("COALESCE(NULLIF(settings ->> 'order', '')::INTEGER, 0)"),"ordering"],[literal("COALESCE(NULLIF(settings ->> 'hide', '')::BOOL, false)"),"hide"]],where:{[Op.or]:[where(cast(json("settings.hide"),"boolean"),false),literal("NOT (settings::jsonb ? 'hide')")]},order:[["ordering","ASC"]],include:[{attributes:["id","name","ordering"],association:"dimensions",separate:true,order:[["ordering","ASC"]],include:[{attributes:["id","name","slug",[literal("COALESCE(NULLIF(settings ->> 'order', '')::INTEGER, 0)"),"ordering"]],association:"variants",separate:true,group:["variant.id"],order:[["ordering","ASC"],["id","ASC"]]}]}]};return a&&(i.where={...i.where,id:a}),s&&i.include&&i.include[0]&&(i.include[0].include[0].attributes.push([fn("COUNT",col("members.id")),"members_count"]),i.include[0].include[0].include=[{model:r,attributes:[],as:"members",where:{visible:true}}]),{data:(await t.findAll(i)).map(l=>({...Wc(l.toJSON()),mode:l.dimensions.length===1?Ce.UNILATERAL:Ce.MULTILATERAL}))}}}function Qn(e){return async()=>(await nt(e,true),{error:false})}var{locales:Yc,localeDefault:Jc}=G(),Qc=(e,t,r,o,n)=>{if(!e)return [];let a=[];t.forEach(i=>{let c=e.filter(l=>l.metadata.report.id===i.id);if(c.length>0)if(i.mode===Ce.UNILATERAL){let l=i.dimensions[0];l.variants.forEach(u=>{let p=c.filter(d=>d.metadata.dimension.id===l.id&&d.metadata.variant.id===u.id);p.length>0&&(a=a.concat(p.map(d=>({path:`/${u.slug}/${d.slug}`,name:d.name,zvalue:d.zvalue,rank:d.rank,report:{id:i.id,name:i.name,mode:i.mode},members:[d],id:`r-${i.id}-${[d].map(m=>`${m.id}`).join("-")}`}))));});}else i.mode;});let s=n?.toUpperCase()==="ASC"?1:-1;if(r==="name")return a.sort((i,c)=>i.name.localeCompare(c.name)*(s*-1));if(r==="zvalue")return a.sort((i,c)=>((i.zvalue||0)-(c.zvalue||0))*s);if(r==="rank")return a.sort((i,c)=>{let l=i.rank??Number.MAX_SAFE_INTEGER,u=c.rank??Number.MAX_SAFE_INTEGER;return (l-u)*s});if(r?.startsWith("attr.")){let i=r.replace("attr.","");return /^[a-zA-Z0-9_-]+$/.test(i)?a.sort((c,l)=>{let u=parseFloat(c.members?.[0]?.metadata?.attributes?.[i])||c.zvalue||0,p=parseFloat(l.members?.[0]?.metadata?.attributes?.[i])||l.zvalue||0;return (u-p)*s}):a}return o?a.sort((i,c)=>{let l=i.zvalue||0,u=o.toLowerCase(),p=i.name.toLowerCase();p===u?l+=1e3:p.startsWith(u)&&(l+=100);let d=c.zvalue||0,m=c.name.toLowerCase();return m===u?d+=1e3:m.startsWith(u)&&(d+=100),d-l}):a},Zc=(e,t)=>{if(!e)return [];let r,o,n;return e.map(a=>(r={...t.find(s=>s.id===a.report_id)},o={...r.dimensions.find(s=>s.id===a.dimension_id)},n={...o.variants.find(s=>s.id===a.variant_id)},delete r.dimensions,delete o.variants,{name:a.name,zvalue:a.zvalue,rank:a.rank,metadata:{id:a.id,slug:a.slug,report:r,dimension:o,variant:n,attributes:a.contentByLocale?.[0]?.attributes||{}},id:a.content_id,slug:a.slug}))};function Zn(e,t){let r=Bt(e,t),o=Cr(e);return n;async function n(a){let s=a.format||"results",i=Yc.includes(a.locale)?a.locale:Jc,c=a.origin||"flexsearch",l=process.env.REPORTS_EXTERNAL_SEARCH&&c==="typesense",u=await r({...a,format:"plain",locale:$(i),visible:true,excludeMultilateral:true});if(l)return u;{let p=u.results?u.results:[],m=(await o()).data,f=Zc(p,m);return {meta:{...u.meta,origin:"flexsearch",format:s},results:Qc(f,m,a.sort,a.query,a.direction)}}}}function Xn(e){return async t=>{try{let{variantPaths:r}=t,o=[];if(r)for(let n=0;n<r.length;n++){let a=r[n];(await e.search.findAll({attributes:["slug"],where:{variant_id:a.variantId}})).forEach(i=>{o.push(`/${a.prefix}/${a.variantSlug}/${i.slug}`);});}return {...t,paths:o,revalidated:0,samples:[]}}catch(r){throw new T(r.response?.status||500,r.message)}}}function ea(){return async e=>{try{let{target:t}=e;return {target:t}}catch(t){throw new T(t.response?.status||500,t.message)}}}function he(e,t){let r=[],o=a=>Object.values(t).reduce((i,c)=>("inputs"in c&&c.inputs.includes(a)&&(i.push(c.id),i=i.concat(o(c.id))),i),[]);e.forEach(a=>{r=r.concat(o(a));});let n=[];return r.forEach(a=>{n.includes(a)||n.push(a);}),n}function el(e,t){return e.some(r=>t.includes(`role.${r}`))}function ta(e){let{report:t}=e;return r;async function r(o){let n=await t.findByPk(o.report_id,{include:{association:"sections",separate:true,where:{id:o.section_id},include:[{association:"blocks",separate:true,include:[{association:"contentByLocale",separate:true,where:{locale:{[Op.or]:[o.locale,"logic"]}}},{association:"inputs"},{association:"consumers"}]}]}}).then(s=>s&&s.sections&&Array.isArray(s.sections)?s.sections.reduce((i,c)=>{let l=c.blocks.map(u=>{let p=u.toJSON();return p.inputs=p.inputs.map(d=>d.id),p.consumers=p.consumers.map(d=>d.id),p});return i.concat(l)},[]):[]),a=n.filter(s=>s.settings&&s.settings.access&&Array.isArray(s.settings.access)&&Array.isArray(o.roles)&&(s.settings.access.includes("private")||el(o.roles,s.settings.access))).map(s=>s.id);return a=a.concat(he(a,n)),{params:{...o},data:n.filter(s=>a.includes(s.id))}}}var ol=Object.keys(ho).filter(e=>e.indexOf("Icon")===0);async function ra(){return {meta:{provider:"tabler"},results:ol}}async function oa(e){let t=ho[e.name]?ho[e.name]:()=>"";return renderToString(createElement(t))}var nl={tabler:ra};function na(e){let t=nl[e];if(!t)throw new T(500,`Wrong provider dbListIconsFactory.ts: ${e}`);return I(()=>t())}var al={tabler:oa};function aa(e){return I(t=>{let r=al[e];if(!r)throw new T(500,`Wrong provider dbReadIconFactory.ts: ${t.provider}`);return r({name:t.name,provider:e})})}function sa(){return e;async function e(){return {secrets:vt()}}}function it(e,t,r){return rt().then(o=>{Object.assign(r,Ot(o));})}function Ot(e,t,r){let o={},n=Ke(t||{providers:[]});return t&&n.actions&&n.source==="custom"?(o.searchRole=I(n.actions.searchRole()),o.searchUser=I(n.actions.searchUser()),o.readUser=I(n.actions.readUser()),o.updateUser=I(n.actions.updateUser())):n.source==="auth0"&&(o.searchRole=I(Do()),o.searchUser=I(Uo()),o.readUser=I(Fo()),o.updateUser=I(Vo())),{...Bn(e),searchReport:I(Zn(e,r)),readMetadata:I(Cr(e)),regenerateSearch:I(Qn(e)),imageFlickrSearch:Mt(e,"flickr",r),imageLocalSearch:Mt(e,"local",r),imageUnsplashSearch:Mt(e,"unsplash",r),imageAdobeSearch:Mt(e,"adobe",r),imagePixabaySearch:Mt(e,"pixabay",r),imageFlickrSave:st(e,"flickr"),imageLocalSave:st(e,"local"),imageUnsplashSave:st(e,"unsplash"),imageUploadSave:st(e,"upload"),imageAdobeSave:st(e,"adobe"),imagePixabaySave:st(e,"pixabay"),urlProxy:kr(e),searchRole:o.searchRole,searchUser:o.searchUser,readUser:o.readUser,updateUser:o.updateUser,updateMyData:I($o()),revalidateReport:I(Xn(e)),revalidateUrl:I(ea()),readPrivateBlocks:I(ta(e)),listTablerIcons:na("tabler"),readTablerIcon:aa("tabler"),readEnvSecrets:I(sa())}}async function Ro(e){try{let t=new sl.IncomingForm,r=await new Promise((o,n)=>{t.parse(e,(a,s,i)=>{if(a){console.error("Error in formidable parse function inside internal parseBody.ts",a),n(a);return}o({fields:s,files:i});});});return {...r.fields,files:r.files}}catch(t){return {error:t}}}function De(e,t){let r=le(e,"create",t),o=le(e,"read",t),n=le(e,"update",t),a=le(e,"delete",t),s=le(e,"updateBulk",t),i=le(e,"createBulk",t);return [O("POST",`create/bulk/${t}`,c=>{let{body:l}=c,{files:u,...p}=l,d=Object.keys(p).map(m=>p[m]);return i(d)},[z.EDITOR]),O("POST",`create/${t}`,c=>{let{body:l}=c;return r(l)},[z.EDITOR]),O("GET",`read/${t}`,c=>{let l=c.query,u=q(l.id).map(te);return o({id:u,include:Xt(l.include)})}),O("POST",`update/${t}`,c=>{let{body:l}=c;return n(l)},[z.EDITOR]),O("POST",`update/bulk/${t}`,c=>{let{body:l}=c,{files:u,...p}=l,d=Object.keys(p).map(m=>p[m]);return s(d)},[z.EDITOR]),O("DELETE",`delete/${t}`,c=>{let l=te(c.query.id);return a(l)},[z.EDITOR])]}function ia(e){let{validateVariantSlug:t}=e;return [...De(e,"variant"),O("GET","validate/variant",r=>{let o=r.query,n=te(o.dimension);return t({dimension:n,slug:Tr(o.slug)})},[z.EDITOR])]}function ca(e){return De(e,"datasource").map(r=>({...r,roleRequired:[z.EDITOR]}))}function ct(e,t){let r=`image${Se(t)}Save`,o=e[r];return O("POST",`images/save/${t}`,n=>{let a=n.body;if(!a.content_id)throw new T(400,"Missing 'content_id' parameter.");if(!a.image_id)throw new T(400,"Missing 'image_id' parameter.");return o(a)},[z.EDITOR])}function Nt(e,t){let r=`image${Se(t)}Search`,o=e[r];return O("GET",`images/search/${t}`,async n=>{let a=q(n.query.prompt)[0];if(!a)throw new T(400,"Empty 'prompt' param.");return o({prompt:a,page:te(n.query.page)})},[z.EDITOR])}function la(e){let{readMetadata:t}=e;return O("GET","read/metadata",r=>t(r.query))}function ua(e){let{regenerateSearch:t}=e;return O("POST","search/regenerate",()=>t(void 0),[z.EDITOR])}function pa(e){let{searchReport:t}=e;return O("GET","search/reports",r=>{let o=cl(r.query);return t(o)})}function cl(e){return {...er(e),format:q(e.format)[0]}}function da(e){let{urlProxy:t}=e;return O("GET","url/proxy",(r,o,n)=>{let{url:a,method:s="GET",wrapper:i="true"}=r.query;if(!a)throw new T(400,"Missing URL parameter");let c=[];return n&&n.user&&n.user.bespoke_roles&&(c=n.user.bespoke_roles),t({url:Array.isArray(a)?a.join(","):a,method:q(s)[0]==="POST"?"POST":"GET",user_roles:c,wrapper:i!=="false",session:n})})}function ma(e){let{readMetadata:t,revalidateReport:r}=e;return O("GET","revalidate/report",async(o,n)=>{let{reportId:a,profilePrefix:s}=o.query;if(!a||!s)throw new T(400,"Missing URL parameter in revalidate factory: reportId or profilePrefix");try{let i=parseInt(`${a}`,10),c=`${s}`.split("/").filter(f=>f!=="").join("/"),l=[],u=await t({}).then(f=>f.ok?f.data.data.find(R=>R.id===i):[]);u&&u.mode===Ce.UNILATERAL&&u.dimensions.forEach(f=>{f.variants.forEach(R=>{l.push({prefix:c,variantId:R.id,variantSlug:R.slug});});});let p=await r({profilePrefix:c,reportId:i,variantPaths:l}),d=[],m=0;return p.ok&&(m=p.data.paths.length,d=p.data.paths.slice(0,5),Promise.all(p.data.paths.map(f=>{let R;try{R=n.revalidate(f,{unstable_onlyGenerated:!0});}catch(h){console.error("error",f,h);}return R}))),{ok:!0,status:200,data:{reportId:a,revalidated:m,samples:d}}}catch(i){throw console.error(i),new T(500,"Error revalidating")}},[z.EDITOR])}function fa(){return O("GET","revalidate/url",async(e,t)=>{let{target:r}=e.query;if(r)try{return t.revalidate(r,{unstable_onlyGenerated:!0}),{ok:!0,status:200,data:{target:r}}}catch(o){throw console.error(o),new T(500,"Error revalidating")}else throw new T(400,"Missing target parameter in revalidate factory")},[z.ADMIN,z.EDITOR,z.WRITER])}function lt(e=process.env){let t=e.BESPOKE_JWT_SECRET;return t||(console.warn("WARNING: Using default BESPOKE_JWT_SECRET. This is insecure and not recommended for production environments."),"BESPOKE_JWT_SECRET")}var{localeDefault:ul}=G(),ga=lt();function ya(e){let{readPrivateBlocks:t}=e;return O("POST","read/blocks/private",(r,o,n)=>{let{userToken:a}=r.body,s=null;if(a&&ga)try{let l=Gi.verify(a,ga);s=typeof l=="object"&&l!==null&&"roles"in l?l.roles:[];}catch(l){console.error("Failed to verify user token:",l);}if(!s&&(!n||!n.user))throw new T(401,"Unauthorized. Must be logged in or provide a valid token.");let i=a&&s?s:n&&n.user?n.user.bespoke_roles:[],c={report_id:parseInt(r.body.report_id,10),locale:r.body.locale||ul,roles:i,section_id:r.body.section_id||[]};return t(c)})}function ha(e){let{readEnvSecrets:t}=e;return O("GET","read/secrets",()=>t({}),[z.EDITOR])}function Ra(e){let{searchRole:t}=e;return O("GET","auth/search/roles",(r,o)=>t(""),[z.EDITOR,z.ADMIN])}function ba(e){let{searchUser:t}=e;return O("GET","auth/search/users",r=>t({query:r.query.query,role_id:r.query.role_id,page:r.query.page||0}),[z.ADMIN])}function Sa(e){let{readUser:t}=e;return O("GET","auth/read/user",r=>t(r.query.user_id),[z.ADMIN])}function Ea(e){let{updateUser:t}=e;return O("POST","auth/update/user",async r=>{let o=r.body;return await t(o)},[z.ADMIN])}function Aa(e){let{updateUser:t,readUser:r}=e;return O("POST","auth/update/me",async(o,n,a)=>{let{report_id:s,user_metadata:i}=o.body,c={user_id:a.user.id,user_metadata:{}};try{let{user:l}=a;return a&&l&&s&&(l.bespoke_app_metadata&&l.bespoke_app_metadata.reports&&Array.isArray(l.bespoke_app_metadata.reports)?c.app_metadata={...l.bespoke_app_metadata}:c.app_metadata={reports:[]},c.app_metadata.reports.push({reportId:s})),i&&(c.user_metadata={...l.bespoke_app_metadata,...i}),await t(c),{ok:!0,status:200,wrapper:!0,data:{ok:!0,message:"User & session updated"}}}catch(l){return {ok:false,status:500,error:l.message}}},[])}async function pl(e){try{return "JVBERi0xLjcKJYGBgYEKCjYgMCBvYmoKPDwKL0ZpbHRlciAvRmxhdGVEZWNvZGUKL0xlbmd0aCAxMTYKPj4Kc3RyZWFtCnicHYqxCsJAEAX79xVbC+Lmbm/3DoKFeEcKG2F/QCSKYgol+P0mMkwxMG8cHEwrnzt2w/j6jvPjetkalyyZLReKTH5DEPITuv/aUWKKiz6hTywiGliTZWNtFkyWitr0qEWrWmBbq2ndkz/hG1THGT/eextGCmVuZHN0cmVhbQplbmRvYmoKCjcgMCBvYmoKPDwKL0ZpbHRlciAvRmxhdGVEZWNvZGUKL1R5cGUgL09ialN0bQovTiA1Ci9GaXJzdCAyNgovTGVuZ3RoIDM2Mgo+PgpzdHJlYW0KeJzVUt9LwzAQfs9fcY/6IEnTH2llDLa1VZChbIKi+JC1YVRGIm0m87/3ru0cexCfpXwkd/cl+a73BSBAQhRBCCqFCOJQQgwqCGAyYfzx68MAf9Bb0zF+19QdvCJHwAreGF+4vfUQsOmUnbgL7fXObdlwCAIiHxkPrav3lWlhUhZlKYQSQiQRIhFC5rguEBlCYow1meIeoaIRmFOhEOEMa+WARA1nqN5z4/F8gStyE+LkAzdKh/jnXXqrGO6Qf+nJpowvXZ1rb+Aiv5ZCRiKTsQyjTKYvl/g7WqO9+7/N9fobZ3/t8GzONF4acmvIA/2U+cp0bt9WOHbilQ4rtLk1u0/jm0pfKZGlqFOlGXpsNAZ/vt+8m6qnUlgc/M3ak4YhQbmlqRs9dwd0n8APOwDshDw4s9Z5cmXvR+tRDUXJ6NEzySSI8fV+4/uQkgHjc92ZXupJJ4qwlasbuwX+1NiZ7Zpjgm78BkHDxfcKZW5kc3RyZWFtCmVuZG9iagoKOCAwIG9iago8PAovU2l6ZSA5Ci9Sb290IDIgMCBSCi9JbmZvIDMgMCBSCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlCi9UeXBlIC9YUmVmCi9MZW5ndGggNDEKL1cgWyAxIDIgMiBdCi9JbmRleCBbIDAgOSBdCj4+CnN0cmVhbQp4nBXEwQ0AIAwDsUuKxJf9JUZippb4YaDbbEhKTpWWOCDezxcGYeEDtQplbmRzdHJlYW0KZW5kb2JqCgpzdGFydHhyZWYKNjY5CiUlRU9G"}catch(t){throw console.error("Error generating PDF:",t),t}}function Ta(){return O("POST","pdf",async(e,t)=>{let{slugs:r,path:o}=e.body;if(!r||!o)throw new T(400,"Missing path parameter in request.");{new URL(o,e.headers.origin);return {ok:true,status:200,data:await pl()}}})}function _a(e,t){let r=`list${Se(t)}Icons`,o=e[r];return O("GET",`list/icons/${t}`,async()=>o({}),[z.EDITOR])}function wa(e,t){let r=`read${Se(t)}Icon`,o=e[r];return O("GET",`read/icons/${t}/icon.svg`,async n=>o({provider:t,name:n.query.name}))}function ka(){return O("GET","report",async(e,t)=>{let{report:r,prefix:o,locale:n}=e.query;if(!r)throw new T(400,"Missing report parameter.");if(!o)throw new T(400,"Missing report parameter.");if(!n)throw new T(400,"Missing report parameter.");try{let s=await(await fetch(`${process.env.NEXT_PUBLIC_REPORTS_BASE_URL}/${n}${o}${r}`)).text(),l=new dl().parseFromString(s,"text/html").getElementById("__NEXT_DATA__")?.textContent,u=JSON.parse(l).props;return {ok:!0,status:200,data:{variables:u.pageProps.initialState.variables,status:u.pageProps.initialState.status}}}catch(a){throw console.error(a),new T(500,"Couldn't find page cache")}})}var fl=lt();function gl(e){let t={email:e.user.email,name:e.user.name,roles:e.user.bespoke_roles||[]};return Gi.sign(t,fl,{expiresIn:"1min"})}function xa(){return O("POST","users/generate-token",async(e,t,r)=>{if(!r||!r.user)throw new T(401,"Unauthorized. Must be logged in to generate a token.");try{return {ok:!0,status:200,wrapper:!1,data:{token:gl(r)}}}catch(o){throw console.error("Error generating token:",o),new T(500,"Internal Server Error")}})}var hl=lt(),Rl=e=>!!Gi.verify(e,hl);function Pa(){return O("POST","users/validate-token",async(e,t)=>{let{token:r}=e.body;try{return Rl(r)?{ok:!0,status:200,wrapper:!1,data:{success:!0}}:{ok:!1,status:401,error:"Invalid token"}}catch{return {ok:false,status:401,error:"Invalid token"}}})}var El=Ie();function bo(e,t){return `${e.toUpperCase()} ${t.toLowerCase()}`}function Al(e,t,r){let o=Ot(e,t,r);return Object.fromEntries([...De(o,"block"),...De(o,"dimension"),...De(o,"formatter"),...De(o,"report"),...De(o,"section"),...ca(o),...ia(o),...Fn(o),pa(o),la(o),ua(o),ct(o,"flickr"),ct(o,"local"),ct(o,"unsplash"),ct(o,"upload"),ct(o,"adobe"),ct(o,"pixabay"),Nt(o,"flickr"),Nt(o,"local"),Nt(o,"unsplash"),Nt(o,"adobe"),Nt(o,"pixabay"),da(o),Ra(o),ba(o),Sa(o),Ea(o),Aa(o),ma(o),fa(),ya(o),Ta(),_a(o,"tabler"),wa(o,"tabler"),ka(),ha(o),xa(),Pa()].map(({handler:n,method:a,path:s,roleRequired:i})=>[bo(a,s),{handler:n,roleRequired:i}]))}function Tl(e){return (t,r,o)=>new Promise((n,a)=>{e(o)(t,r,s=>s instanceof Error?a(s):n(s));})}var _l=Tl(bl);function wl(e,t){let r=rt().then(o=>Al(o,e,t));return async function(n,a){await _l(n,a,{methods:["GET","HEAD","PUT","PATCH","POST","DELETE"],origin:"*"});let{query:s,method:i}=n,{path:c,...l}=s;if(c&&i){let u=await r.then(p=>{let d=[].concat(c).join("/"),m=bo(i,d);return p[m]});if(u){let p=await me(n,a,e);if(u.roleRequired){if(!p)return a.status(401).json({error:"Unauthorized. Must be logged in."});let d=p&&p.user&&p.user.bespoke_roles&&Array.isArray(p.user.bespoke_roles)?p.user.bespoke_roles:[];if(Array.isArray(u.roleRequired)&&u.roleRequired.length>0&&!dr(d,u.roleRequired))return a.status(402).json({error:"Forbidden. Not enough roles."})}if(u.handler)return ["POST","DELETE"].includes(i)&&(n.body=await Ro(n)),Promise.resolve(n).then(d=>u.handler(d,a,p||void 0)).then(async d=>{if(d&&"error"in d)throw new T(d.status,d.error);if(d.ok)if(d.data instanceof Buffer){let m=await Sl(d.data),f=Buffer.byteLength(d.data);a.writeHead(d.status,{"Content-Type":m?m.mime:"image/jpeg","Content-Length":f.toString()}).send(d.data);}else n.url&&n.url.indexOf("/icon.svg?name=")>0?(a.setHeader("Content-Type","image/svg+xml"),a.status(d.status).send(d.data)):a.status(d.status).json(d.wrapper?{data:d.data}:d.data);}).catch(d=>{El&&console.error("Backend Error",d),a.status(d.code).json({error:d.message});})}}else c||await r.then(console.info);return a.status(404).json({error:"No matching route",path:c,query:l})}}var kl=e=>{let t=e;return async function(r,o){let n=await t({test:"pala"});return o.json(n)}},xl=kl;var Rt={};_s(Rt,{addBlockToState:()=>lr,addRunConsumersRunning:()=>ns,cloneEntity:()=>Qa,createEntity:()=>Wa,deleteEntity:()=>Ja,deleteQueryParam:()=>Cu,readEntity:()=>ne,readEnvSecrets:()=>zu,readMember:()=>ze,readMetadata:()=>cr,readPrivateBlocks:()=>Fu,readUser:()=>Nu,recalculateVariables:()=>is,removeBlocksFromState:()=>qe,removeDataSourceLogic:()=>ur,removeRunConsumersRunning:()=>as,reportSearch:()=>Pu,resetSectionState:()=>os,revalidateReport:()=>$u,revalidateUrl:()=>Vu,searchMember:()=>Iu,searchRegenerate:()=>vu,searchRole:()=>Mu,searchUser:()=>Ou,setCurrentLocale:()=>wu,setPreferredLocale:()=>ku,setPreviews:()=>_u,setQueryParam:()=>Lu,setSectionState:()=>rs,setStatus:()=>ts,updateEntity:()=>Ya,updateMyData:()=>Uu,updateUser:()=>Du,urlProxy:()=>Bu,variantValidateSlug:()=>xu});function Re(e,t){return e.request(t).then(r=>{let{status:o,data:n}=r;return "error"in n?{ok:false,status:o,error:n.error}:{ok:true,status:o,wrapper:n.wrapper,data:n.data}},r=>{if("isAxiosError"in r){let{status:o,data:n}=r.response||{status:500};return {ok:false,status:o,error:n?.error??r.message}}return {ok:false,status:500,error:r.message}})}function re(e,t,r){let o=typeof t=="string"?{url:t}:t;return n=>Re(e,{...o,method:"GET",params:r?r(n):n})}function oe(e,t,r){let o=typeof t=="string"?{url:t}:t;return n=>Re(e,{...o,method:"POST",data:n})}function Ue(e,t,r){let o=typeof t=="string"?{url:t}:t;return n=>Re(e,{...o,method:"DELETE",params:r?r(n):n})}function ut(e,t){return r=>Re(e,{method:"POST",url:`images/save/${t}`,params:{prompt:r.prompt,provider:t}})}function Dt(e,t){return r=>Re(e,{method:"GET",url:`images/search/${t}`,params:{prompt:r.prompt,page:r.page,provider:t}})}function va(e,t){return ()=>Re(e,{method:"GET",url:`list/icons/${t}`,params:{provider:t}})}function Ia(e,t){return r=>Re(e,{method:"GET",url:`read/icons/${t}/icon.svg`,params:{name:r.name}})}var pt=e=>({id:e}),vl=e=>{if(e.mode==="slugs"){let t=e.slugs.map(r=>[r.variantSlug,r.memberSlug].join("/")).join(",");return {...e,slugs:t}}return ["related","whole"].includes(e.mode)?{...e}:{...e,[e.mode]:e[e.mode].join(",")}};function or(e){let t=Or.create({baseURL:e});return {createBulkBlock:oe(t,"create/bulk/block"),createBlock:oe(t,"create/block"),createDimension:oe(t,"create/dimension"),createFormatter:oe(t,"create/formatter"),createReport:oe(t,"create/report"),createSection:oe(t,"create/section"),createVariant:oe(t,"create/variant"),createDatasource:oe(t,"create/datasource"),deleteBlock:Ue(t,"delete/block",pt),deleteDimension:Ue(t,"delete/dimension",pt),deleteFormatter:Ue(t,"delete/formatter",pt),deleteReport:Ue(t,"delete/report",pt),deleteSection:Ue(t,"delete/section",pt),deleteVariant:Ue(t,"delete/variant",pt),deleteDatasource:Ue(t,"delete/datasource",pt),readBlock:re(t,"read/block"),readDimension:re(t,"read/dimension"),readFormatter:re(t,"read/formatter"),readReport:re(t,"read/report"),readSection:re(t,"read/section"),readVariant:re(t,"read/variant"),readDatasource:re(t,"read/datasource"),updateBulkBlock:oe(t,"update/bulk/block"),updateBlock:oe(t,"update/block"),updateDimension:oe(t,"update/dimension"),updateFormatter:oe(t,"update/formatter"),updateReport:oe(t,"update/report"),updateSection:oe(t,"update/section"),updateVariant:oe(t,"update/variant"),updateDatasource:oe(t,"update/datasource"),searchReport:re(t,"search/reports"),validateVariantSlug:re(t,"validate/variant"),readMember:re(t,"read/members",vl),readMemberImage:re(t,{url:"member/image",responseType:"blob"}),searchMember:re(t,"search/members"),updateMember:re(t,"update/members"),imageLocalSearch:Dt(t,"local"),imageLocalSave:ut(t,"local"),imageFlickrSearch:Dt(t,"flickr"),imageFlickrSave:ut(t,"flickr"),imageUnsplashSearch:Dt(t,"unsplash"),imageUnsplashSave:ut(t,"unsplash"),imageUploadSave:ut(t,"upload"),imageAdobeSearch:Dt(t,"adobe"),imageAdobeSave:ut(t,"adobe"),imagePixabaySearch:Dt(t,"pixabay"),imagePixabaySave:ut(t,"pixabay"),readMetadata:re(t,"read/metadata"),regenerateSearch:oe(t,"search/regenerate"),urlProxy:re(t,"url/proxy"),searchRole:re(t,"auth/search/roles"),searchUser:re(t,"auth/search/users"),readUser:re(t,"auth/read/user"),updateUser:oe(t,"auth/update/user"),updateMyData:oe(t,"auth/update/me"),revalidateReport:re(t,"revalidate/report"),revalidateUrl:re(t,"revalidate/url"),readPrivateBlocks:oe(t,"read/blocks/private"),listTablerIcons:va(t,"tabler"),readTablerIcon:Ia(t,"tabler"),readEnvSecrets:re(t,"read/secrets")}}var Ll=Xt(process.env.REPORTS_LOGGING),dt=Bl;function Bl(e,t,r,o,n=void 0,a){let s={},i=[],{locale:c}=fe(a);try{if(t){let l=new Proxy(console,{get(p,d){return Ml(d,"log","debug","info","warn","error")?(...m)=>{i.push(`${d} ${Date.now()} - ${m.map(f=>format(f)).join(" ")}`),Ll&&p[d](...m);}:p[d]}}),u;return n?u=new Function(e,"console","libs","formatters","locale","variables",r)(t,l,Je,o,c,n):u=new Function(e,"console","libs","formatters","locale",r)(t,l,Je,o,c),typeof u=="object"&&Object.keys(u).length>0&&Object.assign(s,u),{vars:s,error:null,log:i,output:u}}return {vars:s,error:"Invalid API Link",log:i}}catch(l){return {vars:s,error:l.message,log:i}}}function Ml(e,...t){return t.includes(e)}var So=(e,t,r)=>{let{variables:o}=r,n=s=>s.allowed==="never"?false:!s.allowed||s.allowed==="always"||o[s.allowed],a={...e};return Object.keys(a).forEach(s=>{typeof a[s]=="string"?a[s]=ye(a[s],t,r):Array.isArray(a[s])?a[s]=a[s].filter(n).map(i=>typeof i=="object"?So(i,t,r):typeof i=="string"?ye(i,t,r):i):typeof a[s]=="object"&&a[s]!==null&&!(a[s]instanceof Date)&&(a[s]=So(a[s],t,r));}),a},Lr=So;var Ca=e=>Array.isArray(e)?e.map(t=>typeof t=="string"?{allowed:"always",label:t,id:t}:{allowed:"always",label:t.id,...t}):[];var Ol=(e,t,r)=>{if(!r)return false;if(e===Ze.SINGLE)return r.find(n=>n.id===t);let o=Array.isArray(t)?t:t.split(",");return Array.isArray(o)&&o.every(n=>r.map(a=>a.id).includes(n))},Eo=Ol;function Ao(e,t,r,o,n=false){let{variables:a}=fe(o),s=Lr({logic:t},r,o).logic,i=dt("variables",a,s,r,void 0,o),{vars:c,log:l,error:u}=i,p=c.type||Ze.SINGLE,d=c.component||"Selector",m=c.hideLabel||"false",f=c.resetSectionVars||"false",R=c.name||"Unlabeled Selector",h=Ca(c.options||[]),S=A=>p===Ze.MULTI&&!Array.isArray(A)?[A]:A,x=c.defaultValue,P;if(x&&(x=S(x),Eo(p,x,h)&&(P=x)),!P){let A=h&&h[0]&&h[0].id||h[0]||"";P=S(A);}if(n&&typeof window<"u"){let A=`selector${e}id`,F=new URLSearchParams(window.location.search),N=Object.fromEntries(F)[A];N&&!Eo(p,N,h)&&N!==void 0&&(F.delete(A),window.history.replaceState(null,null,`?${F.toString()}`));}return {config:{name:R,type:p,options:h,defaultValue:P,component:d,hideLabel:m,resetSectionVars:f},log:l,error:u}}function To(e,t,r){if(!e)return false;let o=Array.isArray(r)?r:r.split(",");return Array.isArray(o)&&o.every(n=>e.map(a=>`${a[`${t} ID`]}`).includes(n))}function _o(e,t,r,o,n=false){let{variables:a}=fe(o),s=Lr({logic:t},r,o).logic,i=dt("variables",a,s,r,void 0,o),{vars:c,log:l,error:u}=i;if(n&&typeof window<"u"){let d=`multihierarchySelector${e}-value`,m=`multihierarchySelector${e}-type`,f=new URLSearchParams(window.location.search),R=Object.fromEntries(f),h=R[d],S=R[m];h&&h!==void 0&&S&&S!==void 0&&!To(c.data,S,h)&&(f.delete(d),f.delete(m),window.history.replaceState(null,null,`?${f.toString()}`));}return {config:c,log:l,error:u}}var Nl=(e,t,r)=>{let o=`selector${e}id`,n=new URLSearchParams(typeof location<"u"&&location?.search?location.search:"").get(o),a=new URLSearchParams(t).get(o),s=n||a;if(r.type===Ze.MULTI){let l=s?s.split(","):r.defaultValue,u=r.options.filter(p=>l.includes(p.id));return {[`selector${e}id`]:l,[`selector${e}label`]:(u||[]).map(p=>p.label)}}let i=s&&r.options.find(l=>l.id===s)?s:r.defaultValue,c=r.options.find(l=>l.id===i);return {[`selector${e}id`]:i,[`selector${e}label`]:c&&c.label||void 0}},La=Nl;var Dl=(e,t,r)=>{let o=`multihierarchySelector${e}-value`,n=`multihierarchySelector${e}-type`,a=new URLSearchParams(typeof location<"u"&&location?.search?location.search:"").get(o),s=new URLSearchParams(typeof location<"u"&&location?.search?location.search:"").get(n),i=new URLSearchParams(t).get(o),c=new URLSearchParams(t).get(n),l=a||i,u=s||c,p=l?l.split(","):r.defaultValue||[],d=u||r.defaultValueType||"",m=r.data?.filter(f=>p.includes(`${f[`${d} ID`]}`))||[];return {[`multihierarchySelector${e}id`]:p,[`multihierarchySelector${e}label`]:[...new Set((m||[]).map(f=>f[d]))],[`multihierarchySelector${e}type`]:d}},Ba=Dl;var{localeDefault:Ma,locales:Ul}=G(),Fl=Object.values(ro),Vl=(e,t=Ma)=>e&&Fl.includes(e.type)?{locale:oo,locales:[oo]}:{locale:t,locales:Ul},Oa=(e,t=Ma)=>{if(!e)return {};let{locale:r}=Vl(e,t);return e.contentByLocale?.[r]?.content};function $l(e,t){let r=Object.values(t),o=r.filter(n=>n.shared&&n.section_id!==e).map(n=>n.id);return Object.fromEntries(r.filter(n=>n.section_id===e&&(n.inputs.length===0||n.inputs.some(a=>o.includes(a)))).map(n=>[n.id,n]))}var Na=$l;function wo(e){return e.type===B.SECTION_FLAG&&e.inputs.length===0&&e.consumers.length===0}var Fe=Xt(process.env.NEXT_PUBLIC_REPORTS_DEBUG),jl=process.env.REPORTS_ORIGIN||"",Wl=process.env.NEXT_PUBLIC_REPORTS_AXIOS_RETRIES,Va=5;try{Va=parseInt(`${Wl||5}`,10);}catch(e){console.error("Error setting axios retries NEXT_PUBLIC_REPORTS_AXIOS_RETRIES defaults to 5",e);}Da(Or,{retries:Va,retryDelay:Da.exponentialDelay,onRetry:(e,t,r)=>{console.error("Generator request failed. Retrying... Count: ",e),console.error("URL: ",r.url),console.error(t.message);}});Or.interceptors.request.use(e=>({...e,requestStart:Date.now()}));Or.interceptors.response.use(e=>({...e,requestDuration:new Date().getTime()-e.config.requestStart}),e=>Promise.reject(e));var Yl=(e,t,r)=>{let o=ye(e,t,r);return o.startsWith("http")||(o=`${jl}${o.startsWith("/")?"":"/"}${o}`),o},{urlProxy:Jl}=or("/api/cms");function Mr(e){return e.ok!==void 0}function Br(e){this.message=e,this.name="ApiFetchException";}var Ua=process.env.NEXT_PUBLIC_REPORTS_API_FETCH_TIMEOUT||0;async function Ql(e,t,r="en",o,n){let a=Date.now(),s=e,i,c=ue(),l=vt(),u={envs:{...c,...l}},p=new URL(e),d=new URLSearchParams(p.searchParams.toString());d.has("bespoke_slugs")&&(p.searchParams.delete("bespoke_slugs"),s=p.toString());let m={datasource:void 0};o.find(x=>{if(!x.content?.pattern)return false;try{let P=new RegExp(x.content.pattern,"gm");return P.test(s)?(m.datasource=x,!0):P.test(s)}catch{return false}});let f=n?n.settings:{},R=!!(f&&f.useProxy&&f.useProxy==="true"),h=m.datasource&&typeof m.datasource.content.useProxy=="boolean"?m.datasource.content.useProxy:false,S=`${process.env.NEXT_PUBLIC_REPORTS_BASE_URL}/api/cms/url/proxy?url=${encodeURIComponent(s)}`;if(typeof window=="object"&&(R||h)){let x=await Jl({url:s,timeout:Ua});if(x.ok===true)i=x.data;else throw new Br(x?.error)}else try{let P={url:s,timeout:Ua};if(m.datasource){let A=u;if(typeof window<"u")try{let N=await getSession();if(N){let k={user:N.user,status:"authenticated",isLoading:!1,update:async()=>N};A={...u,session:k};}}catch(N){console.warn("Could not retrieve user session:",N);}let C=await wr({vars:["url","libs","session"],logic:m.datasource.content.logic},A)(s);if(C.axiosConfig)P=C.axiosConfig;else throw new Br(`AxiosConfig is missing in Data Source ${m.datasource.name} (ID: ${m.datasource.id}).`)}let U=await Or(P);if(U.status===200)U.headers["content-type"]==="text/csv"?i=csvParse(U.data):i=U.data;else throw new Br("No response for: "+s)}catch(x){throw new Br(x.message)}if(d.has("bespoke_slugs")){let x=d.get("bespoke_slugs");if(x){let P=x.split(",");if(P.length===3){let[U,A,F]=P,C=qt(i,F);if(C&&Array.isArray(C)){let N=Array.from(new Set(C.map(k=>`${k[A]}`).filter(k=>!["","undefined"].includes(k))));if(N.length>0){let k=N.join("").length>2e3,L=await t({mode:k?"whole":"ids",ids:k?void 0:N,all:false,locale:r,variant:[parseInt(U,10)],output:"lite",limit:N.length+1,allowNulls:true}).then(M=>{let D=[];return Mr(M)?M.ok&&(D=M.data.results):D=M.results,D&&Array.isArray(D)?D:[]}).catch(M=>(console.error(`Error hydrating slugs for Variant: ${U}, Key: ${A}, Accessor: ${F}`),console.error(` Url ${e}`),n&&console.error(` From Section ${n.section_id} and Block ${n.id}`),console.error(M),[]));if(L){let M=Object.fromEntries(L.map(D=>[D.id,`/${D.variant_slug}/${D.slug}`]));C.map(D=>(D.bespoke_slug=M[D[A]]?M[D[A]]:null,D));}}}}}}return {data:i,requestDuration:Date.now()-a,finalUrl:h||R?S:s,apiDataSource:m.datasource?m.datasource:false}}function Zl(e){this.name="BlockException",this.message=e;}async function Fa(e,t,r,o,n){let{locale:a,variables:s,query:i}=fe(r),c=eu(e,r,s,t),l=null,u=e.contentByLocale?.logic?.content?.api,p=null,d=null,m=null,f=null,R=null;if(!c)return {outputVariables:{},renderVariables:{},status:{allowed:false,hiddenByCascade:e.id}};if(e.type===B.FALLBACK)return {outputVariables:{},renderVariables:{},status:{allowed:c,hiddenByCascade:e.id}};if(u){m=Yl(u,t,r);let C=m.split("|||").filter(L=>L!==""),N=[];for(let L=0;L<C.length;L++){let M=C[L];new RegExp("^(?:[a-z+]+:)?//","i").test(m)||(M=`${process.env.NEXT_PUBLIC_REPORTS_BASE_URL}/${M}`.replace(/([^:]\/)\/+/g,"$1")),N.push(Ql(M,o,a,n,e).catch(Y=>{throw new Zl(` Excecution of ${e.type}-${e.id} in section ${e.section_id} in report ${s.report_name} (${s.report_id}) failed.
38
46
  Error fetching ${M}.
39
47
  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};
48
+ `)}));}let k=await Promise.all(N).catch(L=>L.message);if(typeof k=="string"&&k)return {outputVariables:{},renderVariables:{},status:{error:k}};l=k.length===1?k[0].data:k.map(L=>L.data),d=k.reduce((L,M)=>L+JSON.stringify(M.data).length/1024,0),p=Math.max(...k.map(L=>L.requestDuration)),f=k.map(L=>L.apiDataSource?`${L.apiDataSource.name} (${L.apiDataSource.id})`:null),R=k.map(L=>L.finalUrl);}if(e.type===B.SELECTOR){let{config:C,log:N,error:k}=Ao(e.id,e.contentByLocale[a].content.logic,t,r,true);return {outputVariables:La(e.id,i,C),renderVariables:C,status:{log:N,error:k,allowed:c}}}if(e.type===B.MULTIHIERARCHY_SELECTOR){let{config:C,log:N,error:k}=_o(e.id,e.contentByLocale[a].content.logic,t,r,true);return {outputVariables:Ba(e.id,i,C),renderVariables:C,status:{log:N,error:k,allowed:c}}}if(e.type===B.VIZ)return {outputVariables:{},renderVariables:e.contentByLocale.logic.content,status:{log:[],allowed:c}};if(e.type===B.RELATED){let C=e.contentByLocale?.logic?.content?.simple?.compare||"variant",N=e.contentByLocale?.logic?.content?.simple?.limit||4,k=Object.keys(s).filter(b=>b.startsWith("report_id")).map(b=>s[b]),L=Object.keys(s).filter(b=>b.startsWith("dimension_id")).map(b=>s[b]),M=Object.keys(s).filter(b=>b.startsWith("variant_id")).map(b=>s[b]),D=Object.keys(s).filter(b=>b.startsWith("id")).map(b=>s[b]);if(!D.length)return {outputVariables:{related_reports:[]},renderVariables:{},status:{log:[],allowed:false}};let Y=await Promise.all(D.map((b,E)=>o({mode:"ids",locale:a,ids:[b],output:"lite",variant:[M[E]]}))).then(b=>b.flatMap(E=>{let w=[];return Mr(E)?E.ok&&(w=E.data.results):w=E.results,w&&Array.isArray(w)?w:[]})).catch(b=>(console.error("Error getting related members",b),[]));if(L.length>1){let b=Object.keys(s).filter(K=>K.startsWith("variant_slug")).map(K=>s[K]),E=Y.map((K,ae)=>{let J={mode:"related",locale:a,related:N??4,current_ids:[K.content_id],output:"full",variant_ids:[K.variant_id]};return ae===0&&(J.include_ids=[K.content_id]),J}),w=await Promise.all(E.map(K=>o(K))).then(K=>K.flatMap(ae=>{let J=[];return Mr(ae)?ae.ok&&(J=ae.data.results):J=ae.results,J&&Array.isArray(J)?J:[]})).catch(K=>(console.error("Error getting related members",K),[])),Z=w.reduce((K,ae)=>{let J=ae.variant_slug;return K[J]||(K[J]=[]),K[J].push(ae),K},{}),Q=[],H=Object.keys(Z),X=[{combination:[],index:0}];for(;X.length>0;){let K=X.pop();if(!K)continue;let{combination:ae,index:J}=K;if(J===H.length){Q.push(ae);continue}let _e=H[J],se=Z[_e];for(let ie of se)X.push({combination:[...ae,ie],index:J+1});}return {outputVariables:{related_reports:Q.map(K=>{let ae=K.sort((J,_e)=>b.indexOf(J.variant_slug)-b.indexOf(_e.variant_slug));return {entities:ae,link:"/"+ae.map(J=>`${J.variant_slug}/${J.slug}`).join("/")}})},renderVariables:{},status:{log:[],allowed:w.length>0}}}let V=Y.map(b=>b.content_id),v={mode:"related",locale:a,related:N??4,current_ids:V,output:"full"};C&&(C==="report"?v.report_ids=k:C==="dimension"?v.dimension_ids=L:v.variant_ids=M);let j=await o(v).then(b=>{let E=[];return Mr(b)?b.ok&&(E=b.data.results):E=b.results,E&&Array.isArray(E)?E:[]}).catch(b=>(console.error("Error getting related members",b),[]));return {outputVariables:{related_reports:j.map(b=>({entities:[b],link:`/${b.variant_slug}/${b.slug}`}))},renderVariables:{},status:{log:[],allowed:j.length>0}}}let{logic:h}=Oa(e,a),S=ye(h,t,r),x=dt("resp",l||{},S,t,s,r),{vars:P,error:U,log:A}=x;if(typeof P!="object")return {outputVariables:{},renderVariables:{},status:{error:"Configuration did not return an object",log:A,duration:p,responseSize:d,resp:l,api:m,allowed:c,apiFinalUrls:R,apiDataSources:f}};let F=Object.keys(P).reduce((C,N)=>({...C,[`${e.type}${e.id}${N}`]:P[N]}),{});return {renderVariables:P,outputVariables:[B.GENERATOR,B.SECTION_FLAG].includes(e.type)?P:F,status:{log:A,error:U,duration:p,responseSize:d,resp:l,api:m,allowed:c,apiFinalUrls:R,apiDataSources:f}}}function Xl(e,t,r,o,n,a,s){return e.consumers.forEach(i=>{if(t[i]){let c=`${r}-${i}`;!o.includes(c)&&(t[i].section_id===t[r].section_id||!n)&&o.push(c),e.consumers.filter(l=>t[l]&&t[l].section_id===t[r].section_id||!n).forEach(l=>ko(l,t,o,false,a,n,s));}})}var ko=(e,t,r=[],o=true,n=true,a=true,s=[])=>{if(s.includes(e))return [];s.push(e);let i=t[e];return i&&i.inputs.length&&o&&i.inputs.forEach(c=>{let l=`${c}-${e}`;r.includes(l)||r.push(l),i.inputs.forEach(u=>ko(u,t,r,o,false,a,s));}),i&&i.consumers.length&&n&&Xl(i,t,e,r,a,n,s),r},eu=(e,t,r,o)=>{let n=true;if(e&&"allowed"in e.settings&&e.settings.allowed!=="always")if(e.settings.allowed==="never")n=false;else {let a=fe(t),{error:s,output:i}=dt("variables",r,e.settings.allowedLogic||"return false;",o,void 0,a);s||(n=!!i);}return n},Ut=async(e,t,r,o,n,a={},s,i="section",c)=>{let l=i==="section",u=fe(n),p=u.variables,d={...a.variables??{}},m={...a.status??{}},f=new Set,R=[],h={};r?h={...h,[r]:e[r]}:t?h=(t??[]).reduce((V,{id:v})=>({...V,...Na(v,e)}),{}):h=Object.values(e).filter(V=>wo(V)).reduce((V,v)=>({...V,[v.id]:v}),{});let S=Object.values(h).filter(V=>wo(V));if(S.length>0){Fe&&console.info("%crunConsumers: calculating section flags","color:purple",S.map(_=>_.id).join(", "));let V=Object.fromEntries(await Promise.all(S.map(async _=>[_.id,await Fa(_,o,{...u,variables:p,locale:p.locale},s,c).then(b=>{let{outputVariables:E,status:w}=b;if(w.error){if(typeof window>"u")throw new Error(`Run consumers (Block: ${_.id}, Section ${_.section_id}) failed with message: ${w.error}. `);m[_.id]={allowed:false,error:w.error},d[_.id]={};}return (_.consumers.length>0||[B.GENERATOR,B.SECTION_FLAG,B.RELATED].includes(_.type))&&w.allowed&&Object.keys(E).length>0?d[_.id]=E:d[_.id]={},i==="report"?(m[_.id]={allowed:w.allowed},[B.GENERATOR,B.SECTION_FLAG].includes(_.type)&&w.api&&(m[_.id].api=w.api)):m[_.id]=w,b})]))),j=Object.entries(V).filter(([,_])=>!_.outputVariables[On]).map(([_])=>Number(_));f=new Set(j.map(_=>e[_].section_id)),Object.values(h).filter(_=>f.has(_.section_id)).forEach(_=>{R.push(_.id),delete h[_.id];}),Fe&&console.info("%crunConsumers: removing sections","color:purple",f.keys());}let x=f.size>0?Object.fromEntries(Object.entries(e).filter(([,V])=>f?.has(V.section_id)?(R.includes(V.id)||R.push(V.id),false):true)):e;if(R.length>0&&(x=Object.fromEntries(Object.entries(x).map(([V,v])=>{let j={...v,inputs:v.inputs.filter(_=>!R.includes(_)),consumers:v.consumers.filter(_=>!R.includes(_))};return [V,j]}))),!r&&!t)return {variables:{...a.variables??{},...d},status:{...a.status??{},...m}};i==="report"&&R.length>0&&R.forEach(V=>{delete d[V],delete m[V],delete e[V];}),Fe&&console.info("%crunConsumers: running root blocks","color:purple",Object.keys(h));let P=Object.keys(h).reduce((V,v)=>{let j=new Date,_=ko(Number(v),x,[],!r,true,l).map(w=>w.split("-")),E=(new Date().getTime()-j.getTime())/1e3;return Fe&&console.info(`%cResolved dependencies for ${v} (${E.toFixed(2)}s)`,"color:blue"),[...V,..._]},[]),U=new Date,A=Object.keys(h).reduce((V,v)=>V.includes(v)?[...V]:[v,...V],ql(P)),C=(new Date().getTime()-U.getTime())/1e3;Fe&&console.info(`%cResolved DAG (${C.toFixed(2)}s): `,"color:green",A);let N=process.env.NEXT_PUBLIC_REPORTS_MAX_CONCURRENT_QUERIES_PER_REPORT,k=parseInt(`${N||0}`,10);async function L(V,v){let j=new Map,_=[],b=async()=>_.length;for(let E of V){if(k!==0){let H=await b();for(;H>=k;)Fe&&console.info("Too many pending promises, waiting...",H,_),await new Promise(X=>setTimeout(X,500)),H=await b();}let w=v[E],Q=Promise.all(w.inputs.filter(H=>V.includes(String(H))).map(H=>j.get(Number(H)))).then(async()=>{let H=w.inputs.reduce((se,ie)=>({...se,...d[ie]}),p),X=w.inputs.find(se=>(w.settings?.ignoreCascade?w.settings?.ignoreCascade:[]).includes(se)||!m[se]?false:!m[se].allowed||m[se].hiddenByCascade);if(X){m[E]={allowed:false,hiddenByCascade:m[X].hiddenByCascade||X},d[E]={},_.splice(_.indexOf(Number(E)),1);return}let ve=new Date,K;typeof window<"u"&&[B.SELECTOR,B.MULTIHIERARCHY_SELECTOR].includes(w.type)&&w.settings[Le.DISABLED]?K=new Promise(se=>{se({outputVariables:d[E],status:m[E]});}):K=Fa(w,o,{...u,variables:H,locale:H.locale},s,c);let ae=await K.then(({outputVariables:se,status:ie})=>{if(ie.error){if(typeof window>"u")throw new Error(`Run consumers (Block: ${E}, Section ${w.section_id}) failed with message: ${ie.error}.`);m[E]={allowed:false,error:ie.error},d[E]={};}(w.consumers.length>0||[B.GENERATOR,B.SECTION_FLAG,B.RELATED].includes(w.type))&&ie.allowed&&Object.keys(se).length>0?d[E]=se:d[E]={},i==="report"?(m[E]={allowed:ie.allowed},[B.GENERATOR,B.SECTION_FLAG].includes(w.type)&&ie.api&&(m[E].api=ie.api)):m[E]=ie;}),_e=(new Date().getTime()-ve.getTime())/1e3;return Fe&&console.info(`%cBlock ${w.id} resolved in ${_e.toFixed(3)}s`,_e>500?"color:red":"color:green"),m[E].duration=m[E].duration?m[E].duration:_e,_.splice(_.indexOf(Number(E)),1),ae}).catch(H=>{throw _.splice(_.indexOf(Number(E)),1),H});_.push(Number(E)),j.set(Number(E),Q);}await Promise.all(Array.from(j.values()));}let M=new Date;await L(A,x);let Y=(new Date().getTime()-M.getTime())/1e3;return Fe&&console.info(`%cResolved Variables (${Y.toFixed(2)}s), ${A.length} blocks`,"color:green"),{variables:{...a.variables??{},...d},status:{...a.status??{},...m}}};function tu(e=[]){return e.reduce((t,r,o)=>{if(r){let n=o+1;t[`id${n}`]=r.id,t[`name${n}`]=r.name,t[`slug${n}`]=r.slug,"attributes"in r&&Object.keys(r.attributes).forEach(a=>{t[`attr_${a}${n}`]=r.attributes[a];}),t[`variant_id${n}`]=r.variant_id,t[`variant_name${n}`]=r.variant_name,t[`variant_slug${n}`]=r.variant_slug,t[`dimension_id${n}`]=r.dimension_id,t[`dimension_name${n}`]=r.dimension_name,t.report_id=r.report_id,t.report_name=r.report_name;}return t},{})}var Ft=tu;function ru(e,t){return +(e<t)-+(e>t)}function Nr(e,t,r="ordering"){return ru(t[r],e[r])}var{localeDefault:nu}=G();var nr=new schema.Entity("block",{},{mergeStrategy(e,t){return t.block_input?e||{}:{...e,...t}}});nr.define({consumers:[nr],inputs:[nr]});var $a=new schema.Entity("variant"),za=new schema.Entity("dimension",{variants:[$a]},{processStrategy(e){return {...e,variants:"variants"in e?e.variants:[]}}}),qa=new schema.Entity("section",{blocks:[nr]}),au=new schema.Entity("report",{dimensions:[za],sections:[qa]},{processStrategy(e){return {...e,sections:"sections"in e?e.sections.sort(Nr):[]}}}),su=new schema.Entity("formatter"),iu=new schema.Entity("datasource"),cu={report:au,section:qa,block:nr,dimension:za,variant:$a,formatter:su,datasource:iu};function Dr(e,t){let r=cu[e];if(!r)throw new Error(`Invalid entity type: ${e}`);let{entities:o}=normalize(t,[r]);return {report:mt(o,"report"),dimension:mt(o,"dimension"),section:mt(o,"section"),block:mt(o,"block"),variant:mt(o,"variant"),formatter:mt(o,"formatter"),datasource:mt(o,"datasource")}}function mt(e,t){return Object.prototype.hasOwnProperty.call(e,t)?e[t]:{}}var Ga=(e,t=void 0)=>{let{sid:r,bid:o,previews:n=[],query:a={}}=t||{},s,i,c={};return r?(s=r,c.activeSection=s):s=e.activeSection,n.length>0?(i=n,c.previews=i.filter(Boolean)):i=e.previews,{parsedParams:{sid:s,bid:o,previews:i,query:a},statusPayload:c}},ar=(e=[],t=nu)=>e.reduce((r,o)=>{let n=dn({vars:["n"],logic:o.content.logic},{},t,{});return r[o.name]=n,r},{});var pe=process.env.NEXT_PUBLIC_REPORTS_LOCALE_DEFAULT||"en",Ur=process.env.NEXT_PUBLIC_REPORTS_LOCALES?.split(",")||[pe];Ur.includes(pe)||Ur.push(pe);var pu={localeDefault:pe,locales:Ur,currentLocale:pe,preferredLocale:pe,showToolbar:false,activeSection:null,previews:[],query:{},sectionState:{},activeEntity:{type:null,id:null},sidebarStatus:{tools:true,settings:false,reportEditor:false},isCMS:false,isRunConsumersRunning:[]},Fr=createSlice({name:"status",initialState:pu,reducers:{setStatus:(e,t)=>{Object.assign(e,t.payload);},setPreviews(e,t){e.previews=t.payload;},setCurrentLocale(e,t){e.currentLocale=t.payload;},setPreferredLocale(e,t){e.preferredLocale=t.payload;},setSectionState(e,t){e.sectionState={...e.sectionState,...t.payload};},resetSectionState(e,t){e.sectionState={...e.sectionState,[t.payload]:{}};},setActiveEntity(e,t){e.activeEntity=t.payload;},openSidebar(e,t){e.sidebarStatus={...e.sidebarStatus,[t.payload]:true};},closeSidebar(e,t){e.sidebarStatus={...e.sidebarStatus,[t.payload]:false};},toggleSidebar(e,t){e.sidebarStatus={...e.sidebarStatus,[t.payload]:!e.sidebarStatus[t.payload]};},addRunConsumersRunning(e,t){e.isRunConsumersRunning=e.isRunConsumersRunning.concat(t.payload);},removeRunConsumersRunning(e,t){e.isRunConsumersRunning=e.isRunConsumersRunning.filter(r=>!t.payload.includes(r));}},extraReducers:e=>{e.addCase(HYDRATE,(t,r)=>{t.previews=r.payload.status.previews;});}}),xe=Fr.actions;var fu={attributes:{},variables:{},status:{}},Vr=createSlice({name:"variables",initialState:fu,reducers:{setVariableChange:(e,t)=>{e.attributes={...e.attributes,...t.payload.attributes},e.variables={...e.variables,...t.payload.variables},e.status={...e.status,...t.payload.status};}},extraReducers:e=>{e.addCase(HYDRATE,(t,r)=>{let o=r.payload.variables;t.attributes={...t.attributes,...o.attributes},t.status={...t.status,...o.status},t.variables={...t.variables,...o.variables};});}}),Vt=Vr.actions;var hu={tree:[],reports:null,entities:{block:{},dimension:{},report:{},section:{},variant:{},formatter:{},datasource:{}},requests:{block:{},dimension:{},report:{},section:{},variant:{},formatter:{},datasource:{}}},Pe=createSlice({name:"records",initialState:hu,reducers:{set:(e,t)=>{let r=t.payload;return {entities:sr(e.entities,r.entities||{}),requests:sr(e.requests,r.requests||{}),reports:r.reports||e.reports,tree:r.tree||e.tree}},setRequest:(e,t)=>{let r=t.payload;e.requests[r.type][r.key]=r;},setCreateRequest(e,t){let r=t.payload;if(e.requests[r.type][r.key]=r,r.status==="SUCCESS"){let o=Array.isArray(r.data)?r.data:[r.data],n=Dr(r.type,o),a=sr(e.entities,n);if(e.entities=a,r.type==="report"){let s=r.data;e.reports?e.reports.indexOf(s.id)===-1&&(e.reports=[...e.reports,s.id]):e.reports=[s.id];}else if(r.type==="dimension"){let s=r.data;e.entities.report[s.report_id].dimensions.push(s.id),e.entities.report[s.report_id].dimensions=$r(a.report[s.report_id].dimensions,a.dimension);}else if(r.type==="variant"){let s=r.data;e.entities.dimension[s.dimension_id].variants.push(s.id);}else if(r.type==="section"&&!Array.isArray(r.data)){let s=r.data;e.entities.report[s.report_id].sections.push(s.id),e.entities.report[s.report_id].sections=$r(a.report[s.report_id].sections,a.section);}else if(r.type==="block")if(Array.isArray(r.data)){let s=r.data,i=s[0],c=s.map(l=>l.id);e.entities.section[i.section_id].blocks.concat(c);}else {let s=r.data;e.entities.section[s.section_id].blocks.push(s.id);}}},setReadRequest(e,t){let r=t.payload;if(r.type!=="report"&&(e.requests[r.type][r.key]=r),r.status==="SUCCESS"){let o=Dr(r.type,r.data),n=sr(e.entities,o);e.entities=n;}},setUpdateRequest(e,t){let r=t.payload;if(e.requests[r.type][r.key]=r,r.status==="SUCCESS"){let o=Array.isArray(r.data)?r.data:[r.data],n=Dr(r.type,o),a,s,i;if(r.type==="block"&&!Array.isArray(r.data)){let l=e.entities.block[r.data.id].inputs,u=n.block[r.data.id].inputs;a=l.length!==u.length,a&&(i=l.length>u.length,s=i?l.filter(p=>!u.includes(p))[0]:u.filter(p=>!l.includes(p))[0]),Object.values(n.block).forEach(p=>{p.block_input&&delete n.block[p.id];});}let c=sr(e.entities,n);if(e.entities=c,r.type==="dimension"){let l=r.data;e.entities.report[l.report_id].dimensions=$r(c.report[l.report_id].dimensions,c.dimension);}else if(r.type==="section"&&!Array.isArray(r.data)){let l=r.data;e.entities.report[l.report_id].sections=$r(c.report[l.report_id].sections,c.section);}else if(r.type==="block"&&!Array.isArray(r.data)){let l=r.data;a&&(i?e.entities.block[s].consumers=e.entities.block[s].consumers.filter(u=>u!==l.id):e.entities.block[s].consumers.push(l.id));}}},setDeleteRequest(e,t){let r=t.payload;if(e.requests[r.type][r.key]=r,r.status==="SUCCESS"){let{id:o,parentId:n,parentType:a}=r.data;if(delete e.entities[r.type][o],a&&n!=null){let s=`${r.type}s`;Ru(e.entities[a][n][s],o);}}},removeBlocks:(e,t)=>{let r=t.payload,o={...e.entities.block};return r.forEach(n=>{delete o[n];}),{...e,entities:{...e.entities,block:o}}},addBlocks:(e,t)=>{let r=t.payload;return {...e,entities:{...e.entities,block:{...e.entities.block,...r}}}},removeDataSourceLogic:e=>{let t={...e.entities.datasource};Object.keys(t).forEach(r=>{e.entities.datasource[r].content.useProxy&&(delete e.entities.datasource[r].content.logic,delete e.entities.datasource[r].content.testUrl,delete e.entities.datasource[r].content.access);});}},extraReducers:e=>{e.addCase(HYDRATE,(t,r)=>{let o=r.payload.records,n=o.entities;t.entities=n,t.reports=Object.values(n.report).map(a=>a.id),t.requests={block:{},dimension:{},report:{},section:{},variant:{},formatter:{},datasource:{}},t.tree=o.tree;});}});function sr(e,t){return Object.fromEntries(Object.keys(e).map(r=>[r,{...e[r],...t[r]}]))}function $r(e,t){return e.map(n=>t[n]).sort((n,a)=>typeof n.ordering=="string"&&typeof a.ordering=="string"?Nr(n,a):typeof n.ordering=="number"&&typeof a.ordering=="number"?n.ordering-a.ordering:String(n.ordering).localeCompare(String(a.ordering))).map(n=>n.id)}function Ru(e,t){let r=e.indexOf(t);r>-1&&e.splice(r,1);}var be=Pe.actions,Wa=ir({block:Ve("block"),dimension:Ve("dimension"),formatter:Ve("formatter"),report:Ve("report"),section:Ve("section"),variant:Ve("variant"),datasource:Ve("datasource")}),ne=ir({block:$e("block"),dimension:$e("dimension"),formatter:$e("formatter"),report:$e("report"),section:$e("section"),variant:$e("variant"),datasource:$e("datasource")}),Ya=ir({block:Te("block"),dimension:Te("dimension"),formatter:Te("formatter"),report:Te("report"),section:Te("section"),variant:Te("variant"),datasource:Te("datasource")}),Ja=ir({block:gt("block"),dimension:gt("dimension"),formatter:gt("formatter"),report:gt("report"),section:gt("section"),variant:gt("variant"),datasource:gt("datasource")}),Qa=ir({block:Ha("block"),section:Ha("section")});function ir(e){return (t,r)=>{let o=e[t];if(!o)throw new Error(`Attempting to dispatch action for invalid entity type '${t}'`);return o(r)}}function ht(e,t){return (r,o)=>{let a=o().records.requests[e][t],s=!a||a.status==="UNINITIALIZED"?"LOADING":"FETCHING";r(be.setRequest({key:t,type:e,status:s}));}}function yt(e,t,r,o){return n=>{typeof window=="object"&&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 Eu(e){return t=>{let r=vo(e,t[0]);return (o,n,a)=>(o(ht(e,r)),le(a,"createBulk",e)(t).then(i=>(i.ok===true?o(be.setCreateRequest({key:r,operation:"createBulk",status:"SUCCESS",type:e,data:i.data})):o(yt(e,r,i.status,i.error)),i)))}}function Ka(e,t,r){return r.replace(new RegExp(e,"g"),t)}function Au(e){return e.section_id!==void 0}function Tu(e){return e.report_id!==void 0}function Ha(e){return t=>{let{create:r}=t;return (o,n,a)=>Ve(e)(r)(o,n,a).then(async i=>{if(i.ok){let{data:c}=i,{id:l}=c,{update:u}=t,p=es(e,{id:l});if(o(ht(e,`${p}`)),e==="block"&&Au(r)){let d=produce(u,h=>{h.id=l;}),{contentByLocale:m}=d;m&&(d=produce(d,h=>{h.id=l,h.contentByLocale=Object.keys(m).reduce((S,x)=>{let P=m?m[x]:{};return S[x]={...P,id:l},S},{});}));let R=d.inputs?.map(h=>({type:h.type,id:h.id,inputAction:{operation:"create",input:{input_id:h.id,block_id:d.id}}}));return R&&R.length>0&&ja(e)([d,...R])(o,n,a).then(()=>$e("section")({id:d.section_id,include:true})(o,n,a).then(h=>(h.ok&&o(be.setRequest({key:p,type:e,status:"SUCCESS",data:h.data})),h))),Te(e)(d)(o,n,a).then(h=>(h.ok&&o(be.setRequest({key:p,type:e,status:"SUCCESS",data:h.data})),h))}if(e==="section"&&Tu(r)){let{id:d}=c,m=produce(u,h=>{h.id=d;}),{blocks:f}=m,R=f?.map(h=>({type:h.type,blockcol:h.blockcol,blockrow:h.blockrow,section_id:d,locales:Object.keys(h.contentByLocale).map(S=>S)}));return R&&f&&await Eu("block")(R)(o,n,a).then(h=>{if(h.ok){let S=h.data,x=[],P=S.map((U,A)=>{let C={...U},N=C.id,k=f[A];k.contentByLocale&&(C.contentByLocale=Object.keys(k.contentByLocale).reduce((_,b)=>{let E=k.contentByLocale[b];return _[b]={...E,content:{...E.content},id:C.id},_},{}));let{settings:L}=k,{contentByLocale:M,id:D}=C;C.settings=L;let Y={id:D,contentByLocale:M,settings:L};return k.inputs.map(_=>_.id).reduce((_,b)=>{let E=f.findIndex(w=>w.id===b);return [..._,E]},[]).map(_=>({...S[_],originalBlock:f[_]})).forEach(_=>{let{id:b,type:E,originalBlock:w}=_;if([B.SELECTOR,B.VIZ].includes(E)){if(Y.contentByLocale?.logic?.content?.api){let Z=Y.contentByLocale?.logic.content.api;Y.contentByLocale.logic.content.api=Ka(`(selector${w.id}id)`,`selector${b}id`,Z);}if(Y.contentByLocale?.logic?.content?.logic){let Z=Y.contentByLocale.logic.content.logic;Y.contentByLocale.logic.content.logic=Ka(`(selector${w.id}id)`,`selector${b}id`,Z);}}x.push({id:b,inputAction:{operation:"create",input:{input_id:b,block_id:N}}});}),Y});return ja("block")([...P,...x])(o,n,a)}}),Te(e)(m)(o,n,a).then(h=>(h.ok&&o(be.setRequest({key:p,type:e,status:"SUCCESS",data:h.data})),h))}return Te(e)({...u,id:c.id})(o,n,a)}})}}function $e(e){return t=>{let r=Za(e,t);return (o,n,a)=>{o(ht(e,r));let s=le(a,"read",e);if(typeof s!="function"){let i=`Failed to get valid RPC method for entity "${e}"`;return o(yt(e,r,500,i)),Promise.reject(new Error(i))}return s(t).then(i=>(i.ok===true?o(be.setReadRequest({key:r,operation:"read",status:"SUCCESS",type:e,data:i.data})):o(yt(e,r,i.status,i.error)),i))}}}function Te(e){return t=>{let r=Io(e,t);return (o,n,a)=>(o(ht(e,r)),le(a,"update",e)(t).then(i=>(i.ok===true?o(be.setUpdateRequest({key:r,operation:"update",status:"SUCCESS",type:e,data:i.data})):o(yt(e,r,i.status,i.error)),i)))}}function ja(e){return t=>{let r=Io(e,t[0]);return (o,n,a)=>(o(ht(e,r)),le(a,"updateBulk",e)(t).then(i=>(i.ok===true?o(be.setUpdateRequest({key:r,operation:"updateBulk",status:"SUCCESS",type:e,data:i.data})):o(yt(e,r,i.status,i.error)),i)))}}function gt(e){return t=>{let r=Xa(e,t);return (o,n,a)=>(o(ht(e,r)),le(a,"delete",e)(t).then(i=>{i.ok===true?o(be.setDeleteRequest({key:r,operation:"delete",status:"SUCCESS",type:e,data:i.data})):o(yt(e,r,i.status,i.error));}))}}function vo(e,t){if(e==="variant"){let r=t;return `create(variant, [${r.dimension_id}, ${r.name}])`}return `create(${e}, [${Object.keys(t)}])`}function Za(e,t={}){let r=t.id==null?null:`'${t.id}'`;return `read(${e}, ${r}, ${!!t.include})`}function Io(e,t){let{id:r,...o}=t;return `update(${e}, ${r}, [${Object.keys(o)}])`}function Xa(e,t){return `delete(${e}, ${t})`}function es(e,t){let r=t.id==null?null:`'${t.id}'`;return `clone(${e}, ${r})`}var{setStatus:ts,setPreviews:_u,setSectionState:rs,resetSectionState:os,setCurrentLocale:wu,setPreferredLocale:ku,addRunConsumersRunning:ns,removeRunConsumersRunning:as}=xe;function xu(e,t){return async(r,o,n)=>{let a=await n.validateVariantSlug({dimension:e,slug:t});if("error"in a)throw new Error(a.error);return a.data}}function Pu(e){return async(t,r,o)=>{let n=await o.searchReport(e);if("error"in n)throw new Error(n.error);return n.data}}function vu(){return async(e,t,r)=>{let o=await r.regenerateSearch(void 0);if("error"in o)throw new Error(o.error);return o.data}}function ze(e){return async(t,r,o)=>{let n=await o.readMember(e);if("error"in n)throw new Error(n.error);return n.data}}function Iu(e){return async(t,r,o)=>{let n=await o.searchMember(e);if(n.ok===true)return n.data;throw new Error(n.error)}}async function ss(e,t,r,o){let n=r().status,a={...n,...o},s={...n.query,...o.query};Object.keys(s).forEach(c=>s[c]===void 0&&delete s[c]);let i={...a,query:s};t(ts(i)),n.activeSection&&t(is(e,{query:s}));}function Cu(e,t){return async(r,o)=>ss(e,r,o,{query:{[t]:void 0}})}function Lu(e,t,r){return async(o,n)=>ss(e,o,n,{query:{[t]:r}})}function is(e,t){return async(r,o)=>{let n=o(),{currentLocale:a}=n.status,s=n.records.entities.block,i=e.formatterFunctions[a],c=e.datasourceFunctions,{parsedParams:l,statusPayload:u}=Ga(n.status,t),{sid:p,bid:d,previews:m,query:f}=l;Object.keys(u).length&&r(xe.setStatus(u));let R={...Ft(m),locale:a,...ue()},h={variables:R,query:f,locale:a};r(xe.addRunConsumersRunning([p]));let S=n.records.entities.section[p],x=async P=>r(ze(P));try{let P=await Ut(s,S&&[S],d,i,h,void 0,x,"section",c),{variables:U,status:A}=P;r(Vt.setVariableChange({attributes:R,variables:U,status:A})),r(xe.removeRunConsumersRunning([p]));}catch(P){console.error("Error in runConsumers client side: recalculateVariables",P);}}}function cr(e){return async(t,r,o)=>{let n=await o.readMetadata(e);if("error"in n)throw new Error(n.error);return n.data}}function Bu(e){return async(t,r,o)=>{let n=await o.urlProxy(e);if("error"in n)throw new Error(n.error);return n.data}}function Mu(){return async(e,t,r)=>{let o=await r.searchRole("");if("error"in o)throw new Error(o.error);return o.data}}function Ou(e){return async(t,r,o)=>{let n=await o.searchUser(e);if("error"in n)throw new Error(n.error);return n.data}}function Nu(e){return async(t,r,o)=>{let n=await o.readUser({user_id:e});if("error"in n)throw new Error(n.error);return n.data}}function Du({user:e}){return async(t,r,o)=>{let n=await o.updateUser(e);if("error"in n)throw new Error(n.error);return n.data}}function Uu(e){return async(t,r,o)=>{let n=await o.updateMyData(e);if("error"in n)throw new Error(n.error);return n.data}}function qe(e){let{removeBlocks:t}=Pe.actions;return async r=>{await r(t(e));}}function lr(e){let{addBlocks:t}=Pe.actions;return async r=>{await r(t(e));}}function Fu(e){return async(t,r,o)=>{let n=await o.readPrivateBlocks({...e,roles:[]});if("error"in n)throw new Error(n.error);return n.data}}function Vu(e){return async(t,r,o)=>{let n=await o.revalidateUrl({target:e.target});if("error"in n)throw new Error(n.error);return n.data}}function $u(e){return async(t,r,o)=>{let n=await o.revalidateReport({reportId:e.reportId,profilePrefix:e.profilePrefix});if("error"in n)throw new Error(n.error);return n.data}}function zu(){return async(e,t,r)=>{let o=await r.readEnvSecrets({});if("error"in o)throw new Error(o.error);return o.data}}function ur(){let{removeDataSourceLogic:e}=Pe.actions;return async t=>{await t(e());}}var cs=()=>configureStore({reducer:{[Pe.name]:Pe.reducer,[Fr.name]:Fr.reducer,[Vr.name]:Vr.reducer},middleware(e){return e({thunk:{extraArgument:or("/api/cms/")}})}}),Ge=createWrapper(cs);function ju(e){let t=process.cwd(),r=Hu.resolve(t.endsWith("/example")?t.replace("/example",""):t,"package-lock.json"),o;try{let n=JSON.parse(Nc.readFileSync(r,"utf-8"));o=n.dependencies&&n.dependencies[e]&&n.dependencies[e].version!=="file:packages/reports"?n.dependencies[e].version:"0.dev";}catch{o="0.vercel";}return o||"Version not found"}function Wu(e){let t=()=>Promise.resolve({}),{pathSegmentsKey:r="bespoke",preResolve:o=t,postResolve:n=t,authOptions:a={providers:[]}}=e||{};return Ge.getServerSideProps(s=>{let i=s.dispatch;return async c=>{let l=await me(c.req,c.res,a);if(!l)return {redirect:{destination:"/api/auth/signin?callbackUrl=/cms",permanent:false}};let u=new Set([z.ADMIN,z.EDITOR,z.WRITER]);if(!(l?.user?.bespoke_roles||[]).some(S=>u.has(S)))return {redirect:{destination:"/",permanent:false}};let d=c.query[r],[m]=Array.isArray(d)?d:[d];await i(it);let f=await ju("@datawheel/bespoke"),R=await o(s,c);if("redirect"in R)return {props:R};m==="reports"&&(ls(c.query[r])?await Promise.all([i(ne("formatter",{})),i(ne("datasource",{include:true})),i(ne("report",{id:ls(c.query[r]),include:true})),xe.setStatus({isCMS:true})]):await Promise.all([i(ne("report",{include:"dimensions"})),xe.setStatus({isCMS:true})])),m==="metadata"&&await i(ne("report",{include:"dimensions"})),m==="formatters"&&await i(ne("formatter",{})),m==="datasources"&&await i(ne("datasource",{include:true}));let h=await n(s,c);return {props:{...R,...h,bespokeVersion:f,session:l}}}})}function ls(e){if(e==null||e==="")return;let[,t]=Array.isArray(e)?e:[e];return Number.parseInt(t)||void 0}var {locales:Ju}=G(),Qu={pathSegment:"path",formatterFunctions:Ju.reduce((e,t)=>({...e,[t]:{}}),{}),datasourceFunctions:[],profilePrefix:"path",previewPrefix:null,siteProps:{}};createContext(Qu);G();var fp=e=>e.records.entities.report;var Gr=e=>e.records.entities.block;var gp=e=>e.records.entities.datasource;function $t(e){return createSelector([t=>t.records.entities[e]],t=>Object.values(t))}$t("report");$t("dimension");$t("variant");var Kr=$t("section");$t("block");var Hr=$t("formatter");createSelector([fp],e=>Object.values(e)[0]);var yp=ue(),hp=[],jr=createSelector([gp],e=>e?Object.values(e).sort((t,r)=>t.content.order>r.content.order?1:-1).map(t=>{let r={...yp};return {...t,content:{...t.content,pattern:ye(t.content.pattern,{},{variables:r})}}}):hp);var Rp=async(e,t,r,o,n)=>{if(e.length===0)throw new Error("No slugs provided");let a=await t(r({mode:"slugs",locale:n,slugs:e,output:"full"})),s=a.results[0].report_id;if(a.results.length>1){if(a.results.every(f=>f.report_id===s)===false)throw new Error("Members belong to different reports");let l=a.results.map(f=>f.dimension_id),u=new Set(l);if(l.length!==u.size)throw new Error("Members belong to same dimensions");let p=a.results.sort((f,R)=>f.dimension_ordering>R.dimension_ordering?1:-1).reduce((f,R,h)=>(f[R.variant_slug]=h,f),{}),d=e.reduce((f,R,h)=>(f[R.variantSlug]=h,f),{});if(!(Object.keys(p).length===Object.keys(d).length&&Object.keys(p).every(f=>Object.prototype.hasOwnProperty.call(d,f)&&p[f]===d[f])))throw new Error("Variant slugs do not match the expected dimension order")}let c=(await t(o({report_id:s,count:false}))).data.find(l=>l.id===s);if(!c||a.results.length!==c.dimensions.length)throw new Error(`Missing members for report ID ${s}`);return a},Wr=Rp;function bp(e){let{fallback:t=true,limit:r=50}=e||{};return async o=>{let{defaultLocale:n=pe,locales:a=[]}=o,s=[];if(r>0){let i=a.find(u=>u===n),{searchMember:c}=await rt().then(Ot),l=await c({query:"",limit:r,format:"plain",locale:i||pe,noImage:false,visible:true,report:[],dimension:[],variant:[],includes:true});l.ok===true&&(s=l.data.results.map(u=>({locale:a.find(p=>p===u.locale),params:{bespoke:[u.variant.slug,u.slug]}})));}return {fallback:t,paths:s}}}function Sp(e){let{pathSegmentsKey:t="bespoke"}=e||{};try{return Ge.getStaticProps(r=>{let o=r.dispatch;return async n=>{await o(it);let a=new Date().toISOString(),{locale:s=pe,params:i={}}=n,c=Array.from(Bo(i[t])),l;try{l=await Wr(c,o,ze,cr,s);}catch(k){return console.error("[Bespoke slug validation Failed]: Return 404:",k.message,`[${s}] -> /${c.map(L=>`${L.variantSlug}/${L.memberSlug}`).join("/")}`),{notFound:!0}}o(Rt.setPreviews(l.results)),await Promise.all([o(ne("formatter",{})),o(ne("datasource",{include:!0})),o(ne("report",{id:l.results.map(k=>k.report_id),include:!0,locales:[s]}))]);let u=r.getState(),p=Hr(u),d=jr(u),m=ar(p,s),f=Kr(u),R=Gr(u),h={...R},S={},x=Object.values(R).reduce((k,L)=>("access"in L.settings&&!["public","guest"].some(M=>!L.settings.access||L.settings.access.includes(M))&&k.push(L.id),k),[]),P=x.filter(k=>h[k].settings[Le.FALLBACK]),U=Array.from(new Set([...P,...he(P,Object.values(h))])),A=x.filter(k=>[B.SELECTOR,B.MULTIHIERARCHY_SELECTOR].includes(h[k].type)),F=Array.from(new Set([...A,...he(A,Object.values(h))]));x=Array.from(new Set([...x,...U,...F,...he(x,Object.values(h))])),x.forEach(k=>{P.includes(k)?(S[k]={...h[k],type:B.FALLBACK,original_type:h[k].type},delete h[k]):A.includes(k)&&(S[k]={...h[k],settings:{...h[k].settings,[Le.DISABLED]:!0}},delete h[k]),F.includes(k)||delete h[k];}),await o(qe(x.filter(k=>!F.includes(k)))),await o(lr(S));let C={...Ft(l.results),locale:s,...ue()},N=async k=>await o(ze(k));return await Ut({...h,...S},f,void 0,m,{locale:s,query:i,variables:C},void 0,N,"report",d).then(async k=>{let L=Object.keys({...h,...S}).reduce((M,D)=>(k.variables[D]&&k.status[D]||M.push(Number(D)),M),[]);await o(qe(L)),await o(Vt.setVariableChange({...k,attributes:C})),await o(ur());}),{props:{buildTime:a}}}})}catch(r){console.error("ERROR SSR",r);}}function Bo(e=[]){let t=[].concat(e),r=0;return {next(){return {value:{variantSlug:t[r++],memberSlug:t[r++]},done:r>t.length}},[Symbol.iterator](){return this}}}function Ep(e){let{pathSegmentsKey:t="bespoke"}=e||{};try{return Ge.getServerSideProps(r=>{let o=r.dispatch;return async n=>{let{section:a,block:s}=n.query,i=Object.fromEntries(Object.entries(n.query).filter(([v])=>v.match(/selector\d+id/)));if(!a&&!s)return {notFound:!0};let c=Number(a);await o(it);let l=new Date().toISOString(),{locale:u=pe,params:p={},req:d}=n,m=Array.from(Bo(p[t])),f;try{f=await Wr(m,o,ze,cr,u);}catch(v){return console.error("[Bespoke slug validation Failed]: Return 404:",v.message,`/${u}/${d.url}`),{notFound:!0}}o(Rt.setPreviews(f.results)),await Promise.all([o(ne("formatter",{})),o(ne("datasource",{include:!0})),o(ne("report",{id:f.results.map(v=>v.report_id),include:!0,locales:[u]}))]);let R=r.getState(),h=Hr(R),S=jr(R),x=ar(h,u),P=Kr(R).filter(v=>v.id===c),U=Gr(R),A={...U},F={},C=Object.values(U).reduce((v,j)=>("access"in j.settings&&!["public","guest"].some(_=>!j.settings.access||j.settings.access.includes(_))&&v.push(j.id),v),[]),N=C.filter(v=>A[v].settings[Le.FALLBACK]),k=Array.from(new Set([...N,...he(N,Object.values(A))])),L=C.filter(v=>[B.SELECTOR,B.MULTIHIERARCHY_SELECTOR].includes(A[v].type)),M=Array.from(new Set([...L,...he(L,Object.values(A))]));C=Array.from(new Set([...C,...k,...M,...he(C,Object.values(A))])),C.forEach(v=>{N.includes(v)?(F[v]={...A[v],type:B.FALLBACK,original_type:A[v].type},delete A[v]):L.includes(v)&&(F[v]={...A[v],settings:{...A[v].settings,[Le.DISABLED]:!0}},delete A[v]),M.includes(v)||delete A[v];}),await o(qe(C.filter(v=>!M.includes(v)))),await o(lr(F));let D={...Ft(f.results),locale:u,...ue()},Y=async v=>await o(ze(v));await Ut({...A,...F},P,void 0,x,{locale:u,query:{...p,...i},variables:D},void 0,Y,"section",S).then(async v=>{let j=Object.keys({...A,...F}).reduce((_,b)=>(v.variables[b]&&v.status[b]||_.push(Number(b)),_),[]);await Promise.all([o(qe(j)),o(Vt.setVariableChange({...v,attributes:D})),o(ur())]);});let V=Object.keys({...A,...F}).filter(v=>a&&s?v!==s:A[v]&&A[v].section_id!==c).map(Number);return await o(qe(V)),{props:{buildTime:l}}}})}catch(r){return console.error("ERROR SSR",r),async()=>({notFound:true})}}export{Ep as BespokeEmbedServerSideProps,wl as BespokeEndpointNextJsHandlerFactory,me as BespokeGetSession,Cs as BespokeHandleAuth,Wu as BespokeManagerServerSideProps,bp as BespokeRendererStaticPaths,Sp as BespokeRendererStaticProps,Vs as BespokeSearchUsersByMetadata,Ms as BespokeUpdateCurrentUserAppMetadata,Ns as BespokeUpdateCurrentUserMetadata,Us as BespokeWithApiRoleAuthRequired,xl as ReportCrosswalkHandler,Ot as dbApiFactory,bo as endpointKey,rt as getDB,it as useDatabaseApi};
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.8",
4
4
  "description": "Content management system for creating automated data reports",
5
5
  "exports": {
6
6
  ".": {