@authhero/aws-adapter 0.36.16 → 0.37.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.
@@ -1 +1 @@
1
- Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});let e=require("@authhero/adapter-interfaces"),t=require("@aws-sdk/lib-dynamodb");function n(){let e=e=>{throw Error(`Actions are not implemented in the AWS DynamoDB adapter (called ${e}). Use a SQL-backed adapter (kysely) for tenants that require actions.`)};return{create:()=>e(`create`),get:()=>e(`get`),list:()=>e(`list`),update:()=>e(`update`),remove:()=>e(`remove`)}}function r(){let e=e=>{throw Error(`Action executions are not implemented in the AWS DynamoDB adapter (called ${e}). Use a SQL-backed adapter (kysely) for tenants that require actions.`)};return{create:()=>e(`create`),get:()=>e(`get`)}}function i(){let e=e=>{throw Error(`Action versions are not implemented in the AWS DynamoDB adapter (called ${e}). Use a SQL-backed adapter (kysely) for tenants that require actions.`)};return{create:()=>e(`create`),get:()=>e(`get`),list:()=>e(`list`),removeForAction:()=>e(`removeForAction`)}}var a=`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`,o=(e=21)=>{let t=``,n=crypto.getRandomValues(new Uint8Array(e|=0));for(;e--;)t+=a[n[e]&63];return t},s={pk:e=>`TENANT#${e}`,sk:()=>`TENANT`,gsi1pk:()=>`TENANTS`,gsi1sk:e=>`TENANT#${e}`},c={pk:e=>`TENANT#${e}`,sk:e=>`USER#${e}`,gsi1pk:(e,t)=>`TENANT#${e}#EMAIL#${t.toLowerCase()}`,gsi1sk:()=>`USER`,gsi2pk:(e,t)=>`TENANT#${e}#CONNECTION#${t}`,gsi2sk:e=>`USER#${e}`},l={pk:e=>`TENANT#${e}`,sk:e=>`SESSION#${e}`,gsi1pk:(e,t)=>`TENANT#${e}#USER#${t}`,gsi1sk:e=>`SESSION#${e}`},u={pk:e=>`TENANT#${e}`,sk:e=>`LOGIN_SESSION#${e}`},d={pk:e=>`TENANT#${e}`,sk:e=>`CLIENT#${e}`},f={pk:e=>`TENANT#${e}`,sk:e=>`CLIENT_GRANT#${e}`,gsi1pk:(e,t)=>`TENANT#${e}#CLIENT#${t}`,gsi1sk:e=>`CLIENT_GRANT#${e}`},p={pk:e=>`TENANT#${e}`,sk:e=>`CONNECTION#${e}`,gsi1pk:(e,t)=>`TENANT#${e}#CONNECTION_NAME#${t}`,gsi1sk:()=>`CONNECTION`},m={pk:e=>`TENANT#${e}`,sk:(e,t)=>`CODE#${e}#${t}`,skPrefixByCodeId:e=>`CODE#${e}#`},h={pk:(e,t)=>`TENANT#${e}#USER#${t}`,sk:e=>`PASSWORD#${e}`,skPrefix:()=>`PASSWORD#`},g={pk:e=>`TENANT#${e}`,sk:()=>`BRANDING`},_={pk:e=>`TENANT#${e}`,sk:()=>`UNIVERSAL_LOGIN_TEMPLATE`},v={pk:e=>`TENANT#${e}`,sk:e=>`THEME#${e}`},y={pk:e=>`TENANT#${e}`,sk:e=>`HOOK#${e}`},b={pk:()=>`KEYS`,sk:e=>`KEY#${e}`},x={pk:e=>`TENANT#${e}`,sk:e=>`CUSTOM_DOMAIN#${e}`,gsi1pk:e=>`DOMAIN#${e}`,gsi1sk:()=>`CUSTOM_DOMAIN`},S={pk:e=>`TENANT#${e}`,sk:e=>`PROXY_ROUTE#${e}`,gsi1pk:(e,t)=>`TENANT#${e}#CUSTOM_DOMAIN#${t}`,gsi1sk:e=>`PROXY_ROUTE#${e}`},C={pk:e=>`TENANT#${e}`,sk:e=>`LOG#${e}`,gsi1pk:(e,t)=>`TENANT#${e}#LOG#${t}`,gsi1sk:e=>`LOG#${e}`},w={pk:e=>`TENANT#${e}`,sk:()=>`EMAIL_PROVIDER`},T={pk:e=>`TENANT#${e}`,sk:e=>`EMAIL_TEMPLATE#${e}`,skPrefix:()=>`EMAIL_TEMPLATE#`},E={pk:e=>`TENANT#${e}`,sk:()=>`PROMPT_SETTINGS`},D={pk:e=>`TENANT#${e}`,sk:e=>`REFRESH_TOKEN#${e}`,gsi1pk:(e,t)=>`TENANT#${e}#USER#${t}`,gsi1sk:e=>`REFRESH_TOKEN#${e}`,gsi2pk:(e,t)=>`TENANT#${e}#RT_LOOKUP#${t}`,gsi2sk:()=>`REFRESH_TOKEN`},O={pk:e=>`TENANT#${e}`,sk:e=>`FORM#${e}`},k={pk:e=>`TENANT#${e}`,sk:e=>`FLOW#${e}`},A={pk:e=>`TENANT#${e}`,sk:e=>`RESOURCE_SERVER#${e}`,gsi1pk:(e,t)=>`TENANT#${e}#RESOURCE_SERVER_ID#${t}`,gsi1sk:()=>`RESOURCE_SERVER`},j={pk:e=>`TENANT#${e}`,sk:e=>`ROLE#${e}`},M={pk:(e,t)=>`TENANT#${e}#ROLE#${t}`,sk:(e,t)=>`PERMISSION#${e}#${t}`,skPrefix:()=>`PERMISSION#`},N={pk:(e,t,n)=>n?`TENANT#${e}#ORG#${n}#USER#${t}`:`TENANT#${e}#USER#${t}`,sk:(e,t)=>`USER_PERMISSION#${e}#${t}`,skPrefix:()=>`USER_PERMISSION#`},P={pk:(e,t,n)=>n?`TENANT#${e}#ORG#${n}#USER#${t}`:`TENANT#${e}#USER#${t}`,sk:e=>`USER_ROLE#${e}`,skPrefix:()=>`USER_ROLE#`},F={pk:e=>`TENANT#${e}`,sk:e=>`ORGANIZATION#${e}`,gsi1pk:(e,t)=>`TENANT#${e}#ORG_NAME#${t}`,gsi1sk:()=>`ORGANIZATION`},I={pk:e=>`TENANT#${e}`,sk:e=>`USER_ORG#${e}`,gsi1pk:(e,t)=>`TENANT#${e}#USER#${t}`,gsi1sk:e=>`USER_ORG#${e}`,gsi2pk:(e,t)=>`TENANT#${e}#ORG#${t}`,gsi2sk:e=>`USER_ORG#${e}`},L={pk:(e,t)=>`TENANT#${e}#ORG#${t}`,sk:e=>`ORG_CONNECTION#${e}`,skPrefix:()=>`ORG_CONNECTION#`},R={pk:e=>`TENANT#${e}`,sk:e=>`INVITE#${e}`,gsi1pk:(e,t)=>`TENANT#${e}#ORG#${t}`,gsi1sk:e=>`INVITE#${e}`},ee={pk:()=>`LEGACY_CLIENTS`,sk:e=>`LEGACY_CLIENT#${e}`},z={pk:(e,t)=>`TENANT#${e}#CLIENT#${t}`,sk:(e,t)=>`CLIENT_CONNECTION#${String(t).padStart(5,`0`)}#${e}`,skPrefix:()=>`CLIENT_CONNECTION#`,gsi1pk:(e,t)=>`TENANT#${e}#CONNECTION#${t}`,gsi1sk:e=>`CLIENT_CONNECTION#${e}`},B={pk:e=>`TENANT#${e}`,sk:e=>`AUTHENTICATION_METHOD#${e}`,gsi1pk:(e,t)=>`TENANT#${e}#USER#${t}`,gsi1sk:e=>`AUTHENTICATION_METHOD#${e}`,gsi1skPrefix:()=>`AUTHENTICATION_METHOD#`},V={pk:e=>`TENANT#${e}`,sk:e=>`CLIENT_REGISTRATION_TOKEN#${e}`,skPrefix:()=>`CLIENT_REGISTRATION_TOKEN#`,gsi1pk:(e,t)=>`TENANT#${e}#CRT_HASH#${t}`,gsi1sk:()=>`CLIENT_REGISTRATION_TOKEN`,gsi2pk:(e,t)=>`TENANT#${e}#CLIENT#${t}`,gsi2sk:e=>`CLIENT_REGISTRATION_TOKEN#${e}`},H={pk:e=>`TENANT#${e}`,sk:(e,t)=>`CUSTOM_TEXT#${e}#${t}`,skPrefix:()=>`CUSTOM_TEXT#`};async function te(e,n){let r=n.map(t=>{if(t.type===`put`&&t.item)return{Put:{TableName:e.tableName,Item:t.item,ConditionExpression:t.conditionExpression}};if(t.type===`delete`&&t.pk&&t.sk)return{Delete:{TableName:e.tableName,Key:{PK:t.pk,SK:t.sk}}};throw Error(`Invalid transaction operation`)});await e.client.send(new t.TransactWriteCommand({TransactItems:r}))}async function U(e,n,r){return(await e.client.send(new t.GetCommand({TableName:e.tableName,Key:{PK:n,SK:r}}))).Item||null}async function W(e,n,r){await e.client.send(new t.PutCommand({TableName:e.tableName,Item:n,ConditionExpression:r?.conditionExpression}))}async function G(e,n,r){return await e.client.send(new t.DeleteCommand({TableName:e.tableName,Key:{PK:n,SK:r}})),!0}async function K(e,n,r){let{skPrefix:i,skValue:a,indexName:o,limit:s,startKey:c,scanIndexForward:l=!0}=r||{},u=o?`${o}PK = :pk`:`PK = :pk`,d={":pk":n};if(i){let e=o?`${o}SK`:`SK`;u+=` AND begins_with(${e}, :skPrefix)`,d[`:skPrefix`]=i}else if(a){let e=o?`${o}SK`:`SK`;u+=` AND ${e} = :sk`,d[`:sk`]=a}let f=await e.client.send(new t.QueryCommand({TableName:e.tableName,IndexName:o,KeyConditionExpression:u,ExpressionAttributeValues:d,Limit:s,ExclusiveStartKey:c,ScanIndexForward:l}));return{items:f.Items||[],lastKey:f.LastEvaluatedKey}}async function q(e,n,r={},i){let{page:a,per_page:o,include_totals:s=!1,from:c,take:l}=r,{skPrefix:u,indexName:d,scanIndexForward:f=!0}=i||{},p=l||o||50,m=c===void 0?(a||0)*p:parseInt(c,10),h=d?`${d}PK = :pk`:`PK = :pk`,g={":pk":n};if(u){let e=d?`${d}SK`:`SK`;h+=` AND begins_with(${e}, :skPrefix)`,g[`:skPrefix`]=u}let _=[],v,y=0,b=m+p;for(;y<b;){let n=await e.client.send(new t.QueryCommand({TableName:e.tableName,IndexName:d,KeyConditionExpression:h,ExpressionAttributeValues:g,Limit:Math.min(b-y,1e3),ExclusiveStartKey:v,ScanIndexForward:f})),r=n.Items||[];if(_=_.concat(r),y+=r.length,v=n.LastEvaluatedKey,!v)break}let x=_.slice(m,m+p),S=_.length;if(s&&v){let n=v;for(;n;){let r=await e.client.send(new t.QueryCommand({TableName:e.tableName,IndexName:d,KeyConditionExpression:h,ExpressionAttributeValues:g,Select:`COUNT`,ExclusiveStartKey:n}));S+=r.Count||0,n=r.LastEvaluatedKey}}return{items:x,start:m,limit:p,length:x.length,total:s?S:void 0}}async function J(e,n,r,i){let a=Object.entries(i).filter(([,e])=>e!==void 0);if(a.length===0)return!0;let o=`SET `+a.map(([e],t)=>`#attr${t} = :val${t}`).join(`, `),s={},c={};return a.forEach(([e,t],n)=>{s[`#attr${n}`]=e,c[`:val${n}`]=t}),await e.client.send(new t.UpdateCommand({TableName:e.tableName,Key:{PK:n,SK:r},UpdateExpression:o,ConditionExpression:`attribute_exists(PK)`,ExpressionAttributeNames:s,ExpressionAttributeValues:c})),!0}function Y(e){let{PK:t,SK:n,GSI1PK:r,GSI1SK:i,GSI2PK:a,GSI2SK:o,entityType:s,ttl:c,...l}=e;return l}function X(e){let t={...e};for(let e in t)(t[e]===null||t[e]===void 0)&&delete t[e];return t}function ne(t){let{tenant_id:n,...r}=Y(t),i=[];if(t.actions)try{i=JSON.parse(t.actions)}catch{console.error(`Failed to parse actions JSON for flow ${t.id}`)}let a=X({...r,actions:i});return e.flowSchema.parse(a)}function re(e){return{async create(t,n){let r=new Date().toISOString(),i=`af_${o()}`,a={PK:k.pk(t),SK:k.sk(i),entityType:`FLOW`,tenant_id:t,id:i,name:n.name,actions:n.actions?JSON.stringify(n.actions):void 0,created_at:r,updated_at:r};return await W(e,a),ne(a)},async get(t,n){let r=await U(e,k.pk(t),k.sk(n));return r?ne(r):null},async list(t,n={}){let r=await q(e,k.pk(t),n,{skPrefix:`FLOW#`});return{flows:r.items.map(ne),start:r.start,limit:r.limit,length:r.length}},async update(t,n,r){let i={updated_at:new Date().toISOString()};return r.name!==void 0&&(i.name=r.name),r.actions!==void 0&&(i.actions=JSON.stringify(r.actions)),await J(e,k.pk(t),k.sk(n),i)?this.get(t,n):null},async remove(t,n){return G(e,k.pk(t),k.sk(n))}}}function ie(t){let n=Y(t);return e.tenantSchema.parse(X(n))}function ae(e){return{async create(t){let n=new Date().toISOString(),r=t.id||o(),i={PK:s.pk(r),SK:s.sk(),GSI1PK:s.gsi1pk(),GSI1SK:s.gsi1sk(r),entityType:`TENANT`,id:r,audience:t.audience,friendly_name:t.friendly_name,sender_name:t.sender_name,sender_email:t.sender_email,session_lifetime:t.session_lifetime,idle_session_lifetime:t.idle_session_lifetime,created_at:n,updated_at:n};return await W(e,i),ie(i)},async get(t){let n=await U(e,s.pk(t),s.sk());return n?ie(n):null},async list(t={}){let{include_totals:n=!1}=t,r=await q(e,s.gsi1pk(),t,{indexName:`GSI1`,skPrefix:`TENANT#`}),i=r.items.map(ie);return n?{tenants:i,totals:{start:r.start,limit:r.limit,length:r.length}}:{tenants:i}},async update(t,n){let r={...n,updated_at:new Date().toISOString()};await J(e,s.pk(t),s.sk(),r)},async remove(t){return G(e,s.pk(t),s.sk())}}}var oe=class extends Error{res;status;constructor(e=500,t){super(t?.message,{cause:t?.cause}),this.res=t?.res,this.status=e}getResponse(){return this.res?new Response(this.res.body,{status:this.status,headers:this.res.headers}):new Response(this.message,{status:this.status})}};function se(t,n=[]){let{tenant_id:r,...i}=Y(t),a=X({...i,app_metadata:JSON.parse(t.app_metadata||`{}`),user_metadata:JSON.parse(t.user_metadata||`{}`),identities:[{connection:t.connection,provider:t.provider,user_id:(0,e.parseUserId)(t.user_id).id,isSocial:t.is_social,...t.email?{email:t.email}:{},...t.email_verified===void 0?{}:{email_verified:!!t.email_verified},...t.phone_number?{phone_number:t.phone_number}:{},...t.phone_verified===void 0?{}:{phone_verified:!!t.phone_verified},...t.username?{username:t.username}:{}},...n.map(t=>({connection:t.connection,provider:t.provider,user_id:(0,e.parseUserId)(t.user_id).id,isSocial:t.is_social,...t.email?{email:t.email}:{},...t.email_verified===void 0?{}:{email_verified:!!t.email_verified},...t.phone_number?{phone_number:t.phone_number}:{},...t.phone_verified===void 0?{}:{phone_verified:!!t.phone_verified},...t.username?{username:t.username}:{}}))]});return e.userSchema.parse(a)}function ce(e){let t=async(t,n)=>{let r=new Date().toISOString(),i=n.user_id||`${n.provider}|${o()}`,a={PK:c.pk(t),SK:c.sk(i),entityType:`USER`,tenant_id:t,user_id:i,email:n.email,username:n.username,phone_number:n.phone_number,given_name:n.given_name,family_name:n.family_name,nickname:n.nickname,name:n.name,picture:n.picture,locale:n.locale,linked_to:n.linked_to,profileData:n.profileData,email_verified:n.email_verified??!1,last_ip:n.last_ip,last_login:n.last_login,provider:n.provider||`auth`,connection:n.connection,is_social:n.is_social??!1,login_count:0,app_metadata:JSON.stringify(n.app_metadata||{}),user_metadata:JSON.stringify(n.user_metadata||{}),middle_name:n.middle_name,preferred_username:n.preferred_username,profile:n.profile,website:n.website,gender:n.gender,birthdate:n.birthdate,zoneinfo:n.zoneinfo,created_at:r,updated_at:r};n.email&&(a.GSI1PK=c.gsi1pk(t,n.email),a.GSI1SK=c.gsi1sk()),a.GSI2PK=c.gsi2pk(t,n.connection),a.GSI2SK=c.gsi2sk(i);try{if(n.password){let s=o(),c={PK:h.pk(t,i),SK:h.sk(s),entityType:`PASSWORD`,id:s,tenant_id:t,user_id:i,password:n.password.hash,algorithm:n.password.algorithm,is_current:!0,created_at:r,updated_at:r};await te(e,[{type:`put`,item:a,conditionExpression:`attribute_not_exists(PK)`},{type:`put`,item:c}])}else await W(e,a,{conditionExpression:`attribute_not_exists(PK)`})}catch(e){throw e.name===`ConditionalCheckFailedException`||e.name===`TransactionCanceledException`&&(e.CancellationReasons||[]).some(e=>e?.Code===`ConditionalCheckFailed`)?new oe(409,{message:`User already exists`}):e}return se(a)};return{create:t,rawCreate:t,async get(t,n){let[r,i]=await Promise.all([U(e,c.pk(t),c.sk(n)),K(e,c.pk(t),{skPrefix:`USER#`}).then(e=>e.items.filter(e=>e.linked_to===n))]);return r?se(r,i):null},async list(t,n={}){let r=await q(e,c.pk(t),n,{skPrefix:`USER#`}),i=r.items.filter(e=>!e.linked_to),a=r.items.filter(e=>e.linked_to);return{users:i.map(e=>se(e,a.filter(t=>t.linked_to===e.user_id))),start:r.start,limit:r.limit,length:r.length}},async update(t,n,r){let i={...r,updated_at:new Date().toISOString()};return 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)),delete i.user_id,delete i.identities,J(e,c.pk(t),c.sk(n),i)},async remove(t,n){return G(e,c.pk(t),c.sk(n))},async unlink(t,n,r,i){let a=`${r}|${i}`;return G(e,c.pk(t),c.sk(a))}}}function le(t){let{tenant_id:n,...r}=Y(t),i=X({...r,device:JSON.parse(t.device||`{}`),clients:JSON.parse(t.clients||`[]`)});return e.sessionSchema.parse(i)}function ue(e){return{async create(t,n){let r=new Date().toISOString(),i={PK:l.pk(t),SK:l.sk(n.id),GSI1PK:l.gsi1pk(t,n.user_id),GSI1SK:l.gsi1sk(n.id),entityType:`SESSION`,tenant_id:t,id:n.id,user_id:n.user_id,login_session_id:n.login_session_id,revoked_at:n.revoked_at,used_at:n.used_at,expires_at:n.expires_at,idle_expires_at:n.idle_expires_at,authenticated_at:r,last_interaction_at:r,device:JSON.stringify(n.device||{}),clients:JSON.stringify(n.clients||[]),created_at:r,updated_at:r};return n.expires_at&&(i.ttl=Math.floor(new Date(n.expires_at).getTime()/1e3)),await W(e,i),le(i)},async get(t,n){let r=await U(e,l.pk(t),l.sk(n));return r?le(r):null},async list(t,n={}){let r=await q(e,l.pk(t),n,{skPrefix:`SESSION#`});return{sessions:r.items.map(le),start:r.start,limit:r.limit,length:r.length}},async update(t,n,r){let i={...r,updated_at:new Date().toISOString()};return r.device!==void 0&&(i.device=JSON.stringify(r.device)),r.clients!==void 0&&(i.clients=JSON.stringify(r.clients)),r.expires_at&&(i.ttl=Math.floor(new Date(r.expires_at).getTime()/1e3)),delete i.id,J(e,l.pk(t),l.sk(n),i)},async remove(t,n){return G(e,l.pk(t),l.sk(n))}}}function de(t){let{tenant_id:n,...r}=Y(t);return e.passwordSchema.parse(X(r))}function fe(e){return{async create(t,n){let r=new Date().toISOString(),i=o(),a=await this.list(t,n.user_id);for(let i of a)i.is_current&&await J(e,h.pk(t,n.user_id),h.sk(i.id),{is_current:!1,updated_at:r});let s={PK:h.pk(t,n.user_id),SK:h.sk(i),entityType:`PASSWORD`,id:i,tenant_id:t,user_id:n.user_id,password:n.password,algorithm:n.algorithm||`bcrypt`,is_current:!0,created_at:r,updated_at:r};return await W(e,s),de(s)},async update(e,t){return await this.create(e,t),!0},async get(t,n){let{items:r}=await K(e,h.pk(t,n),{skPrefix:h.skPrefix()}),i=r.find(e=>e.is_current);return i?de(i):null},async list(t,n,r){let{items:i}=await K(e,h.pk(t,n),{skPrefix:h.skPrefix(),limit:r});return i.map(de)}}}function pe(t){let{tenant_id:n,...r}=Y(t);return e.codeSchema.parse(X(r))}function me(e){return{async create(t,n){let r=new Date().toISOString(),i={PK:m.pk(t),SK:m.sk(n.code_id,n.code_type),entityType:`CODE`,code_id:n.code_id,tenant_id:t,code_type:n.code_type,login_id:n.login_id,connection_id:n.connection_id,code_verifier:n.code_verifier,code_challenge:n.code_challenge,code_challenge_method:n.code_challenge_method,nonce:n.nonce,state:n.state,redirect_uri:n.redirect_uri,user_id:n.user_id,used_at:n.used_at,expires_at:n.expires_at,created_at:r,updated_at:r};return i.ttl=Math.floor(new Date(n.expires_at).getTime()/1e3),await W(e,i),pe(i)},async get(t,n,r){let i=await U(e,m.pk(t),m.sk(n,r));return i?pe(i):null},async list(t,n={}){let r=await q(e,m.pk(t),n,{skPrefix:`CODE#`});return{codes:r.items.map(pe),start:r.start,limit:r.limit,length:r.length}},async used(t,n){let{items:r}=await K(e,m.pk(t),{skPrefix:m.skPrefixByCodeId(n),limit:1}),i=r[0];return i?J(e,m.pk(t),m.sk(n,i.code_type),{used_at:new Date().toISOString()}):!1},async consume(n,r){let{items:i}=await K(e,m.pk(n),{skPrefix:m.skPrefixByCodeId(r),limit:1}),a=i[0];if(!a)return!1;try{return await e.client.send(new t.UpdateCommand({TableName:e.tableName,Key:{PK:m.pk(n),SK:m.sk(r,a.code_type)},UpdateExpression:`SET #used_at = :now`,ConditionExpression:`attribute_not_exists(#used_at) OR #used_at = :null`,ExpressionAttributeNames:{"#used_at":`used_at`},ExpressionAttributeValues:{":now":new Date().toISOString(),":null":null}})),!0}catch(e){if(e.name===`ConditionalCheckFailedException`)return!1;throw e}},async remove(t,n){let{items:r}=await K(e,m.pk(t),{skPrefix:m.skPrefixByCodeId(n),limit:1}),i=r[0];return i?G(e,m.pk(t),m.sk(n,i.code_type)):!1}}}function Z(t){let{tenant_id:n,...r}=Y(t),i=X({...r,callbacks:t.callbacks?JSON.parse(t.callbacks):void 0,allowed_origins:t.allowed_origins?JSON.parse(t.allowed_origins):void 0,web_origins:t.web_origins?JSON.parse(t.web_origins):void 0,client_aliases:t.client_aliases?JSON.parse(t.client_aliases):void 0,allowed_clients:t.allowed_clients?JSON.parse(t.allowed_clients):void 0,connections:t.connections?JSON.parse(t.connections):void 0,allowed_logout_urls:t.allowed_logout_urls?JSON.parse(t.allowed_logout_urls):void 0,session_transfer:t.session_transfer?JSON.parse(t.session_transfer):void 0,oidc_logout:t.oidc_logout?JSON.parse(t.oidc_logout):void 0,grant_types:t.grant_types?JSON.parse(t.grant_types):void 0,jwt_configuration:t.jwt_configuration?JSON.parse(t.jwt_configuration):void 0,signing_keys:t.signing_keys?JSON.parse(t.signing_keys):void 0,encryption_key:t.encryption_key?JSON.parse(t.encryption_key):void 0,addons:t.addons?JSON.parse(t.addons):void 0,client_metadata:t.client_metadata?JSON.parse(t.client_metadata):void 0,mobile:t.mobile?JSON.parse(t.mobile):void 0,native_social_login:t.native_social_login?JSON.parse(t.native_social_login):void 0,refresh_token:t.refresh_token?JSON.parse(t.refresh_token):void 0,default_organization:t.default_organization?JSON.parse(t.default_organization):void 0,client_authentication_methods:t.client_authentication_methods?JSON.parse(t.client_authentication_methods):void 0,signed_request_object:t.signed_request_object?JSON.parse(t.signed_request_object):void 0,token_quota:t.token_quota?JSON.parse(t.token_quota):void 0});return e.clientSchema.parse(i)}function he(e){return{...Z(e),tenant_id:e.tenant_id}}function ge(e){return{async create(t,n){let r=new Date().toISOString(),i=n.client_id??o(),a={PK:d.pk(t),SK:d.sk(i),entityType:`CLIENT`,tenant_id:t,client_id:i,name:n.name,client_secret:n.client_secret,description:n.description,logo_uri:n.logo_uri,app_type:n.app_type,token_endpoint_auth_method:n.token_endpoint_auth_method,initiate_login_uri:n.initiate_login_uri,cross_origin_loc:n.cross_origin_loc,custom_login_page:n.custom_login_page,custom_login_page_preview:n.custom_login_page_preview,form_template:n.form_template,organization_usage:n.organization_usage,organization_require_behavior:n.organization_require_behavior,compliance_level:n.compliance_level,par_request_expiry:n.par_request_expiry,global:n.global??!1,is_first_party:n.is_first_party??!1,oidc_conformant:n.oidc_conformant??!0,auth0_conformant:n.auth0_conformant??!0,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,callbacks:n.callbacks?JSON.stringify(n.callbacks):void 0,allowed_origins:n.allowed_origins?JSON.stringify(n.allowed_origins):void 0,web_origins:n.web_origins?JSON.stringify(n.web_origins):void 0,client_aliases:n.client_aliases?JSON.stringify(n.client_aliases):void 0,allowed_clients:n.allowed_clients?JSON.stringify(n.allowed_clients):void 0,connections:n.connections?JSON.stringify(n.connections):void 0,allowed_logout_urls:n.allowed_logout_urls?JSON.stringify(n.allowed_logout_urls):void 0,session_transfer:n.session_transfer?JSON.stringify(n.session_transfer):void 0,oidc_logout:n.oidc_logout?JSON.stringify(n.oidc_logout):void 0,grant_types:n.grant_types?JSON.stringify(n.grant_types):void 0,jwt_configuration:n.jwt_configuration?JSON.stringify(n.jwt_configuration):void 0,signing_keys:n.signing_keys?JSON.stringify(n.signing_keys):void 0,encryption_key:n.encryption_key?JSON.stringify(n.encryption_key):void 0,addons:n.addons?JSON.stringify(n.addons):void 0,client_metadata:n.client_metadata?JSON.stringify(n.client_metadata):void 0,mobile:n.mobile?JSON.stringify(n.mobile):void 0,native_social_login:n.native_social_login?JSON.stringify(n.native_social_login):void 0,refresh_token:n.refresh_token?JSON.stringify(n.refresh_token):void 0,default_organization:n.default_organization?JSON.stringify(n.default_organization):void 0,client_authentication_methods:n.client_authentication_methods?JSON.stringify(n.client_authentication_methods):void 0,signed_request_object:n.signed_request_object?JSON.stringify(n.signed_request_object):void 0,token_quota:n.token_quota?JSON.stringify(n.token_quota):void 0,created_at:r,updated_at:r};return await W(e,a),Z(a)},async get(t,n){let r=await U(e,d.pk(t),d.sk(n));return r?Z(r):null},async getByClientId(t){let n=await U(e,ee.pk(),ee.sk(t));if(!n?.tenant_id)return null;let r=await U(e,d.pk(n.tenant_id),d.sk(t));return r?he(r):null},async list(t,n={}){let r=await q(e,d.pk(t),n,{skPrefix:`CLIENT#`}),i=r.items.map(Z);return n.include_totals?{clients:i,totals:{start:r.start,limit:r.limit,length:r.length}}:{clients:i}},async update(t,n,r){let i={...r,updated_at:new Date().toISOString()};for(let e of[`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`])r[e]!==void 0&&(i[e]=JSON.stringify(r[e]));return delete i.client_id,J(e,d.pk(t),d.sk(n),i)},async remove(t,n){return G(e,d.pk(t),d.sk(n))}}}function _e(t){let{tenant_id:n,...r}=Y(t),i=X({...r,scope:t.scope?JSON.parse(t.scope):void 0,authorization_details_types:t.authorization_details_types?JSON.parse(t.authorization_details_types):void 0});return e.clientGrantSchema.parse(i)}function ve(e){return{async create(t,n){let r=new Date().toISOString(),i=o(),a={PK:f.pk(t),SK:f.sk(i),GSI1PK:f.gsi1pk(t,n.client_id),GSI1SK:f.gsi1sk(n.audience),entityType:`CLIENT_GRANT`,tenant_id:t,id:i,client_id:n.client_id,audience:n.audience,scope:n.scope?JSON.stringify(n.scope):void 0,organization_usage:n.organization_usage,allow_any_organization:n.allow_any_organization,is_system:n.is_system,subject_type:n.subject_type,authorization_details_types:n.authorization_details_types?JSON.stringify(n.authorization_details_types):void 0,created_at:r,updated_at:r};return await W(e,a),_e(a)},async get(t,n){let r=await U(e,f.pk(t),f.sk(n));return r?_e(r):null},async list(t,n={}){let r=await q(e,f.pk(t),n,{skPrefix:`CLIENT_GRANT#`});return{client_grants:r.items.map(_e),start:r.start,limit:r.limit,length:r.length}},async update(t,n,r){let i={...r,updated_at:new Date().toISOString()};return r.scope!==void 0&&(i.scope=JSON.stringify(r.scope)),r.authorization_details_types!==void 0&&(i.authorization_details_types=JSON.stringify(r.authorization_details_types)),delete i.id,J(e,f.pk(t),f.sk(n),i)},async remove(t,n){return G(e,f.pk(t),f.sk(n))}}}function ye(t){let{tenant_id:n,...r}=Y(t),i=X({...r,options:t.options?JSON.parse(t.options):void 0});return e.connectionSchema.parse(i)}function be(e){return{async listByClient(t,n){let{items:r}=await K(e,z.pk(t,n),{skPrefix:z.skPrefix()});r.sort((e,t)=>e.order-t.order);let i=[];for(let n of r){let r=await U(e,p.pk(t),p.sk(n.connection_id));r&&i.push(ye(r))}return i},async updateByClient(n,r,i){let{items:a}=await K(e,z.pk(n,r),{skPrefix:z.skPrefix()});if(a.length>0){let i=a.map(e=>({DeleteRequest:{Key:{PK:z.pk(n,r),SK:z.sk(e.connection_id,e.order)}}}));for(let n=0;n<i.length;n+=25){let r=i.slice(n,n+25);await e.client.send(new t.BatchWriteCommand({RequestItems:{[e.tableName]:r}}))}}let o=new Date().toISOString();for(let t=0;t<i.length;t++){let a=i[t];await W(e,{PK:z.pk(n,r),SK:z.sk(a,t),GSI1PK:z.gsi1pk(n,a),GSI1SK:z.gsi1sk(r),entityType:`CLIENT_CONNECTION`,tenant_id:n,client_id:r,connection_id:a,order:t,created_at:o,updated_at:o})}return!0},async listByConnection(t,n){let{items:r}=await K(e,z.gsi1pk(t,n),{indexName:`GSI1`,skPrefix:`CLIENT_CONNECTION#`});return r.map(e=>e.client_id)},async addClientToConnection(t,n,r){let{items:i}=await K(e,z.pk(t,r),{skPrefix:z.skPrefix()});if(i.some(e=>e.connection_id===n))return!0;let a=i.length,o=new Date().toISOString();return await W(e,{PK:z.pk(t,r),SK:z.sk(n,a),GSI1PK:z.gsi1pk(t,n),GSI1SK:z.gsi1sk(r),entityType:`CLIENT_CONNECTION`,tenant_id:t,client_id:r,connection_id:n,order:a,created_at:o,updated_at:o}),!0},async removeClientFromConnection(t,n,r){let{items:i}=await K(e,z.pk(t,r),{skPrefix:z.skPrefix()}),a=i.find(e=>e.connection_id===n);return a?G(e,z.pk(t,r),z.sk(n,a.order)):!1}}}function Q(t){let{tenant_id:n,constraints:r,...i}=Y(t),a=X({...i,constraints:r?JSON.parse(r):void 0});return e.clientRegistrationTokenSchema.parse(a)}function xe(e){return{async create(t,n){let r=new Date().toISOString(),i={PK:V.pk(t),SK:V.sk(n.id),GSI1PK:V.gsi1pk(t,n.token_hash),GSI1SK:V.gsi1sk(),entityType:`CLIENT_REGISTRATION_TOKEN`,tenant_id:t,id:n.id,token_hash:n.token_hash,type:n.type,client_id:n.client_id,sub:n.sub,constraints:n.constraints?JSON.stringify(n.constraints):void 0,single_use:n.single_use,expires_at:n.expires_at,created_at:r,updated_at:r};return n.client_id&&(i.GSI2PK=V.gsi2pk(t,n.client_id),i.GSI2SK=V.gsi2sk(n.id)),n.expires_at&&(i.ttl=Math.floor(new Date(n.expires_at).getTime()/1e3)),await W(e,i),Q(i)},async get(t,n){let r=await U(e,V.pk(t),V.sk(n));return r?Q(r):null},async getByHash(t,n){let r=await K(e,V.gsi1pk(t,n),{indexName:`GSI1`,skValue:V.gsi1sk(),limit:1});return r.items[0]?Q(r.items[0]):null},async listByClient(t,n){return(await K(e,V.gsi2pk(t,n),{indexName:`GSI2`,skPrefix:V.skPrefix(),scanIndexForward:!1})).items.map(Q)},async markUsed(n,r,i){try{return await e.client.send(new t.UpdateCommand({TableName:e.tableName,Key:{PK:V.pk(n),SK:V.sk(r)},UpdateExpression:`SET #used_at = :used_at, #updated_at = :updated_at`,ConditionExpression:`attribute_exists(PK) AND attribute_not_exists(#used_at)`,ExpressionAttributeNames:{"#used_at":`used_at`,"#updated_at":`updated_at`},ExpressionAttributeValues:{":used_at":i,":updated_at":new Date().toISOString()}})),!0}catch(e){if(e?.name===`ConditionalCheckFailedException`)return!1;throw e}},async revoke(n,r,i){try{return await e.client.send(new t.UpdateCommand({TableName:e.tableName,Key:{PK:V.pk(n),SK:V.sk(r)},UpdateExpression:`SET #revoked_at = :revoked_at, #updated_at = :updated_at`,ConditionExpression:`attribute_exists(PK)`,ExpressionAttributeNames:{"#revoked_at":`revoked_at`,"#updated_at":`updated_at`},ExpressionAttributeValues:{":revoked_at":i,":updated_at":new Date().toISOString()}})),!0}catch(e){if(e?.name===`ConditionalCheckFailedException`)return!1;throw e}},async revokeByClient(n,r,i){let a=await K(e,V.gsi2pk(n,r),{indexName:`GSI2`,skPrefix:V.skPrefix()}),o=0,s=new Date().toISOString();for(let n of a.items)if(!n.revoked_at)try{await e.client.send(new t.UpdateCommand({TableName:e.tableName,Key:{PK:n.PK,SK:n.SK},UpdateExpression:`SET #revoked_at = :revoked_at, #updated_at = :updated_at`,ConditionExpression:`attribute_exists(PK) AND attribute_not_exists(#revoked_at)`,ExpressionAttributeNames:{"#revoked_at":`revoked_at`,"#updated_at":`updated_at`},ExpressionAttributeValues:{":revoked_at":i,":updated_at":s}})),o++}catch(e){if(e?.name===`ConditionalCheckFailedException`)continue;throw e}return o},async remove(t,n){return G(e,V.pk(t),V.sk(n))}}}function Se(t){let{tenant_id:n,is_system:r,...i}=Y(t),a=X({...i,options:t.options?JSON.parse(t.options):void 0,is_system:r?!0:void 0});return e.connectionSchema.parse(a)}function Ce(e){return{async create(t,n){let r=new Date().toISOString(),i=n.id||o(),a={PK:p.pk(t),SK:p.sk(i),GSI1PK:p.gsi1pk(t,n.name),GSI1SK:p.gsi1sk(),entityType:`CONNECTION`,tenant_id:t,id:i,name:n.name,strategy:n.strategy,options:n.options?JSON.stringify(n.options):void 0,is_system:n.is_system??!1,created_at:r,updated_at:r};return await W(e,a),Se(a)},async get(t,n){let r=await U(e,p.pk(t),p.sk(n));return r?Se(r):null},async list(t,n={}){let r=await q(e,p.pk(t),n,{skPrefix:`CONNECTION#`});return{connections:r.items.map(Se),start:r.start,limit:r.limit,length:r.length}},async update(t,n,r){let i={...r,updated_at:new Date().toISOString()};return r.options!==void 0&&(i.options=JSON.stringify(r.options)),r.name!==void 0&&(i.GSI1PK=p.gsi1pk(t,r.name),i.GSI1SK=p.gsi1sk()),delete i.id,J(e,p.pk(t),p.sk(n),i)},async remove(t,n){return G(e,p.pk(t),p.sk(n))}}}function we(t){let{tenant_id:n,authParams:r,...i}=Y(t),a=X({...i,authParams:JSON.parse(r)});return e.loginSessionSchema.parse(a)}function Te(t){return{async create(n,r){let i=new Date().toISOString(),a=o(),s={PK:u.pk(n),SK:u.sk(a),entityType:`LOGIN_SESSION`,tenant_id:n,id:a,csrf_token:r.csrf_token,authParams:JSON.stringify(r.authParams),expires_at:r.expires_at,state:r.state??e.LoginSessionState.PENDING,state_data:r.state_data,failure_reason:r.failure_reason,user_id:r.user_id,auth0Client:r.auth0Client,deleted_at:r.deleted_at,ip:r.ip,useragent:r.useragent,session_id:r.session_id,authorization_url:r.authorization_url?.slice(0,1024),created_at:i,updated_at:i};return s.ttl=Math.floor(new Date(r.expires_at).getTime()/1e3),await W(t,s),we(s)},async get(e,n){let r=await U(t,u.pk(e),u.sk(n));return r?we(r):null},async update(e,n,r){let i={...r,updated_at:new Date().toISOString()};return r.authParams!==void 0&&(i.authParams=JSON.stringify(r.authParams)),delete i.id,J(t,u.pk(e),u.sk(n),i)},async remove(e,n){return G(t,u.pk(e),u.sk(n))}}}function Ee(t){let{tenant_id:n,...r}=Y(t),i=X({...r,colors:t.colors?JSON.parse(t.colors):void 0,font:t.font?JSON.parse(t.font):void 0});return e.brandingSchema.parse(i)}function De(e){return{async set(t,n){let r=new Date().toISOString(),i=await U(e,g.pk(t),g.sk());await W(e,{PK:g.pk(t),SK:g.sk(),entityType:`BRANDING`,tenant_id:t,colors:n.colors?JSON.stringify(n.colors):void 0,favicon_url:n.favicon_url,logo_url:n.logo_url,powered_by_logo_url:n.powered_by_logo_url,font:n.font?JSON.stringify(n.font):void 0,created_at:i?.created_at||r,updated_at:r})},async get(t){let n=await U(e,g.pk(t),g.sk());return n?Ee(n):null}}}function Oe(e){return{async get(t){let n=await U(e,_.pk(t),_.sk());return n?{body:n.body}:null},async set(t,n){let r=new Date().toISOString(),i=await U(e,_.pk(t),_.sk());await W(e,{PK:_.pk(t),SK:_.sk(),entityType:`UNIVERSAL_LOGIN_TEMPLATE`,tenant_id:t,body:n.body,created_at:i?.created_at||r,updated_at:r})},async delete(t){await G(e,_.pk(t),_.sk())}}}var $={pk:e=>`TENANT#${e}`,sk:e=>`HOOK_CODE#${e}`};function ke(e){let{tenant_id:t,secrets:n,...r}=Y(e);return{...r,tenant_id:t,secrets:n?JSON.parse(n):void 0}}function Ae(e){return{async create(t,n){let r=new Date().toISOString(),i=`hc_${o()}`,a={PK:$.pk(t),SK:$.sk(i),entityType:`HOOK_CODE`,id:i,tenant_id:t,code:n.code,secrets:n.secrets?JSON.stringify(n.secrets):null,created_at:r,updated_at:r};return await W(e,a),ke(a)},async get(t,n){let r=await U(e,$.pk(t),$.sk(n));return r?ke(r):null},async update(t,n,r){let i=await U(e,$.pk(t),$.sk(n));if(!i)return!1;let a={...i,updated_at:new Date().toISOString()};return r.code!==void 0&&(a.code=r.code),r.secrets!==void 0&&(a.secrets=JSON.stringify(r.secrets)),await W(e,a),!0},async remove(t,n){return await U(e,$.pk(t),$.sk(n))?(await G(e,$.pk(t),$.sk(n)),!0):!1}}}function je(t){let{tenant_id:n,...r}=Y(t);return e.hookSchema.parse(X(r))}function Me(e){return{async create(t,n){let r=new Date().toISOString(),i=n.hook_id||o(),a=`url`in n?n.url:void 0,s=`form_id`in n?n.form_id:void 0,c=`template_id`in n?n.template_id:void 0,l={PK:y.pk(t),SK:y.sk(i),entityType:`HOOK`,tenant_id:t,hook_id:i,trigger_id:n.trigger_id,url:a,form_id:s,template_id:c,enabled:n.enabled??!1,synchronous:n.synchronous??!1,priority:n.priority,created_at:r,updated_at:r};return await W(e,l),je(l)},async get(t,n){let r=await U(e,y.pk(t),y.sk(n));return r?je(r):null},async list(t,n={}){let r=await q(e,y.pk(t),n,{skPrefix:`HOOK#`});return{hooks:r.items.map(je),start:r.start,limit:r.limit,length:r.length}},async update(t,n,r){let i={...r,updated_at:new Date().toISOString()};return delete i.hook_id,J(e,y.pk(t),y.sk(n),i)},async remove(t,n){return G(e,y.pk(t),y.sk(n))}}}function Ne(t){return e.signingKeySchema.parse(X(Y(t)))}function Pe(e){return{async create(t){let n=new Date().toISOString();await W(e,{PK:b.pk(),SK:b.sk(t.kid),entityType:`KEY`,kid:t.kid,cert:t.cert,fingerprint:t.fingerprint,thumbprint:t.thumbprint,pkcs7:t.pkcs7,current:t.current,next:t.next,previous:t.previous,current_since:t.current_since,current_until:t.current_until,revoked:t.revoked,revoked_at:t.revoked_at,connection:t.connection,type:t.type,created_at:n,updated_at:n})},async list(t={}){let n=await q(e,b.pk(),t,{skPrefix:`KEY#`});return{signingKeys:n.items.map(Ne),start:n.start,limit:n.limit,length:n.length}},async update(t,n){let r={...n,updated_at:new Date().toISOString()};return J(e,b.pk(),b.sk(t),r)}}}function Fe(t){let{tenant_id:n,verification:r,domain_metadata:i,...a}=Y(t),o=X({...a,verification:r?JSON.parse(r):void 0,domain_metadata:i?JSON.parse(i):void 0});return e.customDomainSchema.parse(o)}function Ie(t){let{verification:n,domain_metadata:r,...i}=Y(t),a=X({...i,tenant_id:t.tenant_id,verification:n?JSON.parse(n):void 0,domain_metadata:r?JSON.parse(r):void 0});return e.customDomainWithTenantIdSchema.parse(a)}function Le(e){return{async create(t,n){let r=new Date().toISOString(),i=n.custom_domain_id||o(),a={PK:x.pk(t),SK:x.sk(i),GSI1PK:x.gsi1pk(n.domain),GSI1SK:x.gsi1sk(),entityType:`CUSTOM_DOMAIN`,tenant_id:t,custom_domain_id:i,domain:n.domain,primary:!1,status:`pending_verification`,type:n.type,verification_method:n.verification_method,custom_client_ip_header:n.custom_client_ip_header,tls_policy:n.tls_policy,domain_metadata:n.domain_metadata?JSON.stringify(n.domain_metadata):void 0,created_at:r,updated_at:r};return await W(e,a),Fe(a)},async get(t,n){let r=await U(e,x.pk(t),x.sk(n));return r?Fe(r):null},async getByDomain(t){let{items:n}=await K(e,x.gsi1pk(t),{indexName:`GSI1`,skValue:x.gsi1sk()});return n.length?Ie(n[0]):null},async list(t){let{items:n}=await K(e,x.pk(t),{skPrefix:`CUSTOM_DOMAIN#`});return n.map(Fe)},async update(t,n,r){let i={...r,updated_at:new Date().toISOString()};return r.verification!==void 0&&(i.verification=JSON.stringify(r.verification)),r.domain_metadata!==void 0&&(i.domain_metadata=JSON.stringify(r.domain_metadata)),delete i.custom_domain_id,J(e,x.pk(t),x.sk(n),i)},async remove(t,n){return G(e,x.pk(t),x.sk(n))}}}function Re(t){let{tenant_id:n,country_code:r,city_name:i,latitude:a,longitude:o,time_zone:s,continent_code:c,...l}=Y(t),u=X({...l,auth0_client:t.auth0_client?JSON.parse(t.auth0_client):void 0,details:t.details?JSON.parse(t.details):void 0,location_info:r?{country_code:r,city_name:i,latitude:a,longitude:o,time_zone:s,continent_code:c}:void 0});return e.logSchema.parse(u)}function ze(e){return{async create(t,n){let r=new Date().toISOString(),i=n.log_id||o(),a=n.date||r,s=a.substring(0,10),c={PK:C.pk(t),SK:C.sk(i),GSI1PK:C.gsi1pk(t,s),GSI1SK:C.gsi1sk(i),entityType:`LOG`,tenant_id:t,log_id:i,type:n.type,description:n.description,ip:n.ip,user_agent:n.user_agent,date:a,user_id:n.user_id,user_name:n.user_name,connection:n.connection,connection_id:n.connection_id,client_id:n.client_id,client_name:n.client_name,audience:n.audience,scope:n.scope,strategy:n.strategy,strategy_type:n.strategy_type,hostname:n.hostname,isMobile:n.isMobile,auth0_client:n.auth0_client?JSON.stringify(n.auth0_client):void 0,details:n.details?JSON.stringify(n.details):void 0,country_code:n.location_info?.country_code,city_name:n.location_info?.city_name,latitude:n.location_info?.latitude,longitude:n.location_info?.longitude,time_zone:n.location_info?.time_zone,continent_code:n.location_info?.continent_code,created_at:r,updated_at:r},l=new Date(a);return l.setDate(l.getDate()+30),c.ttl=Math.floor(l.getTime()/1e3),await W(e,c),Re(c)},async list(t,n={}){let r=await q(e,C.pk(t),n,{skPrefix:`LOG#`,scanIndexForward:!1});return{logs:r.items.map(Re),start:r.start,limit:r.limit,length:r.length}},async get(t,n){let r=await U(e,C.pk(t),C.sk(n));return r?Re(r):null}}}function Be(t){let{tenant_id:n,...r}=Y(t),i=X({...r,borders:t.borders?JSON.parse(t.borders):void 0,colors:t.colors?JSON.parse(t.colors):void 0,fonts:t.fonts?JSON.parse(t.fonts):void 0,page_background:t.page_background?JSON.parse(t.page_background):void 0,widget:t.widget?JSON.parse(t.widget):void 0});return e.themeSchema.parse(i)}function Ve(e){return{async create(t,n,r){let i=new Date().toISOString(),a=r||o(),s={PK:v.pk(t),SK:v.sk(a),entityType:`THEME`,tenant_id:t,themeId:a,displayName:n.displayName,borders:n.borders?JSON.stringify(n.borders):void 0,colors:n.colors?JSON.stringify(n.colors):void 0,fonts:n.fonts?JSON.stringify(n.fonts):void 0,page_background:n.page_background?JSON.stringify(n.page_background):void 0,widget:n.widget?JSON.stringify(n.widget):void 0,created_at:i,updated_at:i};return await W(e,s),Be(s)},async get(t,n){let r=await U(e,v.pk(t),v.sk(n));return r?Be(r):null},async update(t,n,r){let i={updated_at:new Date().toISOString()};return r.displayName!==void 0&&(i.displayName=r.displayName),r.borders!==void 0&&(i.borders=JSON.stringify(r.borders)),r.colors!==void 0&&(i.colors=JSON.stringify(r.colors)),r.fonts!==void 0&&(i.fonts=JSON.stringify(r.fonts)),r.page_background!==void 0&&(i.page_background=JSON.stringify(r.page_background)),r.widget!==void 0&&(i.widget=JSON.stringify(r.widget)),J(e,v.pk(t),v.sk(n),i)},async remove(t,n){return G(e,v.pk(t),v.sk(n))}}}var He={universal_login_experience:`new`,identifier_first:!1,password_first:!1,webauthn_platform_first_factor:!1};function Ue(t){let{tenant_id:n,...r}=Y(t),i=X({universal_login_experience:r.universal_login_experience||`new`,identifier_first:r.identifier_first??!1,password_first:r.password_first??!1,webauthn_platform_first_factor:r.webauthn_platform_first_factor??!1});return e.promptSettingSchema.parse(i)}function We(e){return{async set(t,n){let r=new Date().toISOString(),i=await this.get(t),a=await U(e,E.pk(t),E.sk());await W(e,{PK:E.pk(t),SK:E.sk(),entityType:`PROMPT_SETTING`,tenant_id:t,universal_login_experience:n.universal_login_experience??i.universal_login_experience,identifier_first:n.identifier_first??i.identifier_first,password_first:n.password_first??i.password_first,webauthn_platform_first_factor:n.webauthn_platform_first_factor??i.webauthn_platform_first_factor,created_at:a?.created_at||r,updated_at:r})},async get(t){let n=await U(e,E.pk(t),E.sk());return n?Ue(n):He}}}function Ge(t){let{tenant_id:n,...r}=Y(t),i=X({...r,credentials:t.credentials?JSON.parse(t.credentials):void 0,settings:t.settings?JSON.parse(t.settings):void 0});return e.emailProviderSchema.parse(i)}function Ke(e){return{async create(t,n){let r=new Date().toISOString();await W(e,{PK:w.pk(t),SK:w.sk(),entityType:`EMAIL_PROVIDER`,tenant_id:t,name:n.name,enabled:n.enabled??!0,default_from_address:n.default_from_address,credentials:n.credentials?JSON.stringify(n.credentials):void 0,settings:n.settings?JSON.stringify(n.settings):void 0,created_at:r,updated_at:r})},async get(t){let n=await U(e,w.pk(t),w.sk());return n?Ge(n):null},async update(t,n){let r={...n,updated_at:new Date().toISOString()};n.credentials!==void 0&&(r.credentials=JSON.stringify(n.credentials)),n.settings!==void 0&&(r.settings=JSON.stringify(n.settings)),await J(e,w.pk(t),w.sk(),r)},async remove(t){await G(e,w.pk(t),w.sk())}}}function qe(t){let n=Y(t),r=X({template:n.template,body:n.body,from:n.from,subject:n.subject,syntax:n.syntax,resultUrl:n.result_url,urlLifetimeInSeconds:n.url_lifetime_in_seconds,includeEmailInRedirect:!!n.include_email_in_redirect,enabled:!!n.enabled});return e.emailTemplateSchema.parse(r)}function Je(e){return{async create(t,n){let r=new Date().toISOString();return await W(e,{PK:T.pk(t),SK:T.sk(n.template),entityType:`EMAIL_TEMPLATE`,tenant_id:t,template:n.template,body:n.body,from:n.from,subject:n.subject,syntax:n.syntax,result_url:n.resultUrl,url_lifetime_in_seconds:n.urlLifetimeInSeconds,include_email_in_redirect:n.includeEmailInRedirect,enabled:n.enabled,created_at:r,updated_at:r}),n},async get(t,n){let r=await U(e,T.pk(t),T.sk(n));return r?qe(r):null},async list(t){let{items:n}=await K(e,T.pk(t),{skPrefix:T.skPrefix()});return n.map(qe)},async update(t,n,r){let i={updated_at:new Date().toISOString()};return 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),await U(e,T.pk(t),T.sk(n))?(await J(e,T.pk(t),T.sk(n),i),!0):!1},async remove(t,n){return await U(e,T.pk(t),T.sk(n))?(await G(e,T.pk(t),T.sk(n)),!0):!1}}}function Ye(t){let{tenant_id:n,device:r,resource_servers:i,...a}=Y(t),o=X({...a,device:JSON.parse(r),resource_servers:JSON.parse(i)});return e.refreshTokenSchema.parse(o)}function Xe(e){return{async create(t,n){let r=new Date().toISOString(),i={PK:D.pk(t),SK:D.sk(n.id),GSI1PK:D.gsi1pk(t,n.user_id),GSI1SK:D.gsi1sk(n.id),entityType:`REFRESH_TOKEN`,tenant_id:t,id:n.id,user_id:n.user_id,login_id:n.login_id,client_id:n.client_id,expires_at:n.expires_at,idle_expires_at:n.idle_expires_at,last_exchanged_at:n.last_exchanged_at,device:JSON.stringify(n.device),resource_servers:JSON.stringify(n.resource_servers),rotating:n.rotating,token_lookup:n.token_lookup,token_hash:n.token_hash,family_id:n.family_id,rotated_to:n.rotated_to,rotated_at:n.rotated_at,created_at:r,updated_at:r};return n.token_lookup&&(i.GSI2PK=D.gsi2pk(t,n.token_lookup),i.GSI2SK=D.gsi2sk()),n.expires_at&&(i.ttl=Math.floor(new Date(n.expires_at).getTime()/1e3)),await W(e,i),Ye(i)},async get(t,n){let r=await U(e,D.pk(t),D.sk(n));return r?Ye(r):null},async getByLookup(t,n){let r=await K(e,D.gsi2pk(t,n),{indexName:`GSI2`,skValue:D.gsi2sk(),limit:1});return r.items[0]?Ye(r.items[0]):null},async list(t,n={}){let r=await q(e,D.pk(t),n,{skPrefix:`REFRESH_TOKEN#`});return{refresh_tokens:r.items.map(Ye),start:r.start,limit:r.limit,length:r.length}},async update(t,n,r,i){let a={...r,updated_at:new Date().toISOString()};r.device!==void 0&&(a.device=JSON.stringify(r.device)),r.resource_servers!==void 0&&(a.resource_servers=JSON.stringify(r.resource_servers)),delete a.id;let o=await J(e,D.pk(t),D.sk(n),a);if(o&&i?.loginSessionBump)try{await J(e,u.pk(t),u.sk(i.loginSessionBump.login_id),{expires_at:i.loginSessionBump.expires_at,updated_at:new Date().toISOString()})}catch{}return o},async remove(t,n){return G(e,D.pk(t),D.sk(n))},async revokeByLoginSession(n,r,i){let a=0,o=0;for(;;){let s=await q(e,D.pk(n),{page:o,per_page:100},{skPrefix:`REFRESH_TOKEN#`});for(let o of s.items)if(o.login_id===r&&!o.revoked_at)try{await e.client.send(new t.UpdateCommand({TableName:e.tableName,Key:{PK:D.pk(n),SK:D.sk(o.id)},UpdateExpression:`SET #revoked_at = :revoked_at, #updated_at = :updated_at`,ConditionExpression:`attribute_exists(PK) AND attribute_not_exists(#revoked_at)`,ExpressionAttributeNames:{"#revoked_at":`revoked_at`,"#updated_at":`updated_at`},ExpressionAttributeValues:{":revoked_at":i,":updated_at":new Date().toISOString()}})),a++}catch(e){if(e?.name===`ConditionalCheckFailedException`)continue;throw e}if(s.items.length<100)break;o++}return a},async revokeFamily(n,r,i){let a=0,o=0;for(;;){let s=await q(e,D.pk(n),{page:o,per_page:100},{skPrefix:`REFRESH_TOKEN#`});for(let o of s.items)if(o.family_id===r&&!o.revoked_at)try{await e.client.send(new t.UpdateCommand({TableName:e.tableName,Key:{PK:D.pk(n),SK:D.sk(o.id)},UpdateExpression:`SET #revoked_at = :revoked_at, #updated_at = :updated_at`,ConditionExpression:`attribute_exists(PK) AND attribute_not_exists(#revoked_at)`,ExpressionAttributeNames:{"#revoked_at":`revoked_at`,"#updated_at":`updated_at`},ExpressionAttributeValues:{":revoked_at":i,":updated_at":new Date().toISOString()}})),a++}catch(e){if(e?.name===`ConditionalCheckFailedException`)continue;throw e}if(s.items.length<100)break;o++}return a}}}function Ze(t){let{tenant_id:n,...r}=Y(t),i=X({...r,nodes:t.nodes?JSON.parse(t.nodes):void 0,start:t.start?JSON.parse(t.start):void 0,ending:t.ending?JSON.parse(t.ending):void 0,messages:t.messages?JSON.parse(t.messages):void 0,languages:t.languages?JSON.parse(t.languages):void 0,translations:t.translations?JSON.parse(t.translations):void 0,style:t.style?JSON.parse(t.style):void 0});return e.formSchema.parse(i)}function Qe(e){return{async create(t,n){let r=new Date().toISOString(),i=o(),a={PK:O.pk(t),SK:O.sk(i),entityType:`FORM`,tenant_id:t,id:i,name:n.name,nodes:n.nodes?JSON.stringify(n.nodes):void 0,start:n.start?JSON.stringify(n.start):void 0,ending:n.ending?JSON.stringify(n.ending):void 0,messages:n.messages?JSON.stringify(n.messages):void 0,languages:n.languages?JSON.stringify(n.languages):void 0,translations:n.translations?JSON.stringify(n.translations):void 0,style:n.style?JSON.stringify(n.style):void 0,created_at:r,updated_at:r};return await W(e,a),Ze(a)},async get(t,n){let r=await U(e,O.pk(t),O.sk(n));return r?Ze(r):null},async list(t,n={}){let r=await q(e,O.pk(t),n,{skPrefix:`FORM#`});return{forms:r.items.map(Ze),start:r.start,limit:r.limit,length:r.length}},async update(t,n,r){let i={updated_at:new Date().toISOString()};return r.name!==void 0&&(i.name=r.name),r.nodes!==void 0&&(i.nodes=JSON.stringify(r.nodes)),r.start!==void 0&&(i.start=JSON.stringify(r.start)),r.ending!==void 0&&(i.ending=JSON.stringify(r.ending)),r.messages!==void 0&&(i.messages=JSON.stringify(r.messages)),r.languages!==void 0&&(i.languages=JSON.stringify(r.languages)),r.translations!==void 0&&(i.translations=JSON.stringify(r.translations)),r.style!==void 0&&(i.style=JSON.stringify(r.style)),J(e,O.pk(t),O.sk(n),i)},async remove(t,n){return G(e,O.pk(t),O.sk(n))}}}function $e(t){let{tenant_id:n,verification_key:r,is_system:i,metadata:a,...o}=Y(t),s=X({...o,verificationKey:r,scopes:t.scopes?JSON.parse(t.scopes):void 0,options:t.options?JSON.parse(t.options):void 0,is_system:i?!0:void 0,metadata:a});return e.resourceServerSchema.parse(s)}function et(e){return{async create(t,n){let r=new Date().toISOString(),i=n.id||o(),a={PK:A.pk(t),SK:A.sk(i),GSI1PK:A.gsi1pk(t,n.identifier),GSI1SK:A.gsi1sk(),entityType:`RESOURCE_SERVER`,tenant_id:t,id:i,identifier:n.identifier,name:n.name,signing_alg:n.signing_alg,signing_secret:n.signing_secret,allow_offline_access:n.allow_offline_access,skip_consent_for_verifiable_first_party_clients:n.skip_consent_for_verifiable_first_party_clients,token_lifetime:n.token_lifetime,token_lifetime_for_web:n.token_lifetime_for_web,enforce_policies:n.options?.enforce_policies,token_dialect:n.options?.token_dialect,scopes:n.scopes?JSON.stringify(n.scopes):void 0,options:n.options?JSON.stringify(n.options):void 0,verification_key:n.verificationKey,is_system:n.is_system??!1,metadata:n.metadata,created_at:r,updated_at:r};return await W(e,a),$e(a)},async get(t,n){let r=await U(e,A.pk(t),A.sk(n));return r?$e(r):null},async list(t,n={}){let r=await q(e,A.pk(t),n,{skPrefix:`RESOURCE_SERVER#`});return{resource_servers:r.items.map($e),start:r.start,limit:r.limit,length:r.length}},async update(t,n,r){let i={...r,updated_at:new Date().toISOString()};return r.scopes!==void 0&&(i.scopes=JSON.stringify(r.scopes)),r.options!==void 0&&(i.options=JSON.stringify(r.options)),r.verificationKey!==void 0&&(i.verification_key=r.verificationKey,delete i.verificationKey),delete i.id,J(e,A.pk(t),A.sk(n),i)},async remove(t,n){return G(e,A.pk(t),A.sk(n))}}}function tt(t){let{tenant_id:n,is_system:r,metadata:i,...a}=Y(t);return e.roleSchema.parse(X({...a,is_system:r?!0:void 0,metadata:i}))}function nt(e){return{async create(t,n){let r=new Date().toISOString(),i=o(),a={PK:j.pk(t),SK:j.sk(i),entityType:`ROLE`,tenant_id:t,id:i,name:n.name,description:n.description,is_system:n.is_system??!1,metadata:n.metadata,created_at:r,updated_at:r};return await W(e,a),tt(a)},async get(t,n){let r=await U(e,j.pk(t),j.sk(n));return r?tt(r):null},async list(t,n={}){let r=await q(e,j.pk(t),n,{skPrefix:`ROLE#`});return{roles:r.items.map(tt),start:r.start,limit:r.limit,length:r.length}},async update(t,n,r){let i={...r,updated_at:new Date().toISOString()};return delete i.id,J(e,j.pk(t),j.sk(n),i)},async remove(t,n){return G(e,j.pk(t),j.sk(n))}}}function rt(t){let{tenant_id:n,...r}=Y(t);return e.rolePermissionSchema.parse(X(r))}function it(e){return{async assign(t,n,r){let i=new Date().toISOString();for(let a of r)await W(e,{PK:M.pk(t,n),SK:M.sk(a.resource_server_identifier,a.permission_name),entityType:`ROLE_PERMISSION`,tenant_id:t,role_id:a.role_id,resource_server_identifier:a.resource_server_identifier,permission_name:a.permission_name,created_at:i,updated_at:i});return!0},async remove(t,n,r){for(let i of r)await G(e,M.pk(t,n),M.sk(i.resource_server_identifier,i.permission_name));return!0},async list(t,n,r={}){return(await q(e,M.pk(t,n),r,{skPrefix:M.skPrefix()})).items.map(rt)}}}function at(t){let{tenant_id:n,sources:r,...i}=Y(t),a=X({...i,resource_server_name:t.resource_server_name||t.resource_server_identifier,sources:r?JSON.parse(r):void 0});return e.userPermissionWithDetailsSchema.parse(a)}function ot(e){return{async create(t,n,r,i){let a=new Date().toISOString();return await W(e,{PK:N.pk(t,n,i),SK:N.sk(r.resource_server_identifier,r.permission_name),entityType:`USER_PERMISSION`,tenant_id:t,user_id:n,organization_id:i,resource_server_identifier:r.resource_server_identifier,permission_name:r.permission_name,created_at:a,updated_at:a}),!0},async remove(t,n,r,i){return G(e,N.pk(t,n,i),N.sk(r.resource_server_identifier,r.permission_name))},async list(t,n,r={},i){return(await q(e,N.pk(t,n,i),r,{skPrefix:N.skPrefix()})).items.map(at)}}}function st(t){let{tenant_id:n,...r}=Y(t);return e.roleSchema.parse(X(r))}function ct(e){return{async create(t,n,r,i){let a=new Date().toISOString();return await W(e,{PK:P.pk(t,n,i),SK:P.sk(r),entityType:`USER_ROLE`,tenant_id:t,user_id:n,organization_id:i,role_id:r,created_at:a,updated_at:a}),!0},async remove(t,n,r,i){return G(e,P.pk(t,n,i),P.sk(r))},async list(t,n,r={},i){let{items:a}=await K(e,P.pk(t,n,i),{skPrefix:P.skPrefix()}),o=[];for(let n of a){let r=await U(e,j.pk(t),j.sk(n.role_id));r&&o.push(st(r))}return o}}}function lt(t){let{tenant_id:n,...r}=Y(t),i=X({...r,branding:t.branding?JSON.parse(t.branding):void 0,metadata:t.metadata?JSON.parse(t.metadata):void 0,enabled_connections:t.enabled_connections?JSON.parse(t.enabled_connections):void 0,token_quota:t.token_quota?JSON.parse(t.token_quota):void 0});return e.organizationSchema.parse(i)}function ut(e){return{async create(t,n){let r=new Date().toISOString(),i=n.id||o(),a={PK:F.pk(t),SK:F.sk(i),GSI1PK:F.gsi1pk(t,n.name),GSI1SK:F.gsi1sk(),entityType:`ORGANIZATION`,tenant_id:t,id:i,name:n.name,display_name:n.display_name,branding:n.branding?JSON.stringify(n.branding):void 0,metadata:n.metadata?JSON.stringify(n.metadata):void 0,enabled_connections:n.enabled_connections?JSON.stringify(n.enabled_connections):void 0,token_quota:n.token_quota?JSON.stringify(n.token_quota):void 0,created_at:r,updated_at:r};return await W(e,a),lt(a)},async get(t,n){let r=await U(e,F.pk(t),F.sk(n));return r||=(await q(e,F.gsi1pk(t,n),{page:0,per_page:1},{indexName:`GSI1`,skPrefix:`ORGANIZATION`})).items[0]||null,r?lt(r):null},async list(t,n={}){let r=await q(e,F.pk(t),n,{skPrefix:`ORGANIZATION#`});return{organizations:r.items.map(lt),start:r.start,limit:r.limit,length:r.length}},async update(t,n,r){let i={...r,updated_at:new Date().toISOString()};return r.branding!==void 0&&(i.branding=JSON.stringify(r.branding)),r.metadata!==void 0&&(i.metadata=JSON.stringify(r.metadata)),r.enabled_connections!==void 0&&(i.enabled_connections=JSON.stringify(r.enabled_connections)),r.token_quota!==void 0&&(i.token_quota=JSON.stringify(r.token_quota)),delete i.id,J(e,F.pk(t),F.sk(n),i)},async remove(t,n){return G(e,F.pk(t),F.sk(n))}}}async function dt(e,t,n){let r=await U(e,p.pk(t),p.sk(n));if(r)return{name:r.name,strategy:r.strategy}}function ft(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}}function pt(e){return{async create(t,n,r){let i=new Date().toISOString(),a={PK:L.pk(t,n),SK:L.sk(r.connection_id),entityType:`ORGANIZATION_CONNECTION`,tenant_id:t,organization_id:n,connection_id:r.connection_id,assign_membership_on_login:r.assign_membership_on_login??!1,show_as_button:r.show_as_button??!0,is_signup_enabled:r.is_signup_enabled??!0,created_at:i,updated_at:i};return await W(e,a),ft(a,await dt(e,t,r.connection_id))},async list(t,n){let{items:r}=await K(e,L.pk(t,n),{skPrefix:L.skPrefix()}),i=[];for(let n of r){let r=await dt(e,t,n.connection_id);i.push(ft(n,r))}return i},async get(t,n,r){let i=await U(e,L.pk(t,n),L.sk(r));return i?ft(i,await dt(e,t,r)):null},async update(t,n,r,i){if(!await U(e,L.pk(t,n),L.sk(r)))return null;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),await J(e,L.pk(t,n),L.sk(r),a);let o=await U(e,L.pk(t,n),L.sk(r));return o?ft(o,await dt(e,t,r)):null},async remove(t,n,r){return await U(e,L.pk(t,n),L.sk(r))?G(e,L.pk(t,n),L.sk(r)):!1}}}function mt(t){let{tenant_id:n,...r}=Y(t);return e.userOrganizationSchema.parse(X(r))}function ht(t){let{tenant_id:n,...r}=Y(t),i=X({...r,branding:t.branding?JSON.parse(t.branding):void 0,metadata:t.metadata?JSON.parse(t.metadata):void 0,enabled_connections:t.enabled_connections?JSON.parse(t.enabled_connections):void 0,token_quota:t.token_quota?JSON.parse(t.token_quota):void 0});return e.organizationSchema.parse(i)}function gt(e){return{async create(t,n){let r=new Date().toISOString(),i=o(),a={PK:I.pk(t),SK:I.sk(i),GSI1PK:I.gsi1pk(t,n.user_id),GSI1SK:I.gsi1sk(n.organization_id),GSI2PK:I.gsi2pk(t,n.organization_id),GSI2SK:I.gsi2sk(n.user_id),entityType:`USER_ORGANIZATION`,tenant_id:t,id:i,user_id:n.user_id,organization_id:n.organization_id,created_at:r,updated_at:r};return await W(e,a),mt(a)},async get(t,n){let r=await U(e,I.pk(t),I.sk(n));return r?mt(r):null},async remove(t,n){return G(e,I.pk(t),I.sk(n))},async list(t,n={}){let r=await q(e,I.pk(t),n,{skPrefix:`USER_ORG#`});return{userOrganizations:r.items.map(mt),start:r.start,limit:r.limit,length:r.length}},async listUserOrganizations(t,n,r={}){let i=await q(e,I.gsi1pk(t,n),r,{indexName:`GSI1`,skPrefix:`USER_ORG#`}),a=[];for(let n of i.items){let r=await U(e,F.pk(t),F.sk(n.organization_id));r&&a.push(ht(r))}return{organizations:a,start:i.start,limit:i.limit,length:i.length}},async update(t,n,r){let i={...r,updated_at:new Date().toISOString()};return J(e,I.pk(t),I.sk(n),i)}}}function _t(t){let{tenant_id:n,...r}=Y(t),i=X({...r,inviter:t.inviter?JSON.parse(t.inviter):{},invitee:t.invitee?JSON.parse(t.invitee):{},app_metadata:t.app_metadata?JSON.parse(t.app_metadata):void 0,user_metadata:t.user_metadata?JSON.parse(t.user_metadata):void 0,roles:t.roles?JSON.parse(t.roles):void 0});return e.inviteSchema.parse(i)}function vt(e){return{async create(t,n){let r=new Date().toISOString(),i=o(),a=n.ttl_sec||604800,s=new Date(Date.now()+a*1e3).toISOString(),c={PK:R.pk(t),SK:R.sk(i),GSI1PK:R.gsi1pk(t,n.organization_id),GSI1SK:R.gsi1sk(i),entityType:`INVITE`,tenant_id:t,id:i,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,invitation_url:n.invitation_url,expires_at:s,app_metadata:n.app_metadata?JSON.stringify(n.app_metadata):void 0,user_metadata:n.user_metadata?JSON.stringify(n.user_metadata):void 0,roles:n.roles?JSON.stringify(n.roles):void 0,ttl_sec:a,send_invitation_email:n.send_invitation_email??!0,created_at:r,updated_at:r};return c.ttl=Math.floor(new Date(s).getTime()/1e3),await W(e,c),_t(c)},async get(t,n){let r=await U(e,R.pk(t),R.sk(n));return r?_t(r):null},async list(t,n={}){let r=await q(e,R.pk(t),n,{skPrefix:`INVITE#`});return{invites:r.items.map(_t),start:r.start,limit:r.limit,length:r.length}},async update(t,n,r){let i={...r,updated_at:new Date().toISOString()};return r.inviter!==void 0&&(i.inviter=JSON.stringify(r.inviter)),r.invitee!==void 0&&(i.invitee=JSON.stringify(r.invitee)),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)),delete i.id,J(e,R.pk(t),R.sk(n),i)},async remove(t,n){return G(e,R.pk(t),R.sk(n))}}}function yt(e){return{async get(t,n,r){let i=await U(e,H.pk(t),H.sk(n,r));if(!i)return null;try{return JSON.parse(i.custom_text)}catch{return null}},async set(t,n,r,i){let a=new Date().toISOString(),o=await U(e,H.pk(t),H.sk(n,r));await W(e,{PK:H.pk(t),SK:H.sk(n,r),entityType:`CUSTOM_TEXT`,tenant_id:t,prompt:n,language:r,custom_text:JSON.stringify(i),created_at:o?.created_at||a,updated_at:a})},async delete(t,n,r){await G(e,H.pk(t),H.sk(n,r))},async list(t){return(await K(e,H.pk(t),{skPrefix:H.skPrefix()})).items.map(e=>({prompt:e.prompt,language:e.language}))}}}function bt(t){let{tenant_id:n,...r}=Y(t);return e.authenticationMethodSchema.parse(X(r))}function xt(t){return{async create(e,n){let r=new Date().toISOString(),i=o(),a={PK:B.pk(e),SK:B.sk(i),GSI1PK:B.gsi1pk(e,n.user_id),GSI1SK:B.gsi1sk(i),entityType:`AUTHENTICATION_METHOD`,id:i,tenant_id:e,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:r,updated_at:r},s=bt(a);return await W(t,a),s},async get(e,n){let r=await U(t,B.pk(e),B.sk(n));return r?bt(r):null},async getByCredentialId(e,n){let r=(await K(t,B.pk(e),{skPrefix:`AUTHENTICATION_METHOD#`})).items.find(e=>e.credential_id===n);return r?bt(r):null},async list(e,n){return(await K(t,B.gsi1pk(e,n),{skPrefix:B.gsi1skPrefix(),indexName:`GSI1`})).items.map(bt)},async update(n,r,i){let a=await this.get(n,r);if(!a)throw Error(`Authentication method ${r} not found`);let o={...a,...i,updated_at:new Date().toISOString()};e.authenticationMethodSchema.parse(o);let s={updated_at:o.updated_at};return i.phone_number!==void 0&&(s.phone_number=i.phone_number),i.totp_secret!==void 0&&(s.totp_secret=i.totp_secret),i.credential_id!==void 0&&(s.credential_id=i.credential_id),i.public_key!==void 0&&(s.public_key=i.public_key),i.sign_count!==void 0&&(s.sign_count=i.sign_count),i.credential_backed_up!==void 0&&(s.credential_backed_up=i.credential_backed_up),i.transports!==void 0&&(s.transports=i.transports),i.friendly_name!==void 0&&(s.friendly_name=i.friendly_name),i.confirmed!==void 0&&(s.confirmed=i.confirmed),await J(t,B.pk(n),B.sk(r),s),e.authenticationMethodSchema.parse(o)},async remove(e,n){return G(t,B.pk(e),B.sk(n))}}}function St(t){if(!t)return{path:`/*`};try{let n=JSON.parse(t),r=e.matchSchema.safeParse(n);if(r.success)return r.data}catch{}return{path:`/*`}}function Ct(t){if(!t)return[];try{let n=JSON.parse(t);if(!Array.isArray(n))return[];let r=[];for(let t of n){let n=e.handlerConfigSchema.safeParse(t);n.success&&r.push(n.data)}return r}catch{return[]}}function wt(e){let{match:t,handlers:n,...r}=Y(e);return X({...r,match:St(t),handlers:Ct(n)})}function Tt(e){return[...e].sort((e,t)=>e.priority===t.priority?e.created_at.localeCompare(t.created_at):e.priority-t.priority)}function Et(e){return{async create(t,n){let r=new Date().toISOString(),i=o(),a={PK:S.pk(t),SK:S.sk(i),GSI1PK:S.gsi1pk(t,n.custom_domain_id),GSI1SK:S.gsi1sk(i),entityType:`PROXY_ROUTE`,tenant_id:t,id:i,custom_domain_id:n.custom_domain_id,priority:n.priority,match:JSON.stringify(n.match),handlers:JSON.stringify(n.handlers),created_at:r,updated_at:r};return await W(e,a),wt(a)},async get(t,n){let r=await U(e,S.pk(t),S.sk(n));return r?wt(r):null},async list(t,n={}){let r=n.page??0,i=n.per_page??50,a;if(n.custom_domain_id){let{items:r}=await K(e,S.gsi1pk(t,n.custom_domain_id),{indexName:`GSI1`});a=r}else{let{items:n}=await K(e,S.pk(t),{skPrefix:`PROXY_ROUTE#`});a=n}let o=Tt(a).slice(r*i,r*i+i);return{proxy_routes:o.map(wt),start:r*i,limit:i,length:o.length}},async update(t,n,r){let i={updated_at:new Date().toISOString()};return 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)),await U(e,S.pk(t),S.sk(n))?J(e,S.pk(t),S.sk(n),i):!1},async remove(t,n){return await U(e,S.pk(t),S.sk(n))?G(e,S.pk(t),S.sk(n)):!1}}}function Dt(t){if(!t)return null;let n;try{n=JSON.parse(t)}catch{return null}let r=e.matchSchema.safeParse(n);return r.success?r.data:null}function Ot(t){if(!t)return null;let n;try{n=JSON.parse(t)}catch{return null}if(!Array.isArray(n)||n.length===0)return null;let r=[];for(let t of n){let n=e.handlerConfigSchema.safeParse(t);if(!n.success)return null;r.push(n.data)}return r}function kt(e){let t=Dt(e.match),n=Ot(e.handlers);return t===null||n===null?null:{id:e.id,tenant_id:e.tenant_id,custom_domain_id:e.custom_domain_id,priority:e.priority,match:t,handlers:n,created_at:e.created_at,updated_at:e.updated_at}}async function At(e,t){let n=t.indexOf(`:`),r=n===-1?t:t.slice(0,n),i=(r.endsWith(`.`)?r.slice(0,-1):r).toLowerCase(),{items:a}=await K(e,x.gsi1pk(i),{indexName:`GSI1`,skValue:x.gsi1sk()}),o=a[0];if(!o)return null;let{items:s}=await K(e,S.gsi1pk(o.tenant_id,o.custom_domain_id),{indexName:`GSI1`}),c=s.map(kt).filter(e=>e!==null).sort((e,t)=>e.priority===t.priority?e.created_at.localeCompare(t.created_at):e.priority-t.priority);return{tenant_id:o.tenant_id,custom_domain_id:o.custom_domain_id,domain:o.domain,routes:c}}function jt(e){return{proxyRoutes:Et(e),resolveHost:t=>At(e,t)}}function Mt(e,t){let a={client:e,tableName:t.tableName},o={actions:n(),actionExecutions:r(),actionVersions:i(),branding:De(a),clients:ge(a),clientConnections:be(a),clientGrants:ve(a),clientRegistrationTokens:xe(a),codes:me(a),connections:Ce(a),customDomains:Le(a),emailProviders:Ke(a),emailTemplates:Je(a),flows:re(a),forms:Qe(a),hookCode:Ae(a),hooks:Me(a),invites:vt(a),keys:Pe(a),loginSessions:Te(a),logs:ze(a),authenticationMethods:xt(a),organizations:ut(a),organizationConnections:pt(a),passwords:fe(a),promptSettings:We(a),proxyRoutes:Et(a),refreshTokens:Xe(a),resourceServers:et(a),rolePermissions:it(a),roles:nt(a),sessions:ue(a),tenants:ae(a),themes:Ve(a),universalLoginTemplates:Oe(a),customText:yt(a),userOrganizations:gt(a),userPermissions:ot(a),userRoles:ct(a),users:ce(a),async transaction(e){if(o.outbox)throw Error(`DynamoDB adapter does not support atomic transactions. Cannot guarantee atomicity between entity writes and outbox events. Use a SQL-backed adapter for outbox-enabled tenants.`);return e(o)}};return o}exports.authenticationMethodKeys=B,exports.brandingKeys=g,exports.clientConnectionKeys=z,exports.clientGrantKeys=f,exports.clientKeys=d,exports.clientRegistrationTokenKeys=V,exports.codeKeys=m,exports.connectionKeys=p,exports.createAuthenticationMethodsAdapter=xt,exports.createBrandingAdapter=De,exports.createClientConnectionsAdapter=be,exports.createClientGrantsAdapter=ve,exports.createClientsAdapter=ge,exports.createCodesAdapter=me,exports.createConnectionsAdapter=Ce,exports.createCustomDomainsAdapter=Le,exports.createEmailProvidersAdapter=Ke,exports.createFlowsAdapter=re,exports.createFormsAdapter=Qe,exports.createHooksAdapter=Me,exports.createInvitesAdapter=vt,exports.createKeysAdapter=Pe,exports.createLoginSessionsAdapter=Te,exports.createLogsAdapter=ze,exports.createOrganizationConnectionsAdapter=pt,exports.createOrganizationsAdapter=ut,exports.createPasswordsAdapter=fe,exports.createPromptSettingsAdapter=We,exports.createProxyDataAdapter=jt,exports.createProxyRoutesAdapter=Et,exports.createRefreshTokensAdapter=Xe,exports.createResourceServersAdapter=et,exports.createRolePermissionsAdapter=it,exports.createRolesAdapter=nt,exports.createSessionsAdapter=ue,exports.createTenantsAdapter=ae,exports.createThemesAdapter=Ve,exports.createUserOrganizationsAdapter=gt,exports.createUserPermissionsAdapter=ot,exports.createUserRolesAdapter=ct,exports.createUsersAdapter=ce,exports.customDomainKeys=x,exports.customTextKeys=H,exports.default=Mt,exports.deleteItem=G,exports.emailProviderKeys=w,exports.emailTemplateKeys=T,exports.flowKeys=k,exports.formKeys=O,exports.getItem=U,exports.hookKeys=y,exports.inviteKeys=R,exports.keyKeys=b,exports.legacyClientKeys=ee,exports.logKeys=C,exports.loginSessionKeys=u,exports.organizationConnectionKeys=L,exports.organizationKeys=F,exports.passwordKeys=h,exports.promptSettingsKeys=E,exports.proxyRouteKeys=S,exports.putItem=W,exports.queryItems=K,exports.queryWithPagination=q,exports.refreshTokenKeys=D,exports.removeNullProperties=X,exports.resourceServerKeys=A,exports.roleKeys=j,exports.rolePermissionKeys=M,exports.sessionKeys=l,exports.stripDynamoDBFields=Y,exports.tenantKeys=s,exports.themeKeys=v,exports.transactWriteItems=te,exports.universalLoginTemplateKeys=_,exports.updateItem=J,exports.userKeys=c,exports.userOrganizationKeys=I,exports.userPermissionKeys=N,exports.userRoleKeys=P;
1
+ Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});let e=require("@authhero/adapter-interfaces"),t=require("@aws-sdk/lib-dynamodb");function n(){let e=e=>{throw Error(`Actions are not implemented in the AWS DynamoDB adapter (called ${e}). Use a SQL-backed adapter (kysely) for tenants that require actions.`)};return{create:()=>e(`create`),get:()=>e(`get`),list:()=>e(`list`),update:()=>e(`update`),remove:()=>e(`remove`)}}function r(){let e=e=>{throw Error(`Action executions are not implemented in the AWS DynamoDB adapter (called ${e}). Use a SQL-backed adapter (kysely) for tenants that require actions.`)};return{create:()=>e(`create`),get:()=>e(`get`)}}function i(){let e=e=>{throw Error(`Action versions are not implemented in the AWS DynamoDB adapter (called ${e}). Use a SQL-backed adapter (kysely) for tenants that require actions.`)};return{create:()=>e(`create`),get:()=>e(`get`),list:()=>e(`list`),removeForAction:()=>e(`removeForAction`)}}var a=`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`,o=(e=21)=>{let t=``,n=crypto.getRandomValues(new Uint8Array(e|=0));for(;e--;)t+=a[n[e]&63];return t},s={pk:e=>`TENANT#${e}`,sk:()=>`TENANT`,gsi1pk:()=>`TENANTS`,gsi1sk:e=>`TENANT#${e}`},c={pk:e=>`TENANT#${e}`,sk:e=>`USER#${e}`,gsi1pk:(e,t)=>`TENANT#${e}#EMAIL#${t.toLowerCase()}`,gsi1sk:()=>`USER`,gsi2pk:(e,t)=>`TENANT#${e}#CONNECTION#${t}`,gsi2sk:e=>`USER#${e}`},l={pk:e=>`TENANT#${e}`,sk:e=>`SESSION#${e}`,gsi1pk:(e,t)=>`TENANT#${e}#USER#${t}`,gsi1sk:e=>`SESSION#${e}`},u={pk:e=>`TENANT#${e}`,sk:e=>`LOGIN_SESSION#${e}`},d={pk:e=>`TENANT#${e}`,sk:e=>`CLIENT#${e}`},f={pk:e=>`TENANT#${e}`,sk:e=>`CLIENT_GRANT#${e}`,gsi1pk:(e,t)=>`TENANT#${e}#CLIENT#${t}`,gsi1sk:e=>`CLIENT_GRANT#${e}`},p={pk:e=>`TENANT#${e}`,sk:e=>`CONNECTION#${e}`,gsi1pk:(e,t)=>`TENANT#${e}#CONNECTION_NAME#${t}`,gsi1sk:()=>`CONNECTION`},m={pk:e=>`TENANT#${e}`,sk:(e,t)=>`CODE#${e}#${t}`,skPrefixByCodeId:e=>`CODE#${e}#`},h={pk:(e,t)=>`TENANT#${e}#USER#${t}`,sk:e=>`PASSWORD#${e}`,skPrefix:()=>`PASSWORD#`},g={pk:e=>`TENANT#${e}`,sk:()=>`BRANDING`},_={pk:e=>`TENANT#${e}`,sk:()=>`UNIVERSAL_LOGIN_TEMPLATE`},v={pk:e=>`TENANT#${e}`,sk:e=>`THEME#${e}`},y={pk:e=>`TENANT#${e}`,sk:e=>`HOOK#${e}`},b={pk:()=>`KEYS`,sk:e=>`KEY#${e}`},x={pk:e=>`TENANT#${e}`,sk:e=>`CUSTOM_DOMAIN#${e}`,gsi1pk:e=>`DOMAIN#${e}`,gsi1sk:()=>`CUSTOM_DOMAIN`},S={pk:e=>`TENANT#${e}`,sk:e=>`PROXY_ROUTE#${e}`,gsi1pk:(e,t)=>`TENANT#${e}#CUSTOM_DOMAIN#${t}`,gsi1sk:e=>`PROXY_ROUTE#${e}`},C={pk:e=>`TENANT#${e}`,sk:e=>`LOG#${e}`,gsi1pk:(e,t)=>`TENANT#${e}#LOG#${t}`,gsi1sk:e=>`LOG#${e}`},w={pk:e=>`TENANT#${e}`,sk:()=>`EMAIL_PROVIDER`},T={pk:e=>`TENANT#${e}`,sk:e=>`EMAIL_TEMPLATE#${e}`,skPrefix:()=>`EMAIL_TEMPLATE#`},E={pk:e=>`TENANT#${e}`,sk:()=>`PROMPT_SETTINGS`},D={pk:e=>`TENANT#${e}`,sk:e=>`REFRESH_TOKEN#${e}`,gsi1pk:(e,t)=>`TENANT#${e}#USER#${t}`,gsi1sk:e=>`REFRESH_TOKEN#${e}`,gsi2pk:(e,t)=>`TENANT#${e}#RT_LOOKUP#${t}`,gsi2sk:()=>`REFRESH_TOKEN`},O={pk:e=>`TENANT#${e}`,sk:e=>`FORM#${e}`},k={pk:e=>`TENANT#${e}`,sk:e=>`FLOW#${e}`},A={pk:e=>`TENANT#${e}`,sk:e=>`RESOURCE_SERVER#${e}`,gsi1pk:(e,t)=>`TENANT#${e}#RESOURCE_SERVER_ID#${t}`,gsi1sk:()=>`RESOURCE_SERVER`},j={pk:e=>`TENANT#${e}`,sk:e=>`ROLE#${e}`},M={pk:(e,t)=>`TENANT#${e}#ROLE#${t}`,sk:(e,t)=>`PERMISSION#${e}#${t}`,skPrefix:()=>`PERMISSION#`},N={pk:(e,t,n)=>n?`TENANT#${e}#ORG#${n}#USER#${t}`:`TENANT#${e}#USER#${t}`,sk:(e,t)=>`USER_PERMISSION#${e}#${t}`,skPrefix:()=>`USER_PERMISSION#`},P={pk:(e,t,n)=>n?`TENANT#${e}#ORG#${n}#USER#${t}`:`TENANT#${e}#USER#${t}`,sk:e=>`USER_ROLE#${e}`,skPrefix:()=>`USER_ROLE#`},F={pk:e=>`TENANT#${e}`,sk:e=>`ORGANIZATION#${e}`,gsi1pk:(e,t)=>`TENANT#${e}#ORG_NAME#${t}`,gsi1sk:()=>`ORGANIZATION`},I={pk:e=>`TENANT#${e}`,sk:e=>`USER_ORG#${e}`,gsi1pk:(e,t)=>`TENANT#${e}#USER#${t}`,gsi1sk:e=>`USER_ORG#${e}`,gsi2pk:(e,t)=>`TENANT#${e}#ORG#${t}`,gsi2sk:e=>`USER_ORG#${e}`},L={pk:(e,t)=>`TENANT#${e}#ORG#${t}`,sk:e=>`ORG_CONNECTION#${e}`,skPrefix:()=>`ORG_CONNECTION#`},R={pk:e=>`TENANT#${e}`,sk:e=>`INVITE#${e}`,gsi1pk:(e,t)=>`TENANT#${e}#ORG#${t}`,gsi1sk:e=>`INVITE#${e}`},ee={pk:()=>`LEGACY_CLIENTS`,sk:e=>`LEGACY_CLIENT#${e}`},z={pk:(e,t)=>`TENANT#${e}#CLIENT#${t}`,sk:(e,t)=>`CLIENT_CONNECTION#${String(t).padStart(5,`0`)}#${e}`,skPrefix:()=>`CLIENT_CONNECTION#`,gsi1pk:(e,t)=>`TENANT#${e}#CONNECTION#${t}`,gsi1sk:e=>`CLIENT_CONNECTION#${e}`},B={pk:e=>`TENANT#${e}`,sk:e=>`AUTHENTICATION_METHOD#${e}`,gsi1pk:(e,t)=>`TENANT#${e}#USER#${t}`,gsi1sk:e=>`AUTHENTICATION_METHOD#${e}`,gsi1skPrefix:()=>`AUTHENTICATION_METHOD#`},V={pk:e=>`TENANT#${e}`,sk:e=>`CLIENT_REGISTRATION_TOKEN#${e}`,skPrefix:()=>`CLIENT_REGISTRATION_TOKEN#`,gsi1pk:(e,t)=>`TENANT#${e}#CRT_HASH#${t}`,gsi1sk:()=>`CLIENT_REGISTRATION_TOKEN`,gsi2pk:(e,t)=>`TENANT#${e}#CLIENT#${t}`,gsi2sk:e=>`CLIENT_REGISTRATION_TOKEN#${e}`},H={pk:e=>`TENANT#${e}`,sk:(e,t)=>`CUSTOM_TEXT#${e}#${t}`,skPrefix:()=>`CUSTOM_TEXT#`};async function te(e,n){let r=n.map(t=>{if(t.type===`put`&&t.item)return{Put:{TableName:e.tableName,Item:t.item,ConditionExpression:t.conditionExpression}};if(t.type===`delete`&&t.pk&&t.sk)return{Delete:{TableName:e.tableName,Key:{PK:t.pk,SK:t.sk}}};throw Error(`Invalid transaction operation`)});await e.client.send(new t.TransactWriteCommand({TransactItems:r}))}async function U(e,n,r){return(await e.client.send(new t.GetCommand({TableName:e.tableName,Key:{PK:n,SK:r}}))).Item||null}async function W(e,n,r){await e.client.send(new t.PutCommand({TableName:e.tableName,Item:n,ConditionExpression:r?.conditionExpression}))}async function G(e,n,r){return await e.client.send(new t.DeleteCommand({TableName:e.tableName,Key:{PK:n,SK:r}})),!0}async function K(e,n,r){let{skPrefix:i,skValue:a,indexName:o,limit:s,startKey:c,scanIndexForward:l=!0}=r||{},u=o?`${o}PK = :pk`:`PK = :pk`,d={":pk":n};if(i){let e=o?`${o}SK`:`SK`;u+=` AND begins_with(${e}, :skPrefix)`,d[`:skPrefix`]=i}else if(a){let e=o?`${o}SK`:`SK`;u+=` AND ${e} = :sk`,d[`:sk`]=a}let f=await e.client.send(new t.QueryCommand({TableName:e.tableName,IndexName:o,KeyConditionExpression:u,ExpressionAttributeValues:d,Limit:s,ExclusiveStartKey:c,ScanIndexForward:l}));return{items:f.Items||[],lastKey:f.LastEvaluatedKey}}async function q(e,n,r={},i){let{page:a,per_page:o,include_totals:s=!1,from:c,take:l}=r,{skPrefix:u,indexName:d,scanIndexForward:f=!0}=i||{},p=l||o||50,m=c===void 0?(a||0)*p:parseInt(c,10),h=d?`${d}PK = :pk`:`PK = :pk`,g={":pk":n};if(u){let e=d?`${d}SK`:`SK`;h+=` AND begins_with(${e}, :skPrefix)`,g[`:skPrefix`]=u}let _=[],v,y=0,b=m+p;for(;y<b;){let n=await e.client.send(new t.QueryCommand({TableName:e.tableName,IndexName:d,KeyConditionExpression:h,ExpressionAttributeValues:g,Limit:Math.min(b-y,1e3),ExclusiveStartKey:v,ScanIndexForward:f})),r=n.Items||[];if(_=_.concat(r),y+=r.length,v=n.LastEvaluatedKey,!v)break}let x=_.slice(m,m+p),S=_.length;if(s&&v){let n=v;for(;n;){let r=await e.client.send(new t.QueryCommand({TableName:e.tableName,IndexName:d,KeyConditionExpression:h,ExpressionAttributeValues:g,Select:`COUNT`,ExclusiveStartKey:n}));S+=r.Count||0,n=r.LastEvaluatedKey}}return{items:x,start:m,limit:p,length:x.length,total:s?S:void 0}}async function J(e,n,r,i){let a=Object.entries(i).filter(([,e])=>e!==void 0);if(a.length===0)return!0;let o=`SET `+a.map(([e],t)=>`#attr${t} = :val${t}`).join(`, `),s={},c={};return a.forEach(([e,t],n)=>{s[`#attr${n}`]=e,c[`:val${n}`]=t}),await e.client.send(new t.UpdateCommand({TableName:e.tableName,Key:{PK:n,SK:r},UpdateExpression:o,ConditionExpression:`attribute_exists(PK)`,ExpressionAttributeNames:s,ExpressionAttributeValues:c})),!0}function Y(e){let{PK:t,SK:n,GSI1PK:r,GSI1SK:i,GSI2PK:a,GSI2SK:o,entityType:s,ttl:c,...l}=e;return l}function X(e){let t={...e};for(let e in t)(t[e]===null||t[e]===void 0)&&delete t[e];return t}function ne(t){let{tenant_id:n,...r}=Y(t),i=[];if(t.actions)try{i=JSON.parse(t.actions)}catch{console.error(`Failed to parse actions JSON for flow ${t.id}`)}let a=X({...r,actions:i});return e.flowSchema.parse(a)}function re(e){return{async create(t,n){let r=new Date().toISOString(),i=`af_${o()}`,a={PK:k.pk(t),SK:k.sk(i),entityType:`FLOW`,tenant_id:t,id:i,name:n.name,actions:n.actions?JSON.stringify(n.actions):void 0,created_at:r,updated_at:r};return await W(e,a),ne(a)},async get(t,n){let r=await U(e,k.pk(t),k.sk(n));return r?ne(r):null},async list(t,n={}){let r=await q(e,k.pk(t),n,{skPrefix:`FLOW#`});return{flows:r.items.map(ne),start:r.start,limit:r.limit,length:r.length}},async update(t,n,r){let i={updated_at:new Date().toISOString()};return r.name!==void 0&&(i.name=r.name),r.actions!==void 0&&(i.actions=JSON.stringify(r.actions)),await J(e,k.pk(t),k.sk(n),i)?this.get(t,n):null},async remove(t,n){return G(e,k.pk(t),k.sk(n))}}}function ie(t){let n=Y(t);return e.tenantSchema.parse(X(n))}function ae(e){return{async create(t){let n=new Date().toISOString(),r=t.id||o(),i={PK:s.pk(r),SK:s.sk(),GSI1PK:s.gsi1pk(),GSI1SK:s.gsi1sk(r),entityType:`TENANT`,id:r,audience:t.audience,friendly_name:t.friendly_name,sender_name:t.sender_name,sender_email:t.sender_email,session_lifetime:t.session_lifetime,idle_session_lifetime:t.idle_session_lifetime,created_at:n,updated_at:n};return await W(e,i),ie(i)},async get(t){let n=await U(e,s.pk(t),s.sk());return n?ie(n):null},async list(t={}){let{include_totals:n=!1}=t,r=await q(e,s.gsi1pk(),t,{indexName:`GSI1`,skPrefix:`TENANT#`}),i=r.items.map(ie);return n?{tenants:i,totals:{start:r.start,limit:r.limit,length:r.length}}:{tenants:i}},async update(t,n){let r={...n,updated_at:new Date().toISOString()};await J(e,s.pk(t),s.sk(),r)},async remove(t){return G(e,s.pk(t),s.sk())}}}var oe=class extends Error{res;status;constructor(e=500,t){super(t?.message,{cause:t?.cause}),this.res=t?.res,this.status=e}getResponse(){return this.res?new Response(this.res.body,{status:this.status,headers:this.res.headers}):new Response(this.message,{status:this.status})}};function se(t,n=[]){let{tenant_id:r,...i}=Y(t),a=X({...i,app_metadata:JSON.parse(t.app_metadata||`{}`),user_metadata:JSON.parse(t.user_metadata||`{}`),identities:[{connection:t.connection,provider:t.provider,user_id:(0,e.parseUserId)(t.user_id).id,isSocial:t.is_social,...t.email?{email:t.email}:{},...t.email_verified===void 0?{}:{email_verified:!!t.email_verified},...t.phone_number?{phone_number:t.phone_number}:{},...t.phone_verified===void 0?{}:{phone_verified:!!t.phone_verified},...t.username?{username:t.username}:{}},...n.map(t=>({connection:t.connection,provider:t.provider,user_id:(0,e.parseUserId)(t.user_id).id,isSocial:t.is_social,...t.email?{email:t.email}:{},...t.email_verified===void 0?{}:{email_verified:!!t.email_verified},...t.phone_number?{phone_number:t.phone_number}:{},...t.phone_verified===void 0?{}:{phone_verified:!!t.phone_verified},...t.username?{username:t.username}:{}}))]});return e.userSchema.parse(a)}function ce(e){let t=async(t,n)=>{let r=new Date().toISOString(),i=n.user_id||`${n.provider}|${o()}`,a={PK:c.pk(t),SK:c.sk(i),entityType:`USER`,tenant_id:t,user_id:i,email:n.email,username:n.username,phone_number:n.phone_number,given_name:n.given_name,family_name:n.family_name,nickname:n.nickname,name:n.name,picture:n.picture,locale:n.locale,linked_to:n.linked_to,profileData:n.profileData,email_verified:n.email_verified??!1,last_ip:n.last_ip,last_login:n.last_login,provider:n.provider||`auth`,connection:n.connection,is_social:n.is_social??!1,login_count:0,app_metadata:JSON.stringify(n.app_metadata||{}),user_metadata:JSON.stringify(n.user_metadata||{}),middle_name:n.middle_name,preferred_username:n.preferred_username,profile:n.profile,website:n.website,gender:n.gender,birthdate:n.birthdate,zoneinfo:n.zoneinfo,created_at:r,updated_at:r};n.email&&(a.GSI1PK=c.gsi1pk(t,n.email),a.GSI1SK=c.gsi1sk()),a.GSI2PK=c.gsi2pk(t,n.connection),a.GSI2SK=c.gsi2sk(i);try{if(n.password){let s=o(),c={PK:h.pk(t,i),SK:h.sk(s),entityType:`PASSWORD`,id:s,tenant_id:t,user_id:i,password:n.password.hash,algorithm:n.password.algorithm,is_current:!0,created_at:r,updated_at:r};await te(e,[{type:`put`,item:a,conditionExpression:`attribute_not_exists(PK)`},{type:`put`,item:c}])}else await W(e,a,{conditionExpression:`attribute_not_exists(PK)`})}catch(e){throw e.name===`ConditionalCheckFailedException`||e.name===`TransactionCanceledException`&&(e.CancellationReasons||[]).some(e=>e?.Code===`ConditionalCheckFailed`)?new oe(409,{message:`User already exists`}):e}return se(a)};return{create:t,rawCreate:t,async get(t,n){let[r,i]=await Promise.all([U(e,c.pk(t),c.sk(n)),K(e,c.pk(t),{skPrefix:`USER#`}).then(e=>e.items.filter(e=>e.linked_to===n))]);return r?se(r,i):null},async list(t,n={}){let r=await q(e,c.pk(t),n,{skPrefix:`USER#`}),i=r.items.filter(e=>!e.linked_to),a=r.items.filter(e=>e.linked_to);return{users:i.map(e=>se(e,a.filter(t=>t.linked_to===e.user_id))),start:r.start,limit:r.limit,length:r.length}},async update(t,n,r){let i={...r,updated_at:new Date().toISOString()};return 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)),delete i.user_id,delete i.identities,J(e,c.pk(t),c.sk(n),i)},async remove(t,n){return G(e,c.pk(t),c.sk(n))},async unlink(t,n,r,i){let a=`${r}|${i}`;return G(e,c.pk(t),c.sk(a))}}}function le(t){let{tenant_id:n,...r}=Y(t),i=X({...r,device:JSON.parse(t.device||`{}`),clients:JSON.parse(t.clients||`[]`)});return e.sessionSchema.parse(i)}function ue(e){return{async create(t,n){let r=new Date().toISOString(),i={PK:l.pk(t),SK:l.sk(n.id),GSI1PK:l.gsi1pk(t,n.user_id),GSI1SK:l.gsi1sk(n.id),entityType:`SESSION`,tenant_id:t,id:n.id,user_id:n.user_id,login_session_id:n.login_session_id,revoked_at:n.revoked_at,used_at:n.used_at,expires_at:n.expires_at,idle_expires_at:n.idle_expires_at,authenticated_at:r,last_interaction_at:r,device:JSON.stringify(n.device||{}),clients:JSON.stringify(n.clients||[]),created_at:r,updated_at:r};return n.expires_at&&(i.ttl=Math.floor(new Date(n.expires_at).getTime()/1e3)),await W(e,i),le(i)},async get(t,n){let r=await U(e,l.pk(t),l.sk(n));return r?le(r):null},async list(t,n={}){let r=await q(e,l.pk(t),n,{skPrefix:`SESSION#`});return{sessions:r.items.map(le),start:r.start,limit:r.limit,length:r.length}},async update(t,n,r){let i={...r,updated_at:new Date().toISOString()};return r.device!==void 0&&(i.device=JSON.stringify(r.device)),r.clients!==void 0&&(i.clients=JSON.stringify(r.clients)),r.expires_at&&(i.ttl=Math.floor(new Date(r.expires_at).getTime()/1e3)),delete i.id,J(e,l.pk(t),l.sk(n),i)},async remove(t,n){return G(e,l.pk(t),l.sk(n))}}}function de(t){let{tenant_id:n,...r}=Y(t);return e.passwordSchema.parse(X(r))}function fe(e){return{async create(t,n){let r=new Date().toISOString(),i=o(),a=await this.list(t,n.user_id);for(let i of a)i.is_current&&await J(e,h.pk(t,n.user_id),h.sk(i.id),{is_current:!1,updated_at:r});let s={PK:h.pk(t,n.user_id),SK:h.sk(i),entityType:`PASSWORD`,id:i,tenant_id:t,user_id:n.user_id,password:n.password,algorithm:n.algorithm||`bcrypt`,is_current:!0,created_at:r,updated_at:r};return await W(e,s),de(s)},async update(e,t){return await this.create(e,t),!0},async get(t,n){let{items:r}=await K(e,h.pk(t,n),{skPrefix:h.skPrefix()}),i=r.find(e=>e.is_current);return i?de(i):null},async list(t,n,r){let{items:i}=await K(e,h.pk(t,n),{skPrefix:h.skPrefix(),limit:r});return i.map(de)}}}function pe(t){let{tenant_id:n,...r}=Y(t);return e.codeSchema.parse(X(r))}function me(e){return{async create(t,n){let r=new Date().toISOString(),i={PK:m.pk(t),SK:m.sk(n.code_id,n.code_type),entityType:`CODE`,code_id:n.code_id,tenant_id:t,code_type:n.code_type,login_id:n.login_id,connection_id:n.connection_id,code_verifier:n.code_verifier,code_challenge:n.code_challenge,code_challenge_method:n.code_challenge_method,nonce:n.nonce,state:n.state,redirect_uri:n.redirect_uri,user_id:n.user_id,used_at:n.used_at,expires_at:n.expires_at,created_at:r,updated_at:r};return i.ttl=Math.floor(new Date(n.expires_at).getTime()/1e3),await W(e,i),pe(i)},async get(t,n,r){let i=await U(e,m.pk(t),m.sk(n,r));return i?pe(i):null},async list(t,n={}){let r=await q(e,m.pk(t),n,{skPrefix:`CODE#`});return{codes:r.items.map(pe),start:r.start,limit:r.limit,length:r.length}},async used(t,n){let{items:r}=await K(e,m.pk(t),{skPrefix:m.skPrefixByCodeId(n),limit:1}),i=r[0];return i?J(e,m.pk(t),m.sk(n,i.code_type),{used_at:new Date().toISOString()}):!1},async consume(n,r){let{items:i}=await K(e,m.pk(n),{skPrefix:m.skPrefixByCodeId(r),limit:1}),a=i[0];if(!a)return!1;try{return await e.client.send(new t.UpdateCommand({TableName:e.tableName,Key:{PK:m.pk(n),SK:m.sk(r,a.code_type)},UpdateExpression:`SET #used_at = :now`,ConditionExpression:`attribute_not_exists(#used_at) OR #used_at = :null`,ExpressionAttributeNames:{"#used_at":`used_at`},ExpressionAttributeValues:{":now":new Date().toISOString(),":null":null}})),!0}catch(e){if(e.name===`ConditionalCheckFailedException`)return!1;throw e}},async remove(t,n){let{items:r}=await K(e,m.pk(t),{skPrefix:m.skPrefixByCodeId(n),limit:1}),i=r[0];return i?G(e,m.pk(t),m.sk(n,i.code_type)):!1}}}function Z(t){let{tenant_id:n,...r}=Y(t),i=X({...r,callbacks:t.callbacks?JSON.parse(t.callbacks):void 0,allowed_origins:t.allowed_origins?JSON.parse(t.allowed_origins):void 0,web_origins:t.web_origins?JSON.parse(t.web_origins):void 0,client_aliases:t.client_aliases?JSON.parse(t.client_aliases):void 0,allowed_clients:t.allowed_clients?JSON.parse(t.allowed_clients):void 0,connections:t.connections?JSON.parse(t.connections):void 0,allowed_logout_urls:t.allowed_logout_urls?JSON.parse(t.allowed_logout_urls):void 0,session_transfer:t.session_transfer?JSON.parse(t.session_transfer):void 0,oidc_logout:t.oidc_logout?JSON.parse(t.oidc_logout):void 0,grant_types:t.grant_types?JSON.parse(t.grant_types):void 0,jwt_configuration:t.jwt_configuration?JSON.parse(t.jwt_configuration):void 0,signing_keys:t.signing_keys?JSON.parse(t.signing_keys):void 0,encryption_key:t.encryption_key?JSON.parse(t.encryption_key):void 0,addons:t.addons?JSON.parse(t.addons):void 0,client_metadata:t.client_metadata?JSON.parse(t.client_metadata):void 0,mobile:t.mobile?JSON.parse(t.mobile):void 0,native_social_login:t.native_social_login?JSON.parse(t.native_social_login):void 0,refresh_token:t.refresh_token?JSON.parse(t.refresh_token):void 0,default_organization:t.default_organization?JSON.parse(t.default_organization):void 0,client_authentication_methods:t.client_authentication_methods?JSON.parse(t.client_authentication_methods):void 0,signed_request_object:t.signed_request_object?JSON.parse(t.signed_request_object):void 0,token_quota:t.token_quota?JSON.parse(t.token_quota):void 0});return e.clientSchema.parse(i)}function he(e){return{...Z(e),tenant_id:e.tenant_id}}function ge(e){return{async create(t,n){let r=new Date().toISOString(),i=n.client_id??o(),a={PK:d.pk(t),SK:d.sk(i),entityType:`CLIENT`,tenant_id:t,client_id:i,name:n.name,client_secret:n.client_secret,description:n.description,logo_uri:n.logo_uri,app_type:n.app_type,token_endpoint_auth_method:n.token_endpoint_auth_method,initiate_login_uri:n.initiate_login_uri,cross_origin_loc:n.cross_origin_loc,custom_login_page:n.custom_login_page,custom_login_page_preview:n.custom_login_page_preview,form_template:n.form_template,organization_usage:n.organization_usage,organization_require_behavior:n.organization_require_behavior,compliance_level:n.compliance_level,par_request_expiry:n.par_request_expiry,global:n.global??!1,is_first_party:n.is_first_party??!1,oidc_conformant:n.oidc_conformant??!0,auth0_conformant:n.auth0_conformant??!0,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,callbacks:n.callbacks?JSON.stringify(n.callbacks):void 0,allowed_origins:n.allowed_origins?JSON.stringify(n.allowed_origins):void 0,web_origins:n.web_origins?JSON.stringify(n.web_origins):void 0,client_aliases:n.client_aliases?JSON.stringify(n.client_aliases):void 0,allowed_clients:n.allowed_clients?JSON.stringify(n.allowed_clients):void 0,connections:n.connections?JSON.stringify(n.connections):void 0,allowed_logout_urls:n.allowed_logout_urls?JSON.stringify(n.allowed_logout_urls):void 0,session_transfer:n.session_transfer?JSON.stringify(n.session_transfer):void 0,oidc_logout:n.oidc_logout?JSON.stringify(n.oidc_logout):void 0,grant_types:n.grant_types?JSON.stringify(n.grant_types):void 0,jwt_configuration:n.jwt_configuration?JSON.stringify(n.jwt_configuration):void 0,signing_keys:n.signing_keys?JSON.stringify(n.signing_keys):void 0,encryption_key:n.encryption_key?JSON.stringify(n.encryption_key):void 0,addons:n.addons?JSON.stringify(n.addons):void 0,client_metadata:n.client_metadata?JSON.stringify(n.client_metadata):void 0,mobile:n.mobile?JSON.stringify(n.mobile):void 0,native_social_login:n.native_social_login?JSON.stringify(n.native_social_login):void 0,refresh_token:n.refresh_token?JSON.stringify(n.refresh_token):void 0,default_organization:n.default_organization?JSON.stringify(n.default_organization):void 0,client_authentication_methods:n.client_authentication_methods?JSON.stringify(n.client_authentication_methods):void 0,signed_request_object:n.signed_request_object?JSON.stringify(n.signed_request_object):void 0,token_quota:n.token_quota?JSON.stringify(n.token_quota):void 0,created_at:r,updated_at:r};return await W(e,a),Z(a)},async get(t,n){let r=await U(e,d.pk(t),d.sk(n));return r?Z(r):null},async getByClientId(t){let n=await U(e,ee.pk(),ee.sk(t));if(!n?.tenant_id)return null;let r=await U(e,d.pk(n.tenant_id),d.sk(t));return r?he(r):null},async list(t,n={}){let r=await q(e,d.pk(t),n,{skPrefix:`CLIENT#`}),i=r.items.map(Z);return n.include_totals?{clients:i,totals:{start:r.start,limit:r.limit,length:r.length}}:{clients:i}},async update(t,n,r){let i={...r,updated_at:new Date().toISOString()};for(let e of[`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`])r[e]!==void 0&&(i[e]=JSON.stringify(r[e]));return delete i.client_id,J(e,d.pk(t),d.sk(n),i)},async remove(t,n){return G(e,d.pk(t),d.sk(n))}}}function _e(t){let{tenant_id:n,...r}=Y(t),i=X({...r,scope:t.scope?JSON.parse(t.scope):void 0,authorization_details_types:t.authorization_details_types?JSON.parse(t.authorization_details_types):void 0});return e.clientGrantSchema.parse(i)}function ve(e){return{async create(t,n){let r=new Date().toISOString(),i=o(),a={PK:f.pk(t),SK:f.sk(i),GSI1PK:f.gsi1pk(t,n.client_id),GSI1SK:f.gsi1sk(n.audience),entityType:`CLIENT_GRANT`,tenant_id:t,id:i,client_id:n.client_id,audience:n.audience,scope:n.scope?JSON.stringify(n.scope):void 0,organization_usage:n.organization_usage,allow_any_organization:n.allow_any_organization,is_system:n.is_system,subject_type:n.subject_type,authorization_details_types:n.authorization_details_types?JSON.stringify(n.authorization_details_types):void 0,created_at:r,updated_at:r};return await W(e,a),_e(a)},async get(t,n){let r=await U(e,f.pk(t),f.sk(n));return r?_e(r):null},async list(t,n={}){let r=await q(e,f.pk(t),n,{skPrefix:`CLIENT_GRANT#`});return{client_grants:r.items.map(_e),start:r.start,limit:r.limit,length:r.length}},async update(t,n,r){let i={...r,updated_at:new Date().toISOString()};return r.scope!==void 0&&(i.scope=JSON.stringify(r.scope)),r.authorization_details_types!==void 0&&(i.authorization_details_types=JSON.stringify(r.authorization_details_types)),delete i.id,J(e,f.pk(t),f.sk(n),i)},async remove(t,n){return G(e,f.pk(t),f.sk(n))}}}function ye(t){let{tenant_id:n,...r}=Y(t),i=X({...r,options:t.options?JSON.parse(t.options):void 0});return e.connectionSchema.parse(i)}function be(e){return{async listByClient(t,n){let{items:r}=await K(e,z.pk(t,n),{skPrefix:z.skPrefix()});r.sort((e,t)=>e.order-t.order);let i=[];for(let n of r){let r=await U(e,p.pk(t),p.sk(n.connection_id));r&&i.push(ye(r))}return i},async updateByClient(n,r,i){let{items:a}=await K(e,z.pk(n,r),{skPrefix:z.skPrefix()});if(a.length>0){let i=a.map(e=>({DeleteRequest:{Key:{PK:z.pk(n,r),SK:z.sk(e.connection_id,e.order)}}}));for(let n=0;n<i.length;n+=25){let r=i.slice(n,n+25);await e.client.send(new t.BatchWriteCommand({RequestItems:{[e.tableName]:r}}))}}let o=new Date().toISOString();for(let t=0;t<i.length;t++){let a=i[t];await W(e,{PK:z.pk(n,r),SK:z.sk(a,t),GSI1PK:z.gsi1pk(n,a),GSI1SK:z.gsi1sk(r),entityType:`CLIENT_CONNECTION`,tenant_id:n,client_id:r,connection_id:a,order:t,created_at:o,updated_at:o})}return!0},async listByConnection(t,n){let{items:r}=await K(e,z.gsi1pk(t,n),{indexName:`GSI1`,skPrefix:`CLIENT_CONNECTION#`});return r.map(e=>e.client_id)},async addClientToConnection(t,n,r){let{items:i}=await K(e,z.pk(t,r),{skPrefix:z.skPrefix()});if(i.some(e=>e.connection_id===n))return!0;let a=i.length,o=new Date().toISOString();return await W(e,{PK:z.pk(t,r),SK:z.sk(n,a),GSI1PK:z.gsi1pk(t,n),GSI1SK:z.gsi1sk(r),entityType:`CLIENT_CONNECTION`,tenant_id:t,client_id:r,connection_id:n,order:a,created_at:o,updated_at:o}),!0},async removeClientFromConnection(t,n,r){let{items:i}=await K(e,z.pk(t,r),{skPrefix:z.skPrefix()}),a=i.find(e=>e.connection_id===n);return a?G(e,z.pk(t,r),z.sk(n,a.order)):!1}}}function Q(t){let{tenant_id:n,constraints:r,...i}=Y(t),a=X({...i,constraints:r?JSON.parse(r):void 0});return e.clientRegistrationTokenSchema.parse(a)}function xe(e){return{async create(t,n){let r=new Date().toISOString(),i={PK:V.pk(t),SK:V.sk(n.id),GSI1PK:V.gsi1pk(t,n.token_hash),GSI1SK:V.gsi1sk(),entityType:`CLIENT_REGISTRATION_TOKEN`,tenant_id:t,id:n.id,token_hash:n.token_hash,type:n.type,client_id:n.client_id,sub:n.sub,constraints:n.constraints?JSON.stringify(n.constraints):void 0,single_use:n.single_use,expires_at:n.expires_at,created_at:r,updated_at:r};return n.client_id&&(i.GSI2PK=V.gsi2pk(t,n.client_id),i.GSI2SK=V.gsi2sk(n.id)),n.expires_at&&(i.ttl=Math.floor(new Date(n.expires_at).getTime()/1e3)),await W(e,i),Q(i)},async get(t,n){let r=await U(e,V.pk(t),V.sk(n));return r?Q(r):null},async getByHash(t,n){let r=await K(e,V.gsi1pk(t,n),{indexName:`GSI1`,skValue:V.gsi1sk(),limit:1});return r.items[0]?Q(r.items[0]):null},async listByClient(t,n){return(await K(e,V.gsi2pk(t,n),{indexName:`GSI2`,skPrefix:V.skPrefix(),scanIndexForward:!1})).items.map(Q)},async markUsed(n,r,i){try{return await e.client.send(new t.UpdateCommand({TableName:e.tableName,Key:{PK:V.pk(n),SK:V.sk(r)},UpdateExpression:`SET #used_at = :used_at, #updated_at = :updated_at`,ConditionExpression:`attribute_exists(PK) AND attribute_not_exists(#used_at)`,ExpressionAttributeNames:{"#used_at":`used_at`,"#updated_at":`updated_at`},ExpressionAttributeValues:{":used_at":i,":updated_at":new Date().toISOString()}})),!0}catch(e){if(e?.name===`ConditionalCheckFailedException`)return!1;throw e}},async revoke(n,r,i){try{return await e.client.send(new t.UpdateCommand({TableName:e.tableName,Key:{PK:V.pk(n),SK:V.sk(r)},UpdateExpression:`SET #revoked_at = :revoked_at, #updated_at = :updated_at`,ConditionExpression:`attribute_exists(PK)`,ExpressionAttributeNames:{"#revoked_at":`revoked_at`,"#updated_at":`updated_at`},ExpressionAttributeValues:{":revoked_at":i,":updated_at":new Date().toISOString()}})),!0}catch(e){if(e?.name===`ConditionalCheckFailedException`)return!1;throw e}},async revokeByClient(n,r,i){let a=await K(e,V.gsi2pk(n,r),{indexName:`GSI2`,skPrefix:V.skPrefix()}),o=0,s=new Date().toISOString();for(let n of a.items)if(!n.revoked_at)try{await e.client.send(new t.UpdateCommand({TableName:e.tableName,Key:{PK:n.PK,SK:n.SK},UpdateExpression:`SET #revoked_at = :revoked_at, #updated_at = :updated_at`,ConditionExpression:`attribute_exists(PK) AND attribute_not_exists(#revoked_at)`,ExpressionAttributeNames:{"#revoked_at":`revoked_at`,"#updated_at":`updated_at`},ExpressionAttributeValues:{":revoked_at":i,":updated_at":s}})),o++}catch(e){if(e?.name===`ConditionalCheckFailedException`)continue;throw e}return o},async remove(t,n){return G(e,V.pk(t),V.sk(n))}}}function Se(t){let{tenant_id:n,is_system:r,...i}=Y(t),a=X({...i,options:t.options?JSON.parse(t.options):void 0,is_system:r?!0:void 0});return e.connectionSchema.parse(a)}function Ce(e){return{async create(t,n){let r=new Date().toISOString(),i=n.id||o(),a={PK:p.pk(t),SK:p.sk(i),GSI1PK:p.gsi1pk(t,n.name),GSI1SK:p.gsi1sk(),entityType:`CONNECTION`,tenant_id:t,id:i,name:n.name,strategy:n.strategy,options:n.options?JSON.stringify(n.options):void 0,is_system:n.is_system??!1,created_at:r,updated_at:r};return await W(e,a),Se(a)},async get(t,n){let r=await U(e,p.pk(t),p.sk(n));return r?Se(r):null},async list(t,n={}){let r=await q(e,p.pk(t),n,{skPrefix:`CONNECTION#`});return{connections:r.items.map(Se),start:r.start,limit:r.limit,length:r.length}},async update(t,n,r){let i={...r,updated_at:new Date().toISOString()};return r.options!==void 0&&(i.options=JSON.stringify(r.options)),r.name!==void 0&&(i.GSI1PK=p.gsi1pk(t,r.name),i.GSI1SK=p.gsi1sk()),delete i.id,J(e,p.pk(t),p.sk(n),i)},async remove(t,n){return G(e,p.pk(t),p.sk(n))}}}function we(t){let{tenant_id:n,authParams:r,...i}=Y(t),a=X({...i,authParams:JSON.parse(r)});return e.loginSessionSchema.parse(a)}function Te(t){return{async create(n,r){let i=new Date().toISOString(),a=o(),s={PK:u.pk(n),SK:u.sk(a),entityType:`LOGIN_SESSION`,tenant_id:n,id:a,csrf_token:r.csrf_token,authParams:JSON.stringify(r.authParams),expires_at:r.expires_at,state:r.state??e.LoginSessionState.PENDING,state_data:r.state_data,failure_reason:r.failure_reason,user_id:r.user_id,auth0Client:r.auth0Client,deleted_at:r.deleted_at,ip:r.ip,useragent:r.useragent,session_id:r.session_id,authorization_url:r.authorization_url?.slice(0,1024),created_at:i,updated_at:i};return s.ttl=Math.floor(new Date(r.expires_at).getTime()/1e3),await W(t,s),we(s)},async get(e,n){let r=await U(t,u.pk(e),u.sk(n));return r?we(r):null},async update(e,n,r){let i={...r,updated_at:new Date().toISOString()};return r.authParams!==void 0&&(i.authParams=JSON.stringify(r.authParams)),delete i.id,J(t,u.pk(e),u.sk(n),i)},async remove(e,n){return G(t,u.pk(e),u.sk(n))}}}function Ee(t){let{tenant_id:n,...r}=Y(t),i=X({...r,colors:t.colors?JSON.parse(t.colors):void 0,font:t.font?JSON.parse(t.font):void 0});return e.brandingSchema.parse(i)}function De(e){return{async set(t,n){let r=new Date().toISOString(),i=await U(e,g.pk(t),g.sk());await W(e,{PK:g.pk(t),SK:g.sk(),entityType:`BRANDING`,tenant_id:t,colors:n.colors?JSON.stringify(n.colors):void 0,favicon_url:n.favicon_url,logo_url:n.logo_url,powered_by_logo_url:n.powered_by_logo_url,font:n.font?JSON.stringify(n.font):void 0,created_at:i?.created_at||r,updated_at:r})},async get(t){let n=await U(e,g.pk(t),g.sk());return n?Ee(n):null}}}function Oe(e){return{async get(t){let n=await U(e,_.pk(t),_.sk());return n?{body:n.body}:null},async set(t,n){let r=new Date().toISOString(),i=await U(e,_.pk(t),_.sk());await W(e,{PK:_.pk(t),SK:_.sk(),entityType:`UNIVERSAL_LOGIN_TEMPLATE`,tenant_id:t,body:n.body,created_at:i?.created_at||r,updated_at:r})},async delete(t){await G(e,_.pk(t),_.sk())}}}var $={pk:e=>`TENANT#${e}`,sk:e=>`HOOK_CODE#${e}`};function ke(e){let{tenant_id:t,secrets:n,...r}=Y(e);return{...r,tenant_id:t,secrets:n?JSON.parse(n):void 0}}function Ae(e){return{async create(t,n){let r=new Date().toISOString(),i=`hc_${o()}`,a={PK:$.pk(t),SK:$.sk(i),entityType:`HOOK_CODE`,id:i,tenant_id:t,code:n.code,secrets:n.secrets?JSON.stringify(n.secrets):null,created_at:r,updated_at:r};return await W(e,a),ke(a)},async get(t,n){let r=await U(e,$.pk(t),$.sk(n));return r?ke(r):null},async update(t,n,r){let i=await U(e,$.pk(t),$.sk(n));if(!i)return!1;let a={...i,updated_at:new Date().toISOString()};return r.code!==void 0&&(a.code=r.code),r.secrets!==void 0&&(a.secrets=JSON.stringify(r.secrets)),await W(e,a),!0},async remove(t,n){return await U(e,$.pk(t),$.sk(n))?(await G(e,$.pk(t),$.sk(n)),!0):!1}}}function je(t){let{tenant_id:n,...r}=Y(t);return e.hookSchema.parse(X(r))}function Me(e){return{async create(t,n){let r=new Date().toISOString(),i=n.hook_id||o(),a=`url`in n?n.url:void 0,s=`form_id`in n?n.form_id:void 0,c=`template_id`in n?n.template_id:void 0,l={PK:y.pk(t),SK:y.sk(i),entityType:`HOOK`,tenant_id:t,hook_id:i,trigger_id:n.trigger_id,url:a,form_id:s,template_id:c,enabled:n.enabled??!1,synchronous:n.synchronous??!1,priority:n.priority,created_at:r,updated_at:r};return await W(e,l),je(l)},async get(t,n){let r=await U(e,y.pk(t),y.sk(n));return r?je(r):null},async list(t,n={}){let r=await q(e,y.pk(t),n,{skPrefix:`HOOK#`});return{hooks:r.items.map(je),start:r.start,limit:r.limit,length:r.length}},async update(t,n,r){let i={...r,updated_at:new Date().toISOString()};return delete i.hook_id,J(e,y.pk(t),y.sk(n),i)},async remove(t,n){return G(e,y.pk(t),y.sk(n))}}}function Ne(t){return e.signingKeySchema.parse(X(Y(t)))}function Pe(e){return{async create(t){let n=new Date().toISOString();await W(e,{PK:b.pk(),SK:b.sk(t.kid),entityType:`KEY`,kid:t.kid,cert:t.cert,fingerprint:t.fingerprint,thumbprint:t.thumbprint,pkcs7:t.pkcs7,current:t.current,next:t.next,previous:t.previous,current_since:t.current_since,current_until:t.current_until,revoked:t.revoked,revoked_at:t.revoked_at,connection:t.connection,type:t.type,created_at:n,updated_at:n})},async list(t={}){let n=await q(e,b.pk(),t,{skPrefix:`KEY#`});return{signingKeys:n.items.map(Ne),start:n.start,limit:n.limit,length:n.length}},async update(t,n){let r={...n,updated_at:new Date().toISOString()};return J(e,b.pk(),b.sk(t),r)}}}function Fe(t){let{tenant_id:n,verification:r,domain_metadata:i,...a}=Y(t),o=X({...a,verification:r?JSON.parse(r):void 0,domain_metadata:i?JSON.parse(i):void 0});return e.customDomainSchema.parse(o)}function Ie(t){let{verification:n,domain_metadata:r,...i}=Y(t),a=X({...i,tenant_id:t.tenant_id,verification:n?JSON.parse(n):void 0,domain_metadata:r?JSON.parse(r):void 0});return e.customDomainWithTenantIdSchema.parse(a)}function Le(e){return{async create(t,n){let r=new Date().toISOString(),i=n.custom_domain_id||o(),a={PK:x.pk(t),SK:x.sk(i),GSI1PK:x.gsi1pk(n.domain),GSI1SK:x.gsi1sk(),entityType:`CUSTOM_DOMAIN`,tenant_id:t,custom_domain_id:i,domain:n.domain,primary:!1,status:`pending_verification`,type:n.type,verification_method:n.verification_method,custom_client_ip_header:n.custom_client_ip_header,tls_policy:n.tls_policy,domain_metadata:n.domain_metadata?JSON.stringify(n.domain_metadata):void 0,created_at:r,updated_at:r};return await W(e,a),Fe(a)},async get(t,n){let r=await U(e,x.pk(t),x.sk(n));return r?Fe(r):null},async getByDomain(t){let{items:n}=await K(e,x.gsi1pk(t),{indexName:`GSI1`,skValue:x.gsi1sk()});return n.length?Ie(n[0]):null},async list(t){let{items:n}=await K(e,x.pk(t),{skPrefix:`CUSTOM_DOMAIN#`});return n.map(Fe)},async update(t,n,r){let i={...r,updated_at:new Date().toISOString()};return r.verification!==void 0&&(i.verification=JSON.stringify(r.verification)),r.domain_metadata!==void 0&&(i.domain_metadata=JSON.stringify(r.domain_metadata)),delete i.custom_domain_id,J(e,x.pk(t),x.sk(n),i)},async remove(t,n){return G(e,x.pk(t),x.sk(n))}}}function Re(t){let{tenant_id:n,country_code:r,city_name:i,latitude:a,longitude:o,time_zone:s,continent_code:c,...l}=Y(t),u=X({...l,auth0_client:t.auth0_client?JSON.parse(t.auth0_client):void 0,details:t.details?JSON.parse(t.details):void 0,location_info:r?{country_code:r,city_name:i,latitude:a,longitude:o,time_zone:s,continent_code:c}:void 0});return e.logSchema.parse(u)}function ze(e){return{async create(t,n){let r=new Date().toISOString(),i=n.log_id||o(),a=n.date||r,s=a.substring(0,10),c={PK:C.pk(t),SK:C.sk(i),GSI1PK:C.gsi1pk(t,s),GSI1SK:C.gsi1sk(i),entityType:`LOG`,tenant_id:t,log_id:i,type:n.type,description:n.description,ip:n.ip,user_agent:n.user_agent,date:a,user_id:n.user_id,user_name:n.user_name,connection:n.connection,connection_id:n.connection_id,client_id:n.client_id,client_name:n.client_name,audience:n.audience,scope:n.scope,strategy:n.strategy,strategy_type:n.strategy_type,hostname:n.hostname,isMobile:n.isMobile,auth0_client:n.auth0_client?JSON.stringify(n.auth0_client):void 0,details:n.details?JSON.stringify(n.details):void 0,country_code:n.location_info?.country_code,city_name:n.location_info?.city_name,latitude:n.location_info?.latitude,longitude:n.location_info?.longitude,time_zone:n.location_info?.time_zone,continent_code:n.location_info?.continent_code,created_at:r,updated_at:r},l=new Date(a);return l.setDate(l.getDate()+30),c.ttl=Math.floor(l.getTime()/1e3),await W(e,c),Re(c)},async list(t,n={}){let r=await q(e,C.pk(t),n,{skPrefix:`LOG#`,scanIndexForward:!1});return{logs:r.items.map(Re),start:r.start,limit:r.limit,length:r.length}},async get(t,n){let r=await U(e,C.pk(t),C.sk(n));return r?Re(r):null}}}function Be(t){let{tenant_id:n,...r}=Y(t),i=X({...r,borders:t.borders?JSON.parse(t.borders):void 0,colors:t.colors?JSON.parse(t.colors):void 0,fonts:t.fonts?JSON.parse(t.fonts):void 0,page_background:t.page_background?JSON.parse(t.page_background):void 0,widget:t.widget?JSON.parse(t.widget):void 0});return e.themeSchema.parse(i)}function Ve(e){return{async create(t,n,r,i){let a=i?.importMetadata,s=new Date().toISOString(),c=a?.id||r||o(),l={PK:v.pk(t),SK:v.sk(c),entityType:`THEME`,tenant_id:t,themeId:c,displayName:n.displayName,borders:n.borders?JSON.stringify(n.borders):void 0,colors:n.colors?JSON.stringify(n.colors):void 0,fonts:n.fonts?JSON.stringify(n.fonts):void 0,page_background:n.page_background?JSON.stringify(n.page_background):void 0,widget:n.widget?JSON.stringify(n.widget):void 0,created_at:a?.created_at??s,updated_at:a?.updated_at??s};return await W(e,l),Be(l)},async get(t,n){let r=await U(e,v.pk(t),v.sk(n));return r?Be(r):null},async list(t){let n=[],r;do{let i=await K(e,v.pk(t),{skPrefix:`THEME#`,startKey:r});n.push(...i.items),r=i.lastKey}while(r);return n.map(Be)},async update(t,n,r){let i={updated_at:new Date().toISOString()};return r.displayName!==void 0&&(i.displayName=r.displayName),r.borders!==void 0&&(i.borders=JSON.stringify(r.borders)),r.colors!==void 0&&(i.colors=JSON.stringify(r.colors)),r.fonts!==void 0&&(i.fonts=JSON.stringify(r.fonts)),r.page_background!==void 0&&(i.page_background=JSON.stringify(r.page_background)),r.widget!==void 0&&(i.widget=JSON.stringify(r.widget)),J(e,v.pk(t),v.sk(n),i)},async remove(t,n){return G(e,v.pk(t),v.sk(n))}}}var He={universal_login_experience:`new`,identifier_first:!1,password_first:!1,webauthn_platform_first_factor:!1};function Ue(t){let{tenant_id:n,...r}=Y(t),i=X({universal_login_experience:r.universal_login_experience||`new`,identifier_first:r.identifier_first??!1,password_first:r.password_first??!1,webauthn_platform_first_factor:r.webauthn_platform_first_factor??!1});return e.promptSettingSchema.parse(i)}function We(e){return{async set(t,n){let r=new Date().toISOString(),i=await this.get(t),a=await U(e,E.pk(t),E.sk());await W(e,{PK:E.pk(t),SK:E.sk(),entityType:`PROMPT_SETTING`,tenant_id:t,universal_login_experience:n.universal_login_experience??i.universal_login_experience,identifier_first:n.identifier_first??i.identifier_first,password_first:n.password_first??i.password_first,webauthn_platform_first_factor:n.webauthn_platform_first_factor??i.webauthn_platform_first_factor,created_at:a?.created_at||r,updated_at:r})},async get(t){let n=await U(e,E.pk(t),E.sk());return n?Ue(n):He}}}function Ge(t){let{tenant_id:n,...r}=Y(t),i=X({...r,credentials:t.credentials?JSON.parse(t.credentials):void 0,settings:t.settings?JSON.parse(t.settings):void 0});return e.emailProviderSchema.parse(i)}function Ke(e){return{async create(t,n){let r=new Date().toISOString();await W(e,{PK:w.pk(t),SK:w.sk(),entityType:`EMAIL_PROVIDER`,tenant_id:t,name:n.name,enabled:n.enabled??!0,default_from_address:n.default_from_address,credentials:n.credentials?JSON.stringify(n.credentials):void 0,settings:n.settings?JSON.stringify(n.settings):void 0,created_at:r,updated_at:r})},async get(t){let n=await U(e,w.pk(t),w.sk());return n?Ge(n):null},async update(t,n){let r={...n,updated_at:new Date().toISOString()};n.credentials!==void 0&&(r.credentials=JSON.stringify(n.credentials)),n.settings!==void 0&&(r.settings=JSON.stringify(n.settings)),await J(e,w.pk(t),w.sk(),r)},async remove(t){await G(e,w.pk(t),w.sk())}}}function qe(t){let n=Y(t),r=X({template:n.template,body:n.body,from:n.from,subject:n.subject,syntax:n.syntax,resultUrl:n.result_url,urlLifetimeInSeconds:n.url_lifetime_in_seconds,includeEmailInRedirect:!!n.include_email_in_redirect,enabled:!!n.enabled});return e.emailTemplateSchema.parse(r)}function Je(e){return{async create(t,n){let r=new Date().toISOString();return await W(e,{PK:T.pk(t),SK:T.sk(n.template),entityType:`EMAIL_TEMPLATE`,tenant_id:t,template:n.template,body:n.body,from:n.from,subject:n.subject,syntax:n.syntax,result_url:n.resultUrl,url_lifetime_in_seconds:n.urlLifetimeInSeconds,include_email_in_redirect:n.includeEmailInRedirect,enabled:n.enabled,created_at:r,updated_at:r}),n},async get(t,n){let r=await U(e,T.pk(t),T.sk(n));return r?qe(r):null},async list(t){let{items:n}=await K(e,T.pk(t),{skPrefix:T.skPrefix()});return n.map(qe)},async update(t,n,r){let i={updated_at:new Date().toISOString()};return 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),await U(e,T.pk(t),T.sk(n))?(await J(e,T.pk(t),T.sk(n),i),!0):!1},async remove(t,n){return await U(e,T.pk(t),T.sk(n))?(await G(e,T.pk(t),T.sk(n)),!0):!1}}}function Ye(t){let{tenant_id:n,device:r,resource_servers:i,...a}=Y(t),o=X({...a,device:JSON.parse(r),resource_servers:JSON.parse(i)});return e.refreshTokenSchema.parse(o)}function Xe(e){return{async create(t,n){let r=new Date().toISOString(),i={PK:D.pk(t),SK:D.sk(n.id),GSI1PK:D.gsi1pk(t,n.user_id),GSI1SK:D.gsi1sk(n.id),entityType:`REFRESH_TOKEN`,tenant_id:t,id:n.id,user_id:n.user_id,login_id:n.login_id,client_id:n.client_id,expires_at:n.expires_at,idle_expires_at:n.idle_expires_at,last_exchanged_at:n.last_exchanged_at,device:JSON.stringify(n.device),resource_servers:JSON.stringify(n.resource_servers),rotating:n.rotating,token_lookup:n.token_lookup,token_hash:n.token_hash,family_id:n.family_id,rotated_to:n.rotated_to,rotated_at:n.rotated_at,created_at:r,updated_at:r};return n.token_lookup&&(i.GSI2PK=D.gsi2pk(t,n.token_lookup),i.GSI2SK=D.gsi2sk()),n.expires_at&&(i.ttl=Math.floor(new Date(n.expires_at).getTime()/1e3)),await W(e,i),Ye(i)},async get(t,n){let r=await U(e,D.pk(t),D.sk(n));return r?Ye(r):null},async getByLookup(t,n){let r=await K(e,D.gsi2pk(t,n),{indexName:`GSI2`,skValue:D.gsi2sk(),limit:1});return r.items[0]?Ye(r.items[0]):null},async list(t,n={}){let r=await q(e,D.pk(t),n,{skPrefix:`REFRESH_TOKEN#`});return{refresh_tokens:r.items.map(Ye),start:r.start,limit:r.limit,length:r.length}},async update(t,n,r,i){let a={...r,updated_at:new Date().toISOString()};r.device!==void 0&&(a.device=JSON.stringify(r.device)),r.resource_servers!==void 0&&(a.resource_servers=JSON.stringify(r.resource_servers)),delete a.id;let o=await J(e,D.pk(t),D.sk(n),a);if(o&&i?.loginSessionBump)try{await J(e,u.pk(t),u.sk(i.loginSessionBump.login_id),{expires_at:i.loginSessionBump.expires_at,updated_at:new Date().toISOString()})}catch{}return o},async remove(t,n){return G(e,D.pk(t),D.sk(n))},async revokeByLoginSession(n,r,i){let a=0,o=0;for(;;){let s=await q(e,D.pk(n),{page:o,per_page:100},{skPrefix:`REFRESH_TOKEN#`});for(let o of s.items)if(o.login_id===r&&!o.revoked_at)try{await e.client.send(new t.UpdateCommand({TableName:e.tableName,Key:{PK:D.pk(n),SK:D.sk(o.id)},UpdateExpression:`SET #revoked_at = :revoked_at, #updated_at = :updated_at`,ConditionExpression:`attribute_exists(PK) AND attribute_not_exists(#revoked_at)`,ExpressionAttributeNames:{"#revoked_at":`revoked_at`,"#updated_at":`updated_at`},ExpressionAttributeValues:{":revoked_at":i,":updated_at":new Date().toISOString()}})),a++}catch(e){if(e?.name===`ConditionalCheckFailedException`)continue;throw e}if(s.items.length<100)break;o++}return a},async revokeFamily(n,r,i){let a=0,o=0;for(;;){let s=await q(e,D.pk(n),{page:o,per_page:100},{skPrefix:`REFRESH_TOKEN#`});for(let o of s.items)if(o.family_id===r&&!o.revoked_at)try{await e.client.send(new t.UpdateCommand({TableName:e.tableName,Key:{PK:D.pk(n),SK:D.sk(o.id)},UpdateExpression:`SET #revoked_at = :revoked_at, #updated_at = :updated_at`,ConditionExpression:`attribute_exists(PK) AND attribute_not_exists(#revoked_at)`,ExpressionAttributeNames:{"#revoked_at":`revoked_at`,"#updated_at":`updated_at`},ExpressionAttributeValues:{":revoked_at":i,":updated_at":new Date().toISOString()}})),a++}catch(e){if(e?.name===`ConditionalCheckFailedException`)continue;throw e}if(s.items.length<100)break;o++}return a}}}function Ze(t){let{tenant_id:n,...r}=Y(t),i=X({...r,nodes:t.nodes?JSON.parse(t.nodes):void 0,start:t.start?JSON.parse(t.start):void 0,ending:t.ending?JSON.parse(t.ending):void 0,messages:t.messages?JSON.parse(t.messages):void 0,languages:t.languages?JSON.parse(t.languages):void 0,translations:t.translations?JSON.parse(t.translations):void 0,style:t.style?JSON.parse(t.style):void 0});return e.formSchema.parse(i)}function Qe(e){return{async create(t,n){let r=new Date().toISOString(),i=o(),a={PK:O.pk(t),SK:O.sk(i),entityType:`FORM`,tenant_id:t,id:i,name:n.name,nodes:n.nodes?JSON.stringify(n.nodes):void 0,start:n.start?JSON.stringify(n.start):void 0,ending:n.ending?JSON.stringify(n.ending):void 0,messages:n.messages?JSON.stringify(n.messages):void 0,languages:n.languages?JSON.stringify(n.languages):void 0,translations:n.translations?JSON.stringify(n.translations):void 0,style:n.style?JSON.stringify(n.style):void 0,created_at:r,updated_at:r};return await W(e,a),Ze(a)},async get(t,n){let r=await U(e,O.pk(t),O.sk(n));return r?Ze(r):null},async list(t,n={}){let r=await q(e,O.pk(t),n,{skPrefix:`FORM#`});return{forms:r.items.map(Ze),start:r.start,limit:r.limit,length:r.length}},async update(t,n,r){let i={updated_at:new Date().toISOString()};return r.name!==void 0&&(i.name=r.name),r.nodes!==void 0&&(i.nodes=JSON.stringify(r.nodes)),r.start!==void 0&&(i.start=JSON.stringify(r.start)),r.ending!==void 0&&(i.ending=JSON.stringify(r.ending)),r.messages!==void 0&&(i.messages=JSON.stringify(r.messages)),r.languages!==void 0&&(i.languages=JSON.stringify(r.languages)),r.translations!==void 0&&(i.translations=JSON.stringify(r.translations)),r.style!==void 0&&(i.style=JSON.stringify(r.style)),J(e,O.pk(t),O.sk(n),i)},async remove(t,n){return G(e,O.pk(t),O.sk(n))}}}function $e(t){let{tenant_id:n,verification_key:r,is_system:i,metadata:a,...o}=Y(t),s=X({...o,verificationKey:r,scopes:t.scopes?JSON.parse(t.scopes):void 0,options:t.options?JSON.parse(t.options):void 0,is_system:i?!0:void 0,metadata:a});return e.resourceServerSchema.parse(s)}function et(e){return{async create(t,n){let r=new Date().toISOString(),i=n.id||o(),a={PK:A.pk(t),SK:A.sk(i),GSI1PK:A.gsi1pk(t,n.identifier),GSI1SK:A.gsi1sk(),entityType:`RESOURCE_SERVER`,tenant_id:t,id:i,identifier:n.identifier,name:n.name,signing_alg:n.signing_alg,signing_secret:n.signing_secret,allow_offline_access:n.allow_offline_access,skip_consent_for_verifiable_first_party_clients:n.skip_consent_for_verifiable_first_party_clients,token_lifetime:n.token_lifetime,token_lifetime_for_web:n.token_lifetime_for_web,enforce_policies:n.options?.enforce_policies,token_dialect:n.options?.token_dialect,scopes:n.scopes?JSON.stringify(n.scopes):void 0,options:n.options?JSON.stringify(n.options):void 0,verification_key:n.verificationKey,is_system:n.is_system??!1,metadata:n.metadata,created_at:r,updated_at:r};return await W(e,a),$e(a)},async get(t,n){let r=await U(e,A.pk(t),A.sk(n));return r?$e(r):null},async list(t,n={}){let r=await q(e,A.pk(t),n,{skPrefix:`RESOURCE_SERVER#`});return{resource_servers:r.items.map($e),start:r.start,limit:r.limit,length:r.length}},async update(t,n,r){let i={...r,updated_at:new Date().toISOString()};return r.scopes!==void 0&&(i.scopes=JSON.stringify(r.scopes)),r.options!==void 0&&(i.options=JSON.stringify(r.options)),r.verificationKey!==void 0&&(i.verification_key=r.verificationKey,delete i.verificationKey),delete i.id,J(e,A.pk(t),A.sk(n),i)},async remove(t,n){return G(e,A.pk(t),A.sk(n))}}}function tt(t){let{tenant_id:n,is_system:r,metadata:i,...a}=Y(t);return e.roleSchema.parse(X({...a,is_system:r?!0:void 0,metadata:i}))}function nt(e){return{async create(t,n){let r=new Date().toISOString(),i=o(),a={PK:j.pk(t),SK:j.sk(i),entityType:`ROLE`,tenant_id:t,id:i,name:n.name,description:n.description,is_system:n.is_system??!1,metadata:n.metadata,created_at:r,updated_at:r};return await W(e,a),tt(a)},async get(t,n){let r=await U(e,j.pk(t),j.sk(n));return r?tt(r):null},async list(t,n={}){let r=await q(e,j.pk(t),n,{skPrefix:`ROLE#`});return{roles:r.items.map(tt),start:r.start,limit:r.limit,length:r.length}},async update(t,n,r){let i={...r,updated_at:new Date().toISOString()};return delete i.id,J(e,j.pk(t),j.sk(n),i)},async remove(t,n){return G(e,j.pk(t),j.sk(n))}}}function rt(t){let{tenant_id:n,...r}=Y(t);return e.rolePermissionSchema.parse(X(r))}function it(e){return{async assign(t,n,r){let i=new Date().toISOString();for(let a of r)await W(e,{PK:M.pk(t,n),SK:M.sk(a.resource_server_identifier,a.permission_name),entityType:`ROLE_PERMISSION`,tenant_id:t,role_id:a.role_id,resource_server_identifier:a.resource_server_identifier,permission_name:a.permission_name,created_at:i,updated_at:i});return!0},async remove(t,n,r){for(let i of r)await G(e,M.pk(t,n),M.sk(i.resource_server_identifier,i.permission_name));return!0},async list(t,n,r={}){return(await q(e,M.pk(t,n),r,{skPrefix:M.skPrefix()})).items.map(rt)}}}function at(t){let{tenant_id:n,sources:r,...i}=Y(t),a=X({...i,resource_server_name:t.resource_server_name||t.resource_server_identifier,sources:r?JSON.parse(r):void 0});return e.userPermissionWithDetailsSchema.parse(a)}function ot(e){return{async create(t,n,r,i){let a=new Date().toISOString();return await W(e,{PK:N.pk(t,n,i),SK:N.sk(r.resource_server_identifier,r.permission_name),entityType:`USER_PERMISSION`,tenant_id:t,user_id:n,organization_id:i,resource_server_identifier:r.resource_server_identifier,permission_name:r.permission_name,created_at:a,updated_at:a}),!0},async remove(t,n,r,i){return G(e,N.pk(t,n,i),N.sk(r.resource_server_identifier,r.permission_name))},async list(t,n,r={},i){return(await q(e,N.pk(t,n,i),r,{skPrefix:N.skPrefix()})).items.map(at)}}}function st(t){let{tenant_id:n,...r}=Y(t);return e.roleSchema.parse(X(r))}function ct(e){return{async create(t,n,r,i){let a=new Date().toISOString();return await W(e,{PK:P.pk(t,n,i),SK:P.sk(r),entityType:`USER_ROLE`,tenant_id:t,user_id:n,organization_id:i,role_id:r,created_at:a,updated_at:a}),!0},async remove(t,n,r,i){return G(e,P.pk(t,n,i),P.sk(r))},async list(t,n,r={},i){let{items:a}=await K(e,P.pk(t,n,i),{skPrefix:P.skPrefix()}),o=[];for(let n of a){let r=await U(e,j.pk(t),j.sk(n.role_id));r&&o.push(st(r))}return o}}}function lt(t){let{tenant_id:n,...r}=Y(t),i=X({...r,branding:t.branding?JSON.parse(t.branding):void 0,metadata:t.metadata?JSON.parse(t.metadata):void 0,enabled_connections:t.enabled_connections?JSON.parse(t.enabled_connections):void 0,token_quota:t.token_quota?JSON.parse(t.token_quota):void 0});return e.organizationSchema.parse(i)}function ut(e){return{async create(t,n){let r=new Date().toISOString(),i=n.id||o(),a={PK:F.pk(t),SK:F.sk(i),GSI1PK:F.gsi1pk(t,n.name),GSI1SK:F.gsi1sk(),entityType:`ORGANIZATION`,tenant_id:t,id:i,name:n.name,display_name:n.display_name,branding:n.branding?JSON.stringify(n.branding):void 0,metadata:n.metadata?JSON.stringify(n.metadata):void 0,enabled_connections:n.enabled_connections?JSON.stringify(n.enabled_connections):void 0,token_quota:n.token_quota?JSON.stringify(n.token_quota):void 0,created_at:r,updated_at:r};return await W(e,a),lt(a)},async get(t,n){let r=await U(e,F.pk(t),F.sk(n));return r||=(await q(e,F.gsi1pk(t,n),{page:0,per_page:1},{indexName:`GSI1`,skPrefix:`ORGANIZATION`})).items[0]||null,r?lt(r):null},async list(t,n={}){let r=await q(e,F.pk(t),n,{skPrefix:`ORGANIZATION#`});return{organizations:r.items.map(lt),start:r.start,limit:r.limit,length:r.length}},async update(t,n,r){let i={...r,updated_at:new Date().toISOString()};return r.branding!==void 0&&(i.branding=JSON.stringify(r.branding)),r.metadata!==void 0&&(i.metadata=JSON.stringify(r.metadata)),r.enabled_connections!==void 0&&(i.enabled_connections=JSON.stringify(r.enabled_connections)),r.token_quota!==void 0&&(i.token_quota=JSON.stringify(r.token_quota)),delete i.id,J(e,F.pk(t),F.sk(n),i)},async remove(t,n){return G(e,F.pk(t),F.sk(n))}}}async function dt(e,t,n){let r=await U(e,p.pk(t),p.sk(n));if(r)return{name:r.name,strategy:r.strategy}}function ft(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}}function pt(e){return{async create(t,n,r){let i=new Date().toISOString(),a={PK:L.pk(t,n),SK:L.sk(r.connection_id),entityType:`ORGANIZATION_CONNECTION`,tenant_id:t,organization_id:n,connection_id:r.connection_id,assign_membership_on_login:r.assign_membership_on_login??!1,show_as_button:r.show_as_button??!0,is_signup_enabled:r.is_signup_enabled??!0,created_at:i,updated_at:i};return await W(e,a),ft(a,await dt(e,t,r.connection_id))},async list(t,n){let{items:r}=await K(e,L.pk(t,n),{skPrefix:L.skPrefix()}),i=[];for(let n of r){let r=await dt(e,t,n.connection_id);i.push(ft(n,r))}return i},async get(t,n,r){let i=await U(e,L.pk(t,n),L.sk(r));return i?ft(i,await dt(e,t,r)):null},async update(t,n,r,i){if(!await U(e,L.pk(t,n),L.sk(r)))return null;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),await J(e,L.pk(t,n),L.sk(r),a);let o=await U(e,L.pk(t,n),L.sk(r));return o?ft(o,await dt(e,t,r)):null},async remove(t,n,r){return await U(e,L.pk(t,n),L.sk(r))?G(e,L.pk(t,n),L.sk(r)):!1}}}function mt(t){let{tenant_id:n,...r}=Y(t);return e.userOrganizationSchema.parse(X(r))}function ht(t){let{tenant_id:n,...r}=Y(t),i=X({...r,branding:t.branding?JSON.parse(t.branding):void 0,metadata:t.metadata?JSON.parse(t.metadata):void 0,enabled_connections:t.enabled_connections?JSON.parse(t.enabled_connections):void 0,token_quota:t.token_quota?JSON.parse(t.token_quota):void 0});return e.organizationSchema.parse(i)}function gt(e){return{async create(t,n){let r=new Date().toISOString(),i=o(),a={PK:I.pk(t),SK:I.sk(i),GSI1PK:I.gsi1pk(t,n.user_id),GSI1SK:I.gsi1sk(n.organization_id),GSI2PK:I.gsi2pk(t,n.organization_id),GSI2SK:I.gsi2sk(n.user_id),entityType:`USER_ORGANIZATION`,tenant_id:t,id:i,user_id:n.user_id,organization_id:n.organization_id,created_at:r,updated_at:r};return await W(e,a),mt(a)},async get(t,n){let r=await U(e,I.pk(t),I.sk(n));return r?mt(r):null},async remove(t,n){return G(e,I.pk(t),I.sk(n))},async list(t,n={}){let r=await q(e,I.pk(t),n,{skPrefix:`USER_ORG#`});return{userOrganizations:r.items.map(mt),start:r.start,limit:r.limit,length:r.length}},async listUserOrganizations(t,n,r={}){let i=await q(e,I.gsi1pk(t,n),r,{indexName:`GSI1`,skPrefix:`USER_ORG#`}),a=[];for(let n of i.items){let r=await U(e,F.pk(t),F.sk(n.organization_id));r&&a.push(ht(r))}return{organizations:a,start:i.start,limit:i.limit,length:i.length}},async update(t,n,r){let i={...r,updated_at:new Date().toISOString()};return J(e,I.pk(t),I.sk(n),i)}}}function _t(t){let{tenant_id:n,...r}=Y(t),i=X({...r,inviter:t.inviter?JSON.parse(t.inviter):{},invitee:t.invitee?JSON.parse(t.invitee):{},app_metadata:t.app_metadata?JSON.parse(t.app_metadata):void 0,user_metadata:t.user_metadata?JSON.parse(t.user_metadata):void 0,roles:t.roles?JSON.parse(t.roles):void 0});return e.inviteSchema.parse(i)}function vt(e){return{async create(t,n){let r=new Date().toISOString(),i=o(),a=n.ttl_sec||604800,s=new Date(Date.now()+a*1e3).toISOString(),c={PK:R.pk(t),SK:R.sk(i),GSI1PK:R.gsi1pk(t,n.organization_id),GSI1SK:R.gsi1sk(i),entityType:`INVITE`,tenant_id:t,id:i,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,invitation_url:n.invitation_url,expires_at:s,app_metadata:n.app_metadata?JSON.stringify(n.app_metadata):void 0,user_metadata:n.user_metadata?JSON.stringify(n.user_metadata):void 0,roles:n.roles?JSON.stringify(n.roles):void 0,ttl_sec:a,send_invitation_email:n.send_invitation_email??!0,created_at:r,updated_at:r};return c.ttl=Math.floor(new Date(s).getTime()/1e3),await W(e,c),_t(c)},async get(t,n){let r=await U(e,R.pk(t),R.sk(n));return r?_t(r):null},async list(t,n={}){let r=await q(e,R.pk(t),n,{skPrefix:`INVITE#`});return{invites:r.items.map(_t),start:r.start,limit:r.limit,length:r.length}},async update(t,n,r){let i={...r,updated_at:new Date().toISOString()};return r.inviter!==void 0&&(i.inviter=JSON.stringify(r.inviter)),r.invitee!==void 0&&(i.invitee=JSON.stringify(r.invitee)),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)),delete i.id,J(e,R.pk(t),R.sk(n),i)},async remove(t,n){return G(e,R.pk(t),R.sk(n))}}}function yt(e){return{async get(t,n,r){let i=await U(e,H.pk(t),H.sk(n,r));if(!i)return null;try{return JSON.parse(i.custom_text)}catch{return null}},async set(t,n,r,i){let a=new Date().toISOString(),o=await U(e,H.pk(t),H.sk(n,r));await W(e,{PK:H.pk(t),SK:H.sk(n,r),entityType:`CUSTOM_TEXT`,tenant_id:t,prompt:n,language:r,custom_text:JSON.stringify(i),created_at:o?.created_at||a,updated_at:a})},async delete(t,n,r){await G(e,H.pk(t),H.sk(n,r))},async list(t){return(await K(e,H.pk(t),{skPrefix:H.skPrefix()})).items.map(e=>({prompt:e.prompt,language:e.language}))}}}function bt(t){let{tenant_id:n,...r}=Y(t);return e.authenticationMethodSchema.parse(X(r))}function xt(t){return{async create(e,n){let r=new Date().toISOString(),i=o(),a={PK:B.pk(e),SK:B.sk(i),GSI1PK:B.gsi1pk(e,n.user_id),GSI1SK:B.gsi1sk(i),entityType:`AUTHENTICATION_METHOD`,id:i,tenant_id:e,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:r,updated_at:r},s=bt(a);return await W(t,a),s},async get(e,n){let r=await U(t,B.pk(e),B.sk(n));return r?bt(r):null},async getByCredentialId(e,n){let r=(await K(t,B.pk(e),{skPrefix:`AUTHENTICATION_METHOD#`})).items.find(e=>e.credential_id===n);return r?bt(r):null},async list(e,n){return(await K(t,B.gsi1pk(e,n),{skPrefix:B.gsi1skPrefix(),indexName:`GSI1`})).items.map(bt)},async update(n,r,i){let a=await this.get(n,r);if(!a)throw Error(`Authentication method ${r} not found`);let o={...a,...i,updated_at:new Date().toISOString()};e.authenticationMethodSchema.parse(o);let s={updated_at:o.updated_at};return i.phone_number!==void 0&&(s.phone_number=i.phone_number),i.totp_secret!==void 0&&(s.totp_secret=i.totp_secret),i.credential_id!==void 0&&(s.credential_id=i.credential_id),i.public_key!==void 0&&(s.public_key=i.public_key),i.sign_count!==void 0&&(s.sign_count=i.sign_count),i.credential_backed_up!==void 0&&(s.credential_backed_up=i.credential_backed_up),i.transports!==void 0&&(s.transports=i.transports),i.friendly_name!==void 0&&(s.friendly_name=i.friendly_name),i.confirmed!==void 0&&(s.confirmed=i.confirmed),await J(t,B.pk(n),B.sk(r),s),e.authenticationMethodSchema.parse(o)},async remove(e,n){return G(t,B.pk(e),B.sk(n))}}}function St(t){if(!t)return{path:`/*`};try{let n=JSON.parse(t),r=e.matchSchema.safeParse(n);if(r.success)return r.data}catch{}return{path:`/*`}}function Ct(t){if(!t)return[];try{let n=JSON.parse(t);if(!Array.isArray(n))return[];let r=[];for(let t of n){let n=e.handlerConfigSchema.safeParse(t);n.success&&r.push(n.data)}return r}catch{return[]}}function wt(e){let{match:t,handlers:n,...r}=Y(e);return X({...r,match:St(t),handlers:Ct(n)})}function Tt(e){return[...e].sort((e,t)=>e.priority===t.priority?e.created_at.localeCompare(t.created_at):e.priority-t.priority)}function Et(e){return{async create(t,n){let r=new Date().toISOString(),i=o(),a={PK:S.pk(t),SK:S.sk(i),GSI1PK:S.gsi1pk(t,n.custom_domain_id),GSI1SK:S.gsi1sk(i),entityType:`PROXY_ROUTE`,tenant_id:t,id:i,custom_domain_id:n.custom_domain_id,priority:n.priority,match:JSON.stringify(n.match),handlers:JSON.stringify(n.handlers),created_at:r,updated_at:r};return await W(e,a),wt(a)},async get(t,n){let r=await U(e,S.pk(t),S.sk(n));return r?wt(r):null},async list(t,n={}){let r=n.page??0,i=n.per_page??50,a;if(n.custom_domain_id){let{items:r}=await K(e,S.gsi1pk(t,n.custom_domain_id),{indexName:`GSI1`});a=r}else{let{items:n}=await K(e,S.pk(t),{skPrefix:`PROXY_ROUTE#`});a=n}let o=Tt(a).slice(r*i,r*i+i);return{proxy_routes:o.map(wt),start:r*i,limit:i,length:o.length}},async update(t,n,r){let i={updated_at:new Date().toISOString()};return 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)),await U(e,S.pk(t),S.sk(n))?J(e,S.pk(t),S.sk(n),i):!1},async remove(t,n){return await U(e,S.pk(t),S.sk(n))?G(e,S.pk(t),S.sk(n)):!1}}}function Dt(t){if(!t)return null;let n;try{n=JSON.parse(t)}catch{return null}let r=e.matchSchema.safeParse(n);return r.success?r.data:null}function Ot(t){if(!t)return null;let n;try{n=JSON.parse(t)}catch{return null}if(!Array.isArray(n)||n.length===0)return null;let r=[];for(let t of n){let n=e.handlerConfigSchema.safeParse(t);if(!n.success)return null;r.push(n.data)}return r}function kt(e){let t=Dt(e.match),n=Ot(e.handlers);return t===null||n===null?null:{id:e.id,tenant_id:e.tenant_id,custom_domain_id:e.custom_domain_id,priority:e.priority,match:t,handlers:n,created_at:e.created_at,updated_at:e.updated_at}}async function At(e,t){let n=t.indexOf(`:`),r=n===-1?t:t.slice(0,n),i=(r.endsWith(`.`)?r.slice(0,-1):r).toLowerCase(),{items:a}=await K(e,x.gsi1pk(i),{indexName:`GSI1`,skValue:x.gsi1sk()}),o=a[0];if(!o)return null;let{items:s}=await K(e,S.gsi1pk(o.tenant_id,o.custom_domain_id),{indexName:`GSI1`}),c=s.map(kt).filter(e=>e!==null).sort((e,t)=>e.priority===t.priority?e.created_at.localeCompare(t.created_at):e.priority-t.priority);return{tenant_id:o.tenant_id,custom_domain_id:o.custom_domain_id,domain:o.domain,routes:c}}function jt(e){return{proxyRoutes:Et(e),resolveHost:t=>At(e,t)}}function Mt(e,t){let a={client:e,tableName:t.tableName},o={actions:n(),actionExecutions:r(),actionVersions:i(),branding:De(a),clients:ge(a),clientConnections:be(a),clientGrants:ve(a),clientRegistrationTokens:xe(a),codes:me(a),connections:Ce(a),customDomains:Le(a),emailProviders:Ke(a),emailTemplates:Je(a),flows:re(a),forms:Qe(a),hookCode:Ae(a),hooks:Me(a),invites:vt(a),keys:Pe(a),loginSessions:Te(a),logs:ze(a),authenticationMethods:xt(a),organizations:ut(a),organizationConnections:pt(a),passwords:fe(a),promptSettings:We(a),proxyRoutes:Et(a),refreshTokens:Xe(a),resourceServers:et(a),rolePermissions:it(a),roles:nt(a),sessions:ue(a),tenants:ae(a),themes:Ve(a),universalLoginTemplates:Oe(a),customText:yt(a),userOrganizations:gt(a),userPermissions:ot(a),userRoles:ct(a),users:ce(a),async transaction(e){if(o.outbox)throw Error(`DynamoDB adapter does not support atomic transactions. Cannot guarantee atomicity between entity writes and outbox events. Use a SQL-backed adapter for outbox-enabled tenants.`);return e(o)}};return o}exports.authenticationMethodKeys=B,exports.brandingKeys=g,exports.clientConnectionKeys=z,exports.clientGrantKeys=f,exports.clientKeys=d,exports.clientRegistrationTokenKeys=V,exports.codeKeys=m,exports.connectionKeys=p,exports.createAuthenticationMethodsAdapter=xt,exports.createBrandingAdapter=De,exports.createClientConnectionsAdapter=be,exports.createClientGrantsAdapter=ve,exports.createClientsAdapter=ge,exports.createCodesAdapter=me,exports.createConnectionsAdapter=Ce,exports.createCustomDomainsAdapter=Le,exports.createEmailProvidersAdapter=Ke,exports.createFlowsAdapter=re,exports.createFormsAdapter=Qe,exports.createHooksAdapter=Me,exports.createInvitesAdapter=vt,exports.createKeysAdapter=Pe,exports.createLoginSessionsAdapter=Te,exports.createLogsAdapter=ze,exports.createOrganizationConnectionsAdapter=pt,exports.createOrganizationsAdapter=ut,exports.createPasswordsAdapter=fe,exports.createPromptSettingsAdapter=We,exports.createProxyDataAdapter=jt,exports.createProxyRoutesAdapter=Et,exports.createRefreshTokensAdapter=Xe,exports.createResourceServersAdapter=et,exports.createRolePermissionsAdapter=it,exports.createRolesAdapter=nt,exports.createSessionsAdapter=ue,exports.createTenantsAdapter=ae,exports.createThemesAdapter=Ve,exports.createUserOrganizationsAdapter=gt,exports.createUserPermissionsAdapter=ot,exports.createUserRolesAdapter=ct,exports.createUsersAdapter=ce,exports.customDomainKeys=x,exports.customTextKeys=H,exports.default=Mt,exports.deleteItem=G,exports.emailProviderKeys=w,exports.emailTemplateKeys=T,exports.flowKeys=k,exports.formKeys=O,exports.getItem=U,exports.hookKeys=y,exports.inviteKeys=R,exports.keyKeys=b,exports.legacyClientKeys=ee,exports.logKeys=C,exports.loginSessionKeys=u,exports.organizationConnectionKeys=L,exports.organizationKeys=F,exports.passwordKeys=h,exports.promptSettingsKeys=E,exports.proxyRouteKeys=S,exports.putItem=W,exports.queryItems=K,exports.queryWithPagination=q,exports.refreshTokenKeys=D,exports.removeNullProperties=X,exports.resourceServerKeys=A,exports.roleKeys=j,exports.rolePermissionKeys=M,exports.sessionKeys=l,exports.stripDynamoDBFields=Y,exports.tenantKeys=s,exports.themeKeys=v,exports.transactWriteItems=te,exports.universalLoginTemplateKeys=_,exports.updateItem=J,exports.userKeys=c,exports.userOrganizationKeys=I,exports.userPermissionKeys=N,exports.userRoleKeys=P;
@@ -1698,28 +1698,39 @@ function Et(e) {
1698
1698
  }
