@authhero/kysely-adapter 12.3.0 → 12.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/kysely-adapter.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});var e=Object.defineProperty,t=(t,n)=>{let r={};for(var i in t)e(r,i,{get:t[i],enumerable:!0});return n||e(r,Symbol.toStringTag,{value:`Module`}),r};let n=require("nanoid"),r=require("@authhero/adapter-interfaces/sql"),i=require("kysely"),a=require("@authhero/adapter-interfaces"),o=require("hono/http-exception");require("@hono/zod-openapi");let s=require("kysely/migration");var c=17,l={organization:`org_`,connection:`con_`,action:`act_`,action_version:`ver_`,hook:`h_`,hook_code:`hc_`,rule:`rul_`,resource_server:`api_`,guardian_factor:`gfa_`,invite:`inv_`};function u(e){let t=(0,n.customAlphabet)(`0123456789abcdefghijklmnopqrstuvwxyz`,c)();return`${l[e]}${t}`}function d(){return u(`organization`)}function f(){return u(`connection`)}function p(){return u(`action`)}function m(){return u(`action_version`)}function h(){return u(`hook`)}function g(){return u(`resource_server`)}function _(){return u(`hook_code`)}function v(){return u(`invite`)}function y(e){return async(t,n,r)=>{let i=r?.importMetadata,a=Date.now(),o=i?.created_at?new Date(i.created_at).getTime():a,s=i?.updated_at?new Date(i.updated_at).getTime():o,c=i?.id??p();return await e.insertInto(`actions`).values({id:c,tenant_id:t,name:n.name,code:n.code,runtime:n.runtime||null,status:`built`,secrets:n.secrets?JSON.stringify(n.secrets):null,dependencies:n.dependencies?JSON.stringify(n.dependencies):null,supported_triggers:n.supported_triggers?JSON.stringify(n.supported_triggers):null,is_system:+!!n.is_system,inherit:+!!n.inherit,created_at_ts:o,updated_at_ts:s}).execute(),{id:c,tenant_id:t,name:n.name,code:n.code,runtime:n.runtime,status:`built`,secrets:n.secrets?.map(e=>({name:e.name})),dependencies:n.dependencies,supported_triggers:n.supported_triggers,is_system:n.is_system??!1,inherit:n.inherit??!1,created_at:new Date(o).toISOString(),updated_at:new Date(s).toISOString()}}}function b(e){if(e)try{return JSON.parse(e)}catch{return}}function ee(e){return async(t,n)=>{let i=await e.selectFrom(`actions`).where(`actions.tenant_id`,`=`,t).where(`actions.id`,`=`,n).selectAll().executeTakeFirst();if(!i)return null;let{created_at_ts:a,updated_at_ts:o,deployed_at_ts:s,secrets:c,dependencies:l,supported_triggers:u,is_system:d,inherit:f,tenant_id:p,...m}=i,h=(0,r.convertDatesToAdapter)({created_at_ts:a,updated_at_ts:o},[`created_at_ts`,`updated_at_ts`]);return{...m,tenant_id:t,...h,runtime:m.runtime??void 0,status:m.status||`built`,deployed_at:s?new Date(Number(s)).toISOString():void 0,secrets:b(c),dependencies:b(l),supported_triggers:b(u),is_system:!!d,inherit:!!f}}}function te(e){return i.sql`coalesce(${i.sql.ref(e.column)}, ${i.sql.lit(e.defaultValue)})`}function x(e){return e.replace(/\\([\\"+\-!(){}[\]^~*?:/&|])/g,`$1`)}function S(e,t,n,r,i=[],a={}){let o=new Set(i),{ref:s}=e.dynamic,c=e=>{let t=a[e];return t===void 0?e:typeof t==`string`?t:t.column},l=e=>{let t=a[e];return t===void 0||typeof t==`string`?s(t??e):te(t)},u=(e,t)=>{let n=a[e];if(n===void 0||typeof n==`string`)return t;let r=Number(t);return Number.isFinite(r)?r:t},d=n.split(/ OR /i);if(d.length>1)return t.where(e=>{let t=d.map(t=>{let n=t.trim().match(/^([^:]+):(.+)$/);if(n){let[,t,r]=n;if(!t||!r)return null;let i=t.trim(),a=x(r.replace(/^"(.*)"$/,`$1`).trim());return o.has(i)?e(s(c(i)),`like`,`%${a}%`):e(l(i),`=`,u(i,a))}return null}).filter(e=>e!==null);return e.or(t)});let f=[],p=``,m=!1;for(let e=0;e<n.length;e++){let t=n[e];t===`"`?(m=!m,p+=t):t===` `&&!m?p.trim()&&(f.push(p.trim()),p=``):p+=t}return p.trim()&&f.push(p.trim()),f.filter(e=>e!==`AND`).map(e=>e.replace(/^([^:]+)=/g,`$1:`)).map(e=>{let t=e.startsWith(`-`),n=null,r=``,i=!1,a;if(e.startsWith(`-_exists_:`))n=e.substring(10),i=!0,t=!0;else if(e.startsWith(`_exists_:`))n=e.substring(9),i=!0,t=!1;else if(e.includes(`:`)){let o=t?e.substring(1):e,s=o.indexOf(`:`);n=o.substring(0,s),r=o.substring(s+1),i=!1,r.startsWith(`>=`)?(a=`>=`,r=r.substring(2)):r.startsWith(`>`)?(a=`>`,r=r.substring(1)):r.startsWith(`<=`)?(a=`<=`,r=r.substring(2)):r.startsWith(`<`)?(a=`<`,r=r.substring(1)):a=`=`,r.startsWith(`"`)&&r.endsWith(`"`)&&r.length>1&&(r=r.slice(1,-1)),r=x(r)}else n=null,r=x(e),i=!1;return{key:n,value:r,isNegation:t,isExistsQuery:i,operator:a}}).forEach(({key:e,value:n,isNegation:i,isExistsQuery:a,operator:d})=>{if(e){let r=s(c(e)),f=l(e),p=u(e,n);if(a)t=i?t.where(r,`is`,null):t.where(r,`is not`,null);else if(o.has(e)&&d===`=`)t=t.where(r,i?`not like`:`like`,`%${n}%`);else if(i)switch(d){case`>`:t=t.where(f,`<=`,p);break;case`>=`:t=t.where(f,`<`,p);break;case`<`:t=t.where(f,`>=`,p);break;case`<=`:t=t.where(f,`>`,p);break;default:t=t.where(f,`!=`,p)}else t=t.where(f,d,p)}else n&&(t=t.where(e=>e.or(r.map(t=>t===`user_id`?e(s(c(t)),`=`,n):e(s(c(t)),`like`,`%${n}%`)))))}),t}function C(e){if(e)try{return JSON.parse(e)}catch{return}}function ne(e){return async(t,n={})=>{let{page:i=0,per_page:a=50,include_totals:o=!1,q:s}=n,c=e.selectFrom(`actions`).where(`actions.tenant_id`,`=`,t);s&&(c=S(e,c,s,[`name`]));let l=(await c.offset(i*a).limit(a).selectAll().execute()).map(e=>{let{created_at_ts:n,updated_at_ts:i,deployed_at_ts:a,secrets:o,dependencies:s,supported_triggers:c,is_system:l,inherit:u,tenant_id:d,...f}=e,p=(0,r.convertDatesToAdapter)({created_at_ts:n,updated_at_ts:i},[`created_at_ts`,`updated_at_ts`]);return{...f,tenant_id:t,...p,runtime:f.runtime??void 0,status:f.status||`built`,deployed_at:a?new Date(Number(a)).toISOString():void 0,secrets:C(o),dependencies:C(s),supported_triggers:C(c),is_system:!!l,inherit:!!u}});if(!o)return{actions:l,start:0,limit:0,length:0};let{count:u}=await c.select(e=>e.fn.countAll().as(`count`)).executeTakeFirstOrThrow();return{actions:l,start:i*a,limit:a,length:(0,r.getCountAsInt)(u)}}}function re(e){if(!e)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t:[]}catch{return[]}}function ie(e){return async(t,n,r)=>{let i={updated_at_ts:Date.now()};if(r.name!==void 0&&(i.name=r.name),r.code!==void 0&&(i.code=r.code),r.runtime!==void 0&&(i.runtime=r.runtime),r.secrets!==void 0){let a=await e.selectFrom(`actions`).where(`actions.id`,`=`,n).where(`actions.tenant_id`,`=`,t).select(`secrets`).executeTakeFirst(),o=new Map(re(a?.secrets).map(e=>[e.name,e])),s=r.secrets.map(e=>e.value===void 0?{name:e.name,value:o.get(e.name)?.value}:e);i.secrets=JSON.stringify(s)}if(r.dependencies!==void 0&&(i.dependencies=JSON.stringify(r.dependencies)),r.supported_triggers!==void 0&&(i.supported_triggers=JSON.stringify(r.supported_triggers)),r.status!==void 0&&(i.status=r.status),r.deployed_at!==void 0){let e=new Date(r.deployed_at).getTime();Number.isFinite(e)&&(i.deployed_at_ts=e)}return r.is_system!==void 0&&(i.is_system=+!!r.is_system),r.inherit!==void 0&&(i.inherit=+!!r.inherit),(await e.updateTable(`actions`).set(i).where(`actions.id`,`=`,n).where(`actions.tenant_id`,`=`,t).executeTakeFirst()).numUpdatedRows>0}}function ae(e){return async(t,n)=>(await e.deleteFrom(`actions`).where(`actions.id`,`=`,n).where(`actions.tenant_id`,`=`,t).executeTakeFirst()).numDeletedRows>0}function oe(e){return{create:y(e),get:ee(e),list:ne(e),update:ie(e),remove:ae(e)}}function se(e){return async(t,n)=>{let r=Date.now();return await e.insertInto(`action_executions`).values({id:n.id,tenant_id:t,trigger_id:n.trigger_id,status:n.status,results:JSON.stringify(n.results),logs:n.logs?JSON.stringify(n.logs):null,created_at_ts:r,updated_at_ts:r}).execute(),{id:n.id,tenant_id:t,trigger_id:n.trigger_id,status:n.status,results:n.results,logs:n.logs,created_at:new Date(r).toISOString(),updated_at:new Date(r).toISOString()}}}function ce(e){if(e)try{return JSON.parse(e)}catch{return}}function le(e){return async(t,n)=>{let r=await e.selectFrom(`action_executions`).where(`action_executions.tenant_id`,`=`,t).where(`action_executions.id`,`=`,n).selectAll().executeTakeFirst();return r?{id:r.id,tenant_id:r.tenant_id,trigger_id:r.trigger_id,status:r.status,results:ce(r.results)??[],logs:ce(r.logs),created_at:new Date(Number(r.created_at_ts)).toISOString(),updated_at:new Date(Number(r.updated_at_ts)).toISOString()}:null}}var w=5e4;async function ue(e){try{return await i.sql`SELECT VERSION()`.execute(e),`mysql`}catch{return`sqlite`}}function de(e){let t;return async n=>{let r=Date.parse(n);if(Number.isNaN(r))throw Error(`Invalid olderThan date: ${n}`);if(t??=await ue(e),t===`sqlite`){let t=await e.deleteFrom(`action_executions`).where(`created_at_ts`,`<`,r).executeTakeFirst();return Number(t.numDeletedRows)}let i=0,a=w;for(;a>=w;){let t=await e.deleteFrom(`action_executions`).where(`created_at_ts`,`<`,r).limit(w).executeTakeFirst();a=Number(t.numDeletedRows),i+=a}return i}}function fe(e){return{create:se(e),get:le(e),cleanup:de(e)}}function T(e){if(e)try{return JSON.parse(e)}catch{return}}function pe(e){let{created_at_ts:t,updated_at_ts:n,secrets:r,dependencies:i,supported_triggers:a,deployed:o,runtime:s,...c}=e;return{...c,runtime:s??void 0,deployed:!!o,secrets:T(r),dependencies:T(i),supported_triggers:T(a),created_at:new Date(Number(t)).toISOString(),updated_at:new Date(Number(n)).toISOString()}}function me(e){return{async create(t,n,r){let i=r?.importMetadata,a=Date.now(),o=i?.created_at?new Date(i.created_at).getTime():a,s=i?.updated_at?new Date(i.updated_at).getTime():i?o:a,c=i?.id??m(),l=n.deployed!==!1,u=await e.transaction().execute(async e=>{let r=((await e.selectFrom(`action_versions`).where(`tenant_id`,`=`,t).where(`action_id`,`=`,n.action_id).select(`number`).orderBy(`number`,`desc`).limit(1).executeTakeFirst())?.number??0)+1;return l&&await e.updateTable(`action_versions`).set(i?{deployed:0}:{deployed:0,updated_at_ts:a}).where(`tenant_id`,`=`,t).where(`action_id`,`=`,n.action_id).execute(),await e.insertInto(`action_versions`).values({id:c,tenant_id:t,action_id:n.action_id,number:r,code:n.code,runtime:n.runtime||null,secrets:n.secrets?JSON.stringify(n.secrets):null,dependencies:n.dependencies?JSON.stringify(n.dependencies):null,supported_triggers:n.supported_triggers?JSON.stringify(n.supported_triggers):null,deployed:+!!l,created_at_ts:o,updated_at_ts:s}).execute(),r});return{id:c,tenant_id:t,action_id:n.action_id,number:u,code:n.code,runtime:n.runtime,secrets:n.secrets,dependencies:n.dependencies,supported_triggers:n.supported_triggers,deployed:l,created_at:new Date(o).toISOString(),updated_at:new Date(s).toISOString()}},async get(t,n,r){let i=await e.selectFrom(`action_versions`).where(`tenant_id`,`=`,t).where(`action_id`,`=`,n).where(`id`,`=`,r).selectAll().executeTakeFirst();return i?pe(i):null},async list(t,n,i={}){let{page:a=0,per_page:o=50,include_totals:s=!1}=i,c=e.selectFrom(`action_versions`).where(`tenant_id`,`=`,t).where(`action_id`,`=`,n),l=(await c.orderBy(`number`,`desc`).offset(a*o).limit(o).selectAll().execute()).map(pe);if(!s)return{versions:l,start:0,limit:0,length:0};let{count:u}=await c.select(e=>e.fn.countAll().as(`count`)).executeTakeFirstOrThrow();return{versions:l,start:a*o,limit:o,length:(0,r.getCountAsInt)(u)}},async removeForAction(t,n){let r=await e.deleteFrom(`action_versions`).where(`tenant_id`,`=`,t).where(`action_id`,`=`,n).executeTakeFirst();return Number(r.numDeletedRows??0)}}}async function E(e,t,n,r){await e.insertInto(`outbox_events`).values({id:n,tenant_id:t,event_type:r.event_type,log_type:r.log_type,aggregate_type:r.target.type,aggregate_id:r.target.id,payload:JSON.stringify({...r,id:n}),created_at:new Date().toISOString(),processed_at:null,retry_count:0,next_retry_at:null,error:null}).execute()}function he(e){return async(t,r)=>{let i=(0,n.nanoid)();return await E(e,t,i,r),i}}function ge(e){return async(t,r,i)=>{let a=i?.importMetadata,{identities:s,phone_verified:c,password:l,last_login:u,last_ip:d,login_count:f,...p}=r,m=new Date().toISOString(),h={...p,created_at:a?.created_at??p.created_at??m,updated_at:a?.updated_at??p.updated_at??m,user_id:a?.id??p.user_id,tenant_id:t,email_verified:+!!r.email_verified,phone_verified:c===void 0?null:+!!c,is_social:+!!r.is_social,blocked:+!!r.blocked,app_metadata:JSON.stringify(r.app_metadata),user_metadata:JSON.stringify(r.user_metadata),address:r.address?JSON.stringify(r.address):null},g=async e=>{if(await e.insertInto(`users`).values(h).execute(),h.user_id&&(u!==void 0||d!==void 0||f!==void 0)&&await e.insertInto(`user_activity`).values({tenant_id:t,user_id:h.user_id,last_login:u??null,last_ip:d??null,login_count:f??0}).execute(),l&&h.user_id){let r={id:(0,n.nanoid)(),user_id:h.user_id,password:l.hash,algorithm:l.algorithm,is_current:1,created_at:new Date().toISOString(),updated_at:new Date().toISOString(),tenant_id:t};await e.insertInto(`passwords`).values(r).execute()}for(let n of i?.outboxEvents??[])await E(e,t,n.id,n)};try{e.isTransaction?await g(e):await e.transaction().execute(g)}catch(e){throw e.code===`SQLITE_CONSTRAINT_UNIQUE`||e.code===`ER_DUP_ENTRY`||e.message.includes(`AlreadyExists`)?new o.HTTPException(409,{message:`User already exists`}):new o.HTTPException(500,{message:`${e.code}, ${e.message}`})}return{...h,last_login:u,last_ip:d,login_count:f??0,email:h.email||``,email_verified:h.email_verified===1,phone_verified:h.phone_verified===null?void 0:h.phone_verified===1,is_social:h.is_social===1,blocked:h.blocked==null?void 0:h.blocked===1,app_metadata:r.app_metadata,user_metadata:r.user_metadata,address:r.address}}}var _e=[`email`,`email_verified`,`phone_number`,`phone_verified`,`username`];function D(e,t=!1){let n={connection:e.connection,provider:e.provider,user_id:(0,a.parseUserId)(e.user_id).id,isSocial:!!e.is_social};for(let t of _e)e[t]!==void 0&&e[t]!==null&&(n[t]=t.endsWith(`_verified`)?!!e[t]:e[t]);if(!t){let t={};try{t=JSON.parse(e.profileData||`{}`)}catch(e){console.error(`Error parsing profileData`,e)}n.profileData={email:e.email,email_verified:!!e.email_verified,...t}}return n}function ve(e){return async(t,n)=>{let[i,a]=await Promise.all([e.selectFrom(`users`).leftJoin(`user_activity`,e=>e.onRef(`user_activity.tenant_id`,`=`,`users.tenant_id`).onRef(`user_activity.user_id`,`=`,`users.user_id`)).where(`users.tenant_id`,`=`,t).where(`users.user_id`,`=`,n).selectAll(`users`).select([`user_activity.last_login`,`user_activity.last_ip`,`user_activity.login_count`]).executeTakeFirst(),e.selectFrom(`users`).where(`users.tenant_id`,`=`,t).where(`users.linked_to`,`=`,n).selectAll().orderBy(`created_at`,`asc`).execute()]);if(!i)return null;let{tenant_id:o,...s}=i;return(0,r.removeNullProperties)({...s,email:i.email||``,email_verified:i.email_verified===1,phone_verified:i.phone_verified===null?void 0:i.phone_verified===1,is_social:i.is_social===1,blocked:i.blocked==null?void 0:i.blocked===1,last_login:i.last_login??void 0,last_ip:i.last_ip??void 0,login_count:i.login_count??0,app_metadata:JSON.parse(i.app_metadata),user_metadata:JSON.parse(i.user_metadata),address:i.address?JSON.parse(i.address):void 0,identities:[D(i,!0),...a.map(e=>D(e))]})}}function O(e){return e?.from!==void 0||e?.take!==void 0}function ye(e,t){let n=typeof e==`number`&&Number.isFinite(e)?Math.floor(e):NaN;return n>=1?n:t}async function k(e,t,n){let{sortColumn:r,sortOrder:s}=n,c=n.idColumn??`id`,l=ye(t?.take,50),u=e.orderBy(i.sql.ref(r),s).orderBy(i.sql.ref(c),s),d=t?.from?(0,a.decodeCursor)(t.from):null;if(d&&d.k!==n.sortKey)throw new o.HTTPException(400,{message:"The `from` cursor was issued under a different sort and cannot be used with this request"});if(d)if(d.s===void 0||d.s===null)u=u.where(i.sql.ref(c),s===`asc`?`>`:`<`,d.i);else{let e=s===`asc`?i.sql.raw(`>`):i.sql.raw(`<`);u=u.where(i.sql`(${i.sql.ref(r)}, ${i.sql.ref(c)}) ${e} (${d.s}, ${d.i})`)}let f=await u.limit(l+1).execute(),p=f.length>l,m=p?f.slice(0,l):f,h;if(p&&m.length>0){let e=m[m.length-1],t=r.split(`.`).pop(),i=c.split(`.`).pop(),o=e[t];h=(0,a.encodeCursor)({s:typeof o==`string`||typeof o==`number`||o===null?o:String(o),i:String(e[i]),...n.sortKey!==void 0&&{k:n.sortKey}})}return{rows:m,limit:l,next:h}}var be=[`user_id`,`email`,`email_verified`,`username`,`phone_number`,`phone_verified`,`name`,`given_name`,`family_name`,`nickname`,`picture`,`locale`,`linked_to`,`provider`,`connection`,`is_social`,`blocked`,`last_ip`,`last_login`,`login_count`,`created_at`,`updated_at`],xe=new Set([`last_login`,`last_ip`,`login_count`]),Se=Object.fromEntries(be.map(e=>[e,e===`login_count`?{column:`user_activity.login_count`,defaultValue:0}:xe.has(e)?`user_activity.${e}`:`users.${e}`])),Ce=[`email`,`name`,`phone_number`,`user_id`];async function we(e,t,n){let i=n.map(e=>e.user_id),a=i.length?await e.selectFrom(`users`).selectAll().where(`users.tenant_id`,`=`,t).where(`users.linked_to`,`in`,i).orderBy(`created_at`,`asc`).execute():[];return n.map(e=>{let t=a.filter(t=>t.linked_to===e.user_id);return(0,r.removeNullProperties)({...e,email_verified:e.email_verified===1,phone_verified:e.phone_verified===null?void 0:e.phone_verified===1,is_social:e.is_social===1,blocked:e.blocked==null?void 0:e.blocked===1,login_count:e.login_count??0,app_metadata:JSON.parse(e.app_metadata),user_metadata:JSON.parse(e.user_metadata),address:e.address?JSON.parse(e.address):void 0,identities:[D(e,!0),...t.map(e=>D(e))]})})}function Te(e){return async(t,n={})=>{let{page:i=0,per_page:s=50,include_totals:c=!1,sort:l,q:u}=n,d=e.selectFrom(`users`).leftJoin(`user_activity`,e=>e.onRef(`user_activity.tenant_id`,`=`,`users.tenant_id`).onRef(`user_activity.user_id`,`=`,`users.user_id`)).where(`users.tenant_id`,`=`,t);if(u){let t=(0,a.sanitizeLuceneQuery)(u,be);t&&(d=S(e,d,t,Ce,[],Se))}if(O(n)){if(l?.sort_by&&l.sort_by!==`created_at`)throw new o.HTTPException(400,{message:`Sorting by ${l.sort_by} is not supported with checkpoint pagination (from/take); only created_at is`});let r=l?.sort_order===`asc`?`asc`:`desc`,{rows:i,limit:a,next:s}=await k(d.where(`users.linked_to`,`is`,null).selectAll(`users`).select([`user_activity.last_login`,`user_activity.last_ip`,`user_activity.login_count`]),n,{sortColumn:`users.created_at`,sortOrder:r,idColumn:`users.user_id`,sortKey:`created_at:${r}`}),c=await we(e,t,i);return{users:c,start:0,limit:a,length:c.length,next:s}}if(l&&l.sort_by){let t=Se[l.sort_by];if(t){let{ref:n}=e.dynamic;d=d.orderBy(typeof t==`string`?n(t):te(t),l.sort_order)}}let f=await we(e,t,await d.offset(i*s).limit(s).selectAll(`users`).select([`user_activity.last_login`,`user_activity.last_ip`,`user_activity.login_count`]).execute());if(!c)return{users:f,start:0,limit:0,length:0};let{count:p}=await d.select(e=>e.fn.countAll().as(`count`)).executeTakeFirstOrThrow();return{users:f,start:i*s,limit:s,length:(0,r.getCountAsInt)(p)}}}function Ee(e){return async(t,n,r)=>{let i=async e=>{await e.deleteFrom(`authentication_methods`).where(`authentication_methods.tenant_id`,`=`,t).where(`authentication_methods.user_id`,`in`,e=>e.selectFrom(`users`).select(`users.user_id`).where(`users.tenant_id`,`=`,t).where(e=>e.or([e(`users.user_id`,`=`,n),e(`users.linked_to`,`=`,n)]))).execute(),await e.deleteFrom(`users`).where(`users.tenant_id`,`=`,t).where(`users.linked_to`,`=`,n).execute();let i=await e.deleteFrom(`users`).where(`users.tenant_id`,`=`,t).where(`users.user_id`,`=`,n).execute();for(let n of r?.outboxEvents??[])await E(e,t,n.id,n);return i.length===1};return r?.outboxEvents?.length&&!e.isTransaction?e.transaction().execute(i):i(e)}}function A(e,t=``,n={}){for(let r in e)if(Object.prototype.hasOwnProperty.call(e,r)){let i=t?`${t}_${r}`:r,a=e[r];typeof a==`object`&&a&&!Array.isArray(a)?A(a,i,n):typeof a==`boolean`?n[i]=+!!a:n[i]=a}return n}function De(e,t){let n={};for(let[r,i]of Object.entries(e)){let e=t.find(e=>r.startsWith(`${e}_`));if(!e)n[r]=i;else{let t=r.slice(e.length+1);n[e]={...n[e],[t]:i}}}return n}function Oe(e){return{user_id:e.user_id,last_login:e.last_login??void 0,last_ip:e.last_ip??void 0,login_count:e.login_count,failed_logins:e.failed_logins?JSON.parse(e.failed_logins):void 0,last_password_reset:e.last_password_reset??void 0}}function ke(e){let t={};return e.last_login!==void 0&&(t.last_login=e.last_login),e.last_ip!==void 0&&(t.last_ip=e.last_ip),e.login_count!==void 0&&(t.login_count=e.login_count),e.failed_logins!==void 0&&(t.failed_logins=JSON.stringify(e.failed_logins)),e.last_password_reset!==void 0&&(t.last_password_reset=e.last_password_reset),t}function Ae(e){return{async get(t,n){let r=await e.selectFrom(`user_activity`).where(`tenant_id`,`=`,t).where(`user_id`,`=`,n).selectAll().executeTakeFirst();return r?Oe(r):null},async upsert(t,n,r){let i=ke(r);if(await e.selectFrom(`user_activity`).where(`tenant_id`,`=`,t).where(`user_id`,`=`,n).select(`user_id`).executeTakeFirst()){if(Object.keys(i).length===0)return;await e.updateTable(`user_activity`).set(i).where(`tenant_id`,`=`,t).where(`user_id`,`=`,n).execute();return}try{await e.insertInto(`user_activity`).values({tenant_id:t,user_id:n,login_count:0,...i}).execute()}catch{if(Object.keys(i).length===0)return;await e.updateTable(`user_activity`).set(i).where(`tenant_id`,`=`,t).where(`user_id`,`=`,n).execute()}}}}function je(e){return async(t,n,r,i)=>{let{last_login:a,last_ip:o,login_count:s,...c}=r,l=A({...c,updated_at:new Date().toISOString(),app_metadata:r.app_metadata?JSON.stringify(r.app_metadata):void 0,user_metadata:r.user_metadata?JSON.stringify(r.user_metadata):void 0,address:r.address?JSON.stringify(r.address):void 0,phone_verified:r.phone_verified===void 0?void 0:+!!r.phone_verified,blocked:r.blocked===void 0?void 0:+!!r.blocked}),u=async e=>{let[r]=await e.updateTable(`users`).set(l).where(`users.tenant_id`,`=`,t).where(`users.user_id`,`=`,n).execute();if(!r||r.numUpdatedRows===0n)return!1;(a!==void 0||o!==void 0||s!==void 0)&&await Ae(e).upsert(t,n,{last_login:a,last_ip:o,login_count:s});for(let n of i?.outboxEvents??[])await E(e,t,n.id,n);return!0};return e.isTransaction?u(e):e.transaction().execute(u)}}function Me(e){return async(t,n,r,i)=>(await e.updateTable(`users`).set({linked_to:null}).where(`users.tenant_id`,`=`,t).where(`users.user_id`,`=`,`${r}|${i}`).where(`users.linked_to`,`=`,`${n}`).execute()).length===1}function Ne(e){let t=ge(e);return{create:t,rawCreate:t,remove:Ee(e),get:ve(e),list:Te(e),update:je(e),unlink:Me(e)}}function Pe(e){return async(t,r,i)=>{let o=i?.importMetadata,s=new Date().toISOString(),c=a.flowSchema.parse({id:o?.id??`af_${(0,n.nanoid)()}`,...r,actions:r.actions||[],created_at:o?.created_at??s,updated_at:o?.updated_at??o?.created_at??s});return await e.insertInto(`flows`).values({...c,tenant_id:t,actions:JSON.stringify(c.actions)}).execute(),c}}function j(e,t){if(!e)return t;try{return JSON.parse(e)}catch{return t}}function Fe(e){if(e)try{let t=JSON.parse(e);return t&&typeof t==`object`&&!Array.isArray(t)?t:void 0}catch{return}}function Ie(e,t,n={...e}){for(let r in t)r in e&&(n[r]=j(e[r],t[r]));return n}function Le(e){return async(t,n)=>{let i=await e.selectFrom(`flows`).selectAll().where(`flows.id`,`=`,n).where(`tenant_id`,`=`,t).executeTakeFirst();if(!i)return null;let o={...i,actions:j(i.actions,[])};return a.flowSchema.parse((0,r.removeNullProperties)(o))}}function Re(e){return async(t,n={})=>{let{page:i=0,per_page:o=50,include_totals:s=!1,q:c}=n,l=e.selectFrom(`flows`).where(`tenant_id`,`=`,t);c&&(l=S(e,l,c,[]));let u=(await l.offset(i*o).limit(o).selectAll().execute()).map(e=>{let t={...e,actions:j(e.actions,[])};return a.flowSchema.parse((0,r.removeNullProperties)(t))});if(!s)return{flows:u,start:0,limit:0,length:0};let{count:d}=await l.select(e=>e.fn.countAll().as(`count`)).executeTakeFirstOrThrow();return{flows:u,start:i*o,limit:o,length:(0,r.getCountAsInt)(d)}}}function ze(e){return async(t,n,r)=>{let i={...r,updated_at:new Date().toISOString()};r.actions!==void 0&&(i.actions=JSON.stringify(r.actions));let{numUpdatedRows:o}=await e.updateTable(`flows`).set(i).where(`id`,`=`,n).where(`tenant_id`,`=`,t).executeTakeFirst();if(o===0n)return null;let s=await e.selectFrom(`flows`).selectAll().where(`id`,`=`,n).where(`tenant_id`,`=`,t).executeTakeFirst();return s?a.flowSchema.parse({...s,actions:s.actions?JSON.parse(s.actions):[]}):null}}function Be(e){return async(t,n)=>((await e.deleteFrom(`flows`).where(`id`,`=`,n).where(`tenant_id`,`=`,t).execute())[0]?.numDeletedRows??0n)>0n}function Ve(e){return{create:Pe(e),get:Le(e),list:Re(e),update:ze(e),remove:Be(e)}}function He(e){let t={...e};return e.session_cookie&&typeof e.session_cookie==`string`&&(t.session_cookie=JSON.parse(e.session_cookie)),e.enabled_locales&&typeof e.enabled_locales==`string`&&(t.enabled_locales=JSON.parse(e.enabled_locales)),e.error_page&&typeof e.error_page==`string`&&(t.error_page=JSON.parse(e.error_page)),e.flags&&typeof e.flags==`string`&&(t.flags=JSON.parse(e.flags)),e.sandbox_versions_available&&typeof e.sandbox_versions_available==`string`&&(t.sandbox_versions_available=JSON.parse(e.sandbox_versions_available)),e.change_password&&typeof e.change_password==`string`&&(t.change_password=JSON.parse(e.change_password)),e.guardian_mfa_page&&typeof e.guardian_mfa_page==`string`&&(t.guardian_mfa_page=JSON.parse(e.guardian_mfa_page)),e.sessions&&typeof e.sessions==`string`&&(t.sessions=JSON.parse(e.sessions)),e.oidc_logout&&typeof e.oidc_logout==`string`&&(t.oidc_logout=JSON.parse(e.oidc_logout)),e.device_flow&&typeof e.device_flow==`string`&&(t.device_flow=JSON.parse(e.device_flow)),e.default_token_quota&&typeof e.default_token_quota==`string`&&(t.default_token_quota=JSON.parse(e.default_token_quota)),e.allowed_logout_urls&&typeof e.allowed_logout_urls==`string`&&(t.allowed_logout_urls=JSON.parse(e.allowed_logout_urls)),e.acr_values_supported&&typeof e.acr_values_supported==`string`&&(t.acr_values_supported=JSON.parse(e.acr_values_supported)),e.mtls&&typeof e.mtls==`string`&&(t.mtls=JSON.parse(e.mtls)),e.mfa&&typeof e.mfa==`string`&&(t.mfa=JSON.parse(e.mfa)),e.attack_protection&&typeof e.attack_protection==`string`&&(t.attack_protection=JSON.parse(e.attack_protection)),e.allow_organization_name_in_authentication_api!==void 0&&(t.allow_organization_name_in_authentication_api=e.allow_organization_name_in_authentication_api===1),e.customize_mfa_in_postlogin_action!==void 0&&(t.customize_mfa_in_postlogin_action=e.customize_mfa_in_postlogin_action===1),e.pushed_authorization_requests_supported!==void 0&&(t.pushed_authorization_requests_supported=e.pushed_authorization_requests_supported===1),e.authorization_response_iss_parameter_supported!==void 0&&(t.authorization_response_iss_parameter_supported=e.authorization_response_iss_parameter_supported===1),(0,r.removeNullProperties)(t)}function Ue(e){let t={...e};return(0,r.stringifyProperties)(e,[`session_cookie`,`enabled_locales`,`error_page`,`flags`,`sandbox_versions_available`,`change_password`,`guardian_mfa_page`,`sessions`,`oidc_logout`,`device_flow`,`default_token_quota`,`allowed_logout_urls`,`acr_values_supported`,`mtls`,`mfa`,`attack_protection`],t),e.allow_organization_name_in_authentication_api!==void 0&&(t.allow_organization_name_in_authentication_api=+!!e.allow_organization_name_in_authentication_api),e.customize_mfa_in_postlogin_action!==void 0&&(t.customize_mfa_in_postlogin_action=+!!e.customize_mfa_in_postlogin_action),e.pushed_authorization_requests_supported!==void 0&&(t.pushed_authorization_requests_supported=+!!e.pushed_authorization_requests_supported),e.authorization_response_iss_parameter_supported!==void 0&&(t.authorization_response_iss_parameter_supported=+!!e.authorization_response_iss_parameter_supported),(0,r.removeUndefinedAndNull)(t)}function We(e){return async(t,r)=>{let i=r?.importMetadata,a=new Date().toISOString(),s={...t,id:i?.id??t.id??(0,n.nanoid)(),created_at:i?.created_at??a,updated_at:i?.updated_at??a},c=Ue(s);try{await e.insertInto(`tenants`).values(c).execute()}catch(e){let t=e?.message??``;throw t.includes(`UNIQUE constraint failed`)||t.includes(`Duplicate entry`)||t.includes(`duplicate key`)||t.includes(`AlreadyExists`)||e?.code===`SQLITE_CONSTRAINT`||e?.code===`SQLITE_CONSTRAINT_UNIQUE`||e?.code===`SQLITE_CONSTRAINT_PRIMARYKEY`||e?.code===`ER_DUP_ENTRY`||e?.code===`23505`?new o.HTTPException(409,{message:`Tenant with ID '${s.id}' already exists`}):e}return s}}function Ge(e){return async t=>{let n=await e.selectFrom(`tenants`).where(`tenants.id`,`=`,t).selectAll().executeTakeFirst();return n?He(n):null}}function Ke(e){return async t=>{let n=e.selectFrom(`tenants`),{page:i=0,per_page:a=50,include_totals:o=!1,sort:s,q:c}=t||{};if(s&&s.sort_by){let{ref:t}=e.dynamic;n=n.orderBy(t(s.sort_by),s.sort_order)}c&&(n=S(e,n,c,[`friendly_name`]));let l=(await n.offset(i*a).limit(a).selectAll().execute()).map(He);if(!o)return{tenants:l};let{count:u}=await n.select(e=>e.fn.countAll().as(`count`)).executeTakeFirstOrThrow(),d=(0,r.getCountAsInt)(u);return{tenants:l,start:i*a,limit:a,length:d}}}function qe(e){return async(t,n)=>{let r={...Ue(n),id:t,updated_at:new Date().toISOString()};await e.updateTable(`tenants`).set(r).where(`id`,`=`,t).execute()}}function Je(e){return async t=>(await e.deleteFrom(`tenants`).where(`tenants.id`,`=`,t).execute()).length===1}function Ye(e){return{create:We(e),get:Ge(e),list:Ke(e),update:qe(e),remove:Je(e)}}function Xe(e){return e?JSON.stringify(e):void 0}var Ze=256;function Qe(e){return async(t,r)=>{let i=r.user_agent?.slice(0,Ze),a=r.log_id||(0,n.nanoid)(),{location_info:o,...s}=r;return await e.insertInto(`logs`).values({...s,log_id:a,tenant_id:t,user_agent:i,description:r.description?.substring(0,256),isMobile:+!!r.isMobile,scope:r.scope,auth0_client:Xe(r.auth0_client),details:Xe(r.details)?.substring(0,8192),country_code:o?.country_code,city_name:o?.city_name,latitude:o?.latitude,longitude:o?.longitude,time_zone:o?.time_zone,continent_code:o?.continent_code}).execute(),{...r,log_id:a,user_agent:i}}}function $e(e){if(!e)return``;try{return JSON.parse(e)}catch{return e}}function M(e){return{...e,client_id:e.client_id,client_name:e.client_name||``,auth0_client:$e(e.auth0_client),details:$e(e.details),isMobile:!!e.isMobile,scope:e.scope||void 0,log_id:e.log_id,location_info:e.country_code?{country_code:e.country_code,city_name:e.city_name||``,latitude:e.latitude||``,longitude:e.longitude||``,time_zone:e.time_zone||``,continent_code:e.continent_code||``}:void 0}}var et=[`user_id`,`ip`,`type`,`date`,`client_id`,`client_name`,`user_agent`,`description`,`user_name`,`connection`,`connection_id`,`audience`,`scope`,`strategy`,`strategy_type`,`hostname`,`log_id`,`session_connection`,`country_code`,`city_name`,`latitude`,`longitude`,`time_zone`,`continent_code`];function tt(e){return async(t,n={})=>{let{page:i=0,per_page:s=50,include_totals:c=!1,sort:l,q:u,from_date:d,to_date:f}=n,p=e.selectFrom(`logs`).where(`logs.tenant_id`,`=`,t);if(u){let t=(0,a.sanitizeLuceneQuery)(u,et);t&&(p=S(e,p,t,[`user_id`,`ip`,`description`],[`description`]))}if(typeof d==`number`&&Number.isFinite(d)&&(p=p.where(`logs.date`,`>=`,new Date(Math.floor(d)*1e3).toISOString())),typeof f==`number`&&Number.isFinite(f)&&(p=p.where(`logs.date`,`<=`,new Date(Math.floor(f)*1e3+999).toISOString())),O(n)){if(l?.sort_by&&l.sort_by!==`date`)throw new o.HTTPException(400,{message:`Sorting by ${l.sort_by} is not supported with checkpoint pagination (from/take); only date is`});let e=l?.sort_order===`asc`?`asc`:`desc`,{rows:t,limit:r,next:i}=await k(p.selectAll(),n,{sortColumn:`date`,sortOrder:e,idColumn:`log_id`,sortKey:`date:${e}`}),a=t.map(M);return{logs:a,start:0,limit:r,length:a.length,next:i}}let m=p;if(l&&l.sort_by){let{ref:t}=e.dynamic;m=m.orderBy(t(l.sort_by),l.sort_order)}m=m.offset(i*s).limit(s);let h=(await m.selectAll().execute()).map(M);if(!c)return{logs:h,start:0,limit:0,length:0};let{count:g}=await p.select(e=>e.fn.countAll().as(`count`)).executeTakeFirstOrThrow();return{logs:h,start:i*s,limit:s,length:(0,r.getCountAsInt)(g)}}}function nt(e){return async(t,n)=>{let r=await e.selectFrom(`logs`).where(`logs.tenant_id`,`=`,t).where(`logs.log_id`,`=`,n).selectAll().executeTakeFirst();return r?M(r):null}}function rt(e){return{create:Qe(e),list:tt(e),get:nt(e)}}function it(e){return async(t,n)=>{let i=await e.selectFrom(`sessions`).where(`sessions.tenant_id`,`=`,t).where(`sessions.id`,`=`,n).selectAll().executeTakeFirst();if(!i)return null;let{tenant_id:a,device:o,clients:s,created_at_ts:c,updated_at_ts:l,expires_at_ts:u,idle_expires_at_ts:d,authenticated_at_ts:f,last_interaction_at_ts:p,used_at_ts:m,revoked_at_ts:h,...g}=i,_=(0,r.convertDatesToAdapter)({created_at_ts:c,updated_at_ts:l,expires_at_ts:u,idle_expires_at_ts:d,authenticated_at_ts:f,last_interaction_at_ts:p,used_at_ts:m,revoked_at_ts:h},[`created_at_ts`,`updated_at_ts`,`authenticated_at_ts`,`last_interaction_at_ts`],[`expires_at_ts`,`idle_expires_at_ts`,`used_at_ts`,`revoked_at_ts`]);return{...g,..._,device:JSON.parse(o),clients:JSON.parse(s)}}}function at(e){return async(t,n)=>{let i=Date.now(),a=(0,r.nowIso)(),o={...n,created_at:a,updated_at:a,authenticated_at:a,last_interaction_at:a},{expires_at:s,idle_expires_at:c,used_at:l,revoked_at:u,device:d,clients:f,...p}=n,m=(0,r.isoToDbDate)(s),h=(0,r.isoToDbDate)(c),g=Math.max(m??0,h??0);return await e.transaction().execute(async e=>{await e.insertInto(`sessions`).values({...p,tenant_id:t,created_at_ts:i,updated_at_ts:i,authenticated_at_ts:i,last_interaction_at_ts:i,expires_at_ts:m,idle_expires_at_ts:h,used_at_ts:(0,r.isoToDbDate)(l),revoked_at_ts:(0,r.isoToDbDate)(u),device:JSON.stringify(d),clients:JSON.stringify(f)}).execute(),g>0&&n.login_session_id&&await e.updateTable(`login_sessions`).set({expires_at_ts:g,updated_at_ts:i}).where(`tenant_id`,`=`,t).where(`id`,`=`,n.login_session_id).where(`expires_at_ts`,`<`,g).execute()}),o}}function ot(e){return async(t,n)=>!!(await e.deleteFrom(`sessions`).where(`tenant_id`,`=`,t).where(`sessions.id`,`=`,n).execute()).length}function st(e){return async(t,n,i)=>{let a=Date.now(),o={updated_at_ts:a,device:i.device?JSON.stringify(i.device):void 0,clients:i.clients?JSON.stringify(i.clients):void 0},s,c;i.expires_at!==void 0&&(s=(0,r.isoToDbDate)(i.expires_at),o.expires_at_ts=s),i.idle_expires_at!==void 0&&(c=(0,r.isoToDbDate)(i.idle_expires_at),o.idle_expires_at_ts=c),i.authenticated_at!==void 0&&(o.authenticated_at_ts=(0,r.isoToDbDate)(i.authenticated_at)),i.last_interaction_at!==void 0&&(o.last_interaction_at_ts=(0,r.isoToDbDate)(i.last_interaction_at)),i.used_at!==void 0&&(o.used_at_ts=(0,r.isoToDbDate)(i.used_at)),i.revoked_at!==void 0&&(o.revoked_at_ts=(0,r.isoToDbDate)(i.revoked_at)),i.user_id!==void 0&&(o.user_id=i.user_id),i.login_session_id!==void 0&&(o.login_session_id=i.login_session_id);let l=await e.updateTable(`sessions`).set(o).where(`tenant_id`,`=`,t).where(`sessions.id`,`=`,n).execute(),u=Math.max(s??0,c??0);if(u>0){let r=i.login_session_id??e.selectFrom(`sessions`).select(`login_session_id`).where(`tenant_id`,`=`,t).where(`id`,`=`,n);await e.updateTable(`login_sessions`).set({expires_at_ts:u,updated_at_ts:a}).where(`tenant_id`,`=`,t).where(`id`,`=`,r).where(`expires_at_ts`,`<`,u).execute().catch(()=>{})}return!!l.length}}function ct(e){return async(t,n={})=>{let{page:i=0,per_page:a=50,include_totals:o=!1,sort:s,q:c}=n,l=e.selectFrom(`sessions`).where(`sessions.tenant_id`,`=`,t);c&&(l=S(e,l,c,[`user_id`,`session_id`]));let u=l;if(s&&s.sort_by){let{ref:t}=e.dynamic;u=u.orderBy(t(s.sort_by),s.sort_order)}u=u.offset(i*a).limit(a);let d=(await u.selectAll().execute()).map(e=>{let{tenant_id:t,device:n,clients:i,created_at_ts:a,updated_at_ts:o,expires_at_ts:s,idle_expires_at_ts:c,authenticated_at_ts:l,last_interaction_at_ts:u,used_at_ts:d,revoked_at_ts:f,...p}=e,m=(0,r.convertDatesToAdapter)({created_at_ts:a,updated_at_ts:o,expires_at_ts:s,idle_expires_at_ts:c,authenticated_at_ts:l,last_interaction_at_ts:u,used_at_ts:d,revoked_at_ts:f},[`created_at_ts`,`updated_at_ts`,`authenticated_at_ts`,`last_interaction_at_ts`],[`expires_at_ts`,`idle_expires_at_ts`,`used_at_ts`,`revoked_at_ts`]);return{...p,...m,device:JSON.parse(n),clients:JSON.parse(i)}});if(!o)return{sessions:d,start:0,limit:0,length:0};let{count:f}=await l.select(e=>e.fn.countAll().as(`count`)).executeTakeFirstOrThrow(),p=(0,r.getCountAsInt)(f);return{sessions:d,start:i*a,limit:a,length:p}}}function lt(e){return{create:at(e),get:it(e),list:ct(e),remove:ot(e),update:st(e)}}function ut(e){return async(t,n)=>{let r=await e.selectFrom(`passwords`).where(`passwords.tenant_id`,`=`,t).where(`passwords.user_id`,`=`,n).where(`passwords.is_current`,`=`,1).selectAll().executeTakeFirst();if(!r)return null;let{tenant_id:i,...a}=r;return{...a,is_current:!!a.is_current}}}function dt(e){return async(t,r,i)=>{let a=i?.importMetadata,o=a?.id||r.id||(0,n.nanoid)(),s=r.is_current??!0,c=new Date().toISOString(),l={...r,id:o,is_current:s,created_at:a?.created_at??c,updated_at:a?.updated_at??c};return s&&await e.updateTable(`passwords`).set({is_current:0}).where(`user_id`,`=`,r.user_id).where(`tenant_id`,`=`,t).where(`is_current`,`=`,1).execute(),await e.insertInto(`passwords`).values({...l,is_current:+!!l.is_current,tenant_id:t}).execute(),l}}function ft(e){return async(t,n)=>{let r=e.updateTable(`passwords`).set({password:n.password,algorithm:n.algorithm,is_current:+!!n.is_current,updated_at:new Date().toISOString()}).where(`tenant_id`,`=`,t).where(`user_id`,`=`,n.user_id);return r=n.id?r.where(`id`,`=`,n.id):r.where(`is_current`,`=`,1),(await r.execute()).length===1}}function pt(e){return async(t,n,r)=>{let i=e.selectFrom(`passwords`).where(`passwords.tenant_id`,`=`,t).where(`passwords.user_id`,`=`,n).orderBy(`created_at`,`desc`);return r&&(i=i.limit(r)),(await i.selectAll().execute()).map(({tenant_id:e,...t})=>({...t,is_current:!!t.is_current}))}}function mt(e){return{create:dt(e),update:ft(e),get:ut(e),list:pt(e)}}function ht(e){return async(t,n={})=>{let{page:i=0,per_page:o=50,include_totals:s=!1,q:c}=n,l=e.selectFrom(`codes`).where(`codes.tenant_id`,`=`,t);c&&(l=S(e,l,c,[`code`,`login_id`]));let u=(await l.offset(i*o).limit(o).selectAll().execute()).map(e=>{let{tenant_id:t,...n}=e;return a.codeSchema.parse((0,r.removeNullProperties)(n))});if(!s)return{codes:u,start:0,limit:0,length:0};let{count:d}=await l.select(e=>e.fn.countAll().as(`count`)).executeTakeFirstOrThrow();return{codes:u,start:i*o,limit:o,length:(0,r.getCountAsInt)(d)}}}function gt(e){let t=new Date(e).getTime();return Number.isNaN(t)?0:t}function _t(e){return async(t,n)=>{let r={...n,created_at:new Date().toISOString()};return await e.insertInto(`codes`).values({...r,tenant_id:t,expires_at_ts:gt(r.expires_at)}).execute(),r}}function vt(e){return async(t,n)=>(await e.deleteFrom(`codes`).where(`codes.tenant_id`,`=`,t).where(`codes.code_id`,`=`,n).executeTakeFirst()).numDeletedRows>0}function yt(e){return async(t,n,i)=>{let a=e.selectFrom(`codes`).where(`codes.code_id`,`=`,n).where(`codes.code_type`,`=`,i);t.length&&(a=a.where(`codes.tenant_id`,`=`,t));let o=await a.selectAll().executeTakeFirst();return o?(0,r.removeNullProperties)(o):null}}function bt(e){return async(t,n)=>(await e.updateTable(`codes`).set({used_at:new Date().toISOString()}).where(`codes.tenant_id`,`=`,t).where(`codes.code_id`,`=`,n).executeTakeFirst()).numUpdatedRows>0}function xt(e){return async(t,n)=>(await e.updateTable(`codes`).set({used_at:new Date().toISOString()}).where(`codes.tenant_id`,`=`,t).where(`codes.code_id`,`=`,n).where(`codes.used_at`,`is`,null).executeTakeFirst()).numUpdatedRows>0}function St(e){return async t=>{let n=await e.deleteFrom(`codes`).where(`expires_at_ts`,`<`,gt(t)).executeTakeFirst(),r=await e.deleteFrom(`codes`).where(`expires_at_ts`,`is`,null).where(`expires_at`,`<`,t).executeTakeFirst();return Number(n.numDeletedRows)+Number(r.numDeletedRows)}}function Ct(e){return{create:_t(e),list:ht(e),remove:vt(e),used:bt(e),consume:xt(e),get:yt(e),cleanup:St(e)}}function wt(e){return async(t,n,r)=>{let i=r?.importMetadata,{is_system:a,...o}=n;delete o.enabled_clients;let s=new Date().toISOString(),c={...o,id:i?.id??o.id??f(),is_system:a?!0:void 0,created_at:i?.created_at??s,updated_at:i?.updated_at??s};return await e.insertInto(`connections`).values({...c,is_system:+!!a,options:JSON.stringify(c.options||{}),tenant_id:t}).execute(),c}}function N(e){let{is_system:t,...n}=e;return(0,r.removeNullProperties)({...n,is_system:t?!0:void 0,options:typeof e.options==`string`?JSON.parse(e.options):{}})}function Tt(e){return e.map(N)}function Et(e){return async(t,n={})=>{let{page:i=0,per_page:a=50,include_totals:o=!1,q:s}=n,c=e.selectFrom(`connections`).where(`connections.tenant_id`,`=`,t);s&&(c=S(e,c,s,[`user_id`,`ip`]));let l=Tt(await c.offset(i*a).limit(a).selectAll().execute());if(!o)return{connections:l,start:0,limit:0,length:0};let{count:u}=await c.select(e=>e.fn.countAll().as(`count`)).executeTakeFirstOrThrow();return{connections:l,start:i*a,limit:a,length:(0,r.getCountAsInt)(u)}}}function Dt(e){return async(t,n)=>(await e.deleteFrom(`connections`).where(`connections.tenant_id`,`=`,t).where(`connections.id`,`=`,n).executeTakeFirst()).numDeletedRows>0}function Ot(e){return async(t,n)=>{let r=await e.selectFrom(`connections`).where(`connections.tenant_id`,`=`,t).where(`connections.id`,`=`,n).selectAll().executeTakeFirst();return r?N(r):null}}function kt(e){return async(t,n,r)=>{let{is_system:i,...a}=r;delete a.enabled_clients;let o={...a,is_system:i===void 0?void 0:+!!i,updated_at:new Date().toISOString()};return await e.updateTable(`connections`).set({...o,options:o.options?JSON.stringify(o.options):void 0}).where(`connections.id`,`=`,n).where(`connections.tenant_id`,`=`,t).execute(),!0}}function At(e){return{create:wt(e),get:Ot(e),list:Et(e),remove:Dt(e),update:kt(e)}}function jt(e){return async(t,i,a)=>{let o=a?.importMetadata,s=o?.id??i.client_id??(0,n.nanoid)(),c=new Date().toISOString(),l={...i,created_at:o?.created_at??c,updated_at:o?.updated_at??o?.created_at??c,client_id:s,global:i.global??!1,is_first_party:i.is_first_party??!0,oidc_conformant:i.oidc_conformant??!0,auth0_conformant:i.auth0_conformant??!0,sso:i.sso??!1,sso_disabled:i.sso_disabled??!1,cross_origin_authentication:i.cross_origin_authentication??!1,custom_login_page_on:i.custom_login_page_on??!1,require_pushed_authorization_requests:i.require_pushed_authorization_requests??!1,require_proof_of_possession:i.require_proof_of_possession??!1,hide_sign_up_disabled_error:i.hide_sign_up_disabled_error??!1},u={...l,tenant_id:t};return(0,r.booleanToInt)(l,[`global`,`is_first_party`,`oidc_conformant`,`auth0_conformant`,`sso`,`sso_disabled`,`cross_origin_authentication`,`custom_login_page_on`,`require_pushed_authorization_requests`,`require_proof_of_possession`,`hide_sign_up_disabled_error`],u),Object.assign(u,{callbacks:JSON.stringify(i.callbacks||[]),allowed_origins:JSON.stringify(i.allowed_origins||[]),web_origins:JSON.stringify(i.web_origins||[]),client_aliases:JSON.stringify(i.client_aliases||[]),allowed_clients:JSON.stringify(i.allowed_clients||[]),connections:JSON.stringify(i.connections||[]),allowed_logout_urls:JSON.stringify(i.allowed_logout_urls||[]),session_transfer:JSON.stringify(i.session_transfer||{}),oidc_logout:JSON.stringify(i.oidc_logout||{}),grant_types:JSON.stringify(i.grant_types||[]),jwt_configuration:JSON.stringify(i.jwt_configuration||{}),signing_keys:JSON.stringify(i.signing_keys||[]),encryption_key:JSON.stringify(i.encryption_key||{}),addons:JSON.stringify(i.addons||{}),client_metadata:JSON.stringify(i.client_metadata||{}),mobile:JSON.stringify(i.mobile||{}),native_social_login:JSON.stringify(i.native_social_login||{}),refresh_token:JSON.stringify(i.refresh_token||{}),default_organization:JSON.stringify(i.default_organization||{}),client_authentication_methods:JSON.stringify(i.client_authentication_methods||{}),signed_request_object:JSON.stringify(i.signed_request_object||{}),token_quota:JSON.stringify(i.token_quota||{}),owner_user_id:i.owner_user_id??null,registration_type:i.registration_type??null,registration_metadata:i.registration_metadata?JSON.stringify(i.registration_metadata):null}),await e.insertInto(`clients`).values(u).execute(),l}}function Mt(e){return async(t,n)=>{let i=await e.selectFrom(`clients`).where(`clients.tenant_id`,`=`,t).where(`clients.client_id`,`=`,n).selectAll().executeTakeFirst();if(!i)return null;let{tenant_id:a,...o}=i;return(0,r.removeNullProperties)({...o,global:!!i.global,is_first_party:!!i.is_first_party,oidc_conformant:!!i.oidc_conformant,auth0_conformant:!!i.auth0_conformant,sso:!!i.sso,sso_disabled:!!i.sso_disabled,cross_origin_authentication:!!i.cross_origin_authentication,custom_login_page_on:!!i.custom_login_page_on,require_pushed_authorization_requests:!!i.require_pushed_authorization_requests,require_proof_of_possession:!!i.require_proof_of_possession,hide_sign_up_disabled_error:!!i.hide_sign_up_disabled_error,callbacks:JSON.parse(i.callbacks),allowed_origins:JSON.parse(i.allowed_origins),web_origins:JSON.parse(i.web_origins),client_aliases:JSON.parse(i.client_aliases),allowed_clients:JSON.parse(i.allowed_clients),connections:JSON.parse(i.connections||`[]`),allowed_logout_urls:JSON.parse(i.allowed_logout_urls),session_transfer:JSON.parse(i.session_transfer),oidc_logout:JSON.parse(i.oidc_logout),grant_types:JSON.parse(i.grant_types),jwt_configuration:JSON.parse(i.jwt_configuration),signing_keys:JSON.parse(i.signing_keys),encryption_key:JSON.parse(i.encryption_key),addons:JSON.parse(i.addons),client_metadata:JSON.parse(i.client_metadata),mobile:JSON.parse(i.mobile),native_social_login:JSON.parse(i.native_social_login),refresh_token:JSON.parse(i.refresh_token),default_organization:JSON.parse(i.default_organization),client_authentication_methods:JSON.parse(i.client_authentication_methods),signed_request_object:JSON.parse(i.signed_request_object),token_quota:JSON.parse(i.token_quota),registration_metadata:i.registration_metadata?JSON.parse(i.registration_metadata):void 0})}}function Nt(e){return async t=>{let n=await e.selectFrom(`clients`).where(`clients.client_id`,`=`,t).selectAll().executeTakeFirst();return n?(0,r.removeNullProperties)({...n,global:!!n.global,is_first_party:!!n.is_first_party,oidc_conformant:!!n.oidc_conformant,auth0_conformant:!!n.auth0_conformant,sso:!!n.sso,sso_disabled:!!n.sso_disabled,cross_origin_authentication:!!n.cross_origin_authentication,custom_login_page_on:!!n.custom_login_page_on,require_pushed_authorization_requests:!!n.require_pushed_authorization_requests,require_proof_of_possession:!!n.require_proof_of_possession,hide_sign_up_disabled_error:!!n.hide_sign_up_disabled_error,callbacks:JSON.parse(n.callbacks),allowed_origins:JSON.parse(n.allowed_origins),web_origins:JSON.parse(n.web_origins),client_aliases:JSON.parse(n.client_aliases),allowed_clients:JSON.parse(n.allowed_clients),connections:JSON.parse(n.connections||`[]`),allowed_logout_urls:JSON.parse(n.allowed_logout_urls),session_transfer:JSON.parse(n.session_transfer),oidc_logout:JSON.parse(n.oidc_logout),grant_types:JSON.parse(n.grant_types),jwt_configuration:JSON.parse(n.jwt_configuration),signing_keys:JSON.parse(n.signing_keys),encryption_key:JSON.parse(n.encryption_key),addons:JSON.parse(n.addons),client_metadata:JSON.parse(n.client_metadata),mobile:JSON.parse(n.mobile),native_social_login:JSON.parse(n.native_social_login),refresh_token:JSON.parse(n.refresh_token),default_organization:JSON.parse(n.default_organization),client_authentication_methods:JSON.parse(n.client_authentication_methods),signed_request_object:JSON.parse(n.signed_request_object),token_quota:JSON.parse(n.token_quota),registration_metadata:n.registration_metadata?JSON.parse(n.registration_metadata):void 0}):null}}function Pt(e){return(0,r.removeNullProperties)({...e,global:!!e.global,is_first_party:!!e.is_first_party,oidc_conformant:!!e.oidc_conformant,auth0_conformant:!!e.auth0_conformant,sso:!!e.sso,sso_disabled:!!e.sso_disabled,cross_origin_authentication:!!e.cross_origin_authentication,custom_login_page_on:!!e.custom_login_page_on,require_pushed_authorization_requests:!!e.require_pushed_authorization_requests,require_proof_of_possession:!!e.require_proof_of_possession,hide_sign_up_disabled_error:!!e.hide_sign_up_disabled_error,callbacks:JSON.parse(e.callbacks),allowed_origins:JSON.parse(e.allowed_origins),web_origins:JSON.parse(e.web_origins),client_aliases:JSON.parse(e.client_aliases),allowed_clients:JSON.parse(e.allowed_clients),connections:JSON.parse(e.connections||`[]`),allowed_logout_urls:JSON.parse(e.allowed_logout_urls),session_transfer:JSON.parse(e.session_transfer),oidc_logout:JSON.parse(e.oidc_logout),grant_types:JSON.parse(e.grant_types),jwt_configuration:JSON.parse(e.jwt_configuration),signing_keys:JSON.parse(e.signing_keys),encryption_key:JSON.parse(e.encryption_key),addons:JSON.parse(e.addons),client_metadata:JSON.parse(e.client_metadata),mobile:JSON.parse(e.mobile),native_social_login:JSON.parse(e.native_social_login),refresh_token:JSON.parse(e.refresh_token),default_organization:JSON.parse(e.default_organization),client_authentication_methods:JSON.parse(e.client_authentication_methods),signed_request_object:JSON.parse(e.signed_request_object),token_quota:JSON.parse(e.token_quota),registration_metadata:e.registration_metadata?JSON.parse(e.registration_metadata):void 0})}function Ft(e){return async(t,n)=>{let r=e.selectFrom(`clients`).where(`clients.tenant_id`,`=`,t),a=new Set([`owner_user_id`,`registration_type`]);if(n?.q){let e=n.q.trim().match(/^([a-zA-Z_][a-zA-Z0-9_]*):"?([^"]*)"?$/);if(e&&a.has(e[1])&&e[2]){let t=e[1];r=r.where(t,`=`,e[2])}else r=r.where(e=>e.or([e(`name`,`like`,`%${n.q}%`),e(`client_id`,`like`,`%${n.q}%`)]))}if(O(n)){let{rows:e,limit:t,next:i}=await k(r.selectAll(),n,{sortColumn:`created_at`,sortOrder:`desc`,idColumn:`client_id`}),a=e.map(Pt);return{clients:a,totals:{start:0,limit:t,length:a.length,next:i}}}if(n?.sort){let e=n.sort.sort_order===`asc`?`asc`:`desc`,t=n.sort.sort_by;r=[`name`,`client_id`,`created_at`,`updated_at`].includes(t)?r.orderBy(t,e):r.orderBy(`created_at`,`desc`)}else r=r.orderBy(`created_at`,`desc`);let o=n?.page??0,s=n?.per_page||10,c=await r.selectAll().limit(s).offset(o*s).execute(),l=c.length;if(n?.include_totals){let r=e.selectFrom(`clients`).select(i.sql`count(*)`.as(`count`)).where(`clients.tenant_id`,`=`,t);if(n?.q){let e=n.q.trim().match(/^([a-zA-Z_][a-zA-Z0-9_]*):"?([^"]*)"?$/);if(e&&a.has(e[1])&&e[2]){let t=e[1];r=r.where(t,`=`,e[2])}else r=r.where(e=>e.or([e(`name`,`like`,`%${n.q}%`),e(`client_id`,`like`,`%${n.q}%`)]))}let o=await r.executeTakeFirst();l=Number(o?.count||0)}let u=c.map(Pt);return{clients:u,totals:{start:o*s,limit:s,length:u.length,total:l}}}}function It(e){return async(t,n)=>(await e.deleteFrom(`clients`).where(`clients.tenant_id`,`=`,t).where(`clients.client_id`,`=`,n).executeTakeFirst()).numDeletedRows>0}function Lt(e){return async(t,n,i)=>{let a={...i,updated_at:new Date().toISOString()};return(0,r.booleanToInt)(i,[`global`,`is_first_party`,`oidc_conformant`,`auth0_conformant`,`sso`,`sso_disabled`,`cross_origin_authentication`,`custom_login_page_on`,`require_pushed_authorization_requests`,`require_proof_of_possession`,`hide_sign_up_disabled_error`],a),(0,r.stringifyProperties)(i,[`callbacks`,`allowed_origins`,`web_origins`,`client_aliases`,`allowed_clients`,`connections`,`allowed_logout_urls`,`session_transfer`,`oidc_logout`,`grant_types`,`jwt_configuration`,`signing_keys`,`encryption_key`,`addons`,`client_metadata`,`mobile`,`native_social_login`,`refresh_token`,`default_organization`,`client_authentication_methods`,`signed_request_object`,`token_quota`,`registration_metadata`],a),(await e.updateTable(`clients`).set(a).where(`clients.tenant_id`,`=`,t).where(`clients.client_id`,`=`,n).executeTakeFirst()).numUpdatedRows>0}}function Rt(e){return{create:jt(e),get:Mt(e),getByClientId:Nt(e),list:Ft(e),remove:It(e),update:Lt(e)}}function zt(e){return async(t,n)=>{let r=await e.selectFrom(`clients`).where(`clients.tenant_id`,`=`,t).where(`clients.client_id`,`=`,n).select(`connections`).executeTakeFirst();if(!r)return[];let i=JSON.parse(r.connections||`[]`);if(i.length===0)return[];let a=await e.selectFrom(`connections`).where(`connections.tenant_id`,`=`,t).where(`connections.id`,`in`,i).selectAll().execute(),o=new Map(a.map(e=>[e.id,N(e)]));return i.map(e=>o.get(e)).filter(e=>e!==void 0)}}function Bt(e){return async(t,n,r)=>(await e.updateTable(`clients`).set({connections:JSON.stringify(r),updated_at:new Date().toISOString()}).where(`clients.tenant_id`,`=`,t).where(`clients.client_id`,`=`,n).executeTakeFirst()).numUpdatedRows>0}function Vt(e){return async(t,n)=>{let r=await e.selectFrom(`clients`).where(`clients.tenant_id`,`=`,t).select([`client_id`,`connections`]).execute(),i=[];for(let e of r)JSON.parse(e.connections||`[]`).includes(n)&&i.push(e.client_id);return i}}function Ht(e){return async(t,n,r)=>{let i=await e.selectFrom(`clients`).where(`clients.tenant_id`,`=`,t).where(`clients.client_id`,`=`,r).select(`connections`).executeTakeFirst();if(!i)return!1;let a=JSON.parse(i.connections||`[]`);return a.includes(n)?!0:(a.push(n),(await e.updateTable(`clients`).set({connections:JSON.stringify(a),updated_at:new Date().toISOString()}).where(`clients.tenant_id`,`=`,t).where(`clients.client_id`,`=`,r).executeTakeFirst()).numUpdatedRows>0)}}function Ut(e){return async(t,n,r)=>{let i=await e.selectFrom(`clients`).where(`clients.tenant_id`,`=`,t).where(`clients.client_id`,`=`,r).select(`connections`).executeTakeFirst();if(!i)return!1;let a=JSON.parse(i.connections||`[]`),o=a.filter(e=>e!==n);return o.length===a.length?!0:(await e.updateTable(`clients`).set({connections:JSON.stringify(o),updated_at:new Date().toISOString()}).where(`clients.tenant_id`,`=`,t).where(`clients.client_id`,`=`,r).executeTakeFirst()).numUpdatedRows>0}}function Wt(e){return{listByClient:zt(e),updateByClient:Bt(e),listByConnection:Vt(e),addClientToConnection:Ht(e),removeClientFromConnection:Ut(e)}}function Gt(e){return async(t,i,a)=>{let o=a?.importMetadata,s=new Date().toISOString(),c=o?.id??(0,n.nanoid)(),l=o?.created_at??s,u=o?.updated_at??o?.created_at??s,{scope:d,authorization_details_types:f,...p}=i,m={id:c,tenant_id:t,...p,scope:d?JSON.stringify(d):`[]`,authorization_details_types:f?JSON.stringify(f):`[]`,allow_any_organization:p.allow_any_organization===void 0?void 0:+!!p.allow_any_organization,is_system:p.is_system===void 0?void 0:+!!p.is_system,created_at:l,updated_at:u};return await e.insertInto(`client_grants`).values(m).execute(),(0,r.removeNullProperties)({id:c,tenant_id:t,...p,scope:d||[],authorization_details_types:f||[],allow_any_organization:p.allow_any_organization??!1,is_system:p.is_system??!1,created_at:l,updated_at:u})}}function Kt(e){return async(t,n)=>{let i=await e.selectFrom(`client_grants`).selectAll().where(`client_grants.tenant_id`,`=`,t).where(`client_grants.id`,`=`,n).executeTakeFirst();return i?(0,r.removeNullProperties)({id:i.id,client_id:i.client_id,audience:i.audience,scope:i.scope?JSON.parse(i.scope):[],organization_usage:i.organization_usage,allow_any_organization:i.allow_any_organization===void 0?!1:!!i.allow_any_organization,is_system:i.is_system===void 0?!1:!!i.is_system,subject_type:i.subject_type,authorization_details_types:i.authorization_details_types?JSON.parse(i.authorization_details_types):[],created_at:i.created_at,updated_at:i.updated_at}):null}}function qt(e){return a.clientGrantSchema.parse((0,r.removeNullProperties)({...e,scope:e.scope?JSON.parse(e.scope):[],allow_any_organization:!!e.allow_any_organization,is_system:!!e.is_system,authorization_details_types:e.authorization_details_types?JSON.parse(e.authorization_details_types):[]}))}function Jt(e){return async(t,n={})=>{let{page:i=0,per_page:a=50,include_totals:o=!1,q:s,sort:c}=n,l=e.selectFrom(`client_grants`).where(`client_grants.tenant_id`,`=`,t);if(s){let t=s.trim(),n=t.split(/\s+/),r=n.length===1?n[0]:void 0,i=r?r.match(/^(-)?([a-zA-Z_][a-zA-Z0-9_]*):"?([^"]*)"?$/):null,a=i?i[3]:``,o=/^(>=|>|<=|<)/.test(a||``);if(i&&!o&&a){let t=!!i[1],n=i[2],{ref:r}=e.dynamic,o=r(`client_grants.${n}`);if(n===`allow_any_organization`){let e=+(a===`true`);l=l.where(o,t?`!=`:`=`,e)}else l=l.where(o,t?`!=`:`=`,a)}else l=S(e,l,t,[])}if(O(n)){let{rows:e,limit:t,next:r}=await k(l.selectAll(),n,{sortColumn:`created_at`,sortOrder:`desc`}),i=e.map(qt);return{client_grants:i,start:0,limit:t,length:i.length,next:r}}let u=l;if(c){let{ref:t}=e.dynamic;u=u.orderBy(t(c.sort_by),c.sort_order)}else u=u.orderBy(`client_grants.created_at`,`desc`);let d=(await u.selectAll().limit(a).offset(i*a).execute()).map(qt);if(!o)return{client_grants:d,start:0,limit:0,length:0};let{count:f}=await l.select(e=>e.fn.countAll().as(`count`)).executeTakeFirstOrThrow();return{client_grants:d,start:i*a,limit:a,length:(0,r.getCountAsInt)(f)}}}function Yt(e){return async(t,n)=>((await e.deleteFrom(`client_grants`).where(`client_grants.tenant_id`,`=`,t).where(`client_grants.id`,`=`,n).executeTakeFirst()).numDeletedRows??0n)>0n}function Xt(e){return async(t,n,r)=>{let i=new Date().toISOString(),{scope:a,authorization_details_types:o,...s}=r,c={...s,updated_at:i};return a!==void 0&&(c.scope=JSON.stringify(a)),o!==void 0&&(c.authorization_details_types=JSON.stringify(o)),s.allow_any_organization!==void 0&&(c.allow_any_organization=+!!s.allow_any_organization),s.is_system!==void 0&&(c.is_system=+!!s.is_system),((await e.updateTable(`client_grants`).set(c).where(`client_grants.tenant_id`,`=`,t).where(`client_grants.id`,`=`,n).executeTakeFirst()).numUpdatedRows??0n)>0n}}function Zt(e){return{create:Gt(e),get:Kt(e),list:Jt(e),remove:Yt(e),update:Xt(e)}}function Qt(e){return async(t,n)=>{let i=Date.now();return await e.insertInto(`client_registration_tokens`).values({id:n.id,tenant_id:t,token_hash:n.token_hash,type:n.type,client_id:n.client_id??null,sub:n.sub??null,constraints:n.constraints?JSON.stringify(n.constraints):null,single_use:+!!n.single_use,expires_at_ts:(0,r.isoToDbDate)(n.expires_at),created_at_ts:i,used_at_ts:null,revoked_at_ts:null}).execute(),{id:n.id,token_hash:n.token_hash,type:n.type,client_id:n.client_id,sub:n.sub,constraints:n.constraints,single_use:n.single_use,expires_at:n.expires_at,created_at:new Date(i).toISOString()}}}function $t(e){let t=a.clientRegistrationTokenTypeSchema.safeParse(e);if(!t.success)throw Error(`Unknown client_registration_tokens.type: ${e}`);return t.data}function en(e){if(!e)return;let t;try{t=JSON.parse(e)}catch{return}return(0,a.isPlainObject)(t)?t:void 0}function P(e){return{id:e.id,token_hash:e.token_hash,type:$t(e.type),client_id:e.client_id??void 0,sub:e.sub??void 0,constraints:en(e.constraints),single_use:!!e.single_use,expires_at:(0,r.dbDateToIso)(e.expires_at_ts),used_at:(0,r.dbDateToIso)(e.used_at_ts),revoked_at:(0,r.dbDateToIso)(e.revoked_at_ts),created_at:(0,r.dbDateToIsoRequired)(e.created_at_ts)}}function tn(e){return async(t,n)=>{let r=await e.selectFrom(`client_registration_tokens`).where(`tenant_id`,`=`,t).where(`id`,`=`,n).selectAll().executeTakeFirst();return r?P(r):null}}function nn(e){return async(t,n)=>{let r=await e.selectFrom(`client_registration_tokens`).where(`tenant_id`,`=`,t).where(`token_hash`,`=`,n).selectAll().executeTakeFirst();return r?P(r):null}}function rn(e){return async(t,n)=>(await e.selectFrom(`client_registration_tokens`).where(`tenant_id`,`=`,t).where(`client_id`,`=`,n).orderBy(`created_at_ts`,`desc`).selectAll().execute()).map(P)}function an(e){return async(t,n,i)=>(await e.updateTable(`client_registration_tokens`).set({used_at_ts:(0,r.isoToDbDate)(i)}).where(`tenant_id`,`=`,t).where(`id`,`=`,n).where(`used_at_ts`,`is`,null).executeTakeFirst()).numUpdatedRows>0}function on(e){return async(t,n,i)=>(await e.updateTable(`client_registration_tokens`).set({revoked_at_ts:(0,r.isoToDbDate)(i)}).where(`tenant_id`,`=`,t).where(`id`,`=`,n).where(`revoked_at_ts`,`is`,null).executeTakeFirst()).numUpdatedRows>0}function sn(e){return async(t,n,i)=>{let a=await e.updateTable(`client_registration_tokens`).set({revoked_at_ts:(0,r.isoToDbDate)(i)}).where(`tenant_id`,`=`,t).where(`client_id`,`=`,n).where(`revoked_at_ts`,`is`,null).executeTakeFirst();return Number(a.numUpdatedRows)}}function cn(e){return async(t,n)=>(await e.deleteFrom(`client_registration_tokens`).where(`tenant_id`,`=`,t).where(`id`,`=`,n).executeTakeFirst()).numDeletedRows>0}function ln(e){return{create:Qt(e),get:tn(e),getByHash:nn(e),listByClient:rn(e),markUsed:an(e),revoke:on(e),revokeByClient:sn(e),remove:cn(e)}}function un(e){return async(t={})=>{let{page:n=0,per_page:i=100,include_totals:a=!1,sort:o,q:s}=t,c=e.selectFrom(`keys`).where(e=>e.or([e(`revoked_at`,`>`,new Date().toISOString()),e(`revoked_at`,`is`,null)]));s&&(c=S(e,c,s,[`kid`,`tenant_id`,`connection`,`fingerprint`,`thumbprint`,`type`]));let l=c.select(e=>e.fn.count(`kid`).as(`count`)),u=n*i;c=c.limit(i).offset(u),o&&(c=c.orderBy(o.sort_by,o.sort_order));let d=await c.selectAll().execute();return a?{signingKeys:d,start:u,limit:i,length:(0,r.getCountAsInt)((await l.executeTakeFirst())?.count??0)}:{signingKeys:d,start:0,limit:0,length:0}}}function dn(e){return async(t,n)=>{let r=n?.importMetadata;await e.insertInto(`keys`).values({...t,kid:r?.id??t.kid,created_at:r?.created_at??new Date().toDateString()}).execute()}}function fn(e){return async(t,n)=>!!(await e.updateTable(`keys`).set(n).where(`kid`,`=`,t).execute()).length}function pn(e){return{create:dn(e),list:un(e),update:fn(e)}}function mn(e){return async(t,r,i)=>{let a=i?.importMetadata,o=new Date().toISOString(),s={status:`pending`,primary:!1,...r,custom_domain_id:a?.id||r.custom_domain_id||(0,n.nanoid)()};return await e.insertInto(`custom_domains`).values({...s,created_at:a?.created_at??o,updated_at:a?.updated_at??o,tenant_id:t,primary:+!!s.primary,domain_metadata:s.domain_metadata?JSON.stringify(s.domain_metadata):void 0}).execute(),s}}function hn(e){return async t=>(await e.selectFrom(`custom_domains`).where(`custom_domains.tenant_id`,`=`,t).selectAll().execute()).map(e=>({...e,primary:e.primary===1,domain_metadata:j(e.domain_metadata,void 0),verification:j(e.verification,void 0)}))}function gn(e){return async(t,n)=>(await e.deleteFrom(`custom_domains`).where(`custom_domains.tenant_id`,`=`,t).where(`custom_domains.custom_domain_id`,`=`,n).execute()).length>0}function _n(e){return async(t,n)=>{let r=await e.selectFrom(`custom_domains`).where(`custom_domains.tenant_id`,`=`,t).where(`custom_domains.custom_domain_id`,`=`,n).selectAll().executeTakeFirst();return r?{...r,primary:r.primary===1,domain_metadata:j(r.domain_metadata,void 0),verification:j(r.verification,void 0)}:null}}function vn(e){return async(t,n,r)=>{let{verification:i,domain_metadata:a,primary:o,...s}=r,c={...s,updated_at:new Date().toISOString(),...o!==void 0&&{primary:+!!o},...a!==void 0&&{domain_metadata:JSON.stringify(a)},...i!==void 0&&{verification:JSON.stringify(i)}};return(await e.updateTable(`custom_domains`).set(c).where(`custom_domains.tenant_id`,`=`,t).where(`custom_domains.custom_domain_id`,`=`,n).execute()).length>0}}function yn(e){return async t=>{let n=await e.selectFrom(`custom_domains`).where(`custom_domains.domain`,`=`,t).selectAll().executeTakeFirst();return n?{...n,primary:n.primary===1,domain_metadata:j(n.domain_metadata,void 0)}:null}}function bn(e){return{create:mn(e),get:_n(e),getByDomain:yn(e),list:hn(e),remove:gn(e),update:vn(e)}}function xn(e){return async t=>{let[n]=await e.selectFrom(`branding`).where(`branding.tenant_id`,`=`,t).selectAll().execute();if(!n)return null;let{tenant_id:i,colors_primary:a,colors_page_background_type:o,colors_page_background_start:s,colors_page_background_end:c,colors_page_background_angle_dev:l,font_url:u,...d}=n;return(0,r.removeNullProperties)({...d,colors:{primary:a,page_background:{type:o,start:s,end:c,angle_deg:l}},font:u?{url:u}:void 0})}}function Sn(e){return async(t,n)=>{let{colors:r,font:i,...a}=n,o=r?.page_background,s=o&&typeof o==`object`?o:void 0;try{await e.insertInto(`branding`).values({...a,colors_primary:r?.primary,colors_page_background_type:s?.type,colors_page_background_start:s?.start,colors_page_background_end:s?.end,colors_page_background_angle_dev:s?.angle_deg,font_url:n.font?.url,tenant_id:t}).execute()}catch{await e.updateTable(`branding`).set({...a,colors_primary:r?.primary,colors_page_background_type:s?.type,colors_page_background_start:s?.start,colors_page_background_end:s?.end,colors_page_background_angle_dev:s?.angle_deg,font_url:n.font?.url}).where(`tenant_id`,`=`,t).execute()}}}function Cn(e){return{get:xn(e),set:Sn(e)}}function wn(e){return async t=>{let n=await e.selectFrom(`universal_login_templates`).select([`body`]).where(`tenant_id`,`=`,t).executeTakeFirst();return n?{body:n.body}:null}}function Tn(e){return async(t,n,r)=>{let i=r?.importMetadata,a=Date.now(),o=i?.created_at?new Date(i.created_at).getTime():a,s=i?.updated_at?new Date(i.updated_at).getTime():a;try{await e.insertInto(`universal_login_templates`).values({tenant_id:t,body:n.body,created_at_ts:o,updated_at_ts:s}).execute()}catch{await e.updateTable(`universal_login_templates`).set({body:n.body,updated_at_ts:s,...i?.created_at?{created_at_ts:o}:{}}).where(`tenant_id`,`=`,t).execute()}}}function En(e){return async t=>{await e.deleteFrom(`universal_login_templates`).where(`tenant_id`,`=`,t).execute()}}function Dn(e){return{get:wn(e),set:Tn(e),delete:En(e)}}function On(e){return async(t,n={})=>{let{page:i=0,per_page:a=50,include_totals:o=!1,sort:s,q:c}=n,l=e.selectFrom(`hooks`).where(`hooks.tenant_id`,`=`,t);if(c&&(l=S(e,l,c,[`url`,`form_id`,`template_id`,`code_id`])),s?.sort_by){let{ref:t}=e.dynamic;l=l.orderBy(t(s.sort_by),s.sort_order)}else l=l.orderBy(`priority`,`desc`).orderBy(`created_at_ts`,`asc`);let u=(await l.offset(i*a).limit(a).selectAll().execute()).map(e=>{let{tenant_id:t,enabled:n,synchronous:i,created_at_ts:a,updated_at_ts:o,metadata:s,...c}=e,l=(0,r.convertDatesToAdapter)({created_at_ts:a,updated_at_ts:o},[`created_at_ts`,`updated_at_ts`]);return(0,r.removeNullProperties)({...c,...l,enabled:!!n,synchronous:!!i,metadata:Fe(s)})});if(!o)return{hooks:u,start:0,limit:0,length:0};let{count:d}=await l.select(e=>e.fn.countAll().as(`count`)).executeTakeFirstOrThrow();return{hooks:u,start:i*a,limit:a,length:(0,r.getCountAsInt)(d)}}}function kn(e){return async(t,n)=>{let i=await e.selectFrom(`hooks`).where(`hooks.tenant_id`,`=`,t).where(`hooks.hook_id`,`=`,n).selectAll().executeTakeFirst();if(!i)return null;let{tenant_id:a,created_at_ts:o,updated_at_ts:s,metadata:c,...l}=i,u=(0,r.convertDatesToAdapter)({created_at_ts:o,updated_at_ts:s},[`created_at_ts`,`updated_at_ts`]);return(0,r.removeNullProperties)({...l,...u,enabled:!!l.enabled,synchronous:!!l.synchronous,metadata:Fe(c)})}}function An(e){return async(t,n)=>(await e.deleteFrom(`hooks`).where(`hooks.tenant_id`,`=`,t).where(`hooks.hook_id`,`=`,n).executeTakeFirst()).numDeletedRows>0}function jn(e){return async(t,n,r)=>{let i=r?.importMetadata,a=new Date().toISOString(),o=i?.created_at??a,s=i?.updated_at??a,c=i?.id??(n.hook_id||h()),{hook_id:l,enabled:u,synchronous:d,metadata:f,...p}=n;return await e.insertInto(`hooks`).values({...p,hook_id:c,tenant_id:t,enabled:+!!u,synchronous:+!!d,metadata:f?JSON.stringify(f):null,created_at_ts:new Date(o).getTime(),updated_at_ts:new Date(s).getTime()}).execute(),{...p,hook_id:c,enabled:u??!1,synchronous:d??!1,...f?{metadata:f}:{},created_at:o,updated_at:s}}}function Mn(e){return async(t,n,r)=>{let{hook_id:i,metadata:a,...o}=r,s={...o,updated_at_ts:Date.now(),enabled:r.enabled===void 0?void 0:+!!r.enabled,synchronous:r.synchronous===void 0?void 0:+!!r.synchronous,...a===void 0?{}:{metadata:a===null?null:JSON.stringify(a)}};return await e.updateTable(`hooks`).set(s).where(`hooks.hook_id`,`=`,n).where(`hooks.tenant_id`,`=`,t).execute(),!0}}function Nn(e){return{create:jn(e),get:kn(e),list:On(e),update:Mn(e),remove:An(e)}}function Pn(e){return async(t,n,r)=>{let i=r?.importMetadata,a=new Date().toISOString(),o=i?.created_at??a,s=i?.updated_at??a,c=i?.id??_();return await e.insertInto(`hook_code`).values({id:c,tenant_id:t,code:n.code,secrets:n.secrets?JSON.stringify(n.secrets):null,created_at_ts:new Date(o).getTime(),updated_at_ts:new Date(s).getTime()}).execute(),{id:c,tenant_id:t,code:n.code,secrets:n.secrets,created_at:o,updated_at:s}}}function Fn(e){return async(t,n)=>{let i=await e.selectFrom(`hook_code`).where(`hook_code.tenant_id`,`=`,t).where(`hook_code.id`,`=`,n).selectAll().executeTakeFirst();if(!i)return null;let{created_at_ts:a,updated_at_ts:o,secrets:s,...c}=i,l=(0,r.convertDatesToAdapter)({created_at_ts:a,updated_at_ts:o},[`created_at_ts`,`updated_at_ts`]);return{...c,...l,secrets:s?(()=>{try{return JSON.parse(s)}catch{console.warn(`Failed to parse secrets for hook_code ${n}`);return}})():void 0}}}function In(e){return async(t,n,r)=>{let i={updated_at_ts:Date.now()};return r.code!==void 0&&(i.code=r.code),r.secrets!==void 0&&(i.secrets=JSON.stringify(r.secrets)),(await e.updateTable(`hook_code`).set(i).where(`hook_code.id`,`=`,n).where(`hook_code.tenant_id`,`=`,t).executeTakeFirst()).numUpdatedRows>0}}function Ln(e){return async(t,n)=>(await e.deleteFrom(`hook_code`).where(`hook_code.tenant_id`,`=`,t).where(`hook_code.id`,`=`,n).executeTakeFirst()).numDeletedRows>0}function Rn(e){return{create:Pn(e),get:Fn(e),update:In(e),remove:Ln(e)}}function zn(e){return async(t,r,i,a)=>{let o=a?.importMetadata,s=new Date().toISOString(),c={themeId:o?.id||i||(0,n.nanoid)(),...r,created_at:o?.created_at??s,updated_at:o?.updated_at??s},l={...c,tenant_id:t};return await e.insertInto(`themes`).values(A(l)).execute(),c}}function Bn(e){return async(t,n)=>(await e.deleteFrom(`themes`).where(`themes.tenant_id`,`=`,t).where(`themes.themeId`,`=`,n).executeTakeFirst()).numDeletedRows>0}function Vn(e){return async(t,n)=>{let i=await e.selectFrom(`themes`).where(`themes.tenant_id`,`=`,t).where(`themes.themeId`,`=`,n).selectAll().executeTakeFirst();return i?(0,r.removeNullProperties)(De({...i,borders_show_widget_shadow:!!i.borders_show_widget_shadow,fonts_body_text_bold:!!i.fonts_body_text_bold,fonts_buttons_text_bold:!!i.fonts_buttons_text_bold,fonts_input_labels_bold:!!i.fonts_input_labels_bold,fonts_links_bold:!!i.fonts_links_bold,fonts_subtitle_bold:!!i.fonts_subtitle_bold,fonts_title_bold:!!i.fonts_title_bold},[`widget`,`colors`,`borders`,`fonts`,`page_background`])):null}}function Hn(e){return async(t,n,r)=>{let{themeId:i,...a}=r,o=A({...a,updated_at:new Date().toISOString()});return await e.updateTable(`themes`).set(o).where(`themes.themeId`,`=`,n).where(`themes.tenant_id`,`=`,t).execute(),!0}}function Un(e){return{create:zn(e),get:Vn(e),remove:Bn(e),update:Hn(e)}}function Wn(e){return async(t,n)=>{let i=await e.selectFrom(`login_sessions`).where(`login_sessions.id`,`=`,n).selectAll().executeTakeFirst();if(!i)return null;let{created_at_ts:o,updated_at_ts:s,expires_at_ts:c,auth_params:l,...u}=i,d=(0,r.convertDatesToAdapter)({created_at_ts:o,updated_at_ts:s,expires_at_ts:c},[`created_at_ts`,`updated_at_ts`,`expires_at_ts`]),f=De((0,r.removeNullProperties)({...u,...d,state:i.state||a.LoginSessionState.PENDING,state_data:i.state_data,failure_reason:i.failure_reason}),[`auth_strategy`]);return f.authParams=typeof l==`string`&&l.length>0?JSON.parse(l):{},a.loginSessionSchema.parse(f)}}var Gn=`0123456789ABCDEFGHJKMNPQRSTVWXYZ`,F=32,Kn=10,I=16;function qn(e){let t=``;for(let n=Kn;n>0;n--)t=Gn.charAt(e%F)+t,e=Math.floor(e/F);return t}function Jn(){let e=new Uint8Array(I);crypto.getRandomValues(e);let t=``;for(let n=0;n<I;n++)t+=Gn.charAt(e[n]%F);return t}function Yn(){return qn(Date.now())+Jn()}function Xn(e){return async(t,n)=>{let i=(0,r.nowIso)(),o={id:Yn(),...n,authorization_url:n.authorization_url?.slice(0,1024),created_at:i,updated_at:i,state:n.state||a.LoginSessionState.PENDING,state_data:n.state_data,failure_reason:n.failure_reason},{authParams:s,...c}=o,l=Date.now(),u=A(c);return delete u.created_at,delete u.updated_at,delete u.expires_at,await e.insertInto(`login_sessions`).values({...u,tenant_id:t,auth_params:JSON.stringify(s),created_at_ts:l,updated_at_ts:l,expires_at_ts:n.expires_at?new Date(n.expires_at).getTime():l+1e3*60*60*24}).execute(),o}}function Zn(e){return async(t,n,i)=>{let{created_at:a,updated_at:o,expires_at:s,authParams:c,...l}=i,u={};if(c!==void 0){let r=(await e.selectFrom(`login_sessions`).where(`login_sessions.id`,`=`,n).where(`login_sessions.tenant_id`,`=`,t).select([`auth_params`]).executeTakeFirst())?.auth_params,i=typeof r==`string`&&r.length>0?JSON.parse(r):{};u={auth_params:JSON.stringify({...i,...c})}}let d=A(l);return delete d.created_at_ts,delete d.updated_at_ts,delete d.expires_at_ts,delete d.id,delete d.tenant_id,(await e.updateTable(`login_sessions`).set({...d,...u,updated_at_ts:Date.now(),...s===void 0?{}:{expires_at_ts:(0,r.isoToDbDate)(s)}}).where(`login_sessions.id`,`=`,n).where(`login_sessions.tenant_id`,`=`,t).execute()).length===1}}function Qn(e){return async(t,n)=>(await e.deleteFrom(`login_sessions`).where(`login_sessions.tenant_id`,`=`,t).where(`login_sessions.id`,`=`,n).execute()).length>0}function $n(e){return{create:Xn(e),get:Wn(e),update:Zn(e),remove:Qn(e)}}function er(e){return async t=>{let[n]=await e.selectFrom(`prompt_settings`).where(`prompt_settings.tenant_id`,`=`,t).selectAll().execute();return(0,r.removeNullProperties)({identifier_first:!!n?.identifier_first,password_first:!!n?.password_first,webauthn_platform_first_factor:!!n?.webauthn_platform_first_factor,show_last_used_connection:!!n?.show_last_used_connection,universal_login_experience:n?.universal_login_experience||`new`})}}function tr(e){let t={};return typeof e.identifier_first==`boolean`&&(t.identifier_first=+!!e.identifier_first),typeof e.password_first==`boolean`&&(t.password_first=+!!e.password_first),typeof e.webauthn_platform_first_factor==`boolean`&&(t.webauthn_platform_first_factor=+!!e.webauthn_platform_first_factor),typeof e.show_last_used_connection==`boolean`&&(t.show_last_used_connection=+!!e.show_last_used_connection),e.universal_login_experience&&(t.universal_login_experience=e.universal_login_experience),t}function nr(e){return async(t,n)=>{let r=tr(n);try{await e.insertInto(`prompt_settings`).values({tenant_id:t,identifier_first:r.identifier_first??1,password_first:r.password_first??0,webauthn_platform_first_factor:r.webauthn_platform_first_factor??0,show_last_used_connection:r.show_last_used_connection??0,universal_login_experience:r.universal_login_experience??`new`}).execute()}catch{if(Object.keys(r).length===0)return;await e.updateTable(`prompt_settings`).set(r).where(`tenant_id`,`=`,t).execute()}}}function rr(e){return{get:er(e),set:nr(e)}}function ir(e){return async t=>{let[n]=await e.selectFrom(`email_providers`).where(`email_providers.tenant_id`,`=`,t).selectAll().execute();if(!n)return null;let{tenant_id:i,credentials:a,settings:o,enabled:s,...c}=n;return(0,r.removeNullProperties)({...c,credentials:JSON.parse(a),settings:JSON.parse(o),enabled:!!s})}}function ar(e){return async(t,n)=>{let{credentials:r,settings:i,enabled:a,...o}=n;await e.updateTable(`email_providers`).set({...o,credentials:r?JSON.stringify(r):void 0,settings:i?JSON.stringify(i):void 0,enabled:a===void 0?void 0:+!!a}).where(`tenant_id`,`=`,t).execute()}}function or(e){return async(t,n,r)=>{let i=r?.importMetadata,a=new Date().toISOString(),{credentials:o,settings:s,enabled:c,...l}=n;await e.insertInto(`email_providers`).values({...l,enabled:+!!c,credentials:JSON.stringify(o),settings:JSON.stringify(s),tenant_id:t,created_at:i?.created_at??a,updated_at:i?.updated_at??a}).execute()}}function sr(e){return async t=>{await e.deleteFrom(`email_providers`).where(`tenant_id`,`=`,t).execute()}}function cr(e){return{get:ir(e),create:or(e),update:ar(e),remove:sr(e)}}function lr(e){let t={template:e.template,body:e.body,from:e.from,subject:e.subject,syntax:e.syntax,includeEmailInRedirect:!!e.include_email_in_redirect,enabled:!!e.enabled};return e.result_url!==null&&e.result_url!==void 0&&(t.resultUrl=e.result_url),e.url_lifetime_in_seconds!==null&&e.url_lifetime_in_seconds!==void 0&&(t.urlLifetimeInSeconds=e.url_lifetime_in_seconds),t}function ur(e){return async(t,n)=>{let r=await e.selectFrom(`email_templates`).where(`tenant_id`,`=`,t).where(`template`,`=`,n).selectAll().executeTakeFirst();return r?a.emailTemplateSchema.parse(lr(r)):null}}function dr(e){return async t=>(await e.selectFrom(`email_templates`).where(`tenant_id`,`=`,t).orderBy(`template`,`asc`).selectAll().execute()).map(e=>a.emailTemplateSchema.parse(lr(e)))}function fr(e){return async(t,n,r)=>{let i=r?.importMetadata,a=new Date().toISOString(),o=i?.created_at??a,s=i?.updated_at??i?.created_at??a;return await e.insertInto(`email_templates`).values({tenant_id:t,template:n.template,body:n.body,from:n.from,subject:n.subject,syntax:n.syntax,result_url:n.resultUrl??null,url_lifetime_in_seconds:n.urlLifetimeInSeconds??null,include_email_in_redirect:+!!n.includeEmailInRedirect,enabled:+!!n.enabled,created_at:o,updated_at:s}).execute(),n}}function pr(e){return async(t,n,r)=>{let i={};if(r.body!==void 0&&(i.body=r.body),r.from!==void 0&&(i.from=r.from),r.subject!==void 0&&(i.subject=r.subject),r.syntax!==void 0&&(i.syntax=r.syntax),r.resultUrl!==void 0&&(i.result_url=r.resultUrl),r.urlLifetimeInSeconds!==void 0&&(i.url_lifetime_in_seconds=r.urlLifetimeInSeconds),r.includeEmailInRedirect!==void 0&&(i.include_email_in_redirect=+!!r.includeEmailInRedirect),r.enabled!==void 0&&(i.enabled=+!!r.enabled),Object.keys(i).length===0)return await e.selectFrom(`email_templates`).where(`tenant_id`,`=`,t).where(`template`,`=`,n).select(`template`).executeTakeFirst()!==void 0;i.updated_at=new Date().toISOString();let a=await e.updateTable(`email_templates`).set(i).where(`tenant_id`,`=`,t).where(`template`,`=`,n).executeTakeFirst();return Number(a.numUpdatedRows??0)>0}}function mr(e){return async(t,n)=>{let r=await e.deleteFrom(`email_templates`).where(`tenant_id`,`=`,t).where(`template`,`=`,n).executeTakeFirst();return Number(r.numDeletedRows??0)>0}}function hr(e){return{get:ur(e),list:dr(e),create:fr(e),update:pr(e),remove:mr(e)}}function gr(e){return async(t,n)=>{let i=await e.selectFrom(`refresh_tokens`).where(`refresh_tokens.tenant_id`,`=`,t).where(`refresh_tokens.id`,`=`,n).selectAll().executeTakeFirst();if(!i)return null;let{tenant_id:a,created_at_ts:o,expires_at_ts:s,idle_expires_at_ts:c,last_exchanged_at_ts:l,revoked_at_ts:u,rotated_at_ts:d,...f}=i,p=(0,r.convertDatesToAdapter)({created_at_ts:o,expires_at_ts:s,idle_expires_at_ts:c,last_exchanged_at_ts:l,revoked_at_ts:u,rotated_at_ts:d},[`created_at_ts`],[`expires_at_ts`,`idle_expires_at_ts`,`last_exchanged_at_ts`,`revoked_at_ts`,`rotated_at_ts`]);return{...f,...p,rotating:!!i.rotating,device:i.device?JSON.parse(i.device):{},resource_servers:i.resource_servers?JSON.parse(i.resource_servers):[]}}}function _r(e){return async(t,n)=>{let i=await e.selectFrom(`refresh_tokens`).where(`refresh_tokens.tenant_id`,`=`,t).where(`refresh_tokens.token_lookup`,`=`,n).selectAll().executeTakeFirst();if(!i)return null;let{tenant_id:a,created_at_ts:o,expires_at_ts:s,idle_expires_at_ts:c,last_exchanged_at_ts:l,revoked_at_ts:u,rotated_at_ts:d,...f}=i,p=(0,r.convertDatesToAdapter)({created_at_ts:o,expires_at_ts:s,idle_expires_at_ts:c,last_exchanged_at_ts:l,revoked_at_ts:u,rotated_at_ts:d},[`created_at_ts`],[`expires_at_ts`,`idle_expires_at_ts`,`last_exchanged_at_ts`,`revoked_at_ts`,`rotated_at_ts`]);return{...f,...p,rotating:!!i.rotating,device:i.device?JSON.parse(i.device):{},resource_servers:i.resource_servers?JSON.parse(i.resource_servers):[]}}}function vr(e){return async(t,n)=>{let i=(0,r.nowIso)(),a={...n,created_at:i},{expires_at:o,idle_expires_at:s,last_exchanged_at:c,rotated_at:l,device:u,resource_servers:d,rotating:f,...p}=n,m=Date.now(),h=(0,r.isoToDbDate)(o),g=s?(0,r.isoToDbDate)(s):null,_=Math.max(h??0,g??0);return await e.transaction().execute(async e=>{await e.insertInto(`refresh_tokens`).values({...p,tenant_id:t,rotating:+!!f,device:JSON.stringify(u),resource_servers:JSON.stringify(d),created_at_ts:m,expires_at_ts:h,idle_expires_at_ts:g,last_exchanged_at_ts:c?(0,r.isoToDbDate)(c):null,rotated_at_ts:l?(0,r.isoToDbDate)(l):null}).execute(),_>0&&n.login_id&&await e.updateTable(`login_sessions`).set({expires_at_ts:_,updated_at_ts:m}).where(`tenant_id`,`=`,t).where(`id`,`=`,n.login_id).where(`expires_at_ts`,`<`,_).execute()}),{...n,...a}}}function yr(e){return async(t,n)=>!!(await e.deleteFrom(`refresh_tokens`).where(`tenant_id`,`=`,t).where(`refresh_tokens.id`,`=`,n).execute()).length}function br(e){return async(t,n,i)=>{let a=(0,r.isoToDbDate)(i),o=await e.updateTable(`refresh_tokens`).set({revoked_at_ts:a}).where(`tenant_id`,`=`,t).where(`login_id`,`=`,n).where(`revoked_at_ts`,`is`,null).executeTakeFirst();return Number(o.numUpdatedRows??0)}}function xr(e){return async(t,n,i)=>{let a=(0,r.isoToDbDate)(i),o=await e.updateTable(`refresh_tokens`).set({revoked_at_ts:a}).where(`tenant_id`,`=`,t).where(`family_id`,`=`,n).where(`revoked_at_ts`,`is`,null).executeTakeFirst();return Number(o.numUpdatedRows??0)}}function Sr(e){return async(t,n,i,a)=>{let{created_at:o,expires_at:s,idle_expires_at:c,last_exchanged_at:l,revoked_at:u,rotated_at:d,device:f,resource_servers:p,rotating:m,...h}=i,g={...h,device:f?JSON.stringify(f):void 0,resource_servers:p?JSON.stringify(p):void 0,rotating:m===void 0?void 0:+!!m,expires_at_ts:s===void 0?void 0:(0,r.isoToDbDate)(s),idle_expires_at_ts:c===void 0?void 0:(0,r.isoToDbDate)(c),last_exchanged_at_ts:l===void 0?void 0:(0,r.isoToDbDate)(l),revoked_at_ts:u===void 0?void 0:(0,r.isoToDbDate)(u),rotated_at_ts:d===void 0?void 0:(0,r.isoToDbDate)(d)},_=a?.loginSessionBump,v=_?(0,r.isoToDbDate)(_.expires_at):null,y=await e.updateTable(`refresh_tokens`).set(g).where(`tenant_id`,`=`,t).where(`refresh_tokens.id`,`=`,n).executeTakeFirst();return _?.login_id&&v&&v>0&&await e.updateTable(`login_sessions`).set({expires_at_ts:v,updated_at_ts:Date.now()}).where(`tenant_id`,`=`,t).where(`id`,`=`,_.login_id).where(`expires_at_ts`,`<`,v).execute().catch(()=>{}),(y?.numUpdatedRows??0n)>0n}}function Cr(e){return async(t,n={})=>{let{page:i=0,per_page:a=50,include_totals:o=!1,sort:s,q:c}=n,l=e.selectFrom(`refresh_tokens`).where(`refresh_tokens.tenant_id`,`=`,t);c&&(l=S(e,l,c,[`token`,`login_id`]));let u=l;if(s&&s.sort_by){let{ref:t}=e.dynamic;u=u.orderBy(t(s.sort_by),s.sort_order)}u=u.offset(i*a).limit(a);let d=(await u.selectAll().execute()).map(e=>{let{tenant_id:t,created_at_ts:n,expires_at_ts:i,idle_expires_at_ts:a,last_exchanged_at_ts:o,revoked_at_ts:s,rotated_at_ts:c,...l}=e,u=(0,r.convertDatesToAdapter)({created_at_ts:n,expires_at_ts:i,idle_expires_at_ts:a,last_exchanged_at_ts:o,revoked_at_ts:s,rotated_at_ts:c},[`created_at_ts`],[`expires_at_ts`,`idle_expires_at_ts`,`last_exchanged_at_ts`,`revoked_at_ts`,`rotated_at_ts`]);return{...l,...u,rotating:!!e.rotating,device:e.device?JSON.parse(e.device):{},resource_servers:e.resource_servers?JSON.parse(e.resource_servers):[]}});if(!o)return{refresh_tokens:d,start:0,limit:0,length:0};let{count:f}=await l.select(e=>e.fn.countAll().as(`count`)).executeTakeFirstOrThrow(),p=(0,r.getCountAsInt)(f);return{refresh_tokens:d,start:i*a,limit:a,length:p}}}function wr(e){return{create:vr(e),get:gr(e),getByLookup:_r(e),list:Cr(e),remove:yr(e),revokeByLoginSession:br(e),revokeFamily:xr(e),update:Sr(e)}}var Tr=10080*60*1e3;function Er(e){return async t=>{let{tenant_id:n,user_id:r}=t||{},i=Date.now()-Tr,a=1e3;try{let t=0;for(;;){let o=e.deleteFrom(`refresh_tokens`).where(e=>e.or([e(`expires_at_ts`,`<`,i),e(`idle_expires_at_ts`,`<`,i)]));n&&(o=o.where(`tenant_id`,`=`,n)),r&&(o=o.where(`user_id`,`=`,r));let s=await o.limit(a).execute(),c=Number(s[0]?.numDeletedRows??0);if(t+=c,c<a)break}let o=0;for(;;){let t=e.deleteFrom(`sessions`).where(e=>e.or([e(`expires_at_ts`,`<`,i),e(`idle_expires_at_ts`,`<`,i)]));n&&(t=t.where(`tenant_id`,`=`,n)),r&&(t=t.where(`user_id`,`=`,r));let s=await t.limit(a).execute(),c=Number(s[0]?.numDeletedRows??0);if(o+=c,c<a)break}let s=0;for(;;){let t=e.deleteFrom(`login_sessions`).where(`expires_at_ts`,`<`,i);n&&(t=t.where(`tenant_id`,`=`,n)),r&&(t=t.where(`user_id`,`=`,r));let o=await t.limit(a).execute(),c=Number(o[0]?.numDeletedRows??0);if(s+=c,c<a)break}(t>0||o>0||s>0)&&console.log(`Session cleanup: deleted ${t} refresh_tokens, ${o} sessions, ${s} login_sessions`)}catch(e){console.error(`Error during session cleanup:`,e)}}}function Dr(e){return async(t,r,i)=>{let o=i?.importMetadata,s=new Date().toISOString(),c=a.formSchema.parse({id:o?.id??(0,n.nanoid)(),...r,created_at:o?.created_at??s,updated_at:o?.updated_at??s});return await e.insertInto(`forms`).values({...c,nodes:JSON.stringify(c.nodes||[]),start:JSON.stringify(c.start||{}),ending:JSON.stringify(c.ending||{}),tenant_id:t}).execute(),a.formSchema.parse(c)}}function Or(e){return async(t,n={})=>{let{page:i=0,per_page:o=50,include_totals:s=!1,q:c}=n,l=e.selectFrom(`forms`).where(`tenant_id`,`=`,t);c&&(l=S(e,l,c,[]));let u=(await l.offset(i*o).limit(o).selectAll().execute()).map(e=>{let t={...e};if(typeof t.nodes==`string`)try{t.nodes=JSON.parse(t.nodes)}catch{}if(typeof t.start==`string`)try{t.start=JSON.parse(t.start)}catch{}if(typeof t.ending==`string`)try{t.ending=JSON.parse(t.ending)}catch{}return a.formSchema.parse((0,r.removeNullProperties)(t))});if(!s)return{forms:u,start:0,limit:0,length:0};let{count:d}=await l.select(e=>e.fn.countAll().as(`count`)).executeTakeFirstOrThrow();return{forms:u,start:i*o,limit:o,length:(0,r.getCountAsInt)(d)}}}function kr(e){return async(t,n)=>{let{numDeletedRows:r}=await e.deleteFrom(`forms`).where(`id`,`=`,n).where(`tenant_id`,`=`,t).executeTakeFirst();return r>0}}function Ar(e){return async(t,n)=>{let i=await e.selectFrom(`forms`).selectAll().where(`forms.id`,`=`,n).where(`tenant_id`,`=`,t).executeTakeFirst();if(!i)return null;let o={...i};if(typeof o.nodes==`string`)try{o.nodes=JSON.parse(o.nodes)}catch{}if(typeof o.start==`string`)try{o.start=JSON.parse(o.start)}catch{}if(typeof o.ending==`string`)try{o.ending=JSON.parse(o.ending)}catch{}return a.formSchema.parse((0,r.removeNullProperties)(o))}}function jr(e){return async(t,n,i)=>{let a={...i,updated_at:new Date().toISOString()};(0,r.stringifyProperties)(i,[`nodes`,`start`,`ending`],a);let{numUpdatedRows:o}=await e.updateTable(`forms`).set(a).where(`id`,`=`,n).where(`tenant_id`,`=`,t).executeTakeFirst();return o>0}}function Mr(e){return{create:Dr(e),get:Ar(e),list:Or(e),remove:kr(e),update:jr(e)}}function Nr(e){return async(t,n,i)=>{let o=i?.importMetadata,s=new Date().toISOString(),c=o?.created_at??s,l=o?.updated_at??s,u={...n,id:o?.id??n.id??g(),created_at:c,updated_at:l},d=a.resourceServerSchema.parse(u),{verificationKey:f,scopes:p,options:m,skip_consent_for_verifiable_first_party_clients:h,allow_offline_access:_,is_system:v,metadata:y,...b}=d,ee={...b,tenant_id:t,scopes:p?JSON.stringify(p):`[]`,options:m?JSON.stringify(m):`{}`,skip_consent_for_verifiable_first_party_clients:+!!h,allow_offline_access:+!!_,is_system:+!!v,metadata:y?JSON.stringify(y):void 0,verification_key:f,created_at:c,updated_at:l};return await e.insertInto(`resource_servers`).values(ee).execute(),(0,r.removeNullProperties)(d)}}function Pr(e){return async(t,n)=>{let i=await e.selectFrom(`resource_servers`).selectAll().where(`tenant_id`,`=`,t).where(`id`,`=`,n).executeTakeFirst();if(!i)return null;let{verification_key:a,scopes:o,options:s,skip_consent_for_verifiable_first_party_clients:c,allow_offline_access:l,is_system:u,metadata:d,...f}=i,p=(0,r.removeNullProperties)({...f,scopes:o?JSON.parse(o):[],options:s?JSON.parse(s):{},skip_consent_for_verifiable_first_party_clients:!!c,allow_offline_access:!!l,is_system:u?!0:void 0,metadata:d?JSON.parse(d):void 0,verificationKey:a});return p.token_lifetime??=86400,p.token_lifetime_for_web??=7200,p}}function Fr(e){return async(t,n={})=>{let{page:i=0,per_page:a=50,include_totals:o=!1,q:s}=n,c=e.selectFrom(`resource_servers`).where(`resource_servers.tenant_id`,`=`,t);if(s){let t=s.trim(),n=t.split(/\s+/),r=n.length===1?n[0]:void 0,i=r?r.match(/^(-)?(name|identifier):(.*)$/):null,a=i?i[3]:``,o=/^(>=|>|<=|<)/.test(a||``);if(i&&!o){let e=!!i[1],t=i[2]===`name`?`resource_servers.name`:`resource_servers.identifier`;c=e?c.where(t,`not like`,`%${a}%`):c.where(t,`like`,`%${a}%`)}else c=S(e,c,t,[`resource_servers.name`,`resource_servers.identifier`])}let l=(await c.offset(i*a).limit(a).selectAll().execute()).map(e=>{let{verification_key:t,scopes:n,options:i,skip_consent_for_verifiable_first_party_clients:a,allow_offline_access:o,is_system:s,metadata:c,...l}=e,u=(0,r.removeNullProperties)({...l,scopes:n?JSON.parse(n):[],options:i?JSON.parse(i):{},skip_consent_for_verifiable_first_party_clients:!!a,allow_offline_access:!!o,is_system:s?!0:void 0,metadata:c?JSON.parse(c):void 0,verificationKey:t});return u.token_lifetime??=86400,u.token_lifetime_for_web??=7200,u});if(!o)return{resource_servers:l,start:0,limit:0,length:0};let{count:u}=await c.select(e=>e.fn.countAll().as(`count`)).executeTakeFirstOrThrow();return{resource_servers:l,start:i*a,limit:a,length:(0,r.getCountAsInt)(u)}}}function Ir(e){return async(t,n)=>{let r=await e.deleteFrom(`resource_servers`).where(`tenant_id`,`=`,t).where(`id`,`=`,n).executeTakeFirst();return Number(r.numDeletedRows)>0}}function Lr(e){return async(t,n,r)=>{let{verificationKey:i,scopes:a,options:o,skip_consent_for_verifiable_first_party_clients:s,allow_offline_access:c,is_system:l,metadata:u,...d}=r,f={...d,updated_at:new Date().toISOString()};if(i!==void 0&&(f.verification_key=i),a!==void 0&&(f.scopes=JSON.stringify(a)),o!==void 0){let r=await e.selectFrom(`resource_servers`).select(`options`).where(`tenant_id`,`=`,t).where(`id`,`=`,n).executeTakeFirst(),i={...r?.options?JSON.parse(r.options):{},...o};f.options=JSON.stringify(i)}u!==void 0&&(f.metadata=JSON.stringify(u)),s!==void 0&&(f.skip_consent_for_verifiable_first_party_clients=+!!s),c!==void 0&&(f.allow_offline_access=+!!c),l!==void 0&&(f.is_system=+!!l);let p=await e.updateTable(`resource_servers`).set(f).where(`tenant_id`,`=`,t).where(`id`,`=`,n).executeTakeFirst();return Number(p.numUpdatedRows)>0}}function Rr(e){return{create:Nr(e),get:Pr(e),list:Fr(e),remove:Ir(e),update:Lr(e)}}function zr(e){return async(t,r,i)=>{let a=i?.importMetadata,o=new Date().toISOString(),s=a?.created_at??o,c=a?.updated_at??o,l=a?.id||r.id||(0,n.nanoid)(),{is_system:u,id:d,metadata:f,...p}=r,m={id:l,...p,tenant_id:t,is_system:+!!u,metadata:f?JSON.stringify(f):void 0,created_at:s,updated_at:c};return await e.insertInto(`roles`).values(m).execute(),{id:l,...p,is_system:u?!0:void 0,metadata:f,created_at:s,updated_at:c}}}function Br(e){return async(t,n)=>{let r=await e.selectFrom(`roles`).selectAll().where(`roles.tenant_id`,`=`,t).where(`roles.id`,`=`,n).executeTakeFirst();if(!r)return null;let{is_system:i,tenant_id:a,metadata:o,...s}=r;return{...s,is_system:i?!0:void 0,metadata:o?JSON.parse(o):void 0}}}function Vr(e){return async(t,n)=>{let i=e.selectFrom(`roles`).where(`roles.tenant_id`,`=`,t),{page:a=0,per_page:o=50,include_totals:s=!1}=n;n.q&&(i=S(e,i,n.q,[`name`]));let c=(await i.offset(a*o).limit(o).selectAll().execute()).map(e=>{let{is_system:t,tenant_id:n,metadata:r,...i}=e;return{...i,is_system:t?!0:void 0,metadata:r?JSON.parse(r):void 0}});if(!s)return{roles:c,start:a*o,limit:o,length:c.length};let{count:l}=await i.select(e=>e.fn.countAll().as(`count`)).executeTakeFirstOrThrow();return{roles:c,start:a*o,limit:o,length:(0,r.getCountAsInt)(l)}}}function Hr(e){return async(t,n,r)=>{let{is_system:i,metadata:a,...o}=r,s={...o,is_system:i===void 0?void 0:+!!i,metadata:a===void 0?void 0:JSON.stringify(a),updated_at:new Date().toISOString()},c=await e.updateTable(`roles`).set(s).where(`roles.tenant_id`,`=`,t).where(`roles.id`,`=`,n).executeTakeFirst();return Number(c.numUpdatedRows)>0}}function Ur(e){return async(t,n)=>{let r=await e.deleteFrom(`roles`).where(`tenant_id`,`=`,t).where(`id`,`=`,n).executeTakeFirst();return Number(r.numDeletedRows)>0}}function Wr(e){return{create:zr(e),get:Br(e),list:Vr(e),update:Hr(e),remove:Ur(e)}}function Gr(e){return async(t,n,r,i)=>{if(r.length===0)return!0;let a=i?.importMetadata,o=new Date().toISOString();try{for(let i of r){if(i.role_id!==n)throw Error(`Permission role_id ${i.role_id} does not match expected role_id ${n}`);let r={tenant_id:t,role_id:i.role_id,resource_server_identifier:i.resource_server_identifier,permission_name:i.permission_name,created_at:a?.created_at??o};try{await e.insertInto(`role_permissions`).values(r).execute()}catch(e){if(e.code===`SQLITE_CONSTRAINT_PRIMARYKEY`||e.code===`SQLITE_CONSTRAINT_UNIQUE`||e.code===`ER_DUP_ENTRY`)continue;throw e}}return!0}catch(e){return console.error(`Error assigning role permissions:`,e),!1}}}function Kr(e){return async(t,n,r)=>{if(r.length===0)return!0;try{return(await Promise.all(r.map(r=>e.deleteFrom(`role_permissions`).where(`tenant_id`,`=`,t).where(`role_id`,`=`,n).where(`resource_server_identifier`,`=`,r.resource_server_identifier).where(`permission_name`,`=`,r.permission_name).executeTakeFirst()))).some(e=>Number(e.numDeletedRows)>0)}catch(e){return console.error(`Error removing role permissions:`,e),!1}}}function qr(e){return async(t,n,r={})=>{let{page:i=0,per_page:a=50,include_totals:o=!1}=r,s=e.selectFrom(`role_permissions`).leftJoin(`resource_servers`,e=>e.onRef(`role_permissions.tenant_id`,`=`,`resource_servers.tenant_id`).onRef(`role_permissions.resource_server_identifier`,`=`,`resource_servers.id`)).select([`role_permissions.role_id`,`role_permissions.resource_server_identifier`,`role_permissions.permission_name`,`role_permissions.created_at`,`resource_servers.name as resource_server_name`]).where(`role_permissions.tenant_id`,`=`,t).where(`role_permissions.role_id`,`=`,n),c=(await s.offset(i*a).limit(a).execute()).map(e=>({role_id:e.role_id,resource_server_identifier:e.resource_server_identifier,resource_server_name:e.resource_server_name||e.resource_server_identifier,permission_name:e.permission_name,description:null,created_at:e.created_at}));return o&&await s.select(e=>e.fn.countAll().as(`count`)).executeTakeFirstOrThrow(),c}}function Jr(e){return{assign:Gr(e),remove:Kr(e),list:qr(e)}}function Yr(e){return async(t,r)=>{let i=new Date().toISOString(),a=r.scope??[],o=r.audience??``,s=await e.selectFrom(`grants`).where(`tenant_id`,`=`,t).where(`user_id`,`=`,r.user_id).where(`client_id`,`=`,r.clientID).where(`audience`,`=`,o).selectAll().executeTakeFirst();if(s){let n=s.scope?JSON.parse(s.scope):[],r=Array.from(new Set([...n,...a]));return await e.updateTable(`grants`).set({scope:JSON.stringify(r),updated_at:i}).where(`tenant_id`,`=`,t).where(`id`,`=`,s.id).execute(),{id:s.id,user_id:s.user_id,clientID:s.client_id,audience:s.audience||void 0,scope:r}}let c=(0,n.nanoid)();return await e.insertInto(`grants`).values({id:c,tenant_id:t,user_id:r.user_id,client_id:r.clientID,audience:o,scope:JSON.stringify(a),created_at:i,updated_at:i}).execute(),{id:c,user_id:r.user_id,clientID:r.clientID,audience:o||void 0,scope:a}}}function Xr(e){return async(t,n,r,i)=>{let a=await e.selectFrom(`grants`).where(`tenant_id`,`=`,t).where(`user_id`,`=`,n).where(`client_id`,`=`,r).where(`audience`,`=`,i??``).selectAll().executeTakeFirst();return a?{id:a.id,user_id:a.user_id,clientID:a.client_id,audience:a.audience||void 0,scope:a.scope?JSON.parse(a.scope):[]}:null}}function Zr(e){return async(t,n={})=>{let{page:i=0,per_page:a=50,include_totals:o=!1,sort:s,q:c}=n,l=e.selectFrom(`grants`).where(`grants.tenant_id`,`=`,t);c&&(l=S(e,l,c,[`user_id`,`client_id`,`audience`]));let u=l;if(s&&s.sort_by){let{ref:t}=e.dynamic;u=u.orderBy(t(s.sort_by),s.sort_order)}u=u.offset(i*a).limit(a);let d=(await u.selectAll().execute()).map(e=>({id:e.id,user_id:e.user_id,clientID:e.client_id,audience:e.audience||void 0,scope:e.scope?JSON.parse(e.scope):[]}));if(!o)return{grants:d,start:0,limit:0,length:0};let{count:f}=await l.select(e=>e.fn.countAll().as(`count`)).executeTakeFirstOrThrow();return{grants:d,start:i*a,limit:a,length:(0,r.getCountAsInt)(f)}}}function Qr(e){return async(t,n)=>(await e.deleteFrom(`grants`).where(`tenant_id`,`=`,t).where(`id`,`=`,n).executeTakeFirst()).numDeletedRows>0}function $r(e){return async(t,n)=>(await e.deleteFrom(`grants`).where(`tenant_id`,`=`,t).where(`user_id`,`=`,n).executeTakeFirst()).numDeletedRows>0}function ei(e){return{create:Yr(e),get:Xr(e),list:Zr(e),remove:Qr(e),removeByUser:$r(e)}}function ti(e){return async(t,n,r,i,a)=>{let o=a?.importMetadata,s=new Date().toISOString();try{let a={tenant_id:t,user_id:n,resource_server_identifier:r.resource_server_identifier,permission_name:r.permission_name,organization_id:i||r.organization_id||``,created_at:o?.created_at??s};return await e.insertInto(`user_permissions`).values(a).execute(),!0}catch(e){return e.code===`SQLITE_CONSTRAINT_PRIMARYKEY`||e.code===`SQLITE_CONSTRAINT_UNIQUE`||e.code===`SQLITE_CONSTRAINT`||e.code===`ER_DUP_ENTRY`||e.message&&e.message.includes(`UNIQUE constraint failed`)||e.message&&e.message.includes(`PRIMARY KEY constraint failed`)?!0:(console.error(`Error creating user permission:`,e),!1)}}}function ni(e){return async(t,n,r,i)=>{try{let a=e.deleteFrom(`user_permissions`).where(`tenant_id`,`=`,t).where(`user_id`,`=`,n).where(`resource_server_identifier`,`=`,r.resource_server_identifier).where(`permission_name`,`=`,r.permission_name);return a=i===void 0?a.where(`organization_id`,`=`,``):a.where(`organization_id`,`=`,i),await a.execute(),!0}catch(e){return console.error(`Error removing user permission:`,e),!1}}}function ri(e){return async(t,n,r,i)=>{let a=e.selectFrom(`user_permissions`).leftJoin(`resource_servers`,e=>e.onRef(`user_permissions.tenant_id`,`=`,`resource_servers.tenant_id`).onRef(`user_permissions.resource_server_identifier`,`=`,`resource_servers.id`)).select([`user_permissions.resource_server_identifier`,`user_permissions.permission_name`,`resource_servers.name as resource_server_name`,`user_permissions.user_id`,`user_permissions.created_at`,`user_permissions.organization_id`]).where(`user_permissions.tenant_id`,`=`,t).where(`user_permissions.user_id`,`=`,n);return i!==void 0&&(a=a.where(`user_permissions.organization_id`,`=`,i)),(await a.execute()).map(e=>({resource_server_identifier:e.resource_server_identifier,permission_name:e.permission_name,description:null,resource_server_name:e.resource_server_name||e.resource_server_identifier,user_id:e.user_id,created_at:e.created_at,organization_id:e.organization_id===``?void 0:e.organization_id}))}}function ii(e){return{create:ti(e),remove:ni(e),list:ri(e)}}function ai(e){let t=ii(e);return{create:(e,n,r,i)=>t.create(e,n,r,i),remove:(e,n,r,i)=>t.remove(e,n,r,i),list:(e,n,r,i)=>t.list(e,n,r,i)}}function oi(e){return async(t,n,r,i)=>{let a=e.selectFrom(`user_roles as ur`).innerJoin(`roles as r`,e=>e.onRef(`ur.role_id`,`=`,`r.id`).onRef(`ur.tenant_id`,`=`,`r.tenant_id`)).select([`r.id`,`r.name`,`r.description`,`r.created_at`,`r.updated_at`]).where(`ur.tenant_id`,`=`,t).where(`ur.user_id`,`=`,n);return i!==void 0&&(a=a.where(`ur.organization_id`,`=`,i)),await a.execute()}}function si(e){return async(t,n,r)=>{let i=e.selectFrom(`user_roles`).select(`user_id`).distinct().where(`tenant_id`,`=`,t).where(`role_id`,`=`,n);if(O(r)){let{rows:e,limit:t,next:n}=await k(i,r,{sortColumn:`user_id`,sortOrder:`asc`,idColumn:`user_id`});return{userIds:e.map(e=>e.user_id),start:0,limit:t,length:e.length,next:n}}let a=r?.page||0,o=r?.per_page||50,s=a*o,c=await i.orderBy(`user_id`,`asc`).limit(o).offset(s).execute(),l=await e.selectFrom(`user_roles`).select(e.fn.count(`user_id`).distinct().as(`count`)).where(`tenant_id`,`=`,t).where(`role_id`,`=`,n).executeTakeFirst();return{userIds:c.map(e=>e.user_id),start:s,limit:o,length:Number(l?.count||0)}}}function ci(e){return async(t,n,r,i,a)=>{let o=a?.importMetadata,s=new Date().toISOString();try{return await e.insertInto(`user_roles`).values({tenant_id:t,user_id:n,role_id:r,organization_id:i||``,created_at:o?.created_at??s}).execute(),!0}catch(e){return e.code===`SQLITE_CONSTRAINT_PRIMARYKEY`||e.code===`SQLITE_CONSTRAINT_UNIQUE`||e.code===`SQLITE_CONSTRAINT`||e.code===`ER_DUP_ENTRY`||e.message&&e.message.includes(`UNIQUE constraint failed`)||e.message&&e.message.includes(`PRIMARY KEY constraint failed`)?!0:(console.error(`Error creating user role:`,e),!1)}}}function li(e){return async(t,n,r,i)=>{try{let a=e.deleteFrom(`user_roles`).where(`tenant_id`,`=`,t).where(`user_id`,`=`,n).where(`role_id`,`=`,r);return a=i===void 0?a.where(`organization_id`,`=`,``):a.where(`organization_id`,`=`,i),await a.execute(),!0}catch(e){return console.error(`Error removing user roles:`,e),!1}}}function ui(e){return{list:oi(e),listUsers:si(e),create:ci(e),remove:li(e)}}function di(e){let t=ui(e);return{list:(e,n,r,i)=>t.list(e,n,r,i),listUsers:(e,n,r)=>t.listUsers(e,n,r),create:(e,n,r,i)=>t.create(e,n,r,i),remove:(e,n,r,i)=>t.remove(e,n,r,i)}}function fi(e){return async(t,n,r)=>{let i=r?.importMetadata,a=new Date().toISOString(),s={...n,id:i?.id||n.id||d(),tenant_id:t,created_at:i?.created_at??a,updated_at:i?.updated_at??a,branding:JSON.stringify(n.branding||{}),metadata:JSON.stringify(n.metadata||{}),enabled_connections:JSON.stringify(n.enabled_connections||[]),token_quota:JSON.stringify(n.token_quota||{})};try{await e.insertInto(`organizations`).values(s).execute()}catch(e){throw e.code===`SQLITE_CONSTRAINT_UNIQUE`||e.code===`ER_DUP_ENTRY`||e.message.includes(`AlreadyExists`)?new o.HTTPException(409,{message:`Organization already exists`}):e}return{...n,id:s.id,created_at:s.created_at,updated_at:s.updated_at}}}function pi(e){return async(t,n)=>{let i=await e.selectFrom(`organizations`).selectAll().where(`tenant_id`,`=`,t).where(`id`,`=`,n).executeTakeFirst();return i||=await e.selectFrom(`organizations`).selectAll().where(`tenant_id`,`=`,t).where(`name`,`=`,n).executeTakeFirst(),i?(0,r.removeNullProperties)({...i,branding:i.branding?JSON.parse(i.branding):{},metadata:i.metadata?JSON.parse(i.metadata):{},enabled_connections:i.enabled_connections?JSON.parse(i.enabled_connections):[],token_quota:i.token_quota?JSON.parse(i.token_quota):{}}):null}}var L=[`name`,`display_name`];function mi(e){return async(t,n)=>{let o=e.selectFrom(`organizations`).where(`tenant_id`,`=`,t);if(n?.q){let t=(0,a.sanitizeLuceneQuery)(n.q,L);t&&(o=S(e,o,t,L))}if(O(n)){let{rows:e,limit:t,next:i}=await k(o.selectAll(),n,{sortColumn:`created_at`,sortOrder:`desc`}),a=e.map(e=>(0,r.removeNullProperties)({...e,branding:e.branding?JSON.parse(e.branding):{},metadata:e.metadata?JSON.parse(e.metadata):{},enabled_connections:e.enabled_connections?JSON.parse(e.enabled_connections):[],token_quota:e.token_quota?JSON.parse(e.token_quota):{}}));return{organizations:a,start:0,limit:t,length:a.length,total:a.length,next:i}}if(n?.sort){let e=n.sort.sort_order===`asc`?`asc`:`desc`,t=n.sort.sort_by;o=[`name`,`display_name`,`created_at`].includes(t)?o.orderBy(t,e):o.orderBy(`created_at`,`desc`)}else o=o.orderBy(`created_at`,`desc`);let s=n?.per_page,c=typeof s==`number`&&Number.isFinite(s)?Math.floor(s):NaN,l=c>=1?c:10,u=0;typeof n?.page==`number`&&Number.isFinite(n.page)&&(u=Math.max(0,Math.floor(n.page)*l)),u>0&&(o=o.offset(u)),o=o.limit(l);let d=await o.selectAll().execute(),f=d.length;if(n?.include_totals){let r=e.selectFrom(`organizations`).where(`tenant_id`,`=`,t);if(n?.q){let t=(0,a.sanitizeLuceneQuery)(n.q,L);t&&(r=S(e,r,t,L))}let o=await r.select(i.sql`count(*)`.as(`count`)).executeTakeFirst();f=Number(o?.count||0)}let p=d.map(e=>(0,r.removeNullProperties)({...e,branding:e.branding?JSON.parse(e.branding):{},metadata:e.metadata?JSON.parse(e.metadata):{},enabled_connections:e.enabled_connections?JSON.parse(e.enabled_connections):[],token_quota:e.token_quota?JSON.parse(e.token_quota):{}}));return{organizations:p,start:u,limit:l,length:p.length,total:f}}}function hi(e){return async(t,n)=>(await e.deleteFrom(`organizations`).where(`tenant_id`,`=`,t).where(`id`,`=`,n).execute()).length>0}function gi(e){return async(t,n,i)=>{let{branding:a,metadata:o,enabled_connections:s,token_quota:c,...l}=i,u={...l,updated_at:new Date().toISOString()};return(0,r.stringifyProperties)(i,[`branding`,`metadata`,`enabled_connections`,`token_quota`],u),(await e.updateTable(`organizations`).set(u).where(`tenant_id`,`=`,t).where(`id`,`=`,n).execute()).length>0}}function _i(e){return{create:fi(e),get:pi(e),list:mi(e),remove:hi(e),update:gi(e)}}function R(e,t){return{connection_id:e.connection_id,assign_membership_on_login:!!e.assign_membership_on_login,show_as_button:!!e.show_as_button,is_signup_enabled:!!e.is_signup_enabled,connection:t?{name:t.name,strategy:t.strategy}:void 0,created_at:e.created_at,updated_at:e.updated_at}}async function z(e,t,n){let r=await e.selectFrom(`connections`).select([`name`,`strategy`]).where(`tenant_id`,`=`,t).where(`id`,`=`,n).executeTakeFirst();if(r)return{name:r.name,strategy:typeof r.strategy==`string`?r.strategy:void 0}}function vi(e){return{async create(t,n,r,i){let a=i?.importMetadata,o=new Date().toISOString(),s={tenant_id:t,organization_id:n,connection_id:r.connection_id,assign_membership_on_login:+!!r.assign_membership_on_login,show_as_button:r.show_as_button===!1?0:1,is_signup_enabled:r.is_signup_enabled===!1?0:1,created_at:a?.created_at??o,updated_at:a?.updated_at??o};return await e.insertInto(`organization_connections`).values(s).execute(),R(s,await z(e,t,r.connection_id))},async list(t,n){let r=await e.selectFrom(`organization_connections`).selectAll().where(`tenant_id`,`=`,t).where(`organization_id`,`=`,n).execute(),i=[];for(let n of r){let r=await z(e,t,n.connection_id);i.push(R(n,r))}return i},async get(t,n,r){let i=await e.selectFrom(`organization_connections`).selectAll().where(`tenant_id`,`=`,t).where(`organization_id`,`=`,n).where(`connection_id`,`=`,r).executeTakeFirst();return i?R(i,await z(e,t,r)):null},async update(t,n,r,i){let a={updated_at:new Date().toISOString()};i.assign_membership_on_login!==void 0&&(a.assign_membership_on_login=+!!i.assign_membership_on_login),i.show_as_button!==void 0&&(a.show_as_button=+!!i.show_as_button),i.is_signup_enabled!==void 0&&(a.is_signup_enabled=+!!i.is_signup_enabled);let o=await e.updateTable(`organization_connections`).set(a).where(`tenant_id`,`=`,t).where(`organization_id`,`=`,n).where(`connection_id`,`=`,r).executeTakeFirst();if(Number(o.numUpdatedRows??0)===0)return null;let s=await e.selectFrom(`organization_connections`).selectAll().where(`tenant_id`,`=`,t).where(`organization_id`,`=`,n).where(`connection_id`,`=`,r).executeTakeFirst();return s?R(s,await z(e,t,r)):null},async remove(t,n,r){let i=await e.deleteFrom(`organization_connections`).where(`tenant_id`,`=`,t).where(`organization_id`,`=`,n).where(`connection_id`,`=`,r).executeTakeFirst();return Number(i.numDeletedRows??0)>0}}}function yi(e){return async(t,r,i)=>{let a=i?.importMetadata,s=new Date().toISOString(),c={id:a?.id??(0,n.nanoid)(),tenant_id:t,user_id:r.user_id,organization_id:r.organization_id,created_at:a?.created_at??s,updated_at:a?.updated_at??s};try{await e.insertInto(`user_organizations`).values(c).execute()}catch(e){throw e.code===`SQLITE_CONSTRAINT_UNIQUE`||e.code===`ER_DUP_ENTRY`?new o.HTTPException(409,{message:`User is already a member of this organization`}):e}return{...c}}}function bi(e){return async(t,n)=>{let r=await e.selectFrom(`user_organizations`).selectAll().where(`id`,`=`,n).where(`tenant_id`,`=`,t).executeTakeFirst();return r?{id:r.id,user_id:r.user_id,organization_id:r.organization_id,created_at:r.created_at,updated_at:r.updated_at}:null}}function xi(e){return async(t,n)=>{let r=e.selectFrom(`user_organizations`).selectAll().where(`tenant_id`,`=`,t);if(n?.q){if(n.q.startsWith(`user_id:`)){let e=n.q.replace(`user_id:`,``);r=r.where(`user_id`,`=`,e)}else if(n.q.startsWith(`organization_id:`)){let e=n.q.replace(`organization_id:`,``);r=r.where(`organization_id`,`=`,e)}}let i=e=>({id:e.id,user_id:e.user_id,organization_id:e.organization_id,created_at:e.created_at,updated_at:e.updated_at});if(O(n)){let{rows:e,limit:t,next:a}=await k(r,n,{sortColumn:`created_at`,sortOrder:`desc`});return{userOrganizations:e.map(i),start:0,limit:t,length:e.length,next:a}}let a=n?.page||0,o=n?.per_page||50,s=a*o,c=await r.orderBy(`created_at`,`desc`).limit(o).offset(s).execute(),l=e.selectFrom(`user_organizations`).select(e.fn.count(`id`).as(`count`)).where(`tenant_id`,`=`,t);if(n?.q){if(n.q.startsWith(`user_id:`)){let e=n.q.replace(`user_id:`,``);l=l.where(`user_id`,`=`,e)}else if(n.q.startsWith(`organization_id:`)){let e=n.q.replace(`organization_id:`,``);l=l.where(`organization_id`,`=`,e)}}let u=await l.executeTakeFirst();return{userOrganizations:c.map(i),start:s,limit:o,length:Number(u?.count||0)}}}function Si(e){return async(t,n,r)=>{let i=r?.page||0,a=r?.per_page||50,o=i*a,s=e.selectFrom(`user_organizations`).innerJoin(`organizations`,e=>e.onRef(`organizations.id`,`=`,`user_organizations.organization_id`).on(`organizations.tenant_id`,`=`,t)).select([`organizations.id`,`organizations.name`,`organizations.display_name`,`organizations.branding`,`organizations.metadata`,`organizations.enabled_connections`,`organizations.token_quota`,`organizations.created_at`,`organizations.updated_at`,`user_organizations.created_at as joined_at`]).where(`user_organizations.tenant_id`,`=`,t).where(`user_organizations.user_id`,`=`,n);s=s.orderBy(`user_organizations.created_at`,`desc`),a>0&&(s=s.limit(a).offset(o));let c=await s.execute(),l=await e.selectFrom(`user_organizations`).innerJoin(`organizations`,e=>e.onRef(`organizations.id`,`=`,`user_organizations.organization_id`).on(`organizations.tenant_id`,`=`,t)).select(e.fn.count(`user_organizations.id`).as(`count`)).where(`user_organizations.tenant_id`,`=`,t).where(`user_organizations.user_id`,`=`,n).executeTakeFirst();return{organizations:c.map(e=>({id:e.id,name:e.name,display_name:e.display_name,branding:e.branding?JSON.parse(e.branding):void 0,metadata:e.metadata?JSON.parse(e.metadata):{},enabled_connections:e.enabled_connections?JSON.parse(e.enabled_connections):[],token_quota:e.token_quota?JSON.parse(e.token_quota):void 0,created_at:e.created_at,updated_at:e.updated_at,joined_at:e.joined_at})),start:o,limit:a,length:Number(l?.count||0)}}}function Ci(e){return async(t,n)=>(await e.deleteFrom(`user_organizations`).where(`id`,`=`,n).where(`tenant_id`,`=`,t).execute()).length>0}function wi(e){return async(t,n,r)=>{let i={...r,updated_at:new Date().toISOString()};return(await e.updateTable(`user_organizations`).set(i).where(`id`,`=`,n).where(`tenant_id`,`=`,t).execute()).length>0}}function Ti(e){return{create:yi(e),get:bi(e),list:xi(e),listUserOrganizations:Si(e),remove:Ci(e),update:wi(e)}}function Ei(e){return async(t,n,r)=>{let i=r?.importMetadata,a=i?.id??n.id??v(),s=i?.created_at??new Date().toISOString(),c=n.ttl_sec||604800,l=new Date(new Date(s).getTime()+c*1e3).toISOString(),u={id:a,tenant_id:t,organization_id:n.organization_id,inviter:JSON.stringify(n.inviter||{}),invitee:JSON.stringify(n.invitee||{}),client_id:n.client_id,connection_id:n.connection_id||null,invitation_url:n.invitation_url,created_at:s,expires_at:l,app_metadata:JSON.stringify(n.app_metadata||{}),user_metadata:JSON.stringify(n.user_metadata||{}),roles:JSON.stringify(n.roles||[]),ticket_id:null,ttl_sec:c,send_invitation_email:n.send_invitation_email??!0?1:0};try{await e.insertInto(`invites`).values(u).execute()}catch(e){throw e.code===`SQLITE_CONSTRAINT_UNIQUE`||e.code===`ER_DUP_ENTRY`||e.message.includes(`AlreadyExists`)?new o.HTTPException(409,{message:`Invite already exists`}):e}return{id:a,organization_id:n.organization_id,inviter:n.inviter,invitee:n.invitee,client_id:n.client_id,connection_id:n.connection_id,invitation_url:n.invitation_url,created_at:s,expires_at:l,app_metadata:n.app_metadata||{},user_metadata:n.user_metadata||{},roles:n.roles||[],ticket_id:void 0,ttl_sec:c,send_invitation_email:n.send_invitation_email??!0}}}function Di(e){return async(t,n)=>{let i=await e.selectFrom(`invites`).selectAll().where(`tenant_id`,`=`,t).where(`id`,`=`,n).executeTakeFirst();return i?(0,r.removeNullProperties)({...Ie(i,{inviter:{},invitee:{},app_metadata:{},user_metadata:{},roles:[]}),send_invitation_email:i.send_invitation_email===1}):null}}function Oi(e){return async(t,n)=>{let i=e.selectFrom(`invites`).selectAll().where(`tenant_id`,`=`,t).orderBy(`created_at`,`desc`);if(n?.per_page&&(i=i.limit(n.per_page)),n?.page){let e=(n.page-1)*(n.per_page||10);i=i.offset(e)}let a=(await i.execute()).map(e=>(0,r.removeNullProperties)({...Ie(e,{inviter:{},invitee:{},app_metadata:{},user_metadata:{},roles:[]}),send_invitation_email:e.send_invitation_email===1}));return{invites:a,start:n?.page?(n.page-1)*(n.per_page||10):0,limit:n?.per_page||a.length,length:a.length}}}function ki(e){return async(t,n)=>(await e.deleteFrom(`invites`).where(`tenant_id`,`=`,t).where(`id`,`=`,n).executeTakeFirst()).numDeletedRows>0n}function Ai(e){return async(t,n,r)=>{let i={};return r.inviter!==void 0&&(i.inviter=JSON.stringify(r.inviter)),r.invitee!==void 0&&(i.invitee=JSON.stringify(r.invitee)),r.client_id!==void 0&&(i.client_id=r.client_id),r.connection_id!==void 0&&(i.connection_id=r.connection_id),r.app_metadata!==void 0&&(i.app_metadata=JSON.stringify(r.app_metadata)),r.user_metadata!==void 0&&(i.user_metadata=JSON.stringify(r.user_metadata)),r.roles!==void 0&&(i.roles=JSON.stringify(r.roles)),r.ttl_sec!==void 0&&(i.ttl_sec=r.ttl_sec,i.expires_at=new Date(Date.now()+r.ttl_sec*1e3).toISOString()),r.send_invitation_email!==void 0&&(i.send_invitation_email=+!!r.send_invitation_email),Object.keys(i).length===0?!0:(await e.updateTable(`invites`).set(i).where(`tenant_id`,`=`,t).where(`id`,`=`,n).executeTakeFirst()).numUpdatedRows>0n}}function ji(e){return{create:Ei(e),get:Di(e),list:Oi(e),remove:ki(e),update:Ai(e)}}var Mi=[`s`],Ni=[`pwd_leak`];function Pi(e){return/^\d{8}$/.test(e)?`${e.slice(0,4)}-${e.slice(4,6)}-${e.slice(6,8)}`:e}function B(e){return e.toISOString().split(`T`)[0]}function Fi(e){return{async getDaily(t,n={}){let{from:r,to:a}=n,o=new Date,s=new Date(o);s.setDate(s.getDate()-30);let c=r?Pi(r):B(s),l=a?Pi(a):B(o),u=i.sql`DATE(logs.date)`;return(await e.selectFrom(`logs`).where(`tenant_id`,`=`,t).where(u,`>=`,c).where(u,`<=`,l).select(e=>[u.as(`date`),e.fn.sum(e.case().when(`type`,`in`,Mi).then(1).else(0).end()).as(`logins`),e.fn.sum(e.case().when(`type`,`=`,`ss`).then(1).else(0).end()).as(`signups`),e.fn.sum(e.case().when(`type`,`in`,Ni).then(1).else(0).end()).as(`leaked_passwords`),e.fn.min(`date`).as(`first_event`),e.fn.max(`date`).as(`last_event`)]).groupBy(u).orderBy(`date`,`asc`).execute()).map(e=>({date:e.date,logins:Number(e.logins)||0,signups:Number(e.signups)||0,leaked_passwords:Number(e.leaked_passwords)||0,created_at:e.first_event||new Date().toISOString(),updated_at:e.last_event||new Date().toISOString()}))},async getActiveUsers(t){let n=new Date;return n.setDate(n.getDate()-30),(await e.selectFrom(`logs`).where(`tenant_id`,`=`,t).where(`date`,`>=`,n.toISOString()).where(`type`,`in`,Mi).where(`user_id`,`is not`,null).select(e=>e.fn.count(`user_id`).distinct().as(`count`)).executeTakeFirstOrThrow()).count||0}}}var Ii={"active-users":[`s`,`seacft`],logins:[`s`,`f`,`fp`],signups:[`ss`,`fs`],"refresh-tokens":[`seacft`,`fertft`],sessions:[`slo`],logouts:[`slo`,`flo`],"password-changes":[`scp`,`fcp`,`scpr`,`fcpr`],"password-migrations":[`spm`],mfa:[`gd_auth_succeed`,`gd_auth_failed`,`gd_auth_rejected`],"email-verifications":[`sv`,`fv`,`svr`,`fvr`],"codes-sent":[`cls`,`cs`]},Li={"active-users":{alias:`active_users`,type:`UInt64`,agg:`uniq`},logins:{alias:`logins`,type:`UInt64`,agg:`count`},signups:{alias:`signups`,type:`UInt64`,agg:`count`},"refresh-tokens":{alias:`refresh_tokens`,type:`UInt64`,agg:`count`},sessions:{alias:`sessions`,type:`UInt64`,agg:`count`},logouts:{alias:`logouts`,type:`UInt64`,agg:`count`},"password-changes":{alias:`password_changes`,type:`UInt64`,agg:`count`},"password-migrations":{alias:`password_migrations`,type:`UInt64`,agg:`count`},mfa:{alias:`mfa`,type:`UInt64`,agg:`count`},"email-verifications":{alias:`email_verifications`,type:`UInt64`,agg:`count`},"codes-sent":{alias:`codes_sent`,type:`UInt64`,agg:`count`}};async function Ri(e){try{return await i.sql`SELECT @@version_comment`.execute(e),`mysql`}catch{return`sqlite`}}function V(e,t){let n=new Intl.DateTimeFormat(`en-US`,{timeZone:e,year:`numeric`,month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hour12:!1}),r={};for(let e of n.formatToParts(t))r[e.type]=e.value;let i=r.hour===`24`?`00`:r.hour,a=Date.UTC(Number(r.year),Number(r.month)-1,Number(r.day),Number(i),Number(r.minute),Number(r.second)),o=Math.round((a-t.getTime())/6e4),s=o>=0?`+`:`-`,c=Math.abs(o);return`${s}${String(Math.floor(c/60)).padStart(2,`0`)}:${String(c%60).padStart(2,`0`)}`}var zi=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`];function Bi(e,t){let n=t.getUTCFullYear(),r=V(e,new Date(Date.UTC(n,0,1)));for(let t=1;t<12;t++){let i=V(e,new Date(Date.UTC(n,t,1)));if(i!==r)throw Error(`Timezone '${e}' is DST-varying (offset ${r} in January vs ${i} in ${zi[t]}) and cannot be bucketed with a single fixed offset by the SQL analytics adapter. Use a fixed-offset zone (e.g. 'UTC' or '+02:00').`)}}function Vi(e){let t=e.startsWith(`-`)?-1:1,[n,r]=e.slice(1).split(`:`);return t*(Number(n)*60+Number(r))}function Hi(e,t){let n;if(t===`+00:00`)n=i.sql`${i.sql.ref(`logs.date`)}`;else{let e=Vi(t),r=`${e>=0?`+`:`-`}${Math.abs(e)} minutes`;n=i.sql`datetime(${i.sql.ref(`logs.date`)}, ${r})`}switch(e){case`hour`:return i.sql`substr(${n}, 1, 13)`;case`month`:return i.sql`substr(${n}, 1, 7)`;case`day`:return i.sql`substr(${n}, 1, 10)`;case`week`:return i.sql`date(substr(${n}, 1, 10), '-' || ((cast(strftime('%w', substr(${n}, 1, 10)) as integer) + 6) % 7) || ' days')`;default:throw Error(`Unsupported interval '${e}' for SQL analytics adapter`)}}function Ui(e,t){if(t===`+00:00`)switch(e){case`hour`:return i.sql`substring(${i.sql.ref(`logs.date`)}, 1, 13)`;case`day`:return i.sql`substring(${i.sql.ref(`logs.date`)}, 1, 10)`;case`month`:return i.sql`substring(${i.sql.ref(`logs.date`)}, 1, 7)`;case`week`:{let e=i.sql`str_to_date(substring(${i.sql.ref(`logs.date`)}, 1, 10), '%Y-%m-%d')`;return i.sql`date_format(date_sub(${e}, interval weekday(${e}) day), '%Y-%m-%d')`}default:throw Error(`Unsupported interval '${e}' for SQL analytics adapter`)}let n=Vi(t),r=i.sql`date_add(str_to_date(substring(${i.sql.ref(`logs.date`)}, 1, 19), '%Y-%m-%dT%H:%i:%s'), interval ${i.sql.lit(n)} minute)`;switch(e){case`hour`:return i.sql`date_format(${r}, '%Y-%m-%dT%H')`;case`day`:return i.sql`date_format(${r}, '%Y-%m-%d')`;case`month`:return i.sql`date_format(${r}, '%Y-%m')`;case`week`:return i.sql`date_format(date_sub(${r}, interval weekday(${r}) day), '%Y-%m-%d')`;default:throw Error(`Unsupported interval '${e}' for SQL analytics adapter`)}}function Wi(e,t,n,r){Bi(t,n);let i=V(t,n);return r===`mysql`?Ui(e,i):Hi(e,i)}function Gi(e){switch(e){case`connection`:return`logs.connection`;case`client_id`:return`logs.client_id`;case`user_type`:return`logs.strategy_type`;case`event`:return`logs.type`;case`time`:throw Error(`time dimension is handled separately`)}}function Ki(e){let t=null,n=()=>(t||=Ri(e),t);return{async query(t,r,a){let o=Date.now(),s=Ii[r],c=Li[r],l=await n(),u=[],d=e.selectFrom(`logs`).where(`tenant_id`,`=`,t);d=d.where(`date`,`>=`,a.from).where(`date`,`<`,a.to),d=d.where(`type`,`in`,s),a.filters.connection?.length&&(d=d.where(`connection`,`in`,a.filters.connection)),a.filters.client_id?.length&&(d=d.where(`client_id`,`in`,a.filters.client_id)),a.filters.user_type?.length&&(d=d.where(`strategy_type`,`in`,a.filters.user_type)),a.filters.user_id?.length&&(d=d.where(`user_id`,`in`,a.filters.user_id));let f=[],p=[];for(let e of a.group_by)if(e===`time`){let e=Wi(a.interval,a.tz,new Date(a.from),l);p.push({alias:`time`,expr:e}),f.push(e),u.push({name:`time`,type:a.interval===`hour`?`DateTime`:`Date`})}else{let t=Gi(e);p.push({alias:e,expr:i.sql`${i.sql.ref(t)}`}),f.push(i.sql`${i.sql.ref(t)}`),u.push({name:e,type:`String`})}let m=c.agg===`uniq`?i.sql`COUNT(DISTINCT ${i.sql.ref(`logs.user_id`)})`:i.sql`COUNT(*)`;p.push({alias:c.alias,expr:m}),u.push({name:c.alias,type:c.type});let h=d.select(p.map(({alias:e,expr:t})=>t.as(e)));if(f.length>0&&(h=h.groupBy(f)),a.order_by){let e=a.order_by.startsWith(`-`),t=e?a.order_by.slice(1):a.order_by;h=h.orderBy(t,e?`desc`:`asc`)}else h=a.group_by.length>0&&a.group_by[0]===`time`?h.orderBy(`time`,`asc`):h.orderBy(c.alias,`desc`);h=h.limit(a.limit).offset(a.offset);let g=(await h.execute()).map(e=>{let t={};for(let n of u){let r=e[n.name];t[n.name]=n.type===`UInt64`?Number(r)||0:r??``}return t});return{meta:u,data:g,rows:g.length,rows_before_limit_at_least:g.length,statistics:{elapsed:(Date.now()-o)/1e3}}},async sessionRetention(t,r){let o=Date.now(),{sinceMs:s}=(0,a.sessionRetentionWindow)(r.weeks,o),c=await n(),l=e=>{let t=e===`used_at_ts`?i.sql`(COALESCE(${i.sql.ref(`used_at_ts`)}, ${i.sql.ref(`created_at_ts`)}) + ${i.sql.lit(a.MONDAY_EPOCH_SHIFT_MS)})`:i.sql`(${i.sql.ref(e)} + ${i.sql.lit(a.MONDAY_EPOCH_SHIFT_MS)})`;return c===`mysql`?i.sql`${t} DIV ${i.sql.lit(a.WEEK_MS)}`:i.sql`${t} / ${i.sql.lit(a.WEEK_MS)}`};return(0,a.buildSessionRetention)((await e.selectFrom(`sessions`).where(`tenant_id`,`=`,t).where(`created_at_ts`,`>=`,s).select([l(`created_at_ts`).as(`created_week`),l(`used_at_ts`).as(`used_week`),i.sql`COUNT(*)`.as(`count`)]).groupBy([l(`created_at_ts`),l(`used_at_ts`)]).execute()).map(e=>({created_week:Math.floor(Number(e.created_week)),used_week:Math.floor(Number(e.used_week)),count:Number(e.count)})),r.weeks,o)}}}function qi(e){return{async get(t,n,r){let i=await e.selectFrom(`custom_text`).selectAll().where(`tenant_id`,`=`,t).where(`prompt`,`=`,n).where(`language`,`=`,r).executeTakeFirst();if(!i)return null;try{return JSON.parse(i.custom_text)}catch{return null}},async set(t,n,r,i,a){let o=a?.importMetadata,s=Date.now(),c=o?.created_at?new Date(o.created_at).getTime():void 0,l=o?.updated_at?new Date(o.updated_at).getTime():c,u=JSON.stringify(i);await e.selectFrom(`custom_text`).select(`tenant_id`).where(`tenant_id`,`=`,t).where(`prompt`,`=`,n).where(`language`,`=`,r).executeTakeFirst()?await e.updateTable(`custom_text`).set({custom_text:u,...c===void 0?{}:{created_at_ts:c},updated_at_ts:l??s}).where(`tenant_id`,`=`,t).where(`prompt`,`=`,n).where(`language`,`=`,r).execute():await e.insertInto(`custom_text`).values({tenant_id:t,prompt:n,language:r,custom_text:u,created_at_ts:c??s,updated_at_ts:l??s}).execute()},async delete(t,n,r){await e.deleteFrom(`custom_text`).where(`tenant_id`,`=`,t).where(`prompt`,`=`,n).where(`language`,`=`,r).execute()},async list(t){return(await e.selectFrom(`custom_text`).select([`prompt`,`language`]).where(`tenant_id`,`=`,t).execute()).map(e=>({prompt:e.prompt,language:e.language}))}}}function Ji(e){return async(t,n,r)=>{let i=r?.importMetadata,a=i?.created_at?new Date(i.created_at).getTime():Date.now(),o=i?.updated_at?new Date(i.updated_at).getTime():a,s=i?.id??Yn();return await e.insertInto(`authentication_methods`).values({id:s,tenant_id:t,user_id:n.user_id,type:n.type,phone_number:n.phone_number,totp_secret:n.totp_secret,credential_id:n.credential_id,public_key:n.public_key,sign_count:n.sign_count,credential_backed_up:n.credential_backed_up==null?void 0:+!!n.credential_backed_up,transports:n.transports?JSON.stringify(n.transports):void 0,friendly_name:n.friendly_name,confirmed:+!!n.confirmed,created_at_ts:a,updated_at_ts:o}).execute(),{id:s,user_id:n.user_id,type:n.type,phone_number:n.phone_number,totp_secret:n.totp_secret,credential_id:n.credential_id,public_key:n.public_key,sign_count:n.sign_count,credential_backed_up:n.credential_backed_up,transports:n.transports,friendly_name:n.friendly_name,confirmed:n.confirmed??!1,created_at:new Date(a).toISOString(),updated_at:new Date(o).toISOString()}}}function Yi(e){return async(t,n)=>{let i=await e.selectFrom(`authentication_methods`).where(`authentication_methods.tenant_id`,`=`,t).where(`authentication_methods.id`,`=`,n).selectAll().executeTakeFirst();return i?{id:i.id,user_id:i.user_id,type:i.type,phone_number:i.phone_number??void 0,totp_secret:i.totp_secret??void 0,credential_id:i.credential_id??void 0,public_key:i.public_key??void 0,sign_count:i.sign_count??void 0,credential_backed_up:i.credential_backed_up==null?void 0:i.credential_backed_up===1,transports:i.transports?JSON.parse(i.transports):void 0,friendly_name:i.friendly_name??void 0,confirmed:i.confirmed===1,created_at:(0,r.dbDateToIsoRequired)(i.created_at_ts),updated_at:(0,r.dbDateToIsoRequired)(i.updated_at_ts)}:null}}function Xi(e){return async(t,n)=>{let i=await e.selectFrom(`authentication_methods`).where(`authentication_methods.tenant_id`,`=`,t).where(`authentication_methods.credential_id`,`=`,n).selectAll().executeTakeFirst();return i?{id:i.id,user_id:i.user_id,type:i.type,phone_number:i.phone_number??void 0,totp_secret:i.totp_secret??void 0,credential_id:i.credential_id??void 0,public_key:i.public_key??void 0,sign_count:i.sign_count??void 0,credential_backed_up:i.credential_backed_up==null?void 0:i.credential_backed_up===1,transports:i.transports?JSON.parse(i.transports):void 0,friendly_name:i.friendly_name??void 0,confirmed:i.confirmed===1,created_at:(0,r.dbDateToIsoRequired)(i.created_at_ts),updated_at:(0,r.dbDateToIsoRequired)(i.updated_at_ts)}:null}}function Zi(e){return async(t,n)=>(await e.selectFrom(`authentication_methods`).where(`authentication_methods.tenant_id`,`=`,t).where(`authentication_methods.user_id`,`=`,n).selectAll().execute()).map(e=>({id:e.id,user_id:e.user_id,type:e.type,phone_number:e.phone_number??void 0,totp_secret:e.totp_secret??void 0,credential_id:e.credential_id??void 0,public_key:e.public_key??void 0,sign_count:e.sign_count??void 0,credential_backed_up:e.credential_backed_up==null?void 0:e.credential_backed_up===1,transports:e.transports?JSON.parse(e.transports):void 0,friendly_name:e.friendly_name??void 0,confirmed:e.confirmed===1,created_at:(0,r.dbDateToIsoRequired)(e.created_at_ts),updated_at:(0,r.dbDateToIsoRequired)(e.updated_at_ts)}))}function Qi(e){return async(t,n,r)=>{let i={updated_at_ts:Date.now()};r.phone_number!==void 0&&(i.phone_number=r.phone_number),r.totp_secret!==void 0&&(i.totp_secret=r.totp_secret),r.credential_id!==void 0&&(i.credential_id=r.credential_id),r.public_key!==void 0&&(i.public_key=r.public_key),r.sign_count!==void 0&&(i.sign_count=r.sign_count),r.credential_backed_up!==void 0&&(i.credential_backed_up=+!!r.credential_backed_up),r.transports!==void 0&&(i.transports=JSON.stringify(r.transports)),r.friendly_name!==void 0&&(i.friendly_name=r.friendly_name),r.confirmed!==void 0&&(i.confirmed=+!!r.confirmed),await e.updateTable(`authentication_methods`).set(i).where(`authentication_methods.tenant_id`,`=`,t).where(`authentication_methods.id`,`=`,n).execute();let a=await Yi(e)(t,n);if(!a)throw Error(`Authentication method ${n} not found`);return a}}function $i(e){return async(t,n)=>(await e.deleteFrom(`authentication_methods`).where(`authentication_methods.tenant_id`,`=`,t).where(`authentication_methods.id`,`=`,n).executeTakeFirst()).numDeletedRows>0}function ea(e){return{create:Ji(e),get:Yi(e),getByCredentialId:Xi(e),list:Zi(e),update:Qi(e),remove:$i(e)}}function ta(e){return async t=>t.length===0?[]:(await e.selectFrom(`outbox_events`).selectAll().where(`id`,`in`,t).execute()).map(e=>({...JSON.parse(e.payload),id:e.id,created_at:e.created_at,processed_at:e.processed_at,retry_count:e.retry_count,next_retry_at:e.next_retry_at,error:e.error}))}function na(e){return async t=>{let n=new Date().toISOString();return(await e.selectFrom(`outbox_events`).selectAll().where(`processed_at`,`is`,null).where(e=>e.or([e(`next_retry_at`,`is`,null),e(`next_retry_at`,`<=`,n)])).where(e=>e.or([e(`claimed_by`,`is`,null),e(`claim_expires_at`,`<=`,n)])).orderBy(`created_at`,`asc`).orderBy(`id`,`asc`).limit(t).execute()).map(e=>({...JSON.parse(e.payload),id:e.id,created_at:e.created_at,processed_at:e.processed_at,retry_count:e.retry_count,next_retry_at:e.next_retry_at,error:e.error}))}}function ra(e){return async(t,n,r)=>{if(t.length===0)return[];let i=new Date().toISOString(),a=new Date(Date.now()+r).toISOString();return await e.updateTable(`outbox_events`).set({claimed_by:n,claim_expires_at:a}).where(`id`,`in`,t).where(`processed_at`,`is`,null).where(e=>e.or([e(`claimed_by`,`is`,null),e(`claim_expires_at`,`<=`,i)])).execute(),(await e.selectFrom(`outbox_events`).select(`id`).where(`id`,`in`,t).where(`claimed_by`,`=`,n).where(`claim_expires_at`,`=`,a).execute()).map(e=>e.id)}}function ia(e){return async t=>{if(t.length===0)return;let n=new Date().toISOString();await e.updateTable(`outbox_events`).set({processed_at:n}).where(`id`,`in`,t).execute()}}function aa(e){return async(t,n,r)=>{await e.updateTable(`outbox_events`).set({error:n,next_retry_at:r,retry_count:i.sql`retry_count + 1`,claimed_by:null,claim_expires_at:null}).where(`id`,`=`,t).execute()}}function oa(e){return async(t,n)=>{let r=new Date().toISOString();await e.updateTable(`outbox_events`).set({processed_at:r,dead_lettered_at:r,final_error:n}).where(`id`,`=`,t).execute()}}function sa(e){return async(t,n={})=>{let{page:r=0,per_page:i=50,include_totals:a=!1}=n,o=(await e.selectFrom(`outbox_events`).selectAll().where(`tenant_id`,`=`,t).where(`dead_lettered_at`,`is not`,null).orderBy(`dead_lettered_at`,`desc`).orderBy(`id`,`asc`).offset(r*i).limit(i).execute()).flatMap(e=>{let t;try{t=JSON.parse(e.payload)}catch(t){return console.error(`Failed to parse outbox payload for event ${e.id}`,t),[]}return[{...t,id:e.id,created_at:e.created_at,processed_at:e.processed_at,retry_count:e.retry_count,next_retry_at:e.next_retry_at,error:e.error,dead_lettered_at:e.dead_lettered_at,final_error:e.final_error}]}),s=o.length;if(a){let[n]=await e.selectFrom(`outbox_events`).select(e=>e.fn.countAll().as(`total`)).where(`tenant_id`,`=`,t).where(`dead_lettered_at`,`is not`,null).execute();s=Number(n?.total??o.length)}return{events:o,start:r*i,limit:i,length:s}}}function ca(e){return async(t,n)=>{let r=await e.updateTable(`outbox_events`).set({processed_at:null,dead_lettered_at:null,final_error:null,retry_count:0,next_retry_at:null,error:null}).where(`id`,`=`,t).where(`tenant_id`,`=`,n).where(`dead_lettered_at`,`is not`,null).executeTakeFirst();return Number(r.numUpdatedRows)>0}}function la(e){return async t=>{let n=await e.deleteFrom(`outbox_events`).where(`processed_at`,`is not`,null).where(`processed_at`,`<`,t).executeTakeFirst();return Number(n.numDeletedRows)}}function ua(e){return{create:he(e),getByIds:ta(e),getUnprocessed:na(e),claimEvents:ra(e),markProcessed:ia(e),markRetry:aa(e),deadLetter:oa(e),listFailed:sa(e),replay:ca(e),cleanup:la(e)}}function H(e){return{id:e.id,name:e.name,type:e.type,status:e.status,sink:JSON.parse(e.sink),filters:e.filters?JSON.parse(e.filters):void 0,isPriority:e.is_priority==null?void 0:e.is_priority===1,created_at:e.created_at,updated_at:e.updated_at}}function da(e){return{async create(t,r,i){let a=i?.importMetadata,o=new Date().toISOString(),s={id:a?.id??`lst_${(0,n.nanoid)()}`,tenant_id:t,name:r.name,type:r.type,status:r.status??`active`,sink:JSON.stringify(r.sink),filters:r.filters?JSON.stringify(r.filters):null,is_priority:r.isPriority===void 0?null:+!!r.isPriority,created_at:a?.created_at??o,updated_at:a?.updated_at??o};return await e.insertInto(`log_streams`).values(s).execute(),H(s)},async get(t,n){let r=await e.selectFrom(`log_streams`).where(`tenant_id`,`=`,t).where(`id`,`=`,n).selectAll().executeTakeFirst();return r?H(r):null},async list(t){return(await e.selectFrom(`log_streams`).where(`tenant_id`,`=`,t).selectAll().execute()).map(H)},async update(t,n,r){let i={updated_at:new Date().toISOString()};return r.name!==void 0&&(i.name=r.name),r.type!==void 0&&(i.type=r.type),r.status!==void 0&&(i.status=r.status),r.sink!==void 0&&(i.sink=JSON.stringify(r.sink)),r.filters!==void 0&&(i.filters=r.filters?JSON.stringify(r.filters):null),r.isPriority!==void 0&&(i.is_priority=+!!r.isPriority),((await e.updateTable(`log_streams`).set(i).where(`tenant_id`,`=`,t).where(`id`,`=`,n).executeTakeFirst())?.numUpdatedRows??0n)>0n},async remove(t,n){return((await e.deleteFrom(`log_streams`).where(`tenant_id`,`=`,t).where(`id`,`=`,n).executeTakeFirst())?.numDeletedRows??0n)>0n}}}function U(e){return{id:e.id,name:e.name,provider:a.migrationProviderTypeSchema.parse(e.provider),connection:e.connection,enabled:e.enabled===1,credentials:JSON.parse(e.credentials),created_at:e.created_at,updated_at:e.updated_at}}function fa(e){return{async create(t,r,i){let a=i?.importMetadata,o=new Date().toISOString(),s=a?.id??r.id??`mig_${(0,n.nanoid)()}`,c=r.enabled??!0,l={id:s,tenant_id:t,name:r.name,provider:r.provider,connection:r.connection,enabled:+!!c,credentials:JSON.stringify(r.credentials),created_at:a?.created_at??o,updated_at:a?.updated_at??o};return await e.insertInto(`migration_sources`).values(l).execute(),U(l)},async get(t,n){let r=await e.selectFrom(`migration_sources`).where(`tenant_id`,`=`,t).where(`id`,`=`,n).selectAll().executeTakeFirst();return r?U(r):null},async list(t){return(await e.selectFrom(`migration_sources`).where(`tenant_id`,`=`,t).selectAll().execute()).map(U)},async update(t,n,r){let i={updated_at:new Date().toISOString()};return r.name!==void 0&&(i.name=r.name),r.provider!==void 0&&(i.provider=r.provider),r.connection!==void 0&&(i.connection=r.connection),r.enabled!==void 0&&(i.enabled=+!!r.enabled),r.credentials!==void 0&&(i.credentials=JSON.stringify(r.credentials)),((await e.updateTable(`migration_sources`).set(i).where(`tenant_id`,`=`,t).where(`id`,`=`,n).executeTakeFirst())?.numUpdatedRows??0n)>0n},async remove(t,n){return((await e.deleteFrom(`migration_sources`).where(`tenant_id`,`=`,t).where(`id`,`=`,n).executeTakeFirst())?.numDeletedRows??0n)>0n}}}function W(e){return{id:e.id,tenant_id:e.tenant_id,custom_domain_id:e.custom_domain_id,priority:e.priority,match:pa(e.match),handlers:ma(e.handlers),created_at:e.created_at,updated_at:e.updated_at}}function pa(e){if(!e)return{path:`/*`};try{let t=JSON.parse(e),n=a.matchSchema.safeParse(t);if(n.success)return n.data}catch{}return{path:`/*`}}function ma(e){if(!e)return[];try{let t=JSON.parse(e);if(!Array.isArray(t))return[];let n=[];for(let e of t){let t=a.handlerConfigSchema.safeParse(e);t.success&&n.push(t.data)}return n}catch{return[]}}function G(e){return{async create(t,r,i){let a=i?.importMetadata,o=new Date().toISOString(),s={id:a?.id??r.id??(0,n.nanoid)(),tenant_id:t,custom_domain_id:r.custom_domain_id,priority:r.priority,match:r.match,handlers:r.handlers,created_at:a?.created_at??o,updated_at:a?.updated_at??o};return await e.insertInto(`proxy_routes`).values({id:s.id,tenant_id:s.tenant_id,custom_domain_id:s.custom_domain_id,priority:s.priority,match:JSON.stringify(s.match),handlers:JSON.stringify(s.handlers),created_at:s.created_at,updated_at:s.updated_at}).execute(),s},async get(t,n){let r=await e.selectFrom(`proxy_routes`).where(`tenant_id`,`=`,t).where(`id`,`=`,n).selectAll().executeTakeFirst();return r?W(r):null},async list(t,n={}){let r=n.page??0,i=n.per_page??50,a=e.selectFrom(`proxy_routes`).where(`tenant_id`,`=`,t);n.custom_domain_id&&(a=a.where(`custom_domain_id`,`=`,n.custom_domain_id));let o=await a.selectAll().orderBy(`priority`,`asc`).orderBy(`created_at`,`asc`).offset(r*i).limit(i).execute();return{proxy_routes:o.map(W),start:r*i,limit:i,length:o.length}},async update(t,n,r){let i={updated_at:new Date().toISOString()};r.priority!==void 0&&(i.priority=r.priority),r.match!==void 0&&(i.match=JSON.stringify(r.match)),r.handlers!==void 0&&(i.handlers=JSON.stringify(r.handlers));let a=await e.updateTable(`proxy_routes`).where(`tenant_id`,`=`,t).where(`id`,`=`,n).set(i).executeTakeFirst();return Number(a.numUpdatedRows)>0},async remove(t,n){let r=await e.deleteFrom(`proxy_routes`).where(`tenant_id`,`=`,t).where(`id`,`=`,n).executeTakeFirst();return Number(r.numDeletedRows)>0}}}async function ha(e,t){let n=t.indexOf(`:`),r=n===-1?t:t.slice(0,n),i=(r.endsWith(`.`)?r.slice(0,-1):r).toLowerCase(),a=await e.selectFrom(`custom_domains`).where(`domain`,`=`,i).select([`custom_domain_id`,`tenant_id`,`domain`]).executeTakeFirst();if(!a)return null;let o=await e.selectFrom(`proxy_routes`).where(`tenant_id`,`=`,a.tenant_id).where(`custom_domain_id`,`=`,a.custom_domain_id).selectAll().orderBy(`priority`,`asc`).orderBy(`created_at`,`asc`).execute();return{tenant_id:a.tenant_id,custom_domain_id:a.custom_domain_id,domain:a.domain,routes:o.map(W)}}function ga(e){return{proxyRoutes:G(e),resolveHost:t=>ha(e,t)}}function _a(e){if(!e)return[];try{let t=JSON.parse(e);if(!Array.isArray(t))return[];let n=[];for(let e of t){let t=a.scimMappingEntrySchema.safeParse(e);t.success&&n.push(t.data)}return n}catch{return[]}}function va(e){if(!e)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`string`):[]}catch{return[]}}function ya(e){return{connection_id:e.connection_id,user_id_attribute:e.user_id_attribute,mapping:_a(e.mapping),created_at:e.created_at,updated_at:e.updated_at}}function ba(e){return{async create(t,n){let r=new Date().toISOString();return await e.insertInto(`scim_configurations`).values({connection_id:n.connection_id,tenant_id:t,user_id_attribute:n.user_id_attribute,mapping:JSON.stringify(n.mapping),created_at:r,updated_at:r}).execute(),{connection_id:n.connection_id,user_id_attribute:n.user_id_attribute,mapping:n.mapping,created_at:r,updated_at:r}},async get(t,n){let r=await e.selectFrom(`scim_configurations`).where(`tenant_id`,`=`,t).where(`connection_id`,`=`,n).selectAll().executeTakeFirst();return r?ya(r):null},async update(t,n,r){let i={updated_at:new Date().toISOString()};r.user_id_attribute!==void 0&&(i.user_id_attribute=r.user_id_attribute),r.mapping!==void 0&&(i.mapping=JSON.stringify(r.mapping));let a=await e.updateTable(`scim_configurations`).where(`tenant_id`,`=`,t).where(`connection_id`,`=`,n).set(i).executeTakeFirst();return Number(a.numUpdatedRows)>0},async remove(t,n){let r=await e.deleteFrom(`scim_configurations`).where(`tenant_id`,`=`,t).where(`connection_id`,`=`,n).executeTakeFirst();return Number(r.numDeletedRows)>0}}}function K(e){return{token_id:e.token_id,connection_id:e.connection_id,token_hash:e.token_hash,scopes:va(e.scopes),valid_until:e.valid_until??void 0,created_at:e.created_at,last_used_at:e.last_used_at??void 0}}function xa(e){return{async create(t,n){let r=new Date().toISOString();return await e.insertInto(`scim_tokens`).values({token_id:n.token_id,tenant_id:t,connection_id:n.connection_id,token_hash:n.token_hash,scopes:JSON.stringify(n.scopes),valid_until:n.valid_until??null,created_at:r,last_used_at:null}).execute(),{token_id:n.token_id,connection_id:n.connection_id,token_hash:n.token_hash,scopes:n.scopes,valid_until:n.valid_until,created_at:r}},async get(t,n){let r=await e.selectFrom(`scim_tokens`).where(`tenant_id`,`=`,t).where(`token_id`,`=`,n).selectAll().executeTakeFirst();return r?K(r):null},async getByHash(t,n){let r=await e.selectFrom(`scim_tokens`).where(`tenant_id`,`=`,t).where(`token_hash`,`=`,n).selectAll().executeTakeFirst();return r?K(r):null},async listByConnection(t,n){return(await e.selectFrom(`scim_tokens`).where(`tenant_id`,`=`,t).where(`connection_id`,`=`,n).selectAll().execute()).map(K)},async markUsed(t,n,r){let i=await e.updateTable(`scim_tokens`).where(`tenant_id`,`=`,t).where(`token_id`,`=`,n).set({last_used_at:r}).executeTakeFirst();return Number(i.numUpdatedRows)>0},async remove(t,n){let r=await e.deleteFrom(`scim_tokens`).where(`tenant_id`,`=`,t).where(`token_id`,`=`,n).executeTakeFirst();return Number(r.numDeletedRows)>0}}}function Sa(e){return{connection_id:e.connection_id,external_id:e.external_id,user_id:e.user_id,created_at:e.created_at}}function Ca(e){return{async create(t,n){let r=new Date().toISOString();return await e.insertInto(`scim_external_ids`).values({tenant_id:t,connection_id:n.connection_id,external_id:n.external_id,user_id:n.user_id,created_at:r}).execute(),{connection_id:n.connection_id,external_id:n.external_id,user_id:n.user_id,created_at:r}},async getByExternalId(t,n,r){let i=await e.selectFrom(`scim_external_ids`).where(`tenant_id`,`=`,t).where(`connection_id`,`=`,n).where(`external_id`,`=`,r).selectAll().executeTakeFirst();return i?Sa(i):null},async getByUserId(t,n,r){let i=await e.selectFrom(`scim_external_ids`).where(`tenant_id`,`=`,t).where(`connection_id`,`=`,n).where(`user_id`,`=`,r).selectAll().executeTakeFirst();return i?Sa(i):null},async remove(t,n,r){let i=await e.deleteFrom(`scim_external_ids`).where(`tenant_id`,`=`,t).where(`connection_id`,`=`,n).where(`user_id`,`=`,r).executeTakeFirst();return Number(i.numDeletedRows)>0}}}function q(e){return a.tenantOperationSchema.parse({id:e.id,tenant_id:e.tenant_id,rollout_id:e.rollout_id,kind:e.kind,status:e.status,current_step:e.current_step,engine:e.engine,engine_instance_id:e.engine_instance_id,target_worker_version:e.target_worker_version,target_database_version:e.target_database_version,error:e.error,initiated_by:e.initiated_by,created_at:e.created_at,updated_at:e.updated_at,finished_at:e.finished_at})}function wa(e){return{async create(t){let r=a.tenantOperationInsertSchema.parse(t),i=new Date().toISOString(),o={id:`op_${(0,n.nanoid)()}`,tenant_id:r.tenant_id,rollout_id:r.rollout_id??null,kind:r.kind,status:`pending`,current_step:null,engine:r.engine,engine_instance_id:r.engine_instance_id??null,target_worker_version:r.target_worker_version??null,target_database_version:r.target_database_version??null,error:null,initiated_by:r.initiated_by??null,created_at:i,updated_at:i,finished_at:null};return await e.insertInto(`tenant_operations`).values(o).execute(),q(o)},async get(t){let n=await e.selectFrom(`tenant_operations`).where(`id`,`=`,t).selectAll().executeTakeFirst();return n?q(n):null},async list(t={}){let n=t.page??0,r=t.per_page??50,i=e.selectFrom(`tenant_operations`);if(t.tenant_id!==void 0&&(i=i.where(`tenant_id`,`=`,t.tenant_id)),t.rollout_id!==void 0&&(i=i.where(`rollout_id`,`=`,t.rollout_id)),t.kind!==void 0&&(i=i.where(`kind`,`=`,t.kind)),t.status!==void 0){let e=Array.isArray(t.status)?t.status:[t.status];i=i.where(`status`,`in`,e)}t.engine!==void 0&&(i=i.where(`engine`,`=`,t.engine)),t.updated_before!==void 0&&(i=i.where(`updated_at`,`<`,t.updated_before));let a=await i.selectAll().orderBy(`created_at`,`desc`).orderBy(`id`,`desc`).offset(n*r).limit(r).execute();return{operations:a.map(q),start:n*r,limit:r,length:a.length}},async update(t,n){let r={updated_at:new Date().toISOString()};n.status!==void 0&&(r.status=n.status),n.current_step!==void 0&&(r.current_step=n.current_step),n.engine_instance_id!==void 0&&(r.engine_instance_id=n.engine_instance_id),n.target_worker_version!==void 0&&(r.target_worker_version=n.target_worker_version),n.target_database_version!==void 0&&(r.target_database_version=n.target_database_version),n.error!==void 0&&(r.error=n.error),n.finished_at!==void 0&&(r.finished_at=n.finished_at);let i=await e.updateTable(`tenant_operations`).where(`id`,`=`,t).set(r).executeTakeFirst();return Number(i.numUpdatedRows)>0},async remove(t){let n=await e.deleteFrom(`tenant_operations`).where(`id`,`=`,t).executeTakeFirst();return Number(n.numDeletedRows)>0}}}var Ta=`0123456789ABCDEFGHJKMNPQRSTVWXYZ`,J=32,Ea=10,Da=4,Oa=10;function ka(e,t){let n=``;for(let r=t;r>0;r--)n=Ta.charAt(e%J)+n,e=Math.floor(e/J);return n}function Aa(){let e=new Uint8Array(Oa);crypto.getRandomValues(e);let t=``;for(let n=0;n<Oa;n++)t+=Ta.charAt(e[n]%J);return t}var ja=0,Y=0;function Ma(){let e=Date.now();return e===ja?Y++:(ja=e,Y=0),ka(e,Ea)+ka(Y,Da)+Aa()}function Na(e){if(!e)return null;try{let t=JSON.parse(e);if(t&&typeof t==`object`&&!Array.isArray(t))return Object.fromEntries(Object.entries(t))}catch{}return null}function Pa(e){return a.tenantOperationEventSchema.parse({id:e.id,operation_id:e.operation_id,step:e.step,outcome:e.outcome,detail:Na(e.detail),attempt:e.attempt,created_at:e.created_at})}function Fa(e){return{async create(t){let n=a.tenantOperationEventInsertSchema.parse(t),r={id:`evt_${Ma()}`,operation_id:n.operation_id,step:n.step,outcome:n.outcome,detail:n.detail?JSON.stringify(n.detail):null,attempt:n.attempt,created_at:new Date().toISOString()};return await e.insertInto(`tenant_operation_events`).values(r).execute(),Pa(r)},async listByOperation(t,n={}){let r=n.page??0,i=n.per_page??100,a=await e.selectFrom(`tenant_operation_events`).where(`operation_id`,`=`,t).selectAll().orderBy(`created_at`,`asc`).orderBy(`id`,`asc`).offset(r*i).limit(i).execute();return{events:a.map(Pa),start:r*i,limit:i,length:a.length}}}}function Ia(e){if(!e)return null;try{return JSON.parse(e)}catch{return null}}function X(e){return a.rolloutSchema.parse({id:e.id,kind:e.kind,status:e.status,target_worker_version:e.target_worker_version,target_database_version:e.target_database_version,wave_size:e.wave_size,canary_tenant_ids:Ia(e.canary_tenant_ids),filter:Ia(e.filter),initiated_by:e.initiated_by,created_at:e.created_at,updated_at:e.updated_at,finished_at:e.finished_at})}function La(e){return{async create(t){let r=a.rolloutInsertSchema.parse(t),i=new Date().toISOString(),o={id:`rol_${(0,n.nanoid)()}`,kind:r.kind,status:`pending`,target_worker_version:r.target_worker_version??null,target_database_version:r.target_database_version??null,wave_size:r.wave_size,canary_tenant_ids:r.canary_tenant_ids?JSON.stringify(r.canary_tenant_ids):null,filter:r.filter?JSON.stringify(r.filter):null,initiated_by:r.initiated_by??null,created_at:i,updated_at:i,finished_at:null};return await e.insertInto(`rollouts`).values(o).execute(),X(o)},async get(t){let n=await e.selectFrom(`rollouts`).where(`id`,`=`,t).selectAll().executeTakeFirst();return n?X(n):null},async list(t={}){let n=t.page??0,r=t.per_page??50,i=await e.selectFrom(`rollouts`).selectAll().orderBy(`created_at`,`desc`).orderBy(`id`,`desc`).offset(n*r).limit(r).execute();return{rollouts:i.map(X),start:n*r,limit:r,length:i.length}},async update(t,n){let r={updated_at:new Date().toISOString()};n.status!==void 0&&(r.status=n.status),n.wave_size!==void 0&&(r.wave_size=n.wave_size),n.canary_tenant_ids!==void 0&&(r.canary_tenant_ids=n.canary_tenant_ids?JSON.stringify(n.canary_tenant_ids):null),n.filter!==void 0&&(r.filter=n.filter?JSON.stringify(n.filter):null),n.finished_at!==void 0&&(r.finished_at=n.finished_at);let i=await e.updateTable(`rollouts`).where(`id`,`=`,t).set(r).executeTakeFirst();return Number(i.numUpdatedRows)>0},async remove(t){let n=await e.deleteFrom(`rollouts`).where(`id`,`=`,t).executeTakeFirst();return Number(n.numDeletedRows)>0}}}var Ra=class{migrations;constructor(e){this.migrations=e}async getMigrations(){return this.migrations}},za=t({down:()=>Ua,up:()=>Ha}),Ba=[{table:`authentication_methods`,name:`fk_authentication_methods_tenants`,columns:[`tenant_id`],references:`tenants`,referencedColumns:[`id`],onDelete:`cascade`},{table:`branding`,name:`fk_branding_tenants`,columns:[`tenant_id`],references:`tenants`,referencedColumns:[`id`],onDelete:`cascade`},{table:`client_grants`,name:`fk_client_grants_tenants`,columns:[`tenant_id`],references:`tenants`,referencedColumns:[`id`],onDelete:`cascade`},{table:`client_registration_tokens`,name:`fk_client_registration_tokens_tenants`,columns:[`tenant_id`],references:`tenants`,referencedColumns:[`id`],onDelete:`cascade`},{table:`clients`,name:`fk_clients_tenants`,columns:[`tenant_id`],references:`tenants`,referencedColumns:[`id`],onDelete:`cascade`},{table:`codes`,name:`fk_codes_tenants`,columns:[`tenant_id`],references:`tenants`,referencedColumns:[`id`],onDelete:`cascade`},{table:`connections`,name:`fk_connections_tenants`,columns:[`tenant_id`],references:`tenants`,referencedColumns:[`id`],onDelete:`cascade`},{table:`custom_domains`,name:`fk_custom_domains_tenants`,columns:[`tenant_id`],references:`tenants`,referencedColumns:[`id`],onDelete:`cascade`},{table:`custom_text`,name:`fk_custom_text_tenants`,columns:[`tenant_id`],references:`tenants`,referencedColumns:[`id`],onDelete:`cascade`},{table:`grants`,name:`fk_grants_tenants`,columns:[`tenant_id`],references:`tenants`,referencedColumns:[`id`],onDelete:`cascade`},{table:`hooks`,name:`fk_hooks_tenants`,columns:[`tenant_id`],references:`tenants`,referencedColumns:[`id`],onDelete:`cascade`},{table:`keys`,name:`fk_keys_tenants`,columns:[`tenant_id`],references:`tenants`,referencedColumns:[`id`],onDelete:`cascade`},{table:`migrations`,name:`fk_migrations_tenants`,columns:[`tenant_id`],references:`tenants`,referencedColumns:[`id`],onDelete:`cascade`},{table:`passwords`,name:`fk_passwords_tenants`,columns:[`tenant_id`],references:`tenants`,referencedColumns:[`id`],onDelete:`cascade`},{table:`themes`,name:`fk_themes_tenants`,columns:[`tenant_id`],references:`tenants`,referencedColumns:[`id`],onDelete:`cascade`},{table:`universal_login_templates`,name:`fk_universal_login_templates_tenants`,columns:[`tenant_id`],references:`tenants`,referencedColumns:[`id`],onDelete:`cascade`},{table:`users`,name:`fk_users_tenants`,columns:[`tenant_id`],references:`tenants`,referencedColumns:[`id`],onDelete:`cascade`},{table:`client_grants`,name:`fk_client_grants_clients`,columns:[`tenant_id`,`client_id`],references:`clients`,referencedColumns:[`tenant_id`,`client_id`],onDelete:`cascade`},{table:`codes`,name:`FK_codes_user_id_tenant_id_constraint`,columns:[`user_id`,`tenant_id`],references:`users`,referencedColumns:[`user_id`,`tenant_id`],onDelete:`cascade`},{table:`email_templates`,name:`email_templates_tenant_fk`,columns:[`tenant_id`],references:`tenants`,referencedColumns:[`id`],onDelete:`cascade`},{table:`grants`,name:`grants_user_id_constraint`,columns:[`user_id`,`tenant_id`],references:`users`,referencedColumns:[`user_id`,`tenant_id`],onDelete:`cascade`},{table:`login_sessions`,name:`login_sessions_session_fk`,columns:[`tenant_id`,`session_id`],references:`sessions`,referencedColumns:[`tenant_id`,`id`],onDelete:`cascade`},{table:`login_sessions`,name:`login_sessions_tenant_fk`,columns:[`tenant_id`],references:`tenants`,referencedColumns:[`id`],onDelete:`cascade`},{table:`organization_connections`,name:`organization_connections_connection_fk`,columns:[`tenant_id`,`connection_id`],references:`connections`,referencedColumns:[`tenant_id`,`id`],onDelete:`cascade`},{table:`organization_connections`,name:`organization_connections_organization_fk`,columns:[`organization_id`],references:`organizations`,referencedColumns:[`id`],onDelete:`cascade`},{table:`passwords`,name:`password_history_user_id_tenant_id_constraint`,columns:[`user_id`,`tenant_id`],references:`users`,referencedColumns:[`user_id`,`tenant_id`],onDelete:`cascade`},{table:`refresh_tokens`,name:`refresh_tokens_client_fk`,columns:[`tenant_id`,`client_id`],references:`clients`,referencedColumns:[`tenant_id`,`client_id`],onDelete:`cascade`},{table:`refresh_tokens`,name:`refresh_tokens_tenant_fk`,columns:[`tenant_id`],references:`tenants`,referencedColumns:[`id`],onDelete:`cascade`},{table:`sessions`,name:`sessions_user_fk`,columns:[`user_id`,`tenant_id`],references:`users`,referencedColumns:[`user_id`,`tenant_id`],onDelete:`cascade`},{table:`tenant_operation_events`,name:`tenant_operation_events_operation_id_constraint`,columns:[`operation_id`],references:`tenant_operations`,referencedColumns:[`id`],onDelete:`cascade`},{table:`user_activity`,name:`user_activity_user_id_constraint`,columns:[`user_id`,`tenant_id`],references:`users`,referencedColumns:[`user_id`,`tenant_id`],onDelete:`cascade`},{table:`user_organizations`,name:`fk_user_organizations_organization`,columns:[`organization_id`],references:`organizations`,referencedColumns:[`id`],onDelete:`cascade`},{table:`user_organizations`,name:`fk_user_organizations_user`,columns:[`tenant_id`,`user_id`],references:`users`,referencedColumns:[`tenant_id`,`user_id`],onDelete:`cascade`}];async function Va(e){try{return await i.sql`select sqlite_version()`.execute(e),!0}catch{return!1}}function Z(e,t){let n=e;for(let e of Ba)e.table===t&&(n=n.addForeignKeyConstraint(e.name,e.columns,e.references,e.referencedColumns,t=>{let n=t;return e.onDelete&&(n=n.onDelete(e.onDelete)),e.onUpdate&&(n=n.onUpdate(e.onUpdate)),n}));return n}async function Ha(e){let t=await Va(e);await e.schema.createTable(`tenants`).addColumn(`id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`audience`,i.sql`varchar(255)`).addColumn(`sender_email`,i.sql`varchar(255)`).addColumn(`sender_name`,i.sql`varchar(255)`).addColumn(`created_at`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`updated_at`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`support_url`,i.sql`varchar(255)`).addColumn(`idle_session_lifetime`,i.sql`int`).addColumn(`session_lifetime`,i.sql`int`).addColumn(`session_cookie`,i.sql`text`).addColumn(`allowed_logout_urls`,i.sql`text`).addColumn(`ephemeral_session_lifetime`,i.sql`int`).addColumn(`idle_ephemeral_session_lifetime`,i.sql`int`).addColumn(`default_redirection_uri`,i.sql`text`).addColumn(`enabled_locales`,i.sql`text`).addColumn(`default_directory`,i.sql`varchar(255)`).addColumn(`error_page`,i.sql`text`).addColumn(`flags`,i.sql`text`).addColumn(`friendly_name`,i.sql`varchar(255)`).addColumn(`picture_url`,i.sql`text`).addColumn(`support_email`,i.sql`varchar(255)`).addColumn(`sandbox_version`,i.sql`varchar(50)`).addColumn(`sandbox_versions_available`,i.sql`text`).addColumn(`legacy_sandbox_version`,i.sql`varchar(50)`).addColumn(`change_password`,i.sql`text`).addColumn(`guardian_mfa_page`,i.sql`text`).addColumn(`device_flow`,i.sql`text`).addColumn(`default_token_quota`,i.sql`text`).addColumn(`default_audience`,i.sql`varchar(255)`).addColumn(`default_organization`,i.sql`varchar(255)`).addColumn(`sessions`,i.sql`text`).addColumn(`oidc_logout`,i.sql`text`).addColumn(`allow_organization_name_in_authentication_api`,i.sql`int`).addColumn(`customize_mfa_in_postlogin_action`,i.sql`int`).addColumn(`acr_values_supported`,i.sql`text`).addColumn(`mtls`,i.sql`text`).addColumn(`pushed_authorization_requests_supported`,i.sql`int`).addColumn(`authorization_response_iss_parameter_supported`,i.sql`int`).addColumn(`mfa`,i.sql`text`).addColumn(`attack_protection`,i.sql`text`).addColumn(`default_client_id`,i.sql`varchar(255)`).addColumn(`deployment_type`,i.sql`varchar(16)`,e=>e.notNull().defaultTo(`shared`)).addColumn(`provisioning_state`,i.sql`varchar(16)`,e=>e.notNull().defaultTo(`ready`)).addColumn(`provisioning_error`,i.sql`varchar(2048)`).addColumn(`provisioning_state_changed_at`,i.sql`varchar(35)`).addColumn(`bundle_configuration`,i.sql`varchar(64)`).addColumn(`worker_version`,i.sql`varchar(64)`).addColumn(`worker_script_name`,i.sql`varchar(255)`).addColumn(`storage_kind`,i.sql`varchar(32)`).addColumn(`d1_database_id`,i.sql`varchar(64)`).addColumn(`database_version`,i.sql`varchar(64)`).addPrimaryKeyConstraint(`tenants_pk`,[`id`]).execute(),await e.schema.createTable(`action_executions`).addColumn(`id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`trigger_id`,i.sql`varchar(64)`,e=>e.notNull()).addColumn(`status`,i.sql`varchar(32)`,e=>e.notNull()).addColumn(`results`,i.sql`text`,e=>e.notNull()).addColumn(`logs`,i.sql`text`).addColumn(`created_at_ts`,i.sql`bigint`,e=>e.notNull()).addColumn(`updated_at_ts`,i.sql`bigint`,e=>e.notNull()).addPrimaryKeyConstraint(`action_executions_pk`,[`id`]).execute(),await e.schema.createTable(`action_versions`).addColumn(`id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`action_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`number`,i.sql`int`,e=>e.notNull()).addColumn(`code`,i.sql`text`,e=>e.notNull()).addColumn(`runtime`,i.sql`varchar(50)`).addColumn(`secrets`,i.sql`text`).addColumn(`dependencies`,i.sql`text`).addColumn(`supported_triggers`,i.sql`text`).addColumn(`deployed`,i.sql`int`,e=>e.notNull().defaultTo(0)).addColumn(`created_at_ts`,i.sql`bigint`,e=>e.notNull()).addColumn(`updated_at_ts`,i.sql`bigint`,e=>e.notNull()).addPrimaryKeyConstraint(`action_versions_pk`,[`id`]).execute(),await e.schema.createTable(`actions`).addColumn(`id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`name`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`code`,i.sql`text`,e=>e.notNull()).addColumn(`runtime`,i.sql`varchar(50)`).addColumn(`status`,i.sql`varchar(50)`,e=>e.defaultTo(`built`)).addColumn(`secrets`,i.sql`text`).addColumn(`dependencies`,i.sql`text`).addColumn(`supported_triggers`,i.sql`text`).addColumn(`deployed_at_ts`,i.sql`bigint`).addColumn(`created_at_ts`,i.sql`bigint`,e=>e.notNull()).addColumn(`updated_at_ts`,i.sql`bigint`,e=>e.notNull()).addColumn(`is_system`,i.sql`int`,e=>e.notNull().defaultTo(0)).addColumn(`inherit`,i.sql`int`,e=>e.notNull().defaultTo(0)).addPrimaryKeyConstraint(`actions_pk`,[`id`]).execute();{let n=e.schema.createTable(`authentication_methods`).addColumn(`id`,i.sql`varchar(26)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`user_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`type`,i.sql`varchar(32)`,e=>e.notNull()).addColumn(`phone_number`,i.sql`varchar(32)`).addColumn(`totp_secret`,i.sql`varchar(255)`).addColumn(`confirmed`,i.sql`int`,e=>e.notNull().defaultTo(0)).addColumn(`created_at_ts`,i.sql`bigint`,e=>e.notNull()).addColumn(`updated_at_ts`,i.sql`bigint`,e=>e.notNull()).addColumn(`credential_id`,i.sql`varchar(512)`).addColumn(`public_key`,i.sql`text`).addColumn(`sign_count`,i.sql`int`).addColumn(`credential_backed_up`,i.sql`int`).addColumn(`transports`,i.sql`varchar(512)`).addColumn(`friendly_name`,i.sql`varchar(255)`).addPrimaryKeyConstraint(`authentication_methods_pk`,[`id`]);t&&(n=Z(n,`authentication_methods`)),await n.execute()}{let n=e.schema.createTable(`branding`).addColumn(`tenant_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`logo_url`,i.sql`varchar(512)`).addColumn(`favicon_url`,i.sql`varchar(512)`).addColumn(`font_url`,i.sql`varchar(512)`).addColumn(`colors_primary`,i.sql`varchar(8)`).addColumn(`colors_page_background_type`,i.sql`varchar(32)`).addColumn(`colors_page_background_start`,i.sql`varchar(8)`).addColumn(`colors_page_background_end`,i.sql`varchar(8)`).addColumn(`colors_page_background_angle_dev`,i.sql`int`).addColumn(`dark_mode`,i.sql`varchar(8)`).addPrimaryKeyConstraint(`branding_pk`,[`tenant_id`]);t&&(n=Z(n,`branding`)),await n.execute()}{let n=e.schema.createTable(`clients`).addColumn(`client_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`name`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`description`,i.sql`varchar(140)`).addColumn(`global`,i.sql`int`,e=>e.notNull().defaultTo(0)).addColumn(`client_secret`,i.sql`varchar(255)`).addColumn(`app_type`,i.sql`varchar(64)`,e=>e.defaultTo(`regular_web`)).addColumn(`logo_uri`,i.sql`varchar(2083)`).addColumn(`is_first_party`,i.sql`int`,e=>e.notNull().defaultTo(0)).addColumn(`oidc_conformant`,i.sql`int`,e=>e.notNull().defaultTo(1)).addColumn(`callbacks`,i.sql`text`,e=>e.notNull()).addColumn(`allowed_origins`,i.sql`text`,e=>e.notNull()).addColumn(`web_origins`,i.sql`text`,e=>e.notNull()).addColumn(`client_aliases`,i.sql`text`,e=>e.notNull()).addColumn(`allowed_clients`,i.sql`text`,e=>e.notNull()).addColumn(`allowed_logout_urls`,i.sql`text`,e=>e.notNull()).addColumn(`session_transfer`,i.sql`text`,e=>e.notNull()).addColumn(`oidc_logout`,i.sql`text`,e=>e.notNull()).addColumn(`grant_types`,i.sql`text`,e=>e.notNull()).addColumn(`jwt_configuration`,i.sql`text`,e=>e.notNull()).addColumn(`signing_keys`,i.sql`text`,e=>e.notNull()).addColumn(`encryption_key`,i.sql`text`,e=>e.notNull()).addColumn(`sso`,i.sql`int`,e=>e.notNull().defaultTo(0)).addColumn(`sso_disabled`,i.sql`int`,e=>e.notNull().defaultTo(1)).addColumn(`cross_origin_authentication`,i.sql`int`,e=>e.notNull().defaultTo(0)).addColumn(`cross_origin_loc`,i.sql`varchar(2083)`).addColumn(`custom_login_page_on`,i.sql`int`,e=>e.notNull().defaultTo(0)).addColumn(`custom_login_page`,i.sql`text`).addColumn(`custom_login_page_preview`,i.sql`text`).addColumn(`form_template`,i.sql`text`).addColumn(`addons`,i.sql`text`,e=>e.notNull()).addColumn(`token_endpoint_auth_method`,i.sql`varchar(64)`,e=>e.defaultTo(`client_secret_basic`)).addColumn(`client_metadata`,i.sql`text`,e=>e.notNull()).addColumn(`mobile`,i.sql`text`,e=>e.notNull()).addColumn(`initiate_login_uri`,i.sql`varchar(2083)`).addColumn(`native_social_login`,i.sql`text`,e=>e.notNull()).addColumn(`refresh_token`,i.sql`text`,e=>e.notNull()).addColumn(`default_organization`,i.sql`text`,e=>e.notNull()).addColumn(`organization_usage`,i.sql`varchar(32)`,e=>e.defaultTo(`deny`)).addColumn(`organization_require_behavior`,i.sql`varchar(32)`,e=>e.defaultTo(`no_prompt`)).addColumn(`client_authentication_methods`,i.sql`text`,e=>e.notNull()).addColumn(`require_pushed_authorization_requests`,i.sql`int`,e=>e.notNull().defaultTo(0)).addColumn(`require_proof_of_possession`,i.sql`int`,e=>e.notNull().defaultTo(0)).addColumn(`signed_request_object`,i.sql`text`,e=>e.notNull()).addColumn(`compliance_level`,i.sql`varchar(64)`).addColumn(`par_request_expiry`,i.sql`int`).addColumn(`token_quota`,i.sql`text`,e=>e.notNull()).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`updated_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`connections`,i.sql`text`).addColumn(`auth0_conformant`,i.sql`int`,e=>e.defaultTo(1)).addColumn(`owner_user_id`,i.sql`varchar(255)`).addColumn(`registration_type`,i.sql`varchar(32)`).addColumn(`registration_metadata`,i.sql`text`).addColumn(`user_linking_mode`,i.sql`varchar(16)`).addColumn(`hide_sign_up_disabled_error`,i.sql`int`,e=>e.notNull().defaultTo(0)).addPrimaryKeyConstraint(`clients_pk`,[`tenant_id`,`client_id`]);t&&(n=Z(n,`clients`)),await n.execute()}{let n=e.schema.createTable(`client_grants`).addColumn(`id`,i.sql`varchar(21)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`client_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`audience`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`scope`,i.sql`text`).addColumn(`organization_usage`,i.sql`varchar(32)`).addColumn(`allow_any_organization`,i.sql`int`,e=>e.defaultTo(0)).addColumn(`is_system`,i.sql`int`,e=>e.defaultTo(0)).addColumn(`subject_type`,i.sql`varchar(32)`).addColumn(`authorization_details_types`,i.sql`text`).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`updated_at`,i.sql`varchar(35)`,e=>e.notNull()).addPrimaryKeyConstraint(`client_grants_pk`,[`tenant_id`,`id`]);t&&(n=Z(n,`client_grants`)),await n.execute()}{let n=e.schema.createTable(`client_registration_tokens`).addColumn(`id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`token_hash`,i.sql`varchar(64)`,e=>e.notNull()).addColumn(`type`,i.sql`varchar(8)`,e=>e.notNull()).addColumn(`client_id`,i.sql`varchar(191)`).addColumn(`sub`,i.sql`varchar(255)`).addColumn(`constraints`,i.sql`text`).addColumn(`single_use`,i.sql`int`,e=>e.notNull().defaultTo(0)).addColumn(`used_at_ts`,i.sql`bigint`).addColumn(`expires_at_ts`,i.sql`bigint`).addColumn(`created_at_ts`,i.sql`bigint`,e=>e.notNull()).addColumn(`revoked_at_ts`,i.sql`bigint`).addPrimaryKeyConstraint(`client_registration_tokens_pk`,[`id`]);t&&(n=Z(n,`client_registration_tokens`)),await n.execute()}{let n=e.schema.createTable(`users`).addColumn(`tenant_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`email`,i.sql`varchar(255)`).addColumn(`given_name`,i.sql`varchar(255)`).addColumn(`family_name`,i.sql`varchar(255)`).addColumn(`nickname`,i.sql`varchar(255)`).addColumn(`name`,i.sql`varchar(255)`).addColumn(`picture`,i.sql`text`).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`updated_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`linked_to`,i.sql`varchar(255)`).addColumn(`provider`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`connection`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`email_verified`,i.sql`tinyint(1)`,e=>e.notNull()).addColumn(`is_social`,i.sql`tinyint(1)`,e=>e.notNull()).addColumn(`app_metadata`,i.sql`text`,e=>e.notNull().defaultTo(i.sql`('{}')`)).addColumn(`profileData`,i.sql`text`).addColumn(`locale`,i.sql`varchar(64)`).addColumn(`user_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`phone_number`,i.sql`varchar(17)`).addColumn(`phone_verified`,i.sql`tinyint(1)`).addColumn(`username`,i.sql`varchar(128)`).addColumn(`user_metadata`,i.sql`text`).addColumn(`middle_name`,i.sql`varchar(100)`).addColumn(`profile`,i.sql`text`).addColumn(`website`,i.sql`text`).addColumn(`gender`,i.sql`varchar(50)`).addColumn(`birthdate`,i.sql`varchar(10)`).addColumn(`zoneinfo`,i.sql`varchar(100)`).addColumn(`preferred_username`,i.sql`varchar(255)`).addColumn(`address`,i.sql`text`).addColumn(`registration_completed_at`,i.sql`varchar(35)`).addPrimaryKeyConstraint(`users_pk`,[`tenant_id`,`user_id`]);t&&(n=Z(n,`users`)),await n.execute()}{let n=e.schema.createTable(`codes`).addColumn(`code_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`user_id`,i.sql`varchar(255)`).addColumn(`login_id`,i.sql`varchar(255)`).addColumn(`connection_id`,i.sql`varchar(255)`).addColumn(`code_type`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`created_at`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`expires_at`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`used_at`,i.sql`varchar(255)`).addColumn(`code_verifier`,i.sql`varchar(128)`).addColumn(`code_challenge`,i.sql`varchar(128)`).addColumn(`code_challenge_method`,i.sql`varchar(5)`).addColumn(`redirect_uri`,i.sql`varchar(1024)`).addColumn(`nonce`,i.sql`varchar(1024)`).addColumn(`state`,i.sql`varchar(2048)`).addColumn(`otp`,i.sql`varchar(32)`).addPrimaryKeyConstraint(`codes_pk`,[`code_id`,`code_type`,`tenant_id`]);t&&(n=Z(n,`codes`)),await n.execute()}{let n=e.schema.createTable(`connections`).addColumn(`id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`name`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`response_type`,i.sql`varchar(255)`).addColumn(`response_mode`,i.sql`varchar(255)`).addColumn(`strategy`,i.sql`varchar(64)`).addColumn(`options`,i.sql`varchar(8192)`,e=>e.notNull().defaultTo(`{}`)).addColumn(`created_at`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`updated_at`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`display_name`,i.sql`varchar(255)`).addColumn(`is_domain_connection`,i.sql`int`).addColumn(`show_as_button`,i.sql`int`).addColumn(`metadata`,i.sql`varchar(4096)`).addColumn(`is_system`,i.sql`int`,e=>e.notNull().defaultTo(0)).addPrimaryKeyConstraint(`connections_pk`,[`tenant_id`,`id`]);t&&(n=Z(n,`connections`)),await n.execute()}await e.schema.createTable(`control_plane_comm_keys`).addColumn(`kid`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`public_jwk`,i.sql`text`,e=>e.notNull()).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`revoked_at`,i.sql`varchar(35)`).addPrimaryKeyConstraint(`control_plane_comm_keys_pk`,[`kid`]).execute();{let n=e.schema.createTable(`custom_domains`).addColumn(`custom_domain_id`,i.sql`varchar(256)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`domain`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`primary`,i.sql`tinyint(1)`,e=>e.notNull()).addColumn(`status`,i.sql`varchar(50)`,e=>e.notNull()).addColumn(`type`,i.sql`varchar(50)`,e=>e.notNull()).addColumn(`origin_domain_name`,i.sql`varchar(255)`).addColumn(`verification`,i.sql`varchar(2048)`).addColumn(`custom_client_ip_header`,i.sql`varchar(50)`).addColumn(`tls_policy`,i.sql`varchar(50)`).addColumn(`domain_metadata`,i.sql`varchar(2048)`).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`updated_at`,i.sql`varchar(35)`,e=>e.notNull()).addPrimaryKeyConstraint(`custom_domains_pk`,[`custom_domain_id`]);t&&(n=Z(n,`custom_domains`)),await n.execute()}{let n=e.schema.createTable(`custom_text`).addColumn(`tenant_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`prompt`,i.sql`varchar(64)`,e=>e.notNull()).addColumn(`language`,i.sql`varchar(16)`,e=>e.notNull()).addColumn(`custom_text`,i.sql`text`,e=>e.notNull()).addColumn(`created_at_ts`,i.sql`bigint`,e=>e.notNull()).addColumn(`updated_at_ts`,i.sql`bigint`,e=>e.notNull()).addPrimaryKeyConstraint(`custom_text_pk`,[`tenant_id`,`prompt`,`language`]);t&&(n=Z(n,`custom_text`)),await n.execute()}await e.schema.createTable(`email_providers`).addColumn(`tenant_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`name`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`enabled`,i.sql`tinyint(1)`,e=>e.notNull()).addColumn(`default_from_address`,i.sql`varchar(255)`).addColumn(`credentials`,i.sql`varchar(2048)`,e=>e.notNull().defaultTo(`{}`)).addColumn(`settings`,i.sql`varchar(2048)`,e=>e.notNull().defaultTo(`{}`)).addColumn(`created_at`,i.sql`varchar(29)`,e=>e.notNull()).addColumn(`updated_at`,i.sql`varchar(29)`,e=>e.notNull()).addPrimaryKeyConstraint(`email_providers_pk`,[`tenant_id`]).execute();{let n=e.schema.createTable(`email_templates`).addColumn(`tenant_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`template`,i.sql`varchar(64)`,e=>e.notNull()).addColumn(`body`,i.sql`text`,e=>e.notNull()).addColumn(`from`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`subject`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`syntax`,i.sql`varchar(16)`,e=>e.notNull().defaultTo(`liquid`)).addColumn(`result_url`,i.sql`varchar(2048)`).addColumn(`url_lifetime_in_seconds`,i.sql`int`).addColumn(`include_email_in_redirect`,i.sql`int`,e=>e.notNull().defaultTo(0)).addColumn(`enabled`,i.sql`int`,e=>e.notNull().defaultTo(1)).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`updated_at`,i.sql`varchar(35)`,e=>e.notNull()).addPrimaryKeyConstraint(`email_templates_pk`,[`tenant_id`,`template`]);t&&(n=Z(n,`email_templates`)),await n.execute()}await e.schema.createTable(`flows`).addColumn(`id`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`name`,i.sql`varchar(150)`,e=>e.notNull()).addColumn(`actions`,i.sql`text`).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`updated_at`,i.sql`varchar(35)`,e=>e.notNull()).addPrimaryKeyConstraint(`flows_pk`,[`id`]).execute(),await e.schema.createTable(`forms`).addColumn(`id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`name`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`messages`,i.sql`varchar(255)`).addColumn(`languages`,i.sql`varchar(255)`).addColumn(`translations`,i.sql`varchar(4096)`).addColumn(`nodes`,i.sql`varchar(4096)`).addColumn(`start`,i.sql`varchar(255)`).addColumn(`ending`,i.sql`varchar(255)`).addColumn(`style`,i.sql`varchar(1042)`).addColumn(`created_at`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`updated_at`,i.sql`varchar(255)`,e=>e.notNull()).addPrimaryKeyConstraint(`forms_pk`,[`id`]).execute();{let n=e.schema.createTable(`grants`).addColumn(`id`,i.sql`varchar(21)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`user_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`client_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`audience`,i.sql`varchar(100)`,e=>e.notNull().defaultTo(``)).addColumn(`scope`,i.sql`text`,e=>e.notNull()).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`updated_at`,i.sql`varchar(35)`,e=>e.notNull()).addPrimaryKeyConstraint(`grants_pk`,[`id`]);t&&(n=Z(n,`grants`)),await n.execute()}await e.schema.createTable(`hook_code`).addColumn(`id`,i.sql`varchar(21)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`code`,i.sql`text`,e=>e.notNull()).addColumn(`secrets`,i.sql`text`).addColumn(`created_at_ts`,i.sql`bigint`,e=>e.notNull()).addColumn(`updated_at_ts`,i.sql`bigint`,e=>e.notNull()).addPrimaryKeyConstraint(`hook_code_pk`,[`id`]).execute();{let n=e.schema.createTable(`hooks`).addColumn(`hook_id`,i.sql`varchar(21)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`trigger_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`enabled`,i.sql`tinyint(1)`,e=>e.notNull()).addColumn(`synchronous`,i.sql`tinyint(1)`,e=>e.notNull().defaultTo(0)).addColumn(`priority`,i.sql`int`).addColumn(`form_id`,i.sql`varchar(128)`).addColumn(`url`,i.sql`varchar(512)`).addColumn(`template_id`,i.sql`varchar(64)`).addColumn(`created_at_ts`,i.sql`bigint`).addColumn(`updated_at_ts`,i.sql`bigint`).addColumn(`code_id`,i.sql`varchar(21)`).addColumn(`metadata`,i.sql`text`).addPrimaryKeyConstraint(`hooks_pk`,[`hook_id`]);t&&(n=Z(n,`hooks`)),await n.execute()}await e.schema.createTable(`invites`).addColumn(`id`,i.sql`varchar(21)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`organization_id`,i.sql`varchar(21)`,e=>e.notNull()).addColumn(`inviter`,i.sql`text`,e=>e.notNull()).addColumn(`invitee`,i.sql`text`,e=>e.notNull()).addColumn(`client_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`connection_id`,i.sql`varchar(21)`).addColumn(`invitation_url`,i.sql`text`,e=>e.notNull()).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`expires_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`app_metadata`,i.sql`text`).addColumn(`user_metadata`,i.sql`text`).addColumn(`roles`,i.sql`text`).addColumn(`ticket_id`,i.sql`varchar(191)`).addColumn(`ttl_sec`,i.sql`int`).addColumn(`send_invitation_email`,i.sql`int`).addPrimaryKeyConstraint(`invites_pk`,[`id`]).execute();{let n=e.schema.createTable(`keys`).addColumn(`kid`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(255)`).addColumn(`created_at`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`revoked_at`,i.sql`varchar(255)`).addColumn(`cert`,i.sql`varchar(4096)`).addColumn(`pkcs7`,i.sql`varchar(4096)`).addColumn(`fingerprint`,i.sql`varchar(256)`).addColumn(`thumbprint`,i.sql`varchar(256)`).addColumn(`current_since`,i.sql`varchar(256)`).addColumn(`current_until`,i.sql`varchar(256)`).addColumn(`type`,i.sql`varchar(50)`,e=>e.notNull().defaultTo(`jwt_signing`)).addColumn(`connection`,i.sql`varchar(255)`).addPrimaryKeyConstraint(`keys_pk`,[`kid`]);t&&(n=Z(n,`keys`)),await n.execute()}await e.schema.createTable(`log_streams`).addColumn(`id`,i.sql`varchar(64)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`name`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`type`,i.sql`varchar(64)`,e=>e.notNull()).addColumn(`status`,i.sql`varchar(32)`,e=>e.notNull()).addColumn(`sink`,i.sql`text`,e=>e.notNull()).addColumn(`filters`,i.sql`text`).addColumn(`is_priority`,i.sql`tinyint(1)`).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`updated_at`,i.sql`varchar(35)`,e=>e.notNull()).addPrimaryKeyConstraint(`log_streams_pk`,[`id`]).execute();{let n=e.schema.createTable(`sessions`).addColumn(`id`,i.sql`varchar(26)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`user_id`,i.sql`varchar(255)`).addColumn(`device`,i.sql`text`,e=>e.notNull()).addColumn(`clients`,i.sql`text`,e=>e.notNull()).addColumn(`login_session_id`,i.sql`varchar(26)`).addColumn(`created_at_ts`,i.sql`bigint`).addColumn(`updated_at_ts`,i.sql`bigint`).addColumn(`expires_at_ts`,i.sql`bigint`).addColumn(`idle_expires_at_ts`,i.sql`bigint`).addColumn(`authenticated_at_ts`,i.sql`bigint`).addColumn(`last_interaction_at_ts`,i.sql`bigint`).addColumn(`used_at_ts`,i.sql`bigint`).addColumn(`revoked_at_ts`,i.sql`bigint`).addPrimaryKeyConstraint(`sessions_pk`,[`tenant_id`,`id`]);t&&(n=Z(n,`sessions`)),await n.execute()}{let n=e.schema.createTable(`login_sessions`).addColumn(`id`,i.sql`varchar(26)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`session_id`,i.sql`varchar(26)`).addColumn(`csrf_token`,i.sql`varchar(26)`).addColumn(`authorization_url`,i.sql`text`).addColumn(`ip`,i.sql`varchar(39)`).addColumn(`useragent`,i.sql`text`).addColumn(`auth0Client`,i.sql`varchar(255)`).addColumn(`state`,i.sql`varchar(50)`,e=>e.defaultTo(`pending`)).addColumn(`state_data`,i.sql`text`).addColumn(`failure_reason`,i.sql`text`).addColumn(`user_id`,i.sql`varchar(255)`).addColumn(`created_at_ts`,i.sql`bigint`).addColumn(`updated_at_ts`,i.sql`bigint`).addColumn(`expires_at_ts`,i.sql`bigint`).addColumn(`auth_connection`,i.sql`varchar(255)`).addColumn(`auth_strategy_strategy`,i.sql`varchar(64)`).addColumn(`auth_strategy_strategy_type`,i.sql`varchar(64)`).addColumn(`authenticated_at`,i.sql`varchar(35)`).addColumn(`auth_params`,i.sql`text`).addPrimaryKeyConstraint(`login_sessions_pk`,[`tenant_id`,`id`]);t&&(n=Z(n,`login_sessions`)),await n.execute()}await e.schema.createTable(`logs`).addColumn(`log_id`,i.sql`varchar(21)`,e=>e.notNull()).addColumn(`category`,i.sql`varchar(255)`).addColumn(`tenant_id`,i.sql`varchar(64)`).addColumn(`user_id`,i.sql`varchar(64)`).addColumn(`ip`,i.sql`varchar(255)`).addColumn(`type`,i.sql`varchar(8)`,e=>e.notNull()).addColumn(`date`,i.sql`varchar(25)`,e=>e.notNull()).addColumn(`client_id`,i.sql`varchar(255)`).addColumn(`client_name`,i.sql`varchar(255)`).addColumn(`user_agent`,i.sql`varchar(255)`).addColumn(`description`,i.sql`varchar(255)`).addColumn(`details`,i.sql`varchar(2048)`).addColumn(`isMobile`,i.sql`int`).addColumn(`user_name`,i.sql`varchar(255)`).addColumn(`connection`,i.sql`varchar(255)`).addColumn(`connection_id`,i.sql`varchar(255)`).addColumn(`audience`,i.sql`varchar(255)`).addColumn(`scope`,i.sql`varchar(255)`).addColumn(`strategy`,i.sql`varchar(255)`).addColumn(`strategy_type`,i.sql`varchar(255)`).addColumn(`hostname`,i.sql`varchar(255)`).addColumn(`auth0_client`,i.sql`varchar(8192)`).addColumn(`session_connection`,i.sql`varchar(255)`).addColumn(`country_code`,i.sql`varchar(2)`).addColumn(`country_code3`,i.sql`varchar(3)`).addColumn(`country_name`,i.sql`varchar(255)`).addColumn(`city_name`,i.sql`varchar(255)`).addColumn(`latitude`,i.sql`varchar(255)`).addColumn(`longitude`,i.sql`varchar(255)`).addColumn(`time_zone`,i.sql`varchar(255)`).addColumn(`continent_code`,i.sql`varchar(2)`).addPrimaryKeyConstraint(`logs_pk`,[`log_id`]).execute(),await e.schema.createTable(`migration_sources`).addColumn(`id`,i.sql`varchar(64)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`name`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`provider`,i.sql`varchar(32)`,e=>e.notNull()).addColumn(`connection`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`enabled`,i.sql`tinyint(1)`,e=>e.notNull()).addColumn(`credentials`,i.sql`text`,e=>e.notNull()).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`updated_at`,i.sql`varchar(35)`,e=>e.notNull()).addPrimaryKeyConstraint(`migration_sources_pk`,[`id`]).execute();{let n=e.schema.createTable(`migrations`).addColumn(`id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`provider`,i.sql`varchar(255)`).addColumn(`client_id`,i.sql`varchar(255)`).addColumn(`origin`,i.sql`varchar(255)`).addColumn(`domain`,i.sql`varchar(255)`).addColumn(`created_at`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`updated_at`,i.sql`varchar(255)`,e=>e.notNull()).addPrimaryKeyConstraint(`migrations_pk`,[`id`]);t&&(n=Z(n,`migrations`)),await n.execute()}await e.schema.createTable(`organizations`).addColumn(`id`,i.sql`varchar(256)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(256)`,e=>e.notNull()).addColumn(`name`,i.sql`varchar(256)`,e=>e.notNull()).addColumn(`display_name`,i.sql`varchar(256)`).addColumn(`branding`,i.sql`text`).addColumn(`metadata`,i.sql`text`).addColumn(`enabled_connections`,i.sql`text`).addColumn(`token_quota`,i.sql`text`).addColumn(`created_at`,i.sql`varchar(256)`,e=>e.notNull()).addColumn(`updated_at`,i.sql`varchar(256)`,e=>e.notNull()).addPrimaryKeyConstraint(`organizations_pk`,[`id`]).execute();{let n=e.schema.createTable(`organization_connections`).addColumn(`tenant_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`organization_id`,i.sql`varchar(21)`,e=>e.notNull()).addColumn(`connection_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`assign_membership_on_login`,i.sql`tinyint(1)`,e=>e.notNull().defaultTo(0)).addColumn(`show_as_button`,i.sql`tinyint(1)`,e=>e.notNull().defaultTo(1)).addColumn(`is_signup_enabled`,i.sql`tinyint(1)`,e=>e.notNull().defaultTo(1)).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`updated_at`,i.sql`varchar(35)`,e=>e.notNull());t&&(n=Z(n,`organization_connections`)),await n.execute()}await e.schema.createTable(`outbox_events`).addColumn(`id`,i.sql`varchar(21)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`event_type`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`log_type`,i.sql`varchar(64)`,e=>e.notNull()).addColumn(`aggregate_type`,i.sql`varchar(64)`,e=>e.notNull()).addColumn(`aggregate_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`payload`,i.sql`text`,e=>e.notNull()).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`processed_at`,i.sql`varchar(35)`).addColumn(`retry_count`,i.sql`int`,e=>e.notNull().defaultTo(0)).addColumn(`next_retry_at`,i.sql`varchar(35)`).addColumn(`error`,i.sql`text`).addColumn(`claimed_by`,i.sql`varchar(64)`).addColumn(`claim_expires_at`,i.sql`varchar(35)`).addColumn(`dead_lettered_at`,i.sql`varchar(35)`).addColumn(`final_error`,i.sql`text`).addPrimaryKeyConstraint(`outbox_events_pk`,[`id`]).execute();{let n=e.schema.createTable(`passwords`).addColumn(`id`,i.sql`varchar(21)`,e=>e.notNull()).addColumn(`user_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`password`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`algorithm`,i.sql`varchar(255)`,e=>e.notNull().defaultTo(`bcrypt`)).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`updated_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`is_current`,i.sql`int`,e=>e.notNull().defaultTo(1)).addPrimaryKeyConstraint(`passwords_pk`,[`id`]);t&&(n=Z(n,`passwords`)),await n.execute()}await e.schema.createTable(`prompt_settings`).addColumn(`tenant_id`,i.sql`varchar(64)`,e=>e.notNull()).addColumn(`universal_login_experience`,i.sql`varchar(16)`,e=>e.notNull().defaultTo(`new`)).addColumn(`identifier_first`,i.sql`tinyint(1)`,e=>e.notNull().defaultTo(1)).addColumn(`password_first`,i.sql`tinyint(1)`,e=>e.notNull().defaultTo(0)).addColumn(`webauthn_platform_first_factor`,i.sql`tinyint(1)`,e=>e.notNull().defaultTo(0)).addPrimaryKeyConstraint(`prompt_settings_pk`,[`tenant_id`]).execute(),await e.schema.createTable(`proxy_routes`).addColumn(`id`,i.sql`varchar(64)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`custom_domain_id`,i.sql`varchar(256)`,e=>e.notNull()).addColumn(`priority`,i.sql`int`,e=>e.notNull().defaultTo(100)).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`updated_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`match`,i.sql`varchar(2048)`,e=>e.notNull().defaultTo(`{"path":"/*"}`)).addColumn(`handlers`,i.sql`text`,e=>e.notNull()).addPrimaryKeyConstraint(`proxy_routes_pk`,[`id`]).execute();{let n=e.schema.createTable(`refresh_tokens`).addColumn(`id`,i.sql`varchar(26)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`client_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`user_id`,i.sql`varchar(255)`).addColumn(`resource_servers`,i.sql`text`,e=>e.notNull()).addColumn(`device`,i.sql`text`,e=>e.notNull()).addColumn(`rotating`,i.sql`tinyint(1)`,e=>e.notNull()).addColumn(`created_at_ts`,i.sql`bigint`).addColumn(`expires_at_ts`,i.sql`bigint`).addColumn(`idle_expires_at_ts`,i.sql`bigint`).addColumn(`last_exchanged_at_ts`,i.sql`bigint`).addColumn(`login_id`,i.sql`varchar(26)`,e=>e.notNull()).addColumn(`revoked_at_ts`,i.sql`bigint`).addColumn(`token_lookup`,i.sql`varchar(16)`).addColumn(`token_hash`,i.sql`varchar(64)`).addColumn(`family_id`,i.sql`varchar(26)`).addColumn(`rotated_to`,i.sql`varchar(26)`).addColumn(`rotated_at_ts`,i.sql`bigint`).addPrimaryKeyConstraint(`refresh_tokens_pk`,[`tenant_id`,`id`]);t&&(n=Z(n,`refresh_tokens`)),await n.execute()}await e.schema.createTable(`resource_servers`).addColumn(`id`,i.sql`varchar(21)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`identifier`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`name`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`scopes`,i.sql`text`).addColumn(`signing_alg`,i.sql`varchar(64)`).addColumn(`signing_secret`,i.sql`varchar(2048)`).addColumn(`token_lifetime`,i.sql`int`).addColumn(`token_lifetime_for_web`,i.sql`int`).addColumn(`skip_consent_for_verifiable_first_party_clients`,i.sql`int`).addColumn(`allow_offline_access`,i.sql`int`).addColumn(`verification_key`,i.sql`varchar(4096)`).addColumn(`options`,i.sql`varchar(4096)`).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`updated_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`is_system`,i.sql`int`,e=>e.notNull().defaultTo(0)).addColumn(`metadata`,i.sql`varchar(4096)`).addPrimaryKeyConstraint(`resource_servers_pk`,[`tenant_id`,`id`]).execute(),await e.schema.createTable(`role_permissions`).addColumn(`tenant_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`role_id`,i.sql`varchar(21)`,e=>e.notNull()).addColumn(`resource_server_identifier`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`permission_name`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addPrimaryKeyConstraint(`role_permissions_pk`,[`tenant_id`,`role_id`,`resource_server_identifier`,`permission_name`]).execute(),await e.schema.createTable(`roles`).addColumn(`id`,i.sql`varchar(21)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`name`,i.sql`varchar(50)`,e=>e.notNull()).addColumn(`description`,i.sql`varchar(255)`).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`updated_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`is_system`,i.sql`int`,e=>e.notNull().defaultTo(0)).addColumn(`metadata`,i.sql`varchar(4096)`).addPrimaryKeyConstraint(`roles_pk`,[`tenant_id`,`id`]).execute(),await e.schema.createTable(`rollouts`).addColumn(`id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`kind`,i.sql`varchar(32)`,e=>e.notNull()).addColumn(`status`,i.sql`varchar(32)`,e=>e.notNull()).addColumn(`target_worker_version`,i.sql`varchar(255)`).addColumn(`target_database_version`,i.sql`varchar(255)`).addColumn(`wave_size`,i.sql`int`,e=>e.notNull().defaultTo(10)).addColumn(`canary_tenant_ids`,i.sql`text`).addColumn(`filter`,i.sql`text`).addColumn(`initiated_by`,i.sql`varchar(255)`).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`updated_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`finished_at`,i.sql`varchar(35)`).addPrimaryKeyConstraint(`rollouts_pk`,[`id`]).execute(),await e.schema.createTable(`tenant_operations`).addColumn(`id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(255)`).addColumn(`rollout_id`,i.sql`varchar(255)`).addColumn(`kind`,i.sql`varchar(32)`,e=>e.notNull()).addColumn(`status`,i.sql`varchar(32)`,e=>e.notNull()).addColumn(`current_step`,i.sql`varchar(255)`).addColumn(`engine`,i.sql`varchar(64)`,e=>e.notNull()).addColumn(`engine_instance_id`,i.sql`varchar(100)`).addColumn(`target_worker_version`,i.sql`varchar(255)`).addColumn(`target_database_version`,i.sql`varchar(255)`).addColumn(`error`,i.sql`text`).addColumn(`initiated_by`,i.sql`varchar(255)`).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`updated_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`finished_at`,i.sql`varchar(35)`).addPrimaryKeyConstraint(`tenant_operations_pk`,[`id`]).execute();{let n=e.schema.createTable(`tenant_operation_events`).addColumn(`id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`operation_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`step`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`outcome`,i.sql`varchar(32)`,e=>e.notNull()).addColumn(`detail`,i.sql`text`).addColumn(`attempt`,i.sql`int`,e=>e.notNull().defaultTo(1)).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addPrimaryKeyConstraint(`tenant_operation_events_pk`,[`id`]);t&&(n=Z(n,`tenant_operation_events`)),await n.execute()}{let n=e.schema.createTable(`themes`).addColumn(`tenant_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`themeId`,i.sql`varchar(21)`,e=>e.notNull()).addColumn(`displayName`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`colors_primary_button_label`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`colors_primary_button`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`colors_secondary_button_border`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`colors_secondary_button_label`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`colors_base_focus_color`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`colors_base_hover_color`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`colors_body_text`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`colors_captcha_widget_theme`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`colors_error`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`colors_header`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`colors_icons`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`colors_input_background`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`colors_input_border`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`colors_input_filled_text`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`colors_input_labels_placeholders`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`colors_links_focused_components`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`colors_success`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`colors_widget_background`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`colors_widget_border`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`borders_button_border_radius`,i.sql`int`,e=>e.notNull()).addColumn(`borders_button_border_weight`,i.sql`int`,e=>e.notNull()).addColumn(`borders_buttons_style`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`borders_input_border_radius`,i.sql`int`,e=>e.notNull()).addColumn(`borders_input_border_weight`,i.sql`int`,e=>e.notNull()).addColumn(`borders_inputs_style`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`borders_show_widget_shadow`,i.sql`tinyint(1)`,e=>e.notNull()).addColumn(`borders_widget_border_weight`,i.sql`int`,e=>e.notNull()).addColumn(`borders_widget_corner_radius`,i.sql`int`,e=>e.notNull()).addColumn(`fonts_body_text_bold`,i.sql`int`,e=>e.notNull()).addColumn(`fonts_body_text_size`,i.sql`int`,e=>e.notNull()).addColumn(`fonts_buttons_text_bold`,i.sql`int`,e=>e.notNull()).addColumn(`fonts_buttons_text_size`,i.sql`int`,e=>e.notNull()).addColumn(`fonts_font_url`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`fonts_input_labels_bold`,i.sql`int`,e=>e.notNull()).addColumn(`fonts_input_labels_size`,i.sql`int`,e=>e.notNull()).addColumn(`fonts_links_bold`,i.sql`tinyint(1)`,e=>e.notNull()).addColumn(`fonts_links_size`,i.sql`int`,e=>e.notNull()).addColumn(`fonts_links_style`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`fonts_reference_text_size`,i.sql`int`,e=>e.notNull()).addColumn(`fonts_subtitle_bold`,i.sql`tinyint(1)`,e=>e.notNull()).addColumn(`fonts_subtitle_size`,i.sql`int`,e=>e.notNull()).addColumn(`fonts_title_bold`,i.sql`tinyint(1)`,e=>e.notNull()).addColumn(`fonts_title_size`,i.sql`int`,e=>e.notNull()).addColumn(`page_background_background_color`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`page_background_background_image_url`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`page_background_page_layout`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`widget_header_text_alignment`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`widget_logo_height`,i.sql`int`,e=>e.notNull()).addColumn(`widget_logo_position`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`widget_logo_url`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`widget_social_buttons_layout`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`updated_at`,i.sql`varchar(35)`,e=>e.notNull()).addPrimaryKeyConstraint(`themes_pk`,[`tenant_id`,`themeId`]);t&&(n=Z(n,`themes`)),await n.execute()}{let n=e.schema.createTable(`universal_login_templates`).addColumn(`tenant_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`body`,i.sql`text`,e=>e.notNull()).addColumn(`updated_at_ts`,i.sql`bigint`,e=>e.notNull()).addColumn(`created_at_ts`,i.sql`bigint`,e=>e.notNull()).addPrimaryKeyConstraint(`universal_login_templates_pk`,[`tenant_id`]);t&&(n=Z(n,`universal_login_templates`)),await n.execute()}{let n=e.schema.createTable(`user_activity`).addColumn(`tenant_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`user_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`last_login`,i.sql`varchar(35)`).addColumn(`last_ip`,i.sql`varchar(45)`).addColumn(`login_count`,i.sql`int`,e=>e.notNull().defaultTo(0)).addColumn(`failed_logins`,i.sql`text`).addColumn(`last_password_reset`,i.sql`varchar(35)`).addPrimaryKeyConstraint(`user_activity_pk`,[`tenant_id`,`user_id`]);t&&(n=Z(n,`user_activity`)),await n.execute()}{let n=e.schema.createTable(`user_organizations`).addColumn(`id`,i.sql`varchar(256)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(256)`,e=>e.notNull()).addColumn(`user_id`,i.sql`varchar(256)`,e=>e.notNull()).addColumn(`organization_id`,i.sql`varchar(256)`,e=>e.notNull()).addColumn(`created_at`,i.sql`varchar(256)`,e=>e.notNull()).addColumn(`updated_at`,i.sql`varchar(256)`,e=>e.notNull()).addPrimaryKeyConstraint(`user_organizations_pk`,[`id`]);t&&(n=Z(n,`user_organizations`)),await n.execute()}if(await e.schema.createTable(`user_permissions`).addColumn(`tenant_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`user_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`resource_server_identifier`,i.sql`varchar(100)`,e=>e.notNull()).addColumn(`permission_name`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`organization_id`,i.sql`varchar(21)`,e=>e.notNull().defaultTo(``)).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addPrimaryKeyConstraint(`user_permissions_pk`,[`tenant_id`,`user_id`,`resource_server_identifier`,`permission_name`,`organization_id`]).execute(),await e.schema.createTable(`user_roles`).addColumn(`tenant_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`user_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`role_id`,i.sql`varchar(21)`,e=>e.notNull()).addColumn(`organization_id`,i.sql`varchar(191)`,e=>e.notNull().defaultTo(``)).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addPrimaryKeyConstraint(`user_roles_pk`,[`tenant_id`,`user_id`,`role_id`,`organization_id`]).execute(),await e.schema.createIndex(`idx_action_executions_tenant`).on(`action_executions`).columns([`tenant_id`,`id`]).execute(),await e.schema.createIndex(`idx_action_versions_action`).on(`action_versions`).columns([`tenant_id`,`action_id`]).execute(),await e.schema.createIndex(`uniq_action_versions_action_number`).on(`action_versions`).columns([`tenant_id`,`action_id`,`number`]).unique().execute(),await e.schema.createIndex(`idx_actions_tenant`).on(`actions`).columns([`tenant_id`]).execute(),await e.schema.createIndex(`authentication_methods_credential_id_idx`).on(`authentication_methods`).columns([`credential_id`]).execute(),await e.schema.createIndex(`mfa_enrollments_tenant_user_idx`).on(`authentication_methods`).columns([`tenant_id`,`user_id`]).execute(),await e.schema.createIndex(`idx_client_grants_audience`).on(`client_grants`).columns([`audience`]).execute(),await e.schema.createIndex(`uq_client_grants_tenant_client_audience`).on(`client_grants`).columns([`tenant_id`,`client_id`,`audience`]).unique().execute(),await e.schema.createIndex(`idx_client_registration_tokens_client`).on(`client_registration_tokens`).columns([`tenant_id`,`client_id`]).execute(),await e.schema.createIndex(`idx_client_registration_tokens_hash`).on(`client_registration_tokens`).columns([`tenant_id`,`token_hash`]).unique().execute(),await e.schema.createIndex(`idx_clients_owner_user_id`).on(`clients`).columns([`tenant_id`,`owner_user_id`]).execute(),await e.schema.createIndex(`control_plane_comm_keys_tenant_id_created_at_idx`).on(`control_plane_comm_keys`).columns([`tenant_id`,`created_at`]).execute(),await e.schema.createIndex(`flows_tenant_id_idx`).on(`flows`).columns([`tenant_id`]).execute(),await e.schema.createIndex(`forms_tenant_id_idx`).on(`forms`).columns([`tenant_id`]).execute(),await e.schema.createIndex(`grants_natural_key_idx`).on(`grants`).columns([`tenant_id`,`user_id`,`client_id`,`audience`]).unique().execute(),await e.schema.createIndex(`grants_tenant_user_idx`).on(`grants`).columns([`tenant_id`,`user_id`]).execute(),await e.schema.createIndex(`idx_hook_code_tenant`).on(`hook_code`).columns([`tenant_id`]).execute(),await e.schema.createIndex(`idx_invites_expires_at`).on(`invites`).columns([`expires_at`]).execute(),await e.schema.createIndex(`idx_invites_organization_id`).on(`invites`).columns([`organization_id`]).execute(),await e.schema.createIndex(`idx_invites_tenant_created`).on(`invites`).columns([`tenant_id`,`created_at`]).execute(),await e.schema.createIndex(`idx_log_streams_tenant_id`).on(`log_streams`).columns([`tenant_id`]).execute(),await e.schema.createIndex(`idx_login_sessions_expires_at_ts`).on(`login_sessions`).columns([`expires_at_ts`]).execute(),await e.schema.createIndex(`login_sessions_id_index`).on(`login_sessions`).columns([`id`]).execute(),await e.schema.createIndex(`login_sessions_state_idx`).on(`login_sessions`).columns([`state`]).execute(),await e.schema.createIndex(`login_sessions_state_updated_idx`).on(`login_sessions`).columns([`state`]).execute(),await e.schema.createIndex(`login_sessions_tenant_user_idx`).on(`login_sessions`).columns([`tenant_id`,`user_id`]).execute(),await e.schema.createIndex(`logs_date`).on(`logs`).columns([`date`]).execute(),await e.schema.createIndex(`logs_tenant_id`).on(`logs`).columns([`tenant_id`]).execute(),await e.schema.createIndex(`logs_user_id`).on(`logs`).columns([`user_id`]).execute(),await e.schema.createIndex(`idx_migration_sources_tenant_id`).on(`migration_sources`).columns([`tenant_id`]).execute(),await e.schema.createIndex(`idx_organization_connections_tenant_connection`).on(`organization_connections`).columns([`tenant_id`,`connection_id`]).execute(),await e.schema.createIndex(`idx_organization_connections_tenant_org`).on(`organization_connections`).columns([`tenant_id`,`organization_id`]).execute(),await e.schema.createIndex(`organization_connections_unique`).on(`organization_connections`).columns([`tenant_id`,`organization_id`,`connection_id`]).unique().execute(),await e.schema.createIndex(`idx_organizations_tenant_name_unique`).on(`organizations`).columns([`tenant_id`,`name`]).unique().execute(),await e.schema.createIndex(`idx_outbox_claim`).on(`outbox_events`).columns([`processed_at`,`claim_expires_at`,`next_retry_at`,`created_at`]).execute(),await e.schema.createIndex(`idx_outbox_events_tenant_dead_lettered`).on(`outbox_events`).columns([`tenant_id`,`dead_lettered_at`]).execute(),await e.schema.createIndex(`idx_outbox_tenant_type`).on(`outbox_events`).columns([`tenant_id`,`event_type`,`created_at`]).execute(),await e.schema.createIndex(`idx_outbox_unprocessed`).on(`outbox_events`).columns([`processed_at`,`created_at`]).execute(),await e.schema.createIndex(`proxy_routes_custom_domain_id_idx`).on(`proxy_routes`).columns([`custom_domain_id`]).execute(),await e.schema.createIndex(`proxy_routes_tenant_id_idx`).on(`proxy_routes`).columns([`tenant_id`]).execute(),await e.schema.createIndex(`idx_refresh_tokens_expires_at_ts`).on(`refresh_tokens`).columns([`expires_at_ts`]).execute(),await e.schema.createIndex(`idx_refresh_tokens_family_id`).on(`refresh_tokens`).columns([`tenant_id`,`family_id`]).execute(),await e.schema.createIndex(`idx_refresh_tokens_idle_expires_at_ts`).on(`refresh_tokens`).columns([`idle_expires_at_ts`]).execute(),await e.schema.createIndex(`idx_refresh_tokens_login_id`).on(`refresh_tokens`).columns([`login_id`]).execute(),await e.schema.createIndex(`idx_refresh_tokens_token_lookup`).on(`refresh_tokens`).columns([`tenant_id`,`token_lookup`]).execute(),await e.schema.createIndex(`idx_refresh_tokens_user_id`).on(`refresh_tokens`).columns([`tenant_id`,`user_id`]).execute(),await e.schema.createIndex(`resource_servers_tenant_identifier_uq`).on(`resource_servers`).columns([`tenant_id`,`identifier`]).unique().execute(),await e.schema.createIndex(`role_permissions_permission_fk`).on(`role_permissions`).columns([`tenant_id`,`resource_server_identifier`,`permission_name`]).execute(),await e.schema.createIndex(`roles_tenant_name_uq`).on(`roles`).columns([`tenant_id`,`name`]).unique().execute(),await e.schema.createIndex(`idx_sessions_expires_at_ts`).on(`sessions`).columns([`expires_at_ts`]).execute(),await e.schema.createIndex(`idx_sessions_idle_expires_at_ts`).on(`sessions`).columns([`idle_expires_at_ts`]).execute(),await e.schema.createIndex(`idx_sessions_user_id`).on(`sessions`).columns([`tenant_id`,`user_id`]).execute(),await e.schema.createIndex(`tenant_operation_events_operation_id_created_at_idx`).on(`tenant_operation_events`).columns([`operation_id`,`created_at`]).execute(),await e.schema.createIndex(`tenant_operations_rollout_id_idx`).on(`tenant_operations`).columns([`rollout_id`]).execute(),await e.schema.createIndex(`tenant_operations_status_idx`).on(`tenant_operations`).columns([`status`]).execute(),await e.schema.createIndex(`tenant_operations_tenant_id_created_at_idx`).on(`tenant_operations`).columns([`tenant_id`,`created_at`]).execute(),await e.schema.createIndex(`idx_user_organizations_organization_id`).on(`user_organizations`).columns([`organization_id`]).execute(),await e.schema.createIndex(`idx_user_organizations_unique`).on(`user_organizations`).columns([`tenant_id`,`user_id`,`organization_id`]).unique().execute(),await e.schema.createIndex(`idx_user_organizations_user_id`).on(`user_organizations`).columns([`user_id`]).execute(),await e.schema.createIndex(`user_permissions_organization_fk`).on(`user_permissions`).columns([`organization_id`]).execute(),await e.schema.createIndex(`user_permissions_permission_fk`).on(`user_permissions`).columns([`tenant_id`,`resource_server_identifier`,`permission_name`]).execute(),await e.schema.createIndex(`user_permissions_user_fk`).on(`user_permissions`).columns([`tenant_id`,`user_id`]).execute(),await e.schema.createIndex(`user_roles_organization_fk`).on(`user_roles`).columns([`organization_id`]).execute(),await e.schema.createIndex(`user_roles_role_fk`).on(`user_roles`).columns([`tenant_id`,`role_id`]).execute(),await e.schema.createIndex(`user_roles_user_fk`).on(`user_roles`).columns([`tenant_id`,`user_id`]).execute(),await e.schema.createIndex(`unique_email_provider`).on(`users`).columns([`email`,`provider`,`tenant_id`]).unique().execute(),await e.schema.createIndex(`unique_username_provider`).on(`users`).columns([`username`,`provider`,`tenant_id`]).unique().execute(),await e.schema.createIndex(`users_linked_to_index`).on(`users`).columns([`linked_to`]).execute(),await e.schema.createIndex(`users_name_index`).on(`users`).columns([`name`]).execute(),await e.schema.createIndex(`users_phone_tenant_provider_index`).on(`users`).columns([`tenant_id`,`phone_number`,`provider`]).execute(),await e.schema.createIndex(`users_user_id_tenant_id`).on(`users`).columns([`user_id`,`tenant_id`]).execute(),t&&(await e.schema.createIndex(`FK_codes_user_id_tenant_id_constraint`).on(`codes`).columns([`user_id`,`tenant_id`]).execute(),await e.schema.createIndex(`grants_user_id_constraint`).on(`grants`).columns([`user_id`,`tenant_id`]).execute(),await e.schema.createIndex(`login_sessions_session_fk`).on(`login_sessions`).columns([`tenant_id`,`session_id`]).execute(),await e.schema.createIndex(`organization_connections_organization_fk`).on(`organization_connections`).columns([`organization_id`]).execute(),await e.schema.createIndex(`password_history_user_id_tenant_id_constraint`).on(`passwords`).columns([`user_id`,`tenant_id`]).execute(),await e.schema.createIndex(`refresh_tokens_client_fk`).on(`refresh_tokens`).columns([`tenant_id`,`client_id`]).execute(),await e.schema.createIndex(`sessions_user_fk`).on(`sessions`).columns([`user_id`,`tenant_id`]).execute(),await e.schema.createIndex(`user_activity_user_id_constraint`).on(`user_activity`).columns([`user_id`,`tenant_id`]).execute()),!t)for(let t of Ba)await e.schema.alterTable(t.table).addForeignKeyConstraint(t.name,t.columns,t.references,t.referencedColumns,e=>{let n=e;return t.onDelete&&(n=n.onDelete(t.onDelete)),t.onUpdate&&(n=n.onUpdate(t.onUpdate)),n}).execute()}async function Ua(e){await e.schema.dropTable(`user_roles`).ifExists().execute(),await e.schema.dropTable(`user_permissions`).ifExists().execute(),await e.schema.dropTable(`user_organizations`).ifExists().execute(),await e.schema.dropTable(`user_activity`).ifExists().execute(),await e.schema.dropTable(`universal_login_templates`).ifExists().execute(),await e.schema.dropTable(`themes`).ifExists().execute(),await e.schema.dropTable(`tenant_operation_events`).ifExists().execute(),await e.schema.dropTable(`tenant_operations`).ifExists().execute(),await e.schema.dropTable(`rollouts`).ifExists().execute(),await e.schema.dropTable(`roles`).ifExists().execute(),await e.schema.dropTable(`role_permissions`).ifExists().execute(),await e.schema.dropTable(`resource_servers`).ifExists().execute(),await e.schema.dropTable(`refresh_tokens`).ifExists().execute(),await e.schema.dropTable(`proxy_routes`).ifExists().execute(),await e.schema.dropTable(`prompt_settings`).ifExists().execute(),await e.schema.dropTable(`passwords`).ifExists().execute(),await e.schema.dropTable(`outbox_events`).ifExists().execute(),await e.schema.dropTable(`organization_connections`).ifExists().execute(),await e.schema.dropTable(`organizations`).ifExists().execute(),await e.schema.dropTable(`migrations`).ifExists().execute(),await e.schema.dropTable(`migration_sources`).ifExists().execute(),await e.schema.dropTable(`logs`).ifExists().execute(),await e.schema.dropTable(`login_sessions`).ifExists().execute(),await e.schema.dropTable(`sessions`).ifExists().execute(),await e.schema.dropTable(`log_streams`).ifExists().execute(),await e.schema.dropTable(`keys`).ifExists().execute(),await e.schema.dropTable(`invites`).ifExists().execute(),await e.schema.dropTable(`hooks`).ifExists().execute(),await e.schema.dropTable(`hook_code`).ifExists().execute(),await e.schema.dropTable(`grants`).ifExists().execute(),await e.schema.dropTable(`forms`).ifExists().execute(),await e.schema.dropTable(`flows`).ifExists().execute(),await e.schema.dropTable(`email_templates`).ifExists().execute(),await e.schema.dropTable(`email_providers`).ifExists().execute(),await e.schema.dropTable(`custom_text`).ifExists().execute(),await e.schema.dropTable(`custom_domains`).ifExists().execute(),await e.schema.dropTable(`control_plane_comm_keys`).ifExists().execute(),await e.schema.dropTable(`connections`).ifExists().execute(),await e.schema.dropTable(`codes`).ifExists().execute(),await e.schema.dropTable(`users`).ifExists().execute(),await e.schema.dropTable(`client_registration_tokens`).ifExists().execute(),await e.schema.dropTable(`client_grants`).ifExists().execute(),await e.schema.dropTable(`clients`).ifExists().execute(),await e.schema.dropTable(`branding`).ifExists().execute(),await e.schema.dropTable(`authentication_methods`).ifExists().execute(),await e.schema.dropTable(`actions`).ifExists().execute(),await e.schema.dropTable(`action_versions`).ifExists().execute(),await e.schema.dropTable(`action_executions`).ifExists().execute(),await e.schema.dropTable(`tenants`).ifExists().execute()}var Wa=!1;function Ga(e){Wa=e}function Q(...e){Wa&&console.log(...e)}function Ka(...e){console.warn(...e)}var qa=t({down:()=>ro,up:()=>eo}),$=5e4,Ja=500;async function Ya(e){try{return await i.sql`SELECT VERSION()`.execute(e),`mysql`}catch{return`sqlite`}}async function Xa(e,t,n){try{await e.schema.alterTable(t).addColumn(n,`bigint`).execute()}catch(e){if(e instanceof Error&&(e.message.includes(`1060`)||e.message.includes(`duplicate column`))){Q(` Column ${t}.${n} already exists, skipping`);return}throw e}}async function Za(e,t,n,r){try{await e.schema.createIndex(t).on(n).column(r).execute()}catch(e){if(e instanceof Error&&(e.message.includes(`1061`)||e.message.toLowerCase().includes(`already exists`))){Q(` Index ${t} already exists, skipping`);return}throw e}}async function Qa(e,t){let n=new Date().toISOString(),r=0;if(t===`sqlite`){let t=await e.deleteFrom(`codes`).where(`expires_at`,`<`,n).executeTakeFirst();r=Number(t.numDeletedRows)}else{let t=$;for(;t>=$;){let i=await e.deleteFrom(`codes`).where(`expires_at`,`<`,n).limit($).executeTakeFirst();t=Number(i.numDeletedRows),r+=t,t>0&&Q(` Pruned ${r} expired codes row(s)...`)}}return r}async function $a(e){let t=0;for(;;){let n=await e.selectFrom(`codes`).select([`code_id`,`code_type`,`tenant_id`,`expires_at`]).where(`expires_at_ts`,`is`,null).limit(Ja).execute();if(n.length===0)break;for(let t of n){let n=Date.parse(t.expires_at);await e.updateTable(`codes`).set({expires_at_ts:Number.isNaN(n)?0:n}).where(`code_id`,`=`,t.code_id).where(`code_type`,`=`,t.code_type).where(`tenant_id`,`=`,t.tenant_id).execute()}if(t+=n.length,n.length<Ja)break}return t}async function eo(e){let t=await Ya(e);try{let n=await Qa(e,t);Q(n===0?` No expired codes to prune`:` Pruned ${n} expired codes row(s) total`)}catch(e){Ka(` Warning: Could not prune expired codes: ${e instanceof Error?e.message:String(e)}`)}await Xa(e,`codes`,`expires_at_ts`),await Za(e,`idx_codes_expires_at_ts`,`codes`,`expires_at_ts`);try{let t=await $a(e);Q(t===0?` No codes rows needed an expires_at_ts backfill`:` Backfilled expires_at_ts for ${t} codes row(s)`)}catch(e){Ka(` Warning: Could not backfill codes.expires_at_ts: ${e instanceof Error?e.message:String(e)}`)}}async function to(e,t,n){try{await e.schema.dropIndex(t).on(n).execute()}catch(e){if(e instanceof Error&&e.message.includes(`1091`))return;throw e}}async function no(e,t,n){try{await e.schema.alterTable(t).dropColumn(n).execute()}catch(e){if(e instanceof Error&&e.message.includes(`1091`))return;throw e}}async function ro(e){await to(e,`idx_codes_expires_at_ts`,`codes`),await no(e,`codes`,`expires_at_ts`)}var io=t({down:()=>oo,up:()=>ao});async function ao(e){await e.schema.createTable(`scim_configurations`).addColumn(`connection_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`user_id_attribute`,i.sql`varchar(255)`,e=>e.notNull().defaultTo(`externalId`)).addColumn(`mapping`,i.sql`text`,e=>e.notNull()).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`updated_at`,i.sql`varchar(35)`,e=>e.notNull()).addPrimaryKeyConstraint(`scim_configurations_pk`,[`tenant_id`,`connection_id`]).execute(),await e.schema.createTable(`scim_tokens`).addColumn(`token_id`,i.sql`varchar(64)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`connection_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`token_hash`,i.sql`varchar(128)`,e=>e.notNull()).addColumn(`scopes`,i.sql`text`,e=>e.notNull()).addColumn(`valid_until`,i.sql`varchar(35)`).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`last_used_at`,i.sql`varchar(35)`).addPrimaryKeyConstraint(`scim_tokens_pk`,[`tenant_id`,`token_id`]).execute(),await e.schema.createIndex(`scim_tokens_tenant_connection_idx`).on(`scim_tokens`).columns([`tenant_id`,`connection_id`]).execute(),await e.schema.createIndex(`scim_tokens_tenant_hash_idx`).on(`scim_tokens`).columns([`tenant_id`,`token_hash`]).unique().execute(),await e.schema.createTable(`scim_external_ids`).addColumn(`tenant_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`connection_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`external_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`user_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addPrimaryKeyConstraint(`scim_external_ids_pk`,[`tenant_id`,`connection_id`,`user_id`]).execute(),await e.schema.createIndex(`scim_external_ids_connection_external_idx`).on(`scim_external_ids`).columns([`tenant_id`,`connection_id`,`external_id`]).unique().execute()}async function oo(e){await e.schema.dropTable(`scim_external_ids`).ifExists().execute(),await e.schema.dropTable(`scim_tokens`).ifExists().execute(),await e.schema.dropTable(`scim_configurations`).ifExists().execute()}var so=t({down:()=>fo,up:()=>lo});async function co(e,t,n){try{await e.schema.alterTable(t).addColumn(n,i.sql`tinyint(1)`).execute()}catch(e){if(e instanceof Error&&(e.message.includes(`1060`)||e.message.toLowerCase().includes(`duplicate column`)))return;throw e}}async function lo(e){await co(e,`users`,`blocked`)}async function uo(e,t,n){try{await e.schema.alterTable(t).dropColumn(n).execute()}catch(e){if(e instanceof Error&&e.message.includes(`1091`))return;throw e}}async function fo(e){await uo(e,`users`,`blocked`)}var po=t({down:()=>_o,up:()=>ho});async function mo(e,t,n){try{await e.schema.alterTable(t).addColumn(n,i.sql`tinyint(1)`).execute()}catch(e){if(e instanceof Error&&(e.message.includes(`1060`)||e.message.toLowerCase().includes(`duplicate column`)))return;throw e}}async function ho(e){await mo(e,`prompt_settings`,`show_last_used_connection`)}async function go(e,t,n){try{await e.schema.alterTable(t).dropColumn(n).execute()}catch(e){if(e instanceof Error&&e.message.includes(`1091`))return;throw e}}async function _o(e){await go(e,`prompt_settings`,`show_last_used_connection`)}var vo=t({down:()=>xo,up:()=>bo});async function yo(e,t,n,r){try{await e.schema.createIndex(t).on(n).column(r).execute()}catch(e){if(e instanceof Error&&(e.message.includes(`1061`)||e.message.toLowerCase().includes(`already exists`))){Q(` Index ${t} already exists, skipping`);return}throw e}}async function bo(e){await yo(e,`idx_action_executions_created_at_ts`,`action_executions`,`created_at_ts`)}async function xo(e){try{await e.schema.dropIndex(`idx_action_executions_created_at_ts`).on(`action_executions`).execute()}catch(e){if(e instanceof Error&&e.message.includes(`1091`))return;throw e}}var So=t({down:()=>Eo,up:()=>wo});async function Co(e,t,n,r){try{await e.schema.alterTable(t).addColumn(n,r).execute()}catch(e){if(e instanceof Error&&(e.message.includes(`1060`)||e.message.toLowerCase().includes(`duplicate column`)))return;throw e}}async function wo(e){await Co(e,`hooks`,`page_id`,i.sql`varchar(64)`),await Co(e,`hooks`,`permission_required`,i.sql`varchar(255)`)}async function To(e,t,n){try{await e.schema.alterTable(t).dropColumn(n).execute()}catch(e){if(e instanceof Error&&e.message.includes(`1091`))return;throw e}}async function Eo(e){await To(e,`hooks`,`permission_required`),await To(e,`hooks`,`page_id`)}var Do={"2026-07-16T14:00:00_baseline":za,"2026-07-16T15:00:00_codes_expires_at_ts":qa,"2026-08-04T12:00:00_scim_inbound_provisioning":io,"2026-08-05T12:00:00_user_blocked":so,"2026-08-09T12:00:00_prompt_settings_last_used":po,"2026-08-10T12:00:00_action_executions_created_at_index":vo,"2026-08-11T12:00:00_page_hooks":So};async function Oo(e,t=!1){Ga(t),t&&console.log(`migrating...`);let{error:n,results:r}=await new s.Migrator({db:e,provider:new Ra(Do)}).migrateToLatest();if(r?.forEach(e=>{e.status===`Success`?t&&console.log(`migration "${e.migrationName}" was executed successfully`):e.status===`Error`&&console.error(`failed to execute migration "${e.migrationName}"`)}),n)throw console.error(`failed to migrate`),console.error(n),n}async function ko(e,t=!1){Ga(t),t&&console.log(`migrating...`);let{error:n,results:r}=await new s.Migrator({db:e,provider:new Ra(Do)}).migrateDown();if(r?.forEach(e=>{e.status===`Success`?t&&console.log(`migration "${e.migrationName}" was reverted successfully`):e.status===`Error`&&console.error(`failed to execute migration "${e.migrationName}"`)}),n)throw console.error(`failed to migrate`),console.error(n),n}function Ao(e,t={useTransactions:!0}){let n={actions:oe(e),actionExecutions:fe(e),actionVersions:me(e),branding:Cn(e),clients:Rt(e),clientConnections:Wt(e),clientGrants:Zt(e),clientRegistrationTokens:ln(e),codes:Ct(e),connections:At(e),emailProviders:cr(e),emailTemplates:hr(e),customDomains:bn(e),flows:Ve(e),forms:Mr(e),hookCode:Rn(e),hooks:Nn(e),invites:ji(e),keys:pn(e),loginSessions:$n(e),logs:rt(e),logStreams:da(e),migrationSources:fa(e),authenticationMethods:ea(e),passwords:mt(e),promptSettings:rr(e),proxyRoutes:G(e),scimConfigurations:ba(e),scimTokens:xa(e),scimExternalIds:Ca(e),refreshTokens:wr(e),resourceServers:Rr(e),rolePermissions:Jr(e),grants:ei(e),userPermissions:ai(e),userRoles:di(e),roles:Wr(e),sessions:lt(e),sessionCleanup:Er(e),tenants:Ye(e),tenantOperations:wa(e),tenantOperationEvents:Fa(e),rollouts:La(e),themes:Un(e),universalLoginTemplates:Dn(e),customText:qi(e),users:Ne(e),userActivity:Ae(e),organizations:_i(e),organizationConnections:vi(e),userOrganizations:Ti(e),stats:Fi(e),analytics:Ki(e),outbox:ua(e),async transaction(r){return t.useTransactions===!1?r(n):e.transaction().execute(async e=>r(Ao(e,{...t,useTransactions:!1})))}};return n}exports.createProxyDataAdapter=ga,exports.createProxyRoutesAdapter=G,exports.default=Ao,exports.migrateDown=ko,exports.migrateToLatest=Oo;
|
|
1
|
+
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});var e=Object.defineProperty,t=(t,n)=>{let r={};for(var i in t)e(r,i,{get:t[i],enumerable:!0});return n||e(r,Symbol.toStringTag,{value:`Module`}),r};let n=require("nanoid"),r=require("@authhero/adapter-interfaces/sql"),i=require("kysely"),a=require("@authhero/adapter-interfaces"),o=require("hono/http-exception");require("@hono/zod-openapi");let s=require("kysely/migration");var c=17,l={organization:`org_`,connection:`con_`,action:`act_`,action_version:`ver_`,hook:`h_`,hook_code:`hc_`,rule:`rul_`,resource_server:`api_`,guardian_factor:`gfa_`,invite:`inv_`};function u(e){let t=(0,n.customAlphabet)(`0123456789abcdefghijklmnopqrstuvwxyz`,c)();return`${l[e]}${t}`}function d(){return u(`organization`)}function f(){return u(`connection`)}function p(){return u(`action`)}function m(){return u(`action_version`)}function h(){return u(`hook`)}function g(){return u(`resource_server`)}function _(){return u(`hook_code`)}function v(){return u(`invite`)}function y(e){return async(t,n,r)=>{let i=r?.importMetadata,a=Date.now(),o=i?.created_at?new Date(i.created_at).getTime():a,s=i?.updated_at?new Date(i.updated_at).getTime():o,c=i?.id??p();return await e.insertInto(`actions`).values({id:c,tenant_id:t,name:n.name,code:n.code,runtime:n.runtime||null,status:`built`,secrets:n.secrets?JSON.stringify(n.secrets):null,dependencies:n.dependencies?JSON.stringify(n.dependencies):null,supported_triggers:n.supported_triggers?JSON.stringify(n.supported_triggers):null,is_system:+!!n.is_system,inherit:+!!n.inherit,created_at_ts:o,updated_at_ts:s}).execute(),{id:c,tenant_id:t,name:n.name,code:n.code,runtime:n.runtime,status:`built`,secrets:n.secrets?.map(e=>({name:e.name})),dependencies:n.dependencies,supported_triggers:n.supported_triggers,is_system:n.is_system??!1,inherit:n.inherit??!1,created_at:new Date(o).toISOString(),updated_at:new Date(s).toISOString()}}}function b(e){if(e)try{return JSON.parse(e)}catch{return}}function ee(e){return async(t,n)=>{let i=await e.selectFrom(`actions`).where(`actions.tenant_id`,`=`,t).where(`actions.id`,`=`,n).selectAll().executeTakeFirst();if(!i)return null;let{created_at_ts:a,updated_at_ts:o,deployed_at_ts:s,secrets:c,dependencies:l,supported_triggers:u,is_system:d,inherit:f,tenant_id:p,...m}=i,h=(0,r.convertDatesToAdapter)({created_at_ts:a,updated_at_ts:o},[`created_at_ts`,`updated_at_ts`]);return{...m,tenant_id:t,...h,runtime:m.runtime??void 0,status:m.status||`built`,deployed_at:s?new Date(Number(s)).toISOString():void 0,secrets:b(c),dependencies:b(l),supported_triggers:b(u),is_system:!!d,inherit:!!f}}}function te(e){return i.sql`coalesce(${i.sql.ref(e.column)}, ${i.sql.lit(e.defaultValue)})`}function x(e){return e.replace(/\\([\\"+\-!(){}[\]^~*?:/&|])/g,`$1`)}function S(e,t,n,r,i=[],a={}){let o=new Set(i),{ref:s}=e.dynamic,c=e=>{let t=a[e];return t===void 0?e:typeof t==`string`?t:t.column},l=e=>{let t=a[e];return t===void 0||typeof t==`string`?s(t??e):te(t)},u=(e,t)=>{let n=a[e];if(n===void 0||typeof n==`string`)return t;let r=Number(t);return Number.isFinite(r)?r:t},d=n.split(/ OR /i);if(d.length>1)return t.where(e=>{let t=d.map(t=>{let n=t.trim().match(/^([^:]+):(.+)$/);if(n){let[,t,r]=n;if(!t||!r)return null;let i=t.trim(),a=x(r.replace(/^"(.*)"$/,`$1`).trim());return o.has(i)?e(s(c(i)),`like`,`%${a}%`):e(l(i),`=`,u(i,a))}return null}).filter(e=>e!==null);return e.or(t)});let f=[],p=``,m=!1;for(let e=0;e<n.length;e++){let t=n[e];t===`"`?(m=!m,p+=t):t===` `&&!m?p.trim()&&(f.push(p.trim()),p=``):p+=t}return p.trim()&&f.push(p.trim()),f.filter(e=>e!==`AND`).map(e=>e.replace(/^([^:]+)=/g,`$1:`)).map(e=>{let t=e.startsWith(`-`),n=null,r=``,i=!1,a;if(e.startsWith(`-_exists_:`))n=e.substring(10),i=!0,t=!0;else if(e.startsWith(`_exists_:`))n=e.substring(9),i=!0,t=!1;else if(e.includes(`:`)){let o=t?e.substring(1):e,s=o.indexOf(`:`);n=o.substring(0,s),r=o.substring(s+1),i=!1,r.startsWith(`>=`)?(a=`>=`,r=r.substring(2)):r.startsWith(`>`)?(a=`>`,r=r.substring(1)):r.startsWith(`<=`)?(a=`<=`,r=r.substring(2)):r.startsWith(`<`)?(a=`<`,r=r.substring(1)):a=`=`,r.startsWith(`"`)&&r.endsWith(`"`)&&r.length>1&&(r=r.slice(1,-1)),r=x(r)}else n=null,r=x(e),i=!1;return{key:n,value:r,isNegation:t,isExistsQuery:i,operator:a}}).forEach(({key:e,value:n,isNegation:i,isExistsQuery:a,operator:d})=>{if(e){let r=s(c(e)),f=l(e),p=u(e,n);if(a)t=i?t.where(r,`is`,null):t.where(r,`is not`,null);else if(o.has(e)&&d===`=`)t=t.where(r,i?`not like`:`like`,`%${n}%`);else if(i)switch(d){case`>`:t=t.where(f,`<=`,p);break;case`>=`:t=t.where(f,`<`,p);break;case`<`:t=t.where(f,`>=`,p);break;case`<=`:t=t.where(f,`>`,p);break;default:t=t.where(f,`!=`,p)}else t=t.where(f,d,p)}else n&&(t=t.where(e=>e.or(r.map(t=>t===`user_id`?e(s(c(t)),`=`,n):e(s(c(t)),`like`,`%${n}%`)))))}),t}function C(e){if(e)try{return JSON.parse(e)}catch{return}}function ne(e){return async(t,n={})=>{let{page:i=0,per_page:a=50,include_totals:o=!1,q:s}=n,c=e.selectFrom(`actions`).where(`actions.tenant_id`,`=`,t);s&&(c=S(e,c,s,[`name`]));let l=(await c.offset(i*a).limit(a).selectAll().execute()).map(e=>{let{created_at_ts:n,updated_at_ts:i,deployed_at_ts:a,secrets:o,dependencies:s,supported_triggers:c,is_system:l,inherit:u,tenant_id:d,...f}=e,p=(0,r.convertDatesToAdapter)({created_at_ts:n,updated_at_ts:i},[`created_at_ts`,`updated_at_ts`]);return{...f,tenant_id:t,...p,runtime:f.runtime??void 0,status:f.status||`built`,deployed_at:a?new Date(Number(a)).toISOString():void 0,secrets:C(o),dependencies:C(s),supported_triggers:C(c),is_system:!!l,inherit:!!u}});if(!o)return{actions:l,start:0,limit:0,length:0};let{count:u}=await c.select(e=>e.fn.countAll().as(`count`)).executeTakeFirstOrThrow();return{actions:l,start:i*a,limit:a,length:(0,r.getCountAsInt)(u)}}}function re(e){if(!e)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t:[]}catch{return[]}}function ie(e){return async(t,n,r)=>{let i={updated_at_ts:Date.now()};if(r.name!==void 0&&(i.name=r.name),r.code!==void 0&&(i.code=r.code),r.runtime!==void 0&&(i.runtime=r.runtime),r.secrets!==void 0){let a=await e.selectFrom(`actions`).where(`actions.id`,`=`,n).where(`actions.tenant_id`,`=`,t).select(`secrets`).executeTakeFirst(),o=new Map(re(a?.secrets).map(e=>[e.name,e])),s=r.secrets.map(e=>e.value===void 0?{name:e.name,value:o.get(e.name)?.value}:e);i.secrets=JSON.stringify(s)}if(r.dependencies!==void 0&&(i.dependencies=JSON.stringify(r.dependencies)),r.supported_triggers!==void 0&&(i.supported_triggers=JSON.stringify(r.supported_triggers)),r.status!==void 0&&(i.status=r.status),r.deployed_at!==void 0){let e=new Date(r.deployed_at).getTime();Number.isFinite(e)&&(i.deployed_at_ts=e)}return r.is_system!==void 0&&(i.is_system=+!!r.is_system),r.inherit!==void 0&&(i.inherit=+!!r.inherit),(await e.updateTable(`actions`).set(i).where(`actions.id`,`=`,n).where(`actions.tenant_id`,`=`,t).executeTakeFirst()).numUpdatedRows>0}}function ae(e){return async(t,n)=>(await e.deleteFrom(`actions`).where(`actions.id`,`=`,n).where(`actions.tenant_id`,`=`,t).executeTakeFirst()).numDeletedRows>0}function oe(e){return{create:y(e),get:ee(e),list:ne(e),update:ie(e),remove:ae(e)}}function se(e){return async(t,n)=>{let r=Date.now();return await e.insertInto(`action_executions`).values({id:n.id,tenant_id:t,trigger_id:n.trigger_id,status:n.status,results:JSON.stringify(n.results),logs:n.logs?JSON.stringify(n.logs):null,created_at_ts:r,updated_at_ts:r}).execute(),{id:n.id,tenant_id:t,trigger_id:n.trigger_id,status:n.status,results:n.results,logs:n.logs,created_at:new Date(r).toISOString(),updated_at:new Date(r).toISOString()}}}function ce(e){if(e)try{return JSON.parse(e)}catch{return}}function le(e){return async(t,n)=>{let r=await e.selectFrom(`action_executions`).where(`action_executions.tenant_id`,`=`,t).where(`action_executions.id`,`=`,n).selectAll().executeTakeFirst();return r?{id:r.id,tenant_id:r.tenant_id,trigger_id:r.trigger_id,status:r.status,results:ce(r.results)??[],logs:ce(r.logs),created_at:new Date(Number(r.created_at_ts)).toISOString(),updated_at:new Date(Number(r.updated_at_ts)).toISOString()}:null}}var w=5e4;async function ue(e){try{return await i.sql`SELECT VERSION()`.execute(e),`mysql`}catch{return`sqlite`}}function de(e){let t;return async n=>{let r=Date.parse(n);if(Number.isNaN(r))throw Error(`Invalid olderThan date: ${n}`);if(t??=await ue(e),t===`sqlite`){let t=await e.deleteFrom(`action_executions`).where(`created_at_ts`,`<`,r).executeTakeFirst();return Number(t.numDeletedRows)}let i=0,a=w;for(;a>=w;){let t=await e.deleteFrom(`action_executions`).where(`created_at_ts`,`<`,r).limit(w).executeTakeFirst();a=Number(t.numDeletedRows),i+=a}return i}}function fe(e){return{create:se(e),get:le(e),cleanup:de(e)}}function T(e){if(e)try{return JSON.parse(e)}catch{return}}function pe(e){let{created_at_ts:t,updated_at_ts:n,secrets:r,dependencies:i,supported_triggers:a,deployed:o,runtime:s,...c}=e;return{...c,runtime:s??void 0,deployed:!!o,secrets:T(r),dependencies:T(i),supported_triggers:T(a),created_at:new Date(Number(t)).toISOString(),updated_at:new Date(Number(n)).toISOString()}}function me(e){return{async create(t,n,r){let i=r?.importMetadata,a=Date.now(),o=i?.created_at?new Date(i.created_at).getTime():a,s=i?.updated_at?new Date(i.updated_at).getTime():i?o:a,c=i?.id??m(),l=n.deployed!==!1,u=await e.transaction().execute(async e=>{let r=((await e.selectFrom(`action_versions`).where(`tenant_id`,`=`,t).where(`action_id`,`=`,n.action_id).select(`number`).orderBy(`number`,`desc`).limit(1).executeTakeFirst())?.number??0)+1;return l&&await e.updateTable(`action_versions`).set(i?{deployed:0}:{deployed:0,updated_at_ts:a}).where(`tenant_id`,`=`,t).where(`action_id`,`=`,n.action_id).execute(),await e.insertInto(`action_versions`).values({id:c,tenant_id:t,action_id:n.action_id,number:r,code:n.code,runtime:n.runtime||null,secrets:n.secrets?JSON.stringify(n.secrets):null,dependencies:n.dependencies?JSON.stringify(n.dependencies):null,supported_triggers:n.supported_triggers?JSON.stringify(n.supported_triggers):null,deployed:+!!l,created_at_ts:o,updated_at_ts:s}).execute(),r});return{id:c,tenant_id:t,action_id:n.action_id,number:u,code:n.code,runtime:n.runtime,secrets:n.secrets,dependencies:n.dependencies,supported_triggers:n.supported_triggers,deployed:l,created_at:new Date(o).toISOString(),updated_at:new Date(s).toISOString()}},async get(t,n,r){let i=await e.selectFrom(`action_versions`).where(`tenant_id`,`=`,t).where(`action_id`,`=`,n).where(`id`,`=`,r).selectAll().executeTakeFirst();return i?pe(i):null},async list(t,n,i={}){let{page:a=0,per_page:o=50,include_totals:s=!1}=i,c=e.selectFrom(`action_versions`).where(`tenant_id`,`=`,t).where(`action_id`,`=`,n),l=(await c.orderBy(`number`,`desc`).offset(a*o).limit(o).selectAll().execute()).map(pe);if(!s)return{versions:l,start:0,limit:0,length:0};let{count:u}=await c.select(e=>e.fn.countAll().as(`count`)).executeTakeFirstOrThrow();return{versions:l,start:a*o,limit:o,length:(0,r.getCountAsInt)(u)}},async removeForAction(t,n){let r=await e.deleteFrom(`action_versions`).where(`tenant_id`,`=`,t).where(`action_id`,`=`,n).executeTakeFirst();return Number(r.numDeletedRows??0)}}}async function E(e,t,n,r){await e.insertInto(`outbox_events`).values({id:n,tenant_id:t,event_type:r.event_type,log_type:r.log_type,aggregate_type:r.target.type,aggregate_id:r.target.id,payload:JSON.stringify({...r,id:n}),created_at:new Date().toISOString(),processed_at:null,retry_count:0,next_retry_at:null,error:null}).execute()}function he(e){return async(t,r)=>{let i=(0,n.nanoid)();return await E(e,t,i,r),i}}function ge(e){return async(t,r,i)=>{let a=i?.importMetadata,{identities:s,phone_verified:c,password:l,last_login:u,last_ip:d,login_count:f,...p}=r,m=new Date().toISOString(),h={...p,created_at:a?.created_at??p.created_at??m,updated_at:a?.updated_at??p.updated_at??m,user_id:a?.id??p.user_id,tenant_id:t,email_verified:+!!r.email_verified,phone_verified:c===void 0?null:+!!c,is_social:+!!r.is_social,blocked:+!!r.blocked,app_metadata:JSON.stringify(r.app_metadata),user_metadata:JSON.stringify(r.user_metadata),address:r.address?JSON.stringify(r.address):null},g=async e=>{if(await e.insertInto(`users`).values(h).execute(),h.user_id&&(u!==void 0||d!==void 0||f!==void 0)&&await e.insertInto(`user_activity`).values({tenant_id:t,user_id:h.user_id,last_login:u??null,last_ip:d??null,login_count:f??0}).execute(),l&&h.user_id){let r={id:(0,n.nanoid)(),user_id:h.user_id,password:l.hash,algorithm:l.algorithm,is_current:1,created_at:new Date().toISOString(),updated_at:new Date().toISOString(),tenant_id:t};await e.insertInto(`passwords`).values(r).execute()}for(let n of i?.outboxEvents??[])await E(e,t,n.id,n)};try{e.isTransaction?await g(e):await e.transaction().execute(g)}catch(e){throw e.code===`SQLITE_CONSTRAINT_UNIQUE`||e.code===`ER_DUP_ENTRY`||e.message.includes(`AlreadyExists`)?new o.HTTPException(409,{message:`User already exists`}):new o.HTTPException(500,{message:`${e.code}, ${e.message}`})}return{...h,last_login:u,last_ip:d,login_count:f??0,email:h.email||``,email_verified:h.email_verified===1,phone_verified:h.phone_verified===null?void 0:h.phone_verified===1,is_social:h.is_social===1,blocked:h.blocked==null?void 0:h.blocked===1,app_metadata:r.app_metadata,user_metadata:r.user_metadata,address:r.address}}}var _e=[`email`,`email_verified`,`phone_number`,`phone_verified`,`username`];function D(e,t=!1){let n={connection:e.connection,provider:e.provider,user_id:(0,a.parseUserId)(e.user_id).id,isSocial:!!e.is_social};for(let t of _e)e[t]!==void 0&&e[t]!==null&&(n[t]=t.endsWith(`_verified`)?!!e[t]:e[t]);if(!t){let t={};try{t=JSON.parse(e.profileData||`{}`)}catch(e){console.error(`Error parsing profileData`,e)}n.profileData={email:e.email,email_verified:!!e.email_verified,...t}}return n}function ve(e){return async(t,n)=>{let[i,a]=await Promise.all([e.selectFrom(`users`).leftJoin(`user_activity`,e=>e.onRef(`user_activity.tenant_id`,`=`,`users.tenant_id`).onRef(`user_activity.user_id`,`=`,`users.user_id`)).where(`users.tenant_id`,`=`,t).where(`users.user_id`,`=`,n).selectAll(`users`).select([`user_activity.last_login`,`user_activity.last_ip`,`user_activity.login_count`]).executeTakeFirst(),e.selectFrom(`users`).where(`users.tenant_id`,`=`,t).where(`users.linked_to`,`=`,n).selectAll().orderBy(`created_at`,`asc`).execute()]);if(!i)return null;let{tenant_id:o,...s}=i;return(0,r.removeNullProperties)({...s,email:i.email||``,email_verified:i.email_verified===1,phone_verified:i.phone_verified===null?void 0:i.phone_verified===1,is_social:i.is_social===1,blocked:i.blocked==null?void 0:i.blocked===1,last_login:i.last_login??void 0,last_ip:i.last_ip??void 0,login_count:i.login_count??0,app_metadata:JSON.parse(i.app_metadata),user_metadata:JSON.parse(i.user_metadata),address:i.address?JSON.parse(i.address):void 0,identities:[D(i,!0),...a.map(e=>D(e))]})}}function O(e){return e?.from!==void 0||e?.take!==void 0}function ye(e,t){let n=typeof e==`number`&&Number.isFinite(e)?Math.floor(e):NaN;return n>=1?n:t}async function k(e,t,n){let{sortColumn:r,sortOrder:s}=n,c=n.idColumn??`id`,l=ye(t?.take,50),u=e.orderBy(i.sql.ref(r),s).orderBy(i.sql.ref(c),s),d=t?.from?(0,a.decodeCursor)(t.from):null;if(d&&d.k!==n.sortKey)throw new o.HTTPException(400,{message:"The `from` cursor was issued under a different sort and cannot be used with this request"});if(d)if(d.s===void 0||d.s===null)u=u.where(i.sql.ref(c),s===`asc`?`>`:`<`,d.i);else{let e=s===`asc`?i.sql.raw(`>`):i.sql.raw(`<`);u=u.where(i.sql`(${i.sql.ref(r)}, ${i.sql.ref(c)}) ${e} (${d.s}, ${d.i})`)}let f=await u.limit(l+1).execute(),p=f.length>l,m=p?f.slice(0,l):f,h;if(p&&m.length>0){let e=m[m.length-1],t=r.split(`.`).pop(),i=c.split(`.`).pop(),o=e[t];h=(0,a.encodeCursor)({s:typeof o==`string`||typeof o==`number`||o===null?o:String(o),i:String(e[i]),...n.sortKey!==void 0&&{k:n.sortKey}})}return{rows:m,limit:l,next:h}}var be=[`user_id`,`email`,`email_verified`,`username`,`phone_number`,`phone_verified`,`name`,`given_name`,`family_name`,`nickname`,`picture`,`locale`,`linked_to`,`provider`,`connection`,`is_social`,`blocked`,`last_ip`,`last_login`,`login_count`,`created_at`,`updated_at`],xe=new Set([`last_login`,`last_ip`,`login_count`]),Se=Object.fromEntries(be.map(e=>[e,e===`login_count`?{column:`user_activity.login_count`,defaultValue:0}:xe.has(e)?`user_activity.${e}`:`users.${e}`])),Ce=[`email`,`name`,`phone_number`,`user_id`];async function we(e,t,n){let i=n.map(e=>e.user_id),a=i.length?await e.selectFrom(`users`).selectAll().where(`users.tenant_id`,`=`,t).where(`users.linked_to`,`in`,i).orderBy(`created_at`,`asc`).execute():[];return n.map(e=>{let t=a.filter(t=>t.linked_to===e.user_id);return(0,r.removeNullProperties)({...e,email_verified:e.email_verified===1,phone_verified:e.phone_verified===null?void 0:e.phone_verified===1,is_social:e.is_social===1,blocked:e.blocked==null?void 0:e.blocked===1,login_count:e.login_count??0,app_metadata:JSON.parse(e.app_metadata),user_metadata:JSON.parse(e.user_metadata),address:e.address?JSON.parse(e.address):void 0,identities:[D(e,!0),...t.map(e=>D(e))]})})}function Te(e){return async(t,n={})=>{let{page:i=0,per_page:s=50,include_totals:c=!1,sort:l,q:u}=n,d=e.selectFrom(`users`).leftJoin(`user_activity`,e=>e.onRef(`user_activity.tenant_id`,`=`,`users.tenant_id`).onRef(`user_activity.user_id`,`=`,`users.user_id`)).where(`users.tenant_id`,`=`,t);if(u){let t=(0,a.sanitizeLuceneQuery)(u,be);t&&(d=S(e,d,t,Ce,[],Se))}if(O(n)){if(l?.sort_by&&l.sort_by!==`created_at`)throw new o.HTTPException(400,{message:`Sorting by ${l.sort_by} is not supported with checkpoint pagination (from/take); only created_at is`});let r=l?.sort_order===`asc`?`asc`:`desc`,{rows:i,limit:a,next:s}=await k(d.where(`users.linked_to`,`is`,null).selectAll(`users`).select([`user_activity.last_login`,`user_activity.last_ip`,`user_activity.login_count`]),n,{sortColumn:`users.created_at`,sortOrder:r,idColumn:`users.user_id`,sortKey:`created_at:${r}`}),c=await we(e,t,i);return{users:c,start:0,limit:a,length:c.length,next:s}}if(l&&l.sort_by){let t=Se[l.sort_by];if(t){let{ref:n}=e.dynamic;d=d.orderBy(typeof t==`string`?n(t):te(t),l.sort_order)}}let f=await we(e,t,await d.offset(i*s).limit(s).selectAll(`users`).select([`user_activity.last_login`,`user_activity.last_ip`,`user_activity.login_count`]).execute());if(!c)return{users:f,start:0,limit:0,length:0};let{count:p}=await d.select(e=>e.fn.countAll().as(`count`)).executeTakeFirstOrThrow();return{users:f,start:i*s,limit:s,length:(0,r.getCountAsInt)(p)}}}function Ee(e){return async(t,n,r)=>{let i=async e=>{await e.deleteFrom(`authentication_methods`).where(`authentication_methods.tenant_id`,`=`,t).where(`authentication_methods.user_id`,`in`,e=>e.selectFrom(`users`).select(`users.user_id`).where(`users.tenant_id`,`=`,t).where(e=>e.or([e(`users.user_id`,`=`,n),e(`users.linked_to`,`=`,n)]))).execute(),await e.deleteFrom(`users`).where(`users.tenant_id`,`=`,t).where(`users.linked_to`,`=`,n).execute();let i=await e.deleteFrom(`users`).where(`users.tenant_id`,`=`,t).where(`users.user_id`,`=`,n).execute();for(let n of r?.outboxEvents??[])await E(e,t,n.id,n);return i.length===1};return r?.outboxEvents?.length&&!e.isTransaction?e.transaction().execute(i):i(e)}}function A(e,t=``,n={}){for(let r in e)if(Object.prototype.hasOwnProperty.call(e,r)){let i=t?`${t}_${r}`:r,a=e[r];typeof a==`object`&&a&&!Array.isArray(a)?A(a,i,n):typeof a==`boolean`?n[i]=+!!a:n[i]=a}return n}function De(e,t){let n={};for(let[r,i]of Object.entries(e)){let e=t.find(e=>r.startsWith(`${e}_`));if(!e)n[r]=i;else{let t=r.slice(e.length+1);n[e]={...n[e],[t]:i}}}return n}function Oe(e){return{user_id:e.user_id,last_login:e.last_login??void 0,last_ip:e.last_ip??void 0,login_count:e.login_count,failed_logins:e.failed_logins?JSON.parse(e.failed_logins):void 0,last_password_reset:e.last_password_reset??void 0}}function ke(e){let t={};return e.last_login!==void 0&&(t.last_login=e.last_login),e.last_ip!==void 0&&(t.last_ip=e.last_ip),e.login_count!==void 0&&(t.login_count=e.login_count),e.failed_logins!==void 0&&(t.failed_logins=JSON.stringify(e.failed_logins)),e.last_password_reset!==void 0&&(t.last_password_reset=e.last_password_reset),t}function Ae(e){return{async get(t,n){let r=await e.selectFrom(`user_activity`).where(`tenant_id`,`=`,t).where(`user_id`,`=`,n).selectAll().executeTakeFirst();return r?Oe(r):null},async upsert(t,n,r){let i=ke(r);if(await e.selectFrom(`user_activity`).where(`tenant_id`,`=`,t).where(`user_id`,`=`,n).select(`user_id`).executeTakeFirst()){if(Object.keys(i).length===0)return;await e.updateTable(`user_activity`).set(i).where(`tenant_id`,`=`,t).where(`user_id`,`=`,n).execute();return}try{await e.insertInto(`user_activity`).values({tenant_id:t,user_id:n,login_count:0,...i}).execute()}catch{if(Object.keys(i).length===0)return;await e.updateTable(`user_activity`).set(i).where(`tenant_id`,`=`,t).where(`user_id`,`=`,n).execute()}}}}function je(e){return async(t,n,r,i)=>{let{last_login:a,last_ip:o,login_count:s,...c}=r,l=A({...c,updated_at:new Date().toISOString(),app_metadata:r.app_metadata?JSON.stringify(r.app_metadata):void 0,user_metadata:r.user_metadata?JSON.stringify(r.user_metadata):void 0,address:r.address?JSON.stringify(r.address):void 0,phone_verified:r.phone_verified===void 0?void 0:+!!r.phone_verified,blocked:r.blocked===void 0?void 0:+!!r.blocked}),u=async e=>{let[r]=await e.updateTable(`users`).set(l).where(`users.tenant_id`,`=`,t).where(`users.user_id`,`=`,n).execute();if(!r||r.numUpdatedRows===0n)return!1;(a!==void 0||o!==void 0||s!==void 0)&&await Ae(e).upsert(t,n,{last_login:a,last_ip:o,login_count:s});for(let n of i?.outboxEvents??[])await E(e,t,n.id,n);return!0};return e.isTransaction?u(e):e.transaction().execute(u)}}function Me(e){return async(t,n,r,i)=>(await e.updateTable(`users`).set({linked_to:null}).where(`users.tenant_id`,`=`,t).where(`users.user_id`,`=`,`${r}|${i}`).where(`users.linked_to`,`=`,`${n}`).execute()).length===1}function Ne(e){let t=ge(e);return{create:t,rawCreate:t,remove:Ee(e),get:ve(e),list:Te(e),update:je(e),unlink:Me(e)}}function Pe(e){return async(t,r,i)=>{let o=i?.importMetadata,s=new Date().toISOString(),c=a.flowSchema.parse({id:o?.id??`af_${(0,n.nanoid)()}`,...r,actions:r.actions||[],created_at:o?.created_at??s,updated_at:o?.updated_at??o?.created_at??s});return await e.insertInto(`flows`).values({...c,tenant_id:t,actions:JSON.stringify(c.actions)}).execute(),c}}function j(e,t){if(!e)return t;try{return JSON.parse(e)}catch{return t}}function Fe(e){if(e)try{let t=JSON.parse(e);return t&&typeof t==`object`&&!Array.isArray(t)?t:void 0}catch{return}}function Ie(e,t,n={...e}){for(let r in t)r in e&&(n[r]=j(e[r],t[r]));return n}function Le(e){return async(t,n)=>{let i=await e.selectFrom(`flows`).selectAll().where(`flows.id`,`=`,n).where(`tenant_id`,`=`,t).executeTakeFirst();if(!i)return null;let o={...i,actions:j(i.actions,[])};return a.flowSchema.parse((0,r.removeNullProperties)(o))}}function Re(e){return async(t,n={})=>{let{page:i=0,per_page:o=50,include_totals:s=!1,q:c}=n,l=e.selectFrom(`flows`).where(`tenant_id`,`=`,t);c&&(l=S(e,l,c,[]));let u=(await l.offset(i*o).limit(o).selectAll().execute()).map(e=>{let t={...e,actions:j(e.actions,[])};return a.flowSchema.parse((0,r.removeNullProperties)(t))});if(!s)return{flows:u,start:0,limit:0,length:0};let{count:d}=await l.select(e=>e.fn.countAll().as(`count`)).executeTakeFirstOrThrow();return{flows:u,start:i*o,limit:o,length:(0,r.getCountAsInt)(d)}}}function ze(e){return async(t,n,r)=>{let i={...r,updated_at:new Date().toISOString()};r.actions!==void 0&&(i.actions=JSON.stringify(r.actions));let{numUpdatedRows:o}=await e.updateTable(`flows`).set(i).where(`id`,`=`,n).where(`tenant_id`,`=`,t).executeTakeFirst();if(o===0n)return null;let s=await e.selectFrom(`flows`).selectAll().where(`id`,`=`,n).where(`tenant_id`,`=`,t).executeTakeFirst();return s?a.flowSchema.parse({...s,actions:s.actions?JSON.parse(s.actions):[]}):null}}function Be(e){return async(t,n)=>((await e.deleteFrom(`flows`).where(`id`,`=`,n).where(`tenant_id`,`=`,t).execute())[0]?.numDeletedRows??0n)>0n}function Ve(e){return{create:Pe(e),get:Le(e),list:Re(e),update:ze(e),remove:Be(e)}}function He(e){let t={...e};return e.session_cookie&&typeof e.session_cookie==`string`&&(t.session_cookie=JSON.parse(e.session_cookie)),e.enabled_locales&&typeof e.enabled_locales==`string`&&(t.enabled_locales=JSON.parse(e.enabled_locales)),e.error_page&&typeof e.error_page==`string`&&(t.error_page=JSON.parse(e.error_page)),e.flags&&typeof e.flags==`string`&&(t.flags=JSON.parse(e.flags)),e.sandbox_versions_available&&typeof e.sandbox_versions_available==`string`&&(t.sandbox_versions_available=JSON.parse(e.sandbox_versions_available)),e.change_password&&typeof e.change_password==`string`&&(t.change_password=JSON.parse(e.change_password)),e.guardian_mfa_page&&typeof e.guardian_mfa_page==`string`&&(t.guardian_mfa_page=JSON.parse(e.guardian_mfa_page)),e.sessions&&typeof e.sessions==`string`&&(t.sessions=JSON.parse(e.sessions)),e.oidc_logout&&typeof e.oidc_logout==`string`&&(t.oidc_logout=JSON.parse(e.oidc_logout)),e.device_flow&&typeof e.device_flow==`string`&&(t.device_flow=JSON.parse(e.device_flow)),e.default_token_quota&&typeof e.default_token_quota==`string`&&(t.default_token_quota=JSON.parse(e.default_token_quota)),e.allowed_logout_urls&&typeof e.allowed_logout_urls==`string`&&(t.allowed_logout_urls=JSON.parse(e.allowed_logout_urls)),e.acr_values_supported&&typeof e.acr_values_supported==`string`&&(t.acr_values_supported=JSON.parse(e.acr_values_supported)),e.mtls&&typeof e.mtls==`string`&&(t.mtls=JSON.parse(e.mtls)),e.mfa&&typeof e.mfa==`string`&&(t.mfa=JSON.parse(e.mfa)),e.attack_protection&&typeof e.attack_protection==`string`&&(t.attack_protection=JSON.parse(e.attack_protection)),e.allow_organization_name_in_authentication_api!==void 0&&(t.allow_organization_name_in_authentication_api=e.allow_organization_name_in_authentication_api===1),e.customize_mfa_in_postlogin_action!==void 0&&(t.customize_mfa_in_postlogin_action=e.customize_mfa_in_postlogin_action===1),e.pushed_authorization_requests_supported!==void 0&&(t.pushed_authorization_requests_supported=e.pushed_authorization_requests_supported===1),e.authorization_response_iss_parameter_supported!==void 0&&(t.authorization_response_iss_parameter_supported=e.authorization_response_iss_parameter_supported===1),(0,r.removeNullProperties)(t)}function Ue(e){let t={...e};return(0,r.stringifyProperties)(e,[`session_cookie`,`enabled_locales`,`error_page`,`flags`,`sandbox_versions_available`,`change_password`,`guardian_mfa_page`,`sessions`,`oidc_logout`,`device_flow`,`default_token_quota`,`allowed_logout_urls`,`acr_values_supported`,`mtls`,`mfa`,`attack_protection`],t),e.allow_organization_name_in_authentication_api!==void 0&&(t.allow_organization_name_in_authentication_api=+!!e.allow_organization_name_in_authentication_api),e.customize_mfa_in_postlogin_action!==void 0&&(t.customize_mfa_in_postlogin_action=+!!e.customize_mfa_in_postlogin_action),e.pushed_authorization_requests_supported!==void 0&&(t.pushed_authorization_requests_supported=+!!e.pushed_authorization_requests_supported),e.authorization_response_iss_parameter_supported!==void 0&&(t.authorization_response_iss_parameter_supported=+!!e.authorization_response_iss_parameter_supported),(0,r.removeUndefinedAndNull)(t)}function We(e){return async(t,r)=>{let i=r?.importMetadata,a=new Date().toISOString(),s={...t,id:i?.id??t.id??(0,n.nanoid)(),created_at:i?.created_at??a,updated_at:i?.updated_at??a},c=Ue(s);try{await e.insertInto(`tenants`).values(c).execute()}catch(e){let t=e?.message??``;throw t.includes(`UNIQUE constraint failed`)||t.includes(`Duplicate entry`)||t.includes(`duplicate key`)||t.includes(`AlreadyExists`)||e?.code===`SQLITE_CONSTRAINT`||e?.code===`SQLITE_CONSTRAINT_UNIQUE`||e?.code===`SQLITE_CONSTRAINT_PRIMARYKEY`||e?.code===`ER_DUP_ENTRY`||e?.code===`23505`?new o.HTTPException(409,{message:`Tenant with ID '${s.id}' already exists`}):e}return s}}function Ge(e){return async t=>{let n=await e.selectFrom(`tenants`).where(`tenants.id`,`=`,t).selectAll().executeTakeFirst();return n?He(n):null}}function Ke(e){return async t=>{let n=e.selectFrom(`tenants`),{page:i=0,per_page:a=50,include_totals:o=!1,sort:s,q:c}=t||{};if(s&&s.sort_by){let{ref:t}=e.dynamic;n=n.orderBy(t(s.sort_by),s.sort_order)}c&&(n=S(e,n,c,[`friendly_name`]));let l=(await n.offset(i*a).limit(a).selectAll().execute()).map(He);if(!o)return{tenants:l};let{count:u}=await n.select(e=>e.fn.countAll().as(`count`)).executeTakeFirstOrThrow(),d=(0,r.getCountAsInt)(u);return{tenants:l,start:i*a,limit:a,length:d}}}function qe(e){return async(t,n)=>{let r={...Ue(n),id:t,updated_at:new Date().toISOString()};await e.updateTable(`tenants`).set(r).where(`id`,`=`,t).execute()}}function Je(e){return async t=>(await e.deleteFrom(`tenants`).where(`tenants.id`,`=`,t).execute()).length===1}function Ye(e){return{create:We(e),get:Ge(e),list:Ke(e),update:qe(e),remove:Je(e)}}function Xe(e){return e?JSON.stringify(e):void 0}var Ze=256;function Qe(e){return async(t,r)=>{let i=r.user_agent?.slice(0,Ze),a=r.log_id||(0,n.nanoid)(),{location_info:o,...s}=r;return await e.insertInto(`logs`).values({...s,log_id:a,tenant_id:t,user_agent:i,description:r.description?.substring(0,256),isMobile:+!!r.isMobile,scope:r.scope,auth0_client:Xe(r.auth0_client),details:Xe(r.details)?.substring(0,8192),country_code:o?.country_code,city_name:o?.city_name,latitude:o?.latitude,longitude:o?.longitude,time_zone:o?.time_zone,continent_code:o?.continent_code}).execute(),{...r,log_id:a,user_agent:i}}}function $e(e){if(!e)return``;try{return JSON.parse(e)}catch{return e}}function M(e){return{...e,client_id:e.client_id,client_name:e.client_name||``,auth0_client:$e(e.auth0_client),details:$e(e.details),isMobile:!!e.isMobile,scope:e.scope||void 0,log_id:e.log_id,location_info:e.country_code?{country_code:e.country_code,city_name:e.city_name||``,latitude:e.latitude||``,longitude:e.longitude||``,time_zone:e.time_zone||``,continent_code:e.continent_code||``}:void 0}}var et=[`user_id`,`ip`,`type`,`date`,`client_id`,`client_name`,`user_agent`,`description`,`user_name`,`connection`,`connection_id`,`audience`,`scope`,`strategy`,`strategy_type`,`hostname`,`log_id`,`session_connection`,`country_code`,`city_name`,`latitude`,`longitude`,`time_zone`,`continent_code`];function tt(e){return async(t,n={})=>{let{page:i=0,per_page:s=50,include_totals:c=!1,sort:l,q:u,from_date:d,to_date:f}=n,p=e.selectFrom(`logs`).where(`logs.tenant_id`,`=`,t);if(u){let t=(0,a.sanitizeLuceneQuery)(u,et);t&&(p=S(e,p,t,[`user_id`,`ip`,`description`],[`description`]))}if(typeof d==`number`&&Number.isFinite(d)&&(p=p.where(`logs.date`,`>=`,new Date(Math.floor(d)*1e3).toISOString())),typeof f==`number`&&Number.isFinite(f)&&(p=p.where(`logs.date`,`<=`,new Date(Math.floor(f)*1e3+999).toISOString())),O(n)){if(l?.sort_by&&l.sort_by!==`date`)throw new o.HTTPException(400,{message:`Sorting by ${l.sort_by} is not supported with checkpoint pagination (from/take); only date is`});let e=l?.sort_order===`asc`?`asc`:`desc`,{rows:t,limit:r,next:i}=await k(p.selectAll(),n,{sortColumn:`date`,sortOrder:e,idColumn:`log_id`,sortKey:`date:${e}`}),a=t.map(M);return{logs:a,start:0,limit:r,length:a.length,next:i}}let m=p;if(l&&l.sort_by){let{ref:t}=e.dynamic;m=m.orderBy(t(l.sort_by),l.sort_order)}m=m.offset(i*s).limit(s);let h=(await m.selectAll().execute()).map(M);if(!c)return{logs:h,start:0,limit:0,length:0};let{count:g}=await p.select(e=>e.fn.countAll().as(`count`)).executeTakeFirstOrThrow();return{logs:h,start:i*s,limit:s,length:(0,r.getCountAsInt)(g)}}}function nt(e){return async(t,n)=>{let r=await e.selectFrom(`logs`).where(`logs.tenant_id`,`=`,t).where(`logs.log_id`,`=`,n).selectAll().executeTakeFirst();return r?M(r):null}}function rt(e){return{create:Qe(e),list:tt(e),get:nt(e)}}function it(e){return async(t,n)=>{let i=await e.selectFrom(`sessions`).where(`sessions.tenant_id`,`=`,t).where(`sessions.id`,`=`,n).selectAll().executeTakeFirst();if(!i)return null;let{tenant_id:a,device:o,clients:s,created_at_ts:c,updated_at_ts:l,expires_at_ts:u,idle_expires_at_ts:d,authenticated_at_ts:f,last_interaction_at_ts:p,used_at_ts:m,revoked_at_ts:h,...g}=i,_=(0,r.convertDatesToAdapter)({created_at_ts:c,updated_at_ts:l,expires_at_ts:u,idle_expires_at_ts:d,authenticated_at_ts:f,last_interaction_at_ts:p,used_at_ts:m,revoked_at_ts:h},[`created_at_ts`,`updated_at_ts`,`authenticated_at_ts`,`last_interaction_at_ts`],[`expires_at_ts`,`idle_expires_at_ts`,`used_at_ts`,`revoked_at_ts`]);return{...g,..._,device:JSON.parse(o),clients:JSON.parse(s)}}}function at(e){return async(t,n)=>{let i=Date.now(),a=(0,r.nowIso)(),o={...n,created_at:a,updated_at:a,authenticated_at:a,last_interaction_at:a},{expires_at:s,idle_expires_at:c,used_at:l,revoked_at:u,device:d,clients:f,...p}=n,m=(0,r.isoToDbDate)(s),h=(0,r.isoToDbDate)(c),g=Math.max(m??0,h??0);return await e.transaction().execute(async e=>{await e.insertInto(`sessions`).values({...p,tenant_id:t,created_at_ts:i,updated_at_ts:i,authenticated_at_ts:i,last_interaction_at_ts:i,expires_at_ts:m,idle_expires_at_ts:h,used_at_ts:(0,r.isoToDbDate)(l),revoked_at_ts:(0,r.isoToDbDate)(u),device:JSON.stringify(d),clients:JSON.stringify(f)}).execute(),g>0&&n.login_session_id&&await e.updateTable(`login_sessions`).set({expires_at_ts:g,updated_at_ts:i}).where(`tenant_id`,`=`,t).where(`id`,`=`,n.login_session_id).where(`expires_at_ts`,`<`,g).execute()}),o}}function ot(e){return async(t,n)=>!!(await e.deleteFrom(`sessions`).where(`tenant_id`,`=`,t).where(`sessions.id`,`=`,n).execute()).length}function st(e){return async(t,n,i)=>{let a=Date.now(),o={updated_at_ts:a,device:i.device?JSON.stringify(i.device):void 0,clients:i.clients?JSON.stringify(i.clients):void 0},s,c;i.expires_at!==void 0&&(s=(0,r.isoToDbDate)(i.expires_at),o.expires_at_ts=s),i.idle_expires_at!==void 0&&(c=(0,r.isoToDbDate)(i.idle_expires_at),o.idle_expires_at_ts=c),i.authenticated_at!==void 0&&(o.authenticated_at_ts=(0,r.isoToDbDate)(i.authenticated_at)),i.last_interaction_at!==void 0&&(o.last_interaction_at_ts=(0,r.isoToDbDate)(i.last_interaction_at)),i.used_at!==void 0&&(o.used_at_ts=(0,r.isoToDbDate)(i.used_at)),i.revoked_at!==void 0&&(o.revoked_at_ts=(0,r.isoToDbDate)(i.revoked_at)),i.user_id!==void 0&&(o.user_id=i.user_id),i.login_session_id!==void 0&&(o.login_session_id=i.login_session_id);let l=await e.updateTable(`sessions`).set(o).where(`tenant_id`,`=`,t).where(`sessions.id`,`=`,n).execute(),u=Math.max(s??0,c??0);if(u>0){let r=i.login_session_id??e.selectFrom(`sessions`).select(`login_session_id`).where(`tenant_id`,`=`,t).where(`id`,`=`,n);await e.updateTable(`login_sessions`).set({expires_at_ts:u,updated_at_ts:a}).where(`tenant_id`,`=`,t).where(`id`,`=`,r).where(`expires_at_ts`,`<`,u).execute().catch(()=>{})}return!!l.length}}function ct(e){return async(t,n={})=>{let{page:i=0,per_page:a=50,include_totals:o=!1,sort:s,q:c}=n,l=e.selectFrom(`sessions`).where(`sessions.tenant_id`,`=`,t);c&&(l=S(e,l,c,[`user_id`,`session_id`]));let u=l;if(s&&s.sort_by){let{ref:t}=e.dynamic;u=u.orderBy(t(s.sort_by),s.sort_order)}u=u.offset(i*a).limit(a);let d=(await u.selectAll().execute()).map(e=>{let{tenant_id:t,device:n,clients:i,created_at_ts:a,updated_at_ts:o,expires_at_ts:s,idle_expires_at_ts:c,authenticated_at_ts:l,last_interaction_at_ts:u,used_at_ts:d,revoked_at_ts:f,...p}=e,m=(0,r.convertDatesToAdapter)({created_at_ts:a,updated_at_ts:o,expires_at_ts:s,idle_expires_at_ts:c,authenticated_at_ts:l,last_interaction_at_ts:u,used_at_ts:d,revoked_at_ts:f},[`created_at_ts`,`updated_at_ts`,`authenticated_at_ts`,`last_interaction_at_ts`],[`expires_at_ts`,`idle_expires_at_ts`,`used_at_ts`,`revoked_at_ts`]);return{...p,...m,device:JSON.parse(n),clients:JSON.parse(i)}});if(!o)return{sessions:d,start:0,limit:0,length:0};let{count:f}=await l.select(e=>e.fn.countAll().as(`count`)).executeTakeFirstOrThrow(),p=(0,r.getCountAsInt)(f);return{sessions:d,start:i*a,limit:a,length:p}}}function lt(e){return{create:at(e),get:it(e),list:ct(e),remove:ot(e),update:st(e)}}function ut(e){return async(t,n)=>{let r=await e.selectFrom(`passwords`).where(`passwords.tenant_id`,`=`,t).where(`passwords.user_id`,`=`,n).where(`passwords.is_current`,`=`,1).selectAll().executeTakeFirst();if(!r)return null;let{tenant_id:i,...a}=r;return{...a,is_current:!!a.is_current}}}function dt(e){return async(t,r,i)=>{let a=i?.importMetadata,o=a?.id||r.id||(0,n.nanoid)(),s=r.is_current??!0,c=new Date().toISOString(),l={...r,id:o,is_current:s,created_at:a?.created_at??c,updated_at:a?.updated_at??c};return s&&await e.updateTable(`passwords`).set({is_current:0}).where(`user_id`,`=`,r.user_id).where(`tenant_id`,`=`,t).where(`is_current`,`=`,1).execute(),await e.insertInto(`passwords`).values({...l,is_current:+!!l.is_current,tenant_id:t}).execute(),l}}function ft(e){return async(t,n)=>{let r=e.updateTable(`passwords`).set({password:n.password,algorithm:n.algorithm,is_current:+!!n.is_current,updated_at:new Date().toISOString()}).where(`tenant_id`,`=`,t).where(`user_id`,`=`,n.user_id);return r=n.id?r.where(`id`,`=`,n.id):r.where(`is_current`,`=`,1),(await r.execute()).length===1}}function pt(e){return async(t,n,r)=>{let i=e.selectFrom(`passwords`).where(`passwords.tenant_id`,`=`,t).where(`passwords.user_id`,`=`,n).orderBy(`created_at`,`desc`);return r&&(i=i.limit(r)),(await i.selectAll().execute()).map(({tenant_id:e,...t})=>({...t,is_current:!!t.is_current}))}}function mt(e){return{create:dt(e),update:ft(e),get:ut(e),list:pt(e)}}function ht(e){return async(t,n={})=>{let{page:i=0,per_page:o=50,include_totals:s=!1,q:c}=n,l=e.selectFrom(`codes`).where(`codes.tenant_id`,`=`,t);c&&(l=S(e,l,c,[`code`,`login_id`]));let u=(await l.offset(i*o).limit(o).selectAll().execute()).map(e=>{let{tenant_id:t,...n}=e;return a.codeSchema.parse((0,r.removeNullProperties)(n))});if(!s)return{codes:u,start:0,limit:0,length:0};let{count:d}=await l.select(e=>e.fn.countAll().as(`count`)).executeTakeFirstOrThrow();return{codes:u,start:i*o,limit:o,length:(0,r.getCountAsInt)(d)}}}function gt(e){let t=new Date(e).getTime();return Number.isNaN(t)?0:t}function _t(e){return async(t,n)=>{let r={...n,created_at:new Date().toISOString()};return await e.insertInto(`codes`).values({...r,tenant_id:t,expires_at_ts:gt(r.expires_at)}).execute(),r}}function vt(e){return async(t,n)=>(await e.deleteFrom(`codes`).where(`codes.tenant_id`,`=`,t).where(`codes.code_id`,`=`,n).executeTakeFirst()).numDeletedRows>0}function yt(e){return async(t,n,i)=>{let a=e.selectFrom(`codes`).where(`codes.code_id`,`=`,n).where(`codes.code_type`,`=`,i);t.length&&(a=a.where(`codes.tenant_id`,`=`,t));let o=await a.selectAll().executeTakeFirst();return o?(0,r.removeNullProperties)(o):null}}function bt(e){return async(t,n)=>(await e.updateTable(`codes`).set({used_at:new Date().toISOString()}).where(`codes.tenant_id`,`=`,t).where(`codes.code_id`,`=`,n).executeTakeFirst()).numUpdatedRows>0}function xt(e){return async(t,n)=>(await e.updateTable(`codes`).set({used_at:new Date().toISOString()}).where(`codes.tenant_id`,`=`,t).where(`codes.code_id`,`=`,n).where(`codes.used_at`,`is`,null).executeTakeFirst()).numUpdatedRows>0}function St(e){return async t=>{let n=await e.deleteFrom(`codes`).where(`expires_at_ts`,`<`,gt(t)).executeTakeFirst(),r=await e.deleteFrom(`codes`).where(`expires_at_ts`,`is`,null).where(`expires_at`,`<`,t).executeTakeFirst();return Number(n.numDeletedRows)+Number(r.numDeletedRows)}}function Ct(e){return{create:_t(e),list:ht(e),remove:vt(e),used:bt(e),consume:xt(e),get:yt(e),cleanup:St(e)}}function wt(e){return async(t,n,r)=>{let i=r?.importMetadata,{is_system:a,...o}=n;delete o.enabled_clients;let s=new Date().toISOString(),c={...o,id:i?.id??o.id??f(),is_system:a?!0:void 0,created_at:i?.created_at??s,updated_at:i?.updated_at??s};return await e.insertInto(`connections`).values({...c,is_system:+!!a,options:JSON.stringify(c.options||{}),tenant_id:t}).execute(),c}}function N(e){let{is_system:t,...n}=e;return(0,r.removeNullProperties)({...n,is_system:t?!0:void 0,options:typeof e.options==`string`?JSON.parse(e.options):{}})}function Tt(e){return e.map(N)}function Et(e){return async(t,n={})=>{let{page:i=0,per_page:a=50,include_totals:o=!1,q:s}=n,c=e.selectFrom(`connections`).where(`connections.tenant_id`,`=`,t);s&&(c=S(e,c,s,[`user_id`,`ip`]));let l=Tt(await c.offset(i*a).limit(a).selectAll().execute());if(!o)return{connections:l,start:0,limit:0,length:0};let{count:u}=await c.select(e=>e.fn.countAll().as(`count`)).executeTakeFirstOrThrow();return{connections:l,start:i*a,limit:a,length:(0,r.getCountAsInt)(u)}}}function Dt(e){return async(t,n)=>(await e.deleteFrom(`connections`).where(`connections.tenant_id`,`=`,t).where(`connections.id`,`=`,n).executeTakeFirst()).numDeletedRows>0}function Ot(e){return async(t,n)=>{let r=await e.selectFrom(`connections`).where(`connections.tenant_id`,`=`,t).where(`connections.id`,`=`,n).selectAll().executeTakeFirst();return r?N(r):null}}function kt(e){return async(t,n,r)=>{let{is_system:i,...a}=r;delete a.enabled_clients;let o={...a,is_system:i===void 0?void 0:+!!i,updated_at:new Date().toISOString()};return await e.updateTable(`connections`).set({...o,options:o.options?JSON.stringify(o.options):void 0}).where(`connections.id`,`=`,n).where(`connections.tenant_id`,`=`,t).execute(),!0}}function At(e){return{create:wt(e),get:Ot(e),list:Et(e),remove:Dt(e),update:kt(e)}}function jt(e){return async(t,i,a)=>{let o=a?.importMetadata,s=o?.id??i.client_id??(0,n.nanoid)(),c=new Date().toISOString(),l={...i,created_at:o?.created_at??c,updated_at:o?.updated_at??o?.created_at??c,client_id:s,global:i.global??!1,is_first_party:i.is_first_party??!0,oidc_conformant:i.oidc_conformant??!0,auth0_conformant:i.auth0_conformant??!0,sso:i.sso??!1,sso_disabled:i.sso_disabled??!1,cross_origin_authentication:i.cross_origin_authentication??!1,custom_login_page_on:i.custom_login_page_on??!1,require_pushed_authorization_requests:i.require_pushed_authorization_requests??!1,require_proof_of_possession:i.require_proof_of_possession??!1,hide_sign_up_disabled_error:i.hide_sign_up_disabled_error??!1},u={...l,tenant_id:t};return(0,r.booleanToInt)(l,[`global`,`is_first_party`,`oidc_conformant`,`auth0_conformant`,`sso`,`sso_disabled`,`cross_origin_authentication`,`custom_login_page_on`,`require_pushed_authorization_requests`,`require_proof_of_possession`,`hide_sign_up_disabled_error`],u),Object.assign(u,{callbacks:JSON.stringify(i.callbacks||[]),allowed_origins:JSON.stringify(i.allowed_origins||[]),web_origins:JSON.stringify(i.web_origins||[]),client_aliases:JSON.stringify(i.client_aliases||[]),allowed_clients:JSON.stringify(i.allowed_clients||[]),connections:JSON.stringify(i.connections||[]),allowed_logout_urls:JSON.stringify(i.allowed_logout_urls||[]),session_transfer:JSON.stringify(i.session_transfer||{}),oidc_logout:JSON.stringify(i.oidc_logout||{}),grant_types:JSON.stringify(i.grant_types||[]),jwt_configuration:JSON.stringify(i.jwt_configuration||{}),signing_keys:JSON.stringify(i.signing_keys||[]),encryption_key:JSON.stringify(i.encryption_key||{}),addons:JSON.stringify(i.addons||{}),client_metadata:JSON.stringify(i.client_metadata||{}),mobile:JSON.stringify(i.mobile||{}),native_social_login:JSON.stringify(i.native_social_login||{}),refresh_token:JSON.stringify(i.refresh_token||{}),default_organization:JSON.stringify(i.default_organization||{}),client_authentication_methods:JSON.stringify(i.client_authentication_methods||{}),signed_request_object:JSON.stringify(i.signed_request_object||{}),token_quota:JSON.stringify(i.token_quota||{}),owner_user_id:i.owner_user_id??null,registration_type:i.registration_type??null,registration_metadata:i.registration_metadata?JSON.stringify(i.registration_metadata):null}),await e.insertInto(`clients`).values(u).execute(),l}}function Mt(e){return async(t,n)=>{let i=await e.selectFrom(`clients`).where(`clients.tenant_id`,`=`,t).where(`clients.client_id`,`=`,n).selectAll().executeTakeFirst();if(!i)return null;let{tenant_id:a,...o}=i;return(0,r.removeNullProperties)({...o,global:!!i.global,is_first_party:!!i.is_first_party,oidc_conformant:!!i.oidc_conformant,auth0_conformant:!!i.auth0_conformant,sso:!!i.sso,sso_disabled:!!i.sso_disabled,cross_origin_authentication:!!i.cross_origin_authentication,custom_login_page_on:!!i.custom_login_page_on,require_pushed_authorization_requests:!!i.require_pushed_authorization_requests,require_proof_of_possession:!!i.require_proof_of_possession,hide_sign_up_disabled_error:!!i.hide_sign_up_disabled_error,callbacks:JSON.parse(i.callbacks),allowed_origins:JSON.parse(i.allowed_origins),web_origins:JSON.parse(i.web_origins),client_aliases:JSON.parse(i.client_aliases),allowed_clients:JSON.parse(i.allowed_clients),connections:JSON.parse(i.connections||`[]`),allowed_logout_urls:JSON.parse(i.allowed_logout_urls),session_transfer:JSON.parse(i.session_transfer),oidc_logout:JSON.parse(i.oidc_logout),grant_types:JSON.parse(i.grant_types),jwt_configuration:JSON.parse(i.jwt_configuration),signing_keys:JSON.parse(i.signing_keys),encryption_key:JSON.parse(i.encryption_key),addons:JSON.parse(i.addons),client_metadata:JSON.parse(i.client_metadata),mobile:JSON.parse(i.mobile),native_social_login:JSON.parse(i.native_social_login),refresh_token:JSON.parse(i.refresh_token),default_organization:JSON.parse(i.default_organization),client_authentication_methods:JSON.parse(i.client_authentication_methods),signed_request_object:JSON.parse(i.signed_request_object),token_quota:JSON.parse(i.token_quota),registration_metadata:i.registration_metadata?JSON.parse(i.registration_metadata):void 0})}}function Nt(e){return async t=>{let n=await e.selectFrom(`clients`).where(`clients.client_id`,`=`,t).selectAll().executeTakeFirst();return n?(0,r.removeNullProperties)({...n,global:!!n.global,is_first_party:!!n.is_first_party,oidc_conformant:!!n.oidc_conformant,auth0_conformant:!!n.auth0_conformant,sso:!!n.sso,sso_disabled:!!n.sso_disabled,cross_origin_authentication:!!n.cross_origin_authentication,custom_login_page_on:!!n.custom_login_page_on,require_pushed_authorization_requests:!!n.require_pushed_authorization_requests,require_proof_of_possession:!!n.require_proof_of_possession,hide_sign_up_disabled_error:!!n.hide_sign_up_disabled_error,callbacks:JSON.parse(n.callbacks),allowed_origins:JSON.parse(n.allowed_origins),web_origins:JSON.parse(n.web_origins),client_aliases:JSON.parse(n.client_aliases),allowed_clients:JSON.parse(n.allowed_clients),connections:JSON.parse(n.connections||`[]`),allowed_logout_urls:JSON.parse(n.allowed_logout_urls),session_transfer:JSON.parse(n.session_transfer),oidc_logout:JSON.parse(n.oidc_logout),grant_types:JSON.parse(n.grant_types),jwt_configuration:JSON.parse(n.jwt_configuration),signing_keys:JSON.parse(n.signing_keys),encryption_key:JSON.parse(n.encryption_key),addons:JSON.parse(n.addons),client_metadata:JSON.parse(n.client_metadata),mobile:JSON.parse(n.mobile),native_social_login:JSON.parse(n.native_social_login),refresh_token:JSON.parse(n.refresh_token),default_organization:JSON.parse(n.default_organization),client_authentication_methods:JSON.parse(n.client_authentication_methods),signed_request_object:JSON.parse(n.signed_request_object),token_quota:JSON.parse(n.token_quota),registration_metadata:n.registration_metadata?JSON.parse(n.registration_metadata):void 0}):null}}function Pt(e){return(0,r.removeNullProperties)({...e,global:!!e.global,is_first_party:!!e.is_first_party,oidc_conformant:!!e.oidc_conformant,auth0_conformant:!!e.auth0_conformant,sso:!!e.sso,sso_disabled:!!e.sso_disabled,cross_origin_authentication:!!e.cross_origin_authentication,custom_login_page_on:!!e.custom_login_page_on,require_pushed_authorization_requests:!!e.require_pushed_authorization_requests,require_proof_of_possession:!!e.require_proof_of_possession,hide_sign_up_disabled_error:!!e.hide_sign_up_disabled_error,callbacks:JSON.parse(e.callbacks),allowed_origins:JSON.parse(e.allowed_origins),web_origins:JSON.parse(e.web_origins),client_aliases:JSON.parse(e.client_aliases),allowed_clients:JSON.parse(e.allowed_clients),connections:JSON.parse(e.connections||`[]`),allowed_logout_urls:JSON.parse(e.allowed_logout_urls),session_transfer:JSON.parse(e.session_transfer),oidc_logout:JSON.parse(e.oidc_logout),grant_types:JSON.parse(e.grant_types),jwt_configuration:JSON.parse(e.jwt_configuration),signing_keys:JSON.parse(e.signing_keys),encryption_key:JSON.parse(e.encryption_key),addons:JSON.parse(e.addons),client_metadata:JSON.parse(e.client_metadata),mobile:JSON.parse(e.mobile),native_social_login:JSON.parse(e.native_social_login),refresh_token:JSON.parse(e.refresh_token),default_organization:JSON.parse(e.default_organization),client_authentication_methods:JSON.parse(e.client_authentication_methods),signed_request_object:JSON.parse(e.signed_request_object),token_quota:JSON.parse(e.token_quota),registration_metadata:e.registration_metadata?JSON.parse(e.registration_metadata):void 0})}function Ft(e){return async(t,n)=>{let r=e.selectFrom(`clients`).where(`clients.tenant_id`,`=`,t),a=new Set([`owner_user_id`,`registration_type`]);if(n?.q){let e=n.q.trim().match(/^([a-zA-Z_][a-zA-Z0-9_]*):"?([^"]*)"?$/);if(e&&a.has(e[1])&&e[2]){let t=e[1];r=r.where(t,`=`,e[2])}else r=r.where(e=>e.or([e(`name`,`like`,`%${n.q}%`),e(`client_id`,`like`,`%${n.q}%`)]))}if(O(n)){let{rows:e,limit:t,next:i}=await k(r.selectAll(),n,{sortColumn:`created_at`,sortOrder:`desc`,idColumn:`client_id`}),a=e.map(Pt);return{clients:a,totals:{start:0,limit:t,length:a.length,next:i}}}if(n?.sort){let e=n.sort.sort_order===`asc`?`asc`:`desc`,t=n.sort.sort_by;r=[`name`,`client_id`,`created_at`,`updated_at`].includes(t)?r.orderBy(t,e):r.orderBy(`created_at`,`desc`)}else r=r.orderBy(`created_at`,`desc`);let o=n?.page??0,s=n?.per_page||10,c=await r.selectAll().limit(s).offset(o*s).execute(),l=c.length;if(n?.include_totals){let r=e.selectFrom(`clients`).select(i.sql`count(*)`.as(`count`)).where(`clients.tenant_id`,`=`,t);if(n?.q){let e=n.q.trim().match(/^([a-zA-Z_][a-zA-Z0-9_]*):"?([^"]*)"?$/);if(e&&a.has(e[1])&&e[2]){let t=e[1];r=r.where(t,`=`,e[2])}else r=r.where(e=>e.or([e(`name`,`like`,`%${n.q}%`),e(`client_id`,`like`,`%${n.q}%`)]))}let o=await r.executeTakeFirst();l=Number(o?.count||0)}let u=c.map(Pt);return{clients:u,totals:{start:o*s,limit:s,length:u.length,total:l}}}}function It(e){return async(t,n)=>(await e.deleteFrom(`clients`).where(`clients.tenant_id`,`=`,t).where(`clients.client_id`,`=`,n).executeTakeFirst()).numDeletedRows>0}function Lt(e){return async(t,n,i)=>{let a={...i,updated_at:new Date().toISOString()};return(0,r.booleanToInt)(i,[`global`,`is_first_party`,`oidc_conformant`,`auth0_conformant`,`sso`,`sso_disabled`,`cross_origin_authentication`,`custom_login_page_on`,`require_pushed_authorization_requests`,`require_proof_of_possession`,`hide_sign_up_disabled_error`],a),(0,r.stringifyProperties)(i,[`callbacks`,`allowed_origins`,`web_origins`,`client_aliases`,`allowed_clients`,`connections`,`allowed_logout_urls`,`session_transfer`,`oidc_logout`,`grant_types`,`jwt_configuration`,`signing_keys`,`encryption_key`,`addons`,`client_metadata`,`mobile`,`native_social_login`,`refresh_token`,`default_organization`,`client_authentication_methods`,`signed_request_object`,`token_quota`,`registration_metadata`],a),(await e.updateTable(`clients`).set(a).where(`clients.tenant_id`,`=`,t).where(`clients.client_id`,`=`,n).executeTakeFirst()).numUpdatedRows>0}}function Rt(e){return{create:jt(e),get:Mt(e),getByClientId:Nt(e),list:Ft(e),remove:It(e),update:Lt(e)}}function zt(e){return async(t,n)=>{let r=await e.selectFrom(`clients`).where(`clients.tenant_id`,`=`,t).where(`clients.client_id`,`=`,n).select(`connections`).executeTakeFirst();if(!r)return[];let i=JSON.parse(r.connections||`[]`);if(i.length===0)return[];let a=await e.selectFrom(`connections`).where(`connections.tenant_id`,`=`,t).where(`connections.id`,`in`,i).selectAll().execute(),o=new Map(a.map(e=>[e.id,N(e)]));return i.map(e=>o.get(e)).filter(e=>e!==void 0)}}function Bt(e){return async(t,n,r)=>(await e.updateTable(`clients`).set({connections:JSON.stringify(r),updated_at:new Date().toISOString()}).where(`clients.tenant_id`,`=`,t).where(`clients.client_id`,`=`,n).executeTakeFirst()).numUpdatedRows>0}function Vt(e){return async(t,n)=>{let r=await e.selectFrom(`clients`).where(`clients.tenant_id`,`=`,t).select([`client_id`,`connections`]).execute(),i=[];for(let e of r)JSON.parse(e.connections||`[]`).includes(n)&&i.push(e.client_id);return i}}function Ht(e){return async(t,n,r)=>{let i=await e.selectFrom(`clients`).where(`clients.tenant_id`,`=`,t).where(`clients.client_id`,`=`,r).select(`connections`).executeTakeFirst();if(!i)return!1;let a=JSON.parse(i.connections||`[]`);return a.includes(n)?!0:(a.push(n),(await e.updateTable(`clients`).set({connections:JSON.stringify(a),updated_at:new Date().toISOString()}).where(`clients.tenant_id`,`=`,t).where(`clients.client_id`,`=`,r).executeTakeFirst()).numUpdatedRows>0)}}function Ut(e){return async(t,n,r)=>{let i=await e.selectFrom(`clients`).where(`clients.tenant_id`,`=`,t).where(`clients.client_id`,`=`,r).select(`connections`).executeTakeFirst();if(!i)return!1;let a=JSON.parse(i.connections||`[]`),o=a.filter(e=>e!==n);return o.length===a.length?!0:(await e.updateTable(`clients`).set({connections:JSON.stringify(o),updated_at:new Date().toISOString()}).where(`clients.tenant_id`,`=`,t).where(`clients.client_id`,`=`,r).executeTakeFirst()).numUpdatedRows>0}}function Wt(e){return{listByClient:zt(e),updateByClient:Bt(e),listByConnection:Vt(e),addClientToConnection:Ht(e),removeClientFromConnection:Ut(e)}}function Gt(e){return async(t,i,a)=>{let o=a?.importMetadata,s=new Date().toISOString(),c=o?.id??(0,n.nanoid)(),l=o?.created_at??s,u=o?.updated_at??o?.created_at??s,{scope:d,authorization_details_types:f,...p}=i,m={id:c,tenant_id:t,...p,scope:d?JSON.stringify(d):`[]`,authorization_details_types:f?JSON.stringify(f):`[]`,allow_any_organization:p.allow_any_organization===void 0?void 0:+!!p.allow_any_organization,is_system:p.is_system===void 0?void 0:+!!p.is_system,created_at:l,updated_at:u};return await e.insertInto(`client_grants`).values(m).execute(),(0,r.removeNullProperties)({id:c,tenant_id:t,...p,scope:d||[],authorization_details_types:f||[],allow_any_organization:p.allow_any_organization??!1,is_system:p.is_system??!1,created_at:l,updated_at:u})}}function Kt(e){return async(t,n)=>{let i=await e.selectFrom(`client_grants`).selectAll().where(`client_grants.tenant_id`,`=`,t).where(`client_grants.id`,`=`,n).executeTakeFirst();return i?(0,r.removeNullProperties)({id:i.id,client_id:i.client_id,audience:i.audience,scope:i.scope?JSON.parse(i.scope):[],organization_usage:i.organization_usage,allow_any_organization:i.allow_any_organization===void 0?!1:!!i.allow_any_organization,is_system:i.is_system===void 0?!1:!!i.is_system,subject_type:i.subject_type,authorization_details_types:i.authorization_details_types?JSON.parse(i.authorization_details_types):[],created_at:i.created_at,updated_at:i.updated_at}):null}}function qt(e){return a.clientGrantSchema.parse((0,r.removeNullProperties)({...e,scope:e.scope?JSON.parse(e.scope):[],allow_any_organization:!!e.allow_any_organization,is_system:!!e.is_system,authorization_details_types:e.authorization_details_types?JSON.parse(e.authorization_details_types):[]}))}function Jt(e){return async(t,n={})=>{let{page:i=0,per_page:a=50,include_totals:o=!1,q:s,sort:c}=n,l=e.selectFrom(`client_grants`).where(`client_grants.tenant_id`,`=`,t);if(s){let t=s.trim(),n=t.split(/\s+/),r=n.length===1?n[0]:void 0,i=r?r.match(/^(-)?([a-zA-Z_][a-zA-Z0-9_]*):"?([^"]*)"?$/):null,a=i?i[3]:``,o=/^(>=|>|<=|<)/.test(a||``);if(i&&!o&&a){let t=!!i[1],n=i[2],{ref:r}=e.dynamic,o=r(`client_grants.${n}`);if(n===`allow_any_organization`){let e=+(a===`true`);l=l.where(o,t?`!=`:`=`,e)}else l=l.where(o,t?`!=`:`=`,a)}else l=S(e,l,t,[])}if(O(n)){let{rows:e,limit:t,next:r}=await k(l.selectAll(),n,{sortColumn:`created_at`,sortOrder:`desc`}),i=e.map(qt);return{client_grants:i,start:0,limit:t,length:i.length,next:r}}let u=l;if(c){let{ref:t}=e.dynamic;u=u.orderBy(t(c.sort_by),c.sort_order)}else u=u.orderBy(`client_grants.created_at`,`desc`);let d=(await u.selectAll().limit(a).offset(i*a).execute()).map(qt);if(!o)return{client_grants:d,start:0,limit:0,length:0};let{count:f}=await l.select(e=>e.fn.countAll().as(`count`)).executeTakeFirstOrThrow();return{client_grants:d,start:i*a,limit:a,length:(0,r.getCountAsInt)(f)}}}function Yt(e){return async(t,n)=>((await e.deleteFrom(`client_grants`).where(`client_grants.tenant_id`,`=`,t).where(`client_grants.id`,`=`,n).executeTakeFirst()).numDeletedRows??0n)>0n}function Xt(e){return async(t,n,r)=>{let i=new Date().toISOString(),{scope:a,authorization_details_types:o,...s}=r,c={...s,updated_at:i};return a!==void 0&&(c.scope=JSON.stringify(a)),o!==void 0&&(c.authorization_details_types=JSON.stringify(o)),s.allow_any_organization!==void 0&&(c.allow_any_organization=+!!s.allow_any_organization),s.is_system!==void 0&&(c.is_system=+!!s.is_system),((await e.updateTable(`client_grants`).set(c).where(`client_grants.tenant_id`,`=`,t).where(`client_grants.id`,`=`,n).executeTakeFirst()).numUpdatedRows??0n)>0n}}function Zt(e){return{create:Gt(e),get:Kt(e),list:Jt(e),remove:Yt(e),update:Xt(e)}}function Qt(e){return async(t,n)=>{let i=Date.now();return await e.insertInto(`client_registration_tokens`).values({id:n.id,tenant_id:t,token_hash:n.token_hash,type:n.type,client_id:n.client_id??null,sub:n.sub??null,constraints:n.constraints?JSON.stringify(n.constraints):null,single_use:+!!n.single_use,expires_at_ts:(0,r.isoToDbDate)(n.expires_at),created_at_ts:i,used_at_ts:null,revoked_at_ts:null}).execute(),{id:n.id,token_hash:n.token_hash,type:n.type,client_id:n.client_id,sub:n.sub,constraints:n.constraints,single_use:n.single_use,expires_at:n.expires_at,created_at:new Date(i).toISOString()}}}function $t(e){let t=a.clientRegistrationTokenTypeSchema.safeParse(e);if(!t.success)throw Error(`Unknown client_registration_tokens.type: ${e}`);return t.data}function en(e){if(!e)return;let t;try{t=JSON.parse(e)}catch{return}return(0,a.isPlainObject)(t)?t:void 0}function P(e){return{id:e.id,token_hash:e.token_hash,type:$t(e.type),client_id:e.client_id??void 0,sub:e.sub??void 0,constraints:en(e.constraints),single_use:!!e.single_use,expires_at:(0,r.dbDateToIso)(e.expires_at_ts),used_at:(0,r.dbDateToIso)(e.used_at_ts),revoked_at:(0,r.dbDateToIso)(e.revoked_at_ts),created_at:(0,r.dbDateToIsoRequired)(e.created_at_ts)}}function tn(e){return async(t,n)=>{let r=await e.selectFrom(`client_registration_tokens`).where(`tenant_id`,`=`,t).where(`id`,`=`,n).selectAll().executeTakeFirst();return r?P(r):null}}function nn(e){return async(t,n)=>{let r=await e.selectFrom(`client_registration_tokens`).where(`tenant_id`,`=`,t).where(`token_hash`,`=`,n).selectAll().executeTakeFirst();return r?P(r):null}}function rn(e){return async(t,n)=>(await e.selectFrom(`client_registration_tokens`).where(`tenant_id`,`=`,t).where(`client_id`,`=`,n).orderBy(`created_at_ts`,`desc`).selectAll().execute()).map(P)}function an(e){return async(t,n,i)=>(await e.updateTable(`client_registration_tokens`).set({used_at_ts:(0,r.isoToDbDate)(i)}).where(`tenant_id`,`=`,t).where(`id`,`=`,n).where(`used_at_ts`,`is`,null).executeTakeFirst()).numUpdatedRows>0}function on(e){return async(t,n,i)=>(await e.updateTable(`client_registration_tokens`).set({revoked_at_ts:(0,r.isoToDbDate)(i)}).where(`tenant_id`,`=`,t).where(`id`,`=`,n).where(`revoked_at_ts`,`is`,null).executeTakeFirst()).numUpdatedRows>0}function sn(e){return async(t,n,i)=>{let a=await e.updateTable(`client_registration_tokens`).set({revoked_at_ts:(0,r.isoToDbDate)(i)}).where(`tenant_id`,`=`,t).where(`client_id`,`=`,n).where(`revoked_at_ts`,`is`,null).executeTakeFirst();return Number(a.numUpdatedRows)}}function cn(e){return async(t,n)=>(await e.deleteFrom(`client_registration_tokens`).where(`tenant_id`,`=`,t).where(`id`,`=`,n).executeTakeFirst()).numDeletedRows>0}function ln(e){return{create:Qt(e),get:tn(e),getByHash:nn(e),listByClient:rn(e),markUsed:an(e),revoke:on(e),revokeByClient:sn(e),remove:cn(e)}}function un(e){return async(t={})=>{let{page:n=0,per_page:i=100,include_totals:a=!1,sort:o,q:s}=t,c=e.selectFrom(`keys`).where(e=>e.or([e(`revoked_at`,`>`,new Date().toISOString()),e(`revoked_at`,`is`,null)]));s&&(c=S(e,c,s,[`kid`,`tenant_id`,`connection`,`fingerprint`,`thumbprint`,`type`]));let l=c.select(e=>e.fn.count(`kid`).as(`count`)),u=n*i;c=c.limit(i).offset(u),o&&(c=c.orderBy(o.sort_by,o.sort_order));let d=await c.selectAll().execute();return a?{signingKeys:d,start:u,limit:i,length:(0,r.getCountAsInt)((await l.executeTakeFirst())?.count??0)}:{signingKeys:d,start:0,limit:0,length:0}}}function dn(e){return async(t,n)=>{let r=n?.importMetadata;await e.insertInto(`keys`).values({...t,kid:r?.id??t.kid,created_at:r?.created_at??new Date().toDateString()}).execute()}}function fn(e){return async(t,n)=>!!(await e.updateTable(`keys`).set(n).where(`kid`,`=`,t).execute()).length}function pn(e){return{create:dn(e),list:un(e),update:fn(e)}}function mn(e){return async(t,r,i)=>{let a=i?.importMetadata,o=new Date().toISOString(),s={status:`pending`,primary:!1,...r,custom_domain_id:a?.id||r.custom_domain_id||(0,n.nanoid)()};return await e.insertInto(`custom_domains`).values({...s,created_at:a?.created_at??o,updated_at:a?.updated_at??o,tenant_id:t,primary:+!!s.primary,domain_metadata:s.domain_metadata?JSON.stringify(s.domain_metadata):void 0}).execute(),s}}function hn(e){return async t=>(await e.selectFrom(`custom_domains`).where(`custom_domains.tenant_id`,`=`,t).selectAll().execute()).map(e=>({...e,primary:e.primary===1,domain_metadata:j(e.domain_metadata,void 0),verification:j(e.verification,void 0)}))}function gn(e){return async(t,n)=>(await e.deleteFrom(`custom_domains`).where(`custom_domains.tenant_id`,`=`,t).where(`custom_domains.custom_domain_id`,`=`,n).execute()).length>0}function _n(e){return async(t,n)=>{let r=await e.selectFrom(`custom_domains`).where(`custom_domains.tenant_id`,`=`,t).where(`custom_domains.custom_domain_id`,`=`,n).selectAll().executeTakeFirst();return r?{...r,primary:r.primary===1,domain_metadata:j(r.domain_metadata,void 0),verification:j(r.verification,void 0)}:null}}function vn(e){return async(t,n,r)=>{let{verification:i,domain_metadata:a,primary:o,...s}=r,c={...s,updated_at:new Date().toISOString(),...o!==void 0&&{primary:+!!o},...a!==void 0&&{domain_metadata:JSON.stringify(a)},...i!==void 0&&{verification:JSON.stringify(i)}};return(await e.updateTable(`custom_domains`).set(c).where(`custom_domains.tenant_id`,`=`,t).where(`custom_domains.custom_domain_id`,`=`,n).execute()).length>0}}function yn(e){return async t=>{let n=await e.selectFrom(`custom_domains`).where(`custom_domains.domain`,`=`,t).selectAll().executeTakeFirst();return n?{...n,primary:n.primary===1,domain_metadata:j(n.domain_metadata,void 0)}:null}}function bn(e){return{create:mn(e),get:_n(e),getByDomain:yn(e),list:hn(e),remove:gn(e),update:vn(e)}}function xn(e){return async t=>{let[n]=await e.selectFrom(`branding`).where(`branding.tenant_id`,`=`,t).selectAll().execute();if(!n)return null;let{tenant_id:i,colors_primary:a,colors_page_background_type:o,colors_page_background_start:s,colors_page_background_end:c,colors_page_background_angle_dev:l,font_url:u,...d}=n;return(0,r.removeNullProperties)({...d,colors:{primary:a,page_background:{type:o,start:s,end:c,angle_deg:l}},font:u?{url:u}:void 0})}}function Sn(e){return async(t,n)=>{let{colors:r,font:i,...a}=n,o=r?.page_background,s=o&&typeof o==`object`?o:void 0;try{await e.insertInto(`branding`).values({...a,colors_primary:r?.primary,colors_page_background_type:s?.type,colors_page_background_start:s?.start,colors_page_background_end:s?.end,colors_page_background_angle_dev:s?.angle_deg,font_url:n.font?.url,tenant_id:t}).execute()}catch{await e.updateTable(`branding`).set({...a,colors_primary:r?.primary,colors_page_background_type:s?.type,colors_page_background_start:s?.start,colors_page_background_end:s?.end,colors_page_background_angle_dev:s?.angle_deg,font_url:n.font?.url}).where(`tenant_id`,`=`,t).execute()}}}function Cn(e){return{get:xn(e),set:Sn(e)}}function wn(e){return async t=>{let n=await e.selectFrom(`universal_login_templates`).select([`body`]).where(`tenant_id`,`=`,t).executeTakeFirst();return n?{body:n.body}:null}}function Tn(e){return async(t,n,r)=>{let i=r?.importMetadata,a=Date.now(),o=i?.created_at?new Date(i.created_at).getTime():a,s=i?.updated_at?new Date(i.updated_at).getTime():a;try{await e.insertInto(`universal_login_templates`).values({tenant_id:t,body:n.body,created_at_ts:o,updated_at_ts:s}).execute()}catch{await e.updateTable(`universal_login_templates`).set({body:n.body,updated_at_ts:s,...i?.created_at?{created_at_ts:o}:{}}).where(`tenant_id`,`=`,t).execute()}}}function En(e){return async t=>{await e.deleteFrom(`universal_login_templates`).where(`tenant_id`,`=`,t).execute()}}function Dn(e){return{get:wn(e),set:Tn(e),delete:En(e)}}function On(e){return async(t,n={})=>{let{page:i=0,per_page:a=50,include_totals:o=!1,sort:s,q:c}=n,l=e.selectFrom(`hooks`).where(`hooks.tenant_id`,`=`,t);if(c&&(l=S(e,l,c,[`url`,`form_id`,`template_id`,`code_id`])),s?.sort_by){let{ref:t}=e.dynamic;l=l.orderBy(t(s.sort_by),s.sort_order)}else l=l.orderBy(`priority`,`desc`).orderBy(`created_at_ts`,`asc`);let u=(await l.offset(i*a).limit(a).selectAll().execute()).map(e=>{let{tenant_id:t,enabled:n,synchronous:i,created_at_ts:a,updated_at_ts:o,metadata:s,...c}=e,l=(0,r.convertDatesToAdapter)({created_at_ts:a,updated_at_ts:o},[`created_at_ts`,`updated_at_ts`]);return(0,r.removeNullProperties)({...c,...l,enabled:!!n,synchronous:!!i,metadata:Fe(s)})});if(!o)return{hooks:u,start:0,limit:0,length:0};let{count:d}=await l.select(e=>e.fn.countAll().as(`count`)).executeTakeFirstOrThrow();return{hooks:u,start:i*a,limit:a,length:(0,r.getCountAsInt)(d)}}}function kn(e){return async(t,n)=>{let i=await e.selectFrom(`hooks`).where(`hooks.tenant_id`,`=`,t).where(`hooks.hook_id`,`=`,n).selectAll().executeTakeFirst();if(!i)return null;let{tenant_id:a,created_at_ts:o,updated_at_ts:s,metadata:c,...l}=i,u=(0,r.convertDatesToAdapter)({created_at_ts:o,updated_at_ts:s},[`created_at_ts`,`updated_at_ts`]);return(0,r.removeNullProperties)({...l,...u,enabled:!!l.enabled,synchronous:!!l.synchronous,metadata:Fe(c)})}}function An(e){return async(t,n)=>(await e.deleteFrom(`hooks`).where(`hooks.tenant_id`,`=`,t).where(`hooks.hook_id`,`=`,n).executeTakeFirst()).numDeletedRows>0}function jn(e){return async(t,n,r)=>{let i=r?.importMetadata,a=new Date().toISOString(),o=i?.created_at??a,s=i?.updated_at??a,c=i?.id??(n.hook_id||h()),{hook_id:l,enabled:u,synchronous:d,metadata:f,...p}=n;return await e.insertInto(`hooks`).values({...p,hook_id:c,tenant_id:t,enabled:+!!u,synchronous:+!!d,metadata:f?JSON.stringify(f):null,created_at_ts:new Date(o).getTime(),updated_at_ts:new Date(s).getTime()}).execute(),{...p,hook_id:c,enabled:u??!1,synchronous:d??!1,...f?{metadata:f}:{},created_at:o,updated_at:s}}}function Mn(e){return async(t,n,r)=>{let{hook_id:i,metadata:a,...o}=r,s={...o,updated_at_ts:Date.now(),enabled:r.enabled===void 0?void 0:+!!r.enabled,synchronous:r.synchronous===void 0?void 0:+!!r.synchronous,...a===void 0?{}:{metadata:a===null?null:JSON.stringify(a)}};return await e.updateTable(`hooks`).set(s).where(`hooks.hook_id`,`=`,n).where(`hooks.tenant_id`,`=`,t).execute(),!0}}function Nn(e){return{create:jn(e),get:kn(e),list:On(e),update:Mn(e),remove:An(e)}}function Pn(e){return async(t,n,r)=>{let i=r?.importMetadata,a=new Date().toISOString(),o=i?.created_at??a,s=i?.updated_at??a,c=i?.id??_();return await e.insertInto(`hook_code`).values({id:c,tenant_id:t,code:n.code,secrets:n.secrets?JSON.stringify(n.secrets):null,created_at_ts:new Date(o).getTime(),updated_at_ts:new Date(s).getTime()}).execute(),{id:c,tenant_id:t,code:n.code,secrets:n.secrets,created_at:o,updated_at:s}}}function Fn(e){return async(t,n)=>{let i=await e.selectFrom(`hook_code`).where(`hook_code.tenant_id`,`=`,t).where(`hook_code.id`,`=`,n).selectAll().executeTakeFirst();if(!i)return null;let{created_at_ts:a,updated_at_ts:o,secrets:s,...c}=i,l=(0,r.convertDatesToAdapter)({created_at_ts:a,updated_at_ts:o},[`created_at_ts`,`updated_at_ts`]);return{...c,...l,secrets:s?(()=>{try{return JSON.parse(s)}catch{console.warn(`Failed to parse secrets for hook_code ${n}`);return}})():void 0}}}function In(e){return async(t,n,r)=>{let i={updated_at_ts:Date.now()};return r.code!==void 0&&(i.code=r.code),r.secrets!==void 0&&(i.secrets=JSON.stringify(r.secrets)),(await e.updateTable(`hook_code`).set(i).where(`hook_code.id`,`=`,n).where(`hook_code.tenant_id`,`=`,t).executeTakeFirst()).numUpdatedRows>0}}function Ln(e){return async(t,n)=>(await e.deleteFrom(`hook_code`).where(`hook_code.tenant_id`,`=`,t).where(`hook_code.id`,`=`,n).executeTakeFirst()).numDeletedRows>0}function Rn(e){return{create:Pn(e),get:Fn(e),update:In(e),remove:Ln(e)}}function zn(e){return async(t,r,i,a)=>{let o=a?.importMetadata,s=new Date().toISOString(),c={themeId:o?.id||i||(0,n.nanoid)(),...r,created_at:o?.created_at??s,updated_at:o?.updated_at??s},l={...c,tenant_id:t};return await e.insertInto(`themes`).values(A(l)).execute(),c}}function Bn(e){return async(t,n)=>(await e.deleteFrom(`themes`).where(`themes.tenant_id`,`=`,t).where(`themes.themeId`,`=`,n).executeTakeFirst()).numDeletedRows>0}function Vn(e){return async(t,n)=>{let i=await e.selectFrom(`themes`).where(`themes.tenant_id`,`=`,t).where(`themes.themeId`,`=`,n).selectAll().executeTakeFirst();return i?(0,r.removeNullProperties)(De({...i,borders_show_widget_shadow:!!i.borders_show_widget_shadow,fonts_body_text_bold:!!i.fonts_body_text_bold,fonts_buttons_text_bold:!!i.fonts_buttons_text_bold,fonts_input_labels_bold:!!i.fonts_input_labels_bold,fonts_links_bold:!!i.fonts_links_bold,fonts_subtitle_bold:!!i.fonts_subtitle_bold,fonts_title_bold:!!i.fonts_title_bold},[`widget`,`colors`,`borders`,`fonts`,`page_background`])):null}}function Hn(e){return async(t,n,r)=>{let{themeId:i,...a}=r,o=A({...a,updated_at:new Date().toISOString()});return await e.updateTable(`themes`).set(o).where(`themes.themeId`,`=`,n).where(`themes.tenant_id`,`=`,t).execute(),!0}}function Un(e){return{create:zn(e),get:Vn(e),remove:Bn(e),update:Hn(e)}}function Wn(e){return async(t,n)=>{let i=await e.selectFrom(`login_sessions`).where(`login_sessions.id`,`=`,n).selectAll().executeTakeFirst();if(!i)return null;let{created_at_ts:o,updated_at_ts:s,expires_at_ts:c,auth_params:l,...u}=i,d=(0,r.convertDatesToAdapter)({created_at_ts:o,updated_at_ts:s,expires_at_ts:c},[`created_at_ts`,`updated_at_ts`,`expires_at_ts`]),f=De((0,r.removeNullProperties)({...u,...d,state:i.state||a.LoginSessionState.PENDING,state_data:i.state_data,failure_reason:i.failure_reason}),[`auth_strategy`]);return f.authParams=typeof l==`string`&&l.length>0?JSON.parse(l):{},a.loginSessionSchema.parse(f)}}var Gn=`0123456789ABCDEFGHJKMNPQRSTVWXYZ`,F=32,Kn=10,I=16;function qn(e){let t=``;for(let n=Kn;n>0;n--)t=Gn.charAt(e%F)+t,e=Math.floor(e/F);return t}function Jn(){let e=new Uint8Array(I);crypto.getRandomValues(e);let t=``;for(let n=0;n<I;n++)t+=Gn.charAt(e[n]%F);return t}function Yn(){return qn(Date.now())+Jn()}function Xn(e){return async(t,n)=>{let i=(0,r.nowIso)(),o={id:Yn(),...n,authorization_url:n.authorization_url?.slice(0,1024),created_at:i,updated_at:i,state:n.state||a.LoginSessionState.PENDING,state_data:n.state_data,failure_reason:n.failure_reason},{authParams:s,...c}=o,l=Date.now(),u=A(c);return delete u.created_at,delete u.updated_at,delete u.expires_at,await e.insertInto(`login_sessions`).values({...u,tenant_id:t,auth_params:JSON.stringify(s),created_at_ts:l,updated_at_ts:l,expires_at_ts:n.expires_at?new Date(n.expires_at).getTime():l+1e3*60*60*24}).execute(),o}}function Zn(e){return async(t,n,i)=>{let{created_at:a,updated_at:o,expires_at:s,authParams:c,...l}=i,u={};if(c!==void 0){let r=(await e.selectFrom(`login_sessions`).where(`login_sessions.id`,`=`,n).where(`login_sessions.tenant_id`,`=`,t).select([`auth_params`]).executeTakeFirst())?.auth_params,i=typeof r==`string`&&r.length>0?JSON.parse(r):{};u={auth_params:JSON.stringify({...i,...c})}}let d=A(l);return delete d.created_at_ts,delete d.updated_at_ts,delete d.expires_at_ts,delete d.id,delete d.tenant_id,(await e.updateTable(`login_sessions`).set({...d,...u,updated_at_ts:Date.now(),...s===void 0?{}:{expires_at_ts:(0,r.isoToDbDate)(s)}}).where(`login_sessions.id`,`=`,n).where(`login_sessions.tenant_id`,`=`,t).execute()).length===1}}function Qn(e){return async(t,n)=>(await e.deleteFrom(`login_sessions`).where(`login_sessions.tenant_id`,`=`,t).where(`login_sessions.id`,`=`,n).execute()).length>0}function $n(e){return{create:Xn(e),get:Wn(e),update:Zn(e),remove:Qn(e)}}function er(e){return async t=>{let[n]=await e.selectFrom(`prompt_settings`).where(`prompt_settings.tenant_id`,`=`,t).selectAll().execute();return(0,r.removeNullProperties)({identifier_first:!!n?.identifier_first,password_first:!!n?.password_first,webauthn_platform_first_factor:!!n?.webauthn_platform_first_factor,show_last_used_connection:!!n?.show_last_used_connection,universal_login_experience:n?.universal_login_experience||`new`})}}function tr(e){let t={};return typeof e.identifier_first==`boolean`&&(t.identifier_first=+!!e.identifier_first),typeof e.password_first==`boolean`&&(t.password_first=+!!e.password_first),typeof e.webauthn_platform_first_factor==`boolean`&&(t.webauthn_platform_first_factor=+!!e.webauthn_platform_first_factor),typeof e.show_last_used_connection==`boolean`&&(t.show_last_used_connection=+!!e.show_last_used_connection),e.universal_login_experience&&(t.universal_login_experience=e.universal_login_experience),t}function nr(e){return async(t,n)=>{let r=tr(n);try{await e.insertInto(`prompt_settings`).values({tenant_id:t,identifier_first:r.identifier_first??1,password_first:r.password_first??0,webauthn_platform_first_factor:r.webauthn_platform_first_factor??0,show_last_used_connection:r.show_last_used_connection??0,universal_login_experience:r.universal_login_experience??`new`}).execute()}catch{if(Object.keys(r).length===0)return;await e.updateTable(`prompt_settings`).set(r).where(`tenant_id`,`=`,t).execute()}}}function rr(e){return{get:er(e),set:nr(e)}}function ir(e){return async t=>{let[n]=await e.selectFrom(`email_providers`).where(`email_providers.tenant_id`,`=`,t).selectAll().execute();if(!n)return null;let{tenant_id:i,credentials:a,settings:o,enabled:s,...c}=n;return(0,r.removeNullProperties)({...c,credentials:JSON.parse(a),settings:JSON.parse(o),enabled:!!s})}}function ar(e){return async(t,n)=>{let{credentials:r,settings:i,enabled:a,...o}=n;await e.updateTable(`email_providers`).set({...o,credentials:r?JSON.stringify(r):void 0,settings:i?JSON.stringify(i):void 0,enabled:a===void 0?void 0:+!!a}).where(`tenant_id`,`=`,t).execute()}}function or(e){return async(t,n,r)=>{let i=r?.importMetadata,a=new Date().toISOString(),{credentials:o,settings:s,enabled:c,...l}=n;await e.insertInto(`email_providers`).values({...l,enabled:+!!c,credentials:JSON.stringify(o),settings:JSON.stringify(s),tenant_id:t,created_at:i?.created_at??a,updated_at:i?.updated_at??a}).execute()}}function sr(e){return async t=>{await e.deleteFrom(`email_providers`).where(`tenant_id`,`=`,t).execute()}}function cr(e){return{get:ir(e),create:or(e),update:ar(e),remove:sr(e)}}function lr(e){let t={template:e.template,body:e.body,from:e.from,subject:e.subject,syntax:e.syntax,includeEmailInRedirect:!!e.include_email_in_redirect,enabled:!!e.enabled};return e.result_url!==null&&e.result_url!==void 0&&(t.resultUrl=e.result_url),e.url_lifetime_in_seconds!==null&&e.url_lifetime_in_seconds!==void 0&&(t.urlLifetimeInSeconds=e.url_lifetime_in_seconds),t}function ur(e){return async(t,n)=>{let r=await e.selectFrom(`email_templates`).where(`tenant_id`,`=`,t).where(`template`,`=`,n).selectAll().executeTakeFirst();return r?a.emailTemplateSchema.parse(lr(r)):null}}function dr(e){return async t=>(await e.selectFrom(`email_templates`).where(`tenant_id`,`=`,t).orderBy(`template`,`asc`).selectAll().execute()).map(e=>a.emailTemplateSchema.parse(lr(e)))}function fr(e){return async(t,n,r)=>{let i=r?.importMetadata,a=new Date().toISOString(),o=i?.created_at??a,s=i?.updated_at??i?.created_at??a;return await e.insertInto(`email_templates`).values({tenant_id:t,template:n.template,body:n.body,from:n.from,subject:n.subject,syntax:n.syntax,result_url:n.resultUrl??null,url_lifetime_in_seconds:n.urlLifetimeInSeconds??null,include_email_in_redirect:+!!n.includeEmailInRedirect,enabled:+!!n.enabled,created_at:o,updated_at:s}).execute(),n}}function pr(e){return async(t,n,r)=>{let i={};if(r.body!==void 0&&(i.body=r.body),r.from!==void 0&&(i.from=r.from),r.subject!==void 0&&(i.subject=r.subject),r.syntax!==void 0&&(i.syntax=r.syntax),r.resultUrl!==void 0&&(i.result_url=r.resultUrl),r.urlLifetimeInSeconds!==void 0&&(i.url_lifetime_in_seconds=r.urlLifetimeInSeconds),r.includeEmailInRedirect!==void 0&&(i.include_email_in_redirect=+!!r.includeEmailInRedirect),r.enabled!==void 0&&(i.enabled=+!!r.enabled),Object.keys(i).length===0)return await e.selectFrom(`email_templates`).where(`tenant_id`,`=`,t).where(`template`,`=`,n).select(`template`).executeTakeFirst()!==void 0;i.updated_at=new Date().toISOString();let a=await e.updateTable(`email_templates`).set(i).where(`tenant_id`,`=`,t).where(`template`,`=`,n).executeTakeFirst();return Number(a.numUpdatedRows??0)>0}}function mr(e){return async(t,n)=>{let r=await e.deleteFrom(`email_templates`).where(`tenant_id`,`=`,t).where(`template`,`=`,n).executeTakeFirst();return Number(r.numDeletedRows??0)>0}}function hr(e){return{get:ur(e),list:dr(e),create:fr(e),update:pr(e),remove:mr(e)}}function gr(e){return async(t,n)=>{let i=await e.selectFrom(`refresh_tokens`).where(`refresh_tokens.tenant_id`,`=`,t).where(`refresh_tokens.id`,`=`,n).selectAll().executeTakeFirst();if(!i)return null;let{tenant_id:a,created_at_ts:o,expires_at_ts:s,idle_expires_at_ts:c,last_exchanged_at_ts:l,revoked_at_ts:u,rotated_at_ts:d,...f}=i,p=(0,r.convertDatesToAdapter)({created_at_ts:o,expires_at_ts:s,idle_expires_at_ts:c,last_exchanged_at_ts:l,revoked_at_ts:u,rotated_at_ts:d},[`created_at_ts`],[`expires_at_ts`,`idle_expires_at_ts`,`last_exchanged_at_ts`,`revoked_at_ts`,`rotated_at_ts`]);return{...f,...p,rotating:!!i.rotating,device:i.device?JSON.parse(i.device):{},resource_servers:i.resource_servers?JSON.parse(i.resource_servers):[]}}}function _r(e){return async(t,n)=>{let i=await e.selectFrom(`refresh_tokens`).where(`refresh_tokens.tenant_id`,`=`,t).where(`refresh_tokens.token_lookup`,`=`,n).selectAll().executeTakeFirst();if(!i)return null;let{tenant_id:a,created_at_ts:o,expires_at_ts:s,idle_expires_at_ts:c,last_exchanged_at_ts:l,revoked_at_ts:u,rotated_at_ts:d,...f}=i,p=(0,r.convertDatesToAdapter)({created_at_ts:o,expires_at_ts:s,idle_expires_at_ts:c,last_exchanged_at_ts:l,revoked_at_ts:u,rotated_at_ts:d},[`created_at_ts`],[`expires_at_ts`,`idle_expires_at_ts`,`last_exchanged_at_ts`,`revoked_at_ts`,`rotated_at_ts`]);return{...f,...p,rotating:!!i.rotating,device:i.device?JSON.parse(i.device):{},resource_servers:i.resource_servers?JSON.parse(i.resource_servers):[]}}}function vr(e){return async(t,n)=>{let i=(0,r.nowIso)(),a={...n,created_at:i},{expires_at:o,idle_expires_at:s,last_exchanged_at:c,rotated_at:l,device:u,resource_servers:d,rotating:f,...p}=n,m=Date.now(),h=(0,r.isoToDbDate)(o),g=s?(0,r.isoToDbDate)(s):null,_=Math.max(h??0,g??0);return await e.transaction().execute(async e=>{await e.insertInto(`refresh_tokens`).values({...p,tenant_id:t,rotating:+!!f,device:JSON.stringify(u),resource_servers:JSON.stringify(d),created_at_ts:m,expires_at_ts:h,idle_expires_at_ts:g,last_exchanged_at_ts:c?(0,r.isoToDbDate)(c):null,rotated_at_ts:l?(0,r.isoToDbDate)(l):null}).execute(),_>0&&n.login_id&&await e.updateTable(`login_sessions`).set({expires_at_ts:_,updated_at_ts:m}).where(`tenant_id`,`=`,t).where(`id`,`=`,n.login_id).where(`expires_at_ts`,`<`,_).execute()}),{...n,...a}}}function yr(e){return async(t,n)=>!!(await e.deleteFrom(`refresh_tokens`).where(`tenant_id`,`=`,t).where(`refresh_tokens.id`,`=`,n).execute()).length}function br(e){return async(t,n,i)=>{let a=(0,r.isoToDbDate)(i),o=await e.updateTable(`refresh_tokens`).set({revoked_at_ts:a}).where(`tenant_id`,`=`,t).where(`login_id`,`=`,n).where(`revoked_at_ts`,`is`,null).executeTakeFirst();return Number(o.numUpdatedRows??0)}}function xr(e){return async(t,n,i)=>{let a=(0,r.isoToDbDate)(i),o=await e.updateTable(`refresh_tokens`).set({revoked_at_ts:a}).where(`tenant_id`,`=`,t).where(`family_id`,`=`,n).where(`revoked_at_ts`,`is`,null).executeTakeFirst();return Number(o.numUpdatedRows??0)}}function Sr(e){return async(t,n,i,a)=>{let{created_at:o,expires_at:s,idle_expires_at:c,last_exchanged_at:l,revoked_at:u,rotated_at:d,device:f,resource_servers:p,rotating:m,...h}=i,g={...h,device:f?JSON.stringify(f):void 0,resource_servers:p?JSON.stringify(p):void 0,rotating:m===void 0?void 0:+!!m,expires_at_ts:s===void 0?void 0:(0,r.isoToDbDate)(s),idle_expires_at_ts:c===void 0?void 0:(0,r.isoToDbDate)(c),last_exchanged_at_ts:l===void 0?void 0:(0,r.isoToDbDate)(l),revoked_at_ts:u===void 0?void 0:(0,r.isoToDbDate)(u),rotated_at_ts:d===void 0?void 0:(0,r.isoToDbDate)(d)},_=a?.loginSessionBump,v=_?(0,r.isoToDbDate)(_.expires_at):null,y=await e.updateTable(`refresh_tokens`).set(g).where(`tenant_id`,`=`,t).where(`refresh_tokens.id`,`=`,n).executeTakeFirst();return _?.login_id&&v&&v>0&&await e.updateTable(`login_sessions`).set({expires_at_ts:v,updated_at_ts:Date.now()}).where(`tenant_id`,`=`,t).where(`id`,`=`,_.login_id).where(`expires_at_ts`,`<`,v).execute().catch(()=>{}),(y?.numUpdatedRows??0n)>0n}}function Cr(e){return async(t,n={})=>{let{page:i=0,per_page:a=50,include_totals:o=!1,sort:s,q:c}=n,l=e.selectFrom(`refresh_tokens`).where(`refresh_tokens.tenant_id`,`=`,t);c&&(l=S(e,l,c,[`token`,`login_id`]));let u=l;if(s&&s.sort_by){let{ref:t}=e.dynamic;u=u.orderBy(t(s.sort_by),s.sort_order)}u=u.offset(i*a).limit(a);let d=(await u.selectAll().execute()).map(e=>{let{tenant_id:t,created_at_ts:n,expires_at_ts:i,idle_expires_at_ts:a,last_exchanged_at_ts:o,revoked_at_ts:s,rotated_at_ts:c,...l}=e,u=(0,r.convertDatesToAdapter)({created_at_ts:n,expires_at_ts:i,idle_expires_at_ts:a,last_exchanged_at_ts:o,revoked_at_ts:s,rotated_at_ts:c},[`created_at_ts`],[`expires_at_ts`,`idle_expires_at_ts`,`last_exchanged_at_ts`,`revoked_at_ts`,`rotated_at_ts`]);return{...l,...u,rotating:!!e.rotating,device:e.device?JSON.parse(e.device):{},resource_servers:e.resource_servers?JSON.parse(e.resource_servers):[]}});if(!o)return{refresh_tokens:d,start:0,limit:0,length:0};let{count:f}=await l.select(e=>e.fn.countAll().as(`count`)).executeTakeFirstOrThrow(),p=(0,r.getCountAsInt)(f);return{refresh_tokens:d,start:i*a,limit:a,length:p}}}function wr(e){return{create:vr(e),get:gr(e),getByLookup:_r(e),list:Cr(e),remove:yr(e),revokeByLoginSession:br(e),revokeFamily:xr(e),update:Sr(e)}}var Tr=10080*60*1e3;function Er(e){return async t=>{let{tenant_id:n,user_id:r}=t||{},i=Date.now()-Tr,a=1e3;try{let t=0;for(;;){let o=e.deleteFrom(`refresh_tokens`).where(e=>e.or([e(`expires_at_ts`,`<`,i),e(`idle_expires_at_ts`,`<`,i)]));n&&(o=o.where(`tenant_id`,`=`,n)),r&&(o=o.where(`user_id`,`=`,r));let s=await o.limit(a).execute(),c=Number(s[0]?.numDeletedRows??0);if(t+=c,c<a)break}let o=0;for(;;){let t=e.deleteFrom(`sessions`).where(e=>e.or([e(`expires_at_ts`,`<`,i),e(`idle_expires_at_ts`,`<`,i)]));n&&(t=t.where(`tenant_id`,`=`,n)),r&&(t=t.where(`user_id`,`=`,r));let s=await t.limit(a).execute(),c=Number(s[0]?.numDeletedRows??0);if(o+=c,c<a)break}let s=0;for(;;){let t=e.deleteFrom(`login_sessions`).where(`expires_at_ts`,`<`,i);n&&(t=t.where(`tenant_id`,`=`,n)),r&&(t=t.where(`user_id`,`=`,r));let o=await t.limit(a).execute(),c=Number(o[0]?.numDeletedRows??0);if(s+=c,c<a)break}(t>0||o>0||s>0)&&console.log(`Session cleanup: deleted ${t} refresh_tokens, ${o} sessions, ${s} login_sessions`)}catch(e){console.error(`Error during session cleanup:`,e)}}}function Dr(e){return async(t,r,i)=>{let o=i?.importMetadata,s=new Date().toISOString(),c=a.formSchema.parse({id:o?.id??(0,n.nanoid)(),...r,created_at:o?.created_at??s,updated_at:o?.updated_at??s});return await e.insertInto(`forms`).values({...c,nodes:JSON.stringify(c.nodes||[]),start:JSON.stringify(c.start||{}),ending:JSON.stringify(c.ending||{}),tenant_id:t}).execute(),a.formSchema.parse(c)}}function Or(e){return async(t,n={})=>{let{page:i=0,per_page:o=50,include_totals:s=!1,q:c}=n,l=e.selectFrom(`forms`).where(`tenant_id`,`=`,t);c&&(l=S(e,l,c,[]));let u=(await l.offset(i*o).limit(o).selectAll().execute()).map(e=>{let t={...e};if(typeof t.nodes==`string`)try{t.nodes=JSON.parse(t.nodes)}catch{}if(typeof t.start==`string`)try{t.start=JSON.parse(t.start)}catch{}if(typeof t.ending==`string`)try{t.ending=JSON.parse(t.ending)}catch{}return a.formSchema.parse((0,r.removeNullProperties)(t))});if(!s)return{forms:u,start:0,limit:0,length:0};let{count:d}=await l.select(e=>e.fn.countAll().as(`count`)).executeTakeFirstOrThrow();return{forms:u,start:i*o,limit:o,length:(0,r.getCountAsInt)(d)}}}function kr(e){return async(t,n)=>{let{numDeletedRows:r}=await e.deleteFrom(`forms`).where(`id`,`=`,n).where(`tenant_id`,`=`,t).executeTakeFirst();return r>0}}function Ar(e){return async(t,n)=>{let i=await e.selectFrom(`forms`).selectAll().where(`forms.id`,`=`,n).where(`tenant_id`,`=`,t).executeTakeFirst();if(!i)return null;let o={...i};if(typeof o.nodes==`string`)try{o.nodes=JSON.parse(o.nodes)}catch{}if(typeof o.start==`string`)try{o.start=JSON.parse(o.start)}catch{}if(typeof o.ending==`string`)try{o.ending=JSON.parse(o.ending)}catch{}return a.formSchema.parse((0,r.removeNullProperties)(o))}}function jr(e){return async(t,n,i)=>{let a={...i,updated_at:new Date().toISOString()};(0,r.stringifyProperties)(i,[`nodes`,`start`,`ending`],a);let{numUpdatedRows:o}=await e.updateTable(`forms`).set(a).where(`id`,`=`,n).where(`tenant_id`,`=`,t).executeTakeFirst();return o>0}}function Mr(e){return{create:Dr(e),get:Ar(e),list:Or(e),remove:kr(e),update:jr(e)}}function Nr(e){return async(t,n,i)=>{let o=i?.importMetadata,s=new Date().toISOString(),c=o?.created_at??s,l=o?.updated_at??s,u={...n,id:o?.id??n.id??g(),created_at:c,updated_at:l},d=a.resourceServerSchema.parse(u),{verificationKey:f,scopes:p,options:m,skip_consent_for_verifiable_first_party_clients:h,allow_offline_access:_,is_system:v,metadata:y,...b}=d,ee={...b,tenant_id:t,scopes:p?JSON.stringify(p):`[]`,options:m?JSON.stringify(m):`{}`,skip_consent_for_verifiable_first_party_clients:+!!h,allow_offline_access:+!!_,is_system:+!!v,metadata:y?JSON.stringify(y):void 0,verification_key:f,created_at:c,updated_at:l};return await e.insertInto(`resource_servers`).values(ee).execute(),(0,r.removeNullProperties)(d)}}function Pr(e){return async(t,n)=>{let i=await e.selectFrom(`resource_servers`).selectAll().where(`tenant_id`,`=`,t).where(`id`,`=`,n).executeTakeFirst();if(!i)return null;let{verification_key:a,scopes:o,options:s,skip_consent_for_verifiable_first_party_clients:c,allow_offline_access:l,is_system:u,metadata:d,...f}=i,p=(0,r.removeNullProperties)({...f,scopes:o?JSON.parse(o):[],options:s?JSON.parse(s):{},skip_consent_for_verifiable_first_party_clients:!!c,allow_offline_access:!!l,is_system:u?!0:void 0,metadata:d?JSON.parse(d):void 0,verificationKey:a});return p.token_lifetime??=86400,p.token_lifetime_for_web??=7200,p}}function Fr(e){return async(t,n={})=>{let{page:i=0,per_page:a=50,include_totals:o=!1,q:s}=n,c=e.selectFrom(`resource_servers`).where(`resource_servers.tenant_id`,`=`,t);if(s){let t=s.trim(),n=t.split(/\s+/),r=n.length===1?n[0]:void 0,i=r?r.match(/^(-)?(name|identifier):(.*)$/):null,a=i?i[3]:``,o=/^(>=|>|<=|<)/.test(a||``);if(i&&!o){let e=!!i[1],t=i[2]===`name`?`resource_servers.name`:`resource_servers.identifier`;c=e?c.where(t,`not like`,`%${a}%`):c.where(t,`like`,`%${a}%`)}else c=S(e,c,t,[`resource_servers.name`,`resource_servers.identifier`])}let l=(await c.offset(i*a).limit(a).selectAll().execute()).map(e=>{let{verification_key:t,scopes:n,options:i,skip_consent_for_verifiable_first_party_clients:a,allow_offline_access:o,is_system:s,metadata:c,...l}=e,u=(0,r.removeNullProperties)({...l,scopes:n?JSON.parse(n):[],options:i?JSON.parse(i):{},skip_consent_for_verifiable_first_party_clients:!!a,allow_offline_access:!!o,is_system:s?!0:void 0,metadata:c?JSON.parse(c):void 0,verificationKey:t});return u.token_lifetime??=86400,u.token_lifetime_for_web??=7200,u});if(!o)return{resource_servers:l,start:0,limit:0,length:0};let{count:u}=await c.select(e=>e.fn.countAll().as(`count`)).executeTakeFirstOrThrow();return{resource_servers:l,start:i*a,limit:a,length:(0,r.getCountAsInt)(u)}}}function Ir(e){return async(t,n)=>{let r=await e.deleteFrom(`resource_servers`).where(`tenant_id`,`=`,t).where(`id`,`=`,n).executeTakeFirst();return Number(r.numDeletedRows)>0}}function Lr(e){return async(t,n,r)=>{let{verificationKey:i,scopes:a,options:o,skip_consent_for_verifiable_first_party_clients:s,allow_offline_access:c,is_system:l,metadata:u,...d}=r,f={...d,updated_at:new Date().toISOString()};if(i!==void 0&&(f.verification_key=i),a!==void 0&&(f.scopes=JSON.stringify(a)),o!==void 0){let r=await e.selectFrom(`resource_servers`).select(`options`).where(`tenant_id`,`=`,t).where(`id`,`=`,n).executeTakeFirst(),i={...r?.options?JSON.parse(r.options):{},...o};f.options=JSON.stringify(i)}u!==void 0&&(f.metadata=JSON.stringify(u)),s!==void 0&&(f.skip_consent_for_verifiable_first_party_clients=+!!s),c!==void 0&&(f.allow_offline_access=+!!c),l!==void 0&&(f.is_system=+!!l);let p=await e.updateTable(`resource_servers`).set(f).where(`tenant_id`,`=`,t).where(`id`,`=`,n).executeTakeFirst();return Number(p.numUpdatedRows)>0}}function Rr(e){return{create:Nr(e),get:Pr(e),list:Fr(e),remove:Ir(e),update:Lr(e)}}function zr(e){return async(t,r,i)=>{let a=i?.importMetadata,o=new Date().toISOString(),s=a?.created_at??o,c=a?.updated_at??o,l=a?.id||r.id||(0,n.nanoid)(),{is_system:u,id:d,metadata:f,...p}=r,m={id:l,...p,tenant_id:t,is_system:+!!u,metadata:f?JSON.stringify(f):void 0,created_at:s,updated_at:c};return await e.insertInto(`roles`).values(m).execute(),{id:l,...p,is_system:u?!0:void 0,metadata:f,created_at:s,updated_at:c}}}function Br(e){return async(t,n)=>{let r=await e.selectFrom(`roles`).selectAll().where(`roles.tenant_id`,`=`,t).where(`roles.id`,`=`,n).executeTakeFirst();if(!r)return null;let{is_system:i,tenant_id:a,metadata:o,...s}=r;return{...s,is_system:i?!0:void 0,metadata:o?JSON.parse(o):void 0}}}function Vr(e){return async(t,n)=>{let i=e.selectFrom(`roles`).where(`roles.tenant_id`,`=`,t),{page:a=0,per_page:o=50,include_totals:s=!1}=n;n.q&&(i=S(e,i,n.q,[`name`]));let c=(await i.offset(a*o).limit(o).selectAll().execute()).map(e=>{let{is_system:t,tenant_id:n,metadata:r,...i}=e;return{...i,is_system:t?!0:void 0,metadata:r?JSON.parse(r):void 0}});if(!s)return{roles:c,start:a*o,limit:o,length:c.length};let{count:l}=await i.select(e=>e.fn.countAll().as(`count`)).executeTakeFirstOrThrow();return{roles:c,start:a*o,limit:o,length:(0,r.getCountAsInt)(l)}}}function Hr(e){return async(t,n,r)=>{let{is_system:i,metadata:a,...o}=r,s={...o,is_system:i===void 0?void 0:+!!i,metadata:a===void 0?void 0:JSON.stringify(a),updated_at:new Date().toISOString()},c=await e.updateTable(`roles`).set(s).where(`roles.tenant_id`,`=`,t).where(`roles.id`,`=`,n).executeTakeFirst();return Number(c.numUpdatedRows)>0}}function Ur(e){return async(t,n)=>{let r=await e.deleteFrom(`roles`).where(`tenant_id`,`=`,t).where(`id`,`=`,n).executeTakeFirst();return Number(r.numDeletedRows)>0}}function Wr(e){return{create:zr(e),get:Br(e),list:Vr(e),update:Hr(e),remove:Ur(e)}}function Gr(e){if(typeof e!=`object`||!e)return!1;let{code:t,message:n}=e;return t===`SQLITE_CONSTRAINT`||t===`SQLITE_CONSTRAINT_PRIMARYKEY`||t===`SQLITE_CONSTRAINT_UNIQUE`||t===`ER_DUP_ENTRY`||t===`23505`?!0:typeof n==`string`&&(n.includes(`UNIQUE constraint failed`)||n.includes(`Duplicate entry`)||n.includes(`duplicate key`)||n.includes(`AlreadyExists`))}function Kr(e){return async(t,n,r,i)=>{if(r.length===0)return!0;let a=i?.importMetadata,o=new Date().toISOString();try{for(let i of r){if(i.role_id!==n)throw Error(`Permission role_id ${i.role_id} does not match expected role_id ${n}`);let r={tenant_id:t,role_id:i.role_id,resource_server_identifier:i.resource_server_identifier,permission_name:i.permission_name,created_at:a?.created_at??o};try{await e.insertInto(`role_permissions`).values(r).execute()}catch(e){if(Gr(e))continue;throw e}}return!0}catch(e){return console.error(`Error assigning role permissions:`,e),!1}}}function qr(e){return async(t,n,r)=>{if(r.length===0)return!0;try{return await Promise.all(r.map(r=>e.deleteFrom(`role_permissions`).where(`tenant_id`,`=`,t).where(`role_id`,`=`,n).where(`resource_server_identifier`,`=`,r.resource_server_identifier).where(`permission_name`,`=`,r.permission_name).executeTakeFirst())),!0}catch(e){return console.error(`Error removing role permissions:`,e),!1}}}function Jr(e){return async(t,n,r={})=>{let{page:i=0,per_page:a=50,include_totals:o=!1}=r,s=e.selectFrom(`role_permissions`).leftJoin(`resource_servers`,e=>e.onRef(`role_permissions.tenant_id`,`=`,`resource_servers.tenant_id`).onRef(`role_permissions.resource_server_identifier`,`=`,`resource_servers.id`)).select([`role_permissions.role_id`,`role_permissions.resource_server_identifier`,`role_permissions.permission_name`,`role_permissions.created_at`,`resource_servers.name as resource_server_name`]).where(`role_permissions.tenant_id`,`=`,t).where(`role_permissions.role_id`,`=`,n),c=(await s.offset(i*a).limit(a).execute()).map(e=>({role_id:e.role_id,resource_server_identifier:e.resource_server_identifier,resource_server_name:e.resource_server_name||e.resource_server_identifier,permission_name:e.permission_name,description:null,created_at:e.created_at}));return o&&await s.select(e=>e.fn.countAll().as(`count`)).executeTakeFirstOrThrow(),c}}function Yr(e){return{assign:Kr(e),remove:qr(e),list:Jr(e)}}function Xr(e){return async(t,r)=>{let i=new Date().toISOString(),a=r.scope??[],o=r.audience??``,s=await e.selectFrom(`grants`).where(`tenant_id`,`=`,t).where(`user_id`,`=`,r.user_id).where(`client_id`,`=`,r.clientID).where(`audience`,`=`,o).selectAll().executeTakeFirst();if(s){let n=s.scope?JSON.parse(s.scope):[],r=Array.from(new Set([...n,...a]));return await e.updateTable(`grants`).set({scope:JSON.stringify(r),updated_at:i}).where(`tenant_id`,`=`,t).where(`id`,`=`,s.id).execute(),{id:s.id,user_id:s.user_id,clientID:s.client_id,audience:s.audience||void 0,scope:r}}let c=(0,n.nanoid)();return await e.insertInto(`grants`).values({id:c,tenant_id:t,user_id:r.user_id,client_id:r.clientID,audience:o,scope:JSON.stringify(a),created_at:i,updated_at:i}).execute(),{id:c,user_id:r.user_id,clientID:r.clientID,audience:o||void 0,scope:a}}}function Zr(e){return async(t,n,r,i)=>{let a=await e.selectFrom(`grants`).where(`tenant_id`,`=`,t).where(`user_id`,`=`,n).where(`client_id`,`=`,r).where(`audience`,`=`,i??``).selectAll().executeTakeFirst();return a?{id:a.id,user_id:a.user_id,clientID:a.client_id,audience:a.audience||void 0,scope:a.scope?JSON.parse(a.scope):[]}:null}}function Qr(e){return async(t,n={})=>{let{page:i=0,per_page:a=50,include_totals:o=!1,sort:s,q:c}=n,l=e.selectFrom(`grants`).where(`grants.tenant_id`,`=`,t);c&&(l=S(e,l,c,[`user_id`,`client_id`,`audience`]));let u=l;if(s&&s.sort_by){let{ref:t}=e.dynamic;u=u.orderBy(t(s.sort_by),s.sort_order)}u=u.offset(i*a).limit(a);let d=(await u.selectAll().execute()).map(e=>({id:e.id,user_id:e.user_id,clientID:e.client_id,audience:e.audience||void 0,scope:e.scope?JSON.parse(e.scope):[]}));if(!o)return{grants:d,start:0,limit:0,length:0};let{count:f}=await l.select(e=>e.fn.countAll().as(`count`)).executeTakeFirstOrThrow();return{grants:d,start:i*a,limit:a,length:(0,r.getCountAsInt)(f)}}}function $r(e){return async(t,n)=>(await e.deleteFrom(`grants`).where(`tenant_id`,`=`,t).where(`id`,`=`,n).executeTakeFirst()).numDeletedRows>0}function ei(e){return async(t,n)=>(await e.deleteFrom(`grants`).where(`tenant_id`,`=`,t).where(`user_id`,`=`,n).executeTakeFirst()).numDeletedRows>0}function ti(e){return{create:Xr(e),get:Zr(e),list:Qr(e),remove:$r(e),removeByUser:ei(e)}}function ni(e){return async(t,n,r,i,a)=>{let o=a?.importMetadata,s=new Date().toISOString();try{let a={tenant_id:t,user_id:n,resource_server_identifier:r.resource_server_identifier,permission_name:r.permission_name,organization_id:i||r.organization_id||``,created_at:o?.created_at??s};return await e.insertInto(`user_permissions`).values(a).execute(),!0}catch(e){return e.code===`SQLITE_CONSTRAINT_PRIMARYKEY`||e.code===`SQLITE_CONSTRAINT_UNIQUE`||e.code===`SQLITE_CONSTRAINT`||e.code===`ER_DUP_ENTRY`||e.message&&e.message.includes(`UNIQUE constraint failed`)||e.message&&e.message.includes(`PRIMARY KEY constraint failed`)?!0:(console.error(`Error creating user permission:`,e),!1)}}}function ri(e){return async(t,n,r,i)=>{try{let a=e.deleteFrom(`user_permissions`).where(`tenant_id`,`=`,t).where(`user_id`,`=`,n).where(`resource_server_identifier`,`=`,r.resource_server_identifier).where(`permission_name`,`=`,r.permission_name);return a=i===void 0?a.where(`organization_id`,`=`,``):a.where(`organization_id`,`=`,i),await a.execute(),!0}catch(e){return console.error(`Error removing user permission:`,e),!1}}}function ii(e){return async(t,n,r,i)=>{let a=e.selectFrom(`user_permissions`).leftJoin(`resource_servers`,e=>e.onRef(`user_permissions.tenant_id`,`=`,`resource_servers.tenant_id`).onRef(`user_permissions.resource_server_identifier`,`=`,`resource_servers.id`)).select([`user_permissions.resource_server_identifier`,`user_permissions.permission_name`,`resource_servers.name as resource_server_name`,`user_permissions.user_id`,`user_permissions.created_at`,`user_permissions.organization_id`]).where(`user_permissions.tenant_id`,`=`,t).where(`user_permissions.user_id`,`=`,n);return i!==void 0&&(a=a.where(`user_permissions.organization_id`,`=`,i)),(await a.execute()).map(e=>({resource_server_identifier:e.resource_server_identifier,permission_name:e.permission_name,description:null,resource_server_name:e.resource_server_name||e.resource_server_identifier,user_id:e.user_id,created_at:e.created_at,organization_id:e.organization_id===``?void 0:e.organization_id}))}}function ai(e){return{create:ni(e),remove:ri(e),list:ii(e)}}function oi(e){let t=ai(e);return{create:(e,n,r,i)=>t.create(e,n,r,i),remove:(e,n,r,i)=>t.remove(e,n,r,i),list:(e,n,r,i)=>t.list(e,n,r,i)}}function si(e){return async(t,n,r,i)=>{let a=e.selectFrom(`user_roles as ur`).innerJoin(`roles as r`,e=>e.onRef(`ur.role_id`,`=`,`r.id`).onRef(`ur.tenant_id`,`=`,`r.tenant_id`)).select([`r.id`,`r.name`,`r.description`,`r.created_at`,`r.updated_at`]).where(`ur.tenant_id`,`=`,t).where(`ur.user_id`,`=`,n);return i!==void 0&&(a=a.where(`ur.organization_id`,`=`,i)),await a.execute()}}function ci(e){return async(t,n,r)=>{let i=e.selectFrom(`user_roles`).select(`user_id`).distinct().where(`tenant_id`,`=`,t).where(`role_id`,`=`,n);if(O(r)){let{rows:e,limit:t,next:n}=await k(i,r,{sortColumn:`user_id`,sortOrder:`asc`,idColumn:`user_id`});return{userIds:e.map(e=>e.user_id),start:0,limit:t,length:e.length,next:n}}let a=r?.page||0,o=r?.per_page||50,s=a*o,c=await i.orderBy(`user_id`,`asc`).limit(o).offset(s).execute(),l=await e.selectFrom(`user_roles`).select(e.fn.count(`user_id`).distinct().as(`count`)).where(`tenant_id`,`=`,t).where(`role_id`,`=`,n).executeTakeFirst();return{userIds:c.map(e=>e.user_id),start:s,limit:o,length:Number(l?.count||0)}}}function li(e){return async(t,n,r,i,a)=>{let o=a?.importMetadata,s=new Date().toISOString();try{return await e.insertInto(`user_roles`).values({tenant_id:t,user_id:n,role_id:r,organization_id:i||``,created_at:o?.created_at??s}).execute(),!0}catch(e){return e.code===`SQLITE_CONSTRAINT_PRIMARYKEY`||e.code===`SQLITE_CONSTRAINT_UNIQUE`||e.code===`SQLITE_CONSTRAINT`||e.code===`ER_DUP_ENTRY`||e.message&&e.message.includes(`UNIQUE constraint failed`)||e.message&&e.message.includes(`PRIMARY KEY constraint failed`)?!0:(console.error(`Error creating user role:`,e),!1)}}}function ui(e){return async(t,n,r,i)=>{try{let a=e.deleteFrom(`user_roles`).where(`tenant_id`,`=`,t).where(`user_id`,`=`,n).where(`role_id`,`=`,r);return a=i===void 0?a.where(`organization_id`,`=`,``):a.where(`organization_id`,`=`,i),await a.execute(),!0}catch(e){return console.error(`Error removing user roles:`,e),!1}}}function di(e){return{list:si(e),listUsers:ci(e),create:li(e),remove:ui(e)}}function fi(e){let t=di(e);return{list:(e,n,r,i)=>t.list(e,n,r,i),listUsers:(e,n,r)=>t.listUsers(e,n,r),create:(e,n,r,i)=>t.create(e,n,r,i),remove:(e,n,r,i)=>t.remove(e,n,r,i)}}function pi(e){return async(t,n,r)=>{let i=r?.importMetadata,a=new Date().toISOString(),s={...n,id:i?.id||n.id||d(),tenant_id:t,created_at:i?.created_at??a,updated_at:i?.updated_at??a,branding:JSON.stringify(n.branding||{}),metadata:JSON.stringify(n.metadata||{}),enabled_connections:JSON.stringify(n.enabled_connections||[]),token_quota:JSON.stringify(n.token_quota||{})};try{await e.insertInto(`organizations`).values(s).execute()}catch(e){throw e.code===`SQLITE_CONSTRAINT_UNIQUE`||e.code===`ER_DUP_ENTRY`||e.message.includes(`AlreadyExists`)?new o.HTTPException(409,{message:`Organization already exists`}):e}return{...n,id:s.id,created_at:s.created_at,updated_at:s.updated_at}}}function mi(e){return async(t,n)=>{let i=await e.selectFrom(`organizations`).selectAll().where(`tenant_id`,`=`,t).where(`id`,`=`,n).executeTakeFirst();return i||=await e.selectFrom(`organizations`).selectAll().where(`tenant_id`,`=`,t).where(`name`,`=`,n).executeTakeFirst(),i?(0,r.removeNullProperties)({...i,branding:i.branding?JSON.parse(i.branding):{},metadata:i.metadata?JSON.parse(i.metadata):{},enabled_connections:i.enabled_connections?JSON.parse(i.enabled_connections):[],token_quota:i.token_quota?JSON.parse(i.token_quota):{}}):null}}var L=[`name`,`display_name`];function hi(e){return async(t,n)=>{let o=e.selectFrom(`organizations`).where(`tenant_id`,`=`,t);if(n?.q){let t=(0,a.sanitizeLuceneQuery)(n.q,L);t&&(o=S(e,o,t,L))}if(O(n)){let{rows:e,limit:t,next:i}=await k(o.selectAll(),n,{sortColumn:`created_at`,sortOrder:`desc`}),a=e.map(e=>(0,r.removeNullProperties)({...e,branding:e.branding?JSON.parse(e.branding):{},metadata:e.metadata?JSON.parse(e.metadata):{},enabled_connections:e.enabled_connections?JSON.parse(e.enabled_connections):[],token_quota:e.token_quota?JSON.parse(e.token_quota):{}}));return{organizations:a,start:0,limit:t,length:a.length,total:a.length,next:i}}if(n?.sort){let e=n.sort.sort_order===`asc`?`asc`:`desc`,t=n.sort.sort_by;o=[`name`,`display_name`,`created_at`].includes(t)?o.orderBy(t,e):o.orderBy(`created_at`,`desc`)}else o=o.orderBy(`created_at`,`desc`);let s=n?.per_page,c=typeof s==`number`&&Number.isFinite(s)?Math.floor(s):NaN,l=c>=1?c:10,u=0;typeof n?.page==`number`&&Number.isFinite(n.page)&&(u=Math.max(0,Math.floor(n.page)*l)),u>0&&(o=o.offset(u)),o=o.limit(l);let d=await o.selectAll().execute(),f=d.length;if(n?.include_totals){let r=e.selectFrom(`organizations`).where(`tenant_id`,`=`,t);if(n?.q){let t=(0,a.sanitizeLuceneQuery)(n.q,L);t&&(r=S(e,r,t,L))}let o=await r.select(i.sql`count(*)`.as(`count`)).executeTakeFirst();f=Number(o?.count||0)}let p=d.map(e=>(0,r.removeNullProperties)({...e,branding:e.branding?JSON.parse(e.branding):{},metadata:e.metadata?JSON.parse(e.metadata):{},enabled_connections:e.enabled_connections?JSON.parse(e.enabled_connections):[],token_quota:e.token_quota?JSON.parse(e.token_quota):{}}));return{organizations:p,start:u,limit:l,length:p.length,total:f}}}function gi(e){return async(t,n)=>(await e.deleteFrom(`organizations`).where(`tenant_id`,`=`,t).where(`id`,`=`,n).execute()).length>0}function _i(e){return async(t,n,i)=>{let{branding:a,metadata:o,enabled_connections:s,token_quota:c,...l}=i,u={...l,updated_at:new Date().toISOString()};return(0,r.stringifyProperties)(i,[`branding`,`metadata`,`enabled_connections`,`token_quota`],u),(await e.updateTable(`organizations`).set(u).where(`tenant_id`,`=`,t).where(`id`,`=`,n).execute()).length>0}}function vi(e){return{create:pi(e),get:mi(e),list:hi(e),remove:gi(e),update:_i(e)}}function R(e,t){return{connection_id:e.connection_id,assign_membership_on_login:!!e.assign_membership_on_login,show_as_button:!!e.show_as_button,is_signup_enabled:!!e.is_signup_enabled,connection:t?{name:t.name,strategy:t.strategy}:void 0,created_at:e.created_at,updated_at:e.updated_at}}async function z(e,t,n){let r=await e.selectFrom(`connections`).select([`name`,`strategy`]).where(`tenant_id`,`=`,t).where(`id`,`=`,n).executeTakeFirst();if(r)return{name:r.name,strategy:typeof r.strategy==`string`?r.strategy:void 0}}function yi(e){return{async create(t,n,r,i){let a=i?.importMetadata,o=new Date().toISOString(),s={tenant_id:t,organization_id:n,connection_id:r.connection_id,assign_membership_on_login:+!!r.assign_membership_on_login,show_as_button:r.show_as_button===!1?0:1,is_signup_enabled:r.is_signup_enabled===!1?0:1,created_at:a?.created_at??o,updated_at:a?.updated_at??o};return await e.insertInto(`organization_connections`).values(s).execute(),R(s,await z(e,t,r.connection_id))},async list(t,n){let r=await e.selectFrom(`organization_connections`).selectAll().where(`tenant_id`,`=`,t).where(`organization_id`,`=`,n).execute(),i=[];for(let n of r){let r=await z(e,t,n.connection_id);i.push(R(n,r))}return i},async get(t,n,r){let i=await e.selectFrom(`organization_connections`).selectAll().where(`tenant_id`,`=`,t).where(`organization_id`,`=`,n).where(`connection_id`,`=`,r).executeTakeFirst();return i?R(i,await z(e,t,r)):null},async update(t,n,r,i){let a={updated_at:new Date().toISOString()};i.assign_membership_on_login!==void 0&&(a.assign_membership_on_login=+!!i.assign_membership_on_login),i.show_as_button!==void 0&&(a.show_as_button=+!!i.show_as_button),i.is_signup_enabled!==void 0&&(a.is_signup_enabled=+!!i.is_signup_enabled);let o=await e.updateTable(`organization_connections`).set(a).where(`tenant_id`,`=`,t).where(`organization_id`,`=`,n).where(`connection_id`,`=`,r).executeTakeFirst();if(Number(o.numUpdatedRows??0)===0)return null;let s=await e.selectFrom(`organization_connections`).selectAll().where(`tenant_id`,`=`,t).where(`organization_id`,`=`,n).where(`connection_id`,`=`,r).executeTakeFirst();return s?R(s,await z(e,t,r)):null},async remove(t,n,r){let i=await e.deleteFrom(`organization_connections`).where(`tenant_id`,`=`,t).where(`organization_id`,`=`,n).where(`connection_id`,`=`,r).executeTakeFirst();return Number(i.numDeletedRows??0)>0}}}function bi(e){return async(t,r,i)=>{let a=i?.importMetadata,s=new Date().toISOString(),c={id:a?.id??(0,n.nanoid)(),tenant_id:t,user_id:r.user_id,organization_id:r.organization_id,created_at:a?.created_at??s,updated_at:a?.updated_at??s};try{await e.insertInto(`user_organizations`).values(c).execute()}catch(e){throw e.code===`SQLITE_CONSTRAINT_UNIQUE`||e.code===`ER_DUP_ENTRY`?new o.HTTPException(409,{message:`User is already a member of this organization`}):e}return{...c}}}function xi(e){return async(t,n)=>{let r=await e.selectFrom(`user_organizations`).selectAll().where(`id`,`=`,n).where(`tenant_id`,`=`,t).executeTakeFirst();return r?{id:r.id,user_id:r.user_id,organization_id:r.organization_id,created_at:r.created_at,updated_at:r.updated_at}:null}}function Si(e){return async(t,n)=>{let r=e.selectFrom(`user_organizations`).selectAll().where(`tenant_id`,`=`,t);if(n?.q){if(n.q.startsWith(`user_id:`)){let e=n.q.replace(`user_id:`,``);r=r.where(`user_id`,`=`,e)}else if(n.q.startsWith(`organization_id:`)){let e=n.q.replace(`organization_id:`,``);r=r.where(`organization_id`,`=`,e)}}let i=e=>({id:e.id,user_id:e.user_id,organization_id:e.organization_id,created_at:e.created_at,updated_at:e.updated_at});if(O(n)){let{rows:e,limit:t,next:a}=await k(r,n,{sortColumn:`created_at`,sortOrder:`desc`});return{userOrganizations:e.map(i),start:0,limit:t,length:e.length,next:a}}let a=n?.page||0,o=n?.per_page||50,s=a*o,c=await r.orderBy(`created_at`,`desc`).limit(o).offset(s).execute(),l=e.selectFrom(`user_organizations`).select(e.fn.count(`id`).as(`count`)).where(`tenant_id`,`=`,t);if(n?.q){if(n.q.startsWith(`user_id:`)){let e=n.q.replace(`user_id:`,``);l=l.where(`user_id`,`=`,e)}else if(n.q.startsWith(`organization_id:`)){let e=n.q.replace(`organization_id:`,``);l=l.where(`organization_id`,`=`,e)}}let u=await l.executeTakeFirst();return{userOrganizations:c.map(i),start:s,limit:o,length:Number(u?.count||0)}}}function Ci(e){return async(t,n,r)=>{let i=r?.page||0,a=r?.per_page||50,o=i*a,s=e.selectFrom(`user_organizations`).innerJoin(`organizations`,e=>e.onRef(`organizations.id`,`=`,`user_organizations.organization_id`).on(`organizations.tenant_id`,`=`,t)).select([`organizations.id`,`organizations.name`,`organizations.display_name`,`organizations.branding`,`organizations.metadata`,`organizations.enabled_connections`,`organizations.token_quota`,`organizations.created_at`,`organizations.updated_at`,`user_organizations.created_at as joined_at`]).where(`user_organizations.tenant_id`,`=`,t).where(`user_organizations.user_id`,`=`,n);s=s.orderBy(`user_organizations.created_at`,`desc`),a>0&&(s=s.limit(a).offset(o));let c=await s.execute(),l=await e.selectFrom(`user_organizations`).innerJoin(`organizations`,e=>e.onRef(`organizations.id`,`=`,`user_organizations.organization_id`).on(`organizations.tenant_id`,`=`,t)).select(e.fn.count(`user_organizations.id`).as(`count`)).where(`user_organizations.tenant_id`,`=`,t).where(`user_organizations.user_id`,`=`,n).executeTakeFirst();return{organizations:c.map(e=>({id:e.id,name:e.name,display_name:e.display_name,branding:e.branding?JSON.parse(e.branding):void 0,metadata:e.metadata?JSON.parse(e.metadata):{},enabled_connections:e.enabled_connections?JSON.parse(e.enabled_connections):[],token_quota:e.token_quota?JSON.parse(e.token_quota):void 0,created_at:e.created_at,updated_at:e.updated_at,joined_at:e.joined_at})),start:o,limit:a,length:Number(l?.count||0)}}}function wi(e){return async(t,n)=>(await e.deleteFrom(`user_organizations`).where(`id`,`=`,n).where(`tenant_id`,`=`,t).execute()).length>0}function Ti(e){return async(t,n,r)=>{let i={...r,updated_at:new Date().toISOString()};return(await e.updateTable(`user_organizations`).set(i).where(`id`,`=`,n).where(`tenant_id`,`=`,t).execute()).length>0}}function Ei(e){return{create:bi(e),get:xi(e),list:Si(e),listUserOrganizations:Ci(e),remove:wi(e),update:Ti(e)}}function Di(e){return async(t,n,r)=>{let i=r?.importMetadata,a=i?.id??n.id??v(),s=i?.created_at??new Date().toISOString(),c=n.ttl_sec||604800,l=new Date(new Date(s).getTime()+c*1e3).toISOString(),u={id:a,tenant_id:t,organization_id:n.organization_id,inviter:JSON.stringify(n.inviter||{}),invitee:JSON.stringify(n.invitee||{}),client_id:n.client_id,connection_id:n.connection_id||null,invitation_url:n.invitation_url,created_at:s,expires_at:l,app_metadata:JSON.stringify(n.app_metadata||{}),user_metadata:JSON.stringify(n.user_metadata||{}),roles:JSON.stringify(n.roles||[]),ticket_id:null,ttl_sec:c,send_invitation_email:n.send_invitation_email??!0?1:0};try{await e.insertInto(`invites`).values(u).execute()}catch(e){throw e.code===`SQLITE_CONSTRAINT_UNIQUE`||e.code===`ER_DUP_ENTRY`||e.message.includes(`AlreadyExists`)?new o.HTTPException(409,{message:`Invite already exists`}):e}return{id:a,organization_id:n.organization_id,inviter:n.inviter,invitee:n.invitee,client_id:n.client_id,connection_id:n.connection_id,invitation_url:n.invitation_url,created_at:s,expires_at:l,app_metadata:n.app_metadata||{},user_metadata:n.user_metadata||{},roles:n.roles||[],ticket_id:void 0,ttl_sec:c,send_invitation_email:n.send_invitation_email??!0}}}function Oi(e){return async(t,n)=>{let i=await e.selectFrom(`invites`).selectAll().where(`tenant_id`,`=`,t).where(`id`,`=`,n).executeTakeFirst();return i?(0,r.removeNullProperties)({...Ie(i,{inviter:{},invitee:{},app_metadata:{},user_metadata:{},roles:[]}),send_invitation_email:i.send_invitation_email===1}):null}}function ki(e){return async(t,n)=>{let i=e.selectFrom(`invites`).selectAll().where(`tenant_id`,`=`,t).orderBy(`created_at`,`desc`);if(n?.per_page&&(i=i.limit(n.per_page)),n?.page){let e=(n.page-1)*(n.per_page||10);i=i.offset(e)}let a=(await i.execute()).map(e=>(0,r.removeNullProperties)({...Ie(e,{inviter:{},invitee:{},app_metadata:{},user_metadata:{},roles:[]}),send_invitation_email:e.send_invitation_email===1}));return{invites:a,start:n?.page?(n.page-1)*(n.per_page||10):0,limit:n?.per_page||a.length,length:a.length}}}function Ai(e){return async(t,n)=>(await e.deleteFrom(`invites`).where(`tenant_id`,`=`,t).where(`id`,`=`,n).executeTakeFirst()).numDeletedRows>0n}function ji(e){return async(t,n,r)=>{let i={};return r.inviter!==void 0&&(i.inviter=JSON.stringify(r.inviter)),r.invitee!==void 0&&(i.invitee=JSON.stringify(r.invitee)),r.client_id!==void 0&&(i.client_id=r.client_id),r.connection_id!==void 0&&(i.connection_id=r.connection_id),r.app_metadata!==void 0&&(i.app_metadata=JSON.stringify(r.app_metadata)),r.user_metadata!==void 0&&(i.user_metadata=JSON.stringify(r.user_metadata)),r.roles!==void 0&&(i.roles=JSON.stringify(r.roles)),r.ttl_sec!==void 0&&(i.ttl_sec=r.ttl_sec,i.expires_at=new Date(Date.now()+r.ttl_sec*1e3).toISOString()),r.send_invitation_email!==void 0&&(i.send_invitation_email=+!!r.send_invitation_email),Object.keys(i).length===0?!0:(await e.updateTable(`invites`).set(i).where(`tenant_id`,`=`,t).where(`id`,`=`,n).executeTakeFirst()).numUpdatedRows>0n}}function Mi(e){return{create:Di(e),get:Oi(e),list:ki(e),remove:Ai(e),update:ji(e)}}var Ni=[`s`],Pi=[`pwd_leak`];function Fi(e){return/^\d{8}$/.test(e)?`${e.slice(0,4)}-${e.slice(4,6)}-${e.slice(6,8)}`:e}function B(e){return e.toISOString().split(`T`)[0]}function Ii(e){return{async getDaily(t,n={}){let{from:r,to:a}=n,o=new Date,s=new Date(o);s.setDate(s.getDate()-30);let c=r?Fi(r):B(s),l=a?Fi(a):B(o),u=i.sql`DATE(logs.date)`;return(await e.selectFrom(`logs`).where(`tenant_id`,`=`,t).where(u,`>=`,c).where(u,`<=`,l).select(e=>[u.as(`date`),e.fn.sum(e.case().when(`type`,`in`,Ni).then(1).else(0).end()).as(`logins`),e.fn.sum(e.case().when(`type`,`=`,`ss`).then(1).else(0).end()).as(`signups`),e.fn.sum(e.case().when(`type`,`in`,Pi).then(1).else(0).end()).as(`leaked_passwords`),e.fn.min(`date`).as(`first_event`),e.fn.max(`date`).as(`last_event`)]).groupBy(u).orderBy(`date`,`asc`).execute()).map(e=>({date:e.date,logins:Number(e.logins)||0,signups:Number(e.signups)||0,leaked_passwords:Number(e.leaked_passwords)||0,created_at:e.first_event||new Date().toISOString(),updated_at:e.last_event||new Date().toISOString()}))},async getActiveUsers(t){let n=new Date;return n.setDate(n.getDate()-30),(await e.selectFrom(`logs`).where(`tenant_id`,`=`,t).where(`date`,`>=`,n.toISOString()).where(`type`,`in`,Ni).where(`user_id`,`is not`,null).select(e=>e.fn.count(`user_id`).distinct().as(`count`)).executeTakeFirstOrThrow()).count||0}}}var Li={"active-users":[`s`,`seacft`],logins:[`s`,`f`,`fp`],signups:[`ss`,`fs`],"refresh-tokens":[`seacft`,`fertft`],sessions:[`slo`],logouts:[`slo`,`flo`],"password-changes":[`scp`,`fcp`,`scpr`,`fcpr`],"password-migrations":[`spm`],mfa:[`gd_auth_succeed`,`gd_auth_failed`,`gd_auth_rejected`],"email-verifications":[`sv`,`fv`,`svr`,`fvr`],"codes-sent":[`cls`,`cs`]},Ri={"active-users":{alias:`active_users`,type:`UInt64`,agg:`uniq`},logins:{alias:`logins`,type:`UInt64`,agg:`count`},signups:{alias:`signups`,type:`UInt64`,agg:`count`},"refresh-tokens":{alias:`refresh_tokens`,type:`UInt64`,agg:`count`},sessions:{alias:`sessions`,type:`UInt64`,agg:`count`},logouts:{alias:`logouts`,type:`UInt64`,agg:`count`},"password-changes":{alias:`password_changes`,type:`UInt64`,agg:`count`},"password-migrations":{alias:`password_migrations`,type:`UInt64`,agg:`count`},mfa:{alias:`mfa`,type:`UInt64`,agg:`count`},"email-verifications":{alias:`email_verifications`,type:`UInt64`,agg:`count`},"codes-sent":{alias:`codes_sent`,type:`UInt64`,agg:`count`}};async function zi(e){try{return await i.sql`SELECT @@version_comment`.execute(e),`mysql`}catch{return`sqlite`}}function V(e,t){let n=new Intl.DateTimeFormat(`en-US`,{timeZone:e,year:`numeric`,month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hour12:!1}),r={};for(let e of n.formatToParts(t))r[e.type]=e.value;let i=r.hour===`24`?`00`:r.hour,a=Date.UTC(Number(r.year),Number(r.month)-1,Number(r.day),Number(i),Number(r.minute),Number(r.second)),o=Math.round((a-t.getTime())/6e4),s=o>=0?`+`:`-`,c=Math.abs(o);return`${s}${String(Math.floor(c/60)).padStart(2,`0`)}:${String(c%60).padStart(2,`0`)}`}var Bi=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`];function Vi(e,t){let n=t.getUTCFullYear(),r=V(e,new Date(Date.UTC(n,0,1)));for(let t=1;t<12;t++){let i=V(e,new Date(Date.UTC(n,t,1)));if(i!==r)throw Error(`Timezone '${e}' is DST-varying (offset ${r} in January vs ${i} in ${Bi[t]}) and cannot be bucketed with a single fixed offset by the SQL analytics adapter. Use a fixed-offset zone (e.g. 'UTC' or '+02:00').`)}}function Hi(e){let t=e.startsWith(`-`)?-1:1,[n,r]=e.slice(1).split(`:`);return t*(Number(n)*60+Number(r))}function Ui(e,t){let n;if(t===`+00:00`)n=i.sql`${i.sql.ref(`logs.date`)}`;else{let e=Hi(t),r=`${e>=0?`+`:`-`}${Math.abs(e)} minutes`;n=i.sql`datetime(${i.sql.ref(`logs.date`)}, ${r})`}switch(e){case`hour`:return i.sql`substr(${n}, 1, 13)`;case`month`:return i.sql`substr(${n}, 1, 7)`;case`day`:return i.sql`substr(${n}, 1, 10)`;case`week`:return i.sql`date(substr(${n}, 1, 10), '-' || ((cast(strftime('%w', substr(${n}, 1, 10)) as integer) + 6) % 7) || ' days')`;default:throw Error(`Unsupported interval '${e}' for SQL analytics adapter`)}}function Wi(e,t){if(t===`+00:00`)switch(e){case`hour`:return i.sql`substring(${i.sql.ref(`logs.date`)}, 1, 13)`;case`day`:return i.sql`substring(${i.sql.ref(`logs.date`)}, 1, 10)`;case`month`:return i.sql`substring(${i.sql.ref(`logs.date`)}, 1, 7)`;case`week`:{let e=i.sql`str_to_date(substring(${i.sql.ref(`logs.date`)}, 1, 10), '%Y-%m-%d')`;return i.sql`date_format(date_sub(${e}, interval weekday(${e}) day), '%Y-%m-%d')`}default:throw Error(`Unsupported interval '${e}' for SQL analytics adapter`)}let n=Hi(t),r=i.sql`date_add(str_to_date(substring(${i.sql.ref(`logs.date`)}, 1, 19), '%Y-%m-%dT%H:%i:%s'), interval ${i.sql.lit(n)} minute)`;switch(e){case`hour`:return i.sql`date_format(${r}, '%Y-%m-%dT%H')`;case`day`:return i.sql`date_format(${r}, '%Y-%m-%d')`;case`month`:return i.sql`date_format(${r}, '%Y-%m')`;case`week`:return i.sql`date_format(date_sub(${r}, interval weekday(${r}) day), '%Y-%m-%d')`;default:throw Error(`Unsupported interval '${e}' for SQL analytics adapter`)}}function Gi(e,t,n,r){Vi(t,n);let i=V(t,n);return r===`mysql`?Wi(e,i):Ui(e,i)}function Ki(e){switch(e){case`connection`:return`logs.connection`;case`client_id`:return`logs.client_id`;case`user_type`:return`logs.strategy_type`;case`event`:return`logs.type`;case`time`:throw Error(`time dimension is handled separately`)}}function qi(e){let t=null,n=()=>(t||=zi(e),t);return{async query(t,r,a){let o=Date.now(),s=Li[r],c=Ri[r],l=await n(),u=[],d=e.selectFrom(`logs`).where(`tenant_id`,`=`,t);d=d.where(`date`,`>=`,a.from).where(`date`,`<`,a.to),d=d.where(`type`,`in`,s),a.filters.connection?.length&&(d=d.where(`connection`,`in`,a.filters.connection)),a.filters.client_id?.length&&(d=d.where(`client_id`,`in`,a.filters.client_id)),a.filters.user_type?.length&&(d=d.where(`strategy_type`,`in`,a.filters.user_type)),a.filters.user_id?.length&&(d=d.where(`user_id`,`in`,a.filters.user_id));let f=[],p=[];for(let e of a.group_by)if(e===`time`){let e=Gi(a.interval,a.tz,new Date(a.from),l);p.push({alias:`time`,expr:e}),f.push(e),u.push({name:`time`,type:a.interval===`hour`?`DateTime`:`Date`})}else{let t=Ki(e);p.push({alias:e,expr:i.sql`${i.sql.ref(t)}`}),f.push(i.sql`${i.sql.ref(t)}`),u.push({name:e,type:`String`})}let m=c.agg===`uniq`?i.sql`COUNT(DISTINCT ${i.sql.ref(`logs.user_id`)})`:i.sql`COUNT(*)`;p.push({alias:c.alias,expr:m}),u.push({name:c.alias,type:c.type});let h=d.select(p.map(({alias:e,expr:t})=>t.as(e)));if(f.length>0&&(h=h.groupBy(f)),a.order_by){let e=a.order_by.startsWith(`-`),t=e?a.order_by.slice(1):a.order_by;h=h.orderBy(t,e?`desc`:`asc`)}else h=a.group_by.length>0&&a.group_by[0]===`time`?h.orderBy(`time`,`asc`):h.orderBy(c.alias,`desc`);h=h.limit(a.limit).offset(a.offset);let g=(await h.execute()).map(e=>{let t={};for(let n of u){let r=e[n.name];t[n.name]=n.type===`UInt64`?Number(r)||0:r??``}return t});return{meta:u,data:g,rows:g.length,rows_before_limit_at_least:g.length,statistics:{elapsed:(Date.now()-o)/1e3}}},async sessionRetention(t,r){let o=Date.now(),{sinceMs:s}=(0,a.sessionRetentionWindow)(r.weeks,o),c=await n(),l=e=>{let t=e===`used_at_ts`?i.sql`(COALESCE(${i.sql.ref(`used_at_ts`)}, ${i.sql.ref(`created_at_ts`)}) + ${i.sql.lit(a.MONDAY_EPOCH_SHIFT_MS)})`:i.sql`(${i.sql.ref(e)} + ${i.sql.lit(a.MONDAY_EPOCH_SHIFT_MS)})`;return c===`mysql`?i.sql`${t} DIV ${i.sql.lit(a.WEEK_MS)}`:i.sql`${t} / ${i.sql.lit(a.WEEK_MS)}`};return(0,a.buildSessionRetention)((await e.selectFrom(`sessions`).where(`tenant_id`,`=`,t).where(`created_at_ts`,`>=`,s).select([l(`created_at_ts`).as(`created_week`),l(`used_at_ts`).as(`used_week`),i.sql`COUNT(*)`.as(`count`)]).groupBy([l(`created_at_ts`),l(`used_at_ts`)]).execute()).map(e=>({created_week:Math.floor(Number(e.created_week)),used_week:Math.floor(Number(e.used_week)),count:Number(e.count)})),r.weeks,o)},async refreshTokenRetention(t,r){let o=Date.now(),{sinceMs:s}=(0,a.sessionRetentionWindow)(r.weeks,o),c=await n(),l=e=>{let t=i.sql`(${e} + ${i.sql.lit(a.MONDAY_EPOCH_SHIFT_MS)})`;return c===`mysql`?i.sql`${t} DIV ${i.sql.lit(a.WEEK_MS)}`:i.sql`${t} / ${i.sql.lit(a.WEEK_MS)}`},u=e.selectFrom(`refresh_tokens`).where(`tenant_id`,`=`,t).select([i.sql`MIN(${i.sql.ref(`created_at_ts`)})`.as(`min_created`),i.sql`MAX(COALESCE(${i.sql.ref(`last_exchanged_at_ts`)}, ${i.sql.ref(`created_at_ts`)}))`.as(`max_used`)]).groupBy(i.sql`COALESCE(${i.sql.ref(`family_id`)}, ${i.sql.ref(`id`)})`);r.client_id&&r.client_id.length>0&&(u=u.where(`client_id`,`in`,r.client_id));let d=l(i.sql.ref(`min_created`)),f=l(i.sql.ref(`max_used`));return(0,a.buildRefreshTokenRetention)((await e.selectFrom(u.as(`families`)).where(`min_created`,`>=`,s).select([d.as(`created_week`),f.as(`used_week`),i.sql`COUNT(*)`.as(`count`)]).groupBy([d,f]).execute()).map(e=>({created_week:Math.floor(Number(e.created_week)),used_week:Math.floor(Number(e.used_week)),count:Number(e.count)})),r.weeks,o)}}}function Ji(e){return{async get(t,n,r){let i=await e.selectFrom(`custom_text`).selectAll().where(`tenant_id`,`=`,t).where(`prompt`,`=`,n).where(`language`,`=`,r).executeTakeFirst();if(!i)return null;try{return JSON.parse(i.custom_text)}catch{return null}},async set(t,n,r,i,a){let o=a?.importMetadata,s=Date.now(),c=o?.created_at?new Date(o.created_at).getTime():void 0,l=o?.updated_at?new Date(o.updated_at).getTime():c,u=JSON.stringify(i);await e.selectFrom(`custom_text`).select(`tenant_id`).where(`tenant_id`,`=`,t).where(`prompt`,`=`,n).where(`language`,`=`,r).executeTakeFirst()?await e.updateTable(`custom_text`).set({custom_text:u,...c===void 0?{}:{created_at_ts:c},updated_at_ts:l??s}).where(`tenant_id`,`=`,t).where(`prompt`,`=`,n).where(`language`,`=`,r).execute():await e.insertInto(`custom_text`).values({tenant_id:t,prompt:n,language:r,custom_text:u,created_at_ts:c??s,updated_at_ts:l??s}).execute()},async delete(t,n,r){await e.deleteFrom(`custom_text`).where(`tenant_id`,`=`,t).where(`prompt`,`=`,n).where(`language`,`=`,r).execute()},async list(t){return(await e.selectFrom(`custom_text`).select([`prompt`,`language`]).where(`tenant_id`,`=`,t).execute()).map(e=>({prompt:e.prompt,language:e.language}))}}}function Yi(e){return async(t,n,r)=>{let i=r?.importMetadata,a=i?.created_at?new Date(i.created_at).getTime():Date.now(),o=i?.updated_at?new Date(i.updated_at).getTime():a,s=i?.id??Yn();return await e.insertInto(`authentication_methods`).values({id:s,tenant_id:t,user_id:n.user_id,type:n.type,phone_number:n.phone_number,totp_secret:n.totp_secret,credential_id:n.credential_id,public_key:n.public_key,sign_count:n.sign_count,credential_backed_up:n.credential_backed_up==null?void 0:+!!n.credential_backed_up,transports:n.transports?JSON.stringify(n.transports):void 0,friendly_name:n.friendly_name,confirmed:+!!n.confirmed,created_at_ts:a,updated_at_ts:o}).execute(),{id:s,user_id:n.user_id,type:n.type,phone_number:n.phone_number,totp_secret:n.totp_secret,credential_id:n.credential_id,public_key:n.public_key,sign_count:n.sign_count,credential_backed_up:n.credential_backed_up,transports:n.transports,friendly_name:n.friendly_name,confirmed:n.confirmed??!1,created_at:new Date(a).toISOString(),updated_at:new Date(o).toISOString()}}}function Xi(e){return async(t,n)=>{let i=await e.selectFrom(`authentication_methods`).where(`authentication_methods.tenant_id`,`=`,t).where(`authentication_methods.id`,`=`,n).selectAll().executeTakeFirst();return i?{id:i.id,user_id:i.user_id,type:i.type,phone_number:i.phone_number??void 0,totp_secret:i.totp_secret??void 0,credential_id:i.credential_id??void 0,public_key:i.public_key??void 0,sign_count:i.sign_count??void 0,credential_backed_up:i.credential_backed_up==null?void 0:i.credential_backed_up===1,transports:i.transports?JSON.parse(i.transports):void 0,friendly_name:i.friendly_name??void 0,confirmed:i.confirmed===1,created_at:(0,r.dbDateToIsoRequired)(i.created_at_ts),updated_at:(0,r.dbDateToIsoRequired)(i.updated_at_ts)}:null}}function Zi(e){return async(t,n)=>{let i=await e.selectFrom(`authentication_methods`).where(`authentication_methods.tenant_id`,`=`,t).where(`authentication_methods.credential_id`,`=`,n).selectAll().executeTakeFirst();return i?{id:i.id,user_id:i.user_id,type:i.type,phone_number:i.phone_number??void 0,totp_secret:i.totp_secret??void 0,credential_id:i.credential_id??void 0,public_key:i.public_key??void 0,sign_count:i.sign_count??void 0,credential_backed_up:i.credential_backed_up==null?void 0:i.credential_backed_up===1,transports:i.transports?JSON.parse(i.transports):void 0,friendly_name:i.friendly_name??void 0,confirmed:i.confirmed===1,created_at:(0,r.dbDateToIsoRequired)(i.created_at_ts),updated_at:(0,r.dbDateToIsoRequired)(i.updated_at_ts)}:null}}function Qi(e){return async(t,n)=>(await e.selectFrom(`authentication_methods`).where(`authentication_methods.tenant_id`,`=`,t).where(`authentication_methods.user_id`,`=`,n).selectAll().execute()).map(e=>({id:e.id,user_id:e.user_id,type:e.type,phone_number:e.phone_number??void 0,totp_secret:e.totp_secret??void 0,credential_id:e.credential_id??void 0,public_key:e.public_key??void 0,sign_count:e.sign_count??void 0,credential_backed_up:e.credential_backed_up==null?void 0:e.credential_backed_up===1,transports:e.transports?JSON.parse(e.transports):void 0,friendly_name:e.friendly_name??void 0,confirmed:e.confirmed===1,created_at:(0,r.dbDateToIsoRequired)(e.created_at_ts),updated_at:(0,r.dbDateToIsoRequired)(e.updated_at_ts)}))}function $i(e){return async(t,n,r)=>{let i={updated_at_ts:Date.now()};r.phone_number!==void 0&&(i.phone_number=r.phone_number),r.totp_secret!==void 0&&(i.totp_secret=r.totp_secret),r.credential_id!==void 0&&(i.credential_id=r.credential_id),r.public_key!==void 0&&(i.public_key=r.public_key),r.sign_count!==void 0&&(i.sign_count=r.sign_count),r.credential_backed_up!==void 0&&(i.credential_backed_up=+!!r.credential_backed_up),r.transports!==void 0&&(i.transports=JSON.stringify(r.transports)),r.friendly_name!==void 0&&(i.friendly_name=r.friendly_name),r.confirmed!==void 0&&(i.confirmed=+!!r.confirmed),await e.updateTable(`authentication_methods`).set(i).where(`authentication_methods.tenant_id`,`=`,t).where(`authentication_methods.id`,`=`,n).execute();let a=await Xi(e)(t,n);if(!a)throw Error(`Authentication method ${n} not found`);return a}}function ea(e){return async(t,n)=>(await e.deleteFrom(`authentication_methods`).where(`authentication_methods.tenant_id`,`=`,t).where(`authentication_methods.id`,`=`,n).executeTakeFirst()).numDeletedRows>0}function ta(e){return{create:Yi(e),get:Xi(e),getByCredentialId:Zi(e),list:Qi(e),update:$i(e),remove:ea(e)}}function na(e){return async t=>t.length===0?[]:(await e.selectFrom(`outbox_events`).selectAll().where(`id`,`in`,t).execute()).map(e=>({...JSON.parse(e.payload),id:e.id,created_at:e.created_at,processed_at:e.processed_at,retry_count:e.retry_count,next_retry_at:e.next_retry_at,error:e.error}))}function ra(e){return async t=>{let n=new Date().toISOString();return(await e.selectFrom(`outbox_events`).selectAll().where(`processed_at`,`is`,null).where(e=>e.or([e(`next_retry_at`,`is`,null),e(`next_retry_at`,`<=`,n)])).where(e=>e.or([e(`claimed_by`,`is`,null),e(`claim_expires_at`,`<=`,n)])).orderBy(`created_at`,`asc`).orderBy(`id`,`asc`).limit(t).execute()).map(e=>({...JSON.parse(e.payload),id:e.id,created_at:e.created_at,processed_at:e.processed_at,retry_count:e.retry_count,next_retry_at:e.next_retry_at,error:e.error}))}}function ia(e){return async(t,n,r)=>{if(t.length===0)return[];let i=new Date().toISOString(),a=new Date(Date.now()+r).toISOString();return await e.updateTable(`outbox_events`).set({claimed_by:n,claim_expires_at:a}).where(`id`,`in`,t).where(`processed_at`,`is`,null).where(e=>e.or([e(`claimed_by`,`is`,null),e(`claim_expires_at`,`<=`,i)])).execute(),(await e.selectFrom(`outbox_events`).select(`id`).where(`id`,`in`,t).where(`claimed_by`,`=`,n).where(`claim_expires_at`,`=`,a).execute()).map(e=>e.id)}}function aa(e){return async t=>{if(t.length===0)return;let n=new Date().toISOString();await e.updateTable(`outbox_events`).set({processed_at:n}).where(`id`,`in`,t).execute()}}function oa(e){return async(t,n,r)=>{await e.updateTable(`outbox_events`).set({error:n,next_retry_at:r,retry_count:i.sql`retry_count + 1`,claimed_by:null,claim_expires_at:null}).where(`id`,`=`,t).execute()}}function sa(e){return async(t,n)=>{let r=new Date().toISOString();await e.updateTable(`outbox_events`).set({processed_at:r,dead_lettered_at:r,final_error:n}).where(`id`,`=`,t).execute()}}function ca(e){return async(t,n={})=>{let{page:r=0,per_page:i=50,include_totals:a=!1}=n,o=(await e.selectFrom(`outbox_events`).selectAll().where(`tenant_id`,`=`,t).where(`dead_lettered_at`,`is not`,null).orderBy(`dead_lettered_at`,`desc`).orderBy(`id`,`asc`).offset(r*i).limit(i).execute()).flatMap(e=>{let t;try{t=JSON.parse(e.payload)}catch(t){return console.error(`Failed to parse outbox payload for event ${e.id}`,t),[]}return[{...t,id:e.id,created_at:e.created_at,processed_at:e.processed_at,retry_count:e.retry_count,next_retry_at:e.next_retry_at,error:e.error,dead_lettered_at:e.dead_lettered_at,final_error:e.final_error}]}),s=o.length;if(a){let[n]=await e.selectFrom(`outbox_events`).select(e=>e.fn.countAll().as(`total`)).where(`tenant_id`,`=`,t).where(`dead_lettered_at`,`is not`,null).execute();s=Number(n?.total??o.length)}return{events:o,start:r*i,limit:i,length:s}}}function la(e){return async(t,n)=>{let r=await e.updateTable(`outbox_events`).set({processed_at:null,dead_lettered_at:null,final_error:null,retry_count:0,next_retry_at:null,error:null}).where(`id`,`=`,t).where(`tenant_id`,`=`,n).where(`dead_lettered_at`,`is not`,null).executeTakeFirst();return Number(r.numUpdatedRows)>0}}function ua(e){return async t=>{let n=await e.deleteFrom(`outbox_events`).where(`processed_at`,`is not`,null).where(`processed_at`,`<`,t).executeTakeFirst();return Number(n.numDeletedRows)}}function da(e){return{create:he(e),getByIds:na(e),getUnprocessed:ra(e),claimEvents:ia(e),markProcessed:aa(e),markRetry:oa(e),deadLetter:sa(e),listFailed:ca(e),replay:la(e),cleanup:ua(e)}}function H(e){return{id:e.id,name:e.name,type:e.type,status:e.status,sink:JSON.parse(e.sink),filters:e.filters?JSON.parse(e.filters):void 0,isPriority:e.is_priority==null?void 0:e.is_priority===1,created_at:e.created_at,updated_at:e.updated_at}}function fa(e){return{async create(t,r,i){let a=i?.importMetadata,o=new Date().toISOString(),s={id:a?.id??`lst_${(0,n.nanoid)()}`,tenant_id:t,name:r.name,type:r.type,status:r.status??`active`,sink:JSON.stringify(r.sink),filters:r.filters?JSON.stringify(r.filters):null,is_priority:r.isPriority===void 0?null:+!!r.isPriority,created_at:a?.created_at??o,updated_at:a?.updated_at??o};return await e.insertInto(`log_streams`).values(s).execute(),H(s)},async get(t,n){let r=await e.selectFrom(`log_streams`).where(`tenant_id`,`=`,t).where(`id`,`=`,n).selectAll().executeTakeFirst();return r?H(r):null},async list(t){return(await e.selectFrom(`log_streams`).where(`tenant_id`,`=`,t).selectAll().execute()).map(H)},async update(t,n,r){let i={updated_at:new Date().toISOString()};return r.name!==void 0&&(i.name=r.name),r.type!==void 0&&(i.type=r.type),r.status!==void 0&&(i.status=r.status),r.sink!==void 0&&(i.sink=JSON.stringify(r.sink)),r.filters!==void 0&&(i.filters=r.filters?JSON.stringify(r.filters):null),r.isPriority!==void 0&&(i.is_priority=+!!r.isPriority),((await e.updateTable(`log_streams`).set(i).where(`tenant_id`,`=`,t).where(`id`,`=`,n).executeTakeFirst())?.numUpdatedRows??0n)>0n},async remove(t,n){return((await e.deleteFrom(`log_streams`).where(`tenant_id`,`=`,t).where(`id`,`=`,n).executeTakeFirst())?.numDeletedRows??0n)>0n}}}function U(e){return{id:e.id,name:e.name,provider:a.migrationProviderTypeSchema.parse(e.provider),connection:e.connection,enabled:e.enabled===1,credentials:JSON.parse(e.credentials),created_at:e.created_at,updated_at:e.updated_at}}function pa(e){return{async create(t,r,i){let a=i?.importMetadata,o=new Date().toISOString(),s=a?.id??r.id??`mig_${(0,n.nanoid)()}`,c=r.enabled??!0,l={id:s,tenant_id:t,name:r.name,provider:r.provider,connection:r.connection,enabled:+!!c,credentials:JSON.stringify(r.credentials),created_at:a?.created_at??o,updated_at:a?.updated_at??o};return await e.insertInto(`migration_sources`).values(l).execute(),U(l)},async get(t,n){let r=await e.selectFrom(`migration_sources`).where(`tenant_id`,`=`,t).where(`id`,`=`,n).selectAll().executeTakeFirst();return r?U(r):null},async list(t){return(await e.selectFrom(`migration_sources`).where(`tenant_id`,`=`,t).selectAll().execute()).map(U)},async update(t,n,r){let i={updated_at:new Date().toISOString()};return r.name!==void 0&&(i.name=r.name),r.provider!==void 0&&(i.provider=r.provider),r.connection!==void 0&&(i.connection=r.connection),r.enabled!==void 0&&(i.enabled=+!!r.enabled),r.credentials!==void 0&&(i.credentials=JSON.stringify(r.credentials)),((await e.updateTable(`migration_sources`).set(i).where(`tenant_id`,`=`,t).where(`id`,`=`,n).executeTakeFirst())?.numUpdatedRows??0n)>0n},async remove(t,n){return((await e.deleteFrom(`migration_sources`).where(`tenant_id`,`=`,t).where(`id`,`=`,n).executeTakeFirst())?.numDeletedRows??0n)>0n}}}function W(e){return{id:e.id,tenant_id:e.tenant_id,custom_domain_id:e.custom_domain_id,priority:e.priority,match:ma(e.match),handlers:ha(e.handlers),created_at:e.created_at,updated_at:e.updated_at}}function ma(e){if(!e)return{path:`/*`};try{let t=JSON.parse(e),n=a.matchSchema.safeParse(t);if(n.success)return n.data}catch{}return{path:`/*`}}function ha(e){if(!e)return[];try{let t=JSON.parse(e);if(!Array.isArray(t))return[];let n=[];for(let e of t){let t=a.handlerConfigSchema.safeParse(e);t.success&&n.push(t.data)}return n}catch{return[]}}function G(e){return{async create(t,r,i){let a=i?.importMetadata,o=new Date().toISOString(),s={id:a?.id??r.id??(0,n.nanoid)(),tenant_id:t,custom_domain_id:r.custom_domain_id,priority:r.priority,match:r.match,handlers:r.handlers,created_at:a?.created_at??o,updated_at:a?.updated_at??o};return await e.insertInto(`proxy_routes`).values({id:s.id,tenant_id:s.tenant_id,custom_domain_id:s.custom_domain_id,priority:s.priority,match:JSON.stringify(s.match),handlers:JSON.stringify(s.handlers),created_at:s.created_at,updated_at:s.updated_at}).execute(),s},async get(t,n){let r=await e.selectFrom(`proxy_routes`).where(`tenant_id`,`=`,t).where(`id`,`=`,n).selectAll().executeTakeFirst();return r?W(r):null},async list(t,n={}){let r=n.page??0,i=n.per_page??50,a=e.selectFrom(`proxy_routes`).where(`tenant_id`,`=`,t);n.custom_domain_id&&(a=a.where(`custom_domain_id`,`=`,n.custom_domain_id));let o=await a.selectAll().orderBy(`priority`,`asc`).orderBy(`created_at`,`asc`).offset(r*i).limit(i).execute();return{proxy_routes:o.map(W),start:r*i,limit:i,length:o.length}},async update(t,n,r){let i={updated_at:new Date().toISOString()};r.priority!==void 0&&(i.priority=r.priority),r.match!==void 0&&(i.match=JSON.stringify(r.match)),r.handlers!==void 0&&(i.handlers=JSON.stringify(r.handlers));let a=await e.updateTable(`proxy_routes`).where(`tenant_id`,`=`,t).where(`id`,`=`,n).set(i).executeTakeFirst();return Number(a.numUpdatedRows)>0},async remove(t,n){let r=await e.deleteFrom(`proxy_routes`).where(`tenant_id`,`=`,t).where(`id`,`=`,n).executeTakeFirst();return Number(r.numDeletedRows)>0}}}async function ga(e,t){let n=t.indexOf(`:`),r=n===-1?t:t.slice(0,n),i=(r.endsWith(`.`)?r.slice(0,-1):r).toLowerCase(),a=await e.selectFrom(`custom_domains`).where(`domain`,`=`,i).select([`custom_domain_id`,`tenant_id`,`domain`]).executeTakeFirst();if(!a)return null;let o=await e.selectFrom(`proxy_routes`).where(`tenant_id`,`=`,a.tenant_id).where(`custom_domain_id`,`=`,a.custom_domain_id).selectAll().orderBy(`priority`,`asc`).orderBy(`created_at`,`asc`).execute();return{tenant_id:a.tenant_id,custom_domain_id:a.custom_domain_id,domain:a.domain,routes:o.map(W)}}function _a(e){return{proxyRoutes:G(e),resolveHost:t=>ga(e,t)}}function va(e){if(!e)return[];try{let t=JSON.parse(e);if(!Array.isArray(t))return[];let n=[];for(let e of t){let t=a.scimMappingEntrySchema.safeParse(e);t.success&&n.push(t.data)}return n}catch{return[]}}function ya(e){if(!e)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`string`):[]}catch{return[]}}function ba(e){return{connection_id:e.connection_id,user_id_attribute:e.user_id_attribute,mapping:va(e.mapping),created_at:e.created_at,updated_at:e.updated_at}}function xa(e){return{async create(t,n){let r=new Date().toISOString();return await e.insertInto(`scim_configurations`).values({connection_id:n.connection_id,tenant_id:t,user_id_attribute:n.user_id_attribute,mapping:JSON.stringify(n.mapping),created_at:r,updated_at:r}).execute(),{connection_id:n.connection_id,user_id_attribute:n.user_id_attribute,mapping:n.mapping,created_at:r,updated_at:r}},async get(t,n){let r=await e.selectFrom(`scim_configurations`).where(`tenant_id`,`=`,t).where(`connection_id`,`=`,n).selectAll().executeTakeFirst();return r?ba(r):null},async update(t,n,r){let i={updated_at:new Date().toISOString()};r.user_id_attribute!==void 0&&(i.user_id_attribute=r.user_id_attribute),r.mapping!==void 0&&(i.mapping=JSON.stringify(r.mapping));let a=await e.updateTable(`scim_configurations`).where(`tenant_id`,`=`,t).where(`connection_id`,`=`,n).set(i).executeTakeFirst();return Number(a.numUpdatedRows)>0},async remove(t,n){let r=await e.deleteFrom(`scim_configurations`).where(`tenant_id`,`=`,t).where(`connection_id`,`=`,n).executeTakeFirst();return Number(r.numDeletedRows)>0}}}function K(e){return{token_id:e.token_id,connection_id:e.connection_id,token_hash:e.token_hash,scopes:ya(e.scopes),valid_until:e.valid_until??void 0,created_at:e.created_at,last_used_at:e.last_used_at??void 0}}function Sa(e){return{async create(t,n){let r=new Date().toISOString();return await e.insertInto(`scim_tokens`).values({token_id:n.token_id,tenant_id:t,connection_id:n.connection_id,token_hash:n.token_hash,scopes:JSON.stringify(n.scopes),valid_until:n.valid_until??null,created_at:r,last_used_at:null}).execute(),{token_id:n.token_id,connection_id:n.connection_id,token_hash:n.token_hash,scopes:n.scopes,valid_until:n.valid_until,created_at:r}},async get(t,n){let r=await e.selectFrom(`scim_tokens`).where(`tenant_id`,`=`,t).where(`token_id`,`=`,n).selectAll().executeTakeFirst();return r?K(r):null},async getByHash(t,n){let r=await e.selectFrom(`scim_tokens`).where(`tenant_id`,`=`,t).where(`token_hash`,`=`,n).selectAll().executeTakeFirst();return r?K(r):null},async listByConnection(t,n){return(await e.selectFrom(`scim_tokens`).where(`tenant_id`,`=`,t).where(`connection_id`,`=`,n).selectAll().execute()).map(K)},async markUsed(t,n,r){let i=await e.updateTable(`scim_tokens`).where(`tenant_id`,`=`,t).where(`token_id`,`=`,n).set({last_used_at:r}).executeTakeFirst();return Number(i.numUpdatedRows)>0},async remove(t,n){let r=await e.deleteFrom(`scim_tokens`).where(`tenant_id`,`=`,t).where(`token_id`,`=`,n).executeTakeFirst();return Number(r.numDeletedRows)>0}}}function Ca(e){return{connection_id:e.connection_id,external_id:e.external_id,user_id:e.user_id,created_at:e.created_at}}function wa(e){return{async create(t,n){let r=new Date().toISOString();return await e.insertInto(`scim_external_ids`).values({tenant_id:t,connection_id:n.connection_id,external_id:n.external_id,user_id:n.user_id,created_at:r}).execute(),{connection_id:n.connection_id,external_id:n.external_id,user_id:n.user_id,created_at:r}},async getByExternalId(t,n,r){let i=await e.selectFrom(`scim_external_ids`).where(`tenant_id`,`=`,t).where(`connection_id`,`=`,n).where(`external_id`,`=`,r).selectAll().executeTakeFirst();return i?Ca(i):null},async getByUserId(t,n,r){let i=await e.selectFrom(`scim_external_ids`).where(`tenant_id`,`=`,t).where(`connection_id`,`=`,n).where(`user_id`,`=`,r).selectAll().executeTakeFirst();return i?Ca(i):null},async remove(t,n,r){let i=await e.deleteFrom(`scim_external_ids`).where(`tenant_id`,`=`,t).where(`connection_id`,`=`,n).where(`user_id`,`=`,r).executeTakeFirst();return Number(i.numDeletedRows)>0}}}function q(e){return a.tenantOperationSchema.parse({id:e.id,tenant_id:e.tenant_id,rollout_id:e.rollout_id,kind:e.kind,status:e.status,current_step:e.current_step,engine:e.engine,engine_instance_id:e.engine_instance_id,target_worker_version:e.target_worker_version,target_database_version:e.target_database_version,error:e.error,initiated_by:e.initiated_by,created_at:e.created_at,updated_at:e.updated_at,finished_at:e.finished_at})}function Ta(e){return{async create(t){let r=a.tenantOperationInsertSchema.parse(t),i=new Date().toISOString(),o={id:`op_${(0,n.nanoid)()}`,tenant_id:r.tenant_id,rollout_id:r.rollout_id??null,kind:r.kind,status:`pending`,current_step:null,engine:r.engine,engine_instance_id:r.engine_instance_id??null,target_worker_version:r.target_worker_version??null,target_database_version:r.target_database_version??null,error:null,initiated_by:r.initiated_by??null,created_at:i,updated_at:i,finished_at:null};return await e.insertInto(`tenant_operations`).values(o).execute(),q(o)},async get(t){let n=await e.selectFrom(`tenant_operations`).where(`id`,`=`,t).selectAll().executeTakeFirst();return n?q(n):null},async list(t={}){let n=t.page??0,r=t.per_page??50,i=e.selectFrom(`tenant_operations`);if(t.tenant_id!==void 0&&(i=i.where(`tenant_id`,`=`,t.tenant_id)),t.rollout_id!==void 0&&(i=i.where(`rollout_id`,`=`,t.rollout_id)),t.kind!==void 0&&(i=i.where(`kind`,`=`,t.kind)),t.status!==void 0){let e=Array.isArray(t.status)?t.status:[t.status];i=i.where(`status`,`in`,e)}t.engine!==void 0&&(i=i.where(`engine`,`=`,t.engine)),t.updated_before!==void 0&&(i=i.where(`updated_at`,`<`,t.updated_before));let a=await i.selectAll().orderBy(`created_at`,`desc`).orderBy(`id`,`desc`).offset(n*r).limit(r).execute();return{operations:a.map(q),start:n*r,limit:r,length:a.length}},async update(t,n){let r={updated_at:new Date().toISOString()};n.status!==void 0&&(r.status=n.status),n.current_step!==void 0&&(r.current_step=n.current_step),n.engine_instance_id!==void 0&&(r.engine_instance_id=n.engine_instance_id),n.target_worker_version!==void 0&&(r.target_worker_version=n.target_worker_version),n.target_database_version!==void 0&&(r.target_database_version=n.target_database_version),n.error!==void 0&&(r.error=n.error),n.finished_at!==void 0&&(r.finished_at=n.finished_at);let i=await e.updateTable(`tenant_operations`).where(`id`,`=`,t).set(r).executeTakeFirst();return Number(i.numUpdatedRows)>0},async remove(t){let n=await e.deleteFrom(`tenant_operations`).where(`id`,`=`,t).executeTakeFirst();return Number(n.numDeletedRows)>0}}}var Ea=`0123456789ABCDEFGHJKMNPQRSTVWXYZ`,J=32,Da=10,Oa=4,ka=10;function Aa(e,t){let n=``;for(let r=t;r>0;r--)n=Ea.charAt(e%J)+n,e=Math.floor(e/J);return n}function ja(){let e=new Uint8Array(ka);crypto.getRandomValues(e);let t=``;for(let n=0;n<ka;n++)t+=Ea.charAt(e[n]%J);return t}var Ma=0,Y=0;function Na(){let e=Date.now();return e===Ma?Y++:(Ma=e,Y=0),Aa(e,Da)+Aa(Y,Oa)+ja()}function Pa(e){if(!e)return null;try{let t=JSON.parse(e);if(t&&typeof t==`object`&&!Array.isArray(t))return Object.fromEntries(Object.entries(t))}catch{}return null}function Fa(e){return a.tenantOperationEventSchema.parse({id:e.id,operation_id:e.operation_id,step:e.step,outcome:e.outcome,detail:Pa(e.detail),attempt:e.attempt,created_at:e.created_at})}function Ia(e){return{async create(t){let n=a.tenantOperationEventInsertSchema.parse(t),r={id:`evt_${Na()}`,operation_id:n.operation_id,step:n.step,outcome:n.outcome,detail:n.detail?JSON.stringify(n.detail):null,attempt:n.attempt,created_at:new Date().toISOString()};return await e.insertInto(`tenant_operation_events`).values(r).execute(),Fa(r)},async listByOperation(t,n={}){let r=n.page??0,i=n.per_page??100,a=await e.selectFrom(`tenant_operation_events`).where(`operation_id`,`=`,t).selectAll().orderBy(`created_at`,`asc`).orderBy(`id`,`asc`).offset(r*i).limit(i).execute();return{events:a.map(Fa),start:r*i,limit:i,length:a.length}}}}function La(e){if(!e)return null;try{return JSON.parse(e)}catch{return null}}function X(e){return a.rolloutSchema.parse({id:e.id,kind:e.kind,status:e.status,target_worker_version:e.target_worker_version,target_database_version:e.target_database_version,wave_size:e.wave_size,canary_tenant_ids:La(e.canary_tenant_ids),filter:La(e.filter),initiated_by:e.initiated_by,created_at:e.created_at,updated_at:e.updated_at,finished_at:e.finished_at})}function Ra(e){return{async create(t){let r=a.rolloutInsertSchema.parse(t),i=new Date().toISOString(),o={id:`rol_${(0,n.nanoid)()}`,kind:r.kind,status:`pending`,target_worker_version:r.target_worker_version??null,target_database_version:r.target_database_version??null,wave_size:r.wave_size,canary_tenant_ids:r.canary_tenant_ids?JSON.stringify(r.canary_tenant_ids):null,filter:r.filter?JSON.stringify(r.filter):null,initiated_by:r.initiated_by??null,created_at:i,updated_at:i,finished_at:null};return await e.insertInto(`rollouts`).values(o).execute(),X(o)},async get(t){let n=await e.selectFrom(`rollouts`).where(`id`,`=`,t).selectAll().executeTakeFirst();return n?X(n):null},async list(t={}){let n=t.page??0,r=t.per_page??50,i=await e.selectFrom(`rollouts`).selectAll().orderBy(`created_at`,`desc`).orderBy(`id`,`desc`).offset(n*r).limit(r).execute();return{rollouts:i.map(X),start:n*r,limit:r,length:i.length}},async update(t,n){let r={updated_at:new Date().toISOString()};n.status!==void 0&&(r.status=n.status),n.wave_size!==void 0&&(r.wave_size=n.wave_size),n.canary_tenant_ids!==void 0&&(r.canary_tenant_ids=n.canary_tenant_ids?JSON.stringify(n.canary_tenant_ids):null),n.filter!==void 0&&(r.filter=n.filter?JSON.stringify(n.filter):null),n.finished_at!==void 0&&(r.finished_at=n.finished_at);let i=await e.updateTable(`rollouts`).where(`id`,`=`,t).set(r).executeTakeFirst();return Number(i.numUpdatedRows)>0},async remove(t){let n=await e.deleteFrom(`rollouts`).where(`id`,`=`,t).executeTakeFirst();return Number(n.numDeletedRows)>0}}}var za=class{migrations;constructor(e){this.migrations=e}async getMigrations(){return this.migrations}},Ba=t({down:()=>Wa,up:()=>Ua}),Va=[{table:`authentication_methods`,name:`fk_authentication_methods_tenants`,columns:[`tenant_id`],references:`tenants`,referencedColumns:[`id`],onDelete:`cascade`},{table:`branding`,name:`fk_branding_tenants`,columns:[`tenant_id`],references:`tenants`,referencedColumns:[`id`],onDelete:`cascade`},{table:`client_grants`,name:`fk_client_grants_tenants`,columns:[`tenant_id`],references:`tenants`,referencedColumns:[`id`],onDelete:`cascade`},{table:`client_registration_tokens`,name:`fk_client_registration_tokens_tenants`,columns:[`tenant_id`],references:`tenants`,referencedColumns:[`id`],onDelete:`cascade`},{table:`clients`,name:`fk_clients_tenants`,columns:[`tenant_id`],references:`tenants`,referencedColumns:[`id`],onDelete:`cascade`},{table:`codes`,name:`fk_codes_tenants`,columns:[`tenant_id`],references:`tenants`,referencedColumns:[`id`],onDelete:`cascade`},{table:`connections`,name:`fk_connections_tenants`,columns:[`tenant_id`],references:`tenants`,referencedColumns:[`id`],onDelete:`cascade`},{table:`custom_domains`,name:`fk_custom_domains_tenants`,columns:[`tenant_id`],references:`tenants`,referencedColumns:[`id`],onDelete:`cascade`},{table:`custom_text`,name:`fk_custom_text_tenants`,columns:[`tenant_id`],references:`tenants`,referencedColumns:[`id`],onDelete:`cascade`},{table:`grants`,name:`fk_grants_tenants`,columns:[`tenant_id`],references:`tenants`,referencedColumns:[`id`],onDelete:`cascade`},{table:`hooks`,name:`fk_hooks_tenants`,columns:[`tenant_id`],references:`tenants`,referencedColumns:[`id`],onDelete:`cascade`},{table:`keys`,name:`fk_keys_tenants`,columns:[`tenant_id`],references:`tenants`,referencedColumns:[`id`],onDelete:`cascade`},{table:`migrations`,name:`fk_migrations_tenants`,columns:[`tenant_id`],references:`tenants`,referencedColumns:[`id`],onDelete:`cascade`},{table:`passwords`,name:`fk_passwords_tenants`,columns:[`tenant_id`],references:`tenants`,referencedColumns:[`id`],onDelete:`cascade`},{table:`themes`,name:`fk_themes_tenants`,columns:[`tenant_id`],references:`tenants`,referencedColumns:[`id`],onDelete:`cascade`},{table:`universal_login_templates`,name:`fk_universal_login_templates_tenants`,columns:[`tenant_id`],references:`tenants`,referencedColumns:[`id`],onDelete:`cascade`},{table:`users`,name:`fk_users_tenants`,columns:[`tenant_id`],references:`tenants`,referencedColumns:[`id`],onDelete:`cascade`},{table:`client_grants`,name:`fk_client_grants_clients`,columns:[`tenant_id`,`client_id`],references:`clients`,referencedColumns:[`tenant_id`,`client_id`],onDelete:`cascade`},{table:`codes`,name:`FK_codes_user_id_tenant_id_constraint`,columns:[`user_id`,`tenant_id`],references:`users`,referencedColumns:[`user_id`,`tenant_id`],onDelete:`cascade`},{table:`email_templates`,name:`email_templates_tenant_fk`,columns:[`tenant_id`],references:`tenants`,referencedColumns:[`id`],onDelete:`cascade`},{table:`grants`,name:`grants_user_id_constraint`,columns:[`user_id`,`tenant_id`],references:`users`,referencedColumns:[`user_id`,`tenant_id`],onDelete:`cascade`},{table:`login_sessions`,name:`login_sessions_session_fk`,columns:[`tenant_id`,`session_id`],references:`sessions`,referencedColumns:[`tenant_id`,`id`],onDelete:`cascade`},{table:`login_sessions`,name:`login_sessions_tenant_fk`,columns:[`tenant_id`],references:`tenants`,referencedColumns:[`id`],onDelete:`cascade`},{table:`organization_connections`,name:`organization_connections_connection_fk`,columns:[`tenant_id`,`connection_id`],references:`connections`,referencedColumns:[`tenant_id`,`id`],onDelete:`cascade`},{table:`organization_connections`,name:`organization_connections_organization_fk`,columns:[`organization_id`],references:`organizations`,referencedColumns:[`id`],onDelete:`cascade`},{table:`passwords`,name:`password_history_user_id_tenant_id_constraint`,columns:[`user_id`,`tenant_id`],references:`users`,referencedColumns:[`user_id`,`tenant_id`],onDelete:`cascade`},{table:`refresh_tokens`,name:`refresh_tokens_client_fk`,columns:[`tenant_id`,`client_id`],references:`clients`,referencedColumns:[`tenant_id`,`client_id`],onDelete:`cascade`},{table:`refresh_tokens`,name:`refresh_tokens_tenant_fk`,columns:[`tenant_id`],references:`tenants`,referencedColumns:[`id`],onDelete:`cascade`},{table:`sessions`,name:`sessions_user_fk`,columns:[`user_id`,`tenant_id`],references:`users`,referencedColumns:[`user_id`,`tenant_id`],onDelete:`cascade`},{table:`tenant_operation_events`,name:`tenant_operation_events_operation_id_constraint`,columns:[`operation_id`],references:`tenant_operations`,referencedColumns:[`id`],onDelete:`cascade`},{table:`user_activity`,name:`user_activity_user_id_constraint`,columns:[`user_id`,`tenant_id`],references:`users`,referencedColumns:[`user_id`,`tenant_id`],onDelete:`cascade`},{table:`user_organizations`,name:`fk_user_organizations_organization`,columns:[`organization_id`],references:`organizations`,referencedColumns:[`id`],onDelete:`cascade`},{table:`user_organizations`,name:`fk_user_organizations_user`,columns:[`tenant_id`,`user_id`],references:`users`,referencedColumns:[`tenant_id`,`user_id`],onDelete:`cascade`}];async function Ha(e){try{return await i.sql`select sqlite_version()`.execute(e),!0}catch{return!1}}function Z(e,t){let n=e;for(let e of Va)e.table===t&&(n=n.addForeignKeyConstraint(e.name,e.columns,e.references,e.referencedColumns,t=>{let n=t;return e.onDelete&&(n=n.onDelete(e.onDelete)),e.onUpdate&&(n=n.onUpdate(e.onUpdate)),n}));return n}async function Ua(e){let t=await Ha(e);await e.schema.createTable(`tenants`).addColumn(`id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`audience`,i.sql`varchar(255)`).addColumn(`sender_email`,i.sql`varchar(255)`).addColumn(`sender_name`,i.sql`varchar(255)`).addColumn(`created_at`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`updated_at`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`support_url`,i.sql`varchar(255)`).addColumn(`idle_session_lifetime`,i.sql`int`).addColumn(`session_lifetime`,i.sql`int`).addColumn(`session_cookie`,i.sql`text`).addColumn(`allowed_logout_urls`,i.sql`text`).addColumn(`ephemeral_session_lifetime`,i.sql`int`).addColumn(`idle_ephemeral_session_lifetime`,i.sql`int`).addColumn(`default_redirection_uri`,i.sql`text`).addColumn(`enabled_locales`,i.sql`text`).addColumn(`default_directory`,i.sql`varchar(255)`).addColumn(`error_page`,i.sql`text`).addColumn(`flags`,i.sql`text`).addColumn(`friendly_name`,i.sql`varchar(255)`).addColumn(`picture_url`,i.sql`text`).addColumn(`support_email`,i.sql`varchar(255)`).addColumn(`sandbox_version`,i.sql`varchar(50)`).addColumn(`sandbox_versions_available`,i.sql`text`).addColumn(`legacy_sandbox_version`,i.sql`varchar(50)`).addColumn(`change_password`,i.sql`text`).addColumn(`guardian_mfa_page`,i.sql`text`).addColumn(`device_flow`,i.sql`text`).addColumn(`default_token_quota`,i.sql`text`).addColumn(`default_audience`,i.sql`varchar(255)`).addColumn(`default_organization`,i.sql`varchar(255)`).addColumn(`sessions`,i.sql`text`).addColumn(`oidc_logout`,i.sql`text`).addColumn(`allow_organization_name_in_authentication_api`,i.sql`int`).addColumn(`customize_mfa_in_postlogin_action`,i.sql`int`).addColumn(`acr_values_supported`,i.sql`text`).addColumn(`mtls`,i.sql`text`).addColumn(`pushed_authorization_requests_supported`,i.sql`int`).addColumn(`authorization_response_iss_parameter_supported`,i.sql`int`).addColumn(`mfa`,i.sql`text`).addColumn(`attack_protection`,i.sql`text`).addColumn(`default_client_id`,i.sql`varchar(255)`).addColumn(`deployment_type`,i.sql`varchar(16)`,e=>e.notNull().defaultTo(`shared`)).addColumn(`provisioning_state`,i.sql`varchar(16)`,e=>e.notNull().defaultTo(`ready`)).addColumn(`provisioning_error`,i.sql`varchar(2048)`).addColumn(`provisioning_state_changed_at`,i.sql`varchar(35)`).addColumn(`bundle_configuration`,i.sql`varchar(64)`).addColumn(`worker_version`,i.sql`varchar(64)`).addColumn(`worker_script_name`,i.sql`varchar(255)`).addColumn(`storage_kind`,i.sql`varchar(32)`).addColumn(`d1_database_id`,i.sql`varchar(64)`).addColumn(`database_version`,i.sql`varchar(64)`).addPrimaryKeyConstraint(`tenants_pk`,[`id`]).execute(),await e.schema.createTable(`action_executions`).addColumn(`id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`trigger_id`,i.sql`varchar(64)`,e=>e.notNull()).addColumn(`status`,i.sql`varchar(32)`,e=>e.notNull()).addColumn(`results`,i.sql`text`,e=>e.notNull()).addColumn(`logs`,i.sql`text`).addColumn(`created_at_ts`,i.sql`bigint`,e=>e.notNull()).addColumn(`updated_at_ts`,i.sql`bigint`,e=>e.notNull()).addPrimaryKeyConstraint(`action_executions_pk`,[`id`]).execute(),await e.schema.createTable(`action_versions`).addColumn(`id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`action_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`number`,i.sql`int`,e=>e.notNull()).addColumn(`code`,i.sql`text`,e=>e.notNull()).addColumn(`runtime`,i.sql`varchar(50)`).addColumn(`secrets`,i.sql`text`).addColumn(`dependencies`,i.sql`text`).addColumn(`supported_triggers`,i.sql`text`).addColumn(`deployed`,i.sql`int`,e=>e.notNull().defaultTo(0)).addColumn(`created_at_ts`,i.sql`bigint`,e=>e.notNull()).addColumn(`updated_at_ts`,i.sql`bigint`,e=>e.notNull()).addPrimaryKeyConstraint(`action_versions_pk`,[`id`]).execute(),await e.schema.createTable(`actions`).addColumn(`id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`name`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`code`,i.sql`text`,e=>e.notNull()).addColumn(`runtime`,i.sql`varchar(50)`).addColumn(`status`,i.sql`varchar(50)`,e=>e.defaultTo(`built`)).addColumn(`secrets`,i.sql`text`).addColumn(`dependencies`,i.sql`text`).addColumn(`supported_triggers`,i.sql`text`).addColumn(`deployed_at_ts`,i.sql`bigint`).addColumn(`created_at_ts`,i.sql`bigint`,e=>e.notNull()).addColumn(`updated_at_ts`,i.sql`bigint`,e=>e.notNull()).addColumn(`is_system`,i.sql`int`,e=>e.notNull().defaultTo(0)).addColumn(`inherit`,i.sql`int`,e=>e.notNull().defaultTo(0)).addPrimaryKeyConstraint(`actions_pk`,[`id`]).execute();{let n=e.schema.createTable(`authentication_methods`).addColumn(`id`,i.sql`varchar(26)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`user_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`type`,i.sql`varchar(32)`,e=>e.notNull()).addColumn(`phone_number`,i.sql`varchar(32)`).addColumn(`totp_secret`,i.sql`varchar(255)`).addColumn(`confirmed`,i.sql`int`,e=>e.notNull().defaultTo(0)).addColumn(`created_at_ts`,i.sql`bigint`,e=>e.notNull()).addColumn(`updated_at_ts`,i.sql`bigint`,e=>e.notNull()).addColumn(`credential_id`,i.sql`varchar(512)`).addColumn(`public_key`,i.sql`text`).addColumn(`sign_count`,i.sql`int`).addColumn(`credential_backed_up`,i.sql`int`).addColumn(`transports`,i.sql`varchar(512)`).addColumn(`friendly_name`,i.sql`varchar(255)`).addPrimaryKeyConstraint(`authentication_methods_pk`,[`id`]);t&&(n=Z(n,`authentication_methods`)),await n.execute()}{let n=e.schema.createTable(`branding`).addColumn(`tenant_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`logo_url`,i.sql`varchar(512)`).addColumn(`favicon_url`,i.sql`varchar(512)`).addColumn(`font_url`,i.sql`varchar(512)`).addColumn(`colors_primary`,i.sql`varchar(8)`).addColumn(`colors_page_background_type`,i.sql`varchar(32)`).addColumn(`colors_page_background_start`,i.sql`varchar(8)`).addColumn(`colors_page_background_end`,i.sql`varchar(8)`).addColumn(`colors_page_background_angle_dev`,i.sql`int`).addColumn(`dark_mode`,i.sql`varchar(8)`).addPrimaryKeyConstraint(`branding_pk`,[`tenant_id`]);t&&(n=Z(n,`branding`)),await n.execute()}{let n=e.schema.createTable(`clients`).addColumn(`client_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`name`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`description`,i.sql`varchar(140)`).addColumn(`global`,i.sql`int`,e=>e.notNull().defaultTo(0)).addColumn(`client_secret`,i.sql`varchar(255)`).addColumn(`app_type`,i.sql`varchar(64)`,e=>e.defaultTo(`regular_web`)).addColumn(`logo_uri`,i.sql`varchar(2083)`).addColumn(`is_first_party`,i.sql`int`,e=>e.notNull().defaultTo(0)).addColumn(`oidc_conformant`,i.sql`int`,e=>e.notNull().defaultTo(1)).addColumn(`callbacks`,i.sql`text`,e=>e.notNull()).addColumn(`allowed_origins`,i.sql`text`,e=>e.notNull()).addColumn(`web_origins`,i.sql`text`,e=>e.notNull()).addColumn(`client_aliases`,i.sql`text`,e=>e.notNull()).addColumn(`allowed_clients`,i.sql`text`,e=>e.notNull()).addColumn(`allowed_logout_urls`,i.sql`text`,e=>e.notNull()).addColumn(`session_transfer`,i.sql`text`,e=>e.notNull()).addColumn(`oidc_logout`,i.sql`text`,e=>e.notNull()).addColumn(`grant_types`,i.sql`text`,e=>e.notNull()).addColumn(`jwt_configuration`,i.sql`text`,e=>e.notNull()).addColumn(`signing_keys`,i.sql`text`,e=>e.notNull()).addColumn(`encryption_key`,i.sql`text`,e=>e.notNull()).addColumn(`sso`,i.sql`int`,e=>e.notNull().defaultTo(0)).addColumn(`sso_disabled`,i.sql`int`,e=>e.notNull().defaultTo(1)).addColumn(`cross_origin_authentication`,i.sql`int`,e=>e.notNull().defaultTo(0)).addColumn(`cross_origin_loc`,i.sql`varchar(2083)`).addColumn(`custom_login_page_on`,i.sql`int`,e=>e.notNull().defaultTo(0)).addColumn(`custom_login_page`,i.sql`text`).addColumn(`custom_login_page_preview`,i.sql`text`).addColumn(`form_template`,i.sql`text`).addColumn(`addons`,i.sql`text`,e=>e.notNull()).addColumn(`token_endpoint_auth_method`,i.sql`varchar(64)`,e=>e.defaultTo(`client_secret_basic`)).addColumn(`client_metadata`,i.sql`text`,e=>e.notNull()).addColumn(`mobile`,i.sql`text`,e=>e.notNull()).addColumn(`initiate_login_uri`,i.sql`varchar(2083)`).addColumn(`native_social_login`,i.sql`text`,e=>e.notNull()).addColumn(`refresh_token`,i.sql`text`,e=>e.notNull()).addColumn(`default_organization`,i.sql`text`,e=>e.notNull()).addColumn(`organization_usage`,i.sql`varchar(32)`,e=>e.defaultTo(`deny`)).addColumn(`organization_require_behavior`,i.sql`varchar(32)`,e=>e.defaultTo(`no_prompt`)).addColumn(`client_authentication_methods`,i.sql`text`,e=>e.notNull()).addColumn(`require_pushed_authorization_requests`,i.sql`int`,e=>e.notNull().defaultTo(0)).addColumn(`require_proof_of_possession`,i.sql`int`,e=>e.notNull().defaultTo(0)).addColumn(`signed_request_object`,i.sql`text`,e=>e.notNull()).addColumn(`compliance_level`,i.sql`varchar(64)`).addColumn(`par_request_expiry`,i.sql`int`).addColumn(`token_quota`,i.sql`text`,e=>e.notNull()).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`updated_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`connections`,i.sql`text`).addColumn(`auth0_conformant`,i.sql`int`,e=>e.defaultTo(1)).addColumn(`owner_user_id`,i.sql`varchar(255)`).addColumn(`registration_type`,i.sql`varchar(32)`).addColumn(`registration_metadata`,i.sql`text`).addColumn(`user_linking_mode`,i.sql`varchar(16)`).addColumn(`hide_sign_up_disabled_error`,i.sql`int`,e=>e.notNull().defaultTo(0)).addPrimaryKeyConstraint(`clients_pk`,[`tenant_id`,`client_id`]);t&&(n=Z(n,`clients`)),await n.execute()}{let n=e.schema.createTable(`client_grants`).addColumn(`id`,i.sql`varchar(21)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`client_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`audience`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`scope`,i.sql`text`).addColumn(`organization_usage`,i.sql`varchar(32)`).addColumn(`allow_any_organization`,i.sql`int`,e=>e.defaultTo(0)).addColumn(`is_system`,i.sql`int`,e=>e.defaultTo(0)).addColumn(`subject_type`,i.sql`varchar(32)`).addColumn(`authorization_details_types`,i.sql`text`).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`updated_at`,i.sql`varchar(35)`,e=>e.notNull()).addPrimaryKeyConstraint(`client_grants_pk`,[`tenant_id`,`id`]);t&&(n=Z(n,`client_grants`)),await n.execute()}{let n=e.schema.createTable(`client_registration_tokens`).addColumn(`id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`token_hash`,i.sql`varchar(64)`,e=>e.notNull()).addColumn(`type`,i.sql`varchar(8)`,e=>e.notNull()).addColumn(`client_id`,i.sql`varchar(191)`).addColumn(`sub`,i.sql`varchar(255)`).addColumn(`constraints`,i.sql`text`).addColumn(`single_use`,i.sql`int`,e=>e.notNull().defaultTo(0)).addColumn(`used_at_ts`,i.sql`bigint`).addColumn(`expires_at_ts`,i.sql`bigint`).addColumn(`created_at_ts`,i.sql`bigint`,e=>e.notNull()).addColumn(`revoked_at_ts`,i.sql`bigint`).addPrimaryKeyConstraint(`client_registration_tokens_pk`,[`id`]);t&&(n=Z(n,`client_registration_tokens`)),await n.execute()}{let n=e.schema.createTable(`users`).addColumn(`tenant_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`email`,i.sql`varchar(255)`).addColumn(`given_name`,i.sql`varchar(255)`).addColumn(`family_name`,i.sql`varchar(255)`).addColumn(`nickname`,i.sql`varchar(255)`).addColumn(`name`,i.sql`varchar(255)`).addColumn(`picture`,i.sql`text`).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`updated_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`linked_to`,i.sql`varchar(255)`).addColumn(`provider`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`connection`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`email_verified`,i.sql`tinyint(1)`,e=>e.notNull()).addColumn(`is_social`,i.sql`tinyint(1)`,e=>e.notNull()).addColumn(`app_metadata`,i.sql`text`,e=>e.notNull().defaultTo(i.sql`('{}')`)).addColumn(`profileData`,i.sql`text`).addColumn(`locale`,i.sql`varchar(64)`).addColumn(`user_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`phone_number`,i.sql`varchar(17)`).addColumn(`phone_verified`,i.sql`tinyint(1)`).addColumn(`username`,i.sql`varchar(128)`).addColumn(`user_metadata`,i.sql`text`).addColumn(`middle_name`,i.sql`varchar(100)`).addColumn(`profile`,i.sql`text`).addColumn(`website`,i.sql`text`).addColumn(`gender`,i.sql`varchar(50)`).addColumn(`birthdate`,i.sql`varchar(10)`).addColumn(`zoneinfo`,i.sql`varchar(100)`).addColumn(`preferred_username`,i.sql`varchar(255)`).addColumn(`address`,i.sql`text`).addColumn(`registration_completed_at`,i.sql`varchar(35)`).addPrimaryKeyConstraint(`users_pk`,[`tenant_id`,`user_id`]);t&&(n=Z(n,`users`)),await n.execute()}{let n=e.schema.createTable(`codes`).addColumn(`code_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`user_id`,i.sql`varchar(255)`).addColumn(`login_id`,i.sql`varchar(255)`).addColumn(`connection_id`,i.sql`varchar(255)`).addColumn(`code_type`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`created_at`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`expires_at`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`used_at`,i.sql`varchar(255)`).addColumn(`code_verifier`,i.sql`varchar(128)`).addColumn(`code_challenge`,i.sql`varchar(128)`).addColumn(`code_challenge_method`,i.sql`varchar(5)`).addColumn(`redirect_uri`,i.sql`varchar(1024)`).addColumn(`nonce`,i.sql`varchar(1024)`).addColumn(`state`,i.sql`varchar(2048)`).addColumn(`otp`,i.sql`varchar(32)`).addPrimaryKeyConstraint(`codes_pk`,[`code_id`,`code_type`,`tenant_id`]);t&&(n=Z(n,`codes`)),await n.execute()}{let n=e.schema.createTable(`connections`).addColumn(`id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`name`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`response_type`,i.sql`varchar(255)`).addColumn(`response_mode`,i.sql`varchar(255)`).addColumn(`strategy`,i.sql`varchar(64)`).addColumn(`options`,i.sql`varchar(8192)`,e=>e.notNull().defaultTo(`{}`)).addColumn(`created_at`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`updated_at`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`display_name`,i.sql`varchar(255)`).addColumn(`is_domain_connection`,i.sql`int`).addColumn(`show_as_button`,i.sql`int`).addColumn(`metadata`,i.sql`varchar(4096)`).addColumn(`is_system`,i.sql`int`,e=>e.notNull().defaultTo(0)).addPrimaryKeyConstraint(`connections_pk`,[`tenant_id`,`id`]);t&&(n=Z(n,`connections`)),await n.execute()}await e.schema.createTable(`control_plane_comm_keys`).addColumn(`kid`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`public_jwk`,i.sql`text`,e=>e.notNull()).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`revoked_at`,i.sql`varchar(35)`).addPrimaryKeyConstraint(`control_plane_comm_keys_pk`,[`kid`]).execute();{let n=e.schema.createTable(`custom_domains`).addColumn(`custom_domain_id`,i.sql`varchar(256)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`domain`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`primary`,i.sql`tinyint(1)`,e=>e.notNull()).addColumn(`status`,i.sql`varchar(50)`,e=>e.notNull()).addColumn(`type`,i.sql`varchar(50)`,e=>e.notNull()).addColumn(`origin_domain_name`,i.sql`varchar(255)`).addColumn(`verification`,i.sql`varchar(2048)`).addColumn(`custom_client_ip_header`,i.sql`varchar(50)`).addColumn(`tls_policy`,i.sql`varchar(50)`).addColumn(`domain_metadata`,i.sql`varchar(2048)`).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`updated_at`,i.sql`varchar(35)`,e=>e.notNull()).addPrimaryKeyConstraint(`custom_domains_pk`,[`custom_domain_id`]);t&&(n=Z(n,`custom_domains`)),await n.execute()}{let n=e.schema.createTable(`custom_text`).addColumn(`tenant_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`prompt`,i.sql`varchar(64)`,e=>e.notNull()).addColumn(`language`,i.sql`varchar(16)`,e=>e.notNull()).addColumn(`custom_text`,i.sql`text`,e=>e.notNull()).addColumn(`created_at_ts`,i.sql`bigint`,e=>e.notNull()).addColumn(`updated_at_ts`,i.sql`bigint`,e=>e.notNull()).addPrimaryKeyConstraint(`custom_text_pk`,[`tenant_id`,`prompt`,`language`]);t&&(n=Z(n,`custom_text`)),await n.execute()}await e.schema.createTable(`email_providers`).addColumn(`tenant_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`name`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`enabled`,i.sql`tinyint(1)`,e=>e.notNull()).addColumn(`default_from_address`,i.sql`varchar(255)`).addColumn(`credentials`,i.sql`varchar(2048)`,e=>e.notNull().defaultTo(`{}`)).addColumn(`settings`,i.sql`varchar(2048)`,e=>e.notNull().defaultTo(`{}`)).addColumn(`created_at`,i.sql`varchar(29)`,e=>e.notNull()).addColumn(`updated_at`,i.sql`varchar(29)`,e=>e.notNull()).addPrimaryKeyConstraint(`email_providers_pk`,[`tenant_id`]).execute();{let n=e.schema.createTable(`email_templates`).addColumn(`tenant_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`template`,i.sql`varchar(64)`,e=>e.notNull()).addColumn(`body`,i.sql`text`,e=>e.notNull()).addColumn(`from`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`subject`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`syntax`,i.sql`varchar(16)`,e=>e.notNull().defaultTo(`liquid`)).addColumn(`result_url`,i.sql`varchar(2048)`).addColumn(`url_lifetime_in_seconds`,i.sql`int`).addColumn(`include_email_in_redirect`,i.sql`int`,e=>e.notNull().defaultTo(0)).addColumn(`enabled`,i.sql`int`,e=>e.notNull().defaultTo(1)).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`updated_at`,i.sql`varchar(35)`,e=>e.notNull()).addPrimaryKeyConstraint(`email_templates_pk`,[`tenant_id`,`template`]);t&&(n=Z(n,`email_templates`)),await n.execute()}await e.schema.createTable(`flows`).addColumn(`id`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`name`,i.sql`varchar(150)`,e=>e.notNull()).addColumn(`actions`,i.sql`text`).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`updated_at`,i.sql`varchar(35)`,e=>e.notNull()).addPrimaryKeyConstraint(`flows_pk`,[`id`]).execute(),await e.schema.createTable(`forms`).addColumn(`id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`name`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`messages`,i.sql`varchar(255)`).addColumn(`languages`,i.sql`varchar(255)`).addColumn(`translations`,i.sql`varchar(4096)`).addColumn(`nodes`,i.sql`varchar(4096)`).addColumn(`start`,i.sql`varchar(255)`).addColumn(`ending`,i.sql`varchar(255)`).addColumn(`style`,i.sql`varchar(1042)`).addColumn(`created_at`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`updated_at`,i.sql`varchar(255)`,e=>e.notNull()).addPrimaryKeyConstraint(`forms_pk`,[`id`]).execute();{let n=e.schema.createTable(`grants`).addColumn(`id`,i.sql`varchar(21)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`user_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`client_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`audience`,i.sql`varchar(100)`,e=>e.notNull().defaultTo(``)).addColumn(`scope`,i.sql`text`,e=>e.notNull()).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`updated_at`,i.sql`varchar(35)`,e=>e.notNull()).addPrimaryKeyConstraint(`grants_pk`,[`id`]);t&&(n=Z(n,`grants`)),await n.execute()}await e.schema.createTable(`hook_code`).addColumn(`id`,i.sql`varchar(21)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`code`,i.sql`text`,e=>e.notNull()).addColumn(`secrets`,i.sql`text`).addColumn(`created_at_ts`,i.sql`bigint`,e=>e.notNull()).addColumn(`updated_at_ts`,i.sql`bigint`,e=>e.notNull()).addPrimaryKeyConstraint(`hook_code_pk`,[`id`]).execute();{let n=e.schema.createTable(`hooks`).addColumn(`hook_id`,i.sql`varchar(21)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`trigger_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`enabled`,i.sql`tinyint(1)`,e=>e.notNull()).addColumn(`synchronous`,i.sql`tinyint(1)`,e=>e.notNull().defaultTo(0)).addColumn(`priority`,i.sql`int`).addColumn(`form_id`,i.sql`varchar(128)`).addColumn(`url`,i.sql`varchar(512)`).addColumn(`template_id`,i.sql`varchar(64)`).addColumn(`created_at_ts`,i.sql`bigint`).addColumn(`updated_at_ts`,i.sql`bigint`).addColumn(`code_id`,i.sql`varchar(21)`).addColumn(`metadata`,i.sql`text`).addPrimaryKeyConstraint(`hooks_pk`,[`hook_id`]);t&&(n=Z(n,`hooks`)),await n.execute()}await e.schema.createTable(`invites`).addColumn(`id`,i.sql`varchar(21)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`organization_id`,i.sql`varchar(21)`,e=>e.notNull()).addColumn(`inviter`,i.sql`text`,e=>e.notNull()).addColumn(`invitee`,i.sql`text`,e=>e.notNull()).addColumn(`client_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`connection_id`,i.sql`varchar(21)`).addColumn(`invitation_url`,i.sql`text`,e=>e.notNull()).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`expires_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`app_metadata`,i.sql`text`).addColumn(`user_metadata`,i.sql`text`).addColumn(`roles`,i.sql`text`).addColumn(`ticket_id`,i.sql`varchar(191)`).addColumn(`ttl_sec`,i.sql`int`).addColumn(`send_invitation_email`,i.sql`int`).addPrimaryKeyConstraint(`invites_pk`,[`id`]).execute();{let n=e.schema.createTable(`keys`).addColumn(`kid`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(255)`).addColumn(`created_at`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`revoked_at`,i.sql`varchar(255)`).addColumn(`cert`,i.sql`varchar(4096)`).addColumn(`pkcs7`,i.sql`varchar(4096)`).addColumn(`fingerprint`,i.sql`varchar(256)`).addColumn(`thumbprint`,i.sql`varchar(256)`).addColumn(`current_since`,i.sql`varchar(256)`).addColumn(`current_until`,i.sql`varchar(256)`).addColumn(`type`,i.sql`varchar(50)`,e=>e.notNull().defaultTo(`jwt_signing`)).addColumn(`connection`,i.sql`varchar(255)`).addPrimaryKeyConstraint(`keys_pk`,[`kid`]);t&&(n=Z(n,`keys`)),await n.execute()}await e.schema.createTable(`log_streams`).addColumn(`id`,i.sql`varchar(64)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`name`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`type`,i.sql`varchar(64)`,e=>e.notNull()).addColumn(`status`,i.sql`varchar(32)`,e=>e.notNull()).addColumn(`sink`,i.sql`text`,e=>e.notNull()).addColumn(`filters`,i.sql`text`).addColumn(`is_priority`,i.sql`tinyint(1)`).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`updated_at`,i.sql`varchar(35)`,e=>e.notNull()).addPrimaryKeyConstraint(`log_streams_pk`,[`id`]).execute();{let n=e.schema.createTable(`sessions`).addColumn(`id`,i.sql`varchar(26)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`user_id`,i.sql`varchar(255)`).addColumn(`device`,i.sql`text`,e=>e.notNull()).addColumn(`clients`,i.sql`text`,e=>e.notNull()).addColumn(`login_session_id`,i.sql`varchar(26)`).addColumn(`created_at_ts`,i.sql`bigint`).addColumn(`updated_at_ts`,i.sql`bigint`).addColumn(`expires_at_ts`,i.sql`bigint`).addColumn(`idle_expires_at_ts`,i.sql`bigint`).addColumn(`authenticated_at_ts`,i.sql`bigint`).addColumn(`last_interaction_at_ts`,i.sql`bigint`).addColumn(`used_at_ts`,i.sql`bigint`).addColumn(`revoked_at_ts`,i.sql`bigint`).addPrimaryKeyConstraint(`sessions_pk`,[`tenant_id`,`id`]);t&&(n=Z(n,`sessions`)),await n.execute()}{let n=e.schema.createTable(`login_sessions`).addColumn(`id`,i.sql`varchar(26)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`session_id`,i.sql`varchar(26)`).addColumn(`csrf_token`,i.sql`varchar(26)`).addColumn(`authorization_url`,i.sql`text`).addColumn(`ip`,i.sql`varchar(39)`).addColumn(`useragent`,i.sql`text`).addColumn(`auth0Client`,i.sql`varchar(255)`).addColumn(`state`,i.sql`varchar(50)`,e=>e.defaultTo(`pending`)).addColumn(`state_data`,i.sql`text`).addColumn(`failure_reason`,i.sql`text`).addColumn(`user_id`,i.sql`varchar(255)`).addColumn(`created_at_ts`,i.sql`bigint`).addColumn(`updated_at_ts`,i.sql`bigint`).addColumn(`expires_at_ts`,i.sql`bigint`).addColumn(`auth_connection`,i.sql`varchar(255)`).addColumn(`auth_strategy_strategy`,i.sql`varchar(64)`).addColumn(`auth_strategy_strategy_type`,i.sql`varchar(64)`).addColumn(`authenticated_at`,i.sql`varchar(35)`).addColumn(`auth_params`,i.sql`text`).addPrimaryKeyConstraint(`login_sessions_pk`,[`tenant_id`,`id`]);t&&(n=Z(n,`login_sessions`)),await n.execute()}await e.schema.createTable(`logs`).addColumn(`log_id`,i.sql`varchar(21)`,e=>e.notNull()).addColumn(`category`,i.sql`varchar(255)`).addColumn(`tenant_id`,i.sql`varchar(64)`).addColumn(`user_id`,i.sql`varchar(64)`).addColumn(`ip`,i.sql`varchar(255)`).addColumn(`type`,i.sql`varchar(8)`,e=>e.notNull()).addColumn(`date`,i.sql`varchar(25)`,e=>e.notNull()).addColumn(`client_id`,i.sql`varchar(255)`).addColumn(`client_name`,i.sql`varchar(255)`).addColumn(`user_agent`,i.sql`varchar(255)`).addColumn(`description`,i.sql`varchar(255)`).addColumn(`details`,i.sql`varchar(2048)`).addColumn(`isMobile`,i.sql`int`).addColumn(`user_name`,i.sql`varchar(255)`).addColumn(`connection`,i.sql`varchar(255)`).addColumn(`connection_id`,i.sql`varchar(255)`).addColumn(`audience`,i.sql`varchar(255)`).addColumn(`scope`,i.sql`varchar(255)`).addColumn(`strategy`,i.sql`varchar(255)`).addColumn(`strategy_type`,i.sql`varchar(255)`).addColumn(`hostname`,i.sql`varchar(255)`).addColumn(`auth0_client`,i.sql`varchar(8192)`).addColumn(`session_connection`,i.sql`varchar(255)`).addColumn(`country_code`,i.sql`varchar(2)`).addColumn(`country_code3`,i.sql`varchar(3)`).addColumn(`country_name`,i.sql`varchar(255)`).addColumn(`city_name`,i.sql`varchar(255)`).addColumn(`latitude`,i.sql`varchar(255)`).addColumn(`longitude`,i.sql`varchar(255)`).addColumn(`time_zone`,i.sql`varchar(255)`).addColumn(`continent_code`,i.sql`varchar(2)`).addPrimaryKeyConstraint(`logs_pk`,[`log_id`]).execute(),await e.schema.createTable(`migration_sources`).addColumn(`id`,i.sql`varchar(64)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`name`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`provider`,i.sql`varchar(32)`,e=>e.notNull()).addColumn(`connection`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`enabled`,i.sql`tinyint(1)`,e=>e.notNull()).addColumn(`credentials`,i.sql`text`,e=>e.notNull()).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`updated_at`,i.sql`varchar(35)`,e=>e.notNull()).addPrimaryKeyConstraint(`migration_sources_pk`,[`id`]).execute();{let n=e.schema.createTable(`migrations`).addColumn(`id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`provider`,i.sql`varchar(255)`).addColumn(`client_id`,i.sql`varchar(255)`).addColumn(`origin`,i.sql`varchar(255)`).addColumn(`domain`,i.sql`varchar(255)`).addColumn(`created_at`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`updated_at`,i.sql`varchar(255)`,e=>e.notNull()).addPrimaryKeyConstraint(`migrations_pk`,[`id`]);t&&(n=Z(n,`migrations`)),await n.execute()}await e.schema.createTable(`organizations`).addColumn(`id`,i.sql`varchar(256)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(256)`,e=>e.notNull()).addColumn(`name`,i.sql`varchar(256)`,e=>e.notNull()).addColumn(`display_name`,i.sql`varchar(256)`).addColumn(`branding`,i.sql`text`).addColumn(`metadata`,i.sql`text`).addColumn(`enabled_connections`,i.sql`text`).addColumn(`token_quota`,i.sql`text`).addColumn(`created_at`,i.sql`varchar(256)`,e=>e.notNull()).addColumn(`updated_at`,i.sql`varchar(256)`,e=>e.notNull()).addPrimaryKeyConstraint(`organizations_pk`,[`id`]).execute();{let n=e.schema.createTable(`organization_connections`).addColumn(`tenant_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`organization_id`,i.sql`varchar(21)`,e=>e.notNull()).addColumn(`connection_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`assign_membership_on_login`,i.sql`tinyint(1)`,e=>e.notNull().defaultTo(0)).addColumn(`show_as_button`,i.sql`tinyint(1)`,e=>e.notNull().defaultTo(1)).addColumn(`is_signup_enabled`,i.sql`tinyint(1)`,e=>e.notNull().defaultTo(1)).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`updated_at`,i.sql`varchar(35)`,e=>e.notNull());t&&(n=Z(n,`organization_connections`)),await n.execute()}await e.schema.createTable(`outbox_events`).addColumn(`id`,i.sql`varchar(21)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`event_type`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`log_type`,i.sql`varchar(64)`,e=>e.notNull()).addColumn(`aggregate_type`,i.sql`varchar(64)`,e=>e.notNull()).addColumn(`aggregate_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`payload`,i.sql`text`,e=>e.notNull()).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`processed_at`,i.sql`varchar(35)`).addColumn(`retry_count`,i.sql`int`,e=>e.notNull().defaultTo(0)).addColumn(`next_retry_at`,i.sql`varchar(35)`).addColumn(`error`,i.sql`text`).addColumn(`claimed_by`,i.sql`varchar(64)`).addColumn(`claim_expires_at`,i.sql`varchar(35)`).addColumn(`dead_lettered_at`,i.sql`varchar(35)`).addColumn(`final_error`,i.sql`text`).addPrimaryKeyConstraint(`outbox_events_pk`,[`id`]).execute();{let n=e.schema.createTable(`passwords`).addColumn(`id`,i.sql`varchar(21)`,e=>e.notNull()).addColumn(`user_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`password`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`algorithm`,i.sql`varchar(255)`,e=>e.notNull().defaultTo(`bcrypt`)).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`updated_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`is_current`,i.sql`int`,e=>e.notNull().defaultTo(1)).addPrimaryKeyConstraint(`passwords_pk`,[`id`]);t&&(n=Z(n,`passwords`)),await n.execute()}await e.schema.createTable(`prompt_settings`).addColumn(`tenant_id`,i.sql`varchar(64)`,e=>e.notNull()).addColumn(`universal_login_experience`,i.sql`varchar(16)`,e=>e.notNull().defaultTo(`new`)).addColumn(`identifier_first`,i.sql`tinyint(1)`,e=>e.notNull().defaultTo(1)).addColumn(`password_first`,i.sql`tinyint(1)`,e=>e.notNull().defaultTo(0)).addColumn(`webauthn_platform_first_factor`,i.sql`tinyint(1)`,e=>e.notNull().defaultTo(0)).addPrimaryKeyConstraint(`prompt_settings_pk`,[`tenant_id`]).execute(),await e.schema.createTable(`proxy_routes`).addColumn(`id`,i.sql`varchar(64)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`custom_domain_id`,i.sql`varchar(256)`,e=>e.notNull()).addColumn(`priority`,i.sql`int`,e=>e.notNull().defaultTo(100)).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`updated_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`match`,i.sql`varchar(2048)`,e=>e.notNull().defaultTo(`{"path":"/*"}`)).addColumn(`handlers`,i.sql`text`,e=>e.notNull()).addPrimaryKeyConstraint(`proxy_routes_pk`,[`id`]).execute();{let n=e.schema.createTable(`refresh_tokens`).addColumn(`id`,i.sql`varchar(26)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`client_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`user_id`,i.sql`varchar(255)`).addColumn(`resource_servers`,i.sql`text`,e=>e.notNull()).addColumn(`device`,i.sql`text`,e=>e.notNull()).addColumn(`rotating`,i.sql`tinyint(1)`,e=>e.notNull()).addColumn(`created_at_ts`,i.sql`bigint`).addColumn(`expires_at_ts`,i.sql`bigint`).addColumn(`idle_expires_at_ts`,i.sql`bigint`).addColumn(`last_exchanged_at_ts`,i.sql`bigint`).addColumn(`login_id`,i.sql`varchar(26)`,e=>e.notNull()).addColumn(`revoked_at_ts`,i.sql`bigint`).addColumn(`token_lookup`,i.sql`varchar(16)`).addColumn(`token_hash`,i.sql`varchar(64)`).addColumn(`family_id`,i.sql`varchar(26)`).addColumn(`rotated_to`,i.sql`varchar(26)`).addColumn(`rotated_at_ts`,i.sql`bigint`).addPrimaryKeyConstraint(`refresh_tokens_pk`,[`tenant_id`,`id`]);t&&(n=Z(n,`refresh_tokens`)),await n.execute()}await e.schema.createTable(`resource_servers`).addColumn(`id`,i.sql`varchar(21)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`identifier`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`name`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`scopes`,i.sql`text`).addColumn(`signing_alg`,i.sql`varchar(64)`).addColumn(`signing_secret`,i.sql`varchar(2048)`).addColumn(`token_lifetime`,i.sql`int`).addColumn(`token_lifetime_for_web`,i.sql`int`).addColumn(`skip_consent_for_verifiable_first_party_clients`,i.sql`int`).addColumn(`allow_offline_access`,i.sql`int`).addColumn(`verification_key`,i.sql`varchar(4096)`).addColumn(`options`,i.sql`varchar(4096)`).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`updated_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`is_system`,i.sql`int`,e=>e.notNull().defaultTo(0)).addColumn(`metadata`,i.sql`varchar(4096)`).addPrimaryKeyConstraint(`resource_servers_pk`,[`tenant_id`,`id`]).execute(),await e.schema.createTable(`role_permissions`).addColumn(`tenant_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`role_id`,i.sql`varchar(21)`,e=>e.notNull()).addColumn(`resource_server_identifier`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`permission_name`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addPrimaryKeyConstraint(`role_permissions_pk`,[`tenant_id`,`role_id`,`resource_server_identifier`,`permission_name`]).execute(),await e.schema.createTable(`roles`).addColumn(`id`,i.sql`varchar(21)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`name`,i.sql`varchar(50)`,e=>e.notNull()).addColumn(`description`,i.sql`varchar(255)`).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`updated_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`is_system`,i.sql`int`,e=>e.notNull().defaultTo(0)).addColumn(`metadata`,i.sql`varchar(4096)`).addPrimaryKeyConstraint(`roles_pk`,[`tenant_id`,`id`]).execute(),await e.schema.createTable(`rollouts`).addColumn(`id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`kind`,i.sql`varchar(32)`,e=>e.notNull()).addColumn(`status`,i.sql`varchar(32)`,e=>e.notNull()).addColumn(`target_worker_version`,i.sql`varchar(255)`).addColumn(`target_database_version`,i.sql`varchar(255)`).addColumn(`wave_size`,i.sql`int`,e=>e.notNull().defaultTo(10)).addColumn(`canary_tenant_ids`,i.sql`text`).addColumn(`filter`,i.sql`text`).addColumn(`initiated_by`,i.sql`varchar(255)`).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`updated_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`finished_at`,i.sql`varchar(35)`).addPrimaryKeyConstraint(`rollouts_pk`,[`id`]).execute(),await e.schema.createTable(`tenant_operations`).addColumn(`id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(255)`).addColumn(`rollout_id`,i.sql`varchar(255)`).addColumn(`kind`,i.sql`varchar(32)`,e=>e.notNull()).addColumn(`status`,i.sql`varchar(32)`,e=>e.notNull()).addColumn(`current_step`,i.sql`varchar(255)`).addColumn(`engine`,i.sql`varchar(64)`,e=>e.notNull()).addColumn(`engine_instance_id`,i.sql`varchar(100)`).addColumn(`target_worker_version`,i.sql`varchar(255)`).addColumn(`target_database_version`,i.sql`varchar(255)`).addColumn(`error`,i.sql`text`).addColumn(`initiated_by`,i.sql`varchar(255)`).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`updated_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`finished_at`,i.sql`varchar(35)`).addPrimaryKeyConstraint(`tenant_operations_pk`,[`id`]).execute();{let n=e.schema.createTable(`tenant_operation_events`).addColumn(`id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`operation_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`step`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`outcome`,i.sql`varchar(32)`,e=>e.notNull()).addColumn(`detail`,i.sql`text`).addColumn(`attempt`,i.sql`int`,e=>e.notNull().defaultTo(1)).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addPrimaryKeyConstraint(`tenant_operation_events_pk`,[`id`]);t&&(n=Z(n,`tenant_operation_events`)),await n.execute()}{let n=e.schema.createTable(`themes`).addColumn(`tenant_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`themeId`,i.sql`varchar(21)`,e=>e.notNull()).addColumn(`displayName`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`colors_primary_button_label`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`colors_primary_button`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`colors_secondary_button_border`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`colors_secondary_button_label`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`colors_base_focus_color`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`colors_base_hover_color`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`colors_body_text`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`colors_captcha_widget_theme`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`colors_error`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`colors_header`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`colors_icons`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`colors_input_background`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`colors_input_border`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`colors_input_filled_text`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`colors_input_labels_placeholders`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`colors_links_focused_components`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`colors_success`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`colors_widget_background`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`colors_widget_border`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`borders_button_border_radius`,i.sql`int`,e=>e.notNull()).addColumn(`borders_button_border_weight`,i.sql`int`,e=>e.notNull()).addColumn(`borders_buttons_style`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`borders_input_border_radius`,i.sql`int`,e=>e.notNull()).addColumn(`borders_input_border_weight`,i.sql`int`,e=>e.notNull()).addColumn(`borders_inputs_style`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`borders_show_widget_shadow`,i.sql`tinyint(1)`,e=>e.notNull()).addColumn(`borders_widget_border_weight`,i.sql`int`,e=>e.notNull()).addColumn(`borders_widget_corner_radius`,i.sql`int`,e=>e.notNull()).addColumn(`fonts_body_text_bold`,i.sql`int`,e=>e.notNull()).addColumn(`fonts_body_text_size`,i.sql`int`,e=>e.notNull()).addColumn(`fonts_buttons_text_bold`,i.sql`int`,e=>e.notNull()).addColumn(`fonts_buttons_text_size`,i.sql`int`,e=>e.notNull()).addColumn(`fonts_font_url`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`fonts_input_labels_bold`,i.sql`int`,e=>e.notNull()).addColumn(`fonts_input_labels_size`,i.sql`int`,e=>e.notNull()).addColumn(`fonts_links_bold`,i.sql`tinyint(1)`,e=>e.notNull()).addColumn(`fonts_links_size`,i.sql`int`,e=>e.notNull()).addColumn(`fonts_links_style`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`fonts_reference_text_size`,i.sql`int`,e=>e.notNull()).addColumn(`fonts_subtitle_bold`,i.sql`tinyint(1)`,e=>e.notNull()).addColumn(`fonts_subtitle_size`,i.sql`int`,e=>e.notNull()).addColumn(`fonts_title_bold`,i.sql`tinyint(1)`,e=>e.notNull()).addColumn(`fonts_title_size`,i.sql`int`,e=>e.notNull()).addColumn(`page_background_background_color`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`page_background_background_image_url`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`page_background_page_layout`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`widget_header_text_alignment`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`widget_logo_height`,i.sql`int`,e=>e.notNull()).addColumn(`widget_logo_position`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`widget_logo_url`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`widget_social_buttons_layout`,i.sql`varchar(24)`,e=>e.notNull()).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`updated_at`,i.sql`varchar(35)`,e=>e.notNull()).addPrimaryKeyConstraint(`themes_pk`,[`tenant_id`,`themeId`]);t&&(n=Z(n,`themes`)),await n.execute()}{let n=e.schema.createTable(`universal_login_templates`).addColumn(`tenant_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`body`,i.sql`text`,e=>e.notNull()).addColumn(`updated_at_ts`,i.sql`bigint`,e=>e.notNull()).addColumn(`created_at_ts`,i.sql`bigint`,e=>e.notNull()).addPrimaryKeyConstraint(`universal_login_templates_pk`,[`tenant_id`]);t&&(n=Z(n,`universal_login_templates`)),await n.execute()}{let n=e.schema.createTable(`user_activity`).addColumn(`tenant_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`user_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`last_login`,i.sql`varchar(35)`).addColumn(`last_ip`,i.sql`varchar(45)`).addColumn(`login_count`,i.sql`int`,e=>e.notNull().defaultTo(0)).addColumn(`failed_logins`,i.sql`text`).addColumn(`last_password_reset`,i.sql`varchar(35)`).addPrimaryKeyConstraint(`user_activity_pk`,[`tenant_id`,`user_id`]);t&&(n=Z(n,`user_activity`)),await n.execute()}{let n=e.schema.createTable(`user_organizations`).addColumn(`id`,i.sql`varchar(256)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(256)`,e=>e.notNull()).addColumn(`user_id`,i.sql`varchar(256)`,e=>e.notNull()).addColumn(`organization_id`,i.sql`varchar(256)`,e=>e.notNull()).addColumn(`created_at`,i.sql`varchar(256)`,e=>e.notNull()).addColumn(`updated_at`,i.sql`varchar(256)`,e=>e.notNull()).addPrimaryKeyConstraint(`user_organizations_pk`,[`id`]);t&&(n=Z(n,`user_organizations`)),await n.execute()}if(await e.schema.createTable(`user_permissions`).addColumn(`tenant_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`user_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`resource_server_identifier`,i.sql`varchar(100)`,e=>e.notNull()).addColumn(`permission_name`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`organization_id`,i.sql`varchar(21)`,e=>e.notNull().defaultTo(``)).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addPrimaryKeyConstraint(`user_permissions_pk`,[`tenant_id`,`user_id`,`resource_server_identifier`,`permission_name`,`organization_id`]).execute(),await e.schema.createTable(`user_roles`).addColumn(`tenant_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`user_id`,i.sql`varchar(191)`,e=>e.notNull()).addColumn(`role_id`,i.sql`varchar(21)`,e=>e.notNull()).addColumn(`organization_id`,i.sql`varchar(191)`,e=>e.notNull().defaultTo(``)).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addPrimaryKeyConstraint(`user_roles_pk`,[`tenant_id`,`user_id`,`role_id`,`organization_id`]).execute(),await e.schema.createIndex(`idx_action_executions_tenant`).on(`action_executions`).columns([`tenant_id`,`id`]).execute(),await e.schema.createIndex(`idx_action_versions_action`).on(`action_versions`).columns([`tenant_id`,`action_id`]).execute(),await e.schema.createIndex(`uniq_action_versions_action_number`).on(`action_versions`).columns([`tenant_id`,`action_id`,`number`]).unique().execute(),await e.schema.createIndex(`idx_actions_tenant`).on(`actions`).columns([`tenant_id`]).execute(),await e.schema.createIndex(`authentication_methods_credential_id_idx`).on(`authentication_methods`).columns([`credential_id`]).execute(),await e.schema.createIndex(`mfa_enrollments_tenant_user_idx`).on(`authentication_methods`).columns([`tenant_id`,`user_id`]).execute(),await e.schema.createIndex(`idx_client_grants_audience`).on(`client_grants`).columns([`audience`]).execute(),await e.schema.createIndex(`uq_client_grants_tenant_client_audience`).on(`client_grants`).columns([`tenant_id`,`client_id`,`audience`]).unique().execute(),await e.schema.createIndex(`idx_client_registration_tokens_client`).on(`client_registration_tokens`).columns([`tenant_id`,`client_id`]).execute(),await e.schema.createIndex(`idx_client_registration_tokens_hash`).on(`client_registration_tokens`).columns([`tenant_id`,`token_hash`]).unique().execute(),await e.schema.createIndex(`idx_clients_owner_user_id`).on(`clients`).columns([`tenant_id`,`owner_user_id`]).execute(),await e.schema.createIndex(`control_plane_comm_keys_tenant_id_created_at_idx`).on(`control_plane_comm_keys`).columns([`tenant_id`,`created_at`]).execute(),await e.schema.createIndex(`flows_tenant_id_idx`).on(`flows`).columns([`tenant_id`]).execute(),await e.schema.createIndex(`forms_tenant_id_idx`).on(`forms`).columns([`tenant_id`]).execute(),await e.schema.createIndex(`grants_natural_key_idx`).on(`grants`).columns([`tenant_id`,`user_id`,`client_id`,`audience`]).unique().execute(),await e.schema.createIndex(`grants_tenant_user_idx`).on(`grants`).columns([`tenant_id`,`user_id`]).execute(),await e.schema.createIndex(`idx_hook_code_tenant`).on(`hook_code`).columns([`tenant_id`]).execute(),await e.schema.createIndex(`idx_invites_expires_at`).on(`invites`).columns([`expires_at`]).execute(),await e.schema.createIndex(`idx_invites_organization_id`).on(`invites`).columns([`organization_id`]).execute(),await e.schema.createIndex(`idx_invites_tenant_created`).on(`invites`).columns([`tenant_id`,`created_at`]).execute(),await e.schema.createIndex(`idx_log_streams_tenant_id`).on(`log_streams`).columns([`tenant_id`]).execute(),await e.schema.createIndex(`idx_login_sessions_expires_at_ts`).on(`login_sessions`).columns([`expires_at_ts`]).execute(),await e.schema.createIndex(`login_sessions_id_index`).on(`login_sessions`).columns([`id`]).execute(),await e.schema.createIndex(`login_sessions_state_idx`).on(`login_sessions`).columns([`state`]).execute(),await e.schema.createIndex(`login_sessions_state_updated_idx`).on(`login_sessions`).columns([`state`]).execute(),await e.schema.createIndex(`login_sessions_tenant_user_idx`).on(`login_sessions`).columns([`tenant_id`,`user_id`]).execute(),await e.schema.createIndex(`logs_date`).on(`logs`).columns([`date`]).execute(),await e.schema.createIndex(`logs_tenant_id`).on(`logs`).columns([`tenant_id`]).execute(),await e.schema.createIndex(`logs_user_id`).on(`logs`).columns([`user_id`]).execute(),await e.schema.createIndex(`idx_migration_sources_tenant_id`).on(`migration_sources`).columns([`tenant_id`]).execute(),await e.schema.createIndex(`idx_organization_connections_tenant_connection`).on(`organization_connections`).columns([`tenant_id`,`connection_id`]).execute(),await e.schema.createIndex(`idx_organization_connections_tenant_org`).on(`organization_connections`).columns([`tenant_id`,`organization_id`]).execute(),await e.schema.createIndex(`organization_connections_unique`).on(`organization_connections`).columns([`tenant_id`,`organization_id`,`connection_id`]).unique().execute(),await e.schema.createIndex(`idx_organizations_tenant_name_unique`).on(`organizations`).columns([`tenant_id`,`name`]).unique().execute(),await e.schema.createIndex(`idx_outbox_claim`).on(`outbox_events`).columns([`processed_at`,`claim_expires_at`,`next_retry_at`,`created_at`]).execute(),await e.schema.createIndex(`idx_outbox_events_tenant_dead_lettered`).on(`outbox_events`).columns([`tenant_id`,`dead_lettered_at`]).execute(),await e.schema.createIndex(`idx_outbox_tenant_type`).on(`outbox_events`).columns([`tenant_id`,`event_type`,`created_at`]).execute(),await e.schema.createIndex(`idx_outbox_unprocessed`).on(`outbox_events`).columns([`processed_at`,`created_at`]).execute(),await e.schema.createIndex(`proxy_routes_custom_domain_id_idx`).on(`proxy_routes`).columns([`custom_domain_id`]).execute(),await e.schema.createIndex(`proxy_routes_tenant_id_idx`).on(`proxy_routes`).columns([`tenant_id`]).execute(),await e.schema.createIndex(`idx_refresh_tokens_expires_at_ts`).on(`refresh_tokens`).columns([`expires_at_ts`]).execute(),await e.schema.createIndex(`idx_refresh_tokens_family_id`).on(`refresh_tokens`).columns([`tenant_id`,`family_id`]).execute(),await e.schema.createIndex(`idx_refresh_tokens_idle_expires_at_ts`).on(`refresh_tokens`).columns([`idle_expires_at_ts`]).execute(),await e.schema.createIndex(`idx_refresh_tokens_login_id`).on(`refresh_tokens`).columns([`login_id`]).execute(),await e.schema.createIndex(`idx_refresh_tokens_token_lookup`).on(`refresh_tokens`).columns([`tenant_id`,`token_lookup`]).execute(),await e.schema.createIndex(`idx_refresh_tokens_user_id`).on(`refresh_tokens`).columns([`tenant_id`,`user_id`]).execute(),await e.schema.createIndex(`resource_servers_tenant_identifier_uq`).on(`resource_servers`).columns([`tenant_id`,`identifier`]).unique().execute(),await e.schema.createIndex(`role_permissions_permission_fk`).on(`role_permissions`).columns([`tenant_id`,`resource_server_identifier`,`permission_name`]).execute(),await e.schema.createIndex(`roles_tenant_name_uq`).on(`roles`).columns([`tenant_id`,`name`]).unique().execute(),await e.schema.createIndex(`idx_sessions_expires_at_ts`).on(`sessions`).columns([`expires_at_ts`]).execute(),await e.schema.createIndex(`idx_sessions_idle_expires_at_ts`).on(`sessions`).columns([`idle_expires_at_ts`]).execute(),await e.schema.createIndex(`idx_sessions_user_id`).on(`sessions`).columns([`tenant_id`,`user_id`]).execute(),await e.schema.createIndex(`tenant_operation_events_operation_id_created_at_idx`).on(`tenant_operation_events`).columns([`operation_id`,`created_at`]).execute(),await e.schema.createIndex(`tenant_operations_rollout_id_idx`).on(`tenant_operations`).columns([`rollout_id`]).execute(),await e.schema.createIndex(`tenant_operations_status_idx`).on(`tenant_operations`).columns([`status`]).execute(),await e.schema.createIndex(`tenant_operations_tenant_id_created_at_idx`).on(`tenant_operations`).columns([`tenant_id`,`created_at`]).execute(),await e.schema.createIndex(`idx_user_organizations_organization_id`).on(`user_organizations`).columns([`organization_id`]).execute(),await e.schema.createIndex(`idx_user_organizations_unique`).on(`user_organizations`).columns([`tenant_id`,`user_id`,`organization_id`]).unique().execute(),await e.schema.createIndex(`idx_user_organizations_user_id`).on(`user_organizations`).columns([`user_id`]).execute(),await e.schema.createIndex(`user_permissions_organization_fk`).on(`user_permissions`).columns([`organization_id`]).execute(),await e.schema.createIndex(`user_permissions_permission_fk`).on(`user_permissions`).columns([`tenant_id`,`resource_server_identifier`,`permission_name`]).execute(),await e.schema.createIndex(`user_permissions_user_fk`).on(`user_permissions`).columns([`tenant_id`,`user_id`]).execute(),await e.schema.createIndex(`user_roles_organization_fk`).on(`user_roles`).columns([`organization_id`]).execute(),await e.schema.createIndex(`user_roles_role_fk`).on(`user_roles`).columns([`tenant_id`,`role_id`]).execute(),await e.schema.createIndex(`user_roles_user_fk`).on(`user_roles`).columns([`tenant_id`,`user_id`]).execute(),await e.schema.createIndex(`unique_email_provider`).on(`users`).columns([`email`,`provider`,`tenant_id`]).unique().execute(),await e.schema.createIndex(`unique_username_provider`).on(`users`).columns([`username`,`provider`,`tenant_id`]).unique().execute(),await e.schema.createIndex(`users_linked_to_index`).on(`users`).columns([`linked_to`]).execute(),await e.schema.createIndex(`users_name_index`).on(`users`).columns([`name`]).execute(),await e.schema.createIndex(`users_phone_tenant_provider_index`).on(`users`).columns([`tenant_id`,`phone_number`,`provider`]).execute(),await e.schema.createIndex(`users_user_id_tenant_id`).on(`users`).columns([`user_id`,`tenant_id`]).execute(),t&&(await e.schema.createIndex(`FK_codes_user_id_tenant_id_constraint`).on(`codes`).columns([`user_id`,`tenant_id`]).execute(),await e.schema.createIndex(`grants_user_id_constraint`).on(`grants`).columns([`user_id`,`tenant_id`]).execute(),await e.schema.createIndex(`login_sessions_session_fk`).on(`login_sessions`).columns([`tenant_id`,`session_id`]).execute(),await e.schema.createIndex(`organization_connections_organization_fk`).on(`organization_connections`).columns([`organization_id`]).execute(),await e.schema.createIndex(`password_history_user_id_tenant_id_constraint`).on(`passwords`).columns([`user_id`,`tenant_id`]).execute(),await e.schema.createIndex(`refresh_tokens_client_fk`).on(`refresh_tokens`).columns([`tenant_id`,`client_id`]).execute(),await e.schema.createIndex(`sessions_user_fk`).on(`sessions`).columns([`user_id`,`tenant_id`]).execute(),await e.schema.createIndex(`user_activity_user_id_constraint`).on(`user_activity`).columns([`user_id`,`tenant_id`]).execute()),!t)for(let t of Va)await e.schema.alterTable(t.table).addForeignKeyConstraint(t.name,t.columns,t.references,t.referencedColumns,e=>{let n=e;return t.onDelete&&(n=n.onDelete(t.onDelete)),t.onUpdate&&(n=n.onUpdate(t.onUpdate)),n}).execute()}async function Wa(e){await e.schema.dropTable(`user_roles`).ifExists().execute(),await e.schema.dropTable(`user_permissions`).ifExists().execute(),await e.schema.dropTable(`user_organizations`).ifExists().execute(),await e.schema.dropTable(`user_activity`).ifExists().execute(),await e.schema.dropTable(`universal_login_templates`).ifExists().execute(),await e.schema.dropTable(`themes`).ifExists().execute(),await e.schema.dropTable(`tenant_operation_events`).ifExists().execute(),await e.schema.dropTable(`tenant_operations`).ifExists().execute(),await e.schema.dropTable(`rollouts`).ifExists().execute(),await e.schema.dropTable(`roles`).ifExists().execute(),await e.schema.dropTable(`role_permissions`).ifExists().execute(),await e.schema.dropTable(`resource_servers`).ifExists().execute(),await e.schema.dropTable(`refresh_tokens`).ifExists().execute(),await e.schema.dropTable(`proxy_routes`).ifExists().execute(),await e.schema.dropTable(`prompt_settings`).ifExists().execute(),await e.schema.dropTable(`passwords`).ifExists().execute(),await e.schema.dropTable(`outbox_events`).ifExists().execute(),await e.schema.dropTable(`organization_connections`).ifExists().execute(),await e.schema.dropTable(`organizations`).ifExists().execute(),await e.schema.dropTable(`migrations`).ifExists().execute(),await e.schema.dropTable(`migration_sources`).ifExists().execute(),await e.schema.dropTable(`logs`).ifExists().execute(),await e.schema.dropTable(`login_sessions`).ifExists().execute(),await e.schema.dropTable(`sessions`).ifExists().execute(),await e.schema.dropTable(`log_streams`).ifExists().execute(),await e.schema.dropTable(`keys`).ifExists().execute(),await e.schema.dropTable(`invites`).ifExists().execute(),await e.schema.dropTable(`hooks`).ifExists().execute(),await e.schema.dropTable(`hook_code`).ifExists().execute(),await e.schema.dropTable(`grants`).ifExists().execute(),await e.schema.dropTable(`forms`).ifExists().execute(),await e.schema.dropTable(`flows`).ifExists().execute(),await e.schema.dropTable(`email_templates`).ifExists().execute(),await e.schema.dropTable(`email_providers`).ifExists().execute(),await e.schema.dropTable(`custom_text`).ifExists().execute(),await e.schema.dropTable(`custom_domains`).ifExists().execute(),await e.schema.dropTable(`control_plane_comm_keys`).ifExists().execute(),await e.schema.dropTable(`connections`).ifExists().execute(),await e.schema.dropTable(`codes`).ifExists().execute(),await e.schema.dropTable(`users`).ifExists().execute(),await e.schema.dropTable(`client_registration_tokens`).ifExists().execute(),await e.schema.dropTable(`client_grants`).ifExists().execute(),await e.schema.dropTable(`clients`).ifExists().execute(),await e.schema.dropTable(`branding`).ifExists().execute(),await e.schema.dropTable(`authentication_methods`).ifExists().execute(),await e.schema.dropTable(`actions`).ifExists().execute(),await e.schema.dropTable(`action_versions`).ifExists().execute(),await e.schema.dropTable(`action_executions`).ifExists().execute(),await e.schema.dropTable(`tenants`).ifExists().execute()}var Ga=!1;function Ka(e){Ga=e}function Q(...e){Ga&&console.log(...e)}function qa(...e){console.warn(...e)}var Ja=t({down:()=>io,up:()=>to}),$=5e4,Ya=500;async function Xa(e){try{return await i.sql`SELECT VERSION()`.execute(e),`mysql`}catch{return`sqlite`}}async function Za(e,t,n){try{await e.schema.alterTable(t).addColumn(n,`bigint`).execute()}catch(e){if(e instanceof Error&&(e.message.includes(`1060`)||e.message.includes(`duplicate column`))){Q(` Column ${t}.${n} already exists, skipping`);return}throw e}}async function Qa(e,t,n,r){try{await e.schema.createIndex(t).on(n).column(r).execute()}catch(e){if(e instanceof Error&&(e.message.includes(`1061`)||e.message.toLowerCase().includes(`already exists`))){Q(` Index ${t} already exists, skipping`);return}throw e}}async function $a(e,t){let n=new Date().toISOString(),r=0;if(t===`sqlite`){let t=await e.deleteFrom(`codes`).where(`expires_at`,`<`,n).executeTakeFirst();r=Number(t.numDeletedRows)}else{let t=$;for(;t>=$;){let i=await e.deleteFrom(`codes`).where(`expires_at`,`<`,n).limit($).executeTakeFirst();t=Number(i.numDeletedRows),r+=t,t>0&&Q(` Pruned ${r} expired codes row(s)...`)}}return r}async function eo(e){let t=0;for(;;){let n=await e.selectFrom(`codes`).select([`code_id`,`code_type`,`tenant_id`,`expires_at`]).where(`expires_at_ts`,`is`,null).limit(Ya).execute();if(n.length===0)break;for(let t of n){let n=Date.parse(t.expires_at);await e.updateTable(`codes`).set({expires_at_ts:Number.isNaN(n)?0:n}).where(`code_id`,`=`,t.code_id).where(`code_type`,`=`,t.code_type).where(`tenant_id`,`=`,t.tenant_id).execute()}if(t+=n.length,n.length<Ya)break}return t}async function to(e){let t=await Xa(e);try{let n=await $a(e,t);Q(n===0?` No expired codes to prune`:` Pruned ${n} expired codes row(s) total`)}catch(e){qa(` Warning: Could not prune expired codes: ${e instanceof Error?e.message:String(e)}`)}await Za(e,`codes`,`expires_at_ts`),await Qa(e,`idx_codes_expires_at_ts`,`codes`,`expires_at_ts`);try{let t=await eo(e);Q(t===0?` No codes rows needed an expires_at_ts backfill`:` Backfilled expires_at_ts for ${t} codes row(s)`)}catch(e){qa(` Warning: Could not backfill codes.expires_at_ts: ${e instanceof Error?e.message:String(e)}`)}}async function no(e,t,n){try{await e.schema.dropIndex(t).on(n).execute()}catch(e){if(e instanceof Error&&e.message.includes(`1091`))return;throw e}}async function ro(e,t,n){try{await e.schema.alterTable(t).dropColumn(n).execute()}catch(e){if(e instanceof Error&&e.message.includes(`1091`))return;throw e}}async function io(e){await no(e,`idx_codes_expires_at_ts`,`codes`),await ro(e,`codes`,`expires_at_ts`)}var ao=t({down:()=>so,up:()=>oo});async function oo(e){await e.schema.createTable(`scim_configurations`).addColumn(`connection_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`user_id_attribute`,i.sql`varchar(255)`,e=>e.notNull().defaultTo(`externalId`)).addColumn(`mapping`,i.sql`text`,e=>e.notNull()).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`updated_at`,i.sql`varchar(35)`,e=>e.notNull()).addPrimaryKeyConstraint(`scim_configurations_pk`,[`tenant_id`,`connection_id`]).execute(),await e.schema.createTable(`scim_tokens`).addColumn(`token_id`,i.sql`varchar(64)`,e=>e.notNull()).addColumn(`tenant_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`connection_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`token_hash`,i.sql`varchar(128)`,e=>e.notNull()).addColumn(`scopes`,i.sql`text`,e=>e.notNull()).addColumn(`valid_until`,i.sql`varchar(35)`).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addColumn(`last_used_at`,i.sql`varchar(35)`).addPrimaryKeyConstraint(`scim_tokens_pk`,[`tenant_id`,`token_id`]).execute(),await e.schema.createIndex(`scim_tokens_tenant_connection_idx`).on(`scim_tokens`).columns([`tenant_id`,`connection_id`]).execute(),await e.schema.createIndex(`scim_tokens_tenant_hash_idx`).on(`scim_tokens`).columns([`tenant_id`,`token_hash`]).unique().execute(),await e.schema.createTable(`scim_external_ids`).addColumn(`tenant_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`connection_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`external_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`user_id`,i.sql`varchar(255)`,e=>e.notNull()).addColumn(`created_at`,i.sql`varchar(35)`,e=>e.notNull()).addPrimaryKeyConstraint(`scim_external_ids_pk`,[`tenant_id`,`connection_id`,`user_id`]).execute(),await e.schema.createIndex(`scim_external_ids_connection_external_idx`).on(`scim_external_ids`).columns([`tenant_id`,`connection_id`,`external_id`]).unique().execute()}async function so(e){await e.schema.dropTable(`scim_external_ids`).ifExists().execute(),await e.schema.dropTable(`scim_tokens`).ifExists().execute(),await e.schema.dropTable(`scim_configurations`).ifExists().execute()}var co=t({down:()=>po,up:()=>uo});async function lo(e,t,n){try{await e.schema.alterTable(t).addColumn(n,i.sql`tinyint(1)`).execute()}catch(e){if(e instanceof Error&&(e.message.includes(`1060`)||e.message.toLowerCase().includes(`duplicate column`)))return;throw e}}async function uo(e){await lo(e,`users`,`blocked`)}async function fo(e,t,n){try{await e.schema.alterTable(t).dropColumn(n).execute()}catch(e){if(e instanceof Error&&e.message.includes(`1091`))return;throw e}}async function po(e){await fo(e,`users`,`blocked`)}var mo=t({down:()=>vo,up:()=>go});async function ho(e,t,n){try{await e.schema.alterTable(t).addColumn(n,i.sql`tinyint(1)`).execute()}catch(e){if(e instanceof Error&&(e.message.includes(`1060`)||e.message.toLowerCase().includes(`duplicate column`)))return;throw e}}async function go(e){await ho(e,`prompt_settings`,`show_last_used_connection`)}async function _o(e,t,n){try{await e.schema.alterTable(t).dropColumn(n).execute()}catch(e){if(e instanceof Error&&e.message.includes(`1091`))return;throw e}}async function vo(e){await _o(e,`prompt_settings`,`show_last_used_connection`)}var yo=t({down:()=>So,up:()=>xo});async function bo(e,t,n,r){try{await e.schema.createIndex(t).on(n).column(r).execute()}catch(e){if(e instanceof Error&&(e.message.includes(`1061`)||e.message.toLowerCase().includes(`already exists`))){Q(` Index ${t} already exists, skipping`);return}throw e}}async function xo(e){await bo(e,`idx_action_executions_created_at_ts`,`action_executions`,`created_at_ts`)}async function So(e){try{await e.schema.dropIndex(`idx_action_executions_created_at_ts`).on(`action_executions`).execute()}catch(e){if(e instanceof Error&&e.message.includes(`1091`))return;throw e}}var Co=t({down:()=>Do,up:()=>To});async function wo(e,t,n,r){try{await e.schema.alterTable(t).addColumn(n,r).execute()}catch(e){if(e instanceof Error&&(e.message.includes(`1060`)||e.message.toLowerCase().includes(`duplicate column`)))return;throw e}}async function To(e){await wo(e,`hooks`,`page_id`,i.sql`varchar(64)`),await wo(e,`hooks`,`permission_required`,i.sql`varchar(255)`)}async function Eo(e,t,n){try{await e.schema.alterTable(t).dropColumn(n).execute()}catch(e){if(e instanceof Error&&e.message.includes(`1091`))return;throw e}}async function Do(e){await Eo(e,`hooks`,`permission_required`),await Eo(e,`hooks`,`page_id`)}var Oo={"2026-07-16T14:00:00_baseline":Ba,"2026-07-16T15:00:00_codes_expires_at_ts":Ja,"2026-08-04T12:00:00_scim_inbound_provisioning":ao,"2026-08-05T12:00:00_user_blocked":co,"2026-08-09T12:00:00_prompt_settings_last_used":mo,"2026-08-10T12:00:00_action_executions_created_at_index":yo,"2026-08-11T12:00:00_page_hooks":Co};async function ko(e,t=!1){Ka(t),t&&console.log(`migrating...`);let{error:n,results:r}=await new s.Migrator({db:e,provider:new za(Oo)}).migrateToLatest();if(r?.forEach(e=>{e.status===`Success`?t&&console.log(`migration "${e.migrationName}" was executed successfully`):e.status===`Error`&&console.error(`failed to execute migration "${e.migrationName}"`)}),n)throw console.error(`failed to migrate`),console.error(n),n}async function Ao(e,t=!1){Ka(t),t&&console.log(`migrating...`);let{error:n,results:r}=await new s.Migrator({db:e,provider:new za(Oo)}).migrateDown();if(r?.forEach(e=>{e.status===`Success`?t&&console.log(`migration "${e.migrationName}" was reverted successfully`):e.status===`Error`&&console.error(`failed to execute migration "${e.migrationName}"`)}),n)throw console.error(`failed to migrate`),console.error(n),n}function jo(e,t={useTransactions:!0}){let n={actions:oe(e),actionExecutions:fe(e),actionVersions:me(e),branding:Cn(e),clients:Rt(e),clientConnections:Wt(e),clientGrants:Zt(e),clientRegistrationTokens:ln(e),codes:Ct(e),connections:At(e),emailProviders:cr(e),emailTemplates:hr(e),customDomains:bn(e),flows:Ve(e),forms:Mr(e),hookCode:Rn(e),hooks:Nn(e),invites:Mi(e),keys:pn(e),loginSessions:$n(e),logs:rt(e),logStreams:fa(e),migrationSources:pa(e),authenticationMethods:ta(e),passwords:mt(e),promptSettings:rr(e),proxyRoutes:G(e),scimConfigurations:xa(e),scimTokens:Sa(e),scimExternalIds:wa(e),refreshTokens:wr(e),resourceServers:Rr(e),rolePermissions:Yr(e),grants:ti(e),userPermissions:oi(e),userRoles:fi(e),roles:Wr(e),sessions:lt(e),sessionCleanup:Er(e),tenants:Ye(e),tenantOperations:Ta(e),tenantOperationEvents:Ia(e),rollouts:Ra(e),themes:Un(e),universalLoginTemplates:Dn(e),customText:Ji(e),users:Ne(e),userActivity:Ae(e),organizations:vi(e),organizationConnections:yi(e),userOrganizations:Ei(e),stats:Ii(e),analytics:qi(e),outbox:da(e),async transaction(r){return t.useTransactions===!1?r(n):e.transaction().execute(async e=>r(jo(e,{...t,useTransactions:!1})))}};return n}exports.createProxyDataAdapter=_a,exports.createProxyRoutesAdapter=G,exports.default=jo,exports.migrateDown=Ao,exports.migrateToLatest=ko;
|