@datawheel/bespoke 0.9.9-rc.3 → 0.9.9-rc.4
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-NHK4OHO2.js +1 -0
- package/dist/Viz-PDOOW4XD.css +1 -0
- package/dist/Viz-V6EJ5M4B.js +1 -0
- package/dist/auth.js +1 -1
- package/dist/chunk-4LFB3666.js +42 -0
- package/dist/chunk-4XIZPGIL.js +3 -0
- package/dist/chunk-5NVVEPZQ.js +1 -0
- package/dist/chunk-7K6SKRXP.js +1 -0
- package/dist/chunk-AA4WMKFB.js +35 -0
- package/dist/chunk-G6UW4ISL.js +1 -0
- package/dist/chunk-KUPNLLLT.js +1 -0
- package/dist/chunk-OIIAFAWL.js +1 -0
- package/dist/chunk-P6ORTCRN.js +1 -0
- package/dist/chunk-QZ5NBDGE.js +1 -0
- package/dist/cms.js +22 -95
- package/dist/explore.js +1 -45
- 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 +3 -2
package/dist/server.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import ri,{getServerSession}from'next-auth';import Zs from'next-auth/providers/auth0';import We from'auth0';import*as cc from'pg';import {Sequelize,Error as Error$1,DataTypes,Op,literal,where,cast,json,fn as fn$1,col,Model}from'sequelize';import nr from'yn';import*as vi from'd3-array';import*as wi from'd3-collection';import*as ki from'd3-format';import*as Pi from'd3-time-format';import {formatAbbreviate}from'd3plus-format';import {date}from'd3plus-axis';import {merge,closest,assign,isObject}from'd3plus-common';import {titleCase,strip}from'd3plus-text';import dc from'slugify';import $r from'axios';import fc from'jsonwebtoken';import yc from'next/config';import Bc from'flexsearch';import rl from'base58';import ol from'flickr-sdk';import Zc from'sharp';import {createApi}from'unsplash-js';import ul from'fs';import {createContext,createElement}from'react';import {renderToString}from'react-dom/server';import*as vo from'@tabler/icons-react';import Jl from'nextjs-cors';import Yl from'image-type';import Nl from'formidable';import zl from'dom-parser';import Op$1 from'path';import cs from'axios-retry';import {format}from'pretty-format';import hu 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 Ys=Object.defineProperty;var Qs=(e,t)=>{for(var r in t)Ys(e,r,{get:t[r],enumerable:true});};var ei={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 He(e){let t=e;if(t&&!t.source)if(!t.providers||t.providers.length===0){let r=Zs({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 We.ManagementClient(ei),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 ge(e,t,r={providers:[]}){let o=He(r),n=await getServerSession(e,t,o);return n&&(n.source=o.source||""),n}var oi=(e={providers:[]})=>{let t=He(e);return ri(t)},ni=oi;var v=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 ai(e){return {ok:true,status:200,wrapper:true,data:e}}function an(e){return {ok:false,status:v.is(e)?e.code:500,error:e.message}}function O(e){return t=>e(t).then(ai,an)}function ue(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 H={ADMIN:"Admin",EDITOR:"Editor",WRITER:"Writer"},sn={APP:"App",USER:"User"},cn=e=>{let t=Object.values(H);return e?e.map(r=>({...r,type:t.includes(r.name)?sn.APP:sn.USER})):[]};var Je={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 We.ManagementClient(Je).roles.getAll({include_totals:!0,per_page:100});return {roles:cn(t.roles)}}catch(e){throw console.error("AuthZeroError",e),new v(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 We.ManagementClient(Je);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 v(t.response?.status||500,t.message)}}}function pn(){return async e=>{try{if(e){let t=new We.ManagementClient(Je),r=await Promise.all([t.users.get({id:e}),t.users.getRoles({id:e})]);return {...r[0],roles:r[1]}}else throw new v(404,"User ID required")}catch(t){throw console.error("AuthZeroError",t),new v(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 We.ManagementClient(Je),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 v(404,"user_id is required")}catch(t){throw console.error("AuthZeroError",t),new v(t.response?.status||500,t.message)}}}function mn(){return async e=>{try{return "NOT USED SERVICE"}catch(t){throw console.error("AuthZeroError",t),new v(t.response?.status||500,t.message)}}}async function no(e,t){return await new We.ManagementClient(Je).users.updateAppMetadata({id:e},t)}async function ao(e,t){return await new We.ManagementClient(Je).users.updateUserMetadata({id:e},t)}async function fn(e,t){try{let r=new We.ManagementClient(Je),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 si=(e,t,r,o)=>new Promise((n,a)=>{(async()=>{try{let s=await ge(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"});}})();}),ii=si;var ci=(e,t,r,o)=>new Promise((n,a)=>{(async()=>{try{let s=await ge(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"});}})();}),li=ci;var Wt=(e,t)=>t&&typeof t=="string"?t.split(".").reduce((r,o)=>r[o],e):e;function Rr(e,t){return e.some(r=>t.includes(r))}function br(e){return e.filter((t,r,o)=>o.indexOf(t)===r)}var ui=(e,t,r)=>async function(o,n){let a=await ge(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&&!Rr(i,t)){n.status(402).json({error:"unauthorize",description:"The user requires some specific roles"});return}await e(o,n);},pi=ui;var di=(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 "});}})();}),mi=di;var Me=(e=process.env)=>nr(e.REPORTS_LOGGING);var Qe=class extends Model{getContent(t){let r=this.contentByLocale.find(o=>o.locale===t);if(!r)throw new Error(`Missing SearchContent for locale '${t}' on Search ID '${this.id}'`);return r}toJSON(){let t=this.get({plain:true}),{inputs:r=[],consumers:o=[],contentByLocale:n=[]}=this;return {...t,inputs:r.map(a=>a.toJSON()),consumers:o.map(a=>a.toJSON()),contentByLocale:Object.fromEntries(n.map(a=>[a.locale,a.toJSON()]))}}};function gi(e){return Qe.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=>(Qe.hasMany(t.block_content,{foreignKey:"id",sourceKey:"id",as:"contentByLocale"}),Qe.belongsToMany(t.block,{through:"block_input",foreignKey:"block_id",otherKey:"input_id",as:"inputs"}),Qe.belongsToMany(t.block,{through:"block_input",foreignKey:"input_id",otherKey:"block_id",as:"consumers"}),Qe)}var gn=gi;var Sr=class extends Model{};function Ri(e){return Sr.init({id:{type:DataTypes.INTEGER,primaryKey:true,onDelete:"cascade",references:{model:"bespoke_reports_block",key:"id"}},locale:{type:DataTypes.STRING,primaryKey:true},content:{type:DataTypes.JSON,defaultValue:{}}},{sequelize:e,modelName:"block_content",tableName:"bespoke_reports_block_content",freezeTableName:true,timestamps:false}),()=>Sr}var hn=Ri;var Er=class extends Model{};function Si(e){return Er.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}),()=>Er}var Rn=Si;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 Ei(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 Ai(e){return {.99999:15.137,.99:6.635,.95:3.841,.9:2.706}[e]}function Jt(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 Ti(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;)Jt(t,c,e,e)*.5+Jt(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;)Jt(t,c,e,e)*.5+Jt(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 _i(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,Ar((1+p)*s/(1-s),p+1,1e10)+.5*Ar((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,Ar((1+p)*s/(1-s),0,p-1)+.5*Ar((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 Ar(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:Ei,binP:Jt,computeMidP:Ti,criticalValue:Ai,smr:_i};var Ze={d3:{...vi,...wi,...ki,...Pi},d3plus:{assign:assign,closest:closest,date:date,formatAbbreviate:formatAbbreviate,merge:merge,strip:strip,titleCase:titleCase},stats:Sn},En={};var De={UNILATERAL:"uni",MULTILATERAL:"multi"},et={SINGLE:"single",MULTI:"multi"};var lo={ALLOWED:"allowed",ALLOWED_LOGIC:"allowedLogic",IGNORE_CASCADE:"ignoreCascade"},Mi={ACCESS:"access",ACCESS_LOGIC:"accessLogic"},Di={DISABLED:"disabled"},Ui={FALLBACK:"fallback"},Fi={CLIENT_SIDE:"clientSideSection"};var Vi={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",SKELETON:"skeleton"},uo={GENERATOR:"generator",RELATED:"related",VIZ:"visualization",SECTION_FLAG:"section_flag"},po="logic",x={...Vi,...uo},he={NAME:"name",DESCRIPTION:"description",...lo,...Mi,...Ui,...Di,...Fi};var Tr={FORMATTER:"formatter"},wt={STRING:"string"};var kt=class extends Model{};function qi(e){return kt.init({id:{type:DataTypes.INTEGER,primaryKey:true,autoIncrement:true},name:{type:DataTypes.STRING,defaultValue:""},content:{type:DataTypes.JSONB,defaultValue:{description:"",testValue:"Foo",type:Tr.FORMATTER,inputType:wt.STRING,logic:"return n;"}}},{sequelize:e,modelName:"formatter",tableName:"bespoke_reports_formatter",freezeTableName:true,timestamps:false,hooks:{async afterSync(t){let r=await kt.findAll();if(t.force||r.length===0){let o=Object.entries(En).map(([n,a])=>({name:n,content:a}));await kt.bulkCreate(o);}}}}),()=>kt}var _n=qi;var Yt=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 Ki(e){return Yt.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=>(Yt.hasMany(t.image_content,{foreignKey:"id",sourceKey:"id",as:"contentByLocale"}),Yt)}var vn=Ki;var _r=class extends Model{};function Hi(e){return _r.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}),()=>_r}var wn=Hi;var xt=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 xt.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=>(xt.hasMany(t.dimension,{foreignKey:"report_id",sourceKey:"id",as:"dimensions"}),xt.hasMany(t.section,{foreignKey:"report_id",sourceKey:"id",as:"sections"}),xt)}var kn=Ji;var Ct=class extends Model{toJSON(){let t=this.get({plain:true}),{variants:r=[]}=this;return {...t,variants:r.map(o=>o.toJSON())}}};function Qi(e){return Ct.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=>(Ct.hasMany(t.variant,{foreignKey:"dimension_id",sourceKey:"id",as:"variants",constraints:false}),Ct.belongsTo(t.report,{foreignKey:"report_id",targetKey:"id",as:"report",constraints:false}),Ct)}var Pn=Qi;var Bt=class extends Model{get report(){return this.dimension?.report}toJSON(){return this.get({plain:true})}};function Xi(e){return Bt.init({id:{type:DataTypes.INTEGER,primaryKey:true,autoIncrement:true},dimension_id:{type:DataTypes.INTEGER,onDelete:"cascade",references:{model:"bespoke_reports_report_dimension",key:"id"}},slug:{type:DataTypes.STRING,defaultValue:""},name:{type:DataTypes.STRING,defaultValue:""},settings:{type:DataTypes.JSONB,defaultValue:{}},config:{type:DataTypes.JSONB,defaultValue:{}},visible:{type:DataTypes.BOOLEAN,defaultValue:true}},{sequelize:e,modelName:"variant",tableName:"bespoke_reports_report_dimension_variant",freezeTableName:true,timestamps:false}),t=>(Bt.hasMany(t.search,{foreignKey:"variant_id",sourceKey:"id",as:"members",constraints:false}),Bt.belongsTo(t.dimension,{foreignKey:"dimension_id",targetKey:"id",as:"dimension",constraints:false}),Bt)}var xn=Xi;var Ce=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 tc(e){return Ce.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=>(Ce.belongsTo(t.variant,{foreignKey:"variant_id",targetKey:"id",as:"variant",constraints:false}),Ce.belongsTo(t.dimension,{foreignKey:"dimension_id",targetKey:"id",as:"dimension",constraints:false}),Ce.belongsTo(t.report,{foreignKey:"report_id",targetKey:"id",as:"report",constraints:false}),Ce.belongsTo(t.image,{foreignKey:"image_id",targetKey:"id",as:"image",constraints:false}),Ce.hasMany(t.search_content,{foreignKey:"id",sourceKey:"content_id",as:"contentByLocale"}),Ce)}var In=tc;var vr=class extends Model{};function oc(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=oc;var Zt=class extends Model{toJSON(){let t=this.get({plain:true}),{blocks:r=[]}=this;return {...t,blocks:r.map(o=>o.toJSON())}}};function ac(e){return Zt.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=>(Zt.hasMany(t.block,{foreignKey:"section_id",sourceKey:"id",as:"blocks"}),Zt)}var Bn=ac;var kr=class extends Model{};function ic(e){return kr.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-OIIAFAWL.js';import {a as a$1,b as b$1}from'./chunk-5NVVEPZQ.js';import {e,f,c,b,j,g as g$1,i,h}from'./chunk-KUPNLLLT.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 as ta$1,k,C,z,qa,ra as ra$1,X as X$1,da as da$1,aa,ga as ga$1,sa,F,D,g,Y,I,j as j$1,w,S,ja,ka,Q}from'./chunk-AA4WMKFB.js';import'./chunk-P6ORTCRN.js';import'./chunk-QZ5NBDGE.js';import ia,{getServerSession}from'next-auth';import oa from'next-auth/providers/auth0';import Se from'auth0';import*as $a from'pg';import {Sequelize,Error as Error$1,DataTypes,Op,literal,where,cast,json,fn as fn$1,col,Model}from'sequelize';import ba from'yn';import tr from'axios';import rn from'slugify';import an from'flexsearch';import Bn from'base58';import Cn from'flickr-sdk';import kn from'sharp';import {createApi}from'unsplash-js';import Nn from'fs';import {createElement}from'react';import {renderToString}from'react-dom/server';import*as or from'@tabler/icons-react';import ws from'nextjs-cors';import _s from'image-type';import is from'formidable';import ds from'jsonwebtoken';import fs from'dom-parser';import Bs from'path';var na={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 Re(e){let r=e;if(r&&!r.source)if(!r.providers||r.providers.length===0){let t=oa({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 Se.ManagementClient(na),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 Z(e,r,t={providers:[]}){let o=Re(t),a=await getServerSession(e,r,o);return a&&(a.source=o.source||""),a}var ca=(e={providers:[]})=>{let r=Re(e);return ia(r)},la=ca;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 Rr(){return async()=>{try{let r=await new Se.ManagementClient(we).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 Sr(){return async e=>{try{let r;if(e){let t={include_totals:!0,per_page:10,page:e.page||0},o=new Se.ManagementClient(we);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 wr(){return async e=>{try{if(e){let r=new Se.ManagementClient(we),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 qt(e.user_id,e.user_metadata),e.roles){let r=new Se.ManagementClient(we),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 Se.ManagementClient(we).users.updateAppMetadata({id:e},r)}async function qt(e,r){return await new Se.ManagementClient(we).users.updateUserMetadata({id:e},r)}async function Pr(e,r){try{let t=new Se.ManagementClient(we),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 da=(e,r,t,o)=>new Promise((a,i)=>{(async()=>{try{let n=await Z(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"});}})();}),ma=da;var pa=(e,r,t,o)=>new Promise((a,i)=>{(async()=>{try{let n=await Z(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 qt(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"});}})();}),ua=pa;var fa=(e,r,t)=>async function(o,a){let i=await Z(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);},ga=fa;var ha=(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 "});}})();}),ya=ha;var pe=(e=process.env)=>ba(e.REPORTS_LOGGING);var Ae=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 Sa(e){return Ae.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=>(Ae.hasMany(r.block_content,{foreignKey:"id",sourceKey:"id",as:"contentByLocale"}),Ae.belongsToMany(r.block,{through:"block_input",foreignKey:"block_id",otherKey:"input_id",as:"inputs"}),Ae.belongsToMany(r.block,{through:"block_input",foreignKey:"input_id",otherKey:"block_id",as:"consumers"}),Ae)}var Er=Sa;var kt=class extends Model{};function _a(e){return kt.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}),()=>kt}var Ir=_a;var Et=class extends Model{};function Pa(e){return Et.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}),()=>Et}var vr=Pa;var Ge=class extends Model{};function Ea(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=Ea;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 Cr=va;var It=class extends Model{};function Ca(e){return It.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}),()=>It}var xr=Ca;var qe=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 Ta(e){return qe.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=>(qe.hasMany(r.dimension,{foreignKey:"report_id",sourceKey:"id",as:"dimensions"}),qe.hasMany(r.section,{foreignKey:"report_id",sourceKey:"id",as:"sections"}),qe)}var Tr=Ta;var $e=class extends Model{toJSON(){let r=this.get({plain:true}),{variants:t=[]}=this;return {...r,variants:t.map(o=>o.toJSON())}}};function Ma(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 Dr=Ma;var je=class extends Model{get report(){return this.dimension?.report}toJSON(){return this.get({plain:true})}};function Na(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 Mr=Na;var ie=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 Ua(e){return ie.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=>(ie.belongsTo(r.variant,{foreignKey:"variant_id",targetKey:"id",as:"variant",constraints:false}),ie.belongsTo(r.dimension,{foreignKey:"dimension_id",targetKey:"id",as:"dimension",constraints:false}),ie.belongsTo(r.report,{foreignKey:"report_id",targetKey:"id",as:"report",constraints:false}),ie.belongsTo(r.image,{foreignKey:"image_id",targetKey:"id",as:"image",constraints:false}),ie.hasMany(r.search_content,{foreignKey:"id",sourceKey:"content_id",as:"contentByLocale"}),ie)}var Or=Ua;var vt=class extends Model{};function za(e){return vt.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}),()=>vt}var Nr=za;var rt=class extends Model{toJSON(){let r=this.get({plain:true}),{blocks:t=[]}=this;return {...r,blocks:t.map(o=>o.toJSON())}}};function Va(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=Va;var Ct=class extends Model{};function Ka(e){return Ct.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 ri,{getServerSession}from'next-auth';import Zs 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}),()=>Ct}var Ur=Ka;var Fr={block:Er,block_content:Ir,block_input:vr,formatter:Br,image:Cr,image_content:xr,report:Tr,dimension:Dr,variant:Mr,search:Or,search_content:Nr,section:Lr,datasource:Ur};var Ht=pe(),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:$a,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 pc=()=>{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}},G=pc;function q(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 Xt(e){return typeof e=="string"?String(e).replace(/&([a-z0-9]+|#[0-9]{1,6}|#x[0-9a-f]{1,6});/ig," "):e}function mc(e){return e?dc(Xt(q(e)),{replacement:"-",remove:/[*+~.()'"!:@]/g,lower:true,strict:true,trim:true}):""}var Pr=mc;var er=e=>({overrideNames:e&&typeof e.overrideNames<"u"?e.overrideNames:false,overrideRelevance:e&&typeof e.overrideRelevance<"u"?e.overrideRelevance:false,regenerateSlugs:e&&typeof e.regenerateSlugs<"u"?e.regenerateSlugs:false,keepOldMembers:e&&typeof e.keepOldMembers<"u"?e.keepOldMembers:true,doIngest:e&&typeof e.doIngest<"u"?e.doIngest:false,overrideAttributes:e&&typeof e.overrideAttributes<"u"?e.overrideAttributes:false,order:e&&typeof e.order<"u"?e.order:0});var Mn={jwt:fc};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:Ze,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)},Ir=(e,t={})=>{let r={libs:Mn,...t};function o(a){return Function("globals",...a.vars,`with (globals) { ${a.logic} }`).bind(r,r)}function n(a){if(a.vars&&a.logic)return o(a);for(let 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 gc(){let{publicRuntimeConfig:e}=yc(),t=e.bespoke_report_env_vars||{};return {...Object.keys(t).reduce((r,o)=>(r[`ENV_${o}`]=t[o]||"N/A",r),{})}}var pe=gc;function hc(){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 Ot=hc;var{localeDefault:Sc}=G();function Re(e){return {variables:e.variables||{},query:e.query||{},locale:e.locale||Sc}}function go(e){return e.reduce((t,r,o)=>(o?o===e.length-1&&o===1?t+=` and ${r}`:o===e.length-1?t+=`, and ${r}`:t+=`, ${r}`:t+=r,t),"")}var Ee=Ec;function Ec(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,y=>y.toLowerCase());m in t?u=t[m]:u=y=>`${c}${y}`;}let p=Array.isArray(n[l])?go(n[l]):n[l];if(p===void 0)return o?s:"N/A";try{return u(p,Ze,t)}catch(m){return console.error(`Error using formatter ${u.name}
|
|
22
|
-
`,`Error message: ${m.message}`),"N/A"}})}function _c(e,t){return e.some(r=>t.includes(`role.${r}`))}function Cr(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=pe(),u=Ot(),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(f=>{let S={...l};return {...f.toJSON(),patternSwapped:Ee(f.content.pattern,{},{variables:S})}}).find(f=>{if(!f.content?.pattern)return !1;try{return new RegExp(f.patternSwapped,"gm").test(c.url)}catch{return !1}});if(d){let f=t.user_roles&&Array.isArray(t.user_roles)?t.user_roles:[],S=d.content.access&&Array.isArray(d.content.access)?d.content.access:[],L=d.content.logic_ssr||d.content.logic;if(L&&(S.length===0||S.includes("public")||S.includes("guest")&&f.length===0||S.includes("private")&&f.length>0||_c(f,S))){let C=await Ir({vars:["url","libs","session"],logic:L},m)(c.url);if(C.axiosConfig)c=C.axiosConfig;else throw new v(500,`AxiosConfig is missing in Data Source ${d.name} (ID: ${d.id}).`)}else throw new v(401,`Query not allowed because user roles. Data Source ${d.name} (ID: ${d.id}).`)}let R=await $r.request(c);return {ok:!0,wrapper:a,status:R.status,data:R.data}}catch(y){throw new v(y.response?.status||500,y.message)}}}var{localeDefault:ho}=G();function Fn(e){let{search:t,search_content:r}=e,o=Cr(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}=er(l),{accessor:y,path:d,idKey:R,labelKey:f}=c[ho];if(!d||!R||!f)return;let S=await o({url:d}).catch(F=>({data:[],error:F}));if("error"in S)throw new v(500,`Failed to fetch members: ${S.error}`);let L=Wt(S.data,y),w=[];try{console.info(`Ingesting default items for variant ${i.name} for ${u}`),w=await a(i,u,L);}catch(F){let J=`[ERROR] Ingesting default member items for ${u}`;throw console.error(J,F),new v(500,J)}let C=await t.findAll({where:{variant_id:s}}).then(F=>Object.fromEntries(F.map(J=>[J.id,{content_id:J.content_id,needsUpdate:w.includes(J.content_id)}]))),k=Object.entries(c).map(async([F,J])=>{let{path:D,accessor:V,idKey:U,labelKey:E,attributes:P=[]}=J;if(!D||!U||!E)return;let I=await o({url:D}).catch(b=>({data:[],error:b}));if("error"in I)throw new v(500,`Failed to fetch members for locale ${F}: ${I.error}`);let $=Wt(I.data,V),N=await r.findAll({where:{id:w,locale:F}}).then(b=>Object.fromEntries(b.map(A=>[A.id,A.toJSON()]))),z=$.filter(b=>typeof b[U]<"u"&&b[U]!==""&&typeof b[E]<"u"&&b[E]!=="").map(b=>{let A=C[b[U]],T,_=Object.fromEntries(P.map(B=>[B.name,B.type==="constant"?B.value:b[B.value]||""]));return A.needsUpdate&&N[A.content_id]?(T={...N[A.content_id]},p&&(T.name=b[E]),m&&(T.attributes=_)):T={id:A.content_id,locale:F,name:b[E],attributes:_},T});try{return r.bulkCreate(z,{updateOnDuplicate:["name","attributes"]})}catch(b){let A=`[ERROR] Ingesting search content items for ${F}`;throw console.error(A,b),new v(500,A)}});await Promise.all(k);}async function a(i,s,c){let{id:l,dimension_id:u,slug:p}=i,{report_id:m}=i.dimension,{idKey:y,labelKey:d,zValueKey:R}=i.config[s],{overrideNames:f,regenerateSlugs:S,keepOldMembers:L,overrideRelevance:w,overrideAttributes:C}=er(i.settings),k=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(A=>Object.fromEntries(A.map(T=>{let _=T.getDataValue("slugCount");return [T.slug,Number.parseInt(`${_}`,10)]}))),F=t.findAll({where:{variant_id:l}}).then(A=>Object.fromEntries(A.map(T=>[T.id,T.toJSON()]))),[J,D]=await Promise.all([k,F]),V=Object.values(D).map(A=>A.slug),U=[],E=null,P=null;if(R&&R!==""){for(let A of c)if(typeof A[R]=="number"&&!isNaN(A[R])){let T=A[R];(E===null||T<E)&&(E=T),(P===null||T>P)&&(P=T);}}let I=[],$=[],N=[],z=false;c.filter(A=>A[y]&&A[y]!==""&&A[d]&&A[d]!=="").forEach(A=>{let T=A[y],_=Pr(A[d]);z=false;let B=parseFloat(Math.random().toPrecision(5));if(R&&R!==""&&E&&P&&A[R]){let ae;try{ae=parseInt(A[R],10);}catch{ae=0;}let ye=P!==null&&E!==null&&P!==E?(ae-E)/(P-E):0;B=P===E?1:parseFloat(ye.toPrecision(5));}if(D[T]){if(f||S||w||C){let ae=D[T];if((f||C)&&N.push(ae.content_id),f&&S){let ye=Object.values(D).filter(ce=>ce.id!==T).map(ce=>ce.slug),K=J[_]||ye.includes[_]||U.includes(_);K&&console.warn("Duplicate slug!",_,"replaced by",`${_}-${T}`);let X=K?`${_}-${T}`:_;ae.slug!==X&&(ae.slug=X,U.push(_),z=true,console.info("UPDATE SLUG",T,_));}R&&R!==""&&w&&ae.zvalue!==B&&(ae.zvalue=B,z=true,console.warn("UPDATE ZVALUE",T,B)),z&&$.push(ae);}}else {console.info("INSERT ID",T);let ae=J[_]||V.includes[_]||U.includes(_);ae&&console.warn("Duplicate slug!",_,"replaced by",`${_}-${T}`);let ye=ae?`${_}-${T}`:_;U.push(_),I.push({id:T,slug:ye,variant_id:l,dimension_id:u,report_id:m,zvalue:B});}});let b=[];if(!L){let A=c.map(T=>T[y]);b=Object.keys(D).filter(T=>!A.includes(T));}try{return (I.length>0||$.length>0)&&(await t.bulkCreate([...I,...$],{updateOnDuplicate:["slug","zvalue"]}),console.info("New members ingested:",I.length),console.info("New members updated:",$.length)),b.length>0&&(await t.destroy({where:{id:{[Op.in]:b},variant_id:l}}),console.warn("Old members deleted:",b.length)),N}catch(A){throw console.error(`[ERROR] Ingesting search members for ${s}`,A),new Error(A)}}}var xc=nr(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 v(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(f=>f.content_id);}else if(i==="slugs"){let d=o.slugs.map(f=>t.findAll({attributes:["content_id"],where:{slug:f.memberSlug},include:{association:"variant",attributes:["id","name","slug"],required:true,where:{slug:f.variantSlug}}})),R=await Promise.all(d).then(f=>f.reduce((S,L)=>S.concat(L),[]));u.content_id=R.map(f=>f.content_id);}else if(i==="related"){let d=()=>{if(o.variant_ids?.length)return {variant_id:o.variant_ids.map(S=>S)};if(o.dimension_ids?.length)return {dimension_id:o.dimension_ids.map(S=>S)};if(o.report_ids?.length)return {report_id:o.report_ids.map(S=>S)}},R=()=>o.include_ids?.length?{[Op.in]:o.include_ids.map(S=>S)}:false,f=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=f.map(S=>S.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(f=>f.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 xc&&console.error("Error in read members. The number of members requested doesn't match the number of members found.",JSON.stringify(o)),new v(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 y=m.map(d=>{let R,f={id:d.id,slug:d.slug,visible:d.visible,zvalue:d.zvalue,content_id:d.content_id,report_id:d.report_id,report_name:d.report.name,dimension_id:d.dimension_id,dimension_name:d.dimension.name,dimension_ordering:d.dimension.ordering,variant_id:d.variant_id,variant_name:d.variant.name,variant_slug:d.variant.slug};if(n){let S=d.contentByLocale;f.contentByLocale=S,f.image=d.image,f.image_id=d.image_id,R=f;}else {let S=d.getContent(a),L=d.image?.getContent(a),w=L&&{id:d.image.id,author:d.image.author,url:d.image.url,license:d.image.license,meta:L.meta};R={...f,locale:S.locale,name:S.name,attributes:S.attributes,keywords:S.keywords,image:w||null,image_id:d.image_id};}return c==="lite"&&(delete R.image,delete R.image_id),R});return {meta:o,results:y}}}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 Cc(e,t=true){if(!e)return "";let r=Xt(q(e.toLowerCase()));return (t?dc(r,{replacement:" ",remove:/[*+~.()'"!:@-]/g,lower:true,strict:false,trim:true}):r).replace(/\s\s+/g," ")}var at=Cc;var tr=[{charset:"latin",locales:["en","es","fr","de","it","pt","ro","nl","sv","da","fi","no","pl","cs","hu","sk","sl"]},{charset:"cjk",locales:["zh","ja","ko"]},{charset:"arabic",locales:["ar","fa","ur","he"]},{charset:"cyrilic",locales:["bg","ru","uk","sr","mk"]}],Br=tr.reduce((e,t)=>e.concat(t.locales),[]);var Lt=Me(),{locales:Oc}=G(),Lc=Oc.filter(e=>Br.includes(e)),bo=false,Nc=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 Mc(e));}catch(r){throw new Error(`
|
|
21
|
+
`,r.stack||r.message),global.sequelize=void 0;}).then(()=>({...e.models,sequelize:e}));}return global.sequelize};function Ya(e,r){return e.some(t=>r.includes(`role.${t}`))}function xt(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(h=>{let _={...c};return {...h.toJSON(),patternSwapped:I(h.content.pattern,{},{variables:_})}}).find(h=>{if(!h.content?.pattern)return !1;try{return new RegExp(h.patternSwapped,"gm").test(l.url)}catch{return !1}});if(p){let h=r.user_roles&&Array.isArray(r.user_roles)?r.user_roles:[],_=p.content.access&&Array.isArray(p.content.access)?p.content.access:[],O=p.content.logic_ssr||p.content.logic;if(O&&(_.length===0||_.includes("public")||_.includes("guest")&&h.length===0||_.includes("private")&&h.length>0||Ya(h,_))){let T=await j$1({vars:["url","libs","session"],logic:O},u)(l.url);if(T.axiosConfig)l=T.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 g=await tr.request(l);return {ok:!0,wrapper:i,status:g.status,data:g.data}}catch(f){throw new ha$1(f.response?.status||500,f.message)}}}var{localeDefault:Wt}=a();function Vr(e){let{search:r,search_content:t}=e,o=xt(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:f,path:p,idKey:g,labelKey:h}=l[Wt];if(!p||!g||!h)return;let _=await o({url:p}).catch(U=>({data:[],error:U}));if("error"in _)throw new ha$1(500,`Failed to fetch members: ${_.error}`);let O=Q(_.data,f),B=[];try{console.info(`Ingesting default items for variant ${s.name} for ${d}`),B=await i$1(s,d,O);}catch(U){let F=`[ERROR] Ingesting default member items for ${d}`;throw console.error(F,U),new ha$1(500,F)}let T=await r.findAll({where:{variant_id:n}}).then(U=>Object.fromEntries(U.map(F=>[F.id,{content_id:F.content_id,needsUpdate:B.includes(F.content_id)}]))),P=Object.entries(l).map(async([U,F])=>{let{path:z,accessor:q,idKey:K,labelKey:w,attributes:E=[]}=F;if(!z||!K||!w)return;let C=await o({url:z}).catch(R=>({data:[],error:R}));if("error"in C)throw new ha$1(500,`Failed to fetch members for locale ${U}: ${C.error}`);let D=Q(C.data,q),$=await t.findAll({where:{id:B,locale:U}}).then(R=>Object.fromEntries(R.map(k=>[k.id,k.toJSON()]))),Y=D.filter(R=>typeof R[K]<"u"&&R[K]!==""&&typeof R[w]<"u"&&R[w]!=="").map(R=>{let k=T[R[K]],v,M=Object.fromEntries(E.map(V=>[V.name,V.type==="constant"?V.value:R[V.value]||""]));return k.needsUpdate&&$[k.content_id]?(v={...$[k.content_id]},m&&(v.name=R[w]),u&&(v.attributes=M)):v={id:k.content_id,locale:U,name:R[w],attributes:M},v});try{return t.bulkCreate(Y,{updateOnDuplicate:["name","attributes"]})}catch(R){let k=`[ERROR] Ingesting search content items for ${U}`;throw console.error(k,R),new ha$1(500,k)}});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:f,labelKey:p,zValueKey:g}=s.config[n],{overrideNames:h,regenerateSlugs:_,keepOldMembers:O,overrideRelevance:B,overrideAttributes:T}=g$2(s.settings),P=r.findAll({attributes:["slug",[fn$1("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(k=>Object.fromEntries(k.map(v=>{let M=v.getDataValue("slugCount");return [v.slug,Number.parseInt(`${M}`,10)]}))),U=r.findAll({where:{variant_id:c}}).then(k=>Object.fromEntries(k.map(v=>[v.id,v.toJSON()]))),[F,z]=await Promise.all([P,U]),q=Object.values(z).map(k=>k.slug),K=[],w=null,E=null;if(g&&g!==""){for(let k of l)if(typeof k[g]=="number"&&!isNaN(k[g])){let v=k[g];(w===null||v<w)&&(w=v),(E===null||v>E)&&(E=v);}}let C=[],D=[],$=[],Y=false;l.filter(k=>k[f]&&k[f]!==""&&k[p]&&k[p]!=="").forEach(k=>{let v=k[f],M=i(k[p]);Y=false;let V=parseFloat(Math.random().toPrecision(5));if(g&&g!==""&&w&&E&&k[g]){let J;try{J=parseInt(k[g],10);}catch{J=0;}let ye=E!==null&&w!==null&&E!==w?(J-w)/(E-w):0;V=E===w?1:parseFloat(ye.toPrecision(5));}if(z[v]){if(h||_||B||T){let J=z[v];if((h||T)&&$.push(J.content_id),h&&_){let ye=Object.values(z).filter(Q=>Q.id!==v).map(Q=>Q.slug),G=F[M]||ye.includes[M]||K.includes(M);G&&console.warn("Duplicate slug!",M,"replaced by",`${M}-${v}`);let H=G?`${M}-${v}`:M;J.slug!==H&&(J.slug=H,K.push(M),Y=true,console.info("UPDATE SLUG",v,M));}g&&g!==""&&B&&J.zvalue!==V&&(J.zvalue=V,Y=true,console.warn("UPDATE ZVALUE",v,V)),Y&&D.push(J);}}else {console.info("INSERT ID",v);let J=F[M]||q.includes[M]||K.includes(M);J&&console.warn("Duplicate slug!",M,"replaced by",`${M}-${v}`);let ye=J?`${M}-${v}`:M;K.push(M),C.push({id:v,slug:ye,variant_id:c,dimension_id:d,report_id:u,zvalue:V});}});let R=[];if(!O){let k=l.map(v=>v[f]);R=Object.keys(z).filter(v=>!k.includes(v));}try{return (C.length>0||D.length>0)&&(await r.bulkCreate([...C,...D],{updateOnDuplicate:["slug","zvalue"]}),console.info("New members ingested:",C.length),console.info("New members updated:",D.length)),R.length>0&&(await r.destroy({where:{id:{[Op.in]:R},variant_id:c}}),console.warn("Old members deleted:",R.length)),$}catch(k){throw console.error(`[ERROR] Ingesting search members for ${n}`,k),new Error(k)}}}var tn=ba(process.env.NEXT_PUBLIC_REPORTS_DEBUG);function qr(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}:{}},g=await r.findAll({attributes:["content_id"],where:p,include:[{association:"contentByLocale",where:{locale:i}}]});d.content_id=g.map(h=>h.content_id);}else if(s==="slugs"){let p=o.slugs.map(h=>r.findAll({attributes:["content_id"],where:{slug:h.memberSlug},include:{association:"variant",attributes:["id","name","slug"],required:true,where:{slug:h.variantSlug}}})),g=await Promise.all(p).then(h=>h.reduce((_,O)=>_.concat(O),[]));d.content_id=g.map(h=>h.content_id);}else if(s==="related"){let p=()=>{if(o.variant_ids?.length)return {variant_id:o.variant_ids.map(_=>_)};if(o.dimension_ids?.length)return {dimension_id:o.dimension_ids.map(_=>_)};if(o.report_ids?.length)return {report_id:o.report_ids.map(_=>_)}},g=()=>o.include_ids?.length?{[Op.in]:o.include_ids.map(_=>_)}:false,h=await r.findAll({attributes:["content_id"],where:{...p(),content_id:g()||{[Op.notIn]:o.current_ids},visible:true},order:[Sequelize.fn("RANDOM")],limit:o.related||4});d.content_id=h.map(_=>_.content_id);}else if(s==="whole"){let p={...n&&n.length?{variant_id:n}:{}},g=await r.findAll({attributes:["content_id"],where:p});d.content_id=g.map(h=>h.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 tn&&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,g)=>d.content_id.indexOf(p.content_id)-d.content_id.indexOf(g.content_id));let f=u.map(p=>{let g,h={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 _=p.contentByLocale;h.contentByLocale=_,h.image=p.image,h.image_id=p.image_id,g=h;}else {let _=p.getContent(i),O=p.image?.getContent(i),B=O&&{id:p.image.id,author:p.image.author,url:p.image.url,license:p.image.license,meta:O.meta};g={...h,locale:_.locale,name:_.name,attributes:_.attributes,keywords:_.keywords,image:B||null,image_id:p.image_id};}return l==="lite"&&(delete g.image,delete g.image_id),g});return {meta:o,results:f}}}function Kr(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 on(e,r=true){if(!e)return "";let t=h(g$1(e.toLowerCase()));return (r?rn(t,{replacement:" ",remove:/[*+~.()'"!:@-]/g,lower:true,strict:false,trim:true}):t).replace(/\s\s+/g," ")}var ve=on;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"]}],Tt=ot.reduce((e,r)=>e.concat(r.locales),[]);var Je=pe(),{locales:nn}=a(),sn=nn.filter(e=>Tt.includes(e)),Qt=false,cn=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 ln(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 ln(e){let r=await e.search.findAll({include:[{association:"contentByLocale"}]});Je&&console.info("\u{1F3F3}\uFE0F INITIALIZING FLEXSEARCH");let t=sn.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 an.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"),f=Array.isArray(m.keywords)?m.keywords.map(g=>ve(g,i!=="arabic")):null,p={id:d.id,content_id:d.content_id,name:m.name,keywords:f,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 Be=cn;var He=process.env.REPORTS_EXTERNAL_SEARCH,ue=pe(),{locales:dn}=a(),mn=dn.filter(e=>Tt.includes(e)),Zt=false,pn=async(e=false)=>{if(e&&(ue&&console.info("0\uFE0F\u20E3 CLEARING SEARCH INDEX"),global.typesense=void 0,Zt=false),global.typesense)return ue&&console.info("\u{1F501} RE-UTILIZING SEARCH INDEX"),global.typesense;try{Zt||(ue&&console.info("1\uFE0F\u20E3 INITIALIZING SEARCH INDEX"),Zt=!0,global.typesense=await fn());}catch(r){throw new Error(`
|
|
27
26
|
Could not initialize Typesense engine.
|
|
28
27
|
Details:
|
|
29
|
-
${
|
|
30
|
-
`)}return global.typesense};async function Vc(){try{if(Nt){let e=await $r.get(new URL(Nt).origin);if(e?.data["typesense-health"]===!0)return Ue&&console.info(`${Nt} 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 $c(){if(Ue&&console.info(`\u{1F3F3}\uFE0F INITIALIZING TYPESENSE SEARCH AGAINST ${Nt}`),!await Vc())throw new Error("TYPESENSE_URL service is not healthy.");let t=Uc.map(r=>(Ue&&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(",")),Ue&&console.info("Typesense URL:",Nt,a),$r.get(Nt,{params:a}).then(s=>(Ue&&(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 qn=Fc;var{localeDefault:Ao}=G();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:y,dimension:d,report:R,all:f,noImage:S,includes:L,sort:w,direction:C="ASC",offset:k=0}=n,J=tr.find(P=>P.locales.includes(c))?.charset||"latin",D=u&&!isNaN(u)?u:20,V=at(s,J!=="arabic");function U(P){return P.toJSON()}function E(P){let I=P.getContent(c);return {...P.toJSON(),locale:I.locale,name:I.name,attributes:I.attributes,keywords:I.keywords}}if(i){let P=await qn(),I=P[c]||P[Ao],$={query:V===""?"*":V,limit:D,variant:y,report:R,offset:k};return await I.search($)}else {let P=[],I=await st(e);if(s&&s!==""&&I[c]){let K=at(s,J!=="arabic"),X={query:K,limit:D},ce=await I[c].search(X);if(i?P=ce.data.results.map(j=>parseInt(j.content_id,10)):P=ce.reduce((j,Q)=>j.concat(Q.result),[]),P=br(P),l&&I[l]){let Q=I[l].search(K).reduce((Y,Se)=>Y.concat(Se.result),[]);Q=br(Q),P=br([...P,...Q]);}}let $={...m?{visible:m}:{},...S?{image_id:{[Op.eq]:null}}:{},...y.length?{variant_id:y}:{},...d.length?{dimension_id:d}:{},...R.length?{report_id:R}:{}},N={locale:f?{[Op.ne]:null}:c},z=[];s&&s!==""&&P.length&&w!=="report"?z.push([literal(`array_position(array[${P.join(",")}], "content_id")`),"ASC"]):(w==="report"&&z.push([literal(`COALESCE(NULLIF("report"."settings"->>'order', '')::INTEGER, 999999)`),"ASC"],[literal(`COALESCE(NULLIF("variant"."settings"->>'order', '')::INTEGER, 999999)`),"ASC"]),z.push(["zvalue","DESC NULLS LAST"])),w&&w!=="name"&&w!=="report"&&z.unshift([w,C.toUpperCase()]),s&&s!==""&&($.content_id=P);let b=[{association:"contentByLocale",where:N,separate:true}];(L||w==="report")&&b.push({association:"report",attributes:["id","name","settings"]},{association:"dimension",attributes:["id","name","settings"]},{association:"variant",attributes:["id","slug","name","settings"]});let A={...$.visible?{visible:$.visible}:{},...$.noImage?{image_id:$.noImage}:{},...$.content_id?{content_id:$.content_id}:{}};if(!$.report_id&&!$.dimension_id&&!$.variant_id&&m){let X=(await r.findAll({attributes:["id"],where:{[Op.or]:[where(cast(json("settings.hide"),"boolean"),true)]}})).map(ce=>ce.id);X.length>0&&($.report_id={[Op.notIn]:X},A.report_id=$.report_id);}let T=[],[_,B]=await Promise.all([t.findAll({limit:D,offset:k,where:$,include:b,order:z,subQuery:false}),t.findAll({attributes:["variant_id",[fn$1("COUNT",col("variant_id")),"members_count"]],where:A,group:["variant_id"]})]),ae=B.map(K=>K.toJSON());if(w==="name"){let K=C.toUpperCase()==="ASC"?1:-1;_.sort((X,ce)=>{let j=X.getContent(Ao),Q=ce.getContent(Ao);return j&&Q?j.name>Q.name?1*K:-1*K:0});}let ye=p==="nested"?U:E;return T=_.map(ye),p!=="nested"&&T.forEach(K=>{let{name:X,keywords:ce,score:j=.1,zvalue:Q}=K;if(X){let Y=at(X),Se=j,Ne=s.length/Y.length,se=Y.split("").reduce((le,on,nn)=>(s.slice(0,nn),s.charAt(nn)===on&&(le+=on),le),"").length;Y===s||ce&&ce.includes(s)?Se=1e6:Y.startsWith(s)?Se*=20*Ne:se&&(Se*=se*Ne),K.zvalue=Se*2+Q;}}),{meta:{origin:"flexsearch",...Object.fromEntries(Object.entries(n).map(K=>[K[0],q(K[1])])),variantCount:ae.reduce((K,X)=>(K[X.variant_id]=parseInt(X.members_count,10),K),{})},results:T}}}}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 y=0;y<l.contentByLocale.length;y++){let d=l.contentByLocale[y];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 it={include:[{association:"contentByLocale",separate:true},{association:"inputs",include:[{association:"contentByLocale",separate:true}]},{association:"consumers",include:[{association:"contentByLocale",separate:true}]}]},rr=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"]]}),or={include:[{association:"blocks",separate:true,...it}]},Lr=e=>({include:[{association:"dimensions",separate:true,...rr(e)},{association:"sections",separate:true,...or}]});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:it.include})).toJSON()}async function a(u){let p=u.map(y=>{let{locales:d,...R}=y;return {...R,consumers:[],inputs:[],contentByLocale:d.map(S=>({locale:S}))}});return (await t.bulkCreate(p,{include:it.include})).map(y=>y.toJSON())}async function i({id:u,include:p}={}){let m=u==null?[]:[].concat(u),y=await t.findAll({where:m.length>0?{id:m}:void 0,include:p?it.include:void 0});if(m.length===0||y.length===m.length)return y.map(f=>f.toJSON());let d=y.map(f=>f.id),R=m.filter(f=>!d.includes(f));throw new v(404,`Block(id=[${R}]) does not exist.`)}async function s(u){let{id:p,contentByLocale:m,consumers:y,inputs:d,inputAction:R,...f}=u,S=await t.findByPk(p,{include:it.include,rejectOnEmpty:true});if(S.set(f),m){let L=Object.values(m);await r.bulkCreate(L,{updateOnDuplicate:["content"]});}return R&&(R.operation==="create"?await o.create(R.input):await o.destroy({where:R.input})),await S.save(),await S.reload(),S.toJSON()}async function c(u){let p=u.map(d=>{let{id:R,contentByLocale:f,consumers:S,inputs:L,inputAction:w,...C}=d;return {id:R,contentByLocale:f,inputAction:w,...C}}),m=await t.findAll({where:{id:{[Op.or]:p.map(d=>d.id)}},include:it.include}),y=[];for(let d of m){let R=p.filter(f=>f.id===d.id);for(let f=0;f<R.length;f++){let S=R[f],{id:L,contentByLocale:w,inputAction:C,...k}=S;if(C&&(C.operation==="create"?await o.create(C.input):await o.destroy({where:C.input})),w){let F=Object.values(w);await r.bulkCreate(F,{updateOnDuplicate:["content"]});}d.set(k),await d.save(),await d.reload(),y.push(d.toJSON());}}return y}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:rr(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?rr(r).include:void 0});if(l.length===0||u.length===l.length)return u.map(y=>y.toJSON());let p=u.map(y=>y.id),m=l.filter(y=>!p.includes(y));throw new v(404,`Dimension(id=[${m}]) does not exist.`)}async function a(s){let{id:c,variants:l,...u}=s,p=await t.findByPk(c,{include:rr(r).include,rejectOnEmpty:false});if(!p)throw new v(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 v(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(y=>y.toJSON());let p=u.map(y=>y.id),m=c.filter(y=>!p.includes(y));throw new v(404,`Datasource(id=[${m}]) does not exist.`)}catch(c){throw new v(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:Yc}=G();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=Yc}={}){let p=(s==null?[]:[].concat(s)).reduce((R,f)=>(R.includes(f)||R.push(f),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 f=R.toJSON();return {...f,sections:f.sections.map(S=>({...S,blocks:S.blocks.map(L=>({...L,contentByLocale:Object.keys(L.contentByLocale).reduce((w,C)=>({...w,...[...l,"logic"].includes(C)?{[C]:L.contentByLocale[C]}:{}}),{})}))}))}});let y=m.map(R=>R.id),d=p.filter(R=>!y.includes(R));throw new v(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 v(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:or.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?or.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 v(404,`Section(id=${p}) does not exist.`)}async function n(i){let{id:s,blocks:c,...l}=i,u=await t.findByPk(s,{include:or.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,y=await c({dimension:u,slug:m});return (await r.create({dimension_id:u,name:p,slug:y.valid?y.candidate:y.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),y=u.filter(d=>!m.includes(d));throw new v(404,`Variant(id=${y}) does not exist.`)}async function i(l){let{id:u,...p}=l,m=await r.findByPk(u,{include:[{association:"dimension"}],rejectOnEmpty:true});p.settings=er(p.settings);let y=p.settings.doIngest;return p.settings.doIngest=false,await m.update(p),y&&(await t.ingestMembers(m),await st(e,true)),await m.reload(),m.toJSON()}async function s(l){let u=await r.findByPk(l,{rejectOnEmpty:true});return await u.destroy(),st(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(f=>{let S=f.getDataValue("slugCount");return [f.slug,Number.parseInt(`${S}`,10)]}))),m=u,y=1,d=true;for(;p[m];)d=false,m=`${u}-${y}`,y++;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:O(r.createFormatter),deleteFormatter:O(r.deleteFormatter),readFormatter:O(r.readFormatter),updateFormatter:O(r.updateFormatter),createReport:O(r.createReport),deleteReport:O(r.deleteReport),readReport:O(r.readReport),updateReport:O(r.updateReport),createDimension:O(r.createDimension),deleteDimension:O(r.deleteDimension),readDimension:O(r.readDimension),updateDimension:O(r.updateDimension),createVariant:O(r.createVariant),readVariant:O(r.readVariant),updateVariant:O(r.updateVariant),deleteVariant:O(r.deleteVariant),validateVariantSlug:O(r.validateVariantSlug),createSection:O(r.createSection),readSection:O(r.readSection),updateSection:O(r.updateSection),deleteSection:O(r.deleteSection),createBlock:O(r.createBlock),deleteBlock:O(r.deleteBlock),readBlock:O(r.readBlock),updateBlock:O(r.updateBlock),createBulkBlock:O(r.createBulkBlock),updateBulkBlock:O(r.updateBulkBlock),readMember:O(r.readMember),searchMember:O(r.searchMember),updateMember:O(r.updateMember),readMemberImage:O(r.readMemberImage),createDatasource:O(r.createDatasource),deleteDatasource:O(r.deleteDatasource),readDatasource:O(r.readDatasource),updateDatasource:O(r.updateDatasource)}}var oa=e=>{throw console.error("/methods/helpers/uploadImage.ts:",e),new Error(e.message)},Xc=Number(process.env.NEXT_PUBLIC_IMAGE_SPLASH_WIDTH)||1400,el=Number(process.env.NEXT_PUBLIC_IMAGE_THUMB_WIDTH)||400,tl=async(e,t,r)=>{let o=[{type:"splash",res:Xc},{type:"thumb",res:el}];for(let n of o){let a=await Zc(r).resize(n.res).toFormat("webp").webp({lossless:true}).toBuffer().catch(oa);await e.image.update({[n.type]:a},{where:{id:t}}).catch(oa);}},we=tl;var na="SECTION_ALLOWED";var aa=["4","5","7","8","9","10"],nl=aa.join(),{locales:al}=G(),Fe;if(process.env.FLICKR_API_KEY)try{Fe=new ol(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(!Fe)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 Fe.photos.search({text:o,license:nl,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(Fe.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(y=>y.label==="Small 320");return m&&l.push({id:a[p].id,source:m.source}),l},[]);return {meta:{prompt:q(r.prompt),page:q(`${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:q(`${r}`)||"",id:q(`${o}`)||""},i=`https://flic.kr/p/${rl.int_to_base58(o)}`;if(!Fe)throw new Error("Flickr API Key not configured");let s=await Fe.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 Fe.photos.getSizes({photo_id:o}).then(k=>k.body),y=m.sizes.size.find(k=>parseInt(k.width,10)>=1600);if(y||(y=m.sizes.size.find(k=>parseInt(k.width,10)>=1e3)),y||(y=m.sizes.size.find(k=>parseInt(k.width,10)>=500)),!y||!y.source)throw new Error("Flickr Source Error, try another image.");let d=await fetch(y.source);if(!d.ok)throw new Error("Flickr Error retrieving image, try another image.");let R=await d.arrayBuffer(),S=(await Fe.photos.licenses.getInfo().then(k=>k.body.licenses.license)).find(k=>k.id===parseInt(s.photo.license,10)),L={url:i,author:s.photo.owner.realname||s.photo.owner.username,license:S?`${S.name}: ${S.url}`:""},w=await e.image.create(L);await e.image_content.destroy({where:{id:w.id}});let C=al.map(k=>({id:w.id,locale:k,meta:s.photo.title._content}));await e.image_content.bulkCreate(C),await e.search.update({image_id:w.id},{where:{content_id:r}}),await we(e,w.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 M(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 v(400,`Invalid numeric parameter: ${e}`);return t}function W(e){return e==null||e===""?[]:Array.isArray(e)?e:e.toString().split(",")}var{localeDefault:$e}=G();function ca(e){let{readMember:t,searchMember:r,updateMember:o,readMemberImage:n}=e;return [M("GET","read/members",async a=>{let i=sl(a.query),s=i[i.mode]||[],c=i.mode==="whole";if(!c&&s.length===0)throw new v(400,`The request is missing the '${i.mode}' parameter.`);if(!c&&s.length>20&&!i.variant)throw new v(400,`You can look for up to 20 '${i.mode}' in a single request.`);return t(i)}),M("GET","search/members",a=>{let i=ar(a.query);return r(i)}),M("POST","update/member",a=>{let{body:i}=a;return o(i)},[H.EDITOR]),M("GET","member/image",a=>{let i=W(a.query.size)[0];return n({member:te(a.query.member),size:i&&i==="splash"?"splash":"thumb"})})]}function sl(e){let t=W(e.locale)[0]||$e,r=t==="all"||nr(e.all),o=W(e.mode)[0],a=(W(e.output)[0]||"full")==="lite"?"lite":"full",i=parseInt(W(e.related)[0],10)||5,s=nr(e.allowNulls,{default:false}),c=W(e.variant).map(te);if(c.length===0&&(c=W(e["variant[]"]).map(te)),o==="ids")return {all:r,mode:o,variant:c,output:a,locale:r?$e:q(t),ids:W(e.ids||e["ids[]"]),allowNulls:s};if(o==="content_ids")return {all:r,mode:o,variant:c,output:a,locale:r?$e:q(t),content_ids:W(e.content_ids||e["content_ids[]"]).map(te),allowNulls:false};if(o==="slugs")return {all:r,mode:o,variant:c,output:a,locale:r?$e:q(t),slugs:W(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?$e:q(t),related:i,current_ids:W(e.current_ids||e["current_ids[]"]).map(te),include_ids:W(e.include_ids||e["include_ids[]"]).map(te),report_ids:W(e.report_ids||e["report_ids[]"]).map(te),dimension_ids:W(e.dimension_ids||e["dimension_ids[]"]).map(te),variant_ids:W(e.variant_ids||e["variant_ids[]"]).map(te),output:a,allowNulls:false};if(o==="whole")return {all:r,mode:o,variant:c,locale:r?$e:q(t),output:a,allowNulls:s};throw new v(400,`Invalid mode: '${o}'`)}function ar(e){let t=W(e.locale)[0]||$e||"en",r=t==="all",o=W(e.format)[0],n=o?o==="nested":r,a=W(e.variant).map(te);a.length===0&&(a=W(e["variant[]"]).map(te));let i=W(e.dimension).map(te);i.length===0&&(i=W(e["dimension[]"]).map(te));let s=W(e.report).map(te);s.length===0&&(s=W(e["report[]"]).map(te));let c=e.origin==="typesense"?"typesense":"flexsearch";return {query:W(e.query||e.q)[0]||"",locale:r?$e:t,preferredLocale:W(e.preferredLocale)[0],limit:W(e.limit).map(te)[0]??5,format:n?"nested":"plain",includes:nr(e.includes,{default:true}),visible:nr(e.visible,{default:true}),noImage:nr(e.noImage,{default:false}),variant:a,dimension:i,report:s,all:r,sort:W(e.sort)[0],direction:W(e.direction)[0],offset:Number(e.offset||0),origin:c}}async function la(e,t){let r=Mt(e),o=ar({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:q(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:ll}=G(),sr;if(process.env.UNSPLASH_API_KEY)try{sr=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(!sr)throw new Error("Unsplash API Key not configured");let o=r.prompt,a=(await sr.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:q(r.prompt),page:q(`${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:q(`${r}`)||"",id:q(`${o}`)||""};if(!sr)throw console.warn("Unsplash is not initialized. Check the credentials"),new Error("Unsplash is not initialized. Check the credentials");let a=await sr.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 $r.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"},y=await e.image.create(m);await e.image_content.destroy({where:{id:y.id}});let d=ll.map(R=>({id:y.id,locale:R,meta:a.description||a.alt_description}));await e.image_content.bulkCreate(d),await e.search.update({image_id:y.id},{where:{content_id:r}}),await we(e,y.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:pl}=G();async function ma(e,t){try{let{content_id:r,image_source:o,files:n}=t,a={content_id:q(`${r}`)||""};if(await e.search.findOne({where:{content_id:r}})&&n){let c=await ul.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=pl.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 we(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:dl}=G();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 ir;if(process.env.ADOBE_STOCK_API_KEY)try{ir={search:async(e,t)=>await $r.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 $r.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 ya(e,t){try{let r={prompt:t.prompt||"",page:t.page||1};if(!ir)throw new Error("Adobe API Key not configured");let n=(await ir.search(r.prompt,r.page)).map(a=>({id:a.id,source:a.thumbnail_url}));return {meta:{prompt:q(r.prompt),page:q(`${r.page}`)},results:n}}catch(r){throw console.error(r),new Error("Error in search Adobe provider")}}async function ga(e,t){try{let{content_id:r,image_id:o}=t,n={content_id:q(`${r}`)||"",id:q(`${o}`)||""};if(!ir)throw console.warn("Adobe is not initialized. Check the credentials"),new Error("Adobe is not initialized. Check the credentials");let a=await ir.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 $r.get(a.thumbnail_1000_url,{responseType:"arraybuffer"}).then(R=>R.data),m={url:c,author:a.creator_name,license:"ADOBE, TO-DO"},y=await e.image.create(m);await e.image_content.destroy({where:{id:y.id}});let d=dl.map(R=>({id:y.id,locale:R,meta:a.title||a.description}));await e.image_content.bulkCreate(d),await e.search.update({image_id:y.id},{where:{content_id:r}}),await we(e,y.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:ml}=G(),Nr=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(!Nr)throw new Error("Pixabay API Key not configured");let o=encodeURIComponent(r.prompt),n=`${ha}?key=${Nr}&q=${o}&per_page=${24}&page=${r.page}&image_type=photo&orientation=horizontal&safesearch=true`,s=(await $r.get(n)).data.hits?.map(c=>({id:c.id,source:c.previewURL||c.webformatURL}))||[];return {meta:{prompt:q(r.prompt),page:q(`${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:q(`${r}`)||"",id:q(`${o}`)||""};if(!Nr)throw console.warn("Pixabay is not initialized. Check the credentials"),new Error("Pixabay is not initialized. Check the credentials");let a=`${ha}?key=${Nr}&id=${o}`,s=(await $r.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 $r.get(d,{responseType:"arraybuffer"}).then(w=>w.data),f={url:p,author:l.user||`Pixabay User ${l.user_id}`,license:"Free Pixabay License: https://pixabay.com/service/license/"},S=await e.image.create(f);await e.image_content.destroy({where:{id:S.id}});let L=ml.map(w=>({id:S.id,locale:w,meta:l.tags||l.description||""}));await e.image_content.bulkCreate(L),await e.search.update({image_id:S.id},{where:{content_id:r}}),await we(e,S.id,R);}let y=await e.search.findOne({where:{content_id:r},include:be});y&&y.image&&(y.image.thumb=!!y.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 fl={local:ua,flickr:ia,unsplash:da,upload:ma,adobe:ga,pixabay:ba};function ct(e,t){let r=fl[t];if(!r)throw new v(500,`Wrong provider dbImageSaveFactory.ts: ${t}`);return O(o=>r(e,o))}var yl={local:la,flickr:sa,unsplash:pa,adobe:ya,pixabay:Ra};function Dt(e,t){let r=yl[t];if(!r)throw new v(500,`Wrong provider dbImageSearchFactory.ts: ${t}`);return O(o=>r(e,o))}var Al=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 Dr(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=>({...Al(l.toJSON()),mode:l.dimensions.length===1?De.UNILATERAL:De.MULTILATERAL}))}}}function Sa(e){return async()=>(await st(e,true),{error:false})}var{locales:Tl,localeDefault:_l}=G(),vl=(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===De.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},wl=(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=Dr(e);return o;async function o(n){let a=n.format||"results",i=Tl.includes(n.locale)?n.locale:_l,s=n.origin||"flexsearch",c=process.env.REPORTS_EXTERNAL_SEARCH&&s==="typesense",l=await t({...n,format:"plain",locale:q(i),visible:true});if(c)return l;{let u=l.results?l.results:[],m=(await r()).data,y=wl(u,m);return {meta:{...l.meta,origin:"flexsearch",format:a},results:vl(y,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 v(r.response?.status||500,r.message)}}}function Ta(){return async e=>{try{let{target:t}=e;return {target:t}}catch(t){throw new v(t.response?.status||500,t.message)}}}function Ae(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 Pl(e,t){return e.some(r=>t.includes(`role.${r}`))}function _a(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")||Pl(o.roles,i.settings.access))).map(i=>i.id);return a=a.concat(Ae(a,n)),{params:{...o},data:n.filter(i=>a.includes(i.id))}}}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(a=>a&&a.sections&&Array.isArray(a.sections)?a.sections.reduce((i,s)=>{let c=s.blocks.map(l=>{let u=l.toJSON();return u.inputs=u.inputs.map(p=>p.id),u.consumers=u.consumers.map(p=>p.id),u});return i.concat(c)},[]):[]);return {params:{...o},data:n}}}var Bl=Object.keys(vo).filter(e=>e.indexOf("Icon")===0);async function wa(){return {meta:{provider:"tabler"},results:Bl}}async function ka(e){let t=vo[e.name]?vo[e.name]:()=>"";return renderToString(createElement(t))}var Ol={tabler:wa};function Pa(e){let t=Ol[e];if(!t)throw new v(500,`Wrong provider dbListIconsFactory.ts: ${e}`);return O(()=>t())}var Ll={tabler:ka};function xa(e){return O(t=>{let r=Ll[e];if(!r)throw new v(500,`Wrong provider dbReadIconFactory.ts: ${t.provider}`);return r({name:t.name,provider:e})})}function Ia(){return e;async function e(){return {secrets:Ot()}}}function lt(e,t,r){return nt().then(o=>{Object.assign(r,Ut(o));})}function Ut(e,t){let r={},o=He(t||{providers:[]});return t&&o.actions&&o.source==="custom"?(r.searchRole=O(o.actions.searchRole()),r.searchUser=O(o.actions.searchUser()),r.readUser=O(o.actions.readUser()),r.updateUser=O(o.actions.updateUser())):o.source==="auth0"&&(r.searchRole=O(ln()),r.searchUser=O(un()),r.readUser=O(pn()),r.updateUser=O(dn())),{...ra(e),searchReport:O(Ea(e)),readMetadata:O(Dr(e)),regenerateSearch:O(Sa(e)),imageFlickrSearch:Dt(e,"flickr"),imageLocalSearch:Dt(e,"local"),imageUnsplashSearch:Dt(e,"unsplash"),imageAdobeSearch:Dt(e,"adobe"),imagePixabaySearch:Dt(e,"pixabay"),imageFlickrSave:ct(e,"flickr"),imageLocalSave:ct(e,"local"),imageUnsplashSave:ct(e,"unsplash"),imageUploadSave:ct(e,"upload"),imageAdobeSave:ct(e,"adobe"),imagePixabaySave:ct(e,"pixabay"),urlProxy:Cr(e),searchRole:r.searchRole,searchUser:r.searchUser,readUser:r.readUser,updateUser:r.updateUser,updateMyData:O(mn()),revalidateReport:O(Aa(e)),revalidateUrl:O(Ta()),readPrivateBlocks:O(_a(e)),readClientSideBlocks:O(va(e)),listTablerIcons:Pa("tabler"),readTablerIcon:xa("tabler"),readEnvSecrets:O(Ia())}}async function wo(e){try{let t=new Nl.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 ze(e,t){let r=ue(e,"create",t),o=ue(e,"read",t),n=ue(e,"update",t),a=ue(e,"delete",t),i=ue(e,"updateBulk",t),s=ue(e,"createBulk",t);return [M("POST",`create/bulk/${t}`,c=>{let{body:l}=c,{files:u,...p}=l,m=Object.keys(p).map(y=>p[y]);return s(m)},[H.EDITOR]),M("POST",`create/${t}`,c=>{let{body:l}=c;return r(l)},[H.EDITOR]),M("GET",`read/${t}`,c=>{let l=c.query,u=W(l.id).map(te);return o({id:u,include:nr(l.include)})}),M("POST",`update/${t}`,c=>{let{body:l}=c;return n(l)},[H.EDITOR]),M("POST",`update/bulk/${t}`,c=>{let{body:l}=c,{files:u,...p}=l,m=Object.keys(p).map(y=>p[y]);return i(m)},[H.EDITOR]),M("DELETE",`delete/${t}`,c=>{let l=te(c.query.id);return a(l)},[H.EDITOR])]}function Ca(e){let{validateVariantSlug:t}=e;return [...ze(e,"variant"),M("GET","validate/variant",r=>{let o=r.query,n=te(o.dimension);return t({dimension:n,slug:Pr(o.slug)})},[H.EDITOR])]}function Ba(e){return ze(e,"datasource").map(r=>({...r,roleRequired:[H.EDITOR]}))}function ut(e,t){let r=`image${ve(t)}Save`,o=e[r];return M("POST",`images/save/${t}`,n=>{let a=n.body;if(!a.content_id)throw new v(400,"Missing 'content_id' parameter.");if(!a.image_id)throw new v(400,"Missing 'image_id' parameter.");return o(a)},[H.EDITOR])}function Ft(e,t){let r=`image${ve(t)}Search`,o=e[r];return M("GET",`images/search/${t}`,async n=>{let a=W(n.query.prompt)[0];if(!a)throw new v(400,"Empty 'prompt' param.");return o({prompt:a,page:te(n.query.page)})},[H.EDITOR])}function Oa(e){let{readMetadata:t}=e;return M("GET","read/metadata",r=>t(r.query))}function La(e){let{regenerateSearch:t}=e;return M("POST","search/regenerate",()=>t(void 0),[H.EDITOR])}function Na(e){let{searchReport:t}=e;return M("GET","search/reports",r=>{let o=Dl(r.query);return t(o)})}function Dl(e){return {...ar(e),format:W(e.format)[0]}}function Ma(e){let{urlProxy:t}=e;return M("GET","url/proxy",(r,o,n)=>{let{url:a,method:i="GET",wrapper:s="true"}=r.query;if(!a)throw new v(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:W(i)[0]==="POST"?"POST":"GET",user_roles:c,wrapper:s!=="false",session:n})})}function Da(e){let{readMetadata:t,revalidateReport:r}=e;return M("GET","revalidate/report",async(o,n)=>{let{reportId:a,profilePrefix:i}=o.query;if(!a||!i)throw new v(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===De.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=[],y=0;return p.ok&&(y=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(f){console.error("error",d,f);}return R}))),{ok:!0,status:200,data:{reportId:a,revalidated:y,samples:m}}}catch(s){throw console.error(s),new v(500,"Error revalidating")}},[H.EDITOR])}function Ua(){return M("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 v(500,"Error revalidating")}else throw new v(400,"Missing target parameter in revalidate factory")},[H.ADMIN,H.EDITOR,H.WRITER])}function pt(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:Fl}=G(),Fa=pt();function Va(e){let{readPrivateBlocks:t}=e;return M("POST","read/blocks/private",(r,o,n)=>{let{userToken:a}=r.body,i=null;if(a&&Fa)try{let l=fc.verify(a,Fa);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 v(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||Fl,roles:s,section_id:r.body.section_id||[]};return t(c)})}var{localeDefault:Vl}=G();function $a(e){let{readClientSideBlocks:t}=e;return M("POST","read/section/client",(r,o,n)=>{let a={report_id:parseInt(r.body.report_id,10),locale:r.body.locale||Vl,section_id:parseInt(r.body.section_id,10)};return t(a)})}function za(e){let{readEnvSecrets:t}=e;return M("GET","read/secrets",()=>t({}),[H.EDITOR])}function qa(e){let{searchRole:t}=e;return M("GET","auth/search/roles",(r,o)=>t(""),[H.EDITOR,H.ADMIN])}function Ga(e){let{searchUser:t}=e;return M("GET","auth/search/users",r=>t({query:r.query.query,role_id:r.query.role_id,page:r.query.page||0}),[H.ADMIN])}function Ka(e){let{readUser:t}=e;return M("GET","auth/read/user",r=>t(r.query.user_id),[H.ADMIN])}function ja(e){let{updateUser:t}=e;return M("POST","auth/update/user",async r=>{let o=r.body;return await t(o)},[H.ADMIN])}function Ha(e){let{updateUser:t,readUser:r}=e;return M("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 $l(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 Wa(){return M("POST","pdf",async(e,t)=>{let{slugs:r,path:o}=e.body;if(!r||!o)throw new v(400,"Missing path parameter in request.");{new URL(o,e.headers.origin);return {ok:true,status:200,data:await $l()}}})}function Ja(e,t){let r=`list${ve(t)}Icons`,o=e[r];return M("GET",`list/icons/${t}`,async()=>o({}),[H.EDITOR])}function Ya(e,t){let r=`read${ve(t)}Icon`,o=e[r];return M("GET",`read/icons/${t}/icon.svg`,async n=>o({provider:t,name:n.query.name}))}function Qa(){return M("GET","report",async(e,t)=>{let{report:r,prefix:o,locale:n}=e.query;if(!r)throw new v(400,"Missing report parameter.");if(!o)throw new v(400,"Missing report parameter.");if(!n)throw new v(400,"Missing report parameter.");try{let i=await(await fetch(`${process.env.NEXT_PUBLIC_REPORTS_BASE_URL}/${n}${o}${r}`)).text(),l=new zl().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 v(500,"Couldn't find page cache")}})}var Gl=pt();function Kl(e){let t={email:e.user.email,name:e.user.name,roles:e.user.bespoke_roles||[]};return fc.sign(t,Gl,{expiresIn:"1min"})}function Za(){return M("POST","users/generate-token",async(e,t,r)=>{if(!r||!r.user)throw new v(401,"Unauthorized. Must be logged in to generate a token.");try{return {ok:!0,status:200,wrapper:!1,data:{token:Kl(r)}}}catch(o){throw console.error("Error generating token:",o),new v(500,"Internal Server Error")}})}var Hl=pt(),Wl=e=>!!fc.verify(e,Hl);function Xa(){return M("POST","users/validate-token",async(e,t)=>{let{token:r}=e.body;try{return Wl(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 Ql=Me();function ko(e,t){return `${e.toUpperCase()} ${t.toLowerCase()}`}function Zl(e,t){let r=Ut(e,t);return Object.fromEntries([...ze(r,"block"),...ze(r,"dimension"),...ze(r,"formatter"),...ze(r,"report"),...ze(r,"section"),...Ba(r),...Ca(r),...ca(r),Na(r),Oa(r),La(r),ut(r,"flickr"),ut(r,"local"),ut(r,"unsplash"),ut(r,"upload"),ut(r,"adobe"),ut(r,"pixabay"),Ft(r,"flickr"),Ft(r,"local"),Ft(r,"unsplash"),Ft(r,"adobe"),Ft(r,"pixabay"),Ma(r),qa(r),Ga(r),Ka(r),ja(r),Ha(r),Da(r),Ua(),Va(r),$a(r),Wa(),Ja(r,"tabler"),Ya(r,"tabler"),Qa(),za(r),Za(),Xa()].map(({handler:o,method:n,path:a,roleRequired:i})=>[ko(n,a),{handler:o,roleRequired:i}]))}function Xl(e){let t=nt().then(r=>Zl(r,e));return async function(o,n){await Jl(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=ko(i,p);return u[m]});if(l){let u=await ge(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&&!Rr(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 v(p.status,p.error);if(p.ok)if(p.data instanceof Buffer){let m=await Yl(p.data),y=Buffer.byteLength(p.data);n.writeHead(p.status,{"Content-Type":m?m.mime:"image/jpeg","Content-Length":y.toString()}).send(p.data);}else o.url&&o.url.indexOf("/icon.svg?name=")>0?(n.setHeader("Content-Type","image/svg+xml"),n.status(p.status).send(p.data)):n.status(p.status).json(p.wrapper?{data:p.data}:p.data);}).catch(p=>{Ql&&console.error("Backend Error",p),n.status(p.code).json({error:p.message});})}}else s||await t.then(console.info);return n.status(404).json({error:"No matching route",path:s,query:c})}}var eu=e=>{let t=e;return async function(r,o){let n=await t({test:"pala"});return o.json(n)}},tu=eu;var At={};Qs(At,{addBlockToState:()=>gr,addRunConsumersRunning:()=>Fs,cloneEntity:()=>Bs,createEntity:()=>xs,deleteEntity:()=>Cs,deleteQueryParam:()=>hp,readClientSideBlocks:()=>wp,readEntity:()=>ne,readEnvSecrets:()=>xp,readMember:()=>je,readMetadata:()=>yr,readPrivateBlocks:()=>vp,readUser:()=>Ap,recalculateVariables:()=>en,removeBlocksFromState:()=>xe,removeDataSourceLogic:()=>hr,removeRunConsumersRunning:()=>Vs,reportSearch:()=>fp,resetSectionState:()=>Us,revalidateReport:()=>Pp,revalidateUrl:()=>kp,searchMember:()=>gp,searchRegenerate:()=>yp,searchRole:()=>Sp,searchUser:()=>Ep,setCurrentLocale:()=>pp,setPreferredLocale:()=>dp,setPreviews:()=>up,setQueryParam:()=>Rp,setSectionState:()=>Ds,setStatus:()=>Ms,updateEntity:()=>Is,updateMyData:()=>_p,updateUser:()=>Tp,urlProxy:()=>bp,variantValidateSlug:()=>mp});function Te(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=>Te(e,{...o,method:"GET",params:r?r(n):n})}function oe(e,t,r){let o=typeof t=="string"?{url:t}:t;return n=>Te(e,{...o,method:"POST",data:n})}function qe(e,t,r){let o=typeof t=="string"?{url:t}:t;return n=>Te(e,{...o,method:"DELETE",params:r?r(n):n})}function dt(e,t){return r=>Te(e,{method:"POST",url:`images/save/${t}`,params:{prompt:r.prompt,provider:t}})}function Vt(e,t){return r=>Te(e,{method:"GET",url:`images/search/${t}`,params:{prompt:r.prompt,page:r.page,provider:t}})}function es(e,t){return ()=>Te(e,{method:"GET",url:`list/icons/${t}`,params:{provider:t}})}function ts(e,t){return r=>Te(e,{method:"GET",url:`read/icons/${t}/icon.svg`,params:{name:r.name}})}var mt=e=>({id:e}),ou=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 cr(e){let t=$r.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:qe(t,"delete/block",mt),deleteDimension:qe(t,"delete/dimension",mt),deleteFormatter:qe(t,"delete/formatter",mt),deleteReport:qe(t,"delete/report",mt),deleteSection:qe(t,"delete/section",mt),deleteVariant:qe(t,"delete/variant",mt),deleteDatasource:qe(t,"delete/datasource",mt),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",ou),readMemberImage:re(t,{url:"member/image",responseType:"blob"}),searchMember:re(t,"search/members"),updateMember:re(t,"update/members"),imageLocalSearch:Vt(t,"local"),imageLocalSave:dt(t,"local"),imageFlickrSearch:Vt(t,"flickr"),imageFlickrSave:dt(t,"flickr"),imageUnsplashSearch:Vt(t,"unsplash"),imageUnsplashSave:dt(t,"unsplash"),imageUploadSave:dt(t,"upload"),imageAdobeSearch:Vt(t,"adobe"),imageAdobeSave:dt(t,"adobe"),imagePixabaySearch:Vt(t,"pixabay"),imagePixabaySave:dt(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"),readClientSideBlocks:oe(t,"read/section/client"),listTablerIcons:es(t,"tabler"),readTablerIcon:ts(t,"tabler"),readEnvSecrets:re(t,"read/secrets")}}var su=nr(process.env.REPORTS_LOGGING),ft=iu;function iu(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 cu(m,"log","debug","info","warn","error")?(...y)=>{s.push(`${m} ${Date.now()} - ${y.map(d=>format(d)).join(" ")}`),su&&p[m](...y);}:p[m]}}),u;return n?u=new Function(e,"console","libs","formatters","locale","variables",r)(t,l,Ze,o,c,n):u=new Function(e,"console","libs","formatters","locale",r)(t,l,Ze,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 cu(e,...t){return t.includes(e)}var Po=(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]=Ee(a[i],t,r):Array.isArray(a[i])?a[i]=a[i].filter(n).map(s=>typeof s=="object"?Po(s,t,r):typeof s=="string"?Ee(s,t,r):s):typeof a[i]=="object"&&a[i]!==null&&!(a[i]instanceof Date)&&(a[i]=Po(a[i],t,r));}),a},Ur=Po;var rs=e=>Array.isArray(e)?e.map(t=>typeof t=="string"?{allowed:"always",label:t,id:t}:{allowed:"always",label:t.id,...t}):[];var lu=(e,t,r)=>{if(!r)return false;if(e===et.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=lu;function Io(e,t,r,o,n=false){let{variables:a}=Re(o),i=Ur({logic:t},r,o).logic,s=ft("variables",a,i,r,void 0,o),{vars:c,log:l,error:u}=s,p=c.type||et.SINGLE,m=c.component||"Selector",y=c.hideLabel||"false",d=c.resetSectionVars||"false",R=c.name||"Unlabeled Selector",f=rs(c.options||[]),S=k=>p===et.MULTI&&!Array.isArray(k)?[k]:k,L=c.defaultValue,w;if(L&&(L=S(L),xo(p,L,f)&&(w=L)),!w){let k=f&&f[0]&&f[0].id||f[0]||"";w=S(k);}if(n&&typeof window<"u"){let k=`selector${e}id`,F=new URLSearchParams(window.location.search),D=Object.fromEntries(F)[k];D&&!xo(p,D,f)&&D!==void 0&&(F.delete(k),window.history.replaceState(null,null,`?${F.toString()}`));}return {config:{name:R,type:p,options:f,defaultValue:w,component:m,hideLabel:y,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=Ur({logic:t},r,o).logic,s=ft("variables",a,i,r,void 0,o),{vars:c,log:l,error:u}=s;if(n&&typeof window<"u"){let m=`multihierarchySelector${e}-value`,y=`multihierarchySelector${e}-type`,d=new URLSearchParams(window.location.search),R=Object.fromEntries(d),f=R[m],S=R[y];f&&f!==void 0&&S&&S!==void 0&&!Co(c.data,S,f)&&(d.delete(m),d.delete(y),window.history.replaceState(null,null,`?${d.toString()}`));}return {config:c,log:l,error:u}}var uu=(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===et.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}},os=uu;var pu=(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||"",y=r.data?.filter(d=>p.includes(`${d[`${m} ID`]}`))||[];return {[`multihierarchySelector${e}id`]:p,[`multihierarchySelector${e}label`]:[...new Set((y||[]).map(d=>d[m]))],[`multihierarchySelector${e}type`]:m}},ns=pu;var{localeDefault:as,locales:du}=G(),mu=Object.values(uo),fu=(e,t=as)=>e&&mu.includes(e.type)?{locale:po,locales:[po]}:{locale:t,locales:du},ss=(e,t=as)=>{if(!e)return {};let{locale:r}=fu(e,t);return e.contentByLocale?.[r]?.content};function yu(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 is=yu;function Oo(e){return e.type===x.SECTION_FLAG&&e.inputs.length===0&&e.consumers.length===0}var Be=nr(process.env.NEXT_PUBLIC_REPORTS_DEBUG),Su=process.env.REPORTS_ORIGIN||"",Eu=process.env.NEXT_PUBLIC_REPORTS_AXIOS_RETRIES,ps=5;try{ps=parseInt(`${Eu||5}`,10);}catch(e){console.error("Error setting axios retries NEXT_PUBLIC_REPORTS_AXIOS_RETRIES defaults to 5",e);}cs($r,{retries:ps,retryDelay:cs.exponentialDelay,onRetry:(e,t,r)=>{console.error("Generator request failed. Retrying... Count: ",e),console.error("URL: ",r.url),console.error(t.message);}});$r.interceptors.request.use(e=>({...e,requestStart:Date.now()}));$r.interceptors.response.use(e=>({...e,requestDuration:new Date().getTime()-e.config.requestStart}),e=>Promise.reject(e));var Au=(e,t,r)=>{let o=Ee(e,t,r);return o.startsWith("http")||(o=`${Su}${o.startsWith("/")?"":"/"}${o}`),o},{urlProxy:Tu}=cr("/api/cms");function Vr(e){return e.ok!==void 0}function Fr(e){this.message=e,this.name="ApiFetchException";}var ls=process.env.NEXT_PUBLIC_REPORTS_API_FETCH_TIMEOUT||0;async function _u(e,t,r="en",o,n,a){let i=Date.now(),s=e,c,l=pe(),u=Ot(),p={envs:{...l,...u}},m=new URL(e),y=new URLSearchParams(m.searchParams.toString());y.has("bespoke_slugs")&&(m.searchParams.delete("bespoke_slugs"),s=m.toString());let d={datasource:void 0};o.find(w=>{if(!w.content?.pattern)return false;try{let C=new RegExp(w.content.pattern,"gm");return C.test(s)?(d.datasource=w,!0):C.test(s)}catch{return false}});let R=n?n.settings:{},f=!!(R&&R.useProxy&&R.useProxy==="true"),S=d.datasource&&typeof d.datasource.content.useProxy=="boolean"?d.datasource.content.useProxy:false,L=`${process.env.NEXT_PUBLIC_REPORTS_BASE_URL}/api/cms/url/proxy?url=${encodeURIComponent(s)}`;if(typeof window=="object"&&(f||S)){let w=await Tu({url:s,timeout:ls});if(w.ok===true)c=w.data;else throw new Fr(w?.error)}else try{let C={url:s,timeout:ls};if(d.datasource){let F=p;a&&(F={...p,session:a});let D=typeof window>"u"&&d.datasource.content.logic_ssr?d.datasource.content.logic_ssr:d.datasource.content.logic,U=await Ir({vars:["url","libs","session"],logic:D},F)(s);if(U.axiosConfig)C=U.axiosConfig;else throw new Fr(`AxiosConfig is missing in Data Source ${d.datasource.name} (ID: ${d.datasource.id}).`)}let k=await $r(C);if(k.status===200)k.headers["content-type"]==="text/csv"?c=csvParse(k.data):c=k.data;else throw new Fr("No response for: "+s)}catch(w){throw new Fr(w.message)}if(y.has("bespoke_slugs")){let w=y.get("bespoke_slugs");if(w){let C=w.split(",");if(C.length===3){let[k,F,J]=C,D=Wt(c,J);if(D&&Array.isArray(D)){let V=Array.from(new Set(D.map(U=>`${U[F]}`).filter(U=>!["","undefined"].includes(U))));if(V.length>0){let U=V.join("").length>2e3,E=await t({mode:U?"whole":"ids",ids:U?void 0:V,all:false,locale:r,variant:[parseInt(k,10)],output:"lite",limit:V.length+1,allowNulls:true}).then(P=>{let I=[];return Vr(P)?P.ok&&(I=P.data.results):I=P.results,I&&Array.isArray(I)?I:[]}).catch(P=>(console.error(`Error hydrating slugs for Variant: ${k}, Key: ${F}, Accessor: ${J}`),console.error(` Url ${e}`),n&&console.error(` From Section ${n.section_id} and Block ${n.id}`),console.error(P),[]));if(E){let P=Object.fromEntries(E.map(I=>[I.id,`/${I.variant_slug}/${I.slug}`]));D.map(I=>(I.bespoke_slug=P[I[F]]?P[I[F]]:null,I));}}}}}}return {data:c,requestDuration:Date.now()-i,finalUrl:S||f?L:s,apiDataSource:d.datasource?d.datasource:false}}function vu(e){this.name="BlockException",this.message=e;}async function us(e,t,r,o,n,a){let{locale:i,variables:s,query:c}=Re(r),l=ku(e,r,s,t),u=null,p=e.contentByLocale?.logic?.content?.api,m=null,y=null,d=null,R=null,f=null;if(!l)return {outputVariables:{},renderVariables:{},status:{allowed:false,hiddenByCascade:e.id}};if(e.type===x.FALLBACK||e.type===x.SKELETON)return {outputVariables:{},renderVariables:{},status:{allowed:l,hiddenByCascade:e.id}};if(p){if(d=Au(p,t,r),e._clientSideGenerator&&!n.some(P=>{if(!P.content?.pattern)return false;try{return new RegExp(P.content.pattern,"gm").test(d||"")}catch{return false}})&&!e._requiredByConsumers)return {outputVariables:{},renderVariables:{},status:{allowed:l,client:true}};let D=d.split("|||").filter(E=>E!==""),V=[];for(let E=0;E<D.length;E++){let P=D[E];new RegExp("^(?:[a-z+]+:)?//","i").test(d)||(P=`${process.env.NEXT_PUBLIC_REPORTS_BASE_URL}/${P}`.replace(/([^:]\/)\/+/g,"$1")),V.push(_u(P,o,i,n,e,a).catch($=>{throw new vu(` Excecution of ${e.type}-${e.id} in section ${e.section_id} in report ${s.report_name} (${s.report_id}) failed.
|
|
31
|
-
|
|
32
|
-
Message: ${$.message}.
|
|
33
|
-
`)}));}let U=await Promise.all(V).catch(E=>E.message);if(typeof U=="string"&&U)return {outputVariables:{},renderVariables:{},status:{error:U}};u=U.length===1?U[0].data:U.map(E=>E.data),y=U.reduce((E,P)=>E+JSON.stringify(P.data).length/1024,0),m=Math.max(...U.map(E=>E.requestDuration)),R=U.map(E=>E.apiDataSource?`${E.apiDataSource.name} (${E.apiDataSource.id})`:null),f=U.map(E=>E.finalUrl);}if(e.type===x.SELECTOR){let{config:D,log:V,error:U}=Io(e.id,e.contentByLocale[i].content.logic,t,r,true);return {outputVariables:os(e.id,c,D),renderVariables:D,status:{log:V,error:U,allowed:l}}}if(e.type===x.MULTIHIERARCHY_SELECTOR){let{config:D,log:V,error:U}=Bo(e.id,e.contentByLocale[i].content.logic,t,r,true);return {outputVariables:ns(e.id,c,D),renderVariables:D,status:{log:V,error:U,allowed:l}}}if(e.type===x.VIZ)return {outputVariables:{},renderVariables:e.contentByLocale.logic.content,status:{log:[],allowed:l}};if(e.type===x.RELATED){let D=e.contentByLocale?.logic?.content?.simple?.compare||"variant",V=e.contentByLocale?.logic?.content?.simple?.limit||4,U=Object.keys(s).filter(T=>T.startsWith("report_id")).map(T=>s[T]),E=Object.keys(s).filter(T=>T.startsWith("dimension_id")).map(T=>s[T]),P=Object.keys(s).filter(T=>T.startsWith("variant_id")).map(T=>s[T]),I=Object.keys(s).filter(T=>T.startsWith("id")).map(T=>s[T]);if(!I.length)return {outputVariables:{related_reports:[]},renderVariables:{},status:{log:[],allowed:false}};let $=await Promise.all(I.map((T,_)=>o({mode:"ids",locale:i,ids:[T],output:"lite",variant:[P[_]]}))).then(T=>T.flatMap(_=>{let B=[];return Vr(_)?_.ok&&(B=_.data.results):B=_.results,B&&Array.isArray(B)?B:[]})).catch(T=>(console.error("Error getting related members",T),[]));if(E.length>1){let T=Object.keys(s).filter(j=>j.startsWith("variant_slug")).map(j=>s[j]),_=$.map((j,Q)=>{let Y={mode:"related",locale:i,related:V??4,current_ids:[j.content_id],output:"full",variant_ids:[j.variant_id]};return Q===0&&(Y.include_ids=[j.content_id]),Y}),B=await Promise.all(_.map(j=>o(j))).then(j=>j.flatMap(Q=>{let Y=[];return Vr(Q)?Q.ok&&(Y=Q.data.results):Y=Q.results,Y&&Array.isArray(Y)?Y:[]})).catch(j=>(console.error("Error getting related members",j),[])),ae=B.reduce((j,Q)=>{let Y=Q.variant_slug;return j[Y]||(j[Y]=[]),j[Y].push(Q),j},{}),ye=[],K=Object.keys(ae),X=[{combination:[],index:0}];for(;X.length>0;){let j=X.pop();if(!j)continue;let{combination:Q,index:Y}=j;if(Y===K.length){ye.push(Q);continue}let Se=K[Y],Ne=ae[Se];for(let se of Ne)X.push({combination:[...Q,se],index:Y+1});}return {outputVariables:{related_reports:ye.map(j=>{let Q=j.sort((Y,Se)=>T.indexOf(Y.variant_slug)-T.indexOf(Se.variant_slug));return {entities:Q,link:"/"+Q.map(Y=>`${Y.variant_slug}/${Y.slug}`).join("/")}})},renderVariables:{},status:{log:[],allowed:B.length>0}}}let N=$.map(T=>T.content_id),z={mode:"related",locale:i,related:V??4,current_ids:N,output:"full"};D&&(D==="report"?z.report_ids=U:D==="dimension"?z.dimension_ids=E:z.variant_ids=P);let b=await o(z).then(T=>{let _=[];return Vr(T)?T.ok&&(_=T.data.results):_=T.results,_&&Array.isArray(_)?_:[]}).catch(T=>(console.error("Error getting related members",T),[]));return {outputVariables:{related_reports:b.map(T=>({entities:[T],link:`/${T.variant_slug}/${T.slug}`}))},renderVariables:{},status:{log:[],allowed:b.length>0}}}let{logic:S}=ss(e,i),L=Ee(S,t,r),w=ft("resp",u||{},L,t,s,r),{vars:C,error:k,log:F}=w;if(typeof C!="object")return {outputVariables:{},renderVariables:{},status:{error:"Configuration did not return an object",log:F,duration:m,responseSize:y,resp:u,api:d,allowed:l,apiFinalUrls:f,apiDataSources:R}};let J=Object.keys(C).reduce((D,V)=>({...D,[`${e.type}${e.id}${V}`]:C[V]}),{});return {renderVariables:C,outputVariables:[x.GENERATOR,x.SECTION_FLAG].includes(e.type)?C:J,status:{log:F,error:k,duration:m,responseSize:y,resp:u,api:d,allowed:l,apiFinalUrls:f,apiDataSources:R}}}function wu(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=>Lo(l,t,o,false,a,n,i));}})}var Lo=(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=>Lo(u,t,r,o,false,a,i));}),s&&s.consumers.length&&n&&wu(s,t,e,r,a,n,i),r},ku=(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}=ft("variables",r,e.settings.allowedLogic||"return false;",o,void 0,a);i||(n=!!s);}return n},$t=async(e,t,r,o,n,a={},i,s="section",c,l)=>{let u=s==="section",p=Re(n),m=p.variables,y={...a.variables??{}},d={...a.status??{}},R=new Set,f=[],S={};r?S={...S,[r]:e[r]}:t?S=(t??[]).reduce((N,z)=>{let{id:b}=z;if(z.settings?.[he.CLIENT_SIDE]&&u){let T=Object.values(e).filter(_=>_.section_id===b&&_.type!==x.SECTION_FLAG&&(_.type===x.GENERATOR&&_._clientSideGenerator||!_.shared||_.shared&&_.consumers?.length===0));return {...N,...T.reduce((_,B)=>({..._,[B.id]:B}),{})}}return {...N,...is(b,e)}},{}):S=Object.values(e).filter(N=>Oo(N)).reduce((N,z)=>({...N,[z.id]:z}),{});let L=Object.values(S).filter(N=>Oo(N));if(L.length>0){Be&&console.info("%crunConsumers: calculating section flags","color:purple",L.map(A=>A.id).join(", "));let N=Object.fromEntries(await Promise.all(L.map(async A=>[A.id,await us(A,o,{...p,variables:m,locale:m.locale},i,c,l).then(T=>{let{outputVariables:_,status:B}=T;if(B.error){if(typeof window>"u")throw new Error(`Run consumers (Block: ${A.id}, Section ${A.section_id}) failed with message: ${B.error}. `);d[A.id]={allowed:false,error:B.error},y[A.id]={};}return (A.consumers.length>0||[x.GENERATOR,x.SECTION_FLAG,x.RELATED].includes(A.type))&&B.allowed&&Object.keys(_).length>0?y[A.id]=_:y[A.id]={},s==="report"?(d[A.id]={allowed:B.allowed,client:B.client||null},[x.GENERATOR,x.SECTION_FLAG].includes(A.type)&&B.api&&(d[A.id].api=B.api)):d[A.id]=B,T})]))),b=Object.entries(N).filter(([,A])=>!A.outputVariables[na]).map(([A])=>Number(A));R=new Set(b.map(A=>e[A].section_id)),Object.values(S).filter(A=>R.has(A.section_id)).forEach(A=>{f.push(A.id),delete S[A.id];}),Be&&console.info("%crunConsumers: removing sections","color:purple",R.keys());}let w=R.size>0?Object.fromEntries(Object.entries(e).filter(([,N])=>R?.has(N.section_id)?(f.includes(N.id)||f.push(N.id),false):true)):e;if(f.length>0&&(w=Object.fromEntries(Object.entries(w).map(([N,z])=>{let b={...z,inputs:z.inputs.filter(A=>!f.includes(A)),consumers:z.consumers.filter(A=>!f.includes(A))};return [N,b]}))),!r&&!t)return {variables:{...a.variables??{},...y},status:{...a.status??{},...d}};s==="report"&&f.length>0&&f.forEach(N=>{delete y[N],delete d[N],delete e[N];}),Be&&console.info("%crunConsumers: running root blocks","color:purple",Object.keys(S));let C=Object.keys(S).reduce((N,z)=>{let b=new Date,A=Lo(Number(z),w,[],!r,true,u).map(B=>B.split("-")),_=(new Date().getTime()-b.getTime())/1e3;return Be&&console.info(`%cResolved dependencies for ${z} (${_.toFixed(2)}s)`,"color:blue"),[...N,...A]},[]),k=new Date,F=Object.keys(S).reduce((N,z)=>N.includes(z)?[...N]:[z,...N],hu(C)),D=(new Date().getTime()-k.getTime())/1e3;Be&&console.info(`%cResolved DAG (${D.toFixed(2)}s): `,"color:green",F);let V=process.env.NEXT_PUBLIC_REPORTS_MAX_CONCURRENT_QUERIES_PER_REPORT,U=parseInt(`${V||0}`,10);async function E(N,z){let b=new Map,A=[],T=async()=>A.length;for(let _ of N){if(U!==0){let K=await T();for(;K>=U;)Be&&console.info("Too many pending promises, waiting...",K,A),await new Promise(X=>setTimeout(X,500)),K=await T();}let B=z[_],ye=Promise.all(B.inputs.filter(K=>N.includes(String(K))).map(K=>b.get(Number(K)))).then(async()=>{let K=B.inputs.reduce((se,le)=>({...se,...y[le]}),m),X=B.inputs.find(se=>(B.settings?.ignoreCascade?B.settings?.ignoreCascade:[]).includes(se)||!d[se]?false:!d[se].allowed||d[se].hiddenByCascade);if(X){d[_]={allowed:false,hiddenByCascade:d[X].hiddenByCascade||X},y[_]={},A.splice(A.indexOf(Number(_)),1);return}let ce=new Date,j,Q=t&&t.find(se=>se.id===B.section_id)?.settings?.[he.CLIENT_SIDE];typeof window<"u"&&[x.SELECTOR,x.MULTIHIERARCHY_SELECTOR].includes(B.type)&&B.settings[he.DISABLED]&&!Q?j=new Promise(se=>{se({outputVariables:y[_],status:d[_]});}):j=us(B,o,{...p,variables:K,locale:K.locale},i,c,l);let Y=await j.then(({outputVariables:se,status:le})=>{if(le.error){if(typeof window>"u")throw new Error(`Run consumers (Block: ${_}, Section ${B.section_id}) failed with message: ${le.error}.`);d[_]={allowed:false,error:le.error},y[_]={};}(B.consumers.length>0||[x.GENERATOR,x.SECTION_FLAG,x.RELATED].includes(B.type))&&le.allowed&&Object.keys(se).length>0?y[_]=se:y[_]={},s==="report"?(d[_]={allowed:le.allowed,client:le.client||null},[x.GENERATOR,x.SECTION_FLAG].includes(B.type)&&le.api&&(d[_].api=le.api)):d[_]=le;}),Ne=(new Date().getTime()-ce.getTime())/1e3;return Be&&console.info(`%cBlock ${B.id} resolved in ${Ne.toFixed(3)}s`,Ne>500?"color:red":"color:green"),d[_].duration=d[_].duration?d[_].duration:Ne,A.splice(A.indexOf(Number(_)),1),Y}).catch(K=>{throw A.splice(A.indexOf(Number(_)),1),K});A.push(Number(_)),b.set(Number(_),ye);}await Promise.all(Array.from(b.values()));}let P=new Date;s==="section"&&t&&(F=F.filter(N=>!d[N]||d[N].client),Be&&console.info("%cFiltering DAG to exclude blocks already solved by SSR. Remaining blocks: ","color:yellow",F)),await E(F,w);let $=(new Date().getTime()-P.getTime())/1e3;return Be&&console.info(`%cResolved Variables (${$.toFixed(2)}s), ${F.length} blocks`,"color:green"),{variables:{...a.variables??{},...y},status:{...a.status??{},...d}}};function Pu(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 zt=Pu;function xu(e,t){return +(e<t)-+(e>t)}function zr(e,t,r="ordering"){return xu(t[r],e[r])}var{localeDefault:Cu}=G();var lr=new schema.Entity("block",{},{mergeStrategy(e,t){return t.block_input?e||{}:{...e,...t}}});lr.define({consumers:[lr],inputs:[lr]});var ds=new schema.Entity("variant"),ms=new schema.Entity("dimension",{variants:[ds]},{processStrategy(e){return {...e,variants:"variants"in e?e.variants:[]}}}),fs=new schema.Entity("section",{blocks:[lr]}),Bu=new schema.Entity("report",{dimensions:[ms],sections:[fs]},{processStrategy(e){return {...e,sections:"sections"in e?e.sections.sort(zr):[]}}}),Ou=new schema.Entity("formatter"),Lu=new schema.Entity("datasource"),Nu={report:Bu,section:fs,block:lr,dimension:ms,variant:ds,formatter:Ou,datasource:Lu};function qr(e,t){let r=Nu[e];if(!r)throw new Error(`Invalid entity type: ${e}`);let{entities:o}=normalize(t,[r]);return {report:yt(o,"report"),dimension:yt(o,"dimension"),section:yt(o,"section"),block:yt(o,"block"),variant:yt(o,"variant"),formatter:yt(o,"formatter"),datasource:yt(o,"datasource")}}function yt(e,t){return Object.prototype.hasOwnProperty.call(e,t)?e[t]:{}}var ys=(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}},ur=(e=[],t=Cu)=>e.reduce((r,o)=>{let n=Dn({vars:["n"],logic:o.content.logic},{},t,{});return r[o.name]=n,r},{});var de=process.env.NEXT_PUBLIC_REPORTS_LOCALE_DEFAULT||"en",Gr=process.env.NEXT_PUBLIC_REPORTS_LOCALES?.split(",")||[de];Gr.includes(de)||Gr.push(de);var Uu={localeDefault:de,locales:Gr,currentLocale:de,preferredLocale:de,showToolbar:false,activeSection:null,previews:[],query:{},sectionState:{},activeEntity:{type:null,id:null},sidebarStatus:{tools:true,settings:false,reportEditor:false},isCMS:false,isRunConsumersRunning:[]},Kr=createSlice({name:"status",initialState:Uu,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})}}),Oe=Kr.actions;var $u={attributes:{},variables:{},status:{}},jr=createSlice({name:"variables",initialState:$u,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=jr.actions;var Gu={tree:[],reports:null,entities:{block:{},dimension:{},report:{},section:{},variant:{},formatter:{},datasource:{}},requests:{block:{},dimension:{},report:{},section:{},variant:{},formatter:{},datasource:{}}},Le=createSlice({name:"records",initialState:Gu,reducers:{set:(e,t)=>{let r=t.payload;return {entities:pr(e.entities,r.entities||{}),requests:pr(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=pr(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=Hr(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=Hr(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=pr(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=pr(e.entities,n);if(e.entities=c,r.type==="dimension"){let l=r.data;e.entities.report[l.report_id].dimensions=Hr(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=Hr(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`;Ku(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 pr(e,t){return Object.fromEntries(Object.keys(e).map(r=>[r,{...e[r],...t[r]}]))}function Hr(e,t){return e.map(n=>t[n]).sort((n,a)=>typeof n.ordering=="string"&&typeof a.ordering=="string"?zr(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 Ku(e,t){let r=e.indexOf(t);r>-1&&e.splice(r,1);}function ie(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=Xu[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 Gt(e){return !!e&&!!e[me]}function Rt(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)===ep})(e)||Array.isArray(e)||!!e[Ts]||!!(!((t=e.constructor)===null||t===void 0)&&t[Ts])||Go(e)||Ko(e))}function mr(e,t,r){r===void 0&&(r=false),jt(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 jt(e){var t=e[me];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 jt(e)===2?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function ju(e,t){return jt(e)===2?e.get(t):e[t]}function _s(e,t,r){var o=jt(e);o===2?e.set(t,r):o===3?e.add(r):e[t]=r;}function Hu(e,t){return e===t?e!==0||1/e==1/t:e!=e&&t!=t}function Go(e){return Qu&&e instanceof Map}function Ko(e){return Zu&&e instanceof Set}function ht(e){return e.o||e.t}function jo(e){if(Array.isArray(e))return Array.prototype.slice.call(e);var t=tp(e);delete t[me];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)||Gt(e)||!Rt(e)||(jt(e)>1&&(e.set=e.add=e.clear=e.delete=Wu),Object.freeze(e),t&&mr(e,(function(r,o){return Ho(o,true)}),true)),e}function Wu(){ie(2);}function Wo(e){return e==null||typeof e!="object"||Object.isFrozen(e)}function ke(e){var t=rp[e];return t||ie(18,e),t}function gs(){return process.env.NODE_ENV==="production"||Kt||ie(0),Kt}function No(e,t){t&&(ke("Patches"),e.u=[],e.s=[],e.v=t);}function Wr(e){Vo(e),e.p.forEach(Ju),e.p=null;}function Vo(e){e===Kt&&(Kt=e.l);}function hs(e){return Kt={p:[],l:Kt,h:e,m:true,_:0}}function Ju(e){var t=e[me];t.i===0||t.i===1?t.j():t.g=true;}function Mo(e,t){t._=t.p.length;var r=t.p[0],o=e!==void 0&&e!==r;return t.h.O||ke("ES5").S(t,e,o),o?(r[me].P&&(Wr(t),ie(4)),Rt(e)&&(e=Jr(t,e),t.l||Yr(t,e)),t.u&&ke("Patches").M(r[me].t,e,t.u,t.s)):e=Jr(t,r,[]),Wr(t),t.u&&t.v(t.u,t.s),e!==vs?e:void 0}function Jr(e,t,r){if(Wo(t))return t;var o=t[me];if(!o)return mr(t,(function(s,c){return Rs(e,o,t,s,c,r)}),true),t;if(o.A!==e)return t;if(!o.P)return Yr(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),mr(a,(function(s,c){return Rs(e,o,n,s,c,r,i)})),Yr(e,n,false),r&&e.u&&ke("Patches").N(o,r,e.u,e.s);}return o.o}function Rs(e,t,r,o,n,a,i){if(process.env.NODE_ENV!=="production"&&n===r&&ie(5),Gt(n)){var s=Jr(e,n,a&&t&&t.i!==3&&!Fo(t.R,o)?a.concat(o):void 0);if(_s(r,o,s),!Gt(s))return;e.m=false;}else i&&r.add(n);if(Rt(n)&&!Wo(n)){if(!e.h.D&&e._<1)return;Jr(e,n),t&&t.A.l||Yr(e,n);}}function Yr(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[me];return (r?ht(r):e)[t]}function bs(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 zo(e,t,r){var o=Go(t)?ke("MapSet").F(t,r):Ko(t)?ke("MapSet").T(t,r):e.O?(function(n,a){var i=Array.isArray(n),s={i:i?1:0,A:a?a.A:gs(),P:false,I:false,R:{},l:a,t:n,k:null,o:null,j:null,C:false},c=s,l=qo;i&&(c=[s],l=dr);var u=Proxy.revocable(c,l),p=u.revoke,m=u.proxy;return s.k=m,s.j=p,m})(t,r):ke("ES5").J(t,r);return (r?r.A:gs()).p.push(o),o}function Yu(e){return Gt(e)||ie(22,e),(function t(r){if(!Rt(r))return r;var o,n=r[me],a=jt(r);if(n){if(!n.P&&(n.i<4||!ke("ES5").K(n)))return n.t;n.I=true,o=Ss(r,a),n.I=false;}else o=Ss(r,a);return mr(o,(function(i,s){n&&ju(n.t,i)===s||_s(o,i,t(s));})),a===3?new Set(o):o})(e)}function Ss(e,t){switch(t){case 2:return new Map(e);case 3:return Array.from(e)}return jo(e)}var Es,Kt,Jo=typeof Symbol<"u"&&typeof Symbol("x")=="symbol",Qu=typeof Map<"u",Zu=typeof Set<"u",As=typeof Proxy<"u"&&Proxy.revocable!==void 0&&typeof Reflect<"u",vs=Jo?Symbol.for("immer-nothing"):((Es={})["immer-nothing"]=true,Es),Ts=Jo?Symbol.for("immer-draftable"):"__$immer_draftable",me=Jo?Symbol.for("immer-state"):"__$immer_state";var Xu={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"},ep=""+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,tp=Object.getOwnPropertyDescriptors||function(e){var t={};return Yo(e).forEach((function(r){t[r]=Object.getOwnPropertyDescriptor(e,r);})),t},rp={},qo={get:function(e,t){if(t===me)return e;var r=ht(e);if(!Fo(r,t))return (function(n,a,i){var s,c=bs(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||!Rt(o)?o:o===Do(e.t,t)?(Uo(e),e.o[t]=zo(e.A.h,o,e)):o},has:function(e,t){return t in ht(e)},ownKeys:function(e){return Reflect.ownKeys(ht(e))},set:function(e,t,r){var o=bs(ht(e),t);if(o?.set)return o.set.call(e.k,r),true;if(!e.P){var n=Do(ht(e),t),a=n?.[me];if(a&&a.t===r)return e.o[t]=r,e.R[t]=false,true;if(Hu(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=ht(e),o=Reflect.getOwnPropertyDescriptor(r,t);return o&&{writable:true,configurable:e.i!==1||t!=="length",enumerable:o.enumerable,value:r[t]}},defineProperty:function(){ie(11);},getPrototypeOf:function(e){return Object.getPrototypeOf(e.t)},setPrototypeOf:function(){ie(12);}},dr={};mr(qo,(function(e,t){dr[e]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)};})),dr.deleteProperty=function(e,t){return process.env.NODE_ENV!=="production"&&isNaN(parseInt(t))&&ie(13),dr.set.call(this,e,t,void 0)},dr.set=function(e,t,r){return process.env.NODE_ENV!=="production"&&t!=="length"&&isNaN(parseInt(t))&&ie(14),qo.set.call(this,e[0],t,r,e[0])};var op=(function(){function e(r){var o=this;this.O=As,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 f=this;R===void 0&&(R=s);for(var S=arguments.length,L=Array(S>1?S-1:0),w=1;w<S;w++)L[w-1]=arguments[w];return c.produce(R,(function(C){var k;return (k=a).call.apply(k,[f,C].concat(L))}))}}var l;if(typeof a!="function"&&ie(6),i!==void 0&&typeof i!="function"&&ie(7),Rt(n)){var u=hs(o),p=zo(o,n,void 0),m=true;try{l=a(p),m=!1;}finally{m?Wr(u):Vo(u);}return typeof Promise<"u"&&l instanceof Promise?l.then((function(R){return No(u,i),Mo(R,u)}),(function(R){throw Wr(u),R})):(No(u,i),Mo(l,u))}if(!n||typeof n!="object"){if((l=a(n))===void 0&&(l=n),l===vs&&(l=void 0),o.D&&Ho(l,true),i){var y=[],d=[];ke("Patches").M(n,l,y,d),i(y,d);}return l}ie(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(y){return n.apply(void 0,[y].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){Rt(r)||ie(8),Gt(r)&&(r=Yu(r));var o=hs(this),n=zo(this,r,void 0);return n[me].C=true,Vo(o),n},t.finishDraft=function(r,o){var n=r&&r[me];process.env.NODE_ENV!=="production"&&(n&&n.C||ie(9),n.I&&ie(10));var a=n.A;return No(a,o),Mo(void 0,a)},t.setAutoFreeze=function(r){this.D=r;},t.setUseProxies=function(r){r&&!As&&ie(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=ke("Patches").$;return Gt(r)?i(r,o):this.produce(r,(function(s){return i(s,o)}))},e})(),fe=new op,np=fe.produce;fe.produceWithPatches.bind(fe);fe.setAutoFreeze.bind(fe);fe.setUseProxies.bind(fe);fe.applyPatches.bind(fe);fe.createDraft.bind(fe);fe.finishDraft.bind(fe);var Qr=np;var _e=Le.actions,xs=fr({block:Ge("block"),dimension:Ge("dimension"),formatter:Ge("formatter"),report:Ge("report"),section:Ge("section"),variant:Ge("variant"),datasource:Ge("datasource")}),ne=fr({block:Ke("block"),dimension:Ke("dimension"),formatter:Ke("formatter"),report:Ke("report"),section:Ke("section"),variant:Ke("variant"),datasource:Ke("datasource")}),Is=fr({block:Pe("block"),dimension:Pe("dimension"),formatter:Pe("formatter"),report:Pe("report"),section:Pe("section"),variant:Pe("variant"),datasource:Pe("datasource")}),Cs=fr({block:bt("block"),dimension:bt("dimension"),formatter:bt("formatter"),report:bt("report"),section:bt("section"),variant:bt("variant"),datasource:bt("datasource")}),Bs=fr({block:ks("block"),section:ks("section")});function fr(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 Et(e,t){return (r,o)=>{let a=o().records.requests[e][t],i=!a||a.status==="UNINITIALIZED"?"LOADING":"FETCHING";r(_e.setRequest({key:t,type:e,status:i}));}}function St(e,t,r,o){return n=>{typeof window=="object"&¬ifications.show({autoClose:3e3,color:"red",id:t,message:o,title:"Error"}),n(_e.setRequest({key:t,type:e,status:"FAILURE",error:{code:r,message:o}}));}}function Ge(e){return t=>{let r=Zo(e,t);return (o,n,a)=>(o(Et(e,r)),ue(a,"create",e)(t).then(s=>(s.ok===true?o(_e.setCreateRequest({key:r,operation:"create",status:"SUCCESS",type:e,data:s.data})):o(St(e,r,s.status,s.error)),s)))}}function ip(e){return t=>{let r=Zo(e,t[0]);return (o,n,a)=>(o(Et(e,r)),ue(a,"createBulk",e)(t).then(s=>(s.ok===true?o(_e.setCreateRequest({key:r,operation:"createBulk",status:"SUCCESS",type:e,data:s.data})):o(St(e,r,s.status,s.error)),s)))}}function ws(e,t,r){return r.replace(new RegExp(e,"g"),t)}function cp(e){return e.section_id!==void 0}function lp(e){return e.report_id!==void 0}function ks(e){return t=>{let{create:r}=t;return (o,n,a)=>Ge(e)(r)(o,n,a).then(async s=>{if(s.ok){let{data:c}=s,{id:l}=c,{update:u}=t,p=Ns(e,{id:l});if(o(Et(e,`${p}`)),e==="block"&&cp(r)){let m=Qr(u,f=>{f.id=l;}),{contentByLocale:y}=m;y&&(m=Qr(m,f=>{f.id=l,f.contentByLocale=Object.keys(y).reduce((S,L)=>{let w=y?y[L]:{};return S[L]={...w,id:l},S},{});}));let R=m.inputs?.map(f=>({type:f.type,id:f.id,inputAction:{operation:"create",input:{input_id:f.id,block_id:m.id}}}));return R&&R.length>0&&Ps(e)([m,...R])(o,n,a).then(()=>Ke("section")({id:m.section_id,include:true})(o,n,a).then(f=>(f.ok&&o(_e.setRequest({key:p,type:e,status:"SUCCESS",data:f.data})),f))),Pe(e)(m)(o,n,a).then(f=>(f.ok&&o(_e.setRequest({key:p,type:e,status:"SUCCESS",data:f.data})),f))}if(e==="section"&&lp(r)){let{id:m}=c,y=Qr(u,f=>{f.id=m;}),{blocks:d}=y,R=d?.map(f=>({type:f.type,blockcol:f.blockcol,blockrow:f.blockrow,section_id:m,locales:Object.keys(f.contentByLocale).map(S=>S)}));return R&&d&&await ip("block")(R)(o,n,a).then(f=>{if(f.ok){let S=f.data,L=[],w=S.map((C,k)=>{let J={...C},D=J.id,V=d[k];V.contentByLocale&&(J.contentByLocale=Object.keys(V.contentByLocale).reduce((b,A)=>{let T=V.contentByLocale[A];return b[A]={...T,content:{...T.content},id:J.id},b},{}));let{settings:U}=V,{contentByLocale:E,id:P}=J;J.settings=U;let I={id:P,contentByLocale:E,settings:U};return V.inputs.map(b=>b.id).reduce((b,A)=>{let T=d.findIndex(_=>_.id===A);return [...b,T]},[]).map(b=>({...S[b],originalBlock:d[b]})).forEach(b=>{let{id:A,type:T,originalBlock:_}=b;if([x.SELECTOR,x.VIZ].includes(T)){if(I.contentByLocale?.logic?.content?.api){let B=I.contentByLocale?.logic.content.api;I.contentByLocale.logic.content.api=ws(`(selector${_.id}id)`,`selector${A}id`,B);}if(I.contentByLocale?.logic?.content?.logic){let B=I.contentByLocale.logic.content.logic;I.contentByLocale.logic.content.logic=ws(`(selector${_.id}id)`,`selector${A}id`,B);}}L.push({id:A,inputAction:{operation:"create",input:{input_id:A,block_id:D}}});}),I});return Ps("block")([...w,...L])(o,n,a)}}),Pe(e)(y)(o,n,a).then(f=>(f.ok&&o(_e.setRequest({key:p,type:e,status:"SUCCESS",data:f.data})),f))}return Pe(e)({...u,id:c.id})(o,n,a)}})}}function Ke(e){return t=>{let r=Os(e,t);return (o,n,a)=>{o(Et(e,r));let i=ue(a,"read",e);if(typeof i!="function"){let s=`Failed to get valid RPC method for entity "${e}"`;return o(St(e,r,500,s)),Promise.reject(new Error(s))}return i(t).then(s=>(s.ok===true?o(_e.setReadRequest({key:r,operation:"read",status:"SUCCESS",type:e,data:s.data})):o(St(e,r,s.status,s.error)),s))}}}function Pe(e){return t=>{let r=Xo(e,t);return (o,n,a)=>(o(Et(e,r)),ue(a,"update",e)(t).then(s=>(s.ok===true?o(_e.setUpdateRequest({key:r,operation:"update",status:"SUCCESS",type:e,data:s.data})):o(St(e,r,s.status,s.error)),s)))}}function Ps(e){return t=>{let r=Xo(e,t[0]);return (o,n,a)=>(o(Et(e,r)),ue(a,"updateBulk",e)(t).then(s=>(s.ok===true?o(_e.setUpdateRequest({key:r,operation:"updateBulk",status:"SUCCESS",type:e,data:s.data})):o(St(e,r,s.status,s.error)),s)))}}function bt(e){return t=>{let r=Ls(e,t);return (o,n,a)=>(o(Et(e,r)),ue(a,"delete",e)(t).then(s=>{s.ok===true?o(_e.setDeleteRequest({key:r,operation:"delete",status:"SUCCESS",type:e,data:s.data})):o(St(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 Os(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 Ls(e,t){return `delete(${e}, ${t})`}function Ns(e,t){let r=t.id==null?null:`'${t.id}'`;return `clone(${e}, ${r})`}var{setStatus:Ms,setPreviews:up,setSectionState:Ds,resetSectionState:Us,setCurrentLocale:pp,setPreferredLocale:dp,addRunConsumersRunning:Fs,removeRunConsumersRunning:Vs}=Oe;function mp(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 fp(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 yp(){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 je(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 gp(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 $s(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(Ms(c)),a.activeSection&&t(en(e,{query:s},n));}function hp(e,t,r){return async(o,n)=>$s(e,o,n,{query:{[t]:void 0}},r)}function Rp(e,t,r,o){return async(n,a)=>$s(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}=ys(a.status,t),{sid:m,bid:y,previews:d,query:R}=u;Object.keys(p).length&&o(Oe.setStatus(p));let f={...zt(d),locale:i,...pe()},S={variables:f,query:R,locale:i};o(Oe.addRunConsumersRunning([m]));let L=a.records.entities.section[m],w=async C=>o(je(C));try{let C=await $t(s,L&&[L],y,c,S,void 0,w,"section",l,r),{variables:k,status:F}=C;o(qt.setVariableChange({attributes:f,variables:k,status:F})),o(Oe.removeRunConsumersRunning([m]));}catch(C){console.error("Error in runConsumers client side: recalculateVariables",C);}}}function yr(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 bp(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 Sp(){return async(e,t,r)=>{let o=await r.searchRole("");if("error"in o)throw new Error(o.error);return o.data}}function Ep(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 Ap(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 Tp({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 _p(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 xe(e){let{removeBlocks:t}=Le.actions;return async r=>{await r(t(e));}}function gr(e){let{addBlocks:t}=Le.actions;return async r=>{await r(t(e));}}function vp(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 wp(e){return async(t,r,o)=>{let n=await o.readClientSideBlocks(e);if("error"in n)throw new Error(n.error);return n.data}}function kp(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 Pp(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 xp(){return async(e,t,r)=>{let o=await r.readEnvSecrets({});if("error"in o)throw new Error(o.error);return o.data}}function hr(){let{removeDataSourceLogic:e}=Le.actions;return async t=>{await t(e());}}var zs=()=>configureStore({reducer:{[Le.name]:Le.reducer,[Kr.name]:Kr.reducer,[jr.name]:jr.reducer},middleware(e){return e({thunk:{extraArgument:cr("/api/cms/")}})}}),Tt=createWrapper(zs);function Lp(e){let t=process.cwd(),r=Op$1.resolve(t.endsWith("/example")?t.replace("/example",""):t,"package-lock.json"),o;try{let n=JSON.parse(ul.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 Np(e){let t=()=>Promise.resolve({}),{pathSegmentsKey:r="bespoke",preResolve:o=t,postResolve:n=t,authOptions:a={providers:[]}}=e||{};return Tt.getServerSideProps(i=>{let{dispatch:s}=i;return async c=>{let l=await ge(c.req,c.res,a);if(!l)return {redirect:{destination:"/api/auth/signin?callbackUrl=/cms",permanent:false}};let u=new Set([H.ADMIN,H.EDITOR,H.WRITER]);if(!(l?.user?.bespoke_roles||[]).some(S=>u.has(S)))return {redirect:{destination:"/",permanent:false}};let m=c.query[r],[y]=Array.isArray(m)?m:[m];await s(lt);let d=await Lp("@datawheel/bespoke"),R=await o(i,c);if("redirect"in R)return {props:R};y==="reports"&&(qs(c.query[r])?await Promise.all([s(ne("formatter",{})),s(ne("datasource",{include:true})),s(ne("report",{id:qs(c.query[r]),include:true})),Oe.setStatus({isCMS:true})]):await Promise.all([s(ne("report",{include:"dimensions"})),Oe.setStatus({isCMS:true})])),y==="metadata"&&await s(ne("report",{include:"dimensions"})),y==="formatters"&&await s(ne("formatter",{})),y==="datasources"&&await s(ne("datasource",{include:true}));let f=await n(i,c);return {props:{...R,...f,bespokeVersion:d,session:l}}}})}function qs(e){if(e==null||e==="")return;let[,t]=Array.isArray(e)?e:[e];return Number.parseInt(t)||void 0}var {locales:Dp}=G(),Up={pathSegment:"path",formatterFunctions:Dp.reduce((e,t)=>({...e,[t]:{}}),{}),datasourceFunctions:[],profilePrefix:"path",previewPrefix:null,siteProps:{}};createContext(Up);G();var Xr=e=>e.records.entities.block;function Ht(e){return t=>Object.values(t.records.entities[e])}var eo=Ht("section"),to=Ht("formatter");var ed=pe();function ro(e){return Object.values(e.records.entities.datasource||[]).sort((t,r)=>t.content.order>r.content.order?1:-1).map(t=>{let r={...ed};return {...t,content:{...t.content,pattern:Ee(t.content.pattern,{},{variables:r})}}})}var td=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,f)=>(d[R.variant_slug]=f,d),{}),m=e.reduce((d,R,f)=>(d[R.variantSlug]=f,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},oo=td;function rd(e){let{fallback:t=true,limit:r=50}=e||{};return async o=>{let{defaultLocale:n=de,locales:a=[]}=o,i=[];if(r>0){let s=a.find(u=>u===n),{searchMember:c}=await nt().then(Ut),l=await c({query:"",limit:r,format:"plain",locale:s||de,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 od(e){let{pathSegmentsKey:t="bespoke"}=e||{};try{return Tt.getStaticProps(r=>{let{dispatch:o}=r;return async n=>{await o(lt);let a=new Date().toISOString(),{locale:i=de,params:s={}}=n,c=Array.from(rn(s[t])),l;try{l=await oo(c,o,je,yr,i);}catch(E){return console.error("[Bespoke slug validation Failed]: Return 404:",E.message,`[${i}] -> /${c.map(P=>`${P.variantSlug}/${P.memberSlug}`).join("/")}`),{notFound:!0}}o(At.setPreviews(l.results)),await Promise.all([o(ne("formatter",{})),o(ne("datasource",{include:!0})),o(ne("report",{id:l.results.map(E=>E.report_id),include:!0,locales:[i]}))]);let u=r.getState(),p=to(u),m=ro(u),y=ur(p,i),d=eo(u),f={...Xr(u)},S={},L=d.filter(E=>E.settings[he.CLIENT_SIDE]).map(E=>E.id),w=Object.values(f).filter(E=>!L.includes(E.section_id)||E.type===x.SECTION_FLAG||E.type===x.GENERATOR||E.consumers?.some($=>{let N=f[$];return N&&N.section_id!==E.section_id})?!1:!E.consumers?.some($=>{let N=f[$];return N&&N.section_id===E.section_id&&N.type===x.GENERATOR})).map(E=>E.id);w.forEach(E=>{delete f[E];}),await o(xe(w)),Object.values(f).forEach(E=>{if(L.includes(E.section_id)&&E.type===x.GENERATOR){let P=E.consumers?.filter(I=>!w.includes(I))||[];f[E.id]={...E,_clientSideGenerator:!0,_requiredByConsumers:P.length>0,inputs:E.inputs?.filter(I=>!w.includes(I))||[],consumers:P};}});let C=Object.values(f).reduce((E,P)=>("access"in P.settings&&!["public","guest"].some(I=>!P.settings.access||P.settings.access.includes(I))&&E.push(P.id),E),[]),k=C.filter(E=>f[E].settings[he.FALLBACK]),F=Array.from(new Set([...k,...Ae(k,Object.values(f))])),J=C.filter(E=>[x.SELECTOR,x.MULTIHIERARCHY_SELECTOR].includes(f[E].type)),D=Array.from(new Set([...J,...Ae(J,Object.values(f))]));C=Array.from(new Set([...C,...F,...D,...Ae(C,Object.values(f))])),C.forEach(E=>{k.includes(E)?(S[E]={...f[E],type:x.FALLBACK,original_type:f[E].type},delete f[E]):J.includes(E)&&(S[E]={...f[E],settings:{...f[E].settings,[he.DISABLED]:!0}},delete f[E]),D.includes(E)||delete f[E];}),await o(xe(C.filter(E=>!D.includes(E)))),await o(gr(S));let V={...zt(l.results),locale:i,...pe()},U=async E=>await o(je(E));return await $t({...f,...S},d,void 0,y,{locale:i,query:s,variables:V},void 0,U,"report",m,void 0).then(async E=>{let P=Object.keys({...f,...S}).reduce((I,$)=>(E.variables[$]&&E.status[$]||I.push($),I),[]);await o(xe(P)),await o(qt.setVariableChange({...E,attributes:V})),await o(hr());}),{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 nd(e){let{pathSegmentsKey:t="bespoke"}=e||{};try{return Tt.getServerSideProps(r=>{let{dispatch:o}=r;return async n=>{let{section:a,block:i}=n.query,s=Object.fromEntries(Object.entries(n.query).filter(([b])=>b.match(/selector\d+id/)));if(!a&&!i)return {notFound:!0};let c=Number(a);await o(lt);let l=new Date().toISOString(),{locale:u=de,params:p={},req:m}=n,y=Array.from(rn(p[t])),d;try{d=await oo(y,o,je,yr,u);}catch(b){return console.error("[Bespoke slug validation Failed]: Return 404:",b.message,`/${u}/${m.url}`),{notFound:!0}}o(At.setPreviews(d.results)),await Promise.all([o(ne("formatter",{})),o(ne("datasource",{include:!0})),o(ne("report",{id:d.results.map(b=>b.report_id),include:!0,locales:[u]}))]);let R=r.getState(),f=to(R),S=ro(R),L=ur(f,u),w=eo(R).filter(b=>b.id===c),k={...Xr(R)},F={},J=w.filter(b=>b.settings[he.CLIENT_SIDE]).map(b=>b.id),D=Object.values(k).filter(b=>!J.includes(b.section_id)||b.type===x.GENERATOR||b.consumers?.some(_=>{let B=k[_];return B&&B.section_id!==b.section_id})?!1:!b.consumers?.some(_=>{let B=k[_];return B&&B.section_id!==b.section_id&&B.type===x.GENERATOR})).map(b=>b.id);D.forEach(b=>{delete k[b];}),await o(xe(D)),Object.values(k).forEach(b=>{if(J.includes(b.section_id)&&b.type===x.GENERATOR){let A=b.consumers?.filter(T=>!D.includes(T))||[];k[b.id]={...b,_clientSideGenerator:!0,_requiredByConsumers:A.length>0,inputs:b.inputs?.filter(T=>!D.includes(T))||[],consumers:A};}});let V=Object.values(k).reduce((b,A)=>("access"in A.settings&&!["public","guest"].some(T=>!A.settings.access||A.settings.access.includes(T))&&b.push(A.id),b),[]),U=V.filter(b=>k[b].settings[he.FALLBACK]),E=Array.from(new Set([...U,...Ae(U,Object.values(k))])),P=V.filter(b=>[x.SELECTOR,x.MULTIHIERARCHY_SELECTOR].includes(k[b].type)),I=Array.from(new Set([...P,...Ae(P,Object.values(k))]));V=Array.from(new Set([...V,...E,...I,...Ae(V,Object.values(k))])),V.forEach(b=>{U.includes(b)?(F[b]={...k[b],type:x.FALLBACK,original_type:k[b].type},delete k[b]):P.includes(b)&&(F[b]={...k[b],settings:{...k[b].settings,[he.DISABLED]:!0}},delete k[b]),I.includes(b)||delete k[b];}),await o(xe(V.filter(b=>!I.includes(b)))),await o(gr(F));let $={...zt(d.results),locale:u,...pe()},N=async b=>await o(je(b));await $t({...k,...F},w,void 0,L,{locale:u,query:{...p,...s},variables:$},void 0,N,"section",S,void 0).then(async b=>{let A=Object.keys({...k,...F}).reduce((T,_)=>(b.variables[_]&&b.status[_]||T.push(_),T),[]);await Promise.all([o(xe(A)),o(qt.setVariableChange({...b,attributes:$})),o(hr())]);});let z=Object.keys({...k,...F}).filter(b=>a&&i?b!==i:k[b]&&k[b].section_id!==c);return await o(xe(z)),{props:{buildTime:l}}}})}catch(r){return console.error("ERROR SSR",r),async()=>({notFound:true})}}
|
|
34
|
-
export{nd as BespokeEmbedServerSideProps,Xl as BespokeEndpointNextJsHandlerFactory,ge as BespokeGetSession,ni as BespokeHandleAuth,Np as BespokeManagerServerSideProps,rd as BespokeRendererStaticPaths,od as BespokeRendererStaticProps,mi as BespokeSearchUsersByMetadata,ii as BespokeUpdateCurrentUserAppMetadata,li as BespokeUpdateCurrentUserMetadata,pi as BespokeWithApiRoleAuthRequired,tu as ReportCrosswalkHandler,Ut as dbApiFactory,ko as endpointKey,nt as getDB,lt as useDatabaseApi};
|
|
28
|
+
${r.message}
|
|
29
|
+
`)}return global.typesense};async function un(){try{if(He){let e=await tr.get(new URL(He).origin);if(e?.data["typesense-health"]===!0)return ue&&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 fn(){if(ue&&console.info(`\u{1F3F3}\uFE0F INITIALIZING TYPESENSE SEARCH AGAINST ${He}`),!await un())throw new Error("TYPESENSE_URL service is not healthy.");let r=mn.map(t=>(ue&&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(",")),ue&&console.info("Typesense URL:",He,i),tr.get(He,{params:i}).then(n=>(ue&&(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=pn;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:f,dimension:p,report:g,all:h,noImage:_,includes:O,sort:B,direction:T="ASC",offset:P=0}=a,F=ot.find(E=>E.locales.includes(l))?.charset||"latin",z=d&&!isNaN(d)?d:20,q=ve(n,F!=="arabic");function K(E){return E.toJSON()}function w(E){let C=E.getContent(l);return {...E.toJSON(),locale:C.locale,name:C.name,attributes:C.attributes,keywords:C.keywords}}if(s){let E=await jr(),C=E[l]||E[er],D={query:q===""?"*":q,limit:z,variant:f,report:g,offset:P};return await C.search(D)}else {let E=[],C=await Be(e);if(n&&n!==""&&C[l]){let G=ve(n,F!=="arabic"),H={query:G,limit:z},Q=await C[l].search(H);if(s?E=Q.data.results.map(oe=>parseInt(oe.content_id,10)):E=Q.reduce((oe,ee)=>oe.concat(ee.result),[]),E=S(E),c&&C[c]){let ee=C[c].search(G).reduce((Oe,Ne)=>Oe.concat(Ne.result),[]);ee=S(ee),E=S([...E,...ee]);}}let D={...u?{visible:u}:{},..._?{image_id:{[Op.eq]:null}}:{},...f.length?{variant_id:f}:{},...p.length?{dimension_id:p}:{},...g.length?{report_id:g}:{}},$={locale:h?{[Op.ne]:null}:l},Y=[];n&&n!==""&&E.length&&B!=="report"?Y.push([literal(`array_position(array[${E.join(",")}], "content_id")`),"ASC"]):(B==="report"&&Y.push([literal(`COALESCE(NULLIF("report"."settings"->>'order', '')::INTEGER, 999999)`),"ASC"],[literal(`COALESCE(NULLIF("variant"."settings"->>'order', '')::INTEGER, 999999)`),"ASC"]),Y.push(["zvalue","DESC NULLS LAST"])),B&&B!=="name"&&B!=="report"&&Y.unshift([B,T.toUpperCase()]),n&&n!==""&&(D.content_id=E);let R=[{association:"contentByLocale",where:$,separate:true}];(O||B==="report")&&R.push({association:"report",attributes:["id","name","settings"]},{association:"dimension",attributes:["id","name","settings"]},{association:"variant",attributes:["id","slug","name","settings"]});let k={...D.visible?{visible:D.visible}:{},...D.noImage?{image_id:D.noImage}:{},...D.content_id?{content_id:D.content_id}:{}};if(!D.report_id&&!D.dimension_id&&!D.variant_id&&u){let H=(await t.findAll({attributes:["id"],where:{[Op.or]:[where(cast(json("settings.hide"),"boolean"),true)]}})).map(Q=>Q.id);H.length>0&&(D.report_id={[Op.notIn]:H},k.report_id=D.report_id);}let v=[],[M,V]=await Promise.all([r.findAll({limit:z,offset:P,where:D,include:R,order:Y,subQuery:false}),r.findAll({attributes:["variant_id",[fn$1("COUNT",col("variant_id")),"members_count"]],where:k,group:["variant_id"]})]),J=V.map(G=>G.toJSON());if(B==="name"){let G=T.toUpperCase()==="ASC"?1:-1;M.sort((H,Q)=>{let oe=H.getContent(er),ee=Q.getContent(er);return oe&&ee?oe.name>ee.name?1*G:-1*G:0});}let ye=m==="nested"?K:w;return v=M.map(ye),m!=="nested"&&v.forEach(G=>{let{name:H,keywords:Q,score:oe=.1,zvalue:ee}=G;if(H){let Oe=ve(H),Ne=oe,ir=n.length/Oe.length,cr=Oe.split("").reduce((Ft,lr,dr)=>(n.slice(0,dr),n.charAt(dr)===lr&&(Ft+=lr),Ft),"").length;Oe===n||Q&&Q.includes(n)?Ne=1e6:Oe.startsWith(n)?Ne*=20*ir:cr&&(Ne*=cr*ir),G.zvalue=Ne*2+ee;}}),{meta:{origin:"flexsearch",...Object.fromEntries(Object.entries(a).map(G=>[G[0],g$1(G[1])])),variantCount:J.reduce((G,H)=>(G[H.variant_id]=parseInt(H.members_count,10),G),{})},results:v}}}}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 g=l[p];await a.update({name:g.name,keywords:g.keywords},{where:{id:g.id,locale:g.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 f=0;f<c.contentByLocale.length;f++){let p=c.contentByLocale[f];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:qr(e),searchMember:We(e),updateMember:Jr(e),readMemberImage:Kr(e)}}var Ce={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$1("COUNT",col("members.id")),"members_count"]]},include:[{model:e,as:"members",attributes:[]}],group:["variant.id"]}],order:[["ordering","ASC"]]}),nt={include:[{association:"blocks",separate:true,...Ce}]},Mt=e=>({include:[{association:"dimensions",separate:true,...at(e)},{association:"sections",separate:true,...nt}]});var X=[{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:Ce.include})).toJSON()}async function i(d){let m=d.map(f=>{let{locales:p,...g}=f;return {...g,consumers:[],inputs:[],contentByLocale:p.map(_=>({locale:_}))}});return (await r.bulkCreate(m,{include:Ce.include})).map(f=>f.toJSON())}async function s({id:d,include:m}={}){let u=d==null?[]:[].concat(d),f=await r.findAll({where:u.length>0?{id:u}:void 0,include:m?Ce.include:void 0});if(u.length===0||f.length===u.length)return f.map(h=>h.toJSON());let p=f.map(h=>h.id),g=u.filter(h=>!p.includes(h));throw new ha$1(404,`Block(id=[${g}]) does not exist.`)}async function n(d){let{id:m,contentByLocale:u,consumers:f,inputs:p,inputAction:g,...h}=d,_=await r.findByPk(m,{include:Ce.include,rejectOnEmpty:true});if(_.set(h),u){let O=Object.values(u);await t.bulkCreate(O,{updateOnDuplicate:["content"]});}return g&&(g.operation==="create"?await o.create(g.input):await o.destroy({where:g.input})),await _.save(),await _.reload(),_.toJSON()}async function l(d){let m=d.map(p=>{let{id:g,contentByLocale:h,consumers:_,inputs:O,inputAction:B,...T}=p;return {id:g,contentByLocale:h,inputAction:B,...T}}),u=await r.findAll({where:{id:{[Op.or]:m.map(p=>p.id)}},include:Ce.include}),f=[];for(let p of u){let g=m.filter(h=>h.id===p.id);for(let h=0;h<g.length;h++){let _=g[h],{id:O,contentByLocale:B,inputAction:T,...P}=_;if(T&&(T.operation==="create"?await o.create(T.input):await o.destroy({where:T.input})),B){let U=Object.values(B);await t.bulkCreate(U,{updateOnDuplicate:["content"]});}p.set(P),await p.save(),await p.reload(),f.push(p.toJSON());}}return f}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(f=>f.toJSON());let m=d.map(f=>f.id),u=c.filter(f=>!m.includes(f));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(f=>f.toJSON());let m=d.map(f=>f.id),u=l.filter(f=>!m.includes(f));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:An}=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:Mt(t).include})).toJSON()}async function a({id:n,include:l,locales:c=An}={}){let m=(n==null?[]:[].concat(n)).reduce((g,h)=>(g.includes(h)||g.push(h),g),[]),u=await r.findAll({where:m.length>0?{id:m}:void 0,include:l?Mt(t).include?.filter(g=>typeof l=="string"?g.association===l:l):void 0});if(m.length===0||u.length===m.length)return u.map(g=>{let h=g.toJSON();return {...h,sections:h.sections.map(_=>({..._,blocks:_.blocks.map(O=>({...O,contentByLocale:Object.keys(O.contentByLocale).reduce((B,T)=>({...B,...[...c,"logic"].includes(T)?{[T]:O.contentByLocale[T]}:{}}),{})}))}))}});let f=u.map(g=>g.id),p=m.filter(g=>!f.includes(g));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:Mt(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,f=await l({dimension:d,slug:u});return (await t.create({dimension_id:d,name:m,slug:f.valid?f.candidate:f.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$1("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),f=d.filter(p=>!u.includes(p));throw new ha$1(404,`Variant(id=${f}) 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 f=m.settings.doIngest;return m.settings.doIngest=false,await u.update(m),f&&(await r.ingestMembers(u),await Be(e,true)),await u.reload(),u.toJSON()}async function n(c){let d=await t.findByPk(c,{rejectOnEmpty:true});return await d.destroy(),Be(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$1("COUNT",col("id")),"slugCount"]],where:{dimension_id:{[Op.ne]:c}},group:"slug"}).then(g=>Object.fromEntries(g.map(h=>{let _=h.getDataValue("slugCount");return [h.slug,Number.parseInt(`${_}`,10)]}))),u=d,f=1,p=true;for(;m[u];)p=false,u=`${d}-${f}`,f++;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)},En=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:En},{type:"thumb",res:In}];for(let a of o){let i=await kn(t).resize(a.res).toFormat("webp").webp({lossless:true}).toBuffer().catch(so);await e.image.update({[a.type]:i},{where:{id:r}}).catch(so);}},re=vn;var io=["4","5","7","8","9","10"],xn=io.join(),{locales:Tn}=a(),fe;if(process.env.FLICKR_API_KEY)try{fe=new Cn(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(!fe)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 fe.photos.search({text:o,license:xn,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(fe.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(f=>f.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/${Bn.int_to_base58(o)}`;if(!fe)throw new Error("Flickr API Key not configured");let n=await fe.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 fe.photos.getSizes({photo_id:o}).then(P=>P.body),f=u.sizes.size.find(P=>parseInt(P.width,10)>=1600);if(f||(f=u.sizes.size.find(P=>parseInt(P.width,10)>=1e3)),f||(f=u.sizes.size.find(P=>parseInt(P.width,10)>=500)),!f||!f.source)throw new Error("Flickr Source Error, try another image.");let p=await fetch(f.source);if(!p.ok)throw new Error("Flickr Error retrieving image, try another image.");let g=await p.arrayBuffer(),_=(await fe.photos.licenses.getInfo().then(P=>P.body.licenses.license)).find(P=>P.id===parseInt(n.photo.license,10)),O={url:s,author:n.photo.owner.realname||n.photo.owner.username,license:_?`${_.name}: ${_.url}`:""},B=await e.image.create(O);await e.image_content.destroy({where:{id:B.id}});let T=Tn.map(P=>({id:B.id,locale:P,meta:n.photo.title._content}));await e.image_content.bulkCreate(T),await e.search.update({image_id:B.id},{where:{content_id:t}}),await re(e,B.id,g);}let m=await e.search.findOne({where:{content_id:t},include:X});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:X}).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:On}=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(g=>g.data),u={url:l,author:i.user.name||i.user.username,license:"Free Unsplash license: https://unsplash.com/license"},f=await e.image.create(u);await e.image_content.destroy({where:{id:f.id}});let p=On.map(g=>({id:f.id,locale:g,meta:i.description||i.alt_description}));await e.image_content.bulkCreate(p),await e.search.update({image_id:f.id},{where:{content_id:t}}),await re(e,f.id,m);}let d=await e.search.findOne({where:{content_id:t},include:X});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:Ln}=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 Nn.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=Ln.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 re(e,d.id,l);}let n=await e.search.findOne({where:{content_id:t},include:X});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:Un}=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(g=>g.data),u={url:l,author:i.creator_name,license:"ADOBE, TO-DO"},f=await e.image.create(u);await e.image_content.destroy({where:{id:f.id}});let p=Un.map(g=>({id:f.id,locale:g,meta:i.title||i.description}));await e.image_content.bulkCreate(p),await e.search.update({image_id:f.id},{where:{content_id:t}}),await re(e,f.id,m);}let d=await e.search.findOne({where:{content_id:t},include:X});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:Fn}=a(),Ot=process.env.PIXABAY_API_KEY,Ro="https://pixabay.com/api/";async function So(e,r){try{let t={prompt:r.prompt||"",page:r.page||1};if(!Ot)throw new Error("Pixabay API Key not configured");let o=encodeURIComponent(t.prompt),a=`${Ro}?key=${Ot}&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 wo(e,r){try{let{content_id:t,image_id:o}=r,a={content_id:g$1(`${t}`)||"",id:g$1(`${o}`)||""};if(!Ot)throw console.warn("Pixabay is not initialized. Check the credentials"),new Error("Pixabay is not initialized. Check the credentials");let i=`${Ro}?key=${Ot}&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 g=await tr.get(p,{responseType:"arraybuffer"}).then(B=>B.data),h={url:m,author:c.user||`Pixabay User ${c.user_id}`,license:"Free Pixabay License: https://pixabay.com/service/license/"},_=await e.image.create(h);await e.image_content.destroy({where:{id:_.id}});let O=Fn.map(B=>({id:_.id,locale:B,meta:c.tags||c.description||""}));await e.image_content.bulkCreate(O),await e.search.update({image_id:_.id},{where:{content_id:t}}),await re(e,_.id,g);}let f=await e.search.findOne({where:{content_id:t},include:X});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:{...a},results:l}}catch(t){throw console.error(t),new Error("Error in save pixabay provider")}}var zn={local:po,flickr:lo,unsplash:fo,upload:go,adobe:bo,pixabay:wo};function xe(e,r){let t=zn[r];if(!t)throw new ha$1(500,`Wrong provider dbImageSaveFactory.ts: ${r}`);return ia$1(o=>t(e,o))}var Gn={local:mo,flickr:co,unsplash:uo,adobe:yo,pixabay:So};function Ye(e,r){let t=Gn[r];if(!t)throw new ha$1(500,`Wrong provider dbImageSearchFactory.ts: ${r}`);return ia$1(o=>t(e,o))}var Hn=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$1("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=>({...Hn(c.toJSON()),mode:c.dimensions.length===1?w.UNILATERAL:w.MULTILATERAL}))}}}function _o(e){return async()=>(await Be(e,true),{error:false})}var{locales:Wn,localeDefault:Yn}=a(),Qn=(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},Zn=(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=Wn.includes(a.locale)?a.locale:Yn,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,f=Zn(d,u);return {meta:{...c.meta,origin:"flexsearch",format:i},results:Qn(f,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 ko(){return async e=>{try{let{target:r}=e;return {target:r}}catch(r){throw new ha$1(r.response?.status||500,r.message)}}}function es(e,r){return e.some(t=>r.includes(`role.${t}`))}function Eo(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")||es(o.roles,s.settings.access))).map(s=>s.id);return i=i.concat(j(i,a)),{params:{...o},data:a.filter(s=>i.includes(s.id))}}}function Io(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(i=>i&&i.sections&&Array.isArray(i.sections)?i.sections.reduce((s,n)=>{let l=n.blocks.map(c=>{let d=c.toJSON();return d.inputs=d.inputs.map(m=>m.id),d.consumers=d.consumers.map(m=>m.id),d});return s.concat(l)},[]):[]);return {params:{...o},data:a}}}var as=Object.keys(or).filter(e=>e.indexOf("Icon")===0);async function vo(){return {meta:{provider:"tabler"},results:as}}async function Bo(e){let r=or[e.name]?or[e.name]:()=>"";return renderToString(createElement(r))}var ns={tabler:vo};function Co(e){let r=ns[e];if(!r)throw new ha$1(500,`Wrong provider dbListIconsFactory.ts: ${e}`);return ia$1(()=>r())}var ss={tabler:Bo};function xo(e){return ia$1(r=>{let t=ss[e];if(!t)throw new ha$1(500,`Wrong provider dbReadIconFactory.ts: ${r.provider}`);return t({name:r.name,provider:e})})}function To(){return e;async function e(){return {secrets:Y()}}}function Te(e,r,t){return Ie().then(o=>{Object.assign(t,Qe(o));})}function Qe(e,r){let t={},o=Re(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(Sr()),t.readUser=ia$1(wr()),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:xe(e,"flickr"),imageLocalSave:xe(e,"local"),imageUnsplashSave:xe(e,"unsplash"),imageUploadSave:xe(e,"upload"),imageAdobeSave:xe(e,"adobe"),imagePixabaySave:xe(e,"pixabay"),urlProxy:xt(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(ko()),readPrivateBlocks:ia$1(Eo(e)),readClientSideBlocks:ia$1(Io(e)),listTablerIcons:Co("tabler"),readTablerIcon:xo("tabler"),readEnvSecrets:ia$1(To())}}async function ar(e){try{let r=new is.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 he(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(f=>m[f]);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:ba(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(f=>m[f]);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 [...he(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 he(e,"datasource").map(t=>({...t,roleRequired:[a$1.EDITOR]}))}function De(e,r){let t=`image${ka(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(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 Oo(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 Lo(e){let{searchReport:r}=e;return a$2("GET","search/reports",t=>{let o=ls(t.query);return r(o)})}function ls(e){return {...f$1(e),format:c$1(e.format)[0]}}function Uo(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 Fo(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(g=>g.id===n):[]);d&&d.mode===w.UNILATERAL&&d.dimensions.forEach(p=>{p.variants.forEach(g=>{c.push({prefix:l,variantId:g.id,variantSlug:g.slug});});});let m=await t({profilePrefix:l,reportId:n,variantPaths:c}),u=[],f=0;return m.ok&&(f=m.data.paths.length,u=m.data.paths.slice(0,5),Promise.all(m.data.paths.map(p=>{let g;try{g=a.revalidate(p,{unstable_onlyGenerated:!0});}catch(h){console.error("error",p,h);}return g}))),{ok:!0,status:200,data:{reportId:i,revalidated:f,samples:u}}}catch(n){throw console.error(n),new ha$1(500,"Error revalidating")}},[a$1.EDITOR])}function zo(){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 Me(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:ms}=a(),Go=Me();function Vo(e){let{readPrivateBlocks:r}=e;return a$2("POST","read/blocks/private",(t,o,a)=>{let{userToken:i}=t.body,s=null;if(i&&Go)try{let c=ds.verify(i,Go);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||ms,roles:n,section_id:t.body.section_id||[]};return r(l)})}var{localeDefault:ps}=a();function qo(e){let{readClientSideBlocks:r}=e;return a$2("GET","read/section/client",(t,o,a)=>{let i={report_id:b$2(t.query.report_id),locale:t.query.locale||ps,section_id:b$2(t.query.section_id)};return r(i)})}function Ko(e){let{readEnvSecrets:r}=e;return a$2("GET","read/secrets",()=>r({}),[a$1.EDITOR])}function $o(e){let{searchRole:r}=e;return a$2("GET","auth/search/roles",(t,o)=>r(""),[a$1.EDITOR,a$1.ADMIN])}function jo(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 Jo(e){let{readUser:r}=e;return a$2("GET","auth/read/user",t=>r(t.query.user_id),[a$1.ADMIN])}function Ho(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 Wo(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 us(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 Yo(){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 us()}}})}function Qo(e,r){let t=`list${ka(r)}Icons`,o=e[t];return a$2("GET",`list/icons/${r}`,async()=>o({}),[a$1.EDITOR])}function Zo(e,r){let t=`read${ka(r)}Icon`,o=e[t];return a$2("GET",`read/icons/${r}/icon.svg`,async a=>o({provider:r,name:a.query.name}))}function Xo(){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 fs().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 hs=Me();function ys(e){let r={email:e.user.email,name:e.user.name,roles:e.user.bespoke_roles||[]};return ds.sign(r,hs,{expiresIn:"1min"})}function ea(){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:ys(t)}}}catch(o){throw console.error("Error generating token:",o),new ha$1(500,"Internal Server Error")}})}var Rs=Me(),Ss=e=>!!ds.verify(e,Rs);function ta(){return a$2("POST","users/validate-token",async(e,r)=>{let{token:t}=e.body;try{return Ss(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 As=pe();function nr(e,r){return `${e.toUpperCase()} ${r.toLowerCase()}`}function Ps(e,r){let t=Qe(e,r);return Object.fromEntries([...he(t,"block"),...he(t,"dimension"),...he(t,"formatter"),...he(t,"report"),...he(t,"section"),...Mo(t),...Do(t),...d(t),Lo(t),Oo(t),No(t),De(t,"flickr"),De(t,"local"),De(t,"unsplash"),De(t,"upload"),De(t,"adobe"),De(t,"pixabay"),Ze(t,"flickr"),Ze(t,"local"),Ze(t,"unsplash"),Ze(t,"adobe"),Ze(t,"pixabay"),Uo(t),$o(t),jo(t),Jo(t),Ho(t),Wo(t),Fo(t),zo(),Vo(t),qo(t),Yo(),Qo(t,"tabler"),Zo(t,"tabler"),Xo(),Ko(t),ea(),ta()].map(({handler:o,method:a,path:i,roleRequired:s})=>[nr(a,i),{handler:o,roleRequired:s}]))}function ks(e){let r=Ie().then(t=>Ps(t,e));return async function(o,a){await ws(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 Z(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 _s(m.data),f=Buffer.byteLength(m.data);a.writeHead(m.status,{"Content-Type":u?u.mime:"image/jpeg","Content-Length":f.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=>{As&&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 Es=e=>{let r=e;return async function(t,o){let a=await r({test:"pala"});return o.json(a)}},Is=Es;function Cs(e){let r=process.cwd(),t=Bs.resolve(r.endsWith("/example")?r.replace("/example",""):r,"package-lock.json"),o;try{let a=JSON.parse(Nn.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 xs(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 Z(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(_=>d.has(_)))return {redirect:{destination:"/",permanent:false}};let u=l.query[t],[f]=Array.isArray(u)?u:[u];await n(Te);let p=await Cs("@datawheel/bespoke"),g=await o(s,l);if("redirect"in g)return {props:g};f==="reports"&&(ra(l.query[t])?await Promise.all([n(la$1("formatter",{})),n(la$1("datasource",{include:true})),n(la$1("report",{id:ra(l.query[t]),include:true})),fa$1.setStatus({isCMS:true})]):await Promise.all([n(la$1("report",{include:"dimensions"})),fa$1.setStatus({isCMS:true})])),f==="metadata"&&await n(la$1("report",{include:"dimensions"})),f==="formatters"&&await n(la$1("formatter",{})),f==="datasources"&&await n(la$1("datasource",{include:true}));let h=await a(s,l);return {props:{...g,...h,bespokeVersion:p,session:c}}}})}function ra(e){if(e==null||e==="")return;let[,r]=Array.isArray(e)?e:[e];return Number.parseInt(r)||void 0}var Ts=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,g)=>p.dimension_ordering>g.dimension_ordering?1:-1).reduce((p,g,h)=>(p[g.variant_slug]=h,p),{}),u=e.reduce((p,g,h)=>(p[g.variantSlug]=h,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=Ts;function Ds(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 Ms(e$1){let{pathSegmentsKey:r="bespoke"}=e$1||{};try{return bb.getStaticProps(t=>{let{dispatch:o}=t;return async a=>{await o(Te);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(w){return console.error("[Bespoke slug validation Failed]: Return 404:",w.message,`[${s}] -> /${l.map(E=>`${E.variantSlug}/${E.memberSlug}`).join("/")}`),{notFound:!0}}o(ta$1.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(w=>w.report_id),include:!0,locales:[s]}))]);let d=t.getState(),m=e(d),u=f(d),f$1=k(m,s),p=c(d),h={...b(d)},_={},O=p.filter(w=>w.settings[C.CLIENT_SIDE]).map(w=>w.id),B=Object.values(h).filter(w=>!O.includes(w.section_id)||w.type===z.SECTION_FLAG||w.type===z.GENERATOR||w.consumers?.some(D=>{let $=h[D];return $&&$.section_id!==w.section_id})?!1:!w.consumers?.some(D=>{let $=h[D];return $&&$.section_id===w.section_id&&$.type===z.GENERATOR})).map(w=>w.id);B.forEach(w=>{delete h[w];}),await o(qa(B)),Object.values(h).forEach(w=>{if(O.includes(w.section_id)&&w.type===z.GENERATOR){let E=w.consumers?.filter(C=>!B.includes(C))||[];h[w.id]={...w,_clientSideGenerator:!0,_requiredByConsumers:E.length>0,inputs:w.inputs?.filter(C=>!B.includes(C))||[],consumers:E};}});let T=Object.values(h).reduce((w,E)=>("access"in E.settings&&!["public","guest"].some(C=>!E.settings.access||E.settings.access.includes(C))&&w.push(E.id),w),[]),P=T.filter(w=>h[w].settings[C.FALLBACK]),U=Array.from(new Set([...P,...j(P,Object.values(h))])),F=T.filter(w=>[z.SELECTOR,z.MULTIHIERARCHY_SELECTOR].includes(h[w].type)),z$1=Array.from(new Set([...F,...j(F,Object.values(h))]));T=Array.from(new Set([...T,...U,...z$1,...j(T,Object.values(h))])),T.forEach(w=>{P.includes(w)?(_[w]={...h[w],type:z.FALLBACK,original_type:h[w].type},delete h[w]):F.includes(w)&&(_[w]={...h[w],settings:{...h[w].settings,[C.DISABLED]:!0}},delete h[w]),z$1.includes(w)||delete h[w];}),await o(qa(T.filter(w=>!z$1.includes(w)))),await o(ra$1(_));let q={...da$1(c$1.results),locale:s,...X$1()},K=async w=>await o(ma$1(w));return await aa({...h,..._},p,void 0,f$1,{locale:s,query:n,variables:q},void 0,K,"report",u,void 0).then(async w=>{let E=Object.keys({...h,..._}).reduce((C,D)=>(w.variables[D]&&w.status[D]||C.push(D),C),[]);await o(qa(E)),await o(ga$1.setVariableChange({...w,attributes:q})),await o(sa());}),{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 Os(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(([R])=>R.match(/selector\d+id/)));if(!i&&!s)return {notFound:!0};let l=Number(i);await o(Te);let c$1=new Date().toISOString(),{locale:d=ea$1,params:m={},req:u}=a,f$1=Array.from(sr(m[r])),p;try{p=await Ut(f$1,o,ma$1,pa$1,d);}catch(R){return console.error("[Bespoke slug validation Failed]: Return 404:",R.message,`/${d}/${u.url}`),{notFound:!0}}o(ta$1.setPreviews(p.results)),await Promise.all([o(la$1("formatter",{})),o(la$1("datasource",{include:!0})),o(la$1("report",{id:p.results.map(R=>R.report_id),include:!0,locales:[d]}))]);let g=t.getState(),h=e(g),_=f(g),O=k(h,d),B=c(g).filter(R=>R.id===l),P={...b(g)},U={},F=B.filter(R=>R.settings[C.CLIENT_SIDE]).map(R=>R.id),z$1=Object.values(P).filter(R=>!F.includes(R.section_id)||R.type===z.GENERATOR||R.consumers?.some(M=>{let V=P[M];return V&&V.section_id!==R.section_id})?!1:!R.consumers?.some(M=>{let V=P[M];return V&&V.section_id!==R.section_id&&V.type===z.GENERATOR})).map(R=>R.id);z$1.forEach(R=>{delete P[R];}),await o(qa(z$1)),Object.values(P).forEach(R=>{if(F.includes(R.section_id)&&R.type===z.GENERATOR){let k=R.consumers?.filter(v=>!z$1.includes(v))||[];P[R.id]={...R,_clientSideGenerator:!0,_requiredByConsumers:k.length>0,inputs:R.inputs?.filter(v=>!z$1.includes(v))||[],consumers:k};}});let q=Object.values(P).reduce((R,k)=>("access"in k.settings&&!["public","guest"].some(v=>!k.settings.access||k.settings.access.includes(v))&&R.push(k.id),R),[]),K=q.filter(R=>P[R].settings[C.FALLBACK]),w=Array.from(new Set([...K,...j(K,Object.values(P))])),E=q.filter(R=>[z.SELECTOR,z.MULTIHIERARCHY_SELECTOR].includes(P[R].type)),C$1=Array.from(new Set([...E,...j(E,Object.values(P))]));q=Array.from(new Set([...q,...w,...C$1,...j(q,Object.values(P))])),q.forEach(R=>{K.includes(R)?(U[R]={...P[R],type:z.FALLBACK,original_type:P[R].type},delete P[R]):E.includes(R)&&(U[R]={...P[R],settings:{...P[R].settings,[C.DISABLED]:!0}},delete P[R]),C$1.includes(R)||delete P[R];}),await o(qa(q.filter(R=>!C$1.includes(R)))),await o(ra$1(U));let D={...da$1(p.results),locale:d,...X$1()},$=async R=>await o(ma$1(R));await aa({...P,...U},B,void 0,O,{locale:d,query:{...m,...n},variables:D},void 0,$,"section",_,void 0).then(async R=>{let k=Object.keys({...P,...U}).reduce((v,M)=>(R.variables[M]&&R.status[M]||v.push(M),v),[]);await Promise.all([o(qa(k)),o(ga$1.setVariableChange({...R,attributes:D})),o(sa())]);});let Y=Object.keys({...P,...U}).filter(R=>i&&s?R!==s:P[R]&&P[R].section_id!==l);return await o(qa(Y)),{props:{buildTime:c$1}}}})}catch(t){return console.error("ERROR SSR",t),async()=>({notFound:true})}}
|
|
30
|
+
export{Os as BespokeEmbedServerSideProps,ks as BespokeEndpointNextJsHandlerFactory,Z as BespokeGetSession,la as BespokeHandleAuth,xs as BespokeManagerServerSideProps,Ds as BespokeRendererStaticPaths,Ms as BespokeRendererStaticProps,ya as BespokeSearchUsersByMetadata,ma as BespokeUpdateCurrentUserAppMetadata,ua as BespokeUpdateCurrentUserMetadata,ga as BespokeWithApiRoleAuthRequired,Is as ReportCrosswalkHandler,Qe as dbApiFactory,nr as endpointKey,Ie as getDB,Te as useDatabaseApi};
|