@datawheel/bespoke 0.9.5 → 0.9.6
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/cms.js +31 -25
- package/dist/explore.js +7 -7
- package/dist/redux-store.js +3 -3
- package/dist/report.js +10 -10
- package/dist/server.js +14 -9
- package/package.json +1 -1
package/dist/server.js
CHANGED
|
@@ -1,20 +1,25 @@
|
|
|
1
|
-
import ti,{getServerSession}from'next-auth';import Qs from'next-auth/providers/auth0';import je from'auth0';import*as sc from'pg';import {Sequelize,Error as Error$1,DataTypes,Op,literal,where,cast,json,fn,col,Model}from'sequelize';import rr from'yn';import*as vi from'd3-array';import*as _i from'd3-collection';import*as wi from'd3-format';import*as Pi 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 uc from'slugify';import Fr from'axios';import dc from'jsonwebtoken';import mc from'next/config';import xc from'flexsearch';import Xc from'base58';import el from'flickr-sdk';import Jc from'sharp';import {createApi}from'unsplash-js';import il from'fs';import {createContext,createElement}from'react';import {renderToString}from'react-dom/server';import*as vo from'@tabler/icons-react';import Gl from'nextjs-cors';import Kl from'image-type';import Cl from'formidable';import Dl from'dom-parser';import kp from'path';import ss from'axios-retry';import {format}from'pretty-format';import du from'toposort';import {csvParse}from'd3-dsv';import {getSession}from'next-auth/react';import {schema,normalize}from'normalizr';import {createSlice,configureStore}from'@reduxjs/toolkit';import {HYDRATE,createWrapper}from'next-redux-wrapper';import {notifications}from'@mantine/notifications';import'react-redux';import'react/jsx-runtime';import'@mantine/core';var Js=Object.defineProperty;var Ys=(e,t)=>{for(var r in t)Js(e,r,{get:t[r],enumerable:true});};var Xs={domain:new URL(process.env.AUTH0_ISSUER_BASE_URL||"https://localhost:3000").host,clientId:process.env.AUTH0_CLIENT_ID||"",clientSecret:process.env.AUTH0_CLIENT_SECRET||""};function Ke(e){let t=e;if(t&&!t.source)if(!t.providers||t.providers.length===0){let r=Qs({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(Xs),c=await i.users.get({id:o.sub});o.bespoke_user_metadata=c.user_metadata||{},o.bespoke_app_metadata=c.app_metadata||{};let l=await i.users.getRoles({id:o.sub});o.bespoke_roles=l.map(u=>u.name),s?.user_metadata&&(o.bespoke_user_metadata={...o.bespoke_user_metadata,...s.user_metadata}),s?.app_metadata&&(o.bespoke_app_metadata={...o.bespoke_app_metadata,...s.app_metadata});}catch(i){console.error("Error refreshing user data from Auth0:",i),o.bespoke_user_metadata={...o.bespoke_user_metadata,...s?.user_metadata||{}},o.bespoke_app_metadata={...o.bespoke_app_metadata,...s?.app_metadata||{}};}return o},async session({session:o,token:n}){return o&&n&&(o.user.id=n.sub,o.user.bespoke_app_metadata=n.bespoke_app_metadata,o.user.bespoke_user_metadata=n.bespoke_user_metadata,o.user.bespoke_roles=n.bespoke_roles),o}},t.source="auth0";}else t.source="custom";return t.secret||(t.secret=process.env.AUTH0_SECRET||process.env.NEXTAUTH_SECRET),t}async function ye(e,t,r={providers:[]}){let o=Ke(r),n=await getServerSession(e,t,o);return n&&(n.source=o.source||""),n}var ri=(e={providers:[]})=>{let t=Ke(e);return ti(t)},oi=ri;var E=class extends Error{constructor(t,r){super(r),this.code=t;}toJSON(){return nn(this)}static is(t){return Object.prototype.hasOwnProperty.call(t,"code")&&typeof t.code=="number"}};function ni(e){return {ok:true,status:200,wrapper:true,data:e}}function nn(e){return {ok:false,status:E.is(e)?e.code:500,error:e.message}}function I(e){return t=>e(t).then(ni,nn)}function pe(e,t,r){if(t==="createBulk"||t==="updateBulk"){let n=`${t}${Te(r)}`;return e[n]}let o=`${t}${Te(r)}`;return e[o]}function Te(e){return e[0].toUpperCase()+e.slice(1)}var G={ADMIN:"Admin",EDITOR:"Editor",WRITER:"Writer"},an={APP:"App",USER:"User"},sn=e=>{let t=Object.values(G);return e?e.map(r=>({...r,type:t.includes(r.name)?an.APP:an.USER})):[]};var He={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 cn(){return async()=>{try{let t=await new je.ManagementClient(He).roles.getAll({include_totals:!0,per_page:100});return {roles:sn(t.roles)}}catch(e){throw console.error("AuthZeroError",e),new E(e.response?.status||500,e.message)}}}function ln(){return async e=>{try{let t;if(e){let r={include_totals:!0,per_page:10,page:e.page||0},o=new je.ManagementClient(He);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 un(){return async e=>{try{if(e){let t=new je.ManagementClient(He),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 pn(){return async e=>{try{if(e.user_id){if(e.app_metadata&&await oo(e.user_id,e.app_metadata),e.user_metadata&&await no(e.user_id,e.user_metadata),e.roles){let t=new je.ManagementClient(He),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 dn(){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 oo(e,t){return await new je.ManagementClient(He).users.updateAppMetadata({id:e},t)}async function no(e,t){return await new je.ManagementClient(He).users.updateUserMetadata({id:e},t)}async function mn(e,t){try{let r=new je.ManagementClient(He),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 ai=(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 oo(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"});}})();}),si=ai;var ii=(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 no(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"});}})();}),ci=ii;var jt=(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 li=(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);},ui=li;var pi=(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 mn(t,r),o(s);}else n({error:"empty_params",description:"key or value params are empty"});}catch(s){n({error:s.message,description:"Error "});}})();}),di=pi;var Ce=(e=process.env)=>rr(e.REPORTS_LOGGING);var Je=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 gi(e){return Je.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=>(Je.hasMany(t.block_content,{foreignKey:"id",sourceKey:"id",as:"contentByLocale"}),Je.belongsToMany(t.block,{through:"block_input",foreignKey:"block_id",otherKey:"input_id",as:"inputs"}),Je.belongsToMany(t.block,{through:"block_input",foreignKey:"input_id",otherKey:"block_id",as:"consumers"}),Je)}var gn=gi;var Rr=class extends Model{};function hi(e){return Rr.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}),()=>Rr}var yn=hi;var br=class extends Model{};function bi(e){return br.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}),()=>br}var hn=bi;function io(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 Rn(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 Si(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(io(c)-io(i)-io(s)+s*Math.log(a)+i*Math.log(1-a));a<(s+1)/(c+2)?o=l*Rn(a,s,i):o=1-l*Rn(1-a,i,s),n=1-o;}return Math.round(n*1e5)/1e5}function Ei(e){return {.99999:15.137,.99:6.635,.95:3.841,.9:2.706}[e]}function Ht(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 Ai(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;)Ht(t,c,e,e)*.5+Ht(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;)Ht(t,c,e,e)*.5+Ht(t,c,0,e-1)<p?(u=c,c=(l+c)/2):(l=c,c=(u+c)/2);i=c;}return {lci:s,uci:i}}function Ti(e,t){let r=e,o=t,n=r,a=o,s=95,i=.5,c=.5,u=(100-s)/2/100,p=n;for(;c>1e-5;)c/=2,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 bn={binomialCdf:Si,binP:Ht,computeMidP:Ai,criticalValue:Ei,smr:Ti};var Ye={d3:{...vi,..._i,...wi,...Pi},d3plus:{assign:assign,closest:closest,date:date,formatAbbreviate:formatAbbreviate,merge:merge,strip:strip,titleCase:titleCase},stats:bn},Sn={};var Be={UNILATERAL:"uni",MULTILATERAL:"multi"},Ze={SINGLE:"single",MULTI:"multi"};var co={ALLOWED:"allowed",ALLOWED_LOGIC:"allowedLogic",IGNORE_CASCADE:"ignoreCascade"},Mi={ACCESS:"access",ACCESS_LOGIC:"accessLogic"},Ni={DISABLED:"disabled"},Di={FALLBACK:"fallback"};var Ui={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"},lo={GENERATOR:"generator",RELATED:"related",VIZ:"visualization",SECTION_FLAG:"section_flag"},uo="logic",M={...Ui,...lo},Le={NAME:"name",DESCRIPTION:"description",...co,...Mi,...Di,...Ni};var Er={FORMATTER:"formatter"},vt={STRING:"string"};var _t=class extends Model{};function $i(e){return _t.init({id:{type:DataTypes.INTEGER,primaryKey:true,autoIncrement:true},name:{type:DataTypes.STRING,defaultValue:""},content:{type:DataTypes.JSONB,defaultValue:{description:"",testValue:"Foo",type:Er.FORMATTER,inputType:vt.STRING,logic:"return n;"}}},{sequelize:e,modelName:"formatter",tableName:"bespoke_reports_formatter",freezeTableName:true,timestamps:false,hooks:{async afterSync(t){let r=await _t.findAll();if(t.force||r.length===0){let o=Object.entries(Sn).map(([n,a])=>({name:n,content:a}));await _t.bulkCreate(o);}}}}),()=>_t}var Tn=$i;var Wt=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 qi(e){return Wt.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=>(Wt.hasMany(t.image_content,{foreignKey:"id",sourceKey:"id",as:"contentByLocale"}),Wt)}var vn=qi;var Ar=class extends Model{};function Ki(e){return Ar.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}),()=>Ar}var _n=Ki;var Pt=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 Hi(e){return Pt.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=>(Pt.hasMany(t.dimension,{foreignKey:"report_id",sourceKey:"id",as:"dimensions"}),Pt.hasMany(t.section,{foreignKey:"report_id",sourceKey:"id",as:"sections"}),Pt)}var wn=Hi;var xt=class extends Model{toJSON(){let t=this.get({plain:true}),{variants:r=[]}=this;return {...t,variants:r.map(o=>o.toJSON())}}};function Ji(e){return xt.init({id:{type:DataTypes.INTEGER,primaryKey:true,autoIncrement:true},report_id:{type:DataTypes.INTEGER,onDelete:"cascade",references:{model:"bespoke_reports_report",key:"id"}},name:{type:DataTypes.STRING,defaultValue:""},settings:{type:DataTypes.JSONB,defaultValue:{}},ordering:{type:DataTypes.INTEGER,defaultValue:0},visible:{type:DataTypes.BOOLEAN,defaultValue:true}},{sequelize:e,modelName:"dimension",tableName:"bespoke_reports_report_dimension",freezeTableName:true,timestamps:false}),t=>(xt.hasMany(t.variant,{foreignKey:"dimension_id",sourceKey:"id",as:"variants",constraints:false}),xt.belongsTo(t.report,{foreignKey:"report_id",targetKey:"id",as:"report",constraints:false}),xt)}var Pn=Ji;var It=class extends Model{get report(){return this.dimension?.report}toJSON(){return this.get({plain:true})}};function Qi(e){return It.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=>(It.hasMany(t.search,{foreignKey:"variant_id",sourceKey:"id",as:"members",constraints:false}),It.belongsTo(t.dimension,{foreignKey:"dimension_id",targetKey:"id",as:"dimension",constraints:false}),It)}var kn=Qi;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 Xi(e){return ke.init({id:{primaryKey:true,type:DataTypes.TEXT},zvalue:DataTypes.DOUBLE,slug:DataTypes.TEXT,image_id:{type:DataTypes.INTEGER,references:{model:"bespoke_reports_image",key:"id"}},content_id:{autoIncrement:true,type:DataTypes.INTEGER,unique:true},variant_id:{primaryKey:true,type:DataTypes.INTEGER,onDelete:"cascade",references:{model:"bespoke_reports_report_dimension_variant",key:"id"}},dimension_id:{primaryKey:true,type:DataTypes.INTEGER,onDelete:"cascade",references:{model:"bespoke_reports_report_dimension",key:"id"}},report_id:{primaryKey:true,type:DataTypes.INTEGER,onDelete:"cascade",references:{model:"bespoke_reports_report",key:"id"}},visible:{type:DataTypes.BOOLEAN,defaultValue:true}},{sequelize:e,modelName:"search",tableName:"bespoke_reports_search",freezeTableName:true,timestamps:false}),t=>(ke.belongsTo(t.variant,{foreignKey:"variant_id",targetKey:"id",as:"variant",constraints:false}),ke.belongsTo(t.dimension,{foreignKey:"dimension_id",targetKey:"id",as:"dimension",constraints:false}),ke.belongsTo(t.report,{foreignKey:"report_id",targetKey:"id",as:"report",constraints:false}),ke.belongsTo(t.image,{foreignKey:"image_id",targetKey:"id",as:"image",constraints:false}),ke.hasMany(t.search_content,{foreignKey:"id",sourceKey:"content_id",as:"contentByLocale"}),ke)}var xn=Xi;var Tr=class extends Model{};function tc(e){return Tr.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}),()=>Tr}var In=tc;var Yt=class extends Model{toJSON(){let t=this.get({plain:true}),{blocks:r=[]}=this;return {...t,blocks:r.map(o=>o.toJSON())}}};function oc(e){return Yt.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=>(Yt.hasMany(t.block,{foreignKey:"section_id",sourceKey:"id",as:"blocks"}),Yt)}var Cn=oc;var _r=class extends Model{};function ac(e){return _r.init({id:{type:DataTypes.INTEGER,primaryKey:true,autoIncrement:true},name:{type:DataTypes.STRING,defaultValue:""},description:{type:DataTypes.STRING,defaultValue:""},content:{type:DataTypes.JSONB,defaultValue:{pattern:"",logic:`return {
|
|
1
|
+
import ei,{getServerSession}from'next-auth';import Ys from'next-auth/providers/auth0';import je from'auth0';import*as ac from'pg';import {Sequelize,Error as Error$1,DataTypes,Op,literal,where,cast,json,fn,col,Model}from'sequelize';import rr from'yn';import*as Ti from'd3-array';import*as vi from'd3-collection';import*as _i from'd3-format';import*as wi 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 lc from'slugify';import Fr from'axios';import pc from'jsonwebtoken';import dc from'next/config';import xc from'flexsearch';import Xc from'base58';import el from'flickr-sdk';import Jc from'sharp';import {createApi}from'unsplash-js';import il from'fs';import {createContext,createElement}from'react';import {renderToString}from'react-dom/server';import*as vo from'@tabler/icons-react';import Gl from'nextjs-cors';import Kl from'image-type';import Cl from'formidable';import Dl from'dom-parser';import kp from'path';import as from'axios-retry';import {format}from'pretty-format';import du from'toposort';import {csvParse}from'd3-dsv';import {getSession}from'next-auth/react';import {schema,normalize}from'normalizr';import {createSlice,configureStore}from'@reduxjs/toolkit';import {HYDRATE,createWrapper}from'next-redux-wrapper';import {notifications}from'@mantine/notifications';import'react-redux';import'react/jsx-runtime';import'@mantine/core';var Ws=Object.defineProperty;var Js=(e,t)=>{for(var r in t)Ws(e,r,{get:t[r],enumerable:true});};var Zs={domain:new URL(process.env.AUTH0_ISSUER_BASE_URL||"https://localhost:3000").host,clientId:process.env.AUTH0_CLIENT_ID||"",clientSecret:process.env.AUTH0_CLIENT_SECRET||""};function Ke(e){let t=e;if(t&&!t.source)if(!t.providers||t.providers.length===0){let r=Ys({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(Zs),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=Ke(r),n=await getServerSession(e,t,o);return n&&(n.source=o.source||""),n}var ti=(e={providers:[]})=>{let t=Ke(e);return ei(t)},ri=ti;var E=class extends Error{constructor(t,r){super(r),this.code=t;}toJSON(){return nn(this)}static is(t){return Object.prototype.hasOwnProperty.call(t,"code")&&typeof t.code=="number"}};function oi(e){return {ok:true,status:200,wrapper:true,data:e}}function nn(e){return {ok:false,status:E.is(e)?e.code:500,error:e.message}}function C(e){return t=>e(t).then(oi,nn)}function pe(e,t,r){if(t==="createBulk"||t==="updateBulk"){let n=`${t}${Te(r)}`;return e[n]}let o=`${t}${Te(r)}`;return e[o]}function Te(e){return e[0].toUpperCase()+e.slice(1)}var G={ADMIN:"Admin",EDITOR:"Editor",WRITER:"Writer"},an={APP:"App",USER:"User"},sn=e=>{let t=Object.values(G);return e?e.map(r=>({...r,type:t.includes(r.name)?an.APP:an.USER})):[]};var He={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 cn(){return async()=>{try{let t=await new je.ManagementClient(He).roles.getAll({include_totals:!0,per_page:100});return {roles:sn(t.roles)}}catch(e){throw console.error("AuthZeroError",e),new E(e.response?.status||500,e.message)}}}function ln(){return async e=>{try{let t;if(e){let r={include_totals:!0,per_page:10,page:e.page||0},o=new je.ManagementClient(He);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 un(){return async e=>{try{if(e){let t=new je.ManagementClient(He),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 pn(){return async e=>{try{if(e.user_id){if(e.app_metadata&&await oo(e.user_id,e.app_metadata),e.user_metadata&&await no(e.user_id,e.user_metadata),e.roles){let t=new je.ManagementClient(He),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 dn(){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 oo(e,t){return await new je.ManagementClient(He).users.updateAppMetadata({id:e},t)}async function no(e,t){return await new je.ManagementClient(He).users.updateUserMetadata({id:e},t)}async function mn(e,t){try{let r=new je.ManagementClient(He),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 ni=(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 oo(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"});}})();}),ai=ni;var si=(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 no(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"});}})();}),ii=si;var jt=(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 ci=(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);},li=ci;var ui=(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 mn(t,r),o(s);}else n({error:"empty_params",description:"key or value params are empty"});}catch(s){n({error:s.message,description:"Error "});}})();}),pi=ui;var Ce=(e=process.env)=>rr(e.REPORTS_LOGGING);var Je=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 fi(e){return Je.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=>(Je.hasMany(t.block_content,{foreignKey:"id",sourceKey:"id",as:"contentByLocale"}),Je.belongsToMany(t.block,{through:"block_input",foreignKey:"block_id",otherKey:"input_id",as:"inputs"}),Je.belongsToMany(t.block,{through:"block_input",foreignKey:"input_id",otherKey:"block_id",as:"consumers"}),Je)}var gn=fi;var Rr=class extends Model{};function yi(e){return Rr.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}),()=>Rr}var yn=yi;var br=class extends Model{};function Ri(e){return br.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}),()=>br}var hn=Ri;function io(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 Rn(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 bi(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(io(c)-io(i)-io(s)+s*Math.log(a)+i*Math.log(1-a));a<(s+1)/(c+2)?o=l*Rn(a,s,i):o=1-l*Rn(1-a,i,s),n=1-o;}return Math.round(n*1e5)/1e5}function Si(e){return {.99999:15.137,.99:6.635,.95:3.841,.9:2.706}[e]}function Ht(e,t,r,o){let n=t/(1-t),a=0,s=1,i=0,c=0;for(;a<=e;)c+=s,a>=r&a<=o&&(i+=s),c>1e30&&(i/=1e30,c/=1e30,s/=1e30),a+=1,s=s*n*(e+1-a)/a;return i/c}function Ei(e,t,r){let o=e/t,a=(100-r*100)/2,s,i;if(e===0)s=0;else {let c=o/2,l=0,u=o,p=a/100;for(;u-l>1e-5;)Ht(t,c,e,e)*.5+Ht(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;)Ht(t,c,e,e)*.5+Ht(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 Ai(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 bn={binomialCdf:bi,binP:Ht,computeMidP:Ei,criticalValue:Si,smr:Ai};var Ye={d3:{...Ti,...vi,..._i,...wi},d3plus:{assign:assign,closest:closest,date:date,formatAbbreviate:formatAbbreviate,merge:merge,strip:strip,titleCase:titleCase},stats:bn},Sn={};var Be={UNILATERAL:"uni",MULTILATERAL:"multi"},Ze={SINGLE:"single",MULTI:"multi"};var co={ALLOWED:"allowed",ALLOWED_LOGIC:"allowedLogic",IGNORE_CASCADE:"ignoreCascade"},Oi={ACCESS:"access",ACCESS_LOGIC:"accessLogic"},Mi={DISABLED:"disabled"},Ni={FALLBACK:"fallback"};var Di={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"},lo={GENERATOR:"generator",RELATED:"related",VIZ:"visualization",SECTION_FLAG:"section_flag"},uo="logic",M={...Di,...lo},Le={NAME:"name",DESCRIPTION:"description",...co,...Oi,...Ni,...Mi};var Er={FORMATTER:"formatter"},vt={STRING:"string"};var _t=class extends Model{};function Vi(e){return _t.init({id:{type:DataTypes.INTEGER,primaryKey:true,autoIncrement:true},name:{type:DataTypes.STRING,defaultValue:""},content:{type:DataTypes.JSONB,defaultValue:{description:"",testValue:"Foo",type:Er.FORMATTER,inputType:vt.STRING,logic:"return n;"}}},{sequelize:e,modelName:"formatter",tableName:"bespoke_reports_formatter",freezeTableName:true,timestamps:false,hooks:{async afterSync(t){let r=await _t.findAll();if(t.force||r.length===0){let o=Object.entries(Sn).map(([n,a])=>({name:n,content:a}));await _t.bulkCreate(o);}}}}),()=>_t}var Tn=Vi;var Wt=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 zi(e){return Wt.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=>(Wt.hasMany(t.image_content,{foreignKey:"id",sourceKey:"id",as:"contentByLocale"}),Wt)}var vn=zi;var Ar=class extends Model{};function Gi(e){return Ar.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}),()=>Ar}var _n=Gi;var Pt=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 ji(e){return Pt.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=>(Pt.hasMany(t.dimension,{foreignKey:"report_id",sourceKey:"id",as:"dimensions"}),Pt.hasMany(t.section,{foreignKey:"report_id",sourceKey:"id",as:"sections"}),Pt)}var wn=ji;var xt=class extends Model{toJSON(){let t=this.get({plain:true}),{variants:r=[]}=this;return {...t,variants:r.map(o=>o.toJSON())}}};function Wi(e){return xt.init({id:{type:DataTypes.INTEGER,primaryKey:true,autoIncrement:true},report_id:{type:DataTypes.INTEGER,onDelete:"cascade",references:{model:"bespoke_reports_report",key:"id"}},name:{type:DataTypes.STRING,defaultValue:""},settings:{type:DataTypes.JSONB,defaultValue:{}},ordering:{type:DataTypes.INTEGER,defaultValue:0},visible:{type:DataTypes.BOOLEAN,defaultValue:true}},{sequelize:e,modelName:"dimension",tableName:"bespoke_reports_report_dimension",freezeTableName:true,timestamps:false}),t=>(xt.hasMany(t.variant,{foreignKey:"dimension_id",sourceKey:"id",as:"variants",constraints:false}),xt.belongsTo(t.report,{foreignKey:"report_id",targetKey:"id",as:"report",constraints:false}),xt)}var Pn=Wi;var It=class extends Model{get report(){return this.dimension?.report}toJSON(){return this.get({plain:true})}};function Yi(e){return It.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=>(It.hasMany(t.search,{foreignKey:"variant_id",sourceKey:"id",as:"members",constraints:false}),It.belongsTo(t.dimension,{foreignKey:"dimension_id",targetKey:"id",as:"dimension",constraints:false}),It)}var kn=Yi;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 Zi(e){return ke.init({id:{primaryKey:true,type:DataTypes.TEXT},zvalue:DataTypes.DOUBLE,slug:DataTypes.TEXT,image_id:{type:DataTypes.INTEGER,references:{model:"bespoke_reports_image",key:"id"}},content_id:{autoIncrement:true,type:DataTypes.INTEGER,unique:true},variant_id:{primaryKey:true,type:DataTypes.INTEGER,onDelete:"cascade",references:{model:"bespoke_reports_report_dimension_variant",key:"id"}},dimension_id:{primaryKey:true,type:DataTypes.INTEGER,onDelete:"cascade",references:{model:"bespoke_reports_report_dimension",key:"id"}},report_id:{primaryKey:true,type:DataTypes.INTEGER,onDelete:"cascade",references:{model:"bespoke_reports_report",key:"id"}},visible:{type:DataTypes.BOOLEAN,defaultValue:true}},{sequelize:e,modelName:"search",tableName:"bespoke_reports_search",freezeTableName:true,timestamps:false}),t=>(ke.belongsTo(t.variant,{foreignKey:"variant_id",targetKey:"id",as:"variant",constraints:false}),ke.belongsTo(t.dimension,{foreignKey:"dimension_id",targetKey:"id",as:"dimension",constraints:false}),ke.belongsTo(t.report,{foreignKey:"report_id",targetKey:"id",as:"report",constraints:false}),ke.belongsTo(t.image,{foreignKey:"image_id",targetKey:"id",as:"image",constraints:false}),ke.hasMany(t.search_content,{foreignKey:"id",sourceKey:"content_id",as:"contentByLocale"}),ke)}var xn=Zi;var Tr=class extends Model{};function ec(e){return Tr.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}),()=>Tr}var In=ec;var Yt=class extends Model{toJSON(){let t=this.get({plain:true}),{blocks:r=[]}=this;return {...t,blocks:r.map(o=>o.toJSON())}}};function rc(e){return Yt.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=>(Yt.hasMany(t.block,{foreignKey:"section_id",sourceKey:"id",as:"blocks"}),Yt)}var Cn=rc;var _r=class extends Model{};function nc(e){return _r.init({id:{type:DataTypes.INTEGER,primaryKey:true,autoIncrement:true},name:{type:DataTypes.STRING,defaultValue:""},description:{type:DataTypes.STRING,defaultValue:""},content:{type:DataTypes.JSONB,defaultValue:{pattern:"",logic:`return {
|
|
2
2
|
axiosConfig: {
|
|
3
3
|
method: 'get',
|
|
4
4
|
url: url,
|
|
5
5
|
}
|
|
6
|
-
};`,
|
|
6
|
+
};`,logic_ssr:`return {
|
|
7
|
+
axiosConfig: {
|
|
8
|
+
method: 'get',
|
|
9
|
+
url: url,
|
|
10
|
+
}
|
|
11
|
+
};`,testUrl:""}}},{sequelize:e,modelName:"datasource",tableName:"bespoke_reports_data_source",freezeTableName:true,timestamps:false}),()=>_r}var Bn=nc;var Ln={block:gn,block_content:yn,block_input:hn,formatter:Tn,image:vn,image_content:_n,report:wn,dimension:Pn,variant:kn,search:xn,search_content:In,section:Cn,datasource:Bn};var fo=Ce(),On=process.env.REPORTS_DB_CONNECTION||"";if(!On)throw new Error(`
|
|
7
12
|
Env var 'REPORTS_DB_CONNECTION' is not present.
|
|
8
13
|
This is required to connect to a database to save the Reports CMS changes.
|
|
9
|
-
`);var rt=async()=>{if(global.sequelize){fo&&console.info("\u267B\uFE0F RE-UTILIZING DB CONNECTION");let e=global.sequelize.sequelize;if(e)try{return await e.authenticate(),global.sequelize}catch(t){fo&&console.warn(`\u26A0\uFE0F CONNECTION INACTIVE, REINITIALIZING: ${t.message}`),delete global.sequelize;}}if(!global.sequelize){fo&&console.info("\u{1F511} INITIALIZING DB CONNECTION");let e;try{e=new Sequelize(On,{logging:!1,dialectModule:
|
|
14
|
+
`);var rt=async()=>{if(global.sequelize){fo&&console.info("\u267B\uFE0F RE-UTILIZING DB CONNECTION");let e=global.sequelize.sequelize;if(e)try{return await e.authenticate(),global.sequelize}catch(t){fo&&console.warn(`\u26A0\uFE0F CONNECTION INACTIVE, REINITIALIZING: ${t.message}`),delete global.sequelize;}}if(!global.sequelize){fo&&console.info("\u{1F511} INITIALIZING DB CONNECTION");let e;try{e=new Sequelize(On,{logging:!1,dialectModule:ac,pool:{max:10,min:1,acquire:5*1e3,idle:10*1e3,evict:1*1e3}});}catch(t){throw new Error(`
|
|
10
15
|
Could not connect to the database using the given connection string.
|
|
11
16
|
Please check that the connection string 'REPORTS_DB_CONNECTION' is correct.
|
|
12
17
|
Details:
|
|
13
18
|
${t.message}
|
|
14
19
|
`)}Object.values(Ln).map(t=>t(e)).map(t=>t({...e.models,sequelize:e})),global.sequelize=e.sync().catch(t=>{t instanceof Error$1&&console.error("=".repeat(40),`
|
|
15
20
|
Error initializing sequelize connection:
|
|
16
|
-
`,t.stack||t.message),global.sequelize=void 0;}).then(()=>({...e.models,sequelize:e}));}return global.sequelize};var
|
|
17
|
-
`,`Error message: ${d.message}`),"N/A"}})}function Ec(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=true,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=Ct(),p=null;s&&s.user&&(p={user:s.user,status:"authenticated",isLoading:false,update:async()=>s});let d={envs:{...l,...u},...p?{session:p}:{}};try{let m=(await e.datasource.findAll({where:literal("(content->>'useProxy')::boolean = true"),order:[literal("(content->>'order')::integer ASC NULLS LAST")]})).map(g=>{let b={...l};return {...g.toJSON(),patternSwapped:be(g.content.pattern,{},{variables:b})}}).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:[],b=m.content.access&&Array.isArray(m.content.access)?m.content.access:[];if(m.content.logic&&(b.length===0||b.includes("public")||b.includes("guest")&&g.length===0||b.includes("private")&&g.length>0||Ec(g,b))){let v=await kr({vars:["url","libs","session"],logic:m.content.logic},d)(c.url);if(v.axiosConfig)c=v.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 Fr.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:yo}=j();function Fn(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[yo]?yo:Object.keys(c)[0],{overrideNames:p,overrideAttributes:d}=Zt(l),{accessor:f,path:m,idKey:R,labelKey:g}=c[yo];if(!m||!R||!g)return;let b=await o({url:m}).catch(z=>({data:[],error:z}));if("error"in b)throw new E(500,`Failed to fetch members: ${b.error}`);let k=jt(b.data,f),v=[];try{console.info(`Ingesting default items for variant ${s.name} for ${u}`),v=await a(s,u,k);}catch(z){let B=`[ERROR] Ingesting default member items for ${u}`;throw console.error(B,z),new E(500,B)}let F=await t.findAll({where:{variant_id:i}}).then(z=>Object.fromEntries(z.map(B=>[B.id,{content_id:B.content_id,needsUpdate:v.includes(B.content_id)}]))),_=Object.entries(c).map(async([z,B])=>{let{path:D,accessor:w,idKey:L,labelKey:U,attributes:C=[]}=B;if(!D||!L||!U)return;let q=await o({url:D}).catch(A=>({data:[],error:A}));if("error"in q)throw new E(500,`Failed to fetch members for locale ${z}: ${q.error}`);let O=jt(q.data,w),P=await r.findAll({where:{id:v,locale:z}}).then(A=>Object.fromEntries(A.map(S=>[S.id,S.toJSON()]))),H=O.filter(A=>typeof A[L]<"u"&&A[L]!==""&&typeof A[U]<"u"&&A[U]!=="").map(A=>{let S=F[A[L]],T,x=Object.fromEntries(C.map(ne=>[ne.name,ne.type==="constant"?ne.value:A[ne.value]||""]));return S.needsUpdate&&P[S.content_id]?(T={...P[S.content_id]},p&&(T.name=A[U]),d&&(T.attributes=x)):T={id:S.content_id,locale:z,name:A[U],attributes:x},T});try{return r.bulkCreate(H,{updateOnDuplicate:["name","attributes"]})}catch(A){let S=`[ERROR] Ingesting search content items for ${z}`;throw console.error(S,A),new E(500,S)}});await Promise.all(_);}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:b,keepOldMembers:k,overrideRelevance:v,overrideAttributes:F}=Zt(s.settings),_=t.findAll({attributes:["slug",[fn("COUNT",col("variant.id")),"slugCount"]],include:{association:"variant",attributes:[],required:false,right:true,where:{dimension_id:u,slug:p,id:{[Op.not]:l}}},group:"search.slug"}).then(S=>Object.fromEntries(S.map(T=>{let x=T.getDataValue("slugCount");return [T.slug,Number.parseInt(`${x}`,10)]}))),z=t.findAll({where:{variant_id:l}}).then(S=>Object.fromEntries(S.map(T=>[T.id,T.toJSON()]))),[B,D]=await Promise.all([_,z]),w=Object.values(D).map(S=>S.slug),L=[],U=null,C=null;if(R&&R!==""){for(let S of c)if(typeof S[R]=="number"&&!isNaN(S[R])){let T=S[R];(U===null||T<U)&&(U=T),(C===null||T>C)&&(C=T);}}let q=[],O=[],P=[],H=false;c.filter(S=>S[f]&&S[f]!==""&&S[m]&&S[m]!=="").forEach(S=>{let T=S[f],x=wr(S[m]);H=false;let ne=parseFloat(Math.random().toPrecision(5));if(R&&R!==""&&U&&C&&S[R]){let ae;try{ae=parseInt(S[R],10);}catch{ae=0;}let Z=C!==null&&U!==null&&C!==U?(ae-U)/(C-U):0;ne=C===U?1:parseFloat(Z.toPrecision(5));}if(D[T]){if(g||b||v||F){let ae=D[T];if((g||F)&&P.push(ae.content_id),g&&b){let Z=Object.values(D).filter(V=>V.id!==T).map(V=>V.slug),J=B[x]||Z.includes[x]||L.includes(x);J&&console.warn("Duplicate slug!",x,"replaced by",`${x}-${T}`);let ie=J?`${x}-${T}`:x;ae.slug!==ie&&(ae.slug=ie,L.push(x),H=true,console.info("UPDATE SLUG",T,x));}R&&R!==""&&v&&ae.zvalue!==ne&&(ae.zvalue=ne,H=true,console.warn("UPDATE ZVALUE",T,ne)),H&&O.push(ae);}}else {console.info("INSERT ID",T);let ae=B[x]||w.includes[x]||L.includes(x);ae&&console.warn("Duplicate slug!",x,"replaced by",`${x}-${T}`);let Z=ae?`${x}-${T}`:x;L.push(x),q.push({id:T,slug:Z,variant_id:l,dimension_id:u,report_id:d,zvalue:ne});}});let A=[];if(!k){let S=c.map(T=>T[f]);A=Object.keys(D).filter(T=>!S.includes(T));}try{return (q.length>0||O.length>0)&&(await t.bulkCreate([...q,...O],{updateOnDuplicate:["slug","zvalue"]}),console.info("New members ingested:",q.length),console.info("New members updated:",O.length)),A.length>0&&(await t.destroy({where:{id:{[Op.in]:A},variant_id:l}}),console.warn("Old members deleted:",A.length)),P}catch(S){throw console.error(`[ERROR] Ingesting search members for ${i}`,S),new Error(S)}}}var wc=rr(process.env.NEXT_PUBLIC_REPORTS_DEBUG);function Vn(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:true,where:{slug:g.variantSlug}}})),R=await Promise.all(m).then(g=>g.reduce((b,k)=>b.concat(k),[]));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(b=>b)};if(o.dimension_ids?.length)return {dimension_id:o.dimension_ids.map(b=>b)};if(o.report_ids?.length)return {report_id:o.report_ids.map(b=>b)}},R=()=>o.include_ids?.length?{[Op.in]:o.include_ids.map(b=>b)}:false,g=await t.findAll({attributes:["content_id"],where:{...m(),content_id:R()||{[Op.notIn]:o.current_ids},visible:true},order:[Sequelize.fn("RANDOM")],limit:o.related||4});u.content_id=g.map(b=>b.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 wc&&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 b=m.contentByLocale;g.contentByLocale=b,g.image=m.image,g.image_id=m.image_id,R=g;}else {let b=m.getContent(a),k=m.image?.getContent(a),v=k&&{id:m.image.id,author:m.image.author,url:m.image.url,license:m.image.license,meta:k.meta};R={...g,locale:b.locale,name:b.name,attributes:b.attributes,keywords:b.keywords,image:v||null,image_id:m.image_id};}return c==="lite"&&(delete R.image,delete R.image_id),R});return {meta:o,results:f}}}function $n(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 kc(e,t=true){if(!e)return "";let r=Qt($(e.toLowerCase()));return (t?uc(r,{replacement:" ",remove:/[*+~.()'"!:@-]/g,lower:true,strict:false,trim:true}):r).replace(/\s\s+/g," ")}var ot=kc;var Xt=[{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=Xt.reduce((e,t)=>e.concat(t.locales),[]);var Bt=Ce(),{locales:Ic}=j(),Cc=Ic.filter(e=>Ir.includes(e)),Ro=false,Bc=async(e,t=false)=>{if(t&&(Bt&&console.info("0\uFE0F\u20E3 CLEARING SEARCH INDEX"),global.flexsearch=void 0,Ro=false),global.flexsearch)return Bt&&console.info("\u{1F501} RE-UTILIZING SEARCH INDEX"),global.flexsearch;try{Ro||(Bt&&console.info("1\uFE0F\u20E3 INITIALIZING SEARCH INDEX"),Ro=!0,global.flexsearch=await Lc(e));}catch(r){throw new Error(`
|
|
21
|
+
`,t.stack||t.message),global.sequelize=void 0;}).then(()=>({...e.models,sequelize:e}));}return global.sequelize};var cc=()=>{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=cc;function $(e){let t={"&":"&","<":"<",">":">",""":'"',"'":"'","`":"`"," ":""},r=`(?:${Object.keys(t).join("|")})`,o=RegExp(r),n=RegExp(r,"g"),a=String(e).replace(/<[^>]+>/g," ").replace(/\s+/g," ").trim();return o.test(a)?a.replace(n,s=>t[s]):a}function Qt(e){return typeof e=="string"?String(e).replace(/&([a-z0-9]+|#[0-9]{1,6}|#x[0-9a-f]{1,6});/ig," "):e}function uc(e){return e?lc(Qt($(e)),{replacement:"-",remove:/[*+~.()'"!:@]/g,lower:true,strict:true,trim:true}):""}var wr=uc;var Zt=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 Mn={jwt:pc};var Nn=(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:Ye,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)},kr=(e,t={})=>{let r={libs:Mn,...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 mc(){let{publicRuntimeConfig:e}=dc(),t=e.bespoke_report_env_vars||{};return {...Object.keys(t).reduce((r,o)=>(r[`ENV_${o}`]=t[o]||"N/A",r),{})}}var de=mc;function fc(){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 Ct=fc;var{localeDefault:hc}=j();function he(e){return {variables:e.variables||{},query:e.query||{},locale:e.locale||hc}}function go(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 be=Rc;function Rc(e,t,r,o=false){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])?go(n[l]):n[l];if(p===void 0)return o?i:"N/A";try{return u(p,Ye,t)}catch(d){return console.error(`Error using formatter ${u.name}
|
|
22
|
+
`,`Error message: ${d.message}`),"N/A"}})}function Ec(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=true,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=Ct(),p=null;s&&s.user&&(p={user:s.user,status:"authenticated",isLoading:false,update:async()=>s});let d={envs:{...l,...u},...p?{session:p}:{}};try{let m=(await e.datasource.findAll({order:[literal("(content->>'order')::integer ASC NULLS LAST")]})).map(g=>{let b={...l};return {...g.toJSON(),patternSwapped:be(g.content.pattern,{},{variables:b})}}).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:[],b=m.content.access&&Array.isArray(m.content.access)?m.content.access:[],P=m.content.logic_ssr||m.content.logic;if(P&&(b.length===0||b.includes("public")||b.includes("guest")&&g.length===0||b.includes("private")&&g.length>0||Ec(g,b))){let U=await kr({vars:["url","libs","session"],logic:P},d)(c.url);if(U.axiosConfig)c=U.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 Fr.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:yo}=j();function Un(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[yo]?yo:Object.keys(c)[0],{overrideNames:p,overrideAttributes:d}=Zt(l),{accessor:f,path:m,idKey:R,labelKey:g}=c[yo];if(!m||!R||!g)return;let b=await o({url:m}).catch(z=>({data:[],error:z}));if("error"in b)throw new E(500,`Failed to fetch members: ${b.error}`);let P=jt(b.data,f),v=[];try{console.info(`Ingesting default items for variant ${s.name} for ${u}`),v=await a(s,u,P);}catch(z){let L=`[ERROR] Ingesting default member items for ${u}`;throw console.error(L,z),new E(500,L)}let U=await t.findAll({where:{variant_id:i}}).then(z=>Object.fromEntries(z.map(L=>[L.id,{content_id:L.content_id,needsUpdate:v.includes(L.content_id)}]))),w=Object.entries(c).map(async([z,L])=>{let{path:F,accessor:_,idKey:I,labelKey:N,attributes:B=[]}=L;if(!F||!I||!N)return;let q=await o({url:F}).catch(A=>({data:[],error:A}));if("error"in q)throw new E(500,`Failed to fetch members for locale ${z}: ${q.error}`);let O=jt(q.data,_),k=await r.findAll({where:{id:v,locale:z}}).then(A=>Object.fromEntries(A.map(S=>[S.id,S.toJSON()]))),H=O.filter(A=>typeof A[I]<"u"&&A[I]!==""&&typeof A[N]<"u"&&A[N]!=="").map(A=>{let S=U[A[I]],T,x=Object.fromEntries(B.map(ne=>[ne.name,ne.type==="constant"?ne.value:A[ne.value]||""]));return S.needsUpdate&&k[S.content_id]?(T={...k[S.content_id]},p&&(T.name=A[N]),d&&(T.attributes=x)):T={id:S.content_id,locale:z,name:A[N],attributes:x},T});try{return r.bulkCreate(H,{updateOnDuplicate:["name","attributes"]})}catch(A){let S=`[ERROR] Ingesting search content items for ${z}`;throw console.error(S,A),new E(500,S)}});await Promise.all(w);}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:b,keepOldMembers:P,overrideRelevance:v,overrideAttributes:U}=Zt(s.settings),w=t.findAll({attributes:["slug",[fn("COUNT",col("variant.id")),"slugCount"]],include:{association:"variant",attributes:[],required:false,right:true,where:{dimension_id:u,slug:p,id:{[Op.not]:l}}},group:"search.slug"}).then(S=>Object.fromEntries(S.map(T=>{let x=T.getDataValue("slugCount");return [T.slug,Number.parseInt(`${x}`,10)]}))),z=t.findAll({where:{variant_id:l}}).then(S=>Object.fromEntries(S.map(T=>[T.id,T.toJSON()]))),[L,F]=await Promise.all([w,z]),_=Object.values(F).map(S=>S.slug),I=[],N=null,B=null;if(R&&R!==""){for(let S of c)if(typeof S[R]=="number"&&!isNaN(S[R])){let T=S[R];(N===null||T<N)&&(N=T),(B===null||T>B)&&(B=T);}}let q=[],O=[],k=[],H=false;c.filter(S=>S[f]&&S[f]!==""&&S[m]&&S[m]!=="").forEach(S=>{let T=S[f],x=wr(S[m]);H=false;let ne=parseFloat(Math.random().toPrecision(5));if(R&&R!==""&&N&&B&&S[R]){let ae;try{ae=parseInt(S[R],10);}catch{ae=0;}let Z=B!==null&&N!==null&&B!==N?(ae-N)/(B-N):0;ne=B===N?1:parseFloat(Z.toPrecision(5));}if(F[T]){if(g||b||v||U){let ae=F[T];if((g||U)&&k.push(ae.content_id),g&&b){let Z=Object.values(F).filter(V=>V.id!==T).map(V=>V.slug),J=L[x]||Z.includes[x]||I.includes(x);J&&console.warn("Duplicate slug!",x,"replaced by",`${x}-${T}`);let ie=J?`${x}-${T}`:x;ae.slug!==ie&&(ae.slug=ie,I.push(x),H=true,console.info("UPDATE SLUG",T,x));}R&&R!==""&&v&&ae.zvalue!==ne&&(ae.zvalue=ne,H=true,console.warn("UPDATE ZVALUE",T,ne)),H&&O.push(ae);}}else {console.info("INSERT ID",T);let ae=L[x]||_.includes[x]||I.includes(x);ae&&console.warn("Duplicate slug!",x,"replaced by",`${x}-${T}`);let Z=ae?`${x}-${T}`:x;I.push(x),q.push({id:T,slug:Z,variant_id:l,dimension_id:u,report_id:d,zvalue:ne});}});let A=[];if(!P){let S=c.map(T=>T[f]);A=Object.keys(F).filter(T=>!S.includes(T));}try{return (q.length>0||O.length>0)&&(await t.bulkCreate([...q,...O],{updateOnDuplicate:["slug","zvalue"]}),console.info("New members ingested:",q.length),console.info("New members updated:",O.length)),A.length>0&&(await t.destroy({where:{id:{[Op.in]:A},variant_id:l}}),console.warn("Old members deleted:",A.length)),k}catch(S){throw console.error(`[ERROR] Ingesting search members for ${i}`,S),new Error(S)}}}var wc=rr(process.env.NEXT_PUBLIC_REPORTS_DEBUG);function Fn(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:true,where:{slug:g.variantSlug}}})),R=await Promise.all(m).then(g=>g.reduce((b,P)=>b.concat(P),[]));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(b=>b)};if(o.dimension_ids?.length)return {dimension_id:o.dimension_ids.map(b=>b)};if(o.report_ids?.length)return {report_id:o.report_ids.map(b=>b)}},R=()=>o.include_ids?.length?{[Op.in]:o.include_ids.map(b=>b)}:false,g=await t.findAll({attributes:["content_id"],where:{...m(),content_id:R()||{[Op.notIn]:o.current_ids},visible:true},order:[Sequelize.fn("RANDOM")],limit:o.related||4});u.content_id=g.map(b=>b.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 wc&&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 b=m.contentByLocale;g.contentByLocale=b,g.image=m.image,g.image_id=m.image_id,R=g;}else {let b=m.getContent(a),P=m.image?.getContent(a),v=P&&{id:m.image.id,author:m.image.author,url:m.image.url,license:m.image.license,meta:P.meta};R={...g,locale:b.locale,name:b.name,attributes:b.attributes,keywords:b.keywords,image:v||null,image_id:m.image_id};}return c==="lite"&&(delete R.image,delete R.image_id),R});return {meta:o,results:f}}}function Vn(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 kc(e,t=true){if(!e)return "";let r=Qt($(e.toLowerCase()));return (t?lc(r,{replacement:" ",remove:/[*+~.()'"!:@-]/g,lower:true,strict:false,trim:true}):r).replace(/\s\s+/g," ")}var ot=kc;var Xt=[{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=Xt.reduce((e,t)=>e.concat(t.locales),[]);var Bt=Ce(),{locales:Ic}=j(),Cc=Ic.filter(e=>Ir.includes(e)),Ro=false,Bc=async(e,t=false)=>{if(t&&(Bt&&console.info("0\uFE0F\u20E3 CLEARING SEARCH INDEX"),global.flexsearch=void 0,Ro=false),global.flexsearch)return Bt&&console.info("\u{1F501} RE-UTILIZING SEARCH INDEX"),global.flexsearch;try{Ro||(Bt&&console.info("1\uFE0F\u20E3 INITIALIZING SEARCH INDEX"),Ro=!0,global.flexsearch=await Lc(e));}catch(r){throw new Error(`
|
|
18
23
|
Could not initialize FlexSearch engine.
|
|
19
24
|
Details:
|
|
20
25
|
${r.message}
|
|
@@ -22,8 +27,8 @@ Error initializing sequelize connection:
|
|
|
22
27
|
Could not initialize Typesense engine.
|
|
23
28
|
Details:
|
|
24
29
|
${t.message}
|
|
25
|
-
`)}return global.typesense};async function Dc(){try{if(Lt){let e=await Fr.get(new URL(Lt).origin);if(e?.data["typesense-health"]===!0)return Oe&&console.info(`${Lt} 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 Uc(){if(Oe&&console.info(`\u{1F3F3}\uFE0F INITIALIZING TYPESENSE SEARCH AGAINST ${Lt}`),!await Dc())throw new Error("TYPESENSE_URL service is not healthy.");let t=Mc.map(r=>(Oe&&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(",")),Oe&&console.info("Typesense URL:",Lt,a),Fr.get(Lt,{params:a}).then(i=>(Oe&&(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 qn=Nc;var{localeDefault:Eo}=j();function Ot(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:b,includes:k,sort:v,direction:F="ASC",offset:_=0}=n,B=Xt.find(C=>C.locales.includes(c))?.charset||"latin",D=u&&!isNaN(u)?u:20,w=ot(i,B!=="arabic");function L(C){return C.toJSON()}function U(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 qn(),q=C[c]||C[Eo],O={query:w===""?"*":w,limit:D,variant:f,report:R,offset:_};return await q.search(O)}else {let C=[],q=await nt(e);if(i&&i!==""&&q[c]){let J=ot(i,B!=="arabic"),ie={query:J,limit:D},V=await q[c].search(ie);if(s?C=V.data.results.map(Q=>parseInt(Q.content_id,10)):C=V.reduce((Q,W)=>Q.concat(W.result),[]),C=hr(C),l&&q[l]){let W=q[l].search(J).reduce((ue,se)=>ue.concat(se.result),[]);W=hr(W),C=hr([...C,...W]);}}let O={...d?{visible:d}:{},...b?{image_id:{[Op.eq]:null}}:{},...f.length?{variant_id:f}:{},...m.length?{dimension_id:m}:{},...R.length?{report_id:R}:{}},P={locale:g?{[Op.ne]:null}:c},H=[];i&&i!==""&&C.length&&v!=="report"?H.push([literal(`array_position(array[${C.join(",")}], "content_id")`),"ASC"]):(v==="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"])),v&&v!=="name"&&v!=="report"&&H.unshift([v,F.toUpperCase()]),i&&i!==""&&(O.content_id=C);let A=[{association:"contentByLocale",where:P,separate:true}];(k||v==="report")&&A.push({association:"report",attributes:["id","name","settings"]},{association:"dimension",attributes:["id","name","settings"]},{association:"variant",attributes:["id","slug","name","settings"]});let S={...O.visible?{visible:O.visible}:{},...O.noImage?{image_id:O.noImage}:{},...O.content_id?{content_id:O.content_id}:{}};if(!O.report_id&&!O.dimension_id&&!O.variant_id&&d){let ie=(await r.findAll({attributes:["id"],where:{[Op.or]:[where(cast(json("settings.hide"),"boolean"),true)]}})).map(V=>V.id);ie.length>0&&(O.report_id={[Op.notIn]:ie},S.report_id=O.report_id);}let T=[],[x,ne]=await Promise.all([t.findAll({limit:D,offset:_,where:O,include:A,order:H,subQuery:false}),t.findAll({attributes:["variant_id",[fn("COUNT",col("variant_id")),"members_count"]],where:S,group:["variant_id"]})]),ae=ne.map(J=>J.toJSON());if(v==="name"){let J=F.toUpperCase()==="ASC"?1:-1;x.sort((ie,V)=>{let Q=ie.getContent(Eo),W=V.getContent(Eo);return Q&&W?Q.name>W.name?1*J:-1*J:0});}let Z=p==="nested"?L:U;return T=x.map(Z),p!=="nested"&&T.forEach(J=>{let{name:ie,keywords:V,score:Q=.1,zvalue:W}=J;if(ie){let ue=ot(ie),se=Q,le=i.length/ue.length,tn=ue.split("").reduce((ro,rn,on)=>(i.slice(0,on),i.charAt(on)===rn&&(ro+=rn),ro),"").length;ue===i||V&&V.includes(i)?se=1e6:ue.startsWith(i)?se*=20*le:tn&&(se*=tn*le),J.zvalue=se*2+W;}}),{meta:{origin:"flexsearch",...Object.fromEntries(Object.entries(n).map(J=>[J[0],$(J[1])])),variantCount:ae.reduce((J,ie)=>(J[ie.variant_id]=parseInt(ie.members_count,10),J),{})},results:T}}}}function Gn(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: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 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 Kn(e){return {ingestMembers:Fn(e),readMember:Vn(e),searchMember:Ot(e),updateMember:Gn(e),readMemberImage:$n(e)}}var at={include:[{association:"contentByLocale",separate:true},{association:"inputs",include:[{association:"contentByLocale",separate:true}]},{association:"consumers",include:[{association:"contentByLocale",separate:true}]}]},er=e=>({include:[{association:"variants",separate:true,attributes:{include:[[fn("COUNT",col("members.id")),"members_count"]]},include:[{model:e,as:"members",attributes:[]}],group:["variant.id"]}],order:[["ordering","ASC"]]}),tr={include:[{association:"blocks",separate:true,...at}]},Br=e=>({include:[{association:"dimensions",separate:true,...er(e)},{association:"sections",separate:true,...tr}]});var Re=[{association:"image",attributes:{exclude:["splash"]},include:[{association:"contentByLocale"}]},{association:"contentByLocale"}];function jn(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:at.include})).toJSON()}async function a(u){let p=u.map(f=>{let{locales:m,...R}=f;return {...R,consumers:[],inputs:[],contentByLocale:m.map(b=>({locale:b}))}});return (await t.bulkCreate(p,{include:at.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?at.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,b=await t.findByPk(p,{include:at.include,rejectOnEmpty:true});if(b.set(g),d){let k=Object.values(d);await r.bulkCreate(k,{updateOnDuplicate:["content"]});}return R&&(R.operation==="create"?await o.create(R.input):await o.destroy({where:R.input})),await b.save(),await b.reload(),b.toJSON()}async function c(u){let p=u.map(m=>{let{id:R,contentByLocale:g,consumers:b,inputs:k,inputAction:v,...F}=m;return {id:R,contentByLocale:g,inputAction:v,...F}}),d=await t.findAll({where:{id:{[Op.or]:p.map(m=>m.id)}},include:at.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 b=R[g],{id:k,contentByLocale:v,inputAction:F,..._}=b;if(F&&(F.operation==="create"?await o.create(F.input):await o.destroy({where:F.input})),v){let z=Object.values(v);await r.bulkCreate(z,{updateOnDuplicate:["content"]});}m.set(_),await m.save(),await m.reload(),f.push(m.toJSON());}}return f}async function l(u){let p=await t.findByPk(u,{rejectOnEmpty:true});return await p.destroy(),{id:u,parentType:"section",parentId:p.section_id}}}function Hn(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:er(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?er(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:er(r).include,rejectOnEmpty:false});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:false});return await c.destroy(),{id:i,parentType:"report",parentId:c.report_id}}}function Wn(e){let{formatter:t}=e;return {createFormatter:r,readFormatter:o,updateFormatter:n,deleteFormatter:a};async function r(s){return (await t.create(s)).toJSON()}async function o({id:s}={}){let i=s==null?[]:[].concat(s),c=await t.findAll({where:i.length>0?{id:i}:void 0});if(i.length===0||c.length===i.length)return c.map(p=>p.toJSON());let l=c.map(p=>p.id),u=i.filter(p=>!l.includes(p));throw new E(404,`Formatter(id=[${u}]) does not exist.`)}async function n(s){let{id:i,...c}=s,l=await t.findByPk(i,{rejectOnEmpty:true});return await l.update(c),l.toJSON()}async function a(s){return await(await t.findByPk(s,{rejectOnEmpty:true})).destroy(),{id:s}}}function Yn(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: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:Hc}=j();function Qn(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=Hc}={}){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(b=>({...b,blocks:b.blocks.map(k=>({...k,contentByLocale:Object.keys(k.contentByLocale).reduce((v,F)=>({...v,...[...l,"logic"].includes(F)?{[F]:k.contentByLocale[F]}:{}}),{})}))}))}});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:false});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:false})).destroy(),{id:i}}}function Zn(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:tr.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?tr.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:tr.include,rejectOnEmpty:false});return u.set(l),await u.save(),await u.reload(),u.toJSON()}async function a(s){let i=await t.findByPk(s,{rejectOnEmpty:true});return await i.destroy(),{id:s,parentType:"report",parentId:i.report_id}}}function ta(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("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:true});p.settings=Zt(p.settings);let f=p.settings.doIngest;return p.settings.doIngest=false,await d.update(p),f&&(await t.ingestMembers(d),await nt(e,true)),await d.reload(),d.toJSON()}async function i(l){let u=await r.findByPk(l,{rejectOnEmpty:true});return await u.destroy(),nt(e,true),{id:l,parentType:"dimension",parentId:u.dimension_id}}async function c({dimension:l,slug:u}){let p=await r.findAll({attributes:["slug",[fn("COUNT",col("id")),"slugCount"]],where:{dimension_id:{[Op.ne]:l}},group:"slug"}).then(R=>Object.fromEntries(R.map(g=>{let b=g.getDataValue("slugCount");return [g.slug,Number.parseInt(`${b}`,10)]}))),d=u,f=1,m=true;for(;p[d];)m=false,d=`${u}-${f}`,f++;return {candidate:u,dimension_id:l,suggestion:d,valid:m}}}function ra(e){let t={...jn(e),...Hn(e),...Wn(e),...Yn(e),...Kn(e),...Qn(e),...Zn(e)},r={...t,...ta(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 oa=e=>{throw console.error("/methods/helpers/uploadImage.ts:",e),new Error(e.message)},Yc=Number(process.env.NEXT_PUBLIC_IMAGE_SPLASH_WIDTH)||1400,Qc=Number(process.env.NEXT_PUBLIC_IMAGE_THUMB_WIDTH)||400,Zc=async(e,t,r)=>{let o=[{type:"splash",res:Yc},{type:"thumb",res:Qc}];for(let n of o){let a=await Jc(r).resize(n.res).toFormat("webp").webp({lossless:true}).toBuffer().catch(oa);await e.image.update({[n.type]:a},{where:{id:t}}).catch(oa);}},ve=Zc;var na="SECTION_ALLOWED";var aa=["4","5","7","8","9","10"],tl=aa.join(),{locales:rl}=j(),Me;if(process.env.FLICKR_API_KEY)try{Me=new el(process.env.FLICKR_API_KEY);}catch(e){throw console.error("Flickr ERROR:",e),new Error(e.message)}async function sa(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:tl,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:$(r.prompt),page:$(`${r.page}`)},results:c}}catch(r){throw console.error(r),new Error("Error in search flickr provider")}}async function ia(e,t){try{let{content_id:r,image_id:o}=t,n={content_id:$(`${r}`)||"",id:$(`${o}`)||""},s=`https://flic.kr/p/${Xc.int_to_base58(o)}`;if(!Me)throw new Error("Flickr API Key not configured");let i=await Me.photos.getInfo({photo_id:o}).then(l=>l.body),c;if(i)if(aa.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(_=>_.body),f=d.sizes.size.find(_=>parseInt(_.width,10)>=1600);if(f||(f=d.sizes.size.find(_=>parseInt(_.width,10)>=1e3)),f||(f=d.sizes.size.find(_=>parseInt(_.width,10)>=500)),!f||!f.source)throw new Error("Flickr Source Error, try another image.");let m=await fetch(f.source);if(!m.ok)throw new Error("Flickr Error retrieving image, try another image.");let R=await m.arrayBuffer(),b=(await Me.photos.licenses.getInfo().then(_=>_.body.licenses.license)).find(_=>_.id===parseInt(i.photo.license,10)),k={url:s,author:i.photo.owner.realname||i.photo.owner.username,license:b?`${b.name}: ${b.url}`:""},v=await e.image.create(k);await e.image_content.destroy({where:{id:v.id}});let F=rl.map(_=>({id:v.id,locale:_,meta:i.photo.title._content}));await e.image_content.bulkCreate(F),await e.search.update({image_id:v.id},{where:{content_id:r}}),await ve(e,v.id,R);}let p=await e.search.findOne({where:{content_id:r},include:Re});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 N(e,t,r,o){return {method:e,path:t,handler:r,roleRequired:o}}function ee(e){let t=Number.parseInt(`${e||""}`,10);if(Number.isNaN(t)||!Number.isFinite(t))throw new E(400,`Invalid numeric parameter: ${e}`);return t}function K(e){return e==null||e===""?[]:Array.isArray(e)?e:e.toString().split(",")}var{localeDefault:De}=j();function ca(e){let{readMember:t,searchMember:r,updateMember:o,readMemberImage:n}=e;return [N("GET","read/members",async a=>{let s=ol(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)}),N("GET","search/members",a=>{let s=or(a.query);return r(s)}),N("POST","update/member",a=>{let{body:s}=a;return o(s)},[G.EDITOR]),N("GET","member/image",a=>{let s=K(a.query.size)[0];return n({member:ee(a.query.member),size:s&&s==="splash"?"splash":"thumb"})})]}function ol(e){let t=K(e.locale)[0]||De,r=t==="all"||rr(e.all),o=K(e.mode)[0],a=(K(e.output)[0]||"full")==="lite"?"lite":"full",s=parseInt(K(e.related)[0],10)||5,i=rr(e.allowNulls,{default:false}),c=K(e.variant).map(ee);if(c.length===0&&(c=K(e["variant[]"]).map(ee)),o==="ids")return {all:r,mode:o,variant:c,output:a,locale:r?De:$(t),ids:K(e.ids||e["ids[]"]),allowNulls:i};if(o==="content_ids")return {all:r,mode:o,variant:c,output:a,locale:r?De:$(t),content_ids:K(e.content_ids||e["content_ids[]"]).map(ee),allowNulls:false};if(o==="slugs")return {all:r,mode:o,variant:c,output:a,locale:r?De:$(t),slugs:K(e.slugs||e["slugs[]"]).map(l=>{let[u,p]=l.split("/");return {variantSlug:u,memberSlug:p}}),allowNulls:false};if(o==="related")return {all:r,mode:o,locale:r?De:$(t),related:s,current_ids:K(e.current_ids||e["current_ids[]"]).map(ee),include_ids:K(e.include_ids||e["include_ids[]"]).map(ee),report_ids:K(e.report_ids||e["report_ids[]"]).map(ee),dimension_ids:K(e.dimension_ids||e["dimension_ids[]"]).map(ee),variant_ids:K(e.variant_ids||e["variant_ids[]"]).map(ee),output:a,allowNulls:false};if(o==="whole")return {all:r,mode:o,variant:c,locale:r?De:$(t),output:a,allowNulls:i};throw new E(400,`Invalid mode: '${o}'`)}function or(e){let t=K(e.locale)[0]||De||"en",r=t==="all",o=K(e.format)[0],n=o?o==="nested":r,a=K(e.variant).map(ee);a.length===0&&(a=K(e["variant[]"]).map(ee));let s=K(e.dimension).map(ee);s.length===0&&(s=K(e["dimension[]"]).map(ee));let i=K(e.report).map(ee);i.length===0&&(i=K(e["report[]"]).map(ee));let c=e.origin==="typesense"?"typesense":"flexsearch";return {query:K(e.query||e.q)[0]||"",locale:r?De:t,preferredLocale:K(e.preferredLocale)[0],limit:K(e.limit).map(ee)[0]??5,format:n?"nested":"plain",includes:rr(e.includes,{default:true}),visible:rr(e.visible,{default:true}),noImage:rr(e.noImage,{default:false}),variant:a,dimension:s,report:i,all:r,sort:K(e.sort)[0],direction:K(e.direction)[0],offset:Number(e.offset||0),origin:c}}async function la(e,t){let r=Ot(e),o=or({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:$(o.query)},results:a}}async function ua(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:Re}).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:sl}=j(),nr;if(process.env.UNSPLASH_API_KEY)try{nr=createApi({accessKey:process.env.UNSPLASH_API_KEY});}catch(e){throw console.error("Unsplash error:",e),new Error(e.message)}async function pa(e,t){try{let r={prompt:t.prompt||"",page:t.page||1};if(!nr)throw new Error("Unsplash API Key not configured");let o=r.prompt,a=(await nr.search.getPhotos({query:o,perPage:24,page:r.page,orientation:"landscape"}).then(s=>s.response.results)).map(s=>({id:s.id,source:s.urls.thumb}));return {meta:{prompt:$(r.prompt),page:$(`${r.page}`)},results:a}}catch(r){throw console.error(r),new Error("Error in search unsplash provider")}}async function da(e,t){try{let{content_id:r,image_id:o}=t,n={content_id:$(`${r}`)||"",id:$(`${o}`)||""};if(!nr)throw console.warn("Unsplash is not initialized. Check the credentials"),new Error("Unsplash is not initialized. Check the credentials");let a=await nr.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 Fr.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=sl.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 ve(e,f.id,p);}let u=await e.search.findOne({where:{content_id:r},include:Re});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:cl}=j();async function ma(e,t){try{let{content_id:r,image_source:o,files:n}=t,a={content_id:$(`${r}`)||""};if(await e.search.findOne({where:{content_id:r}})&&n){let c=await il.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=cl.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 ve(e,u.id,c);}let i=await e.search.findOne({where:{content_id:r},include:Re});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:ll}=j();var fa=async e=>{let t={"x-api-key":process.env.ADOBE_STOCK_API_KEY||"EMPTY_ADOBE_KEY","X-Product":"BespokeApp/0.1"};return t};var ar;if(process.env.ADOBE_STOCK_API_KEY)try{ar={search:async(e,t)=>await Fr.get("https://stock.adobe.io/Rest/Media/1/Search/Files",{headers:await fa(!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 Fr.get("https://stock.adobe.io/Rest/Media/1/Files",{headers:await fa(!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 ga(e,t){try{let r={prompt:t.prompt||"",page:t.page||1};if(!ar)throw new Error("Adobe API Key not configured");let n=(await ar.search(r.prompt,r.page)).map(a=>({id:a.id,source:a.thumbnail_url}));return {meta:{prompt:$(r.prompt),page:$(`${r.page}`)},results:n}}catch(r){throw console.error(r),new Error("Error in search Adobe provider")}}async function ya(e,t){try{let{content_id:r,image_id:o}=t,n={content_id:$(`${r}`)||"",id:$(`${o}`)||""};if(!ar)throw console.warn("Adobe is not initialized. Check the credentials"),new Error("Adobe is not initialized. Check the credentials");let a=await ar.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 Fr.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=ll.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 ve(e,f.id,p);}let u=await e.search.findOne({where:{content_id:r},include:Re});u&&u.image&&(u.image.thumb=!!u.image.thumb);}else throw new Error("Error updating Search")}else throw new Error("Malformed URL");return {meta:{...n},results:s}}catch(r){throw console.error(r),new Error("Error in save adobe provider")}}var{locales:ul}=j(),Lr=process.env.PIXABAY_API_KEY,ha="https://pixabay.com/api/";async function Ra(e,t){try{let r={prompt:t.prompt||"",page:t.page||1};if(!Lr)throw new Error("Pixabay API Key not configured");let o=encodeURIComponent(r.prompt),n=`${ha}?key=${Lr}&q=${o}&per_page=${24}&page=${r.page}&image_type=photo&orientation=horizontal&safesearch=true`,i=(await Fr.get(n)).data.hits?.map(c=>({id:c.id,source:c.previewURL||c.webformatURL}))||[];return {meta:{prompt:$(r.prompt),page:$(`${r.page}`)},results:i}}catch(r){throw console.error(r),new Error("Error in search pixabay provider")}}async function ba(e,t){try{let{content_id:r,image_id:o}=t,n={content_id:$(`${r}`)||"",id:$(`${o}`)||""};if(!Lr)throw console.warn("Pixabay is not initialized. Check the credentials"),new Error("Pixabay is not initialized. Check the credentials");let a=`${ha}?key=${Lr}&id=${o}`,i=(await Fr.get(a)).data,c;if(i.hits&&i.hits.length>0){let l=i.hits[0],u=await e.search.findOne({where:{content_id:r}}),p=l.pageURL,d=await e.image.findOne({where:{url:p}});if(u){if(d)await e.search.update({image_id:d.id},{where:{content_id:r}});else {let m=l.largeImageURL||l.webformatURL||l.imageURL;if(!m)throw new Error("Pixabay image URL not available");let R=await Fr.get(m,{responseType:"arraybuffer"}).then(v=>v.data),g={url:p,author:l.user||`Pixabay User ${l.user_id}`,license:"Free Pixabay License: https://pixabay.com/service/license/"},b=await e.image.create(g);await e.image_content.destroy({where:{id:b.id}});let k=ul.map(v=>({id:b.id,locale:v,meta:l.tags||l.description||""}));await e.image_content.bulkCreate(k),await e.search.update({image_id:b.id},{where:{content_id:r}}),await ve(e,b.id,R);}let f=await e.search.findOne({where:{content_id:r},include:Re});f&&f.image&&(f.image.thumb=!!f.image.thumb);}else throw new Error("Error updating Search")}else throw new Error("Image not found in Pixabay");return {meta:{...n},results:c}}catch(r){throw console.error(r),new Error("Error in save pixabay provider")}}var pl={local:ua,flickr:ia,unsplash:da,upload:ma,adobe:ya,pixabay:ba};function st(e,t){let r=pl[t];if(!r)throw new E(500,`Wrong provider dbImageSaveFactory.ts: ${t}`);return I(o=>r(e,o))}var dl={local:la,flickr:sa,unsplash:pa,adobe:ga,pixabay:Ra};function Mt(e,t){let r=dl[t];if(!r)throw new E(500,`Wrong provider dbImageSearchFactory.ts: ${t}`);return I(o=>r(e,o))}var bl=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 Mr(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("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=>({...bl(l.toJSON()),mode:l.dimensions.length===1?Be.UNILATERAL:Be.MULTILATERAL}))}}}function Sa(e){return async()=>(await nt(e,true),{error:false})}var{locales:Sl,localeDefault:El}=j(),Al=(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===Be.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},Tl=(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 Ea(e){let t=Ot(e),r=Mr(e);return o;async function o(n){let a=n.format||"results",s=Sl.includes(n.locale)?n.locale:El,i=n.origin||"flexsearch",c=process.env.REPORTS_EXTERNAL_SEARCH&&i==="typesense",l=await t({...n,format:"plain",locale:$(s),visible:true});if(c)return l;{let u=l.results?l.results:[],d=(await r()).data,f=Tl(u,d);return {meta:{...l.meta,origin:"flexsearch",format:a},results:Al(f,d)}}}}function Aa(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 Ta(){return async e=>{try{let{target:t}=e;return {target:t}}catch(t){throw new E(t.response?.status||500,t.message)}}}function Se(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 _l(e,t){return e.some(r=>t.includes(`role.${r}`))}function va(e){let{report:t}=e;return r;async function r(o){let n=await t.findByPk(o.report_id,{include:{association:"sections",separate:true,where:{id:o.section_id},include:[{association:"blocks",separate:true,include:[{association:"contentByLocale",separate:true,where:{locale:{[Op.or]:[o.locale,"logic"]}}},{association:"inputs"},{association:"consumers"}]}]}}).then(s=>s&&s.sections&&Array.isArray(s.sections)?s.sections.reduce((i,c)=>{let l=c.blocks.map(u=>{let p=u.toJSON();return p.inputs=p.inputs.map(d=>d.id),p.consumers=p.consumers.map(d=>d.id),p});return i.concat(l)},[]):[]),a=n.filter(s=>s.settings&&s.settings.access&&Array.isArray(s.settings.access)&&Array.isArray(o.roles)&&(s.settings.access.includes("private")||_l(o.roles,s.settings.access))).map(s=>s.id);return a=a.concat(Se(a,n)),{params:{...o},data:n.filter(s=>a.includes(s.id))}}}var kl=Object.keys(vo).filter(e=>e.indexOf("Icon")===0);async function _a(){return {meta:{provider:"tabler"},results:kl}}async function wa(e){let t=vo[e.name]?vo[e.name]:()=>"";return renderToString(createElement(t))}var xl={tabler:_a};function Pa(e){let t=xl[e];if(!t)throw new E(500,`Wrong provider dbListIconsFactory.ts: ${e}`);return I(()=>t())}var Il={tabler:wa};function ka(e){return I(t=>{let r=Il[e];if(!r)throw new E(500,`Wrong provider dbReadIconFactory.ts: ${t.provider}`);return r({name:t.name,provider:e})})}function xa(){return e;async function e(){return {secrets:Ct()}}}function it(e,t,r){return rt().then(o=>{Object.assign(r,Nt(o));})}function Nt(e,t){let r={},o=Ke(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(cn()),r.searchUser=I(ln()),r.readUser=I(un()),r.updateUser=I(pn())),{...ra(e),searchReport:I(Ea(e)),readMetadata:I(Mr(e)),regenerateSearch:I(Sa(e)),imageFlickrSearch:Mt(e,"flickr"),imageLocalSearch:Mt(e,"local"),imageUnsplashSearch:Mt(e,"unsplash"),imageAdobeSearch:Mt(e,"adobe"),imagePixabaySearch:Mt(e,"pixabay"),imageFlickrSave:st(e,"flickr"),imageLocalSave:st(e,"local"),imageUnsplashSave:st(e,"unsplash"),imageUploadSave:st(e,"upload"),imageAdobeSave:st(e,"adobe"),imagePixabaySave:st(e,"pixabay"),urlProxy:xr(e),searchRole:r.searchRole,searchUser:r.searchUser,readUser:r.readUser,updateUser:r.updateUser,updateMyData:I(dn()),revalidateReport:I(Aa(e)),revalidateUrl:I(Ta()),readPrivateBlocks:I(va(e)),listTablerIcons:Pa("tabler"),readTablerIcon:ka("tabler"),readEnvSecrets:I(xa())}}async function _o(e){try{let t=new Cl.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 Ue(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 [N("POST",`create/bulk/${t}`,c=>{let{body:l}=c,{files:u,...p}=l,d=Object.keys(p).map(f=>p[f]);return i(d)},[G.EDITOR]),N("POST",`create/${t}`,c=>{let{body:l}=c;return r(l)},[G.EDITOR]),N("GET",`read/${t}`,c=>{let l=c.query,u=K(l.id).map(ee);return o({id:u,include:rr(l.include)})}),N("POST",`update/${t}`,c=>{let{body:l}=c;return n(l)},[G.EDITOR]),N("POST",`update/bulk/${t}`,c=>{let{body:l}=c,{files:u,...p}=l,d=Object.keys(p).map(f=>p[f]);return s(d)},[G.EDITOR]),N("DELETE",`delete/${t}`,c=>{let l=ee(c.query.id);return a(l)},[G.EDITOR])]}function Ia(e){let{validateVariantSlug:t}=e;return [...Ue(e,"variant"),N("GET","validate/variant",r=>{let o=r.query,n=ee(o.dimension);return t({dimension:n,slug:wr(o.slug)})},[G.EDITOR])]}function Ca(e){return Ue(e,"datasource").map(r=>({...r,roleRequired:[G.EDITOR]}))}function ct(e,t){let r=`image${Te(t)}Save`,o=e[r];return N("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)},[G.EDITOR])}function Dt(e,t){let r=`image${Te(t)}Search`,o=e[r];return N("GET",`images/search/${t}`,async n=>{let a=K(n.query.prompt)[0];if(!a)throw new E(400,"Empty 'prompt' param.");return o({prompt:a,page:ee(n.query.page)})},[G.EDITOR])}function Ba(e){let{readMetadata:t}=e;return N("GET","read/metadata",r=>t(r.query))}function La(e){let{regenerateSearch:t}=e;return N("POST","search/regenerate",()=>t(void 0),[G.EDITOR])}function Oa(e){let{searchReport:t}=e;return N("GET","search/reports",r=>{let o=Ll(r.query);return t(o)})}function Ll(e){return {...or(e),format:K(e.format)[0]}}function Ma(e){let{urlProxy:t}=e;return N("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:K(s)[0]==="POST"?"POST":"GET",user_roles:c,wrapper:i!=="false",session:n})})}function Na(e){let{readMetadata:t,revalidateReport:r}=e;return N("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===Be.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")}},[G.EDITOR])}function Da(){return N("GET","revalidate/url",async(e,t)=>{let{target:r}=e.query;if(r)try{return t.revalidate(r,{unstable_onlyGenerated:!0}),{ok:!0,status:200,data:{target:r}}}catch(o){throw console.error(o),new E(500,"Error revalidating")}else throw new E(400,"Missing target parameter in revalidate factory")},[G.ADMIN,G.EDITOR,G.WRITER])}function lt(e=process.env){let t=e.BESPOKE_JWT_SECRET;return t||(console.warn("WARNING: Using default BESPOKE_JWT_SECRET. This is insecure and not recommended for production environments."),"BESPOKE_JWT_SECRET")}var{localeDefault:Ml}=j(),Ua=lt();function Fa(e){let{readPrivateBlocks:t}=e;return N("POST","read/blocks/private",(r,o,n)=>{let{userToken:a}=r.body,s=null;if(a&&Ua)try{let l=dc.verify(a,Ua);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||Ml,roles:i,section_id:r.body.section_id||[]};return t(c)})}function Va(e){let{readEnvSecrets:t}=e;return N("GET","read/secrets",()=>t({}),[G.EDITOR])}function $a(e){let{searchRole:t}=e;return N("GET","auth/search/roles",(r,o)=>t(""),[G.EDITOR,G.ADMIN])}function za(e){let{searchUser:t}=e;return N("GET","auth/search/users",r=>t({query:r.query.query,role_id:r.query.role_id,page:r.query.page||0}),[G.ADMIN])}function qa(e){let{readUser:t}=e;return N("GET","auth/read/user",r=>t(r.query.user_id),[G.ADMIN])}function Ga(e){let{updateUser:t}=e;return N("POST","auth/update/user",async r=>{let o=r.body;return await t(o)},[G.ADMIN])}function Ka(e){let{updateUser:t,readUser:r}=e;return N("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 Nl(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 ja(){return N("POST","pdf",async(e,t)=>{let{slugs:r,path:o}=e.body;if(!r||!o)throw new E(400,"Missing path parameter in request.");{new URL(o,e.headers.origin);return {ok:true,status:200,data:await Nl()}}})}function Ha(e,t){let r=`list${Te(t)}Icons`,o=e[r];return N("GET",`list/icons/${t}`,async()=>o({}),[G.EDITOR])}function Wa(e,t){let r=`read${Te(t)}Icon`,o=e[r];return N("GET",`read/icons/${t}/icon.svg`,async n=>o({provider:t,name:n.query.name}))}function Ja(){return N("GET","report",async(e,t)=>{let{report:r,prefix:o,locale:n}=e.query;if(!r)throw new E(400,"Missing report parameter.");if(!o)throw new E(400,"Missing report parameter.");if(!n)throw new E(400,"Missing report parameter.");try{let s=await(await fetch(`${process.env.NEXT_PUBLIC_REPORTS_BASE_URL}/${n}${o}${r}`)).text(),l=new Dl().parseFromString(s,"text/html").getElementById("__NEXT_DATA__")?.textContent,u=JSON.parse(l).props;return {ok:!0,status:200,data:{variables:u.pageProps.initialState.variables,status:u.pageProps.initialState.status}}}catch(a){throw console.error(a),new E(500,"Couldn't find page cache")}})}var Fl=lt();function Vl(e){let t={email:e.user.email,name:e.user.name,roles:e.user.bespoke_roles||[]};return dc.sign(t,Fl,{expiresIn:"1min"})}function Ya(){return N("POST","users/generate-token",async(e,t,r)=>{if(!r||!r.user)throw new E(401,"Unauthorized. Must be logged in to generate a token.");try{return {ok:!0,status:200,wrapper:!1,data:{token:Vl(r)}}}catch(o){throw console.error("Error generating token:",o),new E(500,"Internal Server Error")}})}var zl=lt(),ql=e=>!!dc.verify(e,zl);function Qa(){return N("POST","users/validate-token",async(e,t)=>{let{token:r}=e.body;try{return ql(r)?{ok:!0,status:200,wrapper:!1,data:{success:!0}}:{ok:!1,status:401,error:"Invalid token"}}catch{return {ok:false,status:401,error:"Invalid token"}}})}var jl=Ce();function wo(e,t){return `${e.toUpperCase()} ${t.toLowerCase()}`}function Hl(e,t){let r=Nt(e,t);return Object.fromEntries([...Ue(r,"block"),...Ue(r,"dimension"),...Ue(r,"formatter"),...Ue(r,"report"),...Ue(r,"section"),...Ca(r),...Ia(r),...ca(r),Oa(r),Ba(r),La(r),ct(r,"flickr"),ct(r,"local"),ct(r,"unsplash"),ct(r,"upload"),ct(r,"adobe"),ct(r,"pixabay"),Dt(r,"flickr"),Dt(r,"local"),Dt(r,"unsplash"),Dt(r,"adobe"),Dt(r,"pixabay"),Ma(r),$a(r),za(r),qa(r),Ga(r),Ka(r),Na(r),Da(),Fa(r),ja(),Ha(r,"tabler"),Wa(r,"tabler"),Ja(),Va(r),Ya(),Qa()].map(({handler:o,method:n,path:a,roleRequired:s})=>[wo(n,a),{handler:o,roleRequired:s}]))}function Wl(e){let t=rt().then(r=>Hl(r,e));return async function(o,n){await Gl(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=wo(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 _o(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 Kl(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=>{jl&&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)}},Yl=Jl;var St={};Ys(St,{addBlockToState:()=>fr,addRunConsumersRunning:()=>Ds,cloneEntity:()=>Is,createEntity:()=>Ps,deleteEntity:()=>xs,deleteQueryParam:()=>mp,readEntity:()=>oe,readEnvSecrets:()=>vp,readMember:()=>qe,readMetadata:()=>mr,readPrivateBlocks:()=>Ep,readUser:()=>Rp,recalculateVariables:()=>Vs,removeBlocksFromState:()=>Ge,removeDataSourceLogic:()=>gr,removeRunConsumersRunning:()=>Us,reportSearch:()=>up,resetSectionState:()=>Ns,revalidateReport:()=>Tp,revalidateUrl:()=>Ap,searchMember:()=>dp,searchRegenerate:()=>pp,searchRole:()=>yp,searchUser:()=>hp,setCurrentLocale:()=>ip,setPreferredLocale:()=>cp,setPreviews:()=>sp,setQueryParam:()=>fp,setSectionState:()=>Ms,setStatus:()=>Os,updateEntity:()=>ks,updateMyData:()=>Sp,updateUser:()=>bp,urlProxy:()=>gp,variantValidateSlug:()=>lp});function Ee(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=>Ee(e,{...o,method:"GET",params:r?r(n):n})}function re(e,t,r){let o=typeof t=="string"?{url:t}:t;return n=>Ee(e,{...o,method:"POST",data:n})}function Fe(e,t,r){let o=typeof t=="string"?{url:t}:t;return n=>Ee(e,{...o,method:"DELETE",params:r?r(n):n})}function ut(e,t){return r=>Ee(e,{method:"POST",url:`images/save/${t}`,params:{prompt:r.prompt,provider:t}})}function Ut(e,t){return r=>Ee(e,{method:"GET",url:`images/search/${t}`,params:{prompt:r.prompt,page:r.page,provider:t}})}function Za(e,t){return ()=>Ee(e,{method:"GET",url:`list/icons/${t}`,params:{provider:t}})}function Xa(e,t){return r=>Ee(e,{method:"GET",url:`read/icons/${t}/icon.svg`,params:{name:r.name}})}var pt=e=>({id:e}),Zl=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=Fr.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:Fe(t,"delete/block",pt),deleteDimension:Fe(t,"delete/dimension",pt),deleteFormatter:Fe(t,"delete/formatter",pt),deleteReport:Fe(t,"delete/report",pt),deleteSection:Fe(t,"delete/section",pt),deleteVariant:Fe(t,"delete/variant",pt),deleteDatasource:Fe(t,"delete/datasource",pt),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",Zl),readMemberImage:te(t,{url:"member/image",responseType:"blob"}),searchMember:te(t,"search/members"),updateMember:te(t,"update/members"),imageLocalSearch:Ut(t,"local"),imageLocalSave:ut(t,"local"),imageFlickrSearch:Ut(t,"flickr"),imageFlickrSave:ut(t,"flickr"),imageUnsplashSearch:Ut(t,"unsplash"),imageUnsplashSave:ut(t,"unsplash"),imageUploadSave:ut(t,"upload"),imageAdobeSearch:Ut(t,"adobe"),imageAdobeSave:ut(t,"adobe"),imagePixabaySearch:Ut(t,"pixabay"),imagePixabaySave:ut(t,"pixabay"),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:Za(t,"tabler"),readTablerIcon:Xa(t,"tabler"),readEnvSecrets:te(t,"read/secrets")}}var tu=rr(process.env.REPORTS_LOGGING),dt=ru;function ru(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 ou(d,"log","debug","info","warn","error")?(...f)=>{i.push(`${d} ${Date.now()} - ${f.map(m=>format(m)).join(" ")}`),tu&&p[d](...f);}:p[d]}}),u;return n?u=new Function(e,"console","libs","formatters","locale","variables",r)(t,l,Ye,o,c,n):u=new Function(e,"console","libs","formatters","locale",r)(t,l,Ye,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 ou(e,...t){return t.includes(e)}var Po=(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]=be(a[s],t,r):Array.isArray(a[s])?a[s]=a[s].filter(n).map(i=>typeof i=="object"?Po(i,t,r):typeof i=="string"?be(i,t,r):i):typeof a[s]=="object"&&a[s]!==null&&!(a[s]instanceof Date)&&(a[s]=Po(a[s],t,r));}),a},Nr=Po;var es=e=>Array.isArray(e)?e.map(t=>typeof t=="string"?{allowed:"always",label:t,id:t}:{allowed:"always",label:t.id,...t}):[];var nu=(e,t,r)=>{if(!r)return false;if(e===Ze.SINGLE)return r.find(n=>n.id===t);let o=Array.isArray(t)?t:t.split(",");return Array.isArray(o)&&o.every(n=>r.map(a=>a.id).includes(n))},ko=nu;function xo(e,t,r,o,n=false){let{variables:a}=he(o),s=Nr({logic:t},r,o).logic,i=dt("variables",a,s,r,void 0,o),{vars:c,log:l,error:u}=i,p=c.type||Ze.SINGLE,d=c.component||"Selector",f=c.hideLabel||"false",m=c.resetSectionVars||"false",R=c.name||"Unlabeled Selector",g=es(c.options||[]),b=_=>p===Ze.MULTI&&!Array.isArray(_)?[_]:_,k=c.defaultValue,v;if(k&&(k=b(k),ko(p,k,g)&&(v=k)),!v){let _=g&&g[0]&&g[0].id||g[0]||"";v=b(_);}if(n&&typeof window<"u"){let _=`selector${e}id`,z=new URLSearchParams(window.location.search),D=Object.fromEntries(z)[_];D&&!ko(p,D,g)&&D!==void 0&&(z.delete(_),window.history.replaceState(null,null,`?${z.toString()}`));}return {config:{name:R,type:p,options:g,defaultValue:v,component:d,hideLabel:f,resetSectionVars:m},log:l,error:u}}function Io(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 Co(e,t,r,o,n=false){let{variables:a}=he(o),s=Nr({logic:t},r,o).logic,i=dt("variables",a,s,r,void 0,o),{vars:c,log:l,error:u}=i;if(n&&typeof window<"u"){let d=`multihierarchySelector${e}-value`,f=`multihierarchySelector${e}-type`,m=new URLSearchParams(window.location.search),R=Object.fromEntries(m),g=R[d],b=R[f];g&&g!==void 0&&b&&b!==void 0&&!Io(c.data,b,g)&&(m.delete(d),m.delete(f),window.history.replaceState(null,null,`?${m.toString()}`));}return {config:c,log:l,error:u}}var au=(e,t,r)=>{let o=`selector${e}id`,n=new URLSearchParams(typeof location<"u"&&location?.search?location.search:"").get(o),a=new URLSearchParams(t).get(o),s=n||a;if(r.type===Ze.MULTI){let l=s?s.split(","):r.defaultValue,u=r.options.filter(p=>l.includes(p.id));return {[`selector${e}id`]:l,[`selector${e}label`]:(u||[]).map(p=>p.label)}}let i=s&&r.options.find(l=>l.id===s)?s:r.defaultValue,c=r.options.find(l=>l.id===i);return {[`selector${e}id`]:i,[`selector${e}label`]:c&&c.label||void 0}},ts=au;var su=(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}},rs=su;var{localeDefault:os,locales:iu}=j(),cu=Object.values(lo),lu=(e,t=os)=>e&&cu.includes(e.type)?{locale:uo,locales:[uo]}:{locale:t,locales:iu},ns=(e,t=os)=>{if(!e)return {};let{locale:r}=lu(e,t);return e.contentByLocale?.[r]?.content};function uu(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 as=uu;function Bo(e){return e.type===M.SECTION_FLAG&&e.inputs.length===0&&e.consumers.length===0}var Ve=rr(process.env.NEXT_PUBLIC_REPORTS_DEBUG),yu=process.env.REPORTS_ORIGIN||"",hu=process.env.NEXT_PUBLIC_REPORTS_AXIOS_RETRIES,ls=5;try{ls=parseInt(`${hu||5}`,10);}catch(e){console.error("Error setting axios retries NEXT_PUBLIC_REPORTS_AXIOS_RETRIES defaults to 5",e);}ss(Fr,{retries:ls,retryDelay:ss.exponentialDelay,onRetry:(e,t,r)=>{console.error("Generator request failed. Retrying... Count: ",e),console.error("URL: ",r.url),console.error(t.message);}});Fr.interceptors.request.use(e=>({...e,requestStart:Date.now()}));Fr.interceptors.response.use(e=>({...e,requestDuration:new Date().getTime()-e.config.requestStart}),e=>Promise.reject(e));var Ru=(e,t,r)=>{let o=be(e,t,r);return o.startsWith("http")||(o=`${yu}${o.startsWith("/")?"":"/"}${o}`),o},{urlProxy:bu}=sr("/api/cms");function Ur(e){return e.ok!==void 0}function Dr(e){this.message=e,this.name="ApiFetchException";}var is=process.env.NEXT_PUBLIC_REPORTS_API_FETCH_TIMEOUT||0;async function Su(e,t,r="en",o,n){let a=Date.now(),s=e,i,c=de(),l=Ct(),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(k=>{if(!k.content?.pattern)return false;try{let v=new RegExp(k.content.pattern,"gm");return v.test(s)?(f.datasource=k,!0):v.test(s)}catch{return false}});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:false,b=`${process.env.NEXT_PUBLIC_REPORTS_BASE_URL}/api/cms/url/proxy?url=${encodeURIComponent(s)}`;if(typeof window=="object"&&(R||g)){let k=await bu({url:s,timeout:is});if(k.ok===true)i=k.data;else throw new Dr(k?.error)}else try{let v={url:s,timeout:is};if(f.datasource){let _=u;if(typeof window<"u")try{let D=await getSession();if(D){let w={user:D.user,status:"authenticated",isLoading:!1,update:async()=>D};_={...u,session:w};}}catch(D){console.warn("Could not retrieve user session:",D);}let B=await kr({vars:["url","libs","session"],logic:f.datasource.content.logic},_)(s);if(B.axiosConfig)v=B.axiosConfig;else throw new Dr(`AxiosConfig is missing in Data Source ${f.datasource.name} (ID: ${f.datasource.id}).`)}let F=await Fr(v);if(F.status===200)F.headers["content-type"]==="text/csv"?i=csvParse(F.data):i=F.data;else throw new Dr("No response for: "+s)}catch(k){throw new Dr(k.message)}if(d.has("bespoke_slugs")){let k=d.get("bespoke_slugs");if(k){let v=k.split(",");if(v.length===3){let[F,_,z]=v,B=jt(i,z);if(B&&Array.isArray(B)){let D=Array.from(new Set(B.map(w=>`${w[_]}`).filter(w=>!["","undefined"].includes(w))));if(D.length>0){let w=D.join("").length>2e3,L=await t({mode:w?"whole":"ids",ids:w?void 0:D,all:false,locale:r,variant:[parseInt(F,10)],output:"lite",limit:D.length+1,allowNulls:true}).then(U=>{let C=[];return Ur(U)?U.ok&&(C=U.data.results):C=U.results,C&&Array.isArray(C)?C:[]}).catch(U=>(console.error(`Error hydrating slugs for Variant: ${F}, Key: ${_}, Accessor: ${z}`),console.error(` Url ${e}`),n&&console.error(` From Section ${n.section_id} and Block ${n.id}`),console.error(U),[]));if(L){let U=Object.fromEntries(L.map(C=>[C.id,`/${C.variant_slug}/${C.slug}`]));B.map(C=>(C.bespoke_slug=U[C[_]]?U[C[_]]:null,C));}}}}}}return {data:i,requestDuration:Date.now()-a,finalUrl:g||R?b:s,apiDataSource:f.datasource?f.datasource:false}}function Eu(e){this.name="BlockException",this.message=e;}async function cs(e,t,r,o,n){let{locale:a,variables:s,query:i}=he(r),c=Tu(e,r,s,t),l=null,u=e.contentByLocale?.logic?.content?.api,p=null,d=null,f=null,m=null,R=null;if(!c)return {outputVariables:{},renderVariables:{},status:{allowed:false,hiddenByCascade:e.id}};if(e.type===M.FALLBACK)return {outputVariables:{},renderVariables:{},status:{allowed:c,hiddenByCascade:e.id}};if(u){f=Ru(u,t,r);let B=f.split("|||").filter(L=>L!==""),D=[];for(let L=0;L<B.length;L++){let U=B[L];new RegExp("^(?:[a-z+]+:)?//","i").test(f)||(U=`${process.env.NEXT_PUBLIC_REPORTS_BASE_URL}/${U}`.replace(/([^:]\/)\/+/g,"$1")),D.push(Su(U,o,a,n,e).catch(q=>{throw new Eu(` Excecution of ${e.type}-${e.id} in section ${e.section_id} in report ${s.report_name} (${s.report_id}) failed.
|
|
26
|
-
Error fetching ${
|
|
30
|
+
`)}return global.typesense};async function Dc(){try{if(Lt){let e=await Fr.get(new URL(Lt).origin);if(e?.data["typesense-health"]===!0)return Oe&&console.info(`${Lt} 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 Uc(){if(Oe&&console.info(`\u{1F3F3}\uFE0F INITIALIZING TYPESENSE SEARCH AGAINST ${Lt}`),!await Dc())throw new Error("TYPESENSE_URL service is not healthy.");let t=Mc.map(r=>(Oe&&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(",")),Oe&&console.info("Typesense URL:",Lt,a),Fr.get(Lt,{params:a}).then(i=>(Oe&&(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 zn=Nc;var{localeDefault:Eo}=j();function Ot(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:b,includes:P,sort:v,direction:U="ASC",offset:w=0}=n,L=Xt.find(B=>B.locales.includes(c))?.charset||"latin",F=u&&!isNaN(u)?u:20,_=ot(i,L!=="arabic");function I(B){return B.toJSON()}function N(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 zn(),q=B[c]||B[Eo],O={query:_===""?"*":_,limit:F,variant:f,report:R,offset:w};return await q.search(O)}else {let B=[],q=await nt(e);if(i&&i!==""&&q[c]){let J=ot(i,L!=="arabic"),ie={query:J,limit:F},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 O={...d?{visible:d}:{},...b?{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&&v!=="report"?H.push([literal(`array_position(array[${B.join(",")}], "content_id")`),"ASC"]):(v==="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"])),v&&v!=="name"&&v!=="report"&&H.unshift([v,U.toUpperCase()]),i&&i!==""&&(O.content_id=B);let A=[{association:"contentByLocale",where:k,separate:true}];(P||v==="report")&&A.push({association:"report",attributes:["id","name","settings"]},{association:"dimension",attributes:["id","name","settings"]},{association:"variant",attributes:["id","slug","name","settings"]});let S={...O.visible?{visible:O.visible}:{},...O.noImage?{image_id:O.noImage}:{},...O.content_id?{content_id:O.content_id}:{}};if(!O.report_id&&!O.dimension_id&&!O.variant_id&&d){let ie=(await r.findAll({attributes:["id"],where:{[Op.or]:[where(cast(json("settings.hide"),"boolean"),true)]}})).map(V=>V.id);ie.length>0&&(O.report_id={[Op.notIn]:ie},S.report_id=O.report_id);}let T=[],[x,ne]=await Promise.all([t.findAll({limit:F,offset:w,where:O,include:A,order:H,subQuery:false}),t.findAll({attributes:["variant_id",[fn("COUNT",col("variant_id")),"members_count"]],where:S,group:["variant_id"]})]),ae=ne.map(J=>J.toJSON());if(v==="name"){let J=U.toUpperCase()==="ASC"?1:-1;x.sort((ie,V)=>{let Q=ie.getContent(Eo),W=V.getContent(Eo);return Q&&W?Q.name>W.name?1*J:-1*J:0});}let Z=p==="nested"?I:N;return T=x.map(Z),p!=="nested"&&T.forEach(J=>{let{name:ie,keywords:V,score:Q=.1,zvalue:W}=J;if(ie){let ue=ot(ie),se=Q,le=i.length/ue.length,tn=ue.split("").reduce((ro,rn,on)=>(i.slice(0,on),i.charAt(on)===rn&&(ro+=rn),ro),"").length;ue===i||V&&V.includes(i)?se=1e6:ue.startsWith(i)?se*=20*le:tn&&(se*=tn*le),J.zvalue=se*2+W;}}),{meta:{origin:"flexsearch",...Object.fromEntries(Object.entries(n).map(J=>[J[0],$(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: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 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 Gn(e){return {ingestMembers:Un(e),readMember:Fn(e),searchMember:Ot(e),updateMember:qn(e),readMemberImage:Vn(e)}}var at={include:[{association:"contentByLocale",separate:true},{association:"inputs",include:[{association:"contentByLocale",separate:true}]},{association:"consumers",include:[{association:"contentByLocale",separate:true}]}]},er=e=>({include:[{association:"variants",separate:true,attributes:{include:[[fn("COUNT",col("members.id")),"members_count"]]},include:[{model:e,as:"members",attributes:[]}],group:["variant.id"]}],order:[["ordering","ASC"]]}),tr={include:[{association:"blocks",separate:true,...at}]},Br=e=>({include:[{association:"dimensions",separate:true,...er(e)},{association:"sections",separate:true,...tr}]});var Re=[{association:"image",attributes:{exclude:["splash"]},include:[{association:"contentByLocale"}]},{association:"contentByLocale"}];function Kn(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:at.include})).toJSON()}async function a(u){let p=u.map(f=>{let{locales:m,...R}=f;return {...R,consumers:[],inputs:[],contentByLocale:m.map(b=>({locale:b}))}});return (await t.bulkCreate(p,{include:at.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?at.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,b=await t.findByPk(p,{include:at.include,rejectOnEmpty:true});if(b.set(g),d){let P=Object.values(d);await r.bulkCreate(P,{updateOnDuplicate:["content"]});}return R&&(R.operation==="create"?await o.create(R.input):await o.destroy({where:R.input})),await b.save(),await b.reload(),b.toJSON()}async function c(u){let p=u.map(m=>{let{id:R,contentByLocale:g,consumers:b,inputs:P,inputAction:v,...U}=m;return {id:R,contentByLocale:g,inputAction:v,...U}}),d=await t.findAll({where:{id:{[Op.or]:p.map(m=>m.id)}},include:at.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 b=R[g],{id:P,contentByLocale:v,inputAction:U,...w}=b;if(U&&(U.operation==="create"?await o.create(U.input):await o.destroy({where:U.input})),v){let z=Object.values(v);await r.bulkCreate(z,{updateOnDuplicate:["content"]});}m.set(w),await m.save(),await m.reload(),f.push(m.toJSON());}}return f}async function l(u){let p=await t.findByPk(u,{rejectOnEmpty:true});return await p.destroy(),{id:u,parentType:"section",parentId:p.section_id}}}function 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:er(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?er(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:er(r).include,rejectOnEmpty:false});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:false});return await c.destroy(),{id:i,parentType:"report",parentId:c.report_id}}}function Hn(e){let{formatter:t}=e;return {createFormatter:r,readFormatter:o,updateFormatter:n,deleteFormatter: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:true});return await l.update(c),l.toJSON()}async function a(s){return await(await t.findByPk(s,{rejectOnEmpty:true})).destroy(),{id:s}}}function Jn(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' - 'logic_ssr' - '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: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:Hc}=j();function Yn(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=Hc}={}){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(b=>({...b,blocks:b.blocks.map(P=>({...P,contentByLocale:Object.keys(P.contentByLocale).reduce((v,U)=>({...v,...[...l,"logic"].includes(U)?{[U]:P.contentByLocale[U]}:{}}),{})}))}))}});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:false});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:false})).destroy(),{id:i}}}function Qn(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:tr.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?tr.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:tr.include,rejectOnEmpty:false});return u.set(l),await u.save(),await u.reload(),u.toJSON()}async function a(s){let i=await t.findByPk(s,{rejectOnEmpty:true});return await i.destroy(),{id:s,parentType:"report",parentId:i.report_id}}}function ea(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("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:true});p.settings=Zt(p.settings);let f=p.settings.doIngest;return p.settings.doIngest=false,await d.update(p),f&&(await t.ingestMembers(d),await nt(e,true)),await d.reload(),d.toJSON()}async function i(l){let u=await r.findByPk(l,{rejectOnEmpty:true});return await u.destroy(),nt(e,true),{id:l,parentType:"dimension",parentId:u.dimension_id}}async function c({dimension:l,slug:u}){let p=await r.findAll({attributes:["slug",[fn("COUNT",col("id")),"slugCount"]],where:{dimension_id:{[Op.ne]:l}},group:"slug"}).then(R=>Object.fromEntries(R.map(g=>{let b=g.getDataValue("slugCount");return [g.slug,Number.parseInt(`${b}`,10)]}))),d=u,f=1,m=true;for(;p[d];)m=false,d=`${u}-${f}`,f++;return {candidate:u,dimension_id:l,suggestion:d,valid:m}}}function ta(e){let t={...Kn(e),...jn(e),...Hn(e),...Jn(e),...Gn(e),...Yn(e),...Qn(e)},r={...t,...ea(e,t)};return {createFormatter:C(r.createFormatter),deleteFormatter:C(r.deleteFormatter),readFormatter:C(r.readFormatter),updateFormatter:C(r.updateFormatter),createReport:C(r.createReport),deleteReport:C(r.deleteReport),readReport:C(r.readReport),updateReport:C(r.updateReport),createDimension:C(r.createDimension),deleteDimension:C(r.deleteDimension),readDimension:C(r.readDimension),updateDimension:C(r.updateDimension),createVariant:C(r.createVariant),readVariant:C(r.readVariant),updateVariant:C(r.updateVariant),deleteVariant:C(r.deleteVariant),validateVariantSlug:C(r.validateVariantSlug),createSection:C(r.createSection),readSection:C(r.readSection),updateSection:C(r.updateSection),deleteSection:C(r.deleteSection),createBlock:C(r.createBlock),deleteBlock:C(r.deleteBlock),readBlock:C(r.readBlock),updateBlock:C(r.updateBlock),createBulkBlock:C(r.createBulkBlock),updateBulkBlock:C(r.updateBulkBlock),readMember:C(r.readMember),searchMember:C(r.searchMember),updateMember:C(r.updateMember),readMemberImage:C(r.readMemberImage),createDatasource:C(r.createDatasource),deleteDatasource:C(r.deleteDatasource),readDatasource:C(r.readDatasource),updateDatasource:C(r.updateDatasource)}}var ra=e=>{throw console.error("/methods/helpers/uploadImage.ts:",e),new Error(e.message)},Yc=Number(process.env.NEXT_PUBLIC_IMAGE_SPLASH_WIDTH)||1400,Qc=Number(process.env.NEXT_PUBLIC_IMAGE_THUMB_WIDTH)||400,Zc=async(e,t,r)=>{let o=[{type:"splash",res:Yc},{type:"thumb",res:Qc}];for(let n of o){let a=await Jc(r).resize(n.res).toFormat("webp").webp({lossless:true}).toBuffer().catch(ra);await e.image.update({[n.type]:a},{where:{id:t}}).catch(ra);}},ve=Zc;var oa="SECTION_ALLOWED";var na=["4","5","7","8","9","10"],tl=na.join(),{locales:rl}=j(),Me;if(process.env.FLICKR_API_KEY)try{Me=new el(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:tl,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:$(r.prompt),page:$(`${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:$(`${r}`)||"",id:$(`${o}`)||""},s=`https://flic.kr/p/${Xc.int_to_base58(o)}`;if(!Me)throw new Error("Flickr API Key not configured");let i=await Me.photos.getInfo({photo_id:o}).then(l=>l.body),c;if(i)if(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(w=>w.body),f=d.sizes.size.find(w=>parseInt(w.width,10)>=1600);if(f||(f=d.sizes.size.find(w=>parseInt(w.width,10)>=1e3)),f||(f=d.sizes.size.find(w=>parseInt(w.width,10)>=500)),!f||!f.source)throw new Error("Flickr Source Error, try another image.");let m=await fetch(f.source);if(!m.ok)throw new Error("Flickr Error retrieving image, try another image.");let R=await m.arrayBuffer(),b=(await Me.photos.licenses.getInfo().then(w=>w.body.licenses.license)).find(w=>w.id===parseInt(i.photo.license,10)),P={url:s,author:i.photo.owner.realname||i.photo.owner.username,license:b?`${b.name}: ${b.url}`:""},v=await e.image.create(P);await e.image_content.destroy({where:{id:v.id}});let U=rl.map(w=>({id:v.id,locale:w,meta:i.photo.title._content}));await e.image_content.bulkCreate(U),await e.search.update({image_id:v.id},{where:{content_id:r}}),await ve(e,v.id,R);}let p=await e.search.findOne({where:{content_id:r},include:Re});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 K(e){return e==null||e===""?[]:Array.isArray(e)?e:e.toString().split(",")}var{localeDefault:De}=j();function ia(e){let{readMember:t,searchMember:r,updateMember:o,readMemberImage:n}=e;return [D("GET","read/members",async a=>{let s=ol(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=or(a.query);return r(s)}),D("POST","update/member",a=>{let{body:s}=a;return o(s)},[G.EDITOR]),D("GET","member/image",a=>{let s=K(a.query.size)[0];return n({member:ee(a.query.member),size:s&&s==="splash"?"splash":"thumb"})})]}function ol(e){let t=K(e.locale)[0]||De,r=t==="all"||rr(e.all),o=K(e.mode)[0],a=(K(e.output)[0]||"full")==="lite"?"lite":"full",s=parseInt(K(e.related)[0],10)||5,i=rr(e.allowNulls,{default:false}),c=K(e.variant).map(ee);if(c.length===0&&(c=K(e["variant[]"]).map(ee)),o==="ids")return {all:r,mode:o,variant:c,output:a,locale:r?De:$(t),ids:K(e.ids||e["ids[]"]),allowNulls:i};if(o==="content_ids")return {all:r,mode:o,variant:c,output:a,locale:r?De:$(t),content_ids:K(e.content_ids||e["content_ids[]"]).map(ee),allowNulls:false};if(o==="slugs")return {all:r,mode:o,variant:c,output:a,locale:r?De:$(t),slugs:K(e.slugs||e["slugs[]"]).map(l=>{let[u,p]=l.split("/");return {variantSlug:u,memberSlug:p}}),allowNulls:false};if(o==="related")return {all:r,mode:o,locale:r?De:$(t),related:s,current_ids:K(e.current_ids||e["current_ids[]"]).map(ee),include_ids:K(e.include_ids||e["include_ids[]"]).map(ee),report_ids:K(e.report_ids||e["report_ids[]"]).map(ee),dimension_ids:K(e.dimension_ids||e["dimension_ids[]"]).map(ee),variant_ids:K(e.variant_ids||e["variant_ids[]"]).map(ee),output:a,allowNulls:false};if(o==="whole")return {all:r,mode:o,variant:c,locale:r?De:$(t),output:a,allowNulls:i};throw new E(400,`Invalid mode: '${o}'`)}function or(e){let t=K(e.locale)[0]||De||"en",r=t==="all",o=K(e.format)[0],n=o?o==="nested":r,a=K(e.variant).map(ee);a.length===0&&(a=K(e["variant[]"]).map(ee));let s=K(e.dimension).map(ee);s.length===0&&(s=K(e["dimension[]"]).map(ee));let i=K(e.report).map(ee);i.length===0&&(i=K(e["report[]"]).map(ee));let c=e.origin==="typesense"?"typesense":"flexsearch";return {query:K(e.query||e.q)[0]||"",locale:r?De:t,preferredLocale:K(e.preferredLocale)[0],limit:K(e.limit).map(ee)[0]??5,format:n?"nested":"plain",includes:rr(e.includes,{default:true}),visible:rr(e.visible,{default:true}),noImage:rr(e.noImage,{default:false}),variant:a,dimension:s,report:i,all:r,sort:K(e.sort)[0],direction:K(e.direction)[0],offset:Number(e.offset||0),origin:c}}async function ca(e,t){let r=Ot(e),o=or({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:$(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:Re}).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:sl}=j(),nr;if(process.env.UNSPLASH_API_KEY)try{nr=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(!nr)throw new Error("Unsplash API Key not configured");let o=r.prompt,a=(await nr.search.getPhotos({query:o,perPage:24,page:r.page,orientation:"landscape"}).then(s=>s.response.results)).map(s=>({id:s.id,source:s.urls.thumb}));return {meta:{prompt:$(r.prompt),page:$(`${r.page}`)},results:a}}catch(r){throw console.error(r),new Error("Error in search unsplash provider")}}async function pa(e,t){try{let{content_id:r,image_id:o}=t,n={content_id:$(`${r}`)||"",id:$(`${o}`)||""};if(!nr)throw console.warn("Unsplash is not initialized. Check the credentials"),new Error("Unsplash is not initialized. Check the credentials");let a=await nr.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 Fr.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=sl.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 ve(e,f.id,p);}let u=await e.search.findOne({where:{content_id:r},include:Re});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:cl}=j();async function da(e,t){try{let{content_id:r,image_source:o,files:n}=t,a={content_id:$(`${r}`)||""};if(await e.search.findOne({where:{content_id:r}})&&n){let c=await il.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=cl.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 ve(e,u.id,c);}let i=await e.search.findOne({where:{content_id:r},include:Re});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:ll}=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 t};var ar;if(process.env.ADOBE_STOCK_API_KEY)try{ar={search:async(e,t)=>await Fr.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 Fr.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(!ar)throw new Error("Adobe API Key not configured");let n=(await ar.search(r.prompt,r.page)).map(a=>({id:a.id,source:a.thumbnail_url}));return {meta:{prompt:$(r.prompt),page:$(`${r.page}`)},results:n}}catch(r){throw console.error(r),new Error("Error in search Adobe provider")}}async function ga(e,t){try{let{content_id:r,image_id:o}=t,n={content_id:$(`${r}`)||"",id:$(`${o}`)||""};if(!ar)throw console.warn("Adobe is not initialized. Check the credentials"),new Error("Adobe is not initialized. Check the credentials");let a=await ar.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 Fr.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=ll.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 ve(e,f.id,p);}let u=await e.search.findOne({where:{content_id:r},include:Re});u&&u.image&&(u.image.thumb=!!u.image.thumb);}else throw new Error("Error updating Search")}else throw new Error("Malformed URL");return {meta:{...n},results:s}}catch(r){throw console.error(r),new Error("Error in save adobe provider")}}var{locales:ul}=j(),Lr=process.env.PIXABAY_API_KEY,ya="https://pixabay.com/api/";async function ha(e,t){try{let r={prompt:t.prompt||"",page:t.page||1};if(!Lr)throw new Error("Pixabay API Key not configured");let o=encodeURIComponent(r.prompt),n=`${ya}?key=${Lr}&q=${o}&per_page=${24}&page=${r.page}&image_type=photo&orientation=horizontal&safesearch=true`,i=(await Fr.get(n)).data.hits?.map(c=>({id:c.id,source:c.previewURL||c.webformatURL}))||[];return {meta:{prompt:$(r.prompt),page:$(`${r.page}`)},results:i}}catch(r){throw console.error(r),new Error("Error in search pixabay provider")}}async function Ra(e,t){try{let{content_id:r,image_id:o}=t,n={content_id:$(`${r}`)||"",id:$(`${o}`)||""};if(!Lr)throw console.warn("Pixabay is not initialized. Check the credentials"),new Error("Pixabay is not initialized. Check the credentials");let a=`${ya}?key=${Lr}&id=${o}`,i=(await Fr.get(a)).data,c;if(i.hits&&i.hits.length>0){let l=i.hits[0],u=await e.search.findOne({where:{content_id:r}}),p=l.pageURL,d=await e.image.findOne({where:{url:p}});if(u){if(d)await e.search.update({image_id:d.id},{where:{content_id:r}});else {let m=l.largeImageURL||l.webformatURL||l.imageURL;if(!m)throw new Error("Pixabay image URL not available");let R=await Fr.get(m,{responseType:"arraybuffer"}).then(v=>v.data),g={url:p,author:l.user||`Pixabay User ${l.user_id}`,license:"Free Pixabay License: https://pixabay.com/service/license/"},b=await e.image.create(g);await e.image_content.destroy({where:{id:b.id}});let P=ul.map(v=>({id:b.id,locale:v,meta:l.tags||l.description||""}));await e.image_content.bulkCreate(P),await e.search.update({image_id:b.id},{where:{content_id:r}}),await ve(e,b.id,R);}let f=await e.search.findOne({where:{content_id:r},include:Re});f&&f.image&&(f.image.thumb=!!f.image.thumb);}else throw new Error("Error updating Search")}else throw new Error("Image not found in Pixabay");return {meta:{...n},results:c}}catch(r){throw console.error(r),new Error("Error in save pixabay provider")}}var pl={local:la,flickr:sa,unsplash:pa,upload:da,adobe:ga,pixabay:Ra};function st(e,t){let r=pl[t];if(!r)throw new E(500,`Wrong provider dbImageSaveFactory.ts: ${t}`);return C(o=>r(e,o))}var dl={local:ca,flickr:aa,unsplash:ua,adobe:fa,pixabay:ha};function Mt(e,t){let r=dl[t];if(!r)throw new E(500,`Wrong provider dbImageSearchFactory.ts: ${t}`);return C(o=>r(e,o))}var bl=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 Mr(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("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=>({...bl(l.toJSON()),mode:l.dimensions.length===1?Be.UNILATERAL:Be.MULTILATERAL}))}}}function ba(e){return async()=>(await nt(e,true),{error:false})}var{locales:Sl,localeDefault:El}=j(),Al=(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===Be.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},Tl=(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 Sa(e){let t=Ot(e),r=Mr(e);return o;async function o(n){let a=n.format||"results",s=Sl.includes(n.locale)?n.locale:El,i=n.origin||"flexsearch",c=process.env.REPORTS_EXTERNAL_SEARCH&&i==="typesense",l=await t({...n,format:"plain",locale:$(s),visible:true});if(c)return l;{let u=l.results?l.results:[],d=(await r()).data,f=Tl(u,d);return {meta:{...l.meta,origin:"flexsearch",format:a},results:Al(f,d)}}}}function Ea(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 Aa(){return async e=>{try{let{target:t}=e;return {target:t}}catch(t){throw new E(t.response?.status||500,t.message)}}}function Se(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 _l(e,t){return e.some(r=>t.includes(`role.${r}`))}function Ta(e){let{report:t}=e;return r;async function r(o){let n=await t.findByPk(o.report_id,{include:{association:"sections",separate:true,where:{id:o.section_id},include:[{association:"blocks",separate:true,include:[{association:"contentByLocale",separate:true,where:{locale:{[Op.or]:[o.locale,"logic"]}}},{association:"inputs"},{association:"consumers"}]}]}}).then(s=>s&&s.sections&&Array.isArray(s.sections)?s.sections.reduce((i,c)=>{let l=c.blocks.map(u=>{let p=u.toJSON();return p.inputs=p.inputs.map(d=>d.id),p.consumers=p.consumers.map(d=>d.id),p});return i.concat(l)},[]):[]),a=n.filter(s=>s.settings&&s.settings.access&&Array.isArray(s.settings.access)&&Array.isArray(o.roles)&&(s.settings.access.includes("private")||_l(o.roles,s.settings.access))).map(s=>s.id);return a=a.concat(Se(a,n)),{params:{...o},data:n.filter(s=>a.includes(s.id))}}}var kl=Object.keys(vo).filter(e=>e.indexOf("Icon")===0);async function va(){return {meta:{provider:"tabler"},results:kl}}async function _a(e){let t=vo[e.name]?vo[e.name]:()=>"";return renderToString(createElement(t))}var xl={tabler:va};function wa(e){let t=xl[e];if(!t)throw new E(500,`Wrong provider dbListIconsFactory.ts: ${e}`);return C(()=>t())}var Il={tabler:_a};function Pa(e){return C(t=>{let r=Il[e];if(!r)throw new E(500,`Wrong provider dbReadIconFactory.ts: ${t.provider}`);return r({name:t.name,provider:e})})}function ka(){return e;async function e(){return {secrets:Ct()}}}function it(e,t,r){return rt().then(o=>{Object.assign(r,Nt(o));})}function Nt(e,t){let r={},o=Ke(t||{providers:[]});return t&&o.actions&&o.source==="custom"?(r.searchRole=C(o.actions.searchRole()),r.searchUser=C(o.actions.searchUser()),r.readUser=C(o.actions.readUser()),r.updateUser=C(o.actions.updateUser())):o.source==="auth0"&&(r.searchRole=C(cn()),r.searchUser=C(ln()),r.readUser=C(un()),r.updateUser=C(pn())),{...ta(e),searchReport:C(Sa(e)),readMetadata:C(Mr(e)),regenerateSearch:C(ba(e)),imageFlickrSearch:Mt(e,"flickr"),imageLocalSearch:Mt(e,"local"),imageUnsplashSearch:Mt(e,"unsplash"),imageAdobeSearch:Mt(e,"adobe"),imagePixabaySearch:Mt(e,"pixabay"),imageFlickrSave:st(e,"flickr"),imageLocalSave:st(e,"local"),imageUnsplashSave:st(e,"unsplash"),imageUploadSave:st(e,"upload"),imageAdobeSave:st(e,"adobe"),imagePixabaySave:st(e,"pixabay"),urlProxy:xr(e),searchRole:r.searchRole,searchUser:r.searchUser,readUser:r.readUser,updateUser:r.updateUser,updateMyData:C(dn()),revalidateReport:C(Ea(e)),revalidateUrl:C(Aa()),readPrivateBlocks:C(Ta(e)),listTablerIcons:wa("tabler"),readTablerIcon:Pa("tabler"),readEnvSecrets:C(ka())}}async function _o(e){try{let t=new Cl.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 Ue(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)},[G.EDITOR]),D("POST",`create/${t}`,c=>{let{body:l}=c;return r(l)},[G.EDITOR]),D("GET",`read/${t}`,c=>{let l=c.query,u=K(l.id).map(ee);return o({id:u,include:rr(l.include)})}),D("POST",`update/${t}`,c=>{let{body:l}=c;return n(l)},[G.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)},[G.EDITOR]),D("DELETE",`delete/${t}`,c=>{let l=ee(c.query.id);return a(l)},[G.EDITOR])]}function xa(e){let{validateVariantSlug:t}=e;return [...Ue(e,"variant"),D("GET","validate/variant",r=>{let o=r.query,n=ee(o.dimension);return t({dimension:n,slug:wr(o.slug)})},[G.EDITOR])]}function Ia(e){return Ue(e,"datasource").map(r=>({...r,roleRequired:[G.EDITOR]}))}function ct(e,t){let r=`image${Te(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)},[G.EDITOR])}function Dt(e,t){let r=`image${Te(t)}Search`,o=e[r];return D("GET",`images/search/${t}`,async n=>{let a=K(n.query.prompt)[0];if(!a)throw new E(400,"Empty 'prompt' param.");return o({prompt:a,page:ee(n.query.page)})},[G.EDITOR])}function Ca(e){let{readMetadata:t}=e;return D("GET","read/metadata",r=>t(r.query))}function Ba(e){let{regenerateSearch:t}=e;return D("POST","search/regenerate",()=>t(void 0),[G.EDITOR])}function La(e){let{searchReport:t}=e;return D("GET","search/reports",r=>{let o=Ll(r.query);return t(o)})}function Ll(e){return {...or(e),format:K(e.format)[0]}}function Oa(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:K(s)[0]==="POST"?"POST":"GET",user_roles:c,wrapper:i!=="false",session:n})})}function Ma(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===Be.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")}},[G.EDITOR])}function Na(){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")},[G.ADMIN,G.EDITOR,G.WRITER])}function lt(e=process.env){let t=e.BESPOKE_JWT_SECRET;return t||(console.warn("WARNING: Using default BESPOKE_JWT_SECRET. This is insecure and not recommended for production environments."),"BESPOKE_JWT_SECRET")}var{localeDefault:Ml}=j(),Da=lt();function Ua(e){let{readPrivateBlocks:t}=e;return D("POST","read/blocks/private",(r,o,n)=>{let{userToken:a}=r.body,s=null;if(a&&Da)try{let l=pc.verify(a,Da);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||Ml,roles:i,section_id:r.body.section_id||[]};return t(c)})}function Fa(e){let{readEnvSecrets:t}=e;return D("GET","read/secrets",()=>t({}),[G.EDITOR])}function Va(e){let{searchRole:t}=e;return D("GET","auth/search/roles",(r,o)=>t(""),[G.EDITOR,G.ADMIN])}function $a(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}),[G.ADMIN])}function za(e){let{readUser:t}=e;return D("GET","auth/read/user",r=>t(r.query.user_id),[G.ADMIN])}function qa(e){let{updateUser:t}=e;return D("POST","auth/update/user",async r=>{let o=r.body;return await t(o)},[G.ADMIN])}function Ga(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:false,status:500,error:l.message}}},[])}async function Nl(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 Ka(){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:true,status:200,data:await Nl()}}})}function ja(e,t){let r=`list${Te(t)}Icons`,o=e[r];return D("GET",`list/icons/${t}`,async()=>o({}),[G.EDITOR])}function Ha(e,t){let r=`read${Te(t)}Icon`,o=e[r];return D("GET",`read/icons/${t}/icon.svg`,async n=>o({provider:t,name:n.query.name}))}function Wa(){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 Dl().parseFromString(s,"text/html").getElementById("__NEXT_DATA__")?.textContent,u=JSON.parse(l).props;return {ok:!0,status:200,data:{variables:u.pageProps.initialState.variables,status:u.pageProps.initialState.status}}}catch(a){throw console.error(a),new E(500,"Couldn't find page cache")}})}var Fl=lt();function Vl(e){let t={email:e.user.email,name:e.user.name,roles:e.user.bespoke_roles||[]};return pc.sign(t,Fl,{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:Vl(r)}}}catch(o){throw console.error("Error generating token:",o),new E(500,"Internal Server Error")}})}var zl=lt(),ql=e=>!!pc.verify(e,zl);function Ya(){return D("POST","users/validate-token",async(e,t)=>{let{token:r}=e.body;try{return ql(r)?{ok:!0,status:200,wrapper:!1,data:{success:!0}}:{ok:!1,status:401,error:"Invalid token"}}catch{return {ok:false,status:401,error:"Invalid token"}}})}var jl=Ce();function wo(e,t){return `${e.toUpperCase()} ${t.toLowerCase()}`}function Hl(e,t){let r=Nt(e,t);return Object.fromEntries([...Ue(r,"block"),...Ue(r,"dimension"),...Ue(r,"formatter"),...Ue(r,"report"),...Ue(r,"section"),...Ia(r),...xa(r),...ia(r),La(r),Ca(r),Ba(r),ct(r,"flickr"),ct(r,"local"),ct(r,"unsplash"),ct(r,"upload"),ct(r,"adobe"),ct(r,"pixabay"),Dt(r,"flickr"),Dt(r,"local"),Dt(r,"unsplash"),Dt(r,"adobe"),Dt(r,"pixabay"),Oa(r),Va(r),$a(r),za(r),qa(r),Ga(r),Ma(r),Na(),Ua(r),Ka(),ja(r,"tabler"),Ha(r,"tabler"),Wa(),Fa(r),Ja(),Ya()].map(({handler:o,method:n,path:a,roleRequired:s})=>[wo(n,a),{handler:o,roleRequired:s}]))}function Wl(e){let t=rt().then(r=>Hl(r,e));return async function(o,n){await Gl(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=wo(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 _o(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 Kl(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=>{jl&&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)}},Yl=Jl;var St={};Js(St,{addBlockToState:()=>fr,addRunConsumersRunning:()=>Ns,cloneEntity:()=>xs,createEntity:()=>ws,deleteEntity:()=>ks,deleteQueryParam:()=>mp,readEntity:()=>oe,readEnvSecrets:()=>vp,readMember:()=>qe,readMetadata:()=>mr,readPrivateBlocks:()=>Ep,readUser:()=>Rp,recalculateVariables:()=>Fs,removeBlocksFromState:()=>Ge,removeDataSourceLogic:()=>gr,removeRunConsumersRunning:()=>Ds,reportSearch:()=>up,resetSectionState:()=>Ms,revalidateReport:()=>Tp,revalidateUrl:()=>Ap,searchMember:()=>dp,searchRegenerate:()=>pp,searchRole:()=>yp,searchUser:()=>hp,setCurrentLocale:()=>ip,setPreferredLocale:()=>cp,setPreviews:()=>sp,setQueryParam:()=>fp,setSectionState:()=>Os,setStatus:()=>Ls,updateEntity:()=>Ps,updateMyData:()=>Sp,updateUser:()=>bp,urlProxy:()=>gp,variantValidateSlug:()=>lp});function Ee(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=>Ee(e,{...o,method:"GET",params:r?r(n):n})}function re(e,t,r){let o=typeof t=="string"?{url:t}:t;return n=>Ee(e,{...o,method:"POST",data:n})}function Fe(e,t,r){let o=typeof t=="string"?{url:t}:t;return n=>Ee(e,{...o,method:"DELETE",params:r?r(n):n})}function ut(e,t){return r=>Ee(e,{method:"POST",url:`images/save/${t}`,params:{prompt:r.prompt,provider:t}})}function Ut(e,t){return r=>Ee(e,{method:"GET",url:`images/search/${t}`,params:{prompt:r.prompt,page:r.page,provider:t}})}function Qa(e,t){return ()=>Ee(e,{method:"GET",url:`list/icons/${t}`,params:{provider:t}})}function Za(e,t){return r=>Ee(e,{method:"GET",url:`read/icons/${t}/icon.svg`,params:{name:r.name}})}var pt=e=>({id:e}),Zl=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=Fr.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:Fe(t,"delete/block",pt),deleteDimension:Fe(t,"delete/dimension",pt),deleteFormatter:Fe(t,"delete/formatter",pt),deleteReport:Fe(t,"delete/report",pt),deleteSection:Fe(t,"delete/section",pt),deleteVariant:Fe(t,"delete/variant",pt),deleteDatasource:Fe(t,"delete/datasource",pt),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",Zl),readMemberImage:te(t,{url:"member/image",responseType:"blob"}),searchMember:te(t,"search/members"),updateMember:te(t,"update/members"),imageLocalSearch:Ut(t,"local"),imageLocalSave:ut(t,"local"),imageFlickrSearch:Ut(t,"flickr"),imageFlickrSave:ut(t,"flickr"),imageUnsplashSearch:Ut(t,"unsplash"),imageUnsplashSave:ut(t,"unsplash"),imageUploadSave:ut(t,"upload"),imageAdobeSearch:Ut(t,"adobe"),imageAdobeSave:ut(t,"adobe"),imagePixabaySearch:Ut(t,"pixabay"),imagePixabaySave:ut(t,"pixabay"),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:Qa(t,"tabler"),readTablerIcon:Za(t,"tabler"),readEnvSecrets:te(t,"read/secrets")}}var tu=rr(process.env.REPORTS_LOGGING),dt=ru;function ru(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 ou(d,"log","debug","info","warn","error")?(...f)=>{i.push(`${d} ${Date.now()} - ${f.map(m=>format(m)).join(" ")}`),tu&&p[d](...f);}:p[d]}}),u;return n?u=new Function(e,"console","libs","formatters","locale","variables",r)(t,l,Ye,o,c,n):u=new Function(e,"console","libs","formatters","locale",r)(t,l,Ye,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 ou(e,...t){return t.includes(e)}var Po=(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]=be(a[s],t,r):Array.isArray(a[s])?a[s]=a[s].filter(n).map(i=>typeof i=="object"?Po(i,t,r):typeof i=="string"?be(i,t,r):i):typeof a[s]=="object"&&a[s]!==null&&!(a[s]instanceof Date)&&(a[s]=Po(a[s],t,r));}),a},Nr=Po;var Xa=e=>Array.isArray(e)?e.map(t=>typeof t=="string"?{allowed:"always",label:t,id:t}:{allowed:"always",label:t.id,...t}):[];var nu=(e,t,r)=>{if(!r)return false;if(e===Ze.SINGLE)return r.find(n=>n.id===t);let o=Array.isArray(t)?t:t.split(",");return Array.isArray(o)&&o.every(n=>r.map(a=>a.id).includes(n))},ko=nu;function xo(e,t,r,o,n=false){let{variables:a}=he(o),s=Nr({logic:t},r,o).logic,i=dt("variables",a,s,r,void 0,o),{vars:c,log:l,error:u}=i,p=c.type||Ze.SINGLE,d=c.component||"Selector",f=c.hideLabel||"false",m=c.resetSectionVars||"false",R=c.name||"Unlabeled Selector",g=Xa(c.options||[]),b=w=>p===Ze.MULTI&&!Array.isArray(w)?[w]:w,P=c.defaultValue,v;if(P&&(P=b(P),ko(p,P,g)&&(v=P)),!v){let w=g&&g[0]&&g[0].id||g[0]||"";v=b(w);}if(n&&typeof window<"u"){let w=`selector${e}id`,z=new URLSearchParams(window.location.search),F=Object.fromEntries(z)[w];F&&!ko(p,F,g)&&F!==void 0&&(z.delete(w),window.history.replaceState(null,null,`?${z.toString()}`));}return {config:{name:R,type:p,options:g,defaultValue:v,component:d,hideLabel:f,resetSectionVars:m},log:l,error:u}}function Io(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 Co(e,t,r,o,n=false){let{variables:a}=he(o),s=Nr({logic:t},r,o).logic,i=dt("variables",a,s,r,void 0,o),{vars:c,log:l,error:u}=i;if(n&&typeof window<"u"){let d=`multihierarchySelector${e}-value`,f=`multihierarchySelector${e}-type`,m=new URLSearchParams(window.location.search),R=Object.fromEntries(m),g=R[d],b=R[f];g&&g!==void 0&&b&&b!==void 0&&!Io(c.data,b,g)&&(m.delete(d),m.delete(f),window.history.replaceState(null,null,`?${m.toString()}`));}return {config:c,log:l,error:u}}var au=(e,t,r)=>{let o=`selector${e}id`,n=new URLSearchParams(typeof location<"u"&&location?.search?location.search:"").get(o),a=new URLSearchParams(t).get(o),s=n||a;if(r.type===Ze.MULTI){let l=s?s.split(","):r.defaultValue,u=r.options.filter(p=>l.includes(p.id));return {[`selector${e}id`]:l,[`selector${e}label`]:(u||[]).map(p=>p.label)}}let i=s&&r.options.find(l=>l.id===s)?s:r.defaultValue,c=r.options.find(l=>l.id===i);return {[`selector${e}id`]:i,[`selector${e}label`]:c&&c.label||void 0}},es=au;var su=(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}},ts=su;var{localeDefault:rs,locales:iu}=j(),cu=Object.values(lo),lu=(e,t=rs)=>e&&cu.includes(e.type)?{locale:uo,locales:[uo]}:{locale:t,locales:iu},os=(e,t=rs)=>{if(!e)return {};let{locale:r}=lu(e,t);return e.contentByLocale?.[r]?.content};function uu(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 ns=uu;function Bo(e){return e.type===M.SECTION_FLAG&&e.inputs.length===0&&e.consumers.length===0}var Ve=rr(process.env.NEXT_PUBLIC_REPORTS_DEBUG),yu=process.env.REPORTS_ORIGIN||"",hu=process.env.NEXT_PUBLIC_REPORTS_AXIOS_RETRIES,cs=5;try{cs=parseInt(`${hu||5}`,10);}catch(e){console.error("Error setting axios retries NEXT_PUBLIC_REPORTS_AXIOS_RETRIES defaults to 5",e);}as(Fr,{retries:cs,retryDelay:as.exponentialDelay,onRetry:(e,t,r)=>{console.error("Generator request failed. Retrying... Count: ",e),console.error("URL: ",r.url),console.error(t.message);}});Fr.interceptors.request.use(e=>({...e,requestStart:Date.now()}));Fr.interceptors.response.use(e=>({...e,requestDuration:new Date().getTime()-e.config.requestStart}),e=>Promise.reject(e));var Ru=(e,t,r)=>{let o=be(e,t,r);return o.startsWith("http")||(o=`${yu}${o.startsWith("/")?"":"/"}${o}`),o},{urlProxy:bu}=sr("/api/cms");function Ur(e){return e.ok!==void 0}function Dr(e){this.message=e,this.name="ApiFetchException";}var ss=process.env.NEXT_PUBLIC_REPORTS_API_FETCH_TIMEOUT||0;async function Su(e,t,r="en",o,n){let a=Date.now(),s=e,i,c=de(),l=Ct(),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(P=>{if(!P.content?.pattern)return false;try{let v=new RegExp(P.content.pattern,"gm");return v.test(s)?(f.datasource=P,!0):v.test(s)}catch{return false}});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:false,b=`${process.env.NEXT_PUBLIC_REPORTS_BASE_URL}/api/cms/url/proxy?url=${encodeURIComponent(s)}`;if(typeof window=="object"&&(R||g)){let P=await bu({url:s,timeout:ss});if(P.ok===true)i=P.data;else throw new Dr(P?.error)}else try{let v={url:s,timeout:ss};if(f.datasource){let w=u;if(typeof window<"u")try{let I=await getSession();if(I){let N={user:I.user,status:"authenticated",isLoading:!1,update:async()=>I};w={...u,session:N};}}catch(I){console.warn("Could not retrieve user session:",I);}let L=typeof window>"u"&&f.datasource.content.logic_ssr?f.datasource.content.logic_ssr:f.datasource.content.logic,_=await kr({vars:["url","libs","session"],logic:L},w)(s);if(_.axiosConfig)v=_.axiosConfig;else throw new Dr(`AxiosConfig is missing in Data Source ${f.datasource.name} (ID: ${f.datasource.id}).`)}let U=await Fr(v);if(U.status===200)U.headers["content-type"]==="text/csv"?i=csvParse(U.data):i=U.data;else throw new Dr("No response for: "+s)}catch(P){throw new Dr(P.message)}if(d.has("bespoke_slugs")){let P=d.get("bespoke_slugs");if(P){let v=P.split(",");if(v.length===3){let[U,w,z]=v,L=jt(i,z);if(L&&Array.isArray(L)){let F=Array.from(new Set(L.map(_=>`${_[w]}`).filter(_=>!["","undefined"].includes(_))));if(F.length>0){let _=F.join("").length>2e3,I=await t({mode:_?"whole":"ids",ids:_?void 0:F,all:false,locale:r,variant:[parseInt(U,10)],output:"lite",limit:F.length+1,allowNulls:true}).then(N=>{let B=[];return Ur(N)?N.ok&&(B=N.data.results):B=N.results,B&&Array.isArray(B)?B:[]}).catch(N=>(console.error(`Error hydrating slugs for Variant: ${U}, Key: ${w}, Accessor: ${z}`),console.error(` Url ${e}`),n&&console.error(` From Section ${n.section_id} and Block ${n.id}`),console.error(N),[]));if(I){let N=Object.fromEntries(I.map(B=>[B.id,`/${B.variant_slug}/${B.slug}`]));L.map(B=>(B.bespoke_slug=N[B[w]]?N[B[w]]:null,B));}}}}}}return {data:i,requestDuration:Date.now()-a,finalUrl:g||R?b:s,apiDataSource:f.datasource?f.datasource:false}}function Eu(e){this.name="BlockException",this.message=e;}async function is(e,t,r,o,n){let{locale:a,variables:s,query:i}=he(r),c=Tu(e,r,s,t),l=null,u=e.contentByLocale?.logic?.content?.api,p=null,d=null,f=null,m=null,R=null;if(!c)return {outputVariables:{},renderVariables:{},status:{allowed:false,hiddenByCascade:e.id}};if(e.type===M.FALLBACK)return {outputVariables:{},renderVariables:{},status:{allowed:c,hiddenByCascade:e.id}};if(u){f=Ru(u,t,r);let L=f.split("|||").filter(I=>I!==""),F=[];for(let I=0;I<L.length;I++){let N=L[I];new RegExp("^(?:[a-z+]+:)?//","i").test(f)||(N=`${process.env.NEXT_PUBLIC_REPORTS_BASE_URL}/${N}`.replace(/([^:]\/)\/+/g,"$1")),F.push(Su(N,o,a,n,e).catch(q=>{throw new Eu(` Excecution of ${e.type}-${e.id} in section ${e.section_id} in report ${s.report_name} (${s.report_id}) failed.
|
|
31
|
+
Error fetching ${N}.
|
|
27
32
|
Message: ${q.message}.
|
|
28
|
-
`)}));}let w=await Promise.all(D).catch(L=>L.message);if(typeof w=="string"&&w)return {outputVariables:{},renderVariables:{},status:{error:w}};l=w.length===1?w[0].data:w.map(L=>L.data),d=w.reduce((L,U)=>L+JSON.stringify(U.data).length/1024,0),p=Math.max(...w.map(L=>L.requestDuration)),m=w.map(L=>L.apiDataSource?`${L.apiDataSource.name} (${L.apiDataSource.id})`:null),R=w.map(L=>L.finalUrl);}if(e.type===M.SELECTOR){let{config:B,log:D,error:w}=xo(e.id,e.contentByLocale[a].content.logic,t,r,true);return {outputVariables:ts(e.id,i,B),renderVariables:B,status:{log:D,error:w,allowed:c}}}if(e.type===M.MULTIHIERARCHY_SELECTOR){let{config:B,log:D,error:w}=Co(e.id,e.contentByLocale[a].content.logic,t,r,true);return {outputVariables:rs(e.id,i,B),renderVariables:B,status:{log:D,error:w,allowed:c}}}if(e.type===M.VIZ)return {outputVariables:{},renderVariables:e.contentByLocale.logic.content,status:{log:[],allowed:c}};if(e.type===M.RELATED){let B=e.contentByLocale?.logic?.content?.simple?.compare||"variant",D=e.contentByLocale?.logic?.content?.simple?.limit||4,w=Object.keys(s).filter(S=>S.startsWith("report_id")).map(S=>s[S]),L=Object.keys(s).filter(S=>S.startsWith("dimension_id")).map(S=>s[S]),U=Object.keys(s).filter(S=>S.startsWith("variant_id")).map(S=>s[S]),C=Object.keys(s).filter(S=>S.startsWith("id")).map(S=>s[S]);if(!C.length)return {outputVariables:{related_reports:[]},renderVariables:{},status:{log:[],allowed:false}};let q=await Promise.all(C.map((S,T)=>o({mode:"ids",locale:a,ids:[S],output:"lite",variant:[U[T]]}))).then(S=>S.flatMap(T=>{let x=[];return Ur(T)?T.ok&&(x=T.data.results):x=T.results,x&&Array.isArray(x)?x:[]})).catch(S=>(console.error("Error getting related members",S),[]));if(L.length>1){let S=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:D??4,current_ids:[V.content_id],output:"full",variant_ids:[V.variant_id]};return Q===0&&(W.include_ids=[V.content_id]),W}),x=await Promise.all(T.map(V=>o(V))).then(V=>V.flatMap(Q=>{let W=[];return Ur(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=x.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)=>S.indexOf(W.variant_slug)-S.indexOf(ue.variant_slug));return {entities:Q,link:"/"+Q.map(W=>`${W.variant_slug}/${W.slug}`).join("/")}})},renderVariables:{},status:{log:[],allowed:x.length>0}}}let O=q.map(S=>S.content_id),P={mode:"related",locale:a,related:D??4,current_ids:O,output:"full"};B&&(B==="report"?P.report_ids=w:B==="dimension"?P.dimension_ids=L:P.variant_ids=U);let H=await o(P).then(S=>{let T=[];return Ur(S)?S.ok&&(T=S.data.results):T=S.results,T&&Array.isArray(T)?T:[]}).catch(S=>(console.error("Error getting related members",S),[]));return {outputVariables:{related_reports:H.map(S=>({entities:[S],link:`/${S.variant_slug}/${S.slug}`}))},renderVariables:{},status:{log:[],allowed:H.length>0}}}let{logic:g}=ns(e,a),b=be(g,t,r),k=dt("resp",l||{},b,t,s,r),{vars:v,error:F,log:_}=k;if(typeof v!="object")return {outputVariables:{},renderVariables:{},status:{error:"Configuration did not return an object",log:_,duration:p,responseSize:d,resp:l,api:f,allowed:c,apiFinalUrls:R,apiDataSources:m}};let z=Object.keys(v).reduce((B,D)=>({...B,[`${e.type}${e.id}${D}`]:v[D]}),{});return {renderVariables:v,outputVariables:[M.GENERATOR,M.SECTION_FLAG].includes(e.type)?v:z,status:{log:_,error:F,duration:p,responseSize:d,resp:l,api:f,allowed:c,apiFinalUrls:R,apiDataSources:m}}}function Au(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=>Lo(l,t,o,false,a,n,s));}})}var Lo=(e,t,r=[],o=true,n=true,a=true,s=[])=>{if(s.includes(e))return [];s.push(e);let i=t[e];return i&&i.inputs.length&&o&&i.inputs.forEach(c=>{let l=`${c}-${e}`;r.includes(l)||r.push(l),i.inputs.forEach(u=>Lo(u,t,r,o,false,a,s));}),i&&i.consumers.length&&n&&Au(i,t,e,r,a,n,s),r},Tu=(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=he(t),{error:s,output:i}=dt("variables",r,e.settings.allowedLogic||"return false;",o,void 0,a);s||(n=!!i);}return n},Ft=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((O,{id:P})=>({...O,...as(P,e)}),{}):g=Object.values(e).filter(O=>Bo(O)).reduce((O,P)=>({...O,[P.id]:P}),{});let b=Object.values(g).filter(O=>Bo(O));if(b.length>0){Ve&&console.info("%crunConsumers: calculating section flags","color:purple",b.map(A=>A.id).join(", "));let O=Object.fromEntries(await Promise.all(b.map(async A=>[A.id,await cs(A,o,{...u,variables:p,locale:p.locale},s,c).then(S=>{let{outputVariables:T,status:x}=S;if(x.error){if(typeof window>"u")throw new Error(`Run consumers (Block: ${A.id}, Section ${A.section_id}) failed with message: ${x.error}. `);f[A.id]={allowed:false,error:x.error},d[A.id]={};}return (A.consumers.length>0||[M.GENERATOR,M.SECTION_FLAG,M.RELATED].includes(A.type))&&x.allowed&&Object.keys(T).length>0?d[A.id]=T:d[A.id]={},i==="report"?(f[A.id]={allowed:x.allowed},[M.GENERATOR,M.SECTION_FLAG].includes(A.type)&&x.api&&(f[A.id].api=x.api)):f[A.id]=x,S})]))),H=Object.entries(O).filter(([,A])=>!A.outputVariables[na]).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];}),Ve&&console.info("%crunConsumers: removing sections","color:purple",m.keys());}let k=m.size>0?Object.fromEntries(Object.entries(e).filter(([,O])=>m?.has(O.section_id)?(R.includes(O.id)||R.push(O.id),false):true)):e;if(R.length>0&&(k=Object.fromEntries(Object.entries(k).map(([O,P])=>{let H={...P,inputs:P.inputs.filter(A=>!R.includes(A)),consumers:P.consumers.filter(A=>!R.includes(A))};return [O,H]}))),!r&&!t)return {variables:{...a.variables??{},...d},status:{...a.status??{},...f}};i==="report"&&R.length>0&&R.forEach(O=>{delete d[O],delete f[O],delete e[O];}),Ve&&console.info("%crunConsumers: running root blocks","color:purple",Object.keys(g));let v=Object.keys(g).reduce((O,P)=>{let H=new Date,A=Lo(Number(P),k,[],!r,true,l).map(x=>x.split("-")),T=(new Date().getTime()-H.getTime())/1e3;return Ve&&console.info(`%cResolved dependencies for ${P} (${T.toFixed(2)}s)`,"color:blue"),[...O,...A]},[]),F=new Date,_=Object.keys(g).reduce((O,P)=>O.includes(P)?[...O]:[P,...O],du(v)),B=(new Date().getTime()-F.getTime())/1e3;Ve&&console.info(`%cResolved DAG (${B.toFixed(2)}s): `,"color:green",_);let D=process.env.NEXT_PUBLIC_REPORTS_MAX_CONCURRENT_QUERIES_PER_REPORT,w=parseInt(`${D||0}`,10);async function L(O,P){let H=new Map,A=[],S=async()=>A.length;for(let T of O){if(w!==0){let Z=await S();for(;Z>=w;)Ve&&console.info("Too many pending promises, waiting...",Z,A),await new Promise(J=>setTimeout(J,500)),Z=await S();}let x=P[T],ae=Promise.all(x.inputs.filter(Z=>O.includes(String(Z))).map(Z=>H.get(Number(Z)))).then(async()=>{let Z=x.inputs.reduce((se,le)=>({...se,...d[le]}),p),J=x.inputs.find(se=>(x.settings?.ignoreCascade?x.settings?.ignoreCascade:[]).includes(se)||!f[se]?false:!f[se].allowed||f[se].hiddenByCascade);if(J){f[T]={allowed:false,hiddenByCascade:f[J].hiddenByCascade||J},d[T]={},A.splice(A.indexOf(Number(T)),1);return}let ie=new Date,V;typeof window<"u"&&[M.SELECTOR,M.MULTIHIERARCHY_SELECTOR].includes(x.type)&&x.settings[Le.DISABLED]?V=new Promise(se=>{se({outputVariables:d[T],status:f[T]});}):V=cs(x,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 ${x.section_id}) failed with message: ${le.error}.`);f[T]={allowed:false,error:le.error},d[T]={};}(x.consumers.length>0||[M.GENERATOR,M.SECTION_FLAG,M.RELATED].includes(x.type))&&le.allowed&&Object.keys(se).length>0?d[T]=se:d[T]={},i==="report"?(f[T]={allowed:le.allowed},[M.GENERATOR,M.SECTION_FLAG].includes(x.type)&&le.api&&(f[T].api=le.api)):f[T]=le;}),ue=(new Date().getTime()-ie.getTime())/1e3;return Ve&&console.info(`%cBlock ${x.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 U=new Date;await L(_,k);let q=(new Date().getTime()-U.getTime())/1e3;return Ve&&console.info(`%cResolved Variables (${q.toFixed(2)}s), ${_.length} blocks`,"color:green"),{variables:{...a.variables??{},...d},status:{...a.status??{},...f}}};function vu(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=vu;function _u(e,t){return +(e<t)-+(e>t)}function Vr(e,t,r="ordering"){return _u(t[r],e[r])}var{localeDefault:Pu}=j();var ir=new schema.Entity("block",{},{mergeStrategy(e,t){return t.block_input?e||{}:{...e,...t}}});ir.define({consumers:[ir],inputs:[ir]});var us=new schema.Entity("variant"),ps=new schema.Entity("dimension",{variants:[us]},{processStrategy(e){return {...e,variants:"variants"in e?e.variants:[]}}}),ds=new schema.Entity("section",{blocks:[ir]}),ku=new schema.Entity("report",{dimensions:[ps],sections:[ds]},{processStrategy(e){return {...e,sections:"sections"in e?e.sections.sort(Vr):[]}}}),xu=new schema.Entity("formatter"),Iu=new schema.Entity("datasource"),Cu={report:ku,section:ds,block:ir,dimension:ps,variant:us,formatter:xu,datasource:Iu};function $r(e,t){let r=Cu[e];if(!r)throw new Error(`Invalid entity type: ${e}`);let{entities:o}=normalize(t,[r]);return {report:mt(o,"report"),dimension:mt(o,"dimension"),section:mt(o,"section"),block:mt(o,"block"),variant:mt(o,"variant"),formatter:mt(o,"formatter"),datasource:mt(o,"datasource")}}function mt(e,t){return Object.prototype.hasOwnProperty.call(e,t)?e[t]:{}}var ms=(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=Pu)=>e.reduce((r,o)=>{let n=Nn({vars:["n"],logic:o.content.logic},{},t,{});return r[o.name]=n,r},{});var me=process.env.NEXT_PUBLIC_REPORTS_LOCALE_DEFAULT||"en",zr=process.env.NEXT_PUBLIC_REPORTS_LOCALES?.split(",")||[me];zr.includes(me)||zr.push(me);var Ou={localeDefault:me,locales:zr,currentLocale:me,preferredLocale:me,showToolbar:false,activeSection:null,previews:[],query:{},sectionState:{},activeEntity:{type:null,id:null},sidebarStatus:{tools:true,settings:false,reportEditor:false},isCMS:false,isRunConsumersRunning:[]},qr=createSlice({name:"status",initialState:Ou,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:{[HYDRATE]:(e,t)=>({...e,previews:t.payload.status.previews})}}),xe=qr.actions;var Du={attributes:{},variables:{},status:{}},Gr=createSlice({name:"variables",initialState:Du,reducers:{setVariableChange:(e,t)=>{e.attributes={...e.attributes,...t.payload.attributes},e.variables={...e.variables,...t.payload.variables},e.status={...e.status,...t.payload.status};}},extraReducers:{[HYDRATE]:(e,t)=>({attributes:{...e.attributes,...t.payload.variables.attributes},status:{...e.status,...t.payload.variables.status},variables:{...e.variables,...t.payload.variables.variables}})}}),$t=Gr.actions;var Vu={tree:[],reports:null,entities:{block:{},dimension:{},report:{},section:{},variant:{},formatter:{},datasource:{}},requests:{block:{},dimension:{},report:{},section:{},variant:{},formatter:{},datasource:{}}},Ie=createSlice({name:"records",initialState:Vu,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=$r(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=Kr(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=Kr(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=$r(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=$r(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=Kr(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=Kr(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`;$u(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 Kr(e,t){return e.map(n=>t[n]).sort((n,a)=>typeof n.ordering=="string"&&typeof a.ordering=="string"?Vr(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 $u(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=Ju[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 zt(e){return !!e&&!!e[fe]}function yt(e){var t;return !!e&&((function(r){if(!r||typeof r!="object")return false;var o=Object.getPrototypeOf(r);if(o===null)return true;var n=Object.hasOwnProperty.call(o,"constructor")&&o.constructor;return n===Object||typeof n=="function"&&Function.toString.call(n)===Yu})(e)||Array.isArray(e)||!!e[Es]||!!(!((t=e.constructor)===null||t===void 0)&&t[Es])||qo(e)||Go(e))}function pr(e,t,r){r===void 0&&(r=false),Gt(e)===0?(r?Object.keys:Jo)(e).forEach((function(o){r&&typeof o=="symbol"||t(o,e[o],e);})):e.forEach((function(o,n){return t(n,o,e)}));}function Gt(e){var t=e[fe];return t?t.i>3?t.i-4:t.i:Array.isArray(e)?1:qo(e)?2:Go(e)?3:0}function Uo(e,t){return Gt(e)===2?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function zu(e,t){return Gt(e)===2?e.get(t):e[t]}function As(e,t,r){var o=Gt(e);o===2?e.set(t,r):o===3?e.add(r):e[t]=r;}function qu(e,t){return e===t?e!==0||1/e==1/t:e!=e&&t!=t}function qo(e){return Hu&&e instanceof Map}function Go(e){return Wu&&e instanceof Set}function gt(e){return e.o||e.t}function Ko(e){if(Array.isArray(e))return Array.prototype.slice.call(e);var t=Qu(e);delete t[fe];for(var r=Jo(t),o=0;o<r.length;o++){var n=r[o],a=t[n];a.writable===false&&(a.writable=true,a.configurable=true),(a.get||a.set)&&(t[n]={configurable:true,writable:true,enumerable:a.enumerable,value:e[n]});}return Object.create(Object.getPrototypeOf(e),t)}function jo(e,t){return t===void 0&&(t=false),Ho(e)||zt(e)||!yt(e)||(Gt(e)>1&&(e.set=e.add=e.clear=e.delete=Gu),Object.freeze(e),t&&pr(e,(function(r,o){return jo(o,true)}),true)),e}function Gu(){ce(2);}function Ho(e){return e==null||typeof e!="object"||Object.isFrozen(e)}function _e(e){var t=Zu[e];return t||ce(18,e),t}function fs(){return process.env.NODE_ENV==="production"||qt||ce(0),qt}function Oo(e,t){t&&(_e("Patches"),e.u=[],e.s=[],e.v=t);}function jr(e){Fo(e),e.p.forEach(Ku),e.p=null;}function Fo(e){e===qt&&(qt=e.l);}function gs(e){return qt={p:[],l:qt,h:e,m:true,_:0}}function Ku(e){var t=e[fe];t.i===0||t.i===1?t.j():t.g=true;}function Mo(e,t){t._=t.p.length;var r=t.p[0],o=e!==void 0&&e!==r;return t.h.O||_e("ES5").S(t,e,o),o?(r[fe].P&&(jr(t),ce(4)),yt(e)&&(e=Hr(t,e),t.l||Wr(t,e)),t.u&&_e("Patches").M(r[fe].t,e,t.u,t.s)):e=Hr(t,r,[]),jr(t),t.u&&t.v(t.u,t.s),e!==Ts?e:void 0}function Hr(e,t,r){if(Ho(t))return t;var o=t[fe];if(!o)return pr(t,(function(i,c){return ys(e,o,t,i,c,r)}),true),t;if(o.A!==e)return t;if(!o.P)return Wr(e,o.t,true),o.t;if(!o.I){o.I=true,o.A._--;var n=o.i===4||o.i===5?o.o=Ko(o.k):o.o,a=n,s=false;o.i===3&&(a=new Set(n),n.clear(),s=true),pr(a,(function(i,c){return ys(e,o,n,i,c,r,s)})),Wr(e,n,false),r&&e.u&&_e("Patches").N(o,r,e.u,e.s);}return o.o}function ys(e,t,r,o,n,a,s){if(process.env.NODE_ENV!=="production"&&n===r&&ce(5),zt(n)){var i=Hr(e,n,a&&t&&t.i!==3&&!Uo(t.R,o)?a.concat(o):void 0);if(As(r,o,i),!zt(i))return;e.m=false;}else s&&r.add(n);if(yt(n)&&!Ho(n)){if(!e.h.D&&e._<1)return;Hr(e,n),t&&t.A.l||Wr(e,n);}}function Wr(e,t,r){r===void 0&&(r=false),!e.l&&e.h.D&&e.m&&jo(t,r);}function No(e,t){var r=e[fe];return (r?gt(r):e)[t]}function hs(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 Vo(e){e.P||(e.P=true,e.l&&Vo(e.l));}function Do(e){e.o||(e.o=Ko(e.t));}function $o(e,t,r){var o=qo(t)?_e("MapSet").F(t,r):Go(t)?_e("MapSet").T(t,r):e.O?(function(n,a){var s=Array.isArray(n),i={i:s?1:0,A:a?a.A:fs(),P:false,I:false,R:{},l:a,t:n,k:null,o:null,j:null,C:false},c=i,l=zo;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):_e("ES5").J(t,r);return (r?r.A:fs()).p.push(o),o}function ju(e){return zt(e)||ce(22,e),(function t(r){if(!yt(r))return r;var o,n=r[fe],a=Gt(r);if(n){if(!n.P&&(n.i<4||!_e("ES5").K(n)))return n.t;n.I=true,o=Rs(r,a),n.I=false;}else o=Rs(r,a);return pr(o,(function(s,i){n&&zu(n.t,s)===i||As(o,s,t(i));})),a===3?new Set(o):o})(e)}function Rs(e,t){switch(t){case 2:return new Map(e);case 3:return Array.from(e)}return Ko(e)}var bs,qt,Wo=typeof Symbol<"u"&&typeof Symbol("x")=="symbol",Hu=typeof Map<"u",Wu=typeof Set<"u",Ss=typeof Proxy<"u"&&Proxy.revocable!==void 0&&typeof Reflect<"u",Ts=Wo?Symbol.for("immer-nothing"):((bs={})["immer-nothing"]=true,bs),Es=Wo?Symbol.for("immer-draftable"):"__$immer_draftable",fe=Wo?Symbol.for("immer-state"):"__$immer_state";var Ju={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"},Yu=""+Object.prototype.constructor,Jo=typeof Reflect<"u"&&Reflect.ownKeys?Reflect.ownKeys:Object.getOwnPropertySymbols!==void 0?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Object.getOwnPropertyNames,Qu=Object.getOwnPropertyDescriptors||function(e){var t={};return Jo(e).forEach((function(r){t[r]=Object.getOwnPropertyDescriptor(e,r);})),t},Zu={},zo={get:function(e,t){if(t===fe)return e;var r=gt(e);if(!Uo(r,t))return (function(n,a,s){var i,c=hs(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||!yt(o)?o:o===No(e.t,t)?(Do(e),e.o[t]=$o(e.A.h,o,e)):o},has:function(e,t){return t in gt(e)},ownKeys:function(e){return Reflect.ownKeys(gt(e))},set:function(e,t,r){var o=hs(gt(e),t);if(o?.set)return o.set.call(e.k,r),true;if(!e.P){var n=No(gt(e),t),a=n?.[fe];if(a&&a.t===r)return e.o[t]=r,e.R[t]=false,true;if(qu(r,n)&&(r!==void 0||Uo(e.t,t)))return true;Do(e),Vo(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]=true),true},deleteProperty:function(e,t){return No(e.t,t)!==void 0||t in e.t?(e.R[t]=false,Do(e),Vo(e)):delete e.R[t],e.o&&delete e.o[t],true},getOwnPropertyDescriptor:function(e,t){var r=gt(e),o=Reflect.getOwnPropertyDescriptor(r,t);return o&&{writable:true,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(zo,(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),zo.set.call(this,e[0],t,r,e[0])};var Xu=(function(){function e(r){var o=this;this.O=Ss,this.D=true,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 b=arguments.length,k=Array(b>1?b-1:0),v=1;v<b;v++)k[v-1]=arguments[v];return c.produce(R,(function(F){var _;return (_=a).call.apply(_,[g,F].concat(k))}))}}var l;if(typeof a!="function"&&ce(6),s!==void 0&&typeof s!="function"&&ce(7),yt(n)){var u=gs(o),p=$o(o,n,void 0),d=true;try{l=a(p),d=!1;}finally{d?jr(u):Fo(u);}return typeof Promise<"u"&&l instanceof Promise?l.then((function(R){return Oo(u,s),Mo(R,u)}),(function(R){throw jr(u),R})):(Oo(u,s),Mo(l,u))}if(!n||typeof n!="object"){if((l=a(n))===void 0&&(l=n),l===Ts&&(l=void 0),o.D&&jo(l,true),s){var f=[],m=[];_e("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){yt(r)||ce(8),zt(r)&&(r=ju(r));var o=gs(this),n=$o(this,r,void 0);return n[fe].C=true,Fo(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 Oo(a,o),Mo(void 0,a)},t.setAutoFreeze=function(r){this.D=r;},t.setUseProxies=function(r){r&&!Ss&&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=_e("Patches").$;return zt(r)?s(r,o):this.produce(r,(function(i){return s(i,o)}))},e})(),ge=new Xu,ep=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 Jr=ep;var Ae=Ie.actions,Ps=dr({block:$e("block"),dimension:$e("dimension"),formatter:$e("formatter"),report:$e("report"),section:$e("section"),variant:$e("variant"),datasource:$e("datasource")}),oe=dr({block:ze("block"),dimension:ze("dimension"),formatter:ze("formatter"),report:ze("report"),section:ze("section"),variant:ze("variant"),datasource:ze("datasource")}),ks=dr({block:we("block"),dimension:we("dimension"),formatter:we("formatter"),report:we("report"),section:we("section"),variant:we("variant"),datasource:we("datasource")}),xs=dr({block:ht("block"),dimension:ht("dimension"),formatter:ht("formatter"),report:ht("report"),section:ht("section"),variant:ht("variant"),datasource:ht("datasource")}),Is=dr({block:_s("block"),section:_s("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 bt(e,t){return (r,o)=>{let a=o().records.requests[e][t],s=!a||a.status==="UNINITIALIZED"?"LOADING":"FETCHING";r(Ae.setRequest({key:t,type:e,status:s}));}}function Rt(e,t,r,o){return n=>{typeof window=="object"&¬ifications.show({autoClose:3e3,color:"red",id:t,message:o,title:"Error"}),n(Ae.setRequest({key:t,type:e,status:"FAILURE",error:{code:r,message:o}}));}}function $e(e){return t=>{let r=Qo(e,t);return (o,n,a)=>(o(bt(e,r)),pe(a,"create",e)(t).then(i=>(i.ok===true?o(Ae.setCreateRequest({key:r,operation:"create",status:"SUCCESS",type:e,data:i.data})):o(Rt(e,r,i.status,i.error)),i)))}}function op(e){return t=>{let r=Qo(e,t[0]);return (o,n,a)=>(o(bt(e,r)),pe(a,"createBulk",e)(t).then(i=>(i.ok===true?o(Ae.setCreateRequest({key:r,operation:"createBulk",status:"SUCCESS",type:e,data:i.data})):o(Rt(e,r,i.status,i.error)),i)))}}function vs(e,t,r){return r.replace(new RegExp(e,"g"),t)}function np(e){return e.section_id!==void 0}function ap(e){return e.report_id!==void 0}function _s(e){return t=>{let{create:r}=t;return (o,n,a)=>$e(e)(r)(o,n,a).then(async i=>{if(i.ok){let{data:c}=i,{id:l}=c,{update:u}=t,p=Ls(e,{id:l});if(o(bt(e,`${p}`)),e==="block"&&np(r)){let d=Jr(u,g=>{g.id=l;}),{contentByLocale:f}=d;f&&(d=Jr(d,g=>{g.id=l,g.contentByLocale=Object.keys(f).reduce((b,k)=>{let v=f?f[k]:{};return b[k]={...v,id:l},b},{});}));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&&ws(e)([d,...R])(o,n,a).then(()=>ze("section")({id:d.section_id,include:true})(o,n,a).then(g=>(g.ok&&o(Ae.setRequest({key:p,type:e,status:"SUCCESS",data:g.data})),g))),we(e)(d)(o,n,a).then(g=>(g.ok&&o(Ae.setRequest({key:p,type:e,status:"SUCCESS",data:g.data})),g))}if(e==="section"&&ap(r)){let{id:d}=c,f=Jr(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(b=>b)}));return R&&m&&await op("block")(R)(o,n,a).then(g=>{if(g.ok){let b=g.data,k=[],v=b.map((F,_)=>{let B={...F},D=B.id,w=m[_];w.contentByLocale&&(B.contentByLocale=Object.keys(w.contentByLocale).reduce((A,S)=>{let T=w.contentByLocale[S];return A[S]={...T,content:{...T.content},id:B.id},A},{}));let{settings:L}=w,{contentByLocale:U,id:C}=B;B.settings=L;let q={id:C,contentByLocale:U,settings:L};return w.inputs.map(A=>A.id).reduce((A,S)=>{let T=m.findIndex(x=>x.id===S);return [...A,T]},[]).map(A=>({...b[A],originalBlock:m[A]})).forEach(A=>{let{id:S,type:T,originalBlock:x}=A;if([M.SELECTOR,M.VIZ].includes(T)){if(q.contentByLocale?.logic?.content?.api){let ne=q.contentByLocale?.logic.content.api;q.contentByLocale.logic.content.api=vs(`(selector${x.id}id)`,`selector${S}id`,ne);}if(q.contentByLocale?.logic?.content?.logic){let ne=q.contentByLocale.logic.content.logic;q.contentByLocale.logic.content.logic=vs(`(selector${x.id}id)`,`selector${S}id`,ne);}}k.push({id:S,inputAction:{operation:"create",input:{input_id:S,block_id:D}}});}),q});return ws("block")([...v,...k])(o,n,a)}}),we(e)(f)(o,n,a).then(g=>(g.ok&&o(Ae.setRequest({key:p,type:e,status:"SUCCESS",data:g.data})),g))}return we(e)({...u,id:c.id})(o,n,a)}})}}function ze(e){return t=>{let r=Cs(e,t);return (o,n,a)=>{o(bt(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(Rt(e,r,500,i)),Promise.reject(new Error(i))}return s(t).then(i=>(i.ok===true?o(Ae.setReadRequest({key:r,operation:"read",status:"SUCCESS",type:e,data:i.data})):o(Rt(e,r,i.status,i.error)),i))}}}function we(e){return t=>{let r=Zo(e,t);return (o,n,a)=>(o(bt(e,r)),pe(a,"update",e)(t).then(i=>(i.ok===true?o(Ae.setUpdateRequest({key:r,operation:"update",status:"SUCCESS",type:e,data:i.data})):o(Rt(e,r,i.status,i.error)),i)))}}function ws(e){return t=>{let r=Zo(e,t[0]);return (o,n,a)=>(o(bt(e,r)),pe(a,"updateBulk",e)(t).then(i=>(i.ok===true?o(Ae.setUpdateRequest({key:r,operation:"updateBulk",status:"SUCCESS",type:e,data:i.data})):o(Rt(e,r,i.status,i.error)),i)))}}function ht(e){return t=>{let r=Bs(e,t);return (o,n,a)=>(o(bt(e,r)),pe(a,"delete",e)(t).then(i=>{i.ok===true?o(Ae.setDeleteRequest({key:r,operation:"delete",status:"SUCCESS",type:e,data:i.data})):o(Rt(e,r,i.status,i.error));}))}}function Qo(e,t){if(e==="variant"){let r=t;return `create(variant, [${r.dimension_id}, ${r.name}])`}return `create(${e}, [${Object.keys(t)}])`}function Cs(e,t={}){let r=t.id==null?null:`'${t.id}'`;return `read(${e}, ${r}, ${!!t.include})`}function Zo(e,t){let{id:r,...o}=t;return `update(${e}, ${r}, [${Object.keys(o)}])`}function Bs(e,t){return `delete(${e}, ${t})`}function Ls(e,t){let r=t.id==null?null:`'${t.id}'`;return `clone(${e}, ${r})`}var{setStatus:Os,setPreviews:sp,setSectionState:Ms,resetSectionState:Ns,setCurrentLocale:ip,setPreferredLocale:cp,addRunConsumersRunning:Ds,removeRunConsumersRunning:Us}=xe;function lp(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 up(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 pp(){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 dp(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 Fs(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(Os(i)),n.activeSection&&t(Vs(e,{query:s}));}function mp(e,t){return async(r,o)=>Fs(e,r,o,{query:{[t]:void 0}})}function fp(e,t,r){return async(o,n)=>Fs(e,o,n,{query:{[t]:r}})}function Vs(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}=ms(n.status,t),{sid:p,bid:d,previews:f,query:m}=l;Object.keys(u).length&&r(xe.setStatus(u));let R={...Vt(f),locale:a,...de()},g={variables:R,query:m,locale:a};r(xe.addRunConsumersRunning([p]));let b=n.records.entities.section[p],k=async v=>r(qe(v));try{let v=await Ft(s,b&&[b],d,i,g,void 0,k,"section",c),{variables:F,status:_}=v;r($t.setVariableChange({attributes:R,variables:F,status:_})),r(xe.removeRunConsumersRunning([p]));}catch(v){console.error("Error in runConsumers client side: recalculateVariables",v);}}}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 gp(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 yp(){return async(e,t,r)=>{let o=await r.searchRole("");if("error"in o)throw new Error(o.error);return o.data}}function hp(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 Rp(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 bp({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 Sp(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 Ge(e){let{removeBlocks:t}=Ie.actions;return async r=>{await r(t(e));}}function fr(e){let{addBlocks:t}=Ie.actions;return async r=>{await r(t(e));}}function Ep(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 Ap(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 Tp(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 vp(){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}=Ie.actions;return async t=>{await t(e());}}var $s=()=>configureStore({reducer:{[Ie.name]:Ie.reducer,[qr.name]:qr.reducer,[Gr.name]:Gr.reducer},middleware(e){return e({thunk:{extraArgument:sr("/api/cms/")}})}}),Et=createWrapper($s);function xp(e){let t=process.cwd(),r=kp.resolve(t.endsWith("/example")?t.replace("/example",""):t,"package-lock.json"),o;try{let n=JSON.parse(il.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 Ip(e){let t=()=>Promise.resolve({}),{pathSegmentsKey:r="bespoke",preResolve:o=t,postResolve:n=t,authOptions:a={providers:[]}}=e||{};return Et.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:false}};let u=new Set([G.ADMIN,G.EDITOR,G.WRITER]);if(!(l?.user?.bespoke_roles||[]).some(b=>u.has(b)))return {redirect:{destination:"/",permanent:false}};let d=c.query[r],[f]=Array.isArray(d)?d:[d];await i(it);let m=await xp("@datawheel/bespoke"),R=await o(s,c);if("redirect"in R)return {props:R};f==="reports"&&(zs(c.query[r])?await Promise.all([i(oe("formatter",{})),i(oe("datasource",{include:true})),i(oe("report",{id:zs(c.query[r]),include:true})),xe.setStatus({isCMS:true})]):await Promise.all([i(oe("report",{include:"dimensions"})),xe.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 g=await n(s,c);return {props:{...R,...g,bespokeVersion:m,session:l}}}})}function zs(e){if(e==null||e==="")return;let[,t]=Array.isArray(e)?e:[e];return Number.parseInt(t)||void 0}var {locales:Bp}=j(),Lp={pathSegment:"path",formatterFunctions:Bp.reduce((e,t)=>({...e,[t]:{}}),{}),datasourceFunctions:[],profilePrefix:"path",previewPrefix:null,siteProps:{}};createContext(Lp);j();var Qr=e=>e.records.entities.block;function Kt(e){return t=>Object.values(t.records.entities[e])}var Zr=Kt("section"),Xr=Kt("formatter"),Jp=de();function eo(e){return Object.values(e.records.entities.datasource||[]).sort((t,r)=>t.content.order>r.content.order?1:-1).map(t=>{let r={...Jp};return {...t,content:{...t.content,pattern:be(t.content.pattern,{},{variables:r})}}})}var Yp=async(e,t,r,o,n)=>{if(e.length===0)throw new Error("No slugs provided");let a=await t(r({mode:"slugs",locale:n,slugs:e,output:"full"})),s=a.results[0].report_id;if(a.results.length>1){if(a.results.every(m=>m.report_id===s)===false)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: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},to=Yp;function Qp(e){let{fallback:t=true,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 rt().then(Nt),l=await c({query:"",limit:r,format:"plain",locale:i||me,noImage:false,visible:true,report:[],dimension:[],variant:[],includes:true});l.ok===true&&(s=l.data.results.map(u=>({locale:a.find(p=>p===u.locale),params:{bespoke:[u.variant.slug,u.slug]}})));}return {fallback:t,paths:s}}}function Zp(e){let{pathSegmentsKey:t="bespoke"}=e||{};try{return Et.getStaticProps(r=>{let{dispatch:o}=r;return async n=>{await o(it);let a=new Date().toISOString(),{locale:s=me,params:i={}}=n,c=Array.from(en(i[t])),l;try{l=await to(c,o,qe,mr,s);}catch(w){return console.error("[Bespoke slug validation Failed]: Return 404:",w.message,`[${s}] -> /${c.map(L=>`${L.variantSlug}/${L.memberSlug}`).join("/")}`),{notFound:!0}}o(St.setPreviews(l.results)),await Promise.all([o(oe("formatter",{})),o(oe("datasource",{include:!0})),o(oe("report",{id:l.results.map(w=>w.report_id),include:!0,locales:[s]}))]);let u=r.getState(),p=Xr(u),d=eo(u),f=cr(p,s),m=Zr(u),R=Qr(u),g={...R},b={},k=Object.values(R).reduce((w,L)=>("access"in L.settings&&!["public","guest"].some(U=>!L.settings.access||L.settings.access.includes(U))&&w.push(L.id),w),[]),v=k.filter(w=>g[w].settings[Le.FALLBACK]),F=Array.from(new Set([...v,...Se(v,Object.values(g))])),_=k.filter(w=>[M.SELECTOR,M.MULTIHIERARCHY_SELECTOR].includes(g[w].type)),z=Array.from(new Set([..._,...Se(_,Object.values(g))]));k=Array.from(new Set([...k,...F,...z,...Se(k,Object.values(g))])),k.forEach(w=>{v.includes(w)?(b[w]={...g[w],type:M.FALLBACK,original_type:g[w].type},delete g[w]):_.includes(w)&&(b[w]={...g[w],settings:{...g[w].settings,[Le.DISABLED]:!0}},delete g[w]),z.includes(w)||delete g[w];}),await o(Ge(k.filter(w=>!z.includes(w)))),await o(fr(b));let B={...Vt(l.results),locale:s,...de()},D=async w=>await o(qe(w));return await Ft({...g,...b},m,void 0,f,{locale:s,query:i,variables:B},void 0,D,"report",d).then(async w=>{let L=Object.keys({...g,...b}).reduce((U,C)=>(w.variables[C]&&w.status[C]||U.push(C),U),[]);await o(Ge(L)),await o($t.setVariableChange({...w,attributes:B})),await o(gr());}),{props:{buildTime:a}}}})}catch(r){console.error("ERROR SSR",r);}}function en(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 Xp(e){let{pathSegmentsKey:t="bespoke"}=e||{};try{return Et.getServerSideProps(r=>{let{dispatch:o}=r;return async n=>{let{section:a,block:s}=n.query,i=Object.fromEntries(Object.entries(n.query).filter(([P])=>P.match(/selector\d+id/)));if(!a&&!s)return {notFound:!0};let c=Number(a);await o(it);let l=new Date().toISOString(),{locale:u=me,params:p={},req:d}=n,f=Array.from(en(p[t])),m;try{m=await to(f,o,qe,mr,u);}catch(P){return console.error("[Bespoke slug validation Failed]: Return 404:",P.message,`/${u}/${d.url}`),{notFound:!0}}o(St.setPreviews(m.results)),await Promise.all([o(oe("formatter",{})),o(oe("datasource",{include:!0})),o(oe("report",{id:m.results.map(P=>P.report_id),include:!0,locales:[u]}))]);let R=r.getState(),g=Xr(R),b=eo(R),k=cr(g,u),v=Zr(R).filter(P=>P.id===c),F=Qr(R),_={...F},z={},B=Object.values(F).reduce((P,H)=>("access"in H.settings&&!["public","guest"].some(A=>!H.settings.access||H.settings.access.includes(A))&&P.push(H.id),P),[]),D=B.filter(P=>_[P].settings[Le.FALLBACK]),w=Array.from(new Set([...D,...Se(D,Object.values(_))])),L=B.filter(P=>[M.SELECTOR,M.MULTIHIERARCHY_SELECTOR].includes(_[P].type)),U=Array.from(new Set([...L,...Se(L,Object.values(_))]));B=Array.from(new Set([...B,...w,...U,...Se(B,Object.values(_))])),B.forEach(P=>{D.includes(P)?(z[P]={..._[P],type:M.FALLBACK,original_type:_[P].type},delete _[P]):L.includes(P)&&(z[P]={..._[P],settings:{..._[P].settings,[Le.DISABLED]:!0}},delete _[P]),U.includes(P)||delete _[P];}),await o(Ge(B.filter(P=>!U.includes(P)))),await o(fr(z));let C={...Vt(m.results),locale:u,...de()},q=async P=>await o(qe(P));await Ft({..._,...z},v,void 0,k,{locale:u,query:{...p,...i},variables:C},void 0,q,"section",b).then(async P=>{let H=Object.keys({..._,...z}).reduce((A,S)=>(P.variables[S]&&P.status[S]||A.push(S),A),[]);await Promise.all([o(Ge(H)),o($t.setVariableChange({...P,attributes:C})),o(gr())]);});let O=Object.keys({..._,...z}).filter(P=>a&&s?P!==s:_[P]&&_[P].section_id!==c);return await o(Ge(O)),{props:{buildTime:l}}}})}catch(r){return console.error("ERROR SSR",r),async()=>({notFound:true})}}
|
|
29
|
-
export{Xp as BespokeEmbedServerSideProps,Wl as BespokeEndpointNextJsHandlerFactory,ye as BespokeGetSession,
|
|
33
|
+
`)}));}let _=await Promise.all(F).catch(I=>I.message);if(typeof _=="string"&&_)return {outputVariables:{},renderVariables:{},status:{error:_}};l=_.length===1?_[0].data:_.map(I=>I.data),d=_.reduce((I,N)=>I+JSON.stringify(N.data).length/1024,0),p=Math.max(..._.map(I=>I.requestDuration)),m=_.map(I=>I.apiDataSource?`${I.apiDataSource.name} (${I.apiDataSource.id})`:null),R=_.map(I=>I.finalUrl);}if(e.type===M.SELECTOR){let{config:L,log:F,error:_}=xo(e.id,e.contentByLocale[a].content.logic,t,r,true);return {outputVariables:es(e.id,i,L),renderVariables:L,status:{log:F,error:_,allowed:c}}}if(e.type===M.MULTIHIERARCHY_SELECTOR){let{config:L,log:F,error:_}=Co(e.id,e.contentByLocale[a].content.logic,t,r,true);return {outputVariables:ts(e.id,i,L),renderVariables:L,status:{log:F,error:_,allowed:c}}}if(e.type===M.VIZ)return {outputVariables:{},renderVariables:e.contentByLocale.logic.content,status:{log:[],allowed:c}};if(e.type===M.RELATED){let L=e.contentByLocale?.logic?.content?.simple?.compare||"variant",F=e.contentByLocale?.logic?.content?.simple?.limit||4,_=Object.keys(s).filter(S=>S.startsWith("report_id")).map(S=>s[S]),I=Object.keys(s).filter(S=>S.startsWith("dimension_id")).map(S=>s[S]),N=Object.keys(s).filter(S=>S.startsWith("variant_id")).map(S=>s[S]),B=Object.keys(s).filter(S=>S.startsWith("id")).map(S=>s[S]);if(!B.length)return {outputVariables:{related_reports:[]},renderVariables:{},status:{log:[],allowed:false}};let q=await Promise.all(B.map((S,T)=>o({mode:"ids",locale:a,ids:[S],output:"lite",variant:[N[T]]}))).then(S=>S.flatMap(T=>{let x=[];return Ur(T)?T.ok&&(x=T.data.results):x=T.results,x&&Array.isArray(x)?x:[]})).catch(S=>(console.error("Error getting related members",S),[]));if(I.length>1){let S=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:F??4,current_ids:[V.content_id],output:"full",variant_ids:[V.variant_id]};return Q===0&&(W.include_ids=[V.content_id]),W}),x=await Promise.all(T.map(V=>o(V))).then(V=>V.flatMap(Q=>{let W=[];return Ur(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=x.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)=>S.indexOf(W.variant_slug)-S.indexOf(ue.variant_slug));return {entities:Q,link:"/"+Q.map(W=>`${W.variant_slug}/${W.slug}`).join("/")}})},renderVariables:{},status:{log:[],allowed:x.length>0}}}let O=q.map(S=>S.content_id),k={mode:"related",locale:a,related:F??4,current_ids:O,output:"full"};L&&(L==="report"?k.report_ids=_:L==="dimension"?k.dimension_ids=I:k.variant_ids=N);let H=await o(k).then(S=>{let T=[];return Ur(S)?S.ok&&(T=S.data.results):T=S.results,T&&Array.isArray(T)?T:[]}).catch(S=>(console.error("Error getting related members",S),[]));return {outputVariables:{related_reports:H.map(S=>({entities:[S],link:`/${S.variant_slug}/${S.slug}`}))},renderVariables:{},status:{log:[],allowed:H.length>0}}}let{logic:g}=os(e,a),b=be(g,t,r),P=dt("resp",l||{},b,t,s,r),{vars:v,error:U,log:w}=P;if(typeof v!="object")return {outputVariables:{},renderVariables:{},status:{error:"Configuration did not return an object",log:w,duration:p,responseSize:d,resp:l,api:f,allowed:c,apiFinalUrls:R,apiDataSources:m}};let z=Object.keys(v).reduce((L,F)=>({...L,[`${e.type}${e.id}${F}`]:v[F]}),{});return {renderVariables:v,outputVariables:[M.GENERATOR,M.SECTION_FLAG].includes(e.type)?v:z,status:{log:w,error:U,duration:p,responseSize:d,resp:l,api:f,allowed:c,apiFinalUrls:R,apiDataSources:m}}}function Au(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=>Lo(l,t,o,false,a,n,s));}})}var Lo=(e,t,r=[],o=true,n=true,a=true,s=[])=>{if(s.includes(e))return [];s.push(e);let i=t[e];return i&&i.inputs.length&&o&&i.inputs.forEach(c=>{let l=`${c}-${e}`;r.includes(l)||r.push(l),i.inputs.forEach(u=>Lo(u,t,r,o,false,a,s));}),i&&i.consumers.length&&n&&Au(i,t,e,r,a,n,s),r},Tu=(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=he(t),{error:s,output:i}=dt("variables",r,e.settings.allowedLogic||"return false;",o,void 0,a);s||(n=!!i);}return n},Ft=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((O,{id:k})=>({...O,...ns(k,e)}),{}):g=Object.values(e).filter(O=>Bo(O)).reduce((O,k)=>({...O,[k.id]:k}),{});let b=Object.values(g).filter(O=>Bo(O));if(b.length>0){Ve&&console.info("%crunConsumers: calculating section flags","color:purple",b.map(A=>A.id).join(", "));let O=Object.fromEntries(await Promise.all(b.map(async A=>[A.id,await is(A,o,{...u,variables:p,locale:p.locale},s,c).then(S=>{let{outputVariables:T,status:x}=S;if(x.error){if(typeof window>"u")throw new Error(`Run consumers (Block: ${A.id}, Section ${A.section_id}) failed with message: ${x.error}. `);f[A.id]={allowed:false,error:x.error},d[A.id]={};}return (A.consumers.length>0||[M.GENERATOR,M.SECTION_FLAG,M.RELATED].includes(A.type))&&x.allowed&&Object.keys(T).length>0?d[A.id]=T:d[A.id]={},i==="report"?(f[A.id]={allowed:x.allowed},[M.GENERATOR,M.SECTION_FLAG].includes(A.type)&&x.api&&(f[A.id].api=x.api)):f[A.id]=x,S})]))),H=Object.entries(O).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];}),Ve&&console.info("%crunConsumers: removing sections","color:purple",m.keys());}let P=m.size>0?Object.fromEntries(Object.entries(e).filter(([,O])=>m?.has(O.section_id)?(R.includes(O.id)||R.push(O.id),false):true)):e;if(R.length>0&&(P=Object.fromEntries(Object.entries(P).map(([O,k])=>{let H={...k,inputs:k.inputs.filter(A=>!R.includes(A)),consumers:k.consumers.filter(A=>!R.includes(A))};return [O,H]}))),!r&&!t)return {variables:{...a.variables??{},...d},status:{...a.status??{},...f}};i==="report"&&R.length>0&&R.forEach(O=>{delete d[O],delete f[O],delete e[O];}),Ve&&console.info("%crunConsumers: running root blocks","color:purple",Object.keys(g));let v=Object.keys(g).reduce((O,k)=>{let H=new Date,A=Lo(Number(k),P,[],!r,true,l).map(x=>x.split("-")),T=(new Date().getTime()-H.getTime())/1e3;return Ve&&console.info(`%cResolved dependencies for ${k} (${T.toFixed(2)}s)`,"color:blue"),[...O,...A]},[]),U=new Date,w=Object.keys(g).reduce((O,k)=>O.includes(k)?[...O]:[k,...O],du(v)),L=(new Date().getTime()-U.getTime())/1e3;Ve&&console.info(`%cResolved DAG (${L.toFixed(2)}s): `,"color:green",w);let F=process.env.NEXT_PUBLIC_REPORTS_MAX_CONCURRENT_QUERIES_PER_REPORT,_=parseInt(`${F||0}`,10);async function I(O,k){let H=new Map,A=[],S=async()=>A.length;for(let T of O){if(_!==0){let Z=await S();for(;Z>=_;)Ve&&console.info("Too many pending promises, waiting...",Z,A),await new Promise(J=>setTimeout(J,500)),Z=await S();}let x=k[T],ae=Promise.all(x.inputs.filter(Z=>O.includes(String(Z))).map(Z=>H.get(Number(Z)))).then(async()=>{let Z=x.inputs.reduce((se,le)=>({...se,...d[le]}),p),J=x.inputs.find(se=>(x.settings?.ignoreCascade?x.settings?.ignoreCascade:[]).includes(se)||!f[se]?false:!f[se].allowed||f[se].hiddenByCascade);if(J){f[T]={allowed:false,hiddenByCascade:f[J].hiddenByCascade||J},d[T]={},A.splice(A.indexOf(Number(T)),1);return}let ie=new Date,V;typeof window<"u"&&[M.SELECTOR,M.MULTIHIERARCHY_SELECTOR].includes(x.type)&&x.settings[Le.DISABLED]?V=new Promise(se=>{se({outputVariables:d[T],status:f[T]});}):V=is(x,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 ${x.section_id}) failed with message: ${le.error}.`);f[T]={allowed:false,error:le.error},d[T]={};}(x.consumers.length>0||[M.GENERATOR,M.SECTION_FLAG,M.RELATED].includes(x.type))&&le.allowed&&Object.keys(se).length>0?d[T]=se:d[T]={},i==="report"?(f[T]={allowed:le.allowed},[M.GENERATOR,M.SECTION_FLAG].includes(x.type)&&le.api&&(f[T].api=le.api)):f[T]=le;}),ue=(new Date().getTime()-ie.getTime())/1e3;return Ve&&console.info(`%cBlock ${x.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 N=new Date;await I(w,P);let q=(new Date().getTime()-N.getTime())/1e3;return Ve&&console.info(`%cResolved Variables (${q.toFixed(2)}s), ${w.length} blocks`,"color:green"),{variables:{...a.variables??{},...d},status:{...a.status??{},...f}}};function vu(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=vu;function _u(e,t){return +(e<t)-+(e>t)}function Vr(e,t,r="ordering"){return _u(t[r],e[r])}var{localeDefault:Pu}=j();var ir=new schema.Entity("block",{},{mergeStrategy(e,t){return t.block_input?e||{}:{...e,...t}}});ir.define({consumers:[ir],inputs:[ir]});var ls=new schema.Entity("variant"),us=new schema.Entity("dimension",{variants:[ls]},{processStrategy(e){return {...e,variants:"variants"in e?e.variants:[]}}}),ps=new schema.Entity("section",{blocks:[ir]}),ku=new schema.Entity("report",{dimensions:[us],sections:[ps]},{processStrategy(e){return {...e,sections:"sections"in e?e.sections.sort(Vr):[]}}}),xu=new schema.Entity("formatter"),Iu=new schema.Entity("datasource"),Cu={report:ku,section:ps,block:ir,dimension:us,variant:ls,formatter:xu,datasource:Iu};function $r(e,t){let r=Cu[e];if(!r)throw new Error(`Invalid entity type: ${e}`);let{entities:o}=normalize(t,[r]);return {report:mt(o,"report"),dimension:mt(o,"dimension"),section:mt(o,"section"),block:mt(o,"block"),variant:mt(o,"variant"),formatter:mt(o,"formatter"),datasource:mt(o,"datasource")}}function mt(e,t){return Object.prototype.hasOwnProperty.call(e,t)?e[t]:{}}var ds=(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=Pu)=>e.reduce((r,o)=>{let n=Nn({vars:["n"],logic:o.content.logic},{},t,{});return r[o.name]=n,r},{});var me=process.env.NEXT_PUBLIC_REPORTS_LOCALE_DEFAULT||"en",zr=process.env.NEXT_PUBLIC_REPORTS_LOCALES?.split(",")||[me];zr.includes(me)||zr.push(me);var Ou={localeDefault:me,locales:zr,currentLocale:me,preferredLocale:me,showToolbar:false,activeSection:null,previews:[],query:{},sectionState:{},activeEntity:{type:null,id:null},sidebarStatus:{tools:true,settings:false,reportEditor:false},isCMS:false,isRunConsumersRunning:[]},qr=createSlice({name:"status",initialState:Ou,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:{[HYDRATE]:(e,t)=>({...e,previews:t.payload.status.previews})}}),xe=qr.actions;var Du={attributes:{},variables:{},status:{}},Gr=createSlice({name:"variables",initialState:Du,reducers:{setVariableChange:(e,t)=>{e.attributes={...e.attributes,...t.payload.attributes},e.variables={...e.variables,...t.payload.variables},e.status={...e.status,...t.payload.status};}},extraReducers:{[HYDRATE]:(e,t)=>({attributes:{...e.attributes,...t.payload.variables.attributes},status:{...e.status,...t.payload.variables.status},variables:{...e.variables,...t.payload.variables.variables}})}}),$t=Gr.actions;var Vu={tree:[],reports:null,entities:{block:{},dimension:{},report:{},section:{},variant:{},formatter:{},datasource:{}},requests:{block:{},dimension:{},report:{},section:{},variant:{},formatter:{},datasource:{}}},Ie=createSlice({name:"records",initialState:Vu,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=$r(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=Kr(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=Kr(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=$r(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=$r(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=Kr(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=Kr(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`;$u(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.logic_ssr,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 Kr(e,t){return e.map(n=>t[n]).sort((n,a)=>typeof n.ordering=="string"&&typeof a.ordering=="string"?Vr(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 $u(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=Ju[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 zt(e){return !!e&&!!e[fe]}function yt(e){var t;return !!e&&((function(r){if(!r||typeof r!="object")return false;var o=Object.getPrototypeOf(r);if(o===null)return true;var n=Object.hasOwnProperty.call(o,"constructor")&&o.constructor;return n===Object||typeof n=="function"&&Function.toString.call(n)===Yu})(e)||Array.isArray(e)||!!e[Ss]||!!(!((t=e.constructor)===null||t===void 0)&&t[Ss])||qo(e)||Go(e))}function pr(e,t,r){r===void 0&&(r=false),Gt(e)===0?(r?Object.keys:Jo)(e).forEach((function(o){r&&typeof o=="symbol"||t(o,e[o],e);})):e.forEach((function(o,n){return t(n,o,e)}));}function Gt(e){var t=e[fe];return t?t.i>3?t.i-4:t.i:Array.isArray(e)?1:qo(e)?2:Go(e)?3:0}function Uo(e,t){return Gt(e)===2?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function zu(e,t){return Gt(e)===2?e.get(t):e[t]}function Es(e,t,r){var o=Gt(e);o===2?e.set(t,r):o===3?e.add(r):e[t]=r;}function qu(e,t){return e===t?e!==0||1/e==1/t:e!=e&&t!=t}function qo(e){return Hu&&e instanceof Map}function Go(e){return Wu&&e instanceof Set}function gt(e){return e.o||e.t}function Ko(e){if(Array.isArray(e))return Array.prototype.slice.call(e);var t=Qu(e);delete t[fe];for(var r=Jo(t),o=0;o<r.length;o++){var n=r[o],a=t[n];a.writable===false&&(a.writable=true,a.configurable=true),(a.get||a.set)&&(t[n]={configurable:true,writable:true,enumerable:a.enumerable,value:e[n]});}return Object.create(Object.getPrototypeOf(e),t)}function jo(e,t){return t===void 0&&(t=false),Ho(e)||zt(e)||!yt(e)||(Gt(e)>1&&(e.set=e.add=e.clear=e.delete=Gu),Object.freeze(e),t&&pr(e,(function(r,o){return jo(o,true)}),true)),e}function Gu(){ce(2);}function Ho(e){return e==null||typeof e!="object"||Object.isFrozen(e)}function _e(e){var t=Zu[e];return t||ce(18,e),t}function ms(){return process.env.NODE_ENV==="production"||qt||ce(0),qt}function Oo(e,t){t&&(_e("Patches"),e.u=[],e.s=[],e.v=t);}function jr(e){Fo(e),e.p.forEach(Ku),e.p=null;}function Fo(e){e===qt&&(qt=e.l);}function fs(e){return qt={p:[],l:qt,h:e,m:true,_:0}}function Ku(e){var t=e[fe];t.i===0||t.i===1?t.j():t.g=true;}function Mo(e,t){t._=t.p.length;var r=t.p[0],o=e!==void 0&&e!==r;return t.h.O||_e("ES5").S(t,e,o),o?(r[fe].P&&(jr(t),ce(4)),yt(e)&&(e=Hr(t,e),t.l||Wr(t,e)),t.u&&_e("Patches").M(r[fe].t,e,t.u,t.s)):e=Hr(t,r,[]),jr(t),t.u&&t.v(t.u,t.s),e!==As?e:void 0}function Hr(e,t,r){if(Ho(t))return t;var o=t[fe];if(!o)return pr(t,(function(i,c){return gs(e,o,t,i,c,r)}),true),t;if(o.A!==e)return t;if(!o.P)return Wr(e,o.t,true),o.t;if(!o.I){o.I=true,o.A._--;var n=o.i===4||o.i===5?o.o=Ko(o.k):o.o,a=n,s=false;o.i===3&&(a=new Set(n),n.clear(),s=true),pr(a,(function(i,c){return gs(e,o,n,i,c,r,s)})),Wr(e,n,false),r&&e.u&&_e("Patches").N(o,r,e.u,e.s);}return o.o}function gs(e,t,r,o,n,a,s){if(process.env.NODE_ENV!=="production"&&n===r&&ce(5),zt(n)){var i=Hr(e,n,a&&t&&t.i!==3&&!Uo(t.R,o)?a.concat(o):void 0);if(Es(r,o,i),!zt(i))return;e.m=false;}else s&&r.add(n);if(yt(n)&&!Ho(n)){if(!e.h.D&&e._<1)return;Hr(e,n),t&&t.A.l||Wr(e,n);}}function Wr(e,t,r){r===void 0&&(r=false),!e.l&&e.h.D&&e.m&&jo(t,r);}function No(e,t){var r=e[fe];return (r?gt(r):e)[t]}function ys(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 Vo(e){e.P||(e.P=true,e.l&&Vo(e.l));}function Do(e){e.o||(e.o=Ko(e.t));}function $o(e,t,r){var o=qo(t)?_e("MapSet").F(t,r):Go(t)?_e("MapSet").T(t,r):e.O?(function(n,a){var s=Array.isArray(n),i={i:s?1:0,A:a?a.A:ms(),P:false,I:false,R:{},l:a,t:n,k:null,o:null,j:null,C:false},c=i,l=zo;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):_e("ES5").J(t,r);return (r?r.A:ms()).p.push(o),o}function ju(e){return zt(e)||ce(22,e),(function t(r){if(!yt(r))return r;var o,n=r[fe],a=Gt(r);if(n){if(!n.P&&(n.i<4||!_e("ES5").K(n)))return n.t;n.I=true,o=hs(r,a),n.I=false;}else o=hs(r,a);return pr(o,(function(s,i){n&&zu(n.t,s)===i||Es(o,s,t(i));})),a===3?new Set(o):o})(e)}function hs(e,t){switch(t){case 2:return new Map(e);case 3:return Array.from(e)}return Ko(e)}var Rs,qt,Wo=typeof Symbol<"u"&&typeof Symbol("x")=="symbol",Hu=typeof Map<"u",Wu=typeof Set<"u",bs=typeof Proxy<"u"&&Proxy.revocable!==void 0&&typeof Reflect<"u",As=Wo?Symbol.for("immer-nothing"):((Rs={})["immer-nothing"]=true,Rs),Ss=Wo?Symbol.for("immer-draftable"):"__$immer_draftable",fe=Wo?Symbol.for("immer-state"):"__$immer_state";var Ju={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"},Yu=""+Object.prototype.constructor,Jo=typeof Reflect<"u"&&Reflect.ownKeys?Reflect.ownKeys:Object.getOwnPropertySymbols!==void 0?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Object.getOwnPropertyNames,Qu=Object.getOwnPropertyDescriptors||function(e){var t={};return Jo(e).forEach((function(r){t[r]=Object.getOwnPropertyDescriptor(e,r);})),t},Zu={},zo={get:function(e,t){if(t===fe)return e;var r=gt(e);if(!Uo(r,t))return (function(n,a,s){var i,c=ys(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||!yt(o)?o:o===No(e.t,t)?(Do(e),e.o[t]=$o(e.A.h,o,e)):o},has:function(e,t){return t in gt(e)},ownKeys:function(e){return Reflect.ownKeys(gt(e))},set:function(e,t,r){var o=ys(gt(e),t);if(o?.set)return o.set.call(e.k,r),true;if(!e.P){var n=No(gt(e),t),a=n?.[fe];if(a&&a.t===r)return e.o[t]=r,e.R[t]=false,true;if(qu(r,n)&&(r!==void 0||Uo(e.t,t)))return true;Do(e),Vo(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]=true),true},deleteProperty:function(e,t){return No(e.t,t)!==void 0||t in e.t?(e.R[t]=false,Do(e),Vo(e)):delete e.R[t],e.o&&delete e.o[t],true},getOwnPropertyDescriptor:function(e,t){var r=gt(e),o=Reflect.getOwnPropertyDescriptor(r,t);return o&&{writable:true,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(zo,(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),zo.set.call(this,e[0],t,r,e[0])};var Xu=(function(){function e(r){var o=this;this.O=bs,this.D=true,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 b=arguments.length,P=Array(b>1?b-1:0),v=1;v<b;v++)P[v-1]=arguments[v];return c.produce(R,(function(U){var w;return (w=a).call.apply(w,[g,U].concat(P))}))}}var l;if(typeof a!="function"&&ce(6),s!==void 0&&typeof s!="function"&&ce(7),yt(n)){var u=fs(o),p=$o(o,n,void 0),d=true;try{l=a(p),d=!1;}finally{d?jr(u):Fo(u);}return typeof Promise<"u"&&l instanceof Promise?l.then((function(R){return Oo(u,s),Mo(R,u)}),(function(R){throw jr(u),R})):(Oo(u,s),Mo(l,u))}if(!n||typeof n!="object"){if((l=a(n))===void 0&&(l=n),l===As&&(l=void 0),o.D&&jo(l,true),s){var f=[],m=[];_e("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){yt(r)||ce(8),zt(r)&&(r=ju(r));var o=fs(this),n=$o(this,r,void 0);return n[fe].C=true,Fo(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 Oo(a,o),Mo(void 0,a)},t.setAutoFreeze=function(r){this.D=r;},t.setUseProxies=function(r){r&&!bs&&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=_e("Patches").$;return zt(r)?s(r,o):this.produce(r,(function(i){return s(i,o)}))},e})(),ge=new Xu,ep=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 Jr=ep;var Ae=Ie.actions,ws=dr({block:$e("block"),dimension:$e("dimension"),formatter:$e("formatter"),report:$e("report"),section:$e("section"),variant:$e("variant"),datasource:$e("datasource")}),oe=dr({block:ze("block"),dimension:ze("dimension"),formatter:ze("formatter"),report:ze("report"),section:ze("section"),variant:ze("variant"),datasource:ze("datasource")}),Ps=dr({block:we("block"),dimension:we("dimension"),formatter:we("formatter"),report:we("report"),section:we("section"),variant:we("variant"),datasource:we("datasource")}),ks=dr({block:ht("block"),dimension:ht("dimension"),formatter:ht("formatter"),report:ht("report"),section:ht("section"),variant:ht("variant"),datasource:ht("datasource")}),xs=dr({block:vs("block"),section:vs("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 bt(e,t){return (r,o)=>{let a=o().records.requests[e][t],s=!a||a.status==="UNINITIALIZED"?"LOADING":"FETCHING";r(Ae.setRequest({key:t,type:e,status:s}));}}function Rt(e,t,r,o){return n=>{typeof window=="object"&¬ifications.show({autoClose:3e3,color:"red",id:t,message:o,title:"Error"}),n(Ae.setRequest({key:t,type:e,status:"FAILURE",error:{code:r,message:o}}));}}function $e(e){return t=>{let r=Qo(e,t);return (o,n,a)=>(o(bt(e,r)),pe(a,"create",e)(t).then(i=>(i.ok===true?o(Ae.setCreateRequest({key:r,operation:"create",status:"SUCCESS",type:e,data:i.data})):o(Rt(e,r,i.status,i.error)),i)))}}function op(e){return t=>{let r=Qo(e,t[0]);return (o,n,a)=>(o(bt(e,r)),pe(a,"createBulk",e)(t).then(i=>(i.ok===true?o(Ae.setCreateRequest({key:r,operation:"createBulk",status:"SUCCESS",type:e,data:i.data})):o(Rt(e,r,i.status,i.error)),i)))}}function Ts(e,t,r){return r.replace(new RegExp(e,"g"),t)}function np(e){return e.section_id!==void 0}function ap(e){return e.report_id!==void 0}function vs(e){return t=>{let{create:r}=t;return (o,n,a)=>$e(e)(r)(o,n,a).then(async i=>{if(i.ok){let{data:c}=i,{id:l}=c,{update:u}=t,p=Bs(e,{id:l});if(o(bt(e,`${p}`)),e==="block"&&np(r)){let d=Jr(u,g=>{g.id=l;}),{contentByLocale:f}=d;f&&(d=Jr(d,g=>{g.id=l,g.contentByLocale=Object.keys(f).reduce((b,P)=>{let v=f?f[P]:{};return b[P]={...v,id:l},b},{});}));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&&_s(e)([d,...R])(o,n,a).then(()=>ze("section")({id:d.section_id,include:true})(o,n,a).then(g=>(g.ok&&o(Ae.setRequest({key:p,type:e,status:"SUCCESS",data:g.data})),g))),we(e)(d)(o,n,a).then(g=>(g.ok&&o(Ae.setRequest({key:p,type:e,status:"SUCCESS",data:g.data})),g))}if(e==="section"&&ap(r)){let{id:d}=c,f=Jr(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(b=>b)}));return R&&m&&await op("block")(R)(o,n,a).then(g=>{if(g.ok){let b=g.data,P=[],v=b.map((U,w)=>{let L={...U},F=L.id,_=m[w];_.contentByLocale&&(L.contentByLocale=Object.keys(_.contentByLocale).reduce((A,S)=>{let T=_.contentByLocale[S];return A[S]={...T,content:{...T.content},id:L.id},A},{}));let{settings:I}=_,{contentByLocale:N,id:B}=L;L.settings=I;let q={id:B,contentByLocale:N,settings:I};return _.inputs.map(A=>A.id).reduce((A,S)=>{let T=m.findIndex(x=>x.id===S);return [...A,T]},[]).map(A=>({...b[A],originalBlock:m[A]})).forEach(A=>{let{id:S,type:T,originalBlock:x}=A;if([M.SELECTOR,M.VIZ].includes(T)){if(q.contentByLocale?.logic?.content?.api){let ne=q.contentByLocale?.logic.content.api;q.contentByLocale.logic.content.api=Ts(`(selector${x.id}id)`,`selector${S}id`,ne);}if(q.contentByLocale?.logic?.content?.logic){let ne=q.contentByLocale.logic.content.logic;q.contentByLocale.logic.content.logic=Ts(`(selector${x.id}id)`,`selector${S}id`,ne);}}P.push({id:S,inputAction:{operation:"create",input:{input_id:S,block_id:F}}});}),q});return _s("block")([...v,...P])(o,n,a)}}),we(e)(f)(o,n,a).then(g=>(g.ok&&o(Ae.setRequest({key:p,type:e,status:"SUCCESS",data:g.data})),g))}return we(e)({...u,id:c.id})(o,n,a)}})}}function ze(e){return t=>{let r=Is(e,t);return (o,n,a)=>{o(bt(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(Rt(e,r,500,i)),Promise.reject(new Error(i))}return s(t).then(i=>(i.ok===true?o(Ae.setReadRequest({key:r,operation:"read",status:"SUCCESS",type:e,data:i.data})):o(Rt(e,r,i.status,i.error)),i))}}}function we(e){return t=>{let r=Zo(e,t);return (o,n,a)=>(o(bt(e,r)),pe(a,"update",e)(t).then(i=>(i.ok===true?o(Ae.setUpdateRequest({key:r,operation:"update",status:"SUCCESS",type:e,data:i.data})):o(Rt(e,r,i.status,i.error)),i)))}}function _s(e){return t=>{let r=Zo(e,t[0]);return (o,n,a)=>(o(bt(e,r)),pe(a,"updateBulk",e)(t).then(i=>(i.ok===true?o(Ae.setUpdateRequest({key:r,operation:"updateBulk",status:"SUCCESS",type:e,data:i.data})):o(Rt(e,r,i.status,i.error)),i)))}}function ht(e){return t=>{let r=Cs(e,t);return (o,n,a)=>(o(bt(e,r)),pe(a,"delete",e)(t).then(i=>{i.ok===true?o(Ae.setDeleteRequest({key:r,operation:"delete",status:"SUCCESS",type:e,data:i.data})):o(Rt(e,r,i.status,i.error));}))}}function Qo(e,t){if(e==="variant"){let r=t;return `create(variant, [${r.dimension_id}, ${r.name}])`}return `create(${e}, [${Object.keys(t)}])`}function Is(e,t={}){let r=t.id==null?null:`'${t.id}'`;return `read(${e}, ${r}, ${!!t.include})`}function Zo(e,t){let{id:r,...o}=t;return `update(${e}, ${r}, [${Object.keys(o)}])`}function Cs(e,t){return `delete(${e}, ${t})`}function Bs(e,t){let r=t.id==null?null:`'${t.id}'`;return `clone(${e}, ${r})`}var{setStatus:Ls,setPreviews:sp,setSectionState:Os,resetSectionState:Ms,setCurrentLocale:ip,setPreferredLocale:cp,addRunConsumersRunning:Ns,removeRunConsumersRunning:Ds}=xe;function lp(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 up(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 pp(){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 dp(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 Us(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(Ls(i)),n.activeSection&&t(Fs(e,{query:s}));}function mp(e,t){return async(r,o)=>Us(e,r,o,{query:{[t]:void 0}})}function fp(e,t,r){return async(o,n)=>Us(e,o,n,{query:{[t]:r}})}function Fs(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}=ds(n.status,t),{sid:p,bid:d,previews:f,query:m}=l;Object.keys(u).length&&r(xe.setStatus(u));let R={...Vt(f),locale:a,...de()},g={variables:R,query:m,locale:a};r(xe.addRunConsumersRunning([p]));let b=n.records.entities.section[p],P=async v=>r(qe(v));try{let v=await Ft(s,b&&[b],d,i,g,void 0,P,"section",c),{variables:U,status:w}=v;r($t.setVariableChange({attributes:R,variables:U,status:w})),r(xe.removeRunConsumersRunning([p]));}catch(v){console.error("Error in runConsumers client side: recalculateVariables",v);}}}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 gp(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 yp(){return async(e,t,r)=>{let o=await r.searchRole("");if("error"in o)throw new Error(o.error);return o.data}}function hp(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 Rp(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 bp({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 Sp(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 Ge(e){let{removeBlocks:t}=Ie.actions;return async r=>{await r(t(e));}}function fr(e){let{addBlocks:t}=Ie.actions;return async r=>{await r(t(e));}}function Ep(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 Ap(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 Tp(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 vp(){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}=Ie.actions;return async t=>{await t(e());}}var Vs=()=>configureStore({reducer:{[Ie.name]:Ie.reducer,[qr.name]:qr.reducer,[Gr.name]:Gr.reducer},middleware(e){return e({thunk:{extraArgument:sr("/api/cms/")}})}}),Et=createWrapper(Vs);function xp(e){let t=process.cwd(),r=kp.resolve(t.endsWith("/example")?t.replace("/example",""):t,"package-lock.json"),o;try{let n=JSON.parse(il.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 Ip(e){let t=()=>Promise.resolve({}),{pathSegmentsKey:r="bespoke",preResolve:o=t,postResolve:n=t,authOptions:a={providers:[]}}=e||{};return Et.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:false}};let u=new Set([G.ADMIN,G.EDITOR,G.WRITER]);if(!(l?.user?.bespoke_roles||[]).some(b=>u.has(b)))return {redirect:{destination:"/",permanent:false}};let d=c.query[r],[f]=Array.isArray(d)?d:[d];await i(it);let m=await xp("@datawheel/bespoke"),R=await o(s,c);if("redirect"in R)return {props:R};f==="reports"&&($s(c.query[r])?await Promise.all([i(oe("formatter",{})),i(oe("datasource",{include:true})),i(oe("report",{id:$s(c.query[r]),include:true})),xe.setStatus({isCMS:true})]):await Promise.all([i(oe("report",{include:"dimensions"})),xe.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 g=await n(s,c);return {props:{...R,...g,bespokeVersion:m,session:l}}}})}function $s(e){if(e==null||e==="")return;let[,t]=Array.isArray(e)?e:[e];return Number.parseInt(t)||void 0}var {locales:Bp}=j(),Lp={pathSegment:"path",formatterFunctions:Bp.reduce((e,t)=>({...e,[t]:{}}),{}),datasourceFunctions:[],profilePrefix:"path",previewPrefix:null,siteProps:{}};createContext(Lp);j();var Qr=e=>e.records.entities.block;function Kt(e){return t=>Object.values(t.records.entities[e])}var Zr=Kt("section"),Xr=Kt("formatter"),Jp=de();function eo(e){return Object.values(e.records.entities.datasource||[]).sort((t,r)=>t.content.order>r.content.order?1:-1).map(t=>{let r={...Jp};return {...t,content:{...t.content,pattern:be(t.content.pattern,{},{variables:r})}}})}var Yp=async(e,t,r,o,n)=>{if(e.length===0)throw new Error("No slugs provided");let a=await t(r({mode:"slugs",locale:n,slugs:e,output:"full"})),s=a.results[0].report_id;if(a.results.length>1){if(a.results.every(m=>m.report_id===s)===false)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: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},to=Yp;function Qp(e){let{fallback:t=true,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 rt().then(Nt),l=await c({query:"",limit:r,format:"plain",locale:i||me,noImage:false,visible:true,report:[],dimension:[],variant:[],includes:true});l.ok===true&&(s=l.data.results.map(u=>({locale:a.find(p=>p===u.locale),params:{bespoke:[u.variant.slug,u.slug]}})));}return {fallback:t,paths:s}}}function Zp(e){let{pathSegmentsKey:t="bespoke"}=e||{};try{return Et.getStaticProps(r=>{let{dispatch:o}=r;return async n=>{await o(it);let a=new Date().toISOString(),{locale:s=me,params:i={}}=n,c=Array.from(en(i[t])),l;try{l=await to(c,o,qe,mr,s);}catch(_){return console.error("[Bespoke slug validation Failed]: Return 404:",_.message,`[${s}] -> /${c.map(I=>`${I.variantSlug}/${I.memberSlug}`).join("/")}`),{notFound:!0}}o(St.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 u=r.getState(),p=Xr(u),d=eo(u),f=cr(p,s),m=Zr(u),R=Qr(u),g={...R},b={},P=Object.values(R).reduce((_,I)=>("access"in I.settings&&!["public","guest"].some(N=>!I.settings.access||I.settings.access.includes(N))&&_.push(I.id),_),[]),v=P.filter(_=>g[_].settings[Le.FALLBACK]),U=Array.from(new Set([...v,...Se(v,Object.values(g))])),w=P.filter(_=>[M.SELECTOR,M.MULTIHIERARCHY_SELECTOR].includes(g[_].type)),z=Array.from(new Set([...w,...Se(w,Object.values(g))]));P=Array.from(new Set([...P,...U,...z,...Se(P,Object.values(g))])),P.forEach(_=>{v.includes(_)?(b[_]={...g[_],type:M.FALLBACK,original_type:g[_].type},delete g[_]):w.includes(_)&&(b[_]={...g[_],settings:{...g[_].settings,[Le.DISABLED]:!0}},delete g[_]),z.includes(_)||delete g[_];}),await o(Ge(P.filter(_=>!z.includes(_)))),await o(fr(b));let L={...Vt(l.results),locale:s,...de()},F=async _=>await o(qe(_));return await Ft({...g,...b},m,void 0,f,{locale:s,query:i,variables:L},void 0,F,"report",d).then(async _=>{let I=Object.keys({...g,...b}).reduce((N,B)=>(_.variables[B]&&_.status[B]||N.push(B),N),[]);await o(Ge(I)),await o($t.setVariableChange({..._,attributes:L})),await o(gr());}),{props:{buildTime:a}}}})}catch(r){console.error("ERROR SSR",r);}}function en(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 Xp(e){let{pathSegmentsKey:t="bespoke"}=e||{};try{return Et.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(it);let l=new Date().toISOString(),{locale:u=me,params:p={},req:d}=n,f=Array.from(en(p[t])),m;try{m=await to(f,o,qe,mr,u);}catch(k){return console.error("[Bespoke slug validation Failed]: Return 404:",k.message,`/${u}/${d.url}`),{notFound:!0}}o(St.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=Xr(R),b=eo(R),P=cr(g,u),v=Zr(R).filter(k=>k.id===c),U=Qr(R),w={...U},z={},L=Object.values(U).reduce((k,H)=>("access"in H.settings&&!["public","guest"].some(A=>!H.settings.access||H.settings.access.includes(A))&&k.push(H.id),k),[]),F=L.filter(k=>w[k].settings[Le.FALLBACK]),_=Array.from(new Set([...F,...Se(F,Object.values(w))])),I=L.filter(k=>[M.SELECTOR,M.MULTIHIERARCHY_SELECTOR].includes(w[k].type)),N=Array.from(new Set([...I,...Se(I,Object.values(w))]));L=Array.from(new Set([...L,..._,...N,...Se(L,Object.values(w))])),L.forEach(k=>{F.includes(k)?(z[k]={...w[k],type:M.FALLBACK,original_type:w[k].type},delete w[k]):I.includes(k)&&(z[k]={...w[k],settings:{...w[k].settings,[Le.DISABLED]:!0}},delete w[k]),N.includes(k)||delete w[k];}),await o(Ge(L.filter(k=>!N.includes(k)))),await o(fr(z));let B={...Vt(m.results),locale:u,...de()},q=async k=>await o(qe(k));await Ft({...w,...z},v,void 0,P,{locale:u,query:{...p,...i},variables:B},void 0,q,"section",b).then(async k=>{let H=Object.keys({...w,...z}).reduce((A,S)=>(k.variables[S]&&k.status[S]||A.push(S),A),[]);await Promise.all([o(Ge(H)),o($t.setVariableChange({...k,attributes:B})),o(gr())]);});let O=Object.keys({...w,...z}).filter(k=>a&&s?k!==s:w[k]&&w[k].section_id!==c);return await o(Ge(O)),{props:{buildTime:l}}}})}catch(r){return console.error("ERROR SSR",r),async()=>({notFound:true})}}
|
|
34
|
+
export{Xp as BespokeEmbedServerSideProps,Wl as BespokeEndpointNextJsHandlerFactory,ye as BespokeGetSession,ri as BespokeHandleAuth,Ip as BespokeManagerServerSideProps,Qp as BespokeRendererStaticPaths,Zp as BespokeRendererStaticProps,pi as BespokeSearchUsersByMetadata,ai as BespokeUpdateCurrentUserAppMetadata,ii as BespokeUpdateCurrentUserMetadata,li as BespokeWithApiRoleAuthRequired,Yl as ReportCrosswalkHandler,Nt as dbApiFactory,wo as endpointKey,rt as getDB,it as useDatabaseApi};
|