@datawheel/bespoke 0.8.8 → 1.0.0-rc.0

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,75 +1,28 @@
1
- import Ys, { getServerSession } from 'next-auth';
2
- import Ks from 'next-auth/providers/auth0';
3
- import je from 'auth0';
4
- import * as tc from 'pg';
5
- import { Sequelize, Error as Error$1, literal, Op, fn as fn$1, col, where, cast, json, DataTypes, Model } from 'sequelize';
6
- import Xt from 'yn';
7
- import * as bi from 'd3-array';
8
- import * as Si from 'd3-collection';
9
- import * as Ei from 'd3-format';
10
- import * as Ai from 'd3-time-format';
11
- import { formatAbbreviate } from 'd3plus-format';
12
- import { date } from 'd3plus-axis';
13
- import { assign, closest, merge, isObject } from 'd3plus-common';
14
- import { strip, titleCase } from 'd3plus-text';
15
- import ac from 'slugify';
16
- import Ur from 'axios';
17
- import ic from 'jsonwebtoken';
18
- import cc from 'next/config';
19
- import vc from 'flexsearch';
20
- import Jc from 'base58';
21
- import Yc from 'flickr-sdk';
22
- import Gc from 'sharp';
23
- import { createApi } from 'unsplash-js';
24
- import ol from 'fs';
25
- import { createContext, createElement } from 'react';
26
- import { renderToString } from 'react-dom/server';
27
- import * as Ao from '@tabler/icons-react';
28
- import Vl from 'nextjs-cors';
29
- import $l from 'image-type';
30
- import wl from 'formidable';
31
- import Ll from 'dom-parser';
32
- import Tp from 'path';
33
- import ts from 'axios-retry';
34
- import { format } from 'pretty-format';
35
- import iu from 'toposort';
36
- import { csvParse } from 'd3-dsv';
37
- import { getSession } from 'next-auth/react';
38
- import { schema, normalize } from 'normalizr';
39
- import { createSlice, configureStore } from '@reduxjs/toolkit';
40
- import { HYDRATE, createWrapper } from 'next-redux-wrapper';
41
- import { notifications } from '@mantine/notifications';
42
- import 'react-redux';
43
- import 'react/jsx-runtime';
44
- import '@mantine/core';
45
-
46
- var Gs=Object.defineProperty;var js=(e,t)=>{for(var r in t)Gs(e,r,{get:t[r],enumerable:!0});};var Ws={domain:new URL(process.env.AUTH0_ISSUER_BASE_URL||"https://localhost:3000").host,clientId:process.env.AUTH0_CLIENT_ID||"",clientSecret:process.env.AUTH0_CLIENT_SECRET||""};function Ge(e){let t=e;if(t&&!t.source)if(!t.providers||t.providers.length===0){let r=Ks({clientId:process.env.AUTH0_CLIENT_ID||"",clientSecret:process.env.AUTH0_CLIENT_SECRET||"",issuer:process.env.AUTH0_ISSUER_BASE_URL||""});t.providers=[r],t.callbacks={async jwt({token:o,profile:n,trigger:a,session:s}){if(n&&(o.bespoke_app_metadata=n.bespoke_app_metadata||{},o.bespoke_user_metadata=n.bespoke_user_metadata||{},o.bespoke_roles=n.bespoke_roles||[],o.name=n.name),a==="update")try{let i=new je.ManagementClient(Ws),c=await i.users.get({id:o.sub});o.bespoke_user_metadata=c.user_metadata||{},o.bespoke_app_metadata=c.app_metadata||{};let l=await i.users.getRoles({id:o.sub});o.bespoke_roles=l.map(u=>u.name),s?.user_metadata&&(o.bespoke_user_metadata={...o.bespoke_user_metadata,...s.user_metadata}),s?.app_metadata&&(o.bespoke_app_metadata={...o.bespoke_app_metadata,...s.app_metadata});}catch(i){console.error("Error refreshing user data from Auth0:",i),o.bespoke_user_metadata={...o.bespoke_user_metadata,...s?.user_metadata||{}},o.bespoke_app_metadata={...o.bespoke_app_metadata,...s?.app_metadata||{}};}return o},async session({session:o,token:n}){return o&&n&&(o.user.id=n.sub,o.user.bespoke_app_metadata=n.bespoke_app_metadata,o.user.bespoke_user_metadata=n.bespoke_user_metadata,o.user.bespoke_roles=n.bespoke_roles),o}},t.source="auth0";}else t.source="custom";return t.secret||(t.secret=process.env.AUTH0_SECRET||process.env.NEXTAUTH_SECRET),t}async function ye(e,t,r={providers:[]}){let o=Ge(r),n=await getServerSession(e,t,o);return n&&(n.source=o.source||""),n}var Qs=(e={providers:[]})=>{let t=Ge(e);return Ys(t)},Zs=Qs;var E=class extends Error{constructor(r,o){super(o);this.code=r;}toJSON(){return rn(this)}static is(r){return Object.prototype.hasOwnProperty.call(r,"code")&&typeof r.code=="number"}};function Xs(e){return {ok:!0,status:200,wrapper:!0,data:e}}function rn(e){return {ok:!1,status:E.is(e)?e.code:500,error:e.message}}function I(e){return t=>e(t).then(Xs,rn)}function pe(e,t,r){if(t==="createBulk"||t==="updateBulk"){let n=`${t}${Ae(r)}`;return e[n]}let o=`${t}${Ae(r)}`;return e[o]}function Ae(e){return e[0].toUpperCase()+e.slice(1)}var z={ADMIN:"Admin",EDITOR:"Editor",WRITER:"Writer"},on={APP:"App",USER:"User"},nn=e=>{let t=Object.values(z);return e?e.map(r=>({...r,type:t.includes(r.name)?on.APP:on.USER})):[]};var Ke={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 an(){return async()=>{try{let t=await new je.ManagementClient(Ke).roles.getAll({include_totals:!0,per_page:100});return {roles:nn(t.roles)}}catch(e){throw console.error("AuthZeroError",e),new E(e.response?.status||500,e.message)}}}function sn(){return async e=>{try{let t;if(e){let r={include_totals:!0,per_page:10,page:e.page||0},o=new je.ManagementClient(Ke);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 cn(){return async e=>{try{if(e){let t=new je.ManagementClient(Ke),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 ln(){return async e=>{try{if(e.user_id){if(e.app_metadata&&await ro(e.user_id,e.app_metadata),e.user_metadata&&await oo(e.user_id,e.user_metadata),e.roles){let t=new je.ManagementClient(Ke),o=(await t.users.getRoles({id:e.user_id})).map(i=>i.id),n=e.roles.map(i=>i.id),a=n.filter(i=>!o.includes(i)),s=o.filter(i=>!n.includes(i));a.length>0&&await t.users.assignRoles({id:e.user_id},{roles:a}),s.length>0&&await t.users.removeRoles({id:e.user_id},{roles:s});}return {status:"success",message:"User updated!"}}else throw new E(404,"user_id is required")}catch(t){throw console.error("AuthZeroError",t),new E(t.response?.status||500,t.message)}}}function un(){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 ro(e,t){return await new je.ManagementClient(Ke).users.updateAppMetadata({id:e},t)}async function oo(e,t){return await new je.ManagementClient(Ke).users.updateUserMetadata({id:e},t)}async function pn(e,t){try{let r=new je.ManagementClient(Ke),o=await r.getUsers({search_engine:"v3",q:`user_metadata.${e}:"${t}"`});for(let n=0;n<o.length;n++){let a=o[n];a.bespoke_user_metadata=a.user_metadata||{},delete a.user_metadata,a.bespoke_roles=(await r.users.getRoles({id:a.user_id})).map(s=>s.name);}return o}catch(r){console.error(r);}}var ei=(e,t,r,o)=>new Promise((n,a)=>{(async()=>{try{let i=await ye(e,t,r);if(!i||!i.user)throw new Error("not_authenticated");{let{user:c,source:l}=i,p={...i.user.bespoke_app_metadata||{},...o};l==="custom"&&r.actions?.updateUser?await r.actions.updateUser()({user_id:c.id,app_metadata:p}):await ro(c.id,p),n({error:"",description:`App metadata updated for user ${i.user.email}`});}}catch(i){a({error:i.message,description:"The user does not have an active session or is not authenticated"});}})();}),ti=ei;var ri=(e,t,r,o)=>new Promise((n,a)=>{(async()=>{try{let i=await ye(e,t,r);if(!i||!i.user)throw new Error("not_authenticated");{let{user:c,source:l}=i,p={...c.bespoke_user_metadata||{},...o};l==="custom"&&r.actions?.updateUser?await r.actions.updateUser()({user_id:c.id,user_metadata:p}):await oo(c.id,p),n({error:"",description:`App metadata updated for user ${c.email}`});}}catch(i){a({error:i.message,description:"The user does not have an active session or is not authenticated"});}})();}),oi=ri;var zt=(e,t)=>t&&typeof t=="string"?t.split(".").reduce((r,o)=>r[o],e):e;function yr(e,t){return e.some(r=>t.includes(r))}function hr(e){return e.filter((t,r,o)=>o.indexOf(t)===r)}var ni=(e,t,r)=>async function(o,n){let a=await ye(o,n,r);if(!a||!a.user){n.status(401).json({error:"not_authenticated",description:"The user does not have an active session or is not authenticated"});return}let s=a.user.bespoke_roles||[];if(t.length>0&&!yr(s,t)){n.status(402).json({error:"unauthorize",description:"The user requires some specific roles"});return}await e(o,n);},ai=ni;var si=(e,t,r)=>new Promise((o,n)=>{(async()=>{try{if(t&&r&&t!==""&&r!==""){let s;e.actions?.searchUser?s=await e.actions.searchUser()({[t]:r}):s=await pn(t,r),o(s);}else n({error:"empty_params",description:"key or value params are empty"});}catch(s){n({error:s.message,description:"Error "});}})();}),ii=si;var Ie=(e=process.env)=>Xt(e.REPORTS_LOGGING);var We=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:!0}),{inputs:r=[],consumers:o=[],contentByLocale:n=[]}=this;return {...t,inputs:r.map(a=>a.toJSON()),consumers:o.map(a=>a.toJSON()),contentByLocale:Object.fromEntries(n.map(a=>[a.locale,a.toJSON()]))}}};function ui(e){return We.init({id:{type:DataTypes.INTEGER,primaryKey:!0,autoIncrement:!0},settings:{type:DataTypes.JSON,defaultValue:{}},type:{type:DataTypes.STRING,defaultValue:"paragraph"},shared:{type:DataTypes.BOOLEAN,defaultValue:!1},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:!0,timestamps:!1}),t=>(We.hasMany(t.block_content,{foreignKey:"id",sourceKey:"id",as:"contentByLocale"}),We.belongsToMany(t.block,{through:"block_input",foreignKey:"block_id",otherKey:"input_id",as:"inputs"}),We.belongsToMany(t.block,{through:"block_input",foreignKey:"input_id",otherKey:"block_id",as:"consumers"}),We)}var mn=ui;var Rr=class extends Model{};function di(e){return Rr.init({id:{type:DataTypes.INTEGER,primaryKey:!0,onDelete:"cascade",references:{model:"bespoke_reports_block",key:"id"}},locale:{type:DataTypes.STRING,primaryKey:!0},content:{type:DataTypes.JSON,defaultValue:{}}},{sequelize:e,modelName:"block_content",tableName:"bespoke_reports_block_content",freezeTableName:!0,timestamps:!1}),()=>Rr}var fn=di;var br=class extends Model{};function fi(e){return br.init({id:{type:DataTypes.INTEGER,primaryKey:!0,autoIncrement:!0},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:!0,timestamps:!1}),()=>br}var gn=fi;function so(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 yn(e,t,r){let o=0,n=1,a=1,s=1,i=0,c=0,l;for(;Math.abs((a-c)/a)>1e-5;)c=a,l=-(t+i)*(t+r+i)*e/(t+2*i)/(t+2*i+1),o=a+l*o,n=s+l*n,i+=1,l=i*(r-i)*e/(t+2*i-1)/(t+2*i),a=o+l*a,s=n+l*s,o/=s,n/=s,a/=s,s=1;return a/t}function gi(e,t,r){let o,n;if(e<0)n=0;else if(e>=t)n=1;else {e=Math.floor(e);let a=r,s=e+1,i=t-e,c=s+i,l=Math.exp(so(c)-so(i)-so(s)+s*Math.log(a)+i*Math.log(1-a));a<(s+1)/(c+2)?o=l*yn(a,s,i):o=1-l*yn(1-a,i,s),n=1-o;}return Math.round(n*1e5)/1e5}function yi(e){return {.99999:15.137,.99:6.635,.95:3.841,.9:2.706}[e]}function Gt(e,t,r,o){let n=t/(1-t),a=0,s=1,i=0,c=0;for(;a<=e;)c+=s,a>=r&a<=o&&(i+=s),c>1e30&&(i/=1e30,c/=1e30,s/=1e30),a+=1,s=s*n*(e+1-a)/a;return i/c}function hi(e,t,r){let o=e/t,a=(100-r*100)/2,s,i;if(e===0)s=0;else {let c=o/2,l=0,u=o,p=a/100;for(;u-l>1e-5;)Gt(t,c,e,e)*.5+Gt(t,c,e+1,t)>p?(u=c,c=(l+c)/2):(l=c,c=(u+c)/2);s=c;}if(e===t)i=0;else {let c=(1+o)/2,l=o,u=1,p=a/100;for(;u-l>1e-5;)Gt(t,c,e,e)*.5+Gt(t,c,0,e-1)<p?(u=c,c=(l+c)/2):(l=c,c=(u+c)/2);i=c;}return {lci:s,uci:i}}function Ri(e,t){let r=e,o=t,n=r,a=o,s=95,i=.5,c=.5,u=(100-s)/2/100,p=n;for(;c>1e-5;)c/=2,Sr((1+p)*i/(1-i),p+1,1e10)+.5*Sr((1+p)*i/(1-i),p,p)>u?i-=c:i+=c;let d=(1+p)*i/(1-i)/a;for(i=.5,c=.5,u=(100-s)/2/100;c>1e-5;)c/=2,Sr((1+p)*i/(1-i),0,p-1)+.5*Sr((1+p)*i/(1-i),p,p)<u?i-=c:i+=c;let m=(1+p)*i/(1-i)/a;return {lci:d,uci:m}}function Sr(e,t,r){let o=1,n=0,a=0,s=0;for(;s<e||o>n*1e-10;)n+=o,s>=t&s<=r&&(a+=o),n>1e30&&(a/=1e30,n/=1e30,o/=1e30),s+=1,o=o*e/s;return a/n}var hn={binomialCdf:gi,binP:Gt,computeMidP:hi,criticalValue:yi,smr:Ri};var Je={d3:{...bi,...Si,...Ei,...Ai},d3plus:{assign:assign,closest:closest,date:date,formatAbbreviate:formatAbbreviate,merge:merge,strip:strip,titleCase:titleCase},stats:hn},Rn={};var Ce={UNILATERAL:"uni",MULTILATERAL:"multi"},Qe={SINGLE:"single",MULTI:"multi"};var io={ALLOWED:"allowed",ALLOWED_LOGIC:"allowedLogic",IGNORE_CASCADE:"ignoreCascade"},Ii={ACCESS:"access",ACCESS_LOGIC:"accessLogic"},Ci={DISABLED:"disabled"},Bi={FALLBACK:"fallback"};var Li={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"},co={GENERATOR:"generator",RELATED:"related",VIZ:"visualization",SECTION_FLAG:"section_flag"},lo="logic",N={...Li,...co},Be={NAME:"name",DESCRIPTION:"description",...io,...Ii,...Bi,...Ci};var Er={FORMATTER:"formatter",FUNCTION:"function"},St={STRING:"string",NUMBER:"number",OBJECT:"object",DATE:"date"};var Et=class extends Model{};function Ni(e){return Et.init({id:{type:DataTypes.INTEGER,primaryKey:!0,autoIncrement:!0},name:{type:DataTypes.STRING,defaultValue:""},content:{type:DataTypes.JSONB,defaultValue:{description:"",testValue:"Foo",type:Er.FORMATTER,inputType:St.STRING,logic:"return n;"}}},{sequelize:e,modelName:"formatter",tableName:"bespoke_reports_formatter",freezeTableName:!0,timestamps:!1,hooks:{async afterSync(t){let r=await Et.findAll();if(t.force||r.length===0){let o=Object.entries(Rn).map(([n,a])=>({name:n,content:a}));await Et.bulkCreate(o);}}}}),()=>Et}var En=Ni;var jt=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 Ui(e){return jt.init({id:{autoIncrement:!0,primaryKey:!0,type:DataTypes.INTEGER},url:{type:DataTypes.TEXT,unique:!0},author:DataTypes.TEXT,license:DataTypes.TEXT,splash:DataTypes.BLOB,thumb:DataTypes.BLOB},{sequelize:e,modelName:"image",tableName:"bespoke_reports_image",freezeTableName:!0}),t=>(jt.hasMany(t.image_content,{foreignKey:"id",sourceKey:"id",as:"contentByLocale"}),jt)}var An=Ui;var Ar=class extends Model{};function Vi(e){return Ar.init({id:{type:DataTypes.INTEGER,primaryKey:!0,onDelete:"cascade",references:{model:"bespoke_reports_image",key:"id"}},locale:{type:DataTypes.STRING,primaryKey:!0},meta:DataTypes.TEXT},{sequelize:e,modelName:"image_content",tableName:"bespoke_reports_image_content",freezeTableName:!0,timestamps:!1}),()=>Ar}var Tn=Vi;var Tt=class extends Model{toJSON(){let t=this.get({plain:!0}),{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 qi(e){return Tt.init({id:{type:DataTypes.INTEGER,primaryKey:!0,autoIncrement:!0},name:{type:DataTypes.STRING,allowNull:!1,defaultValue:""},visible:{type:DataTypes.BOOLEAN,defaultValue:!0},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:!0,timestamps:!1}),t=>(Tt.hasMany(t.dimension,{foreignKey:"report_id",sourceKey:"id",as:"dimensions"}),Tt.hasMany(t.section,{foreignKey:"report_id",sourceKey:"id",as:"sections"}),Tt)}var vn=qi;var _t=class extends Model{toJSON(){let t=this.get({plain:!0}),{variants:r=[]}=this;return {...t,variants:r.map(o=>o.toJSON())}}};function Gi(e){return _t.init({id:{type:DataTypes.INTEGER,primaryKey:!0,autoIncrement:!0},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:!0}},{sequelize:e,modelName:"dimension",tableName:"bespoke_reports_report_dimension",freezeTableName:!0,timestamps:!1}),t=>(_t.hasMany(t.variant,{foreignKey:"dimension_id",sourceKey:"id",as:"variants",constraints:!1}),_t.belongsTo(t.report,{foreignKey:"report_id",targetKey:"id",as:"report",constraints:!1}),_t)}var _n=Gi;var wt=class extends Model{get report(){return this.dimension?.report}toJSON(){return this.get({plain:!0})}};function Ki(e){return wt.init({id:{type:DataTypes.INTEGER,primaryKey:!0,autoIncrement:!0},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:!0}},{sequelize:e,modelName:"variant",tableName:"bespoke_reports_report_dimension_variant",freezeTableName:!0,timestamps:!1}),t=>(wt.hasMany(t.search,{foreignKey:"variant_id",sourceKey:"id",as:"members",constraints:!1}),wt.belongsTo(t.dimension,{foreignKey:"dimension_id",targetKey:"id",as:"dimension",constraints:!1}),wt)}var wn=Ki;var ke=class extends Model{getContent(t){let{contentByLocale:r}=this;if(!r)throw new Error("This SearchModel entity didn't include its SearchContentModel association.");let o=r.find(n=>n.locale===t);if(!o)throw new Error(`Missing SearchContent for locale '${t}' on Search ID '${this.id}'`);return o}};function Wi(e){return ke.init({id:{primaryKey:!0,type:DataTypes.TEXT},zvalue:DataTypes.DOUBLE,slug:DataTypes.TEXT,image_id:{type:DataTypes.INTEGER,references:{model:"bespoke_reports_image",key:"id"}},content_id:{autoIncrement:!0,type:DataTypes.INTEGER,unique:!0},variant_id:{primaryKey:!0,type:DataTypes.INTEGER,onDelete:"cascade",references:{model:"bespoke_reports_report_dimension_variant",key:"id"}},dimension_id:{primaryKey:!0,type:DataTypes.INTEGER,onDelete:"cascade",references:{model:"bespoke_reports_report_dimension",key:"id"}},report_id:{primaryKey:!0,type:DataTypes.INTEGER,onDelete:"cascade",references:{model:"bespoke_reports_report",key:"id"}},visible:{type:DataTypes.BOOLEAN,defaultValue:!0}},{sequelize:e,modelName:"search",tableName:"bespoke_reports_search",freezeTableName:!0,timestamps:!1}),t=>(ke.belongsTo(t.variant,{foreignKey:"variant_id",targetKey:"id",as:"variant",constraints:!1}),ke.belongsTo(t.dimension,{foreignKey:"dimension_id",targetKey:"id",as:"dimension",constraints:!1}),ke.belongsTo(t.report,{foreignKey:"report_id",targetKey:"id",as:"report",constraints:!1}),ke.belongsTo(t.image,{foreignKey:"image_id",targetKey:"id",as:"image",constraints:!1}),ke.hasMany(t.search_content,{foreignKey:"id",sourceKey:"content_id",as:"contentByLocale"}),ke)}var kn=Wi;var Tr=class extends Model{};function Yi(e){return Tr.init({id:{type:DataTypes.INTEGER,primaryKey:!0,onDelete:"cascade",references:{model:"bespoke_reports_search",key:"content_id"}},locale:{type:DataTypes.STRING,primaryKey:!0},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:!0,timestamps:!1}),()=>Tr}var Pn=Yi;var Ht=class extends Model{toJSON(){let t=this.get({plain:!0}),{blocks:r=[]}=this;return {...t,blocks:r.map(o=>o.toJSON())}}};function Zi(e){return Ht.init({id:{type:DataTypes.INTEGER,primaryKey:!0,autoIncrement:!0},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:!0,timestamps:!1}),t=>(Ht.hasMany(t.block,{foreignKey:"section_id",sourceKey:"id",as:"blocks"}),Ht)}var xn=Zi;var _r=class extends Model{};function ec(e){return _r.init({id:{type:DataTypes.INTEGER,primaryKey:!0,autoIncrement:!0},name:{type:DataTypes.STRING,defaultValue:""},description:{type:DataTypes.STRING,defaultValue:""},content:{type:DataTypes.JSONB,defaultValue:{pattern:"",logic:`return {
1
+ import na,{getServerSession}from'next-auth';import ra from'next-auth/providers/auth0';import {initAuth0}from'@auth0/nextjs-auth0';import qe from'auth0';import*as pi from'pg';import {Sequelize,Error as Error$1,DataTypes,literal,Op,where,cast,json,fn as fn$1,col,Model}from'sequelize';import zt from'yn';import*as Ia from'd3-array';import*as va from'd3-collection';import*as Ca from'd3-format';import*as Ba 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 yi from'slugify';import kr from'axios';import Ri from'jsonwebtoken';import hi from'next/config';import Mi from'flexsearch';import nc from'base58';import sc from'flickr-sdk';import {createApi}from'unsplash-js';import dc from'fs';import {createContext,createElement}from'react';import {renderToString}from'react-dom/server';import*as so from'@tabler/icons-react';import $c from'cors';import qc from'image-type';import Oc from'formidable';import Vc from'dom-parser';import fu from'path';import As from'axios-retry';import {format}from'pretty-format';import pl 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 ea=Object.defineProperty;var ta=(e,t)=>{for(var r in t)ea(e,r,{get:t[r],enumerable:true});};function $e(e){let t=e;if(t&&!t.source)if(!t.providers||t.providers.length===0){let r=ra({clientId:process.env.AUTH0_CLIENT_ID,clientSecret:process.env.AUTH0_CLIENT_SECRET,issuer:process.env.AUTH0_ISSUER_BASE_URL});t.providers=[r],t.callbacks={async jwt({token:o,profile:n,trigger:a,session:s}){return n&&(o.bespoke_app_metadata=n.bespoke_app_metadata||{},o.bespoke_user_metadata=n.bespoke_user_metadata||{},o.bespoke_roles=n.bespoke_roles||[],o.name=n.name),a==="update"&&(s.user_metadata&&(o.bespoke_user_metadata={...o.bespoke_user_metadata,...s.user_metadata}),s.app_metadata&&(o.bespoke_app_metadata={...o.bespoke_app_metadata,...s.app_metadata}),s.roles&&s.roles.length>0&&(o.bespoke_roles=s.roles.map(i=>i.name))),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 he(e,t,r={providers:[]}){let o=$e(r),n=await getServerSession(e,t,o);return n&&(n.source=o.source||""),n}var sa=(e={providers:[]})=>{let t=$e(e);return na(t)},aa=sa;var ko=initAuth0({secret:process.env.NEXTAUTH_SECRET,issuerBaseURL:process.env.AUTH0_ISSUER_BASE_URL,baseURL:process.env.REPORTS_BASE_URL||process.env.NEXTAUTH_URL,clientID:process.env.AUTH0_CLIENT_ID,clientSecret:process.env.AUTH0_CLIENT_SECRET});var T=class extends Error{constructor(t,r){super(r),this.code=t;}toJSON(){return Po(this)}static is(t){return Object.prototype.hasOwnProperty.call(t,"code")&&typeof t.code=="number"}};function ca(e){return {ok:true,status:200,wrapper:true,data:e}}function Po(e){return {ok:false,status:T.is(e)?e.code:500,error:e.message}}function v(e){return t=>e(t).then(ca,Po)}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"},xo={APP:"App",USER:"User"},Io=e=>{let t=Object.values(z);return e?e.map(r=>({...r,type:t.includes(r.name)?xo.APP:xo.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 vo(){return async()=>{try{let t=await new qe.ManagementClient(ze).roles.getAll({include_totals:!0,per_page:100});return {roles:Io(t.roles)}}catch(e){throw console.error("AuthZeroError",e),new T(e.response?.status||500,e.message)}}}function Co(){return async e=>{try{let t;if(e){let r={include_totals:!0,per_page:10,page:e.page||0},o=new qe.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 T(t.response?.status||500,t.message)}}}function Bo(){return async e=>{try{if(e){let t=new qe.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 T(404,"User ID required")}catch(t){throw console.error("AuthZeroError",t),new T(t.response?.status||500,t.message)}}}function Lo(){return async e=>{try{if(e.user_id){if(e.app_metadata&&await $r(e.user_id,e.app_metadata),e.user_metadata&&await qr(e.user_id,e.user_metadata),e.roles){let t=new qe.ManagementClient(ze),o=(await t.users.getRoles({id:e.user_id})).map(i=>i.id),n=e.roles.map(i=>i.id),a=n.filter(i=>!o.includes(i)),s=o.filter(i=>!n.includes(i));a.length>0&&await t.users.assignRoles({id:e.user_id},{roles:a}),s.length>0&&await t.users.removeRoles({id:e.user_id},{roles:s});}return {status:"success",message:"User updated!"}}else throw new T(404,"user_id is required")}catch(t){throw console.error("AuthZeroError",t),new T(t.response?.status||500,t.message)}}}function Mo(){return async e=>{try{return "NOT USED SERVICE"}catch(t){throw console.error("AuthZeroError",t),new T(t.response?.status||500,t.message)}}}async function $r(e,t){return await new qe.ManagementClient(ze).users.updateAppMetadata({id:e},t)}async function qr(e,t){return await new qe.ManagementClient(ze).users.updateUserMetadata({id:e},t)}async function Oo(e,t){try{let r=new qe.ManagementClient(ze),o=await r.getUsers({search_engine:"v3",q:`user_metadata.${e}:"${t}"`});for(let n=0;n<o.length;n++){let a=o[n];a.bespoke_user_metadata=a.user_metadata||{},delete a.user_metadata,a.bespoke_roles=(await r.users.getRoles({id:a.user_id})).map(s=>s.name);}return o}catch(r){console.error(r);}}var la=(e,t,r)=>new Promise((o,n)=>{(async()=>{try{let s=await ko.getSession(e,t);if(!s||!s.user)throw new Error("not_authenticated");{let c={...s.user.bespoke_app_metadata||{},...r};await $r(s.user.sub,c),o({error:"",description:`App metadata updated for user ${s.user.email}`});}}catch(s){n({error:s.message,description:"The user does not have an active session or is not authenticated"});}})();}),ua=la;var da=(e,t,r,o)=>new Promise((n,a)=>{(async()=>{try{let i=await he(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 qr(c.id,u),n({error:"",description:`App metadata updated for user ${c.email}`});}}catch(i){a({error:i.message,description:"The user does not have an active session or is not authenticated"});}})();}),ma=da;var Lt=(e,t)=>t&&typeof t=="string"?t.split(".").reduce((r,o)=>r[o],e):e;function nr(e,t){return e.some(r=>t.includes(r))}function sr(e){return e.filter((t,r,o)=>o.indexOf(t)===r)}var fa=(e,t,r)=>async function(o,n){let a=await he(o,n,r);if(!a||!a.user){n.status(401).json({error:"not_authenticated",description:"The user does not have an active session or is not authenticated"});return}let s=a.user.bespoke_roles||[];if(t.length>0&&!nr(s,t)){n.status(402).json({error:"unauthorize",description:"The user requires some specific roles"});return}await e(o,n);},ya=fa;var ga=(e,t)=>new Promise((r,o)=>{(async()=>{try{if(e&&t&&e!==""&&t!==""){let a=await Oo(e,t);r(a);}else o({error:"empty_params",description:"key or value params are empty"});}catch(a){o({error:a.message,description:"Error "});}})();}),Ra=ga;var ke=(e=process.env)=>zt(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(a=>a.toJSON()),consumers:o.map(a=>a.toJSON()),contentByLocale:Object.fromEntries(n.map(a=>[a.locale,a.toJSON()]))}}};function Sa(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 No=Sa;var ar=class extends Model{};function Aa(e){return ar.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}),()=>ar}var Do=Aa;var ir=class extends Model{};function _a(e){return ir.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}),()=>ir}var Uo=_a;function Kr(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 Fo(e,t,r){let o=0,n=1,a=1,s=1,i=0,c=0,l;for(;Math.abs((a-c)/a)>1e-5;)c=a,l=-(t+i)*(t+r+i)*e/(t+2*i)/(t+2*i+1),o=a+l*o,n=s+l*n,i+=1,l=i*(r-i)*e/(t+2*i-1)/(t+2*i),a=o+l*a,s=n+l*s,o/=s,n/=s,a/=s,s=1;return a/t}function wa(e,t,r){let o,n;if(e<0)n=0;else if(e>=t)n=1;else {e=Math.floor(e);let a=r,s=e+1,i=t-e,c=s+i,l=Math.exp(Kr(c)-Kr(i)-Kr(s)+s*Math.log(a)+i*Math.log(1-a));a<(s+1)/(c+2)?o=l*Fo(a,s,i):o=1-l*Fo(1-a,i,s),n=1-o;}return Math.round(n*1e5)/1e5}function ka(e){return {.99999:15.137,.99:6.635,.95:3.841,.9:2.706}[e]}function Mt(e,t,r,o){let n=t/(1-t),a=0,s=1,i=0,c=0;for(;a<=e;)c+=s,a>=r&a<=o&&(i+=s),c>1e30&&(i/=1e30,c/=1e30,s/=1e30),a+=1,s=s*n*(e+1-a)/a;return i/c}function Pa(e,t,r){let o=e/t,a=(100-r*100)/2,s,i;if(e===0)s=0;else {let c=o/2,l=0,p=o,u=a/100;for(;p-l>1e-5;)Mt(t,c,e,e)*.5+Mt(t,c,e+1,t)>u?(p=c,c=(l+c)/2):(l=c,c=(p+c)/2);s=c;}if(e===t)i=0;else {let c=(1+o)/2,l=o,p=1,u=a/100;for(;p-l>1e-5;)Mt(t,c,e,e)*.5+Mt(t,c,0,e-1)<u?(p=c,c=(l+c)/2):(l=c,c=(p+c)/2);i=c;}return {lci:s,uci:i}}function xa(e,t){let r=e,o=t,n=r,a=o,s=95,i=.5,c=.5,p=(100-s)/2/100,u=n;for(;c>1e-5;)c/=2,cr((1+u)*i/(1-i),u+1,1e10)+.5*cr((1+u)*i/(1-i),u,u)>p?i-=c:i+=c;let m=(1+u)*i/(1-i)/a;for(i=.5,c=.5,p=(100-s)/2/100;c>1e-5;)c/=2,cr((1+u)*i/(1-i),0,u-1)+.5*cr((1+u)*i/(1-i),u,u)<p?i-=c:i+=c;let d=(1+u)*i/(1-i)/a;return {lci:m,uci:d}}function cr(e,t,r){let o=1,n=0,a=0,s=0;for(;s<e||o>n*1e-10;)n+=o,s>=t&s<=r&&(a+=o),n>1e30&&(a/=1e30,n/=1e30,o/=1e30),s+=1,o=o*e/s;return a/n}var Vo={binomialCdf:wa,binP:Mt,computeMidP:Pa,criticalValue:ka,smr:xa};var He={d3:{...Ia,...va,...Ca,...Ba},d3plus:{assign:assign,closest:closest,date:date,formatAbbreviate:formatAbbreviate,merge:merge,strip:strip,titleCase:titleCase},stats:Vo},$o={};var Pe={UNILATERAL:"uni",MULTILATERAL:"multi"},We={SINGLE:"single",MULTI:"multi"};var Hr={ALLOWED:"allowed",ALLOWED_LOGIC:"allowedLogic",IGNORE_CASCADE:"ignoreCascade"},Va={ACCESS:"access",ACCESS_LOGIC:"accessLogic"},$a={DISABLED:"disabled"},qa={FALLBACK:"fallback"};var za={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"},jr={GENERATOR:"generator",RELATED:"related",VIZ:"visualization",SECTION_FLAG:"section_flag"},Wr="logic",O={...za,...jr},xe={NAME:"name",DESCRIPTION:"description",...Hr,...Va,...qa,...$a};var lr={FORMATTER:"formatter"},mt={STRING:"string"};var ft=class extends Model{};function Ha(e){return ft.init({id:{type:DataTypes.INTEGER,primaryKey:true,autoIncrement:true},name:{type:DataTypes.STRING,defaultValue:""},content:{type:DataTypes.JSONB,defaultValue:{description:"",testValue:"Foo",type:lr.FORMATTER,inputType:mt.STRING,logic:"return n;"}}},{sequelize:e,modelName:"formatter",tableName:"bespoke_reports_formatter",freezeTableName:true,timestamps:false,hooks:{async afterSync(t){let r=await ft.findAll();if(t.force||r.length===0){let o=Object.entries($o).map(([n,a])=>({name:n,content:a}));await ft.bulkCreate(o);}}}}),()=>ft}var Go=Ha;var Ot=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 Wa(e){return Ot.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=>(Ot.hasMany(t.image_content,{foreignKey:"id",sourceKey:"id",as:"contentByLocale"}),Ot)}var Ko=Wa;var ur=class extends Model{};function Ja(e){return ur.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}),()=>ur}var Ho=Ja;var gt=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 Za(e){return gt.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=>(gt.hasMany(t.dimension,{foreignKey:"report_id",sourceKey:"id",as:"dimensions"}),gt.hasMany(t.section,{foreignKey:"report_id",sourceKey:"id",as:"sections"}),gt)}var jo=Za;var ht=class extends Model{toJSON(){let t=this.get({plain:true}),{variants:r=[]}=this;return {...t,variants:r.map(o=>o.toJSON())}}};function ei(e){return ht.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=>(ht.hasMany(t.variant,{foreignKey:"dimension_id",sourceKey:"id",as:"variants",constraints:false}),ht.belongsTo(t.report,{foreignKey:"report_id",targetKey:"id",as:"report",constraints:false}),ht)}var Wo=ei;var bt=class extends Model{get report(){return this.dimension?.report}toJSON(){return this.get({plain:true})}};function ri(e){return bt.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=>(bt.hasMany(t.search,{foreignKey:"variant_id",sourceKey:"id",as:"members",constraints:false}),bt.belongsTo(t.dimension,{foreignKey:"dimension_id",targetKey:"id",as:"dimension",constraints:false}),bt)}var Yo=ri;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 ni(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 Jo=ni;var pr=class extends Model{};function ai(e){return pr.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}),()=>pr}var Qo=ai;var Dt=class extends Model{toJSON(){let t=this.get({plain:true}),{blocks:r=[]}=this;return {...t,blocks:r.map(o=>o.toJSON())}}};function ci(e){return Dt.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=>(Dt.hasMany(t.block,{foreignKey:"section_id",sourceKey:"id",as:"blocks"}),Dt)}var Zo=ci;var mr=class extends Model{};function ui(e){return mr.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 {
47
2
  axiosConfig: {
48
3
  method: 'get',
49
4
  url: url,
50
5
  }
51
- };`,testUrl:""}}},{sequelize:e,modelName:"datasource",tableName:"bespoke_reports_data_source",freezeTableName:!0,timestamps:!1}),()=>_r}var In=ec;var Cn={block:mn,block_content:fn,block_input:gn,formatter:En,image:An,image_content:Tn,report:vn,dimension:_n,variant:wn,search:kn,search_content:Pn,section:xn,datasource:In};var mo=Ie(),Bn=process.env.REPORTS_DB_CONNECTION||"";if(!Bn)throw new Error(`
6
+ };`,testUrl:""}}},{sequelize:e,modelName:"datasource",tableName:"bespoke_reports_data_source",freezeTableName:true,timestamps:false}),()=>mr}var Xo=ui;var en={block:No,block_content:Do,block_input:Uo,formatter:Go,image:Ko,image_content:Ho,report:jo,dimension:Wo,variant:Yo,search:Jo,search_content:Qo,section:Zo,datasource:Xo};var Qr=ke(),tn=process.env.REPORTS_DB_CONNECTION||"";if(!tn)throw new Error(`
52
7
  Env var 'REPORTS_DB_CONNECTION' is not present.
53
8
  This is required to connect to a database to save the Reports CMS changes.
54
- `);var tt=async()=>{if(global.sequelize){mo&&console.info("\u267B\uFE0F RE-UTILIZING DB CONNECTION");let e=global.sequelize.sequelize;if(e)try{return await e.authenticate(),global.sequelize}catch(t){mo&&console.warn(`\u26A0\uFE0F CONNECTION INACTIVE, REINITIALIZING: ${t.message}`),delete global.sequelize;}}if(!global.sequelize){mo&&console.info("\u{1F511} INITIALIZING DB CONNECTION");let e;try{e=new Sequelize(Bn,{logging:!1,dialectModule:tc,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){Qr&&console.info("\u267B\uFE0F RE-UTILIZING DB CONNECTION");let e=global.sequelize.sequelize;if(e)try{return await e.authenticate(),global.sequelize}catch(t){Qr&&console.warn(`\u26A0\uFE0F CONNECTION INACTIVE, REINITIALIZING: ${t.message}`),delete global.sequelize;}}if(!global.sequelize){Qr&&console.info("\u{1F511} INITIALIZING DB CONNECTION");let e;try{e=new Sequelize(tn,{logging:!1,dialectModule:pi,pool:{max:10,min:1,acquire:5*1e3,idle:10*1e3,evict:1*1e3}});}catch(t){throw new Error(`
55
10
  Could not connect to the database using the given connection string.
56
11
  Please check that the connection string 'REPORTS_DB_CONNECTION' is correct.
57
12
  Details:
58
13
  ${t.message}
59
- `)}Object.values(Cn).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(en).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),`
60
15
  Error initializing sequelize connection:
61
- `,t.stack||t.message),global.sequelize=void 0;}).then(()=>({...e.models,sequelize:e}));}return global.sequelize};var nc=()=>{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}},j=nc;function K(e){let t={"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#x27;":"'","&#x60;":"`","&nbsp;":""},r=`(?:${Object.keys(t).join("|")})`,o=RegExp(r),n=RegExp(r,"g"),a=String(e).replace(/<[^>]+>/g," ").replace(/\s+/g," ").trim();return o.test(a)?a.replace(n,s=>t[s]):a}function Wt(e){return typeof e=="string"?String(e).replace(/&([a-z0-9]+|#[0-9]{1,6}|#x[0-9a-f]{1,6});/ig," "):e}function sc(e){return e?ac(Wt(K(e)),{replacement:"-",remove:/[*+~.()'"!:@]/g,lower:!0,strict:!0,trim:!0}):""}var wr=sc;var Jt=e=>({overrideNames:e&&typeof e.overrideNames<"u"?e.overrideNames:!1,overrideRelevance:e&&typeof e.overrideRelevance<"u"?e.overrideRelevance:!1,regenerateSlugs:e&&typeof e.regenerateSlugs<"u"?e.regenerateSlugs:!1,keepOldMembers:e&&typeof e.keepOldMembers<"u"?e.keepOldMembers:!0,doIngest:e&&typeof e.doIngest<"u"?e.doIngest:!1,overrideAttributes:e&&typeof e.overrideAttributes<"u"?e.overrideAttributes:!1,order:e&&typeof e.order<"u"?e.order:0});var Ln={jwt:ic};var On=(e,t={},r="en",o={},n={})=>{let a={setVariables:o.onSetVariables?o.onSetVariables:c=>c,openModal:o.onOpenModal?o.onOpenModal:c=>c,formatters:t,libs:Je,locale:r,...n};function s(c){return Function("globals",...c.vars,`with (globals) { ${c.logic} }`).bind(a,a)}function i(c){if(c.vars&&c.logic)return s(c);for(let l in c)Array.isArray(c[l])?c[l]=c[l].map(u=>isObject(u)?i(u):u):isObject(c[l])&&(c[l]=i(c[l]));return c}return i(e)},Pr=(e,t={})=>{let r={libs:Ln,...t};function o(a){return Function("globals",...a.vars,`with (globals) { ${a.logic} }`).bind(r,r)}function n(a){if(a.vars&&a.logic)return o(a);for(let s in a)Array.isArray(a[s])?a[s]=a[s].map(i=>isObject(i)?n(i):i):isObject(a[s])&&(a[s]=n(a[s]));return a}return n(e)};function lc(){let{publicRuntimeConfig:e}=cc(),t=e.bespoke_report_env_vars||{};return {...Object.keys(t).reduce((r,o)=>(r[`ENV_${o}`]=t[o]||"N/A",r),{})}}var de=lc;function uc(){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 kt=uc;var{localeDefault:mc}=j();function he(e){return {variables:e.variables||{},query:e.query||{},locale:e.locale||mc}}function fo(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 Re=fc;function fc(e,t,r,o=!1){let{variables:n}=he(r);if(!e)return e;let a=/([A-z0-9]*)\{\{([^\}]+)\}\}/g;return e.replace(a,(i,c,l)=>{let u=d=>d;if(c){let d=c.replace(/^\w/g,f=>f.toLowerCase());d in t?u=t[d]:u=f=>`${c}${f}`;}let p=Array.isArray(n[l])?fo(n[l]):n[l];if(p===void 0)return o?i:"N/A";try{return u(p,Je,t)}catch(d){return console.error(`Error using formatter ${u.name}
62
- `,`Error message: ${d.message}`),"N/A"}})}function yc(e,t){return e.some(r=>t.includes(`role.${r}`))}function xr(e){return async t=>{let{url:r,method:o,timeout:n,wrapper:a=!0,session:s}=t,i=n||process.env.NEXT_PUBLIC_REPORTS_API_FETCH_TIMEOUT||0,c={url:r,method:o||"GET",timeout:i},l=de(),u=kt(),p=null;s&&s.user&&(p={user:s.user,status:"authenticated",isLoading:!1,update:async()=>s});let d={envs:{...l,...u},...p?{session:p}:{}};try{let m=(await e.datasource.findAll({where:literal("(content->>'useProxy')::boolean = true"),order:[literal("(content->>'order')::integer ASC NULLS LAST")]})).map(g=>{let S={...l};return {...g.toJSON(),patternSwapped:Re(g.content.pattern,{},{variables:S})}}).find(g=>{if(!g.content?.pattern)return !1;try{return new RegExp(g.patternSwapped,"gm").test(c.url)}catch{return !1}});if(m){let g=t.user_roles&&Array.isArray(t.user_roles)?t.user_roles:[],S=m.content.access&&Array.isArray(m.content.access)?m.content.access:[];if(m.content.logic&&(S.length===0||S.includes("public")||S.includes("guest")&&g.length===0||S.includes("private")&&g.length>0||yc(g,S))){let _=await Pr({vars:["url","libs","session"],logic:m.content.logic},d)(c.url);if(_.axiosConfig)c=_.axiosConfig;else throw new E(500,`AxiosConfig is missing in Data Source ${m.name} (ID: ${m.id}).`)}else throw new E(401,`Query not allowed because user roles. Data Source ${m.name} (ID: ${m.id}).`)}let R=await Ur.request(c);return {ok:!0,wrapper:a,status:R.status,data:R.data}}catch(f){throw new E(f.response?.status||500,f.message)}}}var{localeDefault:go}=j();function Dn(e){let{search:t,search_content:r}=e,o=xr(e);return n;async function n(s){let{id:i,config:c={},settings:l={}}=s,u=c[go]?go:Object.keys(c)[0],{overrideNames:p,overrideAttributes:d}=Jt(l),{accessor:f,path:m,idKey:R,labelKey:g}=c[go];if(!m||!R||!g)return;let S=await o({url:m}).catch($=>({data:[],error:$}));if("error"in S)throw new E(500,`Failed to fetch members: ${S.error}`);let w=zt(S.data,f),_=[];try{console.info(`Ingesting default items for variant ${s.name} for ${u}`),_=await a(s,u,w);}catch($){let L=`[ERROR] Ingesting default member items for ${u}`;throw console.error(L,$),new E(500,L)}let C=await t.findAll({where:{variant_id:i}}).then($=>Object.fromEntries($.map(L=>[L.id,{content_id:L.content_id,needsUpdate:_.includes(L.content_id)}]))),x=Object.entries(c).map(async([$,L])=>{let{path:U,accessor:v,idKey:O,labelKey:F,attributes:B=[]}=L;if(!U||!O||!F)return;let q=await o({url:U}).catch(A=>({data:[],error:A}));if("error"in q)throw new E(500,`Failed to fetch members for locale ${$}: ${q.error}`);let M=zt(q.data,v),k=await r.findAll({where:{id:_,locale:$}}).then(A=>Object.fromEntries(A.map(b=>[b.id,b.toJSON()]))),H=M.filter(A=>typeof A[O]<"u"&&A[O]!==""&&typeof A[F]<"u"&&A[F]!=="").map(A=>{let b=C[A[O]],T,P=Object.fromEntries(B.map(ne=>[ne.name,ne.type==="constant"?ne.value:A[ne.value]||""]));return b.needsUpdate&&k[b.content_id]?(T={...k[b.content_id]},p&&(T.name=A[F]),d&&(T.attributes=P)):T={id:b.content_id,locale:$,name:A[F],attributes:P},T});try{return r.bulkCreate(H,{updateOnDuplicate:["name","attributes"]})}catch(A){let b=`[ERROR] Ingesting search content items for ${$}`;throw console.error(b,A),new E(500,b)}});await Promise.all(x);}async function a(s,i,c){let{id:l,dimension_id:u,slug:p}=s,{report_id:d}=s.dimension,{idKey:f,labelKey:m,zValueKey:R}=s.config[i],{overrideNames:g,regenerateSlugs:S,keepOldMembers:w,overrideRelevance:_,overrideAttributes:C}=Jt(s.settings),x=t.findAll({attributes:["slug",[fn$1("COUNT",col("variant.id")),"slugCount"]],include:{association:"variant",attributes:[],required:!1,right:!0,where:{dimension_id:u,slug:p,id:{[Op.not]:l}}},group:"search.slug"}).then(b=>Object.fromEntries(b.map(T=>{let P=T.getDataValue("slugCount");return [T.slug,Number.parseInt(`${P}`,10)]}))),$=t.findAll({where:{variant_id:l}}).then(b=>Object.fromEntries(b.map(T=>[T.id,T.toJSON()]))),[L,U]=await Promise.all([x,$]),v=Object.values(U).map(b=>b.slug),O=[],F=null,B=null;if(R&&R!==""){for(let b of c)if(typeof b[R]=="number"&&!isNaN(b[R])){let T=b[R];(F===null||T<F)&&(F=T),(B===null||T>B)&&(B=T);}}let q=[],M=[],k=[],H=!1;c.filter(b=>b[f]&&b[f]!==""&&b[m]&&b[m]!=="").forEach(b=>{let T=b[f],P=wr(b[m]);H=!1;let ne=parseFloat(Math.random().toPrecision(5));if(R&&R!==""&&F&&B&&b[R]){let ae;try{ae=parseInt(b[R],10);}catch{ae=0;}let Z=B!==null&&F!==null&&B!==F?(ae-F)/(B-F):0;ne=B===F?1:parseFloat(Z.toPrecision(5));}if(U[T]){if(g||S||_||C){let ae=U[T];if((g||C)&&k.push(ae.content_id),g&&S){let Z=Object.values(U).filter(V=>V.id!==T).map(V=>V.slug),J=L[P]||Z.includes[P]||O.includes(P);J&&console.warn("Duplicate slug!",P,"replaced by",`${P}-${T}`);let ie=J?`${P}-${T}`:P;ae.slug!==ie&&(ae.slug=ie,O.push(P),H=!0,console.info("UPDATE SLUG",T,P));}R&&R!==""&&_&&ae.zvalue!==ne&&(ae.zvalue=ne,H=!0,console.warn("UPDATE ZVALUE",T,ne)),H&&M.push(ae);}}else {console.info("INSERT ID",T);let ae=L[P]||v.includes[P]||O.includes(P);ae&&console.warn("Duplicate slug!",P,"replaced by",`${P}-${T}`);let Z=ae?`${P}-${T}`:P;O.push(P),q.push({id:T,slug:Z,variant_id:l,dimension_id:u,report_id:d,zvalue:ne});}});let A=[];if(!w){let b=c.map(T=>T[f]);A=Object.keys(U).filter(T=>!b.includes(T));}try{return (q.length>0||M.length>0)&&(await t.bulkCreate([...q,...M],{updateOnDuplicate:["slug","zvalue"]}),console.info("New members ingested:",q.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 Ec=Xt(process.env.NEXT_PUBLIC_REPORTS_DEBUG);function Un(e){let{search:t}=e;return r;async function r(o){let{all:n,locale:a,mode:s,variant:i,output:c,allowNulls:l}=o,u={content_id:[],...i&&i.length?{variant_id:i}:{}};if(s==="content_ids")u.content_id=o.content_ids;else if(s==="ids"){if(n)throw new E(400,"Search by ids doesn't support locale all. Pick one locale.");let m={id:o.ids,...i&&i.length?{variant_id:i}:{}},R=await t.findAll({attributes:["content_id"],where:m,include:[{association:"contentByLocale",where:{locale:a}}]});u.content_id=R.map(g=>g.content_id);}else if(s==="slugs"){let m=o.slugs.map(g=>t.findAll({attributes:["content_id"],where:{slug:g.memberSlug},include:{association:"variant",attributes:["id","name","slug"],required:!0,where:{slug:g.variantSlug}}})),R=await Promise.all(m).then(g=>g.reduce((S,w)=>S.concat(w),[]));u.content_id=R.map(g=>g.content_id);}else if(s==="related"){let m=()=>{if(o.variant_ids?.length)return {variant_id:o.variant_ids.map(S=>S)};if(o.dimension_ids?.length)return {dimension_id:o.dimension_ids.map(S=>S)};if(o.report_ids?.length)return {report_id:o.report_ids.map(S=>S)}},R=()=>o.include_ids?.length?{[Op.in]:o.include_ids.map(S=>S)}:!1,g=await t.findAll({attributes:["content_id"],where:{...m(),content_id:R()||{[Op.notIn]:o.current_ids},visible:!0},order:[Sequelize.fn("RANDOM")],limit:o.related||4});u.content_id=g.map(S=>S.content_id);}else if(s==="whole"){let m={...i&&i.length?{variant_id:i}:{}},R=await t.findAll({attributes:["content_id"],where:m});u.content_id=R.map(g=>g.content_id);}let p={locale:n?{[Op.ne]:null}:a},d=await t.findAll({where:u,include:[{association:"report",attributes:["id","name"]},{association:"dimension",attributes:["id","name","ordering"]},{association:"variant",attributes:["id","name","slug"]},{association:"image",attributes:["id","author","url","license"],include:[{association:"contentByLocale",where:p}]},{association:"contentByLocale",where:p}]});if(!l&&!["related","whole"].includes(s)&&o[s]&&d.length!==o[s].length)throw Ec&&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));d.sort((m,R)=>u.content_id.indexOf(m.content_id)-u.content_id.indexOf(R.content_id));let f=d.map(m=>{let R,g={id:m.id,slug:m.slug,visible:m.visible,zvalue:m.zvalue,content_id:m.content_id,report_id:m.report_id,report_name:m.report.name,dimension_id:m.dimension_id,dimension_name:m.dimension.name,dimension_ordering:m.dimension.ordering,variant_id:m.variant_id,variant_name:m.variant.name,variant_slug:m.variant.slug};if(n){let S=m.contentByLocale;g.contentByLocale=S,g.image=m.image,g.image_id=m.image_id,R=g;}else {let S=m.getContent(a),w=m.image?.getContent(a),_=w&&{id:m.image.id,author:m.image.author,url:m.image.url,license:m.image.license,meta:w.meta};R={...g,locale:S.locale,name:S.name,attributes:S.attributes,keywords:S.keywords,image:_||null,image_id:m.image_id};}return c==="lite"&&(delete R.image,delete R.image_id),R});return {meta:o,results:f}}}function Fn(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 Tc(e,t=!0){if(!e)return "";let r=Wt(K(e.toLowerCase()));return (t?ac(r,{replacement:" ",remove:/[*+~.()'"!:@-]/g,lower:!0,strict:!1,trim:!0}):r).replace(/\s\s+/g," ")}var rt=Tc;var Yt=[{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"]}],Ir=Yt.reduce((e,t)=>e.concat(t.locales),[]);var Pt=Ie(),{locales:_c}=j(),wc=_c.filter(e=>Ir.includes(e)),ho=!1,kc=async(e,t=!1)=>{if(t&&(Pt&&console.info("0\uFE0F\u20E3 CLEARING SEARCH INDEX"),global.flexsearch=void 0,ho=!1),global.flexsearch)return Pt&&console.info("\u{1F501} RE-UTILIZING SEARCH INDEX"),global.flexsearch;try{ho||(Pt&&console.info("1\uFE0F\u20E3 INITIALIZING SEARCH INDEX"),ho=!0,global.flexsearch=await Pc(e));}catch(r){throw new Error(`
16
+ `,t.stack||t.message),global.sequelize=void 0;}).then(()=>({...e.models,sequelize:e}));}return global.sequelize};var fi=()=>{let e=process.env.NEXT_PUBLIC_REPORTS_LOCALE_DEFAULT||"en",t=process.env.NEXT_PUBLIC_REPORTS_LOCALES?.split(",")||[e];return t.includes(e)||t.push(e),{localeDefault:e,locales:t}},K=fi;function H(e){let t={"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#x27;":"'","&#x60;":"`","&nbsp;":""},r=`(?:${Object.keys(t).join("|")})`,o=RegExp(r),n=RegExp(r,"g"),a=String(e).replace(/<[^>]+>/g," ").replace(/\s+/g," ").trim();return o.test(a)?a.replace(n,s=>t[s]):a}function Ut(e){return typeof e=="string"?String(e).replace(/&([a-z0-9]+|#[0-9]{1,6}|#x[0-9a-f]{1,6});/ig," "):e}function gi(e){return e?yi(Ut(H(e)),{replacement:"-",remove:/[*+~.()'"!:@]/g,lower:true,strict:true,trim:true}):""}var fr=gi;var Ft=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 rn={jwt:Ri};var on=(e,t={},r="en",o={},n={})=>{let a={setVariables:o.onSetVariables?o.onSetVariables:c=>c,openModal:o.onOpenModal?o.onOpenModal:c=>c,formatters:t,libs:He,locale:r,...n};function s(c){return Function("globals",...c.vars,`with (globals) { ${c.logic} }`).bind(a,a)}function i(c){if(c.vars&&c.logic)return s(c);for(let l in c)Array.isArray(c[l])?c[l]=c[l].map(p=>isObject(p)?i(p):p):isObject(c[l])&&(c[l]=i(c[l]));return c}return i(e)},gr=(e,t={})=>{let r={libs:rn,...t};function o(a){return Function("globals",...a.vars,`with (globals) { ${a.logic} }`).bind(r,r)}function n(a){if(a.vars&&a.logic)return o(a);for(let s in a)Array.isArray(a[s])?a[s]=a[s].map(i=>isObject(i)?n(i):i):isObject(a[s])&&(a[s]=n(a[s]));return a}return n(e)};function bi(){let{publicRuntimeConfig:e}=hi(),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 Si(){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 St=Si;var{localeDefault:Ti}=K();function me(e){return {variables:e.variables||{},query:e.query||{},locale:e.locale||Ti}}function Zr(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 fe=_i;function _i(e,t,r,o=false){let{variables:n}=me(r);if(!e)return e;let a=/([A-z0-9]*)\{\{([^\}]+)\}\}/g;return e.replace(a,(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])?Zr(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 ki(e,t){return e.some(r=>t.includes(`role.${r}`))}function Rr(e){return async t=>{let{url:r,method:o,timeout:n,wrapper:a=true,session:s}=t,i=n||process.env.NEXT_PUBLIC_REPORTS_API_FETCH_TIMEOUT||0,c={url:r,method:o||"GET",timeout:i},l=pe(),p=St(),u=null;s&&s.user&&(u={user:s.user,status:"authenticated",isLoading:false,update:async()=>s});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(y=>{let S={...l};return {...y.toJSON(),patternSwapped:fe(y.content.pattern,{},{variables:S})}}).find(y=>{if(!y.content?.pattern)return !1;try{return new RegExp(y.patternSwapped,"gm").test(c.url)}catch{return !1}});if(d){let y=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")&&y.length===0||S.includes("private")&&y.length>0||ki(y,S))){let P=await gr({vars:["url","libs","session"],logic:d.content.logic},m)(c.url);if(P.axiosConfig)c=P.axiosConfig;else throw new T(500,`AxiosConfig is missing in Data Source ${d.name} (ID: ${d.id}).`)}else throw new T(401,`Query not allowed because user roles. Data Source ${d.name} (ID: ${d.id}).`)}let h=await kr.request(c);return {ok:!0,wrapper:a,status:h.status,data:h.data}}catch(f){throw new T(f.response?.status||500,f.message)}}}var{localeDefault:Xr}=K();function an(e){let{search:t,search_content:r}=e,o=Rr(e);return n;async function n(s){let{id:i,config:c={},settings:l={}}=s,p=c[Xr]?Xr:Object.keys(c)[0],{overrideNames:u,overrideAttributes:m}=Ft(l),{accessor:f,path:d,idKey:h,labelKey:y}=c[Xr];if(!d||!h||!y)return;let S=await o({url:d}).catch($=>({data:[],error:$}));if("error"in S)throw new T(500,`Failed to fetch members: ${S.error}`);let x=Lt(S.data,f),P=[];try{console.info(`Ingesting default items for variant ${s.name} for ${p}`),P=await a(s,p,x);}catch($){let B=`[ERROR] Ingesting default member items for ${p}`;throw console.error(B,$),new T(500,B)}let F=await t.findAll({where:{variant_id:i}}).then($=>Object.fromEntries($.map(B=>[B.id,{content_id:B.content_id,needsUpdate:P.includes(B.content_id)}]))),w=Object.entries(c).map(async([$,B])=>{let{path:N,accessor:_,idKey:L,labelKey:D,attributes:C=[]}=B;if(!N||!L||!D)return;let q=await o({url:N}).catch(E=>({data:[],error:E}));if("error"in q)throw new T(500,`Failed to fetch members for locale ${$}: ${q.error}`);let M=Lt(q.data,_),k=await r.findAll({where:{id:P,locale:$}}).then(E=>Object.fromEntries(E.map(b=>[b.id,b.toJSON()]))),Y=M.filter(E=>typeof E[L]<"u"&&E[L]!==""&&typeof E[D]<"u"&&E[D]!=="").map(E=>{let b=F[E[L]],A,I=Object.fromEntries(C.map(ne=>[ne.name,ne.type==="constant"?ne.value:E[ne.value]||""]));return b.needsUpdate&&k[b.content_id]?(A={...k[b.content_id]},u&&(A.name=E[D]),m&&(A.attributes=I)):A={id:b.content_id,locale:$,name:E[D],attributes:I},A});try{return r.bulkCreate(Y,{updateOnDuplicate:["name","attributes"]})}catch(E){let b=`[ERROR] Ingesting search content items for ${$}`;throw console.error(b,E),new T(500,b)}});await Promise.all(w);}async function a(s,i,c){let{id:l,dimension_id:p,slug:u}=s,{report_id:m}=s.dimension,{idKey:f,labelKey:d,zValueKey:h}=s.config[i],{overrideNames:y,regenerateSlugs:S,keepOldMembers:x,overrideRelevance:P,overrideAttributes:F}=Ft(s.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(A=>{let I=A.getDataValue("slugCount");return [A.slug,Number.parseInt(`${I}`,10)]}))),$=t.findAll({where:{variant_id:l}}).then(b=>Object.fromEntries(b.map(A=>[A.id,A.toJSON()]))),[B,N]=await Promise.all([w,$]),_=Object.values(N).map(b=>b.slug),L=[],D=null,C=null;if(h&&h!==""){for(let b of c)if(typeof b[h]=="number"&&!isNaN(b[h])){let A=b[h];(D===null||A<D)&&(D=A),(C===null||A>C)&&(C=A);}}let q=[],M=[],k=[],Y=false;c.filter(b=>b[f]&&b[f]!==""&&b[d]&&b[d]!=="").forEach(b=>{let A=b[f],I=fr(b[d]);Y=false;let ne=parseFloat(Math.random().toPrecision(5));if(h&&h!==""&&D&&C&&b[h]){let se;try{se=parseInt(b[h],10);}catch{se=0;}let Z=C!==null&&D!==null&&C!==D?(se-D)/(C-D):0;ne=C===D?1:parseFloat(Z.toPrecision(5));}if(N[A]){if(y||S||P||F){let se=N[A];if((y||F)&&k.push(se.content_id),y&&S){let Z=Object.values(N).filter(V=>V.id!==A).map(V=>V.slug),W=B[I]||Z.includes[I]||L.includes(I);W&&console.warn("Duplicate slug!",I,"replaced by",`${I}-${A}`);let ie=W?`${I}-${A}`:I;se.slug!==ie&&(se.slug=ie,L.push(I),Y=true,console.info("UPDATE SLUG",A,I));}h&&h!==""&&P&&se.zvalue!==ne&&(se.zvalue=ne,Y=true,console.warn("UPDATE ZVALUE",A,ne)),Y&&M.push(se);}}else {console.info("INSERT ID",A);let se=B[I]||_.includes[I]||L.includes(I);se&&console.warn("Duplicate slug!",I,"replaced by",`${I}-${A}`);let Z=se?`${I}-${A}`:I;L.push(I),q.push({id:A,slug:Z,variant_id:l,dimension_id:p,report_id:m,zvalue:ne});}});let E=[];if(!x){let b=c.map(A=>A[f]);E=Object.keys(N).filter(A=>!b.includes(A));}try{return (q.length>0||M.length>0)&&(await t.bulkCreate([...q,...M],{updateOnDuplicate:["slug","zvalue"]}),console.info("New members ingested:",q.length),console.info("New members updated:",M.length)),E.length>0&&(await t.destroy({where:{id:{[Op.in]:E},variant_id:l}}),console.warn("Old members deleted:",E.length)),k}catch(b){throw console.error(`[ERROR] Ingesting search members for ${i}`,b),new Error(b)}}}var Ci=zt(process.env.NEXT_PUBLIC_REPORTS_DEBUG);function cn(e){let{search:t}=e;return r;async function r(o){let{all:n,locale:a,mode:s,variant:i,output:c,allowNulls:l}=o,p={content_id:[],...i&&i.length?{variant_id:i}:{}};if(s==="content_ids")p.content_id=o.content_ids;else if(s==="ids"){if(n)throw new T(400,"Search by ids doesn't support locale all. Pick one locale.");let d={id:o.ids,...i&&i.length?{variant_id:i}:{}},h=await t.findAll({attributes:["content_id"],where:d,include:[{association:"contentByLocale",where:{locale:a}}]});p.content_id=h.map(y=>y.content_id);}else if(s==="slugs"){let d=o.slugs.map(y=>t.findAll({attributes:["content_id"],where:{slug:y.memberSlug},include:{association:"variant",attributes:["id","name","slug"],required:true,where:{slug:y.variantSlug}}})),h=await Promise.all(d).then(y=>y.reduce((S,x)=>S.concat(x),[]));p.content_id=h.map(y=>y.content_id);}else if(s==="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,y=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=y.map(S=>S.content_id);}else if(s==="whole"){let d={...i&&i.length?{variant_id:i}:{}},h=await t.findAll({attributes:["content_id"],where:d});p.content_id=h.map(y=>y.content_id);}let u={locale:n?{[Op.ne]:null}:a},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(s)&&o[s]&&m.length!==o[s].length)throw Ci&&console.error("Error in read members. The number of members requested doesn't match the number of members found.",JSON.stringify(o)),new T(404,"One or more members were not found. "+JSON.stringify(o));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,y={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;y.contentByLocale=S,y.image=d.image,y.image_id=d.image_id,h=y;}else {let S=d.getContent(a),x=d.image?.getContent(a),P=x&&{id:d.image.id,author:d.image.author,url:d.image.url,license:d.image.license,meta:x.meta};h={...y,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 ln(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 Li(e,t=true){if(!e)return "";let r=Ut(H(e.toLowerCase()));return (t?yi(r,{replacement:" ",remove:/[*+~.()'"!:@-]/g,lower:true,strict:false,trim:true}):r).replace(/\s\s+/g," ")}var Xe=Li;var Vt=[{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"]}],hr=Vt.reduce((e,t)=>e.concat(t.locales),[]);var Et=ke(),{locales:Oi}=K(),Ni=Oi.filter(e=>hr.includes(e)),to=false,Di=async(e,t=false)=>{if(t&&(Et&&console.info("0\uFE0F\u20E3 CLEARING SEARCH INDEX"),global.flexsearch=void 0,to=false),global.flexsearch)return Et&&console.info("\u{1F501} RE-UTILIZING SEARCH INDEX"),global.flexsearch;try{to||(Et&&console.info("1\uFE0F\u20E3 INITIALIZING SEARCH INDEX"),to=!0,global.flexsearch=await Ui(e));}catch(r){throw new Error(`
63
18
  Could not initialize FlexSearch engine.
64
19
  Details:
65
20
  ${r.message}
66
- `)}return global.flexsearch};async function Pc(e){let t=await e.search.findAll({include:[{association:"contentByLocale"}]});Pt&&console.info("\u{1F3F3}\uFE0F INITIALIZING FLEXSEARCH");let r=wc.map(async o=>{Pt&&console.info(`\u{1F3F3}\uFE0F INITIALIZING FLEXSEARCH ${o} LOCALE`);let n=Yt.find(u=>u.locales.includes(o)),a=n?.charset||"latin",s=a==="latin"?"advanced":"default";n?console.info(` Charset for ${o}: ${a}`):Pt&&console.error(` Missing charset for ${o}, adding latin as default.`);let i=(await import(`flexsearch/dist/module/lang/${a}/${s}`)).default,c=new vc.Document({language:o,encode:i.encode,tokenize:"reverse",stemmer:{},matcher:{},filter:[],preset:"default",cache:100,resolution:9,context:!1,optimize:!0,worker:!1,document:{id:"content_id",store:!1,index:["id","name","clean","keywords","attributes"]}}),l=0;return t.forEach(u=>{let p=u.contentByLocale.find(d=>d.locale===o);if(p){let d=rt(p.name,a!=="arabic"),f=Array.isArray(p.keywords)?p.keywords.map(R=>rt(R,a!=="arabic")):null,m={id:u.id,content_id:u.content_id,name:p.name,keywords:f,attributes:p.attributes,clean:d};c.add(m),l++;}}),console.info(`\u{1F3F3}\uFE0F Indexed for ${o}: ${l} elements`),[o,c]});return Object.fromEntries(await Promise.all(r))}var ot=kc;var xt=process.env.REPORTS_EXTERNAL_SEARCH,Le=Ie(),{locales:xc}=j(),Ic=xc.filter(e=>Ir.includes(e)),Ro=!1,Cc=async(e=!1)=>{if(e&&(Le&&console.info("0\uFE0F\u20E3 CLEARING SEARCH INDEX"),global.typesense=void 0,Ro=!1),global.typesense)return Le&&console.info("\u{1F501} RE-UTILIZING SEARCH INDEX"),global.typesense;try{Ro||(Le&&console.info("1\uFE0F\u20E3 INITIALIZING SEARCH INDEX"),Ro=!0,global.typesense=await Lc());}catch(t){throw new Error(`
21
+ `)}return global.flexsearch};async function Ui(e){let t=await e.search.findAll({include:[{association:"contentByLocale"}]});Et&&console.info("\u{1F3F3}\uFE0F INITIALIZING FLEXSEARCH");let r=Ni.map(async o=>{Et&&console.info(`\u{1F3F3}\uFE0F INITIALIZING FLEXSEARCH ${o} LOCALE`);let n=Vt.find(p=>p.locales.includes(o)),a=n?.charset||"latin",s=a==="latin"?"advanced":"default";n?console.info(` Charset for ${o}: ${a}`):Et&&console.error(` Missing charset for ${o}, adding latin as default.`);let i=(await import(`flexsearch/dist/module/lang/${a}/${s}`)).default,c=new Mi.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,a!=="arabic"),f=Array.isArray(u.keywords)?u.keywords.map(h=>Xe(h,a!=="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=Di;var At=process.env.REPORTS_EXTERNAL_SEARCH,Ie=ke(),{locales:Fi}=K(),Vi=Fi.filter(e=>hr.includes(e)),ro=false,$i=async(e=false)=>{if(e&&(Ie&&console.info("0\uFE0F\u20E3 CLEARING SEARCH INDEX"),global.typesense=void 0,ro=false),global.typesense)return Ie&&console.info("\u{1F501} RE-UTILIZING SEARCH INDEX"),global.typesense;try{ro||(Ie&&console.info("1\uFE0F\u20E3 INITIALIZING SEARCH INDEX"),ro=!0,global.typesense=await zi());}catch(t){throw new Error(`
67
22
  Could not initialize Typesense engine.
68
23
  Details:
69
24
  ${t.message}
70
- `)}return global.typesense};async function Bc(){try{if(xt){let e=await Ur.get(new URL(xt).origin);if(e?.data["typesense-health"]===!0)return Le&&console.info(`${xt} 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),!1}}async function Lc(){if(Le&&console.info(`\u{1F3F3}\uFE0F INITIALIZING TYPESENSE SEARCH AGAINST ${xt}`),!await Bc())throw new Error("TYPESENSE_URL service is not healthy.");let t=Ic.map(r=>(Le&&console.info(`\u{1F3F3}\uFE0F INITIALIZING SEARCH ${r} LOCALE`),[r,{search:async(n={query:"*",limit:12,offset:0})=>{let a={locale:r,query:n.query,limit:n.limit,offset:n.offset};return n.report&&Array.isArray(n.report)&&n.report.length>0&&(a["report[]"]=n.report.join(",")),n.variant&&Array.isArray(n.variant)&&n.variant.length>0&&(a["variant[]"]=n.variant.join(",")),Le&&console.info("Typesense URL:",xt,a),Ur.get(xt,{params:a}).then(i=>(Le&&(console.info("Typesense URL:",i.request.res.responseUrl),console.info("Typesense Results",i.data.data.results.length)),i.data.data)).catch(i=>(console.error("Typesense Call Error:",i),[]))}}]));return Object.fromEntries(await Promise.all(t))}var $n=Cc;var{localeDefault:So}=j();function It(e){let{search:t,report:r}=e;return o;async function o(n){let a=n.origin||"flexsearch",s=process.env.REPORTS_EXTERNAL_SEARCH&&a==="typesense",{query:i,locale:c,preferredLocale:l,limit:u,format:p,visible:d,variant:f,dimension:m,report:R,all:g,noImage:S,includes:w,sort:_,direction:C="ASC",offset:x=0}=n,L=Yt.find(B=>B.locales.includes(c))?.charset||"latin",U=u&&!isNaN(u)?u:20,v=rt(i,L!=="arabic");function O(B){return B.toJSON()}function F(B){let q=B.getContent(c);return {...B.toJSON(),locale:q.locale,name:q.name,attributes:q.attributes,keywords:q.keywords}}if(s){let B=await $n(),q=B[c]||B[So],M={query:v===""?"*":v,limit:U,variant:f,report:R,offset:x};return await q.search(M)}else {let B=[],q=await ot(e);if(i&&i!==""&&q[c]){let J=rt(i,L!=="arabic"),ie={query:J,limit:U},V=await q[c].search(ie);if(s?B=V.data.results.map(Q=>parseInt(Q.content_id,10)):B=V.reduce((Q,W)=>Q.concat(W.result),[]),B=hr(B),l&&q[l]){let W=q[l].search(J).reduce((ue,se)=>ue.concat(se.result),[]);W=hr(W),B=hr([...B,...W]);}}let M={...d?{visible:d}:{},...S?{image_id:{[Op.eq]:null}}:{},...f.length?{variant_id:f}:{},...m.length?{dimension_id:m}:{},...R.length?{report_id:R}:{}},k={locale:g?{[Op.ne]:null}:c},H=[];i&&i!==""&&B.length&&_!=="report"?H.push([literal(`array_position(array[${B.join(",")}], "content_id")`),"ASC"]):(_==="report"&&H.push([literal(`COALESCE(NULLIF("report"."settings"->>'order', '')::INTEGER, 999999)`),"ASC"],[literal(`COALESCE(NULLIF("variant"."settings"->>'order', '')::INTEGER, 999999)`),"ASC"]),H.push(["zvalue","DESC NULLS LAST"])),_&&_!=="name"&&_!=="report"&&H.unshift([_,C.toUpperCase()]),i&&i!==""&&(M.content_id=B);let A=[{association:"contentByLocale",where:k}];(w||_==="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&&d){let ie=(await r.findAll({attributes:["id"],where:{[Op.or]:[where(cast(json("settings.hide"),"boolean"),!0)]}})).map(V=>V.id);ie.length>0&&(M.report_id={[Op.notIn]:ie},b.report_id=M.report_id);}let T=[],[P,ne]=await Promise.all([t.findAll({limit:U,offset:x,where:M,include:A,order:H,subQuery:!1}),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(_==="name"){let J=C.toUpperCase()==="ASC"?1:-1;P.sort((ie,V)=>{let Q=ie.getContent(So),W=V.getContent(So);return Q&&W?Q.name>W.name?1*J:-1*J:0});}let Z=p==="nested"?O:F;return T=P.map(Z),p!=="nested"&&T.forEach(J=>{let{name:ie,keywords:V,score:Q=.1,zvalue:W}=J;if(ie){let ue=rt(ie),se=Q,le=i.length/ue.length,Xo=ue.split("").reduce((to,en,tn)=>(i.slice(0,tn),i.charAt(tn)===en&&(to+=en),to),"").length;ue===i||V&&V.includes(i)?se=1e6:ue.startsWith(i)?se*=20*le:Xo&&(se*=Xo*le),J.zvalue=se*2+W;}}),{meta:{origin:"flexsearch",...Object.fromEntries(Object.entries(n).map(J=>[J[0],K(J[1])])),variantCount:ae.reduce((J,ie)=>(J[ie.variant_id]=parseInt(ie.members_count,10),J),{})},results:T}}}}function qn(e){let{image:t,image_content:r,search:o,search_content:n}=e;return a;async function a(s){let{content_id:i,contentByLocale:c,image:l,image_id:u}=s,p={where:{content_id:i}},d=await o.findOne(p);if(await o.update(s,{where:{content_id:i}}),c){for(let m=0;m<c.length;m++){let R=c[m];await n.update({name:R.name,keywords:R.keywords},{where:{id:R.id,locale:R.locale}});}p={...p,...{include:[{association:"contentByLocale",separate:!0}]}};}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 m=l.contentByLocale[f];await r.update({meta:m.meta},{where:{id:m.id,locale:m.locale}});}}else !u&&d.image_id&&(await e.search.findAll({where:{image_id:d.image_id}})).length===0&&await t.destroy({where:{id:d.image_id}});return o.findOne(p)}}function zn(e){return {ingestMembers:Dn(e),readMember:Un(e),searchMember:It(e),updateMember:qn(e),readMemberImage:Fn(e)}}var nt={include:[{association:"contentByLocale",separate:!0},{association:"inputs",include:[{association:"contentByLocale",separate:!0}]},{association:"consumers",include:[{association:"contentByLocale",separate:!0}]}]},Qt=e=>({include:[{association:"variants",separate:!0,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:!0,...nt}]},Br=e=>({include:[{association:"dimensions",separate:!0,...Qt(e)},{association:"sections",separate:!0,...Zt}]});var Te=[{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:s,updateBlock:i,deleteBlock:l,createBulkBlock:a,updateBulkBlock:c};async function n(u){let{locales:p,...d}=u;return (await t.create({...d,consumers:[],inputs:[],contentByLocale:p.map(m=>({locale:m}))},{include:nt.include})).toJSON()}async function a(u){let p=u.map(f=>{let{locales:m,...R}=f;return {...R,consumers:[],inputs:[],contentByLocale:m.map(S=>({locale:S}))}});return (await t.bulkCreate(p,{include:nt.include})).map(f=>f.toJSON())}async function s({id:u,include:p}={}){let d=u==null?[]:[].concat(u),f=await t.findAll({where:d.length>0?{id:d}:void 0,include:p?nt.include:void 0});if(d.length===0||f.length===d.length)return f.map(g=>g.toJSON());let m=f.map(g=>g.id),R=d.filter(g=>!m.includes(g));throw new E(404,`Block(id=[${R}]) does not exist.`)}async function i(u){let{id:p,contentByLocale:d,consumers:f,inputs:m,inputAction:R,...g}=u,S=await t.findByPk(p,{include:nt.include,rejectOnEmpty:!0});if(S.set(g),d){let w=Object.values(d);await r.bulkCreate(w,{updateOnDuplicate:["content"]});}return R&&(R.operation==="create"?await o.create(R.input):await o.destroy({where:R.input})),await S.save(),await S.reload(),S.toJSON()}async function c(u){let p=u.map(m=>{let{id:R,contentByLocale:g,consumers:S,inputs:w,inputAction:_,...C}=m;return {id:R,contentByLocale:g,inputAction:_,...C}}),d=await t.findAll({where:{id:{[Op.or]:p.map(m=>m.id)}},include:nt.include}),f=[];for(let m of d){let R=p.filter(g=>g.id===m.id);for(let g=0;g<R.length;g++){let S=R[g],{id:w,contentByLocale:_,inputAction:C,...x}=S;if(C&&(C.operation==="create"?await o.create(C.input):await o.destroy({where:C.input})),_){let $=Object.values(_);await r.bulkCreate($,{updateOnDuplicate:["content"]});}m.set(x),await m.save(),await m.reload(),f.push(m.toJSON());}}return f}async function l(u){let p=await t.findByPk(u,{rejectOnEmpty:!0});return await p.destroy(),{id:u,parentType:"section",parentId:p.section_id}}}function jn(e){let{dimension:t,search:r}=e;return {createDimension:o,readDimension:n,updateDimension:a,deleteDimension:s};async function o(i){return (await t.create({name:i.name,report_id:i.report_id,ordering:i.ordering||0,variants:[]},{include:Qt(r).include})).toJSON()}async function n({id:i,include:c}={}){let l=i==null?[]:[].concat(i),u=await t.findAll({where:l.length>0?{id:l}:void 0,include:c?Qt(r).include:void 0});if(l.length===0||u.length===l.length)return u.map(f=>f.toJSON());let p=u.map(f=>f.id),d=l.filter(f=>!p.includes(f));throw new E(404,`Dimension(id=[${d}]) does not exist.`)}async function a(i){let{id:c,variants:l,...u}=i,p=await t.findByPk(c,{include:Qt(r).include,rejectOnEmpty:!1});if(!p)throw new E(404,`Dimension(id=${c}) does not exist.`);return p.set(u),await p.save(),p.toJSON()}async function s(i){let c=await t.findByPk(i,{rejectOnEmpty:!1});return await c.destroy(),{id:i,parentType:"report",parentId:c.report_id}}}function Kn(e){let{formatter:t}=e;return {createFormatter:r,readFormatter:o,updateFormatter:n,deleteFormatter:a};async function r(s){return (await t.create(s)).toJSON()}async function o({id:s}={}){let i=s==null?[]:[].concat(s),c=await t.findAll({where:i.length>0?{id:i}:void 0});if(i.length===0||c.length===i.length)return c.map(p=>p.toJSON());let l=c.map(p=>p.id),u=i.filter(p=>!l.includes(p));throw new E(404,`Formatter(id=[${u}]) does not exist.`)}async function n(s){let{id:i,...c}=s,l=await t.findByPk(i,{rejectOnEmpty:!0});return await l.update(c),l.toJSON()}async function a(s){return await(await t.findByPk(s,{rejectOnEmpty:!0})).destroy(),{id:s}}}function Wn(e){let{datasource:t}=e;return {createDatasource:r,readDatasource:o,updateDatasource:n,deleteDatasource:a};async function r(s){return (await t.create(s)).toJSON()}async function o({id:s,include:i}={}){try{let c=s==null?[]:[].concat(s),l=i===!0,u=await t.findAll({attributes:l?["id","name","description","content"]:["id","name","description",[literal("content - 'logic' - 'testUrl' - 'access'"),"content"]],where:c.length>0?{id:c}:void 0,order:[literal("(content->>'order')::integer ASC NULLS LAST")]});if(c.length===0||u.length===c.length)return u.map(f=>f.toJSON());let p=u.map(f=>f.id),d=c.filter(f=>!p.includes(f));throw new E(404,`Datasource(id=[${d}]) does not exist.`)}catch(c){throw new E(500,c)}}async function n(s){let{id:i,...c}=s,l=await t.findByPk(i,{rejectOnEmpty:!0});return await l.update(c),l.toJSON()}async function a(s){return await(await t.findByPk(s,{rejectOnEmpty:!0})).destroy(),{id:s}}}var{locales:qc}=j();function Jn(e){let{report:t,search:r}=e;return {createReport:o,readReport:n,updateReport:a,deleteReport:s};async function o(i){return (await t.create({name:i.name,sections:[],dimensions:[]},{include:Br(r).include})).toJSON()}async function n({id:i,include:c,locales:l=qc}={}){let p=(i==null?[]:[].concat(i)).reduce((R,g)=>(R.includes(g)||R.push(g),R),[]),d=await t.findAll({where:p.length>0?{id:p}:void 0,include:c?Br(r).include?.filter(R=>typeof c=="string"?R.association===c:c):void 0});if(p.length===0||d.length===p.length)return d.map(R=>{let g=R.toJSON();return {...g,sections:g.sections.map(S=>({...S,blocks:S.blocks.map(w=>({...w,contentByLocale:Object.keys(w.contentByLocale).reduce((_,C)=>({..._,...[...l,"logic"].includes(C)?{[C]:w.contentByLocale[C]}:{}}),{})}))}))}});let f=d.map(R=>R.id),m=p.filter(R=>!f.includes(R));throw new E(404,`Report(id=${m}) does not exist.`)}async function a(i){let{id:c,dimensions:l,sections:u,...p}=i,d=await t.findByPk(c,{include:Br(r).include,rejectOnEmpty:!1});if(!d)throw new E(404,`Report(id=${c}) does not exist.`);return d.set(p),await d.save(),await d.reload(),d.toJSON()}async function s(i){return await(await t.findByPk(i,{rejectOnEmpty:!1})).destroy(),{id:i}}}function Yn(e){let{section:t}=e;return {createSection:r,readSection:o,updateSection:n,deleteSection:a};async function r(s){return (await t.create({ordering:s.ordering,report_id:s.report_id,blocks:[]},{include:Zt.include})).toJSON()}async function o({id:s,include:i}={}){let c=s==null?[]:[].concat(s),l=await t.findAll({where:c.length>0?{id:c}:void 0,include:i?Zt.include:void 0});if(c.length===0||l.length===c.length)return l.map(d=>d.toJSON());let u=l.map(d=>d.id),p=c.filter(d=>!u.includes(d));throw new E(404,`Section(id=${p}) does not exist.`)}async function n(s){let{id:i,blocks:c,...l}=s,u=await t.findByPk(i,{include:Zt.include,rejectOnEmpty:!1});return u.set(l),await u.save(),await u.reload(),u.toJSON()}async function a(s){let i=await t.findByPk(s,{rejectOnEmpty:!0});return await i.destroy(),{id:s,parentType:"report",parentId:i.report_id}}}function Xn(e,t){let{variant:r,search:o}=e;return {createVariant:n,readVariant:a,updateVariant:s,deleteVariant:i,validateVariantSlug:c};async function n(l){let{dimension_id:u,name:p,slug:d}=l,f=await c({dimension:u,slug:d});return (await r.create({dimension_id:u,name:p,slug:f.valid?f.candidate:f.suggestion})).toJSON()}async function a({id:l}={}){let u=l==null?[]:[].concat(l),p=await r.findAll({where:u.length>0?{id:u}:void 0,attributes:{include:[[fn$1("COUNT",col("members.id")),"members_count"]]},include:[{model:o,attributes:[],as:"members"}],group:["variant.id"]});if(u.length===0||p.length===u.length)return p.map(m=>m.toJSON());let d=p.map(m=>m.id),f=u.filter(m=>!d.includes(m));throw new E(404,`Variant(id=${f}) does not exist.`)}async function s(l){let{id:u,...p}=l,d=await r.findByPk(u,{include:[{association:"dimension"}],rejectOnEmpty:!0});p.settings=Jt(p.settings);let f=p.settings.doIngest;return p.settings.doIngest=!1,await d.update(p),f&&(await t.ingestMembers(d),await ot(e,!0)),await d.reload(),d.toJSON()}async function i(l){let u=await r.findByPk(l,{rejectOnEmpty:!0});return await u.destroy(),ot(e,!0),{id:l,parentType:"dimension",parentId:u.dimension_id}}async function c({dimension:l,slug:u}){let p=await r.findAll({attributes:["slug",[fn$1("COUNT",col("id")),"slugCount"]],where:{dimension_id:{[Op.ne]:l}},group:"slug"}).then(R=>Object.fromEntries(R.map(g=>{let S=g.getDataValue("slugCount");return [g.slug,Number.parseInt(`${S}`,10)]}))),d=u,f=1,m=!0;for(;p[d];)m=!1,d=`${u}-${f}`,f++;return {candidate:u,dimension_id:l,suggestion:d,valid:m}}}function ea(e){let t={...Gn(e),...jn(e),...Kn(e),...Wn(e),...zn(e),...Jn(e),...Yn(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)}}var ta=e=>{throw console.error("/methods/helpers/uploadImage.ts:",e),new Error(e.message)},jc=Number(process.env.NEXT_PUBLIC_IMAGE_SPLASH_WIDTH)||1400,Kc=Number(process.env.NEXT_PUBLIC_IMAGE_THUMB_WIDTH)||400,Hc=async(e,t,r)=>{let o=[{type:"splash",res:jc},{type:"thumb",res:Kc}];for(let n of o){let a=await Gc(r).resize(n.res).toFormat("webp").webp({lossless:!0}).toBuffer().catch(ta);await e.image.update({[n.type]:a},{where:{id:t}}).catch(ta);}},Oe=Hc;var ra="|||";var oa="SECTION_ALLOWED";var na=["4","5","7","8","9","10"],Qc=na.join(),{locales:Zc}=j(),Me;if(process.env.FLICKR_API_KEY)try{Me=new Yc(process.env.FLICKR_API_KEY);}catch(e){throw console.error("Flickr ERROR:",e),new Error(e.message)}async function aa(e,t){try{let r={prompt:t.prompt||"",page:t.page||1};if(!Me)throw console.warn("Flickr is not initialized. Check the credentials"),new Error("Flickr is not initialized. Check the credentials");let o=r.prompt,a=(await Me.photos.search({text:o,license:Qc,sort:"relevance",per_page:24,page:r.page,content_types:"0",orientation:"landscape"}).then(l=>l.body)).photos.photo,s=a.reduce((l,u)=>l.concat(Me.photos.getSizes({photo_id:u.id})),[]),c=(await Promise.all(s).then(l=>l)).reduce((l,u,p)=>{let d=u.body.sizes.size.find(f=>f.label==="Small 320");return d&&l.push({id:a[p].id,source:d.source}),l},[]);return {meta:{prompt:K(r.prompt),page:K(`${r.page}`)},results:c}}catch(r){throw console.error(r),new Error("Error in search flickr provider")}}async function sa(e,t){try{let{content_id:r,image_id:o}=t,n={content_id:K(`${r}`)||"",id:K(`${o}`)||""},s=`https://flic.kr/p/${Jc.int_to_base58(o)}`;if(!Me)throw new Error("Flickr API Key not configured");let i=await Me.photos.getInfo({photo_id:o}).then(l=>l.body),c;if(i)if(na.includes(i.photo.license)){let l=await e.search.findOne({where:{content_id:r}}),u=await e.image.findOne({where:{url:s}});if(l){if(u)await e.search.update({image_id:u.id},{where:{content_id:r}});else {let d=await Me.photos.getSizes({photo_id:o}).then(C=>C.body),f=d.sizes.size.find(C=>parseInt(C.width,10)>=1600);if(f||(f=d.sizes.size.find(C=>parseInt(C.width,10)>=1e3)),f||(f=d.sizes.size.find(C=>parseInt(C.width,10)>=500)),!f||!f.source)throw new Error("Flickr Source Error, try another image.");let m=await Ur.get(f.source,{responseType:"arraybuffer"}).then(C=>C.data),g=(await Me.photos.licenses.getInfo().then(C=>C.body.licenses.license)).find(C=>C.id===parseInt(i.photo.license,10)),S={url:s,author:i.photo.owner.realname||i.photo.owner.username,license:g?`${g.name}: ${g.url}`:""},w=await e.image.create(S);await e.image_content.destroy({where:{id:w.id}});let _=Zc.map(C=>({id:w.id,locale:C,meta:i.photo.title._content}));await e.image_content.bulkCreate(_),await e.search.update({image_id:w.id},{where:{content_id:r}}),await Oe(e,w.id,m);}let p=await e.search.findOne({where:{content_id:r},include:Te});p&&p.image&&(p.image.thumb=!!p.image.thumb);}else throw new Error("Error updating Search")}else throw new Error("Bad License");else throw new Error("Malformed URL");return {meta:{...n},results:c}}catch(r){throw console.error(r),new Error("Error in save flickr provider")}}function D(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:Ne}=j();function ia(e){let{readMember:t,searchMember:r,updateMember:o,readMemberImage:n}=e;return [D("GET","read/members",async a=>{let s=Xc(a.query),i=s[s.mode]||[],c=s.mode==="whole";if(!c&&i.length===0)throw new E(400,`The request is missing the '${s.mode}' parameter.`);if(!c&&i.length>20&&!s.variant)throw new E(400,`You can look for up to 20 '${s.mode}' in a single request.`);return t(s)}),D("GET","search/members",a=>{let s=er(a.query);return r(s)}),D("POST","update/member",a=>{let{body:s}=a;return o(s)},[z.EDITOR]),D("GET","member/image",a=>{let s=G(a.query.size)[0];return n({member:ee(a.query.member),size:s&&s==="splash"?"splash":"thumb"})})]}function Xc(e){let t=G(e.locale)[0]||Ne||"en",r=t==="all"||Xt(e.all),o=G(e.mode)[0],a=(G(e.output)[0]||"full")==="lite"?"lite":"full",s=parseInt(G(e.related)[0],10)||5,i=Xt(e.allowNulls,{default:!1}),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:a,locale:r?Ne:K(t),ids:G(e.ids||e["ids[]"]),allowNulls:i};if(o==="content_ids")return {all:r,mode:o,variant:c,output:a,locale:r?Ne:K(t),content_ids:G(e.content_ids||e["content_ids[]"]).map(ee),allowNulls:!1};if(o==="slugs")return {all:r,mode:o,variant:c,output:a,locale:r?Ne:K(t),slugs:G(e.slugs||e["slugs[]"]).map(l=>{let[u,p]=l.split("/");return {variantSlug:u,memberSlug:p}}),allowNulls:!1};if(o==="related")return {all:r,mode:o,locale:r?Ne:K(t),related:s,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:a,allowNulls:!1};if(o==="whole")return {all:r,mode:o,variant:c,locale:r?Ne:K(t),output:a,allowNulls:i};throw new E(400,`Invalid mode: '${o}'`)}function er(e){let t=G(e.locale)[0]||Ne||"en",r=t==="all",o=G(e.format)[0],n=o?o==="nested":r,a=G(e.variant).map(ee);a.length===0&&(a=G(e["variant[]"]).map(ee));let s=G(e.dimension).map(ee);s.length===0&&(s=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?Ne:t,preferredLocale:G(e.preferredLocale)[0],limit:G(e.limit).map(ee)[0]??5,format:n?"nested":"plain",includes:Xt(e.includes,{default:!0}),visible:Xt(e.visible,{default:!0}),noImage:Xt(e.noImage,{default:!1}),variant:a,dimension:s,report:i,all:r,sort:G(e.sort)[0],direction:G(e.direction)[0],offset:Number(e.offset||0),origin:c}}async function ca(e,t){let r=It(e),o=er({query:t.prompt,limit:"50",visible:"false"}),a=(await r(o)).results.filter(s=>s.image_id).map(s=>({id:s.image_id,source:`/api/cms/member/image?member=${s.content_id}&size=thumb`}));return {meta:{prompt:K(o.query)},results:a}}async function la(e,t){let{search:r}=e,{content_id:o,image_id:n}=t;await r.update({image_id:n},{where:{content_id:o}});let a=await r.findOne({where:{content_id:o},include:Te}).then(s=>s?{...s.toJSON(),image:{...s.image.toJSON(),thumb:!!s.image.thumb}}:null);return {meta:{id:n,content_id:o},results:a}}var{locales:rl}=j(),tr;if(process.env.UNSPLASH_API_KEY)try{tr=createApi({accessKey:process.env.UNSPLASH_API_KEY});}catch(e){throw console.error("Unsplash error:",e),new Error(e.message)}async function ua(e,t){try{let r={prompt:t.prompt||"",page:t.page||1};if(!tr)throw new Error("Unsplash API Key not configured");let o=r.prompt,a=(await tr.search.getPhotos({query:o,perPage:24,page:r.page,orientation:"landscape"}).then(s=>s.response.results)).map(s=>({id:s.id,source:s.urls.thumb}));return {meta:{prompt:K(r.prompt),page:K(`${r.page}`)},results:a}}catch(r){throw console.error(r),new Error("Error in search unsplash provider")}}async function pa(e,t){try{let{content_id:r,image_id:o}=t,n={content_id:K(`${r}`)||"",id:K(`${o}`)||""};if(!tr)throw console.warn("Unsplash is not initialized. Check the credentials"),new Error("Unsplash is not initialized. Check the credentials");let a=await tr.photos.get({photoId:o}).then(i=>i.response),s;if(a){let i=await e.search.findOne({where:{content_id:r}}),c=a.links.html,l=await e.image.findOne({where:{url:c}});if(i){if(l)await e.search.update({image_id:l.id},{where:{content_id:r}});else {let p=await Ur.get(a.urls.full,{responseType:"arraybuffer"}).then(R=>R.data),d={url:c,author:a.user.name||a.user.username,license:"Free Unsplash license: https://unsplash.com/license"},f=await e.image.create(d);await e.image_content.destroy({where:{id:f.id}});let m=rl.map(R=>({id:f.id,locale:R,meta:a.description||a.alt_description}));await e.image_content.bulkCreate(m),await e.search.update({image_id:f.id},{where:{content_id:r}}),await Oe(e,f.id,p);}let u=await e.search.findOne({where:{content_id:r},include:Te});u&&u.image&&(u.image.thumb=!!u.image.thumb);}else throw new Error("Error updating Search")}else throw new Error("Malformed URL");return {meta:{...n},results:s}}catch(r){throw console.error(r),new Error("Error in save unsplash provider")}}var{locales:nl}=j();async function da(e,t){try{let{content_id:r,image_source:o,files:n}=t,a={content_id:K(`${r}`)||""};if(await e.search.findOne({where:{content_id:r}})&&n){let c=await ol.readFileSync(n.file.filepath),l={url:o,author:"",license:""},u=await e.image.create(l);await e.image_content.destroy({where:{id:u.id}});let p=nl.map(d=>({id:u.id,locale:d,meta:""}));await e.image_content.bulkCreate(p),await e.search.update({image_id:u.id},{where:{content_id:r}}),await Oe(e,u.id,c);}let i=await e.search.findOne({where:{content_id:r},include:Te});return i&&i.image&&(i.image.thumb=!!i.image.thumb),{meta:{...a},results:i}}catch(r){throw console.error(r),new Error("Error in save upload provider")}}var{locales:al}=j();var ma=async e=>{let t={"x-api-key":process.env.ADOBE_STOCK_API_KEY||"EMPTY_ADOBE_KEY","X-Product":"BespokeApp/0.1"};return e&&(t.Authorization=`Bearer ${e}`),t};var rr;if(process.env.ADOBE_STOCK_API_KEY)try{rr={search:async(e,t)=>await Ur.get("https://stock.adobe.io/Rest/Media/1/Search/Files",{headers:await ma(!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 Ur.get("https://stock.adobe.io/Rest/Media/1/Files",{headers:await ma(!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 fa(e,t){try{let r={prompt:t.prompt||"",page:t.page||1};if(!rr)throw new Error("Adobe API Key not configured");let n=(await rr.search(r.prompt,r.page)).map(a=>({id:a.id,source:a.thumbnail_url}));return {meta:{prompt:K(r.prompt),page:K(`${r.page}`)},results:n}}catch(r){throw console.error(r),new Error("Error in search Adobe provider")}}async function ga(e,t){try{let{content_id:r,image_id:o}=t,n={content_id:K(`${r}`)||"",id:K(`${o}`)||""};if(!rr)throw console.warn("Adobe is not initialized. Check the credentials"),new Error("Adobe is not initialized. Check the credentials");let a=await rr.get(o),s;if(a){let i=await e.search.findOne({where:{content_id:r}}),c=a.details_url,l=await e.image.findOne({where:{url:c}});if(i){if(l)await e.search.update({image_id:l.id},{where:{content_id:r}});else {let p=await Ur.get(a.thumbnail_1000_url,{responseType:"arraybuffer"}).then(R=>R.data),d={url:c,author:a.creator_name,license:"ADOBE, TO-DO"},f=await e.image.create(d);await e.image_content.destroy({where:{id:f.id}});let m=al.map(R=>({id:f.id,locale:R,meta:a.title||a.description}));await e.image_content.bulkCreate(m),await e.search.update({image_id:f.id},{where:{content_id:r}}),await Oe(e,f.id,p);}let u=await e.search.findOne({where:{content_id:r},include:Te});u&&u.image&&(u.image.thumb=!!u.image.thumb);}else throw new Error("Error updating Search")}else throw new Error("Malformed URL");return {meta:{...n},results:s}}catch(r){throw console.error(r),new Error("Error in save adobe provider")}}var sl={local:la,flickr:sa,unsplash:pa,upload:da,adobe:ga};function Bt(e,t){let r=sl[t];if(!r)throw new E(500,`Wrong provider dbImageSaveFactory.ts: ${t}`);return I(o=>r(e,o))}var il={local:ca,flickr:aa,unsplash:ua,adobe:fa};function or(e,t){let r=il[t];if(!r)throw new E(500,`Wrong provider dbImageSearchFactory.ts: ${t}`);return I(o=>r(e,o))}var fl=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 Or(e){let{report:t,search:r}=e;return o;async function o(n){let a=n?.report_id?Number(n.report_id):void 0,s=!(typeof n?.count<"u"&&(n.count==="false"||n.count===!1)),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"),!1),literal("NOT (settings::jsonb ? 'hide')")]},order:[["ordering","ASC"]],include:[{attributes:["id","name","ordering"],association:"dimensions",separate:!0,order:[["ordering","ASC"]],include:[{attributes:["id","name","slug",[literal("COALESCE(NULLIF(settings ->> 'order', '')::INTEGER, 0)"),"ordering"]],association:"variants",separate:!0,group:["variant.id"],order:[["ordering","ASC"]]}]}]};return a&&(i.where={...i.where,id:a}),s&&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:!0}}]),{data:(await t.findAll(i)).map(l=>({...fl(l.toJSON()),mode:l.dimensions.length===1?Ce.UNILATERAL:Ce.MULTILATERAL}))}}}function ya(e){return async()=>(await ot(e,!0),{error:!1})}var{locales:gl,localeDefault:yl}=j(),hl=(e,t)=>{if(!e)return [];let r=[];return t.forEach(o=>{let n=e.filter(a=>a.metadata.report.id===o.id);if(n.length>0)if(o.mode===Ce.UNILATERAL){let a=o.dimensions[0];a.variants.forEach(s=>{let i=n.filter(c=>c.metadata.dimension.id===a.id&&c.metadata.variant.id===s.id);i.length>0&&(r=r.concat(i.map(c=>({path:`/${s.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},Rl=(e,t)=>{if(!e)return [];let r,o,n;return e.map(a=>(r={...t.find(s=>s.id===a.report_id)},o={...r.dimensions.find(s=>s.id===a.dimension_id)},n={...o.variants.find(s=>s.id===a.variant_id)},delete r.dimensions,delete o.variants,{name:a.name,confidence:a.zvalue,metadata:{id:a.id,slug:a.slug,report:r,dimension:o,variant:n},id:a.content_id,slug:a.slug}))};function ha(e){let t=It(e),r=Or(e);return o;async function o(n){let a=n.format||"results",s=gl.includes(n.locale)?n.locale:yl,i=n.origin||"flexsearch",c=process.env.REPORTS_EXTERNAL_SEARCH&&i==="typesense",l=await t({...n,format:"plain",locale:K(s),visible:!0});if(c)return l;{let u=l.results?l.results:[],d=(await r()).data,f=Rl(u,d);return {meta:{...l.meta,origin:"flexsearch",format:a},results:hl(f,d)}}}}function Ra(e){return async t=>{try{let{variantPaths:r}=t,o=[];if(r)for(let n=0;n<r.length;n++){let a=r[n];(await e.search.findAll({attributes:["slug"],where:{variant_id:a.variantId}})).forEach(i=>{o.push(`/${a.prefix}/${a.variantSlug}/${i.slug}`);});}return {...t,paths:o,revalidated:0,samples:[]}}catch(r){throw new E(r.response?.status||500,r.message)}}}function ba(){return async e=>{try{let{target:t}=e;return {target:t}}catch(t){throw new E(t.response?.status||500,t.message)}}}function be(e,t){let r=[],o=a=>Object.values(t).reduce((i,c)=>("inputs"in c&&c.inputs.includes(a)&&(i.push(c.id),i=i.concat(o(c.id))),i),[]);e.forEach(a=>{r=r.concat(o(a));});let n=[];return r.forEach(a=>{n.includes(a)||n.push(a);}),n}function Sl(e,t){return e.some(r=>t.includes(`role.${r}`))}function Sa(e){let{report:t}=e;return r;async function r(o){let n=await t.findByPk(o.report_id,{include:{association:"sections",separate:!0,where:{id:o.section_id},include:[{association:"blocks",separate:!0,include:[{association:"contentByLocale",separate:!0,where:{locale:{[Op.or]:[o.locale,"logic"]}}},{association:"inputs"},{association:"consumers"}]}]}}).then(s=>s&&s.sections&&Array.isArray(s.sections)?s.sections.reduce((i,c)=>{let l=c.blocks.map(u=>{let p=u.toJSON();return p.inputs=p.inputs.map(d=>d.id),p.consumers=p.consumers.map(d=>d.id),p});return i.concat(l)},[]):[]),a=n.filter(s=>s.settings&&s.settings.access&&Array.isArray(s.settings.access)&&Array.isArray(o.roles)&&(s.settings.access.includes("private")||Sl(o.roles,s.settings.access))).map(s=>s.id);return a=a.concat(be(a,n)),{params:{...o},data:n.filter(s=>a.includes(s.id))}}}var Tl=Object.keys(Ao).filter(e=>e.indexOf("Icon")===0);async function Ea(){return {meta:{provider:"tabler"},results:Tl}}async function Aa(e){let t=Ao[e.name]?Ao[e.name]:()=>"";return renderToString(createElement(t))}var vl={tabler:Ea};function Ta(e){let t=vl[e];if(!t)throw new E(500,`Wrong provider dbListIconsFactory.ts: ${e}`);return I(()=>t())}var _l={tabler:Aa};function va(e){return I(t=>{let r=_l[e];if(!r)throw new E(500,`Wrong provider dbReadIconFactory.ts: ${t.provider}`);return r({name:t.name,provider:e})})}function _a(){return e;async function e(){return {secrets:kt()}}}function at(e,t,r){return tt().then(o=>{Object.assign(r,Lt(o));})}function Lt(e,t){let r={},o=Ge(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(an()),r.searchUser=I(sn()),r.readUser=I(cn()),r.updateUser=I(ln())),{...ea(e),searchReport:I(ha(e)),readMetadata:I(Or(e)),regenerateSearch:I(ya(e)),imageFlickrSearch:or(e,"flickr"),imageLocalSearch:or(e,"local"),imageUnsplashSearch:or(e,"unsplash"),imageAdobeSearch:or(e,"adobe"),imageFlickrSave:Bt(e,"flickr"),imageLocalSave:Bt(e,"local"),imageUnsplashSave:Bt(e,"unsplash"),imageUploadSave:Bt(e,"upload"),imageAdobeSave:Bt(e,"adobe"),urlProxy:xr(e),searchRole:r.searchRole,searchUser:r.searchUser,readUser:r.readUser,updateUser:r.updateUser,updateMyData:I(un()),revalidateReport:I(Ra(e)),revalidateUrl:I(ba()),readPrivateBlocks:I(Sa(e)),listTablerIcons:Ta("tabler"),readTablerIcon:va("tabler"),readEnvSecrets:I(_a())}}async function To(e){try{let t=new wl.IncomingForm,r=await new Promise((o,n)=>{t.parse(e,(a,s,i)=>{if(a){console.error("Error in formidable parse function inside internal parseBody.ts",a),n(a);return}o({fields:s,files:i});});});return {...r.fields,files:r.files}}catch(t){return {error:t}}}function De(e,t){let r=pe(e,"create",t),o=pe(e,"read",t),n=pe(e,"update",t),a=pe(e,"delete",t),s=pe(e,"updateBulk",t),i=pe(e,"createBulk",t);return [D("POST",`create/bulk/${t}`,c=>{let{body:l}=c,{files:u,...p}=l,d=Object.keys(p).map(f=>p[f]);return i(d)},[z.EDITOR]),D("POST",`create/${t}`,c=>{let{body:l}=c;return r(l)},[z.EDITOR]),D("GET",`read/${t}`,c=>{let l=c.query,u=G(l.id).map(ee);return o({id:u,include:Xt(l.include)})}),D("POST",`update/${t}`,c=>{let{body:l}=c;return n(l)},[z.EDITOR]),D("POST",`update/bulk/${t}`,c=>{let{body:l}=c,{files:u,...p}=l,d=Object.keys(p).map(f=>p[f]);return s(d)},[z.EDITOR]),D("DELETE",`delete/${t}`,c=>{let l=ee(c.query.id);return a(l)},[z.EDITOR])]}function wa(e){let{validateVariantSlug:t}=e;return [...De(e,"variant"),D("GET","validate/variant",r=>{let o=r.query,n=ee(o.dimension);return t({dimension:n,slug:wr(o.slug)})},[z.EDITOR])]}function ka(e){return De(e,"datasource").map(r=>({...r,roleRequired:[z.EDITOR]}))}function Ot(e,t){let r=`image${Ae(t)}Save`,o=e[r];return D("POST",`images/save/${t}`,n=>{let a=n.body;if(!a.content_id)throw new E(400,"Missing 'content_id' parameter.");if(!a.image_id)throw new E(400,"Missing 'image_id' parameter.");return o(a)},[z.EDITOR])}function nr(e,t){let r=`image${Ae(t)}Search`,o=e[r];return D("GET",`images/search/${t}`,async n=>{let a=G(n.query.prompt)[0];if(!a)throw new E(400,"Empty 'prompt' param.");return o({prompt:a,page:ee(n.query.page)})},[z.EDITOR])}function Pa(e){let{readMetadata:t}=e;return D("GET","read/metadata",r=>t(r.query))}function xa(e){let{regenerateSearch:t}=e;return D("POST","search/regenerate",()=>t(void 0),[z.EDITOR])}function Ia(e){let{searchReport:t}=e;return D("GET","search/reports",r=>{let o=Pl(r.query);return t(o)})}function Pl(e){return {...er(e),format:G(e.format)[0]}}function Ca(e){let{urlProxy:t}=e;return D("GET","url/proxy",(r,o,n)=>{let{url:a,method:s="GET",wrapper:i="true"}=r.query;if(!a)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(a)?a.join(","):a,method:G(s)[0]==="POST"?"POST":"GET",user_roles:c,wrapper:i!=="false",session:n})})}function Ba(e){let{readMetadata:t,revalidateReport:r}=e;return D("GET","revalidate/report",async(o,n)=>{let{reportId:a,profilePrefix:s}=o.query;if(!a||!s)throw new E(400,"Missing URL parameter in revalidate factory: reportId or profilePrefix");try{let i=parseInt(`${a}`,10),c=`${s}`.split("/").filter(m=>m!=="").join("/"),l=[],u=await t({}).then(m=>m.ok?m.data.data.find(R=>R.id===i):[]);u&&u.mode===Ce.UNILATERAL&&u.dimensions.forEach(m=>{m.variants.forEach(R=>{l.push({prefix:c,variantId:R.id,variantSlug:R.slug});});});let p=await r({profilePrefix:c,reportId:i,variantPaths:l}),d=[],f=0;return p.ok&&(f=p.data.paths.length,d=p.data.paths.slice(0,5),Promise.all(p.data.paths.map(m=>{let R;try{R=n.revalidate(m,{unstable_onlyGenerated:!0});}catch(g){console.error("error",m,g);}return R}))),{ok:!0,status:200,data:{reportId:a,revalidated:f,samples:d}}}catch(i){throw console.error(i),new E(500,"Error revalidating")}},[z.EDITOR])}function La(){return D("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 st(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:Il}=j(),Cl=st();function Oa(e){let{readPrivateBlocks:t}=e;return D("POST","read/blocks/private",(r,o,n)=>{let{userToken:a}=r.body,s=null;try{let l=ic.verify(a,Cl);s=typeof l=="object"&&l!==null&&"roles"in l?l.roles:[];}catch(l){console.error("Failed to verify user token:",l);}if(!s&&(!n||!n.user))throw new E(401,"Unauthorized. Must be logged in or provide a valid token.");let i=a&&s?s:n&&n.user?n.user.bespoke_roles:[],c={report_id:parseInt(r.body.report_id,10),locale:r.body.locale||Il,roles:i,section_id:r.body.section_id||[]};return t(c)})}function Ma(e){let{readEnvSecrets:t}=e;return D("GET","read/secrets",()=>t({}),[z.EDITOR])}function Na(e){let{searchRole:t}=e;return D("GET","auth/search/roles",(r,o)=>t(""),[z.EDITOR,z.ADMIN])}function Da(e){let{searchUser:t}=e;return D("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 D("GET","auth/read/user",r=>t(r.query.user_id),[z.ADMIN])}function Fa(e){let{updateUser:t}=e;return D("POST","auth/update/user",async r=>{let o=r.body;return await t(o)},[z.ADMIN])}function Va(e){let{updateUser:t,readUser:r}=e;return D("POST","auth/update/me",async(o,n,a)=>{let{report_id:s,user_metadata:i}=o.body,c={user_id:a.user.id,user_metadata:{}};try{let{user:l}=a;return a&&l&&s&&(l.bespoke_app_metadata&&l.bespoke_app_metadata.reports&&Array.isArray(l.bespoke_app_metadata.reports)?c.app_metadata={...l.bespoke_app_metadata}:c.app_metadata={reports:[]},c.app_metadata.reports.push({reportId:s})),i&&(c.user_metadata={...l.bespoke_app_metadata,...i}),await t(c),{ok:!0,status:200,wrapper:!0,data:{ok:!0,message:"User & session updated"}}}catch(l){return {ok:!1,status:500,error:l.message}}},[])}async function Bl(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 $a(){return D("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:!0,status:200,data:await Bl()}}})}function qa(e,t){let r=`list${Ae(t)}Icons`,o=e[r];return D("GET",`list/icons/${t}`,async()=>o({}),[z.EDITOR])}function za(e,t){let r=`read${Ae(t)}Icon`,o=e[r];return D("GET",`read/icons/${t}/icon.svg`,async n=>o({provider:t,name:n.query.name}))}function Ga(){return D("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 s=await(await fetch(`${process.env.NEXT_PUBLIC_REPORTS_BASE_URL}/${n}${o}${r}`)).text(),l=new Ll().parseFromString(s,"text/html").getElementById("__NEXT_DATA__")?.textContent,u=JSON.parse(l).props;return {ok:!0,status:200,data:{variables:u.pageProps.initialState.variables,status:u.pageProps.initialState.status}}}catch(a){throw console.error(a),new E(500,"Couldn't find page cache")}})}var Ml=st();function Nl(e){let t={email:e.user.email,name:e.user.name,roles:e.user.bespoke_roles||[]};return ic.sign(t,Ml,{expiresIn:"1min"})}function ja(){return D("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:Nl(r)}}}catch(o){throw console.error("Error generating token:",o),new E(500,"Internal Server Error")}})}var Ul=st(),Fl=e=>!!ic.verify(e,Ul);function Ka(){return D("POST","users/validate-token",async(e,t)=>{let{token:r}=e.body;try{return Fl(r)?{ok:!0,status:200,wrapper:!1,data:{success:!0}}:{ok:!1,status:401,error:"Invalid token"}}catch{return {ok:!1,status:401,error:"Invalid token"}}})}var ql=Ie();function vo(e,t){return `${e.toUpperCase()} ${t.toLowerCase()}`}function zl(e,t){let r=Lt(e,t);return Object.fromEntries([...De(r,"block"),...De(r,"dimension"),...De(r,"formatter"),...De(r,"report"),...De(r,"section"),...ka(r),...wa(r),...ia(r),Ia(r),Pa(r),xa(r),Ot(r,"flickr"),Ot(r,"local"),Ot(r,"unsplash"),Ot(r,"upload"),Ot(r,"adobe"),nr(r,"flickr"),nr(r,"local"),nr(r,"unsplash"),nr(r,"adobe"),Ca(r),Na(r),Da(r),Ua(r),Fa(r),Va(r),Ba(r),La(),Oa(r),$a(),qa(r,"tabler"),za(r,"tabler"),Ga(),Ma(r),ja(),Ka()].map(({handler:o,method:n,path:a,roleRequired:s})=>[vo(n,a),{handler:o,roleRequired:s}]))}function Gl(e){let t=tt().then(r=>zl(r,e));return async function(o,n){await Vl(o,n,{methods:["GET","HEAD","PUT","PATCH","POST","DELETE"],origin:"*"});let{query:a,method:s}=o,{path:i,...c}=a;if(i&&s){let l=await t.then(u=>{let p=[].concat(i).join("/"),d=vo(s,p);return u[d]});if(l){let u=await ye(o,n,e);if(l.roleRequired){if(!u)return n.status(401).json({error:"Unauthorized. Must be logged in."});let p=u&&u.user&&u.user.bespoke_roles&&Array.isArray(u.user.bespoke_roles)?u.user.bespoke_roles:[];if(Array.isArray(l.roleRequired)&&l.roleRequired.length>0&&!yr(p,l.roleRequired))return n.status(402).json({error:"Forbidden. Not enough roles."})}if(l.handler)return ["POST","DELETE"].includes(s)&&(o.body=await To(o)),Promise.resolve(o).then(p=>l.handler(p,n,u||void 0)).then(async p=>{if(p&&"error"in p)throw new E(p.status,p.error);if(p.ok)if(p.data instanceof Buffer){let d=await $l(p.data),f=Buffer.byteLength(p.data);n.writeHead(p.status,{"Content-Type":d?d.mime:"image/jpeg","Content-Length":f.toString()}).send(p.data);}else o.url&&o.url.indexOf("/icon.svg?name=")>0?(n.setHeader("Content-Type","image/svg+xml"),n.status(p.status).send(p.data)):n.status(p.status).json(p.wrapper?{data:p.data}:p.data);}).catch(p=>{ql&&console.error("Backend Error",p),n.status(p.code).json({error:p.message});})}}else i||await t.then(console.info);return n.status(404).json({error:"No matching route",path:i,query:c})}}var jl=e=>{let t=e;return async function(r,o){let n=await t({test:"pala"});return o.json(n)}},Kl=jl;var yt={};js(yt,{addBlockToState:()=>fr,addRunConsumersRunning:()=>Bs,cloneEntity:()=>_s,createEntity:()=>As,deleteEntity:()=>vs,deleteQueryParam:()=>cp,readEntity:()=>oe,readEnvSecrets:()=>bp,readMember:()=>qe,readMetadata:()=>mr,readPrivateBlocks:()=>yp,readUser:()=>mp,recalculateVariables:()=>Ms,removeBlocksFromState:()=>ze,removeDataSourceLogic:()=>gr,removeRunConsumersRunning:()=>Ls,reportSearch:()=>ap,resetSectionState:()=>Cs,revalidateReport:()=>Rp,revalidateUrl:()=>hp,searchMember:()=>ip,searchRegenerate:()=>sp,searchRole:()=>pp,searchUser:()=>dp,setCurrentLocale:()=>rp,setPreferredLocale:()=>op,setPreviews:()=>tp,setQueryParam:()=>lp,setSectionState:()=>Is,setStatus:()=>xs,updateEntity:()=>Ts,updateMyData:()=>gp,updateUser:()=>fp,urlProxy:()=>up,variantValidateSlug:()=>np});function Se(e,t){return e.request(t).then(r=>{let{status:o,data:n}=r;return "error"in n?{ok:!1,status:o,error:n.error}:{ok:!0,status:o,wrapper:n.wrapper,data:n.data}},r=>{if("isAxiosError"in r){let{status:o,data:n}=r.response||{status:500};return {ok:!1,status:o,error:n?.error??r.message}}return {ok:!1,status:500,error:r.message}})}function te(e,t,r){let o=typeof t=="string"?{url:t}:t;return n=>Se(e,{...o,method:"GET",params:r?r(n):n})}function re(e,t,r){let o=typeof t=="string"?{url:t}:t;return n=>Se(e,{...o,method:"POST",data:r?r(n):n})}function Ue(e,t,r){let o=typeof t=="string"?{url:t}:t;return n=>Se(e,{...o,method:"DELETE",params:r?r(n):n})}function Mt(e,t){return r=>Se(e,{method:"POST",url:`images/save/${t}`,params:{prompt:r.prompt,provider:t}})}function ar(e,t){return r=>Se(e,{method:"GET",url:`images/search/${t}`,params:{prompt:r.prompt,page:r.page,provider:t}})}function Ha(e,t){return ()=>Se(e,{method:"GET",url:`list/icons/${t}`,params:{provider:t}})}function Wa(e,t){return r=>Se(e,{method:"GET",url:`read/icons/${t}/icon.svg`,params:{name:r.name}})}var it=e=>({id:e}),Wl=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 sr(e){let t=Ur.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:Ue(t,"delete/block",it),deleteDimension:Ue(t,"delete/dimension",it),deleteFormatter:Ue(t,"delete/formatter",it),deleteReport:Ue(t,"delete/report",it),deleteSection:Ue(t,"delete/section",it),deleteVariant:Ue(t,"delete/variant",it),deleteDatasource:Ue(t,"delete/datasource",it),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",Wl),readMemberImage:te(t,{url:"member/image",responseType:"blob"}),searchMember:te(t,"search/members"),updateMember:te(t,"update/members"),imageLocalSearch:ar(t,"local"),imageLocalSave:Mt(t,"local"),imageFlickrSearch:ar(t,"flickr"),imageFlickrSave:Mt(t,"flickr"),imageUnsplashSearch:ar(t,"unsplash"),imageUnsplashSave:Mt(t,"unsplash"),imageUploadSave:Mt(t,"upload"),imageAdobeSearch:ar(t,"adobe"),imageAdobeSave:Mt(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:Ha(t,"tabler"),readTablerIcon:Wa(t,"tabler"),readEnvSecrets:te(t,"read/secrets")}}var Ql=Xt(process.env.REPORTS_LOGGING),ct=Zl;function Zl(e,t,r,o,n=void 0,a){let s={},i=[],{locale:c}=he(a);try{if(t){let l=new Proxy(console,{get(p,d){return Xl(d,"log","debug","info","warn","error")?(...f)=>{i.push(`${d} ${Date.now()} - ${f.map(m=>format(m)).join(" ")}`),Ql&&p[d](...f);}:p[d]}}),u;return n?u=new Function(e,"console","libs","formatters","locale","variables",r)(t,l,Je,o,c,n):u=new Function(e,"console","libs","formatters","locale",r)(t,l,Je,o,c),typeof u=="object"&&Object.keys(u).length>0&&Object.assign(s,u),{vars:s,error:null,log:i,output:u}}return {vars:s,error:"Invalid API Link",log:i}}catch(l){return {vars:s,error:l.message,log:i}}}function Xl(e,...t){return t.includes(e)}var _o=(e,t,r)=>{let{variables:o}=r,n=s=>s.allowed==="never"?!1:!s.allowed||s.allowed==="always"||o[s.allowed],a={...e};return Object.keys(a).forEach(s=>{typeof a[s]=="string"?a[s]=Re(a[s],t,r):Array.isArray(a[s])?a[s]=a[s].filter(n).map(i=>typeof i=="object"?_o(i,t,r):typeof i=="string"?Re(i,t,r):i):typeof a[s]=="object"&&a[s]!==null&&!(a[s]instanceof Date)&&(a[s]=_o(a[s],t,r));}),a},Mr=_o;var Ja=e=>Array.isArray(e)?e.map(t=>typeof t=="string"?{allowed:"always",label:t,id:t}:{allowed:"always",label:t.id,...t}):[];var eu=(e,t,r)=>{if(!r)return !1;if(e===Qe.SINGLE)return r.find(n=>n.id===t);let o=Array.isArray(t)?t:t.split(",");return Array.isArray(o)&&o.every(n=>r.map(a=>a.id).includes(n))},wo=eu;function ko(e,t,r,o,n=!1){let{variables:a}=he(o),s=Mr({logic:t},r,o).logic,i=ct("variables",a,s,r,void 0,o),{vars:c,log:l,error:u}=i,p=c.type||Qe.SINGLE,d=c.component||"Selector",f=c.hideLabel||"false",m=c.resetSectionVars||"false",R=c.name||"Unlabeled Selector",g=Ja(c.options||[]),S=x=>p===Qe.MULTI&&!Array.isArray(x)?[x]:x,w=c.defaultValue,_;if(w&&(w=S(w),wo(p,w,g)&&(_=w)),!_){let x=g&&g[0]&&g[0].id||g[0]||"";_=S(x);}if(n&&typeof window<"u"){let x=`selector${e}id`,$=new URLSearchParams(window.location.search),U=Object.fromEntries($)[x];U&&!wo(p,U,g)&&U!==void 0&&($.delete(x),window.history.replaceState(null,null,`?${$.toString()}`));}return {config:{name:R,type:p,options:g,defaultValue:_,component:d,hideLabel:f,resetSectionVars:m},log:l,error:u}}function Po(e,t,r){if(!e)return !1;let o=Array.isArray(r)?r:r.split(",");return Array.isArray(o)&&o.every(n=>e.map(a=>`${a[`${t} ID`]}`).includes(n))}function xo(e,t,r,o,n=!1){let{variables:a}=he(o),s=Mr({logic:t},r,o).logic,i=ct("variables",a,s,r,void 0,o),{vars:c,log:l,error:u}=i;if(n&&typeof window<"u"){let d=`multihierarchySelector${e}-value`,f=`multihierarchySelector${e}-type`,m=new URLSearchParams(window.location.search),R=Object.fromEntries(m),g=R[d],S=R[f];g&&g!==void 0&&S&&S!==void 0&&!Po(c.data,S,g)&&(m.delete(d),m.delete(f),window.history.replaceState(null,null,`?${m.toString()}`));}return {config:c,log:l,error:u}}var tu=(e,t,r)=>{let o=`selector${e}id`,n=new URLSearchParams(typeof location<"u"&&location?.search?location.search:"").get(o),a=new URLSearchParams(t).get(o),s=n||a;if(r.type===Qe.MULTI){let l=s?s.split(","):r.defaultValue,u=r.options.filter(p=>l.includes(p.id));return {[`selector${e}id`]:l,[`selector${e}label`]:(u||[]).map(p=>p.label)}}let i=s&&r.options.find(l=>l.id===s)?s:r.defaultValue,c=r.options.find(l=>l.id===i);return {[`selector${e}id`]:i,[`selector${e}label`]:c&&c.label||void 0}},Ya=tu;var ru=(e,t,r)=>{let o=`multihierarchySelector${e}-value`,n=`multihierarchySelector${e}-type`,a=new URLSearchParams(typeof location<"u"&&location?.search?location.search:"").get(o),s=new URLSearchParams(typeof location<"u"&&location?.search?location.search:"").get(n),i=new URLSearchParams(t).get(o),c=new URLSearchParams(t).get(n),l=a||i,u=s||c,p=l?l.split(","):r.defaultValue||[],d=u||r.defaultValueType||"",f=r.data?.filter(m=>p.includes(`${m[`${d} ID`]}`))||[];return {[`multihierarchySelector${e}id`]:p,[`multihierarchySelector${e}label`]:[...new Set((f||[]).map(m=>m[d]))],[`multihierarchySelector${e}type`]:d}},Qa=ru;var{localeDefault:Za,locales:ou}=j(),nu=Object.values(co),au=(e,t=Za)=>e&&nu.includes(e.type)?{locale:lo,locales:[lo]}:{locale:t,locales:ou},Xa=(e,t=Za)=>{if(!e)return {};let{locale:r}=au(e,t);return e.contentByLocale?.[r]?.content};function su(e,t){let r=Object.values(t),o=r.filter(n=>n.shared&&n.section_id!==e).map(n=>n.id);return Object.fromEntries(r.filter(n=>n.section_id===e&&(n.inputs.length===0||n.inputs.some(a=>o.includes(a)))).map(n=>[n.id,n]))}var es=su;function Io(e){return e.type===N.SECTION_FLAG&&e.inputs.length===0&&e.consumers.length===0}var Fe=Xt(process.env.NEXT_PUBLIC_REPORTS_DEBUG),pu=process.env.REPORTS_ORIGIN||"",du=process.env.NEXT_PUBLIC_REPORTS_AXIOS_RETRIES,ns=5;try{ns=parseInt(`${du||5}`,10);}catch(e){console.error("Error setting axios retries NEXT_PUBLIC_REPORTS_AXIOS_RETRIES defaults to 5",e);}ts(Ur,{retries:ns,retryDelay:ts.exponentialDelay,onRetry:(e,t,r)=>{console.error("Generator request failed. Retrying... Count: ",e),console.error("URL: ",r.url),console.error(t.message);}});Ur.interceptors.request.use(e=>({...e,requestStart:Date.now()}));Ur.interceptors.response.use(e=>({...e,requestDuration:new Date().getTime()-e.config.requestStart}),e=>Promise.reject(e));var mu=(e,t,r)=>{let o=Re(e,t,r);return o.startsWith("http")||(o=`${pu}${o.startsWith("/")?"":"/"}${o}`),o},{urlProxy:fu}=sr("/api/cms");function Dr(e){return e.ok!==void 0}function Nr(e){this.message=e,this.name="ApiFetchException";}var rs=process.env.NEXT_PUBLIC_REPORTS_API_FETCH_TIMEOUT||0;async function gu(e,t,r="en",o,n){let a=Date.now(),s=e,i,c=de(),l=kt(),u={envs:{...c,...l}},p=new URL(e),d=new URLSearchParams(p.searchParams.toString());d.has("bespoke_slugs")&&(p.searchParams.delete("bespoke_slugs"),s=p.toString());let f={datasource:void 0};o.find(w=>{if(!w.content?.pattern)return !1;try{let _=new RegExp(w.content.pattern,"gm");return _.test(s)?(f.datasource=w,!0):_.test(s)}catch{return !1}});let m=n?n.settings:{},R=!!(m&&m.useProxy&&m.useProxy==="true"),g=f.datasource&&typeof f.datasource.content.useProxy=="boolean"?f.datasource.content.useProxy:!1,S=`${process.env.NEXT_PUBLIC_REPORTS_BASE_URL}/api/cms/url/proxy?url=${encodeURIComponent(s)}`;if(typeof window=="object"&&(R||g)){let w=await fu({url:s,timeout:rs});if(w.ok===!0)i=w.data;else throw new Nr(w?.error)}else try{let _={url:s,timeout:rs};if(f.datasource){let x=u;if(typeof window<"u")try{let U=await getSession();if(U){let v={user:U.user,status:"authenticated",isLoading:!1,update:async()=>U};x={...u,session:v};}}catch(U){console.warn("Could not retrieve user session:",U);}let L=await Pr({vars:["url","libs","session"],logic:f.datasource.content.logic},x)(s);if(L.axiosConfig)_=L.axiosConfig;else throw new Nr(`AxiosConfig is missing in Data Source ${f.datasource.name} (ID: ${f.datasource.id}).`)}let C=await Ur(_);if(C.status===200)C.headers["content-type"]==="text/csv"?i=csvParse(C.data):i=C.data;else throw new Nr("No response for: "+s)}catch(w){throw new Nr(w.message)}if(d.has("bespoke_slugs")){let w=d.get("bespoke_slugs");if(w){let _=w.split(",");if(_.length===3){let[C,x,$]=_,L=zt(i,$);if(L&&Array.isArray(L)){let U=Array.from(new Set(L.map(v=>`${v[x]}`).filter(v=>!["","undefined"].includes(v))));if(U.length>0){let v=U.join("").length>2e3,O=await t({mode:v?"whole":"ids",ids:v?void 0:U,all:!1,locale:r,variant:[parseInt(C,10)],output:"lite",limit:U.length+1,allowNulls:!0}).then(F=>{let B=[];return Dr(F)?F.ok&&(B=F.data.results):B=F.results,B&&Array.isArray(B)?B:[]}).catch(F=>(console.error(`Error hydrating slugs for Variant: ${C}, Key: ${x}, Accessor: ${$}`),console.error(` Url ${e}`),n&&console.error(` From Section ${n.section_id} and Block ${n.id}`),console.error(F),[]));if(O){let F=Object.fromEntries(O.map(B=>[B.id,`/${B.variant_slug}/${B.slug}`]));L.map(B=>(B.bespoke_slug=F[B[x]]?F[B[x]]:null,B));}}}}}}return {data:i,requestDuration:Date.now()-a,finalUrl:g||R?S:s,apiDataSource:f.datasource?f.datasource:!1}}function yu(e){this.name="BlockException",this.message=e;}async function os(e,t,r,o,n){let{locale:a,variables:s,query:i}=he(r),c=Ru(e,r,s,t),l=null,u=e.contentByLocale?.logic?.content?.api,p=null,d=null,f=null,m,R;if(!c)return {outputVariables:{},renderVariables:{},status:{allowed:!1,hiddenByCascade:e.id}};if(e.type===N.FALLBACK)return {outputVariables:{},renderVariables:{},status:{allowed:c,hiddenByCascade:e.id}};if(u){f=mu(u,t,r);let L=f.split(ra).filter(O=>O!==""),U=[];for(let O=0;O<L.length;O++){let F=L[O];new RegExp("^(?:[a-z+]+:)?//","i").test(f)||(F=`${process.env.NEXT_PUBLIC_REPORTS_BASE_URL}/${F}`.replace(/([^:]\/)\/+/g,"$1")),U.push(gu(F,o,a,n,e).catch(q=>{throw new yu(` Excecution of ${e.type}-${e.id} in section ${e.section_id} in report ${s.report_name} (${s.report_id}) failed.
71
- Error fetching ${F}.
25
+ `)}return global.typesense};async function qi(){try{if(At){let e=await kr.get(new URL(At).origin);if(e?.data["typesense-health"]===!0)return Ie&&console.info(`${At} 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 zi(){if(Ie&&console.info(`\u{1F3F3}\uFE0F INITIALIZING TYPESENSE SEARCH AGAINST ${At}`),!await qi())throw new Error("TYPESENSE_URL service is not healthy.");let t=Vi.map(r=>(Ie&&console.info(`\u{1F3F3}\uFE0F INITIALIZING SEARCH ${r} LOCALE`),[r,{search:async(n={query:"*",limit:12,offset:0})=>{let a={locale:r,query:n.query,limit:n.limit,offset:n.offset};return n.report&&Array.isArray(n.report)&&n.report.length>0&&(a["report[]"]=n.report.join(",")),n.variant&&Array.isArray(n.variant)&&n.variant.length>0&&(a["variant[]"]=n.variant.join(",")),Ie&&console.info("Typesense URL:",At,a),kr.get(At,{params:a}).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 pn=$i;var{localeDefault:oo}=K();function Tt(e){let{search:t,report:r}=e;return o;async function o(n){let a=n.origin||"flexsearch",s=process.env.REPORTS_EXTERNAL_SEARCH&&a==="typesense",{query:i,locale:c,preferredLocale:l,limit:p,format:u,visible:m,variant:f,dimension:d,report:h,all:y,noImage:S,includes:x,sort:P,direction:F="ASC",offset:w=0}=n,B=Vt.find(C=>C.locales.includes(c))?.charset||"latin",N=p&&!isNaN(p)?p:20,_=Xe(i,B!=="arabic");function L(C){return C.toJSON()}function D(C){let q=C.getContent(c);return {...C.toJSON(),locale:q.locale,name:q.name,attributes:q.attributes,keywords:q.keywords}}if(s){let C=await pn(),q=C[c]||C[oo],M={query:_===""?"*":_,limit:N,variant:f,report:h,offset:w};return await q.search(M)}else {let C=[],q=await et(e);if(i&&i!==""&&q[c]){let W=Xe(i,B!=="arabic"),ie={query:W,limit:N},V=await q[c].search(ie);if(s?C=V.data.results.map(Q=>parseInt(Q.content_id,10)):C=V.reduce((Q,j)=>Q.concat(j.result),[]),C=sr(C),l&&q[l]){let j=q[l].search(W).reduce((le,ae)=>le.concat(ae.result),[]);j=sr(j),C=sr([...C,...j]);}}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:y?{[Op.ne]:null}:c},Y=i&&i!==""&&C.length?[[literal(`array_position(array[${C.join(",")}], "content_id")`),"ASC"]]:[["zvalue","DESC NULLS LAST"]];P&&P!=="name"&&Y.unshift([P,F.toUpperCase()]),i&&i!==""&&(M.content_id=C);let E=[{association:"contentByLocale",where:k}];x&&E.push({association:"report",attributes:["id","name"]},{association:"dimension",attributes:["id","name"]},{association:"variant",attributes:["id","slug","name"]});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 A=[],[I,ne]=await Promise.all([t.findAll({limit:N,offset:w,where:M,include:E,order:Y}),t.findAll({attributes:["variant_id",[fn$1("COUNT",col("variant_id")),"members_count"]],where:b,group:["variant_id"]})]),se=ne.map(W=>W.toJSON());if(P==="name"){let W=F.toUpperCase()==="ASC"?1:-1;I.sort((ie,V)=>{let Q=ie.getContent(oo),j=V.getContent(oo);return Q&&j?Q.name>j.name?1*W:-1*W:0});}let Z=u==="nested"?L:D;return A=I.map(Z),u!=="nested"&&A.forEach(W=>{let{name:ie,keywords:V,score:Q=.1,zvalue:j}=W;if(ie){let le=Xe(ie),ae=Q,ce=i.length/le.length,To=le.split("").reduce((Vr,_o,wo)=>(i.slice(0,wo),i.charAt(wo)===_o&&(Vr+=_o),Vr),"").length;le===i||V&&V.includes(i)?ae=1e6:le.startsWith(i)?ae*=20*ce:To&&(ae*=To*ce),W.zvalue=ae*2+j;}}),{meta:{origin:"flexsearch",...Object.fromEntries(Object.entries(n).map(W=>[W[0],H(W[1])])),variantCount:se.reduce((W,ie)=>(W[ie.variant_id]=parseInt(ie.members_count,10),W),{})},results:A}}}}function dn(e){let{image:t,image_content:r,search:o,search_content:n}=e;return a;async function a(s){let{content_id:i,contentByLocale:c,image:l,image_id:p}=s,u={where:{content_id:i}},m=await o.findOne(u);if(await o.update(s,{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 mn(e){return {ingestMembers:an(e),readMember:cn(e),searchMember:Tt(e),updateMember:dn(e),readMemberImage:ln(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"]]}),qt={include:[{association:"blocks",separate:true,...tt}]},Sr=e=>({include:[{association:"dimensions",separate:true,...$t(e)},{association:"sections",separate:true,...qt}]});var Se=[{association:"image",attributes:{exclude:["splash"]},include:[{association:"contentByLocale"}]},{association:"contentByLocale"}];function fn(e){let{block:t,block_content:r,block_input:o}=e;return {createBlock:n,readBlock:s,updateBlock:i,deleteBlock:l,createBulkBlock:a,updateBulkBlock:c};async function n(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 a(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 s({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(y=>y.toJSON());let d=f.map(y=>y.id),h=m.filter(y=>!d.includes(y));throw new T(404,`Block(id=[${h}]) does not exist.`)}async function i(p){let{id:u,contentByLocale:m,consumers:f,inputs:d,inputAction:h,...y}=p,S=await t.findByPk(u,{include:tt.include,rejectOnEmpty:true});if(S.set(y),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:y,consumers:S,inputs:x,inputAction:P,...F}=d;return {id:h,contentByLocale:y,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(y=>y.id===d.id);for(let y=0;y<h.length;y++){let S=h[y],{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 $=Object.values(P);await r.bulkCreate($,{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 yn(e){let{dimension:t,search:r}=e;return {createDimension:o,readDimension:n,updateDimension:a,deleteDimension:s};async function o(i){return (await t.create({name:i.name,report_id:i.report_id,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 T(404,`Dimension(id=[${m}]) does not exist.`)}async function a(i){let{id:c,variants:l,...p}=i,u=await t.findByPk(c,{include:$t(r).include,rejectOnEmpty:false});if(!u)throw new T(404,`Dimension(id=${c}) does not exist.`);return u.set(p),await u.save(),u.toJSON()}async function s(i){let c=await t.findByPk(i,{rejectOnEmpty:false});return await c.destroy(),{id:i,parentType:"report",parentId:c.report_id}}}function gn(e){let{formatter:t}=e;return {createFormatter:r,readFormatter:o,updateFormatter:n,deleteFormatter:a};async function r(s){return (await t.create(s)).toJSON()}async function o({id:s}={}){let i=s==null?[]:[].concat(s),c=await t.findAll({where:i.length>0?{id:i}:void 0});if(i.length===0||c.length===i.length)return c.map(u=>u.toJSON());let l=c.map(u=>u.id),p=i.filter(u=>!l.includes(u));throw new T(404,`Formatter(id=[${p}]) does not exist.`)}async function n(s){let{id:i,...c}=s,l=await t.findByPk(i,{rejectOnEmpty:true});return await l.update(c),l.toJSON()}async function a(s){return await(await t.findByPk(s,{rejectOnEmpty:true})).destroy(),{id:s}}}function hn(e){let{datasource:t}=e;return {createDatasource:r,readDatasource:o,updateDatasource:n,deleteDatasource:a};async function r(s){return (await t.create(s)).toJSON()}async function o({id:s,include:i}={}){try{let c=s==null?[]:[].concat(s),l=i===!0,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 T(404,`Datasource(id=[${m}]) does not exist.`)}catch(c){throw new T(500,c)}}async function n(s){let{id:i,...c}=s,l=await t.findByPk(i,{rejectOnEmpty:true});return await l.update(c),l.toJSON()}async function a(s){return await(await t.findByPk(s,{rejectOnEmpty:true})).destroy(),{id:s}}}var{locales:Xi}=K();function bn(e){let{report:t,search:r}=e;return {createReport:o,readReport:n,updateReport:a,deleteReport:s};async function o(i){return (await t.create({name:i.name,sections:[],dimensions:[]},{include:Sr(r).include})).toJSON()}async function n({id:i,include:c,locales:l=Xi}={}){let u=(i==null?[]:[].concat(i)).reduce((h,y)=>(h.includes(y)||h.push(y),h),[]),m=await t.findAll({where:u.length>0?{id:u}:void 0,include:c?Sr(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 y=h.toJSON();return {...y,sections:y.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 T(404,`Report(id=${d}) does not exist.`)}async function a(i){let{id:c,dimensions:l,sections:p,...u}=i,m=await t.findByPk(c,{include:Sr(r).include,rejectOnEmpty:false});if(!m)throw new T(404,`Report(id=${c}) does not exist.`);return m.set(u),await m.save(),await m.reload(),m.toJSON()}async function s(i){return await(await t.findByPk(i,{rejectOnEmpty:false})).destroy(),{id:i}}}function Sn(e){let{section:t}=e;return {createSection:r,readSection:o,updateSection:n,deleteSection:a};async function r(s){return (await t.create({ordering:s.ordering,report_id:s.report_id,blocks:[]},{include:qt.include})).toJSON()}async function o({id:s,include:i}={}){let c=s==null?[]:[].concat(s),l=await t.findAll({where:c.length>0?{id:c}:void 0,include:i?qt.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 T(404,`Section(id=${u}) does not exist.`)}async function n(s){let{id:i,blocks:c,...l}=s,p=await t.findByPk(i,{include:qt.include,rejectOnEmpty:false});return p.set(l),await p.save(),await p.reload(),p.toJSON()}async function a(s){let i=await t.findByPk(s,{rejectOnEmpty:true});return await i.destroy(),{id:s,parentType:"report",parentId:i.report_id}}}function Tn(e,t){let{variant:r,search:o}=e;return {createVariant:n,readVariant:a,updateVariant:s,deleteVariant:i,validateVariantSlug:c};async function n(l){let{dimension_id: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 a({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 T(404,`Variant(id=${f}) does not exist.`)}async function s(l){let{id:p,...u}=l,m=await r.findByPk(p,{include:[{association:"dimension"}],rejectOnEmpty:true});u.settings=Ft(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(y=>{let S=y.getDataValue("slugCount");return [y.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 _n(e){let t={...fn(e),...yn(e),...gn(e),...hn(e),...mn(e),...bn(e),...Sn(e)},r={...t,...Tn(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 wn=e=>{throw console.error("/methods/helpers/uploadImage.ts:",e),new Error(e.message)},tc=Number(process.env.NEXT_PUBLIC_IMAGE_SPLASH_WIDTH)||1400,rc=Number(process.env.NEXT_PUBLIC_IMAGE_THUMB_WIDTH)||400,oc=async(e,t,r)=>{let o=[{type:"splash",res:tc},{type:"thumb",res:rc}],n=(await import('sharp')).default;for(let a of o){let s=await n(r).resize(a.res).toFormat("webp").webp({lossless:true}).toBuffer().catch(wn);await e.image.update({[a.type]:s},{where:{id:t}}).catch(wn);}},ve=oc;var kn="SECTION_ALLOWED";if(typeof window<"u")throw new Error("flickr.ts can only be imported on the server side");var Pn=["4","5","7","8","9","10"],ac=Pn.join(),{locales:ic}=K(),Ce;if(process.env.FLICKR_API_KEY)try{Ce=new sc(process.env.FLICKR_API_KEY);}catch(e){throw console.error("Flickr ERROR:",e),new Error(e.message)}async function xn(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,a=(await Ce.photos.search({text:o,license:ac,sort:"relevance",per_page:24,page:r.page,content_types:"0",orientation:"landscape"}).then(l=>l.body)).photos.photo,s=a.reduce((l,p)=>l.concat(Ce.photos.getSizes({photo_id:p.id})),[]),c=(await Promise.all(s).then(l=>l)).reduce((l,p,u)=>{let m=p.body.sizes.size.find(f=>f.label==="Small 320");return m&&l.push({id:a[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 In(e,t){try{let{content_id:r,image_id:o}=t,n={content_id:H(`${r}`)||"",id:H(`${o}`)||""},s=`https://flic.kr/p/${nc.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(Pn.includes(i.photo.license)){let l=await e.search.findOne({where:{content_id:r}}),p=await e.image.findOne({where:{url:s}});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:s,author:i.photo.owner.realname||i.photo.owner.username,license:S?`${S.name}: ${S.url}`:""},P=await e.image.create(x);await e.image_content.destroy({where:{id:P.id}});let F=ic.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 U(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 T(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 vn(e){let{readMember:t,searchMember:r,updateMember:o,readMemberImage:n}=e;return [U("GET","read/members",async a=>{let s=cc(a.query),i=s[s.mode]||[],c=s.mode==="whole";if(!c&&i.length===0)throw new T(400,`The request is missing the '${s.mode}' parameter.`);if(!c&&i.length>20&&!s.variant)throw new T(400,`You can look for up to 20 '${s.mode}' in a single request.`);return t(s)}),U("GET","search/members",a=>{let s=Gt(a.query);return r(s)}),U("POST","update/member",a=>{let{body:s}=a;return o(s)},[z.EDITOR]),U("GET","member/image",a=>{let s=G(a.query.size)[0];return n({member:ee(a.query.member),size:s&&s==="splash"?"splash":"thumb"})})]}function cc(e){let t=G(e.locale)[0]||Be,r=t==="all"||zt(e.all),o=G(e.mode)[0],a=(G(e.output)[0]||"full")==="lite"?"lite":"full",s=parseInt(G(e.related)[0],10)||5,i=zt(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:a,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:a,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:a,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:s,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:a,allowNulls:false};if(o==="whole")return {all:r,mode:o,variant:c,locale:r?Be:H(t),output:a,allowNulls:i};throw new T(400,`Invalid mode: '${o}'`)}function Gt(e){let t=G(e.locale)[0]||Be||"en",r=t==="all",o=G(e.format)[0],n=o?o==="nested":r,a=G(e.variant).map(ee);a.length===0&&(a=G(e["variant[]"]).map(ee));let s=G(e.dimension).map(ee);s.length===0&&(s=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:zt(e.includes,{default:true}),visible:zt(e.visible,{default:true}),noImage:zt(e.noImage,{default:false}),variant:a,dimension:s,report:i,all:r,sort:G(e.sort)[0],direction:G(e.direction)[0],offset:Number(e.offset||0),origin:c}}async function Cn(e,t){let r=Tt(e),o=Gt({query:t.prompt,limit:"50",visible:"false"}),a=(await r(o)).results.filter(s=>s.image_id).map(s=>({id:s.image_id,source:`/api/cms/member/image?member=${s.content_id}&size=thumb`}));return {meta:{prompt:H(o.query)},results:a}}async function Bn(e,t){let{search:r}=e,{content_id:o,image_id:n}=t;await r.update({image_id:n},{where:{content_id:o}});let a=await r.findOne({where:{content_id:o},include:Se}).then(s=>s?{...s.toJSON(),image:{...s.image.toJSON(),thumb:!!s.image.thumb}}:null);return {meta:{id:n,content_id:o},results:a}}if(typeof window<"u")throw new Error("unsplash.ts can only be imported on the server side");var{locales:pc}=K(),Kt;if(process.env.UNSPLASH_API_KEY)try{Kt=createApi({accessKey:process.env.UNSPLASH_API_KEY});}catch(e){throw console.error("Unsplash error:",e),new Error(e.message)}async function Ln(e,t){try{let r={prompt:t.prompt||"",page:t.page||1};if(!Kt)throw new Error("Unsplash API Key not configured");let o=r.prompt,a=(await Kt.search.getPhotos({query:o,perPage:24,page:r.page,orientation:"landscape"}).then(s=>s.response.results)).map(s=>({id:s.id,source:s.urls.thumb}));return {meta:{prompt:H(r.prompt),page:H(`${r.page}`)},results:a}}catch(r){throw console.error(r),new Error("Error in search unsplash provider")}}async function Mn(e,t){try{let{content_id:r,image_id:o}=t,n={content_id:H(`${r}`)||"",id:H(`${o}`)||""};if(!Kt)throw console.warn("Unsplash is not initialized. Check the credentials"),new Error("Unsplash is not initialized. Check the credentials");let a=await Kt.photos.get({photoId:o}).then(i=>i.response),s;if(a){let i=await e.search.findOne({where:{content_id:r}}),c=a.links.html,l=await e.image.findOne({where:{url:c}});if(i){if(l)await e.search.update({image_id:l.id},{where:{content_id:r}});else {let u=await kr.get(a.urls.full,{responseType:"arraybuffer"}).then(h=>h.data),m={url:c,author:a.user.name||a.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=pc.map(h=>({id:f.id,locale:h,meta:a.description||a.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:s}}catch(r){throw console.error(r),new Error("Error in save unsplash provider")}}if(typeof window<"u")throw new Error("upload.ts can only be imported on the server side");var{locales:mc}=K();async function On(e,t){try{let{content_id:r,image_source:o,files:n}=t,a={content_id:H(`${r}`)||""};if(await e.search.findOne({where:{content_id:r}})&&n){let c=await dc.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=mc.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:{...a},results:i}}catch(r){throw console.error(r),new Error("Error in save upload provider")}}if(typeof window<"u")throw new Error("adobe.ts can only be imported on the server side");var{locales:fc}=K();var Nn=async e=>{let t={"x-api-key":process.env.ADOBE_STOCK_API_KEY||"EMPTY_ADOBE_KEY","X-Product":"BespokeApp/0.1"};return t};var Ht;if(process.env.ADOBE_STOCK_API_KEY)try{Ht={search:async(e,t)=>await kr.get("https://stock.adobe.io/Rest/Media/1/Search/Files",{headers:await Nn(!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 kr.get("https://stock.adobe.io/Rest/Media/1/Files",{headers:await Nn(!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 Dn(e,t){try{let r={prompt:t.prompt||"",page:t.page||1};if(!Ht)throw new Error("Adobe API Key not configured");let n=(await Ht.search(r.prompt,r.page)).map(a=>({id:a.id,source:a.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 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("Adobe is not initialized. Check the credentials"),new Error("Adobe is not initialized. Check the credentials");let a=await Ht.get(o),s;if(a){let i=await e.search.findOne({where:{content_id:r}}),c=a.details_url,l=await e.image.findOne({where:{url:c}});if(i){if(l)await e.search.update({image_id:l.id},{where:{content_id:r}});else {let u=await kr.get(a.thumbnail_1000_url,{responseType:"arraybuffer"}).then(h=>h.data),m={url:c,author:a.creator_name,license:"ADOBE, TO-DO"},f=await e.image.create(m);await e.image_content.destroy({where:{id:f.id}});let d=fc.map(h=>({id:f.id,locale:h,meta:a.title||a.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:s}}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 yc={local:Bn,flickr:In,unsplash:Mn,upload:On,adobe:Un};function wt(e,t){let r=yc[t];if(!r)throw new T(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 gc={local:Cn,flickr:xn,unsplash:Ln,adobe:Dn};function jt(e,t){let r=gc[t];if(!r)throw new T(500,`Wrong provider dbImageSearchFactory.ts: ${t}`);return v(o=>r(e,o))}var Tc=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 Ar(e){let{report:t,search:r}=e;return o;async function o(n){let a=n?.report_id?Number(n.report_id):void 0,s=!(typeof n?.count<"u"&&(n.count==="false"||n.count===false)),i={attributes:["id","name",[literal("COALESCE(NULLIF(settings ->> 'order', '')::INTEGER, 0)"),"ordering"],[literal("COALESCE(NULLIF(settings ->> 'hide', '')::BOOL, false)"),"hide"]],where:{[Op.or]:[where(cast(json("settings.hide"),"boolean"),false),literal("NOT (settings::jsonb ? 'hide')")]},order:[["ordering","ASC"]],include:[{attributes:["id","name","ordering"],association:"dimensions",separate:true,order:[["ordering","ASC"]],include:[{attributes:["id","name","slug",[literal("COALESCE(NULLIF(settings ->> 'order', '')::INTEGER, 0)"),"ordering"]],association:"variants",separate:true,group:["variant.id"],order:[["ordering","ASC"]]}]}]};return a&&(i.where={...i.where,id:a}),s&&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=>({...Tc(l.toJSON()),mode:l.dimensions.length===1?Pe.UNILATERAL:Pe.MULTILATERAL}))}}}function Fn(e){return async()=>(await et(e,true),{error:false})}var{locales:_c,localeDefault:wc}=K(),kc=(e,t)=>{if(!e)return [];let r=[];return t.forEach(o=>{let n=e.filter(a=>a.metadata.report.id===o.id);if(n.length>0)if(o.mode===Pe.UNILATERAL){let a=o.dimensions[0];a.variants.forEach(s=>{let i=n.filter(c=>c.metadata.dimension.id===a.id&&c.metadata.variant.id===s.id);i.length>0&&(r=r.concat(i.map(c=>({path:`/${s.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},Pc=(e,t)=>{if(!e)return [];let r,o,n;return e.map(a=>(r={...t.find(s=>s.id===a.report_id)},o={...r.dimensions.find(s=>s.id===a.dimension_id)},n={...o.variants.find(s=>s.id===a.variant_id)},delete r.dimensions,delete o.variants,{name:a.name,confidence:a.zvalue,metadata:{id:a.id,slug:a.slug,report:r,dimension:o,variant:n},id:a.content_id,slug:a.slug}))};function Vn(e){let t=Tt(e),r=Ar(e);return o;async function o(n){let a=n.format||"results",s=_c.includes(n.locale)?n.locale:wc,i=n.origin||"flexsearch",c=process.env.REPORTS_EXTERNAL_SEARCH&&i==="typesense",l=await t({...n,format:"plain",locale:H(s),visible:true});if(c)return l;{let p=l.results?l.results:[],m=(await r()).data,f=Pc(p,m);return {meta:{...l.meta,origin:"flexsearch",format:a},results:kc(f,m)}}}}function $n(e){return async t=>{try{let{variantPaths:r}=t,o=[];if(r)for(let n=0;n<r.length;n++){let a=r[n];(await e.search.findAll({attributes:["slug"],where:{variant_id:a.variantId}})).forEach(i=>{o.push(`/${a.prefix}/${a.variantSlug}/${i.slug}`);});}return {...t,paths:o,revalidated:0,samples:[]}}catch(r){throw new T(r.response?.status||500,r.message)}}}function qn(){return async e=>{try{let{target:t}=e;return {target:t}}catch(t){throw new T(t.response?.status||500,t.message)}}}function ye(e,t){let r=[],o=a=>Object.values(t).reduce((i,c)=>("inputs"in c&&c.inputs.includes(a)&&(i.push(c.id),i=i.concat(o(c.id))),i),[]);e.forEach(a=>{r=r.concat(o(a));});let n=[];return r.forEach(a=>{n.includes(a)||n.push(a);}),n}function Ic(e,t){return e.some(r=>t.includes(`role.${r}`))}function zn(e){let{report:t}=e;return r;async function r(o){let n=await t.findByPk(o.report_id,{include:{association:"sections",separate:true,where:{id:o.section_id},include:[{association:"blocks",separate:true,include:[{association:"contentByLocale",separate:true,where:{locale:{[Op.or]:[o.locale,"logic"]}}},{association:"inputs"},{association:"consumers"}]}]}}).then(s=>s&&s.sections&&Array.isArray(s.sections)?s.sections.reduce((i,c)=>{let l=c.blocks.map(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)},[]):[]),a=n.filter(s=>s.settings&&s.settings.access&&Array.isArray(s.settings.access)&&Array.isArray(o.roles)&&(s.settings.access.includes("private")||Ic(o.roles,s.settings.access))).map(s=>s.id);return a=a.concat(ye(a,n)),{params:{...o},data:n.filter(s=>a.includes(s.id))}}}var Bc=Object.keys(so).filter(e=>e.indexOf("Icon")===0);async function Gn(){return {meta:{provider:"tabler"},results:Bc}}async function Kn(e){let t=so[e.name]?so[e.name]:()=>"";return renderToString(createElement(t))}var Lc={tabler:Gn};function Hn(e){let t=Lc[e];if(!t)throw new T(500,`Wrong provider dbListIconsFactory.ts: ${e}`);return v(()=>t())}var Mc={tabler:Kn};function jn(e){return v(t=>{let r=Mc[e];if(!r)throw new T(500,`Wrong provider dbReadIconFactory.ts: ${t.provider}`);return r({name:t.name,provider:e})})}function Wn(){return e;async function e(){return {secrets:St()}}}function rt(e,t,r){return Ze().then(o=>{Object.assign(r,kt(o));})}function kt(e,t){let r={},o=$e(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(vo()),r.searchUser=v(Co()),r.readUser=v(Bo()),r.updateUser=v(Lo())),{..._n(e),searchReport:v(Vn(e)),readMetadata:v(Ar(e)),regenerateSearch:v(Fn(e)),imageFlickrSearch:jt(e,"flickr"),imageLocalSearch:jt(e,"local"),imageUnsplashSearch:jt(e,"unsplash"),imageAdobeSearch:jt(e,"adobe"),imageFlickrSave:wt(e,"flickr"),imageLocalSave:wt(e,"local"),imageUnsplashSave:wt(e,"unsplash"),imageUploadSave:wt(e,"upload"),imageAdobeSave:wt(e,"adobe"),urlProxy:Rr(e),searchRole:r.searchRole,searchUser:r.searchUser,readUser:r.readUser,updateUser:r.updateUser,updateMyData:v(Mo()),revalidateReport:v($n(e)),revalidateUrl:v(qn()),readPrivateBlocks:v(zn(e)),listTablerIcons:Hn("tabler"),readTablerIcon:jn("tabler"),readEnvSecrets:v(Wn())}}async function ao(e){try{let t=new Oc.IncomingForm,r=await new Promise((o,n)=>{t.parse(e,(a,s,i)=>{if(a){console.error("Error in formidable parse function inside internal parseBody.ts",a),n(a);return}o({fields:s,files:i});});});return {...r.fields,files:r.files}}catch(t){return {error:t}}}function Le(e,t){let r=ue(e,"create",t),o=ue(e,"read",t),n=ue(e,"update",t),a=ue(e,"delete",t),s=ue(e,"updateBulk",t),i=ue(e,"createBulk",t);return [U("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]),U("POST",`create/${t}`,c=>{let{body:l}=c;return r(l)},[z.EDITOR]),U("GET",`read/${t}`,c=>{let l=c.query,p=G(l.id).map(ee);return o({id:p,include:zt(l.include)})}),U("POST",`update/${t}`,c=>{let{body:l}=c;return n(l)},[z.EDITOR]),U("POST",`update/bulk/${t}`,c=>{let{body:l}=c,{files:p,...u}=l,m=Object.keys(u).map(f=>u[f]);return s(m)},[z.EDITOR]),U("DELETE",`delete/${t}`,c=>{let l=ee(c.query.id);return a(l)},[z.EDITOR])]}function Yn(e){let{validateVariantSlug:t}=e;return [...Le(e,"variant"),U("GET","validate/variant",r=>{let o=r.query,n=ee(o.dimension);return t({dimension:n,slug:fr(o.slug)})},[z.EDITOR])]}function Jn(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 U("POST",`images/save/${t}`,n=>{let a=n.body;if(!a.content_id)throw new T(400,"Missing 'content_id' parameter.");if(!a.image_id)throw new T(400,"Missing 'image_id' parameter.");return o(a)},[z.EDITOR])}function Wt(e,t){let r=`image${be(t)}Search`,o=e[r];return U("GET",`images/search/${t}`,async n=>{let a=G(n.query.prompt)[0];if(!a)throw new T(400,"Empty 'prompt' param.");return o({prompt:a,page:ee(n.query.page)})},[z.EDITOR])}function Qn(e){let{readMetadata:t}=e;return U("GET","read/metadata",r=>t(r.query))}function Zn(e){let{regenerateSearch:t}=e;return U("POST","search/regenerate",()=>t(void 0),[z.EDITOR])}function Xn(e){let{searchReport:t}=e;return U("GET","search/reports",r=>{let o=Dc(r.query);return t(o)})}function Dc(e){return {...Gt(e),format:G(e.format)[0]}}function es(e){let{urlProxy:t}=e;return U("GET","url/proxy",(r,o,n)=>{let{url:a,method:s="GET",wrapper:i="true"}=r.query;if(!a)throw new T(400,"Missing URL parameter");let c=[];return n&&n.user&&n.user.bespoke_roles&&(c=n.user.bespoke_roles),t({url:Array.isArray(a)?a.join(","):a,method:G(s)[0]==="POST"?"POST":"GET",user_roles:c,wrapper:i!=="false",session:n})})}function ts(e){let{readMetadata:t,revalidateReport:r}=e;return U("GET","revalidate/report",async(o,n)=>{let{reportId:a,profilePrefix:s}=o.query;if(!a||!s)throw new T(400,"Missing URL parameter in revalidate factory: reportId or profilePrefix");try{let i=parseInt(`${a}`,10),c=`${s}`.split("/").filter(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(y){console.error("error",d,y);}return h}))),{ok:!0,status:200,data:{reportId:a,revalidated:f,samples:m}}}catch(i){throw console.error(i),new T(500,"Error revalidating")}},[z.EDITOR])}function rs(){return U("GET","revalidate/url",async(e,t)=>{let{target:r}=e.query;if(r)try{return t.revalidate(r,{unstable_onlyGenerated:!0}),{ok:!0,status:200,data:{target:r}}}catch(o){throw console.error(o),new T(500,"Error revalidating")}else throw new T(400,"Missing target parameter in revalidate factory")},[z.ADMIN,z.EDITOR,z.WRITER])}var{localeDefault:Uc}=K();function os(e){let{readPrivateBlocks:t}=e;return U("POST","read/blocks/private",(r,o,n)=>{let a={report_id:parseInt(r.body.report_id,10),locale:r.body.locale||Uc,roles:n&&n.user?n.user.bespoke_roles:[],section_id:r.body.section_id||[]};return t(a)},[])}function ns(e){let{readEnvSecrets:t}=e;return U("GET","read/secrets",()=>t({}),[z.EDITOR])}function ss(e){let{searchRole:t}=e;return U("GET","auth/search/roles",(r,o)=>t(""),[z.EDITOR,z.ADMIN])}function as(e){let{searchUser:t}=e;return U("GET","auth/search/users",r=>t({query:r.query.query,role_id:r.query.role_id,page:r.query.page||0}),[z.ADMIN])}function is(e){let{readUser:t}=e;return U("GET","auth/read/user",r=>t(r.query.user_id),[z.ADMIN])}function cs(e){let{updateUser:t}=e;return U("POST","auth/update/user",async r=>{let o=r.body;return await t(o)},[z.ADMIN])}function ls(e){let{updateUser:t,readUser:r}=e;return U("POST","auth/update/me",async(o,n,a)=>{let{report_id:s,user_metadata:i}=o.body,c={user_id:a.user.id,user_metadata:{}};try{let{user:l}=a;return a&&l&&s&&(l.bespoke_app_metadata&&l.bespoke_app_metadata.reports&&Array.isArray(l.bespoke_app_metadata.reports)?c.app_metadata={...l.bespoke_app_metadata}:c.app_metadata={reports:[]},c.app_metadata.reports.push({reportId:s})),i&&(c.user_metadata={...l.bespoke_app_metadata,...i}),await t(c),{ok:!0,status:200,wrapper:!0,data:{ok:!0,message:"User & session updated"}}}catch(l){return {ok:false,status:500,error:l.message}}},[])}async function Fc(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 us(){return U("POST","pdf",async(e,t)=>{let{slugs:r,path:o}=e.body;if(!r||!o)throw new T(400,"Missing path parameter in request.");{new URL(o,e.headers.origin);return {ok:true,status:200,data:await Fc()}}})}function ps(e,t){let r=`list${be(t)}Icons`,o=e[r];return U("GET",`list/icons/${t}`,async()=>o({}),[z.EDITOR])}function ds(e,t){let r=`read${be(t)}Icon`,o=e[r];return U("GET",`read/icons/${t}/icon.svg`,async n=>o({provider:t,name:n.query.name}))}function ms(){return U("GET","report",async(e,t)=>{let{report:r,prefix:o,locale:n}=e.query;if(!r)throw new T(400,"Missing report parameter.");if(!o)throw new T(400,"Missing report parameter.");if(!n)throw new T(400,"Missing report parameter.");try{let s=await(await fetch(`${process.env.NEXT_PUBLIC_REPORTS_BASE_URL}/${n}${o}${r}`)).text(),l=new Vc().parseFromString(s,"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(a){throw console.error(a),new T(500,"Couldn't find page cache")}})}var zc=ke();function io(e,t){return `${e.toUpperCase()} ${t.toLowerCase()}`}function Gc(e,t){let r=kt(e,t);return Object.fromEntries([...Le(r,"block"),...Le(r,"dimension"),...Le(r,"formatter"),...Le(r,"report"),...Le(r,"section"),...Jn(r),...Yn(r),...vn(r),Xn(r),Qn(r),Zn(r),Pt(r,"flickr"),Pt(r,"local"),Pt(r,"unsplash"),Pt(r,"upload"),Pt(r,"adobe"),Wt(r,"flickr"),Wt(r,"local"),Wt(r,"unsplash"),Wt(r,"adobe"),es(r),ss(r),as(r),is(r),cs(r),ls(r),ts(r),rs(),os(r),us(),ps(r,"tabler"),ds(r,"tabler"),ms(),ns(r)].map(({handler:o,method:n,path:a,roleRequired:s})=>[io(n,a),{handler:o,roleRequired:s}]))}function Kc(e){return (t,r,o)=>new Promise((n,a)=>{e(o)(t,r,s=>s instanceof Error?a(s):n(s));})}var Hc=Kc($c);function jc(e){let t=Ze().then(r=>Gc(r,e));return async function(o,n){await Hc(o,n,{methods:["GET","HEAD","PUT","PATCH","POST","DELETE"],origin:"*"});let{query:a,method:s}=o,{path:i,...c}=a;if(i&&s){let l=await t.then(p=>{let u=[].concat(i).join("/"),m=io(s,u);return p[m]});if(l){let p=await he(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&&!nr(u,l.roleRequired))return n.status(402).json({error:"Forbidden. Not enough roles."})}if(l.handler)return ["POST","DELETE"].includes(s)&&(o.body=await ao(o)),Promise.resolve(o).then(u=>l.handler(u,n,p||void 0)).then(async u=>{if(u&&"error"in u)throw new T(u.status,u.error);if(u.ok)if(u.data instanceof Buffer){let m=await qc(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=>{zc&&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 Wc=e=>{let t=e;return async function(r,o){let n=await t({test:"pala"});return o.json(n)}},Yc=Wc;var ut={};ta(ut,{addBlockToState:()=>rr,addRunConsumersRunning:()=>zs,cloneEntity:()=>Ns,createEntity:()=>Ls,deleteEntity:()=>Os,deleteQueryParam:()=>Xl,readEntity:()=>oe,readEnvSecrets:()=>uu,readMember:()=>Ue,readMetadata:()=>tr,readPrivateBlocks:()=>iu,readUser:()=>nu,recalculateVariables:()=>Hs,removeBlocksFromState:()=>Fe,removeDataSourceLogic:()=>or,removeRunConsumersRunning:()=>Gs,reportSearch:()=>Jl,resetSectionState:()=>qs,revalidateReport:()=>lu,revalidateUrl:()=>cu,searchMember:()=>Zl,searchRegenerate:()=>Ql,searchRole:()=>ru,searchUser:()=>ou,setCurrentLocale:()=>jl,setPreferredLocale:()=>Wl,setPreviews:()=>Hl,setQueryParam:()=>eu,setSectionState:()=>$s,setStatus:()=>Vs,updateEntity:()=>Ms,updateMyData:()=>au,updateUser:()=>su,urlProxy:()=>tu,variantValidateSlug:()=>Yl});function ge(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=>ge(e,{...o,method:"GET",params:r?r(n):n})}function re(e,t,r){let o=typeof t=="string"?{url:t}:t;return n=>ge(e,{...o,method:"POST",data:n})}function Me(e,t,r){let o=typeof t=="string"?{url:t}:t;return n=>ge(e,{...o,method:"DELETE",params:r?r(n):n})}function xt(e,t){return r=>ge(e,{method:"POST",url:`images/save/${t}`,params:{prompt:r.prompt,provider:t}})}function Yt(e,t){return r=>ge(e,{method:"GET",url:`images/search/${t}`,params:{prompt:r.prompt,page:r.page,provider:t}})}function fs(e,t){return ()=>ge(e,{method:"GET",url:`list/icons/${t}`,params:{provider:t}})}function ys(e,t){return r=>ge(e,{method:"GET",url:`read/icons/${t}/icon.svg`,params:{name:r.name}})}var ot=e=>({id:e}),Qc=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 Jt(e){let t=kr.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",ot),deleteDimension:Me(t,"delete/dimension",ot),deleteFormatter:Me(t,"delete/formatter",ot),deleteReport:Me(t,"delete/report",ot),deleteSection:Me(t,"delete/section",ot),deleteVariant:Me(t,"delete/variant",ot),deleteDatasource:Me(t,"delete/datasource",ot),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",Qc),readMemberImage:te(t,{url:"member/image",responseType:"blob"}),searchMember:te(t,"search/members"),updateMember:te(t,"update/members"),imageLocalSearch:Yt(t,"local"),imageLocalSave:xt(t,"local"),imageFlickrSearch:Yt(t,"flickr"),imageFlickrSave:xt(t,"flickr"),imageUnsplashSearch:Yt(t,"unsplash"),imageUnsplashSave:xt(t,"unsplash"),imageUploadSave:xt(t,"upload"),imageAdobeSearch:Yt(t,"adobe"),imageAdobeSave:xt(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:fs(t,"tabler"),readTablerIcon:ys(t,"tabler"),readEnvSecrets:te(t,"read/secrets")}}var el=zt(process.env.REPORTS_LOGGING),nt=tl;function tl(e,t,r,o,n=void 0,a){let s={},i=[],{locale:c}=me(a);try{if(t){let l=new Proxy(console,{get(u,m){return rl(m,"log","debug","info","warn","error")?(...f)=>{i.push(`${m} ${Date.now()} - ${f.map(d=>format(d)).join(" ")}`),el&&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(s,p),{vars:s,error:null,log:i,output:p}}return {vars:s,error:"Invalid API Link",log:i}}catch(l){return {vars:s,error:l.message,log:i}}}function rl(e,...t){return t.includes(e)}var co=(e,t,r)=>{let{variables:o}=r,n=s=>s.allowed==="never"?false:!s.allowed||s.allowed==="always"||o[s.allowed],a={...e};return Object.keys(a).forEach(s=>{typeof a[s]=="string"?a[s]=fe(a[s],t,r):Array.isArray(a[s])?a[s]=a[s].filter(n).map(i=>typeof i=="object"?co(i,t,r):typeof i=="string"?fe(i,t,r):i):typeof a[s]=="object"&&a[s]!==null&&!(a[s]instanceof Date)&&(a[s]=co(a[s],t,r));}),a},Tr=co;var gs=e=>Array.isArray(e)?e.map(t=>typeof t=="string"?{allowed:"always",label:t,id:t}:{allowed:"always",label:t.id,...t}):[];var ol=(e,t,r)=>{if(!r)return false;if(e===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(a=>a.id).includes(n))},lo=ol;function uo(e,t,r,o,n=false){let{variables:a}=me(o),s=Tr({logic:t},r,o).logic,i=nt("variables",a,s,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",y=gs(c.options||[]),S=w=>u===We.MULTI&&!Array.isArray(w)?[w]:w,x=c.defaultValue,P;if(x&&(x=S(x),lo(u,x,y)&&(P=x)),!P){let w=y&&y[0]&&y[0].id||y[0]||"";P=S(w);}if(n&&typeof window<"u"){let w=`selector${e}id`,$=new URLSearchParams(window.location.search),N=Object.fromEntries($)[w];N&&!lo(u,N,y)&&N!==void 0&&($.delete(w),window.history.replaceState(null,null,`?${$.toString()}`));}return {config:{name:h,type:u,options:y,defaultValue:P,component:m,hideLabel:f,resetSectionVars:d},log:l,error:p}}function po(e,t,r){if(!e)return false;let o=Array.isArray(r)?r:r.split(",");return Array.isArray(o)&&o.every(n=>e.map(a=>`${a[`${t} ID`]}`).includes(n))}function mo(e,t,r,o,n=false){let{variables:a}=me(o),s=Tr({logic:t},r,o).logic,i=nt("variables",a,s,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),y=h[m],S=h[f];y&&y!==void 0&&S&&S!==void 0&&!po(c.data,S,y)&&(d.delete(m),d.delete(f),window.history.replaceState(null,null,`?${d.toString()}`));}return {config:c,log:l,error:p}}var nl=(e,t,r)=>{let o=`selector${e}id`,n=new URLSearchParams(typeof location<"u"&&location?.search?location.search:"").get(o),a=new URLSearchParams(t).get(o),s=n||a;if(r.type===We.MULTI){let l=s?s.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=s&&r.options.find(l=>l.id===s)?s:r.defaultValue,c=r.options.find(l=>l.id===i);return {[`selector${e}id`]:i,[`selector${e}label`]:c&&c.label||void 0}},Rs=nl;var sl=(e,t,r)=>{let o=`multihierarchySelector${e}-value`,n=`multihierarchySelector${e}-type`,a=new URLSearchParams(typeof location<"u"&&location?.search?location.search:"").get(o),s=new URLSearchParams(typeof location<"u"&&location?.search?location.search:"").get(n),i=new URLSearchParams(t).get(o),c=new URLSearchParams(t).get(n),l=a||i,p=s||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}},hs=sl;var{localeDefault:bs,locales:al}=K(),il=Object.values(jr),cl=(e,t=bs)=>e&&il.includes(e.type)?{locale:Wr,locales:[Wr]}:{locale:t,locales:al},Ss=(e,t=bs)=>{if(!e)return {};let{locale:r}=cl(e,t);return e.contentByLocale?.[r]?.content};function ll(e,t){let r=Object.values(t),o=r.filter(n=>n.shared&&n.section_id!==e).map(n=>n.id);return Object.fromEntries(r.filter(n=>n.section_id===e&&(n.inputs.length===0||n.inputs.some(a=>o.includes(a)))).map(n=>[n.id,n]))}var Es=ll;function fo(e){return e.type===O.SECTION_FLAG&&e.inputs.length===0&&e.consumers.length===0}var Oe=zt(process.env.NEXT_PUBLIC_REPORTS_DEBUG),yl=process.env.REPORTS_ORIGIN||"",gl=process.env.NEXT_PUBLIC_REPORTS_AXIOS_RETRIES,ws=5;try{ws=parseInt(`${gl||5}`,10);}catch(e){console.error("Error setting axios retries NEXT_PUBLIC_REPORTS_AXIOS_RETRIES defaults to 5",e);}As(kr,{retries:ws,retryDelay:As.exponentialDelay,onRetry:(e,t,r)=>{console.error("Generator request failed. Retrying... Count: ",e),console.error("URL: ",r.url),console.error(t.message);}});kr.interceptors.request.use(e=>({...e,requestStart:Date.now()}));kr.interceptors.response.use(e=>({...e,requestDuration:new Date().getTime()-e.config.requestStart}),e=>Promise.reject(e));var Rl=(e,t,r)=>{let o=fe(e,t,r);return o.startsWith("http")||(o=`${yl}${o.startsWith("/")?"":"/"}${o}`),o},{urlProxy:hl}=Jt("/api/cms");function wr(e){return e.ok!==void 0}function _r(e){this.message=e,this.name="ApiFetchException";}var Ts=process.env.NEXT_PUBLIC_REPORTS_API_FETCH_TIMEOUT||0;async function bl(e,t,r="en",o,n){let a=Date.now(),s=e,i,c=pe(),l=St(),p={envs:{...c,...l}},u=new URL(e),m=new URLSearchParams(u.searchParams.toString());m.has("bespoke_slugs")&&(u.searchParams.delete("bespoke_slugs"),s=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(s)?(f.datasource=x,!0):P.test(s)}catch{return false}});let d=n?n.settings:{},h=!!(d&&d.useProxy&&d.useProxy==="true"),y=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(s)}`;if(typeof window=="object"&&(h||y)){let x=await hl({url:s,timeout:Ts});if(x.ok===true)i=x.data;else throw new _r(x?.error)}else try{let P={url:s,timeout:Ts};if(f.datasource){let w=p;if(typeof window<"u")try{let N=await getSession();if(N){let _={user:N.user,status:"authenticated",isLoading:!1,update:async()=>N};w={...p,session:_};}}catch(N){console.warn("Could not retrieve user session:",N);}let B=await gr({vars:["url","libs","session"],logic:f.datasource.content.logic},w)(s);if(B.axiosConfig)P=B.axiosConfig;else throw new _r(`AxiosConfig is missing in Data Source ${f.datasource.name} (ID: ${f.datasource.id}).`)}let F=await kr(P);if(F.status===200)F.headers["content-type"]==="text/csv"?i=csvParse(F.data):i=F.data;else throw new _r("No response for: "+s)}catch(x){throw new _r(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,$]=P,B=Lt(i,$);if(B&&Array.isArray(B)){let N=Array.from(new Set(B.map(_=>`${_[w]}`).filter(_=>!["","undefined"].includes(_))));if(N.length>0){let _=N.join("").length>2e3,L=await t({mode:_?"whole":"ids",ids:_?void 0:N,all:false,locale:r,variant:[parseInt(F,10)],output:"lite",limit:N.length+1,allowNulls:true}).then(D=>{let C=[];return wr(D)?D.ok&&(C=D.data.results):C=D.results,C&&Array.isArray(C)?C:[]}).catch(D=>(console.error(`Error hydrating slugs for Variant: ${F}, Key: ${w}, Accessor: ${$}`),console.error(` Url ${e}`),n&&console.error(` From Section ${n.section_id} and Block ${n.id}`),console.error(D),[]));if(L){let D=Object.fromEntries(L.map(C=>[C.id,`/${C.variant_slug}/${C.slug}`]));B.map(C=>(C.bespoke_slug=D[C[w]]?D[C[w]]:null,C));}}}}}}return {data:i,requestDuration:Date.now()-a,finalUrl:y||h?S:s,apiDataSource:f.datasource?f.datasource:false}}function Sl(e){this.name="BlockException",this.message=e;}async function _s(e,t,r,o,n){let{locale:a,variables:s,query:i}=me(r),c=Al(e,r,s,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=Rl(p,t,r);let B=f.split("|||").filter(L=>L!==""),N=[];for(let L=0;L<B.length;L++){let D=B[L];new RegExp("^(?:[a-z+]+:)?//","i").test(f)||(D=`${process.env.NEXT_PUBLIC_REPORTS_BASE_URL}/${D}`.replace(/([^:]\/)\/+/g,"$1")),N.push(bl(D,o,a,n,e).catch(q=>{throw new Sl(` Excecution of ${e.type}-${e.id} in section ${e.section_id} in report ${s.report_name} (${s.report_id}) failed.
26
+ Error fetching ${D}.
72
27
  Message: ${q.message}.
73
- `)}));}let v=await Promise.all(U).catch(O=>O.message);if(typeof v=="string"&&v)return {outputVariables:{},renderVariables:{},status:{error:v}};l=v.length===1?v[0].data:v.map(O=>O.data),d=v.reduce((O,F)=>O+JSON.stringify(F.data).length/1024,0),p=Math.max(...v.map(O=>O.requestDuration)),m=v.map(O=>O.apiDataSource?`${O.apiDataSource.name} (${O.apiDataSource.id})`:null),R=v.map(O=>O.finalUrl);}if(e.type===N.SELECTOR){let{config:L,log:U,error:v}=ko(e.id,e.contentByLocale[a].content.logic,t,r,!0);return {outputVariables:Ya(e.id,i,L),renderVariables:L,status:{log:U,error:v,allowed:c}}}if(e.type===N.MULTIHIERARCHY_SELECTOR){let{config:L,log:U,error:v}=xo(e.id,e.contentByLocale[a].content.logic,t,r,!0);return {outputVariables:Qa(e.id,i,L),renderVariables:L,status:{log:U,error:v,allowed:c}}}if(e.type===N.VIZ)return {outputVariables:{},renderVariables:e.contentByLocale.logic.content,status:{log:[],allowed:c}};if(e.type===N.RELATED){let L=e.contentByLocale?.logic?.content?.simple?.compare||"variant",U=e.contentByLocale?.logic?.content?.simple?.limit||4,v=Object.keys(s).filter(b=>b.startsWith("report_id")).map(b=>s[b]),O=Object.keys(s).filter(b=>b.startsWith("dimension_id")).map(b=>s[b]),F=Object.keys(s).filter(b=>b.startsWith("variant_id")).map(b=>s[b]),B=Object.keys(s).filter(b=>b.startsWith("id")).map(b=>s[b]);if(!B.length)return {outputVariables:{related_reports:[]},renderVariables:{},status:{log:[],allowed:!1}};let q=await Promise.all(B.map((b,T)=>o({mode:"ids",locale:a,ids:[b],output:"lite",variant:[F[T]]}))).then(b=>b.flatMap(T=>{let P=[];return Dr(T)?T.ok&&(P=T.data.results):P=T.results,P&&Array.isArray(P)?P:[]})).catch(b=>(console.error("Error getting related members",b),[]));if(O.length>1){let b=Object.keys(s).filter(V=>V.startsWith("variant_slug")).map(V=>s[V]),T=q.map((V,Q)=>{let W={mode:"related",locale:a,related:U??4,current_ids:[V.content_id],output:"full",variant_ids:[V.variant_id]};return Q===0&&(W.include_ids=[V.content_id]),W}),P=await Promise.all(T.map(V=>o(V))).then(V=>V.flatMap(Q=>{let W=[];return Dr(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=P.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 ue=Z[W],se=ne[ue];for(let le of se)J.push({combination:[...Q,le],index:W+1});}return {outputVariables:{related_reports:ae.map(V=>{let Q=V.sort((W,ue)=>b.indexOf(W.variant_slug)-b.indexOf(ue.variant_slug));return {entities:Q,link:"/"+Q.map(W=>`${W.variant_slug}/${W.slug}`).join("/")}})},renderVariables:{},status:{log:[],allowed:P.length>0}}}let M=q.map(b=>b.content_id),k={mode:"related",locale:a,related:U??4,current_ids:M,output:"full"};L&&(L==="report"?k.report_ids=v:L==="dimension"?k.dimension_ids=O:k.variant_ids=F);let H=await o(k).then(b=>{let T=[];return Dr(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:H.map(b=>({entities:[b],link:`/${b.variant_slug}/${b.slug}`}))},renderVariables:{},status:{log:[],allowed:H.length>0}}}let{logic:g}=Xa(e,a),S=Re(g,t,r),w=ct("resp",l||{},S,t,s,r),{vars:_,error:C,log:x}=w;if(typeof _!="object")return {outputVariables:{},renderVariables:{},status:{error:"Configuration did not return an object",log:x,duration:p,responseSize:d,resp:l,api:f,allowed:c,apiFinalUrls:R,apiDataSources:m}};let $=Object.keys(_).reduce((L,U)=>({...L,[`${e.type}${e.id}${U}`]:_[U]}),{});return {renderVariables:_,outputVariables:[N.GENERATOR,N.SECTION_FLAG].includes(e.type)?_:$,status:{log:x,error:C,duration:p,responseSize:d,resp:l,api:f,allowed:c,apiFinalUrls:R,apiDataSources:m}}}function hu(e,t,r,o,n,a,s){return e.consumers.forEach(i=>{if(t[i]){let c=`${r}-${i}`;!o.includes(c)&&(t[i].section_id===t[r].section_id||!n)&&o.push(c),e.consumers.filter(l=>t[l]&&t[l].section_id===t[r].section_id||!n).forEach(l=>Co(l,t,o,!1,a,n,s));}})}var Co=(e,t,r=[],o=!0,n=!0,a=!0,s=[])=>{if(s.includes(e))return [];s.push(e);let i=t[e];return i&&i.inputs.length&&o&&i.inputs.forEach(c=>{let l=`${c}-${e}`;r.includes(l)||r.push(l),i.inputs.forEach(u=>Co(u,t,r,o,!1,a,s));}),i&&i.consumers.length&&n&&hu(i,t,e,r,a,n,s),r},Ru=(e,t,r,o)=>{let n=!0;if(e&&"allowed"in e.settings&&e.settings.allowed!=="always")if(e.settings.allowed==="never")n=!1;else {let a=he(t),{error:s,output:i}=ct("variables",r,e.settings.allowedLogic||"return false;",o,void 0,a);s||(n=!!i);}return n},Nt=async(e,t,r,o,n,a={},s,i="section",c)=>{let l=i==="section",u=he(n),p=u.variables,d={...a.variables??{}},f={...a.status??{}},m=new Set,R=[],g={};r?g={...g,[r]:e[r]}:t?g=(t??[]).reduce((M,{id:k})=>({...M,...es(k,e)}),{}):g=Object.values(e).filter(M=>Io(M)).reduce((M,k)=>({...M,[k.id]:k}),{});let S=Object.values(g).filter(M=>Io(M));if(S.length>0){Fe&&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 os(A,o,{...u,variables:p,locale:p.locale},s,c).then(b=>{let{outputVariables:T,status:P}=b;if(P.error){if(typeof window>"u")throw new Error(`Run consumers (Block: ${A.id}, Section ${A.section_id}) failed with message: ${P.error}. `);f[A.id]={allowed:!1,error:P.error},d[A.id]={};}return (A.consumers.length>0||[N.GENERATOR,N.SECTION_FLAG,N.RELATED].includes(A.type))&&P.allowed&&Object.keys(T).length>0?d[A.id]=T:d[A.id]={},i==="report"?(f[A.id]={allowed:P.allowed},[N.GENERATOR,N.SECTION_FLAG].includes(A.type)&&P.api&&(f[A.id].api=P.api)):f[A.id]=P,b})]))),H=Object.entries(M).filter(([,A])=>!A.outputVariables[oa]).map(([A])=>Number(A));m=new Set(H.map(A=>e[A].section_id)),Object.values(g).filter(A=>m.has(A.section_id)).forEach(A=>{R.push(A.id),delete g[A.id];}),Fe&&console.info("%crunConsumers: removing sections","color:purple",m.keys());}let w=m.size>0?Object.fromEntries(Object.entries(e).filter(([,M])=>m?.has(M.section_id)?(R.includes(M.id)||R.push(M.id),!1):!0)):e;if(R.length>0&&(w=Object.fromEntries(Object.entries(w).map(([M,k])=>{let H={...k,inputs:k.inputs.filter(A=>!R.includes(A)),consumers:k.consumers.filter(A=>!R.includes(A))};return [M,H]}))),!r&&!t)return {variables:{...a.variables??{},...d},status:{...a.status??{},...f}};i==="report"&&R.length>0&&R.forEach(M=>{delete d[M],delete f[M],delete e[M];}),Fe&&console.info("%crunConsumers: running root blocks","color:purple",Object.keys(g));let _=Object.keys(g).reduce((M,k)=>{let H=new Date,A=Co(Number(k),w,[],!r,!0,l).map(P=>P.split("-")),T=(new Date().getTime()-H.getTime())/1e3;return Fe&&console.info(`%cResolved dependencies for ${k} (${T.toFixed(2)}s)`,"color:blue"),[...M,...A]},[]),C=new Date,x=Object.keys(g).reduce((M,k)=>M.includes(k)?[...M]:[k,...M],iu(_)),L=(new Date().getTime()-C.getTime())/1e3;Fe&&console.info(`%cResolved DAG (${L.toFixed(2)}s): `,"color:green",x);let U=process.env.NEXT_PUBLIC_REPORTS_MAX_CONCURRENT_QUERIES_PER_REPORT,v=parseInt(`${U||0}`,10);async function O(M,k){let H=new Map,A=[],b=async()=>A.length;for(let T of M){if(v!==0){let Z=await b();for(;Z>=v;)Fe&&console.info("Too many pending promises, waiting...",Z,A),await new Promise(J=>setTimeout(J,500)),Z=await b();}let P=k[T],ae=Promise.all(P.inputs.filter(Z=>M.includes(String(Z))).map(Z=>H.get(Number(Z)))).then(async()=>{let Z=P.inputs.reduce((se,le)=>({...se,...d[le]}),p),J=P.inputs.find(se=>(P.settings?.ignoreCascade?P.settings?.ignoreCascade:[]).includes(se)||!f[se]?!1:!f[se].allowed||f[se].hiddenByCascade);if(J){f[T]={allowed:!1,hiddenByCascade:f[J].hiddenByCascade||J},d[T]={},A.splice(A.indexOf(Number(T)),1);return}let ie=new Date,V;typeof window<"u"&&[N.SELECTOR,N.MULTIHIERARCHY_SELECTOR].includes(P.type)&&P.settings[Be.DISABLED]?V=new Promise(se=>{se({outputVariables:d[T],status:f[T]});}):V=os(P,o,{...u,variables:Z,locale:Z.locale},s,c);let Q=await V.then(({outputVariables:se,status:le})=>{if(le.error){if(typeof window>"u")throw new Error(`Run consumers (Block: ${T}, Section ${P.section_id}) failed with message: ${le.error}.`);f[T]={allowed:!1,error:le.error},d[T]={};}(P.consumers.length>0||[N.GENERATOR,N.SECTION_FLAG,N.RELATED].includes(P.type))&&le.allowed&&Object.keys(se).length>0?d[T]=se:d[T]={},i==="report"?(f[T]={allowed:le.allowed},[N.GENERATOR,N.SECTION_FLAG].includes(P.type)&&le.api&&(f[T].api=le.api)):f[T]=le;}),ue=(new Date().getTime()-ie.getTime())/1e3;return Fe&&console.info(`%cBlock ${P.id} resolved in ${ue.toFixed(3)}s`,ue>500?"color:red":"color:green"),f[T].duration=f[T].duration?f[T].duration:ue,A.splice(A.indexOf(Number(T)),1),Q}).catch(Z=>{throw A.splice(A.indexOf(Number(T)),1),Z});A.push(Number(T)),H.set(Number(T),ae);}await Promise.all(Array.from(H.values()));}let F=new Date;await O(x,w);let q=(new Date().getTime()-F.getTime())/1e3;return Fe&&console.info(`%cResolved Variables (${q.toFixed(2)}s), ${x.length} blocks`,"color:green"),{variables:{...a.variables??{},...d},status:{...a.status??{},...f}}};function bu(e=[]){return e.reduce((t,r,o)=>{if(r){let n=o+1;t[`id${n}`]=r.id,t[`name${n}`]=r.name,t[`slug${n}`]=r.slug,"attributes"in r&&Object.keys(r.attributes).forEach(a=>{t[`attr_${a}${n}`]=r.attributes[a];}),t[`variant_id${n}`]=r.variant_id,t[`variant_name${n}`]=r.variant_name,t[`variant_slug${n}`]=r.variant_slug,t[`dimension_id${n}`]=r.dimension_id,t[`dimension_name${n}`]=r.dimension_name,t.report_id=r.report_id,t.report_name=r.report_name;}return t},{})}var Dt=bu;function Su(e,t){return +(e<t)-+(e>t)}function Fr(e,t,r="ordering"){return Su(t[r],e[r])}var{localeDefault:Au}=j();var ir=new schema.Entity("block",{},{mergeStrategy(e,t){return t.block_input?e||{}:{...e,...t}}});ir.define({consumers:[ir],inputs:[ir]});var as=new schema.Entity("variant"),ss=new schema.Entity("dimension",{variants:[as]},{processStrategy(e){return {...e,variants:"variants"in e?e.variants:[]}}}),is=new schema.Entity("section",{blocks:[ir]}),Tu=new schema.Entity("report",{dimensions:[ss],sections:[is]},{processStrategy(e){return {...e,sections:"sections"in e?e.sections.sort(Fr):[]}}}),vu=new schema.Entity("formatter"),_u=new schema.Entity("datasource"),wu={report:Tu,section:is,block:ir,dimension:ss,variant:as,formatter:vu,datasource:_u};function Vr(e,t){let r=wu[e];if(!r)throw new Error(`Invalid entity type: ${e}`);let{entities:o}=normalize(t,[r]);return {report:lt(o,"report"),dimension:lt(o,"dimension"),section:lt(o,"section"),block:lt(o,"block"),variant:lt(o,"variant"),formatter:lt(o,"formatter"),datasource:lt(o,"datasource")}}function lt(e,t){return Object.prototype.hasOwnProperty.call(e,t)?e[t]:{}}var cs=(e,t=void 0)=>{let{sid:r,bid:o,previews:n=[],query:a={}}=t||{},s,i,c={};return r?(s=r,c.activeSection=s):s=e.activeSection,n.length>0?(i=n,c.previews=i.filter(Boolean)):i=e.previews,{parsedParams:{sid:s,bid:o,previews:i,query:a},statusPayload:c}},cr=(e=[],t=Au)=>e.reduce((r,o)=>{let n=On({vars:["n"],logic:o.content.logic},{},t,{});return r[o.name]=n,r},{});var me=process.env.NEXT_PUBLIC_REPORTS_LOCALE_DEFAULT||"en",$r=process.env.NEXT_PUBLIC_REPORTS_LOCALES?.split(",")||[me];$r.includes(me)||$r.push(me);var xu={localeDefault:me,locales:$r,currentLocale:me,preferredLocale:me,showToolbar:!1,activeSection:null,previews:[],query:{},sectionState:{},activeEntity:{type:null,id:null},sidebarStatus:{tools:!0,settings:!1,reportEditor:!1},isCMS:!1,isRunConsumersRunning:[]},qr=createSlice({name:"status",initialState:xu,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]:!0};},closeSidebar(e,t){e.sidebarStatus={...e.sidebarStatus,[t.payload]:!1};},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:{[HYDRATE]:(e,t)=>({...e,previews:t.payload.status.previews})}}),Pe=qr.actions;var Bu={attributes:{},variables:{},status:{}},zr=createSlice({name:"variables",initialState:Bu,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:{[HYDRATE]:(e,t)=>({attributes:{...e.attributes,...t.payload.variables.attributes},status:{...e.status,...t.payload.variables.status},variables:{...e.variables,...t.payload.variables.variables}})}}),Ut=zr.actions;var Mu={tree:[],reports:null,entities:{block:{},dimension:{},report:{},section:{},variant:{},formatter:{},datasource:{}},requests:{block:{},dimension:{},report:{},section:{},variant:{},formatter:{},datasource:{}}},xe=createSlice({name:"records",initialState:Mu,reducers:{set:(e,t)=>{let r=t.payload;return {entities:lr(e.entities,r.entities||{}),requests:lr(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=Vr(r.type,o),a=lr(e.entities,n);if(e.entities=a,r.type==="report"){let s=r.data;e.reports?e.reports.indexOf(s.id)===-1&&(e.reports=[...e.reports,s.id]):e.reports=[s.id];}else if(r.type==="dimension"){let s=r.data;e.entities.report[s.report_id].dimensions.push(s.id),e.entities.report[s.report_id].dimensions=Gr(a.report[s.report_id].dimensions,a.dimension);}else if(r.type==="variant"){let s=r.data;e.entities.dimension[s.dimension_id].variants.push(s.id);}else if(r.type==="section"&&!Array.isArray(r.data)){let s=r.data;e.entities.report[s.report_id].sections.push(s.id),e.entities.report[s.report_id].sections=Gr(a.report[s.report_id].sections,a.section);}else if(r.type==="block")if(Array.isArray(r.data)){let s=r.data,i=s[0],c=s.map(l=>l.id);e.entities.section[i.section_id].blocks.concat(c);}else {let s=r.data;e.entities.section[s.section_id].blocks.push(s.id);}}},setReadRequest(e,t){let r=t.payload;if(r.type!=="report"&&(e.requests[r.type][r.key]=r),r.status==="SUCCESS"){let o=Vr(r.type,r.data),n=lr(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=Vr(r.type,o),a,s,i;if(r.type==="block"&&!Array.isArray(r.data)){let l=e.entities.block[r.data.id].inputs,u=n.block[r.data.id].inputs;a=l.length!==u.length,a&&(i=l.length>u.length,s=i?l.filter(p=>!u.includes(p))[0]:u.filter(p=>!l.includes(p))[0]),Object.values(n.block).forEach(p=>{p.block_input&&delete n.block[p.id];});}let c=lr(e.entities,n);if(e.entities=c,r.type==="dimension"){let l=r.data;e.entities.report[l.report_id].dimensions=Gr(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=Gr(c.report[l.report_id].sections,c.section);}else if(r.type==="block"&&!Array.isArray(r.data)){let l=r.data;a&&(i?e.entities.block[s].consumers=e.entities.block[s].consumers.filter(u=>u!==l.id):e.entities.block[s].consumers.push(l.id));}}},setDeleteRequest(e,t){let r=t.payload;if(e.requests[r.type][r.key]=r,r.status==="SUCCESS"){let{id:o,parentId:n,parentType:a}=r.data;if(delete e.entities[r.type][o],a&&n!=null){let s=`${r.type}s`;Nu(e.entities[a][n][s],o);}}},removeBlocks:(e,t)=>{let r=t.payload,o={...e.entities.block};return r.forEach(n=>{delete o[n];}),{...e,entities:{...e.entities,block:o}}},addBlocks:(e,t)=>{let r=t.payload;return {...e,entities:{...e.entities,block:{...e.entities.block,...r}}}},removeDataSourceLogic:e=>{let t={...e.entities.datasource};Object.keys(t).forEach(r=>{e.entities.datasource[r].content.useProxy&&(delete e.entities.datasource[r].content.logic,delete e.entities.datasource[r].content.testUrl,delete e.entities.datasource[r].content.access);});}},extraReducers:{[HYDRATE]:(e,t)=>{let r=t.payload.records,o=r.entities;return {entities:o,reports:Object.values(o.report).map(n=>n.id),requests:{block:{},dimension:{},report:{},section:{},variant:{},formatter:{},datasource:{}},tree:r.tree}}}});function lr(e,t){return Object.fromEntries(Object.keys(e).map(r=>[r,{...e[r],...t[r]}]))}function Gr(e,t){return e.map(n=>t[n]).sort((n,a)=>typeof n.ordering=="string"&&typeof a.ordering=="string"?Fr(n,a):typeof n.ordering=="number"&&typeof a.ordering=="number"?n.ordering-a.ordering:String(n.ordering).localeCompare(String(a.ordering))).map(n=>n.id)}function Nu(e,t){let r=e.indexOf(t);r>-1&&e.splice(r,1);}function ce(e){for(var t=arguments.length,r=Array(t>1?t-1:0),o=1;o<t;o++)r[o-1]=arguments[o];if(process.env.NODE_ENV!=="production"){var n=Gu[e],a=n?typeof n=="function"?n.apply(null,r):n:"unknown error nr: "+e;throw Error("[Immer] "+a)}throw Error("[Immer] minified error nr: "+e+(r.length?" "+r.map(function(s){return "'"+s+"'"}).join(","):"")+". Find the full error at: https://bit.ly/3cXEKWf")}function Ft(e){return !!e&&!!e[fe]}function dt(e){var t;return !!e&&(function(r){if(!r||typeof r!="object")return !1;var o=Object.getPrototypeOf(r);if(o===null)return !0;var n=Object.hasOwnProperty.call(o,"constructor")&&o.constructor;return n===Object||typeof n=="function"&&Function.toString.call(n)===ju}(e)||Array.isArray(e)||!!e[ys]||!!(!((t=e.constructor)===null||t===void 0)&&t[ys])||$o(e)||qo(e))}function pr(e,t,r){r===void 0&&(r=!1),$t(e)===0?(r?Object.keys:Ho)(e).forEach(function(o){r&&typeof o=="symbol"||t(o,e[o],e);}):e.forEach(function(o,n){return t(n,o,e)});}function $t(e){var t=e[fe];return t?t.i>3?t.i-4:t.i:Array.isArray(e)?1:$o(e)?2:qo(e)?3:0}function No(e,t){return $t(e)===2?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function Du(e,t){return $t(e)===2?e.get(t):e[t]}function hs(e,t,r){var o=$t(e);o===2?e.set(t,r):o===3?e.add(r):e[t]=r;}function Uu(e,t){return e===t?e!==0||1/e==1/t:e!=e&&t!=t}function $o(e){return qu&&e instanceof Map}function qo(e){return zu&&e instanceof Set}function pt(e){return e.o||e.t}function zo(e){if(Array.isArray(e))return Array.prototype.slice.call(e);var t=Ku(e);delete t[fe];for(var r=Ho(t),o=0;o<r.length;o++){var n=r[o],a=t[n];a.writable===!1&&(a.writable=!0,a.configurable=!0),(a.get||a.set)&&(t[n]={configurable:!0,writable:!0,enumerable:a.enumerable,value:e[n]});}return Object.create(Object.getPrototypeOf(e),t)}function Go(e,t){return t===void 0&&(t=!1),jo(e)||Ft(e)||!dt(e)||($t(e)>1&&(e.set=e.add=e.clear=e.delete=Fu),Object.freeze(e),t&&pr(e,function(r,o){return Go(o,!0)},!0)),e}function Fu(){ce(2);}function jo(e){return e==null||typeof e!="object"||Object.isFrozen(e)}function ve(e){var t=Hu[e];return t||ce(18,e),t}function ls(){return process.env.NODE_ENV==="production"||Vt||ce(0),Vt}function Bo(e,t){t&&(ve("Patches"),e.u=[],e.s=[],e.v=t);}function jr(e){Do(e),e.p.forEach(Vu),e.p=null;}function Do(e){e===Vt&&(Vt=e.l);}function us(e){return Vt={p:[],l:Vt,h:e,m:!0,_:0}}function Vu(e){var t=e[fe];t.i===0||t.i===1?t.j():t.g=!0;}function Lo(e,t){t._=t.p.length;var r=t.p[0],o=e!==void 0&&e!==r;return t.h.O||ve("ES5").S(t,e,o),o?(r[fe].P&&(jr(t),ce(4)),dt(e)&&(e=Kr(t,e),t.l||Hr(t,e)),t.u&&ve("Patches").M(r[fe].t,e,t.u,t.s)):e=Kr(t,r,[]),jr(t),t.u&&t.v(t.u,t.s),e!==Rs?e:void 0}function Kr(e,t,r){if(jo(t))return t;var o=t[fe];if(!o)return pr(t,function(i,c){return ps(e,o,t,i,c,r)},!0),t;if(o.A!==e)return t;if(!o.P)return Hr(e,o.t,!0),o.t;if(!o.I){o.I=!0,o.A._--;var n=o.i===4||o.i===5?o.o=zo(o.k):o.o,a=n,s=!1;o.i===3&&(a=new Set(n),n.clear(),s=!0),pr(a,function(i,c){return ps(e,o,n,i,c,r,s)}),Hr(e,n,!1),r&&e.u&&ve("Patches").N(o,r,e.u,e.s);}return o.o}function ps(e,t,r,o,n,a,s){if(process.env.NODE_ENV!=="production"&&n===r&&ce(5),Ft(n)){var i=Kr(e,n,a&&t&&t.i!==3&&!No(t.R,o)?a.concat(o):void 0);if(hs(r,o,i),!Ft(i))return;e.m=!1;}else s&&r.add(n);if(dt(n)&&!jo(n)){if(!e.h.D&&e._<1)return;Kr(e,n),t&&t.A.l||Hr(e,n);}}function Hr(e,t,r){r===void 0&&(r=!1),!e.l&&e.h.D&&e.m&&Go(t,r);}function Oo(e,t){var r=e[fe];return (r?pt(r):e)[t]}function ds(e,t){if(t in e)for(var r=Object.getPrototypeOf(e);r;){var o=Object.getOwnPropertyDescriptor(r,t);if(o)return o;r=Object.getPrototypeOf(r);}}function Uo(e){e.P||(e.P=!0,e.l&&Uo(e.l));}function Mo(e){e.o||(e.o=zo(e.t));}function Fo(e,t,r){var o=$o(t)?ve("MapSet").F(t,r):qo(t)?ve("MapSet").T(t,r):e.O?function(n,a){var s=Array.isArray(n),i={i:s?1:0,A:a?a.A:ls(),P:!1,I:!1,R:{},l:a,t:n,k:null,o:null,j:null,C:!1},c=i,l=Vo;s&&(c=[i],l=ur);var u=Proxy.revocable(c,l),p=u.revoke,d=u.proxy;return i.k=d,i.j=p,d}(t,r):ve("ES5").J(t,r);return (r?r.A:ls()).p.push(o),o}function $u(e){return Ft(e)||ce(22,e),function t(r){if(!dt(r))return r;var o,n=r[fe],a=$t(r);if(n){if(!n.P&&(n.i<4||!ve("ES5").K(n)))return n.t;n.I=!0,o=ms(r,a),n.I=!1;}else o=ms(r,a);return pr(o,function(s,i){n&&Du(n.t,s)===i||hs(o,s,t(i));}),a===3?new Set(o):o}(e)}function ms(e,t){switch(t){case 2:return new Map(e);case 3:return Array.from(e)}return zo(e)}var fs,Vt,Ko=typeof Symbol<"u"&&typeof Symbol("x")=="symbol",qu=typeof Map<"u",zu=typeof Set<"u",gs=typeof Proxy<"u"&&Proxy.revocable!==void 0&&typeof Reflect<"u",Rs=Ko?Symbol.for("immer-nothing"):((fs={})["immer-nothing"]=!0,fs),ys=Ko?Symbol.for("immer-draftable"):"__$immer_draftable",fe=Ko?Symbol.for("immer-state"):"__$immer_state";var Gu={0:"Illegal state",1:"Immer drafts cannot have computed properties",2:"This object has been frozen and should not be mutated",3:function(e){return "Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? "+e},4:"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.",5:"Immer forbids circular references",6:"The first or second argument to `produce` must be a function",7:"The third argument to `produce` must be a function or undefined",8:"First argument to `createDraft` must be a plain object, an array, or an immerable object",9:"First argument to `finishDraft` must be a draft returned by `createDraft`",10:"The given draft is already finalized",11:"Object.defineProperty() cannot be used on an Immer draft",12:"Object.setPrototypeOf() cannot be used on an Immer draft",13:"Immer only supports deleting array indices",14:"Immer only supports setting array indices and the 'length' property",15:function(e){return "Cannot apply patch, path doesn't resolve: "+e},16:'Sets cannot have "replace" patches.',17:function(e){return "Unsupported patch operation: "+e},18:function(e){return "The plugin for '"+e+"' has not been loaded into Immer. To enable the plugin, import and call `enable"+e+"()` when initializing your application."},20:"Cannot use proxies if Proxy, Proxy.revocable or Reflect are not available",21:function(e){return "produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '"+e+"'"},22:function(e){return "'current' expects a draft, got: "+e},23:function(e){return "'original' expects a draft, got: "+e},24:"Patching reserved attributes like __proto__, prototype and constructor is not allowed"},ju=""+Object.prototype.constructor,Ho=typeof Reflect<"u"&&Reflect.ownKeys?Reflect.ownKeys:Object.getOwnPropertySymbols!==void 0?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Object.getOwnPropertyNames,Ku=Object.getOwnPropertyDescriptors||function(e){var t={};return Ho(e).forEach(function(r){t[r]=Object.getOwnPropertyDescriptor(e,r);}),t},Hu={},Vo={get:function(e,t){if(t===fe)return e;var r=pt(e);if(!No(r,t))return function(n,a,s){var i,c=ds(a,s);return c?"value"in c?c.value:(i=c.get)===null||i===void 0?void 0:i.call(n.k):void 0}(e,r,t);var o=r[t];return e.I||!dt(o)?o:o===Oo(e.t,t)?(Mo(e),e.o[t]=Fo(e.A.h,o,e)):o},has:function(e,t){return t in pt(e)},ownKeys:function(e){return Reflect.ownKeys(pt(e))},set:function(e,t,r){var o=ds(pt(e),t);if(o?.set)return o.set.call(e.k,r),!0;if(!e.P){var n=Oo(pt(e),t),a=n?.[fe];if(a&&a.t===r)return e.o[t]=r,e.R[t]=!1,!0;if(Uu(r,n)&&(r!==void 0||No(e.t,t)))return !0;Mo(e),Uo(e);}return e.o[t]===r&&(r!==void 0||t in e.o)||Number.isNaN(r)&&Number.isNaN(e.o[t])||(e.o[t]=r,e.R[t]=!0),!0},deleteProperty:function(e,t){return Oo(e.t,t)!==void 0||t in e.t?(e.R[t]=!1,Mo(e),Uo(e)):delete e.R[t],e.o&&delete e.o[t],!0},getOwnPropertyDescriptor:function(e,t){var r=pt(e),o=Reflect.getOwnPropertyDescriptor(r,t);return o&&{writable:!0,configurable:e.i!==1||t!=="length",enumerable:o.enumerable,value:r[t]}},defineProperty:function(){ce(11);},getPrototypeOf:function(e){return Object.getPrototypeOf(e.t)},setPrototypeOf:function(){ce(12);}},ur={};pr(Vo,function(e,t){ur[e]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)};}),ur.deleteProperty=function(e,t){return process.env.NODE_ENV!=="production"&&isNaN(parseInt(t))&&ce(13),ur.set.call(this,e,t,void 0)},ur.set=function(e,t,r){return process.env.NODE_ENV!=="production"&&t!=="length"&&isNaN(parseInt(t))&&ce(14),Vo.set.call(this,e[0],t,r,e[0])};var Wu=function(){function e(r){var o=this;this.O=gs,this.D=!0,this.produce=function(n,a,s){if(typeof n=="function"&&typeof a!="function"){var i=a;a=n;var c=o;return function(R){var g=this;R===void 0&&(R=i);for(var S=arguments.length,w=Array(S>1?S-1:0),_=1;_<S;_++)w[_-1]=arguments[_];return c.produce(R,function(C){var x;return (x=a).call.apply(x,[g,C].concat(w))})}}var l;if(typeof a!="function"&&ce(6),s!==void 0&&typeof s!="function"&&ce(7),dt(n)){var u=us(o),p=Fo(o,n,void 0),d=!0;try{l=a(p),d=!1;}finally{d?jr(u):Do(u);}return typeof Promise<"u"&&l instanceof Promise?l.then(function(R){return Bo(u,s),Lo(R,u)},function(R){throw jr(u),R}):(Bo(u,s),Lo(l,u))}if(!n||typeof n!="object"){if((l=a(n))===void 0&&(l=n),l===Rs&&(l=void 0),o.D&&Go(l,!0),s){var f=[],m=[];ve("Patches").M(n,l,f,m),s(f,m);}return l}ce(21,n);},this.produceWithPatches=function(n,a){if(typeof n=="function")return function(l){for(var u=arguments.length,p=Array(u>1?u-1:0),d=1;d<u;d++)p[d-1]=arguments[d];return o.produceWithPatches(l,function(f){return n.apply(void 0,[f].concat(p))})};var s,i,c=o.produce(n,a,function(l,u){s=l,i=u;});return typeof Promise<"u"&&c instanceof Promise?c.then(function(l){return [l,s,i]}):[c,s,i]},typeof r?.useProxies=="boolean"&&this.setUseProxies(r.useProxies),typeof r?.autoFreeze=="boolean"&&this.setAutoFreeze(r.autoFreeze);}var t=e.prototype;return t.createDraft=function(r){dt(r)||ce(8),Ft(r)&&(r=$u(r));var o=us(this),n=Fo(this,r,void 0);return n[fe].C=!0,Do(o),n},t.finishDraft=function(r,o){var n=r&&r[fe];process.env.NODE_ENV!=="production"&&(n&&n.C||ce(9),n.I&&ce(10));var a=n.A;return Bo(a,o),Lo(void 0,a)},t.setAutoFreeze=function(r){this.D=r;},t.setUseProxies=function(r){r&&!gs&&ce(20),this.O=r;},t.applyPatches=function(r,o){var n;for(n=o.length-1;n>=0;n--){var a=o[n];if(a.path.length===0&&a.op==="replace"){r=a.value;break}}n>-1&&(o=o.slice(n+1));var s=ve("Patches").$;return Ft(r)?s(r,o):this.produce(r,function(i){return s(i,o)})},e}(),ge=new Wu,Ju=ge.produce;ge.produceWithPatches.bind(ge);ge.setAutoFreeze.bind(ge);ge.setUseProxies.bind(ge);ge.applyPatches.bind(ge);ge.createDraft.bind(ge);ge.finishDraft.bind(ge);var Wr=Ju;var Ee=xe.actions,As=dr({block:Ve("block"),dimension:Ve("dimension"),formatter:Ve("formatter"),report:Ve("report"),section:Ve("section"),variant:Ve("variant"),datasource:Ve("datasource")}),oe=dr({block:$e("block"),dimension:$e("dimension"),formatter:$e("formatter"),report:$e("report"),section:$e("section"),variant:$e("variant"),datasource:$e("datasource")}),Ts=dr({block:_e("block"),dimension:_e("dimension"),formatter:_e("formatter"),report:_e("report"),section:_e("section"),variant:_e("variant"),datasource:_e("datasource")}),vs=dr({block:mt("block"),dimension:mt("dimension"),formatter:mt("formatter"),report:mt("report"),section:mt("section"),variant:mt("variant"),datasource:mt("datasource")}),_s=dr({block:Ss("block"),section:Ss("section")});function dr(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 gt(e,t){return (r,o)=>{let a=o().records.requests[e][t],s=!a||a.status==="UNINITIALIZED"?"LOADING":"FETCHING";r(Ee.setRequest({key:t,type:e,status:s}));}}function ft(e,t,r,o){return n=>{typeof window=="object"&&notifications.show({autoClose:3e3,color:"red",id:t,message:o,title:"Error"}),n(Ee.setRequest({key:t,type:e,status:"FAILURE",error:{code:r,message:o}}));}}function Ve(e){return t=>{let r=Jo(e,t);return (o,n,a)=>(o(gt(e,r)),pe(a,"create",e)(t).then(i=>(i.ok===!0?o(Ee.setCreateRequest({key:r,operation:"create",status:"SUCCESS",type:e,data:i.data})):o(ft(e,r,i.status,i.error)),i)))}}function Zu(e){return t=>{let r=Jo(e,t[0]);return (o,n,a)=>(o(gt(e,r)),pe(a,"createBulk",e)(t).then(i=>(i.ok===!0?o(Ee.setCreateRequest({key:r,operation:"createBulk",status:"SUCCESS",type:e,data:i.data})):o(ft(e,r,i.status,i.error)),i)))}}function bs(e,t,r){return r.replace(new RegExp(e,"g"),t)}function Xu(e){return e.section_id!==void 0}function ep(e){return e.report_id!==void 0}function Ss(e){return t=>{let{create:r}=t;return (o,n,a)=>Ve(e)(r)(o,n,a).then(async i=>{if(i.ok){let{data:c}=i,{id:l}=c,{update:u}=t,p=Ps(e,{id:l});if(o(gt(e,`${p}`)),e==="block"&&Xu(r)){let d=Wr(u,g=>{g.id=l;}),{contentByLocale:f}=d;f&&(d=Wr(d,g=>{g.id=l,g.contentByLocale=Object.keys(f).reduce((S,w)=>{let _=f?f[w]:{};return S[w]={..._,id:l},S},{});}));let R=d.inputs?.map(g=>({type:g.type,id:g.id,inputAction:{operation:"create",input:{input_id:g.id,block_id:d.id}}}));return R&&R.length>0&&Es(e)([d,...R])(o,n,a).then(()=>$e("section")({id:d.section_id,include:!0})(o,n,a).then(g=>(g.ok&&o(Ee.setRequest({key:p,type:e,status:"SUCCESS",data:g.data})),g))),_e(e)(d)(o,n,a).then(g=>(g.ok&&o(Ee.setRequest({key:p,type:e,status:"SUCCESS",data:g.data})),g))}if(e==="section"&&ep(r)){let{id:d}=c,f=Wr(u,g=>{g.id=d;}),{blocks:m}=f,R=m?.map(g=>({type:g.type,blockcol:g.blockcol,blockrow:g.blockrow,section_id:d,locales:Object.keys(g.contentByLocale).map(S=>S)}));return R&&m&&await Zu("block")(R)(o,n,a).then(g=>{if(g.ok){let S=g.data,w=[],_=S.map((C,x)=>{let L={...C},U=L.id,v=m[x];v.contentByLocale&&(L.contentByLocale=Object.keys(v.contentByLocale).reduce((A,b)=>{let T=v.contentByLocale[b];return A[b]={...T,content:{...T.content},id:L.id},A},{}));let{settings:O}=v,{contentByLocale:F,id:B}=L;L.settings=O;let q={id:B,contentByLocale:F,settings:O};return v.inputs.map(A=>A.id).reduce((A,b)=>{let T=m.findIndex(P=>P.id===b);return [...A,T]},[]).map(A=>({...S[A],originalBlock:m[A]})).forEach(A=>{let{id:b,type:T,originalBlock:P}=A;if([N.SELECTOR,N.VIZ].includes(T)){if(q.contentByLocale?.logic?.content?.api){let ne=q.contentByLocale?.logic.content.api;q.contentByLocale.logic.content.api=bs(`(selector${P.id}id)`,`selector${b}id`,ne);}if(q.contentByLocale?.logic?.content?.logic){let ne=q.contentByLocale.logic.content.logic;q.contentByLocale.logic.content.logic=bs(`(selector${P.id}id)`,`selector${b}id`,ne);}}w.push({id:b,inputAction:{operation:"create",input:{input_id:b,block_id:U}}});}),q});return Es("block")([..._,...w])(o,n,a)}}),_e(e)(f)(o,n,a).then(g=>(g.ok&&o(Ee.setRequest({key:p,type:e,status:"SUCCESS",data:g.data})),g))}return _e(e)({...u,id:c.id})(o,n,a)}})}}function $e(e){return t=>{let r=ws(e,t);return (o,n,a)=>{o(gt(e,r));let s=pe(a,"read",e);if(typeof s!="function"){let i=`Failed to get valid RPC method for entity "${e}"`;return o(ft(e,r,500,i)),Promise.reject(new Error(i))}return s(t).then(i=>(i.ok===!0?o(Ee.setReadRequest({key:r,operation:"read",status:"SUCCESS",type:e,data:i.data})):o(ft(e,r,i.status,i.error)),i))}}}function _e(e){return t=>{let r=Yo(e,t);return (o,n,a)=>(o(gt(e,r)),pe(a,"update",e)(t).then(i=>(i.ok===!0?o(Ee.setUpdateRequest({key:r,operation:"update",status:"SUCCESS",type:e,data:i.data})):o(ft(e,r,i.status,i.error)),i)))}}function Es(e){return t=>{let r=Yo(e,t[0]);return (o,n,a)=>(o(gt(e,r)),pe(a,"updateBulk",e)(t).then(i=>(i.ok===!0?o(Ee.setUpdateRequest({key:r,operation:"updateBulk",status:"SUCCESS",type:e,data:i.data})):o(ft(e,r,i.status,i.error)),i)))}}function mt(e){return t=>{let r=ks(e,t);return (o,n,a)=>(o(gt(e,r)),pe(a,"delete",e)(t).then(i=>{i.ok===!0?o(Ee.setDeleteRequest({key:r,operation:"delete",status:"SUCCESS",type:e,data:i.data})):o(ft(e,r,i.status,i.error));}))}}function Jo(e,t){if(e==="variant"){let r=t;return `create(variant, [${r.dimension_id}, ${r.name}])`}return `create(${e}, [${Object.keys(t)}])`}function ws(e,t={}){let r=t.id==null?null:`'${t.id}'`;return `read(${e}, ${r}, ${!!t.include})`}function Yo(e,t){let{id:r,...o}=t;return `update(${e}, ${r}, [${Object.keys(o)}])`}function ks(e,t){return `delete(${e}, ${t})`}function Ps(e,t){let r=t.id==null?null:`'${t.id}'`;return `clone(${e}, ${r})`}var{setStatus:xs,setPreviews:tp,setSectionState:Is,resetSectionState:Cs,setCurrentLocale:rp,setPreferredLocale:op,addRunConsumersRunning:Bs,removeRunConsumersRunning:Ls}=Pe;function np(e,t){return async(r,o,n)=>{let a=await n.validateVariantSlug({dimension:e,slug:t});if("error"in a)throw new Error(a.error);return a.data}}function ap(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 sp(){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 qe(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 ip(e){return async(t,r,o)=>{let n=await o.searchMember(e);if(n.ok===!0)return n.data;throw new Error(n.error)}}async function Os(e,t,r,o){let n=r().status,a={...n,...o},s={...n.query,...o.query};Object.keys(s).forEach(c=>s[c]===void 0&&delete s[c]);let i={...a,query:s};t(xs(i)),n.activeSection&&t(Ms(e,{query:s}));}function cp(e,t){return async(r,o)=>Os(e,r,o,{query:{[t]:void 0}})}function lp(e,t,r){return async(o,n)=>Os(e,o,n,{query:{[t]:r}})}function Ms(e,t){return async(r,o)=>{let n=o(),{currentLocale:a}=n.status,s=n.records.entities.block,i=e.formatterFunctions[a],c=e.datasourceFunctions,{parsedParams:l,statusPayload:u}=cs(n.status,t),{sid:p,bid:d,previews:f,query:m}=l;Object.keys(u).length&&r(Pe.setStatus(u));let R={...Dt(f),locale:a,...de()},g={variables:R,query:m,locale:a};r(Pe.addRunConsumersRunning([p]));let S=n.records.entities.section[p],w=async _=>r(qe(_));try{let _=await Nt(s,S&&[S],d,i,g,void 0,w,"section",c),{variables:C,status:x}=_;r(Ut.setVariableChange({attributes:R,variables:C,status:x})),r(Pe.removeRunConsumersRunning([p]));}catch(_){console.error("Error in runConsumers client side: recalculateVariables",_);}}}function mr(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 up(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 pp(){return async(e,t,r)=>{let o=await r.searchRole("");if("error"in o)throw new Error(o.error);return o.data}}function dp(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 mp(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 fp({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 gp(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 ze(e){let{removeBlocks:t}=xe.actions;return async r=>{await r(t(e));}}function fr(e){let{addBlocks:t}=xe.actions;return async r=>{await r(t(e));}}function yp(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 hp(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 Rp(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 bp(){return async(e,t,r)=>{let o=await r.readEnvSecrets({});if("error"in o)throw new Error(o.error);return o.data}}function gr(){let{removeDataSourceLogic:e}=xe.actions;return async t=>{await t(e());}}var Ns=()=>configureStore({reducer:{[xe.name]:xe.reducer,[qr.name]:qr.reducer,[zr.name]:zr.reducer},middleware(e){return e({thunk:{extraArgument:sr("/api/cms/")}})}}),ht=createWrapper(Ns);function vp(e){let t=process.cwd(),r=Tp.resolve(t.endsWith("/example")?t.replace("/example",""):t,"package-lock.json"),o;try{let n=JSON.parse(ol.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 _p(e){let t=()=>Promise.resolve({}),{pathSegmentsKey:r="bespoke",preResolve:o=t,postResolve:n=t,authOptions:a={providers:[]}}=e||{};return ht.getServerSideProps(s=>{let{dispatch:i}=s;return async c=>{let l=await ye(c.req,c.res,a);if(!l)return {redirect:{destination:"/api/auth/signin?callbackUrl=/cms",permanent:!1}};let u=new Set([z.ADMIN,z.EDITOR,z.WRITER]);if(!(l?.user?.bespoke_roles||[]).some(S=>u.has(S)))return {redirect:{destination:"/",permanent:!1}};let d=c.query[r],[f]=Array.isArray(d)?d:[d];await i(at);let m=await vp("@datawheel/bespoke"),R=await o(s,c);if("redirect"in R)return {props:R};f==="reports"&&(Ds(c.query[r])?await Promise.all([i(oe("formatter",{})),i(oe("datasource",{include:!0})),i(oe("report",{id:Ds(c.query[r]),include:!0})),Pe.setStatus({isCMS:!0})]):await Promise.all([i(oe("report",{include:"dimensions"})),Pe.setStatus({isCMS:!0})])),f==="metadata"&&await i(oe("report",{include:"dimensions"})),f==="formatters"&&await i(oe("formatter",{})),f==="datasources"&&await i(oe("datasource",{include:!0}));let g=await n(s,c);return {props:{...R,...g,bespokeVersion:m,session:l}}}})}function Ds(e){if(e==null||e==="")return;let[,t]=Array.isArray(e)?e:[e];return Number.parseInt(t)||void 0}var {locales:kp}=j(),Pp={pathSegment:"path",formatterFunctions:kp.reduce((e,t)=>({...e,[t]:{}}),{}),datasourceFunctions:[],profilePrefix:"path",siteProps:{}};createContext(Pp);j();var Yr=e=>e.records.entities.block;function qt(e){return t=>Object.values(t.records.entities[e])}var Qr=qt("section"),Zr=qt("formatter"),Gp=de();function Xr(e){return Object.values(e.records.entities.datasource||[]).sort((t,r)=>t.content.order>r.content.order?1:-1).map(t=>{let r={...Gp};return {...t,content:{...t.content,pattern:Re(t.content.pattern,{},{variables:r})}}})}var jp=async(e,t,r,o,n)=>{if(e.length===0)throw new Error("No slugs provided");let a=await t(r({mode:"slugs",locale:n,slugs:e,output:"full"})),s=a.results[0].report_id;if(a.results.length>1){if(a.results.every(m=>m.report_id===s)===!1)throw new Error("Members belong to different reports");let l=a.results.map(m=>m.dimension_id),u=new Set(l);if(l.length!==u.size)throw new Error("Members belong to same dimensions");let p=a.results.sort((m,R)=>m.dimension_ordering>R.dimension_ordering?1:-1).reduce((m,R,g)=>(m[R.variant_slug]=g,m),{}),d=e.reduce((m,R,g)=>(m[R.variantSlug]=g,m),{});if(!(Object.keys(p).length===Object.keys(d).length&&Object.keys(p).every(m=>Object.prototype.hasOwnProperty.call(d,m)&&p[m]===d[m])))throw new Error("Variant slugs do not match the expected dimension order")}let c=(await t(o({report_id:s,count:!1}))).data.find(l=>l.id===s);if(!c||a.results.length!==c.dimensions.length)throw new Error(`Missing members for report ID ${s}`);return a},eo=jp;function Kp(e){let{fallback:t=!0,limit:r=50}=e||{};return async o=>{let{defaultLocale:n=me,locales:a=[]}=o,s=[];if(r>0){let i=a.find(u=>u===n),{searchMember:c}=await tt().then(Lt),l=await c({query:"",limit:r,format:"plain",locale:i||me,noImage:!1,visible:!0,report:[],dimension:[],variant:[],includes:!0});l.ok===!0&&(s=l.data.results.map(u=>({locale:a.find(p=>p===u.locale),params:{bespoke:[u.variant.slug,u.slug]}})));}return {fallback:t,paths:s}}}function Hp(e){let{pathSegmentsKey:t="bespoke"}=e||{};try{return ht.getStaticProps(r=>{let{dispatch:o}=r;return async n=>{await o(at);let a=new Date().toISOString(),{locale:s=me,params:i={}}=n,c=Array.from(Zo(i[t])),l;try{l=await eo(c,o,qe,mr,s);}catch(v){return console.error("[Bespoke slug validation Failed]: Return 404:",v.message,`[${s}] -> /${c.map(O=>`${O.variantSlug}/${O.memberSlug}`).join("/")}`),{notFound:!0}}o(yt.setPreviews(l.results)),await Promise.all([o(oe("formatter",{})),o(oe("datasource",{include:!0})),o(oe("report",{id:l.results.map(v=>v.report_id),include:!0,locales:[s]}))]);let u=r.getState(),p=Zr(u),d=Xr(u),f=cr(p,s),m=Qr(u),R=Yr(u),g={...R},S={},w=Object.values(R).reduce((v,O)=>("access"in O.settings&&!["public","guest"].some(F=>!O.settings.access||O.settings.access.includes(F))&&v.push(O.id),v),[]),_=w.filter(v=>g[v].settings[Be.FALLBACK]),C=Array.from(new Set([..._,...be(_,Object.values(g))])),x=w.filter(v=>[N.SELECTOR,N.MULTIHIERARCHY_SELECTOR].includes(g[v].type)),$=Array.from(new Set([...x,...be(x,Object.values(g))]));w=Array.from(new Set([...w,...C,...$,...be(w,Object.values(g))])),w.forEach(v=>{_.includes(v)?(S[v]={...g[v],type:N.FALLBACK,original_type:g[v].type},delete g[v]):x.includes(v)&&(S[v]={...g[v],settings:{...g[v].settings,[Be.DISABLED]:!0}},delete g[v]),$.includes(v)||delete g[v];}),await o(ze(w.filter(v=>!$.includes(v)))),await o(fr(S));let L={...Dt(l.results),locale:s,...de()},U=async v=>await o(qe(v));return await Nt({...g,...S},m,void 0,f,{locale:s,query:i,variables:L},void 0,U,"report",d).then(async v=>{let O=Object.keys({...g,...S}).reduce((F,B)=>(v.variables[B]&&v.status[B]||F.push(B),F),[]);await o(ze(O)),await o(Ut.setVariableChange({...v,attributes:L})),await o(gr());}),{props:{buildTime:a}}}})}catch(r){console.error("ERROR SSR",r);}}function Zo(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 Wp(e){let{pathSegmentsKey:t="bespoke"}=e||{};try{return ht.getServerSideProps(r=>{let{dispatch:o}=r;return async n=>{let{section:a,block:s}=n.query,i=Object.fromEntries(Object.entries(n.query).filter(([k])=>k.match(/selector\d+id/)));if(!a&&!s)return {notFound:!0};let c=Number(a);await o(at);let l=new Date().toISOString(),{locale:u=me,params:p={},req:d}=n,f=Array.from(Zo(p[t])),m;try{m=await eo(f,o,qe,mr,u);}catch(k){return console.error("[Bespoke slug validation Failed]: Return 404:",k.message,`/${u}/${d.url}`),{notFound:!0}}o(yt.setPreviews(m.results)),await Promise.all([o(oe("formatter",{})),o(oe("datasource",{include:!0})),o(oe("report",{id:m.results.map(k=>k.report_id),include:!0,locales:[u]}))]);let R=r.getState(),g=Zr(R),S=Xr(R),w=cr(g,u),_=Qr(R).filter(k=>k.id===c),C=Yr(R),x={...C},$={},L=Object.values(C).reduce((k,H)=>("access"in H.settings&&!["public","guest"].some(A=>!H.settings.access||H.settings.access.includes(A))&&k.push(H.id),k),[]),U=L.filter(k=>x[k].settings[Be.FALLBACK]),v=Array.from(new Set([...U,...be(U,Object.values(x))])),O=L.filter(k=>[N.SELECTOR,N.MULTIHIERARCHY_SELECTOR].includes(x[k].type)),F=Array.from(new Set([...O,...be(O,Object.values(x))]));L=Array.from(new Set([...L,...v,...F,...be(L,Object.values(x))])),L.forEach(k=>{U.includes(k)?($[k]={...x[k],type:N.FALLBACK,original_type:x[k].type},delete x[k]):O.includes(k)&&($[k]={...x[k],settings:{...x[k].settings,[Be.DISABLED]:!0}},delete x[k]),F.includes(k)||delete x[k];}),await o(ze(L.filter(k=>!F.includes(k)))),await o(fr($));let B={...Dt(m.results),locale:u,...de()},q=async k=>await o(qe(k));await Nt({...x,...$},_,void 0,w,{locale:u,query:{...p,...i},variables:B},void 0,q,"section",S).then(async k=>{let H=Object.keys({...x,...$}).reduce((A,b)=>(k.variables[b]&&k.status[b]||A.push(b),A),[]);await Promise.all([o(ze(H)),o(Ut.setVariableChange({...k,attributes:B})),o(gr())]);});let M=Object.keys({...x,...$}).filter(k=>a&&s?k!==s:x[k]&&x[k].section_id!==c);return await o(ze(M)),{props:{buildTime:l}}}})}catch(r){return console.error("ERROR SSR",r),async()=>({notFound:!0})}}
74
-
75
- export { Wp as BespokeEmbedServerSideProps, Gl as BespokeEndpointNextJsHandlerFactory, ye as BespokeGetSession, Zs as BespokeHandleAuth, _p as BespokeManagerServerSideProps, Kp as BespokeRendererStaticPaths, Hp as BespokeRendererStaticProps, ii as BespokeSearchUsersByMetadata, ti as BespokeUpdateCurrentUserAppMetadata, oi as BespokeUpdateCurrentUserMetadata, ai as BespokeWithApiRoleAuthRequired, Kl as ReportCrosswalkHandler, Lt as dbApiFactory, vo as endpointKey, tt as getDB, at as useDatabaseApi };
28
+ `)}));}let _=await Promise.all(N).catch(L=>L.message);if(typeof _=="string"&&_)return {outputVariables:{},renderVariables:{},status:{error:_}};l=_.length===1?_[0].data:_.map(L=>L.data),m=_.reduce((L,D)=>L+JSON.stringify(D.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:N,error:_}=uo(e.id,e.contentByLocale[a].content.logic,t,r,true);return {outputVariables:Rs(e.id,i,B),renderVariables:B,status:{log:N,error:_,allowed:c}}}if(e.type===O.MULTIHIERARCHY_SELECTOR){let{config:B,log:N,error:_}=mo(e.id,e.contentByLocale[a].content.logic,t,r,true);return {outputVariables:hs(e.id,i,B),renderVariables:B,status:{log:N,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",N=e.contentByLocale?.logic?.content?.simple?.limit||4,_=Object.keys(s).filter(b=>b.startsWith("report_id")).map(b=>s[b]),L=Object.keys(s).filter(b=>b.startsWith("dimension_id")).map(b=>s[b]),D=Object.keys(s).filter(b=>b.startsWith("variant_id")).map(b=>s[b]),C=Object.keys(s).filter(b=>b.startsWith("id")).map(b=>s[b]);if(!C.length)return {outputVariables:{related_reports:[]},renderVariables:{},status:{log:[],allowed:false}};let q=await Promise.all(C.map((b,A)=>o({mode:"ids",locale:a,ids:[b],output:"lite",variant:[D[A]]}))).then(b=>b.flatMap(A=>{let I=[];return wr(A)?A.ok&&(I=A.data.results):I=A.results,I&&Array.isArray(I)?I:[]})).catch(b=>(console.error("Error getting related members",b),[]));if(L.length>1){let b=Object.keys(s).filter(V=>V.startsWith("variant_slug")).map(V=>s[V]),A=q.map((V,Q)=>{let j={mode:"related",locale:a,related:N??4,current_ids:[V.content_id],output:"full",variant_ids:[V.variant_id]};return Q===0&&(j.include_ids=[V.content_id]),j}),I=await Promise.all(A.map(V=>o(V))).then(V=>V.flatMap(Q=>{let j=[];return wr(Q)?Q.ok&&(j=Q.data.results):j=Q.results,j&&Array.isArray(j)?j:[]})).catch(V=>(console.error("Error getting related members",V),[])),ne=I.reduce((V,Q)=>{let j=Q.variant_slug;return V[j]||(V[j]=[]),V[j].push(Q),V},{}),se=[],Z=Object.keys(ne),W=[{combination:[],index:0}];for(;W.length>0;){let V=W.pop();if(!V)continue;let{combination:Q,index:j}=V;if(j===Z.length){se.push(Q);continue}let le=Z[j],ae=ne[le];for(let ce of ae)W.push({combination:[...Q,ce],index:j+1});}return {outputVariables:{related_reports:se.map(V=>{let Q=V.sort((j,le)=>b.indexOf(j.variant_slug)-b.indexOf(le.variant_slug));return {entities:Q,link:"/"+Q.map(j=>`${j.variant_slug}/${j.slug}`).join("/")}})},renderVariables:{},status:{log:[],allowed:I.length>0}}}let M=q.map(b=>b.content_id),k={mode:"related",locale:a,related:N??4,current_ids:M,output:"full"};B&&(B==="report"?k.report_ids=_:B==="dimension"?k.dimension_ids=L:k.variant_ids=D);let Y=await o(k).then(b=>{let A=[];return wr(b)?b.ok&&(A=b.data.results):A=b.results,A&&Array.isArray(A)?A:[]}).catch(b=>(console.error("Error getting related members",b),[]));return {outputVariables:{related_reports:Y.map(b=>({entities:[b],link:`/${b.variant_slug}/${b.slug}`}))},renderVariables:{},status:{log:[],allowed:Y.length>0}}}let{logic:y}=Ss(e,a),S=fe(y,t,r),x=nt("resp",l||{},S,t,s,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 $=Object.keys(P).reduce((B,N)=>({...B,[`${e.type}${e.id}${N}`]:P[N]}),{});return {renderVariables:P,outputVariables:[O.GENERATOR,O.SECTION_FLAG].includes(e.type)?P:$,status:{log:w,error:F,duration:u,responseSize:m,resp:l,api:f,allowed:c,apiFinalUrls:h,apiDataSources:d}}}function El(e,t,r,o,n,a,s){return e.consumers.forEach(i=>{if(t[i]){let c=`${r}-${i}`;!o.includes(c)&&(t[i].section_id===t[r].section_id||!n)&&o.push(c),e.consumers.filter(l=>t[l]&&t[l].section_id===t[r].section_id||!n).forEach(l=>yo(l,t,o,false,a,n,s));}})}var yo=(e,t,r=[],o=true,n=true,a=true,s=[])=>{if(s.includes(e))return [];s.push(e);let i=t[e];return i&&i.inputs.length&&o&&i.inputs.forEach(c=>{let l=`${c}-${e}`;r.includes(l)||r.push(l),i.inputs.forEach(p=>yo(p,t,r,o,false,a,s));}),i&&i.consumers.length&&n&&El(i,t,e,r,a,n,s),r},Al=(e,t,r,o)=>{let n=true;if(e&&"allowed"in e.settings&&e.settings.allowed!=="always")if(e.settings.allowed==="never")n=false;else {let a=me(t),{error:s,output:i}=nt("variables",r,e.settings.allowedLogic||"return false;",o,void 0,a);s||(n=!!i);}return n},It=async(e,t,r,o,n,a={},s,i="section",c)=>{let l=i==="section",p=me(n),u=p.variables,m={...a.variables??{}},f={...a.status??{}},d=new Set,h=[],y={};r?y={...y,[r]:e[r]}:t?y=(t??[]).reduce((M,{id:k})=>({...M,...Es(k,e)}),{}):y=Object.values(e).filter(M=>fo(M)).reduce((M,k)=>({...M,[k.id]:k}),{});let S=Object.values(y).filter(M=>fo(M));if(S.length>0){Oe&&console.info("%crunConsumers: calculating section flags","color:purple",S.map(E=>E.id).join(", "));let M=Object.fromEntries(await Promise.all(S.map(async E=>[E.id,await _s(E,o,{...p,variables:u,locale:u.locale},s,c).then(b=>{let{outputVariables:A,status:I}=b;if(I.error){if(typeof window>"u")throw new Error(`Run consumers (Block: ${E.id}, Section ${E.section_id}) failed with message: ${I.error}. `);f[E.id]={allowed:false,error:I.error},m[E.id]={};}return (E.consumers.length>0||[O.GENERATOR,O.SECTION_FLAG,O.RELATED].includes(E.type))&&I.allowed&&Object.keys(A).length>0?m[E.id]=A:m[E.id]={},i==="report"?(f[E.id]={allowed:I.allowed},[O.GENERATOR,O.SECTION_FLAG].includes(E.type)&&I.api&&(f[E.id].api=I.api)):f[E.id]=I,b})]))),Y=Object.entries(M).filter(([,E])=>!E.outputVariables[kn]).map(([E])=>Number(E));d=new Set(Y.map(E=>e[E].section_id)),Object.values(y).filter(E=>d.has(E.section_id)).forEach(E=>{h.push(E.id),delete y[E.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 Y={...k,inputs:k.inputs.filter(E=>!h.includes(E)),consumers:k.consumers.filter(E=>!h.includes(E))};return [M,Y]}))),!r&&!t)return {variables:{...a.variables??{},...m},status:{...a.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(y));let P=Object.keys(y).reduce((M,k)=>{let Y=new Date,E=yo(Number(k),x,[],!r,true,l).map(I=>I.split("-")),A=(new Date().getTime()-Y.getTime())/1e3;return Oe&&console.info(`%cResolved dependencies for ${k} (${A.toFixed(2)}s)`,"color:blue"),[...M,...E]},[]),F=new Date,w=Object.keys(y).reduce((M,k)=>M.includes(k)?[...M]:[k,...M],pl(P)),B=(new Date().getTime()-F.getTime())/1e3;Oe&&console.info(`%cResolved DAG (${B.toFixed(2)}s): `,"color:green",w);let N=process.env.NEXT_PUBLIC_REPORTS_MAX_CONCURRENT_QUERIES_PER_REPORT,_=parseInt(`${N||0}`,10);async function L(M,k){let Y=new Map,E=[],b=async()=>E.length;for(let A of M){if(_!==0){let Z=await b();for(;Z>=_;)Oe&&console.info("Too many pending promises, waiting...",Z,E),await new Promise(W=>setTimeout(W,500)),Z=await b();}let I=k[A],se=Promise.all(I.inputs.filter(Z=>M.includes(String(Z))).map(Z=>Y.get(Number(Z)))).then(async()=>{let Z=I.inputs.reduce((ae,ce)=>({...ae,...m[ce]}),u),W=I.inputs.find(ae=>(I.settings?.ignoreCascade?I.settings?.ignoreCascade:[]).includes(ae)||!f[ae]?false:!f[ae].allowed||f[ae].hiddenByCascade);if(W){f[A]={allowed:false,hiddenByCascade:f[W].hiddenByCascade||W},m[A]={},E.splice(E.indexOf(Number(A)),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(ae=>{ae({outputVariables:m[A],status:f[A]});}):V=_s(I,o,{...p,variables:Z,locale:Z.locale},s,c);let Q=await V.then(({outputVariables:ae,status:ce})=>{if(ce.error){if(typeof window>"u")throw new Error(`Run consumers (Block: ${A}, Section ${I.section_id}) failed with message: ${ce.error}.`);f[A]={allowed:false,error:ce.error},m[A]={};}(I.consumers.length>0||[O.GENERATOR,O.SECTION_FLAG,O.RELATED].includes(I.type))&&ce.allowed&&Object.keys(ae).length>0?m[A]=ae:m[A]={},i==="report"?(f[A]={allowed:ce.allowed},[O.GENERATOR,O.SECTION_FLAG].includes(I.type)&&ce.api&&(f[A].api=ce.api)):f[A]=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[A].duration=f[A].duration?f[A].duration:le,E.splice(E.indexOf(Number(A)),1),Q}).catch(Z=>{throw E.splice(E.indexOf(Number(A)),1),Z});E.push(Number(A)),Y.set(Number(A),se);}await Promise.all(Array.from(Y.values()));}let D=new Date;await L(w,x);let q=(new Date().getTime()-D.getTime())/1e3;return Oe&&console.info(`%cResolved Variables (${q.toFixed(2)}s), ${w.length} blocks`,"color:green"),{variables:{...a.variables??{},...m},status:{...a.status??{},...f}}};function Tl(e=[]){return e.reduce((t,r,o)=>{if(r){let n=o+1;t[`id${n}`]=r.id,t[`name${n}`]=r.name,t[`slug${n}`]=r.slug,"attributes"in r&&Object.keys(r.attributes).forEach(a=>{t[`attr_${a}${n}`]=r.attributes[a];}),t[`variant_id${n}`]=r.variant_id,t[`variant_name${n}`]=r.variant_name,t[`variant_slug${n}`]=r.variant_slug,t[`dimension_id${n}`]=r.dimension_id,t[`dimension_name${n}`]=r.dimension_name,t.report_id=r.report_id,t.report_name=r.report_name;}return t},{})}var vt=Tl;function _l(e,t){return +(e<t)-+(e>t)}function Pr(e,t,r="ordering"){return _l(t[r],e[r])}var{localeDefault:kl}=K();var Qt=new schema.Entity("block",{},{mergeStrategy(e,t){return t.block_input?e||{}:{...e,...t}}});Qt.define({consumers:[Qt],inputs:[Qt]});var ks=new schema.Entity("variant"),Ps=new schema.Entity("dimension",{variants:[ks]},{processStrategy(e){return {...e,variants:"variants"in e?e.variants:[]}}}),xs=new schema.Entity("section",{blocks:[Qt]}),Pl=new schema.Entity("report",{dimensions:[Ps],sections:[xs]},{processStrategy(e){return {...e,sections:"sections"in e?e.sections.sort(Pr):[]}}}),xl=new schema.Entity("formatter"),Il=new schema.Entity("datasource"),vl={report:Pl,section:xs,block:Qt,dimension:Ps,variant:ks,formatter:xl,datasource:Il};function xr(e,t){let r=vl[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 Is=(e,t=void 0)=>{let{sid:r,bid:o,previews:n=[],query:a={}}=t||{},s,i,c={};return r?(s=r,c.activeSection=s):s=e.activeSection,n.length>0?(i=n,c.previews=i.filter(Boolean)):i=e.previews,{parsedParams:{sid:s,bid:o,previews:i,query:a},statusPayload:c}},Zt=(e=[],t=kl)=>e.reduce((r,o)=>{let n=on({vars:["n"],logic:o.content.logic},{},t,{});return r[o.name]=n,r},{});var de=process.env.NEXT_PUBLIC_REPORTS_LOCALE_DEFAULT||"en",Ir=process.env.NEXT_PUBLIC_REPORTS_LOCALES?.split(",")||[de];Ir.includes(de)||Ir.push(de);var Ll={localeDefault:de,locales:Ir,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:[]},vr=createSlice({name:"status",initialState:Ll,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=vr.actions;var Nl={attributes:{},variables:{},status:{}},Cr=createSlice({name:"variables",initialState:Nl,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};});}}),Ct=Cr.actions;var Fl={tree:[],reports:null,entities:{block:{},dimension:{},report:{},section:{},variant:{},formatter:{},datasource:{}},requests:{block:{},dimension:{},report:{},section:{},variant:{},formatter:{},datasource:{}}},we=createSlice({name:"records",initialState:Fl,reducers:{set:(e,t)=>{let r=t.payload;return {entities:Xt(e.entities,r.entities||{}),requests:Xt(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=xr(r.type,o),a=Xt(e.entities,n);if(e.entities=a,r.type==="report"){let s=r.data;e.reports?e.reports.indexOf(s.id)===-1&&(e.reports=[...e.reports,s.id]):e.reports=[s.id];}else if(r.type==="dimension"){let s=r.data;e.entities.report[s.report_id].dimensions.push(s.id),e.entities.report[s.report_id].dimensions=Br(a.report[s.report_id].dimensions,a.dimension);}else if(r.type==="variant"){let s=r.data;e.entities.dimension[s.dimension_id].variants.push(s.id);}else if(r.type==="section"&&!Array.isArray(r.data)){let s=r.data;e.entities.report[s.report_id].sections.push(s.id),e.entities.report[s.report_id].sections=Br(a.report[s.report_id].sections,a.section);}else if(r.type==="block")if(Array.isArray(r.data)){let s=r.data,i=s[0],c=s.map(l=>l.id);e.entities.section[i.section_id].blocks.concat(c);}else {let s=r.data;e.entities.section[s.section_id].blocks.push(s.id);}}},setReadRequest(e,t){let r=t.payload;if(r.type!=="report"&&(e.requests[r.type][r.key]=r),r.status==="SUCCESS"){let o=xr(r.type,r.data),n=Xt(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=xr(r.type,o),a,s,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;a=l.length!==p.length,a&&(i=l.length>p.length,s=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=Xt(e.entities,n);if(e.entities=c,r.type==="dimension"){let l=r.data;e.entities.report[l.report_id].dimensions=Br(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=Br(c.report[l.report_id].sections,c.section);}else if(r.type==="block"&&!Array.isArray(r.data)){let l=r.data;a&&(i?e.entities.block[s].consumers=e.entities.block[s].consumers.filter(p=>p!==l.id):e.entities.block[s].consumers.push(l.id));}}},setDeleteRequest(e,t){let r=t.payload;if(e.requests[r.type][r.key]=r,r.status==="SUCCESS"){let{id:o,parentId:n,parentType:a}=r.data;if(delete e.entities[r.type][o],a&&n!=null){let s=`${r.type}s`;Vl(e.entities[a][n][s],o);}}},removeBlocks:(e,t)=>{let r=t.payload,o={...e.entities.block};return r.forEach(n=>{delete o[n];}),{...e,entities:{...e.entities,block:o}}},addBlocks:(e,t)=>{let r=t.payload;return {...e,entities:{...e.entities,block:{...e.entities.block,...r}}}},removeDataSourceLogic:e=>{let t={...e.entities.datasource};Object.keys(t).forEach(r=>{e.entities.datasource[r].content.useProxy&&(delete e.entities.datasource[r].content.logic,delete e.entities.datasource[r].content.testUrl,delete e.entities.datasource[r].content.access);});}},extraReducers:e=>{e.addCase(HYDRATE,(t,r)=>{let o=r.payload.records,n=o.entities;t.entities=n,t.reports=Object.values(n.report).map(a=>a.id),t.requests={block:{},dimension:{},report:{},section:{},variant:{},formatter:{},datasource:{}},t.tree=o.tree;});}});function Xt(e,t){return Object.fromEntries(Object.keys(e).map(r=>[r,{...e[r],...t[r]}]))}function Br(e,t){return e.map(n=>t[n]).sort(Pr).map(n=>n.id)}function Vl(e,t){let r=e.indexOf(t);r>-1&&e.splice(r,1);}var Re=we.actions,Ls=er({block:Ne("block"),dimension:Ne("dimension"),formatter:Ne("formatter"),report:Ne("report"),section:Ne("section"),variant:Ne("variant"),datasource:Ne("datasource")}),oe=er({block:De("block"),dimension:De("dimension"),formatter:De("formatter"),report:De("report"),section:De("section"),variant:De("variant"),datasource:De("datasource")}),Ms=er({block:Ee("block"),dimension:Ee("dimension"),formatter:Ee("formatter"),report:Ee("report"),section:Ee("section"),variant:Ee("variant"),datasource:Ee("datasource")}),Os=er({block:it("block"),dimension:it("dimension"),formatter:it("formatter"),report:it("report"),section:it("section"),variant:it("variant"),datasource:it("datasource")}),Ns=er({block:Cs("block"),section:Cs("section")});function er(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 lt(e,t){return (r,o)=>{let a=o().records.requests[e][t],s=!a||a.status==="UNINITIALIZED"?"LOADING":"FETCHING";r(Re.setRequest({key:t,type:e,status:s}));}}function ct(e,t,r,o){return n=>{typeof window=="object"&&notifications.show({autoClose:3e3,color:"red",id:t,message:o,title:"Error"}),n(Re.setRequest({key:t,type:e,status:"FAILURE",error:{code:r,message:o}}));}}function Ne(e){return t=>{let r=ho(e,t);return (o,n,a)=>(o(lt(e,r)),ue(a,"create",e)(t).then(i=>(i.ok===true?o(Re.setCreateRequest({key:r,operation:"create",status:"SUCCESS",type:e,data:i.data})):o(ct(e,r,i.status,i.error)),i)))}}function zl(e){return t=>{let r=ho(e,t[0]);return (o,n,a)=>(o(lt(e,r)),ue(a,"createBulk",e)(t).then(i=>(i.ok===true?o(Re.setCreateRequest({key:r,operation:"createBulk",status:"SUCCESS",type:e,data:i.data})):o(ct(e,r,i.status,i.error)),i)))}}function vs(e,t,r){return r.replace(new RegExp(e,"g"),t)}function Gl(e){return e.section_id!==void 0}function Kl(e){return e.report_id!==void 0}function Cs(e){return t=>{let{create:r}=t;return (o,n,a)=>Ne(e)(r)(o,n,a).then(async i=>{if(i.ok){let{data:c}=i,{id:l}=c,{update:p}=t,u=Fs(e,{id:l});if(o(lt(e,`${u}`)),e==="block"&&Gl(r)){let m=produce(p,y=>{y.id=l;}),{contentByLocale:f}=m;f&&(m=produce(m,y=>{y.id=l,y.contentByLocale=Object.keys(f).reduce((S,x)=>{let P=f?f[x]:{};return S[x]={...P,id:l},S},{});}));let h=m.inputs?.map(y=>({type:y.type,id:y.id,inputAction:{operation:"create",input:{input_id:y.id,block_id:m.id}}}));return h&&h.length>0&&Bs(e)([m,...h])(o,n,a).then(()=>De("section")({id:m.section_id,include:true})(o,n,a).then(y=>(y.ok&&o(Re.setRequest({key:u,type:e,status:"SUCCESS",data:y.data})),y))),Ee(e)(m)(o,n,a).then(y=>(y.ok&&o(Re.setRequest({key:u,type:e,status:"SUCCESS",data:y.data})),y))}if(e==="section"&&Kl(r)){let{id:m}=c,f=produce(p,y=>{y.id=m;}),{blocks:d}=f,h=d?.map(y=>({type:y.type,blockcol:y.blockcol,blockrow:y.blockrow,section_id:m,locales:Object.keys(y.contentByLocale).map(S=>S)}));return h&&d&&await zl("block")(h)(o,n,a).then(y=>{if(y.ok){let S=y.data,x=[],P=S.map((F,w)=>{let B={...F},N=B.id,_=d[w];_.contentByLocale&&(B.contentByLocale=Object.keys(_.contentByLocale).reduce((E,b)=>{let A=_.contentByLocale[b];return E[b]={...A,content:{...A.content},id:B.id},E},{}));let{settings:L}=_,{contentByLocale:D,id:C}=B;B.settings=L;let q={id:C,contentByLocale:D,settings:L};return _.inputs.map(E=>E.id).reduce((E,b)=>{let A=d.findIndex(I=>I.id===b);return [...E,A]},[]).map(E=>({...S[E],originalBlock:d[E]})).forEach(E=>{let{id:b,type:A,originalBlock:I}=E;if([O.SELECTOR,O.VIZ].includes(A)){if(q.contentByLocale?.logic?.content?.api){let ne=q.contentByLocale?.logic.content.api;q.contentByLocale.logic.content.api=vs(`(selector${I.id}id)`,`selector${b}id`,ne);}if(q.contentByLocale?.logic?.content?.logic){let ne=q.contentByLocale.logic.content.logic;q.contentByLocale.logic.content.logic=vs(`(selector${I.id}id)`,`selector${b}id`,ne);}}x.push({id:b,inputAction:{operation:"create",input:{input_id:b,block_id:N}}});}),q});return Bs("block")([...P,...x])(o,n,a)}}),Ee(e)(f)(o,n,a).then(y=>(y.ok&&o(Re.setRequest({key:u,type:e,status:"SUCCESS",data:y.data})),y))}return Ee(e)({...p,id:c.id})(o,n,a)}})}}function De(e){return t=>{let r=Ds(e,t);return (o,n,a)=>{o(lt(e,r));let s=ue(a,"read",e);if(typeof s!="function"){let i=`Failed to get valid RPC method for entity "${e}"`;return o(ct(e,r,500,i)),Promise.reject(new Error(i))}return s(t).then(i=>(i.ok===true?o(Re.setReadRequest({key:r,operation:"read",status:"SUCCESS",type:e,data:i.data})):o(ct(e,r,i.status,i.error)),i))}}}function Ee(e){return t=>{let r=bo(e,t);return (o,n,a)=>(o(lt(e,r)),ue(a,"update",e)(t).then(i=>(i.ok===true?o(Re.setUpdateRequest({key:r,operation:"update",status:"SUCCESS",type:e,data:i.data})):o(ct(e,r,i.status,i.error)),i)))}}function Bs(e){return t=>{let r=bo(e,t[0]);return (o,n,a)=>(o(lt(e,r)),ue(a,"updateBulk",e)(t).then(i=>(i.ok===true?o(Re.setUpdateRequest({key:r,operation:"updateBulk",status:"SUCCESS",type:e,data:i.data})):o(ct(e,r,i.status,i.error)),i)))}}function it(e){return t=>{let r=Us(e,t);return (o,n,a)=>(o(lt(e,r)),ue(a,"delete",e)(t).then(i=>{i.ok===true?o(Re.setDeleteRequest({key:r,operation:"delete",status:"SUCCESS",type:e,data:i.data})):o(ct(e,r,i.status,i.error));}))}}function ho(e,t){if(e==="variant"){let r=t;return `create(variant, [${r.dimension_id}, ${r.name}])`}return `create(${e}, [${Object.keys(t)}])`}function Ds(e,t={}){let r=t.id==null?null:`'${t.id}'`;return `read(${e}, ${r}, ${!!t.include})`}function bo(e,t){let{id:r,...o}=t;return `update(${e}, ${r}, [${Object.keys(o)}])`}function Us(e,t){return `delete(${e}, ${t})`}function Fs(e,t){let r=t.id==null?null:`'${t.id}'`;return `clone(${e}, ${r})`}var{setStatus:Vs,setPreviews:Hl,setSectionState:$s,resetSectionState:qs,setCurrentLocale:jl,setPreferredLocale:Wl,addRunConsumersRunning:zs,removeRunConsumersRunning:Gs}=_e;function Yl(e,t){return async(r,o,n)=>{let a=await n.validateVariantSlug({dimension:e,slug:t});if("error"in a)throw new Error(a.error);return a.data}}function Jl(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 Ql(){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 Zl(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 Ks(e,t,r,o){let n=r().status,a={...n,...o},s={...n.query,...o.query};Object.keys(s).forEach(c=>s[c]===void 0&&delete s[c]);let i={...a,query:s};t(Vs(i)),n.activeSection&&t(Hs(e,{query:s}));}function Xl(e,t){return async(r,o)=>Ks(e,r,o,{query:{[t]:void 0}})}function eu(e,t,r){return async(o,n)=>Ks(e,o,n,{query:{[t]:r}})}function Hs(e,t){return async(r,o)=>{let n=o(),{currentLocale:a}=n.status,s=n.records.entities.block,i=e.formatterFunctions[a],c=e.datasourceFunctions,{parsedParams:l,statusPayload:p}=Is(n.status,t),{sid:u,bid:m,previews:f,query:d}=l;Object.keys(p).length&&r(_e.setStatus(p));let h={...vt(f),locale:a,...pe()},y={variables:h,query:d,locale:a};r(_e.addRunConsumersRunning([u]));let S=n.records.entities.section[u],x=async P=>r(Ue(P));try{let P=await It(s,S&&[S],m,i,y,void 0,x,"section",c),{variables:F,status:w}=P;r(Ct.setVariableChange({attributes:h,variables:F,status:w})),r(_e.removeRunConsumersRunning([u]));}catch(P){console.error("Error in runConsumers client side: recalculateVariables",P);}}}function tr(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 tu(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 ru(){return async(e,t,r)=>{let o=await r.searchRole("");if("error"in o)throw new Error(o.error);return o.data}}function ou(e){return async(t,r,o)=>{let n=await o.searchUser(e);if("error"in n)throw new Error(n.error);return n.data}}function nu(e){return async(t,r,o)=>{let n=await o.readUser({user_id:e});if("error"in n)throw new Error(n.error);return n.data}}function su({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 au(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 rr(e){let{addBlocks:t}=we.actions;return async r=>{await r(t(e));}}function iu(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 cu(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 lu(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 uu(){return async(e,t,r)=>{let o=await r.readEnvSecrets({});if("error"in o)throw new Error(o.error);return o.data}}function or(){let{removeDataSourceLogic:e}=we.actions;return async t=>{await t(e());}}var js=()=>configureStore({reducer:{[we.name]:we.reducer,[vr.name]:vr.reducer,[Cr.name]:Cr.reducer},middleware(e){return e({thunk:{extraArgument:Jt("/api/cms/")}})}}),Ve=createWrapper(js);function yu(e){let t=process.cwd(),r=fu.resolve(t.endsWith("/example")?t.replace("/example",""):t,"package-lock.json"),o;try{let n=JSON.parse(dc.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 gu(e){let t=()=>Promise.resolve({}),{pathSegmentsKey:r="bespoke",preResolve:o=t,postResolve:n=t,authOptions:a={providers:[]}}=e||{};return Ve.getServerSideProps(s=>{let{dispatch:i}=s;return async c=>{let l=await he(c.req,c.res,a);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 yu("@datawheel/bespoke"),h=await o(s,c);if("redirect"in h)return {props:h};f==="reports"&&(Ws(c.query[r])?await Promise.all([i(oe("formatter",{})),i(oe("datasource",{include:true})),i(oe("report",{id:Ws(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 y=await n(s,c);return {props:{...h,...y,bespokeVersion:d,session:l}}}})}function Ws(e){if(e==null||e==="")return;let[,t]=Array.isArray(e)?e:[e];return Number.parseInt(t)||void 0}var {locales:hu}=K(),bu={pathSegment:"path",formatterFunctions:hu.reduce((e,t)=>({...e,[t]:{}}),{}),datasourceFunctions:[],profilePrefix:"path",siteProps:{}};createContext(bu);K();var Ou=e=>e.records.entities.report;var Or=e=>e.records.entities.block;var Nu=e=>e.records.entities.datasource;function Bt(e){return createSelector([t=>t.records.entities[e]],t=>Object.values(t))}Bt("report");Bt("dimension");Bt("variant");var Nr=Bt("section");Bt("block");var Dr=Bt("formatter");createSelector([Ou],e=>Object.values(e)[0]);var Du=pe(),Ur=createSelector([Nu],e=>Object.values(e||[]).sort((t,r)=>t.content.order>r.content.order?1:-1).map(t=>{let r={...Du};return {...t,content:{...t.content,pattern:fe(t.content.pattern,{},{variables:r})}}}));var Uu=async(e,t,r,o,n)=>{if(e.length===0)throw new Error("No slugs provided");let a=await t(r({mode:"slugs",locale:n,slugs:e,output:"full"})),s=a.results[0].report_id;if(a.results.length>1){if(a.results.every(d=>d.report_id===s)===false)throw new Error("Members belong to different reports");let l=a.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=a.results.sort((d,h)=>d.dimension_ordering>h.dimension_ordering?1:-1).reduce((d,h,y)=>(d[h.variant_slug]=y,d),{}),m=e.reduce((d,h,y)=>(d[h.variantSlug]=y,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:s,count:false}))).data.find(l=>l.id===s);if(!c||a.results.length!==c.dimensions.length)throw new Error(`Missing members for report ID ${s}`);return a},Fr=Uu;function Fu(e){let{fallback:t=true,limit:r=50}=e||{};return async o=>{let{defaultLocale:n=de,locales:a=[]}=o,s=[];if(r>0){let i=a.find(p=>p===n),{searchMember:c}=await Ze().then(kt),l=await c({query:"",limit:r,format:"plain",locale:i||de,noImage:false,visible:true,report:[],dimension:[],variant:[],includes:true});l.ok===true&&(s=l.data.results.map(p=>({locale:a.find(u=>u===p.locale),params:{bespoke:[p.variant.slug,p.slug]}})));}return {fallback:t,paths:s}}}function Vu(e){let{pathSegmentsKey:t="bespoke"}=e||{};try{return Ve.getStaticProps(r=>{let{dispatch:o}=r;return async n=>{await o(rt);let a=new Date().toISOString(),{locale:s=de,params:i={}}=n,c=Array.from(Ao(i[t])),l;try{l=await Fr(c,o,Ue,tr,s);}catch(_){return console.error("[Bespoke slug validation Failed]: Return 404:",_.message,`[${s}] -> /${c.map(L=>`${L.variantSlug}/${L.memberSlug}`).join("/")}`),{notFound:!0}}o(ut.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:[s]}))]);let p=r.getState(),u=Dr(p),m=Ur(p),f=Zt(u,s),d=Nr(p),h=Or(p),y={...h},S={},x=Object.values(h).reduce((_,L)=>("access"in L.settings&&!["public","guest"].some(D=>!L.settings.access||L.settings.access.includes(D))&&_.push(L.id),_),[]),P=x.filter(_=>y[_].settings[xe.FALLBACK]),F=Array.from(new Set([...P,...ye(P,Object.values(y))])),w=x.filter(_=>[O.SELECTOR,O.MULTIHIERARCHY_SELECTOR].includes(y[_].type)),$=Array.from(new Set([...w,...ye(w,Object.values(y))]));x=Array.from(new Set([...x,...F,...$,...ye(x,Object.values(y))])),x.forEach(_=>{P.includes(_)?(S[_]={...y[_],type:O.FALLBACK,original_type:y[_].type},delete y[_]):w.includes(_)&&(S[_]={...y[_],settings:{...y[_].settings,[xe.DISABLED]:!0}},delete y[_]),$.includes(_)||delete y[_];}),await o(Fe(x.filter(_=>!$.includes(_)))),await o(rr(S));let B={...vt(l.results),locale:s,...pe()},N=async _=>await o(Ue(_));return await It({...y,...S},d,void 0,f,{locale:s,query:i,variables:B},void 0,N,"report",m).then(async _=>{let L=Object.keys({...y,...S}).reduce((D,C)=>(_.variables[C]&&_.status[C]||D.push(C),D),[]);await o(Fe(L)),await o(Ct.setVariableChange({..._,attributes:B})),await o(or());}),{props:{buildTime:a}}}})}catch(r){console.error("ERROR SSR",r);}}function Ao(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 $u(e){let{pathSegmentsKey:t="bespoke"}=e||{};try{return Ve.getServerSideProps(r=>{let{dispatch:o}=r;return async n=>{let{section:a,block:s}=n.query,i=Object.fromEntries(Object.entries(n.query).filter(([k])=>k.match(/selector\d+id/)));if(!a&&!s)return {notFound:!0};let c=Number(a);await o(rt);let l=new Date().toISOString(),{locale:p=de,params:u={},req:m}=n,f=Array.from(Ao(u[t])),d;try{d=await Fr(f,o,Ue,tr,p);}catch(k){return console.error("[Bespoke slug validation Failed]: Return 404:",k.message,`/${p}/${m.url}`),{notFound:!0}}o(ut.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(),y=Dr(h),S=Ur(h),x=Zt(y,p),P=Nr(h).filter(k=>k.id===c),F=Or(h),w={...F},$={},B=Object.values(F).reduce((k,Y)=>("access"in Y.settings&&!["public","guest"].some(E=>!Y.settings.access||Y.settings.access.includes(E))&&k.push(Y.id),k),[]),N=B.filter(k=>w[k].settings[xe.FALLBACK]),_=Array.from(new Set([...N,...ye(N,Object.values(w))])),L=B.filter(k=>[O.SELECTOR,O.MULTIHIERARCHY_SELECTOR].includes(w[k].type)),D=Array.from(new Set([...L,...ye(L,Object.values(w))]));B=Array.from(new Set([...B,..._,...D,...ye(B,Object.values(w))])),B.forEach(k=>{N.includes(k)?($[k]={...w[k],type:O.FALLBACK,original_type:w[k].type},delete w[k]):L.includes(k)&&($[k]={...w[k],settings:{...w[k].settings,[xe.DISABLED]:!0}},delete w[k]),D.includes(k)||delete w[k];}),await o(Fe(B.filter(k=>!D.includes(k)))),await o(rr($));let C={...vt(d.results),locale:p,...pe()},q=async k=>await o(Ue(k));await It({...w,...$},P,void 0,x,{locale:p,query:{...u,...i},variables:C},void 0,q,"section",S).then(async k=>{let Y=Object.keys({...w,...$}).reduce((E,b)=>(k.variables[b]&&k.status[b]||E.push(b),E),[]);await Promise.all([o(Fe(Y)),o(Ct.setVariableChange({...k,attributes:C})),o(or())]);});let M=Object.keys({...w,...$}).filter(k=>a&&s?k!==s: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{$u as BespokeEmbedServerSideProps,jc as BespokeEndpointNextJsHandlerFactory,he as BespokeGetSession,aa as BespokeHandleAuth,gu as BespokeManagerServerSideProps,Fu as BespokeRendererStaticPaths,Vu as BespokeRendererStaticProps,Ra as BespokeSearchUsersByMetadata,ua as BespokeUpdateCurrentUserAppMetadata,ma as BespokeUpdateCurrentUserMetadata,ya as BespokeWithApiRoleAuthRequired,Yc as ReportCrosswalkHandler,kt as dbApiFactory,io as endpointKey,Ze as getDB,rt as useDatabaseApi};