@authhero/aws-adapter 1.1.3 → 1.1.6

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("nanoid"),t=require("@authhero/adapter-interfaces"),n=require("@aws-sdk/lib-dynamodb"),r=require("hono/http-exception");function i(){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 a(){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 o(){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 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,t){let r=t.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 n.TransactWriteCommand({TransactItems:r}))}async function U(e,t,r){return(await e.client.send(new n.GetCommand({TableName:e.tableName,Key:{PK:t,SK:r}}))).Item||null}async function W(e,t,r){await e.client.send(new n.PutCommand({TableName:e.tableName,Item:t,ConditionExpression:r?.conditionExpression}))}async function G(e,t,r){return await e.client.send(new n.DeleteCommand({TableName:e.tableName,Key:{PK:t,SK:r}})),!0}async function K(e,t,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":t};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 n.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,t,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":t};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 t=await e.client.send(new n.QueryCommand({TableName:e.tableName,IndexName:d,KeyConditionExpression:h,ExpressionAttributeValues:g,Limit:Math.min(b-y,1e3),ExclusiveStartKey:v,ScanIndexForward:f})),r=t.Items||[];if(_=_.concat(r),y+=r.length,v=t.LastEvaluatedKey,!v)break}let x=_.slice(m,m+p),S=_.length;if(s&&v){let t=v;for(;t;){let r=await e.client.send(new n.QueryCommand({TableName:e.tableName,IndexName:d,KeyConditionExpression:h,ExpressionAttributeValues:g,Select:`COUNT`,ExclusiveStartKey:t}));S+=r.Count||0,t=r.LastEvaluatedKey}}return{items:x,start:m,limit:p,length:x.length,total:s?S:void 0}}async function J(e,t,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 n.UpdateCommand({TableName:e.tableName,Key:{PK:t,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(e){let{tenant_id:n,...r}=Y(e),i=[];if(e.actions)try{i=JSON.parse(e.actions)}catch{console.error(`Failed to parse actions JSON for flow ${e.id}`)}let a=X({...r,actions:i});return t.flowSchema.parse(a)}function re(t){return{async create(n,r){let i=new Date().toISOString(),a=`af_${(0,e.nanoid)()}`,o={PK:k.pk(n),SK:k.sk(a),entityType:`FLOW`,tenant_id:n,id:a,name:r.name,actions:r.actions?JSON.stringify(r.actions):void 0,created_at:i,updated_at:i};return await W(t,o),ne(o)},async get(e,n){let r=await U(t,k.pk(e),k.sk(n));return r?ne(r):null},async list(e,n={}){let r=await q(t,k.pk(e),n,{skPrefix:`FLOW#`});return{flows:r.items.map(ne),start:r.start,limit:r.limit,length:r.length}},async update(e,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(t,k.pk(e),k.sk(n),i)?this.get(e,n):null},async remove(e,n){return G(t,k.pk(e),k.sk(n))}}}function ie(e){let n=Y(e);return t.tenantSchema.parse(X(n))}function ae(t){return{async create(n){let r=new Date().toISOString(),i=n.id||(0,e.nanoid)(),a={PK:s.pk(i),SK:s.sk(),GSI1PK:s.gsi1pk(),GSI1SK:s.gsi1sk(i),entityType:`TENANT`,id:i,audience:n.audience,friendly_name:n.friendly_name,sender_name:n.sender_name,sender_email:n.sender_email,session_lifetime:n.session_lifetime,idle_session_lifetime:n.idle_session_lifetime,created_at:r,updated_at:r};return await W(t,a),ie(a)},async get(e){let n=await U(t,s.pk(e),s.sk());return n?ie(n):null},async list(e={}){let{include_totals:n=!1}=e,r=await q(t,s.gsi1pk(),e,{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(e,n){let r={...n,updated_at:new Date().toISOString()};await J(t,s.pk(e),s.sk(),r)},async remove(e){return G(t,s.pk(e),s.sk())}}}function oe(e,n=[]){let{tenant_id:r,...i}=Y(e),a=X({...i,app_metadata:JSON.parse(e.app_metadata||`{}`),user_metadata:JSON.parse(e.user_metadata||`{}`),identities:[{connection:e.connection,provider:e.provider,user_id:(0,t.parseUserId)(e.user_id).id,isSocial:e.is_social,...e.email?{email:e.email}:{},...e.email_verified===void 0?{}:{email_verified:!!e.email_verified},...e.phone_number?{phone_number:e.phone_number}:{},...e.phone_verified===void 0?{}:{phone_verified:!!e.phone_verified},...e.username?{username:e.username}:{}},...n.map(e=>({connection:e.connection,provider:e.provider,user_id:(0,t.parseUserId)(e.user_id).id,isSocial:e.is_social,...e.email?{email:e.email}:{},...e.email_verified===void 0?{}:{email_verified:!!e.email_verified},...e.phone_number?{phone_number:e.phone_number}:{},...e.phone_verified===void 0?{}:{phone_verified:!!e.phone_verified},...e.username?{username:e.username}:{}}))]});return t.userSchema.parse(a)}function se(t){let n=async(n,i)=>{let a=new Date().toISOString(),o=i.user_id||`${i.provider}|${(0,e.nanoid)()}`,s={PK:c.pk(n),SK:c.sk(o),entityType:`USER`,tenant_id:n,user_id:o,email:i.email,username:i.username,phone_number:i.phone_number,given_name:i.given_name,family_name:i.family_name,nickname:i.nickname,name:i.name,picture:i.picture,locale:i.locale,linked_to:i.linked_to,profileData:i.profileData,email_verified:i.email_verified??!1,last_ip:i.last_ip,last_login:i.last_login,provider:i.provider||`auth`,connection:i.connection,is_social:i.is_social??!1,login_count:0,app_metadata:JSON.stringify(i.app_metadata||{}),user_metadata:JSON.stringify(i.user_metadata||{}),middle_name:i.middle_name,preferred_username:i.preferred_username,profile:i.profile,website:i.website,gender:i.gender,birthdate:i.birthdate,zoneinfo:i.zoneinfo,created_at:a,updated_at:a};i.email&&(s.GSI1PK=c.gsi1pk(n,i.email),s.GSI1SK=c.gsi1sk()),s.GSI2PK=c.gsi2pk(n,i.connection),s.GSI2SK=c.gsi2sk(o);try{if(i.password){let r=(0,e.nanoid)(),c={PK:h.pk(n,o),SK:h.sk(r),entityType:`PASSWORD`,id:r,tenant_id:n,user_id:o,password:i.password.hash,algorithm:i.password.algorithm,is_current:!0,created_at:a,updated_at:a};await te(t,[{type:`put`,item:s,conditionExpression:`attribute_not_exists(PK)`},{type:`put`,item:c}])}else await W(t,s,{conditionExpression:`attribute_not_exists(PK)`})}catch(e){throw e.name===`ConditionalCheckFailedException`||e.name===`TransactionCanceledException`&&(e.CancellationReasons||[]).some(e=>e?.Code===`ConditionalCheckFailed`)?new r.HTTPException(409,{message:`User already exists`}):e}return oe(s)};return{create:n,rawCreate:n,async get(e,n){let[r,i]=await Promise.all([U(t,c.pk(e),c.sk(n)),K(t,c.pk(e),{skPrefix:`USER#`}).then(e=>e.items.filter(e=>e.linked_to===n))]);return r?oe(r,i):null},async list(e,n={}){let r=await q(t,c.pk(e),n,{skPrefix:`USER#`}),i=r.items.filter(e=>!e.linked_to),a=r.items.filter(e=>e.linked_to);return{users:i.map(e=>oe(e,a.filter(t=>t.linked_to===e.user_id))),start:r.start,limit:r.limit,length:r.length}},async update(e,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(t,c.pk(e),c.sk(n),i)},async remove(e,n){return G(t,c.pk(e),c.sk(n))},async unlink(e,n,r,i){let a=`${r}|${i}`;return G(t,c.pk(e),c.sk(a))}}}function ce(e){let{tenant_id:n,...r}=Y(e),i=X({...r,device:JSON.parse(e.device||`{}`),clients:JSON.parse(e.clients||`[]`)});return t.sessionSchema.parse(i)}function le(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),ce(i)},async get(t,n){let r=await U(e,l.pk(t),l.sk(n));return r?ce(r):null},async list(t,n={}){let r=await q(e,l.pk(t),n,{skPrefix:`SESSION#`});return{sessions:r.items.map(ce),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 ue(e){let{tenant_id:n,...r}=Y(e);return t.passwordSchema.parse(X(r))}function de(t){return{async create(n,r){let i=new Date().toISOString(),a=(0,e.nanoid)(),o=await this.list(n,r.user_id);for(let e of o)e.is_current&&await J(t,h.pk(n,r.user_id),h.sk(e.id),{is_current:!1,updated_at:i});let s={PK:h.pk(n,r.user_id),SK:h.sk(a),entityType:`PASSWORD`,id:a,tenant_id:n,user_id:r.user_id,password:r.password,algorithm:r.algorithm||`bcrypt`,is_current:!0,created_at:i,updated_at:i};return await W(t,s),ue(s)},async update(e,t){return await this.create(e,t),!0},async get(e,n){let{items:r}=await K(t,h.pk(e,n),{skPrefix:h.skPrefix()}),i=r.find(e=>e.is_current);return i?ue(i):null},async list(e,n,r){let{items:i}=await K(t,h.pk(e,n),{skPrefix:h.skPrefix(),limit:r});return i.map(ue)}}}function fe(e){let{tenant_id:n,...r}=Y(e);return t.codeSchema.parse(X(r))}function pe(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),fe(i)},async get(t,n,r){let i=await U(e,m.pk(t),m.sk(n,r));return i?fe(i):null},async list(t,n={}){let r=await q(e,m.pk(t),n,{skPrefix:`CODE#`});return{codes:r.items.map(fe),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(t,r){let{items:i}=await K(e,m.pk(t),{skPrefix:m.skPrefixByCodeId(r),limit:1}),a=i[0];if(!a)return!1;try{return await e.client.send(new n.UpdateCommand({TableName:e.tableName,Key:{PK:m.pk(t),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},async cleanup(){return 0}}}function Z(e){let{tenant_id:n,...r}=Y(e),i=X({...r,callbacks:e.callbacks?JSON.parse(e.callbacks):void 0,allowed_origins:e.allowed_origins?JSON.parse(e.allowed_origins):void 0,web_origins:e.web_origins?JSON.parse(e.web_origins):void 0,client_aliases:e.client_aliases?JSON.parse(e.client_aliases):void 0,allowed_clients:e.allowed_clients?JSON.parse(e.allowed_clients):void 0,connections:e.connections?JSON.parse(e.connections):void 0,allowed_logout_urls:e.allowed_logout_urls?JSON.parse(e.allowed_logout_urls):void 0,session_transfer:e.session_transfer?JSON.parse(e.session_transfer):void 0,oidc_logout:e.oidc_logout?JSON.parse(e.oidc_logout):void 0,grant_types:e.grant_types?JSON.parse(e.grant_types):void 0,jwt_configuration:e.jwt_configuration?JSON.parse(e.jwt_configuration):void 0,signing_keys:e.signing_keys?JSON.parse(e.signing_keys):void 0,encryption_key:e.encryption_key?JSON.parse(e.encryption_key):void 0,addons:e.addons?JSON.parse(e.addons):void 0,client_metadata:e.client_metadata?JSON.parse(e.client_metadata):void 0,mobile:e.mobile?JSON.parse(e.mobile):void 0,native_social_login:e.native_social_login?JSON.parse(e.native_social_login):void 0,refresh_token:e.refresh_token?JSON.parse(e.refresh_token):void 0,default_organization:e.default_organization?JSON.parse(e.default_organization):void 0,client_authentication_methods:e.client_authentication_methods?JSON.parse(e.client_authentication_methods):void 0,signed_request_object:e.signed_request_object?JSON.parse(e.signed_request_object):void 0,token_quota:e.token_quota?JSON.parse(e.token_quota):void 0});return t.clientSchema.parse(i)}function me(e){return{...Z(e),tenant_id:e.tenant_id}}function he(t){return{async create(n,r){let i=new Date().toISOString(),a=r.client_id??(0,e.nanoid)(),o={PK:d.pk(n),SK:d.sk(a),entityType:`CLIENT`,tenant_id:n,client_id:a,name:r.name,client_secret:r.client_secret,description:r.description,logo_uri:r.logo_uri,app_type:r.app_type,token_endpoint_auth_method:r.token_endpoint_auth_method,initiate_login_uri:r.initiate_login_uri,cross_origin_loc:r.cross_origin_loc,custom_login_page:r.custom_login_page,custom_login_page_preview:r.custom_login_page_preview,form_template:r.form_template,organization_usage:r.organization_usage,organization_require_behavior:r.organization_require_behavior,compliance_level:r.compliance_level,par_request_expiry:r.par_request_expiry,global:r.global??!1,is_first_party:r.is_first_party??!1,oidc_conformant:r.oidc_conformant??!0,auth0_conformant:r.auth0_conformant??!0,sso:r.sso,sso_disabled:r.sso_disabled,cross_origin_authentication:r.cross_origin_authentication,custom_login_page_on:r.custom_login_page_on,require_pushed_authorization_requests:r.require_pushed_authorization_requests,require_proof_of_possession:r.require_proof_of_possession,callbacks:r.callbacks?JSON.stringify(r.callbacks):void 0,allowed_origins:r.allowed_origins?JSON.stringify(r.allowed_origins):void 0,web_origins:r.web_origins?JSON.stringify(r.web_origins):void 0,client_aliases:r.client_aliases?JSON.stringify(r.client_aliases):void 0,allowed_clients:r.allowed_clients?JSON.stringify(r.allowed_clients):void 0,connections:r.connections?JSON.stringify(r.connections):void 0,allowed_logout_urls:r.allowed_logout_urls?JSON.stringify(r.allowed_logout_urls):void 0,session_transfer:r.session_transfer?JSON.stringify(r.session_transfer):void 0,oidc_logout:r.oidc_logout?JSON.stringify(r.oidc_logout):void 0,grant_types:r.grant_types?JSON.stringify(r.grant_types):void 0,jwt_configuration:r.jwt_configuration?JSON.stringify(r.jwt_configuration):void 0,signing_keys:r.signing_keys?JSON.stringify(r.signing_keys):void 0,encryption_key:r.encryption_key?JSON.stringify(r.encryption_key):void 0,addons:r.addons?JSON.stringify(r.addons):void 0,client_metadata:r.client_metadata?JSON.stringify(r.client_metadata):void 0,mobile:r.mobile?JSON.stringify(r.mobile):void 0,native_social_login:r.native_social_login?JSON.stringify(r.native_social_login):void 0,refresh_token:r.refresh_token?JSON.stringify(r.refresh_token):void 0,default_organization:r.default_organization?JSON.stringify(r.default_organization):void 0,client_authentication_methods:r.client_authentication_methods?JSON.stringify(r.client_authentication_methods):void 0,signed_request_object:r.signed_request_object?JSON.stringify(r.signed_request_object):void 0,token_quota:r.token_quota?JSON.stringify(r.token_quota):void 0,created_at:i,updated_at:i};return await W(t,o),Z(o)},async get(e,n){let r=await U(t,d.pk(e),d.sk(n));return r?Z(r):null},async getByClientId(e){let n=await U(t,ee.pk(),ee.sk(e));if(!n?.tenant_id)return null;let r=await U(t,d.pk(n.tenant_id),d.sk(e));return r?me(r):null},async list(e,n={}){let r=await q(t,d.pk(e),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(e,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(t,d.pk(e),d.sk(n),i)},async remove(e,n){return G(t,d.pk(e),d.sk(n))}}}function ge(e){let{tenant_id:n,...r}=Y(e),i=X({...r,scope:e.scope?JSON.parse(e.scope):void 0,authorization_details_types:e.authorization_details_types?JSON.parse(e.authorization_details_types):void 0});return t.clientGrantSchema.parse(i)}function _e(t){return{async create(n,r){let i=new Date().toISOString(),a=(0,e.nanoid)(),o={PK:f.pk(n),SK:f.sk(a),GSI1PK:f.gsi1pk(n,r.client_id),GSI1SK:f.gsi1sk(r.audience),entityType:`CLIENT_GRANT`,tenant_id:n,id:a,client_id:r.client_id,audience:r.audience,scope:r.scope?JSON.stringify(r.scope):void 0,organization_usage:r.organization_usage,allow_any_organization:r.allow_any_organization,is_system:r.is_system,subject_type:r.subject_type,authorization_details_types:r.authorization_details_types?JSON.stringify(r.authorization_details_types):void 0,created_at:i,updated_at:i};return await W(t,o),ge(o)},async get(e,n){let r=await U(t,f.pk(e),f.sk(n));return r?ge(r):null},async list(e,n={}){let r=await q(t,f.pk(e),n,{skPrefix:`CLIENT_GRANT#`});return{client_grants:r.items.map(ge),start:r.start,limit:r.limit,length:r.length}},async update(e,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(t,f.pk(e),f.sk(n),i)},async remove(e,n){return G(t,f.pk(e),f.sk(n))}}}function ve(e){let{tenant_id:n,...r}=Y(e),i=X({...r,options:e.options?JSON.parse(e.options):void 0});return t.connectionSchema.parse(i)}function ye(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(ve(r))}return i},async updateByClient(t,r,i){let{items:a}=await K(e,z.pk(t,r),{skPrefix:z.skPrefix()});if(a.length>0){let i=a.map(e=>({DeleteRequest:{Key:{PK:z.pk(t,r),SK:z.sk(e.connection_id,e.order)}}}));for(let t=0;t<i.length;t+=25){let r=i.slice(t,t+25);await e.client.send(new n.BatchWriteCommand({RequestItems:{[e.tableName]:r}}))}}let o=new Date().toISOString();for(let n=0;n<i.length;n++){let a=i[n];await W(e,{PK:z.pk(t,r),SK:z.sk(a,n),GSI1PK:z.gsi1pk(t,a),GSI1SK:z.gsi1sk(r),entityType:`CLIENT_CONNECTION`,tenant_id:t,client_id:r,connection_id:a,order:n,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 be(e){let{tenant_id:n,constraints:r,...i}=Y(e),a=X({...i,constraints:r?JSON.parse(r):void 0});return t.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),be(i)},async get(t,n){let r=await U(e,V.pk(t),V.sk(n));return r?be(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]?be(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(be)},async markUsed(t,r,i){try{return await e.client.send(new n.UpdateCommand({TableName:e.tableName,Key:{PK:V.pk(t),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(t,r,i){try{return await e.client.send(new n.UpdateCommand({TableName:e.tableName,Key:{PK:V.pk(t),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(t,r,i){let a=await K(e,V.gsi2pk(t,r),{indexName:`GSI2`,skPrefix:V.skPrefix()}),o=0,s=new Date().toISOString();for(let t of a.items)if(!t.revoked_at)try{await e.client.send(new n.UpdateCommand({TableName:e.tableName,Key:{PK:t.PK,SK:t.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(e){let{tenant_id:n,is_system:r,...i}=Y(e),a=X({...i,options:e.options?JSON.parse(e.options):void 0,is_system:r?!0:void 0});return t.connectionSchema.parse(a)}function Ce(t){return{async create(n,r){let i=new Date().toISOString(),a=r.id||(0,e.nanoid)(),o={PK:p.pk(n),SK:p.sk(a),GSI1PK:p.gsi1pk(n,r.name),GSI1SK:p.gsi1sk(),entityType:`CONNECTION`,tenant_id:n,id:a,name:r.name,strategy:r.strategy,options:r.options?JSON.stringify(r.options):void 0,is_system:r.is_system??!1,created_at:i,updated_at:i};return await W(t,o),Se(o)},async get(e,n){let r=await U(t,p.pk(e),p.sk(n));return r?Se(r):null},async list(e,n={}){let r=await q(t,p.pk(e),n,{skPrefix:`CONNECTION#`});return{connections:r.items.map(Se),start:r.start,limit:r.limit,length:r.length}},async update(e,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(e,r.name),i.GSI1SK=p.gsi1sk()),delete i.id,J(t,p.pk(e),p.sk(n),i)},async remove(e,n){return G(t,p.pk(e),p.sk(n))}}}function we(e){let{tenant_id:n,authParams:r,...i}=Y(e),a=X({...i,authParams:JSON.parse(r)});return t.loginSessionSchema.parse(a)}function Te(n){return{async create(r,i){let a=new Date().toISOString(),o=(0,e.nanoid)(),s={PK:u.pk(r),SK:u.sk(o),entityType:`LOGIN_SESSION`,tenant_id:r,id:o,csrf_token:i.csrf_token,authParams:JSON.stringify(i.authParams),expires_at:i.expires_at,state:i.state??t.LoginSessionState.PENDING,state_data:i.state_data,failure_reason:i.failure_reason,user_id:i.user_id,auth0Client:i.auth0Client,deleted_at:i.deleted_at,ip:i.ip,useragent:i.useragent,session_id:i.session_id,authorization_url:i.authorization_url?.slice(0,1024),created_at:a,updated_at:a};return s.ttl=Math.floor(new Date(i.expires_at).getTime()/1e3),await W(n,s),we(s)},async get(e,t){let r=await U(n,u.pk(e),u.sk(t));return r?we(r):null},async update(e,t,r){let i={...r,updated_at:new Date().toISOString()};return r.authParams!==void 0&&(i.authParams=JSON.stringify(r.authParams)),delete i.id,J(n,u.pk(e),u.sk(t),i)},async remove(e,t){return G(n,u.pk(e),u.sk(t))}}}function Ee(e){let{tenant_id:n,...r}=Y(e),i=X({...r,colors:e.colors?JSON.parse(e.colors):void 0,font:e.font?JSON.parse(e.font):void 0});return t.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 Q={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(t){return{async create(n,r){let i=new Date().toISOString(),a=`hc_${(0,e.nanoid)()}`,o={PK:Q.pk(n),SK:Q.sk(a),entityType:`HOOK_CODE`,id:a,tenant_id:n,code:r.code,secrets:r.secrets?JSON.stringify(r.secrets):null,created_at:i,updated_at:i};return await W(t,o),ke(o)},async get(e,n){let r=await U(t,Q.pk(e),Q.sk(n));return r?ke(r):null},async update(e,n,r){let i=await U(t,Q.pk(e),Q.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(t,a),!0},async remove(e,n){return await U(t,Q.pk(e),Q.sk(n))?(await G(t,Q.pk(e),Q.sk(n)),!0):!1}}}function je(e){let{tenant_id:n,...r}=Y(e);return t.hookSchema.parse(X(r))}function Me(t){return{async create(n,r){let i=new Date().toISOString(),a=r.hook_id||(0,e.nanoid)(),o=`url`in r?r.url:void 0,s=`form_id`in r?r.form_id:void 0,c=`template_id`in r?r.template_id:void 0,l={PK:y.pk(n),SK:y.sk(a),entityType:`HOOK`,tenant_id:n,hook_id:a,trigger_id:r.trigger_id,url:o,form_id:s,template_id:c,enabled:r.enabled??!1,synchronous:r.synchronous??!1,priority:r.priority,created_at:i,updated_at:i};return await W(t,l),je(l)},async get(e,n){let r=await U(t,y.pk(e),y.sk(n));return r?je(r):null},async list(e,n={}){let r=await q(t,y.pk(e),n,{skPrefix:`HOOK#`});return{hooks:r.items.map(je),start:r.start,limit:r.limit,length:r.length}},async update(e,n,r){let i={...r,updated_at:new Date().toISOString()};return delete i.hook_id,J(t,y.pk(e),y.sk(n),i)},async remove(e,n){return G(t,y.pk(e),y.sk(n))}}}function Ne(e){return t.signingKeySchema.parse(X(Y(e)))}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(e){let{tenant_id:n,verification:r,domain_metadata:i,...a}=Y(e),o=X({...a,verification:r?JSON.parse(r):void 0,domain_metadata:i?JSON.parse(i):void 0});return t.customDomainSchema.parse(o)}function Ie(e){let{verification:n,domain_metadata:r,...i}=Y(e),a=X({...i,tenant_id:e.tenant_id,verification:n?JSON.parse(n):void 0,domain_metadata:r?JSON.parse(r):void 0});return t.customDomainWithTenantIdSchema.parse(a)}function Le(t){return{async create(n,r){let i=new Date().toISOString(),a=r.custom_domain_id||(0,e.nanoid)(),o={PK:x.pk(n),SK:x.sk(a),GSI1PK:x.gsi1pk(r.domain),GSI1SK:x.gsi1sk(),entityType:`CUSTOM_DOMAIN`,tenant_id:n,custom_domain_id:a,domain:r.domain,primary:!1,status:`pending_verification`,type:r.type,verification_method:r.verification_method,custom_client_ip_header:r.custom_client_ip_header,tls_policy:r.tls_policy,domain_metadata:r.domain_metadata?JSON.stringify(r.domain_metadata):void 0,created_at:i,updated_at:i};return await W(t,o),Fe(o)},async get(e,n){let r=await U(t,x.pk(e),x.sk(n));return r?Fe(r):null},async getByDomain(e){let{items:n}=await K(t,x.gsi1pk(e),{indexName:`GSI1`,skValue:x.gsi1sk()});return n.length?Ie(n[0]):null},async list(e){let{items:n}=await K(t,x.pk(e),{skPrefix:`CUSTOM_DOMAIN#`});return n.map(Fe)},async update(e,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(t,x.pk(e),x.sk(n),i)},async remove(e,n){return G(t,x.pk(e),x.sk(n))}}}function Re(e){let{tenant_id:n,country_code:r,city_name:i,latitude:a,longitude:o,time_zone:s,continent_code:c,...l}=Y(e),u=X({...l,auth0_client:e.auth0_client?JSON.parse(e.auth0_client):void 0,details:e.details?JSON.parse(e.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 t.logSchema.parse(u)}function ze(t){return{async create(n,r){let i=new Date().toISOString(),a=r.log_id||(0,e.nanoid)(),o=r.date||i,s=o.substring(0,10),c={PK:C.pk(n),SK:C.sk(a),GSI1PK:C.gsi1pk(n,s),GSI1SK:C.gsi1sk(a),entityType:`LOG`,tenant_id:n,log_id:a,type:r.type,description:r.description,ip:r.ip,user_agent:r.user_agent,date:o,user_id:r.user_id,user_name:r.user_name,connection:r.connection,connection_id:r.connection_id,client_id:r.client_id,client_name:r.client_name,audience:r.audience,scope:r.scope,strategy:r.strategy,strategy_type:r.strategy_type,hostname:r.hostname,isMobile:r.isMobile,auth0_client:r.auth0_client?JSON.stringify(r.auth0_client):void 0,details:r.details?JSON.stringify(r.details):void 0,country_code:r.location_info?.country_code,city_name:r.location_info?.city_name,latitude:r.location_info?.latitude,longitude:r.location_info?.longitude,time_zone:r.location_info?.time_zone,continent_code:r.location_info?.continent_code,created_at:i,updated_at:i},l=new Date(o);return l.setDate(l.getDate()+30),c.ttl=Math.floor(l.getTime()/1e3),await W(t,c),Re(c)},async list(e,n={}){let r=await q(t,C.pk(e),n,{skPrefix:`LOG#`,scanIndexForward:!1});return{logs:r.items.map(Re),start:r.start,limit:r.limit,length:r.length}},async get(e,n){let r=await U(t,C.pk(e),C.sk(n));return r?Re(r):null}}}function Be(e){let{tenant_id:n,...r}=Y(e),i=X({...r,borders:e.borders?JSON.parse(e.borders):void 0,colors:e.colors?JSON.parse(e.colors):void 0,fonts:e.fonts?JSON.parse(e.fonts):void 0,page_background:e.page_background?JSON.parse(e.page_background):void 0,widget:e.widget?JSON.parse(e.widget):void 0});return t.themeSchema.parse(i)}function Ve(t){return{async create(n,r,i,a){let o=a?.importMetadata,s=new Date().toISOString(),c=o?.id||i||(0,e.nanoid)(),l={PK:v.pk(n),SK:v.sk(c),entityType:`THEME`,tenant_id:n,themeId:c,displayName:r.displayName,borders:r.borders?JSON.stringify(r.borders):void 0,colors:r.colors?JSON.stringify(r.colors):void 0,fonts:r.fonts?JSON.stringify(r.fonts):void 0,page_background:r.page_background?JSON.stringify(r.page_background):void 0,widget:r.widget?JSON.stringify(r.widget):void 0,created_at:o?.created_at??s,updated_at:o?.updated_at??s};return await W(t,l),Be(l)},async get(e,n){let r=await U(t,v.pk(e),v.sk(n));return r?Be(r):null},async update(e,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(t,v.pk(e),v.sk(n),i)},async remove(e,n){return G(t,v.pk(e),v.sk(n))}}}var He={universal_login_experience:`new`,identifier_first:!1,password_first:!1,webauthn_platform_first_factor:!1,show_last_used_connection:!1};function Ue(e){let{tenant_id:n,...r}=Y(e),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,show_last_used_connection:r.show_last_used_connection??!1});return t.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,show_last_used_connection:n.show_last_used_connection??i.show_last_used_connection,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(e){let{tenant_id:n,...r}=Y(e),i=X({...r,credentials:e.credentials?JSON.parse(e.credentials):void 0,settings:e.settings?JSON.parse(e.settings):void 0});return t.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(e){let n=Y(e),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 t.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(e){let{tenant_id:n,device:r,resource_servers:i,...a}=Y(e),o=X({...a,device:JSON.parse(r),resource_servers:JSON.parse(i)});return t.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(t,r,i){let a=0,o=0;for(;;){let s=await q(e,D.pk(t),{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 n.UpdateCommand({TableName:e.tableName,Key:{PK:D.pk(t),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(t,r,i){let a=0,o=0;for(;;){let s=await q(e,D.pk(t),{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 n.UpdateCommand({TableName:e.tableName,Key:{PK:D.pk(t),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(e){let{tenant_id:n,...r}=Y(e),i=X({...r,nodes:e.nodes?JSON.parse(e.nodes):void 0,start:e.start?JSON.parse(e.start):void 0,ending:e.ending?JSON.parse(e.ending):void 0,messages:e.messages?JSON.parse(e.messages):void 0,languages:e.languages?JSON.parse(e.languages):void 0,translations:e.translations?JSON.parse(e.translations):void 0,style:e.style?JSON.parse(e.style):void 0});return t.formSchema.parse(i)}function Qe(t){return{async create(n,r){let i=new Date().toISOString(),a=(0,e.nanoid)(),o={PK:O.pk(n),SK:O.sk(a),entityType:`FORM`,tenant_id:n,id:a,name:r.name,nodes:r.nodes?JSON.stringify(r.nodes):void 0,start:r.start?JSON.stringify(r.start):void 0,ending:r.ending?JSON.stringify(r.ending):void 0,messages:r.messages?JSON.stringify(r.messages):void 0,languages:r.languages?JSON.stringify(r.languages):void 0,translations:r.translations?JSON.stringify(r.translations):void 0,style:r.style?JSON.stringify(r.style):void 0,created_at:i,updated_at:i};return await W(t,o),Ze(o)},async get(e,n){let r=await U(t,O.pk(e),O.sk(n));return r?Ze(r):null},async list(e,n={}){let r=await q(t,O.pk(e),n,{skPrefix:`FORM#`});return{forms:r.items.map(Ze),start:r.start,limit:r.limit,length:r.length}},async update(e,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(t,O.pk(e),O.sk(n),i)},async remove(e,n){return G(t,O.pk(e),O.sk(n))}}}function $e(e){let{tenant_id:n,verification_key:r,is_system:i,metadata:a,...o}=Y(e),s=X({...o,verificationKey:r,scopes:e.scopes?JSON.parse(e.scopes):void 0,options:e.options?JSON.parse(e.options):void 0,is_system:i?!0:void 0,metadata:a});return t.resourceServerSchema.parse(s)}function et(t){return{async create(n,r){let i=new Date().toISOString(),a=r.id||(0,e.nanoid)(),o={PK:A.pk(n),SK:A.sk(a),GSI1PK:A.gsi1pk(n,r.identifier),GSI1SK:A.gsi1sk(),entityType:`RESOURCE_SERVER`,tenant_id:n,id:a,identifier:r.identifier,name:r.name,signing_alg:r.signing_alg,signing_secret:r.signing_secret,allow_offline_access:r.allow_offline_access,skip_consent_for_verifiable_first_party_clients:r.skip_consent_for_verifiable_first_party_clients,token_lifetime:r.token_lifetime,token_lifetime_for_web:r.token_lifetime_for_web,enforce_policies:r.options?.enforce_policies,token_dialect:r.options?.token_dialect,scopes:r.scopes?JSON.stringify(r.scopes):void 0,options:r.options?JSON.stringify(r.options):void 0,verification_key:r.verificationKey,is_system:r.is_system??!1,metadata:r.metadata,created_at:i,updated_at:i};return await W(t,o),$e(o)},async get(e,n){let r=await U(t,A.pk(e),A.sk(n));return r?$e(r):null},async list(e,n={}){let r=await q(t,A.pk(e),n,{skPrefix:`RESOURCE_SERVER#`});return{resource_servers:r.items.map($e),start:r.start,limit:r.limit,length:r.length}},async update(e,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(t,A.pk(e),A.sk(n),i)},async remove(e,n){return G(t,A.pk(e),A.sk(n))}}}function tt(e){let{tenant_id:n,is_system:r,metadata:i,...a}=Y(e);return t.roleSchema.parse(X({...a,is_system:r?!0:void 0,metadata:i}))}function nt(t){return{async create(n,r){let i=new Date().toISOString(),a=(0,e.nanoid)(),o={PK:j.pk(n),SK:j.sk(a),entityType:`ROLE`,tenant_id:n,id:a,name:r.name,description:r.description,is_system:r.is_system??!1,metadata:r.metadata,created_at:i,updated_at:i};return await W(t,o),tt(o)},async get(e,n){let r=await U(t,j.pk(e),j.sk(n));return r?tt(r):null},async list(e,n={}){let r=await q(t,j.pk(e),n,{skPrefix:`ROLE#`});return{roles:r.items.map(tt),start:r.start,limit:r.limit,length:r.length}},async update(e,n,r){let i={...r,updated_at:new Date().toISOString()};return delete i.id,J(t,j.pk(e),j.sk(n),i)},async remove(e,n){return G(t,j.pk(e),j.sk(n))}}}function rt(e){let{tenant_id:n,...r}=Y(e);return t.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(e){let{tenant_id:n,sources:r,...i}=Y(e),a=X({...i,resource_server_name:e.resource_server_name||e.resource_server_identifier,sources:r?JSON.parse(r):void 0});return t.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(e){let{tenant_id:n,...r}=Y(e);return t.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 listUsers(){throw Error(`userRoles.listUsers is not implemented in the AWS DynamoDB adapter. Use a SQL-backed adapter (kysely/drizzle) for tenants that need to list a role's users.`)},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(e){let{tenant_id:n,...r}=Y(e),i=X({...r,branding:e.branding?JSON.parse(e.branding):void 0,metadata:e.metadata?JSON.parse(e.metadata):void 0,enabled_connections:e.enabled_connections?JSON.parse(e.enabled_connections):void 0,token_quota:e.token_quota?JSON.parse(e.token_quota):void 0});return t.organizationSchema.parse(i)}function ut(t){return{async create(n,r){let i=new Date().toISOString(),a=r.id||(0,e.nanoid)(),o={PK:F.pk(n),SK:F.sk(a),GSI1PK:F.gsi1pk(n,r.name),GSI1SK:F.gsi1sk(),entityType:`ORGANIZATION`,tenant_id:n,id:a,name:r.name,display_name:r.display_name,branding:r.branding?JSON.stringify(r.branding):void 0,metadata:r.metadata?JSON.stringify(r.metadata):void 0,enabled_connections:r.enabled_connections?JSON.stringify(r.enabled_connections):void 0,token_quota:r.token_quota?JSON.stringify(r.token_quota):void 0,created_at:i,updated_at:i};return await W(t,o),lt(o)},async get(e,n){let r=await U(t,F.pk(e),F.sk(n));return r||=(await q(t,F.gsi1pk(e,n),{page:0,per_page:1},{indexName:`GSI1`,skPrefix:`ORGANIZATION`})).items[0]||null,r?lt(r):null},async list(e,n={}){let r=await q(t,F.pk(e),n,{skPrefix:`ORGANIZATION#`});return{organizations:r.items.map(lt),start:r.start,limit:r.limit,length:r.length}},async update(e,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(t,F.pk(e),F.sk(n),i)},async remove(e,n){return G(t,F.pk(e),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 $(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 ft(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),$(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($(n,r))}return i},async get(t,n,r){let i=await U(e,L.pk(t,n),L.sk(r));return i?$(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?$(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 pt(e){let{tenant_id:n,...r}=Y(e);return t.userOrganizationSchema.parse(X(r))}function mt(e){let{tenant_id:n,...r}=Y(e),i=X({...r,branding:e.branding?JSON.parse(e.branding):void 0,metadata:e.metadata?JSON.parse(e.metadata):void 0,enabled_connections:e.enabled_connections?JSON.parse(e.enabled_connections):void 0,token_quota:e.token_quota?JSON.parse(e.token_quota):void 0});return t.organizationSchema.parse(i)}function ht(t){return{async create(n,r){let i=new Date().toISOString(),a=(0,e.nanoid)(),o={PK:I.pk(n),SK:I.sk(a),GSI1PK:I.gsi1pk(n,r.user_id),GSI1SK:I.gsi1sk(r.organization_id),GSI2PK:I.gsi2pk(n,r.organization_id),GSI2SK:I.gsi2sk(r.user_id),entityType:`USER_ORGANIZATION`,tenant_id:n,id:a,user_id:r.user_id,organization_id:r.organization_id,created_at:i,updated_at:i};return await W(t,o),pt(o)},async get(e,n){let r=await U(t,I.pk(e),I.sk(n));return r?pt(r):null},async remove(e,n){return G(t,I.pk(e),I.sk(n))},async list(e,n={}){let r=await q(t,I.pk(e),n,{skPrefix:`USER_ORG#`});return{userOrganizations:r.items.map(pt),start:r.start,limit:r.limit,length:r.length}},async listUserOrganizations(e,n,r={}){let i=await q(t,I.gsi1pk(e,n),r,{indexName:`GSI1`,skPrefix:`USER_ORG#`}),a=[];for(let n of i.items){let r=await U(t,F.pk(e),F.sk(n.organization_id));r&&a.push(mt(r))}return{organizations:a,start:i.start,limit:i.limit,length:i.length}},async update(e,n,r){let i={...r,updated_at:new Date().toISOString()};return J(t,I.pk(e),I.sk(n),i)}}}function gt(e){let{tenant_id:n,...r}=Y(e),i=X({...r,inviter:e.inviter?JSON.parse(e.inviter):{},invitee:e.invitee?JSON.parse(e.invitee):{},app_metadata:e.app_metadata?JSON.parse(e.app_metadata):void 0,user_metadata:e.user_metadata?JSON.parse(e.user_metadata):void 0,roles:e.roles?JSON.parse(e.roles):void 0});return t.inviteSchema.parse(i)}function _t(t){return{async create(n,r){let i=new Date().toISOString(),a=(0,e.nanoid)(),o=r.ttl_sec||604800,s=new Date(Date.now()+o*1e3).toISOString(),c={PK:R.pk(n),SK:R.sk(a),GSI1PK:R.gsi1pk(n,r.organization_id),GSI1SK:R.gsi1sk(a),entityType:`INVITE`,tenant_id:n,id:a,organization_id:r.organization_id,inviter:JSON.stringify(r.inviter||{}),invitee:JSON.stringify(r.invitee||{}),client_id:r.client_id,connection_id:r.connection_id,invitation_url:r.invitation_url,expires_at:s,app_metadata:r.app_metadata?JSON.stringify(r.app_metadata):void 0,user_metadata:r.user_metadata?JSON.stringify(r.user_metadata):void 0,roles:r.roles?JSON.stringify(r.roles):void 0,ttl_sec:o,send_invitation_email:r.send_invitation_email??!0,created_at:i,updated_at:i};return c.ttl=Math.floor(new Date(s).getTime()/1e3),await W(t,c),gt(c)},async get(e,n){let r=await U(t,R.pk(e),R.sk(n));return r?gt(r):null},async list(e,n={}){let r=await q(t,R.pk(e),n,{skPrefix:`INVITE#`});return{invites:r.items.map(gt),start:r.start,limit:r.limit,length:r.length}},async update(e,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(t,R.pk(e),R.sk(n),i)},async remove(e,n){return G(t,R.pk(e),R.sk(n))}}}function vt(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 yt(e){let{tenant_id:n,...r}=Y(e);return t.authenticationMethodSchema.parse(X(r))}function bt(n){return{async create(t,r){let i=new Date().toISOString(),a=(0,e.nanoid)(),o={PK:B.pk(t),SK:B.sk(a),GSI1PK:B.gsi1pk(t,r.user_id),GSI1SK:B.gsi1sk(a),entityType:`AUTHENTICATION_METHOD`,id:a,tenant_id:t,user_id:r.user_id,type:r.type,phone_number:r.phone_number,totp_secret:r.totp_secret,credential_id:r.credential_id,public_key:r.public_key,sign_count:r.sign_count,credential_backed_up:r.credential_backed_up,transports:r.transports,friendly_name:r.friendly_name,confirmed:r.confirmed??!1,created_at:i,updated_at:i},s=yt(o);return await W(n,o),s},async get(e,t){let r=await U(n,B.pk(e),B.sk(t));return r?yt(r):null},async getByCredentialId(e,t){let r=(await K(n,B.pk(e),{skPrefix:`AUTHENTICATION_METHOD#`})).items.find(e=>e.credential_id===t);return r?yt(r):null},async list(e,t){return(await K(n,B.gsi1pk(e,t),{skPrefix:B.gsi1skPrefix(),indexName:`GSI1`})).items.map(yt)},async update(e,r,i){let a=await this.get(e,r);if(!a)throw Error(`Authentication method ${r} not found`);let o={...a,...i,updated_at:new Date().toISOString()};t.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(n,B.pk(e),B.sk(r),s),t.authenticationMethodSchema.parse(o)},async remove(e,t){return G(n,B.pk(e),B.sk(t))}}}function xt(e){if(!e)return{path:`/*`};try{let n=JSON.parse(e),r=t.matchSchema.safeParse(n);if(r.success)return r.data}catch{}return{path:`/*`}}function St(e){if(!e)return[];try{let n=JSON.parse(e);if(!Array.isArray(n))return[];let r=[];for(let e of n){let n=t.handlerConfigSchema.safeParse(e);n.success&&r.push(n.data)}return r}catch{return[]}}function Ct(e){let{match:t,handlers:n,...r}=Y(e);return X({...r,match:xt(t),handlers:St(n)})}function wt(e){return[...e].sort((e,t)=>e.priority===t.priority?e.created_at.localeCompare(t.created_at):e.priority-t.priority)}function Tt(t){return{async create(n,r){let i=new Date().toISOString(),a=(0,e.nanoid)(),o={PK:S.pk(n),SK:S.sk(a),GSI1PK:S.gsi1pk(n,r.custom_domain_id),GSI1SK:S.gsi1sk(a),entityType:`PROXY_ROUTE`,tenant_id:n,id:a,custom_domain_id:r.custom_domain_id,priority:r.priority,match:JSON.stringify(r.match),handlers:JSON.stringify(r.handlers),created_at:i,updated_at:i};return await W(t,o),Ct(o)},async get(e,n){let r=await U(t,S.pk(e),S.sk(n));return r?Ct(r):null},async list(e,n={}){let r=n.page??0,i=n.per_page??50,a;if(n.custom_domain_id){let{items:r}=await K(t,S.gsi1pk(e,n.custom_domain_id),{indexName:`GSI1`});a=r}else{let{items:n}=await K(t,S.pk(e),{skPrefix:`PROXY_ROUTE#`});a=n}let o=wt(a).slice(r*i,r*i+i);return{proxy_routes:o.map(Ct),start:r*i,limit:i,length:o.length}},async update(e,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(t,S.pk(e),S.sk(n))?J(t,S.pk(e),S.sk(n),i):!1},async remove(e,n){return await U(t,S.pk(e),S.sk(n))?G(t,S.pk(e),S.sk(n)):!1}}}function Et(e){if(!e)return null;let n;try{n=JSON.parse(e)}catch{return null}let r=t.matchSchema.safeParse(n);return r.success?r.data:null}function Dt(e){if(!e)return null;let n;try{n=JSON.parse(e)}catch{return null}if(!Array.isArray(n)||n.length===0)return null;let r=[];for(let e of n){let n=t.handlerConfigSchema.safeParse(e);if(!n.success)return null;r.push(n.data)}return r}function Ot(e){let t=Et(e.match),n=Dt(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 kt(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(Ot).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 At(e){return{proxyRoutes:Tt(e),resolveHost:t=>kt(e,t)}}function jt(e,t){let n={client:e,tableName:t.tableName},r={actions:i(),actionExecutions:a(),actionVersions:o(),branding:De(n),clients:he(n),clientConnections:ye(n),clientGrants:_e(n),clientRegistrationTokens:xe(n),codes:pe(n),connections:Ce(n),customDomains:Le(n),emailProviders:Ke(n),emailTemplates:Je(n),flows:re(n),forms:Qe(n),hookCode:Ae(n),hooks:Me(n),invites:_t(n),keys:Pe(n),loginSessions:Te(n),logs:ze(n),authenticationMethods:bt(n),organizations:ut(n),organizationConnections:ft(n),passwords:de(n),promptSettings:We(n),proxyRoutes:Tt(n),refreshTokens:Xe(n),resourceServers:et(n),rolePermissions:it(n),roles:nt(n),sessions:le(n),tenants:ae(n),themes:Ve(n),universalLoginTemplates:Oe(n),customText:vt(n),userOrganizations:ht(n),userPermissions:ot(n),userRoles:ct(n),users:se(n),async transaction(e){if(r.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(r)}};return r}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=bt,exports.createBrandingAdapter=De,exports.createClientConnectionsAdapter=ye,exports.createClientGrantsAdapter=_e,exports.createClientsAdapter=he,exports.createCodesAdapter=pe,exports.createConnectionsAdapter=Ce,exports.createCustomDomainsAdapter=Le,exports.createEmailProvidersAdapter=Ke,exports.createFlowsAdapter=re,exports.createFormsAdapter=Qe,exports.createHooksAdapter=Me,exports.createInvitesAdapter=_t,exports.createKeysAdapter=Pe,exports.createLoginSessionsAdapter=Te,exports.createLogsAdapter=ze,exports.createOrganizationConnectionsAdapter=ft,exports.createOrganizationsAdapter=ut,exports.createPasswordsAdapter=de,exports.createPromptSettingsAdapter=We,exports.createProxyDataAdapter=At,exports.createProxyRoutesAdapter=Tt,exports.createRefreshTokensAdapter=Xe,exports.createResourceServersAdapter=et,exports.createRolePermissionsAdapter=it,exports.createRolesAdapter=nt,exports.createSessionsAdapter=le,exports.createTenantsAdapter=ae,exports.createThemesAdapter=Ve,exports.createUserOrganizationsAdapter=ht,exports.createUserPermissionsAdapter=ot,exports.createUserRolesAdapter=ct,exports.createUsersAdapter=se,exports.customDomainKeys=x,exports.customTextKeys=H,exports.default=jt,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("nanoid"),t=require("@authhero/adapter-interfaces"),n=require("@aws-sdk/lib-dynamodb"),r=require("hono/http-exception");function i(){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 a(){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 o(){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 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#`};function te(e){return(0,t.encodeBase64UrlString)(JSON.stringify(e))}function ne(e,n){let r;try{r=JSON.parse((0,t.decodeBase64UrlString)(e))}catch{return null}if(typeof r!=`object`||!r||Array.isArray(r))return null;let i=Object.entries(r);if(i.length===0||!i.every(([,e])=>typeof e==`string`))return null;let a=r;if(typeof a.PK!=`string`||typeof a.SK!=`string`)return null;let o=n.indexName?`${n.indexName}PK`:`PK`,s=n.indexName?`${n.indexName}SK`:`SK`,c=a[o],l=a[s];return typeof c!=`string`||typeof l!=`string`||c!==n.pk||n.skPrefix&&!l.startsWith(n.skPrefix)?null:a}async function re(e,t){let r=t.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 n.TransactWriteCommand({TransactItems:r}))}async function U(e,t,r){return(await e.client.send(new n.GetCommand({TableName:e.tableName,Key:{PK:t,SK:r}}))).Item||null}async function W(e,t,r){await e.client.send(new n.PutCommand({TableName:e.tableName,Item:t,ConditionExpression:r?.conditionExpression}))}async function G(e,t,r){return await e.client.send(new n.DeleteCommand({TableName:e.tableName,Key:{PK:t,SK:r}})),!0}async function K(e,t,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":t};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 n.QueryCommand({TableName:e.tableName,IndexName:o,KeyConditionExpression:u,ExpressionAttributeValues:d,Limit:s,ExclusiveStartKey:c,ScanIndexForward:l}));return{items:f.Items||[],lastKey:f.LastEvaluatedKey}}function q(e){return e?.from!==void 0||e?.take!==void 0}async function J(e,t,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=d?`${d}PK = :pk`:`PK = :pk`,h={":pk":t};if(u){let e=d?`${d}SK`:`SK`;m+=` AND begins_with(${e}, :skPrefix)`,h[`:skPrefix`]=u}if(q(r)){let r=c?ne(c,{pk:t,indexName:d,skPrefix:u})??void 0:void 0,i=await e.client.send(new n.QueryCommand({TableName:e.tableName,IndexName:d,KeyConditionExpression:m,ExpressionAttributeValues:h,Limit:p,ExclusiveStartKey:r,ScanIndexForward:f})),a=i.Items||[],o=i.LastEvaluatedKey?te(i.LastEvaluatedKey):void 0;return{items:a,start:0,limit:p,length:a.length,next:o}}let g=(a||0)*p,_=[],v,y=0,b=g+p;for(;y<b;){let t=await e.client.send(new n.QueryCommand({TableName:e.tableName,IndexName:d,KeyConditionExpression:m,ExpressionAttributeValues:h,Limit:Math.min(b-y,1e3),ExclusiveStartKey:v,ScanIndexForward:f})),r=t.Items||[];if(_=_.concat(r),y+=r.length,v=t.LastEvaluatedKey,!v)break}let x=_.slice(g,g+p),S=_.length;if(s&&v){let t=v;for(;t;){let r=await e.client.send(new n.QueryCommand({TableName:e.tableName,IndexName:d,KeyConditionExpression:m,ExpressionAttributeValues:h,Select:`COUNT`,ExclusiveStartKey:t}));S+=r.Count||0,t=r.LastEvaluatedKey}}return{items:x,start:g,limit:p,length:x.length,total:s?S:void 0}}async function Y(e,t,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 n.UpdateCommand({TableName:e.tableName,Key:{PK:t,SK:r},UpdateExpression:o,ConditionExpression:`attribute_exists(PK)`,ExpressionAttributeNames:s,ExpressionAttributeValues:c})),!0}function X(e){let{PK:t,SK:n,GSI1PK:r,GSI1SK:i,GSI2PK:a,GSI2SK:o,entityType:s,ttl:c,...l}=e;return l}function Z(e){let t={...e};for(let e in t)(t[e]===null||t[e]===void 0)&&delete t[e];return t}function ie(e){let{tenant_id:n,...r}=X(e),i=[];if(e.actions)try{i=JSON.parse(e.actions)}catch{console.error(`Failed to parse actions JSON for flow ${e.id}`)}let a=Z({...r,actions:i});return t.flowSchema.parse(a)}function ae(t){return{async create(n,r){let i=new Date().toISOString(),a=`af_${(0,e.nanoid)()}`,o={PK:k.pk(n),SK:k.sk(a),entityType:`FLOW`,tenant_id:n,id:a,name:r.name,actions:r.actions?JSON.stringify(r.actions):void 0,created_at:i,updated_at:i};return await W(t,o),ie(o)},async get(e,n){let r=await U(t,k.pk(e),k.sk(n));return r?ie(r):null},async list(e,n={}){let r=await J(t,k.pk(e),n,{skPrefix:`FLOW#`});return{flows:r.items.map(ie),start:r.start,limit:r.limit,length:r.length,next:r.next}},async update(e,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 Y(t,k.pk(e),k.sk(n),i)?this.get(e,n):null},async remove(e,n){return G(t,k.pk(e),k.sk(n))}}}function oe(e){let n=X(e);return t.tenantSchema.parse(Z(n))}function se(t){return{async create(n){let r=new Date().toISOString(),i=n.id||(0,e.nanoid)(),a={PK:s.pk(i),SK:s.sk(),GSI1PK:s.gsi1pk(),GSI1SK:s.gsi1sk(i),entityType:`TENANT`,id:i,audience:n.audience,friendly_name:n.friendly_name,sender_name:n.sender_name,sender_email:n.sender_email,session_lifetime:n.session_lifetime,idle_session_lifetime:n.idle_session_lifetime,created_at:r,updated_at:r};return await W(t,a),oe(a)},async get(e){let n=await U(t,s.pk(e),s.sk());return n?oe(n):null},async list(e={}){let{include_totals:n=!1}=e,r=await J(t,s.gsi1pk(),e,{indexName:`GSI1`,skPrefix:`TENANT#`}),i=r.items.map(oe);return q(e)?{tenants:i,totals:{start:r.start,limit:r.limit,length:r.length,next:r.next}}:n?{tenants:i,totals:{start:r.start,limit:r.limit,length:r.length}}:{tenants:i}},async update(e,n){let r={...n,updated_at:new Date().toISOString()};await Y(t,s.pk(e),s.sk(),r)},async remove(e){return G(t,s.pk(e),s.sk())}}}function ce(e,n=[]){let{tenant_id:r,...i}=X(e),a=Z({...i,app_metadata:JSON.parse(e.app_metadata||`{}`),user_metadata:JSON.parse(e.user_metadata||`{}`),identities:[{connection:e.connection,provider:e.provider,user_id:(0,t.parseUserId)(e.user_id).id,isSocial:e.is_social,...e.email?{email:e.email}:{},...e.email_verified===void 0?{}:{email_verified:!!e.email_verified},...e.phone_number?{phone_number:e.phone_number}:{},...e.phone_verified===void 0?{}:{phone_verified:!!e.phone_verified},...e.username?{username:e.username}:{}},...n.map(e=>({connection:e.connection,provider:e.provider,user_id:(0,t.parseUserId)(e.user_id).id,isSocial:e.is_social,...e.email?{email:e.email}:{},...e.email_verified===void 0?{}:{email_verified:!!e.email_verified},...e.phone_number?{phone_number:e.phone_number}:{},...e.phone_verified===void 0?{}:{phone_verified:!!e.phone_verified},...e.username?{username:e.username}:{}}))]});return t.userSchema.parse(a)}function le(t){let n=async(n,i)=>{let a=new Date().toISOString(),o=i.user_id||`${i.provider}|${(0,e.nanoid)()}`,s={PK:c.pk(n),SK:c.sk(o),entityType:`USER`,tenant_id:n,user_id:o,email:i.email,username:i.username,phone_number:i.phone_number,given_name:i.given_name,family_name:i.family_name,nickname:i.nickname,name:i.name,picture:i.picture,locale:i.locale,linked_to:i.linked_to,profileData:i.profileData,email_verified:i.email_verified??!1,last_ip:i.last_ip,last_login:i.last_login,provider:i.provider||`auth`,connection:i.connection,is_social:i.is_social??!1,login_count:0,app_metadata:JSON.stringify(i.app_metadata||{}),user_metadata:JSON.stringify(i.user_metadata||{}),middle_name:i.middle_name,preferred_username:i.preferred_username,profile:i.profile,website:i.website,gender:i.gender,birthdate:i.birthdate,zoneinfo:i.zoneinfo,created_at:a,updated_at:a};i.email&&(s.GSI1PK=c.gsi1pk(n,i.email),s.GSI1SK=c.gsi1sk()),s.GSI2PK=c.gsi2pk(n,i.connection),s.GSI2SK=c.gsi2sk(o);try{if(i.password){let r=(0,e.nanoid)(),c={PK:h.pk(n,o),SK:h.sk(r),entityType:`PASSWORD`,id:r,tenant_id:n,user_id:o,password:i.password.hash,algorithm:i.password.algorithm,is_current:!0,created_at:a,updated_at:a};await re(t,[{type:`put`,item:s,conditionExpression:`attribute_not_exists(PK)`},{type:`put`,item:c}])}else await W(t,s,{conditionExpression:`attribute_not_exists(PK)`})}catch(e){throw e.name===`ConditionalCheckFailedException`||e.name===`TransactionCanceledException`&&(e.CancellationReasons||[]).some(e=>e?.Code===`ConditionalCheckFailed`)?new r.HTTPException(409,{message:`User already exists`}):e}return ce(s)};return{create:n,rawCreate:n,async get(e,n){let[r,i]=await Promise.all([U(t,c.pk(e),c.sk(n)),K(t,c.pk(e),{skPrefix:`USER#`}).then(e=>e.items.filter(e=>e.linked_to===n))]);return r?ce(r,i):null},async list(e,n={}){let r=await J(t,c.pk(e),n,{skPrefix:`USER#`}),i=r.items.filter(e=>!e.linked_to),a=r.items.filter(e=>e.linked_to);return{users:i.map(e=>ce(e,a.filter(t=>t.linked_to===e.user_id))),start:r.start,limit:r.limit,length:r.length}},async update(e,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,Y(t,c.pk(e),c.sk(n),i)},async remove(e,n){return G(t,c.pk(e),c.sk(n))},async unlink(e,n,r,i){let a=`${r}|${i}`;return G(t,c.pk(e),c.sk(a))}}}function ue(e){let{tenant_id:n,...r}=X(e),i=Z({...r,device:JSON.parse(e.device||`{}`),clients:JSON.parse(e.clients||`[]`)});return t.sessionSchema.parse(i)}function de(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),ue(i)},async get(t,n){let r=await U(e,l.pk(t),l.sk(n));return r?ue(r):null},async list(t,n={}){let r=await J(e,l.pk(t),n,{skPrefix:`SESSION#`});return{sessions:r.items.map(ue),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,Y(e,l.pk(t),l.sk(n),i)},async remove(t,n){return G(e,l.pk(t),l.sk(n))}}}function fe(e){let{tenant_id:n,...r}=X(e);return t.passwordSchema.parse(Z(r))}function pe(t){return{async create(n,r){let i=new Date().toISOString(),a=(0,e.nanoid)(),o=await this.list(n,r.user_id);for(let e of o)e.is_current&&await Y(t,h.pk(n,r.user_id),h.sk(e.id),{is_current:!1,updated_at:i});let s={PK:h.pk(n,r.user_id),SK:h.sk(a),entityType:`PASSWORD`,id:a,tenant_id:n,user_id:r.user_id,password:r.password,algorithm:r.algorithm||`bcrypt`,is_current:!0,created_at:i,updated_at:i};return await W(t,s),fe(s)},async update(e,t){return await this.create(e,t),!0},async get(e,n){let{items:r}=await K(t,h.pk(e,n),{skPrefix:h.skPrefix()}),i=r.find(e=>e.is_current);return i?fe(i):null},async list(e,n,r){let{items:i}=await K(t,h.pk(e,n),{skPrefix:h.skPrefix(),limit:r});return i.map(fe)}}}function me(e){let{tenant_id:n,...r}=X(e);return t.codeSchema.parse(Z(r))}function he(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),me(i)},async get(t,n,r){let i=await U(e,m.pk(t),m.sk(n,r));return i?me(i):null},async list(t,n={}){let r=await J(e,m.pk(t),n,{skPrefix:`CODE#`});return{codes:r.items.map(me),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?Y(e,m.pk(t),m.sk(n,i.code_type),{used_at:new Date().toISOString()}):!1},async consume(t,r){let{items:i}=await K(e,m.pk(t),{skPrefix:m.skPrefixByCodeId(r),limit:1}),a=i[0];if(!a)return!1;try{return await e.client.send(new n.UpdateCommand({TableName:e.tableName,Key:{PK:m.pk(t),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},async cleanup(){return 0}}}function Q(e){let{tenant_id:n,...r}=X(e),i=Z({...r,callbacks:e.callbacks?JSON.parse(e.callbacks):void 0,allowed_origins:e.allowed_origins?JSON.parse(e.allowed_origins):void 0,web_origins:e.web_origins?JSON.parse(e.web_origins):void 0,client_aliases:e.client_aliases?JSON.parse(e.client_aliases):void 0,allowed_clients:e.allowed_clients?JSON.parse(e.allowed_clients):void 0,connections:e.connections?JSON.parse(e.connections):void 0,allowed_logout_urls:e.allowed_logout_urls?JSON.parse(e.allowed_logout_urls):void 0,session_transfer:e.session_transfer?JSON.parse(e.session_transfer):void 0,oidc_logout:e.oidc_logout?JSON.parse(e.oidc_logout):void 0,grant_types:e.grant_types?JSON.parse(e.grant_types):void 0,jwt_configuration:e.jwt_configuration?JSON.parse(e.jwt_configuration):void 0,signing_keys:e.signing_keys?JSON.parse(e.signing_keys):void 0,encryption_key:e.encryption_key?JSON.parse(e.encryption_key):void 0,addons:e.addons?JSON.parse(e.addons):void 0,client_metadata:e.client_metadata?JSON.parse(e.client_metadata):void 0,mobile:e.mobile?JSON.parse(e.mobile):void 0,native_social_login:e.native_social_login?JSON.parse(e.native_social_login):void 0,refresh_token:e.refresh_token?JSON.parse(e.refresh_token):void 0,default_organization:e.default_organization?JSON.parse(e.default_organization):void 0,client_authentication_methods:e.client_authentication_methods?JSON.parse(e.client_authentication_methods):void 0,signed_request_object:e.signed_request_object?JSON.parse(e.signed_request_object):void 0,token_quota:e.token_quota?JSON.parse(e.token_quota):void 0});return t.clientSchema.parse(i)}function ge(e){return{...Q(e),tenant_id:e.tenant_id}}function _e(t){return{async create(n,r){let i=new Date().toISOString(),a=r.client_id??(0,e.nanoid)(),o={PK:d.pk(n),SK:d.sk(a),entityType:`CLIENT`,tenant_id:n,client_id:a,name:r.name,client_secret:r.client_secret,description:r.description,logo_uri:r.logo_uri,app_type:r.app_type,token_endpoint_auth_method:r.token_endpoint_auth_method,initiate_login_uri:r.initiate_login_uri,cross_origin_loc:r.cross_origin_loc,custom_login_page:r.custom_login_page,custom_login_page_preview:r.custom_login_page_preview,form_template:r.form_template,organization_usage:r.organization_usage,organization_require_behavior:r.organization_require_behavior,compliance_level:r.compliance_level,par_request_expiry:r.par_request_expiry,global:r.global??!1,is_first_party:r.is_first_party??!1,oidc_conformant:r.oidc_conformant??!0,auth0_conformant:r.auth0_conformant??!0,sso:r.sso,sso_disabled:r.sso_disabled,cross_origin_authentication:r.cross_origin_authentication,custom_login_page_on:r.custom_login_page_on,require_pushed_authorization_requests:r.require_pushed_authorization_requests,require_proof_of_possession:r.require_proof_of_possession,callbacks:r.callbacks?JSON.stringify(r.callbacks):void 0,allowed_origins:r.allowed_origins?JSON.stringify(r.allowed_origins):void 0,web_origins:r.web_origins?JSON.stringify(r.web_origins):void 0,client_aliases:r.client_aliases?JSON.stringify(r.client_aliases):void 0,allowed_clients:r.allowed_clients?JSON.stringify(r.allowed_clients):void 0,connections:r.connections?JSON.stringify(r.connections):void 0,allowed_logout_urls:r.allowed_logout_urls?JSON.stringify(r.allowed_logout_urls):void 0,session_transfer:r.session_transfer?JSON.stringify(r.session_transfer):void 0,oidc_logout:r.oidc_logout?JSON.stringify(r.oidc_logout):void 0,grant_types:r.grant_types?JSON.stringify(r.grant_types):void 0,jwt_configuration:r.jwt_configuration?JSON.stringify(r.jwt_configuration):void 0,signing_keys:r.signing_keys?JSON.stringify(r.signing_keys):void 0,encryption_key:r.encryption_key?JSON.stringify(r.encryption_key):void 0,addons:r.addons?JSON.stringify(r.addons):void 0,client_metadata:r.client_metadata?JSON.stringify(r.client_metadata):void 0,mobile:r.mobile?JSON.stringify(r.mobile):void 0,native_social_login:r.native_social_login?JSON.stringify(r.native_social_login):void 0,refresh_token:r.refresh_token?JSON.stringify(r.refresh_token):void 0,default_organization:r.default_organization?JSON.stringify(r.default_organization):void 0,client_authentication_methods:r.client_authentication_methods?JSON.stringify(r.client_authentication_methods):void 0,signed_request_object:r.signed_request_object?JSON.stringify(r.signed_request_object):void 0,token_quota:r.token_quota?JSON.stringify(r.token_quota):void 0,created_at:i,updated_at:i};return await W(t,o),Q(o)},async get(e,n){let r=await U(t,d.pk(e),d.sk(n));return r?Q(r):null},async getByClientId(e){let n=await U(t,ee.pk(),ee.sk(e));if(!n?.tenant_id)return null;let r=await U(t,d.pk(n.tenant_id),d.sk(e));return r?ge(r):null},async list(e,n={}){let r=await J(t,d.pk(e),n,{skPrefix:`CLIENT#`}),i=r.items.map(Q);return q(n)?{clients:i,totals:{start:r.start,limit:r.limit,length:r.length,next:r.next}}:n.include_totals?{clients:i,totals:{start:r.start,limit:r.limit,length:r.length}}:{clients:i}},async update(e,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,Y(t,d.pk(e),d.sk(n),i)},async remove(e,n){return G(t,d.pk(e),d.sk(n))}}}function ve(e){let{tenant_id:n,...r}=X(e),i=Z({...r,scope:e.scope?JSON.parse(e.scope):void 0,authorization_details_types:e.authorization_details_types?JSON.parse(e.authorization_details_types):void 0});return t.clientGrantSchema.parse(i)}function ye(t){return{async create(n,r){let i=new Date().toISOString(),a=(0,e.nanoid)(),o={PK:f.pk(n),SK:f.sk(a),GSI1PK:f.gsi1pk(n,r.client_id),GSI1SK:f.gsi1sk(r.audience),entityType:`CLIENT_GRANT`,tenant_id:n,id:a,client_id:r.client_id,audience:r.audience,scope:r.scope?JSON.stringify(r.scope):void 0,organization_usage:r.organization_usage,allow_any_organization:r.allow_any_organization,is_system:r.is_system,subject_type:r.subject_type,authorization_details_types:r.authorization_details_types?JSON.stringify(r.authorization_details_types):void 0,created_at:i,updated_at:i};return await W(t,o),ve(o)},async get(e,n){let r=await U(t,f.pk(e),f.sk(n));return r?ve(r):null},async list(e,n={}){let r=await J(t,f.pk(e),n,{skPrefix:`CLIENT_GRANT#`});return{client_grants:r.items.map(ve),start:r.start,limit:r.limit,length:r.length,next:r.next}},async update(e,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,Y(t,f.pk(e),f.sk(n),i)},async remove(e,n){return G(t,f.pk(e),f.sk(n))}}}function be(e){let{tenant_id:n,...r}=X(e),i=Z({...r,options:e.options?JSON.parse(e.options):void 0});return t.connectionSchema.parse(i)}function xe(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(be(r))}return i},async updateByClient(t,r,i){let{items:a}=await K(e,z.pk(t,r),{skPrefix:z.skPrefix()});if(a.length>0){let i=a.map(e=>({DeleteRequest:{Key:{PK:z.pk(t,r),SK:z.sk(e.connection_id,e.order)}}}));for(let t=0;t<i.length;t+=25){let r=i.slice(t,t+25);await e.client.send(new n.BatchWriteCommand({RequestItems:{[e.tableName]:r}}))}}let o=new Date().toISOString();for(let n=0;n<i.length;n++){let a=i[n];await W(e,{PK:z.pk(t,r),SK:z.sk(a,n),GSI1PK:z.gsi1pk(t,a),GSI1SK:z.gsi1sk(r),entityType:`CLIENT_CONNECTION`,tenant_id:t,client_id:r,connection_id:a,order:n,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 Se(e){let{tenant_id:n,constraints:r,...i}=X(e),a=Z({...i,constraints:r?JSON.parse(r):void 0});return t.clientRegistrationTokenSchema.parse(a)}function Ce(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),Se(i)},async get(t,n){let r=await U(e,V.pk(t),V.sk(n));return r?Se(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]?Se(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(Se)},async markUsed(t,r,i){try{return await e.client.send(new n.UpdateCommand({TableName:e.tableName,Key:{PK:V.pk(t),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(t,r,i){try{return await e.client.send(new n.UpdateCommand({TableName:e.tableName,Key:{PK:V.pk(t),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(t,r,i){let a=await K(e,V.gsi2pk(t,r),{indexName:`GSI2`,skPrefix:V.skPrefix()}),o=0,s=new Date().toISOString();for(let t of a.items)if(!t.revoked_at)try{await e.client.send(new n.UpdateCommand({TableName:e.tableName,Key:{PK:t.PK,SK:t.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 we(e){let{tenant_id:n,is_system:r,...i}=X(e),a=Z({...i,options:e.options?JSON.parse(e.options):void 0,is_system:r?!0:void 0});return t.connectionSchema.parse(a)}function Te(t){return{async create(n,r){let i=new Date().toISOString(),a=r.id||(0,e.nanoid)(),o={PK:p.pk(n),SK:p.sk(a),GSI1PK:p.gsi1pk(n,r.name),GSI1SK:p.gsi1sk(),entityType:`CONNECTION`,tenant_id:n,id:a,name:r.name,strategy:r.strategy,options:r.options?JSON.stringify(r.options):void 0,is_system:r.is_system??!1,created_at:i,updated_at:i};return await W(t,o),we(o)},async get(e,n){let r=await U(t,p.pk(e),p.sk(n));return r?we(r):null},async list(e,n={}){let r=await J(t,p.pk(e),n,{skPrefix:`CONNECTION#`});return{connections:r.items.map(we),start:r.start,limit:r.limit,length:r.length}},async update(e,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(e,r.name),i.GSI1SK=p.gsi1sk()),delete i.id,Y(t,p.pk(e),p.sk(n),i)},async remove(e,n){return G(t,p.pk(e),p.sk(n))}}}function Ee(e){let{tenant_id:n,authParams:r,...i}=X(e),a=Z({...i,authParams:JSON.parse(r)});return t.loginSessionSchema.parse(a)}function De(n){return{async create(r,i){let a=new Date().toISOString(),o=(0,e.nanoid)(),s={PK:u.pk(r),SK:u.sk(o),entityType:`LOGIN_SESSION`,tenant_id:r,id:o,csrf_token:i.csrf_token,authParams:JSON.stringify(i.authParams),expires_at:i.expires_at,state:i.state??t.LoginSessionState.PENDING,state_data:i.state_data,failure_reason:i.failure_reason,user_id:i.user_id,auth0Client:i.auth0Client,deleted_at:i.deleted_at,ip:i.ip,useragent:i.useragent,session_id:i.session_id,authorization_url:i.authorization_url?.slice(0,1024),created_at:a,updated_at:a};return s.ttl=Math.floor(new Date(i.expires_at).getTime()/1e3),await W(n,s),Ee(s)},async get(e,t){let r=await U(n,u.pk(e),u.sk(t));return r?Ee(r):null},async update(e,t,r){let i={...r,updated_at:new Date().toISOString()};return r.authParams!==void 0&&(i.authParams=JSON.stringify(r.authParams)),delete i.id,Y(n,u.pk(e),u.sk(t),i)},async remove(e,t){return G(n,u.pk(e),u.sk(t))}}}function Oe(e){let{tenant_id:n,...r}=X(e),i=Z({...r,colors:e.colors?JSON.parse(e.colors):void 0,font:e.font?JSON.parse(e.font):void 0});return t.brandingSchema.parse(i)}function ke(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?Oe(n):null}}}function Ae(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 je(e){let{tenant_id:t,secrets:n,...r}=X(e);return{...r,tenant_id:t,secrets:n?JSON.parse(n):void 0}}function Me(t){return{async create(n,r){let i=new Date().toISOString(),a=`hc_${(0,e.nanoid)()}`,o={PK:$.pk(n),SK:$.sk(a),entityType:`HOOK_CODE`,id:a,tenant_id:n,code:r.code,secrets:r.secrets?JSON.stringify(r.secrets):null,created_at:i,updated_at:i};return await W(t,o),je(o)},async get(e,n){let r=await U(t,$.pk(e),$.sk(n));return r?je(r):null},async update(e,n,r){let i=await U(t,$.pk(e),$.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(t,a),!0},async remove(e,n){return await U(t,$.pk(e),$.sk(n))?(await G(t,$.pk(e),$.sk(n)),!0):!1}}}function Ne(e){let{tenant_id:n,...r}=X(e);return t.hookSchema.parse(Z(r))}function Pe(t){return{async create(n,r){let i=new Date().toISOString(),a=r.hook_id||(0,e.nanoid)(),o=`url`in r?r.url:void 0,s=`form_id`in r?r.form_id:void 0,c=`template_id`in r?r.template_id:void 0,l={PK:y.pk(n),SK:y.sk(a),entityType:`HOOK`,tenant_id:n,hook_id:a,trigger_id:r.trigger_id,url:o,form_id:s,template_id:c,enabled:r.enabled??!1,synchronous:r.synchronous??!1,priority:r.priority,created_at:i,updated_at:i};return await W(t,l),Ne(l)},async get(e,n){let r=await U(t,y.pk(e),y.sk(n));return r?Ne(r):null},async list(e,n={}){let r=await J(t,y.pk(e),n,{skPrefix:`HOOK#`});return{hooks:r.items.map(Ne),start:r.start,limit:r.limit,length:r.length}},async update(e,n,r){let i={...r,updated_at:new Date().toISOString()};return delete i.hook_id,Y(t,y.pk(e),y.sk(n),i)},async remove(e,n){return G(t,y.pk(e),y.sk(n))}}}function Fe(e){return t.signingKeySchema.parse(Z(X(e)))}function Ie(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 J(e,b.pk(),t,{skPrefix:`KEY#`});return{signingKeys:n.items.map(Fe),start:n.start,limit:n.limit,length:n.length}},async update(t,n){let r={...n,updated_at:new Date().toISOString()};return Y(e,b.pk(),b.sk(t),r)}}}function Le(e){let{tenant_id:n,verification:r,domain_metadata:i,...a}=X(e),o=Z({...a,verification:r?JSON.parse(r):void 0,domain_metadata:i?JSON.parse(i):void 0});return t.customDomainSchema.parse(o)}function Re(e){let{verification:n,domain_metadata:r,...i}=X(e),a=Z({...i,tenant_id:e.tenant_id,verification:n?JSON.parse(n):void 0,domain_metadata:r?JSON.parse(r):void 0});return t.customDomainWithTenantIdSchema.parse(a)}function ze(t){return{async create(n,r){let i=new Date().toISOString(),a=r.custom_domain_id||(0,e.nanoid)(),o={PK:x.pk(n),SK:x.sk(a),GSI1PK:x.gsi1pk(r.domain),GSI1SK:x.gsi1sk(),entityType:`CUSTOM_DOMAIN`,tenant_id:n,custom_domain_id:a,domain:r.domain,primary:!1,status:`pending_verification`,type:r.type,verification_method:r.verification_method,custom_client_ip_header:r.custom_client_ip_header,tls_policy:r.tls_policy,domain_metadata:r.domain_metadata?JSON.stringify(r.domain_metadata):void 0,created_at:i,updated_at:i};return await W(t,o),Le(o)},async get(e,n){let r=await U(t,x.pk(e),x.sk(n));return r?Le(r):null},async getByDomain(e){let{items:n}=await K(t,x.gsi1pk(e),{indexName:`GSI1`,skValue:x.gsi1sk()});return n.length?Re(n[0]):null},async list(e){let{items:n}=await K(t,x.pk(e),{skPrefix:`CUSTOM_DOMAIN#`});return n.map(Le)},async update(e,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,Y(t,x.pk(e),x.sk(n),i)},async remove(e,n){return G(t,x.pk(e),x.sk(n))}}}function Be(e){let{tenant_id:n,country_code:r,city_name:i,latitude:a,longitude:o,time_zone:s,continent_code:c,...l}=X(e),u=Z({...l,auth0_client:e.auth0_client?JSON.parse(e.auth0_client):void 0,details:e.details?JSON.parse(e.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 t.logSchema.parse(u)}function Ve(t){return{async create(n,r){let i=new Date().toISOString(),a=r.log_id||(0,e.nanoid)(),o=r.date||i,s=o.substring(0,10),c={PK:C.pk(n),SK:C.sk(a),GSI1PK:C.gsi1pk(n,s),GSI1SK:C.gsi1sk(a),entityType:`LOG`,tenant_id:n,log_id:a,type:r.type,description:r.description,ip:r.ip,user_agent:r.user_agent,date:o,user_id:r.user_id,user_name:r.user_name,connection:r.connection,connection_id:r.connection_id,client_id:r.client_id,client_name:r.client_name,audience:r.audience,scope:r.scope,strategy:r.strategy,strategy_type:r.strategy_type,hostname:r.hostname,isMobile:r.isMobile,auth0_client:r.auth0_client?JSON.stringify(r.auth0_client):void 0,details:r.details?JSON.stringify(r.details):void 0,country_code:r.location_info?.country_code,city_name:r.location_info?.city_name,latitude:r.location_info?.latitude,longitude:r.location_info?.longitude,time_zone:r.location_info?.time_zone,continent_code:r.location_info?.continent_code,created_at:i,updated_at:i},l=new Date(o);return l.setDate(l.getDate()+30),c.ttl=Math.floor(l.getTime()/1e3),await W(t,c),Be(c)},async list(e,n={}){let r=await J(t,C.pk(e),n,{skPrefix:`LOG#`,scanIndexForward:!1});return{logs:r.items.map(Be),start:r.start,limit:r.limit,length:r.length,next:r.next}},async get(e,n){let r=await U(t,C.pk(e),C.sk(n));return r?Be(r):null}}}function He(e){let{tenant_id:n,...r}=X(e),i=Z({...r,borders:e.borders?JSON.parse(e.borders):void 0,colors:e.colors?JSON.parse(e.colors):void 0,fonts:e.fonts?JSON.parse(e.fonts):void 0,page_background:e.page_background?JSON.parse(e.page_background):void 0,widget:e.widget?JSON.parse(e.widget):void 0});return t.themeSchema.parse(i)}function Ue(t){return{async create(n,r,i,a){let o=a?.importMetadata,s=new Date().toISOString(),c=o?.id||i||(0,e.nanoid)(),l={PK:v.pk(n),SK:v.sk(c),entityType:`THEME`,tenant_id:n,themeId:c,displayName:r.displayName,borders:r.borders?JSON.stringify(r.borders):void 0,colors:r.colors?JSON.stringify(r.colors):void 0,fonts:r.fonts?JSON.stringify(r.fonts):void 0,page_background:r.page_background?JSON.stringify(r.page_background):void 0,widget:r.widget?JSON.stringify(r.widget):void 0,created_at:o?.created_at??s,updated_at:o?.updated_at??s};return await W(t,l),He(l)},async get(e,n){let r=await U(t,v.pk(e),v.sk(n));return r?He(r):null},async update(e,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)),Y(t,v.pk(e),v.sk(n),i)},async remove(e,n){return G(t,v.pk(e),v.sk(n))}}}var We={universal_login_experience:`new`,identifier_first:!1,password_first:!1,webauthn_platform_first_factor:!1,show_last_used_connection:!1};function Ge(e){let{tenant_id:n,...r}=X(e),i=Z({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,show_last_used_connection:r.show_last_used_connection??!1});return t.promptSettingSchema.parse(i)}function Ke(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,show_last_used_connection:n.show_last_used_connection??i.show_last_used_connection,created_at:a?.created_at||r,updated_at:r})},async get(t){let n=await U(e,E.pk(t),E.sk());return n?Ge(n):We}}}function qe(e){let{tenant_id:n,...r}=X(e),i=Z({...r,credentials:e.credentials?JSON.parse(e.credentials):void 0,settings:e.settings?JSON.parse(e.settings):void 0});return t.emailProviderSchema.parse(i)}function Je(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?qe(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 Y(e,w.pk(t),w.sk(),r)},async remove(t){await G(e,w.pk(t),w.sk())}}}function Ye(e){let n=X(e),r=Z({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 t.emailTemplateSchema.parse(r)}function Xe(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?Ye(r):null},async list(t){let{items:n}=await K(e,T.pk(t),{skPrefix:T.skPrefix()});return n.map(Ye)},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 Y(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 Ze(e){let{tenant_id:n,device:r,resource_servers:i,...a}=X(e),o=Z({...a,device:JSON.parse(r),resource_servers:JSON.parse(i)});return t.refreshTokenSchema.parse(o)}function Qe(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),Ze(i)},async get(t,n){let r=await U(e,D.pk(t),D.sk(n));return r?Ze(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]?Ze(r.items[0]):null},async list(t,n={}){let r=await J(e,D.pk(t),n,{skPrefix:`REFRESH_TOKEN#`});return{refresh_tokens:r.items.map(Ze),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 Y(e,D.pk(t),D.sk(n),a);if(o&&i?.loginSessionBump)try{await Y(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(t,r,i){let a=0,o=0;for(;;){let s=await J(e,D.pk(t),{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 n.UpdateCommand({TableName:e.tableName,Key:{PK:D.pk(t),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(t,r,i){let a=0,o=0;for(;;){let s=await J(e,D.pk(t),{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 n.UpdateCommand({TableName:e.tableName,Key:{PK:D.pk(t),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 $e(e){let{tenant_id:n,...r}=X(e),i=Z({...r,nodes:e.nodes?JSON.parse(e.nodes):void 0,start:e.start?JSON.parse(e.start):void 0,ending:e.ending?JSON.parse(e.ending):void 0,messages:e.messages?JSON.parse(e.messages):void 0,languages:e.languages?JSON.parse(e.languages):void 0,translations:e.translations?JSON.parse(e.translations):void 0,style:e.style?JSON.parse(e.style):void 0});return t.formSchema.parse(i)}function et(t){return{async create(n,r){let i=new Date().toISOString(),a=(0,e.nanoid)(),o={PK:O.pk(n),SK:O.sk(a),entityType:`FORM`,tenant_id:n,id:a,name:r.name,nodes:r.nodes?JSON.stringify(r.nodes):void 0,start:r.start?JSON.stringify(r.start):void 0,ending:r.ending?JSON.stringify(r.ending):void 0,messages:r.messages?JSON.stringify(r.messages):void 0,languages:r.languages?JSON.stringify(r.languages):void 0,translations:r.translations?JSON.stringify(r.translations):void 0,style:r.style?JSON.stringify(r.style):void 0,created_at:i,updated_at:i};return await W(t,o),$e(o)},async get(e,n){let r=await U(t,O.pk(e),O.sk(n));return r?$e(r):null},async list(e,n={}){let r=await J(t,O.pk(e),n,{skPrefix:`FORM#`});return{forms:r.items.map($e),start:r.start,limit:r.limit,length:r.length}},async update(e,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)),Y(t,O.pk(e),O.sk(n),i)},async remove(e,n){return G(t,O.pk(e),O.sk(n))}}}function tt(e){let{tenant_id:n,verification_key:r,is_system:i,metadata:a,...o}=X(e),s=Z({...o,verificationKey:r,scopes:e.scopes?JSON.parse(e.scopes):void 0,options:e.options?JSON.parse(e.options):void 0,is_system:i?!0:void 0,metadata:a});return t.resourceServerSchema.parse(s)}function nt(t){return{async create(n,r){let i=new Date().toISOString(),a=r.id||(0,e.nanoid)(),o={PK:A.pk(n),SK:A.sk(a),GSI1PK:A.gsi1pk(n,r.identifier),GSI1SK:A.gsi1sk(),entityType:`RESOURCE_SERVER`,tenant_id:n,id:a,identifier:r.identifier,name:r.name,signing_alg:r.signing_alg,signing_secret:r.signing_secret,allow_offline_access:r.allow_offline_access,skip_consent_for_verifiable_first_party_clients:r.skip_consent_for_verifiable_first_party_clients,token_lifetime:r.token_lifetime,token_lifetime_for_web:r.token_lifetime_for_web,enforce_policies:r.options?.enforce_policies,token_dialect:r.options?.token_dialect,scopes:r.scopes?JSON.stringify(r.scopes):void 0,options:r.options?JSON.stringify(r.options):void 0,verification_key:r.verificationKey,is_system:r.is_system??!1,metadata:r.metadata,created_at:i,updated_at:i};return await W(t,o),tt(o)},async get(e,n){let r=await U(t,A.pk(e),A.sk(n));return r?tt(r):null},async list(e,n={}){let r=await J(t,A.pk(e),n,{skPrefix:`RESOURCE_SERVER#`});return{resource_servers:r.items.map(tt),start:r.start,limit:r.limit,length:r.length,next:r.next}},async update(e,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,Y(t,A.pk(e),A.sk(n),i)},async remove(e,n){return G(t,A.pk(e),A.sk(n))}}}function rt(e){let{tenant_id:n,is_system:r,metadata:i,...a}=X(e);return t.roleSchema.parse(Z({...a,is_system:r?!0:void 0,metadata:i}))}function it(t){return{async create(n,r){let i=new Date().toISOString(),a=(0,e.nanoid)(),o={PK:j.pk(n),SK:j.sk(a),entityType:`ROLE`,tenant_id:n,id:a,name:r.name,description:r.description,is_system:r.is_system??!1,metadata:r.metadata,created_at:i,updated_at:i};return await W(t,o),rt(o)},async get(e,n){let r=await U(t,j.pk(e),j.sk(n));return r?rt(r):null},async list(e,n={}){let r=await J(t,j.pk(e),n,{skPrefix:`ROLE#`});return{roles:r.items.map(rt),start:r.start,limit:r.limit,length:r.length}},async update(e,n,r){let i={...r,updated_at:new Date().toISOString()};return delete i.id,Y(t,j.pk(e),j.sk(n),i)},async remove(e,n){return G(t,j.pk(e),j.sk(n))}}}function at(e){let{tenant_id:n,...r}=X(e);return t.rolePermissionSchema.parse(Z(r))}function ot(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 J(e,M.pk(t,n),r,{skPrefix:M.skPrefix()})).items.map(at)}}}function st(e){let{tenant_id:n,sources:r,...i}=X(e),a=Z({...i,resource_server_name:e.resource_server_name||e.resource_server_identifier,sources:r?JSON.parse(r):void 0});return t.userPermissionWithDetailsSchema.parse(a)}function ct(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 J(e,N.pk(t,n,i),r,{skPrefix:N.skPrefix()})).items.map(st)}}}function lt(e){let{tenant_id:n,...r}=X(e);return t.roleSchema.parse(Z(r))}function ut(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 listUsers(){throw Error(`userRoles.listUsers is not implemented in the AWS DynamoDB adapter. Use a SQL-backed adapter (kysely/drizzle) for tenants that need to list a role's users.`)},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(lt(r))}return o}}}function dt(e){let{tenant_id:n,...r}=X(e),i=Z({...r,branding:e.branding?JSON.parse(e.branding):void 0,metadata:e.metadata?JSON.parse(e.metadata):void 0,enabled_connections:e.enabled_connections?JSON.parse(e.enabled_connections):void 0,token_quota:e.token_quota?JSON.parse(e.token_quota):void 0});return t.organizationSchema.parse(i)}function ft(t){return{async create(n,r){let i=new Date().toISOString(),a=r.id||(0,e.nanoid)(),o={PK:F.pk(n),SK:F.sk(a),GSI1PK:F.gsi1pk(n,r.name),GSI1SK:F.gsi1sk(),entityType:`ORGANIZATION`,tenant_id:n,id:a,name:r.name,display_name:r.display_name,branding:r.branding?JSON.stringify(r.branding):void 0,metadata:r.metadata?JSON.stringify(r.metadata):void 0,enabled_connections:r.enabled_connections?JSON.stringify(r.enabled_connections):void 0,token_quota:r.token_quota?JSON.stringify(r.token_quota):void 0,created_at:i,updated_at:i};return await W(t,o),dt(o)},async get(e,n){let r=await U(t,F.pk(e),F.sk(n));return r||=(await J(t,F.gsi1pk(e,n),{page:0,per_page:1},{indexName:`GSI1`,skPrefix:`ORGANIZATION`})).items[0]||null,r?dt(r):null},async list(e,n={}){let r=await J(t,F.pk(e),n,{skPrefix:`ORGANIZATION#`});return{organizations:r.items.map(dt),start:r.start,limit:r.limit,length:r.length,next:r.next}},async update(e,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,Y(t,F.pk(e),F.sk(n),i)},async remove(e,n){return G(t,F.pk(e),F.sk(n))}}}async function pt(e,t,n){let r=await U(e,p.pk(t),p.sk(n));if(r)return{name:r.name,strategy:r.strategy}}function mt(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 ht(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),mt(a,await pt(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 pt(e,t,n.connection_id);i.push(mt(n,r))}return i},async get(t,n,r){let i=await U(e,L.pk(t,n),L.sk(r));return i?mt(i,await pt(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 Y(e,L.pk(t,n),L.sk(r),a);let o=await U(e,L.pk(t,n),L.sk(r));return o?mt(o,await pt(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 gt(e){let{tenant_id:n,...r}=X(e);return t.userOrganizationSchema.parse(Z(r))}function _t(e){let{tenant_id:n,...r}=X(e),i=Z({...r,branding:e.branding?JSON.parse(e.branding):void 0,metadata:e.metadata?JSON.parse(e.metadata):void 0,enabled_connections:e.enabled_connections?JSON.parse(e.enabled_connections):void 0,token_quota:e.token_quota?JSON.parse(e.token_quota):void 0});return t.organizationSchema.parse(i)}function vt(t){return{async create(n,r){let i=new Date().toISOString(),a=(0,e.nanoid)(),o={PK:I.pk(n),SK:I.sk(a),GSI1PK:I.gsi1pk(n,r.user_id),GSI1SK:I.gsi1sk(r.organization_id),GSI2PK:I.gsi2pk(n,r.organization_id),GSI2SK:I.gsi2sk(r.user_id),entityType:`USER_ORGANIZATION`,tenant_id:n,id:a,user_id:r.user_id,organization_id:r.organization_id,created_at:i,updated_at:i};return await W(t,o),gt(o)},async get(e,n){let r=await U(t,I.pk(e),I.sk(n));return r?gt(r):null},async remove(e,n){return G(t,I.pk(e),I.sk(n))},async list(e,n={}){let r=await J(t,I.pk(e),n,{skPrefix:`USER_ORG#`});return{userOrganizations:r.items.map(gt),start:r.start,limit:r.limit,length:r.length}},async listUserOrganizations(e,n,r={}){let i=await J(t,I.gsi1pk(e,n),r,{indexName:`GSI1`,skPrefix:`USER_ORG#`}),a=[];for(let n of i.items){let r=await U(t,F.pk(e),F.sk(n.organization_id));r&&a.push(_t(r))}return{organizations:a,start:i.start,limit:i.limit,length:i.length}},async update(e,n,r){let i={...r,updated_at:new Date().toISOString()};return Y(t,I.pk(e),I.sk(n),i)}}}function yt(e){let{tenant_id:n,...r}=X(e),i=Z({...r,inviter:e.inviter?JSON.parse(e.inviter):{},invitee:e.invitee?JSON.parse(e.invitee):{},app_metadata:e.app_metadata?JSON.parse(e.app_metadata):void 0,user_metadata:e.user_metadata?JSON.parse(e.user_metadata):void 0,roles:e.roles?JSON.parse(e.roles):void 0});return t.inviteSchema.parse(i)}function bt(t){return{async create(n,r){let i=new Date().toISOString(),a=(0,e.nanoid)(),o=r.ttl_sec||604800,s=new Date(Date.now()+o*1e3).toISOString(),c={PK:R.pk(n),SK:R.sk(a),GSI1PK:R.gsi1pk(n,r.organization_id),GSI1SK:R.gsi1sk(a),entityType:`INVITE`,tenant_id:n,id:a,organization_id:r.organization_id,inviter:JSON.stringify(r.inviter||{}),invitee:JSON.stringify(r.invitee||{}),client_id:r.client_id,connection_id:r.connection_id,invitation_url:r.invitation_url,expires_at:s,app_metadata:r.app_metadata?JSON.stringify(r.app_metadata):void 0,user_metadata:r.user_metadata?JSON.stringify(r.user_metadata):void 0,roles:r.roles?JSON.stringify(r.roles):void 0,ttl_sec:o,send_invitation_email:r.send_invitation_email??!0,created_at:i,updated_at:i};return c.ttl=Math.floor(new Date(s).getTime()/1e3),await W(t,c),yt(c)},async get(e,n){let r=await U(t,R.pk(e),R.sk(n));return r?yt(r):null},async list(e,n={}){let r=await J(t,R.pk(e),n,{skPrefix:`INVITE#`});return{invites:r.items.map(yt),start:r.start,limit:r.limit,length:r.length}},async update(e,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,Y(t,R.pk(e),R.sk(n),i)},async remove(e,n){return G(t,R.pk(e),R.sk(n))}}}function xt(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 St(e){let{tenant_id:n,...r}=X(e);return t.authenticationMethodSchema.parse(Z(r))}function Ct(n){return{async create(t,r){let i=new Date().toISOString(),a=(0,e.nanoid)(),o={PK:B.pk(t),SK:B.sk(a),GSI1PK:B.gsi1pk(t,r.user_id),GSI1SK:B.gsi1sk(a),entityType:`AUTHENTICATION_METHOD`,id:a,tenant_id:t,user_id:r.user_id,type:r.type,phone_number:r.phone_number,totp_secret:r.totp_secret,credential_id:r.credential_id,public_key:r.public_key,sign_count:r.sign_count,credential_backed_up:r.credential_backed_up,transports:r.transports,friendly_name:r.friendly_name,confirmed:r.confirmed??!1,created_at:i,updated_at:i},s=St(o);return await W(n,o),s},async get(e,t){let r=await U(n,B.pk(e),B.sk(t));return r?St(r):null},async getByCredentialId(e,t){let r=(await K(n,B.pk(e),{skPrefix:`AUTHENTICATION_METHOD#`})).items.find(e=>e.credential_id===t);return r?St(r):null},async list(e,t){return(await K(n,B.gsi1pk(e,t),{skPrefix:B.gsi1skPrefix(),indexName:`GSI1`})).items.map(St)},async update(e,r,i){let a=await this.get(e,r);if(!a)throw Error(`Authentication method ${r} not found`);let o={...a,...i,updated_at:new Date().toISOString()};t.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 Y(n,B.pk(e),B.sk(r),s),t.authenticationMethodSchema.parse(o)},async remove(e,t){return G(n,B.pk(e),B.sk(t))}}}function wt(e){if(!e)return{path:`/*`};try{let n=JSON.parse(e),r=t.matchSchema.safeParse(n);if(r.success)return r.data}catch{}return{path:`/*`}}function Tt(e){if(!e)return[];try{let n=JSON.parse(e);if(!Array.isArray(n))return[];let r=[];for(let e of n){let n=t.handlerConfigSchema.safeParse(e);n.success&&r.push(n.data)}return r}catch{return[]}}function Et(e){let{match:t,handlers:n,...r}=X(e);return Z({...r,match:wt(t),handlers:Tt(n)})}function Dt(e){return[...e].sort((e,t)=>e.priority===t.priority?e.created_at.localeCompare(t.created_at):e.priority-t.priority)}function Ot(t){return{async create(n,r){let i=new Date().toISOString(),a=(0,e.nanoid)(),o={PK:S.pk(n),SK:S.sk(a),GSI1PK:S.gsi1pk(n,r.custom_domain_id),GSI1SK:S.gsi1sk(a),entityType:`PROXY_ROUTE`,tenant_id:n,id:a,custom_domain_id:r.custom_domain_id,priority:r.priority,match:JSON.stringify(r.match),handlers:JSON.stringify(r.handlers),created_at:i,updated_at:i};return await W(t,o),Et(o)},async get(e,n){let r=await U(t,S.pk(e),S.sk(n));return r?Et(r):null},async list(e,n={}){let r=n.page??0,i=n.per_page??50,a;if(n.custom_domain_id){let{items:r}=await K(t,S.gsi1pk(e,n.custom_domain_id),{indexName:`GSI1`});a=r}else{let{items:n}=await K(t,S.pk(e),{skPrefix:`PROXY_ROUTE#`});a=n}let o=Dt(a).slice(r*i,r*i+i);return{proxy_routes:o.map(Et),start:r*i,limit:i,length:o.length}},async update(e,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(t,S.pk(e),S.sk(n))?Y(t,S.pk(e),S.sk(n),i):!1},async remove(e,n){return await U(t,S.pk(e),S.sk(n))?G(t,S.pk(e),S.sk(n)):!1}}}function kt(e){if(!e)return null;let n;try{n=JSON.parse(e)}catch{return null}let r=t.matchSchema.safeParse(n);return r.success?r.data:null}function At(e){if(!e)return null;let n;try{n=JSON.parse(e)}catch{return null}if(!Array.isArray(n)||n.length===0)return null;let r=[];for(let e of n){let n=t.handlerConfigSchema.safeParse(e);if(!n.success)return null;r.push(n.data)}return r}function jt(e){let t=kt(e.match),n=At(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 Mt(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(jt).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 Nt(e){return{proxyRoutes:Ot(e),resolveHost:t=>Mt(e,t)}}function Pt(e,t){let n={client:e,tableName:t.tableName},r={actions:i(),actionExecutions:a(),actionVersions:o(),branding:ke(n),clients:_e(n),clientConnections:xe(n),clientGrants:ye(n),clientRegistrationTokens:Ce(n),codes:he(n),connections:Te(n),customDomains:ze(n),emailProviders:Je(n),emailTemplates:Xe(n),flows:ae(n),forms:et(n),hookCode:Me(n),hooks:Pe(n),invites:bt(n),keys:Ie(n),loginSessions:De(n),logs:Ve(n),authenticationMethods:Ct(n),organizations:ft(n),organizationConnections:ht(n),passwords:pe(n),promptSettings:Ke(n),proxyRoutes:Ot(n),refreshTokens:Qe(n),resourceServers:nt(n),rolePermissions:ot(n),roles:it(n),sessions:de(n),tenants:se(n),themes:Ue(n),universalLoginTemplates:Ae(n),customText:xt(n),userOrganizations:vt(n),userPermissions:ct(n),userRoles:ut(n),users:le(n),async transaction(e){if(r.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(r)}};return r}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=Ct,exports.createBrandingAdapter=ke,exports.createClientConnectionsAdapter=xe,exports.createClientGrantsAdapter=ye,exports.createClientsAdapter=_e,exports.createCodesAdapter=he,exports.createConnectionsAdapter=Te,exports.createCustomDomainsAdapter=ze,exports.createEmailProvidersAdapter=Je,exports.createFlowsAdapter=ae,exports.createFormsAdapter=et,exports.createHooksAdapter=Pe,exports.createInvitesAdapter=bt,exports.createKeysAdapter=Ie,exports.createLoginSessionsAdapter=De,exports.createLogsAdapter=Ve,exports.createOrganizationConnectionsAdapter=ht,exports.createOrganizationsAdapter=ft,exports.createPasswordsAdapter=pe,exports.createPromptSettingsAdapter=Ke,exports.createProxyDataAdapter=Nt,exports.createProxyRoutesAdapter=Ot,exports.createRefreshTokensAdapter=Qe,exports.createResourceServersAdapter=nt,exports.createRolePermissionsAdapter=ot,exports.createRolesAdapter=it,exports.createSessionsAdapter=de,exports.createTenantsAdapter=se,exports.createThemesAdapter=Ue,exports.createUserOrganizationsAdapter=vt,exports.createUserPermissionsAdapter=ct,exports.createUserRolesAdapter=ut,exports.createUsersAdapter=le,exports.customDomainKeys=x,exports.customTextKeys=H,exports.default=Pt,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.isKeysetRequest=q,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=J,exports.refreshTokenKeys=D,exports.removeNullProperties=Z,exports.resourceServerKeys=A,exports.roleKeys=j,exports.rolePermissionKeys=M,exports.sessionKeys=l,exports.stripDynamoDBFields=X,exports.tenantKeys=s,exports.themeKeys=v,exports.transactWriteItems=re,exports.universalLoginTemplateKeys=_,exports.updateItem=Y,exports.userKeys=c,exports.userOrganizationKeys=I,exports.userPermissionKeys=N,exports.userRoleKeys=P;
@@ -339,8 +339,21 @@ declare function queryItems<T>(ctx: DynamoDBContext, pk: string, options?: {
339
339
  items: T[];
340
340
  lastKey?: Record<string, unknown>;
341
341
  }>;
342
+ /** True when the caller asked for keyset (checkpoint) pagination. */
343
+ declare function isKeysetRequest(params?: ListParams): boolean;
342
344
  /**
343
- * Query with pagination support
345
+ * Query with pagination support.
346
+ *
347
+ * Two modes, picked by which parameters the caller supplied:
348
+ *
349
+ * - **Keyset (checkpoint)** — `from`/`take`. `from` is an OPAQUE cursor (see
350
+ * `encodeDynamoCursor`) wrapping DynamoDB's own `LastEvaluatedKey`, so a page
351
+ * resumes natively via `ExclusiveStartKey` with no scanning of skipped rows.
352
+ * Returns `next` when a further page may exist, and no `total` — matching
353
+ * Auth0's checkpoint responses and the SQL adapters.
354
+ * - **Offset** — `page`/`per_page`. Unchanged, including the read-and-discard
355
+ * loop DynamoDB forces on us (it has no native offset). The admin UI uses
356
+ * this, and it is what `include_totals` is for.
344
357
  */
345
358
  declare function queryWithPagination<T>(ctx: DynamoDBContext, pk: string, params?: ListParams, options?: {
346
359
  skPrefix?: string;
@@ -352,6 +365,8 @@ declare function queryWithPagination<T>(ctx: DynamoDBContext, pk: string, params
352
365
  limit: number;
353
366
  length: number;
354
367
  total?: number;
368
+ /** Opaque cursor for the next page; keyset mode only, absent on the last. */
369
+ next?: string;
355
370
  }>;
356
371
  /**
357
372
  * Generic update operation for DynamoDB
@@ -389,5 +404,5 @@ declare function removeNullProperties<T>(obj: T): T;
389
404
  */
390
405
  declare function createAdapters(client: DynamoDBDocumentClient, config: DynamoDBConfig): DataAdapters;
391
406
 
392
- export { authenticationMethodKeys, brandingKeys, clientConnectionKeys, clientGrantKeys, clientKeys, clientRegistrationTokenKeys, codeKeys, connectionKeys, createAuthenticationMethodsAdapter, createBrandingAdapter, createClientConnectionsAdapter, createClientGrantsAdapter, createClientsAdapter, createCodesAdapter, createConnectionsAdapter, createCustomDomainsAdapter, createEmailProvidersAdapter, createFlowsAdapter, createFormsAdapter, createHooksAdapter, createInvitesAdapter, createKeysAdapter, createLoginSessionsAdapter, createLogsAdapter, createOrganizationConnectionsAdapter, createOrganizationsAdapter, createPasswordsAdapter, createPromptSettingsAdapter, createProxyDataAdapter, createProxyRoutesAdapter, createRefreshTokensAdapter, createResourceServersAdapter, createRolePermissionsAdapter, createRolesAdapter, createSessionsAdapter, createTenantsAdapter, createThemesAdapter, createUserOrganizationsAdapter, createUserPermissionsAdapter, createUserRolesAdapter, createUsersAdapter, customDomainKeys, customTextKeys, createAdapters as default, deleteItem, emailProviderKeys, emailTemplateKeys, flowKeys, formKeys, getItem, hookKeys, inviteKeys, keyKeys, legacyClientKeys, logKeys, loginSessionKeys, organizationConnectionKeys, organizationKeys, passwordKeys, promptSettingsKeys, proxyRouteKeys, putItem, queryItems, queryWithPagination, refreshTokenKeys, removeNullProperties, resourceServerKeys, roleKeys, rolePermissionKeys, sessionKeys, stripDynamoDBFields, tenantKeys, themeKeys, transactWriteItems, universalLoginTemplateKeys, updateItem, userKeys, userOrganizationKeys, userPermissionKeys, userRoleKeys };
407
+ export { authenticationMethodKeys, brandingKeys, clientConnectionKeys, clientGrantKeys, clientKeys, clientRegistrationTokenKeys, codeKeys, connectionKeys, createAuthenticationMethodsAdapter, createBrandingAdapter, createClientConnectionsAdapter, createClientGrantsAdapter, createClientsAdapter, createCodesAdapter, createConnectionsAdapter, createCustomDomainsAdapter, createEmailProvidersAdapter, createFlowsAdapter, createFormsAdapter, createHooksAdapter, createInvitesAdapter, createKeysAdapter, createLoginSessionsAdapter, createLogsAdapter, createOrganizationConnectionsAdapter, createOrganizationsAdapter, createPasswordsAdapter, createPromptSettingsAdapter, createProxyDataAdapter, createProxyRoutesAdapter, createRefreshTokensAdapter, createResourceServersAdapter, createRolePermissionsAdapter, createRolesAdapter, createSessionsAdapter, createTenantsAdapter, createThemesAdapter, createUserOrganizationsAdapter, createUserPermissionsAdapter, createUserRolesAdapter, createUsersAdapter, customDomainKeys, customTextKeys, createAdapters as default, deleteItem, emailProviderKeys, emailTemplateKeys, flowKeys, formKeys, getItem, hookKeys, inviteKeys, isKeysetRequest, keyKeys, legacyClientKeys, logKeys, loginSessionKeys, organizationConnectionKeys, organizationKeys, passwordKeys, promptSettingsKeys, proxyRouteKeys, putItem, queryItems, queryWithPagination, refreshTokenKeys, removeNullProperties, resourceServerKeys, roleKeys, rolePermissionKeys, sessionKeys, stripDynamoDBFields, tenantKeys, themeKeys, transactWriteItems, universalLoginTemplateKeys, updateItem, userKeys, userOrganizationKeys, userPermissionKeys, userRoleKeys };
393
408
  export type { DynamoDBConfig, DynamoDBContext };