1699
1699
  function Dt(e) {
1700
1700
  return {
1701
- async create(t, n, r) {
1702
- let i = (/* @__PURE__ */ new Date()).toISOString(), a = r || d(), o = {
1701
+ async create(t, n, r, i) {
1702
+ let a = i?.importMetadata, o = (/* @__PURE__ */ new Date()).toISOString(), s = a?.id || r || d(), c = {
1703
1703
  PK: S.pk(t),
1704
- SK: S.sk(a),
1704
+ SK: S.sk(s),
1705
1705
  entityType: "THEME",
1706
1706
  tenant_id: t,
1707
- themeId: a,
1707
+ themeId: s,
1708
1708
  displayName: n.displayName,
1709
1709
  borders: n.borders ? JSON.stringify(n.borders) : void 0,
1710
1710
  colors: n.colors ? JSON.stringify(n.colors) : void 0,
1711
1711
  fonts: n.fonts ? JSON.stringify(n.fonts) : void 0,
1712
1712
  page_background: n.page_background ? JSON.stringify(n.page_background) : void 0,
1713
1713
  widget: n.widget ? JSON.stringify(n.widget) : void 0,
1714
- created_at: i,
1715
- updated_at: i
1714
+ created_at: a?.created_at ?? o,
1715
+ updated_at: a?.updated_at ?? o
1716
1716
  };
1717
- return await K(e, o), Et(o);
1717
+ return await K(e, c), Et(c);
1718
1718
  },
1719
1719
  async get(t, n) {
1720
1720
  let r = await G(e, S.pk(t), S.sk(n));
1721
1721
  return r ? Et(r) : null;
1722
1722
  },
1723
+ async list(t) {
1724
+ let n = [], r;
1725
+ do {
1726
+ let i = await J(e, S.pk(t), {
1727
+ skPrefix: "THEME#",
1728
+ startKey: r
1729
+ });
1730
+ n.push(...i.items), r = i.lastKey;
1731
+ } while (r);
1732
+ return n.map(Et);
1733
+ },
1723
1734
  async update(t, n, r) {
1724
1735
  let i = { updated_at: (/* @__PURE__ */ new Date()).toISOString() };
1725
1736
  return r.displayName !== void 0 && (i.displayName = r.displayName), r.borders !== void 0 && (i.borders = JSON.stringify(r.borders)), r.colors !== void 0 && (i.colors = JSON.stringify(r.colors)), r.fonts !== void 0 && (i.fonts = JSON.stringify(r.fonts)), r.page_background !== void 0 && (i.page_background = JSON.stringify(r.page_background)), r.widget !== void 0 && (i.widget = JSON.stringify(r.widget)), X(e, S.pk(t), S.sk(n), i);