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