@datawheel/bespoke 1.0.0-rc.2 → 1.0.0-rc.21
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/README.md +10 -1
- package/css/mixins.scss +178 -0
- package/dist/Search-C-9ALKJo.d.mts +129 -0
- package/dist/auth-D3PWImeZ.d.mts +139 -0
- package/dist/auth.d.mts +42 -0
- package/dist/auth.js +1 -1
- package/dist/cms.css +1 -1
- package/dist/cms.d.mts +13 -0
- package/dist/cms.js +33 -33
- package/dist/explore.css +1 -0
- package/dist/explore.d.mts +40 -0
- package/dist/explore.js +15 -1
- package/dist/index.d.mts +24 -0
- package/dist/redux-store.d.mts +176 -0
- package/dist/redux-store.js +4 -4
- package/dist/report.css +1 -1
- package/dist/report.d.mts +132 -0
- package/dist/report.js +14 -14
- package/dist/server.d.mts +109 -0
- package/dist/server.js +11 -11
- package/dist/store-D5N14riO.d.mts +888 -0
- package/dist/types-WI9fSG9b.d.mts +847 -0
- package/package.json +33 -26
package/dist/server.js
CHANGED
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
import ss,{getServerSession}from'next-auth';import ns from'next-auth/providers/auth0';import {initAuth0}from'@auth0/nextjs-auth0';import $e from'auth0';import*as mi from'pg';import {Sequelize,Error as Error$1,DataTypes,literal,Op,where,cast,json,fn as fn$1,col,Model}from'sequelize';import zt from'yn';import*as Cs from'd3-array';import*as Bs from'd3-collection';import*as Ls from'd3-format';import*as Ms 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 Ri from'slugify';import kr from'axios';import bi from'jsonwebtoken';import Si from'next/config';import Ni from'flexsearch';import sc from'base58';import ic from'flickr-sdk';import {createApi}from'unsplash-js';import fc from'fs';import {createContext,createElement}from'react';import {renderToString}from'react-dom/server';import*as ao from'@tabler/icons-react';import zc from'cors';import Gc from'image-type';import Dc from'formidable';import $c from'dom-parser';import gu from'path';import Aa from'axios-retry';import {format}from'pretty-format';import ml from'toposort';import {csvParse}from'd3-dsv';import {getSession}from'next-auth/react';import {schema,normalize}from'normalizr';import {createSlice,configureStore,createSelector}from'@reduxjs/toolkit';import {HYDRATE,createWrapper}from'next-redux-wrapper';import {notifications}from'@mantine/notifications';import {produce}from'immer';import'react-redux';import'react/jsx-runtime';import'@mantine/core';var rs=Object.defineProperty;var os=(e,t)=>{for(var r in t)rs(e,r,{get:t[r],enumerable:true});};function qe(e){let t=e;if(t&&!t.source)if(!t.providers||t.providers.length===0){let r=ns({clientId:process.env.AUTH0_CLIENT_ID,clientSecret:process.env.AUTH0_CLIENT_SECRET,issuer:process.env.AUTH0_ISSUER_BASE_URL});t.providers=[r],t.callbacks={async jwt({token:o,profile:n,trigger:s,session:a}){return n&&(o.bespoke_app_metadata=n.bespoke_app_metadata||{},o.bespoke_user_metadata=n.bespoke_user_metadata||{},o.bespoke_roles=n.bespoke_roles||[],o.name=n.name),s==="update"&&(a.user_metadata&&(o.bespoke_user_metadata={...o.bespoke_user_metadata,...a.user_metadata}),a.app_metadata&&(o.bespoke_app_metadata={...o.bespoke_app_metadata,...a.app_metadata}),a.roles&&a.roles.length>0&&(o.bespoke_roles=a.roles.map(i=>i.name))),o},async session({session:o,token:n}){return o&&n&&(o.user.id=n.sub,o.user.bespoke_app_metadata=n.bespoke_app_metadata,o.user.bespoke_user_metadata=n.bespoke_user_metadata,o.user.bespoke_roles=n.bespoke_roles),o}},t.source="auth0";}else t.source="custom";return t.secret||(t.secret=process.env.AUTH0_SECRET||process.env.NEXTAUTH_SECRET),t}async function he(e,t,r={providers:[]}){let o=qe(r),n=await getServerSession(e,t,o);return n&&(n.source=o.source||""),n}var is=(e={providers:[]})=>{let t=qe(e);return ss(t)},cs=is;var ko=initAuth0({secret:process.env.NEXTAUTH_SECRET,issuerBaseURL:process.env.AUTH0_ISSUER_BASE_URL,baseURL:process.env.REPORTS_BASE_URL||process.env.NEXTAUTH_URL,clientID:process.env.AUTH0_CLIENT_ID,clientSecret:process.env.AUTH0_CLIENT_SECRET});var T=class extends Error{constructor(t,r){super(r),this.code=t;}toJSON(){return Po(this)}static is(t){return Object.prototype.hasOwnProperty.call(t,"code")&&typeof t.code=="number"}};function us(e){return {ok:true,status:200,wrapper:true,data:e}}function Po(e){return {ok:false,status:T.is(e)?e.code:500,error:e.message}}function v(e){return t=>e(t).then(us,Po)}function ue(e,t,r){if(t==="createBulk"||t==="updateBulk"){let n=`${t}${be(r)}`;return e[n]}let o=`${t}${be(r)}`;return e[o]}function be(e){return e[0].toUpperCase()+e.slice(1)}var z={ADMIN:"Admin",EDITOR:"Editor",WRITER:"Writer"},xo={APP:"App",USER:"User"},Io=e=>{let t=Object.values(z);return e?e.map(r=>({...r,type:t.includes(r.name)?xo.APP:xo.USER})):[]};var ze={domain:new URL(process.env.AUTH0_ISSUER_BASE_URL||"https://localhost:3000").host,clientId:process.env.AUTH0_CLIENT_ID,clientSecret:process.env.AUTH0_CLIENT_SECRET};function vo(){return async()=>{try{let t=await new $e.ManagementClient(ze).roles.getAll({include_totals:!0,per_page:100});return {roles:Io(t.roles)}}catch(e){throw console.error("AuthZeroError",e),new T(e.response?.status||500,e.message)}}}function Co(){return async e=>{try{let t;if(e){let r={include_totals:!0,per_page:10,page:e.page||0},o=new $e.ManagementClient(ze);if(e.role_id&&e.role_id!==""){let n={...r,id:e.role_id};t=await o.roles.getUsers(n);}else {let n={...r,q:e.query};t=await o.users.getAll(n);}}return t}catch(t){throw console.error("AuthZeroError",t),new T(t.response?.status||500,t.message)}}}function Bo(){return async e=>{try{if(e){let t=new $e.ManagementClient(ze),r=await Promise.all([t.users.get({id:e}),t.users.getRoles({id:e})]);return {...r[0],roles:r[1]}}else throw new T(404,"User ID required")}catch(t){throw console.error("AuthZeroError",t),new T(t.response?.status||500,t.message)}}}function Lo(){return async e=>{try{if(e.user_id){if(e.app_metadata&&await qr(e.user_id,e.app_metadata),e.user_metadata&&await $r(e.user_id,e.user_metadata),e.roles){let t=new $e.ManagementClient(ze),o=(await t.users.getRoles({id:e.user_id})).map(i=>i.id),n=e.roles.map(i=>i.id),s=n.filter(i=>!o.includes(i)),a=o.filter(i=>!n.includes(i));s.length>0&&await t.users.assignRoles({id:e.user_id},{roles:s}),a.length>0&&await t.users.removeRoles({id:e.user_id},{roles:a});}return {status:"success",message:"User updated!"}}else throw new T(404,"user_id is required")}catch(t){throw console.error("AuthZeroError",t),new T(t.response?.status||500,t.message)}}}function Mo(){return async e=>{try{return "NOT USED SERVICE"}catch(t){throw console.error("AuthZeroError",t),new T(t.response?.status||500,t.message)}}}async function qr(e,t){return await new $e.ManagementClient(ze).users.updateAppMetadata({id:e},t)}async function $r(e,t){return await new $e.ManagementClient(ze).users.updateUserMetadata({id:e},t)}async function Oo(e,t){try{let r=new $e.ManagementClient(ze),o=await r.getUsers({search_engine:"v3",q:`user_metadata.${e}:"${t}"`});for(let n=0;n<o.length;n++){let s=o[n];s.bespoke_user_metadata=s.user_metadata||{},delete s.user_metadata,s.bespoke_roles=(await r.users.getRoles({id:s.user_id})).map(a=>a.name);}return o}catch(r){console.error(r);}}var ps=(e,t,r)=>new Promise((o,n)=>{(async()=>{try{let a=await ko.getSession(e,t);if(!a||!a.user)throw new Error("not_authenticated");{let c={...a.user.bespoke_app_metadata||{},...r};await qr(a.user.sub,c),o({error:"",description:`App metadata updated for user ${a.user.email}`});}}catch(a){n({error:a.message,description:"The user does not have an active session or is not authenticated"});}})();}),ds=ps;var fs=(e,t,r,o)=>new Promise((n,s)=>{(async()=>{try{let i=await he(e,t,r);if(!i||!i.user)throw new Error("not_authenticated");{let{user:c,source:l}=i,u={...c.bespoke_user_metadata||{},...o};l==="custom"&&r.actions?.updateUser?await r.actions.updateUser()({user_id:c.id,user_metadata:u}):await $r(c.id,u),n({error:"",description:`App metadata updated for user ${c.email}`});}}catch(i){s({error:i.message,description:"The user does not have an active session or is not authenticated"});}})();}),ys=fs;var Lt=(e,t)=>t&&typeof t=="string"?t.split(".").reduce((r,o)=>r[o],e):e;function nr(e,t){return e.some(r=>t.includes(r))}function ar(e){return e.filter((t,r,o)=>o.indexOf(t)===r)}var gs=(e,t,r)=>async function(o,n){let s=await he(o,n,r);if(!s||!s.user){n.status(401).json({error:"not_authenticated",description:"The user does not have an active session or is not authenticated"});return}let a=s.user.bespoke_roles||[];if(t.length>0&&!nr(a,t)){n.status(402).json({error:"unauthorize",description:"The user requires some specific roles"});return}await e(o,n);},Rs=gs;var hs=(e,t)=>new Promise((r,o)=>{(async()=>{try{if(e&&t&&e!==""&&t!==""){let s=await Oo(e,t);r(s);}else o({error:"empty_params",description:"key or value params are empty"});}catch(s){o({error:s.message,description:"Error "});}})();}),bs=hs;var ke=(e=process.env)=>zt(e.REPORTS_LOGGING);var Ke=class extends Model{getContent(t){let r=this.contentByLocale.find(o=>o.locale===t);if(!r)throw new Error(`Missing SearchContent for locale '${t}' on Search ID '${this.id}'`);return r}toJSON(){let t=this.get({plain:true}),{inputs:r=[],consumers:o=[],contentByLocale:n=[]}=this;return {...t,inputs:r.map(s=>s.toJSON()),consumers:o.map(s=>s.toJSON()),contentByLocale:Object.fromEntries(n.map(s=>[s.locale,s.toJSON()]))}}};function As(e){return Ke.init({id:{type:DataTypes.INTEGER,primaryKey:true,autoIncrement:true},settings:{type:DataTypes.JSON,defaultValue:{}},type:{type:DataTypes.STRING,defaultValue:"paragraph"},shared:{type:DataTypes.BOOLEAN,defaultValue:false},blockrow:DataTypes.STRING,blockcol:DataTypes.STRING,section_id:{type:DataTypes.INTEGER,onDelete:"cascade",references:{model:"bespoke_reports_section",key:"id"}}},{sequelize:e,modelName:"block",tableName:"bespoke_reports_block",freezeTableName:true,timestamps:false}),t=>(Ke.hasMany(t.block_content,{foreignKey:"id",sourceKey:"id",as:"contentByLocale"}),Ke.belongsToMany(t.block,{through:"block_input",foreignKey:"block_id",otherKey:"input_id",as:"inputs"}),Ke.belongsToMany(t.block,{through:"block_input",foreignKey:"input_id",otherKey:"block_id",as:"consumers"}),Ke)}var No=As;var sr=class extends Model{};function _s(e){return sr.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}),()=>sr}var Do=_s;var ir=class extends Model{};function ks(e){return ir.init({id:{type:DataTypes.INTEGER,primaryKey:true,autoIncrement:true},block_id:{type:DataTypes.INTEGER,onDelete:"cascade",references:{model:"bespoke_reports_block",key:"id"}},input_id:{type:DataTypes.INTEGER,onDelete:"cascade",references:{model:"bespoke_reports_block",key:"id"}}},{sequelize:e,modelName:"block_input",tableName:"bespoke_reports_block_input",freezeTableName:true,timestamps:false}),()=>ir}var Uo=ks;function Kr(e){let t=1+76.18009173/e-86.50532033/(e+1)+24.01409822/(e+2)-1.231739516/(e+3)+.00120858003/(e+4)-536382e-11/(e+5);return (e-.5)*Math.log(e+4.5)-(e+4.5)+Math.log(t*2.50662827465)}function Fo(e,t,r){let o=0,n=1,s=1,a=1,i=0,c=0,l;for(;Math.abs((s-c)/s)>1e-5;)c=s,l=-(t+i)*(t+r+i)*e/(t+2*i)/(t+2*i+1),o=s+l*o,n=a+l*n,i+=1,l=i*(r-i)*e/(t+2*i-1)/(t+2*i),s=o+l*s,a=n+l*a,o/=a,n/=a,s/=a,a=1;return s/t}function Ps(e,t,r){let o,n;if(e<0)n=0;else if(e>=t)n=1;else {e=Math.floor(e);let s=r,a=e+1,i=t-e,c=a+i,l=Math.exp(Kr(c)-Kr(i)-Kr(a)+a*Math.log(s)+i*Math.log(1-s));s<(a+1)/(c+2)?o=l*Fo(s,a,i):o=1-l*Fo(1-s,i,a),n=1-o;}return Math.round(n*1e5)/1e5}function xs(e){return {.99999:15.137,.99:6.635,.95:3.841,.9:2.706}[e]}function Mt(e,t,r,o){let n=t/(1-t),s=0,a=1,i=0,c=0;for(;s<=e;)c+=a,s>=r&s<=o&&(i+=a),c>1e30&&(i/=1e30,c/=1e30,a/=1e30),s+=1,a=a*n*(e+1-s)/s;return i/c}function Is(e,t,r){let o=e/t,s=(100-r*100)/2,a,i;if(e===0)a=0;else {let c=o/2,l=0,p=o,u=s/100;for(;p-l>1e-5;)Mt(t,c,e,e)*.5+Mt(t,c,e+1,t)>u?(p=c,c=(l+c)/2):(l=c,c=(p+c)/2);a=c;}if(e===t)i=0;else {let c=(1+o)/2,l=o,p=1,u=s/100;for(;p-l>1e-5;)Mt(t,c,e,e)*.5+Mt(t,c,0,e-1)<u?(p=c,c=(l+c)/2):(l=c,c=(p+c)/2);i=c;}return {lci:a,uci:i}}function vs(e,t){let r=e,o=t,n=r,s=o,a=95,i=.5,c=.5,p=(100-a)/2/100,u=n;for(;c>1e-5;)c/=2,cr((1+u)*i/(1-i),u+1,1e10)+.5*cr((1+u)*i/(1-i),u,u)>p?i-=c:i+=c;let m=(1+u)*i/(1-i)/s;for(i=.5,c=.5,p=(100-a)/2/100;c>1e-5;)c/=2,cr((1+u)*i/(1-i),0,u-1)+.5*cr((1+u)*i/(1-i),u,u)<p?i-=c:i+=c;let d=(1+u)*i/(1-i)/s;return {lci:m,uci:d}}function cr(e,t,r){let o=1,n=0,s=0,a=0;for(;a<e||o>n*1e-10;)n+=o,a>=t&a<=r&&(s+=o),n>1e30&&(s/=1e30,n/=1e30,o/=1e30),a+=1,o=o*e/a;return s/n}var Vo={binomialCdf:Ps,binP:Mt,computeMidP:Is,criticalValue:xs,smr:vs};var He={d3:{...Cs,...Bs,...Ls,...Ms},d3plus:{assign:assign,closest:closest,date:date,formatAbbreviate:formatAbbreviate,merge:merge,strip:strip,titleCase:titleCase},stats:Vo},qo={};var Pe={UNILATERAL:"uni",MULTILATERAL:"multi"},We={SINGLE:"single",MULTI:"multi"};var Hr={ALLOWED:"allowed",ALLOWED_LOGIC:"allowedLogic",IGNORE_CASCADE:"ignoreCascade"},$s={ACCESS:"access",ACCESS_LOGIC:"accessLogic"},zs={DISABLED:"disabled"},Gs={FALLBACK:"fallback"};var Ks={IMAGE:"image",PARAGRAPH:"paragraph",SELECTOR:"selector",STAT:"stat",SUBTITLE:"subtitle",TITLE:"title",NAV:"nav",RESET_BUTTON:"reset_button",COMPARISON_BUTTON:"comparison_button",TABLE:"table",BUTTON:"button",MULTIHIERARCHY_SELECTOR:"multihierarchy_selector",FALLBACK:"fallback"},jr={GENERATOR:"generator",RELATED:"related",VIZ:"visualization",SECTION_FLAG:"section_flag"},Wr="logic",O={...Ks,...jr},xe={NAME:"name",DESCRIPTION:"description",...Hr,...$s,...Gs,...zs};var lr={FORMATTER:"formatter"},mt={STRING:"string"};var ft=class extends Model{};function Ws(e){return ft.init({id:{type:DataTypes.INTEGER,primaryKey:true,autoIncrement:true},name:{type:DataTypes.STRING,defaultValue:""},content:{type:DataTypes.JSONB,defaultValue:{description:"",testValue:"Foo",type:lr.FORMATTER,inputType:mt.STRING,logic:"return n;"}}},{sequelize:e,modelName:"formatter",tableName:"bespoke_reports_formatter",freezeTableName:true,timestamps:false,hooks:{async afterSync(t){let r=await ft.findAll();if(t.force||r.length===0){let o=Object.entries(qo).map(([n,s])=>({name:n,content:s}));await ft.bulkCreate(o);}}}}),()=>ft}var Go=Ws;var Ot=class extends Model{getContent(t){let{contentByLocale:r}=this;if(!r)throw new Error("This ImageModel entity didn't include its ImageContentModel association.");let o=r.find(n=>n.locale===t);if(!o)throw new Error(`Missing SearchContent for locale '${t}' on Search ID '${this.id}'`);return o}};function Ys(e){return Ot.init({id:{autoIncrement:true,primaryKey:true,type:DataTypes.INTEGER},url:{type:DataTypes.TEXT,unique:true},author:DataTypes.TEXT,license:DataTypes.TEXT,splash:DataTypes.BLOB,thumb:DataTypes.BLOB},{sequelize:e,modelName:"image",tableName:"bespoke_reports_image",freezeTableName:true}),t=>(Ot.hasMany(t.image_content,{foreignKey:"id",sourceKey:"id",as:"contentByLocale"}),Ot)}var Ko=Ys;var ur=class extends Model{};function Zs(e){return ur.init({id:{type:DataTypes.INTEGER,primaryKey:true,onDelete:"cascade",references:{model:"bespoke_reports_image",key:"id"}},locale:{type:DataTypes.STRING,primaryKey:true},meta:DataTypes.TEXT},{sequelize:e,modelName:"image_content",tableName:"bespoke_reports_image_content",freezeTableName:true,timestamps:false}),()=>ur}var Ho=Zs;var gt=class extends Model{toJSON(){let t=this.get({plain:true}),{dimensions:r=[],sections:o=[]}=this;return {...t,settings:t.settings,date:new Date(this.date||Date.now()).toISOString(),dimensions:r.map(n=>n.toJSON()),sections:o.map(n=>n.toJSON())}}};function ei(e){return gt.init({id:{type:DataTypes.INTEGER,primaryKey:true,autoIncrement:true},name:{type:DataTypes.STRING,allowNull:false,defaultValue:""},visible:{type:DataTypes.BOOLEAN,defaultValue:true},date:{type:DataTypes.DATE,defaultValue:DataTypes.NOW},type:{type:DataTypes.STRING,defaultValue:"report",validate:{isIn:[["report","story"]]}},settings:{type:DataTypes.JSON,defaultValue:{}}},{sequelize:e,modelName:"report",tableName:"bespoke_reports_report",freezeTableName:true,timestamps:false}),t=>(gt.hasMany(t.dimension,{foreignKey:"report_id",sourceKey:"id",as:"dimensions"}),gt.hasMany(t.section,{foreignKey:"report_id",sourceKey:"id",as:"sections"}),gt)}var jo=ei;var ht=class extends Model{toJSON(){let t=this.get({plain:true}),{variants:r=[]}=this;return {...t,variants:r.map(o=>o.toJSON())}}};function ri(e){return ht.init({id:{type:DataTypes.INTEGER,primaryKey:true,autoIncrement:true},report_id:{type:DataTypes.INTEGER,onDelete:"cascade",references:{model:"bespoke_reports_report",key:"id"}},name:{type:DataTypes.STRING,defaultValue:""},settings:{type:DataTypes.JSONB,defaultValue:{}},ordering:{type:DataTypes.INTEGER,defaultValue:0},visible:{type:DataTypes.BOOLEAN,defaultValue:true}},{sequelize:e,modelName:"dimension",tableName:"bespoke_reports_report_dimension",freezeTableName:true,timestamps:false}),t=>(ht.hasMany(t.variant,{foreignKey:"dimension_id",sourceKey:"id",as:"variants",constraints:false}),ht.belongsTo(t.report,{foreignKey:"report_id",targetKey:"id",as:"report",constraints:false}),ht)}var Wo=ri;var bt=class extends Model{get report(){return this.dimension?.report}toJSON(){return this.get({plain:true})}};function ni(e){return bt.init({id:{type:DataTypes.INTEGER,primaryKey:true,autoIncrement:true},dimension_id:{type:DataTypes.INTEGER,onDelete:"cascade",references:{model:"bespoke_reports_report_dimension",key:"id"}},slug:{type:DataTypes.STRING,defaultValue:""},name:{type:DataTypes.STRING,defaultValue:""},settings:{type:DataTypes.JSONB,defaultValue:{}},config:{type:DataTypes.JSONB,defaultValue:{}},visible:{type:DataTypes.BOOLEAN,defaultValue:true}},{sequelize:e,modelName:"variant",tableName:"bespoke_reports_report_dimension_variant",freezeTableName:true,timestamps:false}),t=>(bt.hasMany(t.search,{foreignKey:"variant_id",sourceKey:"id",as:"members",constraints:false}),bt.belongsTo(t.dimension,{foreignKey:"dimension_id",targetKey:"id",as:"dimension",constraints:false}),bt)}var Jo=ni;var Te=class extends Model{getContent(t){let{contentByLocale:r}=this;if(!r)throw new Error("This SearchModel entity didn't include its SearchContentModel association.");let o=r.find(n=>n.locale===t);if(!o)throw new Error(`Missing SearchContent for locale '${t}' on Search ID '${this.id}'`);return o}};function si(e){return Te.init({id:{primaryKey:true,type:DataTypes.TEXT},zvalue:DataTypes.DOUBLE,slug:DataTypes.TEXT,image_id:{type:DataTypes.INTEGER,references:{model:"bespoke_reports_image",key:"id"}},content_id:{autoIncrement:true,type:DataTypes.INTEGER,unique:true},variant_id:{primaryKey:true,type:DataTypes.INTEGER,onDelete:"cascade",references:{model:"bespoke_reports_report_dimension_variant",key:"id"}},dimension_id:{primaryKey:true,type:DataTypes.INTEGER,onDelete:"cascade",references:{model:"bespoke_reports_report_dimension",key:"id"}},report_id:{primaryKey:true,type:DataTypes.INTEGER,onDelete:"cascade",references:{model:"bespoke_reports_report",key:"id"}},visible:{type:DataTypes.BOOLEAN,defaultValue:true}},{sequelize:e,modelName:"search",tableName:"bespoke_reports_search",freezeTableName:true,timestamps:false}),t=>(Te.belongsTo(t.variant,{foreignKey:"variant_id",targetKey:"id",as:"variant",constraints:false}),Te.belongsTo(t.dimension,{foreignKey:"dimension_id",targetKey:"id",as:"dimension",constraints:false}),Te.belongsTo(t.report,{foreignKey:"report_id",targetKey:"id",as:"report",constraints:false}),Te.belongsTo(t.image,{foreignKey:"image_id",targetKey:"id",as:"image",constraints:false}),Te.hasMany(t.search_content,{foreignKey:"id",sourceKey:"content_id",as:"contentByLocale"}),Te)}var Yo=si;var pr=class extends Model{};function ci(e){return pr.init({id:{type:DataTypes.INTEGER,primaryKey:true,onDelete:"cascade",references:{model:"bespoke_reports_search",key:"content_id"}},locale:{type:DataTypes.STRING,primaryKey:true},name:DataTypes.TEXT,annotations:{type:DataTypes.JSONB,defaultValue:{}},attributes:{type:DataTypes.JSONB,defaultValue:{}},keywords:DataTypes.ARRAY(DataTypes.TEXT)},{sequelize:e,modelName:"search_content",tableName:"bespoke_reports_search_content",freezeTableName:true,timestamps:false}),()=>pr}var Qo=ci;var Dt=class extends Model{toJSON(){let t=this.get({plain:true}),{blocks:r=[]}=this;return {...t,blocks:r.map(o=>o.toJSON())}}};function ui(e){return Dt.init({id:{type:DataTypes.INTEGER,primaryKey:true,autoIncrement:true},settings:{type:DataTypes.JSON,defaultValue:{}},heading:{type:DataTypes.INTEGER,defaultValue:1},ordering:DataTypes.STRING,report_id:{type:DataTypes.INTEGER,onDelete:"cascade",references:{model:"bespoke_reports_report",key:"id"}}},{sequelize:e,modelName:"section",tableName:"bespoke_reports_section",freezeTableName:true,timestamps:false}),t=>(Dt.hasMany(t.block,{foreignKey:"section_id",sourceKey:"id",as:"blocks"}),Dt)}var Zo=ui;var mr=class extends Model{};function di(e){return mr.init({id:{type:DataTypes.INTEGER,primaryKey:true,autoIncrement:true},name:{type:DataTypes.STRING,defaultValue:""},description:{type:DataTypes.STRING,defaultValue:""},content:{type:DataTypes.JSONB,defaultValue:{pattern:"",logic:`return {
|
|
1
|
+
import Ss,{getServerSession}from'next-auth';import ys from'next-auth/providers/auth0';import ze from'auth0';import*as vi from'pg';import {Sequelize,Error as Error$1,DataTypes,literal,Op,where,cast,json,fn as fn$1,col,Model}from'sequelize';import jt from'yn';import*as Ws from'd3-array';import*as Ys from'd3-collection';import*as Js from'd3-format';import {formatLocale}from'd3-format';import*as Qs from'd3-time-format';import {merge,date,closest,assign,isObject}from'@d3plus/dom';import {titleCase,strip}from'@d3plus/text';import Li from'slugify';import vr from'axios';import Oi from'jsonwebtoken';import Ni from'next/config';import Zi from'flexsearch';import Ec from'base58';import Ac from'flickr-sdk';import {createApi}from'unsplash-js';import vc from'fs';import {createContext,createElement}from'react';import {renderToString}from'react-dom/server';import*as po from'@tabler/icons-react';import dl from'cors';import ml from'image-type';import Xc from'formidable';import al from'dom-parser';import Fu from'path';import Ma from'axios-retry';import {format}from'pretty-format';import Nl from'toposort';import {csvParse}from'd3-dsv';import {getSession}from'next-auth/react';import {schema,normalize}from'normalizr';import {createSlice,configureStore,createSelector}from'@reduxjs/toolkit';import {HYDRATE,createWrapper}from'next-redux-wrapper';import {notifications}from'@mantine/notifications';import {produce}from'immer';import'react-redux';import'react/jsx-runtime';import'@mantine/core';var fs=Object.defineProperty;var gs=(e,t)=>{for(var r in t)fs(e,r,{get:t[r],enumerable:true});};var Rs={domain:new URL(process.env.AUTH0_ISSUER_BASE_URL||"https://localhost:3000").host,clientId:process.env.AUTH0_CLIENT_ID||"",clientSecret:process.env.AUTH0_CLIENT_SECRET||""};function qe(e){let t=e;if(t&&!t.source)if(!t.providers||t.providers.length===0){let r=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:s,session:a}){if(n&&(o.bespoke_app_metadata=n.bespoke_app_metadata||{},o.bespoke_user_metadata=n.bespoke_user_metadata||{},o.bespoke_roles=n.bespoke_roles||[],o.name=n.name),s==="update")try{let i=new ze.ManagementClient(Rs),c=await i.users.get({id:o.sub});o.bespoke_user_metadata=c.user_metadata||{},o.bespoke_app_metadata=c.app_metadata||{};let l=await i.users.getRoles({id:o.sub});o.bespoke_roles=l.map(p=>p.name),a?.user_metadata&&(o.bespoke_user_metadata={...o.bespoke_user_metadata,...a.user_metadata}),a?.app_metadata&&(o.bespoke_app_metadata={...o.bespoke_app_metadata,...a.app_metadata});}catch(i){console.error("Error refreshing user data from Auth0:",i),o.bespoke_user_metadata={...o.bespoke_user_metadata,...a?.user_metadata||{}},o.bespoke_app_metadata={...o.bespoke_app_metadata,...a?.app_metadata||{}};}return o},async session({session:o,token:n}){return o&&n&&(o.user.id=n.sub,o.user.bespoke_app_metadata=n.bespoke_app_metadata,o.user.bespoke_user_metadata=n.bespoke_user_metadata,o.user.bespoke_roles=n.bespoke_roles),o}},t.source="auth0";}else t.source="custom";return t.secret||(t.secret=process.env.AUTH0_SECRET||process.env.NEXTAUTH_SECRET),t}async function me(e,t,r={providers:[]}){let o=qe(r),n=await getServerSession(e,t,o);return n&&(n.source=o.source||""),n}var Es=(e={providers:[]})=>{let t=qe(e);return Ss(t)},As=Es;var E=class extends Error{constructor(t,r){super(r),this.code=t;}toJSON(){return Bo(this)}static is(t){return Object.prototype.hasOwnProperty.call(t,"code")&&typeof t.code=="number"}};function Ts(e){return {ok:true,status:200,wrapper:true,data:e}}function Bo(e){return {ok:false,status:E.is(e)?e.code:500,error:e.message}}function I(e){return t=>e(t).then(Ts,Bo)}function ue(e,t,r){if(t==="createBulk"||t==="updateBulk"){let n=`${t}${Se(r)}`;return e[n]}let o=`${t}${Se(r)}`;return e[o]}function Se(e){return e[0].toUpperCase()+e.slice(1)}var G={ADMIN:"Admin",EDITOR:"Editor",WRITER:"Writer"},Lo={APP:"App",USER:"User"},Mo=e=>{let t=Object.values(G);return e?e.map(r=>({...r,type:t.includes(r.name)?Lo.APP:Lo.USER})):[]};var Ge={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 Oo(){return async()=>{try{let t=await new ze.ManagementClient(Ge).roles.getAll({include_totals:!0,per_page:100});return {roles:Mo(t.roles)}}catch(e){throw console.error("AuthZeroError",e),new E(e.response?.status||500,e.message)}}}function No(){return async e=>{try{let t;if(e){let r={include_totals:!0,per_page:10,page:e.page||0},o=new ze.ManagementClient(Ge);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 Do(){return async e=>{try{if(e){let t=new ze.ManagementClient(Ge),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 Uo(){return async e=>{try{if(e.user_id){if(e.app_metadata&&await Gr(e.user_id,e.app_metadata),e.user_metadata&&await Kr(e.user_id,e.user_metadata),e.roles){let t=new ze.ManagementClient(Ge),o=(await t.users.getRoles({id:e.user_id})).map(i=>i.id),n=e.roles.map(i=>i.id),s=n.filter(i=>!o.includes(i)),a=o.filter(i=>!n.includes(i));s.length>0&&await t.users.assignRoles({id:e.user_id},{roles:s}),a.length>0&&await t.users.removeRoles({id:e.user_id},{roles:a});}return {status:"success",message:"User updated!"}}else throw new E(404,"user_id is required")}catch(t){throw console.error("AuthZeroError",t),new E(t.response?.status||500,t.message)}}}function Fo(){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 Gr(e,t){return await new ze.ManagementClient(Ge).users.updateAppMetadata({id:e},t)}async function Kr(e,t){return await new ze.ManagementClient(Ge).users.updateUserMetadata({id:e},t)}async function Vo(e,t){try{let r=new ze.ManagementClient(Ge),o=await r.getUsers({search_engine:"v3",q:`user_metadata.${e}:"${t}"`});for(let n=0;n<o.length;n++){let s=o[n];s.bespoke_user_metadata=s.user_metadata||{},delete s.user_metadata,s.bespoke_roles=(await r.users.getRoles({id:s.user_id})).map(a=>a.name);}return o}catch(r){console.error(r);}}var ws=(e,t,r,o)=>new Promise((n,s)=>{(async()=>{try{let i=await me(e,t,r);if(!i||!i.user)throw new Error("not_authenticated");{let{user:c,source:l}=i,u={...i.user.bespoke_app_metadata||{},...o};l==="custom"&&r.actions?.updateUser?await r.actions.updateUser()({user_id:c.id,app_metadata:u}):await Gr(c.id,u),n({error:"",description:`App metadata updated for user ${i.user.email}`});}}catch(i){s({error:i.message,description:"The user does not have an active session or is not authenticated"});}})();}),_s=ws;var ks=(e,t,r,o)=>new Promise((n,s)=>{(async()=>{try{let i=await me(e,t,r);if(!i||!i.user)throw new Error("not_authenticated");{let{user:c,source:l}=i,u={...c.bespoke_user_metadata||{},...o};l==="custom"&&r.actions?.updateUser?await r.actions.updateUser()({user_id:c.id,user_metadata:u}):await Kr(c.id,u),n({error:"",description:`App metadata updated for user ${c.email}`});}}catch(i){s({error:i.message,description:"The user does not have an active session or is not authenticated"});}})();}),xs=ks;var Dt=(e,t)=>t&&typeof t=="string"?t.split(".").reduce((r,o)=>r[o],e):e;function ar(e,t){return e.some(r=>t.includes(r))}function sr(e){return e.filter((t,r,o)=>o.indexOf(t)===r)}var Ps=(e,t,r)=>async function(o,n){let s=await me(o,n,r);if(!s||!s.user){n.status(401).json({error:"not_authenticated",description:"The user does not have an active session or is not authenticated"});return}let a=s.user.bespoke_roles||[];if(t.length>0&&!ar(a,t)){n.status(402).json({error:"unauthorize",description:"The user requires some specific roles"});return}await e(o,n);},vs=Ps;var Is=(e,t,r)=>new Promise((o,n)=>{(async()=>{try{if(t&&r&&t!==""&&r!==""){let a;e.actions?.searchUser?a=await e.actions.searchUser()({[t]:r}):a=await Vo(t,r),o(a);}else n({error:"empty_params",description:"key or value params are empty"});}catch(a){n({error:a.message,description:"Error "});}})();}),Cs=Is;var xe=(e=process.env)=>jt(e.REPORTS_LOGGING);var He=class extends Model{getContent(t){let r=this.contentByLocale.find(o=>o.locale===t);if(!r)throw new Error(`Missing SearchContent for locale '${t}' on Search ID '${this.id}'`);return r}toJSON(){let t=this.get({plain:true}),{inputs:r=[],consumers:o=[],contentByLocale:n=[]}=this;return {...t,inputs:r.map(s=>s.toJSON()),consumers:o.map(s=>s.toJSON()),contentByLocale:Object.fromEntries(n.map(s=>[s.locale,s.toJSON()]))}}};function Ms(e){return He.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=>(He.hasMany(t.block_content,{foreignKey:"id",sourceKey:"id",as:"contentByLocale"}),He.belongsToMany(t.block,{through:"block_input",foreignKey:"block_id",otherKey:"input_id",as:"inputs"}),He.belongsToMany(t.block,{through:"block_input",foreignKey:"input_id",otherKey:"block_id",as:"consumers"}),He)}var qo=Ms;var ir=class extends Model{};function Ns(e){return ir.init({id:{type:DataTypes.INTEGER,primaryKey:true,onDelete:"cascade",references:{model:"bespoke_reports_block",key:"id"}},locale:{type:DataTypes.STRING,primaryKey:true},content:{type:DataTypes.JSON,defaultValue:{}}},{sequelize:e,modelName:"block_content",tableName:"bespoke_reports_block_content",freezeTableName:true,timestamps:false}),()=>ir}var zo=Ns;var cr=class extends Model{};function Us(e){return cr.init({id:{type:DataTypes.INTEGER,primaryKey:true,autoIncrement:true},block_id:{type:DataTypes.INTEGER,onDelete:"cascade",references:{model:"bespoke_reports_block",key:"id"}},input_id:{type:DataTypes.INTEGER,onDelete:"cascade",references:{model:"bespoke_reports_block",key:"id"}}},{sequelize:e,modelName:"block_input",tableName:"bespoke_reports_block_input",freezeTableName:true,timestamps:false}),()=>cr}var Go=Us;var lr={"ar-SA":{separator:"",suffixes:["y","z","a","f","p","n","\xB5","m",""," \u0623\u0644\u0641"," \u0645\u0644\u064A\u0648\u0646"," \u0628\u0644\u064A\u0648\u0646"," \u062A\u0631\u064A\u0644\u064A\u0648\u0646"," \u0643\u0648\u0627\u062F\u0631\u064A\u0644\u064A\u0648\u0646"," \u0643\u0648\u064A\u0646\u062A\u064A\u0644\u064A\u0648\u0646"," \u0633\u0643\u0633\u062A\u0644\u064A\u0648\u0646","\u0633\u0628\u062A\u064A\u0644\u064A\u0648\u0646"],grouping:[3],delimiters:{thousands:",",decimal:"."},currency:["SAR ",""]},"en-GB":{separator:"",suffixes:["y","z","a","f","p","n","\xB5","m","","k","M","B","T","q","Q","Z","Y"],grouping:[3],delimiters:{thousands:",",decimal:"."},currency:["\xA3",""]},"en-US":{separator:"",suffixes:["y","z","a","f","p","n","\xB5","m","","k","M","B","T","q","Q","Z","Y"],grouping:[3],delimiters:{thousands:",",decimal:"."},currency:["$",""]},"en-SA":{separator:"",suffixes:["y","z","a","f","p","n","\xB5","m",""," thousand"," million"," billion"," trillion"," quadrillion"," quintillion"," sextillion","septillion"],grouping:[3],delimiters:{thousands:",",decimal:"."},currency:["$",""]},"es-CL":{separator:"",suffixes:["y","z","a","f","p","n","\xB5","m","","k","M","MM","B","T","Q","Z","Y"],grouping:[3],delimiters:{thousands:".",decimal:","},currency:["$",""]},"es-MX":{separator:"",suffixes:["y","z","a","f","p","n","\xB5","m","","k","M","MM","B","T","Q","Z","Y"],grouping:[3],delimiters:{thousands:",",decimal:"."},currency:["$",""]},"es-ES":{separator:"",suffixes:["y","z","a","f","p","n","\xB5","m","","k","mm","b","t","q","Q","Z","Y"],grouping:[3],delimiters:{thousands:".",decimal:","},currency:["\u20AC",""]},"et-EE":{separator:" ",suffixes:["y","z","a","f","p","n","\xB5","m","","tuhat","miljonit","miljardit","triljonit","q","Q","Z","Y"],grouping:[3],delimiters:{thousands:" ",decimal:","},currency:["","eurot"]},"fr-FR":{suffixes:["y","z","a","f","p","n","\xB5","m","","k","m","b","t","q","Q","Z","Y"],grouping:[3],delimiters:{thousands:" ",decimal:","},currency:["\u20AC",""]},"zh-CN":{separator:"",suffixes:["\u5E7A","\u4EC4","\u963F","\u98DE","\u76AE","\u7EB3","\u5FAE","\u6BEB","","\u5343","\u5146","\u5409","\u592A","\u62CD","\u827E","\u6CFD","\u5C27"],grouping:[3],delimiters:{thousands:",",decimal:"."},currency:["\xA5",""]}};function Fs(e){"@swc/helpers - typeof";return e&&typeof Symbol<"u"&&e.constructor===Symbol?"symbol":typeof e}var $s=function(e,t){return parseFloat(Math.round(e*Math.pow(10,t))/Math.pow(10,t)).toFixed(t)};function qs(e,t,r){var o=0,n=parseFloat(e.replace("\u2212","-"),10);n&&(n<0&&(n*=-1),o=1+Math.floor(1e-12+Math.log(n)/Math.LN10),o=Math.max(-24,Math.min(24,Math.floor((o-1)/3)*3)));var s=r[8+o/3];return {number:$s(s.scale(n),t),symbol:s.symbol}}function zs(e,t){var r=Math.pow(10,Math.abs(8-t)*3);return {scale:t>8?function(o){return o/r}:function(o){return o*r},symbol:e}}function Wr(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"en-US",r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:void 0;if(isFinite(e))e*=1;else return "N/A";var o=e<0,n=e.toString().split(".")[0].replace("-","").length,s=(typeof t>"u"?"undefined":Fs(t))==="object"?t:lr[t]||lr["en-US"],a=s.suffixes.map(zs),i=s.delimiters.decimal||".",c=s.separator||"",l=s.delimiters.thousands||",",p=formatLocale({currency:s.currency||["$",""],decimal:i,grouping:s.grouping||[3],thousands:l}),u;if(r)u=p.format(r)(e);else if(e===0)u="0";else if(n>=3){var m=qs(p.format(".3r")(e),2,a),f=parseFloat(m.number).toString().replace(".",i),d=m.symbol;u="".concat(f).concat(c).concat(d);}else n===3?u=p.format(",f")(e):e<1&&e>-1?u=p.format(".2g")(e):u=p.format(".3g")(e);return "".concat(o&&u.charAt(0)!=="\u2212"?"\u2212":"").concat(u).replace(/−/g,"-").replace(/(\.[0]*[1-9]*)[0]*$/g,"$1").replace(/\.[0]*$/g,"")}function Yr(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 Ko(e,t,r){let o=0,n=1,s=1,a=1,i=0,c=0,l;for(;Math.abs((s-c)/s)>1e-5;)c=s,l=-(t+i)*(t+r+i)*e/(t+2*i)/(t+2*i+1),o=s+l*o,n=a+l*n,i+=1,l=i*(r-i)*e/(t+2*i-1)/(t+2*i),s=o+l*s,a=n+l*a,o/=a,n/=a,s/=a,a=1;return s/t}function Gs(e,t,r){let o,n;if(e<0)n=0;else if(e>=t)n=1;else {e=Math.floor(e);let s=r,a=e+1,i=t-e,c=a+i,l=Math.exp(Yr(c)-Yr(i)-Yr(a)+a*Math.log(s)+i*Math.log(1-s));s<(a+1)/(c+2)?o=l*Ko(s,a,i):o=1-l*Ko(1-s,i,a),n=1-o;}return Math.round(n*1e5)/1e5}function Ks(e){return {.99999:15.137,.99:6.635,.95:3.841,.9:2.706}[e]}function Ut(e,t,r,o){let n=t/(1-t),s=0,a=1,i=0,c=0;for(;s<=e;)c+=a,s>=r&s<=o&&(i+=a),c>1e30&&(i/=1e30,c/=1e30,a/=1e30),s+=1,a=a*n*(e+1-s)/s;return i/c}function Hs(e,t,r){let o=e/t,s=(100-r*100)/2,a,i;if(e===0)a=0;else {let c=o/2,l=0,p=o,u=s/100;for(;p-l>1e-5;)Ut(t,c,e,e)*.5+Ut(t,c,e+1,t)>u?(p=c,c=(l+c)/2):(l=c,c=(p+c)/2);a=c;}if(e===t)i=0;else {let c=(1+o)/2,l=o,p=1,u=s/100;for(;p-l>1e-5;)Ut(t,c,e,e)*.5+Ut(t,c,0,e-1)<u?(p=c,c=(l+c)/2):(l=c,c=(p+c)/2);i=c;}return {lci:a,uci:i}}function js(e,t){let r=e,o=t,n=r,s=o,a=95,i=.5,c=.5,p=(100-a)/2/100,u=n;for(;c>1e-5;)c/=2,ur((1+u)*i/(1-i),u+1,1e10)+.5*ur((1+u)*i/(1-i),u,u)>p?i-=c:i+=c;let m=(1+u)*i/(1-i)/s;for(i=.5,c=.5,p=(100-a)/2/100;c>1e-5;)c/=2,ur((1+u)*i/(1-i),0,u-1)+.5*ur((1+u)*i/(1-i),u,u)<p?i-=c:i+=c;let d=(1+u)*i/(1-i)/s;return {lci:m,uci:d}}function ur(e,t,r){let o=1,n=0,s=0,a=0;for(;a<e||o>n*1e-10;)n+=o,a>=t&a<=r&&(s+=o),n>1e30&&(s/=1e30,n/=1e30,o/=1e30),a+=1,o=o*e/a;return s/n}var Ho={binomialCdf:Gs,binP:Ut,computeMidP:Hs,criticalValue:Ks,smr:js};var je={d3:{...Ws,...Ys,...Js,...Qs},d3plus:{assign:assign,closest:closest,date:date,formatAbbreviate:Wr,merge:merge,strip:strip,titleCase:titleCase},stats:Ho},jo={};var Pe={UNILATERAL:"uni",MULTILATERAL:"multi"},Ye={SINGLE:"single",MULTI:"multi"};var Jr={ALLOWED:"allowed",ALLOWED_LOGIC:"allowedLogic",IGNORE_CASCADE:"ignoreCascade"},ni={ACCESS:"access",ACCESS_LOGIC:"accessLogic"},ai={DISABLED:"disabled"},si={FALLBACK:"fallback"};var ii={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"},Qr={GENERATOR:"generator",RELATED:"related",VIZ:"visualization",SECTION_FLAG:"section_flag"},Zr="logic",O={...ii,...Qr},ve={NAME:"name",DESCRIPTION:"description",...Jr,...ni,...si,...ai};var pr={FORMATTER:"formatter"},Rt={STRING:"string"};var bt=class extends Model{};function ui(e){return bt.init({id:{type:DataTypes.INTEGER,primaryKey:true,autoIncrement:true},name:{type:DataTypes.STRING,defaultValue:""},content:{type:DataTypes.JSONB,defaultValue:{description:"",testValue:"Foo",type:pr.FORMATTER,inputType:Rt.STRING,logic:"return n;"}}},{sequelize:e,modelName:"formatter",tableName:"bespoke_reports_formatter",freezeTableName:true,timestamps:false,hooks:{async afterSync(t){let r=await bt.findAll();if(t.force||r.length===0){let o=Object.entries(jo).map(([n,s])=>({name:n,content:s}));await bt.bulkCreate(o);}}}}),()=>bt}var Jo=ui;var Ft=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 di(e){return Ft.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=>(Ft.hasMany(t.image_content,{foreignKey:"id",sourceKey:"id",as:"contentByLocale"}),Ft)}var Qo=di;var dr=class extends Model{};function fi(e){return dr.init({id:{type:DataTypes.INTEGER,primaryKey:true,onDelete:"cascade",references:{model:"bespoke_reports_image",key:"id"}},locale:{type:DataTypes.STRING,primaryKey:true},meta:DataTypes.TEXT},{sequelize:e,modelName:"image_content",tableName:"bespoke_reports_image_content",freezeTableName:true,timestamps:false}),()=>dr}var Zo=fi;var Et=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 yi(e){return Et.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=>(Et.hasMany(t.dimension,{foreignKey:"report_id",sourceKey:"id",as:"dimensions"}),Et.hasMany(t.section,{foreignKey:"report_id",sourceKey:"id",as:"sections"}),Et)}var Xo=yi;var Tt=class extends Model{toJSON(){let t=this.get({plain:true}),{variants:r=[]}=this;return {...t,variants:r.map(o=>o.toJSON())}}};function Ri(e){return Tt.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=>(Tt.hasMany(t.variant,{foreignKey:"dimension_id",sourceKey:"id",as:"variants",constraints:false}),Tt.belongsTo(t.report,{foreignKey:"report_id",targetKey:"id",as:"report",constraints:false}),Tt)}var en=Ri;var wt=class extends Model{get report(){return this.dimension?.report}toJSON(){return this.get({plain:true})}};function Si(e){return wt.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=>(wt.hasMany(t.search,{foreignKey:"variant_id",sourceKey:"id",as:"members",constraints:false}),wt.belongsTo(t.dimension,{foreignKey:"dimension_id",targetKey:"id",as:"dimension",constraints:false}),wt)}var tn=Si;var we=class extends Model{getContent(t){let{contentByLocale:r}=this;if(!r)throw new Error("This SearchModel entity didn't include its SearchContentModel association.");let o=r.find(n=>n.locale===t);if(!o)throw new Error(`Missing SearchContent for locale '${t}' on Search ID '${this.id}'`);return o}};function Ai(e){return we.init({id:{primaryKey:true,type:DataTypes.TEXT},zvalue:DataTypes.DOUBLE,slug:DataTypes.TEXT,image_id:{type:DataTypes.INTEGER,references:{model:"bespoke_reports_image",key:"id"}},content_id:{autoIncrement:true,type:DataTypes.INTEGER,unique:true},variant_id:{primaryKey:true,type:DataTypes.INTEGER,onDelete:"cascade",references:{model:"bespoke_reports_report_dimension_variant",key:"id"}},dimension_id:{primaryKey:true,type:DataTypes.INTEGER,onDelete:"cascade",references:{model:"bespoke_reports_report_dimension",key:"id"}},report_id:{primaryKey:true,type:DataTypes.INTEGER,onDelete:"cascade",references:{model:"bespoke_reports_report",key:"id"}},visible:{type:DataTypes.BOOLEAN,defaultValue:true}},{sequelize:e,modelName:"search",tableName:"bespoke_reports_search",freezeTableName:true,timestamps:false}),t=>(we.belongsTo(t.variant,{foreignKey:"variant_id",targetKey:"id",as:"variant",constraints:false}),we.belongsTo(t.dimension,{foreignKey:"dimension_id",targetKey:"id",as:"dimension",constraints:false}),we.belongsTo(t.report,{foreignKey:"report_id",targetKey:"id",as:"report",constraints:false}),we.belongsTo(t.image,{foreignKey:"image_id",targetKey:"id",as:"image",constraints:false}),we.hasMany(t.search_content,{foreignKey:"id",sourceKey:"content_id",as:"contentByLocale"}),we)}var rn=Ai;var mr=class extends Model{};function wi(e){return mr.init({id:{type:DataTypes.INTEGER,primaryKey:true,onDelete:"cascade",references:{model:"bespoke_reports_search",key:"content_id"}},locale:{type:DataTypes.STRING,primaryKey:true},name:DataTypes.TEXT,annotations:{type:DataTypes.JSONB,defaultValue:{}},attributes:{type:DataTypes.JSONB,defaultValue:{}},keywords:DataTypes.ARRAY(DataTypes.TEXT)},{sequelize:e,modelName:"search_content",tableName:"bespoke_reports_search_content",freezeTableName:true,timestamps:false}),()=>mr}var on=wi;var $t=class extends Model{toJSON(){let t=this.get({plain:true}),{blocks:r=[]}=this;return {...t,blocks:r.map(o=>o.toJSON())}}};function ki(e){return $t.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=>($t.hasMany(t.block,{foreignKey:"section_id",sourceKey:"id",as:"blocks"}),$t)}var nn=ki;var gr=class extends Model{};function Pi(e){return gr.init({id:{type:DataTypes.INTEGER,primaryKey:true,autoIncrement:true},name:{type:DataTypes.STRING,defaultValue:""},description:{type:DataTypes.STRING,defaultValue:""},content:{type:DataTypes.JSONB,defaultValue:{pattern:"",logic:`return {
|
|
2
2
|
axiosConfig: {
|
|
3
3
|
method: 'get',
|
|
4
4
|
url: url,
|
|
5
5
|
}
|
|
6
|
-
};`,testUrl:""}}},{sequelize:e,modelName:"datasource",tableName:"bespoke_reports_data_source",freezeTableName:true,timestamps:false}),()=>
|
|
6
|
+
};`,testUrl:""}}},{sequelize:e,modelName:"datasource",tableName:"bespoke_reports_data_source",freezeTableName:true,timestamps:false}),()=>gr}var an=Pi;var sn={block:qo,block_content:zo,block_input:Go,formatter:Jo,image:Qo,image_content:Zo,report:Xo,dimension:en,variant:tn,search:rn,search_content:on,section:nn,datasource:an};var to=xe(),cn=process.env.REPORTS_DB_CONNECTION||"";if(!cn)throw new Error(`
|
|
7
7
|
Env var 'REPORTS_DB_CONNECTION' is not present.
|
|
8
8
|
This is required to connect to a database to save the Reports CMS changes.
|
|
9
|
-
`);var
|
|
9
|
+
`);var Xe=async()=>{if(global.sequelize){to&&console.info("\u267B\uFE0F RE-UTILIZING DB CONNECTION");let e=global.sequelize.sequelize;if(e)try{return await e.authenticate(),global.sequelize}catch(t){to&&console.warn(`\u26A0\uFE0F CONNECTION INACTIVE, REINITIALIZING: ${t.message}`),delete global.sequelize;}}if(!global.sequelize){to&&console.info("\u{1F511} INITIALIZING DB CONNECTION");let e;try{e=new Sequelize(cn,{logging:!1,dialectModule:vi,pool:{max:10,min:1,acquire:5*1e3,idle:10*1e3,evict:1*1e3}});}catch(t){throw new Error(`
|
|
10
10
|
Could not connect to the database using the given connection string.
|
|
11
11
|
Please check that the connection string 'REPORTS_DB_CONNECTION' is correct.
|
|
12
12
|
Details:
|
|
13
13
|
${t.message}
|
|
14
|
-
`)}Object.values(
|
|
14
|
+
`)}Object.values(sn).map(t=>t(e)).map(t=>t({...e.models,sequelize:e})),global.sequelize=e.sync().catch(t=>{t instanceof Error$1&&console.error("=".repeat(40),`
|
|
15
15
|
Error initializing sequelize connection:
|
|
16
|
-
`,t.stack||t.message),global.sequelize=void 0;}).then(()=>({...e.models,sequelize:e}));}return global.sequelize};var
|
|
17
|
-
`,`Error message: ${m.message}`),"N/A"}})}function xi(e,t){return e.some(r=>t.includes(`role.${r}`))}function Rr(e){return async t=>{let{url:r,method:o,timeout:n,wrapper:s=true,session:a}=t,i=n||process.env.NEXT_PUBLIC_REPORTS_API_FETCH_TIMEOUT||0,c={url:r,method:o||"GET",timeout:i},l=pe(),p=St(),u=null;a&&a.user&&(u={user:a.user,status:"authenticated",isLoading:false,update:async()=>a});let m={envs:{...l,...p},...u?{session:u}:{}};try{let d=(await e.datasource.findAll({where:literal("(content->>'useProxy')::boolean = true"),order:[literal("(content->>'order')::integer ASC NULLS LAST")]})).map(y=>{let S={...l};return {...y.toJSON(),patternSwapped:fe(y.content.pattern,{},{variables:S})}}).find(y=>{if(!y.content?.pattern)return !1;try{return new RegExp(y.patternSwapped,"gm").test(c.url)}catch{return !1}});if(d){let y=t.user_roles&&Array.isArray(t.user_roles)?t.user_roles:[],S=d.content.access&&Array.isArray(d.content.access)?d.content.access:[];if(d.content.logic&&(S.length===0||S.includes("public")||S.includes("guest")&&y.length===0||S.includes("private")&&y.length>0||xi(y,S))){let P=await gr({vars:["url","libs","session"],logic:d.content.logic},m)(c.url);if(P.axiosConfig)c=P.axiosConfig;else throw new T(500,`AxiosConfig is missing in Data Source ${d.name} (ID: ${d.id}).`)}else throw new T(401,`Query not allowed because user roles. Data Source ${d.name} (ID: ${d.id}).`)}let h=await kr.request(c);return {ok:!0,wrapper:s,status:h.status,data:h.data}}catch(f){throw new T(f.response?.status||500,f.message)}}}var{localeDefault:Xr}=K();function sn(e){let{search:t,search_content:r}=e,o=Rr(e);return n;async function n(a){let{id:i,config:c={},settings:l={}}=a,p=c[Xr]?Xr:Object.keys(c)[0],{overrideNames:u,overrideAttributes:m}=Ft(l),{accessor:f,path:d,idKey:h,labelKey:y}=c[Xr];if(!d||!h||!y)return;let S=await o({url:d}).catch(q=>({data:[],error:q}));if("error"in S)throw new T(500,`Failed to fetch members: ${S.error}`);let x=Lt(S.data,f),P=[];try{console.info(`Ingesting default items for variant ${a.name} for ${p}`),P=await s(a,p,x);}catch(q){let B=`[ERROR] Ingesting default member items for ${p}`;throw console.error(B,q),new T(500,B)}let F=await t.findAll({where:{variant_id:i}}).then(q=>Object.fromEntries(q.map(B=>[B.id,{content_id:B.content_id,needsUpdate:P.includes(B.content_id)}]))),w=Object.entries(c).map(async([q,B])=>{let{path:N,accessor:_,idKey:L,labelKey:D,attributes:C=[]}=B;if(!N||!L||!D)return;let $=await o({url:N}).catch(E=>({data:[],error:E}));if("error"in $)throw new T(500,`Failed to fetch members for locale ${q}: ${$.error}`);let M=Lt($.data,_),k=await r.findAll({where:{id:P,locale:q}}).then(E=>Object.fromEntries(E.map(b=>[b.id,b.toJSON()]))),J=M.filter(E=>typeof E[L]<"u"&&E[L]!==""&&typeof E[D]<"u"&&E[D]!=="").map(E=>{let b=F[E[L]],A,I=Object.fromEntries(C.map(ne=>[ne.name,ne.type==="constant"?ne.value:E[ne.value]||""]));return b.needsUpdate&&k[b.content_id]?(A={...k[b.content_id]},u&&(A.name=E[D]),m&&(A.attributes=I)):A={id:b.content_id,locale:q,name:E[D],attributes:I},A});try{return r.bulkCreate(J,{updateOnDuplicate:["name","attributes"]})}catch(E){let b=`[ERROR] Ingesting search content items for ${q}`;throw console.error(b,E),new T(500,b)}});await Promise.all(w);}async function s(a,i,c){let{id:l,dimension_id:p,slug:u}=a,{report_id:m}=a.dimension,{idKey:f,labelKey:d,zValueKey:h}=a.config[i],{overrideNames:y,regenerateSlugs:S,keepOldMembers:x,overrideRelevance:P,overrideAttributes:F}=Ft(a.settings),w=t.findAll({attributes:["slug",[fn$1("COUNT",col("variant.id")),"slugCount"]],include:{association:"variant",attributes:[],required:false,right:true,where:{dimension_id:p,slug:u,id:{[Op.not]:l}}},group:"search.slug"}).then(b=>Object.fromEntries(b.map(A=>{let I=A.getDataValue("slugCount");return [A.slug,Number.parseInt(`${I}`,10)]}))),q=t.findAll({where:{variant_id:l}}).then(b=>Object.fromEntries(b.map(A=>[A.id,A.toJSON()]))),[B,N]=await Promise.all([w,q]),_=Object.values(N).map(b=>b.slug),L=[],D=null,C=null;if(h&&h!==""){for(let b of c)if(typeof b[h]=="number"&&!isNaN(b[h])){let A=b[h];(D===null||A<D)&&(D=A),(C===null||A>C)&&(C=A);}}let $=[],M=[],k=[],J=false;c.filter(b=>b[f]&&b[f]!==""&&b[d]&&b[d]!=="").forEach(b=>{let A=b[f],I=fr(b[d]);J=false;let ne=parseFloat(Math.random().toPrecision(5));if(h&&h!==""&&D&&C&&b[h]){let ae;try{ae=parseInt(b[h],10);}catch{ae=0;}let Z=C!==null&&D!==null&&C!==D?(ae-D)/(C-D):0;ne=C===D?1:parseFloat(Z.toPrecision(5));}if(N[A]){if(y||S||P||F){let ae=N[A];if((y||F)&&k.push(ae.content_id),y&&S){let Z=Object.values(N).filter(V=>V.id!==A).map(V=>V.slug),W=B[I]||Z.includes[I]||L.includes(I);W&&console.warn("Duplicate slug!",I,"replaced by",`${I}-${A}`);let ie=W?`${I}-${A}`:I;ae.slug!==ie&&(ae.slug=ie,L.push(I),J=true,console.info("UPDATE SLUG",A,I));}h&&h!==""&&P&&ae.zvalue!==ne&&(ae.zvalue=ne,J=true,console.warn("UPDATE ZVALUE",A,ne)),J&&M.push(ae);}}else {console.info("INSERT ID",A);let ae=B[I]||_.includes[I]||L.includes(I);ae&&console.warn("Duplicate slug!",I,"replaced by",`${I}-${A}`);let Z=ae?`${I}-${A}`:I;L.push(I),$.push({id:A,slug:Z,variant_id:l,dimension_id:p,report_id:m,zvalue:ne});}});let E=[];if(!x){let b=c.map(A=>A[f]);E=Object.keys(N).filter(A=>!b.includes(A));}try{return ($.length>0||M.length>0)&&(await t.bulkCreate([...$,...M],{updateOnDuplicate:["slug","zvalue"]}),console.info("New members ingested:",$.length),console.info("New members updated:",M.length)),E.length>0&&(await t.destroy({where:{id:{[Op.in]:E},variant_id:l}}),console.warn("Old members deleted:",E.length)),k}catch(b){throw console.error(`[ERROR] Ingesting search members for ${i}`,b),new Error(b)}}}var Li=zt(process.env.NEXT_PUBLIC_REPORTS_DEBUG);function cn(e){let{search:t}=e;return r;async function r(o){let{all:n,locale:s,mode:a,variant:i,output:c,allowNulls:l}=o,p={content_id:[],...i&&i.length?{variant_id:i}:{}};if(a==="content_ids")p.content_id=o.content_ids;else if(a==="ids"){if(n)throw new T(400,"Search by ids doesn't support locale all. Pick one locale.");let d={id:o.ids,...i&&i.length?{variant_id:i}:{}},h=await t.findAll({attributes:["content_id"],where:d,include:[{association:"contentByLocale",where:{locale:s}}]});p.content_id=h.map(y=>y.content_id);}else if(a==="slugs"){let d=o.slugs.map(y=>t.findAll({attributes:["content_id"],where:{slug:y.memberSlug},include:{association:"variant",attributes:["id","name","slug"],required:true,where:{slug:y.variantSlug}}})),h=await Promise.all(d).then(y=>y.reduce((S,x)=>S.concat(x),[]));p.content_id=h.map(y=>y.content_id);}else if(a==="related"){let d=()=>{if(o.variant_ids?.length)return {variant_id:o.variant_ids.map(S=>S)};if(o.dimension_ids?.length)return {dimension_id:o.dimension_ids.map(S=>S)};if(o.report_ids?.length)return {report_id:o.report_ids.map(S=>S)}},h=()=>o.include_ids?.length?{[Op.in]:o.include_ids.map(S=>S)}:false,y=await t.findAll({attributes:["content_id"],where:{...d(),content_id:h()||{[Op.notIn]:o.current_ids},visible:true},order:[Sequelize.fn("RANDOM")],limit:o.related||4});p.content_id=y.map(S=>S.content_id);}else if(a==="whole"){let d={...i&&i.length?{variant_id:i}:{}},h=await t.findAll({attributes:["content_id"],where:d});p.content_id=h.map(y=>y.content_id);}let u={locale:n?{[Op.ne]:null}:s},m=await t.findAll({where:p,include:[{association:"report",attributes:["id","name"]},{association:"dimension",attributes:["id","name","ordering"]},{association:"variant",attributes:["id","name","slug"]},{association:"image",attributes:["id","author","url","license"],include:[{association:"contentByLocale",where:u}]},{association:"contentByLocale",where:u}]});if(!l&&!["related","whole"].includes(a)&&o[a]&&m.length!==o[a].length)throw Li&&console.error("Error in read members. The number of members requested doesn't match the number of members found.",JSON.stringify(o)),new T(404,"One or more members were not found. "+JSON.stringify(o));m.sort((d,h)=>p.content_id.indexOf(d.content_id)-p.content_id.indexOf(h.content_id));let f=m.map(d=>{let h,y={id:d.id,slug:d.slug,visible:d.visible,zvalue:d.zvalue,content_id:d.content_id,report_id:d.report_id,report_name:d.report.name,dimension_id:d.dimension_id,dimension_name:d.dimension.name,dimension_ordering:d.dimension.ordering,variant_id:d.variant_id,variant_name:d.variant.name,variant_slug:d.variant.slug};if(n){let S=d.contentByLocale;y.contentByLocale=S,y.image=d.image,y.image_id=d.image_id,h=y;}else {let S=d.getContent(s),x=d.image?.getContent(s),P=x&&{id:d.image.id,author:d.image.author,url:d.image.url,license:d.image.license,meta:x.meta};h={...y,locale:S.locale,name:S.name,attributes:S.attributes,keywords:S.keywords,image:P||null,image_id:d.image_id};}return c==="lite"&&(delete h.image,delete h.image_id),h});return {meta:o,results:f}}}function ln(e){let{search:t}=e;return r;async function r(o){let n=await t.findOne({where:{content_id:o.member},include:[{association:"image",attributes:[o.size],include:[{association:"contentByLocale"}]}]});return n&&n.image&&n.image[o.size]?n.image[o.size]:Buffer.from("iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkkAQAAB8AG7jymN8AAAAASUVORK5CYII=","base64")}}function Oi(e,t=true){if(!e)return "";let r=Ut(H(e.toLowerCase()));return (t?Ri(r,{replacement:" ",remove:/[*+~.()'"!:@-]/g,lower:true,strict:false,trim:true}):r).replace(/\s\s+/g," ")}var Xe=Oi;var Vt=[{charset:"latin",locales:["en","es","fr","de","it","pt","ro","nl","sv","da","fi","no","pl","cs","hu","sk","sl"]},{charset:"cjk",locales:["zh","ja","ko"]},{charset:"arabic",locales:["ar","fa","ur","he"]},{charset:"cyrilic",locales:["bg","ru","uk","sr","mk"]}],hr=Vt.reduce((e,t)=>e.concat(t.locales),[]);var Et=ke(),{locales:Di}=K(),Ui=Di.filter(e=>hr.includes(e)),to=false,Fi=async(e,t=false)=>{if(t&&(Et&&console.info("0\uFE0F\u20E3 CLEARING SEARCH INDEX"),global.flexsearch=void 0,to=false),global.flexsearch)return Et&&console.info("\u{1F501} RE-UTILIZING SEARCH INDEX"),global.flexsearch;try{to||(Et&&console.info("1\uFE0F\u20E3 INITIALIZING SEARCH INDEX"),to=!0,global.flexsearch=await Vi(e));}catch(r){throw new Error(`
|
|
16
|
+
`,t.stack||t.message),global.sequelize=void 0;}).then(()=>({...e.models,sequelize:e}));}return global.sequelize};var Bi=()=>{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}},H=Bi;function $(e){let t={"&":"&","<":"<",">":">",""":'"',"'":"'","`":"`"," ":""},r=`(?:${Object.keys(t).join("|")})`,o=RegExp(r),n=RegExp(r,"g"),s=String(e).replace(/<[^>]+>/g," ").replace(/\s+/g," ").trim();return o.test(s)?s.replace(n,a=>t[a]):s}function 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 Mi(e){return e?Li(qt($(e)),{replacement:"-",remove:/[*+~.()'"!:@]/g,lower:true,strict:true,trim:true}):""}var yr=Mi;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 ln={jwt:Oi};var un=(e,t={},r="en",o={},n={})=>{let s={setVariables:o.onSetVariables?o.onSetVariables:c=>c,openModal:o.onOpenModal?o.onOpenModal:c=>c,formatters:t,libs:je,locale:r,...n};function a(c){return Function("globals",...c.vars,`with (globals) { ${c.logic} }`).bind(s,s)}function i(c){if(c.vars&&c.logic)return a(c);for(let l in c)Array.isArray(c[l])?c[l]=c[l].map(p=>isObject(p)?i(p):p):isObject(c[l])&&(c[l]=i(c[l]));return c}return i(e)},Rr=(e,t={})=>{let r={libs:ln,...t};function o(s){return Function("globals",...s.vars,`with (globals) { ${s.logic} }`).bind(r,r)}function n(s){if(s.vars&&s.logic)return o(s);for(let a in s)Array.isArray(s[a])?s[a]=s[a].map(i=>isObject(i)?n(i):i):isObject(s[a])&&(s[a]=n(s[a]));return s}return n(e)};function Di(){let{publicRuntimeConfig:e}=Ni(),t=e.bespoke_report_env_vars||{};return {...Object.keys(t).reduce((r,o)=>(r[`ENV_${o}`]=t[o]||"N/A",r),{})}}var pe=Di;function Ui(){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 _t=Ui;var{localeDefault:$i}=H();function fe(e){return {variables:e.variables||{},query:e.query||{},locale:e.locale||$i}}function ro(e){return e.reduce((t,r,o)=>(o?o===e.length-1&&o===1?t+=` and ${r}`:o===e.length-1?t+=`, and ${r}`:t+=`, ${r}`:t+=r,t),"")}var ye=qi;function qi(e,t,r,o=false){let{variables:n}=fe(r);if(!e)return e;let s=/([A-z0-9]*)\{\{([^\}]+)\}\}/g;return e.replace(s,(i,c,l)=>{let p=m=>m;if(c){let m=c.replace(/^\w/g,f=>f.toLowerCase());m in t?p=t[m]:p=f=>`${c}${f}`;}let u=Array.isArray(n[l])?ro(n[l]):n[l];if(u===void 0)return o?i:"N/A";try{return p(u,je,t)}catch(m){return console.error(`Error using formatter ${p.name}
|
|
17
|
+
`,`Error message: ${m.message}`),"N/A"}})}function Gi(e,t){return e.some(r=>t.includes(`role.${r}`))}function br(e){return async t=>{let{url:r,method:o,timeout:n,wrapper:s=true,session:a}=t,i=n||process.env.NEXT_PUBLIC_REPORTS_API_FETCH_TIMEOUT||0,c={url:r,method:o||"GET",timeout:i},l=pe(),p=_t(),u=null;a&&a.user&&(u={user:a.user,status:"authenticated",isLoading:false,update:async()=>a});let m={envs:{...l,...p},...u?{session:u}:{}};try{let d=(await e.datasource.findAll({where:literal("(content->>'useProxy')::boolean = true"),order:[literal("(content->>'order')::integer ASC NULLS LAST")]})).map(h=>{let b={...l};return {...h.toJSON(),patternSwapped:ye(h.content.pattern,{},{variables:b})}}).find(h=>{if(!h.content?.pattern)return !1;try{return new RegExp(h.patternSwapped,"gm").test(c.url)}catch{return !1}});if(d){let h=t.user_roles&&Array.isArray(t.user_roles)?t.user_roles:[],b=d.content.access&&Array.isArray(d.content.access)?d.content.access:[];if(d.content.logic&&(b.length===0||b.includes("public")||b.includes("guest")&&h.length===0||b.includes("private")&&h.length>0||Gi(h,b))){let w=await Rr({vars:["url","libs","session"],logic:d.content.logic},m)(c.url);if(w.axiosConfig)c=w.axiosConfig;else throw new E(500,`AxiosConfig is missing in Data Source ${d.name} (ID: ${d.id}).`)}else throw new E(401,`Query not allowed because user roles. Data Source ${d.name} (ID: ${d.id}).`)}let R=await vr.request(c);return {ok:!0,wrapper:s,status:R.status,data:R.data}}catch(f){throw new E(f.response?.status||500,f.message)}}}var{localeDefault:oo}=H();function mn(e){let{search:t,search_content:r}=e,o=br(e);return n;async function n(a){let{id:i,config:c={},settings:l={}}=a,p=c[oo]?oo:Object.keys(c)[0],{overrideNames:u,overrideAttributes:m}=zt(l),{accessor:f,path:d,idKey:R,labelKey:h}=c[oo];if(!d||!R||!h)return;let b=await o({url:d}).catch(q=>({data:[],error:q}));if("error"in b)throw new E(500,`Failed to fetch members: ${b.error}`);let P=Dt(b.data,f),w=[];try{console.info(`Ingesting default items for variant ${a.name} for ${p}`),w=await s(a,p,P);}catch(q){let B=`[ERROR] Ingesting default member items for ${p}`;throw console.error(B,q),new E(500,B)}let F=await t.findAll({where:{variant_id:i}}).then(q=>Object.fromEntries(q.map(B=>[B.id,{content_id:B.content_id,needsUpdate:w.includes(B.content_id)}]))),k=Object.entries(c).map(async([q,B])=>{let{path:D,accessor:_,idKey:L,labelKey:U,attributes:C=[]}=B;if(!D||!L||!U)return;let z=await o({url:D}).catch(A=>({data:[],error:A}));if("error"in z)throw new E(500,`Failed to fetch members for locale ${q}: ${z.error}`);let M=Dt(z.data,_),x=await r.findAll({where:{id:w,locale:q}}).then(A=>Object.fromEntries(A.map(S=>[S.id,S.toJSON()]))),j=M.filter(A=>typeof A[L]<"u"&&A[L]!==""&&typeof A[U]<"u"&&A[U]!=="").map(A=>{let S=F[A[L]],T,v=Object.fromEntries(C.map(ne=>[ne.name,ne.type==="constant"?ne.value:A[ne.value]||""]));return S.needsUpdate&&x[S.content_id]?(T={...x[S.content_id]},u&&(T.name=A[U]),m&&(T.attributes=v)):T={id:S.content_id,locale:q,name:A[U],attributes:v},T});try{return r.bulkCreate(j,{updateOnDuplicate:["name","attributes"]})}catch(A){let S=`[ERROR] Ingesting search content items for ${q}`;throw console.error(S,A),new E(500,S)}});await Promise.all(k);}async function s(a,i,c){let{id:l,dimension_id:p,slug:u}=a,{report_id:m}=a.dimension,{idKey:f,labelKey:d,zValueKey:R}=a.config[i],{overrideNames:h,regenerateSlugs:b,keepOldMembers:P,overrideRelevance:w,overrideAttributes:F}=zt(a.settings),k=t.findAll({attributes:["slug",[fn$1("COUNT",col("variant.id")),"slugCount"]],include:{association:"variant",attributes:[],required:false,right:true,where:{dimension_id:p,slug:u,id:{[Op.not]:l}}},group:"search.slug"}).then(S=>Object.fromEntries(S.map(T=>{let v=T.getDataValue("slugCount");return [T.slug,Number.parseInt(`${v}`,10)]}))),q=t.findAll({where:{variant_id:l}}).then(S=>Object.fromEntries(S.map(T=>[T.id,T.toJSON()]))),[B,D]=await Promise.all([k,q]),_=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 z=[],M=[],x=[],j=false;c.filter(S=>S[f]&&S[f]!==""&&S[d]&&S[d]!=="").forEach(S=>{let T=S[f],v=yr(S[d]);j=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(h||b||w||F){let ae=D[T];if((h||F)&&x.push(ae.content_id),h&&b){let Z=Object.values(D).filter(V=>V.id!==T).map(V=>V.slug),Y=B[v]||Z.includes[v]||L.includes(v);Y&&console.warn("Duplicate slug!",v,"replaced by",`${v}-${T}`);let ie=Y?`${v}-${T}`:v;ae.slug!==ie&&(ae.slug=ie,L.push(v),j=true,console.info("UPDATE SLUG",T,v));}R&&R!==""&&w&&ae.zvalue!==ne&&(ae.zvalue=ne,j=true,console.warn("UPDATE ZVALUE",T,ne)),j&&M.push(ae);}}else {console.info("INSERT ID",T);let ae=B[v]||_.includes[v]||L.includes(v);ae&&console.warn("Duplicate slug!",v,"replaced by",`${v}-${T}`);let Z=ae?`${v}-${T}`:v;L.push(v),z.push({id:T,slug:Z,variant_id:l,dimension_id:p,report_id:m,zvalue:ne});}});let A=[];if(!P){let S=c.map(T=>T[f]);A=Object.keys(D).filter(T=>!S.includes(T));}try{return (z.length>0||M.length>0)&&(await t.bulkCreate([...z,...M],{updateOnDuplicate:["slug","zvalue"]}),console.info("New members ingested:",z.length),console.info("New members updated:",M.length)),A.length>0&&(await t.destroy({where:{id:{[Op.in]:A},variant_id:l}}),console.warn("Old members deleted:",A.length)),x}catch(S){throw console.error(`[ERROR] Ingesting search members for ${i}`,S),new Error(S)}}}var Yi=jt(process.env.NEXT_PUBLIC_REPORTS_DEBUG);function fn(e){let{search:t}=e;return r;async function r(o){let{all:n,locale:s,mode:a,variant:i,output:c,allowNulls:l}=o,p={content_id:[],...i&&i.length?{variant_id:i}:{}};if(a==="content_ids")p.content_id=o.content_ids;else if(a==="ids"){if(n)throw new E(400,"Search by ids doesn't support locale all. Pick one locale.");let d={id:o.ids,...i&&i.length?{variant_id:i}:{}},R=await t.findAll({attributes:["content_id"],where:d,include:[{association:"contentByLocale",where:{locale:s}}]});p.content_id=R.map(h=>h.content_id);}else if(a==="slugs"){let d=o.slugs.map(h=>t.findAll({attributes:["content_id"],where:{slug:h.memberSlug},include:{association:"variant",attributes:["id","name","slug"],required:true,where:{slug:h.variantSlug}}})),R=await Promise.all(d).then(h=>h.reduce((b,P)=>b.concat(P),[]));p.content_id=R.map(h=>h.content_id);}else if(a==="related"){let d=()=>{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,h=await t.findAll({attributes:["content_id"],where:{...d(),content_id:R()||{[Op.notIn]:o.current_ids},visible:true},order:[Sequelize.fn("RANDOM")],limit:o.related||4});p.content_id=h.map(b=>b.content_id);}else if(a==="whole"){let d={...i&&i.length?{variant_id:i}:{}},R=await t.findAll({attributes:["content_id"],where:d});p.content_id=R.map(h=>h.content_id);}let u={locale:n?{[Op.ne]:null}:s},m=await t.findAll({where:p,include:[{association:"report",attributes:["id","name"]},{association:"dimension",attributes:["id","name","ordering"]},{association:"variant",attributes:["id","name","slug"]},{association:"image",attributes:["id","author","url","license"],include:[{association:"contentByLocale",where:u}]},{association:"contentByLocale",where:u}]});if(!l&&!["related","whole"].includes(a)&&o[a]&&m.length!==o[a].length)throw Yi&&console.error("Error in read members. The number of members requested doesn't match the number of members found.",JSON.stringify(o)),new E(404,"One or more members were not found. "+JSON.stringify(o));m.sort((d,R)=>p.content_id.indexOf(d.content_id)-p.content_id.indexOf(R.content_id));let f=m.map(d=>{let R,h={id:d.id,slug:d.slug,visible:d.visible,zvalue:d.zvalue,content_id:d.content_id,report_id:d.report_id,report_name:d.report.name,dimension_id:d.dimension_id,dimension_name:d.dimension.name,dimension_ordering:d.dimension.ordering,variant_id:d.variant_id,variant_name:d.variant.name,variant_slug:d.variant.slug};if(n){let b=d.contentByLocale;h.contentByLocale=b,h.image=d.image,h.image_id=d.image_id,R=h;}else {let b=d.getContent(s),P=d.image?.getContent(s),w=P&&{id:d.image.id,author:d.image.author,url:d.image.url,license:d.image.license,meta:P.meta};R={...h,locale:b.locale,name:b.name,attributes:b.attributes,keywords:b.keywords,image:w||null,image_id:d.image_id};}return c==="lite"&&(delete R.image,delete R.image_id),R});return {meta:o,results:f}}}function gn(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 Qi(e,t=true){if(!e)return "";let r=qt($(e.toLowerCase()));return (t?Li(r,{replacement:" ",remove:/[*+~.()'"!:@-]/g,lower:true,strict:false,trim:true}):r).replace(/\s\s+/g," ")}var et=Qi;var Gt=[{charset:"latin",locales:["en","es","fr","de","it","pt","ro","nl","sv","da","fi","no","pl","cs","hu","sk","sl"]},{charset:"cjk",locales:["zh","ja","ko"]},{charset:"arabic",locales:["ar","fa","ur","he"]},{charset:"cyrilic",locales:["bg","ru","uk","sr","mk"]}],Sr=Gt.reduce((e,t)=>e.concat(t.locales),[]);var kt=xe(),{locales:Xi}=H(),ec=Xi.filter(e=>Sr.includes(e)),ao=false,tc=async(e,t=false)=>{if(t&&(kt&&console.info("0\uFE0F\u20E3 CLEARING SEARCH INDEX"),global.flexsearch=void 0,ao=false),global.flexsearch)return kt&&console.info("\u{1F501} RE-UTILIZING SEARCH INDEX"),global.flexsearch;try{ao||(kt&&console.info("1\uFE0F\u20E3 INITIALIZING SEARCH INDEX"),ao=!0,global.flexsearch=await rc(e));}catch(r){throw new Error(`
|
|
18
18
|
Could not initialize FlexSearch engine.
|
|
19
19
|
Details:
|
|
20
20
|
${r.message}
|
|
21
|
-
`)}return global.flexsearch};async function
|
|
21
|
+
`)}return global.flexsearch};async function rc(e){let t=await e.search.findAll({include:[{association:"contentByLocale"}]});kt&&console.info("\u{1F3F3}\uFE0F INITIALIZING FLEXSEARCH");let r=ec.map(async o=>{kt&&console.info(`\u{1F3F3}\uFE0F INITIALIZING FLEXSEARCH ${o} LOCALE`);let n=Gt.find(p=>p.locales.includes(o)),s=n?.charset||"latin",a=s==="latin"?"advanced":"default";n?console.info(` Charset for ${o}: ${s}`):kt&&console.error(` Missing charset for ${o}, adding latin as default.`);let i=(await import(`flexsearch/dist/module/lang/${s}/${a}`)).default,c=new Zi.Document({language:o,encode:i.encode,tokenize:"reverse",stemmer:{},matcher:{},filter:[],preset:"default",cache:100,resolution:9,context:false,optimize:true,worker:false,document:{id:"content_id",store:false,index:["id","name","clean","keywords","attributes"]}}),l=0;return t.forEach(p=>{let u=p.contentByLocale.find(m=>m.locale===o);if(u){let m=et(u.name,s!=="arabic"),f=Array.isArray(u.keywords)?u.keywords.map(R=>et(R,s!=="arabic")):null,d={id:p.id,content_id:p.content_id,name:u.name,keywords:f,attributes:u.attributes,clean:m};c.add(d),l++;}}),console.info(`\u{1F3F3}\uFE0F Indexed for ${o}: ${l} elements`),[o,c]});return Object.fromEntries(await Promise.all(r))}var tt=tc;var xt=process.env.REPORTS_EXTERNAL_SEARCH,Ie=xe(),{locales:oc}=H(),nc=oc.filter(e=>Sr.includes(e)),so=false,ac=async(e=false)=>{if(e&&(Ie&&console.info("0\uFE0F\u20E3 CLEARING SEARCH INDEX"),global.typesense=void 0,so=false),global.typesense)return Ie&&console.info("\u{1F501} RE-UTILIZING SEARCH INDEX"),global.typesense;try{so||(Ie&&console.info("1\uFE0F\u20E3 INITIALIZING SEARCH INDEX"),so=!0,global.typesense=await ic());}catch(t){throw new Error(`
|
|
22
22
|
Could not initialize Typesense engine.
|
|
23
23
|
Details:
|
|
24
24
|
${t.message}
|
|
25
|
-
`)}return global.typesense};async function Gi(){try{if(At){let e=await kr.get(new URL(At).origin);if(e?.data["typesense-health"]===!0)return Ie&&console.info(`${At} health check is OK. Version: ${e.data.Version}`),!0}else console.error("No envar set TYPESENSE_URL");return !1}catch(e){return console.error("Health check failed:",e.message),false}}async function Ki(){if(Ie&&console.info(`\u{1F3F3}\uFE0F INITIALIZING TYPESENSE SEARCH AGAINST ${At}`),!await Gi())throw new Error("TYPESENSE_URL service is not healthy.");let t=$i.map(r=>(Ie&&console.info(`\u{1F3F3}\uFE0F INITIALIZING SEARCH ${r} LOCALE`),[r,{search:async(n={query:"*",limit:12,offset:0})=>{let s={locale:r,query:n.query,limit:n.limit,offset:n.offset};return n.report&&Array.isArray(n.report)&&n.report.length>0&&(s["report[]"]=n.report.join(",")),n.variant&&Array.isArray(n.variant)&&n.variant.length>0&&(s["variant[]"]=n.variant.join(",")),Ie&&console.info("Typesense URL:",At,s),kr.get(At,{params:s}).then(i=>(Ie&&(console.info("Typesense URL:",i.request.res.responseUrl),console.info("Typesense Results",i.data.data.results.length)),i.data.data)).catch(i=>(console.error("Typesense Call Error:",i),[]))}}]));return Object.fromEntries(await Promise.all(t))}var pn=zi;var{localeDefault:oo}=K();function Tt(e){let{search:t,report:r}=e;return o;async function o(n){let s=n.origin||"flexsearch",a=process.env.REPORTS_EXTERNAL_SEARCH&&s==="typesense",{query:i,locale:c,preferredLocale:l,limit:p,format:u,visible:m,variant:f,dimension:d,report:h,all:y,noImage:S,includes:x,sort:P,direction:F="ASC",offset:w=0}=n,B=Vt.find(C=>C.locales.includes(c))?.charset||"latin",N=p&&!isNaN(p)?p:20,_=Xe(i,B!=="arabic");function L(C){return C.toJSON()}function D(C){let $=C.getContent(c);return {...C.toJSON(),locale:$.locale,name:$.name,attributes:$.attributes,keywords:$.keywords}}if(a){let C=await pn(),$=C[c]||C[oo],M={query:_===""?"*":_,limit:N,variant:f,report:h,offset:w};return await $.search(M)}else {let C=[],$=await et(e);if(i&&i!==""&&$[c]){let W=Xe(i,B!=="arabic"),ie={query:W,limit:N},V=await $[c].search(ie);if(a?C=V.data.results.map(Q=>parseInt(Q.content_id,10)):C=V.reduce((Q,j)=>Q.concat(j.result),[]),C=ar(C),l&&$[l]){let j=$[l].search(W).reduce((le,se)=>le.concat(se.result),[]);j=ar(j),C=ar([...C,...j]);}}let M={...m?{visible:m}:{},...S?{image_id:{[Op.eq]:null}}:{},...f.length?{variant_id:f}:{},...d.length?{dimension_id:d}:{},...h.length?{report_id:h}:{}},k={locale:y?{[Op.ne]:null}:c},J=i&&i!==""&&C.length?[[literal(`array_position(array[${C.join(",")}], "content_id")`),"ASC"]]:[["zvalue","DESC NULLS LAST"]];P&&P!=="name"&&J.unshift([P,F.toUpperCase()]),i&&i!==""&&(M.content_id=C);let E=[{association:"contentByLocale",where:k}];x&&E.push({association:"report",attributes:["id","name"]},{association:"dimension",attributes:["id","name"]},{association:"variant",attributes:["id","slug","name"]});let b={...M.visible?{visible:M.visible}:{},...M.noImage?{image_id:M.noImage}:{},...M.content_id?{content_id:M.content_id}:{}};if(!M.report_id&&!M.dimension_id&&!M.variant_id&&m){let ie=(await r.findAll({attributes:["id"],where:{[Op.or]:[where(cast(json("settings.hide"),"boolean"),true)]}})).map(V=>V.id);ie.length>0&&(M.report_id={[Op.notIn]:ie},b.report_id=M.report_id);}let A=[],[I,ne]=await Promise.all([t.findAll({limit:N,offset:w,where:M,include:E,order:J}),t.findAll({attributes:["variant_id",[fn$1("COUNT",col("variant_id")),"members_count"]],where:b,group:["variant_id"]})]),ae=ne.map(W=>W.toJSON());if(P==="name"){let W=F.toUpperCase()==="ASC"?1:-1;I.sort((ie,V)=>{let Q=ie.getContent(oo),j=V.getContent(oo);return Q&&j?Q.name>j.name?1*W:-1*W:0});}let Z=u==="nested"?L:D;return A=I.map(Z),u!=="nested"&&A.forEach(W=>{let{name:ie,keywords:V,score:Q=.1,zvalue:j}=W;if(ie){let le=Xe(ie),se=Q,ce=i.length/le.length,To=le.split("").reduce((Vr,_o,wo)=>(i.slice(0,wo),i.charAt(wo)===_o&&(Vr+=_o),Vr),"").length;le===i||V&&V.includes(i)?se=1e6:le.startsWith(i)?se*=20*ce:To&&(se*=To*ce),W.zvalue=se*2+j;}}),{meta:{origin:"flexsearch",...Object.fromEntries(Object.entries(n).map(W=>[W[0],H(W[1])])),variantCount:ae.reduce((W,ie)=>(W[ie.variant_id]=parseInt(ie.members_count,10),W),{})},results:A}}}}function dn(e){let{image:t,image_content:r,search:o,search_content:n}=e;return s;async function s(a){let{content_id:i,contentByLocale:c,image:l,image_id:p}=a,u={where:{content_id:i}},m=await o.findOne(u);if(await o.update(a,{where:{content_id:i}}),c){for(let d=0;d<c.length;d++){let h=c[d];await n.update({name:h.name,keywords:h.keywords},{where:{id:h.id,locale:h.locale}});}u={...u,...{include:[{association:"contentByLocale",separate:true}]}};}if(l){if(l.id&&(await t.update({...l},{where:{id:l.id}}),l.contentByLocale))for(let f=0;f<l.contentByLocale.length;f++){let d=l.contentByLocale[f];await r.update({meta:d.meta},{where:{id:d.id,locale:d.locale}});}}else !p&&m.image_id&&(await e.search.findAll({where:{image_id:m.image_id}})).length===0&&await t.destroy({where:{id:m.image_id}});return o.findOne(u)}}function mn(e){return {ingestMembers:sn(e),readMember:cn(e),searchMember:Tt(e),updateMember:dn(e),readMemberImage:ln(e)}}var tt={include:[{association:"contentByLocale",separate:true},{association:"inputs",include:[{association:"contentByLocale",separate:true}]},{association:"consumers",include:[{association:"contentByLocale",separate:true}]}]},qt=e=>({include:[{association:"variants",separate:true,attributes:{include:[[fn$1("COUNT",col("members.id")),"members_count"]]},include:[{model:e,as:"members",attributes:[]}],group:["variant.id"]}],order:[["ordering","ASC"]]}),$t={include:[{association:"blocks",separate:true,...tt}]},Sr=e=>({include:[{association:"dimensions",separate:true,...qt(e)},{association:"sections",separate:true,...$t}]});var Se=[{association:"image",attributes:{exclude:["splash"]},include:[{association:"contentByLocale"}]},{association:"contentByLocale"}];function fn(e){let{block:t,block_content:r,block_input:o}=e;return {createBlock:n,readBlock:a,updateBlock:i,deleteBlock:l,createBulkBlock:s,updateBulkBlock:c};async function n(p){let{locales:u,...m}=p;return (await t.create({...m,consumers:[],inputs:[],contentByLocale:u.map(d=>({locale:d}))},{include:tt.include})).toJSON()}async function s(p){let u=p.map(f=>{let{locales:d,...h}=f;return {...h,consumers:[],inputs:[],contentByLocale:d.map(S=>({locale:S}))}});return (await t.bulkCreate(u,{include:tt.include})).map(f=>f.toJSON())}async function a({id:p,include:u}={}){let m=p==null?[]:[].concat(p),f=await t.findAll({where:m.length>0?{id:m}:void 0,include:u?tt.include:void 0});if(m.length===0||f.length===m.length)return f.map(y=>y.toJSON());let d=f.map(y=>y.id),h=m.filter(y=>!d.includes(y));throw new T(404,`Block(id=[${h}]) does not exist.`)}async function i(p){let{id:u,contentByLocale:m,consumers:f,inputs:d,inputAction:h,...y}=p,S=await t.findByPk(u,{include:tt.include,rejectOnEmpty:true});if(S.set(y),m){let x=Object.values(m);await r.bulkCreate(x,{updateOnDuplicate:["content"]});}return h&&(h.operation==="create"?await o.create(h.input):await o.destroy({where:h.input})),await S.save(),await S.reload(),S.toJSON()}async function c(p){let u=p.map(d=>{let{id:h,contentByLocale:y,consumers:S,inputs:x,inputAction:P,...F}=d;return {id:h,contentByLocale:y,inputAction:P,...F}}),m=await t.findAll({where:{id:{[Op.or]:u.map(d=>d.id)}},include:tt.include}),f=[];for(let d of m){let h=u.filter(y=>y.id===d.id);for(let y=0;y<h.length;y++){let S=h[y],{id:x,contentByLocale:P,inputAction:F,...w}=S;if(F&&(F.operation==="create"?await o.create(F.input):await o.destroy({where:F.input})),P){let q=Object.values(P);await r.bulkCreate(q,{updateOnDuplicate:["content"]});}d.set(w),await d.save(),await d.reload(),f.push(d.toJSON());}}return f}async function l(p){let u=await t.findByPk(p,{rejectOnEmpty:true});return await u.destroy(),{id:p,parentType:"section",parentId:u.section_id}}}function yn(e){let{dimension:t,search:r}=e;return {createDimension:o,readDimension:n,updateDimension:s,deleteDimension:a};async function o(i){return (await t.create({name:i.name,report_id:i.report_id,variants:[]},{include:qt(r).include})).toJSON()}async function n({id:i,include:c}={}){let l=i==null?[]:[].concat(i),p=await t.findAll({where:l.length>0?{id:l}:void 0,include:c?qt(r).include:void 0});if(l.length===0||p.length===l.length)return p.map(f=>f.toJSON());let u=p.map(f=>f.id),m=l.filter(f=>!u.includes(f));throw new T(404,`Dimension(id=[${m}]) does not exist.`)}async function s(i){let{id:c,variants:l,...p}=i,u=await t.findByPk(c,{include:qt(r).include,rejectOnEmpty:false});if(!u)throw new T(404,`Dimension(id=${c}) does not exist.`);return u.set(p),await u.save(),u.toJSON()}async function a(i){let c=await t.findByPk(i,{rejectOnEmpty:false});return await c.destroy(),{id:i,parentType:"report",parentId:c.report_id}}}function gn(e){let{formatter:t}=e;return {createFormatter:r,readFormatter:o,updateFormatter:n,deleteFormatter:s};async function r(a){return (await t.create(a)).toJSON()}async function o({id:a}={}){let i=a==null?[]:[].concat(a),c=await t.findAll({where:i.length>0?{id:i}:void 0});if(i.length===0||c.length===i.length)return c.map(u=>u.toJSON());let l=c.map(u=>u.id),p=i.filter(u=>!l.includes(u));throw new T(404,`Formatter(id=[${p}]) does not exist.`)}async function n(a){let{id:i,...c}=a,l=await t.findByPk(i,{rejectOnEmpty:true});return await l.update(c),l.toJSON()}async function s(a){return await(await t.findByPk(a,{rejectOnEmpty:true})).destroy(),{id:a}}}function hn(e){let{datasource:t}=e;return {createDatasource:r,readDatasource:o,updateDatasource:n,deleteDatasource:s};async function r(a){return (await t.create(a)).toJSON()}async function o({id:a,include:i}={}){try{let c=a==null?[]:[].concat(a),l=i===!0,p=await t.findAll({attributes:l?["id","name","description","content"]:["id","name","description",[literal("content - 'logic' - 'testUrl' - 'access'"),"content"]],where:c.length>0?{id:c}:void 0,order:[literal("(content->>'order')::integer ASC NULLS LAST")]});if(c.length===0||p.length===c.length)return p.map(f=>f.toJSON());let u=p.map(f=>f.id),m=c.filter(f=>!u.includes(f));throw new T(404,`Datasource(id=[${m}]) does not exist.`)}catch(c){throw new T(500,c)}}async function n(a){let{id:i,...c}=a,l=await t.findByPk(i,{rejectOnEmpty:true});return await l.update(c),l.toJSON()}async function s(a){return await(await t.findByPk(a,{rejectOnEmpty:true})).destroy(),{id:a}}}var{locales:tc}=K();function bn(e){let{report:t,search:r}=e;return {createReport:o,readReport:n,updateReport:s,deleteReport:a};async function o(i){return (await t.create({name:i.name,sections:[],dimensions:[]},{include:Sr(r).include})).toJSON()}async function n({id:i,include:c,locales:l=tc}={}){let u=(i==null?[]:[].concat(i)).reduce((h,y)=>(h.includes(y)||h.push(y),h),[]),m=await t.findAll({where:u.length>0?{id:u}:void 0,include:c?Sr(r).include?.filter(h=>typeof c=="string"?h.association===c:c):void 0});if(u.length===0||m.length===u.length)return m.map(h=>{let y=h.toJSON();return {...y,sections:y.sections.map(S=>({...S,blocks:S.blocks.map(x=>({...x,contentByLocale:Object.keys(x.contentByLocale).reduce((P,F)=>({...P,...[...l,"logic"].includes(F)?{[F]:x.contentByLocale[F]}:{}}),{})}))}))}});let f=m.map(h=>h.id),d=u.filter(h=>!f.includes(h));throw new T(404,`Report(id=${d}) does not exist.`)}async function s(i){let{id:c,dimensions:l,sections:p,...u}=i,m=await t.findByPk(c,{include:Sr(r).include,rejectOnEmpty:false});if(!m)throw new T(404,`Report(id=${c}) does not exist.`);return m.set(u),await m.save(),await m.reload(),m.toJSON()}async function a(i){return await(await t.findByPk(i,{rejectOnEmpty:false})).destroy(),{id:i}}}function Sn(e){let{section:t}=e;return {createSection:r,readSection:o,updateSection:n,deleteSection:s};async function r(a){return (await t.create({ordering:a.ordering,report_id:a.report_id,blocks:[]},{include:$t.include})).toJSON()}async function o({id:a,include:i}={}){let c=a==null?[]:[].concat(a),l=await t.findAll({where:c.length>0?{id:c}:void 0,include:i?$t.include:void 0});if(c.length===0||l.length===c.length)return l.map(m=>m.toJSON());let p=l.map(m=>m.id),u=c.filter(m=>!p.includes(m));throw new T(404,`Section(id=${u}) does not exist.`)}async function n(a){let{id:i,blocks:c,...l}=a,p=await t.findByPk(i,{include:$t.include,rejectOnEmpty:false});return p.set(l),await p.save(),await p.reload(),p.toJSON()}async function s(a){let i=await t.findByPk(a,{rejectOnEmpty:true});return await i.destroy(),{id:a,parentType:"report",parentId:i.report_id}}}function Tn(e,t){let{variant:r,search:o}=e;return {createVariant:n,readVariant:s,updateVariant:a,deleteVariant:i,validateVariantSlug:c};async function n(l){let{dimension_id:p,name:u,slug:m}=l,f=await c({dimension:p,slug:m});return (await r.create({dimension_id:p,name:u,slug:f.valid?f.candidate:f.suggestion})).toJSON()}async function s({id:l}={}){let p=l==null?[]:[].concat(l),u=await r.findAll({where:p.length>0?{id:p}:void 0,attributes:{include:[[fn$1("COUNT",col("members.id")),"members_count"]]},include:[{model:o,attributes:[],as:"members"}],group:["variant.id"]});if(p.length===0||u.length===p.length)return u.map(d=>d.toJSON());let m=u.map(d=>d.id),f=p.filter(d=>!m.includes(d));throw new T(404,`Variant(id=${f}) does not exist.`)}async function a(l){let{id:p,...u}=l,m=await r.findByPk(p,{include:[{association:"dimension"}],rejectOnEmpty:true});u.settings=Ft(u.settings);let f=u.settings.doIngest;return u.settings.doIngest=false,await m.update(u),f&&(await t.ingestMembers(m),await et(e,true)),await m.reload(),m.toJSON()}async function i(l){let p=await r.findByPk(l,{rejectOnEmpty:true});return await p.destroy(),et(e,true),{id:l,parentType:"dimension",parentId:p.dimension_id}}async function c({dimension:l,slug:p}){let u=await r.findAll({attributes:["slug",[fn$1("COUNT",col("id")),"slugCount"]],where:{dimension_id:{[Op.ne]:l}},group:"slug"}).then(h=>Object.fromEntries(h.map(y=>{let S=y.getDataValue("slugCount");return [y.slug,Number.parseInt(`${S}`,10)]}))),m=p,f=1,d=true;for(;u[m];)d=false,m=`${p}-${f}`,f++;return {candidate:p,dimension_id:l,suggestion:m,valid:d}}}function _n(e){let t={...fn(e),...yn(e),...gn(e),...hn(e),...mn(e),...bn(e),...Sn(e)},r={...t,...Tn(e,t)};return {createFormatter:v(r.createFormatter),deleteFormatter:v(r.deleteFormatter),readFormatter:v(r.readFormatter),updateFormatter:v(r.updateFormatter),createReport:v(r.createReport),deleteReport:v(r.deleteReport),readReport:v(r.readReport),updateReport:v(r.updateReport),createDimension:v(r.createDimension),deleteDimension:v(r.deleteDimension),readDimension:v(r.readDimension),updateDimension:v(r.updateDimension),createVariant:v(r.createVariant),readVariant:v(r.readVariant),updateVariant:v(r.updateVariant),deleteVariant:v(r.deleteVariant),validateVariantSlug:v(r.validateVariantSlug),createSection:v(r.createSection),readSection:v(r.readSection),updateSection:v(r.updateSection),deleteSection:v(r.deleteSection),createBlock:v(r.createBlock),deleteBlock:v(r.deleteBlock),readBlock:v(r.readBlock),updateBlock:v(r.updateBlock),createBulkBlock:v(r.createBulkBlock),updateBulkBlock:v(r.updateBulkBlock),readMember:v(r.readMember),searchMember:v(r.searchMember),updateMember:v(r.updateMember),readMemberImage:v(r.readMemberImage),createDatasource:v(r.createDatasource),deleteDatasource:v(r.deleteDatasource),readDatasource:v(r.readDatasource),updateDatasource:v(r.updateDatasource)}}if(typeof window<"u")throw new Error("uploadImage.ts can only be imported on the server side");var wn=e=>{throw console.error("/methods/helpers/uploadImage.ts:",e),new Error(e.message)},oc=Number(process.env.NEXT_PUBLIC_IMAGE_SPLASH_WIDTH)||1400,nc=Number(process.env.NEXT_PUBLIC_IMAGE_THUMB_WIDTH)||400,ac=async(e,t,r)=>{let o=[{type:"splash",res:oc},{type:"thumb",res:nc}],n=(await import('sharp')).default;for(let s of o){let a=await n(r).resize(s.res).toFormat("webp").webp({lossless:true}).toBuffer().catch(wn);await e.image.update({[s.type]:a},{where:{id:t}}).catch(wn);}},ve=ac;var kn="SECTION_ALLOWED";if(typeof window<"u")throw new Error("flickr.ts can only be imported on the server side");var Pn=["4","5","7","8","9","10"],cc=Pn.join(),{locales:lc}=K(),Ce;if(process.env.FLICKR_API_KEY)try{Ce=new ic(process.env.FLICKR_API_KEY);}catch(e){throw console.error("Flickr ERROR:",e),new Error(e.message)}async function xn(e,t){try{let r={prompt:t.prompt||"",page:t.page||1};if(!Ce)throw console.warn("Flickr is not initialized. Check the credentials"),new Error("Flickr is not initialized. Check the credentials");let o=r.prompt,s=(await Ce.photos.search({text:o,license:cc,sort:"relevance",per_page:24,page:r.page,content_types:"0",orientation:"landscape"}).then(l=>l.body)).photos.photo,a=s.reduce((l,p)=>l.concat(Ce.photos.getSizes({photo_id:p.id})),[]),c=(await Promise.all(a).then(l=>l)).reduce((l,p,u)=>{let m=p.body.sizes.size.find(f=>f.label==="Small 320");return m&&l.push({id:s[u].id,source:m.source}),l},[]);return {meta:{prompt:H(r.prompt),page:H(`${r.page}`)},results:c}}catch(r){throw console.error(r),new Error("Error in search flickr provider")}}async function In(e,t){try{let{content_id:r,image_id:o}=t,n={content_id:H(`${r}`)||"",id:H(`${o}`)||""},a=`https://flic.kr/p/${sc.int_to_base58(o)}`;if(!Ce)throw new Error("Flickr API Key not configured");let i=await Ce.photos.getInfo({photo_id:o}).then(l=>l.body),c;if(i)if(Pn.includes(i.photo.license)){let l=await e.search.findOne({where:{content_id:r}}),p=await e.image.findOne({where:{url:a}});if(l){if(p)await e.search.update({image_id:p.id},{where:{content_id:r}});else {let m=await Ce.photos.getSizes({photo_id:o}).then(w=>w.body),f=m.sizes.size.find(w=>parseInt(w.width,10)>=1600);if(f||(f=m.sizes.size.find(w=>parseInt(w.width,10)>=1e3)),f||(f=m.sizes.size.find(w=>parseInt(w.width,10)>=500)),!f||!f.source)throw new Error("Flickr Source Error, try another image.");let d=await fetch(f.source);if(!d.ok)throw new Error("Flickr Error retrieving image, try another image.");let h=await d.arrayBuffer(),S=(await Ce.photos.licenses.getInfo().then(w=>w.body.licenses.license)).find(w=>w.id===parseInt(i.photo.license,10)),x={url:a,author:i.photo.owner.realname||i.photo.owner.username,license:S?`${S.name}: ${S.url}`:""},P=await e.image.create(x);await e.image_content.destroy({where:{id:P.id}});let F=lc.map(w=>({id:P.id,locale:w,meta:i.photo.title._content}));await e.image_content.bulkCreate(F),await e.search.update({image_id:P.id},{where:{content_id:r}}),await ve(e,P.id,h);}let u=await e.search.findOne({where:{content_id:r},include:Se});u&&u.image&&(u.image.thumb=!!u.image.thumb);}else throw new Error("Error updating Search")}else throw new Error("Bad License");else throw new Error("Malformed URL");return {meta:{...n},results:c}}catch(r){throw console.error(r),new Error("Error in save flickr provider")}}function U(e,t,r,o){return {method:e,path:t,handler:r,roleRequired:o}}function ee(e){let t=Number.parseInt(`${e||""}`,10);if(Number.isNaN(t)||!Number.isFinite(t))throw new T(400,`Invalid numeric parameter: ${e}`);return t}function G(e){return e==null||e===""?[]:Array.isArray(e)?e:e.toString().split(",")}var{localeDefault:Be}=K();function vn(e){let{readMember:t,searchMember:r,updateMember:o,readMemberImage:n}=e;return [U("GET","read/members",async s=>{let a=uc(s.query),i=a[a.mode]||[],c=a.mode==="whole";if(!c&&i.length===0)throw new T(400,`The request is missing the '${a.mode}' parameter.`);if(!c&&i.length>20&&!a.variant)throw new T(400,`You can look for up to 20 '${a.mode}' in a single request.`);return t(a)}),U("GET","search/members",s=>{let a=Gt(s.query);return r(a)}),U("POST","update/member",s=>{let{body:a}=s;return o(a)},[z.EDITOR]),U("GET","member/image",s=>{let a=G(s.query.size)[0];return n({member:ee(s.query.member),size:a&&a==="splash"?"splash":"thumb"})})]}function uc(e){let t=G(e.locale)[0]||Be,r=t==="all"||zt(e.all),o=G(e.mode)[0],s=(G(e.output)[0]||"full")==="lite"?"lite":"full",a=parseInt(G(e.related)[0],10)||5,i=zt(e.allowNulls,{default:false}),c=G(e.variant).map(ee);if(c.length===0&&(c=G(e["variant[]"]).map(ee)),o==="ids")return {all:r,mode:o,variant:c,output:s,locale:r?Be:H(t),ids:G(e.ids||e["ids[]"]),allowNulls:i};if(o==="content_ids")return {all:r,mode:o,variant:c,output:s,locale:r?Be:H(t),content_ids:G(e.content_ids||e["content_ids[]"]).map(ee),allowNulls:false};if(o==="slugs")return {all:r,mode:o,variant:c,output:s,locale:r?Be:H(t),slugs:G(e.slugs||e["slugs[]"]).map(l=>{let[p,u]=l.split("/");return {variantSlug:p,memberSlug:u}}),allowNulls:false};if(o==="related")return {all:r,mode:o,locale:r?Be:H(t),related:a,current_ids:G(e.current_ids||e["current_ids[]"]).map(ee),include_ids:G(e.include_ids||e["include_ids[]"]).map(ee),report_ids:G(e.report_ids||e["report_ids[]"]).map(ee),dimension_ids:G(e.dimension_ids||e["dimension_ids[]"]).map(ee),variant_ids:G(e.variant_ids||e["variant_ids[]"]).map(ee),output:s,allowNulls:false};if(o==="whole")return {all:r,mode:o,variant:c,locale:r?Be:H(t),output:s,allowNulls:i};throw new T(400,`Invalid mode: '${o}'`)}function Gt(e){let t=G(e.locale)[0]||Be||"en",r=t==="all",o=G(e.format)[0],n=o?o==="nested":r,s=G(e.variant).map(ee);s.length===0&&(s=G(e["variant[]"]).map(ee));let a=G(e.dimension).map(ee);a.length===0&&(a=G(e["dimension[]"]).map(ee));let i=G(e.report).map(ee);i.length===0&&(i=G(e["report[]"]).map(ee));let c=e.origin==="typesense"?"typesense":"flexsearch";return {query:G(e.query||e.q)[0]||"",locale:r?Be:t,preferredLocale:G(e.preferredLocale)[0],limit:G(e.limit).map(ee)[0]??5,format:n?"nested":"plain",includes:zt(e.includes,{default:true}),visible:zt(e.visible,{default:true}),noImage:zt(e.noImage,{default:false}),variant:s,dimension:a,report:i,all:r,sort:G(e.sort)[0],direction:G(e.direction)[0],offset:Number(e.offset||0),origin:c}}async function Cn(e,t){let r=Tt(e),o=Gt({query:t.prompt,limit:"50",visible:"false"}),s=(await r(o)).results.filter(a=>a.image_id).map(a=>({id:a.image_id,source:`/api/cms/member/image?member=${a.content_id}&size=thumb`}));return {meta:{prompt:H(o.query)},results:s}}async function Bn(e,t){let{search:r}=e,{content_id:o,image_id:n}=t;await r.update({image_id:n},{where:{content_id:o}});let s=await r.findOne({where:{content_id:o},include:Se}).then(a=>a?{...a.toJSON(),image:{...a.image.toJSON(),thumb:!!a.image.thumb}}:null);return {meta:{id:n,content_id:o},results:s}}if(typeof window<"u")throw new Error("unsplash.ts can only be imported on the server side");var{locales:mc}=K(),Kt;if(process.env.UNSPLASH_API_KEY)try{Kt=createApi({accessKey:process.env.UNSPLASH_API_KEY});}catch(e){throw console.error("Unsplash error:",e),new Error(e.message)}async function Ln(e,t){try{let r={prompt:t.prompt||"",page:t.page||1};if(!Kt)throw new Error("Unsplash API Key not configured");let o=r.prompt,s=(await Kt.search.getPhotos({query:o,perPage:24,page:r.page,orientation:"landscape"}).then(a=>a.response.results)).map(a=>({id:a.id,source:a.urls.thumb}));return {meta:{prompt:H(r.prompt),page:H(`${r.page}`)},results:s}}catch(r){throw console.error(r),new Error("Error in search unsplash provider")}}async function Mn(e,t){try{let{content_id:r,image_id:o}=t,n={content_id:H(`${r}`)||"",id:H(`${o}`)||""};if(!Kt)throw console.warn("Unsplash is not initialized. Check the credentials"),new Error("Unsplash is not initialized. Check the credentials");let s=await Kt.photos.get({photoId:o}).then(i=>i.response),a;if(s){let i=await e.search.findOne({where:{content_id:r}}),c=s.links.html,l=await e.image.findOne({where:{url:c}});if(i){if(l)await e.search.update({image_id:l.id},{where:{content_id:r}});else {let u=await kr.get(s.urls.full,{responseType:"arraybuffer"}).then(h=>h.data),m={url:c,author:s.user.name||s.user.username,license:"Free Unsplash license: https://unsplash.com/license"},f=await e.image.create(m);await e.image_content.destroy({where:{id:f.id}});let d=mc.map(h=>({id:f.id,locale:h,meta:s.description||s.alt_description}));await e.image_content.bulkCreate(d),await e.search.update({image_id:f.id},{where:{content_id:r}}),await ve(e,f.id,u);}let p=await e.search.findOne({where:{content_id:r},include:Se});p&&p.image&&(p.image.thumb=!!p.image.thumb);}else throw new Error("Error updating Search")}else throw new Error("Malformed URL");return {meta:{...n},results:a}}catch(r){throw console.error(r),new Error("Error in save unsplash provider")}}if(typeof window<"u")throw new Error("upload.ts can only be imported on the server side");var{locales:yc}=K();async function On(e,t){try{let{content_id:r,image_source:o,files:n}=t,s={content_id:H(`${r}`)||""};if(await e.search.findOne({where:{content_id:r}})&&n){let c=await fc.readFileSync(n.file.filepath),l={url:o,author:"",license:""},p=await e.image.create(l);await e.image_content.destroy({where:{id:p.id}});let u=yc.map(m=>({id:p.id,locale:m,meta:""}));await e.image_content.bulkCreate(u),await e.search.update({image_id:p.id},{where:{content_id:r}}),await ve(e,p.id,c);}let i=await e.search.findOne({where:{content_id:r},include:Se});return i&&i.image&&(i.image.thumb=!!i.image.thumb),{meta:{...s},results:i}}catch(r){throw console.error(r),new Error("Error in save upload provider")}}if(typeof window<"u")throw new Error("adobe.ts can only be imported on the server side");var{locales:gc}=K();var Nn=async e=>{let t={"x-api-key":process.env.ADOBE_STOCK_API_KEY||"EMPTY_ADOBE_KEY","X-Product":"BespokeApp/0.1"};return t};var Ht;if(process.env.ADOBE_STOCK_API_KEY)try{Ht={search:async(e,t)=>await kr.get("https://stock.adobe.io/Rest/Media/1/Search/Files",{headers:await Nn(!1),params:{locale:"en_US","search_parameters[limit]":24,"search_parameters[offset]":t*24,"search_parameters[words]":e,"search_parameters[filters][content_type:photo]":"1","search_parameters[filters][content_type:image]":"1","search_parameters[filters][orientation]":"horizontal",result_columns:["id","stock_id","thumbnail_url","is_licensed"]}}).then(r=>r.data.files),get:async e=>await kr.get("https://stock.adobe.io/Rest/Media/1/Files",{headers:await Nn(!1),params:{locale:"en_US",ids:e,result_columns:["id","thumbnail_url","creator_name","title","thumbnail_1000_url","details_url","category"]}}).then(t=>t.data.files[0])};}catch{}async function Dn(e,t){try{let r={prompt:t.prompt||"",page:t.page||1};if(!Ht)throw new Error("Adobe API Key not configured");let n=(await Ht.search(r.prompt,r.page)).map(s=>({id:s.id,source:s.thumbnail_url}));return {meta:{prompt:H(r.prompt),page:H(`${r.page}`)},results:n}}catch(r){throw console.error(r),new Error("Error in search Adobe provider")}}async function Un(e,t){try{let{content_id:r,image_id:o}=t,n={content_id:H(`${r}`)||"",id:H(`${o}`)||""};if(!Ht)throw console.warn("Adobe is not initialized. Check the credentials"),new Error("Adobe is not initialized. Check the credentials");let s=await Ht.get(o),a;if(s){let i=await e.search.findOne({where:{content_id:r}}),c=s.details_url,l=await e.image.findOne({where:{url:c}});if(i){if(l)await e.search.update({image_id:l.id},{where:{content_id:r}});else {let u=await kr.get(s.thumbnail_1000_url,{responseType:"arraybuffer"}).then(h=>h.data),m={url:c,author:s.creator_name,license:"ADOBE, TO-DO"},f=await e.image.create(m);await e.image_content.destroy({where:{id:f.id}});let d=gc.map(h=>({id:f.id,locale:h,meta:s.title||s.description}));await e.image_content.bulkCreate(d),await e.search.update({image_id:f.id},{where:{content_id:r}}),await ve(e,f.id,u);}let p=await e.search.findOne({where:{content_id:r},include:Se});p&&p.image&&(p.image.thumb=!!p.image.thumb);}else throw new Error("Error updating Search")}else throw new Error("Malformed URL");return {meta:{...n},results:a}}catch(r){throw console.error(r),new Error("Error in save adobe provider")}}if(typeof window<"u")throw new Error("imageSave.ts can only be imported on the server side");var Rc={local:Bn,flickr:In,unsplash:Mn,upload:On,adobe:Un};function wt(e,t){let r=Rc[t];if(!r)throw new T(500,`Wrong provider dbImageSaveFactory.ts: ${t}`);return v(o=>r(e,o))}if(typeof window<"u")throw new Error("imageSearch.ts can only be imported on the server side");var hc={local:Cn,flickr:xn,unsplash:Ln,adobe:Dn};function jt(e,t){let r=hc[t];if(!r)throw new T(500,`Wrong provider dbImageSearchFactory.ts: ${t}`);return v(o=>r(e,o))}var wc=e=>(e.dimensions&&e.dimensions.forEach(t=>{t.variants&&t.variants.forEach(r=>{r.members_count&&(r.members_count=parseInt(r.members_count,10));});}),e);function Ar(e){let{report:t,search:r}=e;return o;async function o(n){let s=n?.report_id?Number(n.report_id):void 0,a=!(typeof n?.count<"u"&&(n.count==="false"||n.count===false)),i={attributes:["id","name",[literal("COALESCE(NULLIF(settings ->> 'order', '')::INTEGER, 0)"),"ordering"],[literal("COALESCE(NULLIF(settings ->> 'hide', '')::BOOL, false)"),"hide"]],where:{[Op.or]:[where(cast(json("settings.hide"),"boolean"),false),literal("NOT (settings::jsonb ? 'hide')")]},order:[["ordering","ASC"]],include:[{attributes:["id","name","ordering"],association:"dimensions",separate:true,order:[["ordering","ASC"]],include:[{attributes:["id","name","slug",[literal("COALESCE(NULLIF(settings ->> 'order', '')::INTEGER, 0)"),"ordering"]],association:"variants",separate:true,group:["variant.id"],order:[["ordering","ASC"]]}]}]};return s&&(i.where={...i.where,id:s}),a&&i.include&&i.include[0]&&(i.include[0].include[0].attributes.push([fn$1("COUNT",col("members.id")),"members_count"]),i.include[0].include[0].include=[{model:r,attributes:[],as:"members",where:{visible:true}}]),{data:(await t.findAll(i)).map(l=>({...wc(l.toJSON()),mode:l.dimensions.length===1?Pe.UNILATERAL:Pe.MULTILATERAL}))}}}function Fn(e){return async()=>(await et(e,true),{error:false})}var{locales:kc,localeDefault:Pc}=K(),xc=(e,t)=>{if(!e)return [];let r=[];return t.forEach(o=>{let n=e.filter(s=>s.metadata.report.id===o.id);if(n.length>0)if(o.mode===Pe.UNILATERAL){let s=o.dimensions[0];s.variants.forEach(a=>{let i=n.filter(c=>c.metadata.dimension.id===s.id&&c.metadata.variant.id===a.id);i.length>0&&(r=r.concat(i.map(c=>({path:`/${a.slug}/${c.slug}`,name:c.name,confidence:c.confidence,report:{id:o.id,name:o.name,mode:o.mode},members:[c],id:`r-${o.id}-${[c].map(l=>`${l.id}`).join("-")}`}))));});}else o.mode;}),r},Ic=(e,t)=>{if(!e)return [];let r,o,n;return e.map(s=>(r={...t.find(a=>a.id===s.report_id)},o={...r.dimensions.find(a=>a.id===s.dimension_id)},n={...o.variants.find(a=>a.id===s.variant_id)},delete r.dimensions,delete o.variants,{name:s.name,confidence:s.zvalue,metadata:{id:s.id,slug:s.slug,report:r,dimension:o,variant:n},id:s.content_id,slug:s.slug}))};function Vn(e){let t=Tt(e),r=Ar(e);return o;async function o(n){let s=n.format||"results",a=kc.includes(n.locale)?n.locale:Pc,i=n.origin||"flexsearch",c=process.env.REPORTS_EXTERNAL_SEARCH&&i==="typesense",l=await t({...n,format:"plain",locale:H(a),visible:true});if(c)return l;{let p=l.results?l.results:[],m=(await r()).data,f=Ic(p,m);return {meta:{...l.meta,origin:"flexsearch",format:s},results:xc(f,m)}}}}function qn(e){return async t=>{try{let{variantPaths:r}=t,o=[];if(r)for(let n=0;n<r.length;n++){let s=r[n];(await e.search.findAll({attributes:["slug"],where:{variant_id:s.variantId}})).forEach(i=>{o.push(`/${s.prefix}/${s.variantSlug}/${i.slug}`);});}return {...t,paths:o,revalidated:0,samples:[]}}catch(r){throw new T(r.response?.status||500,r.message)}}}function $n(){return async e=>{try{let{target:t}=e;return {target:t}}catch(t){throw new T(t.response?.status||500,t.message)}}}function ye(e,t){let r=[],o=s=>Object.values(t).reduce((i,c)=>("inputs"in c&&c.inputs.includes(s)&&(i.push(c.id),i=i.concat(o(c.id))),i),[]);e.forEach(s=>{r=r.concat(o(s));});let n=[];return r.forEach(s=>{n.includes(s)||n.push(s);}),n}function Cc(e,t){return e.some(r=>t.includes(`role.${r}`))}function zn(e){let{report:t}=e;return r;async function r(o){let n=await t.findByPk(o.report_id,{include:{association:"sections",separate:true,where:{id:o.section_id},include:[{association:"blocks",separate:true,include:[{association:"contentByLocale",separate:true,where:{locale:{[Op.or]:[o.locale,"logic"]}}},{association:"inputs"},{association:"consumers"}]}]}}).then(a=>a&&a.sections&&Array.isArray(a.sections)?a.sections.reduce((i,c)=>{let l=c.blocks.map(p=>{let u=p.toJSON();return u.inputs=u.inputs.map(m=>m.id),u.consumers=u.consumers.map(m=>m.id),u});return i.concat(l)},[]):[]),s=n.filter(a=>a.settings&&a.settings.access&&Array.isArray(a.settings.access)&&Array.isArray(o.roles)&&(a.settings.access.includes("private")||Cc(o.roles,a.settings.access))).map(a=>a.id);return s=s.concat(ye(s,n)),{params:{...o},data:n.filter(a=>s.includes(a.id))}}}var Mc=Object.keys(ao).filter(e=>e.indexOf("Icon")===0);async function Gn(){return {meta:{provider:"tabler"},results:Mc}}async function Kn(e){let t=ao[e.name]?ao[e.name]:()=>"";return renderToString(createElement(t))}var Oc={tabler:Gn};function Hn(e){let t=Oc[e];if(!t)throw new T(500,`Wrong provider dbListIconsFactory.ts: ${e}`);return v(()=>t())}var Nc={tabler:Kn};function jn(e){return v(t=>{let r=Nc[e];if(!r)throw new T(500,`Wrong provider dbReadIconFactory.ts: ${t.provider}`);return r({name:t.name,provider:e})})}function Wn(){return e;async function e(){return {secrets:St()}}}function rt(e,t,r){return Ze().then(o=>{Object.assign(r,kt(o));})}function kt(e,t){let r={},o=qe(t||{providers:[]});return t&&o.actions&&o.source==="custom"?(r.searchRole=v(o.actions.searchRole()),r.searchUser=v(o.actions.searchUser()),r.readUser=v(o.actions.readUser()),r.updateUser=v(o.actions.updateUser())):o.source==="auth0"&&(r.searchRole=v(vo()),r.searchUser=v(Co()),r.readUser=v(Bo()),r.updateUser=v(Lo())),{..._n(e),searchReport:v(Vn(e)),readMetadata:v(Ar(e)),regenerateSearch:v(Fn(e)),imageFlickrSearch:jt(e,"flickr"),imageLocalSearch:jt(e,"local"),imageUnsplashSearch:jt(e,"unsplash"),imageAdobeSearch:jt(e,"adobe"),imageFlickrSave:wt(e,"flickr"),imageLocalSave:wt(e,"local"),imageUnsplashSave:wt(e,"unsplash"),imageUploadSave:wt(e,"upload"),imageAdobeSave:wt(e,"adobe"),urlProxy:Rr(e),searchRole:r.searchRole,searchUser:r.searchUser,readUser:r.readUser,updateUser:r.updateUser,updateMyData:v(Mo()),revalidateReport:v(qn(e)),revalidateUrl:v($n()),readPrivateBlocks:v(zn(e)),listTablerIcons:Hn("tabler"),readTablerIcon:jn("tabler"),readEnvSecrets:v(Wn())}}async function so(e){try{let t=new Dc.IncomingForm,r=await new Promise((o,n)=>{t.parse(e,(s,a,i)=>{if(s){console.error("Error in formidable parse function inside internal parseBody.ts",s),n(s);return}o({fields:a,files:i});});});return {...r.fields,files:r.files}}catch(t){return {error:t}}}function Le(e,t){let r=ue(e,"create",t),o=ue(e,"read",t),n=ue(e,"update",t),s=ue(e,"delete",t),a=ue(e,"updateBulk",t),i=ue(e,"createBulk",t);return [U("POST",`create/bulk/${t}`,c=>{let{body:l}=c,{files:p,...u}=l,m=Object.keys(u).map(f=>u[f]);return i(m)},[z.EDITOR]),U("POST",`create/${t}`,c=>{let{body:l}=c;return r(l)},[z.EDITOR]),U("GET",`read/${t}`,c=>{let l=c.query,p=G(l.id).map(ee);return o({id:p,include:zt(l.include)})}),U("POST",`update/${t}`,c=>{let{body:l}=c;return n(l)},[z.EDITOR]),U("POST",`update/bulk/${t}`,c=>{let{body:l}=c,{files:p,...u}=l,m=Object.keys(u).map(f=>u[f]);return a(m)},[z.EDITOR]),U("DELETE",`delete/${t}`,c=>{let l=ee(c.query.id);return s(l)},[z.EDITOR])]}function Jn(e){let{validateVariantSlug:t}=e;return [...Le(e,"variant"),U("GET","validate/variant",r=>{let o=r.query,n=ee(o.dimension);return t({dimension:n,slug:fr(o.slug)})},[z.EDITOR])]}function Yn(e){return Le(e,"datasource").map(r=>({...r,roleRequired:[z.EDITOR]}))}function Pt(e,t){let r=`image${be(t)}Save`,o=e[r];return U("POST",`images/save/${t}`,n=>{let s=n.body;if(!s.content_id)throw new T(400,"Missing 'content_id' parameter.");if(!s.image_id)throw new T(400,"Missing 'image_id' parameter.");return o(s)},[z.EDITOR])}function Wt(e,t){let r=`image${be(t)}Search`,o=e[r];return U("GET",`images/search/${t}`,async n=>{let s=G(n.query.prompt)[0];if(!s)throw new T(400,"Empty 'prompt' param.");return o({prompt:s,page:ee(n.query.page)})},[z.EDITOR])}function Qn(e){let{readMetadata:t}=e;return U("GET","read/metadata",r=>t(r.query))}function Zn(e){let{regenerateSearch:t}=e;return U("POST","search/regenerate",()=>t(void 0),[z.EDITOR])}function Xn(e){let{searchReport:t}=e;return U("GET","search/reports",r=>{let o=Fc(r.query);return t(o)})}function Fc(e){return {...Gt(e),format:G(e.format)[0]}}function ea(e){let{urlProxy:t}=e;return U("GET","url/proxy",(r,o,n)=>{let{url:s,method:a="GET",wrapper:i="true"}=r.query;if(!s)throw new T(400,"Missing URL parameter");let c=[];return n&&n.user&&n.user.bespoke_roles&&(c=n.user.bespoke_roles),t({url:Array.isArray(s)?s.join(","):s,method:G(a)[0]==="POST"?"POST":"GET",user_roles:c,wrapper:i!=="false",session:n})})}function ta(e){let{readMetadata:t,revalidateReport:r}=e;return U("GET","revalidate/report",async(o,n)=>{let{reportId:s,profilePrefix:a}=o.query;if(!s||!a)throw new T(400,"Missing URL parameter in revalidate factory: reportId or profilePrefix");try{let i=parseInt(`${s}`,10),c=`${a}`.split("/").filter(d=>d!=="").join("/"),l=[],p=await t({}).then(d=>d.ok?d.data.data.find(h=>h.id===i):[]);p&&p.mode===Pe.UNILATERAL&&p.dimensions.forEach(d=>{d.variants.forEach(h=>{l.push({prefix:c,variantId:h.id,variantSlug:h.slug});});});let u=await r({profilePrefix:c,reportId:i,variantPaths:l}),m=[],f=0;return u.ok&&(f=u.data.paths.length,m=u.data.paths.slice(0,5),Promise.all(u.data.paths.map(d=>{let h;try{h=n.revalidate(d,{unstable_onlyGenerated:!0});}catch(y){console.error("error",d,y);}return h}))),{ok:!0,status:200,data:{reportId:s,revalidated:f,samples:m}}}catch(i){throw console.error(i),new T(500,"Error revalidating")}},[z.EDITOR])}function ra(){return U("GET","revalidate/url",async(e,t)=>{let{target:r}=e.query;if(r)try{return t.revalidate(r,{unstable_onlyGenerated:!0}),{ok:!0,status:200,data:{target:r}}}catch(o){throw console.error(o),new T(500,"Error revalidating")}else throw new T(400,"Missing target parameter in revalidate factory")},[z.ADMIN,z.EDITOR,z.WRITER])}var{localeDefault:Vc}=K();function oa(e){let{readPrivateBlocks:t}=e;return U("POST","read/blocks/private",(r,o,n)=>{let s={report_id:parseInt(r.body.report_id,10),locale:r.body.locale||Vc,roles:n&&n.user?n.user.bespoke_roles:[],section_id:r.body.section_id||[]};return t(s)},[])}function na(e){let{readEnvSecrets:t}=e;return U("GET","read/secrets",()=>t({}),[z.EDITOR])}function aa(e){let{searchRole:t}=e;return U("GET","auth/search/roles",(r,o)=>t(""),[z.EDITOR,z.ADMIN])}function sa(e){let{searchUser:t}=e;return U("GET","auth/search/users",r=>t({query:r.query.query,role_id:r.query.role_id,page:r.query.page||0}),[z.ADMIN])}function ia(e){let{readUser:t}=e;return U("GET","auth/read/user",r=>t(r.query.user_id),[z.ADMIN])}function ca(e){let{updateUser:t}=e;return U("POST","auth/update/user",async r=>{let o=r.body;return await t(o)},[z.ADMIN])}function la(e){let{updateUser:t,readUser:r}=e;return U("POST","auth/update/me",async(o,n,s)=>{let{report_id:a,user_metadata:i}=o.body,c={user_id:s.user.id,user_metadata:{}};try{let{user:l}=s;return s&&l&&a&&(l.bespoke_app_metadata&&l.bespoke_app_metadata.reports&&Array.isArray(l.bespoke_app_metadata.reports)?c.app_metadata={...l.bespoke_app_metadata}:c.app_metadata={reports:[]},c.app_metadata.reports.push({reportId:a})),i&&(c.user_metadata={...l.bespoke_app_metadata,...i}),await t(c),{ok:!0,status:200,wrapper:!0,data:{ok:!0,message:"User & session updated"}}}catch(l){return {ok:false,status:500,error:l.message}}},[])}async function qc(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 ua(){return U("POST","pdf",async(e,t)=>{let{slugs:r,path:o}=e.body;if(!r||!o)throw new T(400,"Missing path parameter in request.");{new URL(o,e.headers.origin);return {ok:true,status:200,data:await qc()}}})}function pa(e,t){let r=`list${be(t)}Icons`,o=e[r];return U("GET",`list/icons/${t}`,async()=>o({}),[z.EDITOR])}function da(e,t){let r=`read${be(t)}Icon`,o=e[r];return U("GET",`read/icons/${t}/icon.svg`,async n=>o({provider:t,name:n.query.name}))}function ma(){return U("GET","report",async(e,t)=>{let{report:r,prefix:o,locale:n}=e.query;if(!r)throw new T(400,"Missing report parameter.");if(!o)throw new T(400,"Missing report parameter.");if(!n)throw new T(400,"Missing report parameter.");try{let a=await(await fetch(`${process.env.NEXT_PUBLIC_REPORTS_BASE_URL}/${n}${o}${r}`)).text(),l=new $c().parseFromString(a,"text/html").getElementById("__NEXT_DATA__")?.textContent,p=JSON.parse(l).props;return {ok:!0,status:200,data:{variables:p.pageProps.initialState.variables,status:p.pageProps.initialState.status}}}catch(s){throw console.error(s),new T(500,"Couldn't find page cache")}})}var Kc=ke();function io(e,t){return `${e.toUpperCase()} ${t.toLowerCase()}`}function Hc(e,t){let r=kt(e,t);return Object.fromEntries([...Le(r,"block"),...Le(r,"dimension"),...Le(r,"formatter"),...Le(r,"report"),...Le(r,"section"),...Yn(r),...Jn(r),...vn(r),Xn(r),Qn(r),Zn(r),Pt(r,"flickr"),Pt(r,"local"),Pt(r,"unsplash"),Pt(r,"upload"),Pt(r,"adobe"),Wt(r,"flickr"),Wt(r,"local"),Wt(r,"unsplash"),Wt(r,"adobe"),ea(r),aa(r),sa(r),ia(r),ca(r),la(r),ta(r),ra(),oa(r),ua(),pa(r,"tabler"),da(r,"tabler"),ma(),na(r)].map(({handler:o,method:n,path:s,roleRequired:a})=>[io(n,s),{handler:o,roleRequired:a}]))}function jc(e){return (t,r,o)=>new Promise((n,s)=>{e(o)(t,r,a=>a instanceof Error?s(a):n(a));})}var Wc=jc(zc);function Jc(e){let t=Ze().then(r=>Hc(r,e));return async function(o,n){await Wc(o,n,{methods:["GET","HEAD","PUT","PATCH","POST","DELETE"],origin:"*"});let{query:s,method:a}=o,{path:i,...c}=s;if(i&&a){let l=await t.then(p=>{let u=[].concat(i).join("/"),m=io(a,u);return p[m]});if(l){let p=await he(o,n,e);if(l.roleRequired){if(!p)return n.status(401).json({error:"Unauthorized. Must be logged in."});let u=p&&p.user&&p.user.bespoke_roles&&Array.isArray(p.user.bespoke_roles)?p.user.bespoke_roles:[];if(Array.isArray(l.roleRequired)&&l.roleRequired.length>0&&!nr(u,l.roleRequired))return n.status(402).json({error:"Forbidden. Not enough roles."})}if(l.handler)return ["POST","DELETE"].includes(a)&&(o.body=await so(o)),Promise.resolve(o).then(u=>l.handler(u,n,p||void 0)).then(async u=>{if(u&&"error"in u)throw new T(u.status,u.error);if(u.ok)if(u.data instanceof Buffer){let m=await Gc(u.data),f=Buffer.byteLength(u.data);n.writeHead(u.status,{"Content-Type":m?m.mime:"image/jpeg","Content-Length":f.toString()}).send(u.data);}else o.url&&o.url.indexOf("/icon.svg?name=")>0?(n.setHeader("Content-Type","image/svg+xml"),n.status(u.status).send(u.data)):n.status(u.status).json(u.wrapper?{data:u.data}:u.data);}).catch(u=>{Kc&&console.error("Backend Error",u),n.status(u.code).json({error:u.message});})}}else i||await t.then(console.info);return n.status(404).json({error:"No matching route",path:i,query:c})}}var Yc=e=>{let t=e;return async function(r,o){let n=await t({test:"pala"});return o.json(n)}},Qc=Yc;var ut={};os(ut,{addBlockToState:()=>rr,addRunConsumersRunning:()=>za,cloneEntity:()=>Na,createEntity:()=>La,deleteEntity:()=>Oa,deleteQueryParam:()=>tu,readEntity:()=>oe,readEnvSecrets:()=>du,readMember:()=>Ue,readMetadata:()=>tr,readPrivateBlocks:()=>lu,readUser:()=>su,recalculateVariables:()=>Ha,removeBlocksFromState:()=>Fe,removeDataSourceLogic:()=>or,removeRunConsumersRunning:()=>Ga,reportSearch:()=>Zl,resetSectionState:()=>$a,revalidateReport:()=>pu,revalidateUrl:()=>uu,searchMember:()=>eu,searchRegenerate:()=>Xl,searchRole:()=>nu,searchUser:()=>au,setCurrentLocale:()=>Jl,setPreferredLocale:()=>Yl,setPreviews:()=>Wl,setQueryParam:()=>ru,setSectionState:()=>qa,setStatus:()=>Va,updateEntity:()=>Ma,updateMyData:()=>cu,updateUser:()=>iu,urlProxy:()=>ou,variantValidateSlug:()=>Ql});function ge(e,t){return e.request(t).then(r=>{let{status:o,data:n}=r;return "error"in n?{ok:false,status:o,error:n.error}:{ok:true,status:o,wrapper:n.wrapper,data:n.data}},r=>{if("isAxiosError"in r){let{status:o,data:n}=r.response||{status:500};return {ok:false,status:o,error:n?.error??r.message}}return {ok:false,status:500,error:r.message}})}function te(e,t,r){let o=typeof t=="string"?{url:t}:t;return n=>ge(e,{...o,method:"GET",params:r?r(n):n})}function re(e,t,r){let o=typeof t=="string"?{url:t}:t;return n=>ge(e,{...o,method:"POST",data:n})}function Me(e,t,r){let o=typeof t=="string"?{url:t}:t;return n=>ge(e,{...o,method:"DELETE",params:r?r(n):n})}function xt(e,t){return r=>ge(e,{method:"POST",url:`images/save/${t}`,params:{prompt:r.prompt,provider:t}})}function Jt(e,t){return r=>ge(e,{method:"GET",url:`images/search/${t}`,params:{prompt:r.prompt,page:r.page,provider:t}})}function fa(e,t){return ()=>ge(e,{method:"GET",url:`list/icons/${t}`,params:{provider:t}})}function ya(e,t){return r=>ge(e,{method:"GET",url:`read/icons/${t}/icon.svg`,params:{name:r.name}})}var ot=e=>({id:e}),Xc=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 Yt(e){let t=kr.create({baseURL:e});return {createBulkBlock:re(t,"create/bulk/block"),createBlock:re(t,"create/block"),createDimension:re(t,"create/dimension"),createFormatter:re(t,"create/formatter"),createReport:re(t,"create/report"),createSection:re(t,"create/section"),createVariant:re(t,"create/variant"),createDatasource:re(t,"create/datasource"),deleteBlock:Me(t,"delete/block",ot),deleteDimension:Me(t,"delete/dimension",ot),deleteFormatter:Me(t,"delete/formatter",ot),deleteReport:Me(t,"delete/report",ot),deleteSection:Me(t,"delete/section",ot),deleteVariant:Me(t,"delete/variant",ot),deleteDatasource:Me(t,"delete/datasource",ot),readBlock:te(t,"read/block"),readDimension:te(t,"read/dimension"),readFormatter:te(t,"read/formatter"),readReport:te(t,"read/report"),readSection:te(t,"read/section"),readVariant:te(t,"read/variant"),readDatasource:te(t,"read/datasource"),updateBulkBlock:re(t,"update/bulk/block"),updateBlock:re(t,"update/block"),updateDimension:re(t,"update/dimension"),updateFormatter:re(t,"update/formatter"),updateReport:re(t,"update/report"),updateSection:re(t,"update/section"),updateVariant:re(t,"update/variant"),updateDatasource:re(t,"update/datasource"),searchReport:te(t,"search/reports"),validateVariantSlug:te(t,"validate/variant"),readMember:te(t,"read/members",Xc),readMemberImage:te(t,{url:"member/image",responseType:"blob"}),searchMember:te(t,"search/members"),updateMember:te(t,"update/members"),imageLocalSearch:Jt(t,"local"),imageLocalSave:xt(t,"local"),imageFlickrSearch:Jt(t,"flickr"),imageFlickrSave:xt(t,"flickr"),imageUnsplashSearch:Jt(t,"unsplash"),imageUnsplashSave:xt(t,"unsplash"),imageUploadSave:xt(t,"upload"),imageAdobeSearch:Jt(t,"adobe"),imageAdobeSave:xt(t,"adobe"),readMetadata:te(t,"read/metadata"),regenerateSearch:re(t,"search/regenerate"),urlProxy:te(t,"url/proxy"),searchRole:te(t,"auth/search/roles"),searchUser:te(t,"auth/search/users"),readUser:te(t,"auth/read/user"),updateUser:re(t,"auth/update/user"),updateMyData:re(t,"auth/update/me"),revalidateReport:te(t,"revalidate/report"),revalidateUrl:te(t,"revalidate/url"),readPrivateBlocks:re(t,"read/blocks/private"),listTablerIcons:fa(t,"tabler"),readTablerIcon:ya(t,"tabler"),readEnvSecrets:te(t,"read/secrets")}}var rl=zt(process.env.REPORTS_LOGGING),nt=ol;function ol(e,t,r,o,n=void 0,s){let a={},i=[],{locale:c}=me(s);try{if(t){let l=new Proxy(console,{get(u,m){return nl(m,"log","debug","info","warn","error")?(...f)=>{i.push(`${m} ${Date.now()} - ${f.map(d=>format(d)).join(" ")}`),rl&&u[m](...f);}:u[m]}}),p;return n?p=new Function(e,"console","libs","formatters","locale","variables",r)(t,l,He,o,c,n):p=new Function(e,"console","libs","formatters","locale",r)(t,l,He,o,c),typeof p=="object"&&Object.keys(p).length>0&&Object.assign(a,p),{vars:a,error:null,log:i,output:p}}return {vars:a,error:"Invalid API Link",log:i}}catch(l){return {vars:a,error:l.message,log:i}}}function nl(e,...t){return t.includes(e)}var co=(e,t,r)=>{let{variables:o}=r,n=a=>a.allowed==="never"?false:!a.allowed||a.allowed==="always"||o[a.allowed],s={...e};return Object.keys(s).forEach(a=>{typeof s[a]=="string"?s[a]=fe(s[a],t,r):Array.isArray(s[a])?s[a]=s[a].filter(n).map(i=>typeof i=="object"?co(i,t,r):typeof i=="string"?fe(i,t,r):i):typeof s[a]=="object"&&s[a]!==null&&!(s[a]instanceof Date)&&(s[a]=co(s[a],t,r));}),s},Tr=co;var ga=e=>Array.isArray(e)?e.map(t=>typeof t=="string"?{allowed:"always",label:t,id:t}:{allowed:"always",label:t.id,...t}):[];var al=(e,t,r)=>{if(!r)return false;if(e===We.SINGLE)return r.find(n=>n.id===t);let o=Array.isArray(t)?t:t.split(",");return Array.isArray(o)&&o.every(n=>r.map(s=>s.id).includes(n))},lo=al;function uo(e,t,r,o,n=false){let{variables:s}=me(o),a=Tr({logic:t},r,o).logic,i=nt("variables",s,a,r,void 0,o),{vars:c,log:l,error:p}=i,u=c.type||We.SINGLE,m=c.component||"Selector",f=c.hideLabel||"false",d=c.resetSectionVars||"false",h=c.name||"Unlabeled Selector",y=ga(c.options||[]),S=w=>u===We.MULTI&&!Array.isArray(w)?[w]:w,x=c.defaultValue,P;if(x&&(x=S(x),lo(u,x,y)&&(P=x)),!P){let w=y&&y[0]&&y[0].id||y[0]||"";P=S(w);}if(n&&typeof window<"u"){let w=`selector${e}id`,q=new URLSearchParams(window.location.search),N=Object.fromEntries(q)[w];N&&!lo(u,N,y)&&N!==void 0&&(q.delete(w),window.history.replaceState(null,null,`?${q.toString()}`));}return {config:{name:h,type:u,options:y,defaultValue:P,component:m,hideLabel:f,resetSectionVars:d},log:l,error:p}}function po(e,t,r){if(!e)return false;let o=Array.isArray(r)?r:r.split(",");return Array.isArray(o)&&o.every(n=>e.map(s=>`${s[`${t} ID`]}`).includes(n))}function mo(e,t,r,o,n=false){let{variables:s}=me(o),a=Tr({logic:t},r,o).logic,i=nt("variables",s,a,r,void 0,o),{vars:c,log:l,error:p}=i;if(n&&typeof window<"u"){let m=`multihierarchySelector${e}-value`,f=`multihierarchySelector${e}-type`,d=new URLSearchParams(window.location.search),h=Object.fromEntries(d),y=h[m],S=h[f];y&&y!==void 0&&S&&S!==void 0&&!po(c.data,S,y)&&(d.delete(m),d.delete(f),window.history.replaceState(null,null,`?${d.toString()}`));}return {config:c,log:l,error:p}}var sl=(e,t,r)=>{let o=`selector${e}id`,n=new URLSearchParams(typeof location<"u"&&location?.search?location.search:"").get(o),s=new URLSearchParams(t).get(o),a=n||s;if(r.type===We.MULTI){let l=a?a.split(","):r.defaultValue,p=r.options.filter(u=>l.includes(u.id));return {[`selector${e}id`]:l,[`selector${e}label`]:(p||[]).map(u=>u.label)}}let i=a&&r.options.find(l=>l.id===a)?a:r.defaultValue,c=r.options.find(l=>l.id===i);return {[`selector${e}id`]:i,[`selector${e}label`]:c&&c.label||void 0}},Ra=sl;var il=(e,t,r)=>{let o=`multihierarchySelector${e}-value`,n=`multihierarchySelector${e}-type`,s=new URLSearchParams(typeof location<"u"&&location?.search?location.search:"").get(o),a=new URLSearchParams(typeof location<"u"&&location?.search?location.search:"").get(n),i=new URLSearchParams(t).get(o),c=new URLSearchParams(t).get(n),l=s||i,p=a||c,u=l?l.split(","):r.defaultValue||[],m=p||r.defaultValueType||"",f=r.data?.filter(d=>u.includes(`${d[`${m} ID`]}`))||[];return {[`multihierarchySelector${e}id`]:u,[`multihierarchySelector${e}label`]:[...new Set((f||[]).map(d=>d[m]))],[`multihierarchySelector${e}type`]:m}},ha=il;var{localeDefault:ba,locales:cl}=K(),ll=Object.values(jr),ul=(e,t=ba)=>e&&ll.includes(e.type)?{locale:Wr,locales:[Wr]}:{locale:t,locales:cl},Sa=(e,t=ba)=>{if(!e)return {};let{locale:r}=ul(e,t);return e.contentByLocale?.[r]?.content};function pl(e,t){let r=Object.values(t),o=r.filter(n=>n.shared&&n.section_id!==e).map(n=>n.id);return Object.fromEntries(r.filter(n=>n.section_id===e&&(n.inputs.length===0||n.inputs.some(s=>o.includes(s)))).map(n=>[n.id,n]))}var Ea=pl;function fo(e){return e.type===O.SECTION_FLAG&&e.inputs.length===0&&e.consumers.length===0}var Oe=zt(process.env.NEXT_PUBLIC_REPORTS_DEBUG),Rl=process.env.REPORTS_ORIGIN||"",hl=process.env.NEXT_PUBLIC_REPORTS_AXIOS_RETRIES,wa=5;try{wa=parseInt(`${hl||5}`,10);}catch(e){console.error("Error setting axios retries NEXT_PUBLIC_REPORTS_AXIOS_RETRIES defaults to 5",e);}Aa(kr,{retries:wa,retryDelay:Aa.exponentialDelay,onRetry:(e,t,r)=>{console.error("Generator request failed. Retrying... Count: ",e),console.error("URL: ",r.url),console.error(t.message);}});kr.interceptors.request.use(e=>({...e,requestStart:Date.now()}));kr.interceptors.response.use(e=>({...e,requestDuration:new Date().getTime()-e.config.requestStart}),e=>Promise.reject(e));var bl=(e,t,r)=>{let o=fe(e,t,r);return o.startsWith("http")||(o=`${Rl}${o.startsWith("/")?"":"/"}${o}`),o},{urlProxy:Sl}=Yt("/api/cms");function wr(e){return e.ok!==void 0}function _r(e){this.message=e,this.name="ApiFetchException";}var Ta=process.env.NEXT_PUBLIC_REPORTS_API_FETCH_TIMEOUT||0;async function El(e,t,r="en",o,n){let s=Date.now(),a=e,i,c=pe(),l=St(),p={envs:{...c,...l}},u=new URL(e),m=new URLSearchParams(u.searchParams.toString());m.has("bespoke_slugs")&&(u.searchParams.delete("bespoke_slugs"),a=u.toString());let f={datasource:void 0};o.find(x=>{if(!x.content?.pattern)return false;try{let P=new RegExp(x.content.pattern,"gm");return P.test(a)?(f.datasource=x,!0):P.test(a)}catch{return false}});let d=n?n.settings:{},h=!!(d&&d.useProxy&&d.useProxy==="true"),y=f.datasource&&typeof f.datasource.content.useProxy=="boolean"?f.datasource.content.useProxy:false,S=`${process.env.NEXT_PUBLIC_REPORTS_BASE_URL}/api/cms/url/proxy?url=${encodeURIComponent(a)}`;if(typeof window=="object"&&(h||y)){let x=await Sl({url:a,timeout:Ta});if(x.ok===true)i=x.data;else throw new _r(x?.error)}else try{let P={url:a,timeout:Ta};if(f.datasource){let w=p;if(typeof window<"u")try{let N=await getSession();if(N){let _={user:N.user,status:"authenticated",isLoading:!1,update:async()=>N};w={...p,session:_};}}catch(N){console.warn("Could not retrieve user session:",N);}let B=await gr({vars:["url","libs","session"],logic:f.datasource.content.logic},w)(a);if(B.axiosConfig)P=B.axiosConfig;else throw new _r(`AxiosConfig is missing in Data Source ${f.datasource.name} (ID: ${f.datasource.id}).`)}let F=await kr(P);if(F.status===200)F.headers["content-type"]==="text/csv"?i=csvParse(F.data):i=F.data;else throw new _r("No response for: "+a)}catch(x){throw new _r(x.message)}if(m.has("bespoke_slugs")){let x=m.get("bespoke_slugs");if(x){let P=x.split(",");if(P.length===3){let[F,w,q]=P,B=Lt(i,q);if(B&&Array.isArray(B)){let N=Array.from(new Set(B.map(_=>`${_[w]}`).filter(_=>!["","undefined"].includes(_))));if(N.length>0){let _=N.join("").length>2e3,L=await t({mode:_?"whole":"ids",ids:_?void 0:N,all:false,locale:r,variant:[parseInt(F,10)],output:"lite",limit:N.length+1,allowNulls:true}).then(D=>{let C=[];return wr(D)?D.ok&&(C=D.data.results):C=D.results,C&&Array.isArray(C)?C:[]}).catch(D=>(console.error(`Error hydrating slugs for Variant: ${F}, Key: ${w}, Accessor: ${q}`),console.error(` Url ${e}`),n&&console.error(` From Section ${n.section_id} and Block ${n.id}`),console.error(D),[]));if(L){let D=Object.fromEntries(L.map(C=>[C.id,`/${C.variant_slug}/${C.slug}`]));B.map(C=>(C.bespoke_slug=D[C[w]]?D[C[w]]:null,C));}}}}}}return {data:i,requestDuration:Date.now()-s,finalUrl:y||h?S:a,apiDataSource:f.datasource?f.datasource:false}}function Al(e){this.name="BlockException",this.message=e;}async function _a(e,t,r,o,n){let{locale:s,variables:a,query:i}=me(r),c=_l(e,r,a,t),l=null,p=e.contentByLocale?.logic?.content?.api,u=null,m=null,f=null,d,h;if(!c)return {outputVariables:{},renderVariables:{},status:{allowed:false,hiddenByCascade:e.id}};if(e.type===O.FALLBACK)return {outputVariables:{},renderVariables:{},status:{allowed:c,hiddenByCascade:e.id}};if(p){f=bl(p,t,r);let B=f.split("|||").filter(L=>L!==""),N=[];for(let L=0;L<B.length;L++){let D=B[L];new RegExp("^(?:[a-z+]+:)?//","i").test(f)||(D=`${process.env.NEXT_PUBLIC_REPORTS_BASE_URL}/${D}`.replace(/([^:]\/)\/+/g,"$1")),N.push(El(D,o,s,n,e).catch($=>{throw new Al(` Excecution of ${e.type}-${e.id} in section ${e.section_id} in report ${a.report_name} (${a.report_id}) failed.
|
|
26
|
-
Error fetching ${
|
|
27
|
-
Message: ${
|
|
28
|
-
`)}));}let _=await Promise.all(N).catch(L=>L.message);if(typeof _=="string"&&_)return {outputVariables:{},renderVariables:{},status:{error:_}};l=_.length===1?_[0].data:_.map(L=>L.data),m=_.reduce((L,D)=>L+JSON.stringify(D.data).length/1024,0),u=Math.max(..._.map(L=>L.requestDuration)),d=_.map(L=>L.apiDataSource?`${L.apiDataSource.name} (${L.apiDataSource.id})`:null),h=_.map(L=>L.finalUrl);}if(e.type===O.SELECTOR){let{config:B,log:N,error:_}=uo(e.id,e.contentByLocale[s].content.logic,t,r,true);return {outputVariables:Ra(e.id,i,B),renderVariables:B,status:{log:N,error:_,allowed:c}}}if(e.type===O.MULTIHIERARCHY_SELECTOR){let{config:B,log:N,error:_}=mo(e.id,e.contentByLocale[s].content.logic,t,r,true);return {outputVariables:ha(e.id,i,B),renderVariables:B,status:{log:N,error:_,allowed:c}}}if(e.type===O.VIZ)return {outputVariables:{},renderVariables:e.contentByLocale.logic.content,status:{log:[],allowed:c}};if(e.type===O.RELATED){let B=e.contentByLocale?.logic?.content?.simple?.compare||"variant",N=e.contentByLocale?.logic?.content?.simple?.limit||4,_=Object.keys(a).filter(b=>b.startsWith("report_id")).map(b=>a[b]),L=Object.keys(a).filter(b=>b.startsWith("dimension_id")).map(b=>a[b]),D=Object.keys(a).filter(b=>b.startsWith("variant_id")).map(b=>a[b]),C=Object.keys(a).filter(b=>b.startsWith("id")).map(b=>a[b]);if(!C.length)return {outputVariables:{related_reports:[]},renderVariables:{},status:{log:[],allowed:false}};let $=await Promise.all(C.map((b,A)=>o({mode:"ids",locale:s,ids:[b],output:"lite",variant:[D[A]]}))).then(b=>b.flatMap(A=>{let I=[];return wr(A)?A.ok&&(I=A.data.results):I=A.results,I&&Array.isArray(I)?I:[]})).catch(b=>(console.error("Error getting related members",b),[]));if(L.length>1){let b=Object.keys(a).filter(V=>V.startsWith("variant_slug")).map(V=>a[V]),A=$.map((V,Q)=>{let j={mode:"related",locale:s,related:N??4,current_ids:[V.content_id],output:"full",variant_ids:[V.variant_id]};return Q===0&&(j.include_ids=[V.content_id]),j}),I=await Promise.all(A.map(V=>o(V))).then(V=>V.flatMap(Q=>{let j=[];return wr(Q)?Q.ok&&(j=Q.data.results):j=Q.results,j&&Array.isArray(j)?j:[]})).catch(V=>(console.error("Error getting related members",V),[])),ne=I.reduce((V,Q)=>{let j=Q.variant_slug;return V[j]||(V[j]=[]),V[j].push(Q),V},{}),ae=[],Z=Object.keys(ne),W=[{combination:[],index:0}];for(;W.length>0;){let V=W.pop();if(!V)continue;let{combination:Q,index:j}=V;if(j===Z.length){ae.push(Q);continue}let le=Z[j],se=ne[le];for(let ce of se)W.push({combination:[...Q,ce],index:j+1});}return {outputVariables:{related_reports:ae.map(V=>{let Q=V.sort((j,le)=>b.indexOf(j.variant_slug)-b.indexOf(le.variant_slug));return {entities:Q,link:"/"+Q.map(j=>`${j.variant_slug}/${j.slug}`).join("/")}})},renderVariables:{},status:{log:[],allowed:I.length>0}}}let M=$.map(b=>b.content_id),k={mode:"related",locale:s,related:N??4,current_ids:M,output:"full"};B&&(B==="report"?k.report_ids=_:B==="dimension"?k.dimension_ids=L:k.variant_ids=D);let J=await o(k).then(b=>{let A=[];return wr(b)?b.ok&&(A=b.data.results):A=b.results,A&&Array.isArray(A)?A:[]}).catch(b=>(console.error("Error getting related members",b),[]));return {outputVariables:{related_reports:J.map(b=>({entities:[b],link:`/${b.variant_slug}/${b.slug}`}))},renderVariables:{},status:{log:[],allowed:J.length>0}}}let{logic:y}=Sa(e,s),S=fe(y,t,r),x=nt("resp",l||{},S,t,a,r),{vars:P,error:F,log:w}=x;if(typeof P!="object")return {outputVariables:{},renderVariables:{},status:{error:"Configuration did not return an object",log:w,duration:u,responseSize:m,resp:l,api:f,allowed:c,apiFinalUrls:h,apiDataSources:d}};let q=Object.keys(P).reduce((B,N)=>({...B,[`${e.type}${e.id}${N}`]:P[N]}),{});return {renderVariables:P,outputVariables:[O.GENERATOR,O.SECTION_FLAG].includes(e.type)?P:q,status:{log:w,error:F,duration:u,responseSize:m,resp:l,api:f,allowed:c,apiFinalUrls:h,apiDataSources:d}}}function Tl(e,t,r,o,n,s,a){return e.consumers.forEach(i=>{if(t[i]){let c=`${r}-${i}`;!o.includes(c)&&(t[i].section_id===t[r].section_id||!n)&&o.push(c),e.consumers.filter(l=>t[l]&&t[l].section_id===t[r].section_id||!n).forEach(l=>yo(l,t,o,false,s,n,a));}})}var yo=(e,t,r=[],o=true,n=true,s=true,a=[])=>{if(a.includes(e))return [];a.push(e);let i=t[e];return i&&i.inputs.length&&o&&i.inputs.forEach(c=>{let l=`${c}-${e}`;r.includes(l)||r.push(l),i.inputs.forEach(p=>yo(p,t,r,o,false,s,a));}),i&&i.consumers.length&&n&&Tl(i,t,e,r,s,n,a),r},_l=(e,t,r,o)=>{let n=true;if(e&&"allowed"in e.settings&&e.settings.allowed!=="always")if(e.settings.allowed==="never")n=false;else {let s=me(t),{error:a,output:i}=nt("variables",r,e.settings.allowedLogic||"return false;",o,void 0,s);a||(n=!!i);}return n},It=async(e,t,r,o,n,s={},a,i="section",c)=>{let l=i==="section",p=me(n),u=p.variables,m={...s.variables??{}},f={...s.status??{}},d=new Set,h=[],y={};r?y={...y,[r]:e[r]}:t?y=(t??[]).reduce((M,{id:k})=>({...M,...Ea(k,e)}),{}):y=Object.values(e).filter(M=>fo(M)).reduce((M,k)=>({...M,[k.id]:k}),{});let S=Object.values(y).filter(M=>fo(M));if(S.length>0){Oe&&console.info("%crunConsumers: calculating section flags","color:purple",S.map(E=>E.id).join(", "));let M=Object.fromEntries(await Promise.all(S.map(async E=>[E.id,await _a(E,o,{...p,variables:u,locale:u.locale},a,c).then(b=>{let{outputVariables:A,status:I}=b;if(I.error){if(typeof window>"u")throw new Error(`Run consumers (Block: ${E.id}, Section ${E.section_id}) failed with message: ${I.error}. `);f[E.id]={allowed:false,error:I.error},m[E.id]={};}return (E.consumers.length>0||[O.GENERATOR,O.SECTION_FLAG,O.RELATED].includes(E.type))&&I.allowed&&Object.keys(A).length>0?m[E.id]=A:m[E.id]={},i==="report"?(f[E.id]={allowed:I.allowed},[O.GENERATOR,O.SECTION_FLAG].includes(E.type)&&I.api&&(f[E.id].api=I.api)):f[E.id]=I,b})]))),J=Object.entries(M).filter(([,E])=>!E.outputVariables[kn]).map(([E])=>Number(E));d=new Set(J.map(E=>e[E].section_id)),Object.values(y).filter(E=>d.has(E.section_id)).forEach(E=>{h.push(E.id),delete y[E.id];}),Oe&&console.info("%crunConsumers: removing sections","color:purple",d.keys());}let x=d.size>0?Object.fromEntries(Object.entries(e).filter(([,M])=>d?.has(M.section_id)?(h.includes(M.id)||h.push(M.id),false):true)):e;if(h.length>0&&(x=Object.fromEntries(Object.entries(x).map(([M,k])=>{let J={...k,inputs:k.inputs.filter(E=>!h.includes(E)),consumers:k.consumers.filter(E=>!h.includes(E))};return [M,J]}))),!r&&!t)return {variables:{...s.variables??{},...m},status:{...s.status??{},...f}};i==="report"&&h.length>0&&h.forEach(M=>{delete m[M],delete f[M],delete e[M];}),Oe&&console.info("%crunConsumers: running root blocks","color:purple",Object.keys(y));let P=Object.keys(y).reduce((M,k)=>{let J=new Date,E=yo(Number(k),x,[],!r,true,l).map(I=>I.split("-")),A=(new Date().getTime()-J.getTime())/1e3;return Oe&&console.info(`%cResolved dependencies for ${k} (${A.toFixed(2)}s)`,"color:blue"),[...M,...E]},[]),F=new Date,w=Object.keys(y).reduce((M,k)=>M.includes(k)?[...M]:[k,...M],ml(P)),B=(new Date().getTime()-F.getTime())/1e3;Oe&&console.info(`%cResolved DAG (${B.toFixed(2)}s): `,"color:green",w);let N=process.env.NEXT_PUBLIC_REPORTS_MAX_CONCURRENT_QUERIES_PER_REPORT,_=parseInt(`${N||0}`,10);async function L(M,k){let J=new Map,E=[],b=async()=>E.length;for(let A of M){if(_!==0){let Z=await b();for(;Z>=_;)Oe&&console.info("Too many pending promises, waiting...",Z,E),await new Promise(W=>setTimeout(W,500)),Z=await b();}let I=k[A],ae=Promise.all(I.inputs.filter(Z=>M.includes(String(Z))).map(Z=>J.get(Number(Z)))).then(async()=>{let Z=I.inputs.reduce((se,ce)=>({...se,...m[ce]}),u),W=I.inputs.find(se=>(I.settings?.ignoreCascade?I.settings?.ignoreCascade:[]).includes(se)||!f[se]?false:!f[se].allowed||f[se].hiddenByCascade);if(W){f[A]={allowed:false,hiddenByCascade:f[W].hiddenByCascade||W},m[A]={},E.splice(E.indexOf(Number(A)),1);return}let ie=new Date,V;typeof window<"u"&&[O.SELECTOR,O.MULTIHIERARCHY_SELECTOR].includes(I.type)&&I.settings[xe.DISABLED]?V=new Promise(se=>{se({outputVariables:m[A],status:f[A]});}):V=_a(I,o,{...p,variables:Z,locale:Z.locale},a,c);let Q=await V.then(({outputVariables:se,status:ce})=>{if(ce.error){if(typeof window>"u")throw new Error(`Run consumers (Block: ${A}, Section ${I.section_id}) failed with message: ${ce.error}.`);f[A]={allowed:false,error:ce.error},m[A]={};}(I.consumers.length>0||[O.GENERATOR,O.SECTION_FLAG,O.RELATED].includes(I.type))&&ce.allowed&&Object.keys(se).length>0?m[A]=se:m[A]={},i==="report"?(f[A]={allowed:ce.allowed},[O.GENERATOR,O.SECTION_FLAG].includes(I.type)&&ce.api&&(f[A].api=ce.api)):f[A]=ce;}),le=(new Date().getTime()-ie.getTime())/1e3;return Oe&&console.info(`%cBlock ${I.id} resolved in ${le.toFixed(3)}s`,le>500?"color:red":"color:green"),f[A].duration=f[A].duration?f[A].duration:le,E.splice(E.indexOf(Number(A)),1),Q}).catch(Z=>{throw E.splice(E.indexOf(Number(A)),1),Z});E.push(Number(A)),J.set(Number(A),ae);}await Promise.all(Array.from(J.values()));}let D=new Date;await L(w,x);let $=(new Date().getTime()-D.getTime())/1e3;return Oe&&console.info(`%cResolved Variables (${$.toFixed(2)}s), ${w.length} blocks`,"color:green"),{variables:{...s.variables??{},...m},status:{...s.status??{},...f}}};function wl(e=[]){return e.reduce((t,r,o)=>{if(r){let n=o+1;t[`id${n}`]=r.id,t[`name${n}`]=r.name,t[`slug${n}`]=r.slug,"attributes"in r&&Object.keys(r.attributes).forEach(s=>{t[`attr_${s}${n}`]=r.attributes[s];}),t[`variant_id${n}`]=r.variant_id,t[`variant_name${n}`]=r.variant_name,t[`variant_slug${n}`]=r.variant_slug,t[`dimension_id${n}`]=r.dimension_id,t[`dimension_name${n}`]=r.dimension_name,t.report_id=r.report_id,t.report_name=r.report_name;}return t},{})}var vt=wl;function kl(e,t){return +(e<t)-+(e>t)}function Pr(e,t,r="ordering"){return kl(t[r],e[r])}var{localeDefault:xl}=K();var Qt=new schema.Entity("block",{},{mergeStrategy(e,t){return t.block_input?e||{}:{...e,...t}}});Qt.define({consumers:[Qt],inputs:[Qt]});var ka=new schema.Entity("variant"),Pa=new schema.Entity("dimension",{variants:[ka]},{processStrategy(e){return {...e,variants:"variants"in e?e.variants:[]}}}),xa=new schema.Entity("section",{blocks:[Qt]}),Il=new schema.Entity("report",{dimensions:[Pa],sections:[xa]},{processStrategy(e){return {...e,sections:"sections"in e?e.sections.sort(Pr):[]}}}),vl=new schema.Entity("formatter"),Cl=new schema.Entity("datasource"),Bl={report:Il,section:xa,block:Qt,dimension:Pa,variant:ka,formatter:vl,datasource:Cl};function xr(e,t){let r=Bl[e];if(!r)throw new Error(`Invalid entity type: ${e}`);let{entities:o}=normalize(t,[r]);return {report:at(o,"report"),dimension:at(o,"dimension"),section:at(o,"section"),block:at(o,"block"),variant:at(o,"variant"),formatter:at(o,"formatter"),datasource:at(o,"datasource")}}function at(e,t){return Object.prototype.hasOwnProperty.call(e,t)?e[t]:{}}var Ia=(e,t=void 0)=>{let{sid:r,bid:o,previews:n=[],query:s={}}=t||{},a,i,c={};return r?(a=r,c.activeSection=a):a=e.activeSection,n.length>0?(i=n,c.previews=i.filter(Boolean)):i=e.previews,{parsedParams:{sid:a,bid:o,previews:i,query:s},statusPayload:c}},Zt=(e=[],t=xl)=>e.reduce((r,o)=>{let n=on({vars:["n"],logic:o.content.logic},{},t,{});return r[o.name]=n,r},{});var de=process.env.NEXT_PUBLIC_REPORTS_LOCALE_DEFAULT||"en",Ir=process.env.NEXT_PUBLIC_REPORTS_LOCALES?.split(",")||[de];Ir.includes(de)||Ir.push(de);var Ol={localeDefault:de,locales:Ir,currentLocale:de,preferredLocale:de,showToolbar:false,activeSection:null,previews:[],query:{},sectionState:{},activeEntity:{type:null,id:null},sidebarStatus:{tools:true,settings:false,reportEditor:false},isCMS:false,isRunConsumersRunning:[]},vr=createSlice({name:"status",initialState:Ol,reducers:{setStatus:(e,t)=>{Object.assign(e,t.payload);},setPreviews(e,t){e.previews=t.payload;},setCurrentLocale(e,t){e.currentLocale=t.payload;},setPreferredLocale(e,t){e.preferredLocale=t.payload;},setSectionState(e,t){e.sectionState={...e.sectionState,...t.payload};},resetSectionState(e,t){e.sectionState={...e.sectionState,[t.payload]:{}};},setActiveEntity(e,t){e.activeEntity=t.payload;},openSidebar(e,t){e.sidebarStatus={...e.sidebarStatus,[t.payload]:true};},closeSidebar(e,t){e.sidebarStatus={...e.sidebarStatus,[t.payload]:false};},toggleSidebar(e,t){e.sidebarStatus={...e.sidebarStatus,[t.payload]:!e.sidebarStatus[t.payload]};},addRunConsumersRunning(e,t){e.isRunConsumersRunning=e.isRunConsumersRunning.concat(t.payload);},removeRunConsumersRunning(e,t){e.isRunConsumersRunning=e.isRunConsumersRunning.filter(r=>!t.payload.includes(r));}},extraReducers:e=>{e.addCase(HYDRATE,(t,r)=>{t.previews=r.payload.status.previews;});}}),_e=vr.actions;var Ul={attributes:{},variables:{},status:{}},Cr=createSlice({name:"variables",initialState:Ul,reducers:{setVariableChange:(e,t)=>{e.attributes={...e.attributes,...t.payload.attributes},e.variables={...e.variables,...t.payload.variables},e.status={...e.status,...t.payload.status};}},extraReducers:e=>{e.addCase(HYDRATE,(t,r)=>{let o=r.payload.variables;t.attributes={...t.attributes,...o.attributes},t.status={...t.status,...o.status},t.variables={...t.variables,...o.variables};});}}),Ct=Cr.actions;var ql={tree:[],reports:null,entities:{block:{},dimension:{},report:{},section:{},variant:{},formatter:{},datasource:{}},requests:{block:{},dimension:{},report:{},section:{},variant:{},formatter:{},datasource:{}}},we=createSlice({name:"records",initialState:ql,reducers:{set:(e,t)=>{let r=t.payload;return {entities:Xt(e.entities,r.entities||{}),requests:Xt(e.requests,r.requests||{}),reports:r.reports||e.reports,tree:r.tree||e.tree}},setRequest:(e,t)=>{let r=t.payload;e.requests[r.type][r.key]=r;},setCreateRequest(e,t){let r=t.payload;if(e.requests[r.type][r.key]=r,r.status==="SUCCESS"){let o=Array.isArray(r.data)?r.data:[r.data],n=xr(r.type,o),s=Xt(e.entities,n);if(e.entities=s,r.type==="report"){let a=r.data;e.reports?e.reports.indexOf(a.id)===-1&&(e.reports=[...e.reports,a.id]):e.reports=[a.id];}else if(r.type==="dimension"){let a=r.data;e.entities.report[a.report_id].dimensions.push(a.id),e.entities.report[a.report_id].dimensions=Br(s.report[a.report_id].dimensions,s.dimension);}else if(r.type==="variant"){let a=r.data;e.entities.dimension[a.dimension_id].variants.push(a.id);}else if(r.type==="section"&&!Array.isArray(r.data)){let a=r.data;e.entities.report[a.report_id].sections.push(a.id),e.entities.report[a.report_id].sections=Br(s.report[a.report_id].sections,s.section);}else if(r.type==="block")if(Array.isArray(r.data)){let a=r.data,i=a[0],c=a.map(l=>l.id);e.entities.section[i.section_id].blocks.concat(c);}else {let a=r.data;e.entities.section[a.section_id].blocks.push(a.id);}}},setReadRequest(e,t){let r=t.payload;if(r.type!=="report"&&(e.requests[r.type][r.key]=r),r.status==="SUCCESS"){let o=xr(r.type,r.data),n=Xt(e.entities,o);e.entities=n;}},setUpdateRequest(e,t){let r=t.payload;if(e.requests[r.type][r.key]=r,r.status==="SUCCESS"){let o=Array.isArray(r.data)?r.data:[r.data],n=xr(r.type,o),s,a,i;if(r.type==="block"&&!Array.isArray(r.data)){let l=e.entities.block[r.data.id].inputs,p=n.block[r.data.id].inputs;s=l.length!==p.length,s&&(i=l.length>p.length,a=i?l.filter(u=>!p.includes(u))[0]:p.filter(u=>!l.includes(u))[0]),Object.values(n.block).forEach(u=>{u.block_input&&delete n.block[u.id];});}let c=Xt(e.entities,n);if(e.entities=c,r.type==="dimension"){let l=r.data;e.entities.report[l.report_id].dimensions=Br(c.report[l.report_id].dimensions,c.dimension);}else if(r.type==="section"&&!Array.isArray(r.data)){let l=r.data;e.entities.report[l.report_id].sections=Br(c.report[l.report_id].sections,c.section);}else if(r.type==="block"&&!Array.isArray(r.data)){let l=r.data;s&&(i?e.entities.block[a].consumers=e.entities.block[a].consumers.filter(p=>p!==l.id):e.entities.block[a].consumers.push(l.id));}}},setDeleteRequest(e,t){let r=t.payload;if(e.requests[r.type][r.key]=r,r.status==="SUCCESS"){let{id:o,parentId:n,parentType:s}=r.data;if(delete e.entities[r.type][o],s&&n!=null){let a=`${r.type}s`;$l(e.entities[s][n][a],o);}}},removeBlocks:(e,t)=>{let r=t.payload,o={...e.entities.block};return r.forEach(n=>{delete o[n];}),{...e,entities:{...e.entities,block:o}}},addBlocks:(e,t)=>{let r=t.payload;return {...e,entities:{...e.entities,block:{...e.entities.block,...r}}}},removeDataSourceLogic:e=>{let t={...e.entities.datasource};Object.keys(t).forEach(r=>{e.entities.datasource[r].content.useProxy&&(delete e.entities.datasource[r].content.logic,delete e.entities.datasource[r].content.testUrl,delete e.entities.datasource[r].content.access);});}},extraReducers:e=>{e.addCase(HYDRATE,(t,r)=>{let o=r.payload.records,n=o.entities;t.entities=n,t.reports=Object.values(n.report).map(s=>s.id),t.requests={block:{},dimension:{},report:{},section:{},variant:{},formatter:{},datasource:{}},t.tree=o.tree;});}});function Xt(e,t){return Object.fromEntries(Object.keys(e).map(r=>[r,{...e[r],...t[r]}]))}function Br(e,t){return e.map(n=>t[n]).sort(Pr).map(n=>n.id)}function $l(e,t){let r=e.indexOf(t);r>-1&&e.splice(r,1);}var Re=we.actions,La=er({block:Ne("block"),dimension:Ne("dimension"),formatter:Ne("formatter"),report:Ne("report"),section:Ne("section"),variant:Ne("variant"),datasource:Ne("datasource")}),oe=er({block:De("block"),dimension:De("dimension"),formatter:De("formatter"),report:De("report"),section:De("section"),variant:De("variant"),datasource:De("datasource")}),Ma=er({block:Ee("block"),dimension:Ee("dimension"),formatter:Ee("formatter"),report:Ee("report"),section:Ee("section"),variant:Ee("variant"),datasource:Ee("datasource")}),Oa=er({block:it("block"),dimension:it("dimension"),formatter:it("formatter"),report:it("report"),section:it("section"),variant:it("variant"),datasource:it("datasource")}),Na=er({block:Ca("block"),section:Ca("section")});function er(e){return (t,r)=>{let o=e[t];if(!o)throw new Error(`Attempting to dispatch action for invalid entity type '${t}'`);return o(r)}}function lt(e,t){return (r,o)=>{let s=o().records.requests[e][t],a=!s||s.status==="UNINITIALIZED"?"LOADING":"FETCHING";r(Re.setRequest({key:t,type:e,status:a}));}}function ct(e,t,r,o){return n=>{typeof window=="object"&¬ifications.show({autoClose:3e3,color:"red",id:t,message:o,title:"Error"}),n(Re.setRequest({key:t,type:e,status:"FAILURE",error:{code:r,message:o}}));}}function Ne(e){return t=>{let r=ho(e,t);return (o,n,s)=>(o(lt(e,r)),ue(s,"create",e)(t).then(i=>(i.ok===true?o(Re.setCreateRequest({key:r,operation:"create",status:"SUCCESS",type:e,data:i.data})):o(ct(e,r,i.status,i.error)),i)))}}function Kl(e){return t=>{let r=ho(e,t[0]);return (o,n,s)=>(o(lt(e,r)),ue(s,"createBulk",e)(t).then(i=>(i.ok===true?o(Re.setCreateRequest({key:r,operation:"createBulk",status:"SUCCESS",type:e,data:i.data})):o(ct(e,r,i.status,i.error)),i)))}}function va(e,t,r){return r.replace(new RegExp(e,"g"),t)}function Hl(e){return e.section_id!==void 0}function jl(e){return e.report_id!==void 0}function Ca(e){return t=>{let{create:r}=t;return (o,n,s)=>Ne(e)(r)(o,n,s).then(async i=>{if(i.ok){let{data:c}=i,{id:l}=c,{update:p}=t,u=Fa(e,{id:l});if(o(lt(e,`${u}`)),e==="block"&&Hl(r)){let m=produce(p,y=>{y.id=l;}),{contentByLocale:f}=m;f&&(m=produce(m,y=>{y.id=l,y.contentByLocale=Object.keys(f).reduce((S,x)=>{let P=f?f[x]:{};return S[x]={...P,id:l},S},{});}));let h=m.inputs?.map(y=>({type:y.type,id:y.id,inputAction:{operation:"create",input:{input_id:y.id,block_id:m.id}}}));return h&&h.length>0&&Ba(e)([m,...h])(o,n,s).then(()=>De("section")({id:m.section_id,include:true})(o,n,s).then(y=>(y.ok&&o(Re.setRequest({key:u,type:e,status:"SUCCESS",data:y.data})),y))),Ee(e)(m)(o,n,s).then(y=>(y.ok&&o(Re.setRequest({key:u,type:e,status:"SUCCESS",data:y.data})),y))}if(e==="section"&&jl(r)){let{id:m}=c,f=produce(p,y=>{y.id=m;}),{blocks:d}=f,h=d?.map(y=>({type:y.type,blockcol:y.blockcol,blockrow:y.blockrow,section_id:m,locales:Object.keys(y.contentByLocale).map(S=>S)}));return h&&d&&await Kl("block")(h)(o,n,s).then(y=>{if(y.ok){let S=y.data,x=[],P=S.map((F,w)=>{let B={...F},N=B.id,_=d[w];_.contentByLocale&&(B.contentByLocale=Object.keys(_.contentByLocale).reduce((E,b)=>{let A=_.contentByLocale[b];return E[b]={...A,content:{...A.content},id:B.id},E},{}));let{settings:L}=_,{contentByLocale:D,id:C}=B;B.settings=L;let $={id:C,contentByLocale:D,settings:L};return _.inputs.map(E=>E.id).reduce((E,b)=>{let A=d.findIndex(I=>I.id===b);return [...E,A]},[]).map(E=>({...S[E],originalBlock:d[E]})).forEach(E=>{let{id:b,type:A,originalBlock:I}=E;if([O.SELECTOR,O.VIZ].includes(A)){if($.contentByLocale?.logic?.content?.api){let ne=$.contentByLocale?.logic.content.api;$.contentByLocale.logic.content.api=va(`(selector${I.id}id)`,`selector${b}id`,ne);}if($.contentByLocale?.logic?.content?.logic){let ne=$.contentByLocale.logic.content.logic;$.contentByLocale.logic.content.logic=va(`(selector${I.id}id)`,`selector${b}id`,ne);}}x.push({id:b,inputAction:{operation:"create",input:{input_id:b,block_id:N}}});}),$});return Ba("block")([...P,...x])(o,n,s)}}),Ee(e)(f)(o,n,s).then(y=>(y.ok&&o(Re.setRequest({key:u,type:e,status:"SUCCESS",data:y.data})),y))}return Ee(e)({...p,id:c.id})(o,n,s)}})}}function De(e){return t=>{let r=Da(e,t);return (o,n,s)=>{o(lt(e,r));let a=ue(s,"read",e);if(typeof a!="function"){let i=`Failed to get valid RPC method for entity "${e}"`;return o(ct(e,r,500,i)),Promise.reject(new Error(i))}return a(t).then(i=>(i.ok===true?o(Re.setReadRequest({key:r,operation:"read",status:"SUCCESS",type:e,data:i.data})):o(ct(e,r,i.status,i.error)),i))}}}function Ee(e){return t=>{let r=bo(e,t);return (o,n,s)=>(o(lt(e,r)),ue(s,"update",e)(t).then(i=>(i.ok===true?o(Re.setUpdateRequest({key:r,operation:"update",status:"SUCCESS",type:e,data:i.data})):o(ct(e,r,i.status,i.error)),i)))}}function Ba(e){return t=>{let r=bo(e,t[0]);return (o,n,s)=>(o(lt(e,r)),ue(s,"updateBulk",e)(t).then(i=>(i.ok===true?o(Re.setUpdateRequest({key:r,operation:"updateBulk",status:"SUCCESS",type:e,data:i.data})):o(ct(e,r,i.status,i.error)),i)))}}function it(e){return t=>{let r=Ua(e,t);return (o,n,s)=>(o(lt(e,r)),ue(s,"delete",e)(t).then(i=>{i.ok===true?o(Re.setDeleteRequest({key:r,operation:"delete",status:"SUCCESS",type:e,data:i.data})):o(ct(e,r,i.status,i.error));}))}}function ho(e,t){if(e==="variant"){let r=t;return `create(variant, [${r.dimension_id}, ${r.name}])`}return `create(${e}, [${Object.keys(t)}])`}function Da(e,t={}){let r=t.id==null?null:`'${t.id}'`;return `read(${e}, ${r}, ${!!t.include})`}function bo(e,t){let{id:r,...o}=t;return `update(${e}, ${r}, [${Object.keys(o)}])`}function Ua(e,t){return `delete(${e}, ${t})`}function Fa(e,t){let r=t.id==null?null:`'${t.id}'`;return `clone(${e}, ${r})`}var{setStatus:Va,setPreviews:Wl,setSectionState:qa,resetSectionState:$a,setCurrentLocale:Jl,setPreferredLocale:Yl,addRunConsumersRunning:za,removeRunConsumersRunning:Ga}=_e;function Ql(e,t){return async(r,o,n)=>{let s=await n.validateVariantSlug({dimension:e,slug:t});if("error"in s)throw new Error(s.error);return s.data}}function Zl(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 Xl(){return async(e,t,r)=>{let o=await r.regenerateSearch(void 0);if("error"in o)throw new Error(o.error);return o.data}}function Ue(e){return async(t,r,o)=>{let n=await o.readMember(e);if("error"in n)throw new Error(n.error);return n.data}}function eu(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 Ka(e,t,r,o){let n=r().status,s={...n,...o},a={...n.query,...o.query};Object.keys(a).forEach(c=>a[c]===void 0&&delete a[c]);let i={...s,query:a};t(Va(i)),n.activeSection&&t(Ha(e,{query:a}));}function tu(e,t){return async(r,o)=>Ka(e,r,o,{query:{[t]:void 0}})}function ru(e,t,r){return async(o,n)=>Ka(e,o,n,{query:{[t]:r}})}function Ha(e,t){return async(r,o)=>{let n=o(),{currentLocale:s}=n.status,a=n.records.entities.block,i=e.formatterFunctions[s],c=e.datasourceFunctions,{parsedParams:l,statusPayload:p}=Ia(n.status,t),{sid:u,bid:m,previews:f,query:d}=l;Object.keys(p).length&&r(_e.setStatus(p));let h={...vt(f),locale:s,...pe()},y={variables:h,query:d,locale:s};r(_e.addRunConsumersRunning([u]));let S=n.records.entities.section[u],x=async P=>r(Ue(P));try{let P=await It(a,S&&[S],m,i,y,void 0,x,"section",c),{variables:F,status:w}=P;r(Ct.setVariableChange({attributes:h,variables:F,status:w})),r(_e.removeRunConsumersRunning([u]));}catch(P){console.error("Error in runConsumers client side: recalculateVariables",P);}}}function tr(e){return async(t,r,o)=>{let n=await o.readMetadata(e);if("error"in n)throw new Error(n.error);return n.data}}function ou(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 nu(){return async(e,t,r)=>{let o=await r.searchRole("");if("error"in o)throw new Error(o.error);return o.data}}function au(e){return async(t,r,o)=>{let n=await o.searchUser(e);if("error"in n)throw new Error(n.error);return n.data}}function su(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 iu({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 cu(e){return async(t,r,o)=>{let n=await o.updateMyData(e);if("error"in n)throw new Error(n.error);return n.data}}function Fe(e){let{removeBlocks:t}=we.actions;return async r=>{await r(t(e));}}function rr(e){let{addBlocks:t}=we.actions;return async r=>{await r(t(e));}}function lu(e){return async(t,r,o)=>{let n=await o.readPrivateBlocks({...e,roles:[]});if("error"in n)throw new Error(n.error);return n.data}}function uu(e){return async(t,r,o)=>{let n=await o.revalidateUrl({target:e.target});if("error"in n)throw new Error(n.error);return n.data}}function pu(e){return async(t,r,o)=>{let n=await o.revalidateReport({reportId:e.reportId,profilePrefix:e.profilePrefix});if("error"in n)throw new Error(n.error);return n.data}}function du(){return async(e,t,r)=>{let o=await r.readEnvSecrets({});if("error"in o)throw new Error(o.error);return o.data}}function or(){let{removeDataSourceLogic:e}=we.actions;return async t=>{await t(e());}}var ja=()=>configureStore({reducer:{[we.name]:we.reducer,[vr.name]:vr.reducer,[Cr.name]:Cr.reducer},middleware(e){return e({thunk:{extraArgument:Yt("/api/cms/")}})}}),Ve=createWrapper(ja);function Ru(e){let t=process.cwd(),r=gu.resolve(t.endsWith("/example")?t.replace("/example",""):t,"package-lock.json"),o;try{let n=JSON.parse(fc.readFileSync(r,"utf-8"));o=n.dependencies&&n.dependencies[e]&&n.dependencies[e].version!=="file:packages/reports"?n.dependencies[e].version:"0.dev";}catch{o="0.vercel";}return o||"Version not found"}function hu(e){let t=()=>Promise.resolve({}),{pathSegmentsKey:r="bespoke",preResolve:o=t,postResolve:n=t,authOptions:s={providers:[]}}=e||{};return Ve.getServerSideProps(a=>{let{dispatch:i}=a;return async c=>{let l=await he(c.req,c.res,s);if(!l)return {redirect:{destination:"/api/auth/signin?callbackUrl=/cms",permanent:false}};let p=new Set([z.ADMIN,z.EDITOR,z.WRITER]);if(!(l?.user?.bespoke_roles||[]).some(S=>p.has(S)))return {redirect:{destination:"/",permanent:false}};let m=c.query[r],[f]=Array.isArray(m)?m:[m];await i(rt);let d=await Ru("@datawheel/bespoke"),h=await o(a,c);if("redirect"in h)return {props:h};f==="reports"&&(Wa(c.query[r])?await Promise.all([i(oe("formatter",{})),i(oe("datasource",{include:true})),i(oe("report",{id:Wa(c.query[r]),include:true})),_e.setStatus({isCMS:true})]):await Promise.all([i(oe("report",{include:"dimensions"})),_e.setStatus({isCMS:true})])),f==="metadata"&&await i(oe("report",{include:"dimensions"})),f==="formatters"&&await i(oe("formatter",{})),f==="datasources"&&await i(oe("datasource",{include:true}));let y=await n(a,c);return {props:{...h,...y,bespokeVersion:d,session:l}}}})}function Wa(e){if(e==null||e==="")return;let[,t]=Array.isArray(e)?e:[e];return Number.parseInt(t)||void 0}var {locales:Su}=K(),Eu={pathSegment:"path",formatterFunctions:Su.reduce((e,t)=>({...e,[t]:{}}),{}),datasourceFunctions:[],profilePrefix:"path",siteProps:{}};createContext(Eu);K();var Uu=e=>e.records.entities.report;var Or=e=>e.records.entities.block;var Fu=e=>e.records.entities.datasource;function Bt(e){return createSelector([t=>t.records.entities[e]],t=>Object.values(t))}Bt("report");Bt("dimension");Bt("variant");var Nr=Bt("section");Bt("block");var Dr=Bt("formatter");createSelector([Uu],e=>Object.values(e)[0]);var Vu=pe(),qu=[],Ur=createSelector([Fu],e=>e?Object.values(e).sort((t,r)=>t.content.order>r.content.order?1:-1).map(t=>{let r={...Vu};return {...t,content:{...t.content,pattern:fe(t.content.pattern,{},{variables:r})}}}):qu);var $u=async(e,t,r,o,n)=>{if(e.length===0)throw new Error("No slugs provided");let s=await t(r({mode:"slugs",locale:n,slugs:e,output:"full"})),a=s.results[0].report_id;if(s.results.length>1){if(s.results.every(d=>d.report_id===a)===false)throw new Error("Members belong to different reports");let l=s.results.map(d=>d.dimension_id),p=new Set(l);if(l.length!==p.size)throw new Error("Members belong to same dimensions");let u=s.results.sort((d,h)=>d.dimension_ordering>h.dimension_ordering?1:-1).reduce((d,h,y)=>(d[h.variant_slug]=y,d),{}),m=e.reduce((d,h,y)=>(d[h.variantSlug]=y,d),{});if(!(Object.keys(u).length===Object.keys(m).length&&Object.keys(u).every(d=>Object.prototype.hasOwnProperty.call(m,d)&&u[d]===m[d])))throw new Error("Variant slugs do not match the expected dimension order")}let c=(await t(o({report_id:a,count:false}))).data.find(l=>l.id===a);if(!c||s.results.length!==c.dimensions.length)throw new Error(`Missing members for report ID ${a}`);return s},Fr=$u;function zu(e){let{fallback:t=true,limit:r=50}=e||{};return async o=>{let{defaultLocale:n=de,locales:s=[]}=o,a=[];if(r>0){let i=s.find(p=>p===n),{searchMember:c}=await Ze().then(kt),l=await c({query:"",limit:r,format:"plain",locale:i||de,noImage:false,visible:true,report:[],dimension:[],variant:[],includes:true});l.ok===true&&(a=l.data.results.map(p=>({locale:s.find(u=>u===p.locale),params:{bespoke:[p.variant.slug,p.slug]}})));}return {fallback:t,paths:a}}}function Gu(e){let{pathSegmentsKey:t="bespoke"}=e||{};try{return Ve.getStaticProps(r=>{let{dispatch:o}=r;return async n=>{await o(rt);let s=new Date().toISOString(),{locale:a=de,params:i={}}=n,c=Array.from(Ao(i[t])),l;try{l=await Fr(c,o,Ue,tr,a);}catch(_){return console.error("[Bespoke slug validation Failed]: Return 404:",_.message,`[${a}] -> /${c.map(L=>`${L.variantSlug}/${L.memberSlug}`).join("/")}`),{notFound:!0}}o(ut.setPreviews(l.results)),await Promise.all([o(oe("formatter",{})),o(oe("datasource",{include:!0})),o(oe("report",{id:l.results.map(_=>_.report_id),include:!0,locales:[a]}))]);let p=r.getState(),u=Dr(p),m=Ur(p),f=Zt(u,a),d=Nr(p),h=Or(p),y={...h},S={},x=Object.values(h).reduce((_,L)=>("access"in L.settings&&!["public","guest"].some(D=>!L.settings.access||L.settings.access.includes(D))&&_.push(L.id),_),[]),P=x.filter(_=>y[_].settings[xe.FALLBACK]),F=Array.from(new Set([...P,...ye(P,Object.values(y))])),w=x.filter(_=>[O.SELECTOR,O.MULTIHIERARCHY_SELECTOR].includes(y[_].type)),q=Array.from(new Set([...w,...ye(w,Object.values(y))]));x=Array.from(new Set([...x,...F,...q,...ye(x,Object.values(y))])),x.forEach(_=>{P.includes(_)?(S[_]={...y[_],type:O.FALLBACK,original_type:y[_].type},delete y[_]):w.includes(_)&&(S[_]={...y[_],settings:{...y[_].settings,[xe.DISABLED]:!0}},delete y[_]),q.includes(_)||delete y[_];}),await o(Fe(x.filter(_=>!q.includes(_)))),await o(rr(S));let B={...vt(l.results),locale:a,...pe()},N=async _=>await o(Ue(_));return await It({...y,...S},d,void 0,f,{locale:a,query:i,variables:B},void 0,N,"report",m).then(async _=>{let L=Object.keys({...y,...S}).reduce((D,C)=>(_.variables[C]&&_.status[C]||D.push(C),D),[]);await o(Fe(L)),await o(Ct.setVariableChange({..._,attributes:B})),await o(or());}),{props:{buildTime:s}}}})}catch(r){console.error("ERROR SSR",r);}}function Ao(e=[]){let t=[].concat(e),r=0;return {next(){return {value:{variantSlug:t[r++],memberSlug:t[r++]},done:r>t.length}},[Symbol.iterator](){return this}}}function Ku(e){let{pathSegmentsKey:t="bespoke"}=e||{};try{return Ve.getServerSideProps(r=>{let{dispatch:o}=r;return async n=>{let{section:s,block:a}=n.query,i=Object.fromEntries(Object.entries(n.query).filter(([k])=>k.match(/selector\d+id/)));if(!s&&!a)return {notFound:!0};let c=Number(s);await o(rt);let l=new Date().toISOString(),{locale:p=de,params:u={},req:m}=n,f=Array.from(Ao(u[t])),d;try{d=await Fr(f,o,Ue,tr,p);}catch(k){return console.error("[Bespoke slug validation Failed]: Return 404:",k.message,`/${p}/${m.url}`),{notFound:!0}}o(ut.setPreviews(d.results)),await Promise.all([o(oe("formatter",{})),o(oe("datasource",{include:!0})),o(oe("report",{id:d.results.map(k=>k.report_id),include:!0,locales:[p]}))]);let h=r.getState(),y=Dr(h),S=Ur(h),x=Zt(y,p),P=Nr(h).filter(k=>k.id===c),F=Or(h),w={...F},q={},B=Object.values(F).reduce((k,J)=>("access"in J.settings&&!["public","guest"].some(E=>!J.settings.access||J.settings.access.includes(E))&&k.push(J.id),k),[]),N=B.filter(k=>w[k].settings[xe.FALLBACK]),_=Array.from(new Set([...N,...ye(N,Object.values(w))])),L=B.filter(k=>[O.SELECTOR,O.MULTIHIERARCHY_SELECTOR].includes(w[k].type)),D=Array.from(new Set([...L,...ye(L,Object.values(w))]));B=Array.from(new Set([...B,..._,...D,...ye(B,Object.values(w))])),B.forEach(k=>{N.includes(k)?(q[k]={...w[k],type:O.FALLBACK,original_type:w[k].type},delete w[k]):L.includes(k)&&(q[k]={...w[k],settings:{...w[k].settings,[xe.DISABLED]:!0}},delete w[k]),D.includes(k)||delete w[k];}),await o(Fe(B.filter(k=>!D.includes(k)))),await o(rr(q));let C={...vt(d.results),locale:p,...pe()},$=async k=>await o(Ue(k));await It({...w,...q},P,void 0,x,{locale:p,query:{...u,...i},variables:C},void 0,$,"section",S).then(async k=>{let J=Object.keys({...w,...q}).reduce((E,b)=>(k.variables[b]&&k.status[b]||E.push(b),E),[]);await Promise.all([o(Fe(J)),o(Ct.setVariableChange({...k,attributes:C})),o(or())]);});let M=Object.keys({...w,...q}).filter(k=>s&&a?k!==a:w[k]&&w[k].section_id!==c);return await o(Fe(M)),{props:{buildTime:l}}}})}catch(r){return console.error("ERROR SSR",r),async()=>({notFound:true})}}export{Ku as BespokeEmbedServerSideProps,Jc as BespokeEndpointNextJsHandlerFactory,he as BespokeGetSession,cs as BespokeHandleAuth,hu as BespokeManagerServerSideProps,zu as BespokeRendererStaticPaths,Gu as BespokeRendererStaticProps,bs as BespokeSearchUsersByMetadata,ds as BespokeUpdateCurrentUserAppMetadata,ys as BespokeUpdateCurrentUserMetadata,Rs as BespokeWithApiRoleAuthRequired,Qc as ReportCrosswalkHandler,kt as dbApiFactory,io as endpointKey,Ze as getDB,rt as useDatabaseApi};
|
|
25
|
+
`)}return global.typesense};async function sc(){try{if(xt){let e=await vr.get(new URL(xt).origin);if(e?.data["typesense-health"]===!0)return Ie&&console.info(`${xt} health check is OK. Version: ${e.data.Version}`),!0}else console.error("No envar set TYPESENSE_URL");return !1}catch(e){return console.error("Health check failed:",e.message),false}}async function ic(){if(Ie&&console.info(`\u{1F3F3}\uFE0F INITIALIZING TYPESENSE SEARCH AGAINST ${xt}`),!await sc())throw new Error("TYPESENSE_URL service is not healthy.");let t=nc.map(r=>(Ie&&console.info(`\u{1F3F3}\uFE0F INITIALIZING SEARCH ${r} LOCALE`),[r,{search:async(n={query:"*",limit:12,offset:0})=>{let s={locale:r,query:n.query,limit:n.limit,offset:n.offset};return n.report&&Array.isArray(n.report)&&n.report.length>0&&(s["report[]"]=n.report.join(",")),n.variant&&Array.isArray(n.variant)&&n.variant.length>0&&(s["variant[]"]=n.variant.join(",")),Ie&&console.info("Typesense URL:",xt,s),vr.get(xt,{params:s}).then(i=>(Ie&&(console.info("Typesense URL:",i.request.res.responseUrl),console.info("Typesense Results",i.data.data.results.length)),i.data.data)).catch(i=>(console.error("Typesense Call Error:",i),[]))}}]));return Object.fromEntries(await Promise.all(t))}var hn=ac;var{localeDefault:co}=H();function Pt(e){let{search:t,report:r}=e;return o;async function o(n){let s=n.origin||"flexsearch",a=process.env.REPORTS_EXTERNAL_SEARCH&&s==="typesense",{query:i,locale:c,preferredLocale:l,limit:p,format:u,visible:m,variant:f,dimension:d,report:R,all:h,noImage:b,includes:P,sort:w,direction:F="ASC",offset:k=0}=n,B=Gt.find(C=>C.locales.includes(c))?.charset||"latin",D=p&&!isNaN(p)?p:20,_=et(i,B!=="arabic");function L(C){return C.toJSON()}function U(C){let z=C.getContent(c);return {...C.toJSON(),locale:z.locale,name:z.name,attributes:z.attributes,keywords:z.keywords}}if(a){let C=await hn(),z=C[c]||C[co],M={query:_===""?"*":_,limit:D,variant:f,report:R,offset:k};return await z.search(M)}else {let C=[],z=await tt(e);if(i&&i!==""&&z[c]){let Y=et(i,B!=="arabic"),ie={query:Y,limit:D},V=await z[c].search(ie);if(a?C=V.data.results.map(Q=>parseInt(Q.content_id,10)):C=V.reduce((Q,W)=>Q.concat(W.result),[]),C=sr(C),l&&z[l]){let W=z[l].search(Y).reduce((le,se)=>le.concat(se.result),[]);W=sr(W),C=sr([...C,...W]);}}let M={...m?{visible:m}:{},...b?{image_id:{[Op.eq]:null}}:{},...f.length?{variant_id:f}:{},...d.length?{dimension_id:d}:{},...R.length?{report_id:R}:{}},x={locale:h?{[Op.ne]:null}:c},j=[];i&&i!==""&&C.length&&w!=="report"?j.push([literal(`array_position(array[${C.join(",")}], "content_id")`),"ASC"]):(w==="report"&&j.push([literal(`COALESCE(NULLIF("report"."settings"->>'order', '')::INTEGER, 999999)`),"ASC"],[literal(`COALESCE(NULLIF("variant"."settings"->>'order', '')::INTEGER, 999999)`),"ASC"]),j.push(["zvalue","DESC NULLS LAST"])),w&&w!=="name"&&w!=="report"&&j.unshift([w,F.toUpperCase()]),i&&i!==""&&(M.content_id=C);let A=[{association:"contentByLocale",where:x}];(P||w==="report")&&A.push({association:"report",attributes:["id","name","settings"]},{association:"dimension",attributes:["id","name","settings"]},{association:"variant",attributes:["id","slug","name","settings"]});let S={...M.visible?{visible:M.visible}:{},...M.noImage?{image_id:M.noImage}:{},...M.content_id?{content_id:M.content_id}:{}};if(!M.report_id&&!M.dimension_id&&!M.variant_id&&m){let ie=(await r.findAll({attributes:["id"],where:{[Op.or]:[where(cast(json("settings.hide"),"boolean"),true)]}})).map(V=>V.id);ie.length>0&&(M.report_id={[Op.notIn]:ie},S.report_id=M.report_id);}let T=[],[v,ne]=await Promise.all([t.findAll({limit:D,offset:k,where:M,include:A,order:j,subQuery:false}),t.findAll({attributes:["variant_id",[fn$1("COUNT",col("variant_id")),"members_count"]],where:S,group:["variant_id"]})]),ae=ne.map(Y=>Y.toJSON());if(w==="name"){let Y=F.toUpperCase()==="ASC"?1:-1;v.sort((ie,V)=>{let Q=ie.getContent(co),W=V.getContent(co);return Q&&W?Q.name>W.name?1*Y:-1*Y:0});}let Z=u==="nested"?L:U;return T=v.map(Z),u!=="nested"&&T.forEach(Y=>{let{name:ie,keywords:V,score:Q=.1,zvalue:W}=Y;if(ie){let le=et(ie),se=Q,ce=i.length/le.length,vo=le.split("").reduce((zr,Io,Co)=>(i.slice(0,Co),i.charAt(Co)===Io&&(zr+=Io),zr),"").length;le===i||V&&V.includes(i)?se=1e6:le.startsWith(i)?se*=20*ce:vo&&(se*=vo*ce),Y.zvalue=se*2+W;}}),{meta:{origin:"flexsearch",...Object.fromEntries(Object.entries(n).map(Y=>[Y[0],$(Y[1])])),variantCount:ae.reduce((Y,ie)=>(Y[ie.variant_id]=parseInt(ie.members_count,10),Y),{})},results:T}}}}function Rn(e){let{image:t,image_content:r,search:o,search_content:n}=e;return s;async function s(a){let{content_id:i,contentByLocale:c,image:l,image_id:p}=a,u={where:{content_id:i}},m=await o.findOne(u);if(await o.update(a,{where:{content_id:i}}),c){for(let d=0;d<c.length;d++){let R=c[d];await n.update({name:R.name,keywords:R.keywords},{where:{id:R.id,locale:R.locale}});}u={...u,...{include:[{association:"contentByLocale",separate:true}]}};}if(l){if(l.id&&(await t.update({...l},{where:{id:l.id}}),l.contentByLocale))for(let f=0;f<l.contentByLocale.length;f++){let d=l.contentByLocale[f];await r.update({meta:d.meta},{where:{id:d.id,locale:d.locale}});}}else !p&&m.image_id&&(await e.search.findAll({where:{image_id:m.image_id}})).length===0&&await t.destroy({where:{id:m.image_id}});return o.findOne(u)}}function bn(e){return {ingestMembers:mn(e),readMember:fn(e),searchMember:Pt(e),updateMember:Rn(e),readMemberImage:gn(e)}}var rt={include:[{association:"contentByLocale",separate:true},{association:"inputs",include:[{association:"contentByLocale",separate:true}]},{association:"consumers",include:[{association:"contentByLocale",separate:true}]}]},Kt=e=>({include:[{association:"variants",separate:true,attributes:{include:[[fn$1("COUNT",col("members.id")),"members_count"]]},include:[{model:e,as:"members",attributes:[]}],group:["variant.id"]}],order:[["ordering","ASC"]]}),Ht={include:[{association:"blocks",separate:true,...rt}]},Ar=e=>({include:[{association:"dimensions",separate:true,...Kt(e)},{association:"sections",separate:true,...Ht}]});var ge=[{association:"image",attributes:{exclude:["splash"]},include:[{association:"contentByLocale"}]},{association:"contentByLocale"}];function Sn(e){let{block:t,block_content:r,block_input:o}=e;return {createBlock:n,readBlock:a,updateBlock:i,deleteBlock:l,createBulkBlock:s,updateBulkBlock:c};async function n(p){let{locales:u,...m}=p;return (await t.create({...m,consumers:[],inputs:[],contentByLocale:u.map(d=>({locale:d}))},{include:rt.include})).toJSON()}async function s(p){let u=p.map(f=>{let{locales:d,...R}=f;return {...R,consumers:[],inputs:[],contentByLocale:d.map(b=>({locale:b}))}});return (await t.bulkCreate(u,{include:rt.include})).map(f=>f.toJSON())}async function a({id:p,include:u}={}){let m=p==null?[]:[].concat(p),f=await t.findAll({where:m.length>0?{id:m}:void 0,include:u?rt.include:void 0});if(m.length===0||f.length===m.length)return f.map(h=>h.toJSON());let d=f.map(h=>h.id),R=m.filter(h=>!d.includes(h));throw new E(404,`Block(id=[${R}]) does not exist.`)}async function i(p){let{id:u,contentByLocale:m,consumers:f,inputs:d,inputAction:R,...h}=p,b=await t.findByPk(u,{include:rt.include,rejectOnEmpty:true});if(b.set(h),m){let P=Object.values(m);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(p){let u=p.map(d=>{let{id:R,contentByLocale:h,consumers:b,inputs:P,inputAction:w,...F}=d;return {id:R,contentByLocale:h,inputAction:w,...F}}),m=await t.findAll({where:{id:{[Op.or]:u.map(d=>d.id)}},include:rt.include}),f=[];for(let d of m){let R=u.filter(h=>h.id===d.id);for(let h=0;h<R.length;h++){let b=R[h],{id:P,contentByLocale:w,inputAction:F,...k}=b;if(F&&(F.operation==="create"?await o.create(F.input):await o.destroy({where:F.input})),w){let q=Object.values(w);await r.bulkCreate(q,{updateOnDuplicate:["content"]});}d.set(k),await d.save(),await d.reload(),f.push(d.toJSON());}}return f}async function l(p){let u=await t.findByPk(p,{rejectOnEmpty:true});return await u.destroy(),{id:p,parentType:"section",parentId:u.section_id}}}function En(e){let{dimension:t,search:r}=e;return {createDimension:o,readDimension:n,updateDimension:s,deleteDimension:a};async function o(i){return (await t.create({name:i.name,report_id:i.report_id,ordering:i.ordering||0,variants:[]},{include:Kt(r).include})).toJSON()}async function n({id:i,include:c}={}){let l=i==null?[]:[].concat(i),p=await t.findAll({where:l.length>0?{id:l}:void 0,include:c?Kt(r).include:void 0});if(l.length===0||p.length===l.length)return p.map(f=>f.toJSON());let u=p.map(f=>f.id),m=l.filter(f=>!u.includes(f));throw new E(404,`Dimension(id=[${m}]) does not exist.`)}async function s(i){let{id:c,variants:l,...p}=i,u=await t.findByPk(c,{include:Kt(r).include,rejectOnEmpty:false});if(!u)throw new E(404,`Dimension(id=${c}) does not exist.`);return u.set(p),await u.save(),u.toJSON()}async function a(i){let c=await t.findByPk(i,{rejectOnEmpty:false});return await c.destroy(),{id:i,parentType:"report",parentId:c.report_id}}}function An(e){let{formatter:t}=e;return {createFormatter:r,readFormatter:o,updateFormatter:n,deleteFormatter:s};async function r(a){return (await t.create(a)).toJSON()}async function o({id:a}={}){let i=a==null?[]:[].concat(a),c=await t.findAll({where:i.length>0?{id:i}:void 0});if(i.length===0||c.length===i.length)return c.map(u=>u.toJSON());let l=c.map(u=>u.id),p=i.filter(u=>!l.includes(u));throw new E(404,`Formatter(id=[${p}]) does not exist.`)}async function n(a){let{id:i,...c}=a,l=await t.findByPk(i,{rejectOnEmpty:true});return await l.update(c),l.toJSON()}async function s(a){return await(await t.findByPk(a,{rejectOnEmpty:true})).destroy(),{id:a}}}function wn(e){let{datasource:t}=e;return {createDatasource:r,readDatasource:o,updateDatasource:n,deleteDatasource:s};async function r(a){return (await t.create(a)).toJSON()}async function o({id:a,include:i}={}){try{let c=a==null?[]:[].concat(a),l=i===!0,p=await t.findAll({attributes:l?["id","name","description","content"]:["id","name","description",[literal("content - 'logic' - 'testUrl' - 'access'"),"content"]],where:c.length>0?{id:c}:void 0,order:[literal("(content->>'order')::integer ASC NULLS LAST")]});if(c.length===0||p.length===c.length)return p.map(f=>f.toJSON());let u=p.map(f=>f.id),m=c.filter(f=>!u.includes(f));throw new E(404,`Datasource(id=[${m}]) does not exist.`)}catch(c){throw new E(500,c)}}async function n(a){let{id:i,...c}=a,l=await t.findByPk(i,{rejectOnEmpty:true});return await l.update(c),l.toJSON()}async function s(a){return await(await t.findByPk(a,{rejectOnEmpty:true})).destroy(),{id:a}}}var{locales:yc}=H();function _n(e){let{report:t,search:r}=e;return {createReport:o,readReport:n,updateReport:s,deleteReport:a};async function o(i){return (await t.create({name:i.name,sections:[],dimensions:[]},{include:Ar(r).include})).toJSON()}async function n({id:i,include:c,locales:l=yc}={}){let u=(i==null?[]:[].concat(i)).reduce((R,h)=>(R.includes(h)||R.push(h),R),[]),m=await t.findAll({where:u.length>0?{id:u}:void 0,include:c?Ar(r).include?.filter(R=>typeof c=="string"?R.association===c:c):void 0});if(u.length===0||m.length===u.length)return m.map(R=>{let h=R.toJSON();return {...h,sections:h.sections.map(b=>({...b,blocks:b.blocks.map(P=>({...P,contentByLocale:Object.keys(P.contentByLocale).reduce((w,F)=>({...w,...[...l,"logic"].includes(F)?{[F]:P.contentByLocale[F]}:{}}),{})}))}))}});let f=m.map(R=>R.id),d=u.filter(R=>!f.includes(R));throw new E(404,`Report(id=${d}) does not exist.`)}async function s(i){let{id:c,dimensions:l,sections:p,...u}=i,m=await t.findByPk(c,{include:Ar(r).include,rejectOnEmpty:false});if(!m)throw new E(404,`Report(id=${c}) does not exist.`);return m.set(u),await m.save(),await m.reload(),m.toJSON()}async function a(i){return await(await t.findByPk(i,{rejectOnEmpty:false})).destroy(),{id:i}}}function kn(e){let{section:t}=e;return {createSection:r,readSection:o,updateSection:n,deleteSection:s};async function r(a){return (await t.create({ordering:a.ordering,report_id:a.report_id,blocks:[]},{include:Ht.include})).toJSON()}async function o({id:a,include:i}={}){let c=a==null?[]:[].concat(a),l=await t.findAll({where:c.length>0?{id:c}:void 0,include:i?Ht.include:void 0});if(c.length===0||l.length===c.length)return l.map(m=>m.toJSON());let p=l.map(m=>m.id),u=c.filter(m=>!p.includes(m));throw new E(404,`Section(id=${u}) does not exist.`)}async function n(a){let{id:i,blocks:c,...l}=a,p=await t.findByPk(i,{include:Ht.include,rejectOnEmpty:false});return p.set(l),await p.save(),await p.reload(),p.toJSON()}async function s(a){let i=await t.findByPk(a,{rejectOnEmpty:true});return await i.destroy(),{id:a,parentType:"report",parentId:i.report_id}}}function vn(e,t){let{variant:r,search:o}=e;return {createVariant:n,readVariant:s,updateVariant:a,deleteVariant:i,validateVariantSlug:c};async function n(l){let{dimension_id:p,name:u,slug:m}=l,f=await c({dimension:p,slug:m});return (await r.create({dimension_id:p,name:u,slug:f.valid?f.candidate:f.suggestion})).toJSON()}async function s({id:l}={}){let p=l==null?[]:[].concat(l),u=await r.findAll({where:p.length>0?{id:p}:void 0,attributes:{include:[[fn$1("COUNT",col("members.id")),"members_count"]]},include:[{model:o,attributes:[],as:"members"}],group:["variant.id"]});if(p.length===0||u.length===p.length)return u.map(d=>d.toJSON());let m=u.map(d=>d.id),f=p.filter(d=>!m.includes(d));throw new E(404,`Variant(id=${f}) does not exist.`)}async function a(l){let{id:p,...u}=l,m=await r.findByPk(p,{include:[{association:"dimension"}],rejectOnEmpty:true});u.settings=zt(u.settings);let f=u.settings.doIngest;return u.settings.doIngest=false,await m.update(u),f&&(await t.ingestMembers(m),await tt(e,true)),await m.reload(),m.toJSON()}async function i(l){let p=await r.findByPk(l,{rejectOnEmpty:true});return await p.destroy(),tt(e,true),{id:l,parentType:"dimension",parentId:p.dimension_id}}async function c({dimension:l,slug:p}){let u=await r.findAll({attributes:["slug",[fn$1("COUNT",col("id")),"slugCount"]],where:{dimension_id:{[Op.ne]:l}},group:"slug"}).then(R=>Object.fromEntries(R.map(h=>{let b=h.getDataValue("slugCount");return [h.slug,Number.parseInt(`${b}`,10)]}))),m=p,f=1,d=true;for(;u[m];)d=false,m=`${p}-${f}`,f++;return {candidate:p,dimension_id:l,suggestion:m,valid:d}}}function In(e){let t={...Sn(e),...En(e),...An(e),...wn(e),...bn(e),..._n(e),...kn(e)},r={...t,...vn(e,t)};return {createFormatter:I(r.createFormatter),deleteFormatter:I(r.deleteFormatter),readFormatter:I(r.readFormatter),updateFormatter:I(r.updateFormatter),createReport:I(r.createReport),deleteReport:I(r.deleteReport),readReport:I(r.readReport),updateReport:I(r.updateReport),createDimension:I(r.createDimension),deleteDimension:I(r.deleteDimension),readDimension:I(r.readDimension),updateDimension:I(r.updateDimension),createVariant:I(r.createVariant),readVariant:I(r.readVariant),updateVariant:I(r.updateVariant),deleteVariant:I(r.deleteVariant),validateVariantSlug:I(r.validateVariantSlug),createSection:I(r.createSection),readSection:I(r.readSection),updateSection:I(r.updateSection),deleteSection:I(r.deleteSection),createBlock:I(r.createBlock),deleteBlock:I(r.deleteBlock),readBlock:I(r.readBlock),updateBlock:I(r.updateBlock),createBulkBlock:I(r.createBulkBlock),updateBulkBlock:I(r.updateBulkBlock),readMember:I(r.readMember),searchMember:I(r.searchMember),updateMember:I(r.updateMember),readMemberImage:I(r.readMemberImage),createDatasource:I(r.createDatasource),deleteDatasource:I(r.deleteDatasource),readDatasource:I(r.readDatasource),updateDatasource:I(r.updateDatasource)}}if(typeof window<"u")throw new Error("uploadImage.ts can only be imported on the server side");var Cn=e=>{throw console.error("/methods/helpers/uploadImage.ts:",e),new Error(e.message)},Rc=Number(process.env.NEXT_PUBLIC_IMAGE_SPLASH_WIDTH)||1400,bc=Number(process.env.NEXT_PUBLIC_IMAGE_THUMB_WIDTH)||400,Sc=async(e,t,r)=>{let o=[{type:"splash",res:Rc},{type:"thumb",res:bc}],n=(await import('sharp')).default;for(let s of o){let a=await n(r).resize(s.res).toFormat("webp").webp({lossless:true}).toBuffer().catch(Cn);await e.image.update({[s.type]:a},{where:{id:t}}).catch(Cn);}},Ee=Sc;var Bn="SECTION_ALLOWED";var Ln=["4","5","7","8","9","10"],Tc=Ln.join(),{locales:wc}=H(),Ce;if(process.env.FLICKR_API_KEY)try{Ce=new Ac(process.env.FLICKR_API_KEY);}catch(e){throw console.error("Flickr ERROR:",e),new Error(e.message)}async function Mn(e,t){try{let r={prompt:t.prompt||"",page:t.page||1};if(!Ce)throw console.warn("Flickr is not initialized. Check the credentials"),new Error("Flickr is not initialized. Check the credentials");let o=r.prompt,s=(await Ce.photos.search({text:o,license:Tc,sort:"relevance",per_page:24,page:r.page,content_types:"0",orientation:"landscape"}).then(l=>l.body)).photos.photo,a=s.reduce((l,p)=>l.concat(Ce.photos.getSizes({photo_id:p.id})),[]),c=(await Promise.all(a).then(l=>l)).reduce((l,p,u)=>{let m=p.body.sizes.size.find(f=>f.label==="Small 320");return m&&l.push({id:s[u].id,source:m.source}),l},[]);return {meta:{prompt:$(r.prompt),page:$(`${r.page}`)},results:c}}catch(r){throw console.error(r),new Error("Error in search flickr provider")}}async function On(e,t){try{let{content_id:r,image_id:o}=t,n={content_id:$(`${r}`)||"",id:$(`${o}`)||""},a=`https://flic.kr/p/${Ec.int_to_base58(o)}`;if(!Ce)throw new Error("Flickr API Key not configured");let i=await Ce.photos.getInfo({photo_id:o}).then(l=>l.body),c;if(i)if(Ln.includes(i.photo.license)){let l=await e.search.findOne({where:{content_id:r}}),p=await e.image.findOne({where:{url:a}});if(l){if(p)await e.search.update({image_id:p.id},{where:{content_id:r}});else {let m=await Ce.photos.getSizes({photo_id:o}).then(k=>k.body),f=m.sizes.size.find(k=>parseInt(k.width,10)>=1600);if(f||(f=m.sizes.size.find(k=>parseInt(k.width,10)>=1e3)),f||(f=m.sizes.size.find(k=>parseInt(k.width,10)>=500)),!f||!f.source)throw new Error("Flickr Source Error, try another image.");let d=await fetch(f.source);if(!d.ok)throw new Error("Flickr Error retrieving image, try another image.");let R=await d.arrayBuffer(),b=(await Ce.photos.licenses.getInfo().then(k=>k.body.licenses.license)).find(k=>k.id===parseInt(i.photo.license,10)),P={url:a,author:i.photo.owner.realname||i.photo.owner.username,license:b?`${b.name}: ${b.url}`:""},w=await e.image.create(P);await e.image_content.destroy({where:{id:w.id}});let F=wc.map(k=>({id:w.id,locale:k,meta:i.photo.title._content}));await e.image_content.bulkCreate(F),await e.search.update({image_id:w.id},{where:{content_id:r}}),await Ee(e,w.id,R);}let u=await e.search.findOne({where:{content_id:r},include:ge});u&&u.image&&(u.image.thumb=!!u.image.thumb);}else throw new Error("Error updating Search")}else throw new Error("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:Le}=H();function Nn(e){let{readMember:t,searchMember:r,updateMember:o,readMemberImage:n}=e;return [N("GET","read/members",async s=>{let a=_c(s.query),i=a[a.mode]||[],c=a.mode==="whole";if(!c&&i.length===0)throw new E(400,`The request is missing the '${a.mode}' parameter.`);if(!c&&i.length>20&&!a.variant)throw new E(400,`You can look for up to 20 '${a.mode}' in a single request.`);return t(a)}),N("GET","search/members",s=>{let a=Wt(s.query);return r(a)}),N("POST","update/member",s=>{let{body:a}=s;return o(a)},[G.EDITOR]),N("GET","member/image",s=>{let a=K(s.query.size)[0];return n({member:ee(s.query.member),size:a&&a==="splash"?"splash":"thumb"})})]}function _c(e){let t=K(e.locale)[0]||Le,r=t==="all"||jt(e.all),o=K(e.mode)[0],s=(K(e.output)[0]||"full")==="lite"?"lite":"full",a=parseInt(K(e.related)[0],10)||5,i=jt(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:s,locale:r?Le:$(t),ids:K(e.ids||e["ids[]"]),allowNulls:i};if(o==="content_ids")return {all:r,mode:o,variant:c,output:s,locale:r?Le:$(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:s,locale:r?Le:$(t),slugs:K(e.slugs||e["slugs[]"]).map(l=>{let[p,u]=l.split("/");return {variantSlug:p,memberSlug:u}}),allowNulls:false};if(o==="related")return {all:r,mode:o,locale:r?Le:$(t),related:a,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:s,allowNulls:false};if(o==="whole")return {all:r,mode:o,variant:c,locale:r?Le:$(t),output:s,allowNulls:i};throw new E(400,`Invalid mode: '${o}'`)}function Wt(e){let t=K(e.locale)[0]||Le||"en",r=t==="all",o=K(e.format)[0],n=o?o==="nested":r,s=K(e.variant).map(ee);s.length===0&&(s=K(e["variant[]"]).map(ee));let a=K(e.dimension).map(ee);a.length===0&&(a=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?Le:t,preferredLocale:K(e.preferredLocale)[0],limit:K(e.limit).map(ee)[0]??5,format:n?"nested":"plain",includes:jt(e.includes,{default:true}),visible:jt(e.visible,{default:true}),noImage:jt(e.noImage,{default:false}),variant:s,dimension:a,report:i,all:r,sort:K(e.sort)[0],direction:K(e.direction)[0],offset:Number(e.offset||0),origin:c}}async function Dn(e,t){let r=Pt(e),o=Wt({query:t.prompt,limit:"50",visible:"false"}),s=(await r(o)).results.filter(a=>a.image_id).map(a=>({id:a.image_id,source:`/api/cms/member/image?member=${a.content_id}&size=thumb`}));return {meta:{prompt:$(o.query)},results:s}}async function Un(e,t){let{search:r}=e,{content_id:o,image_id:n}=t;await r.update({image_id:n},{where:{content_id:o}});let s=await r.findOne({where:{content_id:o},include:ge}).then(a=>a?{...a.toJSON(),image:{...a.image.toJSON(),thumb:!!a.image.thumb}}:null);return {meta:{id:n,content_id:o},results:s}}if(typeof window<"u")throw new Error("unsplash.ts can only be imported on the server side");var{locales:Pc}=H(),Yt;if(process.env.UNSPLASH_API_KEY)try{Yt=createApi({accessKey:process.env.UNSPLASH_API_KEY});}catch(e){throw console.error("Unsplash error:",e),new Error(e.message)}async function Fn(e,t){try{let r={prompt:t.prompt||"",page:t.page||1};if(!Yt)throw new Error("Unsplash API Key not configured");let o=r.prompt,s=(await Yt.search.getPhotos({query:o,perPage:24,page:r.page,orientation:"landscape"}).then(a=>a.response.results)).map(a=>({id:a.id,source:a.urls.thumb}));return {meta:{prompt:$(r.prompt),page:$(`${r.page}`)},results:s}}catch(r){throw console.error(r),new Error("Error in search unsplash provider")}}async function Vn(e,t){try{let{content_id:r,image_id:o}=t,n={content_id:$(`${r}`)||"",id:$(`${o}`)||""};if(!Yt)throw console.warn("Unsplash is not initialized. Check the credentials"),new Error("Unsplash is not initialized. Check the credentials");let s=await Yt.photos.get({photoId:o}).then(i=>i.response),a;if(s){let i=await e.search.findOne({where:{content_id:r}}),c=s.links.html,l=await e.image.findOne({where:{url:c}});if(i){if(l)await e.search.update({image_id:l.id},{where:{content_id:r}});else {let u=await vr.get(s.urls.full,{responseType:"arraybuffer"}).then(R=>R.data),m={url:c,author:s.user.name||s.user.username,license:"Free Unsplash license: https://unsplash.com/license"},f=await e.image.create(m);await e.image_content.destroy({where:{id:f.id}});let d=Pc.map(R=>({id:f.id,locale:R,meta:s.description||s.alt_description}));await e.image_content.bulkCreate(d),await e.search.update({image_id:f.id},{where:{content_id:r}}),await Ee(e,f.id,u);}let p=await e.search.findOne({where:{content_id:r},include:ge});p&&p.image&&(p.image.thumb=!!p.image.thumb);}else throw new Error("Error updating Search")}else throw new Error("Malformed URL");return {meta:{...n},results:a}}catch(r){throw console.error(r),new Error("Error in save unsplash provider")}}if(typeof window<"u")throw new Error("upload.ts can only be imported on the server side");var{locales:Ic}=H();async function $n(e,t){try{let{content_id:r,image_source:o,files:n}=t,s={content_id:$(`${r}`)||""};if(await e.search.findOne({where:{content_id:r}})&&n){let c=await vc.readFileSync(n.file.filepath),l={url:o,author:"",license:""},p=await e.image.create(l);await e.image_content.destroy({where:{id:p.id}});let u=Ic.map(m=>({id:p.id,locale:m,meta:""}));await e.image_content.bulkCreate(u),await e.search.update({image_id:p.id},{where:{content_id:r}}),await Ee(e,p.id,c);}let i=await e.search.findOne({where:{content_id:r},include:ge});return i&&i.image&&(i.image.thumb=!!i.image.thumb),{meta:{...s},results:i}}catch(r){throw console.error(r),new Error("Error in save upload provider")}}if(typeof window<"u")throw new Error("adobe.ts can only be imported on the server side");var{locales:Cc}=H();var qn=async e=>{let t={"x-api-key":process.env.ADOBE_STOCK_API_KEY||"EMPTY_ADOBE_KEY","X-Product":"BespokeApp/0.1"};return t};var Jt;if(process.env.ADOBE_STOCK_API_KEY)try{Jt={search:async(e,t)=>await vr.get("https://stock.adobe.io/Rest/Media/1/Search/Files",{headers:await qn(!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 vr.get("https://stock.adobe.io/Rest/Media/1/Files",{headers:await qn(!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 zn(e,t){try{let r={prompt:t.prompt||"",page:t.page||1};if(!Jt)throw new Error("Adobe API Key not configured");let n=(await Jt.search(r.prompt,r.page)).map(s=>({id:s.id,source:s.thumbnail_url}));return {meta:{prompt:$(r.prompt),page:$(`${r.page}`)},results:n}}catch(r){throw console.error(r),new Error("Error in search Adobe provider")}}async function Gn(e,t){try{let{content_id:r,image_id:o}=t,n={content_id:$(`${r}`)||"",id:$(`${o}`)||""};if(!Jt)throw console.warn("Adobe is not initialized. Check the credentials"),new Error("Adobe is not initialized. Check the credentials");let s=await Jt.get(o),a;if(s){let i=await e.search.findOne({where:{content_id:r}}),c=s.details_url,l=await e.image.findOne({where:{url:c}});if(i){if(l)await e.search.update({image_id:l.id},{where:{content_id:r}});else {let u=await vr.get(s.thumbnail_1000_url,{responseType:"arraybuffer"}).then(R=>R.data),m={url:c,author:s.creator_name,license:"ADOBE, TO-DO"},f=await e.image.create(m);await e.image_content.destroy({where:{id:f.id}});let d=Cc.map(R=>({id:f.id,locale:R,meta:s.title||s.description}));await e.image_content.bulkCreate(d),await e.search.update({image_id:f.id},{where:{content_id:r}}),await Ee(e,f.id,u);}let p=await e.search.findOne({where:{content_id:r},include:ge});p&&p.image&&(p.image.thumb=!!p.image.thumb);}else throw new Error("Error updating Search")}else throw new Error("Malformed URL");return {meta:{...n},results:a}}catch(r){throw console.error(r),new Error("Error in save adobe provider")}}var{locales:Bc}=H(),Tr=process.env.PIXABAY_API_KEY,Kn="https://pixabay.com/api/";async function Hn(e,t){try{let r={prompt:t.prompt||"",page:t.page||1};if(!Tr)throw new Error("Pixabay API Key not configured");let o=encodeURIComponent(r.prompt),n=`${Kn}?key=${Tr}&q=${o}&per_page=${24}&page=${r.page}&image_type=photo&orientation=horizontal&safesearch=true`,i=(await vr.get(n)).data.hits?.map(c=>({id:c.id,source:c.previewURL||c.webformatURL}))||[];return {meta:{prompt:$(r.prompt),page:$(`${r.page}`)},results:i}}catch(r){throw console.error(r),new Error("Error in search pixabay provider")}}async function jn(e,t){try{let{content_id:r,image_id:o}=t,n={content_id:$(`${r}`)||"",id:$(`${o}`)||""};if(!Tr)throw console.warn("Pixabay is not initialized. Check the credentials"),new Error("Pixabay is not initialized. Check the credentials");let s=`${Kn}?key=${Tr}&id=${o}`,i=(await vr.get(s)).data,c;if(i.hits&&i.hits.length>0){let l=i.hits[0],p=await e.search.findOne({where:{content_id:r}}),u=l.pageURL,m=await e.image.findOne({where:{url:u}});if(p){if(m)await e.search.update({image_id:m.id},{where:{content_id:r}});else {let d=l.largeImageURL||l.webformatURL||l.imageURL;if(!d)throw new Error("Pixabay image URL not available");let R=await vr.get(d,{responseType:"arraybuffer"}).then(w=>w.data),h={url:u,author:l.user||`Pixabay User ${l.user_id}`,license:"Free Pixabay License: https://pixabay.com/service/license/"},b=await e.image.create(h);await e.image_content.destroy({where:{id:b.id}});let P=Bc.map(w=>({id:b.id,locale:w,meta:l.tags||l.description||""}));await e.image_content.bulkCreate(P),await e.search.update({image_id:b.id},{where:{content_id:r}}),await Ee(e,b.id,R);}let f=await e.search.findOne({where:{content_id:r},include:ge});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")}}if(typeof window<"u")throw new Error("imageSave.ts can only be imported on the server side");var Lc={local:Un,flickr:On,unsplash:Vn,upload:$n,adobe:Gn,pixabay:jn};function ot(e,t){let r=Lc[t];if(!r)throw new E(500,`Wrong provider dbImageSaveFactory.ts: ${t}`);return I(o=>r(e,o))}if(typeof window<"u")throw new Error("imageSearch.ts can only be imported on the server side");var Mc={local:Dn,flickr:Mn,unsplash:Fn,adobe:zn,pixabay:Hn};function vt(e,t){let r=Mc[t];if(!r)throw new E(500,`Wrong provider dbImageSearchFactory.ts: ${t}`);return I(o=>r(e,o))}var $c=e=>(e.dimensions&&e.dimensions.forEach(t=>{t.variants&&t.variants.forEach(r=>{r.members_count&&(r.members_count=parseInt(r.members_count,10));});}),e);function _r(e){let{report:t,search:r}=e;return o;async function o(n){let s=n?.report_id?Number(n.report_id):void 0,a=!(typeof n?.count<"u"&&(n.count==="false"||n.count===false)),i={attributes:["id","name",[literal("COALESCE(NULLIF(settings ->> 'order', '')::INTEGER, 0)"),"ordering"],[literal("COALESCE(NULLIF(settings ->> 'hide', '')::BOOL, false)"),"hide"]],where:{[Op.or]:[where(cast(json("settings.hide"),"boolean"),false),literal("NOT (settings::jsonb ? 'hide')")]},order:[["ordering","ASC"]],include:[{attributes:["id","name","ordering"],association:"dimensions",separate:true,order:[["ordering","ASC"]],include:[{attributes:["id","name","slug",[literal("COALESCE(NULLIF(settings ->> 'order', '')::INTEGER, 0)"),"ordering"]],association:"variants",separate:true,group:["variant.id"],order:[["ordering","ASC"]]}]}]};return s&&(i.where={...i.where,id:s}),a&&i.include&&i.include[0]&&(i.include[0].include[0].attributes.push([fn$1("COUNT",col("members.id")),"members_count"]),i.include[0].include[0].include=[{model:r,attributes:[],as:"members",where:{visible:true}}]),{data:(await t.findAll(i)).map(l=>({...$c(l.toJSON()),mode:l.dimensions.length===1?Pe.UNILATERAL:Pe.MULTILATERAL}))}}}function Wn(e){return async()=>(await tt(e,true),{error:false})}var{locales:qc,localeDefault:zc}=H(),Gc=(e,t)=>{if(!e)return [];let r=[];return t.forEach(o=>{let n=e.filter(s=>s.metadata.report.id===o.id);if(n.length>0)if(o.mode===Pe.UNILATERAL){let s=o.dimensions[0];s.variants.forEach(a=>{let i=n.filter(c=>c.metadata.dimension.id===s.id&&c.metadata.variant.id===a.id);i.length>0&&(r=r.concat(i.map(c=>({path:`/${a.slug}/${c.slug}`,name:c.name,confidence:c.confidence,report:{id:o.id,name:o.name,mode:o.mode},members:[c],id:`r-${o.id}-${[c].map(l=>`${l.id}`).join("-")}`}))));});}else o.mode;}),r.sort((o,n)=>o.confidence<n.confidence?1:-1)},Kc=(e,t)=>{if(!e)return [];let r,o,n;return e.map(s=>(r={...t.find(a=>a.id===s.report_id)},o={...r.dimensions.find(a=>a.id===s.dimension_id)},n={...o.variants.find(a=>a.id===s.variant_id)},delete r.dimensions,delete o.variants,{name:s.name,confidence:s.zvalue,metadata:{id:s.id,slug:s.slug,report:r,dimension:o,variant:n},id:s.content_id,slug:s.slug}))};function Yn(e){let t=Pt(e),r=_r(e);return o;async function o(n){let s=n.format||"results",a=qc.includes(n.locale)?n.locale:zc,i=n.origin||"flexsearch",c=process.env.REPORTS_EXTERNAL_SEARCH&&i==="typesense",l=await t({...n,format:"plain",locale:$(a),visible:true});if(c)return l;{let p=l.results?l.results:[],m=(await r()).data,f=Kc(p,m);return {meta:{...l.meta,origin:"flexsearch",format:s},results:Gc(f,m)}}}}function Jn(e){return async t=>{try{let{variantPaths:r}=t,o=[];if(r)for(let n=0;n<r.length;n++){let s=r[n];(await e.search.findAll({attributes:["slug"],where:{variant_id:s.variantId}})).forEach(i=>{o.push(`/${s.prefix}/${s.variantSlug}/${i.slug}`);});}return {...t,paths:o,revalidated:0,samples:[]}}catch(r){throw new E(r.response?.status||500,r.message)}}}function Qn(){return async e=>{try{let{target:t}=e;return {target:t}}catch(t){throw new E(t.response?.status||500,t.message)}}}function he(e,t){let r=[],o=s=>Object.values(t).reduce((i,c)=>("inputs"in c&&c.inputs.includes(s)&&(i.push(c.id),i=i.concat(o(c.id))),i),[]);e.forEach(s=>{r=r.concat(o(s));});let n=[];return r.forEach(s=>{n.includes(s)||n.push(s);}),n}function jc(e,t){return e.some(r=>t.includes(`role.${r}`))}function Zn(e){let{report:t}=e;return r;async function r(o){let n=await t.findByPk(o.report_id,{include:{association:"sections",separate:true,where:{id:o.section_id},include:[{association:"blocks",separate:true,include:[{association:"contentByLocale",separate:true,where:{locale:{[Op.or]:[o.locale,"logic"]}}},{association:"inputs"},{association:"consumers"}]}]}}).then(a=>a&&a.sections&&Array.isArray(a.sections)?a.sections.reduce((i,c)=>{let l=c.blocks.map(p=>{let u=p.toJSON();return u.inputs=u.inputs.map(m=>m.id),u.consumers=u.consumers.map(m=>m.id),u});return i.concat(l)},[]):[]),s=n.filter(a=>a.settings&&a.settings.access&&Array.isArray(a.settings.access)&&Array.isArray(o.roles)&&(a.settings.access.includes("private")||jc(o.roles,a.settings.access))).map(a=>a.id);return s=s.concat(he(s,n)),{params:{...o},data:n.filter(a=>s.includes(a.id))}}}var Jc=Object.keys(po).filter(e=>e.indexOf("Icon")===0);async function Xn(){return {meta:{provider:"tabler"},results:Jc}}async function ea(e){let t=po[e.name]?po[e.name]:()=>"";return renderToString(createElement(t))}var Qc={tabler:Xn};function ta(e){let t=Qc[e];if(!t)throw new E(500,`Wrong provider dbListIconsFactory.ts: ${e}`);return I(()=>t())}var Zc={tabler:ea};function ra(e){return I(t=>{let r=Zc[e];if(!r)throw new E(500,`Wrong provider dbReadIconFactory.ts: ${t.provider}`);return r({name:t.name,provider:e})})}function oa(){return e;async function e(){return {secrets:_t()}}}function nt(e,t,r){return Xe().then(o=>{Object.assign(r,It(o));})}function It(e,t){let r={},o=qe(t||{providers:[]});return t&&o.actions&&o.source==="custom"?(r.searchRole=I(o.actions.searchRole()),r.searchUser=I(o.actions.searchUser()),r.readUser=I(o.actions.readUser()),r.updateUser=I(o.actions.updateUser())):o.source==="auth0"&&(r.searchRole=I(Oo()),r.searchUser=I(No()),r.readUser=I(Do()),r.updateUser=I(Uo())),{...In(e),searchReport:I(Yn(e)),readMetadata:I(_r(e)),regenerateSearch:I(Wn(e)),imageFlickrSearch:vt(e,"flickr"),imageLocalSearch:vt(e,"local"),imageUnsplashSearch:vt(e,"unsplash"),imageAdobeSearch:vt(e,"adobe"),imagePixabaySearch:vt(e,"pixabay"),imageFlickrSave:ot(e,"flickr"),imageLocalSave:ot(e,"local"),imageUnsplashSave:ot(e,"unsplash"),imageUploadSave:ot(e,"upload"),imageAdobeSave:ot(e,"adobe"),imagePixabaySave:ot(e,"pixabay"),urlProxy:br(e),searchRole:r.searchRole,searchUser:r.searchUser,readUser:r.readUser,updateUser:r.updateUser,updateMyData:I(Fo()),revalidateReport:I(Jn(e)),revalidateUrl:I(Qn()),readPrivateBlocks:I(Zn(e)),listTablerIcons:ta("tabler"),readTablerIcon:ra("tabler"),readEnvSecrets:I(oa())}}async function mo(e){try{let t=new Xc.IncomingForm,r=await new Promise((o,n)=>{t.parse(e,(s,a,i)=>{if(s){console.error("Error in formidable parse function inside internal parseBody.ts",s),n(s);return}o({fields:a,files:i});});});return {...r.fields,files:r.files}}catch(t){return {error:t}}}function Me(e,t){let r=ue(e,"create",t),o=ue(e,"read",t),n=ue(e,"update",t),s=ue(e,"delete",t),a=ue(e,"updateBulk",t),i=ue(e,"createBulk",t);return [N("POST",`create/bulk/${t}`,c=>{let{body:l}=c,{files:p,...u}=l,m=Object.keys(u).map(f=>u[f]);return i(m)},[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,p=K(l.id).map(ee);return o({id:p,include:jt(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:p,...u}=l,m=Object.keys(u).map(f=>u[f]);return a(m)},[G.EDITOR]),N("DELETE",`delete/${t}`,c=>{let l=ee(c.query.id);return s(l)},[G.EDITOR])]}function na(e){let{validateVariantSlug:t}=e;return [...Me(e,"variant"),N("GET","validate/variant",r=>{let o=r.query,n=ee(o.dimension);return t({dimension:n,slug:yr(o.slug)})},[G.EDITOR])]}function aa(e){return Me(e,"datasource").map(r=>({...r,roleRequired:[G.EDITOR]}))}function at(e,t){let r=`image${Se(t)}Save`,o=e[r];return N("POST",`images/save/${t}`,n=>{let s=n.body;if(!s.content_id)throw new E(400,"Missing 'content_id' parameter.");if(!s.image_id)throw new E(400,"Missing 'image_id' parameter.");return o(s)},[G.EDITOR])}function Ct(e,t){let r=`image${Se(t)}Search`,o=e[r];return N("GET",`images/search/${t}`,async n=>{let s=K(n.query.prompt)[0];if(!s)throw new E(400,"Empty 'prompt' param.");return o({prompt:s,page:ee(n.query.page)})},[G.EDITOR])}function sa(e){let{readMetadata:t}=e;return N("GET","read/metadata",r=>t(r.query))}function ia(e){let{regenerateSearch:t}=e;return N("POST","search/regenerate",()=>t(void 0),[G.EDITOR])}function ca(e){let{searchReport:t}=e;return N("GET","search/reports",r=>{let o=tl(r.query);return t(o)})}function tl(e){return {...Wt(e),format:K(e.format)[0]}}function la(e){let{urlProxy:t}=e;return N("GET","url/proxy",(r,o,n)=>{let{url:s,method:a="GET",wrapper:i="true"}=r.query;if(!s)throw new E(400,"Missing URL parameter");let c=[];return n&&n.user&&n.user.bespoke_roles&&(c=n.user.bespoke_roles),t({url:Array.isArray(s)?s.join(","):s,method:K(a)[0]==="POST"?"POST":"GET",user_roles:c,wrapper:i!=="false",session:n})})}function ua(e){let{readMetadata:t,revalidateReport:r}=e;return N("GET","revalidate/report",async(o,n)=>{let{reportId:s,profilePrefix:a}=o.query;if(!s||!a)throw new E(400,"Missing URL parameter in revalidate factory: reportId or profilePrefix");try{let i=parseInt(`${s}`,10),c=`${a}`.split("/").filter(d=>d!=="").join("/"),l=[],p=await t({}).then(d=>d.ok?d.data.data.find(R=>R.id===i):[]);p&&p.mode===Pe.UNILATERAL&&p.dimensions.forEach(d=>{d.variants.forEach(R=>{l.push({prefix:c,variantId:R.id,variantSlug:R.slug});});});let u=await r({profilePrefix:c,reportId:i,variantPaths:l}),m=[],f=0;return u.ok&&(f=u.data.paths.length,m=u.data.paths.slice(0,5),Promise.all(u.data.paths.map(d=>{let R;try{R=n.revalidate(d,{unstable_onlyGenerated:!0});}catch(h){console.error("error",d,h);}return R}))),{ok:!0,status:200,data:{reportId:s,revalidated:f,samples:m}}}catch(i){throw console.error(i),new E(500,"Error revalidating")}},[G.EDITOR])}function pa(){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 st(e=process.env){let t=e.BESPOKE_JWT_SECRET;return t||(console.warn("WARNING: Using default BESPOKE_JWT_SECRET. This is insecure and not recommended for production environments."),"BESPOKE_JWT_SECRET")}var{localeDefault:ol}=H(),da=st();function ma(e){let{readPrivateBlocks:t}=e;return N("POST","read/blocks/private",(r,o,n)=>{let{userToken:s}=r.body,a=null;if(s&&da)try{let l=Oi.verify(s,da);a=typeof l=="object"&&l!==null&&"roles"in l?l.roles:[];}catch(l){console.error("Failed to verify user token:",l);}if(!a&&(!n||!n.user))throw new E(401,"Unauthorized. Must be logged in or provide a valid token.");let i=s&&a?a:n&&n.user?n.user.bespoke_roles:[],c={report_id:parseInt(r.body.report_id,10),locale:r.body.locale||ol,roles:i,section_id:r.body.section_id||[]};return t(c)})}function fa(e){let{readEnvSecrets:t}=e;return N("GET","read/secrets",()=>t({}),[G.EDITOR])}function ga(e){let{searchRole:t}=e;return N("GET","auth/search/roles",(r,o)=>t(""),[G.EDITOR,G.ADMIN])}function ya(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 ha(e){let{readUser:t}=e;return N("GET","auth/read/user",r=>t(r.query.user_id),[G.ADMIN])}function Ra(e){let{updateUser:t}=e;return N("POST","auth/update/user",async r=>{let o=r.body;return await t(o)},[G.ADMIN])}function ba(e){let{updateUser:t,readUser:r}=e;return N("POST","auth/update/me",async(o,n,s)=>{let{report_id:a,user_metadata:i}=o.body,c={user_id:s.user.id,user_metadata:{}};try{let{user:l}=s;return s&&l&&a&&(l.bespoke_app_metadata&&l.bespoke_app_metadata.reports&&Array.isArray(l.bespoke_app_metadata.reports)?c.app_metadata={...l.bespoke_app_metadata}:c.app_metadata={reports:[]},c.app_metadata.reports.push({reportId:a})),i&&(c.user_metadata={...l.bespoke_app_metadata,...i}),await t(c),{ok:!0,status:200,wrapper:!0,data:{ok:!0,message:"User & session updated"}}}catch(l){return {ok:false,status:500,error:l.message}}},[])}async function 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 Sa(){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 Ea(e,t){let r=`list${Se(t)}Icons`,o=e[r];return N("GET",`list/icons/${t}`,async()=>o({}),[G.EDITOR])}function Aa(e,t){let r=`read${Se(t)}Icon`,o=e[r];return N("GET",`read/icons/${t}/icon.svg`,async n=>o({provider:t,name:n.query.name}))}function Ta(){return N("GET","report",async(e,t)=>{let{report:r,prefix:o,locale:n}=e.query;if(!r)throw new E(400,"Missing report parameter.");if(!o)throw new E(400,"Missing report parameter.");if(!n)throw new E(400,"Missing report parameter.");try{let a=await(await fetch(`${process.env.NEXT_PUBLIC_REPORTS_BASE_URL}/${n}${o}${r}`)).text(),l=new al().parseFromString(a,"text/html").getElementById("__NEXT_DATA__")?.textContent,p=JSON.parse(l).props;return {ok:!0,status:200,data:{variables:p.pageProps.initialState.variables,status:p.pageProps.initialState.status}}}catch(s){throw console.error(s),new E(500,"Couldn't find page cache")}})}var il=st();function cl(e){let t={email:e.user.email,name:e.user.name,roles:e.user.bespoke_roles||[]};return Oi.sign(t,il,{expiresIn:"1min"})}function wa(){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:cl(r)}}}catch(o){throw console.error("Error generating token:",o),new E(500,"Internal Server Error")}})}var ul=st(),pl=e=>!!Oi.verify(e,ul);function _a(){return N("POST","users/validate-token",async(e,t)=>{let{token:r}=e.body;try{return pl(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 fl=xe();function fo(e,t){return `${e.toUpperCase()} ${t.toLowerCase()}`}function gl(e,t){let r=It(e,t);return Object.fromEntries([...Me(r,"block"),...Me(r,"dimension"),...Me(r,"formatter"),...Me(r,"report"),...Me(r,"section"),...aa(r),...na(r),...Nn(r),ca(r),sa(r),ia(r),at(r,"flickr"),at(r,"local"),at(r,"unsplash"),at(r,"upload"),at(r,"adobe"),at(r,"pixabay"),Ct(r,"flickr"),Ct(r,"local"),Ct(r,"unsplash"),Ct(r,"adobe"),Ct(r,"pixabay"),la(r),ga(r),ya(r),ha(r),Ra(r),ba(r),ua(r),pa(),ma(r),Sa(),Ea(r,"tabler"),Aa(r,"tabler"),Ta(),fa(r),wa(),_a()].map(({handler:o,method:n,path:s,roleRequired:a})=>[fo(n,s),{handler:o,roleRequired:a}]))}function yl(e){return (t,r,o)=>new Promise((n,s)=>{e(o)(t,r,a=>a instanceof Error?s(a):n(a));})}var hl=yl(dl);function Rl(e){let t=Xe().then(r=>gl(r,e));return async function(o,n){await hl(o,n,{methods:["GET","HEAD","PUT","PATCH","POST","DELETE"],origin:"*"});let{query:s,method:a}=o,{path:i,...c}=s;if(i&&a){let l=await t.then(p=>{let u=[].concat(i).join("/"),m=fo(a,u);return p[m]});if(l){let p=await me(o,n,e);if(l.roleRequired){if(!p)return n.status(401).json({error:"Unauthorized. Must be logged in."});let u=p&&p.user&&p.user.bespoke_roles&&Array.isArray(p.user.bespoke_roles)?p.user.bespoke_roles:[];if(Array.isArray(l.roleRequired)&&l.roleRequired.length>0&&!ar(u,l.roleRequired))return n.status(402).json({error:"Forbidden. Not enough roles."})}if(l.handler)return ["POST","DELETE"].includes(a)&&(o.body=await mo(o)),Promise.resolve(o).then(u=>l.handler(u,n,p||void 0)).then(async u=>{if(u&&"error"in u)throw new E(u.status,u.error);if(u.ok)if(u.data instanceof Buffer){let m=await ml(u.data),f=Buffer.byteLength(u.data);n.writeHead(u.status,{"Content-Type":m?m.mime:"image/jpeg","Content-Length":f.toString()}).send(u.data);}else o.url&&o.url.indexOf("/icon.svg?name=")>0?(n.setHeader("Content-Type","image/svg+xml"),n.status(u.status).send(u.data)):n.status(u.status).json(u.wrapper?{data:u.data}:u.data);}).catch(u=>{fl&&console.error("Backend Error",u),n.status(u.code).json({error:u.message});})}}else i||await t.then(console.info);return n.status(404).json({error:"No matching route",path:i,query:c})}}var bl=e=>{let t=e;return async function(r,o){let n=await t({test:"pala"});return o.json(n)}},Sl=bl;var gt={};gs(gt,{addBlockToState:()=>or,addRunConsumersRunning:()=>ts,cloneEntity:()=>Wa,createEntity:()=>Ka,deleteEntity:()=>ja,deleteQueryParam:()=>wu,readEntity:()=>oe,readEnvSecrets:()=>Ou,readMember:()=>Fe,readMetadata:()=>rr,readPrivateBlocks:()=>Bu,readUser:()=>vu,recalculateVariables:()=>ns,removeBlocksFromState:()=>Ve,removeDataSourceLogic:()=>nr,removeRunConsumersRunning:()=>rs,reportSearch:()=>Eu,resetSectionState:()=>es,revalidateReport:()=>Mu,revalidateUrl:()=>Lu,searchMember:()=>Tu,searchRegenerate:()=>Au,searchRole:()=>xu,searchUser:()=>Pu,setCurrentLocale:()=>Ru,setPreferredLocale:()=>bu,setPreviews:()=>hu,setQueryParam:()=>_u,setSectionState:()=>Xa,setStatus:()=>Za,updateEntity:()=>Ha,updateMyData:()=>Cu,updateUser:()=>Iu,urlProxy:()=>ku,variantValidateSlug:()=>Su});function Re(e,t){return e.request(t).then(r=>{let{status:o,data:n}=r;return "error"in n?{ok:false,status:o,error:n.error}:{ok:true,status:o,wrapper:n.wrapper,data:n.data}},r=>{if("isAxiosError"in r){let{status:o,data:n}=r.response||{status:500};return {ok:false,status:o,error:n?.error??r.message}}return {ok:false,status:500,error:r.message}})}function te(e,t,r){let o=typeof t=="string"?{url:t}:t;return n=>Re(e,{...o,method:"GET",params:r?r(n):n})}function re(e,t,r){let o=typeof t=="string"?{url:t}:t;return n=>Re(e,{...o,method:"POST",data:n})}function Oe(e,t,r){let o=typeof t=="string"?{url:t}:t;return n=>Re(e,{...o,method:"DELETE",params:r?r(n):n})}function it(e,t){return r=>Re(e,{method:"POST",url:`images/save/${t}`,params:{prompt:r.prompt,provider:t}})}function Bt(e,t){return r=>Re(e,{method:"GET",url:`images/search/${t}`,params:{prompt:r.prompt,page:r.page,provider:t}})}function ka(e,t){return ()=>Re(e,{method:"GET",url:`list/icons/${t}`,params:{provider:t}})}function xa(e,t){return r=>Re(e,{method:"GET",url:`read/icons/${t}/icon.svg`,params:{name:r.name}})}var ct=e=>({id:e}),Al=e=>{if(e.mode==="slugs"){let t=e.slugs.map(r=>[r.variantSlug,r.memberSlug].join("/")).join(",");return {...e,slugs:t}}return ["related","whole"].includes(e.mode)?{...e}:{...e,[e.mode]:e[e.mode].join(",")}};function Qt(e){let t=vr.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:Oe(t,"delete/block",ct),deleteDimension:Oe(t,"delete/dimension",ct),deleteFormatter:Oe(t,"delete/formatter",ct),deleteReport:Oe(t,"delete/report",ct),deleteSection:Oe(t,"delete/section",ct),deleteVariant:Oe(t,"delete/variant",ct),deleteDatasource:Oe(t,"delete/datasource",ct),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",Al),readMemberImage:te(t,{url:"member/image",responseType:"blob"}),searchMember:te(t,"search/members"),updateMember:te(t,"update/members"),imageLocalSearch:Bt(t,"local"),imageLocalSave:it(t,"local"),imageFlickrSearch:Bt(t,"flickr"),imageFlickrSave:it(t,"flickr"),imageUnsplashSearch:Bt(t,"unsplash"),imageUnsplashSave:it(t,"unsplash"),imageUploadSave:it(t,"upload"),imageAdobeSearch:Bt(t,"adobe"),imageAdobeSave:it(t,"adobe"),imagePixabaySearch:Bt(t,"pixabay"),imagePixabaySave:it(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:ka(t,"tabler"),readTablerIcon:xa(t,"tabler"),readEnvSecrets:te(t,"read/secrets")}}var _l=jt(process.env.REPORTS_LOGGING),lt=kl;function kl(e,t,r,o,n=void 0,s){let a={},i=[],{locale:c}=fe(s);try{if(t){let l=new Proxy(console,{get(u,m){return xl(m,"log","debug","info","warn","error")?(...f)=>{i.push(`${m} ${Date.now()} - ${f.map(d=>format(d)).join(" ")}`),_l&&u[m](...f);}:u[m]}}),p;return n?p=new Function(e,"console","libs","formatters","locale","variables",r)(t,l,je,o,c,n):p=new Function(e,"console","libs","formatters","locale",r)(t,l,je,o,c),typeof p=="object"&&Object.keys(p).length>0&&Object.assign(a,p),{vars:a,error:null,log:i,output:p}}return {vars:a,error:"Invalid API Link",log:i}}catch(l){return {vars:a,error:l.message,log:i}}}function xl(e,...t){return t.includes(e)}var go=(e,t,r)=>{let{variables:o}=r,n=a=>a.allowed==="never"?false:!a.allowed||a.allowed==="always"||o[a.allowed],s={...e};return Object.keys(s).forEach(a=>{typeof s[a]=="string"?s[a]=ye(s[a],t,r):Array.isArray(s[a])?s[a]=s[a].filter(n).map(i=>typeof i=="object"?go(i,t,r):typeof i=="string"?ye(i,t,r):i):typeof s[a]=="object"&&s[a]!==null&&!(s[a]instanceof Date)&&(s[a]=go(s[a],t,r));}),s},kr=go;var Pa=e=>Array.isArray(e)?e.map(t=>typeof t=="string"?{allowed:"always",label:t,id:t}:{allowed:"always",label:t.id,...t}):[];var Pl=(e,t,r)=>{if(!r)return false;if(e===Ye.SINGLE)return r.find(n=>n.id===t);let o=Array.isArray(t)?t:t.split(",");return Array.isArray(o)&&o.every(n=>r.map(s=>s.id).includes(n))},yo=Pl;function ho(e,t,r,o,n=false){let{variables:s}=fe(o),a=kr({logic:t},r,o).logic,i=lt("variables",s,a,r,void 0,o),{vars:c,log:l,error:p}=i,u=c.type||Ye.SINGLE,m=c.component||"Selector",f=c.hideLabel||"false",d=c.resetSectionVars||"false",R=c.name||"Unlabeled Selector",h=Pa(c.options||[]),b=k=>u===Ye.MULTI&&!Array.isArray(k)?[k]:k,P=c.defaultValue,w;if(P&&(P=b(P),yo(u,P,h)&&(w=P)),!w){let k=h&&h[0]&&h[0].id||h[0]||"";w=b(k);}if(n&&typeof window<"u"){let k=`selector${e}id`,q=new URLSearchParams(window.location.search),D=Object.fromEntries(q)[k];D&&!yo(u,D,h)&&D!==void 0&&(q.delete(k),window.history.replaceState(null,null,`?${q.toString()}`));}return {config:{name:R,type:u,options:h,defaultValue:w,component:m,hideLabel:f,resetSectionVars:d},log:l,error:p}}function Ro(e,t,r){if(!e)return false;let o=Array.isArray(r)?r:r.split(",");return Array.isArray(o)&&o.every(n=>e.map(s=>`${s[`${t} ID`]}`).includes(n))}function bo(e,t,r,o,n=false){let{variables:s}=fe(o),a=kr({logic:t},r,o).logic,i=lt("variables",s,a,r,void 0,o),{vars:c,log:l,error:p}=i;if(n&&typeof window<"u"){let m=`multihierarchySelector${e}-value`,f=`multihierarchySelector${e}-type`,d=new URLSearchParams(window.location.search),R=Object.fromEntries(d),h=R[m],b=R[f];h&&h!==void 0&&b&&b!==void 0&&!Ro(c.data,b,h)&&(d.delete(m),d.delete(f),window.history.replaceState(null,null,`?${d.toString()}`));}return {config:c,log:l,error:p}}var vl=(e,t,r)=>{let o=`selector${e}id`,n=new URLSearchParams(typeof location<"u"&&location?.search?location.search:"").get(o),s=new URLSearchParams(t).get(o),a=n||s;if(r.type===Ye.MULTI){let l=a?a.split(","):r.defaultValue,p=r.options.filter(u=>l.includes(u.id));return {[`selector${e}id`]:l,[`selector${e}label`]:(p||[]).map(u=>u.label)}}let i=a&&r.options.find(l=>l.id===a)?a:r.defaultValue,c=r.options.find(l=>l.id===i);return {[`selector${e}id`]:i,[`selector${e}label`]:c&&c.label||void 0}},va=vl;var Il=(e,t,r)=>{let o=`multihierarchySelector${e}-value`,n=`multihierarchySelector${e}-type`,s=new URLSearchParams(typeof location<"u"&&location?.search?location.search:"").get(o),a=new URLSearchParams(typeof location<"u"&&location?.search?location.search:"").get(n),i=new URLSearchParams(t).get(o),c=new URLSearchParams(t).get(n),l=s||i,p=a||c,u=l?l.split(","):r.defaultValue||[],m=p||r.defaultValueType||"",f=r.data?.filter(d=>u.includes(`${d[`${m} ID`]}`))||[];return {[`multihierarchySelector${e}id`]:u,[`multihierarchySelector${e}label`]:[...new Set((f||[]).map(d=>d[m]))],[`multihierarchySelector${e}type`]:m}},Ia=Il;var{localeDefault:Ca,locales:Cl}=H(),Bl=Object.values(Qr),Ll=(e,t=Ca)=>e&&Bl.includes(e.type)?{locale:Zr,locales:[Zr]}:{locale:t,locales:Cl},Ba=(e,t=Ca)=>{if(!e)return {};let{locale:r}=Ll(e,t);return e.contentByLocale?.[r]?.content};function Ml(e,t){let r=Object.values(t),o=r.filter(n=>n.shared&&n.section_id!==e).map(n=>n.id);return Object.fromEntries(r.filter(n=>n.section_id===e&&(n.inputs.length===0||n.inputs.some(s=>o.includes(s)))).map(n=>[n.id,n]))}var La=Ml;function So(e){return e.type===O.SECTION_FLAG&&e.inputs.length===0&&e.consumers.length===0}var Ne=jt(process.env.NEXT_PUBLIC_REPORTS_DEBUG),Vl=process.env.REPORTS_ORIGIN||"",$l=process.env.NEXT_PUBLIC_REPORTS_AXIOS_RETRIES,Da=5;try{Da=parseInt(`${$l||5}`,10);}catch(e){console.error("Error setting axios retries NEXT_PUBLIC_REPORTS_AXIOS_RETRIES defaults to 5",e);}Ma(vr,{retries:Da,retryDelay:Ma.exponentialDelay,onRetry:(e,t,r)=>{console.error("Generator request failed. Retrying... Count: ",e),console.error("URL: ",r.url),console.error(t.message);}});vr.interceptors.request.use(e=>({...e,requestStart:Date.now()}));vr.interceptors.response.use(e=>({...e,requestDuration:new Date().getTime()-e.config.requestStart}),e=>Promise.reject(e));var ql=(e,t,r)=>{let o=ye(e,t,r);return o.startsWith("http")||(o=`${Vl}${o.startsWith("/")?"":"/"}${o}`),o},{urlProxy:zl}=Qt("/api/cms");function Pr(e){return e.ok!==void 0}function xr(e){this.message=e,this.name="ApiFetchException";}var Oa=process.env.NEXT_PUBLIC_REPORTS_API_FETCH_TIMEOUT||0;async function Gl(e,t,r="en",o,n){let s=Date.now(),a=e,i,c=pe(),l=_t(),p={envs:{...c,...l}},u=new URL(e),m=new URLSearchParams(u.searchParams.toString());m.has("bespoke_slugs")&&(u.searchParams.delete("bespoke_slugs"),a=u.toString());let f={datasource:void 0};o.find(P=>{if(!P.content?.pattern)return false;try{let w=new RegExp(P.content.pattern,"gm");return w.test(a)?(f.datasource=P,!0):w.test(a)}catch{return false}});let d=n?n.settings:{},R=!!(d&&d.useProxy&&d.useProxy==="true"),h=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(a)}`;if(typeof window=="object"&&(R||h)){let P=await zl({url:a,timeout:Oa});if(P.ok===true)i=P.data;else throw new xr(P?.error)}else try{let w={url:a,timeout:Oa};if(f.datasource){let k=p;if(typeof window<"u")try{let D=await getSession();if(D){let _={user:D.user,status:"authenticated",isLoading:!1,update:async()=>D};k={...p,session:_};}}catch(D){console.warn("Could not retrieve user session:",D);}let B=await Rr({vars:["url","libs","session"],logic:f.datasource.content.logic},k)(a);if(B.axiosConfig)w=B.axiosConfig;else throw new xr(`AxiosConfig is missing in Data Source ${f.datasource.name} (ID: ${f.datasource.id}).`)}let F=await vr(w);if(F.status===200)F.headers["content-type"]==="text/csv"?i=csvParse(F.data):i=F.data;else throw new xr("No response for: "+a)}catch(P){throw new xr(P.message)}if(m.has("bespoke_slugs")){let P=m.get("bespoke_slugs");if(P){let w=P.split(",");if(w.length===3){let[F,k,q]=w,B=Dt(i,q);if(B&&Array.isArray(B)){let D=Array.from(new Set(B.map(_=>`${_[k]}`).filter(_=>!["","undefined"].includes(_))));if(D.length>0){let _=D.join("").length>2e3,L=await t({mode:_?"whole":"ids",ids:_?void 0:D,all:false,locale:r,variant:[parseInt(F,10)],output:"lite",limit:D.length+1,allowNulls:true}).then(U=>{let C=[];return Pr(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: ${k}, Accessor: ${q}`),console.error(` Url ${e}`),n&&console.error(` From Section ${n.section_id} and Block ${n.id}`),console.error(U),[]));if(L){let U=Object.fromEntries(L.map(C=>[C.id,`/${C.variant_slug}/${C.slug}`]));B.map(C=>(C.bespoke_slug=U[C[k]]?U[C[k]]:null,C));}}}}}}return {data:i,requestDuration:Date.now()-s,finalUrl:h||R?b:a,apiDataSource:f.datasource?f.datasource:false}}function Kl(e){this.name="BlockException",this.message=e;}async function Na(e,t,r,o,n){let{locale:s,variables:a,query:i}=fe(r),c=jl(e,r,a,t),l=null,p=e.contentByLocale?.logic?.content?.api,u=null,m=null,f=null,d=null,R=null;if(!c)return {outputVariables:{},renderVariables:{},status:{allowed:false,hiddenByCascade:e.id}};if(e.type===O.FALLBACK)return {outputVariables:{},renderVariables:{},status:{allowed:c,hiddenByCascade:e.id}};if(p){f=ql(p,t,r);let B=f.split("|||").filter(L=>L!==""),D=[];for(let L=0;L<B.length;L++){let U=B[L];new RegExp("^(?:[a-z+]+:)?//","i").test(f)||(U=`${process.env.NEXT_PUBLIC_REPORTS_BASE_URL}/${U}`.replace(/([^:]\/)\/+/g,"$1")),D.push(Gl(U,o,s,n,e).catch(z=>{throw new Kl(` Excecution of ${e.type}-${e.id} in section ${e.section_id} in report ${a.report_name} (${a.report_id}) failed.
|
|
26
|
+
Error fetching ${U}.
|
|
27
|
+
Message: ${z.message}.
|
|
28
|
+
`)}));}let _=await Promise.all(D).catch(L=>L.message);if(typeof _=="string"&&_)return {outputVariables:{},renderVariables:{},status:{error:_}};l=_.length===1?_[0].data:_.map(L=>L.data),m=_.reduce((L,U)=>L+JSON.stringify(U.data).length/1024,0),u=Math.max(..._.map(L=>L.requestDuration)),d=_.map(L=>L.apiDataSource?`${L.apiDataSource.name} (${L.apiDataSource.id})`:null),R=_.map(L=>L.finalUrl);}if(e.type===O.SELECTOR){let{config:B,log:D,error:_}=ho(e.id,e.contentByLocale[s].content.logic,t,r,true);return {outputVariables:va(e.id,i,B),renderVariables:B,status:{log:D,error:_,allowed:c}}}if(e.type===O.MULTIHIERARCHY_SELECTOR){let{config:B,log:D,error:_}=bo(e.id,e.contentByLocale[s].content.logic,t,r,true);return {outputVariables:Ia(e.id,i,B),renderVariables:B,status:{log:D,error:_,allowed:c}}}if(e.type===O.VIZ)return {outputVariables:{},renderVariables:e.contentByLocale.logic.content,status:{log:[],allowed:c}};if(e.type===O.RELATED){let B=e.contentByLocale?.logic?.content?.simple?.compare||"variant",D=e.contentByLocale?.logic?.content?.simple?.limit||4,_=Object.keys(a).filter(S=>S.startsWith("report_id")).map(S=>a[S]),L=Object.keys(a).filter(S=>S.startsWith("dimension_id")).map(S=>a[S]),U=Object.keys(a).filter(S=>S.startsWith("variant_id")).map(S=>a[S]),C=Object.keys(a).filter(S=>S.startsWith("id")).map(S=>a[S]);if(!C.length)return {outputVariables:{related_reports:[]},renderVariables:{},status:{log:[],allowed:false}};let z=await Promise.all(C.map((S,T)=>o({mode:"ids",locale:s,ids:[S],output:"lite",variant:[U[T]]}))).then(S=>S.flatMap(T=>{let v=[];return Pr(T)?T.ok&&(v=T.data.results):v=T.results,v&&Array.isArray(v)?v:[]})).catch(S=>(console.error("Error getting related members",S),[]));if(L.length>1){let S=Object.keys(a).filter(V=>V.startsWith("variant_slug")).map(V=>a[V]),T=z.map((V,Q)=>{let W={mode:"related",locale:s,related:D??4,current_ids:[V.content_id],output:"full",variant_ids:[V.variant_id]};return Q===0&&(W.include_ids=[V.content_id]),W}),v=await Promise.all(T.map(V=>o(V))).then(V=>V.flatMap(Q=>{let W=[];return Pr(Q)?Q.ok&&(W=Q.data.results):W=Q.results,W&&Array.isArray(W)?W:[]})).catch(V=>(console.error("Error getting related members",V),[])),ne=v.reduce((V,Q)=>{let W=Q.variant_slug;return V[W]||(V[W]=[]),V[W].push(Q),V},{}),ae=[],Z=Object.keys(ne),Y=[{combination:[],index:0}];for(;Y.length>0;){let V=Y.pop();if(!V)continue;let{combination:Q,index:W}=V;if(W===Z.length){ae.push(Q);continue}let le=Z[W],se=ne[le];for(let ce of se)Y.push({combination:[...Q,ce],index:W+1});}return {outputVariables:{related_reports:ae.map(V=>{let Q=V.sort((W,le)=>S.indexOf(W.variant_slug)-S.indexOf(le.variant_slug));return {entities:Q,link:"/"+Q.map(W=>`${W.variant_slug}/${W.slug}`).join("/")}})},renderVariables:{},status:{log:[],allowed:v.length>0}}}let M=z.map(S=>S.content_id),x={mode:"related",locale:s,related:D??4,current_ids:M,output:"full"};B&&(B==="report"?x.report_ids=_:B==="dimension"?x.dimension_ids=L:x.variant_ids=U);let j=await o(x).then(S=>{let T=[];return Pr(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:j.map(S=>({entities:[S],link:`/${S.variant_slug}/${S.slug}`}))},renderVariables:{},status:{log:[],allowed:j.length>0}}}let{logic:h}=Ba(e,s),b=ye(h,t,r),P=lt("resp",l||{},b,t,a,r),{vars:w,error:F,log:k}=P;if(typeof w!="object")return {outputVariables:{},renderVariables:{},status:{error:"Configuration did not return an object",log:k,duration:u,responseSize:m,resp:l,api:f,allowed:c,apiFinalUrls:R,apiDataSources:d}};let q=Object.keys(w).reduce((B,D)=>({...B,[`${e.type}${e.id}${D}`]:w[D]}),{});return {renderVariables:w,outputVariables:[O.GENERATOR,O.SECTION_FLAG].includes(e.type)?w:q,status:{log:k,error:F,duration:u,responseSize:m,resp:l,api:f,allowed:c,apiFinalUrls:R,apiDataSources:d}}}function Hl(e,t,r,o,n,s,a){return e.consumers.forEach(i=>{if(t[i]){let c=`${r}-${i}`;!o.includes(c)&&(t[i].section_id===t[r].section_id||!n)&&o.push(c),e.consumers.filter(l=>t[l]&&t[l].section_id===t[r].section_id||!n).forEach(l=>Eo(l,t,o,false,s,n,a));}})}var Eo=(e,t,r=[],o=true,n=true,s=true,a=[])=>{if(a.includes(e))return [];a.push(e);let i=t[e];return i&&i.inputs.length&&o&&i.inputs.forEach(c=>{let l=`${c}-${e}`;r.includes(l)||r.push(l),i.inputs.forEach(p=>Eo(p,t,r,o,false,s,a));}),i&&i.consumers.length&&n&&Hl(i,t,e,r,s,n,a),r},jl=(e,t,r,o)=>{let n=true;if(e&&"allowed"in e.settings&&e.settings.allowed!=="always")if(e.settings.allowed==="never")n=false;else {let s=fe(t),{error:a,output:i}=lt("variables",r,e.settings.allowedLogic||"return false;",o,void 0,s);a||(n=!!i);}return n},Lt=async(e,t,r,o,n,s={},a,i="section",c)=>{let l=i==="section",p=fe(n),u=p.variables,m={...s.variables??{}},f={...s.status??{}},d=new Set,R=[],h={};r?h={...h,[r]:e[r]}:t?h=(t??[]).reduce((M,{id:x})=>({...M,...La(x,e)}),{}):h=Object.values(e).filter(M=>So(M)).reduce((M,x)=>({...M,[x.id]:x}),{});let b=Object.values(h).filter(M=>So(M));if(b.length>0){Ne&&console.info("%crunConsumers: calculating section flags","color:purple",b.map(A=>A.id).join(", "));let M=Object.fromEntries(await Promise.all(b.map(async A=>[A.id,await Na(A,o,{...p,variables:u,locale:u.locale},a,c).then(S=>{let{outputVariables:T,status:v}=S;if(v.error){if(typeof window>"u")throw new Error(`Run consumers (Block: ${A.id}, Section ${A.section_id}) failed with message: ${v.error}. `);f[A.id]={allowed:false,error:v.error},m[A.id]={};}return (A.consumers.length>0||[O.GENERATOR,O.SECTION_FLAG,O.RELATED].includes(A.type))&&v.allowed&&Object.keys(T).length>0?m[A.id]=T:m[A.id]={},i==="report"?(f[A.id]={allowed:v.allowed},[O.GENERATOR,O.SECTION_FLAG].includes(A.type)&&v.api&&(f[A.id].api=v.api)):f[A.id]=v,S})]))),j=Object.entries(M).filter(([,A])=>!A.outputVariables[Bn]).map(([A])=>Number(A));d=new Set(j.map(A=>e[A].section_id)),Object.values(h).filter(A=>d.has(A.section_id)).forEach(A=>{R.push(A.id),delete h[A.id];}),Ne&&console.info("%crunConsumers: removing sections","color:purple",d.keys());}let P=d.size>0?Object.fromEntries(Object.entries(e).filter(([,M])=>d?.has(M.section_id)?(R.includes(M.id)||R.push(M.id),false):true)):e;if(R.length>0&&(P=Object.fromEntries(Object.entries(P).map(([M,x])=>{let j={...x,inputs:x.inputs.filter(A=>!R.includes(A)),consumers:x.consumers.filter(A=>!R.includes(A))};return [M,j]}))),!r&&!t)return {variables:{...s.variables??{},...m},status:{...s.status??{},...f}};i==="report"&&R.length>0&&R.forEach(M=>{delete m[M],delete f[M],delete e[M];}),Ne&&console.info("%crunConsumers: running root blocks","color:purple",Object.keys(h));let w=Object.keys(h).reduce((M,x)=>{let j=new Date,A=Eo(Number(x),P,[],!r,true,l).map(v=>v.split("-")),T=(new Date().getTime()-j.getTime())/1e3;return Ne&&console.info(`%cResolved dependencies for ${x} (${T.toFixed(2)}s)`,"color:blue"),[...M,...A]},[]),F=new Date,k=Object.keys(h).reduce((M,x)=>M.includes(x)?[...M]:[x,...M],Nl(w)),B=(new Date().getTime()-F.getTime())/1e3;Ne&&console.info(`%cResolved DAG (${B.toFixed(2)}s): `,"color:green",k);let D=process.env.NEXT_PUBLIC_REPORTS_MAX_CONCURRENT_QUERIES_PER_REPORT,_=parseInt(`${D||0}`,10);async function L(M,x){let j=new Map,A=[],S=async()=>A.length;for(let T of M){if(_!==0){let Z=await S();for(;Z>=_;)Ne&&console.info("Too many pending promises, waiting...",Z,A),await new Promise(Y=>setTimeout(Y,500)),Z=await S();}let v=x[T],ae=Promise.all(v.inputs.filter(Z=>M.includes(String(Z))).map(Z=>j.get(Number(Z)))).then(async()=>{let Z=v.inputs.reduce((se,ce)=>({...se,...m[ce]}),u),Y=v.inputs.find(se=>(v.settings?.ignoreCascade?v.settings?.ignoreCascade:[]).includes(se)||!f[se]?false:!f[se].allowed||f[se].hiddenByCascade);if(Y){f[T]={allowed:false,hiddenByCascade:f[Y].hiddenByCascade||Y},m[T]={},A.splice(A.indexOf(Number(T)),1);return}let ie=new Date,V;typeof window<"u"&&[O.SELECTOR,O.MULTIHIERARCHY_SELECTOR].includes(v.type)&&v.settings[ve.DISABLED]?V=new Promise(se=>{se({outputVariables:m[T],status:f[T]});}):V=Na(v,o,{...p,variables:Z,locale:Z.locale},a,c);let Q=await V.then(({outputVariables:se,status:ce})=>{if(ce.error){if(typeof window>"u")throw new Error(`Run consumers (Block: ${T}, Section ${v.section_id}) failed with message: ${ce.error}.`);f[T]={allowed:false,error:ce.error},m[T]={};}(v.consumers.length>0||[O.GENERATOR,O.SECTION_FLAG,O.RELATED].includes(v.type))&&ce.allowed&&Object.keys(se).length>0?m[T]=se:m[T]={},i==="report"?(f[T]={allowed:ce.allowed},[O.GENERATOR,O.SECTION_FLAG].includes(v.type)&&ce.api&&(f[T].api=ce.api)):f[T]=ce;}),le=(new Date().getTime()-ie.getTime())/1e3;return Ne&&console.info(`%cBlock ${v.id} resolved in ${le.toFixed(3)}s`,le>500?"color:red":"color:green"),f[T].duration=f[T].duration?f[T].duration:le,A.splice(A.indexOf(Number(T)),1),Q}).catch(Z=>{throw A.splice(A.indexOf(Number(T)),1),Z});A.push(Number(T)),j.set(Number(T),ae);}await Promise.all(Array.from(j.values()));}let U=new Date;await L(k,P);let z=(new Date().getTime()-U.getTime())/1e3;return Ne&&console.info(`%cResolved Variables (${z.toFixed(2)}s), ${k.length} blocks`,"color:green"),{variables:{...s.variables??{},...m},status:{...s.status??{},...f}}};function Wl(e=[]){return e.reduce((t,r,o)=>{if(r){let n=o+1;t[`id${n}`]=r.id,t[`name${n}`]=r.name,t[`slug${n}`]=r.slug,"attributes"in r&&Object.keys(r.attributes).forEach(s=>{t[`attr_${s}${n}`]=r.attributes[s];}),t[`variant_id${n}`]=r.variant_id,t[`variant_name${n}`]=r.variant_name,t[`variant_slug${n}`]=r.variant_slug,t[`dimension_id${n}`]=r.dimension_id,t[`dimension_name${n}`]=r.dimension_name,t.report_id=r.report_id,t.report_name=r.report_name;}return t},{})}var Mt=Wl;function Yl(e,t){return +(e<t)-+(e>t)}function Ir(e,t,r="ordering"){return Yl(t[r],e[r])}var{localeDefault:Ql}=H();var Zt=new schema.Entity("block",{},{mergeStrategy(e,t){return t.block_input?e||{}:{...e,...t}}});Zt.define({consumers:[Zt],inputs:[Zt]});var Ua=new schema.Entity("variant"),Fa=new schema.Entity("dimension",{variants:[Ua]},{processStrategy(e){return {...e,variants:"variants"in e?e.variants:[]}}}),Va=new schema.Entity("section",{blocks:[Zt]}),Zl=new schema.Entity("report",{dimensions:[Fa],sections:[Va]},{processStrategy(e){return {...e,sections:"sections"in e?e.sections.sort(Ir):[]}}}),Xl=new schema.Entity("formatter"),eu=new schema.Entity("datasource"),tu={report:Zl,section:Va,block:Zt,dimension:Fa,variant:Ua,formatter:Xl,datasource:eu};function Cr(e,t){let r=tu[e];if(!r)throw new Error(`Invalid entity type: ${e}`);let{entities:o}=normalize(t,[r]);return {report:ut(o,"report"),dimension:ut(o,"dimension"),section:ut(o,"section"),block:ut(o,"block"),variant:ut(o,"variant"),formatter:ut(o,"formatter"),datasource:ut(o,"datasource")}}function ut(e,t){return Object.prototype.hasOwnProperty.call(e,t)?e[t]:{}}var $a=(e,t=void 0)=>{let{sid:r,bid:o,previews:n=[],query:s={}}=t||{},a,i,c={};return r?(a=r,c.activeSection=a):a=e.activeSection,n.length>0?(i=n,c.previews=i.filter(Boolean)):i=e.previews,{parsedParams:{sid:a,bid:o,previews:i,query:s},statusPayload:c}},Xt=(e=[],t=Ql)=>e.reduce((r,o)=>{let n=un({vars:["n"],logic:o.content.logic},{},t,{});return r[o.name]=n,r},{});var de=process.env.NEXT_PUBLIC_REPORTS_LOCALE_DEFAULT||"en",Br=process.env.NEXT_PUBLIC_REPORTS_LOCALES?.split(",")||[de];Br.includes(de)||Br.push(de);var nu={localeDefault:de,locales:Br,currentLocale:de,preferredLocale:de,showToolbar:false,activeSection:null,previews:[],query:{},sectionState:{},activeEntity:{type:null,id:null},sidebarStatus:{tools:true,settings:false,reportEditor:false},isCMS:false,isRunConsumersRunning:[]},Lr=createSlice({name:"status",initialState:nu,reducers:{setStatus:(e,t)=>{Object.assign(e,t.payload);},setPreviews(e,t){e.previews=t.payload;},setCurrentLocale(e,t){e.currentLocale=t.payload;},setPreferredLocale(e,t){e.preferredLocale=t.payload;},setSectionState(e,t){e.sectionState={...e.sectionState,...t.payload};},resetSectionState(e,t){e.sectionState={...e.sectionState,[t.payload]:{}};},setActiveEntity(e,t){e.activeEntity=t.payload;},openSidebar(e,t){e.sidebarStatus={...e.sidebarStatus,[t.payload]:true};},closeSidebar(e,t){e.sidebarStatus={...e.sidebarStatus,[t.payload]:false};},toggleSidebar(e,t){e.sidebarStatus={...e.sidebarStatus,[t.payload]:!e.sidebarStatus[t.payload]};},addRunConsumersRunning(e,t){e.isRunConsumersRunning=e.isRunConsumersRunning.concat(t.payload);},removeRunConsumersRunning(e,t){e.isRunConsumersRunning=e.isRunConsumersRunning.filter(r=>!t.payload.includes(r));}},extraReducers:e=>{e.addCase(HYDRATE,(t,r)=>{t.previews=r.payload.status.previews;});}}),_e=Lr.actions;var iu={attributes:{},variables:{},status:{}},Mr=createSlice({name:"variables",initialState:iu,reducers:{setVariableChange:(e,t)=>{e.attributes={...e.attributes,...t.payload.attributes},e.variables={...e.variables,...t.payload.variables},e.status={...e.status,...t.payload.status};}},extraReducers:e=>{e.addCase(HYDRATE,(t,r)=>{let o=r.payload.variables;t.attributes={...t.attributes,...o.attributes},t.status={...t.status,...o.status},t.variables={...t.variables,...o.variables};});}}),Ot=Mr.actions;var uu={tree:[],reports:null,entities:{block:{},dimension:{},report:{},section:{},variant:{},formatter:{},datasource:{}},requests:{block:{},dimension:{},report:{},section:{},variant:{},formatter:{},datasource:{}}},ke=createSlice({name:"records",initialState:uu,reducers:{set:(e,t)=>{let r=t.payload;return {entities:er(e.entities,r.entities||{}),requests:er(e.requests,r.requests||{}),reports:r.reports||e.reports,tree:r.tree||e.tree}},setRequest:(e,t)=>{let r=t.payload;e.requests[r.type][r.key]=r;},setCreateRequest(e,t){let r=t.payload;if(e.requests[r.type][r.key]=r,r.status==="SUCCESS"){let o=Array.isArray(r.data)?r.data:[r.data],n=Cr(r.type,o),s=er(e.entities,n);if(e.entities=s,r.type==="report"){let a=r.data;e.reports?e.reports.indexOf(a.id)===-1&&(e.reports=[...e.reports,a.id]):e.reports=[a.id];}else if(r.type==="dimension"){let a=r.data;e.entities.report[a.report_id].dimensions.push(a.id),e.entities.report[a.report_id].dimensions=Or(s.report[a.report_id].dimensions,s.dimension);}else if(r.type==="variant"){let a=r.data;e.entities.dimension[a.dimension_id].variants.push(a.id);}else if(r.type==="section"&&!Array.isArray(r.data)){let a=r.data;e.entities.report[a.report_id].sections.push(a.id),e.entities.report[a.report_id].sections=Or(s.report[a.report_id].sections,s.section);}else if(r.type==="block")if(Array.isArray(r.data)){let a=r.data,i=a[0],c=a.map(l=>l.id);e.entities.section[i.section_id].blocks.concat(c);}else {let a=r.data;e.entities.section[a.section_id].blocks.push(a.id);}}},setReadRequest(e,t){let r=t.payload;if(r.type!=="report"&&(e.requests[r.type][r.key]=r),r.status==="SUCCESS"){let o=Cr(r.type,r.data),n=er(e.entities,o);e.entities=n;}},setUpdateRequest(e,t){let r=t.payload;if(e.requests[r.type][r.key]=r,r.status==="SUCCESS"){let o=Array.isArray(r.data)?r.data:[r.data],n=Cr(r.type,o),s,a,i;if(r.type==="block"&&!Array.isArray(r.data)){let l=e.entities.block[r.data.id].inputs,p=n.block[r.data.id].inputs;s=l.length!==p.length,s&&(i=l.length>p.length,a=i?l.filter(u=>!p.includes(u))[0]:p.filter(u=>!l.includes(u))[0]),Object.values(n.block).forEach(u=>{u.block_input&&delete n.block[u.id];});}let c=er(e.entities,n);if(e.entities=c,r.type==="dimension"){let l=r.data;e.entities.report[l.report_id].dimensions=Or(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=Or(c.report[l.report_id].sections,c.section);}else if(r.type==="block"&&!Array.isArray(r.data)){let l=r.data;s&&(i?e.entities.block[a].consumers=e.entities.block[a].consumers.filter(p=>p!==l.id):e.entities.block[a].consumers.push(l.id));}}},setDeleteRequest(e,t){let r=t.payload;if(e.requests[r.type][r.key]=r,r.status==="SUCCESS"){let{id:o,parentId:n,parentType:s}=r.data;if(delete e.entities[r.type][o],s&&n!=null){let a=`${r.type}s`;pu(e.entities[s][n][a],o);}}},removeBlocks:(e,t)=>{let r=t.payload,o={...e.entities.block};return r.forEach(n=>{delete o[n];}),{...e,entities:{...e.entities,block:o}}},addBlocks:(e,t)=>{let r=t.payload;return {...e,entities:{...e.entities,block:{...e.entities.block,...r}}}},removeDataSourceLogic:e=>{let t={...e.entities.datasource};Object.keys(t).forEach(r=>{e.entities.datasource[r].content.useProxy&&(delete e.entities.datasource[r].content.logic,delete e.entities.datasource[r].content.testUrl,delete e.entities.datasource[r].content.access);});}},extraReducers:e=>{e.addCase(HYDRATE,(t,r)=>{let o=r.payload.records,n=o.entities;t.entities=n,t.reports=Object.values(n.report).map(s=>s.id),t.requests={block:{},dimension:{},report:{},section:{},variant:{},formatter:{},datasource:{}},t.tree=o.tree;});}});function er(e,t){return Object.fromEntries(Object.keys(e).map(r=>[r,{...e[r],...t[r]}]))}function Or(e,t){return e.map(n=>t[n]).sort((n,s)=>typeof n.ordering=="string"&&typeof s.ordering=="string"?Ir(n,s):typeof n.ordering=="number"&&typeof s.ordering=="number"?n.ordering-s.ordering:String(n.ordering).localeCompare(String(s.ordering))).map(n=>n.id)}function pu(e,t){let r=e.indexOf(t);r>-1&&e.splice(r,1);}var be=ke.actions,Ka=tr({block:De("block"),dimension:De("dimension"),formatter:De("formatter"),report:De("report"),section:De("section"),variant:De("variant"),datasource:De("datasource")}),oe=tr({block:Ue("block"),dimension:Ue("dimension"),formatter:Ue("formatter"),report:Ue("report"),section:Ue("section"),variant:Ue("variant"),datasource:Ue("datasource")}),Ha=tr({block:Ae("block"),dimension:Ae("dimension"),formatter:Ae("formatter"),report:Ae("report"),section:Ae("section"),variant:Ae("variant"),datasource:Ae("datasource")}),ja=tr({block:dt("block"),dimension:dt("dimension"),formatter:dt("formatter"),report:dt("report"),section:dt("section"),variant:dt("variant"),datasource:dt("datasource")}),Wa=tr({block:za("block"),section:za("section")});function tr(e){return (t,r)=>{let o=e[t];if(!o)throw new Error(`Attempting to dispatch action for invalid entity type '${t}'`);return o(r)}}function ft(e,t){return (r,o)=>{let s=o().records.requests[e][t],a=!s||s.status==="UNINITIALIZED"?"LOADING":"FETCHING";r(be.setRequest({key:t,type:e,status:a}));}}function mt(e,t,r,o){return n=>{typeof window=="object"&¬ifications.show({autoClose:3e3,color:"red",id:t,message:o,title:"Error"}),n(be.setRequest({key:t,type:e,status:"FAILURE",error:{code:r,message:o}}));}}function De(e){return t=>{let r=wo(e,t);return (o,n,s)=>(o(ft(e,r)),ue(s,"create",e)(t).then(i=>(i.ok===true?o(be.setCreateRequest({key:r,operation:"create",status:"SUCCESS",type:e,data:i.data})):o(mt(e,r,i.status,i.error)),i)))}}function fu(e){return t=>{let r=wo(e,t[0]);return (o,n,s)=>(o(ft(e,r)),ue(s,"createBulk",e)(t).then(i=>(i.ok===true?o(be.setCreateRequest({key:r,operation:"createBulk",status:"SUCCESS",type:e,data:i.data})):o(mt(e,r,i.status,i.error)),i)))}}function qa(e,t,r){return r.replace(new RegExp(e,"g"),t)}function gu(e){return e.section_id!==void 0}function yu(e){return e.report_id!==void 0}function za(e){return t=>{let{create:r}=t;return (o,n,s)=>De(e)(r)(o,n,s).then(async i=>{if(i.ok){let{data:c}=i,{id:l}=c,{update:p}=t,u=Qa(e,{id:l});if(o(ft(e,`${u}`)),e==="block"&&gu(r)){let m=produce(p,h=>{h.id=l;}),{contentByLocale:f}=m;f&&(m=produce(m,h=>{h.id=l,h.contentByLocale=Object.keys(f).reduce((b,P)=>{let w=f?f[P]:{};return b[P]={...w,id:l},b},{});}));let R=m.inputs?.map(h=>({type:h.type,id:h.id,inputAction:{operation:"create",input:{input_id:h.id,block_id:m.id}}}));return R&&R.length>0&&Ga(e)([m,...R])(o,n,s).then(()=>Ue("section")({id:m.section_id,include:true})(o,n,s).then(h=>(h.ok&&o(be.setRequest({key:u,type:e,status:"SUCCESS",data:h.data})),h))),Ae(e)(m)(o,n,s).then(h=>(h.ok&&o(be.setRequest({key:u,type:e,status:"SUCCESS",data:h.data})),h))}if(e==="section"&&yu(r)){let{id:m}=c,f=produce(p,h=>{h.id=m;}),{blocks:d}=f,R=d?.map(h=>({type:h.type,blockcol:h.blockcol,blockrow:h.blockrow,section_id:m,locales:Object.keys(h.contentByLocale).map(b=>b)}));return R&&d&&await fu("block")(R)(o,n,s).then(h=>{if(h.ok){let b=h.data,P=[],w=b.map((F,k)=>{let B={...F},D=B.id,_=d[k];_.contentByLocale&&(B.contentByLocale=Object.keys(_.contentByLocale).reduce((A,S)=>{let T=_.contentByLocale[S];return A[S]={...T,content:{...T.content},id:B.id},A},{}));let{settings:L}=_,{contentByLocale:U,id:C}=B;B.settings=L;let z={id:C,contentByLocale:U,settings:L};return _.inputs.map(A=>A.id).reduce((A,S)=>{let T=d.findIndex(v=>v.id===S);return [...A,T]},[]).map(A=>({...b[A],originalBlock:d[A]})).forEach(A=>{let{id:S,type:T,originalBlock:v}=A;if([O.SELECTOR,O.VIZ].includes(T)){if(z.contentByLocale?.logic?.content?.api){let ne=z.contentByLocale?.logic.content.api;z.contentByLocale.logic.content.api=qa(`(selector${v.id}id)`,`selector${S}id`,ne);}if(z.contentByLocale?.logic?.content?.logic){let ne=z.contentByLocale.logic.content.logic;z.contentByLocale.logic.content.logic=qa(`(selector${v.id}id)`,`selector${S}id`,ne);}}P.push({id:S,inputAction:{operation:"create",input:{input_id:S,block_id:D}}});}),z});return Ga("block")([...w,...P])(o,n,s)}}),Ae(e)(f)(o,n,s).then(h=>(h.ok&&o(be.setRequest({key:u,type:e,status:"SUCCESS",data:h.data})),h))}return Ae(e)({...p,id:c.id})(o,n,s)}})}}function Ue(e){return t=>{let r=Ya(e,t);return (o,n,s)=>{o(ft(e,r));let a=ue(s,"read",e);if(typeof a!="function"){let i=`Failed to get valid RPC method for entity "${e}"`;return o(mt(e,r,500,i)),Promise.reject(new Error(i))}return a(t).then(i=>(i.ok===true?o(be.setReadRequest({key:r,operation:"read",status:"SUCCESS",type:e,data:i.data})):o(mt(e,r,i.status,i.error)),i))}}}function Ae(e){return t=>{let r=_o(e,t);return (o,n,s)=>(o(ft(e,r)),ue(s,"update",e)(t).then(i=>(i.ok===true?o(be.setUpdateRequest({key:r,operation:"update",status:"SUCCESS",type:e,data:i.data})):o(mt(e,r,i.status,i.error)),i)))}}function Ga(e){return t=>{let r=_o(e,t[0]);return (o,n,s)=>(o(ft(e,r)),ue(s,"updateBulk",e)(t).then(i=>(i.ok===true?o(be.setUpdateRequest({key:r,operation:"updateBulk",status:"SUCCESS",type:e,data:i.data})):o(mt(e,r,i.status,i.error)),i)))}}function dt(e){return t=>{let r=Ja(e,t);return (o,n,s)=>(o(ft(e,r)),ue(s,"delete",e)(t).then(i=>{i.ok===true?o(be.setDeleteRequest({key:r,operation:"delete",status:"SUCCESS",type:e,data:i.data})):o(mt(e,r,i.status,i.error));}))}}function wo(e,t){if(e==="variant"){let r=t;return `create(variant, [${r.dimension_id}, ${r.name}])`}return `create(${e}, [${Object.keys(t)}])`}function Ya(e,t={}){let r=t.id==null?null:`'${t.id}'`;return `read(${e}, ${r}, ${!!t.include})`}function _o(e,t){let{id:r,...o}=t;return `update(${e}, ${r}, [${Object.keys(o)}])`}function Ja(e,t){return `delete(${e}, ${t})`}function Qa(e,t){let r=t.id==null?null:`'${t.id}'`;return `clone(${e}, ${r})`}var{setStatus:Za,setPreviews:hu,setSectionState:Xa,resetSectionState:es,setCurrentLocale:Ru,setPreferredLocale:bu,addRunConsumersRunning:ts,removeRunConsumersRunning:rs}=_e;function Su(e,t){return async(r,o,n)=>{let s=await n.validateVariantSlug({dimension:e,slug:t});if("error"in s)throw new Error(s.error);return s.data}}function Eu(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 Au(){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 Fe(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 Tu(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 os(e,t,r,o){let n=r().status,s={...n,...o},a={...n.query,...o.query};Object.keys(a).forEach(c=>a[c]===void 0&&delete a[c]);let i={...s,query:a};t(Za(i)),n.activeSection&&t(ns(e,{query:a}));}function wu(e,t){return async(r,o)=>os(e,r,o,{query:{[t]:void 0}})}function _u(e,t,r){return async(o,n)=>os(e,o,n,{query:{[t]:r}})}function ns(e,t){return async(r,o)=>{let n=o(),{currentLocale:s}=n.status,a=n.records.entities.block,i=e.formatterFunctions[s],c=e.datasourceFunctions,{parsedParams:l,statusPayload:p}=$a(n.status,t),{sid:u,bid:m,previews:f,query:d}=l;Object.keys(p).length&&r(_e.setStatus(p));let R={...Mt(f),locale:s,...pe()},h={variables:R,query:d,locale:s};r(_e.addRunConsumersRunning([u]));let b=n.records.entities.section[u],P=async w=>r(Fe(w));try{let w=await Lt(a,b&&[b],m,i,h,void 0,P,"section",c),{variables:F,status:k}=w;r(Ot.setVariableChange({attributes:R,variables:F,status:k})),r(_e.removeRunConsumersRunning([u]));}catch(w){console.error("Error in runConsumers client side: recalculateVariables",w);}}}function rr(e){return async(t,r,o)=>{let n=await o.readMetadata(e);if("error"in n)throw new Error(n.error);return n.data}}function ku(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 xu(){return async(e,t,r)=>{let o=await r.searchRole("");if("error"in o)throw new Error(o.error);return o.data}}function Pu(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 vu(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 Iu({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 Cu(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 Ve(e){let{removeBlocks:t}=ke.actions;return async r=>{await r(t(e));}}function or(e){let{addBlocks:t}=ke.actions;return async r=>{await r(t(e));}}function Bu(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 Lu(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 Mu(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 Ou(){return async(e,t,r)=>{let o=await r.readEnvSecrets({});if("error"in o)throw new Error(o.error);return o.data}}function nr(){let{removeDataSourceLogic:e}=ke.actions;return async t=>{await t(e());}}var as=()=>configureStore({reducer:{[ke.name]:ke.reducer,[Lr.name]:Lr.reducer,[Mr.name]:Mr.reducer},middleware(e){return e({thunk:{extraArgument:Qt("/api/cms/")}})}}),$e=createWrapper(as);function Vu(e){let t=process.cwd(),r=Fu.resolve(t.endsWith("/example")?t.replace("/example",""):t,"package-lock.json"),o;try{let n=JSON.parse(vc.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 $u(e){let t=()=>Promise.resolve({}),{pathSegmentsKey:r="bespoke",preResolve:o=t,postResolve:n=t,authOptions:s={providers:[]}}=e||{};return $e.getServerSideProps(a=>{let{dispatch:i}=a;return async c=>{let l=await me(c.req,c.res,s);if(!l)return {redirect:{destination:"/api/auth/signin?callbackUrl=/cms",permanent:false}};let p=new Set([G.ADMIN,G.EDITOR,G.WRITER]);if(!(l?.user?.bespoke_roles||[]).some(b=>p.has(b)))return {redirect:{destination:"/",permanent:false}};let m=c.query[r],[f]=Array.isArray(m)?m:[m];await i(nt);let d=await Vu("@datawheel/bespoke"),R=await o(a,c);if("redirect"in R)return {props:R};f==="reports"&&(ss(c.query[r])?await Promise.all([i(oe("formatter",{})),i(oe("datasource",{include:true})),i(oe("report",{id:ss(c.query[r]),include:true})),_e.setStatus({isCMS:true})]):await Promise.all([i(oe("report",{include:"dimensions"})),_e.setStatus({isCMS:true})])),f==="metadata"&&await i(oe("report",{include:"dimensions"})),f==="formatters"&&await i(oe("formatter",{})),f==="datasources"&&await i(oe("datasource",{include:true}));let h=await n(a,c);return {props:{...R,...h,bespokeVersion:d,session:l}}}})}function ss(e){if(e==null||e==="")return;let[,t]=Array.isArray(e)?e:[e];return Number.parseInt(t)||void 0}var {locales:zu}=H(),Gu={pathSegment:"path",formatterFunctions:zu.reduce((e,t)=>({...e,[t]:{}}),{}),datasourceFunctions:[],profilePrefix:"path",previewPrefix:null,siteProps:{}};createContext(Gu);H();var ip=e=>e.records.entities.report;var Ur=e=>e.records.entities.block;var cp=e=>e.records.entities.datasource;function Nt(e){return createSelector([t=>t.records.entities[e]],t=>Object.values(t))}Nt("report");Nt("dimension");Nt("variant");var Fr=Nt("section");Nt("block");var Vr=Nt("formatter");createSelector([ip],e=>Object.values(e)[0]);var lp=pe(),up=[],$r=createSelector([cp],e=>e?Object.values(e).sort((t,r)=>t.content.order>r.content.order?1:-1).map(t=>{let r={...lp};return {...t,content:{...t.content,pattern:ye(t.content.pattern,{},{variables:r})}}}):up);var pp=async(e,t,r,o,n)=>{if(e.length===0)throw new Error("No slugs provided");let s=await t(r({mode:"slugs",locale:n,slugs:e,output:"full"})),a=s.results[0].report_id;if(s.results.length>1){if(s.results.every(d=>d.report_id===a)===false)throw new Error("Members belong to different reports");let l=s.results.map(d=>d.dimension_id),p=new Set(l);if(l.length!==p.size)throw new Error("Members belong to same dimensions");let u=s.results.sort((d,R)=>d.dimension_ordering>R.dimension_ordering?1:-1).reduce((d,R,h)=>(d[R.variant_slug]=h,d),{}),m=e.reduce((d,R,h)=>(d[R.variantSlug]=h,d),{});if(!(Object.keys(u).length===Object.keys(m).length&&Object.keys(u).every(d=>Object.prototype.hasOwnProperty.call(m,d)&&u[d]===m[d])))throw new Error("Variant slugs do not match the expected dimension order")}let c=(await t(o({report_id:a,count:false}))).data.find(l=>l.id===a);if(!c||s.results.length!==c.dimensions.length)throw new Error(`Missing members for report ID ${a}`);return s},qr=pp;function dp(e){let{fallback:t=true,limit:r=50}=e||{};return async o=>{let{defaultLocale:n=de,locales:s=[]}=o,a=[];if(r>0){let i=s.find(p=>p===n),{searchMember:c}=await Xe().then(It),l=await c({query:"",limit:r,format:"plain",locale:i||de,noImage:false,visible:true,report:[],dimension:[],variant:[],includes:true});l.ok===true&&(a=l.data.results.map(p=>({locale:s.find(u=>u===p.locale),params:{bespoke:[p.variant.slug,p.slug]}})));}return {fallback:t,paths:a}}}function mp(e){let{pathSegmentsKey:t="bespoke"}=e||{};try{return $e.getStaticProps(r=>{let{dispatch:o}=r;return async n=>{await o(nt);let s=new Date().toISOString(),{locale:a=de,params:i={}}=n,c=Array.from(Po(i[t])),l;try{l=await qr(c,o,Fe,rr,a);}catch(_){return console.error("[Bespoke slug validation Failed]: Return 404:",_.message,`[${a}] -> /${c.map(L=>`${L.variantSlug}/${L.memberSlug}`).join("/")}`),{notFound:!0}}o(gt.setPreviews(l.results)),await Promise.all([o(oe("formatter",{})),o(oe("datasource",{include:!0})),o(oe("report",{id:l.results.map(_=>_.report_id),include:!0,locales:[a]}))]);let p=r.getState(),u=Vr(p),m=$r(p),f=Xt(u,a),d=Fr(p),R=Ur(p),h={...R},b={},P=Object.values(R).reduce((_,L)=>("access"in L.settings&&!["public","guest"].some(U=>!L.settings.access||L.settings.access.includes(U))&&_.push(L.id),_),[]),w=P.filter(_=>h[_].settings[ve.FALLBACK]),F=Array.from(new Set([...w,...he(w,Object.values(h))])),k=P.filter(_=>[O.SELECTOR,O.MULTIHIERARCHY_SELECTOR].includes(h[_].type)),q=Array.from(new Set([...k,...he(k,Object.values(h))]));P=Array.from(new Set([...P,...F,...q,...he(P,Object.values(h))])),P.forEach(_=>{w.includes(_)?(b[_]={...h[_],type:O.FALLBACK,original_type:h[_].type},delete h[_]):k.includes(_)&&(b[_]={...h[_],settings:{...h[_].settings,[ve.DISABLED]:!0}},delete h[_]),q.includes(_)||delete h[_];}),await o(Ve(P.filter(_=>!q.includes(_)))),await o(or(b));let B={...Mt(l.results),locale:a,...pe()},D=async _=>await o(Fe(_));return await Lt({...h,...b},d,void 0,f,{locale:a,query:i,variables:B},void 0,D,"report",m).then(async _=>{let L=Object.keys({...h,...b}).reduce((U,C)=>(_.variables[C]&&_.status[C]||U.push(C),U),[]);await o(Ve(L)),await o(Ot.setVariableChange({..._,attributes:B})),await o(nr());}),{props:{buildTime:s}}}})}catch(r){console.error("ERROR SSR",r);}}function Po(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 fp(e){let{pathSegmentsKey:t="bespoke"}=e||{};try{return $e.getServerSideProps(r=>{let{dispatch:o}=r;return async n=>{let{section:s,block:a}=n.query,i=Object.fromEntries(Object.entries(n.query).filter(([x])=>x.match(/selector\d+id/)));if(!s&&!a)return {notFound:!0};let c=Number(s);await o(nt);let l=new Date().toISOString(),{locale:p=de,params:u={},req:m}=n,f=Array.from(Po(u[t])),d;try{d=await qr(f,o,Fe,rr,p);}catch(x){return console.error("[Bespoke slug validation Failed]: Return 404:",x.message,`/${p}/${m.url}`),{notFound:!0}}o(gt.setPreviews(d.results)),await Promise.all([o(oe("formatter",{})),o(oe("datasource",{include:!0})),o(oe("report",{id:d.results.map(x=>x.report_id),include:!0,locales:[p]}))]);let R=r.getState(),h=Vr(R),b=$r(R),P=Xt(h,p),w=Fr(R).filter(x=>x.id===c),F=Ur(R),k={...F},q={},B=Object.values(F).reduce((x,j)=>("access"in j.settings&&!["public","guest"].some(A=>!j.settings.access||j.settings.access.includes(A))&&x.push(j.id),x),[]),D=B.filter(x=>k[x].settings[ve.FALLBACK]),_=Array.from(new Set([...D,...he(D,Object.values(k))])),L=B.filter(x=>[O.SELECTOR,O.MULTIHIERARCHY_SELECTOR].includes(k[x].type)),U=Array.from(new Set([...L,...he(L,Object.values(k))]));B=Array.from(new Set([...B,..._,...U,...he(B,Object.values(k))])),B.forEach(x=>{D.includes(x)?(q[x]={...k[x],type:O.FALLBACK,original_type:k[x].type},delete k[x]):L.includes(x)&&(q[x]={...k[x],settings:{...k[x].settings,[ve.DISABLED]:!0}},delete k[x]),U.includes(x)||delete k[x];}),await o(Ve(B.filter(x=>!U.includes(x)))),await o(or(q));let C={...Mt(d.results),locale:p,...pe()},z=async x=>await o(Fe(x));await Lt({...k,...q},w,void 0,P,{locale:p,query:{...u,...i},variables:C},void 0,z,"section",b).then(async x=>{let j=Object.keys({...k,...q}).reduce((A,S)=>(x.variables[S]&&x.status[S]||A.push(S),A),[]);await Promise.all([o(Ve(j)),o(Ot.setVariableChange({...x,attributes:C})),o(nr())]);});let M=Object.keys({...k,...q}).filter(x=>s&&a?x!==a:k[x]&&k[x].section_id!==c);return await o(Ve(M)),{props:{buildTime:l}}}})}catch(r){return console.error("ERROR SSR",r),async()=>({notFound:true})}}export{fp as BespokeEmbedServerSideProps,Rl as BespokeEndpointNextJsHandlerFactory,me as BespokeGetSession,As as BespokeHandleAuth,$u as BespokeManagerServerSideProps,dp as BespokeRendererStaticPaths,mp as BespokeRendererStaticProps,Cs as BespokeSearchUsersByMetadata,_s as BespokeUpdateCurrentUserAppMetadata,xs as BespokeUpdateCurrentUserMetadata,vs as BespokeWithApiRoleAuthRequired,Sl as ReportCrosswalkHandler,It as dbApiFactory,fo as endpointKey,Xe as getDB,nt as useDatabaseApi};
|