@datawheel/bespoke 1.0.0-rc.5 → 1.0.0-rc.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/server.js CHANGED
@@ -1,28 +1,28 @@
1
- import ms,{getServerSession}from'next-auth';import ls from'next-auth/providers/auth0';import $e from'auth0';import*as hi from'pg';import {Sequelize,Error as Error$1,DataTypes,literal,Op,where,cast,json,fn as fn$1,col,Model}from'sequelize';import Gt from'yn';import*as Ns from'd3-array';import*as Ds from'd3-collection';import*as Us from'd3-format';import*as Fs from'd3-time-format';import {formatAbbreviate}from'd3plus-format';import {date}from'd3plus-axis';import {merge,closest,assign,isObject}from'd3plus-common';import {titleCase,strip}from'd3plus-text';import Ai from'slugify';import Pr from'axios';import _i from'jsonwebtoken';import wi from'next/config';import qi from'flexsearch';import uc from'base58';import pc from'flickr-sdk';import {createApi}from'unsplash-js';import hc from'fs';import {createContext,createElement}from'react';import {renderToString}from'react-dom/server';import*as io from'@tabler/icons-react';import el from'cors';import tl from'image-type';import qc from'formidable';import jc from'dom-parser';import Pu from'path';import Pa 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 is=Object.defineProperty;var cs=(e,t)=>{for(var r in t)is(e,r,{get:t[r],enumerable:true});};var ps={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 qe(e){let t=e;if(t&&!t.source)if(!t.providers||t.providers.length===0){let r=ls({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:s,session:a}){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),s==="update")try{let i=new $e.ManagementClient(ps),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(p=>p.name),a?.user_metadata&&(o.bespoke_user_metadata={...o.bespoke_user_metadata,...a.user_metadata}),a?.app_metadata&&(o.bespoke_app_metadata={...o.bespoke_app_metadata,...a.app_metadata});}catch(i){console.error("Error refreshing user data from Auth0:",i),o.bespoke_user_metadata={...o.bespoke_user_metadata,...a?.user_metadata||{}},o.bespoke_app_metadata={...o.bespoke_app_metadata,...a?.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=qe(r),n=await getServerSession(e,t,o);return n&&(n.source=o.source||""),n}var fs=(e={providers:[]})=>{let t=qe(e);return ms(t)},ys=fs;var E=class extends Error{constructor(t,r){super(r),this.code=t;}toJSON(){return xo(this)}static is(t){return Object.prototype.hasOwnProperty.call(t,"code")&&typeof t.code=="number"}};function gs(e){return {ok:true,status:200,wrapper:true,data:e}}function xo(e){return {ok:false,status:E.is(e)?e.code:500,error:e.message}}function v(e){return t=>e(t).then(gs,xo)}function ue(e,t,r){if(t==="createBulk"||t==="updateBulk"){let n=`${t}${be(r)}`;return e[n]}let o=`${t}${be(r)}`;return e[o]}function be(e){return e[0].toUpperCase()+e.slice(1)}var z={ADMIN:"Admin",EDITOR:"Editor",WRITER:"Writer"},Io={APP:"App",USER:"User"},vo=e=>{let t=Object.values(z);return e?e.map(r=>({...r,type:t.includes(r.name)?Io.APP:Io.USER})):[]};var ze={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 Co(){return async()=>{try{let t=await new $e.ManagementClient(ze).roles.getAll({include_totals:!0,per_page:100});return {roles:vo(t.roles)}}catch(e){throw console.error("AuthZeroError",e),new E(e.response?.status||500,e.message)}}}function Bo(){return async e=>{try{let t;if(e){let r={include_totals:!0,per_page:10,page:e.page||0},o=new $e.ManagementClient(ze);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 E(t.response?.status||500,t.message)}}}function Lo(){return async e=>{try{if(e){let t=new $e.ManagementClient(ze),r=await Promise.all([t.users.get({id:e}),t.users.getRoles({id:e})]);return {...r[0],roles:r[1]}}else throw new E(404,"User ID required")}catch(t){throw console.error("AuthZeroError",t),new E(t.response?.status||500,t.message)}}}function Mo(){return async e=>{try{if(e.user_id){if(e.app_metadata&&await $r(e.user_id,e.app_metadata),e.user_metadata&&await zr(e.user_id,e.user_metadata),e.roles){let t=new $e.ManagementClient(ze),o=(await t.users.getRoles({id:e.user_id})).map(i=>i.id),n=e.roles.map(i=>i.id),s=n.filter(i=>!o.includes(i)),a=o.filter(i=>!n.includes(i));s.length>0&&await t.users.assignRoles({id:e.user_id},{roles:s}),a.length>0&&await t.users.removeRoles({id:e.user_id},{roles:a});}return {status:"success",message:"User updated!"}}else throw new E(404,"user_id is required")}catch(t){throw console.error("AuthZeroError",t),new E(t.response?.status||500,t.message)}}}function Oo(){return async e=>{try{return "NOT USED SERVICE"}catch(t){throw console.error("AuthZeroError",t),new E(t.response?.status||500,t.message)}}}async function $r(e,t){return await new $e.ManagementClient(ze).users.updateAppMetadata({id:e},t)}async function zr(e,t){return await new $e.ManagementClient(ze).users.updateUserMetadata({id:e},t)}async function No(e,t){try{let r=new $e.ManagementClient(ze),o=await r.getUsers({search_engine:"v3",q:`user_metadata.${e}:"${t}"`});for(let n=0;n<o.length;n++){let s=o[n];s.bespoke_user_metadata=s.user_metadata||{},delete s.user_metadata,s.bespoke_roles=(await r.users.getRoles({id:s.user_id})).map(a=>a.name);}return o}catch(r){console.error(r);}}var Rs=(e,t,r,o)=>new Promise((n,s)=>{(async()=>{try{let i=await me(e,t,r);if(!i||!i.user)throw new Error("not_authenticated");{let{user:c,source:l}=i,u={...i.user.bespoke_app_metadata||{},...o};l==="custom"&&r.actions?.updateUser?await r.actions.updateUser()({user_id:c.id,app_metadata:u}):await $r(c.id,u),n({error:"",description:`App metadata updated for user ${i.user.email}`});}}catch(i){s({error:i.message,description:"The user does not have an active session or is not authenticated"});}})();}),hs=Rs;var bs=(e,t,r,o)=>new Promise((n,s)=>{(async()=>{try{let i=await me(e,t,r);if(!i||!i.user)throw new Error("not_authenticated");{let{user:c,source:l}=i,u={...c.bespoke_user_metadata||{},...o};l==="custom"&&r.actions?.updateUser?await r.actions.updateUser()({user_id:c.id,user_metadata:u}):await zr(c.id,u),n({error:"",description:`App metadata updated for user ${c.email}`});}}catch(i){s({error:i.message,description:"The user does not have an active session or is not authenticated"});}})();}),Ss=bs;var Mt=(e,t)=>t&&typeof t=="string"?t.split(".").reduce((r,o)=>r[o],e):e;function ar(e,t){return e.some(r=>t.includes(r))}function sr(e){return e.filter((t,r,o)=>o.indexOf(t)===r)}var Es=(e,t,r)=>async function(o,n){let s=await me(o,n,r);if(!s||!s.user){n.status(401).json({error:"not_authenticated",description:"The user does not have an active session or is not authenticated"});return}let a=s.user.bespoke_roles||[];if(t.length>0&&!ar(a,t)){n.status(402).json({error:"unauthorize",description:"The user requires some specific roles"});return}await e(o,n);},As=Es;var Ts=(e,t,r)=>new Promise((o,n)=>{(async()=>{try{if(t&&r&&t!==""&&r!==""){let a;e.actions?.searchUser?a=await e.actions.searchUser()({[t]:r}):a=await No(t,r),o(a);}else n({error:"empty_params",description:"key or value params are empty"});}catch(a){n({error:a.message,description:"Error "});}})();}),_s=Ts;var ke=(e=process.env)=>Gt(e.REPORTS_LOGGING);var Ke=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(s=>s.toJSON()),consumers:o.map(s=>s.toJSON()),contentByLocale:Object.fromEntries(n.map(s=>[s.locale,s.toJSON()]))}}};function Ps(e){return Ke.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=>(Ke.hasMany(t.block_content,{foreignKey:"id",sourceKey:"id",as:"contentByLocale"}),Ke.belongsToMany(t.block,{through:"block_input",foreignKey:"block_id",otherKey:"input_id",as:"inputs"}),Ke.belongsToMany(t.block,{through:"block_input",foreignKey:"input_id",otherKey:"block_id",as:"consumers"}),Ke)}var Uo=Ps;var ir=class extends Model{};function Is(e){return ir.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}),()=>ir}var Fo=Is;var cr=class extends Model{};function Cs(e){return cr.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}),()=>cr}var Vo=Cs;function Hr(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 qo(e,t,r){let o=0,n=1,s=1,a=1,i=0,c=0,l;for(;Math.abs((s-c)/s)>1e-5;)c=s,l=-(t+i)*(t+r+i)*e/(t+2*i)/(t+2*i+1),o=s+l*o,n=a+l*n,i+=1,l=i*(r-i)*e/(t+2*i-1)/(t+2*i),s=o+l*s,a=n+l*a,o/=a,n/=a,s/=a,a=1;return s/t}function Bs(e,t,r){let o,n;if(e<0)n=0;else if(e>=t)n=1;else {e=Math.floor(e);let s=r,a=e+1,i=t-e,c=a+i,l=Math.exp(Hr(c)-Hr(i)-Hr(a)+a*Math.log(s)+i*Math.log(1-s));s<(a+1)/(c+2)?o=l*qo(s,a,i):o=1-l*qo(1-s,i,a),n=1-o;}return Math.round(n*1e5)/1e5}function Ls(e){return {.99999:15.137,.99:6.635,.95:3.841,.9:2.706}[e]}function Ot(e,t,r,o){let n=t/(1-t),s=0,a=1,i=0,c=0;for(;s<=e;)c+=a,s>=r&s<=o&&(i+=a),c>1e30&&(i/=1e30,c/=1e30,a/=1e30),s+=1,a=a*n*(e+1-s)/s;return i/c}function Ms(e,t,r){let o=e/t,s=(100-r*100)/2,a,i;if(e===0)a=0;else {let c=o/2,l=0,p=o,u=s/100;for(;p-l>1e-5;)Ot(t,c,e,e)*.5+Ot(t,c,e+1,t)>u?(p=c,c=(l+c)/2):(l=c,c=(p+c)/2);a=c;}if(e===t)i=0;else {let c=(1+o)/2,l=o,p=1,u=s/100;for(;p-l>1e-5;)Ot(t,c,e,e)*.5+Ot(t,c,0,e-1)<u?(p=c,c=(l+c)/2):(l=c,c=(p+c)/2);i=c;}return {lci:a,uci:i}}function Os(e,t){let r=e,o=t,n=r,s=o,a=95,i=.5,c=.5,p=(100-a)/2/100,u=n;for(;c>1e-5;)c/=2,lr((1+u)*i/(1-i),u+1,1e10)+.5*lr((1+u)*i/(1-i),u,u)>p?i-=c:i+=c;let m=(1+u)*i/(1-i)/s;for(i=.5,c=.5,p=(100-a)/2/100;c>1e-5;)c/=2,lr((1+u)*i/(1-i),0,u-1)+.5*lr((1+u)*i/(1-i),u,u)<p?i-=c:i+=c;let d=(1+u)*i/(1-i)/s;return {lci:m,uci:d}}function lr(e,t,r){let o=1,n=0,s=0,a=0;for(;a<e||o>n*1e-10;)n+=o,a>=t&a<=r&&(s+=o),n>1e30&&(s/=1e30,n/=1e30,o/=1e30),a+=1,o=o*e/a;return s/n}var $o={binomialCdf:Bs,binP:Ot,computeMidP:Ms,criticalValue:Ls,smr:Os};var He={d3:{...Ns,...Ds,...Us,...Fs},d3plus:{assign:assign,closest:closest,date:date,formatAbbreviate:formatAbbreviate,merge:merge,strip:strip,titleCase:titleCase},stats:$o},zo={};var Pe={UNILATERAL:"uni",MULTILATERAL:"multi"},We={SINGLE:"single",MULTI:"multi"};var jr={ALLOWED:"allowed",ALLOWED_LOGIC:"allowedLogic",IGNORE_CASCADE:"ignoreCascade"},js={ACCESS:"access",ACCESS_LOGIC:"accessLogic"},Ws={DISABLED:"disabled"},Js={FALLBACK:"fallback"};var Ys={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"},Wr={GENERATOR:"generator",RELATED:"related",VIZ:"visualization",SECTION_FLAG:"section_flag"},Jr="logic",O={...Ys,...Wr},xe={NAME:"name",DESCRIPTION:"description",...jr,...js,...Js,...Ws};var ur={FORMATTER:"formatter"},ft={STRING:"string"};var yt=class extends Model{};function Xs(e){return yt.init({id:{type:DataTypes.INTEGER,primaryKey:true,autoIncrement:true},name:{type:DataTypes.STRING,defaultValue:""},content:{type:DataTypes.JSONB,defaultValue:{description:"",testValue:"Foo",type:ur.FORMATTER,inputType:ft.STRING,logic:"return n;"}}},{sequelize:e,modelName:"formatter",tableName:"bespoke_reports_formatter",freezeTableName:true,timestamps:false,hooks:{async afterSync(t){let r=await yt.findAll();if(t.force||r.length===0){let o=Object.entries(zo).map(([n,s])=>({name:n,content:s}));await yt.bulkCreate(o);}}}}),()=>yt}var Ho=Xs;var Nt=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 ti(e){return Nt.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=>(Nt.hasMany(t.image_content,{foreignKey:"id",sourceKey:"id",as:"contentByLocale"}),Nt)}var jo=ti;var pr=class extends Model{};function oi(e){return pr.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}),()=>pr}var Wo=oi;var Rt=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 ai(e){return Rt.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=>(Rt.hasMany(t.dimension,{foreignKey:"report_id",sourceKey:"id",as:"dimensions"}),Rt.hasMany(t.section,{foreignKey:"report_id",sourceKey:"id",as:"sections"}),Rt)}var Jo=ai;var bt=class extends Model{toJSON(){let t=this.get({plain:true}),{variants:r=[]}=this;return {...t,variants:r.map(o=>o.toJSON())}}};function ii(e){return bt.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=>(bt.hasMany(t.variant,{foreignKey:"dimension_id",sourceKey:"id",as:"variants",constraints:false}),bt.belongsTo(t.report,{foreignKey:"report_id",targetKey:"id",as:"report",constraints:false}),bt)}var Yo=ii;var St=class extends Model{get report(){return this.dimension?.report}toJSON(){return this.get({plain:true})}};function li(e){return St.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=>(St.hasMany(t.search,{foreignKey:"variant_id",sourceKey:"id",as:"members",constraints:false}),St.belongsTo(t.dimension,{foreignKey:"dimension_id",targetKey:"id",as:"dimension",constraints:false}),St)}var Qo=li;var Te=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 pi(e){return Te.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=>(Te.belongsTo(t.variant,{foreignKey:"variant_id",targetKey:"id",as:"variant",constraints:false}),Te.belongsTo(t.dimension,{foreignKey:"dimension_id",targetKey:"id",as:"dimension",constraints:false}),Te.belongsTo(t.report,{foreignKey:"report_id",targetKey:"id",as:"report",constraints:false}),Te.belongsTo(t.image,{foreignKey:"image_id",targetKey:"id",as:"image",constraints:false}),Te.hasMany(t.search_content,{foreignKey:"id",sourceKey:"content_id",as:"contentByLocale"}),Te)}var Zo=pi;var dr=class extends Model{};function mi(e){return dr.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}),()=>dr}var Xo=mi;var Ut=class extends Model{toJSON(){let t=this.get({plain:true}),{blocks:r=[]}=this;return {...t,blocks:r.map(o=>o.toJSON())}}};function yi(e){return Ut.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=>(Ut.hasMany(t.block,{foreignKey:"section_id",sourceKey:"id",as:"blocks"}),Ut)}var en=yi;var fr=class extends Model{};function Ri(e){return fr.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 gs,{getServerSession}from'next-auth';import ps from'next-auth/providers/auth0';import $e from'auth0';import*as _i from'pg';import {Sequelize,Error as Error$1,DataTypes,literal,Op,where,cast,json,fn,col,Model}from'sequelize';import Gt from'yn';import*as zs from'd3-array';import*as Gs from'd3-collection';import*as Ks from'd3-format';import {formatLocale}from'd3-format';import*as Hs from'd3-time-format';import {merge,date,closest,assign,isObject}from'@d3plus/dom';import {titleCase,strip}from'@d3plus/text';import Pi from'slugify';import Pr from'axios';import Ii from'jsonwebtoken';import Ci from'next/config';import ji from'flexsearch';import yc from'base58';import Rc from'flickr-sdk';import {createApi}from'unsplash-js';import _c from'fs';import {createContext,createElement}from'react';import {renderToString}from'react-dom/server';import*as lo from'@tabler/icons-react';import sl from'cors';import il from'image-type';import jc from'formidable';import Xc from'dom-parser';import Lu from'path';import va from'axios-retry';import {format}from'pretty-format';import Il 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 ls=Object.defineProperty;var us=(e,t)=>{for(var r in t)ls(e,r,{get:t[r],enumerable:true});};var ms={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 qe(e){let t=e;if(t&&!t.source)if(!t.providers||t.providers.length===0){let r=ps({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:s,session:a}){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),s==="update")try{let i=new $e.ManagementClient(ms),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(p=>p.name),a?.user_metadata&&(o.bespoke_user_metadata={...o.bespoke_user_metadata,...a.user_metadata}),a?.app_metadata&&(o.bespoke_app_metadata={...o.bespoke_app_metadata,...a.app_metadata});}catch(i){console.error("Error refreshing user data from Auth0:",i),o.bespoke_user_metadata={...o.bespoke_user_metadata,...a?.user_metadata||{}},o.bespoke_app_metadata={...o.bespoke_app_metadata,...a?.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=qe(r),n=await getServerSession(e,t,o);return n&&(n.source=o.source||""),n}var ys=(e={providers:[]})=>{let t=qe(e);return gs(t)},Rs=ys;var E=class extends Error{constructor(t,r){super(r),this.code=t;}toJSON(){return Io(this)}static is(t){return Object.prototype.hasOwnProperty.call(t,"code")&&typeof t.code=="number"}};function hs(e){return {ok:true,status:200,wrapper:true,data:e}}function Io(e){return {ok:false,status:E.is(e)?e.code:500,error:e.message}}function I(e){return t=>e(t).then(hs,Io)}function ue(e,t,r){if(t==="createBulk"||t==="updateBulk"){let n=`${t}${be(r)}`;return e[n]}let o=`${t}${be(r)}`;return e[o]}function be(e){return e[0].toUpperCase()+e.slice(1)}var z={ADMIN:"Admin",EDITOR:"Editor",WRITER:"Writer"},Co={APP:"App",USER:"User"},Bo=e=>{let t=Object.values(z);return e?e.map(r=>({...r,type:t.includes(r.name)?Co.APP:Co.USER})):[]};var ze={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 Lo(){return async()=>{try{let t=await new $e.ManagementClient(ze).roles.getAll({include_totals:!0,per_page:100});return {roles:Bo(t.roles)}}catch(e){throw console.error("AuthZeroError",e),new E(e.response?.status||500,e.message)}}}function Mo(){return async e=>{try{let t;if(e){let r={include_totals:!0,per_page:10,page:e.page||0},o=new $e.ManagementClient(ze);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 E(t.response?.status||500,t.message)}}}function Oo(){return async e=>{try{if(e){let t=new $e.ManagementClient(ze),r=await Promise.all([t.users.get({id:e}),t.users.getRoles({id:e})]);return {...r[0],roles:r[1]}}else throw new E(404,"User ID required")}catch(t){throw console.error("AuthZeroError",t),new E(t.response?.status||500,t.message)}}}function No(){return async e=>{try{if(e.user_id){if(e.app_metadata&&await zr(e.user_id,e.app_metadata),e.user_metadata&&await Gr(e.user_id,e.user_metadata),e.roles){let t=new $e.ManagementClient(ze),o=(await t.users.getRoles({id:e.user_id})).map(i=>i.id),n=e.roles.map(i=>i.id),s=n.filter(i=>!o.includes(i)),a=o.filter(i=>!n.includes(i));s.length>0&&await t.users.assignRoles({id:e.user_id},{roles:s}),a.length>0&&await t.users.removeRoles({id:e.user_id},{roles:a});}return {status:"success",message:"User updated!"}}else throw new E(404,"user_id is required")}catch(t){throw console.error("AuthZeroError",t),new E(t.response?.status||500,t.message)}}}function Do(){return async e=>{try{return "NOT USED SERVICE"}catch(t){throw console.error("AuthZeroError",t),new E(t.response?.status||500,t.message)}}}async function zr(e,t){return await new $e.ManagementClient(ze).users.updateAppMetadata({id:e},t)}async function Gr(e,t){return await new $e.ManagementClient(ze).users.updateUserMetadata({id:e},t)}async function Uo(e,t){try{let r=new $e.ManagementClient(ze),o=await r.getUsers({search_engine:"v3",q:`user_metadata.${e}:"${t}"`});for(let n=0;n<o.length;n++){let s=o[n];s.bespoke_user_metadata=s.user_metadata||{},delete s.user_metadata,s.bespoke_roles=(await r.users.getRoles({id:s.user_id})).map(a=>a.name);}return o}catch(r){console.error(r);}}var bs=(e,t,r,o)=>new Promise((n,s)=>{(async()=>{try{let i=await me(e,t,r);if(!i||!i.user)throw new Error("not_authenticated");{let{user:c,source:l}=i,u={...i.user.bespoke_app_metadata||{},...o};l==="custom"&&r.actions?.updateUser?await r.actions.updateUser()({user_id:c.id,app_metadata:u}):await zr(c.id,u),n({error:"",description:`App metadata updated for user ${i.user.email}`});}}catch(i){s({error:i.message,description:"The user does not have an active session or is not authenticated"});}})();}),Ss=bs;var Es=(e,t,r,o)=>new Promise((n,s)=>{(async()=>{try{let i=await me(e,t,r);if(!i||!i.user)throw new Error("not_authenticated");{let{user:c,source:l}=i,u={...c.bespoke_user_metadata||{},...o};l==="custom"&&r.actions?.updateUser?await r.actions.updateUser()({user_id:c.id,user_metadata:u}):await Gr(c.id,u),n({error:"",description:`App metadata updated for user ${c.email}`});}}catch(i){s({error:i.message,description:"The user does not have an active session or is not authenticated"});}})();}),As=Es;var Mt=(e,t)=>t&&typeof t=="string"?t.split(".").reduce((r,o)=>r[o],e):e;function ar(e,t){return e.some(r=>t.includes(r))}function sr(e){return e.filter((t,r,o)=>o.indexOf(t)===r)}var Ts=(e,t,r)=>async function(o,n){let s=await me(o,n,r);if(!s||!s.user){n.status(401).json({error:"not_authenticated",description:"The user does not have an active session or is not authenticated"});return}let a=s.user.bespoke_roles||[];if(t.length>0&&!ar(a,t)){n.status(402).json({error:"unauthorize",description:"The user requires some specific roles"});return}await e(o,n);},_s=Ts;var ws=(e,t,r)=>new Promise((o,n)=>{(async()=>{try{if(t&&r&&t!==""&&r!==""){let a;e.actions?.searchUser?a=await e.actions.searchUser()({[t]:r}):a=await Uo(t,r),o(a);}else n({error:"empty_params",description:"key or value params are empty"});}catch(a){n({error:a.message,description:"Error "});}})();}),ks=ws;var ke=(e=process.env)=>Gt(e.REPORTS_LOGGING);var Ke=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(s=>s.toJSON()),consumers:o.map(s=>s.toJSON()),contentByLocale:Object.fromEntries(n.map(s=>[s.locale,s.toJSON()]))}}};function vs(e){return Ke.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=>(Ke.hasMany(t.block_content,{foreignKey:"id",sourceKey:"id",as:"contentByLocale"}),Ke.belongsToMany(t.block,{through:"block_input",foreignKey:"block_id",otherKey:"input_id",as:"inputs"}),Ke.belongsToMany(t.block,{through:"block_input",foreignKey:"input_id",otherKey:"block_id",as:"consumers"}),Ke)}var Vo=vs;var ir=class extends Model{};function Cs(e){return ir.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}),()=>ir}var qo=Cs;var cr=class extends Model{};function Ls(e){return cr.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}),()=>cr}var $o=Ls;var lr={"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 Ms(e){"@swc/helpers - typeof";return e&&typeof Symbol<"u"&&e.constructor===Symbol?"symbol":typeof e}var Ns=function(e,t){return parseFloat(Math.round(e*Math.pow(10,t))/Math.pow(10,t)).toFixed(t)};function Ds(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 s=r[8+o/3];return {number:Ns(s.scale(n),t),symbol:s.symbol}}function Us(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 jr(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,s=(typeof t>"u"?"undefined":Ms(t))==="object"?t:lr[t]||lr["en-US"],a=s.suffixes.map(Us),i=s.delimiters.decimal||".",c=s.separator||"",l=s.delimiters.thousands||",",p=formatLocale({currency:s.currency||["$",""],decimal:i,grouping:s.grouping||[3],thousands:l}),u;if(r)u=p.format(r)(e);else if(e===0)u="0";else if(n>=3){var m=Ds(p.format(".3r")(e),2,a),f=parseFloat(m.number).toString().replace(".",i),d=m.symbol;u="".concat(f).concat(c).concat(d);}else n===3?u=p.format(",f")(e):e<1&&e>-1?u=p.format(".2g")(e):u=p.format(".3g")(e);return "".concat(o&&u.charAt(0)!=="\u2212"?"\u2212":"").concat(u).replace(/−/g,"-").replace(/(\.[0]*[1-9]*)[0]*$/g,"$1").replace(/\.[0]*$/g,"")}function Wr(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 zo(e,t,r){let o=0,n=1,s=1,a=1,i=0,c=0,l;for(;Math.abs((s-c)/s)>1e-5;)c=s,l=-(t+i)*(t+r+i)*e/(t+2*i)/(t+2*i+1),o=s+l*o,n=a+l*n,i+=1,l=i*(r-i)*e/(t+2*i-1)/(t+2*i),s=o+l*s,a=n+l*a,o/=a,n/=a,s/=a,a=1;return s/t}function Fs(e,t,r){let o,n;if(e<0)n=0;else if(e>=t)n=1;else {e=Math.floor(e);let s=r,a=e+1,i=t-e,c=a+i,l=Math.exp(Wr(c)-Wr(i)-Wr(a)+a*Math.log(s)+i*Math.log(1-s));s<(a+1)/(c+2)?o=l*zo(s,a,i):o=1-l*zo(1-s,i,a),n=1-o;}return Math.round(n*1e5)/1e5}function Vs(e){return {.99999:15.137,.99:6.635,.95:3.841,.9:2.706}[e]}function Ot(e,t,r,o){let n=t/(1-t),s=0,a=1,i=0,c=0;for(;s<=e;)c+=a,s>=r&s<=o&&(i+=a),c>1e30&&(i/=1e30,c/=1e30,a/=1e30),s+=1,a=a*n*(e+1-s)/s;return i/c}function qs(e,t,r){let o=e/t,s=(100-r*100)/2,a,i;if(e===0)a=0;else {let c=o/2,l=0,p=o,u=s/100;for(;p-l>1e-5;)Ot(t,c,e,e)*.5+Ot(t,c,e+1,t)>u?(p=c,c=(l+c)/2):(l=c,c=(p+c)/2);a=c;}if(e===t)i=0;else {let c=(1+o)/2,l=o,p=1,u=s/100;for(;p-l>1e-5;)Ot(t,c,e,e)*.5+Ot(t,c,0,e-1)<u?(p=c,c=(l+c)/2):(l=c,c=(p+c)/2);i=c;}return {lci:a,uci:i}}function $s(e,t){let r=e,o=t,n=r,s=o,a=95,i=.5,c=.5,p=(100-a)/2/100,u=n;for(;c>1e-5;)c/=2,ur((1+u)*i/(1-i),u+1,1e10)+.5*ur((1+u)*i/(1-i),u,u)>p?i-=c:i+=c;let m=(1+u)*i/(1-i)/s;for(i=.5,c=.5,p=(100-a)/2/100;c>1e-5;)c/=2,ur((1+u)*i/(1-i),0,u-1)+.5*ur((1+u)*i/(1-i),u,u)<p?i-=c:i+=c;let d=(1+u)*i/(1-i)/s;return {lci:m,uci:d}}function ur(e,t,r){let o=1,n=0,s=0,a=0;for(;a<e||o>n*1e-10;)n+=o,a>=t&a<=r&&(s+=o),n>1e30&&(s/=1e30,n/=1e30,o/=1e30),a+=1,o=o*e/a;return s/n}var Go={binomialCdf:Fs,binP:Ot,computeMidP:qs,criticalValue:Vs,smr:$s};var He={d3:{...zs,...Gs,...Ks,...Hs},d3plus:{assign:assign,closest:closest,date:date,formatAbbreviate:jr,merge:merge,strip:strip,titleCase:titleCase},stats:Go},Ko={};var xe={UNILATERAL:"uni",MULTILATERAL:"multi"},We={SINGLE:"single",MULTI:"multi"};var Jr={ALLOWED:"allowed",ALLOWED_LOGIC:"allowedLogic",IGNORE_CASCADE:"ignoreCascade"},Xs={ACCESS:"access",ACCESS_LOGIC:"accessLogic"},ei={DISABLED:"disabled"},ti={FALLBACK:"fallback"};var ri={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"},Yr={GENERATOR:"generator",RELATED:"related",VIZ:"visualization",SECTION_FLAG:"section_flag"},Qr="logic",O={...ri,...Yr},Pe={NAME:"name",DESCRIPTION:"description",...Jr,...Xs,...ti,...ei};var pr={FORMATTER:"formatter"},ft={STRING:"string"};var gt=class extends Model{};function ai(e){return gt.init({id:{type:DataTypes.INTEGER,primaryKey:true,autoIncrement:true},name:{type:DataTypes.STRING,defaultValue:""},content:{type:DataTypes.JSONB,defaultValue:{description:"",testValue:"Foo",type:pr.FORMATTER,inputType:ft.STRING,logic:"return n;"}}},{sequelize:e,modelName:"formatter",tableName:"bespoke_reports_formatter",freezeTableName:true,timestamps:false,hooks:{async afterSync(t){let r=await gt.findAll();if(t.force||r.length===0){let o=Object.entries(Ko).map(([n,s])=>({name:n,content:s}));await gt.bulkCreate(o);}}}}),()=>gt}var Wo=ai;var Nt=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 ii(e){return Nt.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=>(Nt.hasMany(t.image_content,{foreignKey:"id",sourceKey:"id",as:"contentByLocale"}),Nt)}var Jo=ii;var dr=class extends Model{};function li(e){return dr.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}),()=>dr}var Yo=li;var Rt=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 pi(e){return Rt.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=>(Rt.hasMany(t.dimension,{foreignKey:"report_id",sourceKey:"id",as:"dimensions"}),Rt.hasMany(t.section,{foreignKey:"report_id",sourceKey:"id",as:"sections"}),Rt)}var Qo=pi;var bt=class extends Model{toJSON(){let t=this.get({plain:true}),{variants:r=[]}=this;return {...t,variants:r.map(o=>o.toJSON())}}};function mi(e){return bt.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=>(bt.hasMany(t.variant,{foreignKey:"dimension_id",sourceKey:"id",as:"variants",constraints:false}),bt.belongsTo(t.report,{foreignKey:"report_id",targetKey:"id",as:"report",constraints:false}),bt)}var Zo=mi;var St=class extends Model{get report(){return this.dimension?.report}toJSON(){return this.get({plain:true})}};function gi(e){return St.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=>(St.hasMany(t.search,{foreignKey:"variant_id",sourceKey:"id",as:"members",constraints:false}),St.belongsTo(t.dimension,{foreignKey:"dimension_id",targetKey:"id",as:"dimension",constraints:false}),St)}var Xo=gi;var Te=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 Ri(e){return Te.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=>(Te.belongsTo(t.variant,{foreignKey:"variant_id",targetKey:"id",as:"variant",constraints:false}),Te.belongsTo(t.dimension,{foreignKey:"dimension_id",targetKey:"id",as:"dimension",constraints:false}),Te.belongsTo(t.report,{foreignKey:"report_id",targetKey:"id",as:"report",constraints:false}),Te.belongsTo(t.image,{foreignKey:"image_id",targetKey:"id",as:"image",constraints:false}),Te.hasMany(t.search_content,{foreignKey:"id",sourceKey:"content_id",as:"contentByLocale"}),Te)}var en=Ri;var mr=class extends Model{};function bi(e){return mr.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}),()=>mr}var tn=bi;var Ut=class extends Model{toJSON(){let t=this.get({plain:true}),{blocks:r=[]}=this;return {...t,blocks:r.map(o=>o.toJSON())}}};function Ei(e){return Ut.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=>(Ut.hasMany(t.block,{foreignKey:"section_id",sourceKey:"id",as:"blocks"}),Ut)}var rn=Ei;var gr=class extends Model{};function Ti(e){return gr.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}),()=>fr}var tn=Ri;var rn={block:Uo,block_content:Fo,block_input:Vo,formatter:Ho,image:jo,image_content:Wo,report:Jo,dimension:Yo,variant:Qo,search:Zo,search_content:Xo,section:en,datasource:tn};var Zr=ke(),on=process.env.REPORTS_DB_CONNECTION||"";if(!on)throw new Error(`
6
+ };`,testUrl:""}}},{sequelize:e,modelName:"datasource",tableName:"bespoke_reports_data_source",freezeTableName:true,timestamps:false}),()=>gr}var on=Ti;var nn={block:Vo,block_content:qo,block_input:$o,formatter:Wo,image:Jo,image_content:Yo,report:Qo,dimension:Zo,variant:Xo,search:en,search_content:tn,section:rn,datasource:on};var eo=ke(),an=process.env.REPORTS_DB_CONNECTION||"";if(!an)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 Ze=async()=>{if(global.sequelize){Zr&&console.info("\u267B\uFE0F RE-UTILIZING DB CONNECTION");let e=global.sequelize.sequelize;if(e)try{return await e.authenticate(),global.sequelize}catch(t){Zr&&console.warn(`\u26A0\uFE0F CONNECTION INACTIVE, REINITIALIZING: ${t.message}`),delete global.sequelize;}}if(!global.sequelize){Zr&&console.info("\u{1F511} INITIALIZING DB CONNECTION");let e;try{e=new Sequelize(on,{logging:!1,dialectModule:hi,pool:{max:10,min:1,acquire:5*1e3,idle:10*1e3,evict:1*1e3}});}catch(t){throw new Error(`
9
+ `);var Ze=async()=>{if(global.sequelize){eo&&console.info("\u267B\uFE0F RE-UTILIZING DB CONNECTION");let e=global.sequelize.sequelize;if(e)try{return await e.authenticate(),global.sequelize}catch(t){eo&&console.warn(`\u26A0\uFE0F CONNECTION INACTIVE, REINITIALIZING: ${t.message}`),delete global.sequelize;}}if(!global.sequelize){eo&&console.info("\u{1F511} INITIALIZING DB CONNECTION");let e;try{e=new Sequelize(an,{logging:!1,dialectModule:_i,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
- `)}Object.values(rn).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),`
14
+ `)}Object.values(nn).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 Ei=()=>{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}},K=Ei;function H(e){let t={"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#x27;":"'","&#x60;":"`","&nbsp;":""},r=`(?:${Object.keys(t).join("|")})`,o=RegExp(r),n=RegExp(r,"g"),s=String(e).replace(/<[^>]+>/g," ").replace(/\s+/g," ").trim();return o.test(s)?s.replace(n,a=>t[a]):s}function Ft(e){return typeof e=="string"?String(e).replace(/&([a-z0-9]+|#[0-9]{1,6}|#x[0-9a-f]{1,6});/ig," "):e}function Ti(e){return e?Ai(Ft(H(e)),{replacement:"-",remove:/[*+~.()'"!:@]/g,lower:true,strict:true,trim:true}):""}var yr=Ti;var Vt=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 nn={jwt:_i};var an=(e,t={},r="en",o={},n={})=>{let s={setVariables:o.onSetVariables?o.onSetVariables:c=>c,openModal:o.onOpenModal?o.onOpenModal:c=>c,formatters:t,libs:He,locale:r,...n};function a(c){return Function("globals",...c.vars,`with (globals) { ${c.logic} }`).bind(s,s)}function i(c){if(c.vars&&c.logic)return a(c);for(let l in c)Array.isArray(c[l])?c[l]=c[l].map(p=>isObject(p)?i(p):p):isObject(c[l])&&(c[l]=i(c[l]));return c}return i(e)},Rr=(e,t={})=>{let r={libs:nn,...t};function o(s){return Function("globals",...s.vars,`with (globals) { ${s.logic} }`).bind(r,r)}function n(s){if(s.vars&&s.logic)return o(s);for(let a in s)Array.isArray(s[a])?s[a]=s[a].map(i=>isObject(i)?n(i):i):isObject(s[a])&&(s[a]=n(s[a]));return s}return n(e)};function ki(){let{publicRuntimeConfig:e}=wi(),t=e.bespoke_report_env_vars||{};return {...Object.keys(t).reduce((r,o)=>(r[`ENV_${o}`]=t[o]||"N/A",r),{})}}var pe=ki;function Pi(){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 Et=Pi;var{localeDefault:vi}=K();function fe(e){return {variables:e.variables||{},query:e.query||{},locale:e.locale||vi}}function Xr(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=Ci;function Ci(e,t,r,o=false){let{variables:n}=fe(r);if(!e)return e;let s=/([A-z0-9]*)\{\{([^\}]+)\}\}/g;return e.replace(s,(i,c,l)=>{let p=m=>m;if(c){let m=c.replace(/^\w/g,f=>f.toLowerCase());m in t?p=t[m]:p=f=>`${c}${f}`;}let u=Array.isArray(n[l])?Xr(n[l]):n[l];if(u===void 0)return o?i:"N/A";try{return p(u,He,t)}catch(m){return console.error(`Error using formatter ${p.name}
17
- `,`Error message: ${m.message}`),"N/A"}})}function Li(e,t){return e.some(r=>t.includes(`role.${r}`))}function hr(e){return async t=>{let{url:r,method:o,timeout:n,wrapper:s=true,session:a}=t,i=n||process.env.NEXT_PUBLIC_REPORTS_API_FETCH_TIMEOUT||0,c={url:r,method:o||"GET",timeout:i},l=pe(),p=Et(),u=null;a&&a.user&&(u={user:a.user,status:"authenticated",isLoading:false,update:async()=>a});let m={envs:{...l,...p},...u?{session:u}:{}};try{let d=(await e.datasource.findAll({where:literal("(content->>'useProxy')::boolean = true"),order:[literal("(content->>'order')::integer ASC NULLS LAST")]})).map(R=>{let S={...l};return {...R.toJSON(),patternSwapped:ye(R.content.pattern,{},{variables:S})}}).find(R=>{if(!R.content?.pattern)return !1;try{return new RegExp(R.patternSwapped,"gm").test(c.url)}catch{return !1}});if(d){let R=t.user_roles&&Array.isArray(t.user_roles)?t.user_roles:[],S=d.content.access&&Array.isArray(d.content.access)?d.content.access:[];if(d.content.logic&&(S.length===0||S.includes("public")||S.includes("guest")&&R.length===0||S.includes("private")&&R.length>0||Li(R,S))){let P=await Rr({vars:["url","libs","session"],logic:d.content.logic},m)(c.url);if(P.axiosConfig)c=P.axiosConfig;else throw new E(500,`AxiosConfig is missing in Data Source ${d.name} (ID: ${d.id}).`)}else throw new E(401,`Query not allowed because user roles. Data Source ${d.name} (ID: ${d.id}).`)}let h=await Pr.request(c);return {ok:!0,wrapper:s,status:h.status,data:h.data}}catch(f){throw new E(f.response?.status||500,f.message)}}}var{localeDefault:eo}=K();function ln(e){let{search:t,search_content:r}=e,o=hr(e);return n;async function n(a){let{id:i,config:c={},settings:l={}}=a,p=c[eo]?eo:Object.keys(c)[0],{overrideNames:u,overrideAttributes:m}=Vt(l),{accessor:f,path:d,idKey:h,labelKey:R}=c[eo];if(!d||!h||!R)return;let S=await o({url:d}).catch(q=>({data:[],error:q}));if("error"in S)throw new E(500,`Failed to fetch members: ${S.error}`);let x=Mt(S.data,f),P=[];try{console.info(`Ingesting default items for variant ${a.name} for ${p}`),P=await s(a,p,x);}catch(q){let B=`[ERROR] Ingesting default member items for ${p}`;throw console.error(B,q),new E(500,B)}let F=await t.findAll({where:{variant_id:i}}).then(q=>Object.fromEntries(q.map(B=>[B.id,{content_id:B.content_id,needsUpdate:P.includes(B.content_id)}]))),w=Object.entries(c).map(async([q,B])=>{let{path:D,accessor:_,idKey:L,labelKey:U,attributes:C=[]}=B;if(!D||!L||!U)return;let $=await o({url:D}).catch(A=>({data:[],error:A}));if("error"in $)throw new E(500,`Failed to fetch members for locale ${q}: ${$.error}`);let M=Mt($.data,_),k=await r.findAll({where:{id:P,locale:q}}).then(A=>Object.fromEntries(A.map(b=>[b.id,b.toJSON()]))),j=M.filter(A=>typeof A[L]<"u"&&A[L]!==""&&typeof A[U]<"u"&&A[U]!=="").map(A=>{let b=F[A[L]],T,I=Object.fromEntries(C.map(ne=>[ne.name,ne.type==="constant"?ne.value:A[ne.value]||""]));return b.needsUpdate&&k[b.content_id]?(T={...k[b.content_id]},u&&(T.name=A[U]),m&&(T.attributes=I)):T={id:b.content_id,locale:q,name:A[U],attributes:I},T});try{return r.bulkCreate(j,{updateOnDuplicate:["name","attributes"]})}catch(A){let b=`[ERROR] Ingesting search content items for ${q}`;throw console.error(b,A),new E(500,b)}});await Promise.all(w);}async function s(a,i,c){let{id:l,dimension_id:p,slug:u}=a,{report_id:m}=a.dimension,{idKey:f,labelKey:d,zValueKey:h}=a.config[i],{overrideNames:R,regenerateSlugs:S,keepOldMembers:x,overrideRelevance:P,overrideAttributes:F}=Vt(a.settings),w=t.findAll({attributes:["slug",[fn$1("COUNT",col("variant.id")),"slugCount"]],include:{association:"variant",attributes:[],required:false,right:true,where:{dimension_id:p,slug:u,id:{[Op.not]:l}}},group:"search.slug"}).then(b=>Object.fromEntries(b.map(T=>{let I=T.getDataValue("slugCount");return [T.slug,Number.parseInt(`${I}`,10)]}))),q=t.findAll({where:{variant_id:l}}).then(b=>Object.fromEntries(b.map(T=>[T.id,T.toJSON()]))),[B,D]=await Promise.all([w,q]),_=Object.values(D).map(b=>b.slug),L=[],U=null,C=null;if(h&&h!==""){for(let b of c)if(typeof b[h]=="number"&&!isNaN(b[h])){let T=b[h];(U===null||T<U)&&(U=T),(C===null||T>C)&&(C=T);}}let $=[],M=[],k=[],j=false;c.filter(b=>b[f]&&b[f]!==""&&b[d]&&b[d]!=="").forEach(b=>{let T=b[f],I=yr(b[d]);j=false;let ne=parseFloat(Math.random().toPrecision(5));if(h&&h!==""&&U&&C&&b[h]){let ae;try{ae=parseInt(b[h],10);}catch{ae=0;}let Z=C!==null&&U!==null&&C!==U?(ae-U)/(C-U):0;ne=C===U?1:parseFloat(Z.toPrecision(5));}if(D[T]){if(R||S||P||F){let ae=D[T];if((R||F)&&k.push(ae.content_id),R&&S){let Z=Object.values(D).filter(V=>V.id!==T).map(V=>V.slug),J=B[I]||Z.includes[I]||L.includes(I);J&&console.warn("Duplicate slug!",I,"replaced by",`${I}-${T}`);let ie=J?`${I}-${T}`:I;ae.slug!==ie&&(ae.slug=ie,L.push(I),j=true,console.info("UPDATE SLUG",T,I));}h&&h!==""&&P&&ae.zvalue!==ne&&(ae.zvalue=ne,j=true,console.warn("UPDATE ZVALUE",T,ne)),j&&M.push(ae);}}else {console.info("INSERT ID",T);let ae=B[I]||_.includes[I]||L.includes(I);ae&&console.warn("Duplicate slug!",I,"replaced by",`${I}-${T}`);let Z=ae?`${I}-${T}`:I;L.push(I),$.push({id:T,slug:Z,variant_id:l,dimension_id:p,report_id:m,zvalue:ne});}});let A=[];if(!x){let b=c.map(T=>T[f]);A=Object.keys(D).filter(T=>!b.includes(T));}try{return ($.length>0||M.length>0)&&(await t.bulkCreate([...$,...M],{updateOnDuplicate:["slug","zvalue"]}),console.info("New members ingested:",$.length),console.info("New members updated:",M.length)),A.length>0&&(await t.destroy({where:{id:{[Op.in]:A},variant_id:l}}),console.warn("Old members deleted:",A.length)),k}catch(b){throw console.error(`[ERROR] Ingesting search members for ${i}`,b),new Error(b)}}}var Ui=Gt(process.env.NEXT_PUBLIC_REPORTS_DEBUG);function un(e){let{search:t}=e;return r;async function r(o){let{all:n,locale:s,mode:a,variant:i,output:c,allowNulls:l}=o,p={content_id:[],...i&&i.length?{variant_id:i}:{}};if(a==="content_ids")p.content_id=o.content_ids;else if(a==="ids"){if(n)throw new E(400,"Search by ids doesn't support locale all. Pick one locale.");let d={id:o.ids,...i&&i.length?{variant_id:i}:{}},h=await t.findAll({attributes:["content_id"],where:d,include:[{association:"contentByLocale",where:{locale:s}}]});p.content_id=h.map(R=>R.content_id);}else if(a==="slugs"){let d=o.slugs.map(R=>t.findAll({attributes:["content_id"],where:{slug:R.memberSlug},include:{association:"variant",attributes:["id","name","slug"],required:true,where:{slug:R.variantSlug}}})),h=await Promise.all(d).then(R=>R.reduce((S,x)=>S.concat(x),[]));p.content_id=h.map(R=>R.content_id);}else if(a==="related"){let d=()=>{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)}},h=()=>o.include_ids?.length?{[Op.in]:o.include_ids.map(S=>S)}:false,R=await t.findAll({attributes:["content_id"],where:{...d(),content_id:h()||{[Op.notIn]:o.current_ids},visible:true},order:[Sequelize.fn("RANDOM")],limit:o.related||4});p.content_id=R.map(S=>S.content_id);}else if(a==="whole"){let d={...i&&i.length?{variant_id:i}:{}},h=await t.findAll({attributes:["content_id"],where:d});p.content_id=h.map(R=>R.content_id);}let u={locale:n?{[Op.ne]:null}:s},m=await t.findAll({where:p,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:u}]},{association:"contentByLocale",where:u}]});if(!l&&!["related","whole"].includes(a)&&o[a]&&m.length!==o[a].length)throw Ui&&console.error("Error in read members. The number of members requested doesn't match the number of members found.",JSON.stringify(o)),new E(404,"One or more members were not found. "+JSON.stringify(o));m.sort((d,h)=>p.content_id.indexOf(d.content_id)-p.content_id.indexOf(h.content_id));let f=m.map(d=>{let h,R={id:d.id,slug:d.slug,visible:d.visible,zvalue:d.zvalue,content_id:d.content_id,report_id:d.report_id,report_name:d.report.name,dimension_id:d.dimension_id,dimension_name:d.dimension.name,dimension_ordering:d.dimension.ordering,variant_id:d.variant_id,variant_name:d.variant.name,variant_slug:d.variant.slug};if(n){let S=d.contentByLocale;R.contentByLocale=S,R.image=d.image,R.image_id=d.image_id,h=R;}else {let S=d.getContent(s),x=d.image?.getContent(s),P=x&&{id:d.image.id,author:d.image.author,url:d.image.url,license:d.image.license,meta:x.meta};h={...R,locale:S.locale,name:S.name,attributes:S.attributes,keywords:S.keywords,image:P||null,image_id:d.image_id};}return c==="lite"&&(delete h.image,delete h.image_id),h});return {meta:o,results:f}}}function pn(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 Vi(e,t=true){if(!e)return "";let r=Ft(H(e.toLowerCase()));return (t?Ai(r,{replacement:" ",remove:/[*+~.()'"!:@-]/g,lower:true,strict:false,trim:true}):r).replace(/\s\s+/g," ")}var Xe=Vi;var qt=[{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"]}],br=qt.reduce((e,t)=>e.concat(t.locales),[]);var At=ke(),{locales:$i}=K(),zi=$i.filter(e=>br.includes(e)),ro=false,Gi=async(e,t=false)=>{if(t&&(At&&console.info("0\uFE0F\u20E3 CLEARING SEARCH INDEX"),global.flexsearch=void 0,ro=false),global.flexsearch)return At&&console.info("\u{1F501} RE-UTILIZING SEARCH INDEX"),global.flexsearch;try{ro||(At&&console.info("1\uFE0F\u20E3 INITIALIZING SEARCH INDEX"),ro=!0,global.flexsearch=await Ki(e));}catch(r){throw new Error(`
16
+ `,t.stack||t.message),global.sequelize=void 0;}).then(()=>({...e.models,sequelize:e}));}return global.sequelize};var xi=()=>{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}},K=xi;function H(e){let t={"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#x27;":"'","&#x60;":"`","&nbsp;":""},r=`(?:${Object.keys(t).join("|")})`,o=RegExp(r),n=RegExp(r,"g"),s=String(e).replace(/<[^>]+>/g," ").replace(/\s+/g," ").trim();return o.test(s)?s.replace(n,a=>t[a]):s}function Ft(e){return typeof e=="string"?String(e).replace(/&([a-z0-9]+|#[0-9]{1,6}|#x[0-9a-f]{1,6});/ig," "):e}function vi(e){return e?Pi(Ft(H(e)),{replacement:"-",remove:/[*+~.()'"!:@]/g,lower:true,strict:true,trim:true}):""}var yr=vi;var Vt=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 sn={jwt:Ii};var cn=(e,t={},r="en",o={},n={})=>{let s={setVariables:o.onSetVariables?o.onSetVariables:c=>c,openModal:o.onOpenModal?o.onOpenModal:c=>c,formatters:t,libs:He,locale:r,...n};function a(c){return Function("globals",...c.vars,`with (globals) { ${c.logic} }`).bind(s,s)}function i(c){if(c.vars&&c.logic)return a(c);for(let l in c)Array.isArray(c[l])?c[l]=c[l].map(p=>isObject(p)?i(p):p):isObject(c[l])&&(c[l]=i(c[l]));return c}return i(e)},hr=(e,t={})=>{let r={libs:sn,...t};function o(s){return Function("globals",...s.vars,`with (globals) { ${s.logic} }`).bind(r,r)}function n(s){if(s.vars&&s.logic)return o(s);for(let a in s)Array.isArray(s[a])?s[a]=s[a].map(i=>isObject(i)?n(i):i):isObject(s[a])&&(s[a]=n(s[a]));return s}return n(e)};function Bi(){let{publicRuntimeConfig:e}=Ci(),t=e.bespoke_report_env_vars||{};return {...Object.keys(t).reduce((r,o)=>(r[`ENV_${o}`]=t[o]||"N/A",r),{})}}var pe=Bi;function Li(){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 Et=Li;var{localeDefault:Ni}=K();function fe(e){return {variables:e.variables||{},query:e.query||{},locale:e.locale||Ni}}function to(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 ge=Di;function Di(e,t,r,o=false){let{variables:n}=fe(r);if(!e)return e;let s=/([A-z0-9]*)\{\{([^\}]+)\}\}/g;return e.replace(s,(i,c,l)=>{let p=m=>m;if(c){let m=c.replace(/^\w/g,f=>f.toLowerCase());m in t?p=t[m]:p=f=>`${c}${f}`;}let u=Array.isArray(n[l])?to(n[l]):n[l];if(u===void 0)return o?i:"N/A";try{return p(u,He,t)}catch(m){return console.error(`Error using formatter ${p.name}
17
+ `,`Error message: ${m.message}`),"N/A"}})}function Fi(e,t){return e.some(r=>t.includes(`role.${r}`))}function br(e){return async t=>{let{url:r,method:o,timeout:n,wrapper:s=true,session:a}=t,i=n||process.env.NEXT_PUBLIC_REPORTS_API_FETCH_TIMEOUT||0,c={url:r,method:o||"GET",timeout:i},l=pe(),p=Et(),u=null;a&&a.user&&(u={user:a.user,status:"authenticated",isLoading:false,update:async()=>a});let m={envs:{...l,...p},...u?{session:u}:{}};try{let d=(await e.datasource.findAll({where:literal("(content->>'useProxy')::boolean = true"),order:[literal("(content->>'order')::integer ASC NULLS LAST")]})).map(R=>{let S={...l};return {...R.toJSON(),patternSwapped:ge(R.content.pattern,{},{variables:S})}}).find(R=>{if(!R.content?.pattern)return !1;try{return new RegExp(R.patternSwapped,"gm").test(c.url)}catch{return !1}});if(d){let R=t.user_roles&&Array.isArray(t.user_roles)?t.user_roles:[],S=d.content.access&&Array.isArray(d.content.access)?d.content.access:[];if(d.content.logic&&(S.length===0||S.includes("public")||S.includes("guest")&&R.length===0||S.includes("private")&&R.length>0||Fi(R,S))){let x=await hr({vars:["url","libs","session"],logic:d.content.logic},m)(c.url);if(x.axiosConfig)c=x.axiosConfig;else throw new E(500,`AxiosConfig is missing in Data Source ${d.name} (ID: ${d.id}).`)}else throw new E(401,`Query not allowed because user roles. Data Source ${d.name} (ID: ${d.id}).`)}let h=await Pr.request(c);return {ok:!0,wrapper:s,status:h.status,data:h.data}}catch(f){throw new E(f.response?.status||500,f.message)}}}var{localeDefault:ro}=K();function pn(e){let{search:t,search_content:r}=e,o=br(e);return n;async function n(a){let{id:i,config:c={},settings:l={}}=a,p=c[ro]?ro:Object.keys(c)[0],{overrideNames:u,overrideAttributes:m}=Vt(l),{accessor:f,path:d,idKey:h,labelKey:R}=c[ro];if(!d||!h||!R)return;let S=await o({url:d}).catch(q=>({data:[],error:q}));if("error"in S)throw new E(500,`Failed to fetch members: ${S.error}`);let P=Mt(S.data,f),x=[];try{console.info(`Ingesting default items for variant ${a.name} for ${p}`),x=await s(a,p,P);}catch(q){let B=`[ERROR] Ingesting default member items for ${p}`;throw console.error(B,q),new E(500,B)}let F=await t.findAll({where:{variant_id:i}}).then(q=>Object.fromEntries(q.map(B=>[B.id,{content_id:B.content_id,needsUpdate:x.includes(B.content_id)}]))),w=Object.entries(c).map(async([q,B])=>{let{path:D,accessor:_,idKey:L,labelKey:U,attributes:C=[]}=B;if(!D||!L||!U)return;let $=await o({url:D}).catch(A=>({data:[],error:A}));if("error"in $)throw new E(500,`Failed to fetch members for locale ${q}: ${$.error}`);let M=Mt($.data,_),k=await r.findAll({where:{id:x,locale:q}}).then(A=>Object.fromEntries(A.map(b=>[b.id,b.toJSON()]))),j=M.filter(A=>typeof A[L]<"u"&&A[L]!==""&&typeof A[U]<"u"&&A[U]!=="").map(A=>{let b=F[A[L]],T,v=Object.fromEntries(C.map(ne=>[ne.name,ne.type==="constant"?ne.value:A[ne.value]||""]));return b.needsUpdate&&k[b.content_id]?(T={...k[b.content_id]},u&&(T.name=A[U]),m&&(T.attributes=v)):T={id:b.content_id,locale:q,name:A[U],attributes:v},T});try{return r.bulkCreate(j,{updateOnDuplicate:["name","attributes"]})}catch(A){let b=`[ERROR] Ingesting search content items for ${q}`;throw console.error(b,A),new E(500,b)}});await Promise.all(w);}async function s(a,i,c){let{id:l,dimension_id:p,slug:u}=a,{report_id:m}=a.dimension,{idKey:f,labelKey:d,zValueKey:h}=a.config[i],{overrideNames:R,regenerateSlugs:S,keepOldMembers:P,overrideRelevance:x,overrideAttributes:F}=Vt(a.settings),w=t.findAll({attributes:["slug",[fn("COUNT",col("variant.id")),"slugCount"]],include:{association:"variant",attributes:[],required:false,right:true,where:{dimension_id:p,slug:u,id:{[Op.not]:l}}},group:"search.slug"}).then(b=>Object.fromEntries(b.map(T=>{let v=T.getDataValue("slugCount");return [T.slug,Number.parseInt(`${v}`,10)]}))),q=t.findAll({where:{variant_id:l}}).then(b=>Object.fromEntries(b.map(T=>[T.id,T.toJSON()]))),[B,D]=await Promise.all([w,q]),_=Object.values(D).map(b=>b.slug),L=[],U=null,C=null;if(h&&h!==""){for(let b of c)if(typeof b[h]=="number"&&!isNaN(b[h])){let T=b[h];(U===null||T<U)&&(U=T),(C===null||T>C)&&(C=T);}}let $=[],M=[],k=[],j=false;c.filter(b=>b[f]&&b[f]!==""&&b[d]&&b[d]!=="").forEach(b=>{let T=b[f],v=yr(b[d]);j=false;let ne=parseFloat(Math.random().toPrecision(5));if(h&&h!==""&&U&&C&&b[h]){let ae;try{ae=parseInt(b[h],10);}catch{ae=0;}let Z=C!==null&&U!==null&&C!==U?(ae-U)/(C-U):0;ne=C===U?1:parseFloat(Z.toPrecision(5));}if(D[T]){if(R||S||x||F){let ae=D[T];if((R||F)&&k.push(ae.content_id),R&&S){let Z=Object.values(D).filter(V=>V.id!==T).map(V=>V.slug),J=B[v]||Z.includes[v]||L.includes(v);J&&console.warn("Duplicate slug!",v,"replaced by",`${v}-${T}`);let ie=J?`${v}-${T}`:v;ae.slug!==ie&&(ae.slug=ie,L.push(v),j=true,console.info("UPDATE SLUG",T,v));}h&&h!==""&&x&&ae.zvalue!==ne&&(ae.zvalue=ne,j=true,console.warn("UPDATE ZVALUE",T,ne)),j&&M.push(ae);}}else {console.info("INSERT ID",T);let ae=B[v]||_.includes[v]||L.includes(v);ae&&console.warn("Duplicate slug!",v,"replaced by",`${v}-${T}`);let Z=ae?`${v}-${T}`:v;L.push(v),$.push({id:T,slug:Z,variant_id:l,dimension_id:p,report_id:m,zvalue:ne});}});let A=[];if(!P){let b=c.map(T=>T[f]);A=Object.keys(D).filter(T=>!b.includes(T));}try{return ($.length>0||M.length>0)&&(await t.bulkCreate([...$,...M],{updateOnDuplicate:["slug","zvalue"]}),console.info("New members ingested:",$.length),console.info("New members updated:",M.length)),A.length>0&&(await t.destroy({where:{id:{[Op.in]:A},variant_id:l}}),console.warn("Old members deleted:",A.length)),k}catch(b){throw console.error(`[ERROR] Ingesting search members for ${i}`,b),new Error(b)}}}var Gi=Gt(process.env.NEXT_PUBLIC_REPORTS_DEBUG);function dn(e){let{search:t}=e;return r;async function r(o){let{all:n,locale:s,mode:a,variant:i,output:c,allowNulls:l}=o,p={content_id:[],...i&&i.length?{variant_id:i}:{}};if(a==="content_ids")p.content_id=o.content_ids;else if(a==="ids"){if(n)throw new E(400,"Search by ids doesn't support locale all. Pick one locale.");let d={id:o.ids,...i&&i.length?{variant_id:i}:{}},h=await t.findAll({attributes:["content_id"],where:d,include:[{association:"contentByLocale",where:{locale:s}}]});p.content_id=h.map(R=>R.content_id);}else if(a==="slugs"){let d=o.slugs.map(R=>t.findAll({attributes:["content_id"],where:{slug:R.memberSlug},include:{association:"variant",attributes:["id","name","slug"],required:true,where:{slug:R.variantSlug}}})),h=await Promise.all(d).then(R=>R.reduce((S,P)=>S.concat(P),[]));p.content_id=h.map(R=>R.content_id);}else if(a==="related"){let d=()=>{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)}},h=()=>o.include_ids?.length?{[Op.in]:o.include_ids.map(S=>S)}:false,R=await t.findAll({attributes:["content_id"],where:{...d(),content_id:h()||{[Op.notIn]:o.current_ids},visible:true},order:[Sequelize.fn("RANDOM")],limit:o.related||4});p.content_id=R.map(S=>S.content_id);}else if(a==="whole"){let d={...i&&i.length?{variant_id:i}:{}},h=await t.findAll({attributes:["content_id"],where:d});p.content_id=h.map(R=>R.content_id);}let u={locale:n?{[Op.ne]:null}:s},m=await t.findAll({where:p,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:u}]},{association:"contentByLocale",where:u}]});if(!l&&!["related","whole"].includes(a)&&o[a]&&m.length!==o[a].length)throw Gi&&console.error("Error in read members. The number of members requested doesn't match the number of members found.",JSON.stringify(o)),new E(404,"One or more members were not found. "+JSON.stringify(o));m.sort((d,h)=>p.content_id.indexOf(d.content_id)-p.content_id.indexOf(h.content_id));let f=m.map(d=>{let h,R={id:d.id,slug:d.slug,visible:d.visible,zvalue:d.zvalue,content_id:d.content_id,report_id:d.report_id,report_name:d.report.name,dimension_id:d.dimension_id,dimension_name:d.dimension.name,dimension_ordering:d.dimension.ordering,variant_id:d.variant_id,variant_name:d.variant.name,variant_slug:d.variant.slug};if(n){let S=d.contentByLocale;R.contentByLocale=S,R.image=d.image,R.image_id=d.image_id,h=R;}else {let S=d.getContent(s),P=d.image?.getContent(s),x=P&&{id:d.image.id,author:d.image.author,url:d.image.url,license:d.image.license,meta:P.meta};h={...R,locale:S.locale,name:S.name,attributes:S.attributes,keywords:S.keywords,image:x||null,image_id:d.image_id};}return c==="lite"&&(delete h.image,delete h.image_id),h});return {meta:o,results:f}}}function mn(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 Hi(e,t=true){if(!e)return "";let r=Ft(H(e.toLowerCase()));return (t?Pi(r,{replacement:" ",remove:/[*+~.()'"!:@-]/g,lower:true,strict:false,trim:true}):r).replace(/\s\s+/g," ")}var Xe=Hi;var qt=[{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"]}],Sr=qt.reduce((e,t)=>e.concat(t.locales),[]);var At=ke(),{locales:Wi}=K(),Ji=Wi.filter(e=>Sr.includes(e)),no=false,Yi=async(e,t=false)=>{if(t&&(At&&console.info("0\uFE0F\u20E3 CLEARING SEARCH INDEX"),global.flexsearch=void 0,no=false),global.flexsearch)return At&&console.info("\u{1F501} RE-UTILIZING SEARCH INDEX"),global.flexsearch;try{no||(At&&console.info("1\uFE0F\u20E3 INITIALIZING SEARCH INDEX"),no=!0,global.flexsearch=await Qi(e));}catch(r){throw new Error(`
18
18
  Could not initialize FlexSearch engine.
19
19
  Details:
20
20
  ${r.message}
21
- `)}return global.flexsearch};async function Ki(e){let t=await e.search.findAll({include:[{association:"contentByLocale"}]});At&&console.info("\u{1F3F3}\uFE0F INITIALIZING FLEXSEARCH");let r=zi.map(async o=>{At&&console.info(`\u{1F3F3}\uFE0F INITIALIZING FLEXSEARCH ${o} LOCALE`);let n=qt.find(p=>p.locales.includes(o)),s=n?.charset||"latin",a=s==="latin"?"advanced":"default";n?console.info(` Charset for ${o}: ${s}`):At&&console.error(` Missing charset for ${o}, adding latin as default.`);let i=(await import(`flexsearch/dist/module/lang/${s}/${a}`)).default,c=new qi.Document({language:o,encode:i.encode,tokenize:"reverse",stemmer:{},matcher:{},filter:[],preset:"default",cache:100,resolution:9,context:false,optimize:true,worker:false,document:{id:"content_id",store:false,index:["id","name","clean","keywords","attributes"]}}),l=0;return t.forEach(p=>{let u=p.contentByLocale.find(m=>m.locale===o);if(u){let m=Xe(u.name,s!=="arabic"),f=Array.isArray(u.keywords)?u.keywords.map(h=>Xe(h,s!=="arabic")):null,d={id:p.id,content_id:p.content_id,name:u.name,keywords:f,attributes:u.attributes,clean:m};c.add(d),l++;}}),console.info(`\u{1F3F3}\uFE0F Indexed for ${o}: ${l} elements`),[o,c]});return Object.fromEntries(await Promise.all(r))}var et=Gi;var Tt=process.env.REPORTS_EXTERNAL_SEARCH,Ie=ke(),{locales:Hi}=K(),ji=Hi.filter(e=>br.includes(e)),oo=false,Wi=async(e=false)=>{if(e&&(Ie&&console.info("0\uFE0F\u20E3 CLEARING SEARCH INDEX"),global.typesense=void 0,oo=false),global.typesense)return Ie&&console.info("\u{1F501} RE-UTILIZING SEARCH INDEX"),global.typesense;try{oo||(Ie&&console.info("1\uFE0F\u20E3 INITIALIZING SEARCH INDEX"),oo=!0,global.typesense=await Yi());}catch(t){throw new Error(`
21
+ `)}return global.flexsearch};async function Qi(e){let t=await e.search.findAll({include:[{association:"contentByLocale"}]});At&&console.info("\u{1F3F3}\uFE0F INITIALIZING FLEXSEARCH");let r=Ji.map(async o=>{At&&console.info(`\u{1F3F3}\uFE0F INITIALIZING FLEXSEARCH ${o} LOCALE`);let n=qt.find(p=>p.locales.includes(o)),s=n?.charset||"latin",a=s==="latin"?"advanced":"default";n?console.info(` Charset for ${o}: ${s}`):At&&console.error(` Missing charset for ${o}, adding latin as default.`);let i=(await import(`flexsearch/dist/module/lang/${s}/${a}`)).default,c=new ji.Document({language:o,encode:i.encode,tokenize:"reverse",stemmer:{},matcher:{},filter:[],preset:"default",cache:100,resolution:9,context:false,optimize:true,worker:false,document:{id:"content_id",store:false,index:["id","name","clean","keywords","attributes"]}}),l=0;return t.forEach(p=>{let u=p.contentByLocale.find(m=>m.locale===o);if(u){let m=Xe(u.name,s!=="arabic"),f=Array.isArray(u.keywords)?u.keywords.map(h=>Xe(h,s!=="arabic")):null,d={id:p.id,content_id:p.content_id,name:u.name,keywords:f,attributes:u.attributes,clean:m};c.add(d),l++;}}),console.info(`\u{1F3F3}\uFE0F Indexed for ${o}: ${l} elements`),[o,c]});return Object.fromEntries(await Promise.all(r))}var et=Yi;var Tt=process.env.REPORTS_EXTERNAL_SEARCH,ve=ke(),{locales:Zi}=K(),Xi=Zi.filter(e=>Sr.includes(e)),ao=false,ec=async(e=false)=>{if(e&&(ve&&console.info("0\uFE0F\u20E3 CLEARING SEARCH INDEX"),global.typesense=void 0,ao=false),global.typesense)return ve&&console.info("\u{1F501} RE-UTILIZING SEARCH INDEX"),global.typesense;try{ao||(ve&&console.info("1\uFE0F\u20E3 INITIALIZING SEARCH INDEX"),ao=!0,global.typesense=await rc());}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 Ji(){try{if(Tt){let e=await Pr.get(new URL(Tt).origin);if(e?.data["typesense-health"]===!0)return Ie&&console.info(`${Tt} 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 Yi(){if(Ie&&console.info(`\u{1F3F3}\uFE0F INITIALIZING TYPESENSE SEARCH AGAINST ${Tt}`),!await Ji())throw new Error("TYPESENSE_URL service is not healthy.");let t=ji.map(r=>(Ie&&console.info(`\u{1F3F3}\uFE0F INITIALIZING SEARCH ${r} LOCALE`),[r,{search:async(n={query:"*",limit:12,offset:0})=>{let s={locale:r,query:n.query,limit:n.limit,offset:n.offset};return n.report&&Array.isArray(n.report)&&n.report.length>0&&(s["report[]"]=n.report.join(",")),n.variant&&Array.isArray(n.variant)&&n.variant.length>0&&(s["variant[]"]=n.variant.join(",")),Ie&&console.info("Typesense URL:",Tt,s),Pr.get(Tt,{params:s}).then(i=>(Ie&&(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 mn=Wi;var{localeDefault:ao}=K();function _t(e){let{search:t,report:r}=e;return o;async function o(n){let s=n.origin||"flexsearch",a=process.env.REPORTS_EXTERNAL_SEARCH&&s==="typesense",{query:i,locale:c,preferredLocale:l,limit:p,format:u,visible:m,variant:f,dimension:d,report:h,all:R,noImage:S,includes:x,sort:P,direction:F="ASC",offset:w=0}=n,B=qt.find(C=>C.locales.includes(c))?.charset||"latin",D=p&&!isNaN(p)?p:20,_=Xe(i,B!=="arabic");function L(C){return C.toJSON()}function U(C){let $=C.getContent(c);return {...C.toJSON(),locale:$.locale,name:$.name,attributes:$.attributes,keywords:$.keywords}}if(a){let C=await mn(),$=C[c]||C[ao],M={query:_===""?"*":_,limit:D,variant:f,report:h,offset:w};return await $.search(M)}else {let C=[],$=await et(e);if(i&&i!==""&&$[c]){let J=Xe(i,B!=="arabic"),ie={query:J,limit:D},V=await $[c].search(ie);if(a?C=V.data.results.map(Q=>parseInt(Q.content_id,10)):C=V.reduce((Q,W)=>Q.concat(W.result),[]),C=sr(C),l&&$[l]){let W=$[l].search(J).reduce((le,se)=>le.concat(se.result),[]);W=sr(W),C=sr([...C,...W]);}}let M={...m?{visible:m}:{},...S?{image_id:{[Op.eq]:null}}:{},...f.length?{variant_id:f}:{},...d.length?{dimension_id:d}:{},...h.length?{report_id:h}:{}},k={locale:R?{[Op.ne]:null}:c},j=[];i&&i!==""&&C.length&&P!=="report"?j.push([literal(`array_position(array[${C.join(",")}], "content_id")`),"ASC"]):(P==="report"&&j.push([literal(`COALESCE(NULLIF("report"."settings"->>'order', '')::INTEGER, 999999)`),"ASC"],[literal(`COALESCE(NULLIF("variant"."settings"->>'order', '')::INTEGER, 999999)`),"ASC"]),j.push(["zvalue","DESC NULLS LAST"])),P&&P!=="name"&&P!=="report"&&j.unshift([P,F.toUpperCase()]),i&&i!==""&&(M.content_id=C);let A=[{association:"contentByLocale",where:k}];(x||P==="report")&&A.push({association:"report",attributes:["id","name","settings"]},{association:"dimension",attributes:["id","name","settings"]},{association:"variant",attributes:["id","slug","name","settings"]});let b={...M.visible?{visible:M.visible}:{},...M.noImage?{image_id:M.noImage}:{},...M.content_id?{content_id:M.content_id}:{}};if(!M.report_id&&!M.dimension_id&&!M.variant_id&&m){let ie=(await r.findAll({attributes:["id"],where:{[Op.or]:[where(cast(json("settings.hide"),"boolean"),true)]}})).map(V=>V.id);ie.length>0&&(M.report_id={[Op.notIn]:ie},b.report_id=M.report_id);}let T=[],[I,ne]=await Promise.all([t.findAll({limit:D,offset:w,where:M,include:A,order:j,subQuery:false}),t.findAll({attributes:["variant_id",[fn$1("COUNT",col("variant_id")),"members_count"]],where:b,group:["variant_id"]})]),ae=ne.map(J=>J.toJSON());if(P==="name"){let J=F.toUpperCase()==="ASC"?1:-1;I.sort((ie,V)=>{let Q=ie.getContent(ao),W=V.getContent(ao);return Q&&W?Q.name>W.name?1*J:-1*J:0});}let Z=u==="nested"?L:U;return T=I.map(Z),u!=="nested"&&T.forEach(J=>{let{name:ie,keywords:V,score:Q=.1,zvalue:W}=J;if(ie){let le=Xe(ie),se=Q,ce=i.length/le.length,wo=le.split("").reduce((qr,ko,Po)=>(i.slice(0,Po),i.charAt(Po)===ko&&(qr+=ko),qr),"").length;le===i||V&&V.includes(i)?se=1e6:le.startsWith(i)?se*=20*ce:wo&&(se*=wo*ce),J.zvalue=se*2+W;}}),{meta:{origin:"flexsearch",...Object.fromEntries(Object.entries(n).map(J=>[J[0],H(J[1])])),variantCount:ae.reduce((J,ie)=>(J[ie.variant_id]=parseInt(ie.members_count,10),J),{})},results:T}}}}function fn(e){let{image:t,image_content:r,search:o,search_content:n}=e;return s;async function s(a){let{content_id:i,contentByLocale:c,image:l,image_id:p}=a,u={where:{content_id:i}},m=await o.findOne(u);if(await o.update(a,{where:{content_id:i}}),c){for(let d=0;d<c.length;d++){let h=c[d];await n.update({name:h.name,keywords:h.keywords},{where:{id:h.id,locale:h.locale}});}u={...u,...{include:[{association:"contentByLocale",separate:true}]}};}if(l){if(l.id&&(await t.update({...l},{where:{id:l.id}}),l.contentByLocale))for(let f=0;f<l.contentByLocale.length;f++){let d=l.contentByLocale[f];await r.update({meta:d.meta},{where:{id:d.id,locale:d.locale}});}}else !p&&m.image_id&&(await e.search.findAll({where:{image_id:m.image_id}})).length===0&&await t.destroy({where:{id:m.image_id}});return o.findOne(u)}}function yn(e){return {ingestMembers:ln(e),readMember:un(e),searchMember:_t(e),updateMember:fn(e),readMemberImage:pn(e)}}var tt={include:[{association:"contentByLocale",separate:true},{association:"inputs",include:[{association:"contentByLocale",separate:true}]},{association:"consumers",include:[{association:"contentByLocale",separate:true}]}]},$t=e=>({include:[{association:"variants",separate:true,attributes:{include:[[fn$1("COUNT",col("members.id")),"members_count"]]},include:[{model:e,as:"members",attributes:[]}],group:["variant.id"]}],order:[["ordering","ASC"]]}),zt={include:[{association:"blocks",separate:true,...tt}]},Er=e=>({include:[{association:"dimensions",separate:true,...$t(e)},{association:"sections",separate:true,...zt}]});var Se=[{association:"image",attributes:{exclude:["splash"]},include:[{association:"contentByLocale"}]},{association:"contentByLocale"}];function gn(e){let{block:t,block_content:r,block_input:o}=e;return {createBlock:n,readBlock:a,updateBlock:i,deleteBlock:l,createBulkBlock:s,updateBulkBlock:c};async function n(p){let{locales:u,...m}=p;return (await t.create({...m,consumers:[],inputs:[],contentByLocale:u.map(d=>({locale:d}))},{include:tt.include})).toJSON()}async function s(p){let u=p.map(f=>{let{locales:d,...h}=f;return {...h,consumers:[],inputs:[],contentByLocale:d.map(S=>({locale:S}))}});return (await t.bulkCreate(u,{include:tt.include})).map(f=>f.toJSON())}async function a({id:p,include:u}={}){let m=p==null?[]:[].concat(p),f=await t.findAll({where:m.length>0?{id:m}:void 0,include:u?tt.include:void 0});if(m.length===0||f.length===m.length)return f.map(R=>R.toJSON());let d=f.map(R=>R.id),h=m.filter(R=>!d.includes(R));throw new E(404,`Block(id=[${h}]) does not exist.`)}async function i(p){let{id:u,contentByLocale:m,consumers:f,inputs:d,inputAction:h,...R}=p,S=await t.findByPk(u,{include:tt.include,rejectOnEmpty:true});if(S.set(R),m){let x=Object.values(m);await r.bulkCreate(x,{updateOnDuplicate:["content"]});}return h&&(h.operation==="create"?await o.create(h.input):await o.destroy({where:h.input})),await S.save(),await S.reload(),S.toJSON()}async function c(p){let u=p.map(d=>{let{id:h,contentByLocale:R,consumers:S,inputs:x,inputAction:P,...F}=d;return {id:h,contentByLocale:R,inputAction:P,...F}}),m=await t.findAll({where:{id:{[Op.or]:u.map(d=>d.id)}},include:tt.include}),f=[];for(let d of m){let h=u.filter(R=>R.id===d.id);for(let R=0;R<h.length;R++){let S=h[R],{id:x,contentByLocale:P,inputAction:F,...w}=S;if(F&&(F.operation==="create"?await o.create(F.input):await o.destroy({where:F.input})),P){let q=Object.values(P);await r.bulkCreate(q,{updateOnDuplicate:["content"]});}d.set(w),await d.save(),await d.reload(),f.push(d.toJSON());}}return f}async function l(p){let u=await t.findByPk(p,{rejectOnEmpty:true});return await u.destroy(),{id:p,parentType:"section",parentId:u.section_id}}}function Rn(e){let{dimension:t,search:r}=e;return {createDimension:o,readDimension:n,updateDimension:s,deleteDimension:a};async function o(i){return (await t.create({name:i.name,report_id:i.report_id,ordering:i.ordering||0,variants:[]},{include:$t(r).include})).toJSON()}async function n({id:i,include:c}={}){let l=i==null?[]:[].concat(i),p=await t.findAll({where:l.length>0?{id:l}:void 0,include:c?$t(r).include:void 0});if(l.length===0||p.length===l.length)return p.map(f=>f.toJSON());let u=p.map(f=>f.id),m=l.filter(f=>!u.includes(f));throw new E(404,`Dimension(id=[${m}]) does not exist.`)}async function s(i){let{id:c,variants:l,...p}=i,u=await t.findByPk(c,{include:$t(r).include,rejectOnEmpty:false});if(!u)throw new E(404,`Dimension(id=${c}) does not exist.`);return u.set(p),await u.save(),u.toJSON()}async function a(i){let c=await t.findByPk(i,{rejectOnEmpty:false});return await c.destroy(),{id:i,parentType:"report",parentId:c.report_id}}}function hn(e){let{formatter:t}=e;return {createFormatter:r,readFormatter:o,updateFormatter:n,deleteFormatter:s};async function r(a){return (await t.create(a)).toJSON()}async function o({id:a}={}){let i=a==null?[]:[].concat(a),c=await t.findAll({where:i.length>0?{id:i}:void 0});if(i.length===0||c.length===i.length)return c.map(u=>u.toJSON());let l=c.map(u=>u.id),p=i.filter(u=>!l.includes(u));throw new E(404,`Formatter(id=[${p}]) does not exist.`)}async function n(a){let{id:i,...c}=a,l=await t.findByPk(i,{rejectOnEmpty:true});return await l.update(c),l.toJSON()}async function s(a){return await(await t.findByPk(a,{rejectOnEmpty:true})).destroy(),{id:a}}}function Sn(e){let{datasource:t}=e;return {createDatasource:r,readDatasource:o,updateDatasource:n,deleteDatasource:s};async function r(a){return (await t.create(a)).toJSON()}async function o({id:a,include:i}={}){try{let c=a==null?[]:[].concat(a),l=i===!0,p=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||p.length===c.length)return p.map(f=>f.toJSON());let u=p.map(f=>f.id),m=c.filter(f=>!u.includes(f));throw new E(404,`Datasource(id=[${m}]) does not exist.`)}catch(c){throw new E(500,c)}}async function n(a){let{id:i,...c}=a,l=await t.findByPk(i,{rejectOnEmpty:true});return await l.update(c),l.toJSON()}async function s(a){return await(await t.findByPk(a,{rejectOnEmpty:true})).destroy(),{id:a}}}var{locales:ac}=K();function En(e){let{report:t,search:r}=e;return {createReport:o,readReport:n,updateReport:s,deleteReport:a};async function o(i){return (await t.create({name:i.name,sections:[],dimensions:[]},{include:Er(r).include})).toJSON()}async function n({id:i,include:c,locales:l=ac}={}){let u=(i==null?[]:[].concat(i)).reduce((h,R)=>(h.includes(R)||h.push(R),h),[]),m=await t.findAll({where:u.length>0?{id:u}:void 0,include:c?Er(r).include?.filter(h=>typeof c=="string"?h.association===c:c):void 0});if(u.length===0||m.length===u.length)return m.map(h=>{let R=h.toJSON();return {...R,sections:R.sections.map(S=>({...S,blocks:S.blocks.map(x=>({...x,contentByLocale:Object.keys(x.contentByLocale).reduce((P,F)=>({...P,...[...l,"logic"].includes(F)?{[F]:x.contentByLocale[F]}:{}}),{})}))}))}});let f=m.map(h=>h.id),d=u.filter(h=>!f.includes(h));throw new E(404,`Report(id=${d}) does not exist.`)}async function s(i){let{id:c,dimensions:l,sections:p,...u}=i,m=await t.findByPk(c,{include:Er(r).include,rejectOnEmpty:false});if(!m)throw new E(404,`Report(id=${c}) does not exist.`);return m.set(u),await m.save(),await m.reload(),m.toJSON()}async function a(i){return await(await t.findByPk(i,{rejectOnEmpty:false})).destroy(),{id:i}}}function An(e){let{section:t}=e;return {createSection:r,readSection:o,updateSection:n,deleteSection:s};async function r(a){return (await t.create({ordering:a.ordering,report_id:a.report_id,blocks:[]},{include:zt.include})).toJSON()}async function o({id:a,include:i}={}){let c=a==null?[]:[].concat(a),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(m=>m.toJSON());let p=l.map(m=>m.id),u=c.filter(m=>!p.includes(m));throw new E(404,`Section(id=${u}) does not exist.`)}async function n(a){let{id:i,blocks:c,...l}=a,p=await t.findByPk(i,{include:zt.include,rejectOnEmpty:false});return p.set(l),await p.save(),await p.reload(),p.toJSON()}async function s(a){let i=await t.findByPk(a,{rejectOnEmpty:true});return await i.destroy(),{id:a,parentType:"report",parentId:i.report_id}}}function wn(e,t){let{variant:r,search:o}=e;return {createVariant:n,readVariant:s,updateVariant:a,deleteVariant:i,validateVariantSlug:c};async function n(l){let{dimension_id:p,name:u,slug:m}=l,f=await c({dimension:p,slug:m});return (await r.create({dimension_id:p,name:u,slug:f.valid?f.candidate:f.suggestion})).toJSON()}async function s({id:l}={}){let p=l==null?[]:[].concat(l),u=await r.findAll({where:p.length>0?{id:p}:void 0,attributes:{include:[[fn$1("COUNT",col("members.id")),"members_count"]]},include:[{model:o,attributes:[],as:"members"}],group:["variant.id"]});if(p.length===0||u.length===p.length)return u.map(d=>d.toJSON());let m=u.map(d=>d.id),f=p.filter(d=>!m.includes(d));throw new E(404,`Variant(id=${f}) does not exist.`)}async function a(l){let{id:p,...u}=l,m=await r.findByPk(p,{include:[{association:"dimension"}],rejectOnEmpty:true});u.settings=Vt(u.settings);let f=u.settings.doIngest;return u.settings.doIngest=false,await m.update(u),f&&(await t.ingestMembers(m),await et(e,true)),await m.reload(),m.toJSON()}async function i(l){let p=await r.findByPk(l,{rejectOnEmpty:true});return await p.destroy(),et(e,true),{id:l,parentType:"dimension",parentId:p.dimension_id}}async function c({dimension:l,slug:p}){let u=await r.findAll({attributes:["slug",[fn$1("COUNT",col("id")),"slugCount"]],where:{dimension_id:{[Op.ne]:l}},group:"slug"}).then(h=>Object.fromEntries(h.map(R=>{let S=R.getDataValue("slugCount");return [R.slug,Number.parseInt(`${S}`,10)]}))),m=p,f=1,d=true;for(;u[m];)d=false,m=`${p}-${f}`,f++;return {candidate:p,dimension_id:l,suggestion:m,valid:d}}}function kn(e){let t={...gn(e),...Rn(e),...hn(e),...Sn(e),...yn(e),...En(e),...An(e)},r={...t,...wn(e,t)};return {createFormatter:v(r.createFormatter),deleteFormatter:v(r.deleteFormatter),readFormatter:v(r.readFormatter),updateFormatter:v(r.updateFormatter),createReport:v(r.createReport),deleteReport:v(r.deleteReport),readReport:v(r.readReport),updateReport:v(r.updateReport),createDimension:v(r.createDimension),deleteDimension:v(r.deleteDimension),readDimension:v(r.readDimension),updateDimension:v(r.updateDimension),createVariant:v(r.createVariant),readVariant:v(r.readVariant),updateVariant:v(r.updateVariant),deleteVariant:v(r.deleteVariant),validateVariantSlug:v(r.validateVariantSlug),createSection:v(r.createSection),readSection:v(r.readSection),updateSection:v(r.updateSection),deleteSection:v(r.deleteSection),createBlock:v(r.createBlock),deleteBlock:v(r.deleteBlock),readBlock:v(r.readBlock),updateBlock:v(r.updateBlock),createBulkBlock:v(r.createBulkBlock),updateBulkBlock:v(r.updateBulkBlock),readMember:v(r.readMember),searchMember:v(r.searchMember),updateMember:v(r.updateMember),readMemberImage:v(r.readMemberImage),createDatasource:v(r.createDatasource),deleteDatasource:v(r.deleteDatasource),readDatasource:v(r.readDatasource),updateDatasource:v(r.updateDatasource)}}if(typeof window<"u")throw new Error("uploadImage.ts can only be imported on the server side");var Pn=e=>{throw console.error("/methods/helpers/uploadImage.ts:",e),new Error(e.message)},ic=Number(process.env.NEXT_PUBLIC_IMAGE_SPLASH_WIDTH)||1400,cc=Number(process.env.NEXT_PUBLIC_IMAGE_THUMB_WIDTH)||400,lc=async(e,t,r)=>{let o=[{type:"splash",res:ic},{type:"thumb",res:cc}],n=(await import('sharp')).default;for(let s of o){let a=await n(r).resize(s.res).toFormat("webp").webp({lossless:true}).toBuffer().catch(Pn);await e.image.update({[s.type]:a},{where:{id:t}}).catch(Pn);}},ve=lc;var xn="SECTION_ALLOWED";if(typeof window<"u")throw new Error("flickr.ts can only be imported on the server side");var In=["4","5","7","8","9","10"],dc=In.join(),{locales:mc}=K(),Ce;if(process.env.FLICKR_API_KEY)try{Ce=new pc(process.env.FLICKR_API_KEY);}catch(e){throw console.error("Flickr ERROR:",e),new Error(e.message)}async function vn(e,t){try{let r={prompt:t.prompt||"",page:t.page||1};if(!Ce)throw console.warn("Flickr is not initialized. Check the credentials"),new Error("Flickr is not initialized. Check the credentials");let o=r.prompt,s=(await Ce.photos.search({text:o,license:dc,sort:"relevance",per_page:24,page:r.page,content_types:"0",orientation:"landscape"}).then(l=>l.body)).photos.photo,a=s.reduce((l,p)=>l.concat(Ce.photos.getSizes({photo_id:p.id})),[]),c=(await Promise.all(a).then(l=>l)).reduce((l,p,u)=>{let m=p.body.sizes.size.find(f=>f.label==="Small 320");return m&&l.push({id:s[u].id,source:m.source}),l},[]);return {meta:{prompt:H(r.prompt),page:H(`${r.page}`)},results:c}}catch(r){throw console.error(r),new Error("Error in search flickr provider")}}async function Cn(e,t){try{let{content_id:r,image_id:o}=t,n={content_id:H(`${r}`)||"",id:H(`${o}`)||""},a=`https://flic.kr/p/${uc.int_to_base58(o)}`;if(!Ce)throw new Error("Flickr API Key not configured");let i=await Ce.photos.getInfo({photo_id:o}).then(l=>l.body),c;if(i)if(In.includes(i.photo.license)){let l=await e.search.findOne({where:{content_id:r}}),p=await e.image.findOne({where:{url:a}});if(l){if(p)await e.search.update({image_id:p.id},{where:{content_id:r}});else {let m=await Ce.photos.getSizes({photo_id:o}).then(w=>w.body),f=m.sizes.size.find(w=>parseInt(w.width,10)>=1600);if(f||(f=m.sizes.size.find(w=>parseInt(w.width,10)>=1e3)),f||(f=m.sizes.size.find(w=>parseInt(w.width,10)>=500)),!f||!f.source)throw new Error("Flickr Source Error, try another image.");let d=await fetch(f.source);if(!d.ok)throw new Error("Flickr Error retrieving image, try another image.");let h=await d.arrayBuffer(),S=(await Ce.photos.licenses.getInfo().then(w=>w.body.licenses.license)).find(w=>w.id===parseInt(i.photo.license,10)),x={url:a,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 F=mc.map(w=>({id:P.id,locale:w,meta:i.photo.title._content}));await e.image_content.bulkCreate(F),await e.search.update({image_id:P.id},{where:{content_id:r}}),await ve(e,P.id,h);}let u=await e.search.findOne({where:{content_id:r},include:Se});u&&u.image&&(u.image.thumb=!!u.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 N(e,t,r,o){return {method:e,path:t,handler:r,roleRequired:o}}function ee(e){let t=Number.parseInt(`${e||""}`,10);if(Number.isNaN(t)||!Number.isFinite(t))throw new E(400,`Invalid numeric parameter: ${e}`);return t}function G(e){return e==null||e===""?[]:Array.isArray(e)?e:e.toString().split(",")}var{localeDefault:Be}=K();function Bn(e){let{readMember:t,searchMember:r,updateMember:o,readMemberImage:n}=e;return [N("GET","read/members",async s=>{let a=fc(s.query),i=a[a.mode]||[],c=a.mode==="whole";if(!c&&i.length===0)throw new E(400,`The request is missing the '${a.mode}' parameter.`);if(!c&&i.length>20&&!a.variant)throw new E(400,`You can look for up to 20 '${a.mode}' in a single request.`);return t(a)}),N("GET","search/members",s=>{let a=Kt(s.query);return r(a)}),N("POST","update/member",s=>{let{body:a}=s;return o(a)},[z.EDITOR]),N("GET","member/image",s=>{let a=G(s.query.size)[0];return n({member:ee(s.query.member),size:a&&a==="splash"?"splash":"thumb"})})]}function fc(e){let t=G(e.locale)[0]||Be,r=t==="all"||Gt(e.all),o=G(e.mode)[0],s=(G(e.output)[0]||"full")==="lite"?"lite":"full",a=parseInt(G(e.related)[0],10)||5,i=Gt(e.allowNulls,{default:false}),c=G(e.variant).map(ee);if(c.length===0&&(c=G(e["variant[]"]).map(ee)),o==="ids")return {all:r,mode:o,variant:c,output:s,locale:r?Be:H(t),ids:G(e.ids||e["ids[]"]),allowNulls:i};if(o==="content_ids")return {all:r,mode:o,variant:c,output:s,locale:r?Be:H(t),content_ids:G(e.content_ids||e["content_ids[]"]).map(ee),allowNulls:false};if(o==="slugs")return {all:r,mode:o,variant:c,output:s,locale:r?Be:H(t),slugs:G(e.slugs||e["slugs[]"]).map(l=>{let[p,u]=l.split("/");return {variantSlug:p,memberSlug:u}}),allowNulls:false};if(o==="related")return {all:r,mode:o,locale:r?Be:H(t),related:a,current_ids:G(e.current_ids||e["current_ids[]"]).map(ee),include_ids:G(e.include_ids||e["include_ids[]"]).map(ee),report_ids:G(e.report_ids||e["report_ids[]"]).map(ee),dimension_ids:G(e.dimension_ids||e["dimension_ids[]"]).map(ee),variant_ids:G(e.variant_ids||e["variant_ids[]"]).map(ee),output:s,allowNulls:false};if(o==="whole")return {all:r,mode:o,variant:c,locale:r?Be:H(t),output:s,allowNulls:i};throw new E(400,`Invalid mode: '${o}'`)}function Kt(e){let t=G(e.locale)[0]||Be||"en",r=t==="all",o=G(e.format)[0],n=o?o==="nested":r,s=G(e.variant).map(ee);s.length===0&&(s=G(e["variant[]"]).map(ee));let a=G(e.dimension).map(ee);a.length===0&&(a=G(e["dimension[]"]).map(ee));let i=G(e.report).map(ee);i.length===0&&(i=G(e["report[]"]).map(ee));let c=e.origin==="typesense"?"typesense":"flexsearch";return {query:G(e.query||e.q)[0]||"",locale:r?Be:t,preferredLocale:G(e.preferredLocale)[0],limit:G(e.limit).map(ee)[0]??5,format:n?"nested":"plain",includes:Gt(e.includes,{default:true}),visible:Gt(e.visible,{default:true}),noImage:Gt(e.noImage,{default:false}),variant:s,dimension:a,report:i,all:r,sort:G(e.sort)[0],direction:G(e.direction)[0],offset:Number(e.offset||0),origin:c}}async function Ln(e,t){let r=_t(e),o=Kt({query:t.prompt,limit:"50",visible:"false"}),s=(await r(o)).results.filter(a=>a.image_id).map(a=>({id:a.image_id,source:`/api/cms/member/image?member=${a.content_id}&size=thumb`}));return {meta:{prompt:H(o.query)},results:s}}async function Mn(e,t){let{search:r}=e,{content_id:o,image_id:n}=t;await r.update({image_id:n},{where:{content_id:o}});let s=await r.findOne({where:{content_id:o},include:Se}).then(a=>a?{...a.toJSON(),image:{...a.image.toJSON(),thumb:!!a.image.thumb}}:null);return {meta:{id:n,content_id:o},results:s}}if(typeof window<"u")throw new Error("unsplash.ts can only be imported on the server side");var{locales:Rc}=K(),Ht;if(process.env.UNSPLASH_API_KEY)try{Ht=createApi({accessKey:process.env.UNSPLASH_API_KEY});}catch(e){throw console.error("Unsplash error:",e),new Error(e.message)}async function On(e,t){try{let r={prompt:t.prompt||"",page:t.page||1};if(!Ht)throw new Error("Unsplash API Key not configured");let o=r.prompt,s=(await Ht.search.getPhotos({query:o,perPage:24,page:r.page,orientation:"landscape"}).then(a=>a.response.results)).map(a=>({id:a.id,source:a.urls.thumb}));return {meta:{prompt:H(r.prompt),page:H(`${r.page}`)},results:s}}catch(r){throw console.error(r),new Error("Error in search unsplash provider")}}async function Nn(e,t){try{let{content_id:r,image_id:o}=t,n={content_id:H(`${r}`)||"",id:H(`${o}`)||""};if(!Ht)throw console.warn("Unsplash is not initialized. Check the credentials"),new Error("Unsplash is not initialized. Check the credentials");let s=await Ht.photos.get({photoId:o}).then(i=>i.response),a;if(s){let i=await e.search.findOne({where:{content_id:r}}),c=s.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 u=await Pr.get(s.urls.full,{responseType:"arraybuffer"}).then(h=>h.data),m={url:c,author:s.user.name||s.user.username,license:"Free Unsplash license: https://unsplash.com/license"},f=await e.image.create(m);await e.image_content.destroy({where:{id:f.id}});let d=Rc.map(h=>({id:f.id,locale:h,meta:s.description||s.alt_description}));await e.image_content.bulkCreate(d),await e.search.update({image_id:f.id},{where:{content_id:r}}),await ve(e,f.id,u);}let p=await e.search.findOne({where:{content_id:r},include:Se});p&&p.image&&(p.image.thumb=!!p.image.thumb);}else throw new Error("Error updating Search")}else throw new Error("Malformed URL");return {meta:{...n},results:a}}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:bc}=K();async function Dn(e,t){try{let{content_id:r,image_source:o,files:n}=t,s={content_id:H(`${r}`)||""};if(await e.search.findOne({where:{content_id:r}})&&n){let c=await hc.readFileSync(n.file.filepath),l={url:o,author:"",license:""},p=await e.image.create(l);await e.image_content.destroy({where:{id:p.id}});let u=bc.map(m=>({id:p.id,locale:m,meta:""}));await e.image_content.bulkCreate(u),await e.search.update({image_id:p.id},{where:{content_id:r}}),await ve(e,p.id,c);}let i=await e.search.findOne({where:{content_id:r},include:Se});return i&&i.image&&(i.image.thumb=!!i.image.thumb),{meta:{...s},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:Sc}=K();var Un=async e=>{let t={"x-api-key":process.env.ADOBE_STOCK_API_KEY||"EMPTY_ADOBE_KEY","X-Product":"BespokeApp/0.1"};return t};var jt;if(process.env.ADOBE_STOCK_API_KEY)try{jt={search:async(e,t)=>await Pr.get("https://stock.adobe.io/Rest/Media/1/Search/Files",{headers:await Un(!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 Pr.get("https://stock.adobe.io/Rest/Media/1/Files",{headers:await Un(!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 Fn(e,t){try{let r={prompt:t.prompt||"",page:t.page||1};if(!jt)throw new Error("Adobe API Key not configured");let n=(await jt.search(r.prompt,r.page)).map(s=>({id:s.id,source:s.thumbnail_url}));return {meta:{prompt:H(r.prompt),page:H(`${r.page}`)},results:n}}catch(r){throw console.error(r),new Error("Error in search Adobe provider")}}async function Vn(e,t){try{let{content_id:r,image_id:o}=t,n={content_id:H(`${r}`)||"",id:H(`${o}`)||""};if(!jt)throw console.warn("Adobe is not initialized. Check the credentials"),new Error("Adobe is not initialized. Check the credentials");let s=await jt.get(o),a;if(s){let i=await e.search.findOne({where:{content_id:r}}),c=s.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 u=await Pr.get(s.thumbnail_1000_url,{responseType:"arraybuffer"}).then(h=>h.data),m={url:c,author:s.creator_name,license:"ADOBE, TO-DO"},f=await e.image.create(m);await e.image_content.destroy({where:{id:f.id}});let d=Sc.map(h=>({id:f.id,locale:h,meta:s.title||s.description}));await e.image_content.bulkCreate(d),await e.search.update({image_id:f.id},{where:{content_id:r}}),await ve(e,f.id,u);}let p=await e.search.findOne({where:{content_id:r},include:Se});p&&p.image&&(p.image.thumb=!!p.image.thumb);}else throw new Error("Error updating Search")}else throw new Error("Malformed URL");return {meta:{...n},results:a}}catch(r){throw console.error(r),new Error("Error in save adobe provider")}}if(typeof window<"u")throw new Error("imageSave.ts can only be imported on the server side");var Ec={local:Mn,flickr:Cn,unsplash:Nn,upload:Dn,adobe:Vn};function kt(e,t){let r=Ec[t];if(!r)throw new E(500,`Wrong provider dbImageSaveFactory.ts: ${t}`);return v(o=>r(e,o))}if(typeof window<"u")throw new Error("imageSearch.ts can only be imported on the server side");var Ac={local:Ln,flickr:vn,unsplash:On,adobe:Fn};function Wt(e,t){let r=Ac[t];if(!r)throw new E(500,`Wrong provider dbImageSearchFactory.ts: ${t}`);return v(o=>r(e,o))}var Ic=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 Tr(e){let{report:t,search:r}=e;return o;async function o(n){let s=n?.report_id?Number(n.report_id):void 0,a=!(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"]]}]}]};return s&&(i.where={...i.where,id:s}),a&&i.include&&i.include[0]&&(i.include[0].include[0].attributes.push([fn$1("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=>({...Ic(l.toJSON()),mode:l.dimensions.length===1?Pe.UNILATERAL:Pe.MULTILATERAL}))}}}function qn(e){return async()=>(await et(e,true),{error:false})}var{locales:vc,localeDefault:Cc}=K(),Bc=(e,t)=>{if(!e)return [];let r=[];return t.forEach(o=>{let n=e.filter(s=>s.metadata.report.id===o.id);if(n.length>0)if(o.mode===Pe.UNILATERAL){let s=o.dimensions[0];s.variants.forEach(a=>{let i=n.filter(c=>c.metadata.dimension.id===s.id&&c.metadata.variant.id===a.id);i.length>0&&(r=r.concat(i.map(c=>({path:`/${a.slug}/${c.slug}`,name:c.name,confidence:c.confidence,report:{id:o.id,name:o.name,mode:o.mode},members:[c],id:`r-${o.id}-${[c].map(l=>`${l.id}`).join("-")}`}))));});}else o.mode;}),r},Lc=(e,t)=>{if(!e)return [];let r,o,n;return e.map(s=>(r={...t.find(a=>a.id===s.report_id)},o={...r.dimensions.find(a=>a.id===s.dimension_id)},n={...o.variants.find(a=>a.id===s.variant_id)},delete r.dimensions,delete o.variants,{name:s.name,confidence:s.zvalue,metadata:{id:s.id,slug:s.slug,report:r,dimension:o,variant:n},id:s.content_id,slug:s.slug}))};function $n(e){let t=_t(e),r=Tr(e);return o;async function o(n){let s=n.format||"results",a=vc.includes(n.locale)?n.locale:Cc,i=n.origin||"flexsearch",c=process.env.REPORTS_EXTERNAL_SEARCH&&i==="typesense",l=await t({...n,format:"plain",locale:H(a),visible:true});if(c)return l;{let p=l.results?l.results:[],m=(await r()).data,f=Lc(p,m);return {meta:{...l.meta,origin:"flexsearch",format:s},results:Bc(f,m)}}}}function zn(e){return async t=>{try{let{variantPaths:r}=t,o=[];if(r)for(let n=0;n<r.length;n++){let s=r[n];(await e.search.findAll({attributes:["slug"],where:{variant_id:s.variantId}})).forEach(i=>{o.push(`/${s.prefix}/${s.variantSlug}/${i.slug}`);});}return {...t,paths:o,revalidated:0,samples:[]}}catch(r){throw new E(r.response?.status||500,r.message)}}}function Gn(){return async e=>{try{let{target:t}=e;return {target:t}}catch(t){throw new E(t.response?.status||500,t.message)}}}function ge(e,t){let r=[],o=s=>Object.values(t).reduce((i,c)=>("inputs"in c&&c.inputs.includes(s)&&(i.push(c.id),i=i.concat(o(c.id))),i),[]);e.forEach(s=>{r=r.concat(o(s));});let n=[];return r.forEach(s=>{n.includes(s)||n.push(s);}),n}function Oc(e,t){return e.some(r=>t.includes(`role.${r}`))}function Kn(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(a=>a&&a.sections&&Array.isArray(a.sections)?a.sections.reduce((i,c)=>{let l=c.blocks.map(p=>{let u=p.toJSON();return u.inputs=u.inputs.map(m=>m.id),u.consumers=u.consumers.map(m=>m.id),u});return i.concat(l)},[]):[]),s=n.filter(a=>a.settings&&a.settings.access&&Array.isArray(a.settings.access)&&Array.isArray(o.roles)&&(a.settings.access.includes("private")||Oc(o.roles,a.settings.access))).map(a=>a.id);return s=s.concat(ge(s,n)),{params:{...o},data:n.filter(a=>s.includes(a.id))}}}var Uc=Object.keys(io).filter(e=>e.indexOf("Icon")===0);async function Hn(){return {meta:{provider:"tabler"},results:Uc}}async function jn(e){let t=io[e.name]?io[e.name]:()=>"";return renderToString(createElement(t))}var Fc={tabler:Hn};function Wn(e){let t=Fc[e];if(!t)throw new E(500,`Wrong provider dbListIconsFactory.ts: ${e}`);return v(()=>t())}var Vc={tabler:jn};function Jn(e){return v(t=>{let r=Vc[e];if(!r)throw new E(500,`Wrong provider dbReadIconFactory.ts: ${t.provider}`);return r({name:t.name,provider:e})})}function Yn(){return e;async function e(){return {secrets:Et()}}}function rt(e,t,r){return Ze().then(o=>{Object.assign(r,Pt(o));})}function Pt(e,t){let r={},o=qe(t||{providers:[]});return t&&o.actions&&o.source==="custom"?(r.searchRole=v(o.actions.searchRole()),r.searchUser=v(o.actions.searchUser()),r.readUser=v(o.actions.readUser()),r.updateUser=v(o.actions.updateUser())):o.source==="auth0"&&(r.searchRole=v(Co()),r.searchUser=v(Bo()),r.readUser=v(Lo()),r.updateUser=v(Mo())),{...kn(e),searchReport:v($n(e)),readMetadata:v(Tr(e)),regenerateSearch:v(qn(e)),imageFlickrSearch:Wt(e,"flickr"),imageLocalSearch:Wt(e,"local"),imageUnsplashSearch:Wt(e,"unsplash"),imageAdobeSearch:Wt(e,"adobe"),imageFlickrSave:kt(e,"flickr"),imageLocalSave:kt(e,"local"),imageUnsplashSave:kt(e,"unsplash"),imageUploadSave:kt(e,"upload"),imageAdobeSave:kt(e,"adobe"),urlProxy:hr(e),searchRole:r.searchRole,searchUser:r.searchUser,readUser:r.readUser,updateUser:r.updateUser,updateMyData:v(Oo()),revalidateReport:v(zn(e)),revalidateUrl:v(Gn()),readPrivateBlocks:v(Kn(e)),listTablerIcons:Wn("tabler"),readTablerIcon:Jn("tabler"),readEnvSecrets:v(Yn())}}async function co(e){try{let t=new qc.IncomingForm,r=await new Promise((o,n)=>{t.parse(e,(s,a,i)=>{if(s){console.error("Error in formidable parse function inside internal parseBody.ts",s),n(s);return}o({fields:a,files:i});});});return {...r.fields,files:r.files}}catch(t){return {error:t}}}function Le(e,t){let r=ue(e,"create",t),o=ue(e,"read",t),n=ue(e,"update",t),s=ue(e,"delete",t),a=ue(e,"updateBulk",t),i=ue(e,"createBulk",t);return [N("POST",`create/bulk/${t}`,c=>{let{body:l}=c,{files:p,...u}=l,m=Object.keys(u).map(f=>u[f]);return i(m)},[z.EDITOR]),N("POST",`create/${t}`,c=>{let{body:l}=c;return r(l)},[z.EDITOR]),N("GET",`read/${t}`,c=>{let l=c.query,p=G(l.id).map(ee);return o({id:p,include:Gt(l.include)})}),N("POST",`update/${t}`,c=>{let{body:l}=c;return n(l)},[z.EDITOR]),N("POST",`update/bulk/${t}`,c=>{let{body:l}=c,{files:p,...u}=l,m=Object.keys(u).map(f=>u[f]);return a(m)},[z.EDITOR]),N("DELETE",`delete/${t}`,c=>{let l=ee(c.query.id);return s(l)},[z.EDITOR])]}function Qn(e){let{validateVariantSlug:t}=e;return [...Le(e,"variant"),N("GET","validate/variant",r=>{let o=r.query,n=ee(o.dimension);return t({dimension:n,slug:yr(o.slug)})},[z.EDITOR])]}function Zn(e){return Le(e,"datasource").map(r=>({...r,roleRequired:[z.EDITOR]}))}function xt(e,t){let r=`image${be(t)}Save`,o=e[r];return N("POST",`images/save/${t}`,n=>{let s=n.body;if(!s.content_id)throw new E(400,"Missing 'content_id' parameter.");if(!s.image_id)throw new E(400,"Missing 'image_id' parameter.");return o(s)},[z.EDITOR])}function Jt(e,t){let r=`image${be(t)}Search`,o=e[r];return N("GET",`images/search/${t}`,async n=>{let s=G(n.query.prompt)[0];if(!s)throw new E(400,"Empty 'prompt' param.");return o({prompt:s,page:ee(n.query.page)})},[z.EDITOR])}function Xn(e){let{readMetadata:t}=e;return N("GET","read/metadata",r=>t(r.query))}function ea(e){let{regenerateSearch:t}=e;return N("POST","search/regenerate",()=>t(void 0),[z.EDITOR])}function ta(e){let{searchReport:t}=e;return N("GET","search/reports",r=>{let o=zc(r.query);return t(o)})}function zc(e){return {...Kt(e),format:G(e.format)[0]}}function ra(e){let{urlProxy:t}=e;return N("GET","url/proxy",(r,o,n)=>{let{url:s,method:a="GET",wrapper:i="true"}=r.query;if(!s)throw new E(400,"Missing URL parameter");let c=[];return n&&n.user&&n.user.bespoke_roles&&(c=n.user.bespoke_roles),t({url:Array.isArray(s)?s.join(","):s,method:G(a)[0]==="POST"?"POST":"GET",user_roles:c,wrapper:i!=="false",session:n})})}function oa(e){let{readMetadata:t,revalidateReport:r}=e;return N("GET","revalidate/report",async(o,n)=>{let{reportId:s,profilePrefix:a}=o.query;if(!s||!a)throw new E(400,"Missing URL parameter in revalidate factory: reportId or profilePrefix");try{let i=parseInt(`${s}`,10),c=`${a}`.split("/").filter(d=>d!=="").join("/"),l=[],p=await t({}).then(d=>d.ok?d.data.data.find(h=>h.id===i):[]);p&&p.mode===Pe.UNILATERAL&&p.dimensions.forEach(d=>{d.variants.forEach(h=>{l.push({prefix:c,variantId:h.id,variantSlug:h.slug});});});let u=await r({profilePrefix:c,reportId:i,variantPaths:l}),m=[],f=0;return u.ok&&(f=u.data.paths.length,m=u.data.paths.slice(0,5),Promise.all(u.data.paths.map(d=>{let h;try{h=n.revalidate(d,{unstable_onlyGenerated:!0});}catch(R){console.error("error",d,R);}return h}))),{ok:!0,status:200,data:{reportId:s,revalidated:f,samples:m}}}catch(i){throw console.error(i),new E(500,"Error revalidating")}},[z.EDITOR])}function na(){return N("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 E(500,"Error revalidating")}else throw new E(400,"Missing target parameter in revalidate factory")},[z.ADMIN,z.EDITOR,z.WRITER])}function ot(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:Kc}=K(),aa=ot();function sa(e){let{readPrivateBlocks:t}=e;return N("POST","read/blocks/private",(r,o,n)=>{let{userToken:s}=r.body,a=null;if(s&&aa)try{let l=_i.verify(s,aa);a=typeof l=="object"&&l!==null&&"roles"in l?l.roles:[];}catch(l){console.error("Failed to verify user token:",l);}if(!a&&(!n||!n.user))throw new E(401,"Unauthorized. Must be logged in or provide a valid token.");let i=s&&a?a:n&&n.user?n.user.bespoke_roles:[],c={report_id:parseInt(r.body.report_id,10),locale:r.body.locale||Kc,roles:i,section_id:r.body.section_id||[]};return t(c)})}function ia(e){let{readEnvSecrets:t}=e;return N("GET","read/secrets",()=>t({}),[z.EDITOR])}function ca(e){let{searchRole:t}=e;return N("GET","auth/search/roles",(r,o)=>t(""),[z.EDITOR,z.ADMIN])}function la(e){let{searchUser:t}=e;return N("GET","auth/search/users",r=>t({query:r.query.query,role_id:r.query.role_id,page:r.query.page||0}),[z.ADMIN])}function ua(e){let{readUser:t}=e;return N("GET","auth/read/user",r=>t(r.query.user_id),[z.ADMIN])}function pa(e){let{updateUser:t}=e;return N("POST","auth/update/user",async r=>{let o=r.body;return await t(o)},[z.ADMIN])}function da(e){let{updateUser:t,readUser:r}=e;return N("POST","auth/update/me",async(o,n,s)=>{let{report_id:a,user_metadata:i}=o.body,c={user_id:s.user.id,user_metadata:{}};try{let{user:l}=s;return s&&l&&a&&(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:a})),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 Hc(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 ma(){return N("POST","pdf",async(e,t)=>{let{slugs:r,path:o}=e.body;if(!r||!o)throw new E(400,"Missing path parameter in request.");{new URL(o,e.headers.origin);return {ok:true,status:200,data:await Hc()}}})}function fa(e,t){let r=`list${be(t)}Icons`,o=e[r];return N("GET",`list/icons/${t}`,async()=>o({}),[z.EDITOR])}function ya(e,t){let r=`read${be(t)}Icon`,o=e[r];return N("GET",`read/icons/${t}/icon.svg`,async n=>o({provider:t,name:n.query.name}))}function ga(){return N("GET","report",async(e,t)=>{let{report:r,prefix:o,locale:n}=e.query;if(!r)throw new E(400,"Missing report parameter.");if(!o)throw new E(400,"Missing report parameter.");if(!n)throw new E(400,"Missing report parameter.");try{let a=await(await fetch(`${process.env.NEXT_PUBLIC_REPORTS_BASE_URL}/${n}${o}${r}`)).text(),l=new jc().parseFromString(a,"text/html").getElementById("__NEXT_DATA__")?.textContent,p=JSON.parse(l).props;return {ok:!0,status:200,data:{variables:p.pageProps.initialState.variables,status:p.pageProps.initialState.status}}}catch(s){throw console.error(s),new E(500,"Couldn't find page cache")}})}var Jc=ot();function Yc(e){let t={email:e.user.email,name:e.user.name,roles:e.user.bespoke_roles||[]};return _i.sign(t,Jc,{expiresIn:"1min"})}function Ra(){return N("POST","users/generate-token",async(e,t,r)=>{if(!r||!r.user)throw new E(401,"Unauthorized. Must be logged in to generate a token.");try{return {ok:!0,status:200,wrapper:!1,data:{token:Yc(r)}}}catch(o){throw console.error("Error generating token:",o),new E(500,"Internal Server Error")}})}var Zc=ot(),Xc=e=>!!_i.verify(e,Zc);function ha(){return N("POST","users/validate-token",async(e,t)=>{let{token:r}=e.body;try{return Xc(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 rl=ke();function lo(e,t){return `${e.toUpperCase()} ${t.toLowerCase()}`}function ol(e,t){let r=Pt(e,t);return Object.fromEntries([...Le(r,"block"),...Le(r,"dimension"),...Le(r,"formatter"),...Le(r,"report"),...Le(r,"section"),...Zn(r),...Qn(r),...Bn(r),ta(r),Xn(r),ea(r),xt(r,"flickr"),xt(r,"local"),xt(r,"unsplash"),xt(r,"upload"),xt(r,"adobe"),Jt(r,"flickr"),Jt(r,"local"),Jt(r,"unsplash"),Jt(r,"adobe"),ra(r),ca(r),la(r),ua(r),pa(r),da(r),oa(r),na(),sa(r),ma(),fa(r,"tabler"),ya(r,"tabler"),ga(),ia(r),Ra(),ha()].map(({handler:o,method:n,path:s,roleRequired:a})=>[lo(n,s),{handler:o,roleRequired:a}]))}function nl(e){return (t,r,o)=>new Promise((n,s)=>{e(o)(t,r,a=>a instanceof Error?s(a):n(a));})}var al=nl(el);function sl(e){let t=Ze().then(r=>ol(r,e));return async function(o,n){await al(o,n,{methods:["GET","HEAD","PUT","PATCH","POST","DELETE"],origin:"*"});let{query:s,method:a}=o,{path:i,...c}=s;if(i&&a){let l=await t.then(p=>{let u=[].concat(i).join("/"),m=lo(a,u);return p[m]});if(l){let p=await me(o,n,e);if(l.roleRequired){if(!p)return n.status(401).json({error:"Unauthorized. Must be logged in."});let u=p&&p.user&&p.user.bespoke_roles&&Array.isArray(p.user.bespoke_roles)?p.user.bespoke_roles:[];if(Array.isArray(l.roleRequired)&&l.roleRequired.length>0&&!ar(u,l.roleRequired))return n.status(402).json({error:"Forbidden. Not enough roles."})}if(l.handler)return ["POST","DELETE"].includes(a)&&(o.body=await co(o)),Promise.resolve(o).then(u=>l.handler(u,n,p||void 0)).then(async u=>{if(u&&"error"in u)throw new E(u.status,u.error);if(u.ok)if(u.data instanceof Buffer){let m=await tl(u.data),f=Buffer.byteLength(u.data);n.writeHead(u.status,{"Content-Type":m?m.mime:"image/jpeg","Content-Length":f.toString()}).send(u.data);}else o.url&&o.url.indexOf("/icon.svg?name=")>0?(n.setHeader("Content-Type","image/svg+xml"),n.status(u.status).send(u.data)):n.status(u.status).json(u.wrapper?{data:u.data}:u.data);}).catch(u=>{rl&&console.error("Backend Error",u),n.status(u.code).json({error:u.message});})}}else i||await t.then(console.info);return n.status(404).json({error:"No matching route",path:i,query:c})}}var il=e=>{let t=e;return async function(r,o){let n=await t({test:"pala"});return o.json(n)}},cl=il;var pt={};cs(pt,{addBlockToState:()=>or,addRunConsumersRunning:()=>Wa,cloneEntity:()=>qa,createEntity:()=>Ua,deleteEntity:()=>Va,deleteQueryParam:()=>du,readEntity:()=>oe,readEnvSecrets:()=>Tu,readMember:()=>Ue,readMetadata:()=>rr,readPrivateBlocks:()=>Su,readUser:()=>Ru,recalculateVariables:()=>Qa,removeBlocksFromState:()=>Fe,removeDataSourceLogic:()=>nr,removeRunConsumersRunning:()=>Ja,reportSearch:()=>lu,resetSectionState:()=>ja,revalidateReport:()=>Au,revalidateUrl:()=>Eu,searchMember:()=>pu,searchRegenerate:()=>uu,searchRole:()=>yu,searchUser:()=>gu,setCurrentLocale:()=>su,setPreferredLocale:()=>iu,setPreviews:()=>au,setQueryParam:()=>mu,setSectionState:()=>Ha,setStatus:()=>Ka,updateEntity:()=>Fa,updateMyData:()=>bu,updateUser:()=>hu,urlProxy:()=>fu,variantValidateSlug:()=>cu});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 te(e,t,r){let o=typeof t=="string"?{url:t}:t;return n=>Re(e,{...o,method:"GET",params:r?r(n):n})}function re(e,t,r){let o=typeof t=="string"?{url:t}:t;return n=>Re(e,{...o,method:"POST",data:n})}function Me(e,t,r){let o=typeof t=="string"?{url:t}:t;return n=>Re(e,{...o,method:"DELETE",params:r?r(n):n})}function It(e,t){return r=>Re(e,{method:"POST",url:`images/save/${t}`,params:{prompt:r.prompt,provider:t}})}function Yt(e,t){return r=>Re(e,{method:"GET",url:`images/search/${t}`,params:{prompt:r.prompt,page:r.page,provider:t}})}function ba(e,t){return ()=>Re(e,{method:"GET",url:`list/icons/${t}`,params:{provider:t}})}function Sa(e,t){return r=>Re(e,{method:"GET",url:`read/icons/${t}/icon.svg`,params:{name:r.name}})}var nt=e=>({id:e}),ul=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 Qt(e){let t=Pr.create({baseURL:e});return {createBulkBlock:re(t,"create/bulk/block"),createBlock:re(t,"create/block"),createDimension:re(t,"create/dimension"),createFormatter:re(t,"create/formatter"),createReport:re(t,"create/report"),createSection:re(t,"create/section"),createVariant:re(t,"create/variant"),createDatasource:re(t,"create/datasource"),deleteBlock:Me(t,"delete/block",nt),deleteDimension:Me(t,"delete/dimension",nt),deleteFormatter:Me(t,"delete/formatter",nt),deleteReport:Me(t,"delete/report",nt),deleteSection:Me(t,"delete/section",nt),deleteVariant:Me(t,"delete/variant",nt),deleteDatasource:Me(t,"delete/datasource",nt),readBlock:te(t,"read/block"),readDimension:te(t,"read/dimension"),readFormatter:te(t,"read/formatter"),readReport:te(t,"read/report"),readSection:te(t,"read/section"),readVariant:te(t,"read/variant"),readDatasource:te(t,"read/datasource"),updateBulkBlock:re(t,"update/bulk/block"),updateBlock:re(t,"update/block"),updateDimension:re(t,"update/dimension"),updateFormatter:re(t,"update/formatter"),updateReport:re(t,"update/report"),updateSection:re(t,"update/section"),updateVariant:re(t,"update/variant"),updateDatasource:re(t,"update/datasource"),searchReport:te(t,"search/reports"),validateVariantSlug:te(t,"validate/variant"),readMember:te(t,"read/members",ul),readMemberImage:te(t,{url:"member/image",responseType:"blob"}),searchMember:te(t,"search/members"),updateMember:te(t,"update/members"),imageLocalSearch:Yt(t,"local"),imageLocalSave:It(t,"local"),imageFlickrSearch:Yt(t,"flickr"),imageFlickrSave:It(t,"flickr"),imageUnsplashSearch:Yt(t,"unsplash"),imageUnsplashSave:It(t,"unsplash"),imageUploadSave:It(t,"upload"),imageAdobeSearch:Yt(t,"adobe"),imageAdobeSave:It(t,"adobe"),readMetadata:te(t,"read/metadata"),regenerateSearch:re(t,"search/regenerate"),urlProxy:te(t,"url/proxy"),searchRole:te(t,"auth/search/roles"),searchUser:te(t,"auth/search/users"),readUser:te(t,"auth/read/user"),updateUser:re(t,"auth/update/user"),updateMyData:re(t,"auth/update/me"),revalidateReport:te(t,"revalidate/report"),revalidateUrl:te(t,"revalidate/url"),readPrivateBlocks:re(t,"read/blocks/private"),listTablerIcons:ba(t,"tabler"),readTablerIcon:Sa(t,"tabler"),readEnvSecrets:te(t,"read/secrets")}}var ml=Gt(process.env.REPORTS_LOGGING),at=fl;function fl(e,t,r,o,n=void 0,s){let a={},i=[],{locale:c}=fe(s);try{if(t){let l=new Proxy(console,{get(u,m){return yl(m,"log","debug","info","warn","error")?(...f)=>{i.push(`${m} ${Date.now()} - ${f.map(d=>format(d)).join(" ")}`),ml&&u[m](...f);}:u[m]}}),p;return n?p=new Function(e,"console","libs","formatters","locale","variables",r)(t,l,He,o,c,n):p=new Function(e,"console","libs","formatters","locale",r)(t,l,He,o,c),typeof p=="object"&&Object.keys(p).length>0&&Object.assign(a,p),{vars:a,error:null,log:i,output:p}}return {vars:a,error:"Invalid API Link",log:i}}catch(l){return {vars:a,error:l.message,log:i}}}function yl(e,...t){return t.includes(e)}var uo=(e,t,r)=>{let{variables:o}=r,n=a=>a.allowed==="never"?false:!a.allowed||a.allowed==="always"||o[a.allowed],s={...e};return Object.keys(s).forEach(a=>{typeof s[a]=="string"?s[a]=ye(s[a],t,r):Array.isArray(s[a])?s[a]=s[a].filter(n).map(i=>typeof i=="object"?uo(i,t,r):typeof i=="string"?ye(i,t,r):i):typeof s[a]=="object"&&s[a]!==null&&!(s[a]instanceof Date)&&(s[a]=uo(s[a],t,r));}),s},_r=uo;var Ea=e=>Array.isArray(e)?e.map(t=>typeof t=="string"?{allowed:"always",label:t,id:t}:{allowed:"always",label:t.id,...t}):[];var gl=(e,t,r)=>{if(!r)return false;if(e===We.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(s=>s.id).includes(n))},po=gl;function mo(e,t,r,o,n=false){let{variables:s}=fe(o),a=_r({logic:t},r,o).logic,i=at("variables",s,a,r,void 0,o),{vars:c,log:l,error:p}=i,u=c.type||We.SINGLE,m=c.component||"Selector",f=c.hideLabel||"false",d=c.resetSectionVars||"false",h=c.name||"Unlabeled Selector",R=Ea(c.options||[]),S=w=>u===We.MULTI&&!Array.isArray(w)?[w]:w,x=c.defaultValue,P;if(x&&(x=S(x),po(u,x,R)&&(P=x)),!P){let w=R&&R[0]&&R[0].id||R[0]||"";P=S(w);}if(n&&typeof window<"u"){let w=`selector${e}id`,q=new URLSearchParams(window.location.search),D=Object.fromEntries(q)[w];D&&!po(u,D,R)&&D!==void 0&&(q.delete(w),window.history.replaceState(null,null,`?${q.toString()}`));}return {config:{name:h,type:u,options:R,defaultValue:P,component:m,hideLabel:f,resetSectionVars:d},log:l,error:p}}function fo(e,t,r){if(!e)return false;let o=Array.isArray(r)?r:r.split(",");return Array.isArray(o)&&o.every(n=>e.map(s=>`${s[`${t} ID`]}`).includes(n))}function yo(e,t,r,o,n=false){let{variables:s}=fe(o),a=_r({logic:t},r,o).logic,i=at("variables",s,a,r,void 0,o),{vars:c,log:l,error:p}=i;if(n&&typeof window<"u"){let m=`multihierarchySelector${e}-value`,f=`multihierarchySelector${e}-type`,d=new URLSearchParams(window.location.search),h=Object.fromEntries(d),R=h[m],S=h[f];R&&R!==void 0&&S&&S!==void 0&&!fo(c.data,S,R)&&(d.delete(m),d.delete(f),window.history.replaceState(null,null,`?${d.toString()}`));}return {config:c,log:l,error:p}}var Rl=(e,t,r)=>{let o=`selector${e}id`,n=new URLSearchParams(typeof location<"u"&&location?.search?location.search:"").get(o),s=new URLSearchParams(t).get(o),a=n||s;if(r.type===We.MULTI){let l=a?a.split(","):r.defaultValue,p=r.options.filter(u=>l.includes(u.id));return {[`selector${e}id`]:l,[`selector${e}label`]:(p||[]).map(u=>u.label)}}let i=a&&r.options.find(l=>l.id===a)?a:r.defaultValue,c=r.options.find(l=>l.id===i);return {[`selector${e}id`]:i,[`selector${e}label`]:c&&c.label||void 0}},Aa=Rl;var hl=(e,t,r)=>{let o=`multihierarchySelector${e}-value`,n=`multihierarchySelector${e}-type`,s=new URLSearchParams(typeof location<"u"&&location?.search?location.search:"").get(o),a=new URLSearchParams(typeof location<"u"&&location?.search?location.search:"").get(n),i=new URLSearchParams(t).get(o),c=new URLSearchParams(t).get(n),l=s||i,p=a||c,u=l?l.split(","):r.defaultValue||[],m=p||r.defaultValueType||"",f=r.data?.filter(d=>u.includes(`${d[`${m} ID`]}`))||[];return {[`multihierarchySelector${e}id`]:u,[`multihierarchySelector${e}label`]:[...new Set((f||[]).map(d=>d[m]))],[`multihierarchySelector${e}type`]:m}},Ta=hl;var{localeDefault:_a,locales:bl}=K(),Sl=Object.values(Wr),El=(e,t=_a)=>e&&Sl.includes(e.type)?{locale:Jr,locales:[Jr]}:{locale:t,locales:bl},wa=(e,t=_a)=>{if(!e)return {};let{locale:r}=El(e,t);return e.contentByLocale?.[r]?.content};function Al(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(s=>o.includes(s)))).map(n=>[n.id,n]))}var ka=Al;function go(e){return e.type===O.SECTION_FLAG&&e.inputs.length===0&&e.consumers.length===0}var Oe=Gt(process.env.NEXT_PUBLIC_REPORTS_DEBUG),xl=process.env.REPORTS_ORIGIN||"",Il=process.env.NEXT_PUBLIC_REPORTS_AXIOS_RETRIES,va=5;try{va=parseInt(`${Il||5}`,10);}catch(e){console.error("Error setting axios retries NEXT_PUBLIC_REPORTS_AXIOS_RETRIES defaults to 5",e);}Pa(Pr,{retries:va,retryDelay:Pa.exponentialDelay,onRetry:(e,t,r)=>{console.error("Generator request failed. Retrying... Count: ",e),console.error("URL: ",r.url),console.error(t.message);}});Pr.interceptors.request.use(e=>({...e,requestStart:Date.now()}));Pr.interceptors.response.use(e=>({...e,requestDuration:new Date().getTime()-e.config.requestStart}),e=>Promise.reject(e));var vl=(e,t,r)=>{let o=ye(e,t,r);return o.startsWith("http")||(o=`${xl}${o.startsWith("/")?"":"/"}${o}`),o},{urlProxy:Cl}=Qt("/api/cms");function kr(e){return e.ok!==void 0}function wr(e){this.message=e,this.name="ApiFetchException";}var xa=process.env.NEXT_PUBLIC_REPORTS_API_FETCH_TIMEOUT||0;async function Bl(e,t,r="en",o,n){let s=Date.now(),a=e,i,c=pe(),l=Et(),p={envs:{...c,...l}},u=new URL(e),m=new URLSearchParams(u.searchParams.toString());m.has("bespoke_slugs")&&(u.searchParams.delete("bespoke_slugs"),a=u.toString());let f={datasource:void 0};o.find(x=>{if(!x.content?.pattern)return false;try{let P=new RegExp(x.content.pattern,"gm");return P.test(a)?(f.datasource=x,!0):P.test(a)}catch{return false}});let d=n?n.settings:{},h=!!(d&&d.useProxy&&d.useProxy==="true"),R=f.datasource&&typeof f.datasource.content.useProxy=="boolean"?f.datasource.content.useProxy:false,S=`${process.env.NEXT_PUBLIC_REPORTS_BASE_URL}/api/cms/url/proxy?url=${encodeURIComponent(a)}`;if(typeof window=="object"&&(h||R)){let x=await Cl({url:a,timeout:xa});if(x.ok===true)i=x.data;else throw new wr(x?.error)}else try{let P={url:a,timeout:xa};if(f.datasource){let w=p;if(typeof window<"u")try{let D=await getSession();if(D){let _={user:D.user,status:"authenticated",isLoading:!1,update:async()=>D};w={...p,session:_};}}catch(D){console.warn("Could not retrieve user session:",D);}let B=await Rr({vars:["url","libs","session"],logic:f.datasource.content.logic},w)(a);if(B.axiosConfig)P=B.axiosConfig;else throw new wr(`AxiosConfig is missing in Data Source ${f.datasource.name} (ID: ${f.datasource.id}).`)}let F=await Pr(P);if(F.status===200)F.headers["content-type"]==="text/csv"?i=csvParse(F.data):i=F.data;else throw new wr("No response for: "+a)}catch(x){throw new wr(x.message)}if(m.has("bespoke_slugs")){let x=m.get("bespoke_slugs");if(x){let P=x.split(",");if(P.length===3){let[F,w,q]=P,B=Mt(i,q);if(B&&Array.isArray(B)){let D=Array.from(new Set(B.map(_=>`${_[w]}`).filter(_=>!["","undefined"].includes(_))));if(D.length>0){let _=D.join("").length>2e3,L=await t({mode:_?"whole":"ids",ids:_?void 0:D,all:false,locale:r,variant:[parseInt(F,10)],output:"lite",limit:D.length+1,allowNulls:true}).then(U=>{let C=[];return kr(U)?U.ok&&(C=U.data.results):C=U.results,C&&Array.isArray(C)?C:[]}).catch(U=>(console.error(`Error hydrating slugs for Variant: ${F}, Key: ${w}, Accessor: ${q}`),console.error(` Url ${e}`),n&&console.error(` From Section ${n.section_id} and Block ${n.id}`),console.error(U),[]));if(L){let U=Object.fromEntries(L.map(C=>[C.id,`/${C.variant_slug}/${C.slug}`]));B.map(C=>(C.bespoke_slug=U[C[w]]?U[C[w]]:null,C));}}}}}}return {data:i,requestDuration:Date.now()-s,finalUrl:R||h?S:a,apiDataSource:f.datasource?f.datasource:false}}function Ll(e){this.name="BlockException",this.message=e;}async function Ia(e,t,r,o,n){let{locale:s,variables:a,query:i}=fe(r),c=Ol(e,r,a,t),l=null,p=e.contentByLocale?.logic?.content?.api,u=null,m=null,f=null,d,h;if(!c)return {outputVariables:{},renderVariables:{},status:{allowed:false,hiddenByCascade:e.id}};if(e.type===O.FALLBACK)return {outputVariables:{},renderVariables:{},status:{allowed:c,hiddenByCascade:e.id}};if(p){f=vl(p,t,r);let B=f.split("|||").filter(L=>L!==""),D=[];for(let L=0;L<B.length;L++){let U=B[L];new RegExp("^(?:[a-z+]+:)?//","i").test(f)||(U=`${process.env.NEXT_PUBLIC_REPORTS_BASE_URL}/${U}`.replace(/([^:]\/)\/+/g,"$1")),D.push(Bl(U,o,s,n,e).catch($=>{throw new Ll(` Excecution of ${e.type}-${e.id} in section ${e.section_id} in report ${a.report_name} (${a.report_id}) failed.
25
+ `)}return global.typesense};async function tc(){try{if(Tt){let e=await Pr.get(new URL(Tt).origin);if(e?.data["typesense-health"]===!0)return ve&&console.info(`${Tt} 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 rc(){if(ve&&console.info(`\u{1F3F3}\uFE0F INITIALIZING TYPESENSE SEARCH AGAINST ${Tt}`),!await tc())throw new Error("TYPESENSE_URL service is not healthy.");let t=Xi.map(r=>(ve&&console.info(`\u{1F3F3}\uFE0F INITIALIZING SEARCH ${r} LOCALE`),[r,{search:async(n={query:"*",limit:12,offset:0})=>{let s={locale:r,query:n.query,limit:n.limit,offset:n.offset};return n.report&&Array.isArray(n.report)&&n.report.length>0&&(s["report[]"]=n.report.join(",")),n.variant&&Array.isArray(n.variant)&&n.variant.length>0&&(s["variant[]"]=n.variant.join(",")),ve&&console.info("Typesense URL:",Tt,s),Pr.get(Tt,{params:s}).then(i=>(ve&&(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 gn=ec;var{localeDefault:io}=K();function _t(e){let{search:t,report:r}=e;return o;async function o(n){let s=n.origin||"flexsearch",a=process.env.REPORTS_EXTERNAL_SEARCH&&s==="typesense",{query:i,locale:c,preferredLocale:l,limit:p,format:u,visible:m,variant:f,dimension:d,report:h,all:R,noImage:S,includes:P,sort:x,direction:F="ASC",offset:w=0}=n,B=qt.find(C=>C.locales.includes(c))?.charset||"latin",D=p&&!isNaN(p)?p:20,_=Xe(i,B!=="arabic");function L(C){return C.toJSON()}function U(C){let $=C.getContent(c);return {...C.toJSON(),locale:$.locale,name:$.name,attributes:$.attributes,keywords:$.keywords}}if(a){let C=await gn(),$=C[c]||C[io],M={query:_===""?"*":_,limit:D,variant:f,report:h,offset:w};return await $.search(M)}else {let C=[],$=await et(e);if(i&&i!==""&&$[c]){let J=Xe(i,B!=="arabic"),ie={query:J,limit:D},V=await $[c].search(ie);if(a?C=V.data.results.map(Q=>parseInt(Q.content_id,10)):C=V.reduce((Q,W)=>Q.concat(W.result),[]),C=sr(C),l&&$[l]){let W=$[l].search(J).reduce((le,se)=>le.concat(se.result),[]);W=sr(W),C=sr([...C,...W]);}}let M={...m?{visible:m}:{},...S?{image_id:{[Op.eq]:null}}:{},...f.length?{variant_id:f}:{},...d.length?{dimension_id:d}:{},...h.length?{report_id:h}:{}},k={locale:R?{[Op.ne]:null}:c},j=[];i&&i!==""&&C.length&&x!=="report"?j.push([literal(`array_position(array[${C.join(",")}], "content_id")`),"ASC"]):(x==="report"&&j.push([literal(`COALESCE(NULLIF("report"."settings"->>'order', '')::INTEGER, 999999)`),"ASC"],[literal(`COALESCE(NULLIF("variant"."settings"->>'order', '')::INTEGER, 999999)`),"ASC"]),j.push(["zvalue","DESC NULLS LAST"])),x&&x!=="name"&&x!=="report"&&j.unshift([x,F.toUpperCase()]),i&&i!==""&&(M.content_id=C);let A=[{association:"contentByLocale",where:k}];(P||x==="report")&&A.push({association:"report",attributes:["id","name","settings"]},{association:"dimension",attributes:["id","name","settings"]},{association:"variant",attributes:["id","slug","name","settings"]});let b={...M.visible?{visible:M.visible}:{},...M.noImage?{image_id:M.noImage}:{},...M.content_id?{content_id:M.content_id}:{}};if(!M.report_id&&!M.dimension_id&&!M.variant_id&&m){let ie=(await r.findAll({attributes:["id"],where:{[Op.or]:[where(cast(json("settings.hide"),"boolean"),true)]}})).map(V=>V.id);ie.length>0&&(M.report_id={[Op.notIn]:ie},b.report_id=M.report_id);}let T=[],[v,ne]=await Promise.all([t.findAll({limit:D,offset:w,where:M,include:A,order:j,subQuery:false}),t.findAll({attributes:["variant_id",[fn("COUNT",col("variant_id")),"members_count"]],where:b,group:["variant_id"]})]),ae=ne.map(J=>J.toJSON());if(x==="name"){let J=F.toUpperCase()==="ASC"?1:-1;v.sort((ie,V)=>{let Q=ie.getContent(io),W=V.getContent(io);return Q&&W?Q.name>W.name?1*J:-1*J:0});}let Z=u==="nested"?L:U;return T=v.map(Z),u!=="nested"&&T.forEach(J=>{let{name:ie,keywords:V,score:Q=.1,zvalue:W}=J;if(ie){let le=Xe(ie),se=Q,ce=i.length/le.length,xo=le.split("").reduce(($r,Po,vo)=>(i.slice(0,vo),i.charAt(vo)===Po&&($r+=Po),$r),"").length;le===i||V&&V.includes(i)?se=1e6:le.startsWith(i)?se*=20*ce:xo&&(se*=xo*ce),J.zvalue=se*2+W;}}),{meta:{origin:"flexsearch",...Object.fromEntries(Object.entries(n).map(J=>[J[0],H(J[1])])),variantCount:ae.reduce((J,ie)=>(J[ie.variant_id]=parseInt(ie.members_count,10),J),{})},results:T}}}}function yn(e){let{image:t,image_content:r,search:o,search_content:n}=e;return s;async function s(a){let{content_id:i,contentByLocale:c,image:l,image_id:p}=a,u={where:{content_id:i}},m=await o.findOne(u);if(await o.update(a,{where:{content_id:i}}),c){for(let d=0;d<c.length;d++){let h=c[d];await n.update({name:h.name,keywords:h.keywords},{where:{id:h.id,locale:h.locale}});}u={...u,...{include:[{association:"contentByLocale",separate:true}]}};}if(l){if(l.id&&(await t.update({...l},{where:{id:l.id}}),l.contentByLocale))for(let f=0;f<l.contentByLocale.length;f++){let d=l.contentByLocale[f];await r.update({meta:d.meta},{where:{id:d.id,locale:d.locale}});}}else !p&&m.image_id&&(await e.search.findAll({where:{image_id:m.image_id}})).length===0&&await t.destroy({where:{id:m.image_id}});return o.findOne(u)}}function Rn(e){return {ingestMembers:pn(e),readMember:dn(e),searchMember:_t(e),updateMember:yn(e),readMemberImage:mn(e)}}var tt={include:[{association:"contentByLocale",separate:true},{association:"inputs",include:[{association:"contentByLocale",separate:true}]},{association:"consumers",include:[{association:"contentByLocale",separate:true}]}]},$t=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,...tt}]},Ar=e=>({include:[{association:"dimensions",separate:true,...$t(e)},{association:"sections",separate:true,...zt}]});var Se=[{association:"image",attributes:{exclude:["splash"]},include:[{association:"contentByLocale"}]},{association:"contentByLocale"}];function hn(e){let{block:t,block_content:r,block_input:o}=e;return {createBlock:n,readBlock:a,updateBlock:i,deleteBlock:l,createBulkBlock:s,updateBulkBlock:c};async function n(p){let{locales:u,...m}=p;return (await t.create({...m,consumers:[],inputs:[],contentByLocale:u.map(d=>({locale:d}))},{include:tt.include})).toJSON()}async function s(p){let u=p.map(f=>{let{locales:d,...h}=f;return {...h,consumers:[],inputs:[],contentByLocale:d.map(S=>({locale:S}))}});return (await t.bulkCreate(u,{include:tt.include})).map(f=>f.toJSON())}async function a({id:p,include:u}={}){let m=p==null?[]:[].concat(p),f=await t.findAll({where:m.length>0?{id:m}:void 0,include:u?tt.include:void 0});if(m.length===0||f.length===m.length)return f.map(R=>R.toJSON());let d=f.map(R=>R.id),h=m.filter(R=>!d.includes(R));throw new E(404,`Block(id=[${h}]) does not exist.`)}async function i(p){let{id:u,contentByLocale:m,consumers:f,inputs:d,inputAction:h,...R}=p,S=await t.findByPk(u,{include:tt.include,rejectOnEmpty:true});if(S.set(R),m){let P=Object.values(m);await r.bulkCreate(P,{updateOnDuplicate:["content"]});}return h&&(h.operation==="create"?await o.create(h.input):await o.destroy({where:h.input})),await S.save(),await S.reload(),S.toJSON()}async function c(p){let u=p.map(d=>{let{id:h,contentByLocale:R,consumers:S,inputs:P,inputAction:x,...F}=d;return {id:h,contentByLocale:R,inputAction:x,...F}}),m=await t.findAll({where:{id:{[Op.or]:u.map(d=>d.id)}},include:tt.include}),f=[];for(let d of m){let h=u.filter(R=>R.id===d.id);for(let R=0;R<h.length;R++){let S=h[R],{id:P,contentByLocale:x,inputAction:F,...w}=S;if(F&&(F.operation==="create"?await o.create(F.input):await o.destroy({where:F.input})),x){let q=Object.values(x);await r.bulkCreate(q,{updateOnDuplicate:["content"]});}d.set(w),await d.save(),await d.reload(),f.push(d.toJSON());}}return f}async function l(p){let u=await t.findByPk(p,{rejectOnEmpty:true});return await u.destroy(),{id:p,parentType:"section",parentId:u.section_id}}}function bn(e){let{dimension:t,search:r}=e;return {createDimension:o,readDimension:n,updateDimension:s,deleteDimension:a};async function o(i){return (await t.create({name:i.name,report_id:i.report_id,ordering:i.ordering||0,variants:[]},{include:$t(r).include})).toJSON()}async function n({id:i,include:c}={}){let l=i==null?[]:[].concat(i),p=await t.findAll({where:l.length>0?{id:l}:void 0,include:c?$t(r).include:void 0});if(l.length===0||p.length===l.length)return p.map(f=>f.toJSON());let u=p.map(f=>f.id),m=l.filter(f=>!u.includes(f));throw new E(404,`Dimension(id=[${m}]) does not exist.`)}async function s(i){let{id:c,variants:l,...p}=i,u=await t.findByPk(c,{include:$t(r).include,rejectOnEmpty:false});if(!u)throw new E(404,`Dimension(id=${c}) does not exist.`);return u.set(p),await u.save(),u.toJSON()}async function a(i){let c=await t.findByPk(i,{rejectOnEmpty:false});return await c.destroy(),{id:i,parentType:"report",parentId:c.report_id}}}function Sn(e){let{formatter:t}=e;return {createFormatter:r,readFormatter:o,updateFormatter:n,deleteFormatter:s};async function r(a){return (await t.create(a)).toJSON()}async function o({id:a}={}){let i=a==null?[]:[].concat(a),c=await t.findAll({where:i.length>0?{id:i}:void 0});if(i.length===0||c.length===i.length)return c.map(u=>u.toJSON());let l=c.map(u=>u.id),p=i.filter(u=>!l.includes(u));throw new E(404,`Formatter(id=[${p}]) does not exist.`)}async function n(a){let{id:i,...c}=a,l=await t.findByPk(i,{rejectOnEmpty:true});return await l.update(c),l.toJSON()}async function s(a){return await(await t.findByPk(a,{rejectOnEmpty:true})).destroy(),{id:a}}}function An(e){let{datasource:t}=e;return {createDatasource:r,readDatasource:o,updateDatasource:n,deleteDatasource:s};async function r(a){return (await t.create(a)).toJSON()}async function o({id:a,include:i}={}){try{let c=a==null?[]:[].concat(a),l=i===!0,p=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||p.length===c.length)return p.map(f=>f.toJSON());let u=p.map(f=>f.id),m=c.filter(f=>!u.includes(f));throw new E(404,`Datasource(id=[${m}]) does not exist.`)}catch(c){throw new E(500,c)}}async function n(a){let{id:i,...c}=a,l=await t.findByPk(i,{rejectOnEmpty:true});return await l.update(c),l.toJSON()}async function s(a){return await(await t.findByPk(a,{rejectOnEmpty:true})).destroy(),{id:a}}}var{locales:pc}=K();function Tn(e){let{report:t,search:r}=e;return {createReport:o,readReport:n,updateReport:s,deleteReport:a};async function o(i){return (await t.create({name:i.name,sections:[],dimensions:[]},{include:Ar(r).include})).toJSON()}async function n({id:i,include:c,locales:l=pc}={}){let u=(i==null?[]:[].concat(i)).reduce((h,R)=>(h.includes(R)||h.push(R),h),[]),m=await t.findAll({where:u.length>0?{id:u}:void 0,include:c?Ar(r).include?.filter(h=>typeof c=="string"?h.association===c:c):void 0});if(u.length===0||m.length===u.length)return m.map(h=>{let R=h.toJSON();return {...R,sections:R.sections.map(S=>({...S,blocks:S.blocks.map(P=>({...P,contentByLocale:Object.keys(P.contentByLocale).reduce((x,F)=>({...x,...[...l,"logic"].includes(F)?{[F]:P.contentByLocale[F]}:{}}),{})}))}))}});let f=m.map(h=>h.id),d=u.filter(h=>!f.includes(h));throw new E(404,`Report(id=${d}) does not exist.`)}async function s(i){let{id:c,dimensions:l,sections:p,...u}=i,m=await t.findByPk(c,{include:Ar(r).include,rejectOnEmpty:false});if(!m)throw new E(404,`Report(id=${c}) does not exist.`);return m.set(u),await m.save(),await m.reload(),m.toJSON()}async function a(i){return await(await t.findByPk(i,{rejectOnEmpty:false})).destroy(),{id:i}}}function _n(e){let{section:t}=e;return {createSection:r,readSection:o,updateSection:n,deleteSection:s};async function r(a){return (await t.create({ordering:a.ordering,report_id:a.report_id,blocks:[]},{include:zt.include})).toJSON()}async function o({id:a,include:i}={}){let c=a==null?[]:[].concat(a),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(m=>m.toJSON());let p=l.map(m=>m.id),u=c.filter(m=>!p.includes(m));throw new E(404,`Section(id=${u}) does not exist.`)}async function n(a){let{id:i,blocks:c,...l}=a,p=await t.findByPk(i,{include:zt.include,rejectOnEmpty:false});return p.set(l),await p.save(),await p.reload(),p.toJSON()}async function s(a){let i=await t.findByPk(a,{rejectOnEmpty:true});return await i.destroy(),{id:a,parentType:"report",parentId:i.report_id}}}function xn(e,t){let{variant:r,search:o}=e;return {createVariant:n,readVariant:s,updateVariant:a,deleteVariant:i,validateVariantSlug:c};async function n(l){let{dimension_id:p,name:u,slug:m}=l,f=await c({dimension:p,slug:m});return (await r.create({dimension_id:p,name:u,slug:f.valid?f.candidate:f.suggestion})).toJSON()}async function s({id:l}={}){let p=l==null?[]:[].concat(l),u=await r.findAll({where:p.length>0?{id:p}:void 0,attributes:{include:[[fn("COUNT",col("members.id")),"members_count"]]},include:[{model:o,attributes:[],as:"members"}],group:["variant.id"]});if(p.length===0||u.length===p.length)return u.map(d=>d.toJSON());let m=u.map(d=>d.id),f=p.filter(d=>!m.includes(d));throw new E(404,`Variant(id=${f}) does not exist.`)}async function a(l){let{id:p,...u}=l,m=await r.findByPk(p,{include:[{association:"dimension"}],rejectOnEmpty:true});u.settings=Vt(u.settings);let f=u.settings.doIngest;return u.settings.doIngest=false,await m.update(u),f&&(await t.ingestMembers(m),await et(e,true)),await m.reload(),m.toJSON()}async function i(l){let p=await r.findByPk(l,{rejectOnEmpty:true});return await p.destroy(),et(e,true),{id:l,parentType:"dimension",parentId:p.dimension_id}}async function c({dimension:l,slug:p}){let u=await r.findAll({attributes:["slug",[fn("COUNT",col("id")),"slugCount"]],where:{dimension_id:{[Op.ne]:l}},group:"slug"}).then(h=>Object.fromEntries(h.map(R=>{let S=R.getDataValue("slugCount");return [R.slug,Number.parseInt(`${S}`,10)]}))),m=p,f=1,d=true;for(;u[m];)d=false,m=`${p}-${f}`,f++;return {candidate:p,dimension_id:l,suggestion:m,valid:d}}}function Pn(e){let t={...hn(e),...bn(e),...Sn(e),...An(e),...Rn(e),...Tn(e),..._n(e)},r={...t,...xn(e,t)};return {createFormatter:I(r.createFormatter),deleteFormatter:I(r.deleteFormatter),readFormatter:I(r.readFormatter),updateFormatter:I(r.updateFormatter),createReport:I(r.createReport),deleteReport:I(r.deleteReport),readReport:I(r.readReport),updateReport:I(r.updateReport),createDimension:I(r.createDimension),deleteDimension:I(r.deleteDimension),readDimension:I(r.readDimension),updateDimension:I(r.updateDimension),createVariant:I(r.createVariant),readVariant:I(r.readVariant),updateVariant:I(r.updateVariant),deleteVariant:I(r.deleteVariant),validateVariantSlug:I(r.validateVariantSlug),createSection:I(r.createSection),readSection:I(r.readSection),updateSection:I(r.updateSection),deleteSection:I(r.deleteSection),createBlock:I(r.createBlock),deleteBlock:I(r.deleteBlock),readBlock:I(r.readBlock),updateBlock:I(r.updateBlock),createBulkBlock:I(r.createBulkBlock),updateBulkBlock:I(r.updateBulkBlock),readMember:I(r.readMember),searchMember:I(r.searchMember),updateMember:I(r.updateMember),readMemberImage:I(r.readMemberImage),createDatasource:I(r.createDatasource),deleteDatasource:I(r.deleteDatasource),readDatasource:I(r.readDatasource),updateDatasource:I(r.updateDatasource)}}if(typeof window<"u")throw new Error("uploadImage.ts can only be imported on the server side");var vn=e=>{throw console.error("/methods/helpers/uploadImage.ts:",e),new Error(e.message)},mc=Number(process.env.NEXT_PUBLIC_IMAGE_SPLASH_WIDTH)||1400,fc=Number(process.env.NEXT_PUBLIC_IMAGE_THUMB_WIDTH)||400,gc=async(e,t,r)=>{let o=[{type:"splash",res:mc},{type:"thumb",res:fc}],n=(await import('sharp')).default;for(let s of o){let a=await n(r).resize(s.res).toFormat("webp").webp({lossless:true}).toBuffer().catch(vn);await e.image.update({[s.type]:a},{where:{id:t}}).catch(vn);}},Ie=gc;var In="SECTION_ALLOWED";if(typeof window<"u")throw new Error("flickr.ts can only be imported on the server side");var Cn=["4","5","7","8","9","10"],hc=Cn.join(),{locales:bc}=K(),Ce;if(process.env.FLICKR_API_KEY)try{Ce=new Rc(process.env.FLICKR_API_KEY);}catch(e){throw console.error("Flickr ERROR:",e),new Error(e.message)}async function Bn(e,t){try{let r={prompt:t.prompt||"",page:t.page||1};if(!Ce)throw console.warn("Flickr is not initialized. Check the credentials"),new Error("Flickr is not initialized. Check the credentials");let o=r.prompt,s=(await Ce.photos.search({text:o,license:hc,sort:"relevance",per_page:24,page:r.page,content_types:"0",orientation:"landscape"}).then(l=>l.body)).photos.photo,a=s.reduce((l,p)=>l.concat(Ce.photos.getSizes({photo_id:p.id})),[]),c=(await Promise.all(a).then(l=>l)).reduce((l,p,u)=>{let m=p.body.sizes.size.find(f=>f.label==="Small 320");return m&&l.push({id:s[u].id,source:m.source}),l},[]);return {meta:{prompt:H(r.prompt),page:H(`${r.page}`)},results:c}}catch(r){throw console.error(r),new Error("Error in search flickr provider")}}async function Ln(e,t){try{let{content_id:r,image_id:o}=t,n={content_id:H(`${r}`)||"",id:H(`${o}`)||""},a=`https://flic.kr/p/${yc.int_to_base58(o)}`;if(!Ce)throw new Error("Flickr API Key not configured");let i=await Ce.photos.getInfo({photo_id:o}).then(l=>l.body),c;if(i)if(Cn.includes(i.photo.license)){let l=await e.search.findOne({where:{content_id:r}}),p=await e.image.findOne({where:{url:a}});if(l){if(p)await e.search.update({image_id:p.id},{where:{content_id:r}});else {let m=await Ce.photos.getSizes({photo_id:o}).then(w=>w.body),f=m.sizes.size.find(w=>parseInt(w.width,10)>=1600);if(f||(f=m.sizes.size.find(w=>parseInt(w.width,10)>=1e3)),f||(f=m.sizes.size.find(w=>parseInt(w.width,10)>=500)),!f||!f.source)throw new Error("Flickr Source Error, try another image.");let d=await fetch(f.source);if(!d.ok)throw new Error("Flickr Error retrieving image, try another image.");let h=await d.arrayBuffer(),S=(await Ce.photos.licenses.getInfo().then(w=>w.body.licenses.license)).find(w=>w.id===parseInt(i.photo.license,10)),P={url:a,author:i.photo.owner.realname||i.photo.owner.username,license:S?`${S.name}: ${S.url}`:""},x=await e.image.create(P);await e.image_content.destroy({where:{id:x.id}});let F=bc.map(w=>({id:x.id,locale:w,meta:i.photo.title._content}));await e.image_content.bulkCreate(F),await e.search.update({image_id:x.id},{where:{content_id:r}}),await Ie(e,x.id,h);}let u=await e.search.findOne({where:{content_id:r},include:Se});u&&u.image&&(u.image.thumb=!!u.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 N(e,t,r,o){return {method:e,path:t,handler:r,roleRequired:o}}function ee(e){let t=Number.parseInt(`${e||""}`,10);if(Number.isNaN(t)||!Number.isFinite(t))throw new E(400,`Invalid numeric parameter: ${e}`);return t}function G(e){return e==null||e===""?[]:Array.isArray(e)?e:e.toString().split(",")}var{localeDefault:Be}=K();function Mn(e){let{readMember:t,searchMember:r,updateMember:o,readMemberImage:n}=e;return [N("GET","read/members",async s=>{let a=Sc(s.query),i=a[a.mode]||[],c=a.mode==="whole";if(!c&&i.length===0)throw new E(400,`The request is missing the '${a.mode}' parameter.`);if(!c&&i.length>20&&!a.variant)throw new E(400,`You can look for up to 20 '${a.mode}' in a single request.`);return t(a)}),N("GET","search/members",s=>{let a=Kt(s.query);return r(a)}),N("POST","update/member",s=>{let{body:a}=s;return o(a)},[z.EDITOR]),N("GET","member/image",s=>{let a=G(s.query.size)[0];return n({member:ee(s.query.member),size:a&&a==="splash"?"splash":"thumb"})})]}function Sc(e){let t=G(e.locale)[0]||Be,r=t==="all"||Gt(e.all),o=G(e.mode)[0],s=(G(e.output)[0]||"full")==="lite"?"lite":"full",a=parseInt(G(e.related)[0],10)||5,i=Gt(e.allowNulls,{default:false}),c=G(e.variant).map(ee);if(c.length===0&&(c=G(e["variant[]"]).map(ee)),o==="ids")return {all:r,mode:o,variant:c,output:s,locale:r?Be:H(t),ids:G(e.ids||e["ids[]"]),allowNulls:i};if(o==="content_ids")return {all:r,mode:o,variant:c,output:s,locale:r?Be:H(t),content_ids:G(e.content_ids||e["content_ids[]"]).map(ee),allowNulls:false};if(o==="slugs")return {all:r,mode:o,variant:c,output:s,locale:r?Be:H(t),slugs:G(e.slugs||e["slugs[]"]).map(l=>{let[p,u]=l.split("/");return {variantSlug:p,memberSlug:u}}),allowNulls:false};if(o==="related")return {all:r,mode:o,locale:r?Be:H(t),related:a,current_ids:G(e.current_ids||e["current_ids[]"]).map(ee),include_ids:G(e.include_ids||e["include_ids[]"]).map(ee),report_ids:G(e.report_ids||e["report_ids[]"]).map(ee),dimension_ids:G(e.dimension_ids||e["dimension_ids[]"]).map(ee),variant_ids:G(e.variant_ids||e["variant_ids[]"]).map(ee),output:s,allowNulls:false};if(o==="whole")return {all:r,mode:o,variant:c,locale:r?Be:H(t),output:s,allowNulls:i};throw new E(400,`Invalid mode: '${o}'`)}function Kt(e){let t=G(e.locale)[0]||Be||"en",r=t==="all",o=G(e.format)[0],n=o?o==="nested":r,s=G(e.variant).map(ee);s.length===0&&(s=G(e["variant[]"]).map(ee));let a=G(e.dimension).map(ee);a.length===0&&(a=G(e["dimension[]"]).map(ee));let i=G(e.report).map(ee);i.length===0&&(i=G(e["report[]"]).map(ee));let c=e.origin==="typesense"?"typesense":"flexsearch";return {query:G(e.query||e.q)[0]||"",locale:r?Be:t,preferredLocale:G(e.preferredLocale)[0],limit:G(e.limit).map(ee)[0]??5,format:n?"nested":"plain",includes:Gt(e.includes,{default:true}),visible:Gt(e.visible,{default:true}),noImage:Gt(e.noImage,{default:false}),variant:s,dimension:a,report:i,all:r,sort:G(e.sort)[0],direction:G(e.direction)[0],offset:Number(e.offset||0),origin:c}}async function On(e,t){let r=_t(e),o=Kt({query:t.prompt,limit:"50",visible:"false"}),s=(await r(o)).results.filter(a=>a.image_id).map(a=>({id:a.image_id,source:`/api/cms/member/image?member=${a.content_id}&size=thumb`}));return {meta:{prompt:H(o.query)},results:s}}async function Nn(e,t){let{search:r}=e,{content_id:o,image_id:n}=t;await r.update({image_id:n},{where:{content_id:o}});let s=await r.findOne({where:{content_id:o},include:Se}).then(a=>a?{...a.toJSON(),image:{...a.image.toJSON(),thumb:!!a.image.thumb}}:null);return {meta:{id:n,content_id:o},results:s}}if(typeof window<"u")throw new Error("unsplash.ts can only be imported on the server side");var{locales:Tc}=K(),Ht;if(process.env.UNSPLASH_API_KEY)try{Ht=createApi({accessKey:process.env.UNSPLASH_API_KEY});}catch(e){throw console.error("Unsplash error:",e),new Error(e.message)}async function Dn(e,t){try{let r={prompt:t.prompt||"",page:t.page||1};if(!Ht)throw new Error("Unsplash API Key not configured");let o=r.prompt,s=(await Ht.search.getPhotos({query:o,perPage:24,page:r.page,orientation:"landscape"}).then(a=>a.response.results)).map(a=>({id:a.id,source:a.urls.thumb}));return {meta:{prompt:H(r.prompt),page:H(`${r.page}`)},results:s}}catch(r){throw console.error(r),new Error("Error in search unsplash provider")}}async function Un(e,t){try{let{content_id:r,image_id:o}=t,n={content_id:H(`${r}`)||"",id:H(`${o}`)||""};if(!Ht)throw console.warn("Unsplash is not initialized. Check the credentials"),new Error("Unsplash is not initialized. Check the credentials");let s=await Ht.photos.get({photoId:o}).then(i=>i.response),a;if(s){let i=await e.search.findOne({where:{content_id:r}}),c=s.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 u=await Pr.get(s.urls.full,{responseType:"arraybuffer"}).then(h=>h.data),m={url:c,author:s.user.name||s.user.username,license:"Free Unsplash license: https://unsplash.com/license"},f=await e.image.create(m);await e.image_content.destroy({where:{id:f.id}});let d=Tc.map(h=>({id:f.id,locale:h,meta:s.description||s.alt_description}));await e.image_content.bulkCreate(d),await e.search.update({image_id:f.id},{where:{content_id:r}}),await Ie(e,f.id,u);}let p=await e.search.findOne({where:{content_id:r},include:Se});p&&p.image&&(p.image.thumb=!!p.image.thumb);}else throw new Error("Error updating Search")}else throw new Error("Malformed URL");return {meta:{...n},results:a}}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:wc}=K();async function Fn(e,t){try{let{content_id:r,image_source:o,files:n}=t,s={content_id:H(`${r}`)||""};if(await e.search.findOne({where:{content_id:r}})&&n){let c=await _c.readFileSync(n.file.filepath),l={url:o,author:"",license:""},p=await e.image.create(l);await e.image_content.destroy({where:{id:p.id}});let u=wc.map(m=>({id:p.id,locale:m,meta:""}));await e.image_content.bulkCreate(u),await e.search.update({image_id:p.id},{where:{content_id:r}}),await Ie(e,p.id,c);}let i=await e.search.findOne({where:{content_id:r},include:Se});return i&&i.image&&(i.image.thumb=!!i.image.thumb),{meta:{...s},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:kc}=K();var Vn=async e=>{let t={"x-api-key":process.env.ADOBE_STOCK_API_KEY||"EMPTY_ADOBE_KEY","X-Product":"BespokeApp/0.1"};return t};var jt;if(process.env.ADOBE_STOCK_API_KEY)try{jt={search:async(e,t)=>await Pr.get("https://stock.adobe.io/Rest/Media/1/Search/Files",{headers:await Vn(!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 Pr.get("https://stock.adobe.io/Rest/Media/1/Files",{headers:await Vn(!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 qn(e,t){try{let r={prompt:t.prompt||"",page:t.page||1};if(!jt)throw new Error("Adobe API Key not configured");let n=(await jt.search(r.prompt,r.page)).map(s=>({id:s.id,source:s.thumbnail_url}));return {meta:{prompt:H(r.prompt),page:H(`${r.page}`)},results:n}}catch(r){throw console.error(r),new Error("Error in search Adobe provider")}}async function $n(e,t){try{let{content_id:r,image_id:o}=t,n={content_id:H(`${r}`)||"",id:H(`${o}`)||""};if(!jt)throw console.warn("Adobe is not initialized. Check the credentials"),new Error("Adobe is not initialized. Check the credentials");let s=await jt.get(o),a;if(s){let i=await e.search.findOne({where:{content_id:r}}),c=s.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 u=await Pr.get(s.thumbnail_1000_url,{responseType:"arraybuffer"}).then(h=>h.data),m={url:c,author:s.creator_name,license:"ADOBE, TO-DO"},f=await e.image.create(m);await e.image_content.destroy({where:{id:f.id}});let d=kc.map(h=>({id:f.id,locale:h,meta:s.title||s.description}));await e.image_content.bulkCreate(d),await e.search.update({image_id:f.id},{where:{content_id:r}}),await Ie(e,f.id,u);}let p=await e.search.findOne({where:{content_id:r},include:Se});p&&p.image&&(p.image.thumb=!!p.image.thumb);}else throw new Error("Error updating Search")}else throw new Error("Malformed URL");return {meta:{...n},results:a}}catch(r){throw console.error(r),new Error("Error in save adobe provider")}}if(typeof window<"u")throw new Error("imageSave.ts can only be imported on the server side");var xc={local:Nn,flickr:Ln,unsplash:Un,upload:Fn,adobe:$n};function kt(e,t){let r=xc[t];if(!r)throw new E(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 Pc={local:On,flickr:Bn,unsplash:Dn,adobe:qn};function Wt(e,t){let r=Pc[t];if(!r)throw new E(500,`Wrong provider dbImageSearchFactory.ts: ${t}`);return I(o=>r(e,o))}var Oc=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 _r(e){let{report:t,search:r}=e;return o;async function o(n){let s=n?.report_id?Number(n.report_id):void 0,a=!(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"]]}]}]};return s&&(i.where={...i.where,id:s}),a&&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=>({...Oc(l.toJSON()),mode:l.dimensions.length===1?xe.UNILATERAL:xe.MULTILATERAL}))}}}function zn(e){return async()=>(await et(e,true),{error:false})}var{locales:Nc,localeDefault:Dc}=K(),Uc=(e,t)=>{if(!e)return [];let r=[];return t.forEach(o=>{let n=e.filter(s=>s.metadata.report.id===o.id);if(n.length>0)if(o.mode===xe.UNILATERAL){let s=o.dimensions[0];s.variants.forEach(a=>{let i=n.filter(c=>c.metadata.dimension.id===s.id&&c.metadata.variant.id===a.id);i.length>0&&(r=r.concat(i.map(c=>({path:`/${a.slug}/${c.slug}`,name:c.name,confidence:c.confidence,report:{id:o.id,name:o.name,mode:o.mode},members:[c],id:`r-${o.id}-${[c].map(l=>`${l.id}`).join("-")}`}))));});}else o.mode;}),r},Fc=(e,t)=>{if(!e)return [];let r,o,n;return e.map(s=>(r={...t.find(a=>a.id===s.report_id)},o={...r.dimensions.find(a=>a.id===s.dimension_id)},n={...o.variants.find(a=>a.id===s.variant_id)},delete r.dimensions,delete o.variants,{name:s.name,confidence:s.zvalue,metadata:{id:s.id,slug:s.slug,report:r,dimension:o,variant:n},id:s.content_id,slug:s.slug}))};function Gn(e){let t=_t(e),r=_r(e);return o;async function o(n){let s=n.format||"results",a=Nc.includes(n.locale)?n.locale:Dc,i=n.origin||"flexsearch",c=process.env.REPORTS_EXTERNAL_SEARCH&&i==="typesense",l=await t({...n,format:"plain",locale:H(a),visible:true});if(c)return l;{let p=l.results?l.results:[],m=(await r()).data,f=Fc(p,m);return {meta:{...l.meta,origin:"flexsearch",format:s},results:Uc(f,m)}}}}function Kn(e){return async t=>{try{let{variantPaths:r}=t,o=[];if(r)for(let n=0;n<r.length;n++){let s=r[n];(await e.search.findAll({attributes:["slug"],where:{variant_id:s.variantId}})).forEach(i=>{o.push(`/${s.prefix}/${s.variantSlug}/${i.slug}`);});}return {...t,paths:o,revalidated:0,samples:[]}}catch(r){throw new E(r.response?.status||500,r.message)}}}function Hn(){return async e=>{try{let{target:t}=e;return {target:t}}catch(t){throw new E(t.response?.status||500,t.message)}}}function ye(e,t){let r=[],o=s=>Object.values(t).reduce((i,c)=>("inputs"in c&&c.inputs.includes(s)&&(i.push(c.id),i=i.concat(o(c.id))),i),[]);e.forEach(s=>{r=r.concat(o(s));});let n=[];return r.forEach(s=>{n.includes(s)||n.push(s);}),n}function qc(e,t){return e.some(r=>t.includes(`role.${r}`))}function jn(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(a=>a&&a.sections&&Array.isArray(a.sections)?a.sections.reduce((i,c)=>{let l=c.blocks.map(p=>{let u=p.toJSON();return u.inputs=u.inputs.map(m=>m.id),u.consumers=u.consumers.map(m=>m.id),u});return i.concat(l)},[]):[]),s=n.filter(a=>a.settings&&a.settings.access&&Array.isArray(a.settings.access)&&Array.isArray(o.roles)&&(a.settings.access.includes("private")||qc(o.roles,a.settings.access))).map(a=>a.id);return s=s.concat(ye(s,n)),{params:{...o},data:n.filter(a=>s.includes(a.id))}}}var Gc=Object.keys(lo).filter(e=>e.indexOf("Icon")===0);async function Wn(){return {meta:{provider:"tabler"},results:Gc}}async function Jn(e){let t=lo[e.name]?lo[e.name]:()=>"";return renderToString(createElement(t))}var Kc={tabler:Wn};function Yn(e){let t=Kc[e];if(!t)throw new E(500,`Wrong provider dbListIconsFactory.ts: ${e}`);return I(()=>t())}var Hc={tabler:Jn};function Qn(e){return I(t=>{let r=Hc[e];if(!r)throw new E(500,`Wrong provider dbReadIconFactory.ts: ${t.provider}`);return r({name:t.name,provider:e})})}function Zn(){return e;async function e(){return {secrets:Et()}}}function rt(e,t,r){return Ze().then(o=>{Object.assign(r,xt(o));})}function xt(e,t){let r={},o=qe(t||{providers:[]});return t&&o.actions&&o.source==="custom"?(r.searchRole=I(o.actions.searchRole()),r.searchUser=I(o.actions.searchUser()),r.readUser=I(o.actions.readUser()),r.updateUser=I(o.actions.updateUser())):o.source==="auth0"&&(r.searchRole=I(Lo()),r.searchUser=I(Mo()),r.readUser=I(Oo()),r.updateUser=I(No())),{...Pn(e),searchReport:I(Gn(e)),readMetadata:I(_r(e)),regenerateSearch:I(zn(e)),imageFlickrSearch:Wt(e,"flickr"),imageLocalSearch:Wt(e,"local"),imageUnsplashSearch:Wt(e,"unsplash"),imageAdobeSearch:Wt(e,"adobe"),imageFlickrSave:kt(e,"flickr"),imageLocalSave:kt(e,"local"),imageUnsplashSave:kt(e,"unsplash"),imageUploadSave:kt(e,"upload"),imageAdobeSave:kt(e,"adobe"),urlProxy:br(e),searchRole:r.searchRole,searchUser:r.searchUser,readUser:r.readUser,updateUser:r.updateUser,updateMyData:I(Do()),revalidateReport:I(Kn(e)),revalidateUrl:I(Hn()),readPrivateBlocks:I(jn(e)),listTablerIcons:Yn("tabler"),readTablerIcon:Qn("tabler"),readEnvSecrets:I(Zn())}}async function uo(e){try{let t=new jc.IncomingForm,r=await new Promise((o,n)=>{t.parse(e,(s,a,i)=>{if(s){console.error("Error in formidable parse function inside internal parseBody.ts",s),n(s);return}o({fields:a,files:i});});});return {...r.fields,files:r.files}}catch(t){return {error:t}}}function Le(e,t){let r=ue(e,"create",t),o=ue(e,"read",t),n=ue(e,"update",t),s=ue(e,"delete",t),a=ue(e,"updateBulk",t),i=ue(e,"createBulk",t);return [N("POST",`create/bulk/${t}`,c=>{let{body:l}=c,{files:p,...u}=l,m=Object.keys(u).map(f=>u[f]);return i(m)},[z.EDITOR]),N("POST",`create/${t}`,c=>{let{body:l}=c;return r(l)},[z.EDITOR]),N("GET",`read/${t}`,c=>{let l=c.query,p=G(l.id).map(ee);return o({id:p,include:Gt(l.include)})}),N("POST",`update/${t}`,c=>{let{body:l}=c;return n(l)},[z.EDITOR]),N("POST",`update/bulk/${t}`,c=>{let{body:l}=c,{files:p,...u}=l,m=Object.keys(u).map(f=>u[f]);return a(m)},[z.EDITOR]),N("DELETE",`delete/${t}`,c=>{let l=ee(c.query.id);return s(l)},[z.EDITOR])]}function Xn(e){let{validateVariantSlug:t}=e;return [...Le(e,"variant"),N("GET","validate/variant",r=>{let o=r.query,n=ee(o.dimension);return t({dimension:n,slug:yr(o.slug)})},[z.EDITOR])]}function ea(e){return Le(e,"datasource").map(r=>({...r,roleRequired:[z.EDITOR]}))}function Pt(e,t){let r=`image${be(t)}Save`,o=e[r];return N("POST",`images/save/${t}`,n=>{let s=n.body;if(!s.content_id)throw new E(400,"Missing 'content_id' parameter.");if(!s.image_id)throw new E(400,"Missing 'image_id' parameter.");return o(s)},[z.EDITOR])}function Jt(e,t){let r=`image${be(t)}Search`,o=e[r];return N("GET",`images/search/${t}`,async n=>{let s=G(n.query.prompt)[0];if(!s)throw new E(400,"Empty 'prompt' param.");return o({prompt:s,page:ee(n.query.page)})},[z.EDITOR])}function ta(e){let{readMetadata:t}=e;return N("GET","read/metadata",r=>t(r.query))}function ra(e){let{regenerateSearch:t}=e;return N("POST","search/regenerate",()=>t(void 0),[z.EDITOR])}function oa(e){let{searchReport:t}=e;return N("GET","search/reports",r=>{let o=Jc(r.query);return t(o)})}function Jc(e){return {...Kt(e),format:G(e.format)[0]}}function na(e){let{urlProxy:t}=e;return N("GET","url/proxy",(r,o,n)=>{let{url:s,method:a="GET",wrapper:i="true"}=r.query;if(!s)throw new E(400,"Missing URL parameter");let c=[];return n&&n.user&&n.user.bespoke_roles&&(c=n.user.bespoke_roles),t({url:Array.isArray(s)?s.join(","):s,method:G(a)[0]==="POST"?"POST":"GET",user_roles:c,wrapper:i!=="false",session:n})})}function aa(e){let{readMetadata:t,revalidateReport:r}=e;return N("GET","revalidate/report",async(o,n)=>{let{reportId:s,profilePrefix:a}=o.query;if(!s||!a)throw new E(400,"Missing URL parameter in revalidate factory: reportId or profilePrefix");try{let i=parseInt(`${s}`,10),c=`${a}`.split("/").filter(d=>d!=="").join("/"),l=[],p=await t({}).then(d=>d.ok?d.data.data.find(h=>h.id===i):[]);p&&p.mode===xe.UNILATERAL&&p.dimensions.forEach(d=>{d.variants.forEach(h=>{l.push({prefix:c,variantId:h.id,variantSlug:h.slug});});});let u=await r({profilePrefix:c,reportId:i,variantPaths:l}),m=[],f=0;return u.ok&&(f=u.data.paths.length,m=u.data.paths.slice(0,5),Promise.all(u.data.paths.map(d=>{let h;try{h=n.revalidate(d,{unstable_onlyGenerated:!0});}catch(R){console.error("error",d,R);}return h}))),{ok:!0,status:200,data:{reportId:s,revalidated:f,samples:m}}}catch(i){throw console.error(i),new E(500,"Error revalidating")}},[z.EDITOR])}function sa(){return N("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 E(500,"Error revalidating")}else throw new E(400,"Missing target parameter in revalidate factory")},[z.ADMIN,z.EDITOR,z.WRITER])}function ot(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:Qc}=K(),ia=ot();function ca(e){let{readPrivateBlocks:t}=e;return N("POST","read/blocks/private",(r,o,n)=>{let{userToken:s}=r.body,a=null;if(s&&ia)try{let l=Ii.verify(s,ia);a=typeof l=="object"&&l!==null&&"roles"in l?l.roles:[];}catch(l){console.error("Failed to verify user token:",l);}if(!a&&(!n||!n.user))throw new E(401,"Unauthorized. Must be logged in or provide a valid token.");let i=s&&a?a:n&&n.user?n.user.bespoke_roles:[],c={report_id:parseInt(r.body.report_id,10),locale:r.body.locale||Qc,roles:i,section_id:r.body.section_id||[]};return t(c)})}function la(e){let{readEnvSecrets:t}=e;return N("GET","read/secrets",()=>t({}),[z.EDITOR])}function ua(e){let{searchRole:t}=e;return N("GET","auth/search/roles",(r,o)=>t(""),[z.EDITOR,z.ADMIN])}function pa(e){let{searchUser:t}=e;return N("GET","auth/search/users",r=>t({query:r.query.query,role_id:r.query.role_id,page:r.query.page||0}),[z.ADMIN])}function da(e){let{readUser:t}=e;return N("GET","auth/read/user",r=>t(r.query.user_id),[z.ADMIN])}function ma(e){let{updateUser:t}=e;return N("POST","auth/update/user",async r=>{let o=r.body;return await t(o)},[z.ADMIN])}function fa(e){let{updateUser:t,readUser:r}=e;return N("POST","auth/update/me",async(o,n,s)=>{let{report_id:a,user_metadata:i}=o.body,c={user_id:s.user.id,user_metadata:{}};try{let{user:l}=s;return s&&l&&a&&(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:a})),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 Zc(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 ga(){return N("POST","pdf",async(e,t)=>{let{slugs:r,path:o}=e.body;if(!r||!o)throw new E(400,"Missing path parameter in request.");{new URL(o,e.headers.origin);return {ok:true,status:200,data:await Zc()}}})}function ya(e,t){let r=`list${be(t)}Icons`,o=e[r];return N("GET",`list/icons/${t}`,async()=>o({}),[z.EDITOR])}function Ra(e,t){let r=`read${be(t)}Icon`,o=e[r];return N("GET",`read/icons/${t}/icon.svg`,async n=>o({provider:t,name:n.query.name}))}function ha(){return N("GET","report",async(e,t)=>{let{report:r,prefix:o,locale:n}=e.query;if(!r)throw new E(400,"Missing report parameter.");if(!o)throw new E(400,"Missing report parameter.");if(!n)throw new E(400,"Missing report parameter.");try{let a=await(await fetch(`${process.env.NEXT_PUBLIC_REPORTS_BASE_URL}/${n}${o}${r}`)).text(),l=new Xc().parseFromString(a,"text/html").getElementById("__NEXT_DATA__")?.textContent,p=JSON.parse(l).props;return {ok:!0,status:200,data:{variables:p.pageProps.initialState.variables,status:p.pageProps.initialState.status}}}catch(s){throw console.error(s),new E(500,"Couldn't find page cache")}})}var tl=ot();function rl(e){let t={email:e.user.email,name:e.user.name,roles:e.user.bespoke_roles||[]};return Ii.sign(t,tl,{expiresIn:"1min"})}function ba(){return N("POST","users/generate-token",async(e,t,r)=>{if(!r||!r.user)throw new E(401,"Unauthorized. Must be logged in to generate a token.");try{return {ok:!0,status:200,wrapper:!1,data:{token:rl(r)}}}catch(o){throw console.error("Error generating token:",o),new E(500,"Internal Server Error")}})}var nl=ot(),al=e=>!!Ii.verify(e,nl);function Sa(){return N("POST","users/validate-token",async(e,t)=>{let{token:r}=e.body;try{return al(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 cl=ke();function po(e,t){return `${e.toUpperCase()} ${t.toLowerCase()}`}function ll(e,t){let r=xt(e,t);return Object.fromEntries([...Le(r,"block"),...Le(r,"dimension"),...Le(r,"formatter"),...Le(r,"report"),...Le(r,"section"),...ea(r),...Xn(r),...Mn(r),oa(r),ta(r),ra(r),Pt(r,"flickr"),Pt(r,"local"),Pt(r,"unsplash"),Pt(r,"upload"),Pt(r,"adobe"),Jt(r,"flickr"),Jt(r,"local"),Jt(r,"unsplash"),Jt(r,"adobe"),na(r),ua(r),pa(r),da(r),ma(r),fa(r),aa(r),sa(),ca(r),ga(),ya(r,"tabler"),Ra(r,"tabler"),ha(),la(r),ba(),Sa()].map(({handler:o,method:n,path:s,roleRequired:a})=>[po(n,s),{handler:o,roleRequired:a}]))}function ul(e){return (t,r,o)=>new Promise((n,s)=>{e(o)(t,r,a=>a instanceof Error?s(a):n(a));})}var pl=ul(sl);function dl(e){let t=Ze().then(r=>ll(r,e));return async function(o,n){await pl(o,n,{methods:["GET","HEAD","PUT","PATCH","POST","DELETE"],origin:"*"});let{query:s,method:a}=o,{path:i,...c}=s;if(i&&a){let l=await t.then(p=>{let u=[].concat(i).join("/"),m=po(a,u);return p[m]});if(l){let p=await me(o,n,e);if(l.roleRequired){if(!p)return n.status(401).json({error:"Unauthorized. Must be logged in."});let u=p&&p.user&&p.user.bespoke_roles&&Array.isArray(p.user.bespoke_roles)?p.user.bespoke_roles:[];if(Array.isArray(l.roleRequired)&&l.roleRequired.length>0&&!ar(u,l.roleRequired))return n.status(402).json({error:"Forbidden. Not enough roles."})}if(l.handler)return ["POST","DELETE"].includes(a)&&(o.body=await uo(o)),Promise.resolve(o).then(u=>l.handler(u,n,p||void 0)).then(async u=>{if(u&&"error"in u)throw new E(u.status,u.error);if(u.ok)if(u.data instanceof Buffer){let m=await il(u.data),f=Buffer.byteLength(u.data);n.writeHead(u.status,{"Content-Type":m?m.mime:"image/jpeg","Content-Length":f.toString()}).send(u.data);}else o.url&&o.url.indexOf("/icon.svg?name=")>0?(n.setHeader("Content-Type","image/svg+xml"),n.status(u.status).send(u.data)):n.status(u.status).json(u.wrapper?{data:u.data}:u.data);}).catch(u=>{cl&&console.error("Backend Error",u),n.status(u.code).json({error:u.message});})}}else i||await t.then(console.info);return n.status(404).json({error:"No matching route",path:i,query:c})}}var ml=e=>{let t=e;return async function(r,o){let n=await t({test:"pala"});return o.json(n)}},fl=ml;var pt={};us(pt,{addBlockToState:()=>or,addRunConsumersRunning:()=>Ya,cloneEntity:()=>za,createEntity:()=>Va,deleteEntity:()=>$a,deleteQueryParam:()=>hu,readEntity:()=>oe,readEnvSecrets:()=>vu,readMember:()=>Ue,readMetadata:()=>rr,readPrivateBlocks:()=>ku,readUser:()=>Tu,recalculateVariables:()=>Xa,removeBlocksFromState:()=>Fe,removeDataSourceLogic:()=>nr,removeRunConsumersRunning:()=>Qa,reportSearch:()=>gu,resetSectionState:()=>Ja,revalidateReport:()=>Pu,revalidateUrl:()=>xu,searchMember:()=>Ru,searchRegenerate:()=>yu,searchRole:()=>Eu,searchUser:()=>Au,setCurrentLocale:()=>du,setPreferredLocale:()=>mu,setPreviews:()=>pu,setQueryParam:()=>bu,setSectionState:()=>Wa,setStatus:()=>ja,updateEntity:()=>qa,updateMyData:()=>wu,updateUser:()=>_u,urlProxy:()=>Su,variantValidateSlug:()=>fu});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 te(e,t,r){let o=typeof t=="string"?{url:t}:t;return n=>Re(e,{...o,method:"GET",params:r?r(n):n})}function re(e,t,r){let o=typeof t=="string"?{url:t}:t;return n=>Re(e,{...o,method:"POST",data:n})}function Me(e,t,r){let o=typeof t=="string"?{url:t}:t;return n=>Re(e,{...o,method:"DELETE",params:r?r(n):n})}function vt(e,t){return r=>Re(e,{method:"POST",url:`images/save/${t}`,params:{prompt:r.prompt,provider:t}})}function Yt(e,t){return r=>Re(e,{method:"GET",url:`images/search/${t}`,params:{prompt:r.prompt,page:r.page,provider:t}})}function Ea(e,t){return ()=>Re(e,{method:"GET",url:`list/icons/${t}`,params:{provider:t}})}function Aa(e,t){return r=>Re(e,{method:"GET",url:`read/icons/${t}/icon.svg`,params:{name:r.name}})}var nt=e=>({id:e}),yl=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 Qt(e){let t=Pr.create({baseURL:e});return {createBulkBlock:re(t,"create/bulk/block"),createBlock:re(t,"create/block"),createDimension:re(t,"create/dimension"),createFormatter:re(t,"create/formatter"),createReport:re(t,"create/report"),createSection:re(t,"create/section"),createVariant:re(t,"create/variant"),createDatasource:re(t,"create/datasource"),deleteBlock:Me(t,"delete/block",nt),deleteDimension:Me(t,"delete/dimension",nt),deleteFormatter:Me(t,"delete/formatter",nt),deleteReport:Me(t,"delete/report",nt),deleteSection:Me(t,"delete/section",nt),deleteVariant:Me(t,"delete/variant",nt),deleteDatasource:Me(t,"delete/datasource",nt),readBlock:te(t,"read/block"),readDimension:te(t,"read/dimension"),readFormatter:te(t,"read/formatter"),readReport:te(t,"read/report"),readSection:te(t,"read/section"),readVariant:te(t,"read/variant"),readDatasource:te(t,"read/datasource"),updateBulkBlock:re(t,"update/bulk/block"),updateBlock:re(t,"update/block"),updateDimension:re(t,"update/dimension"),updateFormatter:re(t,"update/formatter"),updateReport:re(t,"update/report"),updateSection:re(t,"update/section"),updateVariant:re(t,"update/variant"),updateDatasource:re(t,"update/datasource"),searchReport:te(t,"search/reports"),validateVariantSlug:te(t,"validate/variant"),readMember:te(t,"read/members",yl),readMemberImage:te(t,{url:"member/image",responseType:"blob"}),searchMember:te(t,"search/members"),updateMember:te(t,"update/members"),imageLocalSearch:Yt(t,"local"),imageLocalSave:vt(t,"local"),imageFlickrSearch:Yt(t,"flickr"),imageFlickrSave:vt(t,"flickr"),imageUnsplashSearch:Yt(t,"unsplash"),imageUnsplashSave:vt(t,"unsplash"),imageUploadSave:vt(t,"upload"),imageAdobeSearch:Yt(t,"adobe"),imageAdobeSave:vt(t,"adobe"),readMetadata:te(t,"read/metadata"),regenerateSearch:re(t,"search/regenerate"),urlProxy:te(t,"url/proxy"),searchRole:te(t,"auth/search/roles"),searchUser:te(t,"auth/search/users"),readUser:te(t,"auth/read/user"),updateUser:re(t,"auth/update/user"),updateMyData:re(t,"auth/update/me"),revalidateReport:te(t,"revalidate/report"),revalidateUrl:te(t,"revalidate/url"),readPrivateBlocks:re(t,"read/blocks/private"),listTablerIcons:Ea(t,"tabler"),readTablerIcon:Aa(t,"tabler"),readEnvSecrets:te(t,"read/secrets")}}var bl=Gt(process.env.REPORTS_LOGGING),at=Sl;function Sl(e,t,r,o,n=void 0,s){let a={},i=[],{locale:c}=fe(s);try{if(t){let l=new Proxy(console,{get(u,m){return El(m,"log","debug","info","warn","error")?(...f)=>{i.push(`${m} ${Date.now()} - ${f.map(d=>format(d)).join(" ")}`),bl&&u[m](...f);}:u[m]}}),p;return n?p=new Function(e,"console","libs","formatters","locale","variables",r)(t,l,He,o,c,n):p=new Function(e,"console","libs","formatters","locale",r)(t,l,He,o,c),typeof p=="object"&&Object.keys(p).length>0&&Object.assign(a,p),{vars:a,error:null,log:i,output:p}}return {vars:a,error:"Invalid API Link",log:i}}catch(l){return {vars:a,error:l.message,log:i}}}function El(e,...t){return t.includes(e)}var mo=(e,t,r)=>{let{variables:o}=r,n=a=>a.allowed==="never"?false:!a.allowed||a.allowed==="always"||o[a.allowed],s={...e};return Object.keys(s).forEach(a=>{typeof s[a]=="string"?s[a]=ge(s[a],t,r):Array.isArray(s[a])?s[a]=s[a].filter(n).map(i=>typeof i=="object"?mo(i,t,r):typeof i=="string"?ge(i,t,r):i):typeof s[a]=="object"&&s[a]!==null&&!(s[a]instanceof Date)&&(s[a]=mo(s[a],t,r));}),s},wr=mo;var Ta=e=>Array.isArray(e)?e.map(t=>typeof t=="string"?{allowed:"always",label:t,id:t}:{allowed:"always",label:t.id,...t}):[];var Al=(e,t,r)=>{if(!r)return false;if(e===We.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(s=>s.id).includes(n))},fo=Al;function go(e,t,r,o,n=false){let{variables:s}=fe(o),a=wr({logic:t},r,o).logic,i=at("variables",s,a,r,void 0,o),{vars:c,log:l,error:p}=i,u=c.type||We.SINGLE,m=c.component||"Selector",f=c.hideLabel||"false",d=c.resetSectionVars||"false",h=c.name||"Unlabeled Selector",R=Ta(c.options||[]),S=w=>u===We.MULTI&&!Array.isArray(w)?[w]:w,P=c.defaultValue,x;if(P&&(P=S(P),fo(u,P,R)&&(x=P)),!x){let w=R&&R[0]&&R[0].id||R[0]||"";x=S(w);}if(n&&typeof window<"u"){let w=`selector${e}id`,q=new URLSearchParams(window.location.search),D=Object.fromEntries(q)[w];D&&!fo(u,D,R)&&D!==void 0&&(q.delete(w),window.history.replaceState(null,null,`?${q.toString()}`));}return {config:{name:h,type:u,options:R,defaultValue:x,component:m,hideLabel:f,resetSectionVars:d},log:l,error:p}}function yo(e,t,r){if(!e)return false;let o=Array.isArray(r)?r:r.split(",");return Array.isArray(o)&&o.every(n=>e.map(s=>`${s[`${t} ID`]}`).includes(n))}function Ro(e,t,r,o,n=false){let{variables:s}=fe(o),a=wr({logic:t},r,o).logic,i=at("variables",s,a,r,void 0,o),{vars:c,log:l,error:p}=i;if(n&&typeof window<"u"){let m=`multihierarchySelector${e}-value`,f=`multihierarchySelector${e}-type`,d=new URLSearchParams(window.location.search),h=Object.fromEntries(d),R=h[m],S=h[f];R&&R!==void 0&&S&&S!==void 0&&!yo(c.data,S,R)&&(d.delete(m),d.delete(f),window.history.replaceState(null,null,`?${d.toString()}`));}return {config:c,log:l,error:p}}var Tl=(e,t,r)=>{let o=`selector${e}id`,n=new URLSearchParams(typeof location<"u"&&location?.search?location.search:"").get(o),s=new URLSearchParams(t).get(o),a=n||s;if(r.type===We.MULTI){let l=a?a.split(","):r.defaultValue,p=r.options.filter(u=>l.includes(u.id));return {[`selector${e}id`]:l,[`selector${e}label`]:(p||[]).map(u=>u.label)}}let i=a&&r.options.find(l=>l.id===a)?a:r.defaultValue,c=r.options.find(l=>l.id===i);return {[`selector${e}id`]:i,[`selector${e}label`]:c&&c.label||void 0}},_a=Tl;var _l=(e,t,r)=>{let o=`multihierarchySelector${e}-value`,n=`multihierarchySelector${e}-type`,s=new URLSearchParams(typeof location<"u"&&location?.search?location.search:"").get(o),a=new URLSearchParams(typeof location<"u"&&location?.search?location.search:"").get(n),i=new URLSearchParams(t).get(o),c=new URLSearchParams(t).get(n),l=s||i,p=a||c,u=l?l.split(","):r.defaultValue||[],m=p||r.defaultValueType||"",f=r.data?.filter(d=>u.includes(`${d[`${m} ID`]}`))||[];return {[`multihierarchySelector${e}id`]:u,[`multihierarchySelector${e}label`]:[...new Set((f||[]).map(d=>d[m]))],[`multihierarchySelector${e}type`]:m}},wa=_l;var{localeDefault:ka,locales:wl}=K(),kl=Object.values(Yr),xl=(e,t=ka)=>e&&kl.includes(e.type)?{locale:Qr,locales:[Qr]}:{locale:t,locales:wl},xa=(e,t=ka)=>{if(!e)return {};let{locale:r}=xl(e,t);return e.contentByLocale?.[r]?.content};function Pl(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(s=>o.includes(s)))).map(n=>[n.id,n]))}var Pa=Pl;function ho(e){return e.type===O.SECTION_FLAG&&e.inputs.length===0&&e.consumers.length===0}var Oe=Gt(process.env.NEXT_PUBLIC_REPORTS_DEBUG),Ml=process.env.REPORTS_ORIGIN||"",Ol=process.env.NEXT_PUBLIC_REPORTS_AXIOS_RETRIES,Ba=5;try{Ba=parseInt(`${Ol||5}`,10);}catch(e){console.error("Error setting axios retries NEXT_PUBLIC_REPORTS_AXIOS_RETRIES defaults to 5",e);}va(Pr,{retries:Ba,retryDelay:va.exponentialDelay,onRetry:(e,t,r)=>{console.error("Generator request failed. Retrying... Count: ",e),console.error("URL: ",r.url),console.error(t.message);}});Pr.interceptors.request.use(e=>({...e,requestStart:Date.now()}));Pr.interceptors.response.use(e=>({...e,requestDuration:new Date().getTime()-e.config.requestStart}),e=>Promise.reject(e));var Nl=(e,t,r)=>{let o=ge(e,t,r);return o.startsWith("http")||(o=`${Ml}${o.startsWith("/")?"":"/"}${o}`),o},{urlProxy:Dl}=Qt("/api/cms");function xr(e){return e.ok!==void 0}function kr(e){this.message=e,this.name="ApiFetchException";}var Ia=process.env.NEXT_PUBLIC_REPORTS_API_FETCH_TIMEOUT||0;async function Ul(e,t,r="en",o,n){let s=Date.now(),a=e,i,c=pe(),l=Et(),p={envs:{...c,...l}},u=new URL(e),m=new URLSearchParams(u.searchParams.toString());m.has("bespoke_slugs")&&(u.searchParams.delete("bespoke_slugs"),a=u.toString());let f={datasource:void 0};o.find(P=>{if(!P.content?.pattern)return false;try{let x=new RegExp(P.content.pattern,"gm");return x.test(a)?(f.datasource=P,!0):x.test(a)}catch{return false}});let d=n?n.settings:{},h=!!(d&&d.useProxy&&d.useProxy==="true"),R=f.datasource&&typeof f.datasource.content.useProxy=="boolean"?f.datasource.content.useProxy:false,S=`${process.env.NEXT_PUBLIC_REPORTS_BASE_URL}/api/cms/url/proxy?url=${encodeURIComponent(a)}`;if(typeof window=="object"&&(h||R)){let P=await Dl({url:a,timeout:Ia});if(P.ok===true)i=P.data;else throw new kr(P?.error)}else try{let x={url:a,timeout:Ia};if(f.datasource){let w=p;if(typeof window<"u")try{let D=await getSession();if(D){let _={user:D.user,status:"authenticated",isLoading:!1,update:async()=>D};w={...p,session:_};}}catch(D){console.warn("Could not retrieve user session:",D);}let B=await hr({vars:["url","libs","session"],logic:f.datasource.content.logic},w)(a);if(B.axiosConfig)x=B.axiosConfig;else throw new kr(`AxiosConfig is missing in Data Source ${f.datasource.name} (ID: ${f.datasource.id}).`)}let F=await Pr(x);if(F.status===200)F.headers["content-type"]==="text/csv"?i=csvParse(F.data):i=F.data;else throw new kr("No response for: "+a)}catch(P){throw new kr(P.message)}if(m.has("bespoke_slugs")){let P=m.get("bespoke_slugs");if(P){let x=P.split(",");if(x.length===3){let[F,w,q]=x,B=Mt(i,q);if(B&&Array.isArray(B)){let D=Array.from(new Set(B.map(_=>`${_[w]}`).filter(_=>!["","undefined"].includes(_))));if(D.length>0){let _=D.join("").length>2e3,L=await t({mode:_?"whole":"ids",ids:_?void 0:D,all:false,locale:r,variant:[parseInt(F,10)],output:"lite",limit:D.length+1,allowNulls:true}).then(U=>{let C=[];return xr(U)?U.ok&&(C=U.data.results):C=U.results,C&&Array.isArray(C)?C:[]}).catch(U=>(console.error(`Error hydrating slugs for Variant: ${F}, Key: ${w}, Accessor: ${q}`),console.error(` Url ${e}`),n&&console.error(` From Section ${n.section_id} and Block ${n.id}`),console.error(U),[]));if(L){let U=Object.fromEntries(L.map(C=>[C.id,`/${C.variant_slug}/${C.slug}`]));B.map(C=>(C.bespoke_slug=U[C[w]]?U[C[w]]:null,C));}}}}}}return {data:i,requestDuration:Date.now()-s,finalUrl:R||h?S:a,apiDataSource:f.datasource?f.datasource:false}}function Fl(e){this.name="BlockException",this.message=e;}async function Ca(e,t,r,o,n){let{locale:s,variables:a,query:i}=fe(r),c=ql(e,r,a,t),l=null,p=e.contentByLocale?.logic?.content?.api,u=null,m=null,f=null,d,h;if(!c)return {outputVariables:{},renderVariables:{},status:{allowed:false,hiddenByCascade:e.id}};if(e.type===O.FALLBACK)return {outputVariables:{},renderVariables:{},status:{allowed:c,hiddenByCascade:e.id}};if(p){f=Nl(p,t,r);let B=f.split("|||").filter(L=>L!==""),D=[];for(let L=0;L<B.length;L++){let U=B[L];new RegExp("^(?:[a-z+]+:)?//","i").test(f)||(U=`${process.env.NEXT_PUBLIC_REPORTS_BASE_URL}/${U}`.replace(/([^:]\/)\/+/g,"$1")),D.push(Ul(U,o,s,n,e).catch($=>{throw new Fl(` Excecution of ${e.type}-${e.id} in section ${e.section_id} in report ${a.report_name} (${a.report_id}) failed.
26
26
  Error fetching ${U}.
27
27
  Message: ${$.message}.
28
- `)}));}let _=await Promise.all(D).catch(L=>L.message);if(typeof _=="string"&&_)return {outputVariables:{},renderVariables:{},status:{error:_}};l=_.length===1?_[0].data:_.map(L=>L.data),m=_.reduce((L,U)=>L+JSON.stringify(U.data).length/1024,0),u=Math.max(..._.map(L=>L.requestDuration)),d=_.map(L=>L.apiDataSource?`${L.apiDataSource.name} (${L.apiDataSource.id})`:null),h=_.map(L=>L.finalUrl);}if(e.type===O.SELECTOR){let{config:B,log:D,error:_}=mo(e.id,e.contentByLocale[s].content.logic,t,r,true);return {outputVariables:Aa(e.id,i,B),renderVariables:B,status:{log:D,error:_,allowed:c}}}if(e.type===O.MULTIHIERARCHY_SELECTOR){let{config:B,log:D,error:_}=yo(e.id,e.contentByLocale[s].content.logic,t,r,true);return {outputVariables:Ta(e.id,i,B),renderVariables:B,status:{log:D,error:_,allowed:c}}}if(e.type===O.VIZ)return {outputVariables:{},renderVariables:e.contentByLocale.logic.content,status:{log:[],allowed:c}};if(e.type===O.RELATED){let B=e.contentByLocale?.logic?.content?.simple?.compare||"variant",D=e.contentByLocale?.logic?.content?.simple?.limit||4,_=Object.keys(a).filter(b=>b.startsWith("report_id")).map(b=>a[b]),L=Object.keys(a).filter(b=>b.startsWith("dimension_id")).map(b=>a[b]),U=Object.keys(a).filter(b=>b.startsWith("variant_id")).map(b=>a[b]),C=Object.keys(a).filter(b=>b.startsWith("id")).map(b=>a[b]);if(!C.length)return {outputVariables:{related_reports:[]},renderVariables:{},status:{log:[],allowed:false}};let $=await Promise.all(C.map((b,T)=>o({mode:"ids",locale:s,ids:[b],output:"lite",variant:[U[T]]}))).then(b=>b.flatMap(T=>{let I=[];return kr(T)?T.ok&&(I=T.data.results):I=T.results,I&&Array.isArray(I)?I:[]})).catch(b=>(console.error("Error getting related members",b),[]));if(L.length>1){let b=Object.keys(a).filter(V=>V.startsWith("variant_slug")).map(V=>a[V]),T=$.map((V,Q)=>{let W={mode:"related",locale:s,related:D??4,current_ids:[V.content_id],output:"full",variant_ids:[V.variant_id]};return Q===0&&(W.include_ids=[V.content_id]),W}),I=await Promise.all(T.map(V=>o(V))).then(V=>V.flatMap(Q=>{let W=[];return kr(Q)?Q.ok&&(W=Q.data.results):W=Q.results,W&&Array.isArray(W)?W:[]})).catch(V=>(console.error("Error getting related members",V),[])),ne=I.reduce((V,Q)=>{let W=Q.variant_slug;return V[W]||(V[W]=[]),V[W].push(Q),V},{}),ae=[],Z=Object.keys(ne),J=[{combination:[],index:0}];for(;J.length>0;){let V=J.pop();if(!V)continue;let{combination:Q,index:W}=V;if(W===Z.length){ae.push(Q);continue}let le=Z[W],se=ne[le];for(let ce of se)J.push({combination:[...Q,ce],index:W+1});}return {outputVariables:{related_reports:ae.map(V=>{let Q=V.sort((W,le)=>b.indexOf(W.variant_slug)-b.indexOf(le.variant_slug));return {entities:Q,link:"/"+Q.map(W=>`${W.variant_slug}/${W.slug}`).join("/")}})},renderVariables:{},status:{log:[],allowed:I.length>0}}}let M=$.map(b=>b.content_id),k={mode:"related",locale:s,related:D??4,current_ids:M,output:"full"};B&&(B==="report"?k.report_ids=_:B==="dimension"?k.dimension_ids=L:k.variant_ids=U);let j=await o(k).then(b=>{let T=[];return kr(b)?b.ok&&(T=b.data.results):T=b.results,T&&Array.isArray(T)?T:[]}).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:R}=wa(e,s),S=ye(R,t,r),x=at("resp",l||{},S,t,a,r),{vars:P,error:F,log:w}=x;if(typeof P!="object")return {outputVariables:{},renderVariables:{},status:{error:"Configuration did not return an object",log:w,duration:u,responseSize:m,resp:l,api:f,allowed:c,apiFinalUrls:h,apiDataSources:d}};let q=Object.keys(P).reduce((B,D)=>({...B,[`${e.type}${e.id}${D}`]:P[D]}),{});return {renderVariables:P,outputVariables:[O.GENERATOR,O.SECTION_FLAG].includes(e.type)?P:q,status:{log:w,error:F,duration:u,responseSize:m,resp:l,api:f,allowed:c,apiFinalUrls:h,apiDataSources:d}}}function Ml(e,t,r,o,n,s,a){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=>Ro(l,t,o,false,s,n,a));}})}var Ro=(e,t,r=[],o=true,n=true,s=true,a=[])=>{if(a.includes(e))return [];a.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(p=>Ro(p,t,r,o,false,s,a));}),i&&i.consumers.length&&n&&Ml(i,t,e,r,s,n,a),r},Ol=(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 s=fe(t),{error:a,output:i}=at("variables",r,e.settings.allowedLogic||"return false;",o,void 0,s);a||(n=!!i);}return n},vt=async(e,t,r,o,n,s={},a,i="section",c)=>{let l=i==="section",p=fe(n),u=p.variables,m={...s.variables??{}},f={...s.status??{}},d=new Set,h=[],R={};r?R={...R,[r]:e[r]}:t?R=(t??[]).reduce((M,{id:k})=>({...M,...ka(k,e)}),{}):R=Object.values(e).filter(M=>go(M)).reduce((M,k)=>({...M,[k.id]:k}),{});let S=Object.values(R).filter(M=>go(M));if(S.length>0){Oe&&console.info("%crunConsumers: calculating section flags","color:purple",S.map(A=>A.id).join(", "));let M=Object.fromEntries(await Promise.all(S.map(async A=>[A.id,await Ia(A,o,{...p,variables:u,locale:u.locale},a,c).then(b=>{let{outputVariables:T,status:I}=b;if(I.error){if(typeof window>"u")throw new Error(`Run consumers (Block: ${A.id}, Section ${A.section_id}) failed with message: ${I.error}. `);f[A.id]={allowed:false,error:I.error},m[A.id]={};}return (A.consumers.length>0||[O.GENERATOR,O.SECTION_FLAG,O.RELATED].includes(A.type))&&I.allowed&&Object.keys(T).length>0?m[A.id]=T:m[A.id]={},i==="report"?(f[A.id]={allowed:I.allowed},[O.GENERATOR,O.SECTION_FLAG].includes(A.type)&&I.api&&(f[A.id].api=I.api)):f[A.id]=I,b})]))),j=Object.entries(M).filter(([,A])=>!A.outputVariables[xn]).map(([A])=>Number(A));d=new Set(j.map(A=>e[A].section_id)),Object.values(R).filter(A=>d.has(A.section_id)).forEach(A=>{h.push(A.id),delete R[A.id];}),Oe&&console.info("%crunConsumers: removing sections","color:purple",d.keys());}let x=d.size>0?Object.fromEntries(Object.entries(e).filter(([,M])=>d?.has(M.section_id)?(h.includes(M.id)||h.push(M.id),false):true)):e;if(h.length>0&&(x=Object.fromEntries(Object.entries(x).map(([M,k])=>{let j={...k,inputs:k.inputs.filter(A=>!h.includes(A)),consumers:k.consumers.filter(A=>!h.includes(A))};return [M,j]}))),!r&&!t)return {variables:{...s.variables??{},...m},status:{...s.status??{},...f}};i==="report"&&h.length>0&&h.forEach(M=>{delete m[M],delete f[M],delete e[M];}),Oe&&console.info("%crunConsumers: running root blocks","color:purple",Object.keys(R));let P=Object.keys(R).reduce((M,k)=>{let j=new Date,A=Ro(Number(k),x,[],!r,true,l).map(I=>I.split("-")),T=(new Date().getTime()-j.getTime())/1e3;return Oe&&console.info(`%cResolved dependencies for ${k} (${T.toFixed(2)}s)`,"color:blue"),[...M,...A]},[]),F=new Date,w=Object.keys(R).reduce((M,k)=>M.includes(k)?[...M]:[k,...M],_l(P)),B=(new Date().getTime()-F.getTime())/1e3;Oe&&console.info(`%cResolved DAG (${B.toFixed(2)}s): `,"color:green",w);let D=process.env.NEXT_PUBLIC_REPORTS_MAX_CONCURRENT_QUERIES_PER_REPORT,_=parseInt(`${D||0}`,10);async function L(M,k){let j=new Map,A=[],b=async()=>A.length;for(let T of M){if(_!==0){let Z=await b();for(;Z>=_;)Oe&&console.info("Too many pending promises, waiting...",Z,A),await new Promise(J=>setTimeout(J,500)),Z=await b();}let I=k[T],ae=Promise.all(I.inputs.filter(Z=>M.includes(String(Z))).map(Z=>j.get(Number(Z)))).then(async()=>{let Z=I.inputs.reduce((se,ce)=>({...se,...m[ce]}),u),J=I.inputs.find(se=>(I.settings?.ignoreCascade?I.settings?.ignoreCascade:[]).includes(se)||!f[se]?false:!f[se].allowed||f[se].hiddenByCascade);if(J){f[T]={allowed:false,hiddenByCascade:f[J].hiddenByCascade||J},m[T]={},A.splice(A.indexOf(Number(T)),1);return}let ie=new Date,V;typeof window<"u"&&[O.SELECTOR,O.MULTIHIERARCHY_SELECTOR].includes(I.type)&&I.settings[xe.DISABLED]?V=new Promise(se=>{se({outputVariables:m[T],status:f[T]});}):V=Ia(I,o,{...p,variables:Z,locale:Z.locale},a,c);let Q=await V.then(({outputVariables:se,status:ce})=>{if(ce.error){if(typeof window>"u")throw new Error(`Run consumers (Block: ${T}, Section ${I.section_id}) failed with message: ${ce.error}.`);f[T]={allowed:false,error:ce.error},m[T]={};}(I.consumers.length>0||[O.GENERATOR,O.SECTION_FLAG,O.RELATED].includes(I.type))&&ce.allowed&&Object.keys(se).length>0?m[T]=se:m[T]={},i==="report"?(f[T]={allowed:ce.allowed},[O.GENERATOR,O.SECTION_FLAG].includes(I.type)&&ce.api&&(f[T].api=ce.api)):f[T]=ce;}),le=(new Date().getTime()-ie.getTime())/1e3;return Oe&&console.info(`%cBlock ${I.id} resolved in ${le.toFixed(3)}s`,le>500?"color:red":"color:green"),f[T].duration=f[T].duration?f[T].duration:le,A.splice(A.indexOf(Number(T)),1),Q}).catch(Z=>{throw A.splice(A.indexOf(Number(T)),1),Z});A.push(Number(T)),j.set(Number(T),ae);}await Promise.all(Array.from(j.values()));}let U=new Date;await L(w,x);let $=(new Date().getTime()-U.getTime())/1e3;return Oe&&console.info(`%cResolved Variables (${$.toFixed(2)}s), ${w.length} blocks`,"color:green"),{variables:{...s.variables??{},...m},status:{...s.status??{},...f}}};function Nl(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(s=>{t[`attr_${s}${n}`]=r.attributes[s];}),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 Ct=Nl;function Dl(e,t){return +(e<t)-+(e>t)}function xr(e,t,r="ordering"){return Dl(t[r],e[r])}var{localeDefault:Fl}=K();var Zt=new schema.Entity("block",{},{mergeStrategy(e,t){return t.block_input?e||{}:{...e,...t}}});Zt.define({consumers:[Zt],inputs:[Zt]});var Ca=new schema.Entity("variant"),Ba=new schema.Entity("dimension",{variants:[Ca]},{processStrategy(e){return {...e,variants:"variants"in e?e.variants:[]}}}),La=new schema.Entity("section",{blocks:[Zt]}),Vl=new schema.Entity("report",{dimensions:[Ba],sections:[La]},{processStrategy(e){return {...e,sections:"sections"in e?e.sections.sort(xr):[]}}}),ql=new schema.Entity("formatter"),$l=new schema.Entity("datasource"),zl={report:Vl,section:La,block:Zt,dimension:Ba,variant:Ca,formatter:ql,datasource:$l};function Ir(e,t){let r=zl[e];if(!r)throw new Error(`Invalid entity type: ${e}`);let{entities:o}=normalize(t,[r]);return {report:st(o,"report"),dimension:st(o,"dimension"),section:st(o,"section"),block:st(o,"block"),variant:st(o,"variant"),formatter:st(o,"formatter"),datasource:st(o,"datasource")}}function st(e,t){return Object.prototype.hasOwnProperty.call(e,t)?e[t]:{}}var Ma=(e,t=void 0)=>{let{sid:r,bid:o,previews:n=[],query:s={}}=t||{},a,i,c={};return r?(a=r,c.activeSection=a):a=e.activeSection,n.length>0?(i=n,c.previews=i.filter(Boolean)):i=e.previews,{parsedParams:{sid:a,bid:o,previews:i,query:s},statusPayload:c}},Xt=(e=[],t=Fl)=>e.reduce((r,o)=>{let n=an({vars:["n"],logic:o.content.logic},{},t,{});return r[o.name]=n,r},{});var de=process.env.NEXT_PUBLIC_REPORTS_LOCALE_DEFAULT||"en",vr=process.env.NEXT_PUBLIC_REPORTS_LOCALES?.split(",")||[de];vr.includes(de)||vr.push(de);var Hl={localeDefault:de,locales:vr,currentLocale:de,preferredLocale:de,showToolbar:false,activeSection:null,previews:[],query:{},sectionState:{},activeEntity:{type:null,id:null},sidebarStatus:{tools:true,settings:false,reportEditor:false},isCMS:false,isRunConsumersRunning:[]},Cr=createSlice({name:"status",initialState:Hl,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;});}}),_e=Cr.actions;var Jl={attributes:{},variables:{},status:{}},Br=createSlice({name:"variables",initialState:Jl,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};});}}),Bt=Br.actions;var Zl={tree:[],reports:null,entities:{block:{},dimension:{},report:{},section:{},variant:{},formatter:{},datasource:{}},requests:{block:{},dimension:{},report:{},section:{},variant:{},formatter:{},datasource:{}}},we=createSlice({name:"records",initialState:Zl,reducers:{set:(e,t)=>{let r=t.payload;return {entities:er(e.entities,r.entities||{}),requests:er(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=Ir(r.type,o),s=er(e.entities,n);if(e.entities=s,r.type==="report"){let a=r.data;e.reports?e.reports.indexOf(a.id)===-1&&(e.reports=[...e.reports,a.id]):e.reports=[a.id];}else if(r.type==="dimension"){let a=r.data;e.entities.report[a.report_id].dimensions.push(a.id),e.entities.report[a.report_id].dimensions=Lr(s.report[a.report_id].dimensions,s.dimension);}else if(r.type==="variant"){let a=r.data;e.entities.dimension[a.dimension_id].variants.push(a.id);}else if(r.type==="section"&&!Array.isArray(r.data)){let a=r.data;e.entities.report[a.report_id].sections.push(a.id),e.entities.report[a.report_id].sections=Lr(s.report[a.report_id].sections,s.section);}else if(r.type==="block")if(Array.isArray(r.data)){let a=r.data,i=a[0],c=a.map(l=>l.id);e.entities.section[i.section_id].blocks.concat(c);}else {let a=r.data;e.entities.section[a.section_id].blocks.push(a.id);}}},setReadRequest(e,t){let r=t.payload;if(r.type!=="report"&&(e.requests[r.type][r.key]=r),r.status==="SUCCESS"){let o=Ir(r.type,r.data),n=er(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=Ir(r.type,o),s,a,i;if(r.type==="block"&&!Array.isArray(r.data)){let l=e.entities.block[r.data.id].inputs,p=n.block[r.data.id].inputs;s=l.length!==p.length,s&&(i=l.length>p.length,a=i?l.filter(u=>!p.includes(u))[0]:p.filter(u=>!l.includes(u))[0]),Object.values(n.block).forEach(u=>{u.block_input&&delete n.block[u.id];});}let c=er(e.entities,n);if(e.entities=c,r.type==="dimension"){let l=r.data;e.entities.report[l.report_id].dimensions=Lr(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=Lr(c.report[l.report_id].sections,c.section);}else if(r.type==="block"&&!Array.isArray(r.data)){let l=r.data;s&&(i?e.entities.block[a].consumers=e.entities.block[a].consumers.filter(p=>p!==l.id):e.entities.block[a].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:s}=r.data;if(delete e.entities[r.type][o],s&&n!=null){let a=`${r.type}s`;Xl(e.entities[s][n][a],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(s=>s.id),t.requests={block:{},dimension:{},report:{},section:{},variant:{},formatter:{},datasource:{}},t.tree=o.tree;});}});function er(e,t){return Object.fromEntries(Object.keys(e).map(r=>[r,{...e[r],...t[r]}]))}function Lr(e,t){return e.map(n=>t[n]).sort((n,s)=>typeof n.ordering=="string"&&typeof s.ordering=="string"?xr(n,s):typeof n.ordering=="number"&&typeof s.ordering=="number"?n.ordering-s.ordering:String(n.ordering).localeCompare(String(s.ordering))).map(n=>n.id)}function Xl(e,t){let r=e.indexOf(t);r>-1&&e.splice(r,1);}var he=we.actions,Ua=tr({block:Ne("block"),dimension:Ne("dimension"),formatter:Ne("formatter"),report:Ne("report"),section:Ne("section"),variant:Ne("variant"),datasource:Ne("datasource")}),oe=tr({block:De("block"),dimension:De("dimension"),formatter:De("formatter"),report:De("report"),section:De("section"),variant:De("variant"),datasource:De("datasource")}),Fa=tr({block:Ee("block"),dimension:Ee("dimension"),formatter:Ee("formatter"),report:Ee("report"),section:Ee("section"),variant:Ee("variant"),datasource:Ee("datasource")}),Va=tr({block:ct("block"),dimension:ct("dimension"),formatter:ct("formatter"),report:ct("report"),section:ct("section"),variant:ct("variant"),datasource:ct("datasource")}),qa=tr({block:Na("block"),section:Na("section")});function tr(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 ut(e,t){return (r,o)=>{let s=o().records.requests[e][t],a=!s||s.status==="UNINITIALIZED"?"LOADING":"FETCHING";r(he.setRequest({key:t,type:e,status:a}));}}function lt(e,t,r,o){return n=>{typeof window=="object"&&notifications.show({autoClose:3e3,color:"red",id:t,message:o,title:"Error"}),n(he.setRequest({key:t,type:e,status:"FAILURE",error:{code:r,message:o}}));}}function Ne(e){return t=>{let r=So(e,t);return (o,n,s)=>(o(ut(e,r)),ue(s,"create",e)(t).then(i=>(i.ok===true?o(he.setCreateRequest({key:r,operation:"create",status:"SUCCESS",type:e,data:i.data})):o(lt(e,r,i.status,i.error)),i)))}}function ru(e){return t=>{let r=So(e,t[0]);return (o,n,s)=>(o(ut(e,r)),ue(s,"createBulk",e)(t).then(i=>(i.ok===true?o(he.setCreateRequest({key:r,operation:"createBulk",status:"SUCCESS",type:e,data:i.data})):o(lt(e,r,i.status,i.error)),i)))}}function Oa(e,t,r){return r.replace(new RegExp(e,"g"),t)}function ou(e){return e.section_id!==void 0}function nu(e){return e.report_id!==void 0}function Na(e){return t=>{let{create:r}=t;return (o,n,s)=>Ne(e)(r)(o,n,s).then(async i=>{if(i.ok){let{data:c}=i,{id:l}=c,{update:p}=t,u=Ga(e,{id:l});if(o(ut(e,`${u}`)),e==="block"&&ou(r)){let m=produce(p,R=>{R.id=l;}),{contentByLocale:f}=m;f&&(m=produce(m,R=>{R.id=l,R.contentByLocale=Object.keys(f).reduce((S,x)=>{let P=f?f[x]:{};return S[x]={...P,id:l},S},{});}));let h=m.inputs?.map(R=>({type:R.type,id:R.id,inputAction:{operation:"create",input:{input_id:R.id,block_id:m.id}}}));return h&&h.length>0&&Da(e)([m,...h])(o,n,s).then(()=>De("section")({id:m.section_id,include:true})(o,n,s).then(R=>(R.ok&&o(he.setRequest({key:u,type:e,status:"SUCCESS",data:R.data})),R))),Ee(e)(m)(o,n,s).then(R=>(R.ok&&o(he.setRequest({key:u,type:e,status:"SUCCESS",data:R.data})),R))}if(e==="section"&&nu(r)){let{id:m}=c,f=produce(p,R=>{R.id=m;}),{blocks:d}=f,h=d?.map(R=>({type:R.type,blockcol:R.blockcol,blockrow:R.blockrow,section_id:m,locales:Object.keys(R.contentByLocale).map(S=>S)}));return h&&d&&await ru("block")(h)(o,n,s).then(R=>{if(R.ok){let S=R.data,x=[],P=S.map((F,w)=>{let B={...F},D=B.id,_=d[w];_.contentByLocale&&(B.contentByLocale=Object.keys(_.contentByLocale).reduce((A,b)=>{let T=_.contentByLocale[b];return A[b]={...T,content:{...T.content},id:B.id},A},{}));let{settings:L}=_,{contentByLocale:U,id:C}=B;B.settings=L;let $={id:C,contentByLocale:U,settings:L};return _.inputs.map(A=>A.id).reduce((A,b)=>{let T=d.findIndex(I=>I.id===b);return [...A,T]},[]).map(A=>({...S[A],originalBlock:d[A]})).forEach(A=>{let{id:b,type:T,originalBlock:I}=A;if([O.SELECTOR,O.VIZ].includes(T)){if($.contentByLocale?.logic?.content?.api){let ne=$.contentByLocale?.logic.content.api;$.contentByLocale.logic.content.api=Oa(`(selector${I.id}id)`,`selector${b}id`,ne);}if($.contentByLocale?.logic?.content?.logic){let ne=$.contentByLocale.logic.content.logic;$.contentByLocale.logic.content.logic=Oa(`(selector${I.id}id)`,`selector${b}id`,ne);}}x.push({id:b,inputAction:{operation:"create",input:{input_id:b,block_id:D}}});}),$});return Da("block")([...P,...x])(o,n,s)}}),Ee(e)(f)(o,n,s).then(R=>(R.ok&&o(he.setRequest({key:u,type:e,status:"SUCCESS",data:R.data})),R))}return Ee(e)({...p,id:c.id})(o,n,s)}})}}function De(e){return t=>{let r=$a(e,t);return (o,n,s)=>{o(ut(e,r));let a=ue(s,"read",e);if(typeof a!="function"){let i=`Failed to get valid RPC method for entity "${e}"`;return o(lt(e,r,500,i)),Promise.reject(new Error(i))}return a(t).then(i=>(i.ok===true?o(he.setReadRequest({key:r,operation:"read",status:"SUCCESS",type:e,data:i.data})):o(lt(e,r,i.status,i.error)),i))}}}function Ee(e){return t=>{let r=Eo(e,t);return (o,n,s)=>(o(ut(e,r)),ue(s,"update",e)(t).then(i=>(i.ok===true?o(he.setUpdateRequest({key:r,operation:"update",status:"SUCCESS",type:e,data:i.data})):o(lt(e,r,i.status,i.error)),i)))}}function Da(e){return t=>{let r=Eo(e,t[0]);return (o,n,s)=>(o(ut(e,r)),ue(s,"updateBulk",e)(t).then(i=>(i.ok===true?o(he.setUpdateRequest({key:r,operation:"updateBulk",status:"SUCCESS",type:e,data:i.data})):o(lt(e,r,i.status,i.error)),i)))}}function ct(e){return t=>{let r=za(e,t);return (o,n,s)=>(o(ut(e,r)),ue(s,"delete",e)(t).then(i=>{i.ok===true?o(he.setDeleteRequest({key:r,operation:"delete",status:"SUCCESS",type:e,data:i.data})):o(lt(e,r,i.status,i.error));}))}}function So(e,t){if(e==="variant"){let r=t;return `create(variant, [${r.dimension_id}, ${r.name}])`}return `create(${e}, [${Object.keys(t)}])`}function $a(e,t={}){let r=t.id==null?null:`'${t.id}'`;return `read(${e}, ${r}, ${!!t.include})`}function Eo(e,t){let{id:r,...o}=t;return `update(${e}, ${r}, [${Object.keys(o)}])`}function za(e,t){return `delete(${e}, ${t})`}function Ga(e,t){let r=t.id==null?null:`'${t.id}'`;return `clone(${e}, ${r})`}var{setStatus:Ka,setPreviews:au,setSectionState:Ha,resetSectionState:ja,setCurrentLocale:su,setPreferredLocale:iu,addRunConsumersRunning:Wa,removeRunConsumersRunning:Ja}=_e;function cu(e,t){return async(r,o,n)=>{let s=await n.validateVariantSlug({dimension:e,slug:t});if("error"in s)throw new Error(s.error);return s.data}}function lu(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 uu(){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 Ue(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 Ya(e,t,r,o){let n=r().status,s={...n,...o},a={...n.query,...o.query};Object.keys(a).forEach(c=>a[c]===void 0&&delete a[c]);let i={...s,query:a};t(Ka(i)),n.activeSection&&t(Qa(e,{query:a}));}function du(e,t){return async(r,o)=>Ya(e,r,o,{query:{[t]:void 0}})}function mu(e,t,r){return async(o,n)=>Ya(e,o,n,{query:{[t]:r}})}function Qa(e,t){return async(r,o)=>{let n=o(),{currentLocale:s}=n.status,a=n.records.entities.block,i=e.formatterFunctions[s],c=e.datasourceFunctions,{parsedParams:l,statusPayload:p}=Ma(n.status,t),{sid:u,bid:m,previews:f,query:d}=l;Object.keys(p).length&&r(_e.setStatus(p));let h={...Ct(f),locale:s,...pe()},R={variables:h,query:d,locale:s};r(_e.addRunConsumersRunning([u]));let S=n.records.entities.section[u],x=async P=>r(Ue(P));try{let P=await vt(a,S&&[S],m,i,R,void 0,x,"section",c),{variables:F,status:w}=P;r(Bt.setVariableChange({attributes:h,variables:F,status:w})),r(_e.removeRunConsumersRunning([u]));}catch(P){console.error("Error in runConsumers client side: recalculateVariables",P);}}}function rr(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 fu(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 yu(){return async(e,t,r)=>{let o=await r.searchRole("");if("error"in o)throw new Error(o.error);return o.data}}function gu(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 Ru(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 hu({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 bu(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 Fe(e){let{removeBlocks:t}=we.actions;return async r=>{await r(t(e));}}function or(e){let{addBlocks:t}=we.actions;return async r=>{await r(t(e));}}function Su(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 Eu(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 Au(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 Tu(){return async(e,t,r)=>{let o=await r.readEnvSecrets({});if("error"in o)throw new Error(o.error);return o.data}}function nr(){let{removeDataSourceLogic:e}=we.actions;return async t=>{await t(e());}}var Za=()=>configureStore({reducer:{[we.name]:we.reducer,[Cr.name]:Cr.reducer,[Br.name]:Br.reducer},middleware(e){return e({thunk:{extraArgument:Qt("/api/cms/")}})}}),Ve=createWrapper(Za);function xu(e){let t=process.cwd(),r=Pu.resolve(t.endsWith("/example")?t.replace("/example",""):t,"package-lock.json"),o;try{let n=JSON.parse(hc.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 Iu(e){let t=()=>Promise.resolve({}),{pathSegmentsKey:r="bespoke",preResolve:o=t,postResolve:n=t,authOptions:s={providers:[]}}=e||{};return Ve.getServerSideProps(a=>{let{dispatch:i}=a;return async c=>{let l=await me(c.req,c.res,s);if(!l)return {redirect:{destination:"/api/auth/signin?callbackUrl=/cms",permanent:false}};let p=new Set([z.ADMIN,z.EDITOR,z.WRITER]);if(!(l?.user?.bespoke_roles||[]).some(S=>p.has(S)))return {redirect:{destination:"/",permanent:false}};let m=c.query[r],[f]=Array.isArray(m)?m:[m];await i(rt);let d=await xu("@datawheel/bespoke"),h=await o(a,c);if("redirect"in h)return {props:h};f==="reports"&&(Xa(c.query[r])?await Promise.all([i(oe("formatter",{})),i(oe("datasource",{include:true})),i(oe("report",{id:Xa(c.query[r]),include:true})),_e.setStatus({isCMS:true})]):await Promise.all([i(oe("report",{include:"dimensions"})),_e.setStatus({isCMS:true})])),f==="metadata"&&await i(oe("report",{include:"dimensions"})),f==="formatters"&&await i(oe("formatter",{})),f==="datasources"&&await i(oe("datasource",{include:true}));let R=await n(a,c);return {props:{...h,...R,bespokeVersion:d,session:l}}}})}function Xa(e){if(e==null||e==="")return;let[,t]=Array.isArray(e)?e:[e];return Number.parseInt(t)||void 0}var {locales:Cu}=K(),Bu={pathSegment:"path",formatterFunctions:Cu.reduce((e,t)=>({...e,[t]:{}}),{}),datasourceFunctions:[],profilePrefix:"path",siteProps:{}};createContext(Bu);K();var Ju=e=>e.records.entities.report;var Nr=e=>e.records.entities.block;var Yu=e=>e.records.entities.datasource;function Lt(e){return createSelector([t=>t.records.entities[e]],t=>Object.values(t))}Lt("report");Lt("dimension");Lt("variant");var Dr=Lt("section");Lt("block");var Ur=Lt("formatter");createSelector([Ju],e=>Object.values(e)[0]);var Qu=pe(),Zu=[],Fr=createSelector([Yu],e=>e?Object.values(e).sort((t,r)=>t.content.order>r.content.order?1:-1).map(t=>{let r={...Qu};return {...t,content:{...t.content,pattern:ye(t.content.pattern,{},{variables:r})}}}):Zu);var Xu=async(e,t,r,o,n)=>{if(e.length===0)throw new Error("No slugs provided");let s=await t(r({mode:"slugs",locale:n,slugs:e,output:"full"})),a=s.results[0].report_id;if(s.results.length>1){if(s.results.every(d=>d.report_id===a)===false)throw new Error("Members belong to different reports");let l=s.results.map(d=>d.dimension_id),p=new Set(l);if(l.length!==p.size)throw new Error("Members belong to same dimensions");let u=s.results.sort((d,h)=>d.dimension_ordering>h.dimension_ordering?1:-1).reduce((d,h,R)=>(d[h.variant_slug]=R,d),{}),m=e.reduce((d,h,R)=>(d[h.variantSlug]=R,d),{});if(!(Object.keys(u).length===Object.keys(m).length&&Object.keys(u).every(d=>Object.prototype.hasOwnProperty.call(m,d)&&u[d]===m[d])))throw new Error("Variant slugs do not match the expected dimension order")}let c=(await t(o({report_id:a,count:false}))).data.find(l=>l.id===a);if(!c||s.results.length!==c.dimensions.length)throw new Error(`Missing members for report ID ${a}`);return s},Vr=Xu;function ep(e){let{fallback:t=true,limit:r=50}=e||{};return async o=>{let{defaultLocale:n=de,locales:s=[]}=o,a=[];if(r>0){let i=s.find(p=>p===n),{searchMember:c}=await Ze().then(Pt),l=await c({query:"",limit:r,format:"plain",locale:i||de,noImage:false,visible:true,report:[],dimension:[],variant:[],includes:true});l.ok===true&&(a=l.data.results.map(p=>({locale:s.find(u=>u===p.locale),params:{bespoke:[p.variant.slug,p.slug]}})));}return {fallback:t,paths:a}}}function tp(e){let{pathSegmentsKey:t="bespoke"}=e||{};try{return Ve.getStaticProps(r=>{let{dispatch:o}=r;return async n=>{await o(rt);let s=new Date().toISOString(),{locale:a=de,params:i={}}=n,c=Array.from(_o(i[t])),l;try{l=await Vr(c,o,Ue,rr,a);}catch(_){return console.error("[Bespoke slug validation Failed]: Return 404:",_.message,`[${a}] -> /${c.map(L=>`${L.variantSlug}/${L.memberSlug}`).join("/")}`),{notFound:!0}}o(pt.setPreviews(l.results)),await Promise.all([o(oe("formatter",{})),o(oe("datasource",{include:!0})),o(oe("report",{id:l.results.map(_=>_.report_id),include:!0,locales:[a]}))]);let p=r.getState(),u=Ur(p),m=Fr(p),f=Xt(u,a),d=Dr(p),h=Nr(p),R={...h},S={},x=Object.values(h).reduce((_,L)=>("access"in L.settings&&!["public","guest"].some(U=>!L.settings.access||L.settings.access.includes(U))&&_.push(L.id),_),[]),P=x.filter(_=>R[_].settings[xe.FALLBACK]),F=Array.from(new Set([...P,...ge(P,Object.values(R))])),w=x.filter(_=>[O.SELECTOR,O.MULTIHIERARCHY_SELECTOR].includes(R[_].type)),q=Array.from(new Set([...w,...ge(w,Object.values(R))]));x=Array.from(new Set([...x,...F,...q,...ge(x,Object.values(R))])),x.forEach(_=>{P.includes(_)?(S[_]={...R[_],type:O.FALLBACK,original_type:R[_].type},delete R[_]):w.includes(_)&&(S[_]={...R[_],settings:{...R[_].settings,[xe.DISABLED]:!0}},delete R[_]),q.includes(_)||delete R[_];}),await o(Fe(x.filter(_=>!q.includes(_)))),await o(or(S));let B={...Ct(l.results),locale:a,...pe()},D=async _=>await o(Ue(_));return await vt({...R,...S},d,void 0,f,{locale:a,query:i,variables:B},void 0,D,"report",m).then(async _=>{let L=Object.keys({...R,...S}).reduce((U,C)=>(_.variables[C]&&_.status[C]||U.push(C),U),[]);await o(Fe(L)),await o(Bt.setVariableChange({..._,attributes:B})),await o(nr());}),{props:{buildTime:s}}}})}catch(r){console.error("ERROR SSR",r);}}function _o(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 rp(e){let{pathSegmentsKey:t="bespoke"}=e||{};try{return Ve.getServerSideProps(r=>{let{dispatch:o}=r;return async n=>{let{section:s,block:a}=n.query,i=Object.fromEntries(Object.entries(n.query).filter(([k])=>k.match(/selector\d+id/)));if(!s&&!a)return {notFound:!0};let c=Number(s);await o(rt);let l=new Date().toISOString(),{locale:p=de,params:u={},req:m}=n,f=Array.from(_o(u[t])),d;try{d=await Vr(f,o,Ue,rr,p);}catch(k){return console.error("[Bespoke slug validation Failed]: Return 404:",k.message,`/${p}/${m.url}`),{notFound:!0}}o(pt.setPreviews(d.results)),await Promise.all([o(oe("formatter",{})),o(oe("datasource",{include:!0})),o(oe("report",{id:d.results.map(k=>k.report_id),include:!0,locales:[p]}))]);let h=r.getState(),R=Ur(h),S=Fr(h),x=Xt(R,p),P=Dr(h).filter(k=>k.id===c),F=Nr(h),w={...F},q={},B=Object.values(F).reduce((k,j)=>("access"in j.settings&&!["public","guest"].some(A=>!j.settings.access||j.settings.access.includes(A))&&k.push(j.id),k),[]),D=B.filter(k=>w[k].settings[xe.FALLBACK]),_=Array.from(new Set([...D,...ge(D,Object.values(w))])),L=B.filter(k=>[O.SELECTOR,O.MULTIHIERARCHY_SELECTOR].includes(w[k].type)),U=Array.from(new Set([...L,...ge(L,Object.values(w))]));B=Array.from(new Set([...B,..._,...U,...ge(B,Object.values(w))])),B.forEach(k=>{D.includes(k)?(q[k]={...w[k],type:O.FALLBACK,original_type:w[k].type},delete w[k]):L.includes(k)&&(q[k]={...w[k],settings:{...w[k].settings,[xe.DISABLED]:!0}},delete w[k]),U.includes(k)||delete w[k];}),await o(Fe(B.filter(k=>!U.includes(k)))),await o(or(q));let C={...Ct(d.results),locale:p,...pe()},$=async k=>await o(Ue(k));await vt({...w,...q},P,void 0,x,{locale:p,query:{...u,...i},variables:C},void 0,$,"section",S).then(async k=>{let j=Object.keys({...w,...q}).reduce((A,b)=>(k.variables[b]&&k.status[b]||A.push(b),A),[]);await Promise.all([o(Fe(j)),o(Bt.setVariableChange({...k,attributes:C})),o(nr())]);});let M=Object.keys({...w,...q}).filter(k=>s&&a?k!==a:w[k]&&w[k].section_id!==c);return await o(Fe(M)),{props:{buildTime:l}}}})}catch(r){return console.error("ERROR SSR",r),async()=>({notFound:true})}}export{rp as BespokeEmbedServerSideProps,sl as BespokeEndpointNextJsHandlerFactory,me as BespokeGetSession,ys as BespokeHandleAuth,Iu as BespokeManagerServerSideProps,ep as BespokeRendererStaticPaths,tp as BespokeRendererStaticProps,_s as BespokeSearchUsersByMetadata,hs as BespokeUpdateCurrentUserAppMetadata,Ss as BespokeUpdateCurrentUserMetadata,As as BespokeWithApiRoleAuthRequired,cl as ReportCrosswalkHandler,Pt as dbApiFactory,lo as endpointKey,Ze as getDB,rt as useDatabaseApi};
28
+ `)}));}let _=await Promise.all(D).catch(L=>L.message);if(typeof _=="string"&&_)return {outputVariables:{},renderVariables:{},status:{error:_}};l=_.length===1?_[0].data:_.map(L=>L.data),m=_.reduce((L,U)=>L+JSON.stringify(U.data).length/1024,0),u=Math.max(..._.map(L=>L.requestDuration)),d=_.map(L=>L.apiDataSource?`${L.apiDataSource.name} (${L.apiDataSource.id})`:null),h=_.map(L=>L.finalUrl);}if(e.type===O.SELECTOR){let{config:B,log:D,error:_}=go(e.id,e.contentByLocale[s].content.logic,t,r,true);return {outputVariables:_a(e.id,i,B),renderVariables:B,status:{log:D,error:_,allowed:c}}}if(e.type===O.MULTIHIERARCHY_SELECTOR){let{config:B,log:D,error:_}=Ro(e.id,e.contentByLocale[s].content.logic,t,r,true);return {outputVariables:wa(e.id,i,B),renderVariables:B,status:{log:D,error:_,allowed:c}}}if(e.type===O.VIZ)return {outputVariables:{},renderVariables:e.contentByLocale.logic.content,status:{log:[],allowed:c}};if(e.type===O.RELATED){let B=e.contentByLocale?.logic?.content?.simple?.compare||"variant",D=e.contentByLocale?.logic?.content?.simple?.limit||4,_=Object.keys(a).filter(b=>b.startsWith("report_id")).map(b=>a[b]),L=Object.keys(a).filter(b=>b.startsWith("dimension_id")).map(b=>a[b]),U=Object.keys(a).filter(b=>b.startsWith("variant_id")).map(b=>a[b]),C=Object.keys(a).filter(b=>b.startsWith("id")).map(b=>a[b]);if(!C.length)return {outputVariables:{related_reports:[]},renderVariables:{},status:{log:[],allowed:false}};let $=await Promise.all(C.map((b,T)=>o({mode:"ids",locale:s,ids:[b],output:"lite",variant:[U[T]]}))).then(b=>b.flatMap(T=>{let v=[];return xr(T)?T.ok&&(v=T.data.results):v=T.results,v&&Array.isArray(v)?v:[]})).catch(b=>(console.error("Error getting related members",b),[]));if(L.length>1){let b=Object.keys(a).filter(V=>V.startsWith("variant_slug")).map(V=>a[V]),T=$.map((V,Q)=>{let W={mode:"related",locale:s,related:D??4,current_ids:[V.content_id],output:"full",variant_ids:[V.variant_id]};return Q===0&&(W.include_ids=[V.content_id]),W}),v=await Promise.all(T.map(V=>o(V))).then(V=>V.flatMap(Q=>{let W=[];return xr(Q)?Q.ok&&(W=Q.data.results):W=Q.results,W&&Array.isArray(W)?W:[]})).catch(V=>(console.error("Error getting related members",V),[])),ne=v.reduce((V,Q)=>{let W=Q.variant_slug;return V[W]||(V[W]=[]),V[W].push(Q),V},{}),ae=[],Z=Object.keys(ne),J=[{combination:[],index:0}];for(;J.length>0;){let V=J.pop();if(!V)continue;let{combination:Q,index:W}=V;if(W===Z.length){ae.push(Q);continue}let le=Z[W],se=ne[le];for(let ce of se)J.push({combination:[...Q,ce],index:W+1});}return {outputVariables:{related_reports:ae.map(V=>{let Q=V.sort((W,le)=>b.indexOf(W.variant_slug)-b.indexOf(le.variant_slug));return {entities:Q,link:"/"+Q.map(W=>`${W.variant_slug}/${W.slug}`).join("/")}})},renderVariables:{},status:{log:[],allowed:v.length>0}}}let M=$.map(b=>b.content_id),k={mode:"related",locale:s,related:D??4,current_ids:M,output:"full"};B&&(B==="report"?k.report_ids=_:B==="dimension"?k.dimension_ids=L:k.variant_ids=U);let j=await o(k).then(b=>{let T=[];return xr(b)?b.ok&&(T=b.data.results):T=b.results,T&&Array.isArray(T)?T:[]}).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:R}=xa(e,s),S=ge(R,t,r),P=at("resp",l||{},S,t,a,r),{vars:x,error:F,log:w}=P;if(typeof x!="object")return {outputVariables:{},renderVariables:{},status:{error:"Configuration did not return an object",log:w,duration:u,responseSize:m,resp:l,api:f,allowed:c,apiFinalUrls:h,apiDataSources:d}};let q=Object.keys(x).reduce((B,D)=>({...B,[`${e.type}${e.id}${D}`]:x[D]}),{});return {renderVariables:x,outputVariables:[O.GENERATOR,O.SECTION_FLAG].includes(e.type)?x:q,status:{log:w,error:F,duration:u,responseSize:m,resp:l,api:f,allowed:c,apiFinalUrls:h,apiDataSources:d}}}function Vl(e,t,r,o,n,s,a){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=>bo(l,t,o,false,s,n,a));}})}var bo=(e,t,r=[],o=true,n=true,s=true,a=[])=>{if(a.includes(e))return [];a.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(p=>bo(p,t,r,o,false,s,a));}),i&&i.consumers.length&&n&&Vl(i,t,e,r,s,n,a),r},ql=(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 s=fe(t),{error:a,output:i}=at("variables",r,e.settings.allowedLogic||"return false;",o,void 0,s);a||(n=!!i);}return n},It=async(e,t,r,o,n,s={},a,i="section",c)=>{let l=i==="section",p=fe(n),u=p.variables,m={...s.variables??{}},f={...s.status??{}},d=new Set,h=[],R={};r?R={...R,[r]:e[r]}:t?R=(t??[]).reduce((M,{id:k})=>({...M,...Pa(k,e)}),{}):R=Object.values(e).filter(M=>ho(M)).reduce((M,k)=>({...M,[k.id]:k}),{});let S=Object.values(R).filter(M=>ho(M));if(S.length>0){Oe&&console.info("%crunConsumers: calculating section flags","color:purple",S.map(A=>A.id).join(", "));let M=Object.fromEntries(await Promise.all(S.map(async A=>[A.id,await Ca(A,o,{...p,variables:u,locale:u.locale},a,c).then(b=>{let{outputVariables:T,status:v}=b;if(v.error){if(typeof window>"u")throw new Error(`Run consumers (Block: ${A.id}, Section ${A.section_id}) failed with message: ${v.error}. `);f[A.id]={allowed:false,error:v.error},m[A.id]={};}return (A.consumers.length>0||[O.GENERATOR,O.SECTION_FLAG,O.RELATED].includes(A.type))&&v.allowed&&Object.keys(T).length>0?m[A.id]=T:m[A.id]={},i==="report"?(f[A.id]={allowed:v.allowed},[O.GENERATOR,O.SECTION_FLAG].includes(A.type)&&v.api&&(f[A.id].api=v.api)):f[A.id]=v,b})]))),j=Object.entries(M).filter(([,A])=>!A.outputVariables[In]).map(([A])=>Number(A));d=new Set(j.map(A=>e[A].section_id)),Object.values(R).filter(A=>d.has(A.section_id)).forEach(A=>{h.push(A.id),delete R[A.id];}),Oe&&console.info("%crunConsumers: removing sections","color:purple",d.keys());}let P=d.size>0?Object.fromEntries(Object.entries(e).filter(([,M])=>d?.has(M.section_id)?(h.includes(M.id)||h.push(M.id),false):true)):e;if(h.length>0&&(P=Object.fromEntries(Object.entries(P).map(([M,k])=>{let j={...k,inputs:k.inputs.filter(A=>!h.includes(A)),consumers:k.consumers.filter(A=>!h.includes(A))};return [M,j]}))),!r&&!t)return {variables:{...s.variables??{},...m},status:{...s.status??{},...f}};i==="report"&&h.length>0&&h.forEach(M=>{delete m[M],delete f[M],delete e[M];}),Oe&&console.info("%crunConsumers: running root blocks","color:purple",Object.keys(R));let x=Object.keys(R).reduce((M,k)=>{let j=new Date,A=bo(Number(k),P,[],!r,true,l).map(v=>v.split("-")),T=(new Date().getTime()-j.getTime())/1e3;return Oe&&console.info(`%cResolved dependencies for ${k} (${T.toFixed(2)}s)`,"color:blue"),[...M,...A]},[]),F=new Date,w=Object.keys(R).reduce((M,k)=>M.includes(k)?[...M]:[k,...M],Il(x)),B=(new Date().getTime()-F.getTime())/1e3;Oe&&console.info(`%cResolved DAG (${B.toFixed(2)}s): `,"color:green",w);let D=process.env.NEXT_PUBLIC_REPORTS_MAX_CONCURRENT_QUERIES_PER_REPORT,_=parseInt(`${D||0}`,10);async function L(M,k){let j=new Map,A=[],b=async()=>A.length;for(let T of M){if(_!==0){let Z=await b();for(;Z>=_;)Oe&&console.info("Too many pending promises, waiting...",Z,A),await new Promise(J=>setTimeout(J,500)),Z=await b();}let v=k[T],ae=Promise.all(v.inputs.filter(Z=>M.includes(String(Z))).map(Z=>j.get(Number(Z)))).then(async()=>{let Z=v.inputs.reduce((se,ce)=>({...se,...m[ce]}),u),J=v.inputs.find(se=>(v.settings?.ignoreCascade?v.settings?.ignoreCascade:[]).includes(se)||!f[se]?false:!f[se].allowed||f[se].hiddenByCascade);if(J){f[T]={allowed:false,hiddenByCascade:f[J].hiddenByCascade||J},m[T]={},A.splice(A.indexOf(Number(T)),1);return}let ie=new Date,V;typeof window<"u"&&[O.SELECTOR,O.MULTIHIERARCHY_SELECTOR].includes(v.type)&&v.settings[Pe.DISABLED]?V=new Promise(se=>{se({outputVariables:m[T],status:f[T]});}):V=Ca(v,o,{...p,variables:Z,locale:Z.locale},a,c);let Q=await V.then(({outputVariables:se,status:ce})=>{if(ce.error){if(typeof window>"u")throw new Error(`Run consumers (Block: ${T}, Section ${v.section_id}) failed with message: ${ce.error}.`);f[T]={allowed:false,error:ce.error},m[T]={};}(v.consumers.length>0||[O.GENERATOR,O.SECTION_FLAG,O.RELATED].includes(v.type))&&ce.allowed&&Object.keys(se).length>0?m[T]=se:m[T]={},i==="report"?(f[T]={allowed:ce.allowed},[O.GENERATOR,O.SECTION_FLAG].includes(v.type)&&ce.api&&(f[T].api=ce.api)):f[T]=ce;}),le=(new Date().getTime()-ie.getTime())/1e3;return Oe&&console.info(`%cBlock ${v.id} resolved in ${le.toFixed(3)}s`,le>500?"color:red":"color:green"),f[T].duration=f[T].duration?f[T].duration:le,A.splice(A.indexOf(Number(T)),1),Q}).catch(Z=>{throw A.splice(A.indexOf(Number(T)),1),Z});A.push(Number(T)),j.set(Number(T),ae);}await Promise.all(Array.from(j.values()));}let U=new Date;await L(w,P);let $=(new Date().getTime()-U.getTime())/1e3;return Oe&&console.info(`%cResolved Variables (${$.toFixed(2)}s), ${w.length} blocks`,"color:green"),{variables:{...s.variables??{},...m},status:{...s.status??{},...f}}};function $l(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(s=>{t[`attr_${s}${n}`]=r.attributes[s];}),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 Ct=$l;function zl(e,t){return +(e<t)-+(e>t)}function vr(e,t,r="ordering"){return zl(t[r],e[r])}var{localeDefault:Kl}=K();var Zt=new schema.Entity("block",{},{mergeStrategy(e,t){return t.block_input?e||{}:{...e,...t}}});Zt.define({consumers:[Zt],inputs:[Zt]});var La=new schema.Entity("variant"),Ma=new schema.Entity("dimension",{variants:[La]},{processStrategy(e){return {...e,variants:"variants"in e?e.variants:[]}}}),Oa=new schema.Entity("section",{blocks:[Zt]}),Hl=new schema.Entity("report",{dimensions:[Ma],sections:[Oa]},{processStrategy(e){return {...e,sections:"sections"in e?e.sections.sort(vr):[]}}}),jl=new schema.Entity("formatter"),Wl=new schema.Entity("datasource"),Jl={report:Hl,section:Oa,block:Zt,dimension:Ma,variant:La,formatter:jl,datasource:Wl};function Ir(e,t){let r=Jl[e];if(!r)throw new Error(`Invalid entity type: ${e}`);let{entities:o}=normalize(t,[r]);return {report:st(o,"report"),dimension:st(o,"dimension"),section:st(o,"section"),block:st(o,"block"),variant:st(o,"variant"),formatter:st(o,"formatter"),datasource:st(o,"datasource")}}function st(e,t){return Object.prototype.hasOwnProperty.call(e,t)?e[t]:{}}var Na=(e,t=void 0)=>{let{sid:r,bid:o,previews:n=[],query:s={}}=t||{},a,i,c={};return r?(a=r,c.activeSection=a):a=e.activeSection,n.length>0?(i=n,c.previews=i.filter(Boolean)):i=e.previews,{parsedParams:{sid:a,bid:o,previews:i,query:s},statusPayload:c}},Xt=(e=[],t=Kl)=>e.reduce((r,o)=>{let n=cn({vars:["n"],logic:o.content.logic},{},t,{});return r[o.name]=n,r},{});var de=process.env.NEXT_PUBLIC_REPORTS_LOCALE_DEFAULT||"en",Cr=process.env.NEXT_PUBLIC_REPORTS_LOCALES?.split(",")||[de];Cr.includes(de)||Cr.push(de);var Zl={localeDefault:de,locales:Cr,currentLocale:de,preferredLocale:de,showToolbar:false,activeSection:null,previews:[],query:{},sectionState:{},activeEntity:{type:null,id:null},sidebarStatus:{tools:true,settings:false,reportEditor:false},isCMS:false,isRunConsumersRunning:[]},Br=createSlice({name:"status",initialState:Zl,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;});}}),_e=Br.actions;var tu={attributes:{},variables:{},status:{}},Lr=createSlice({name:"variables",initialState:tu,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};});}}),Bt=Lr.actions;var nu={tree:[],reports:null,entities:{block:{},dimension:{},report:{},section:{},variant:{},formatter:{},datasource:{}},requests:{block:{},dimension:{},report:{},section:{},variant:{},formatter:{},datasource:{}}},we=createSlice({name:"records",initialState:nu,reducers:{set:(e,t)=>{let r=t.payload;return {entities:er(e.entities,r.entities||{}),requests:er(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=Ir(r.type,o),s=er(e.entities,n);if(e.entities=s,r.type==="report"){let a=r.data;e.reports?e.reports.indexOf(a.id)===-1&&(e.reports=[...e.reports,a.id]):e.reports=[a.id];}else if(r.type==="dimension"){let a=r.data;e.entities.report[a.report_id].dimensions.push(a.id),e.entities.report[a.report_id].dimensions=Mr(s.report[a.report_id].dimensions,s.dimension);}else if(r.type==="variant"){let a=r.data;e.entities.dimension[a.dimension_id].variants.push(a.id);}else if(r.type==="section"&&!Array.isArray(r.data)){let a=r.data;e.entities.report[a.report_id].sections.push(a.id),e.entities.report[a.report_id].sections=Mr(s.report[a.report_id].sections,s.section);}else if(r.type==="block")if(Array.isArray(r.data)){let a=r.data,i=a[0],c=a.map(l=>l.id);e.entities.section[i.section_id].blocks.concat(c);}else {let a=r.data;e.entities.section[a.section_id].blocks.push(a.id);}}},setReadRequest(e,t){let r=t.payload;if(r.type!=="report"&&(e.requests[r.type][r.key]=r),r.status==="SUCCESS"){let o=Ir(r.type,r.data),n=er(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=Ir(r.type,o),s,a,i;if(r.type==="block"&&!Array.isArray(r.data)){let l=e.entities.block[r.data.id].inputs,p=n.block[r.data.id].inputs;s=l.length!==p.length,s&&(i=l.length>p.length,a=i?l.filter(u=>!p.includes(u))[0]:p.filter(u=>!l.includes(u))[0]),Object.values(n.block).forEach(u=>{u.block_input&&delete n.block[u.id];});}let c=er(e.entities,n);if(e.entities=c,r.type==="dimension"){let l=r.data;e.entities.report[l.report_id].dimensions=Mr(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=Mr(c.report[l.report_id].sections,c.section);}else if(r.type==="block"&&!Array.isArray(r.data)){let l=r.data;s&&(i?e.entities.block[a].consumers=e.entities.block[a].consumers.filter(p=>p!==l.id):e.entities.block[a].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:s}=r.data;if(delete e.entities[r.type][o],s&&n!=null){let a=`${r.type}s`;au(e.entities[s][n][a],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(s=>s.id),t.requests={block:{},dimension:{},report:{},section:{},variant:{},formatter:{},datasource:{}},t.tree=o.tree;});}});function er(e,t){return Object.fromEntries(Object.keys(e).map(r=>[r,{...e[r],...t[r]}]))}function Mr(e,t){return e.map(n=>t[n]).sort((n,s)=>typeof n.ordering=="string"&&typeof s.ordering=="string"?vr(n,s):typeof n.ordering=="number"&&typeof s.ordering=="number"?n.ordering-s.ordering:String(n.ordering).localeCompare(String(s.ordering))).map(n=>n.id)}function au(e,t){let r=e.indexOf(t);r>-1&&e.splice(r,1);}var he=we.actions,Va=tr({block:Ne("block"),dimension:Ne("dimension"),formatter:Ne("formatter"),report:Ne("report"),section:Ne("section"),variant:Ne("variant"),datasource:Ne("datasource")}),oe=tr({block:De("block"),dimension:De("dimension"),formatter:De("formatter"),report:De("report"),section:De("section"),variant:De("variant"),datasource:De("datasource")}),qa=tr({block:Ee("block"),dimension:Ee("dimension"),formatter:Ee("formatter"),report:Ee("report"),section:Ee("section"),variant:Ee("variant"),datasource:Ee("datasource")}),$a=tr({block:ct("block"),dimension:ct("dimension"),formatter:ct("formatter"),report:ct("report"),section:ct("section"),variant:ct("variant"),datasource:ct("datasource")}),za=tr({block:Ua("block"),section:Ua("section")});function tr(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 ut(e,t){return (r,o)=>{let s=o().records.requests[e][t],a=!s||s.status==="UNINITIALIZED"?"LOADING":"FETCHING";r(he.setRequest({key:t,type:e,status:a}));}}function lt(e,t,r,o){return n=>{typeof window=="object"&&notifications.show({autoClose:3e3,color:"red",id:t,message:o,title:"Error"}),n(he.setRequest({key:t,type:e,status:"FAILURE",error:{code:r,message:o}}));}}function Ne(e){return t=>{let r=Ao(e,t);return (o,n,s)=>(o(ut(e,r)),ue(s,"create",e)(t).then(i=>(i.ok===true?o(he.setCreateRequest({key:r,operation:"create",status:"SUCCESS",type:e,data:i.data})):o(lt(e,r,i.status,i.error)),i)))}}function cu(e){return t=>{let r=Ao(e,t[0]);return (o,n,s)=>(o(ut(e,r)),ue(s,"createBulk",e)(t).then(i=>(i.ok===true?o(he.setCreateRequest({key:r,operation:"createBulk",status:"SUCCESS",type:e,data:i.data})):o(lt(e,r,i.status,i.error)),i)))}}function Da(e,t,r){return r.replace(new RegExp(e,"g"),t)}function lu(e){return e.section_id!==void 0}function uu(e){return e.report_id!==void 0}function Ua(e){return t=>{let{create:r}=t;return (o,n,s)=>Ne(e)(r)(o,n,s).then(async i=>{if(i.ok){let{data:c}=i,{id:l}=c,{update:p}=t,u=Ha(e,{id:l});if(o(ut(e,`${u}`)),e==="block"&&lu(r)){let m=produce(p,R=>{R.id=l;}),{contentByLocale:f}=m;f&&(m=produce(m,R=>{R.id=l,R.contentByLocale=Object.keys(f).reduce((S,P)=>{let x=f?f[P]:{};return S[P]={...x,id:l},S},{});}));let h=m.inputs?.map(R=>({type:R.type,id:R.id,inputAction:{operation:"create",input:{input_id:R.id,block_id:m.id}}}));return h&&h.length>0&&Fa(e)([m,...h])(o,n,s).then(()=>De("section")({id:m.section_id,include:true})(o,n,s).then(R=>(R.ok&&o(he.setRequest({key:u,type:e,status:"SUCCESS",data:R.data})),R))),Ee(e)(m)(o,n,s).then(R=>(R.ok&&o(he.setRequest({key:u,type:e,status:"SUCCESS",data:R.data})),R))}if(e==="section"&&uu(r)){let{id:m}=c,f=produce(p,R=>{R.id=m;}),{blocks:d}=f,h=d?.map(R=>({type:R.type,blockcol:R.blockcol,blockrow:R.blockrow,section_id:m,locales:Object.keys(R.contentByLocale).map(S=>S)}));return h&&d&&await cu("block")(h)(o,n,s).then(R=>{if(R.ok){let S=R.data,P=[],x=S.map((F,w)=>{let B={...F},D=B.id,_=d[w];_.contentByLocale&&(B.contentByLocale=Object.keys(_.contentByLocale).reduce((A,b)=>{let T=_.contentByLocale[b];return A[b]={...T,content:{...T.content},id:B.id},A},{}));let{settings:L}=_,{contentByLocale:U,id:C}=B;B.settings=L;let $={id:C,contentByLocale:U,settings:L};return _.inputs.map(A=>A.id).reduce((A,b)=>{let T=d.findIndex(v=>v.id===b);return [...A,T]},[]).map(A=>({...S[A],originalBlock:d[A]})).forEach(A=>{let{id:b,type:T,originalBlock:v}=A;if([O.SELECTOR,O.VIZ].includes(T)){if($.contentByLocale?.logic?.content?.api){let ne=$.contentByLocale?.logic.content.api;$.contentByLocale.logic.content.api=Da(`(selector${v.id}id)`,`selector${b}id`,ne);}if($.contentByLocale?.logic?.content?.logic){let ne=$.contentByLocale.logic.content.logic;$.contentByLocale.logic.content.logic=Da(`(selector${v.id}id)`,`selector${b}id`,ne);}}P.push({id:b,inputAction:{operation:"create",input:{input_id:b,block_id:D}}});}),$});return Fa("block")([...x,...P])(o,n,s)}}),Ee(e)(f)(o,n,s).then(R=>(R.ok&&o(he.setRequest({key:u,type:e,status:"SUCCESS",data:R.data})),R))}return Ee(e)({...p,id:c.id})(o,n,s)}})}}function De(e){return t=>{let r=Ga(e,t);return (o,n,s)=>{o(ut(e,r));let a=ue(s,"read",e);if(typeof a!="function"){let i=`Failed to get valid RPC method for entity "${e}"`;return o(lt(e,r,500,i)),Promise.reject(new Error(i))}return a(t).then(i=>(i.ok===true?o(he.setReadRequest({key:r,operation:"read",status:"SUCCESS",type:e,data:i.data})):o(lt(e,r,i.status,i.error)),i))}}}function Ee(e){return t=>{let r=To(e,t);return (o,n,s)=>(o(ut(e,r)),ue(s,"update",e)(t).then(i=>(i.ok===true?o(he.setUpdateRequest({key:r,operation:"update",status:"SUCCESS",type:e,data:i.data})):o(lt(e,r,i.status,i.error)),i)))}}function Fa(e){return t=>{let r=To(e,t[0]);return (o,n,s)=>(o(ut(e,r)),ue(s,"updateBulk",e)(t).then(i=>(i.ok===true?o(he.setUpdateRequest({key:r,operation:"updateBulk",status:"SUCCESS",type:e,data:i.data})):o(lt(e,r,i.status,i.error)),i)))}}function ct(e){return t=>{let r=Ka(e,t);return (o,n,s)=>(o(ut(e,r)),ue(s,"delete",e)(t).then(i=>{i.ok===true?o(he.setDeleteRequest({key:r,operation:"delete",status:"SUCCESS",type:e,data:i.data})):o(lt(e,r,i.status,i.error));}))}}function Ao(e,t){if(e==="variant"){let r=t;return `create(variant, [${r.dimension_id}, ${r.name}])`}return `create(${e}, [${Object.keys(t)}])`}function Ga(e,t={}){let r=t.id==null?null:`'${t.id}'`;return `read(${e}, ${r}, ${!!t.include})`}function To(e,t){let{id:r,...o}=t;return `update(${e}, ${r}, [${Object.keys(o)}])`}function Ka(e,t){return `delete(${e}, ${t})`}function Ha(e,t){let r=t.id==null?null:`'${t.id}'`;return `clone(${e}, ${r})`}var{setStatus:ja,setPreviews:pu,setSectionState:Wa,resetSectionState:Ja,setCurrentLocale:du,setPreferredLocale:mu,addRunConsumersRunning:Ya,removeRunConsumersRunning:Qa}=_e;function fu(e,t){return async(r,o,n)=>{let s=await n.validateVariantSlug({dimension:e,slug:t});if("error"in s)throw new Error(s.error);return s.data}}function gu(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 yu(){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 Ue(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 Ru(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 Za(e,t,r,o){let n=r().status,s={...n,...o},a={...n.query,...o.query};Object.keys(a).forEach(c=>a[c]===void 0&&delete a[c]);let i={...s,query:a};t(ja(i)),n.activeSection&&t(Xa(e,{query:a}));}function hu(e,t){return async(r,o)=>Za(e,r,o,{query:{[t]:void 0}})}function bu(e,t,r){return async(o,n)=>Za(e,o,n,{query:{[t]:r}})}function Xa(e,t){return async(r,o)=>{let n=o(),{currentLocale:s}=n.status,a=n.records.entities.block,i=e.formatterFunctions[s],c=e.datasourceFunctions,{parsedParams:l,statusPayload:p}=Na(n.status,t),{sid:u,bid:m,previews:f,query:d}=l;Object.keys(p).length&&r(_e.setStatus(p));let h={...Ct(f),locale:s,...pe()},R={variables:h,query:d,locale:s};r(_e.addRunConsumersRunning([u]));let S=n.records.entities.section[u],P=async x=>r(Ue(x));try{let x=await It(a,S&&[S],m,i,R,void 0,P,"section",c),{variables:F,status:w}=x;r(Bt.setVariableChange({attributes:h,variables:F,status:w})),r(_e.removeRunConsumersRunning([u]));}catch(x){console.error("Error in runConsumers client side: recalculateVariables",x);}}}function rr(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 Su(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 Eu(){return async(e,t,r)=>{let o=await r.searchRole("");if("error"in o)throw new Error(o.error);return o.data}}function Au(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 Tu(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 _u({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 wu(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 Fe(e){let{removeBlocks:t}=we.actions;return async r=>{await r(t(e));}}function or(e){let{addBlocks:t}=we.actions;return async r=>{await r(t(e));}}function ku(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 xu(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 Pu(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 nr(){let{removeDataSourceLogic:e}=we.actions;return async t=>{await t(e());}}var es=()=>configureStore({reducer:{[we.name]:we.reducer,[Br.name]:Br.reducer,[Lr.name]:Lr.reducer},middleware(e){return e({thunk:{extraArgument:Qt("/api/cms/")}})}}),Ve=createWrapper(es);function Mu(e){let t=process.cwd(),r=Lu.resolve(t.endsWith("/example")?t.replace("/example",""):t,"package-lock.json"),o;try{let n=JSON.parse(_c.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 Ou(e){let t=()=>Promise.resolve({}),{pathSegmentsKey:r="bespoke",preResolve:o=t,postResolve:n=t,authOptions:s={providers:[]}}=e||{};return Ve.getServerSideProps(a=>{let{dispatch:i}=a;return async c=>{let l=await me(c.req,c.res,s);if(!l)return {redirect:{destination:"/api/auth/signin?callbackUrl=/cms",permanent:false}};let p=new Set([z.ADMIN,z.EDITOR,z.WRITER]);if(!(l?.user?.bespoke_roles||[]).some(S=>p.has(S)))return {redirect:{destination:"/",permanent:false}};let m=c.query[r],[f]=Array.isArray(m)?m:[m];await i(rt);let d=await Mu("@datawheel/bespoke"),h=await o(a,c);if("redirect"in h)return {props:h};f==="reports"&&(ts(c.query[r])?await Promise.all([i(oe("formatter",{})),i(oe("datasource",{include:true})),i(oe("report",{id:ts(c.query[r]),include:true})),_e.setStatus({isCMS:true})]):await Promise.all([i(oe("report",{include:"dimensions"})),_e.setStatus({isCMS:true})])),f==="metadata"&&await i(oe("report",{include:"dimensions"})),f==="formatters"&&await i(oe("formatter",{})),f==="datasources"&&await i(oe("datasource",{include:true}));let R=await n(a,c);return {props:{...h,...R,bespokeVersion:d,session:l}}}})}function ts(e){if(e==null||e==="")return;let[,t]=Array.isArray(e)?e:[e];return Number.parseInt(t)||void 0}var {locales:Du}=K(),Uu={pathSegment:"path",formatterFunctions:Du.reduce((e,t)=>({...e,[t]:{}}),{}),datasourceFunctions:[],profilePrefix:"path",siteProps:{}};createContext(Uu);K();var tp=e=>e.records.entities.report;var Dr=e=>e.records.entities.block;var rp=e=>e.records.entities.datasource;function Lt(e){return createSelector([t=>t.records.entities[e]],t=>Object.values(t))}Lt("report");Lt("dimension");Lt("variant");var Ur=Lt("section");Lt("block");var Fr=Lt("formatter");createSelector([tp],e=>Object.values(e)[0]);var op=pe(),np=[],Vr=createSelector([rp],e=>e?Object.values(e).sort((t,r)=>t.content.order>r.content.order?1:-1).map(t=>{let r={...op};return {...t,content:{...t.content,pattern:ge(t.content.pattern,{},{variables:r})}}}):np);var ap=async(e,t,r,o,n)=>{if(e.length===0)throw new Error("No slugs provided");let s=await t(r({mode:"slugs",locale:n,slugs:e,output:"full"})),a=s.results[0].report_id;if(s.results.length>1){if(s.results.every(d=>d.report_id===a)===false)throw new Error("Members belong to different reports");let l=s.results.map(d=>d.dimension_id),p=new Set(l);if(l.length!==p.size)throw new Error("Members belong to same dimensions");let u=s.results.sort((d,h)=>d.dimension_ordering>h.dimension_ordering?1:-1).reduce((d,h,R)=>(d[h.variant_slug]=R,d),{}),m=e.reduce((d,h,R)=>(d[h.variantSlug]=R,d),{});if(!(Object.keys(u).length===Object.keys(m).length&&Object.keys(u).every(d=>Object.prototype.hasOwnProperty.call(m,d)&&u[d]===m[d])))throw new Error("Variant slugs do not match the expected dimension order")}let c=(await t(o({report_id:a,count:false}))).data.find(l=>l.id===a);if(!c||s.results.length!==c.dimensions.length)throw new Error(`Missing members for report ID ${a}`);return s},qr=ap;function sp(e){let{fallback:t=true,limit:r=50}=e||{};return async o=>{let{defaultLocale:n=de,locales:s=[]}=o,a=[];if(r>0){let i=s.find(p=>p===n),{searchMember:c}=await Ze().then(xt),l=await c({query:"",limit:r,format:"plain",locale:i||de,noImage:false,visible:true,report:[],dimension:[],variant:[],includes:true});l.ok===true&&(a=l.data.results.map(p=>({locale:s.find(u=>u===p.locale),params:{bespoke:[p.variant.slug,p.slug]}})));}return {fallback:t,paths:a}}}function ip(e){let{pathSegmentsKey:t="bespoke"}=e||{};try{return Ve.getStaticProps(r=>{let{dispatch:o}=r;return async n=>{await o(rt);let s=new Date().toISOString(),{locale:a=de,params:i={}}=n,c=Array.from(ko(i[t])),l;try{l=await qr(c,o,Ue,rr,a);}catch(_){return console.error("[Bespoke slug validation Failed]: Return 404:",_.message,`[${a}] -> /${c.map(L=>`${L.variantSlug}/${L.memberSlug}`).join("/")}`),{notFound:!0}}o(pt.setPreviews(l.results)),await Promise.all([o(oe("formatter",{})),o(oe("datasource",{include:!0})),o(oe("report",{id:l.results.map(_=>_.report_id),include:!0,locales:[a]}))]);let p=r.getState(),u=Fr(p),m=Vr(p),f=Xt(u,a),d=Ur(p),h=Dr(p),R={...h},S={},P=Object.values(h).reduce((_,L)=>("access"in L.settings&&!["public","guest"].some(U=>!L.settings.access||L.settings.access.includes(U))&&_.push(L.id),_),[]),x=P.filter(_=>R[_].settings[Pe.FALLBACK]),F=Array.from(new Set([...x,...ye(x,Object.values(R))])),w=P.filter(_=>[O.SELECTOR,O.MULTIHIERARCHY_SELECTOR].includes(R[_].type)),q=Array.from(new Set([...w,...ye(w,Object.values(R))]));P=Array.from(new Set([...P,...F,...q,...ye(P,Object.values(R))])),P.forEach(_=>{x.includes(_)?(S[_]={...R[_],type:O.FALLBACK,original_type:R[_].type},delete R[_]):w.includes(_)&&(S[_]={...R[_],settings:{...R[_].settings,[Pe.DISABLED]:!0}},delete R[_]),q.includes(_)||delete R[_];}),await o(Fe(P.filter(_=>!q.includes(_)))),await o(or(S));let B={...Ct(l.results),locale:a,...pe()},D=async _=>await o(Ue(_));return await It({...R,...S},d,void 0,f,{locale:a,query:i,variables:B},void 0,D,"report",m).then(async _=>{let L=Object.keys({...R,...S}).reduce((U,C)=>(_.variables[C]&&_.status[C]||U.push(C),U),[]);await o(Fe(L)),await o(Bt.setVariableChange({..._,attributes:B})),await o(nr());}),{props:{buildTime:s}}}})}catch(r){console.error("ERROR SSR",r);}}function ko(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 cp(e){let{pathSegmentsKey:t="bespoke"}=e||{};try{return Ve.getServerSideProps(r=>{let{dispatch:o}=r;return async n=>{let{section:s,block:a}=n.query,i=Object.fromEntries(Object.entries(n.query).filter(([k])=>k.match(/selector\d+id/)));if(!s&&!a)return {notFound:!0};let c=Number(s);await o(rt);let l=new Date().toISOString(),{locale:p=de,params:u={},req:m}=n,f=Array.from(ko(u[t])),d;try{d=await qr(f,o,Ue,rr,p);}catch(k){return console.error("[Bespoke slug validation Failed]: Return 404:",k.message,`/${p}/${m.url}`),{notFound:!0}}o(pt.setPreviews(d.results)),await Promise.all([o(oe("formatter",{})),o(oe("datasource",{include:!0})),o(oe("report",{id:d.results.map(k=>k.report_id),include:!0,locales:[p]}))]);let h=r.getState(),R=Fr(h),S=Vr(h),P=Xt(R,p),x=Ur(h).filter(k=>k.id===c),F=Dr(h),w={...F},q={},B=Object.values(F).reduce((k,j)=>("access"in j.settings&&!["public","guest"].some(A=>!j.settings.access||j.settings.access.includes(A))&&k.push(j.id),k),[]),D=B.filter(k=>w[k].settings[Pe.FALLBACK]),_=Array.from(new Set([...D,...ye(D,Object.values(w))])),L=B.filter(k=>[O.SELECTOR,O.MULTIHIERARCHY_SELECTOR].includes(w[k].type)),U=Array.from(new Set([...L,...ye(L,Object.values(w))]));B=Array.from(new Set([...B,..._,...U,...ye(B,Object.values(w))])),B.forEach(k=>{D.includes(k)?(q[k]={...w[k],type:O.FALLBACK,original_type:w[k].type},delete w[k]):L.includes(k)&&(q[k]={...w[k],settings:{...w[k].settings,[Pe.DISABLED]:!0}},delete w[k]),U.includes(k)||delete w[k];}),await o(Fe(B.filter(k=>!U.includes(k)))),await o(or(q));let C={...Ct(d.results),locale:p,...pe()},$=async k=>await o(Ue(k));await It({...w,...q},x,void 0,P,{locale:p,query:{...u,...i},variables:C},void 0,$,"section",S).then(async k=>{let j=Object.keys({...w,...q}).reduce((A,b)=>(k.variables[b]&&k.status[b]||A.push(b),A),[]);await Promise.all([o(Fe(j)),o(Bt.setVariableChange({...k,attributes:C})),o(nr())]);});let M=Object.keys({...w,...q}).filter(k=>s&&a?k!==a:w[k]&&w[k].section_id!==c);return await o(Fe(M)),{props:{buildTime:l}}}})}catch(r){return console.error("ERROR SSR",r),async()=>({notFound:true})}}export{cp as BespokeEmbedServerSideProps,dl as BespokeEndpointNextJsHandlerFactory,me as BespokeGetSession,Rs as BespokeHandleAuth,Ou as BespokeManagerServerSideProps,sp as BespokeRendererStaticPaths,ip as BespokeRendererStaticProps,ks as BespokeSearchUsersByMetadata,Ss as BespokeUpdateCurrentUserAppMetadata,As as BespokeUpdateCurrentUserMetadata,_s as BespokeWithApiRoleAuthRequired,fl as ReportCrosswalkHandler,xt as dbApiFactory,po as endpointKey,Ze as getDB,rt as useDatabaseApi};