hono-crud 0.12.0 → 0.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
9
9
  %b
10
10
  %b
11
11
  %b
12
+ %b
12
13
  ## [0.8.0] — 2026-05-03
13
14
 
14
15
  ### Added
@@ -83,3 +84,4 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
83
84
  [0.10.0]: https://github.com/kshdotdev/hono-crud/compare/v0.9.0...v0.10.0
84
85
  [0.11.0]: https://github.com/kshdotdev/hono-crud/compare/v0.10.0...v0.11.0
85
86
  [0.12.0]: https://github.com/kshdotdev/hono-crud/compare/v0.11.0...v0.12.0
87
+ [0.12.1]: https://github.com/kshdotdev/hono-crud/compare/v0.12.0...v0.12.1
@@ -1,9 +1,9 @@
1
1
  import { Table, SQL, Column } from 'drizzle-orm';
2
2
  import { M as MetaInput, I as IncludeOptions, n as FilterCondition, h as RelationConfig, N as NestedUpdateInput, i as NestedWriteResult, L as ListFilters, P as PaginatedResult, j as AggregateOptions, k as AggregateResult, S as SearchOptions, l as SearchResult } from '../../types-Bg1Mpdsl.js';
3
3
  import { Env } from 'hono';
4
- import { a as CreateEndpoint, M as ModelObject, R as ReadEndpoint, U as UpdateEndpoint, D as DeleteEndpoint, L as ListEndpoint, b as RestoreEndpoint, B as BatchCreateEndpoint, c as BatchDeleteEndpoint, d as BatchRestoreEndpoint, e as BatchUpdateEndpoint, f as BatchUpdateItem, A as AggregateEndpoint, g as BatchUpsertEndpoint, h as CloneEndpoint, i as UpsertEndpoint, E as ExportEndpoint, I as ImportEndpoint, S as SearchEndpoint, V as VersionCompareEndpoint, j as VersionHistoryEndpoint, k as VersionReadEndpoint, l as VersionRollbackEndpoint } from '../../import-5Dvy1PMu.js';
4
+ import { a as CreateEndpoint, M as ModelObject, R as ReadEndpoint, U as UpdateEndpoint, D as DeleteEndpoint, L as ListEndpoint, b as RestoreEndpoint, B as BatchCreateEndpoint, c as BatchDeleteEndpoint, d as BatchRestoreEndpoint, e as BatchUpdateEndpoint, f as BatchUpdateItem, A as AggregateEndpoint, g as BatchUpsertEndpoint, h as CloneEndpoint, i as UpsertEndpoint, E as ExportEndpoint, I as ImportEndpoint, S as SearchEndpoint, V as VersionCompareEndpoint, j as VersionHistoryEndpoint, k as VersionReadEndpoint, l as VersionRollbackEndpoint } from '../../import-QecVbztr.js';
5
5
  import { z } from 'zod';
6
- import { A as AdapterBundle } from '../../index-5CxvXfpu.js';
6
+ import { A as AdapterBundle } from '../../index-XQ3Bs2mq.js';
7
7
  import '../../types-B5wq2iKZ.js';
8
8
  import '../../types-BAcN7U0B.js';
9
9
  import '@hono/zod-openapi';
@@ -1 +1 @@
1
- export{I as DrizzleAdapters,x as DrizzleAggregateEndpoint,n as DrizzleBatchCreateEndpoint,p as DrizzleBatchDeleteEndpoint,q as DrizzleBatchRestoreEndpoint,o as DrizzleBatchUpdateEndpoint,s as DrizzleBatchUpsertEndpoint,B as DrizzleCloneEndpoint,h as DrizzleCreateEndpoint,k as DrizzleDeleteEndpoint,z as DrizzleExportEndpoint,A as DrizzleImportEndpoint,l as DrizzleListEndpoint,i as DrizzleReadEndpoint,m as DrizzleRestoreEndpoint,y as DrizzleSearchEndpoint,j as DrizzleUpdateEndpoint,r as DrizzleUpsertEndpoint,v as DrizzleVersionCompareEndpoint,t as DrizzleVersionHistoryEndpoint,u as DrizzleVersionReadEndpoint,w as DrizzleVersionRollbackEndpoint,f as batchLoadDrizzleRelations,g as buildWhereCondition,a as cast,C as createDrizzleCrud,G as createDrizzleSchemas,E as createInsertSchema,D as createSelectSchema,F as createUpdateSchema,c as getColumn,b as getTable,H as isDrizzleZodAvailable,d as loadDrizzleRelation,e as loadDrizzleRelations}from'../../chunk-NIGKMRDM.js';import'../../chunk-M7YICFXP.js';import'../../chunk-SDNXN7M5.js';import'../../chunk-4PBGEU64.js';import'../../chunk-3DE2MG3R.js';import'../../chunk-KLBMVJX3.js';import'../../chunk-FC56WWPB.js';import'../../chunk-FHABLABR.js';import'../../chunk-GBQQ3YQX.js';import'../../chunk-QRXEQTNE.js';import'../../chunk-QXFY6NYI.js';import'../../chunk-DMGP7QDL.js';import'../../chunk-MDHMZPXK.js';import'../../chunk-VJRDAVID.js';
1
+ export{I as DrizzleAdapters,x as DrizzleAggregateEndpoint,n as DrizzleBatchCreateEndpoint,p as DrizzleBatchDeleteEndpoint,q as DrizzleBatchRestoreEndpoint,o as DrizzleBatchUpdateEndpoint,s as DrizzleBatchUpsertEndpoint,B as DrizzleCloneEndpoint,h as DrizzleCreateEndpoint,k as DrizzleDeleteEndpoint,z as DrizzleExportEndpoint,A as DrizzleImportEndpoint,l as DrizzleListEndpoint,i as DrizzleReadEndpoint,m as DrizzleRestoreEndpoint,y as DrizzleSearchEndpoint,j as DrizzleUpdateEndpoint,r as DrizzleUpsertEndpoint,v as DrizzleVersionCompareEndpoint,t as DrizzleVersionHistoryEndpoint,u as DrizzleVersionReadEndpoint,w as DrizzleVersionRollbackEndpoint,f as batchLoadDrizzleRelations,g as buildWhereCondition,a as cast,C as createDrizzleCrud,G as createDrizzleSchemas,E as createInsertSchema,D as createSelectSchema,F as createUpdateSchema,c as getColumn,b as getTable,H as isDrizzleZodAvailable,d as loadDrizzleRelation,e as loadDrizzleRelations}from'../../chunk-XRO227OM.js';import'../../chunk-PKHQA6WM.js';import'../../chunk-SDNXN7M5.js';import'../../chunk-4PBGEU64.js';import'../../chunk-3DE2MG3R.js';import'../../chunk-FC56WWPB.js';import'../../chunk-KLBMVJX3.js';import'../../chunk-FHABLABR.js';import'../../chunk-GBQQ3YQX.js';import'../../chunk-QRXEQTNE.js';import'../../chunk-QXFY6NYI.js';import'../../chunk-DMGP7QDL.js';import'../../chunk-MDHMZPXK.js';import'../../chunk-VJRDAVID.js';
@@ -1,7 +1,7 @@
1
1
  import { Env } from 'hono';
2
- import { a as CreateEndpoint, M as ModelObject, D as DeleteEndpoint, L as ListEndpoint, R as ReadEndpoint, b as RestoreEndpoint, U as UpdateEndpoint, B as BatchCreateEndpoint, c as BatchDeleteEndpoint, d as BatchRestoreEndpoint, e as BatchUpdateEndpoint, f as BatchUpdateItem, g as BatchUpsertEndpoint, A as AggregateEndpoint, h as CloneEndpoint, E as ExportEndpoint, I as ImportEndpoint, S as SearchEndpoint, i as UpsertEndpoint, V as VersionCompareEndpoint, j as VersionHistoryEndpoint, k as VersionReadEndpoint, l as VersionRollbackEndpoint } from '../../import-5Dvy1PMu.js';
2
+ import { a as CreateEndpoint, M as ModelObject, D as DeleteEndpoint, L as ListEndpoint, R as ReadEndpoint, b as RestoreEndpoint, U as UpdateEndpoint, B as BatchCreateEndpoint, c as BatchDeleteEndpoint, d as BatchRestoreEndpoint, e as BatchUpdateEndpoint, f as BatchUpdateItem, g as BatchUpsertEndpoint, A as AggregateEndpoint, h as CloneEndpoint, E as ExportEndpoint, I as ImportEndpoint, S as SearchEndpoint, i as UpsertEndpoint, V as VersionCompareEndpoint, j as VersionHistoryEndpoint, k as VersionReadEndpoint, l as VersionRollbackEndpoint } from '../../import-QecVbztr.js';
3
3
  import { M as MetaInput, h as RelationConfig, L as ListFilters, P as PaginatedResult, I as IncludeOptions, N as NestedUpdateInput, i as NestedWriteResult, j as AggregateOptions, k as AggregateResult, S as SearchOptions, l as SearchResult } from '../../types-Bg1Mpdsl.js';
4
- import { B as BulkPatchEndpoint } from '../../bulk-patch-DE5uhC6m.js';
4
+ import { B as BulkPatchEndpoint } from '../../bulk-patch-FxQyA8YT.js';
5
5
  import 'zod';
6
6
  import '../../route-Ctv6vIW0.js';
7
7
  import 'hono/utils/http-status';
@@ -1 +1 @@
1
- export{f as MEMORY_NOOP_TX,x as MemoryAggregateEndpoint,m as MemoryBatchCreateEndpoint,o as MemoryBatchDeleteEndpoint,p as MemoryBatchRestoreEndpoint,n as MemoryBatchUpdateEndpoint,q as MemoryBatchUpsertEndpoint,B as MemoryBulkPatchEndpoint,r as MemoryCloneEndpoint,g as MemoryCreateEndpoint,j as MemoryDeleteEndpoint,z as MemoryExportEndpoint,A as MemoryImportEndpoint,k as MemoryListEndpoint,h as MemoryReadEndpoint,l as MemoryRestoreEndpoint,y as MemorySearchEndpoint,i as MemoryUpdateEndpoint,s as MemoryUpsertEndpoint,v as MemoryVersionCompareEndpoint,t as MemoryVersionHistoryEndpoint,u as MemoryVersionReadEndpoint,w as MemoryVersionRollbackEndpoint,d as clearStorage,e as getStorage,c as getStore,b as storage}from'../../chunk-6WIZTUZK.js';import'../../chunk-M7YICFXP.js';import'../../chunk-SDNXN7M5.js';import'../../chunk-4PBGEU64.js';import'../../chunk-3DE2MG3R.js';import'../../chunk-KLBMVJX3.js';import'../../chunk-FC56WWPB.js';import'../../chunk-FHABLABR.js';import'../../chunk-GBQQ3YQX.js';import'../../chunk-QRXEQTNE.js';import'../../chunk-QXFY6NYI.js';import'../../chunk-DMGP7QDL.js';import'../../chunk-MDHMZPXK.js';import'../../chunk-VJRDAVID.js';
1
+ export{f as MEMORY_NOOP_TX,x as MemoryAggregateEndpoint,m as MemoryBatchCreateEndpoint,o as MemoryBatchDeleteEndpoint,p as MemoryBatchRestoreEndpoint,n as MemoryBatchUpdateEndpoint,q as MemoryBatchUpsertEndpoint,B as MemoryBulkPatchEndpoint,r as MemoryCloneEndpoint,g as MemoryCreateEndpoint,j as MemoryDeleteEndpoint,z as MemoryExportEndpoint,A as MemoryImportEndpoint,k as MemoryListEndpoint,h as MemoryReadEndpoint,l as MemoryRestoreEndpoint,y as MemorySearchEndpoint,i as MemoryUpdateEndpoint,s as MemoryUpsertEndpoint,v as MemoryVersionCompareEndpoint,t as MemoryVersionHistoryEndpoint,u as MemoryVersionReadEndpoint,w as MemoryVersionRollbackEndpoint,d as clearStorage,e as getStorage,c as getStore,b as storage}from'../../chunk-6L2DW4H7.js';import'../../chunk-PKHQA6WM.js';import'../../chunk-SDNXN7M5.js';import'../../chunk-4PBGEU64.js';import'../../chunk-3DE2MG3R.js';import'../../chunk-FC56WWPB.js';import'../../chunk-KLBMVJX3.js';import'../../chunk-FHABLABR.js';import'../../chunk-GBQQ3YQX.js';import'../../chunk-QRXEQTNE.js';import'../../chunk-QXFY6NYI.js';import'../../chunk-DMGP7QDL.js';import'../../chunk-MDHMZPXK.js';import'../../chunk-VJRDAVID.js';
@@ -1,7 +1,7 @@
1
1
  import { Env } from 'hono';
2
- import { a as CreateEndpoint, M as ModelObject, D as DeleteEndpoint, L as ListEndpoint, R as ReadEndpoint, U as UpdateEndpoint, B as BatchCreateEndpoint, c as BatchDeleteEndpoint, d as BatchRestoreEndpoint, e as BatchUpdateEndpoint, f as BatchUpdateItem, g as BatchUpsertEndpoint, b as RestoreEndpoint, A as AggregateEndpoint, h as CloneEndpoint, E as ExportEndpoint, I as ImportEndpoint, S as SearchEndpoint, i as UpsertEndpoint, V as VersionCompareEndpoint, j as VersionHistoryEndpoint, k as VersionReadEndpoint, l as VersionRollbackEndpoint } from '../../import-5Dvy1PMu.js';
2
+ import { a as CreateEndpoint, M as ModelObject, D as DeleteEndpoint, L as ListEndpoint, R as ReadEndpoint, U as UpdateEndpoint, B as BatchCreateEndpoint, c as BatchDeleteEndpoint, d as BatchRestoreEndpoint, e as BatchUpdateEndpoint, f as BatchUpdateItem, g as BatchUpsertEndpoint, b as RestoreEndpoint, A as AggregateEndpoint, h as CloneEndpoint, E as ExportEndpoint, I as ImportEndpoint, S as SearchEndpoint, i as UpsertEndpoint, V as VersionCompareEndpoint, j as VersionHistoryEndpoint, k as VersionReadEndpoint, l as VersionRollbackEndpoint } from '../../import-QecVbztr.js';
3
3
  import { M as MetaInput, L as ListFilters, P as PaginatedResult, I as IncludeOptions, j as AggregateOptions, k as AggregateResult, m as AggregateField, S as SearchOptions, l as SearchResult } from '../../types-Bg1Mpdsl.js';
4
- import { A as AdapterBundle } from '../../index-5CxvXfpu.js';
4
+ import { A as AdapterBundle } from '../../index-XQ3Bs2mq.js';
5
5
  import 'zod';
6
6
  import '../../route-Ctv6vIW0.js';
7
7
  import 'hono/utils/http-status';
@@ -1 +1 @@
1
- export{y as PrismaAdapters,w as PrismaAggregateEndpoint,j as PrismaBatchCreateEndpoint,l as PrismaBatchDeleteEndpoint,m as PrismaBatchRestoreEndpoint,k as PrismaBatchUpdateEndpoint,n as PrismaBatchUpsertEndpoint,x as PrismaCloneEndpoint,d as PrismaCreateEndpoint,g as PrismaDeleteEndpoint,p as PrismaExportEndpoint,q as PrismaImportEndpoint,h as PrismaListEndpoint,e as PrismaReadEndpoint,i as PrismaRestoreEndpoint,o as PrismaSearchEndpoint,f as PrismaUpdateEndpoint,r as PrismaUpsertEndpoint,u as PrismaVersionCompareEndpoint,s as PrismaVersionHistoryEndpoint,t as PrismaVersionReadEndpoint,v as PrismaVersionRollbackEndpoint,c as clearPrismaModelMappings,a as registerPrismaModelMapping,b as registerPrismaModelMappings}from'../../chunk-26IVGJU7.js';import'../../chunk-M7YICFXP.js';import'../../chunk-SDNXN7M5.js';import'../../chunk-4PBGEU64.js';import'../../chunk-3DE2MG3R.js';import'../../chunk-KLBMVJX3.js';import'../../chunk-FC56WWPB.js';import'../../chunk-FHABLABR.js';import'../../chunk-GBQQ3YQX.js';import'../../chunk-QRXEQTNE.js';import'../../chunk-QXFY6NYI.js';import'../../chunk-DMGP7QDL.js';import'../../chunk-MDHMZPXK.js';import'../../chunk-VJRDAVID.js';
1
+ export{y as PrismaAdapters,w as PrismaAggregateEndpoint,j as PrismaBatchCreateEndpoint,l as PrismaBatchDeleteEndpoint,m as PrismaBatchRestoreEndpoint,k as PrismaBatchUpdateEndpoint,n as PrismaBatchUpsertEndpoint,x as PrismaCloneEndpoint,d as PrismaCreateEndpoint,g as PrismaDeleteEndpoint,p as PrismaExportEndpoint,q as PrismaImportEndpoint,h as PrismaListEndpoint,e as PrismaReadEndpoint,i as PrismaRestoreEndpoint,o as PrismaSearchEndpoint,f as PrismaUpdateEndpoint,r as PrismaUpsertEndpoint,u as PrismaVersionCompareEndpoint,s as PrismaVersionHistoryEndpoint,t as PrismaVersionReadEndpoint,v as PrismaVersionRollbackEndpoint,c as clearPrismaModelMappings,a as registerPrismaModelMapping,b as registerPrismaModelMappings}from'../../chunk-JR7JUU6L.js';import'../../chunk-PKHQA6WM.js';import'../../chunk-SDNXN7M5.js';import'../../chunk-4PBGEU64.js';import'../../chunk-3DE2MG3R.js';import'../../chunk-FC56WWPB.js';import'../../chunk-KLBMVJX3.js';import'../../chunk-FHABLABR.js';import'../../chunk-GBQQ3YQX.js';import'../../chunk-QRXEQTNE.js';import'../../chunk-QXFY6NYI.js';import'../../chunk-DMGP7QDL.js';import'../../chunk-MDHMZPXK.js';import'../../chunk-VJRDAVID.js';
@@ -1,6 +1,6 @@
1
1
  import { ZodObject, ZodRawShape } from 'zod';
2
2
  import { Env } from 'hono';
3
- import { C as CrudEndpoint, M as ModelObject } from './import-5Dvy1PMu.js';
3
+ import { C as CrudEndpoint, M as ModelObject } from './import-QecVbztr.js';
4
4
  import { M as MetaInput, H as HookMode, L as ListFilters, O as OpenAPIRouteSchema } from './types-Bg1Mpdsl.js';
5
5
 
6
6
  /**
@@ -1 +1 @@
1
- export{b as KVCacheStorage,a as RedisCacheStorage}from'../chunk-H3H65KZF.js';export{C as MemoryCacheStorage,y as createInvalidationPattern,z as createRelatedPatterns,x as generateCacheKey,E as getCacheStorage,A as matchesPattern,B as parseCacheKey,D as setCacheStorage,F as withCache,G as withCacheInvalidation}from'../chunk-4CM6OCS3.js';import'../chunk-3DE2MG3R.js';import'../chunk-GF2EC5G4.js';import'../chunk-KLBMVJX3.js';import'../chunk-2M5BM4VD.js';import'../chunk-FC56WWPB.js';import'../chunk-FHABLABR.js';import'../chunk-GBQQ3YQX.js';import'../chunk-DMGP7QDL.js';import'../chunk-MDHMZPXK.js';import'../chunk-VJRDAVID.js';
1
+ export{b as KVCacheStorage,a as RedisCacheStorage}from'../chunk-H3H65KZF.js';export{C as MemoryCacheStorage,y as createInvalidationPattern,z as createRelatedPatterns,x as generateCacheKey,E as getCacheStorage,A as matchesPattern,B as parseCacheKey,D as setCacheStorage,F as withCache,G as withCacheInvalidation}from'../chunk-3DJMHE6N.js';import'../chunk-3DE2MG3R.js';import'../chunk-GF2EC5G4.js';import'../chunk-2M5BM4VD.js';import'../chunk-FC56WWPB.js';import'../chunk-KLBMVJX3.js';import'../chunk-FHABLABR.js';import'../chunk-GBQQ3YQX.js';import'../chunk-DMGP7QDL.js';import'../chunk-MDHMZPXK.js';import'../chunk-VJRDAVID.js';
@@ -1 +1 @@
1
- import {b as b$4}from'./chunk-3DE2MG3R.js';import {a as a$3}from'./chunk-GF2EC5G4.js';import {b as b$3}from'./chunk-KLBMVJX3.js';import {a,g}from'./chunk-2M5BM4VD.js';import {a as a$1,i}from'./chunk-FC56WWPB.js';import {b,c}from'./chunk-GBQQ3YQX.js';import {b as b$2}from'./chunk-DMGP7QDL.js';import {e,a as a$2,b as b$1}from'./chunk-VJRDAVID.js';function B(e,t={}){let{ipHeader:n="X-Forwarded-For",trustProxy:r=true}=t;if(r){let s=e.req.header(n);if(s){let c=s.split(",")[0]?.trim();if(c)return c}let a=e.req.header("X-Real-IP")?.trim();if(a)return a;let i=e.req.header("CF-Connecting-IP")?.trim();if(i)return i}let o=e.req.raw;if(o&&typeof o.socket=="object"&&o.socket?.remoteAddress)return o.socket.remoteAddress;if(o?.cf?.ip)return o.cf.ip}function $(e){return a$2(e,"userId")}function z(e,t){let n=e.toLowerCase();for(let r of t){if(r instanceof RegExp){if(r.test(e))return true;continue}let o=r.toLowerCase();if(o.includes("*")){let s=o.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*");if(new RegExp(`^${s}$`).test(n))return true}else if(n===o)return true}return false}function j(e,t){if(e==null)return e;if(Array.isArray(e))return e.map(r=>j(r,t));if(typeof e!="object")return e;let n={};for(let[r,o]of Object.entries(e))z(r,t)?n[r]="[REDACTED]":typeof o=="object"&&o!==null?n[r]=j(o,t):n[r]=o;return n}function he(e,t){let n={};for(let[r,o]of Object.entries(e))n[r]=z(r,t)?"[REDACTED]":o;return n}function Ye(e,t){return z(e,t)}function ee(e,t){return j(e,t)}function te(e,t){return he(e,t)}function Ze(e,t){return a(e,t)}function ye(e,t,n){for(let r of n)if(a(e,r))return true;if(t.length===0)return false;for(let r of t)if(a(e,r))return false;return true}function xe(e,t="X-Forwarded-For",n=false){return B(e,{ipHeader:t,trustProxy:n||true})}function re(e){let t={};return e.forEach((n,r)=>{t[r.toLowerCase()]=n;}),t}function Ce(e){let t={};return new URL(e.req.url).searchParams.forEach((r,o)=>{t[o]=r;}),t}function D(e,t){if(typeof e=="string")return e.length>t?e.substring(0,t)+"... [TRUNCATED]":e;let n=JSON.stringify(e);return n.length>t?{_truncated:true,_originalSize:n.length,_maxSize:t}:e}function Ee(e,t){if(!e)return false;if(t.length===0)return true;let n=e.toLowerCase();for(let r of t)if(n.includes(r.toLowerCase()))return true;return false}function Se(e){return $(e)}function Re(){return e()}var U=class extends a$1{constructor(t="Too many requests",n=60){super(t,429,"RATE_LIMIT_EXCEEDED",{retryAfter:n}),this.name="RateLimitExceededException";}};function q(e,t="X-Forwarded-For",n=false){return B(e,{ipHeader:t,trustProxy:n})??"unknown"}function ne(e){return $(e)??null}function we(e,t="X-API-Key"){return e.req.header(t)||null}function st(e,t){return a(e,t)}function ve(e,t){return t.some(n=>a(e,n))}function Ie(e,...t){let n=t.filter(r=>r!==void 0&&r!=="");return `${e}:${n.join(":")}`}function V(e){return e instanceof Error?e:new Error(String(e))}function Me(e,t){let n=V(e),r=new Error(`${t}: ${n.message}`);return r.cause=n,r}function Oe(e){return e instanceof Error?e.message:String(e)}var X=b("loggingStorage");function ht(e){X.set(e);}function yt(){return X.get()}var De=["authorization","cookie","x-api-key","x-auth-token"],Fe=["password","token","secret","apiKey","api_key","accessToken","access_token","refreshToken","refresh_token","creditCard","credit_card","ssn","socialSecurityNumber"],_e=["/health","/healthz","/ready","/readyz","/live","/livez","/metrics","/favicon.ico"];function xt(e){return a$2(e,"requestId")}function Ct(e){return a$2(e,"requestStartTime")}function Et(e={}){let t=e.enabled??true,n=e.level??"info",r=e.includePaths??[],o=e.excludePaths??_e,s=e.redactHeaders??De,a=e.redactBodyFields??Fe,i=e.requestBody??{enabled:false},c=e.responseBody??{enabled:false},u=e.includeHeaders??true,d=e.includeQuery??true,g=e.includeClientIp??true,C=e.ipHeader??"X-Forwarded-For",m=e.trustProxy??false,h=e.minResponseTimeMs??0,R=e.generateRequestId??Re;return async(l,P)=>{if(!t)return P();let w=l.req.path;if(ye(w,r,o))return P();let f=R(),T=Date.now();b$1(l,"requestId",f),b$1(l,"requestStartTime",T),l.header("X-Request-ID",f);let Ae=l.req.method,qe=l.req.url,oe;if(u){let E=re(l.req.raw.headers);oe=te(E,s);}let se;d&&(se=Ce(l));let ae;g&&(ae=xe(l,C,m));let Ke=Se(l),Q;if(i.enabled){let E=l.req.header("content-type"),H=i.contentTypes??[];if(Ee(E,H))try{let L=await l.req.raw.clone().text();if(L)try{let x=JSON.parse(L);x=ee(x,a);let y=i.maxSize??10240;Q=D(x,y);}catch{let x=i.maxSize??10240;Q=D(L,x);}}catch{}}let S,Y;try{await P();}catch(E){throw S=E instanceof Error?E:new Error(String(E)),E}finally{let H=Date.now()-T;if(H<h)return;let b=l.res.status,L;if(u){let p=re(l.res.headers);L=te(p,s);}if(c.enabled&&!S){let p=c.statusCodes??[];if(p.length===0||p.includes(b))try{let Z=await l.res.clone().text();if(Z)try{let M=JSON.parse(Z);M=ee(M,a);let He=c.maxSize??10240;Y=D(M,He);}catch{let M=c.maxSize??10240;Y=D(Z,M);}}catch{}}let x=n;e.levelResolver?x=e.levelResolver(l,H,b,S):S||b>=500?x="error":b>=400&&(x="warn");let y={id:f,timestamp:new Date(T).toISOString(),level:x,request:{method:Ae,path:w,url:qe,headers:oe,query:se,body:Q,clientIp:ae,userId:Ke},response:{statusCode:b,headers:L,body:Y,responseTimeMs:H}};if(S&&(y.error={message:S.message,name:S.name,stack:S.stack}),e.metadata){let p=typeof e.metadata=="function"?e.metadata(l):e.metadata;y.metadata=p;}e.formatter&&(y=e.formatter(y));let ie=Pe(l,e.storage);(async()=>{if(ie)try{await ie.store(y);}catch(p){e.onError&&e.onError(p instanceof Error?p:new Error(String(p)),y);}if(e.handlers)for(let p of e.handlers)try{await p(y);}catch(v){e.onError&&e.onError(v instanceof Error?v:new Error(String(v)),y);}})().catch(p=>{let v=V(p);e.onError?e.onError(v,y):b$2().error("Failed to process log entry",{error:v.message});});}}}function Te(e){let{tableName:t,method:n,params:r,query:o,keyFields:s,userId:a,prefix:i}=e,c=[];if(i&&c.push(i),c.push(t),c.push(n),r&&Object.keys(r).length>0){let u=Object.keys(r).sort().map(d=>`${d}=${r[d]}`).join("&");c.push(u);}if(o&&Object.keys(o).length>0){let u=Object.keys(o).filter(d=>o[d]!==void 0&&o[d]!==null&&o[d]!=="");if(s&&s.length>0&&(u=u.filter(d=>s.includes(d))),u.length>0){let d=u.sort().map(g=>`${g}=${String(o[g])}`).join("&");c.push(d);}}return a&&c.push(`user=${a}`),c.join(":")}function K(e,t,n){let r=[];if(n&&r.push(n),r.push(e),!t)return r.push("*"),r.join(":");let{method:o,id:s,userId:a}=t;return o?(r.push(o),r.join(":")+"*"):(s!==void 0?(r.push("*"),r.push(`id=${s}*`)):a?(r.push("*"),r.push(`user=${a}`)):r.push("*"),r.join(":"))}function be(e,t,n){return t.map(r=>K(r,void 0,n))}function Le(e,t){let n=t.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*");return new RegExp(`^${n}$`).test(e)}function Rt(e){let t=e.split(":"),n=t.length>2&&!["GET","LIST"].includes(t[1]),r=0,o=n?t[r++]:void 0,s=t[r++],a=t[r++],i={tableName:s,method:a};o&&(i.prefix=o);for(let c=r;c<t.length;c++){let u=t[c];if(u.startsWith("user="))i.userId=u.substring(5);else if(u.includes("=")){let d=u.split("&"),g={};for(let C of d){let[m,h]=C.split("=");m&&h!==void 0&&(g[m]=h);}a==="GET"&&!i.params?i.params=g:a==="LIST"&&!i.query||i.params?i.query=g:i.params=g;}}return i}var W=class{storage=new Map;tagIndex=new Map;stats={hits:0,misses:0,size:0};defaultTtl;maxEntries;constructor(t){this.defaultTtl=t?.defaultTtl??300,this.maxEntries=t?.maxEntries??1e4;}async get(t){let n=this.storage.get(t);return n?n.expiresAt&&n.expiresAt<Date.now()?(await this.delete(t),this.stats.misses++,null):(this.stats.hits++,n):(this.stats.misses++,null)}async set(t,n,r){let o=r?.ttl??this.defaultTtl,s=r?.tags;this.maxEntries>0&&this.storage.size>=this.maxEntries&&!this.storage.has(t)&&this.evictOldest();let a=Date.now(),i={data:n,createdAt:a,expiresAt:o>0?a+o*1e3:null,tags:s},c=this.storage.get(t);if(c?.tags)for(let u of c.tags)this.tagIndex.get(u)?.delete(t);if(c&&this.storage.delete(t),this.storage.set(t,i),this.stats.size=this.storage.size,s)for(let u of s)this.tagIndex.has(u)||this.tagIndex.set(u,new Set),this.tagIndex.get(u).add(t);}async delete(t){let n=this.storage.get(t);if(!n)return false;if(n.tags)for(let r of n.tags)this.tagIndex.get(r)?.delete(t);return this.storage.delete(t),this.stats.size=this.storage.size,true}async deletePattern(t){let n=0,r=[];for(let o of this.storage.keys())Le(o,t)&&r.push(o);for(let o of r)await this.delete(o)&&n++;return n}async deleteByTag(t){let n=this.tagIndex.get(t);if(!n||n.size===0)return 0;let r=0,o=Array.from(n);for(let s of o)await this.delete(s)&&r++;return this.tagIndex.delete(t),r}async has(t){let n=this.storage.get(t);return n?n.expiresAt&&n.expiresAt<Date.now()?(await this.delete(t),false):true:false}async clear(){this.storage.clear(),this.tagIndex.clear(),this.stats.size=0;}getStats(){return {...this.stats}}resetStats(){this.stats.hits=0,this.stats.misses=0;}getKeys(){return Array.from(this.storage.keys())}getTags(){return Array.from(this.tagIndex.keys())}evictOldest(){let t=this.storage.keys().next().value;t!==void 0&&this.delete(t).catch(()=>{});}async cleanup(){let t=Date.now(),n=0,r=[];for(let[o,s]of this.storage.entries())s.expiresAt&&s.expiresAt<t&&r.push(o);for(let o of r)await this.delete(o),n++;return n}};function G(e){let n=e._meta?.model?.tableName;if(!n)throw new i("Cache mixin requires `_meta.model.tableName`. Declare `_meta` on the endpoint or remove the cache mixin.");return n}var J=c("cacheStorage",()=>new W);function qt(e){J.set(e);}function Kt(){return J.getRequired()}function Ht(e){class t extends e{cacheConfig;getCacheConfig(){return {enabled:true,ttl:300,perUser:false,...this.cacheConfig}}async generateCacheKey(){let r=this.getCacheConfig(),o=this.getContext(),s=G(this),a=await this.getValidatedData(),i=a.params,c=a.query,u=i&&Object.keys(i).length>0?"GET":"LIST",d;return r.perUser&&(d=o.var?.userId),Te({tableName:s,method:u,params:i,query:c,keyFields:r.keyFields,userId:d,prefix:r.prefix})}_cacheHit=false;async getCachedResponse(){if(!this.getCacheConfig().enabled)return this._cacheHit=false,null;let o=await this.generateCacheKey(),s=this.getContext(),a=F(s);if(!a)return this._cacheHit=false,null;let i=await a.get(o);return this._cacheHit=i!==null,i?.data??null}getCacheStatus(){return this._cacheHit?"HIT":"MISS"}successWithCache(r,o=200){return new Response(JSON.stringify({success:true,result:r}),{status:o,headers:{"Content-Type":"application/json","X-Cache":this.getCacheStatus()}})}jsonWithCache(r,o=200){return new Response(JSON.stringify(r),{status:o,headers:{"Content-Type":"application/json","X-Cache":this.getCacheStatus()}})}async setCachedResponse(r){let o=this.getCacheConfig();if(!o.enabled)return;let s=await this.generateCacheKey(),a=this.getContext(),i=F(a);if(!i)return;let c=o.tags?[...o.tags]:[],u=this._meta;u?.model?.tableName&&c.push(u.model.tableName),await i.set(s,r,{ttl:o.ttl,tags:c.length>0?c:void 0});}async invalidateCache(r){let o=this.getContext(),s=F(o);if(!s)return;let a=this.getCacheConfig();if(r?.pattern)await s.deletePattern(r.pattern);else if(r?.tags&&s.deleteByTag)for(let i of r.tags)await s.deleteByTag(i);else {let i=G(this),c=K(i,void 0,a.prefix);await s.deletePattern(c);}}}return t}function Mt(e){class t extends e{cacheInvalidation;getCacheInvalidationConfig(){return {strategy:"all",...this.cacheInvalidation}}async performCacheInvalidation(r){let o=this.getCacheInvalidationConfig(),s=this.getContext(),a=F(s);if(!a)return;let i=G(this);switch(o.strategy??"all"){case "single":if(r!==void 0){let g=K(i,{id:r});await a.deletePattern(g);}break;case "list":let u=K(i,{method:"LIST"});await a.deletePattern(u);break;case "all":let d=K(i);await a.deletePattern(d);break;case "pattern":o.pattern&&await a.deletePattern(o.pattern);break;case "tags":if(o.tags&&a.deleteByTag)for(let g of o.tags)await a.deleteByTag(g);break}if(o.relatedModels&&o.relatedModels.length>0){let u=be(i,o.relatedModels);for(let d of u)await a.deletePattern(d);}}async handle(){let r=await super.handle();if(r.status>=200&&r.status<300){let o;try{o=(await r.clone().json())?.result?.id;}catch{}let s=G(this);this.performCacheInvalidation(o).catch(a=>{b$2().error("Cache invalidation failed",{error:a instanceof Error?a.message:String(a),tableName:s,recordId:o});});}return r}}return t}function ke(e,t){return _.resolve(e,t)}function Pe(e,t){return X.resolve(e,t)}function F(e,t){return J.resolve(e,t)}function zt(e,t){return b$3.resolve(e,t)}function Ut(e,t){return b$4.resolve(e,t)}function Vt(e,t){return g.resolve(e,t)}function Xt(e,t){return a$3.resolve(e,t)}var _=b("rateLimitStorage");function tr(e){_.set(e);}function rr(){return _.get()}function Ne(){return {ip:e=>t=>q(t,e.ipHeader,e.trustProxy),user:e=>t=>{let n=ne(t);return n?`user:${n}`:q(t,e.ipHeader,e.trustProxy)},"api-key":e=>t=>{let n=we(t,e.apiKeyHeader);return n?`apikey:${n.substring(0,8)}`:q(t,e.ipHeader,e.trustProxy)},combined:e=>t=>{let n=q(t,e.ipHeader,e.trustProxy),r=ne(t);return r?`${n}:user:${r}`:n}}}function Be(e,t){if(typeof e=="function")return e;let r=Ne()[e];return r?r(t):o=>q(o,t.ipHeader,t.trustProxy)}async function $e(e,t,n,r){let o=await e.increment(t,r),s=Math.ceil((o.windowStart+r)/1e3),a=Math.max(0,n-o.count),i=o.count<=n;return {allowed:i,limit:n,remaining:a,resetAt:s,retryAfter:i?void 0:Math.ceil((o.windowStart+r-Date.now())/1e3)}}async function je(e,t,n,r){let o=Date.now(),s=await e.addTimestamp(t,r,o),a=s.timestamps.length,i=Math.max(0,n-a),c=a<=n,u=s.timestamps.length>0?Math.min(...s.timestamps):o,d=Math.ceil((u+r)/1e3),g;if(!c&&s.timestamps.length>0){let C=[...s.timestamps].sort((h,R)=>h-R),m=a-n;if(m>0&&C.length>=m){let h=C[m-1];g=Math.max(1,Math.ceil((h+r-o)/1e3));}}return {allowed:c,limit:n,remaining:i,resetAt:d,retryAfter:g}}function nr(e={}){let t=e.limit??100,n=e.windowSeconds??60,r=e.algorithm??"sliding-window",o=e.keyStrategy??"ip",s=e.keyPrefix??"rl",a=e.skipPaths??[],i=e.includeHeaders??true,c=e.errorMessage??"Too many requests",u=Be(o,e);return async(d,g)=>{let C=d.req.path;if(a.length>0&&ve(C,a))return g();let m=ke(d,e.storage);if(!m)return b$2().warn("Rate limit storage not configured. Skipping rate limiting."),g();let h=u(d);if(!h)return g();let R=t,l=n;if(e.getTier){let T=await e.getTier(d);R=T.limit,l=T.windowSeconds??n;}let P=l*1e3,w=Ie(s,C,h),f;if(r==="fixed-window"?f=await $e(m,w,R,P):f=await je(m,w,R,P),b$1(d,"rateLimit",f),b$1(d,"rateLimitKey",w),i&&(d.header("X-RateLimit-Limit",String(f.limit)),d.header("X-RateLimit-Remaining",String(f.remaining)),d.header("X-RateLimit-Reset",String(f.resetAt))),!f.allowed)throw f.retryAfter&&d.header("Retry-After",String(f.retryAfter)),e.onRateLimitExceeded&&await e.onRateLimitExceeded(d,f,w),new U(c,f.retryAfter??60);await g();}}async function or(e,t){let n=t??_.get();if(!n)throw new Error("Rate limit storage not configured");await n.reset(e);}export{Le as A,Rt as B,W as C,qt as D,Kt as E,Ht as F,Mt as G,ke as H,Pe as I,F as J,zt as K,Ut as L,Vt as M,Xt as N,V as O,Me as P,Oe as Q,ht as R,yt as S,xt as T,Ct as U,Et as V,Ye as a,ee as b,te as c,Ze as d,ye as e,xe as f,re as g,Ce as h,D as i,Ee as j,Se as k,Re as l,U as m,q as n,ne as o,we as p,st as q,ve as r,Ie as s,tr as t,rr as u,nr as v,or as w,Te as x,K as y,be as z};
1
+ import {b as b$4}from'./chunk-3DE2MG3R.js';import {a as a$3}from'./chunk-GF2EC5G4.js';import {a,g}from'./chunk-2M5BM4VD.js';import {a as a$1,i}from'./chunk-FC56WWPB.js';import {b as b$3}from'./chunk-KLBMVJX3.js';import {b,c}from'./chunk-GBQQ3YQX.js';import {b as b$2}from'./chunk-DMGP7QDL.js';import {e,a as a$2,b as b$1}from'./chunk-VJRDAVID.js';function B(e,t={}){let{ipHeader:n="X-Forwarded-For",trustProxy:r=true}=t;if(r){let s=e.req.header(n);if(s){let c=s.split(",")[0]?.trim();if(c)return c}let a=e.req.header("X-Real-IP")?.trim();if(a)return a;let i=e.req.header("CF-Connecting-IP")?.trim();if(i)return i}let o=e.req.raw;if(o&&typeof o.socket=="object"&&o.socket?.remoteAddress)return o.socket.remoteAddress;if(o?.cf?.ip)return o.cf.ip}function $(e){return a$2(e,"userId")}function z(e,t){let n=e.toLowerCase();for(let r of t){if(r instanceof RegExp){if(r.test(e))return true;continue}let o=r.toLowerCase();if(o.includes("*")){let s=o.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*");if(new RegExp(`^${s}$`).test(n))return true}else if(n===o)return true}return false}function j(e,t){if(e==null)return e;if(Array.isArray(e))return e.map(r=>j(r,t));if(typeof e!="object")return e;let n={};for(let[r,o]of Object.entries(e))z(r,t)?n[r]="[REDACTED]":typeof o=="object"&&o!==null?n[r]=j(o,t):n[r]=o;return n}function he(e,t){let n={};for(let[r,o]of Object.entries(e))n[r]=z(r,t)?"[REDACTED]":o;return n}function Ye(e,t){return z(e,t)}function ee(e,t){return j(e,t)}function te(e,t){return he(e,t)}function Ze(e,t){return a(e,t)}function ye(e,t,n){for(let r of n)if(a(e,r))return true;if(t.length===0)return false;for(let r of t)if(a(e,r))return false;return true}function xe(e,t="X-Forwarded-For",n=false){return B(e,{ipHeader:t,trustProxy:n||true})}function re(e){let t={};return e.forEach((n,r)=>{t[r.toLowerCase()]=n;}),t}function Ce(e){let t={};return new URL(e.req.url).searchParams.forEach((r,o)=>{t[o]=r;}),t}function D(e,t){if(typeof e=="string")return e.length>t?e.substring(0,t)+"... [TRUNCATED]":e;let n=JSON.stringify(e);return n.length>t?{_truncated:true,_originalSize:n.length,_maxSize:t}:e}function Ee(e,t){if(!e)return false;if(t.length===0)return true;let n=e.toLowerCase();for(let r of t)if(n.includes(r.toLowerCase()))return true;return false}function Se(e){return $(e)}function Re(){return e()}var U=class extends a$1{constructor(t="Too many requests",n=60){super(t,429,"RATE_LIMIT_EXCEEDED",{retryAfter:n}),this.name="RateLimitExceededException";}};function q(e,t="X-Forwarded-For",n=false){return B(e,{ipHeader:t,trustProxy:n})??"unknown"}function ne(e){return $(e)??null}function we(e,t="X-API-Key"){return e.req.header(t)||null}function st(e,t){return a(e,t)}function ve(e,t){return t.some(n=>a(e,n))}function Ie(e,...t){let n=t.filter(r=>r!==void 0&&r!=="");return `${e}:${n.join(":")}`}function V(e){return e instanceof Error?e:new Error(String(e))}function Me(e,t){let n=V(e),r=new Error(`${t}: ${n.message}`);return r.cause=n,r}function Oe(e){return e instanceof Error?e.message:String(e)}var X=b("loggingStorage");function ht(e){X.set(e);}function yt(){return X.get()}var De=["authorization","cookie","x-api-key","x-auth-token"],Fe=["password","token","secret","apiKey","api_key","accessToken","access_token","refreshToken","refresh_token","creditCard","credit_card","ssn","socialSecurityNumber"],_e=["/health","/healthz","/ready","/readyz","/live","/livez","/metrics","/favicon.ico"];function xt(e){return a$2(e,"requestId")}function Ct(e){return a$2(e,"requestStartTime")}function Et(e={}){let t=e.enabled??true,n=e.level??"info",r=e.includePaths??[],o=e.excludePaths??_e,s=e.redactHeaders??De,a=e.redactBodyFields??Fe,i=e.requestBody??{enabled:false},c=e.responseBody??{enabled:false},u=e.includeHeaders??true,d=e.includeQuery??true,g=e.includeClientIp??true,C=e.ipHeader??"X-Forwarded-For",m=e.trustProxy??false,h=e.minResponseTimeMs??0,R=e.generateRequestId??Re;return async(l,P)=>{if(!t)return P();let w=l.req.path;if(ye(w,r,o))return P();let f=R(),T=Date.now();b$1(l,"requestId",f),b$1(l,"requestStartTime",T),l.header("X-Request-ID",f);let Ae=l.req.method,qe=l.req.url,oe;if(u){let E=re(l.req.raw.headers);oe=te(E,s);}let se;d&&(se=Ce(l));let ae;g&&(ae=xe(l,C,m));let Ke=Se(l),Q;if(i.enabled){let E=l.req.header("content-type"),H=i.contentTypes??[];if(Ee(E,H))try{let L=await l.req.raw.clone().text();if(L)try{let x=JSON.parse(L);x=ee(x,a);let y=i.maxSize??10240;Q=D(x,y);}catch{let x=i.maxSize??10240;Q=D(L,x);}}catch{}}let S,Y;try{await P();}catch(E){throw S=E instanceof Error?E:new Error(String(E)),E}finally{let H=Date.now()-T;if(H<h)return;let b=l.res.status,L;if(u){let p=re(l.res.headers);L=te(p,s);}if(c.enabled&&!S){let p=c.statusCodes??[];if(p.length===0||p.includes(b))try{let Z=await l.res.clone().text();if(Z)try{let M=JSON.parse(Z);M=ee(M,a);let He=c.maxSize??10240;Y=D(M,He);}catch{let M=c.maxSize??10240;Y=D(Z,M);}}catch{}}let x=n;e.levelResolver?x=e.levelResolver(l,H,b,S):S||b>=500?x="error":b>=400&&(x="warn");let y={id:f,timestamp:new Date(T).toISOString(),level:x,request:{method:Ae,path:w,url:qe,headers:oe,query:se,body:Q,clientIp:ae,userId:Ke},response:{statusCode:b,headers:L,body:Y,responseTimeMs:H}};if(S&&(y.error={message:S.message,name:S.name,stack:S.stack}),e.metadata){let p=typeof e.metadata=="function"?e.metadata(l):e.metadata;y.metadata=p;}e.formatter&&(y=e.formatter(y));let ie=Pe(l,e.storage);(async()=>{if(ie)try{await ie.store(y);}catch(p){e.onError&&e.onError(p instanceof Error?p:new Error(String(p)),y);}if(e.handlers)for(let p of e.handlers)try{await p(y);}catch(v){e.onError&&e.onError(v instanceof Error?v:new Error(String(v)),y);}})().catch(p=>{let v=V(p);e.onError?e.onError(v,y):b$2().error("Failed to process log entry",{error:v.message});});}}}function Te(e){let{tableName:t,method:n,params:r,query:o,keyFields:s,userId:a,prefix:i}=e,c=[];if(i&&c.push(i),c.push(t),c.push(n),r&&Object.keys(r).length>0){let u=Object.keys(r).sort().map(d=>`${d}=${r[d]}`).join("&");c.push(u);}if(o&&Object.keys(o).length>0){let u=Object.keys(o).filter(d=>o[d]!==void 0&&o[d]!==null&&o[d]!=="");if(s&&s.length>0&&(u=u.filter(d=>s.includes(d))),u.length>0){let d=u.sort().map(g=>`${g}=${String(o[g])}`).join("&");c.push(d);}}return a&&c.push(`user=${a}`),c.join(":")}function K(e,t,n){let r=[];if(n&&r.push(n),r.push(e),!t)return r.push("*"),r.join(":");let{method:o,id:s,userId:a}=t;return o?(r.push(o),r.join(":")+"*"):(s!==void 0?(r.push("*"),r.push(`id=${s}*`)):a?(r.push("*"),r.push(`user=${a}`)):r.push("*"),r.join(":"))}function be(e,t,n){return t.map(r=>K(r,void 0,n))}function Le(e,t){let n=t.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*");return new RegExp(`^${n}$`).test(e)}function Rt(e){let t=e.split(":"),n=t.length>2&&!["GET","LIST"].includes(t[1]),r=0,o=n?t[r++]:void 0,s=t[r++],a=t[r++],i={tableName:s,method:a};o&&(i.prefix=o);for(let c=r;c<t.length;c++){let u=t[c];if(u.startsWith("user="))i.userId=u.substring(5);else if(u.includes("=")){let d=u.split("&"),g={};for(let C of d){let[m,h]=C.split("=");m&&h!==void 0&&(g[m]=h);}a==="GET"&&!i.params?i.params=g:a==="LIST"&&!i.query||i.params?i.query=g:i.params=g;}}return i}var W=class{storage=new Map;tagIndex=new Map;stats={hits:0,misses:0,size:0};defaultTtl;maxEntries;constructor(t){this.defaultTtl=t?.defaultTtl??300,this.maxEntries=t?.maxEntries??1e4;}async get(t){let n=this.storage.get(t);return n?n.expiresAt&&n.expiresAt<Date.now()?(await this.delete(t),this.stats.misses++,null):(this.stats.hits++,n):(this.stats.misses++,null)}async set(t,n,r){let o=r?.ttl??this.defaultTtl,s=r?.tags;this.maxEntries>0&&this.storage.size>=this.maxEntries&&!this.storage.has(t)&&this.evictOldest();let a=Date.now(),i={data:n,createdAt:a,expiresAt:o>0?a+o*1e3:null,tags:s},c=this.storage.get(t);if(c?.tags)for(let u of c.tags)this.tagIndex.get(u)?.delete(t);if(c&&this.storage.delete(t),this.storage.set(t,i),this.stats.size=this.storage.size,s)for(let u of s)this.tagIndex.has(u)||this.tagIndex.set(u,new Set),this.tagIndex.get(u).add(t);}async delete(t){let n=this.storage.get(t);if(!n)return false;if(n.tags)for(let r of n.tags)this.tagIndex.get(r)?.delete(t);return this.storage.delete(t),this.stats.size=this.storage.size,true}async deletePattern(t){let n=0,r=[];for(let o of this.storage.keys())Le(o,t)&&r.push(o);for(let o of r)await this.delete(o)&&n++;return n}async deleteByTag(t){let n=this.tagIndex.get(t);if(!n||n.size===0)return 0;let r=0,o=Array.from(n);for(let s of o)await this.delete(s)&&r++;return this.tagIndex.delete(t),r}async has(t){let n=this.storage.get(t);return n?n.expiresAt&&n.expiresAt<Date.now()?(await this.delete(t),false):true:false}async clear(){this.storage.clear(),this.tagIndex.clear(),this.stats.size=0;}getStats(){return {...this.stats}}resetStats(){this.stats.hits=0,this.stats.misses=0;}getKeys(){return Array.from(this.storage.keys())}getTags(){return Array.from(this.tagIndex.keys())}evictOldest(){let t=this.storage.keys().next().value;t!==void 0&&this.delete(t).catch(()=>{});}async cleanup(){let t=Date.now(),n=0,r=[];for(let[o,s]of this.storage.entries())s.expiresAt&&s.expiresAt<t&&r.push(o);for(let o of r)await this.delete(o),n++;return n}};function G(e){let n=e._meta?.model?.tableName;if(!n)throw new i("Cache mixin requires `_meta.model.tableName`. Declare `_meta` on the endpoint or remove the cache mixin.");return n}var J=c("cacheStorage",()=>new W);function qt(e){J.set(e);}function Kt(){return J.getRequired()}function Ht(e){class t extends e{cacheConfig;getCacheConfig(){return {enabled:true,ttl:300,perUser:false,...this.cacheConfig}}async generateCacheKey(){let r=this.getCacheConfig(),o=this.getContext(),s=G(this),a=await this.getValidatedData(),i=a.params,c=a.query,u=i&&Object.keys(i).length>0?"GET":"LIST",d;return r.perUser&&(d=o.var?.userId),Te({tableName:s,method:u,params:i,query:c,keyFields:r.keyFields,userId:d,prefix:r.prefix})}_cacheHit=false;async getCachedResponse(){if(!this.getCacheConfig().enabled)return this._cacheHit=false,null;let o=await this.generateCacheKey(),s=this.getContext(),a=F(s);if(!a)return this._cacheHit=false,null;let i=await a.get(o);return this._cacheHit=i!==null,i?.data??null}getCacheStatus(){return this._cacheHit?"HIT":"MISS"}successWithCache(r,o=200){return new Response(JSON.stringify({success:true,result:r}),{status:o,headers:{"Content-Type":"application/json","X-Cache":this.getCacheStatus()}})}jsonWithCache(r,o=200){return new Response(JSON.stringify(r),{status:o,headers:{"Content-Type":"application/json","X-Cache":this.getCacheStatus()}})}async setCachedResponse(r){let o=this.getCacheConfig();if(!o.enabled)return;let s=await this.generateCacheKey(),a=this.getContext(),i=F(a);if(!i)return;let c=o.tags?[...o.tags]:[],u=this._meta;u?.model?.tableName&&c.push(u.model.tableName),await i.set(s,r,{ttl:o.ttl,tags:c.length>0?c:void 0});}async invalidateCache(r){let o=this.getContext(),s=F(o);if(!s)return;let a=this.getCacheConfig();if(r?.pattern)await s.deletePattern(r.pattern);else if(r?.tags&&s.deleteByTag)for(let i of r.tags)await s.deleteByTag(i);else {let i=G(this),c=K(i,void 0,a.prefix);await s.deletePattern(c);}}}return t}function Mt(e){class t extends e{cacheInvalidation;getCacheInvalidationConfig(){return {strategy:"all",...this.cacheInvalidation}}async performCacheInvalidation(r){let o=this.getCacheInvalidationConfig(),s=this.getContext(),a=F(s);if(!a)return;let i=G(this);switch(o.strategy??"all"){case "single":if(r!==void 0){let g=K(i,{id:r});await a.deletePattern(g);}break;case "list":let u=K(i,{method:"LIST"});await a.deletePattern(u);break;case "all":let d=K(i);await a.deletePattern(d);break;case "pattern":o.pattern&&await a.deletePattern(o.pattern);break;case "tags":if(o.tags&&a.deleteByTag)for(let g of o.tags)await a.deleteByTag(g);break}if(o.relatedModels&&o.relatedModels.length>0){let u=be(i,o.relatedModels);for(let d of u)await a.deletePattern(d);}}async handle(){let r=await super.handle();if(r.status>=200&&r.status<300){let o;try{o=(await r.clone().json())?.result?.id;}catch{}let s=G(this);this.performCacheInvalidation(o).catch(a=>{b$2().error("Cache invalidation failed",{error:a instanceof Error?a.message:String(a),tableName:s,recordId:o});});}return r}}return t}function ke(e,t){return _.resolve(e,t)}function Pe(e,t){return X.resolve(e,t)}function F(e,t){return J.resolve(e,t)}function zt(e,t){return b$3.resolve(e,t)}function Ut(e,t){return b$4.resolve(e,t)}function Vt(e,t){return g.resolve(e,t)}function Xt(e,t){return a$3.resolve(e,t)}var _=b("rateLimitStorage");function tr(e){_.set(e);}function rr(){return _.get()}function Ne(){return {ip:e=>t=>q(t,e.ipHeader,e.trustProxy),user:e=>t=>{let n=ne(t);return n?`user:${n}`:q(t,e.ipHeader,e.trustProxy)},"api-key":e=>t=>{let n=we(t,e.apiKeyHeader);return n?`apikey:${n.substring(0,8)}`:q(t,e.ipHeader,e.trustProxy)},combined:e=>t=>{let n=q(t,e.ipHeader,e.trustProxy),r=ne(t);return r?`${n}:user:${r}`:n}}}function Be(e,t){if(typeof e=="function")return e;let r=Ne()[e];return r?r(t):o=>q(o,t.ipHeader,t.trustProxy)}async function $e(e,t,n,r){let o=await e.increment(t,r),s=Math.ceil((o.windowStart+r)/1e3),a=Math.max(0,n-o.count),i=o.count<=n;return {allowed:i,limit:n,remaining:a,resetAt:s,retryAfter:i?void 0:Math.ceil((o.windowStart+r-Date.now())/1e3)}}async function je(e,t,n,r){let o=Date.now(),s=await e.addTimestamp(t,r,o),a=s.timestamps.length,i=Math.max(0,n-a),c=a<=n,u=s.timestamps.length>0?Math.min(...s.timestamps):o,d=Math.ceil((u+r)/1e3),g;if(!c&&s.timestamps.length>0){let C=[...s.timestamps].sort((h,R)=>h-R),m=a-n;if(m>0&&C.length>=m){let h=C[m-1];g=Math.max(1,Math.ceil((h+r-o)/1e3));}}return {allowed:c,limit:n,remaining:i,resetAt:d,retryAfter:g}}function nr(e={}){let t=e.limit??100,n=e.windowSeconds??60,r=e.algorithm??"sliding-window",o=e.keyStrategy??"ip",s=e.keyPrefix??"rl",a=e.skipPaths??[],i=e.includeHeaders??true,c=e.errorMessage??"Too many requests",u=Be(o,e);return async(d,g)=>{let C=d.req.path;if(a.length>0&&ve(C,a))return g();let m=ke(d,e.storage);if(!m)return b$2().warn("Rate limit storage not configured. Skipping rate limiting."),g();let h=u(d);if(!h)return g();let R=t,l=n;if(e.getTier){let T=await e.getTier(d);R=T.limit,l=T.windowSeconds??n;}let P=l*1e3,w=Ie(s,C,h),f;if(r==="fixed-window"?f=await $e(m,w,R,P):f=await je(m,w,R,P),b$1(d,"rateLimit",f),b$1(d,"rateLimitKey",w),i&&(d.header("X-RateLimit-Limit",String(f.limit)),d.header("X-RateLimit-Remaining",String(f.remaining)),d.header("X-RateLimit-Reset",String(f.resetAt))),!f.allowed)throw f.retryAfter&&d.header("Retry-After",String(f.retryAfter)),e.onRateLimitExceeded&&await e.onRateLimitExceeded(d,f,w),new U(c,f.retryAfter??60);await g();}}async function or(e,t){let n=t??_.get();if(!n)throw new Error("Rate limit storage not configured");await n.reset(e);}export{Le as A,Rt as B,W as C,qt as D,Kt as E,Ht as F,Mt as G,ke as H,Pe as I,F as J,zt as K,Ut as L,Vt as M,Xt as N,V as O,Me as P,Oe as Q,ht as R,yt as S,xt as T,Ct as U,Et as V,Ye as a,ee as b,te as c,Ze as d,ye as e,xe as f,re as g,Ce as h,D as i,Ee as j,Se as k,Re as l,U as m,q as n,ne as o,we as p,st as q,ve as r,Ie as s,tr as t,rr as u,nr as v,or as w,Te as x,K as y,be as z};
@@ -0,0 +1 @@
1
+ import {p,q,r,s,t,v as v$1,x as x$1,y,z,A,B,i,k,u,w,C,D,E,F,G,H,P,Q,Z,_ as _$1}from'./chunk-PKHQA6WM.js';import {b,a}from'./chunk-FHABLABR.js';import {z as z$1}from'zod';var S=new Map;function m(u){return S.has(u)||S.set(u,new Map),S.get(u)}function Ee(u,n,a){let t=m(a.model),e=a.localKey||"id",o=u[e];if(o==null)return u;let r=Array.from(t.values()).filter(s=>s[a.foreignKey]===o);switch(a.type){case "hasOne":return {...u,[n]:r[0]||null};case "hasMany":return {...u,[n]:r};case "belongsTo":{let s=u[a.foreignKey];if(s==null)return {...u,[n]:null};let i=Array.from(t.values()).find(d=>d[a.localKey||"id"]===s);return {...u,[n]:i||null}}default:return u}}function j(u,n,a){if(!a?.relations?.length||!n.model.relations)return u;let t={...u};for(let e of a.relations){let o=n.model.relations[e];o&&(t=Ee(t,e,o));}return t}function _e(){S.clear();}function Ie(u){return m(u)}function x(u,n,a){if(u==null||typeof u!="object")return false;let t=u;if(n.enabled){let e=t[n.field];if(e!=null)return false}if(a){for(let[e,o]of Object.entries(a))if(String(t[e])!==o)return false}return true}var _=Object.freeze({__memoryNoopTx:true,rolledBack:false}),se=class extends p{_tx=_;generateId(){return crypto.randomUUID()}async create(n){let a=m(this._meta.model.tableName),t=this._meta.model.primaryKeys[0],e=this.applyManagedInsertFields(n,"memory",()=>this.generateId()),o=String(e[t]);return a.set(o,e),e}async createNested(n,a,t,e){let o=m(t.model),r=[],s=Array.isArray(e)?e:[e];for(let i of s){if(typeof i!="object"||i===null)continue;let d={...i,id:crypto.randomUUID(),[t.foreignKey]:n};o.set(d.id,d),r.push(d);}return r}},ie=class extends q{async read(n,a,t){let o=m(this._meta.model.tableName).get(n),r=this.getSoftDeleteConfig();return !o||!x(o,r,a)?null:j(o,this._meta,t)}},ae=class extends r{_tx=_;async findExisting(n,a){let e=m(this._meta.model.tableName).get(n),o=this.getSoftDeleteConfig();return !e||!x(e,o,a)?null:{...e}}async update(n,a,t){let e=m(this._meta.model.tableName),o=e.get(n),r=this.getSoftDeleteConfig();if(!o||!x(o,r,t))return null;let s={...o,...this.applyManagedUpdateFields(a)};return e.set(n,s),s}async processNestedWrites(n,a,t,e){let o=m(t.model),r={created:[],updated:[],deleted:[],connected:[],disconnected:[]};if(e.create){let s=Array.isArray(e.create)?e.create:[e.create];for(let i of s){if(typeof i!="object"||i===null)continue;let d={...i,id:crypto.randomUUID(),[t.foreignKey]:n};o.set(d.id,d),r.created.push(d);}}if(e.update)for(let s of e.update){if(!s.id)continue;let i=o.get(String(s.id));if(!i||i[t.foreignKey]!==n)continue;let d={...i,...s};o.set(String(s.id),d),r.updated.push(d);}if(e.delete)for(let s of e.delete){let i=o.get(String(s));i&&i[t.foreignKey]===n&&(o.delete(String(s)),r.deleted.push(s));}if(e.connect)for(let s of e.connect){let i=o.get(String(s));if(!i)continue;let d={...i,[t.foreignKey]:n};o.set(String(s),d),r.connected.push(s);}if(e.disconnect)for(let s of e.disconnect){let i=o.get(String(s));if(!i||i[t.foreignKey]!==n)continue;let d={...i,[t.foreignKey]:null};o.set(String(s),d),r.disconnected.push(s);}if(e.set!==void 0){let s=Array.from(o.values()).filter(i=>i[t.foreignKey]===n);for(let i of s)if(i.id){let d={...i,[t.foreignKey]:null};o.set(String(i.id),d),r.disconnected.push(i.id);}if(e.set!==null){let i={...e.set,id:crypto.randomUUID(),[t.foreignKey]:n};o.set(i.id,i),r.created.push(i);}}return r}},de=class extends s{_tx=_;async findForDelete(n,a){let e=m(this._meta.model.tableName).get(n),o=this.getSoftDeleteConfig();return !e||!x(e,o,a)?null:e}async countRelated(n,a,t){let e=m(t.model),o=0;for(let r of e.values())r[t.foreignKey]===n&&o++;return o}async deleteRelated(n,a,t){let e=m(t.model),o=0;for(let[r,s]of e.entries())s[t.foreignKey]===n&&(e.delete(r),o++);return o}async nullifyRelated(n,a,t){let e=m(t.model),o=0;for(let[r,s]of e.entries())if(s[t.foreignKey]===n){let i={...s,[t.foreignKey]:null};e.set(r,i),o++;}return o}async delete(n,a){let t=m(this._meta.model.tableName),e=t.get(n),o=this.getSoftDeleteConfig();if(!e||!x(e,o,a))return null;if(o.enabled){let r={...e,[o.field]:new Date};return t.set(n,r),r}else return t.delete(n),e}},le=class extends t{async list(n){let a$1=m(this._meta.model.tableName),t=Array.from(a$1.values()),e=this.getSoftDeleteConfig();e.enabled&&(n.options.onlyDeleted?t=t.filter(c=>{let p=c[e.field];return p!=null}):n.options.withDeleted||(t=t.filter(c=>{let p=c[e.field];return p==null})));for(let c of n.filters)t=t.filter(p=>{let l=p[c.field];switch(c.operator){case "eq":return String(l)===String(c.value);case "ne":return String(l)!==String(c.value);case "gt":return Number(l)>Number(c.value);case "gte":return Number(l)>=Number(c.value);case "lt":return Number(l)<Number(c.value);case "lte":return Number(l)<=Number(c.value);case "in":return c.value.map(String).includes(String(l));case "nin":return !c.value.map(String).includes(String(l));case "like":return String(l).includes(String(c.value).replace(/%/g,""));case "ilike":return String(l).toLowerCase().includes(String(c.value).replace(/%/g,"").toLowerCase());case "null":return c.value?l===null:l!==null;case "between":{let[f,M]=c.value;return Number(l)>=Number(f)&&Number(l)<=Number(M)}default:return true}});if(n.options.search&&this.searchFields.length>0){let c=n.options.search.toLowerCase();t=t.filter(p=>this.searchFields.some(l=>{let f=p[l];return String(f).toLowerCase().includes(c)}));}let o=t.length;if(n.options.order_by){let c=n.options.order_by,p=n.options.order_by_direction==="desc"?-1:1;t.sort((l,f)=>{let M=l[c],y=f[c];return M<y?-1*p:M>y?1*p:0});}if(this.cursorPaginationEnabled&&(n.options.cursor||n.options.limit)){let c=this.cursorField||"id",p=n.options.limit||n.options.per_page||this.defaultPerPage,l=0;if(n.options.cursor){let R=b(n.options.cursor);if(R!==null){let P=t.findIndex(ve=>String(ve[c])===R);P!==-1&&(l=P+1);}}let f=t.slice(l,l+p),M={relations:n.options.include||[]},y=f.map(R=>j(R,this._meta,M)),k=l+p<t.length,w=l>0,I,N;if(k&&f.length>0){let R=f[f.length-1];I=a(R[c]);}if(w&&l>0){let R=t[l-1];N=a(R[c]);}return {result:y,result_info:{page:0,per_page:p,total_count:o,has_next_page:k,has_prev_page:w,next_cursor:I,prev_cursor:N}}}let r=n.options.page||1,s=n.options.per_page||this.defaultPerPage,i=(r-1)*s,d=t.slice(i,i+s),g={relations:n.options.include||[]},b$1=d.map(c=>j(c,this._meta,g)),h=Math.ceil(o/s);return {result:b$1,result_info:{page:r,per_page:s,total_count:o,total_pages:h,has_next_page:r<h,has_prev_page:r>1}}}},ce=class extends v$1{async restore(n,a){let t=m(this._meta.model.tableName),e=t.get(n),o=this.getSoftDeleteConfig();if(!e)return null;let r=e[o.field];if(r==null)return null;if(a){for(let[i,d]of Object.entries(a))if(String(e[i])!==d)return null}let s={...e,[o.field]:null};return t.set(n,s),s}};var ue=class extends x$1{generateId(){return crypto.randomUUID()}async batchCreate(n){let a=m(this._meta.model.tableName),t=this._meta.model.primaryKeys[0],e=[];for(let o of n){let r=this.applyManagedInsertFields(o,"memory",()=>this.generateId()),s=String(r[t]);a.set(s,r),e.push(r);}return e}},me=class extends y{async batchUpdate(n){let a=m(this._meta.model.tableName),t=this.getSoftDeleteConfig(),e=[],o=[];for(let r of n){let s=a.get(r.id);if(!s){o.push(r.id);continue}if(!x(s,t)){o.push(r.id);continue}let i={...s,...this.applyManagedUpdateFields(r.data)};a.set(r.id,i),e.push(i);}return {updated:e,notFound:o}}},ge=class extends z{async batchDelete(n){let a=m(this._meta.model.tableName),t=this.getSoftDeleteConfig(),e=[],o=[];for(let r of n){let s=a.get(r);if(!s){o.push(r);continue}if(!x(s,t)){o.push(r);continue}if(t.enabled){let i={...s,[t.field]:new Date};a.set(r,i),e.push(i);}else a.delete(r),e.push(s);}return {deleted:e,notFound:o}}},pe=class extends A{async batchRestore(n){let a=m(this._meta.model.tableName),t=this.getSoftDeleteConfig(),e=[],o=[];for(let r of n){let s=a.get(r);if(!s){o.push(r);continue}let i=s[t.field];if(i==null){o.push(r);continue}let d={...s,[t.field]:null};a.set(r,d),e.push(d);}return {restored:e,notFound:o}}},fe=class extends B{generateId(){return crypto.randomUUID()}async findExisting(n){let a=m(this._meta.model.tableName),t=this.getUpsertKeys();for(let e of a.values()){let o=true;for(let r of t){let s=n[r],i=e[r];if(s!==i){o=false;break}}if(o)return e}return null}async create(n){let a=m(this._meta.model.tableName),t=this._meta.model.primaryKeys[0],e=this.applyManagedInsertFields(n,"memory",()=>this.generateId());return a.set(String(e[t]),e),e}async update(n,a){let t=m(this._meta.model.tableName),e=this._meta.model.primaryKeys[0],o=String(n[e]),r={...n,...this.applyManagedUpdateFields(a)};return t.set(o,r),r}async nativeBatchUpsert(n,a){let t=m(this._meta.model.tableName),e=this.getUpsertKeys(),o=this._meta.model.primaryKeys[0],r=[],s=0,i=0;for(let d=0;d<n.length;d++){let g=n[d],b=null;for(let h of t.values()){let c=true;for(let p of e){let l=g[p],f=h[p];if(l!==f){c=false;break}}if(c){b=h;break}}if(b){let h={...g};if(this.createOnlyFields)for(let l of this.createOnlyFields)delete h[l];let c=String(b[o]),p={...b,...this.applyManagedUpdateFields(h)};t.set(c,p),r.push({data:p,created:false,index:d}),i++;}else {let h={...g};if(this.updateOnlyFields)for(let l of this.updateOnlyFields)delete h[l];let c=this.applyManagedInsertFields(h,"memory",()=>this.generateId()),p=String(c[o]);t.set(p,c),r.push({data:c,created:true,index:d}),s++;}}return {items:r,createdCount:s,updatedCount:i,totalCount:r.length}}};var v=class extends i{maxBulkSize=1e3;confirmThreshold=100;returnRecords=false;hookMode="parallel";filterFields;getSchema(){return {request:{body:{content:{"application/json":{schema:this.getUpdateSchema().partial()}}},query:z$1.object({dryRun:z$1.string().optional()}).passthrough()},responses:{200:{description:"Bulk patch result",content:{"application/json":{schema:z$1.object({success:z$1.boolean(),matched:z$1.number(),updated:z$1.number(),dryRun:z$1.boolean()})}}},400:{description:"Bad request",content:{"application/json":{schema:z$1.object({success:z$1.boolean(),error:z$1.string()})}}}}}}async handle(){let n=this.getContext(),t=(await this.getValidatedData()).body;if(!t||Object.keys(t).length===0)return this.error("Request body is required with at least one field to update","EMPTY_BODY",400);let e=n.req.query("dryRun"),o=e==="true"||e==="1",r=k(n.req.query(),{filterFields:this.filterFields,defaultPerPage:this.maxBulkSize,maxPerPage:this.maxBulkSize}),s=await this.countMatching(r);if(s===0)return this.json({success:true,matched:0,updated:0,dryRun:o});if(s>this.maxBulkSize)return this.error(`Bulk patch affects ${s} records, exceeding the maximum of ${this.maxBulkSize}. Use more specific filters.`,"BULK_TOO_LARGE",400);if(s>=this.confirmThreshold&&n.req.header("X-Confirm-Bulk")!=="true")return this.error(`This operation will affect ${s} records. Set X-Confirm-Bulk: true header to confirm.`,"CONFIRMATION_REQUIRED",400);if(o)return this.json({success:true,matched:s,updated:0,dryRun:true});let i=t;this.beforeBulkPatch&&(i=await this.beforeBulkPatch(i,r,s));let d=await this.applyPatch(i,r),g={matched:s,updated:d.updated,dryRun:false,records:this.returnRecords?d.records:void 0};return this.afterBulkPatch&&await this.afterBulkPatch(g),this.json({success:true,matched:g.matched,updated:g.updated,dryRun:false,...this.returnRecords&&g.records?{records:g.records}:{}})}};var Me=class extends u{generateId(){return crypto.randomUUID()}async findSource(n,a){let e=m(this._meta.model.tableName).get(n),o=this.getSoftDeleteConfig();return !e||!x(e,o,a)?null:e}async createClone(n){let a=m(this._meta.model.tableName),t=this._meta.model.primaryKeys[0],e=this.applyManagedInsertFields(n,"memory",()=>this.generateId()),o=String(e[t]);return a.set(o,e),e}},be=class extends w{generateId(){return crypto.randomUUID()}async findExisting(n){let a=m(this._meta.model.tableName),t=this.getUpsertKeys(),e=this.getSoftDeleteConfig();for(let o of a.values()){if(e.enabled){let s=o[e.field];if(s!=null)continue}let r=true;for(let s of t){let i=n[s],d=o[s];if(i!==d){r=false;break}}if(r)return o}return null}async create(n){let a=m(this._meta.model.tableName),t=this._meta.model.primaryKeys[0],e=this.applyManagedInsertFields(n,"memory",()=>this.generateId());return a.set(String(e[t]),e),e}async update(n,a){let t=m(this._meta.model.tableName),e=this._meta.model.primaryKeys[0],o=String(n[e]),r={...n,...this.applyManagedUpdateFields(a)};return t.set(o,r),r}async nativeUpsert(n,a){let t=m(this._meta.model.tableName),e=this.getUpsertKeys(),o=this._meta.model.primaryKeys[0],r=this.getSoftDeleteConfig(),s=null;for(let i of t.values()){if(r.enabled){let g=i[r.field];if(g!=null)continue}let d=true;for(let g of e){let b=n[g],h=i[g];if(b!==h){d=false;break}}if(d){s=i;break}}if(s){let i={...n};if(this.createOnlyFields)for(let b of this.createOnlyFields)delete i[b];let d=String(s[o]),g={...s,...this.applyManagedUpdateFields(i)};return t.set(d,g),{data:g,created:false}}else {let i={...n};if(this.updateOnlyFields)for(let b of this.updateOnlyFields)delete i[b];let d=this.applyManagedInsertFields(i,"memory",()=>this.generateId()),g=String(d[o]);return t.set(g,d),{data:d,created:true}}}async processNestedWrites(n,a,t,e){let o=m(t.model),r={created:[],updated:[],deleted:[],connected:[],disconnected:[]};if(e.create){let s=Array.isArray(e.create)?e.create:[e.create];for(let i of s){if(typeof i!="object"||i===null)continue;let d={...i,id:crypto.randomUUID(),[t.foreignKey]:n};o.set(d.id,d),r.created.push(d);}}if(e.update)for(let s of e.update){let i=String(s.id),d=o.get(i);if(d&&d[t.foreignKey]===n){let g={...d,...s};o.set(i,g),r.updated.push(g);}}if(e.delete)for(let s of e.delete){let i=String(s),d=o.get(i);d&&d[t.foreignKey]===n&&(o.delete(i),r.deleted.push(s));}if(e.connect)for(let s of e.connect){let i=String(s),d=o.get(i);if(d){let g={...d,[t.foreignKey]:n};o.set(i,g),r.connected.push(s);}}if(e.disconnect)for(let s of e.disconnect){let i=String(s),d=o.get(i);if(d&&d[t.foreignKey]===n){let g={...d,[t.foreignKey]:null};o.set(i,g),r.disconnected.push(s);}}return r}},he=class extends C{async recordExists(n){return m(this._meta.model.tableName).has(n)}},ye=class extends D{},xe=class extends E{},Oe=class extends F{async rollback(n,a,t){let e=m(this._meta.model.tableName),o=this.getVersioningConfig().field,r={...a,[o]:t};return e.set(n,r),r}},Re=class extends G{async aggregate(n){let a=m(this._meta.model.tableName),t=Array.from(a.values()),e=this.getSoftDeleteConfig();if(e.enabled){let{query:o}=await this.getValidatedData();o?.withDeleted===true||o?.withDeleted==="true"||(t=t.filter(s=>{let i=s[e.field];return i==null}));}if(n.filters)for(let[o,r]of Object.entries(n.filters))t=t.filter(s=>{if(typeof r=="object"&&r!==null){for(let[i,d]of Object.entries(r)){let g=s[o];switch(i){case "eq":return String(g)===String(d);case "ne":return String(g)!==String(d);case "gt":return Number(g)>Number(d);case "gte":return Number(g)>=Number(d);case "lt":return Number(g)<Number(d);case "lte":return Number(g)<=Number(d);case "in":return d.map(String).includes(String(g));default:return true}}return true}return String(s[o])===String(r)});return H(t,n)}},ke=class extends P{async search(n,a){let t=m(this._meta.model.tableName),e=Array.from(t.values()),o=this.getSoftDeleteConfig();o.enabled&&(a.options.onlyDeleted?e=e.filter(l=>{let f=l[o.field];return f!=null}):a.options.withDeleted||(e=e.filter(l=>{let f=l[o.field];return f==null})));for(let l of a.filters)e=e.filter(f=>{let M=f[l.field];switch(l.operator){case "eq":return String(M)===String(l.value);case "ne":return String(M)!==String(l.value);case "gt":return Number(M)>Number(l.value);case "gte":return Number(M)>=Number(l.value);case "lt":return Number(M)<Number(l.value);case "lte":return Number(M)<=Number(l.value);case "in":return l.value.map(String).includes(String(M));case "nin":return !l.value.map(String).includes(String(M));case "like":return String(M).includes(String(l.value).replace(/%/g,""));case "ilike":return String(M).toLowerCase().includes(String(l.value).replace(/%/g,"").toLowerCase());case "null":return l.value?M===null:M!==null;case "between":{let[y,k]=l.value;return Number(M)>=Number(y)&&Number(M)<=Number(k)}default:return true}});let r=this.getSearchableFields(),s=Q(e,n,r),i=s.length;if(a.options.order_by){let l=a.options.order_by,f=a.options.order_by_direction==="desc"?-1:1;s.sort((M,y)=>{let k=M.item[l],w=y.item[l];return k<w?-1*f:k>w?1*f:0});}let d=a.options.page||1,g=a.options.per_page||this.defaultPerPage,b=(d-1)*g,h=s.slice(b,b+g),c={relations:a.options.include||[]};return {items:h.map(l=>({...l,item:j(l.item,this._meta,c)})),totalCount:i}}},je=class extends Z{async list(n){let a=m(this._meta.model.tableName),t=Array.from(a.values()),e=this.getSoftDeleteConfig();e.enabled&&(n.options.onlyDeleted?t=t.filter(c=>{let p=c[e.field];return p!=null}):n.options.withDeleted||(t=t.filter(c=>{let p=c[e.field];return p==null})));for(let c of n.filters)t=t.filter(p=>{let l=p[c.field];switch(c.operator){case "eq":return String(l)===String(c.value);case "ne":return String(l)!==String(c.value);case "gt":return Number(l)>Number(c.value);case "gte":return Number(l)>=Number(c.value);case "lt":return Number(l)<Number(c.value);case "lte":return Number(l)<=Number(c.value);case "in":return c.value.map(String).includes(String(l));case "nin":return !c.value.map(String).includes(String(l));case "like":return String(l).includes(String(c.value).replace(/%/g,""));case "ilike":return String(l).toLowerCase().includes(String(c.value).replace(/%/g,"").toLowerCase());case "null":return c.value?l===null:l!==null;case "between":{let[f,M]=c.value;return Number(l)>=Number(f)&&Number(l)<=Number(M)}default:return true}});if(n.options.search&&this.searchFields.length>0){let c=n.options.search.toLowerCase();t=t.filter(p=>this.searchFields.some(l=>{let f=p[l];return String(f).toLowerCase().includes(c)}));}let o=t.length;if(n.options.order_by){let c=n.options.order_by,p=n.options.order_by_direction==="desc"?-1:1;t.sort((l,f)=>{let M=l[c],y=f[c];return M<y?-1*p:M>y?1*p:0});}let r=n.options.page||1,s=n.options.per_page||this.defaultPerPage,i=(r-1)*s,d=t.slice(i,i+s),g={relations:n.options.include||[]},b=d.map(c=>j(c,this._meta,g)),h=Math.ceil(o/s);return {result:b,result_info:{page:r,per_page:s,total_count:o,total_pages:h,has_next_page:r<h,has_prev_page:r>1}}}},we=class extends _$1{generateId(){return crypto.randomUUID()}async findExisting(n){let a=m(this._meta.model.tableName),t=this.getUpsertKeys(),e=this.getSoftDeleteConfig();for(let o of a.values()){if(e.enabled){let s=o[e.field];if(s!=null)continue}let r=true;for(let s of t){let i=n[s],d=o[s];if(i!==d){r=false;break}}if(r)return o}return null}async create(n){let a=m(this._meta.model.tableName),t=this._meta.model.primaryKeys[0],e=this.applyManagedInsertFields(n,"memory",()=>this.generateId());return a.set(String(e[t]),e),e}async update(n,a){let t=m(this._meta.model.tableName),e=this._meta.model.primaryKeys[0],o=String(n[e]),r={...n,...this.applyManagedUpdateFields(a)};return t.set(o,r),r}},Se=class extends v{async countMatching(n){return this.getFilteredItems(n).length}async applyPatch(n,a){let t=m(this._meta.model.tableName),e=this._meta.model.primaryKeys[0],o=this.getFilteredItems(a),r=[];for(let s of o){let i=String(s[e]),d={...s,...n};t.set(i,d),r.push(d);}return {updated:r.length,records:r}}getFilteredItems(n){let a=m(this._meta.model.tableName),t=Array.from(a.values());for(let e of n.filters)t=t.filter(o=>{let r=o[e.field];switch(e.operator){case "eq":return String(r)===String(e.value);case "ne":return String(r)!==String(e.value);case "gt":return Number(r)>Number(e.value);case "gte":return Number(r)>=Number(e.value);case "lt":return Number(r)<Number(e.value);case "lte":return Number(r)<=Number(e.value);case "in":return e.value.map(String).includes(String(r));case "nin":return !e.value.map(String).includes(String(r));case "like":return String(r).includes(String(e.value).replace(/%/g,""));case "ilike":return String(r).toLowerCase().includes(String(e.value).replace(/%/g,"").toLowerCase());case "null":return e.value?r===null:r!==null;default:return true}});return t}};export{we as A,Se as B,v as a,S as b,m as c,_e as d,Ie as e,_ as f,se as g,ie as h,ae as i,de as j,le as k,ce as l,ue as m,me as n,ge as o,pe as p,fe as q,Me as r,be as s,he as t,ye as u,xe as v,Oe as w,Re as x,ke as y,je as z};
@@ -1 +1 @@
1
- import {d}from'./chunk-4CM6OCS3.js';var m=class{entriesById=new Map;entryIds=[];maxEntries;maxAge;cleanupInterval;lastCleanup=0;constructor(e){this.maxEntries=e?.maxEntries??1e4,this.maxAge=e?.maxAge??864e5,this.cleanupInterval=e?.cleanupInterval??3e5;}maybeCleanup(){if(this.cleanupInterval<=0||this.maxAge<=0)return;let e=Date.now();e-this.lastCleanup>=this.cleanupInterval&&(this.lastCleanup=e,this.deleteOlderThanSync(this.maxAge));}deleteOlderThanSync(e){let n=Date.now()-e,a=0;for(let t=this.entryIds.length-1;t>=0;t--){let s=this.entryIds[t],r=this.entriesById.get(s);if(r)if(new Date(r.timestamp).getTime()<n)this.entriesById.delete(s),this.entryIds.splice(t,1),a++;else break}return a}async store(e){for(this.maybeCleanup();this.entryIds.length>=this.maxEntries;){let n=this.entryIds.pop();n&&this.entriesById.delete(n);}this.entriesById.set(e.id,e),this.entryIds.unshift(e.id);}async query(e){this.maybeCleanup();let n=this.getFilteredEntries(e);if(e?.sort){let{field:s,direction:r}=e.sort;n=n.sort((i,o)=>{let g,u;switch(s){case "timestamp":g=new Date(i.timestamp).getTime(),u=new Date(o.timestamp).getTime();break;case "responseTimeMs":g=i.response.responseTimeMs,u=o.response.responseTimeMs;break;case "statusCode":g=i.response.statusCode,u=o.response.statusCode;break;default:return 0}return r==="asc"?g-u:u-g});}let a=e?.offset??0,t=e?.limit??n.length;return n.slice(a,a+t)}async getById(e){return this.entriesById.get(e)??null}async count(e){return this.getFilteredEntries(e).length}async deleteOlderThan(e){return this.deleteOlderThanSync(e)}async clear(){let e=this.entriesById.size;return this.entriesById.clear(),this.entryIds=[],e}destroy(){this.entriesById.clear(),this.entryIds=[];}getSize(){return this.entriesById.size}getFilteredEntries(e){if(!e)return Array.from(this.entriesById.values());let n=[];for(let a of this.entryIds){let t=this.entriesById.get(a);if(t&&!(e.level&&!(Array.isArray(e.level)?e.level:[e.level]).includes(t.level))&&!(e.method&&!(Array.isArray(e.method)?e.method:[e.method]).map(r=>r.toUpperCase()).includes(t.request.method.toUpperCase()))&&!(e.path&&!d(t.request.path,e.path))){if(e.statusCode){let{min:s,max:r}=e.statusCode,i=t.response.statusCode;if(s!==void 0&&i<s||r!==void 0&&i>r)continue}if(e.timeRange){let s=new Date(t.timestamp).getTime(),{start:r,end:i}=e.timeRange;if(r){let o=typeof r=="string"?new Date(r).getTime():r.getTime();if(s<o)continue}if(i){let o=typeof i=="string"?new Date(i).getTime():i.getTime();if(s>o)continue}}e.userId&&t.request.userId!==e.userId||e.clientIp&&t.request.clientIp!==e.clientIp||e.requestId&&t.id!==e.requestId||e.errorMessage&&(!t.error?.message||!t.error.message.toLowerCase().includes(e.errorMessage.toLowerCase()))||n.push(t);}}return n}};export{m as a};
1
+ import {d}from'./chunk-3DJMHE6N.js';var m=class{entriesById=new Map;entryIds=[];maxEntries;maxAge;cleanupInterval;lastCleanup=0;constructor(e){this.maxEntries=e?.maxEntries??1e4,this.maxAge=e?.maxAge??864e5,this.cleanupInterval=e?.cleanupInterval??3e5;}maybeCleanup(){if(this.cleanupInterval<=0||this.maxAge<=0)return;let e=Date.now();e-this.lastCleanup>=this.cleanupInterval&&(this.lastCleanup=e,this.deleteOlderThanSync(this.maxAge));}deleteOlderThanSync(e){let n=Date.now()-e,a=0;for(let t=this.entryIds.length-1;t>=0;t--){let s=this.entryIds[t],r=this.entriesById.get(s);if(r)if(new Date(r.timestamp).getTime()<n)this.entriesById.delete(s),this.entryIds.splice(t,1),a++;else break}return a}async store(e){for(this.maybeCleanup();this.entryIds.length>=this.maxEntries;){let n=this.entryIds.pop();n&&this.entriesById.delete(n);}this.entriesById.set(e.id,e),this.entryIds.unshift(e.id);}async query(e){this.maybeCleanup();let n=this.getFilteredEntries(e);if(e?.sort){let{field:s,direction:r}=e.sort;n=n.sort((i,o)=>{let g,u;switch(s){case "timestamp":g=new Date(i.timestamp).getTime(),u=new Date(o.timestamp).getTime();break;case "responseTimeMs":g=i.response.responseTimeMs,u=o.response.responseTimeMs;break;case "statusCode":g=i.response.statusCode,u=o.response.statusCode;break;default:return 0}return r==="asc"?g-u:u-g});}let a=e?.offset??0,t=e?.limit??n.length;return n.slice(a,a+t)}async getById(e){return this.entriesById.get(e)??null}async count(e){return this.getFilteredEntries(e).length}async deleteOlderThan(e){return this.deleteOlderThanSync(e)}async clear(){let e=this.entriesById.size;return this.entriesById.clear(),this.entryIds=[],e}destroy(){this.entriesById.clear(),this.entryIds=[];}getSize(){return this.entriesById.size}getFilteredEntries(e){if(!e)return Array.from(this.entriesById.values());let n=[];for(let a of this.entryIds){let t=this.entriesById.get(a);if(t&&!(e.level&&!(Array.isArray(e.level)?e.level:[e.level]).includes(t.level))&&!(e.method&&!(Array.isArray(e.method)?e.method:[e.method]).map(r=>r.toUpperCase()).includes(t.request.method.toUpperCase()))&&!(e.path&&!d(t.request.path,e.path))){if(e.statusCode){let{min:s,max:r}=e.statusCode,i=t.response.statusCode;if(s!==void 0&&i<s||r!==void 0&&i>r)continue}if(e.timeRange){let s=new Date(t.timestamp).getTime(),{start:r,end:i}=e.timeRange;if(r){let o=typeof r=="string"?new Date(r).getTime():r.getTime();if(s<o)continue}if(i){let o=typeof i=="string"?new Date(i).getTime():i.getTime();if(s>o)continue}}e.userId&&t.request.userId!==e.userId||e.clientIp&&t.request.clientIp!==e.clientIp||e.requestId&&t.id!==e.requestId||e.errorMessage&&(!t.error?.message||!t.error.message.toLowerCase().includes(e.errorMessage.toLowerCase()))||n.push(t);}}return n}};export{m as a};
@@ -0,0 +1 @@
1
+ import {p,q,r,s,t,v as v$1,x,y as y$1,z as z$1,A as A$1,B as B$1,P as P$1,Q as Q$1,Z,_ as _$1,w as w$1,C as C$1,D as D$1,E as E$1,F as F$1,G as G$1,H as H$1,u}from'./chunk-PKHQA6WM.js';var E,v;async function Ce(){if(E)return E;try{return E=(await import('pluralize')).default,E}catch{throw new Error('The "pluralize" package is required. Install it with: npm install pluralize')}}async function Fe(){if(v)return v;try{return v=(await import('fastest-levenshtein')).distance,v}catch{throw new Error('The "fastest-levenshtein" package is required. Install it with: npm install fastest-levenshtein')}}async function G(a){return (await Ce()).singular(a)}async function H(a,t){return (await Fe())(a,t)}function ke(a,t){return a[t]}function Ie(a){return typeof a=="object"&&a!==null&&"create"in a&&typeof a.create=="function"}function h(a,t){let e=ke(a,t);return Ie(e)?e:void 0}function X(a){if(typeof a.$transaction!="function")throw new Error("Prisma client does not support $transaction");return a.$transaction.bind(a)}function P(a){if(typeof a=="string"){if(/^-?\d+$/.test(a))return parseInt(a,10);if(/^-?\d+\.\d+$/.test(a))return parseFloat(a);if(a==="true")return true;if(a==="false")return false}return a}function Y(a){let t={};for(let e of a){let o=P(e.value);switch(e.operator){case "eq":t[e.field]=o;break;case "ne":t[e.field]={not:o};break;case "gt":t[e.field]={gt:o};break;case "gte":t[e.field]={gte:o};break;case "lt":t[e.field]={lt:o};break;case "lte":t[e.field]={lte:o};break;case "in":{let n=Array.isArray(e.value)?e.value:[e.value];t[e.field]={in:n.map(P)};break}case "nin":{let n=Array.isArray(e.value)?e.value:[e.value];t[e.field]={notIn:n.map(P)};break}case "like":t[e.field]={contains:String(e.value).replace(/%/g,"")};break;case "ilike":t[e.field]={contains:String(e.value).replace(/%/g,""),mode:"insensitive"};break;case "null":t[e.field]=e.value?null:{not:null};break;case "between":{let[n,s]=e.value;t[e.field]={gte:P(n),lte:P(s)};break}}}return t}var De=500,y=new Map;function Pe(a,t){if(y.size>=De){let e=y.keys().next().value;e!==void 0&&y.delete(e);}y.set(a,t);}var J=new Map;function xe(a,t){J.set(a.toLowerCase(),t),y.delete(a);}function Ae(a){for(let[t,e]of Object.entries(a))xe(t,e);}function Ke(){J.clear(),y.clear();}async function w(a){let t=y.get(a);if(t)return t;let e=J.get(a.toLowerCase());if(e)return Pe(a,e),e;let o=a.replace(/[-_](.)/g,(n,s)=>s.toUpperCase()).replace(/^./,n=>n.toLowerCase());return o=await G(o),Pe(a,o),o}function Ne(a){let t=[];for(let e of Object.keys(a)){if(e.startsWith("$")||e.startsWith("_"))continue;let o=ke(a,e);o&&typeof o=="object"&&"create"in o&&t.push(e);}return t}async function Se(a,t,e=3){if(t.length===0)return [];let o=a.toLowerCase();return (await Promise.all(t.map(async s=>({name:s,distance:await H(o,s.toLowerCase())})))).filter(s=>s.distance<=Math.max(3,a.length/2)).sort((s,r)=>s.distance-r.distance).slice(0,e).map(s=>s.name)}async function M(a,t){let e=await w(t),o=h(a,e);if(!o){let n=Ne(a),s=await Se(e,n),r=`Model '${e}' not found in Prisma client. Table name: '${t}'. `;throw s.length>0&&(r+=`Did you mean: ${s.map(i=>`'${i}'`).join(", ")}? `),n.length>0&&n.length<=10&&(r+=`Available models: ${n.join(", ")}. `),r+=`You can register a custom mapping with: registerPrismaModelMapping('${t}', 'yourModelName')`,new Error(r)}return o}async function Ue(a,t,e,o){let n=await w(o.model),s=h(a,n);if(!s)return t;switch(o.type){case "hasOne":{let r=o.localKey||"id",i=t[r];if(i==null)return {...t,[e]:null};let d=await s.findFirst({where:{[o.foreignKey]:i}});return {...t,[e]:d||null}}case "hasMany":{let r=o.localKey||"id",i=t[r];if(i==null)return {...t,[e]:[]};let d=await s.findMany({where:{[o.foreignKey]:i}});return {...t,[e]:d}}case "belongsTo":{let r=t[o.foreignKey];if(r==null)return {...t,[e]:null};let i=o.localKey||"id",d=await s.findFirst({where:{[i]:r}});return {...t,[e]:d||null}}default:return t}}async function Oe(a,t,e,o){if(!o?.relations?.length||!e.model.relations)return t;let n={...t};for(let s of o.relations){let r=e.model.relations[s];r&&(n=await Ue(a,n,s,r));}return n}async function k(a,t,e,o){if(!t.length||!o?.relations?.length||!e.model.relations)return t;let n=t.map(s=>({...s}));for(let s of o.relations){let r=e.model.relations[s];if(!r)continue;let i=await w(r.model),d=h(a,i);if(d)switch(r.type){case "hasOne":case "hasMany":{let c=r.localKey||"id",u=[...new Set(n.map(m=>m[c]).filter(m=>m!=null))];if(u.length===0){n=n.map(m=>({...m,[s]:r.type==="hasMany"?[]:null}));continue}let l=await d.findMany({where:{[r.foreignKey]:{in:u}}}),g=new Map;for(let m of l){let p=m[r.foreignKey];g.has(p)||g.set(p,[]),g.get(p).push(m);}n=n.map(m=>{let p=m[c],f=g.get(p)||[];return {...m,[s]:r.type==="hasMany"?f:f[0]||null}});break}case "belongsTo":{let c=r.localKey||"id",u=[...new Set(n.map(m=>m[r.foreignKey]).filter(m=>m!=null))];if(u.length===0){n=n.map(m=>({...m,[s]:null}));continue}let l=await d.findMany({where:{[c]:{in:u}}}),g=new Map;for(let m of l){let p=m[c];g.set(p,m);}n=n.map(m=>{let p=m[r.foreignKey];return {...m,[s]:g.get(p)||null}});break}}}return n}async function _(a){let{model:t,filters:e,searchFields:o=[],softDeleteConfig:n,defaultPerPage:s=20,additionalWhere:r={}}=a,i={...Y(e.filters),...r};if(n?.enabled){let{withDeleted:p,onlyDeleted:f}=e.options;f?i[n.field]={not:null}:p||(i[n.field]=null);}if(e.options.search&&o.length>0){let p=o.map(f=>({[f]:{contains:e.options.search,mode:"insensitive"}}));i={...i,OR:p};}let d=await t.count({where:i}),c;e.options.order_by&&(c={[e.options.order_by]:e.options.order_by_direction||"asc"});let u=e.options.page||1,l=e.options.per_page||s,g=await t.findMany({where:i,orderBy:c,skip:(u-1)*l,take:l}),m=Math.ceil(d/l);return {records:g,where:i,totalCount:d,page:u,perPage:l,totalPages:m}}function j(a,t){return {result:a,result_info:{page:t.page,per_page:t.perPage,total_count:t.totalCount,total_pages:t.totalPages,has_next_page:t.page<t.totalPages,has_prev_page:t.page>1}}}var C=class extends p{useTransaction=false;async getModel(){return M(this.prisma,this._meta.model.tableName)}async create(t){let e=await this.getModel(),o=this.applyManagedInsertFields(t,"prisma");return await e.create({data:o})}},F=class extends q{async getModel(){return M(this.prisma,this._meta.model.tableName)}async read(t,e,o){let n=await this.getModel(),s={[this.lookupField]:t,...e},r=await n.findFirst({where:s});return r?await Oe(this.prisma,r,this._meta,o):null}},I=class extends r{useTransaction=false;async getModel(){return M(this.prisma,this._meta.model.tableName)}async update(t,e,o){let n=await this.getModel(),s={[this.lookupField]:t,...o},r=await n.findFirst({where:s});if(!r)return null;let i=this._meta.model.primaryKeys[0];return await n.update({where:{[i]:r[i]},data:this.applyManagedUpdateFields(e)})}},D=class extends s{useTransaction=false;async getModel(){return M(this.prisma,this._meta.model.tableName)}async findForDelete(t,e){let o=await this.getModel(),n=this.getSoftDeleteConfig(),s={[this.lookupField]:t,...e};return n.enabled&&(s[n.field]=null),await o.findFirst({where:s})}async delete(t,e){let o=await this.getModel(),n=this.getSoftDeleteConfig(),s={[this.lookupField]:t,...e};n.enabled&&(s[n.field]=null);let r=await o.findFirst({where:s});if(!r)return null;let i=this._meta.model.primaryKeys[0],d=r[i];return n.enabled?await o.update({where:{[i]:d},data:{[n.field]:new Date}}):await o.delete({where:{[i]:d}})}},A=class extends t{async getModel(){return M(this.prisma,this._meta.model.tableName)}async list(t){let e=await _({model:await this.getModel(),filters:t,searchFields:this.searchFields,softDeleteConfig:this.getSoftDeleteConfig(),defaultPerPage:this.defaultPerPage}),o={relations:t.options.include||[]},n=await k(this.prisma,e.records,this._meta,o);return j(n,e)}};var K=class extends v$1{useTransaction=false;async getModel(){return M(this.prisma,this._meta.model.tableName)}async restore(t,e){let o=await this.getModel(),n=this.getSoftDeleteConfig(),s={[this.lookupField]:t,[n.field]:{not:null},...e},r=await o.findFirst({where:s});if(!r)return null;let i=this._meta.model.primaryKeys[0];return await o.update({where:{[i]:r[i]},data:{[n.field]:null}})}},N=class extends x{async getModel(){return M(this.prisma,this._meta.model.tableName)}async batchCreate(t){let e=t.map(n=>this.applyManagedInsertFields(n,"prisma")),o=[];return await X(this.prisma)(async n=>{let s=h(n,await w(this._meta.model.tableName));if(!s)throw new Error(`Model '${this._meta.model.tableName}' not found in Prisma transaction client`);for(let r of e){let i=await s.create({data:r});o.push(i);}}),o}},S=class extends y$1{async getModel(){return M(this.prisma,this._meta.model.tableName)}async batchUpdate(t){let e=await this.getModel(),o=this.getSoftDeleteConfig(),n=this._meta.model.primaryKeys[0],s=[],r=[],i=t.map(l=>l.id),d={[this.lookupField]:{in:i}};o.enabled&&(d[o.field]=null);let c=await e.findMany({where:d}),u=new Map;for(let l of c){let g=l[this.lookupField];u.set(g,l);}for(let l of t){let g=u.get(l.id);if(!g){r.push(l.id);continue}let m=await e.update({where:{[n]:g[n]},data:this.applyManagedUpdateFields(l.data)});s.push(m);}return {updated:s,notFound:r}}},U=class extends z$1{async getModel(){return M(this.prisma,this._meta.model.tableName)}async batchDelete(t){let e=await this.getModel(),o=this.getSoftDeleteConfig(),n=this._meta.model.primaryKeys[0],s=[],r=[],i={[this.lookupField]:{in:t}};o.enabled&&(i[o.field]=null);let d=await e.findMany({where:i}),c=new Map;for(let u of d){let l=u[this.lookupField];c.set(l,u);}for(let u of t)c.has(u)||r.push(u);for(let u of t){let l=c.get(u);if(l)if(o.enabled){let g=await e.update({where:{[n]:l[n]},data:{[o.field]:new Date}});s.push(g);}else {let g=await e.delete({where:{[n]:l[n]}});s.push(g);}}return {deleted:s,notFound:r}}},T=class extends A$1{async getModel(){return M(this.prisma,this._meta.model.tableName)}async batchRestore(t){let e=await this.getModel(),o=this.getSoftDeleteConfig(),n=this._meta.model.primaryKeys[0],s=[],r=[],i={[this.lookupField]:{in:t},[o.field]:{not:null}},d=await e.findMany({where:i}),c=new Map;for(let u of d){let l=u[this.lookupField];c.set(l,u);}for(let u of t){let l=c.get(u);if(!l){r.push(u);continue}let g=await e.update({where:{[n]:l[n]},data:{[o.field]:null}});s.push(g);}return {restored:s,notFound:r}}},B=class extends B$1{useTransaction=true;async getModel(){return M(this.prisma,this._meta.model.tableName)}async findExisting(t){let e=await this.getModel(),o=this.getUpsertKeys(),n={};for(let r of o){let i=t[r];i!==void 0&&(n[r]=i);}return Object.keys(n).length===0?null:await e.findFirst({where:n})||null}async create(t){let e=await this.getModel(),o=this.applyManagedInsertFields(t,"prisma");return await e.create({data:o})}async update(t,e){let o=await this.getModel(),n=this._meta.model.primaryKeys[0];return await o.update({where:{[n]:t[n]},data:this.applyManagedUpdateFields(e)})}async nativeBatchUpsert(t,e){if(t.length===0)return {items:[],createdCount:0,updatedCount:0,totalCount:0};let o=this.getUpsertKeys(),n=this._meta.model.primaryKeys[0],s=this.getTimestampsConfig(),r=async c=>{let u=h(c,await w(this._meta.model.tableName));if(!u)throw new Error(`Model '${this._meta.model.tableName}' not found in Prisma client`);let l=[],g=[];for(let m=0;m<t.length;m++){let p=t[m];try{let f={};for(let b of o){let O=p[b];O!==void 0&&(f[b]=O);}let q=this.applyManagedInsertFields(p,"prisma"),x={};for(let[b,O]of Object.entries(p))!o.includes(b)&&b!==n&&(this.createOnlyFields?.includes(b)||(x[b]=O));s.enabled&&(x[s.updatedAt]=Date.now());let je=await u.upsert({where:f,create:q,update:Object.keys(x).length>0?x:{}});l.push({data:je,created:!1,index:m});}catch(f){if(this.continueOnError)g.push({index:m,error:f instanceof Error?f.message:String(f)});else throw f}}return {results:l,errors:g}},i;this.useTransaction?i=await X(this.prisma)(r):i=await r(this.prisma);let d={items:i.results,createdCount:0,updatedCount:i.results.length,totalCount:i.results.length};return i.errors.length>0&&(d.errors=i.errors),d}};var $=class extends P$1{async getModel(){return M(this.prisma,this._meta.model.tableName)}buildSearchWhere(t,e){let o=Y(e.filters),n=this.getSoftDeleteConfig();if(n.enabled){let{withDeleted:d,onlyDeleted:c}=e.options;c?o[n.field]={not:null}:d||(o[n.field]=null);}let s=this.getSearchableFields(),i=(t.fields||Object.keys(s)).map(d=>({[d]:{contains:t.query,mode:"insensitive"}}));return i.length>0&&(t.mode==="all"?o={...o,AND:i}:o={...o,OR:i}),o}async search(t,e){let o=await this.getModel(),n=this.buildSearchWhere(t,e),s=await o.count({where:n}),r=e.options.order_by?{[e.options.order_by]:e.options.order_by_direction||"asc"}:void 0,i=e.options.page||1,d=e.options.per_page||this.defaultPerPage,c=await o.findMany({where:n,orderBy:r,skip:(i-1)*d,take:d}),u=Q$1(c,t,this.getSearchableFields()),l={relations:e.options.include||[]},g=u.map(f=>f.item),m=await k(this.prisma,g,this._meta,l);return {items:u.map((f,q)=>({...f,item:m[q]})),totalCount:s}}},L=class extends Z{async getModel(){return M(this.prisma,this._meta.model.tableName)}async list(t){let e=await _({model:await this.getModel(),filters:t,searchFields:this.searchFields,softDeleteConfig:this.getSoftDeleteConfig(),defaultPerPage:this.defaultPerPage}),o={relations:t.options.include||[]},n=await k(this.prisma,e.records,this._meta,o);return j(n,e)}},W=class extends _$1{async getModel(){return M(this.prisma,this._meta.model.tableName)}async findExisting(t){let e=await this.getModel(),o=this.getUpsertKeys(),n={};for(let r of o){let i=t[r];i!==void 0&&(n[r]=i);}return Object.keys(n).length===0?null:await e.findFirst({where:n})||null}async create(t){let e=await this.getModel(),o=this.applyManagedInsertFields(t,"prisma");return await e.create({data:o})}async update(t,e){let o=await this.getModel(),n=this._meta.model.primaryKeys[0];return await o.update({where:{[n]:t[n]},data:this.applyManagedUpdateFields(e)})}},V=class extends w$1{useTransaction=false;async getModel(){return M(this.prisma,this._meta.model.tableName)}async findExisting(t){let e=await this.getModel(),o=this.getUpsertKeys(),n={};for(let r of o){let i=t[r];i!==void 0&&(n[r]=i);}return Object.keys(n).length===0?null:await e.findFirst({where:n})||null}async create(t){let e=await this.getModel(),o=this.applyManagedInsertFields(t,"prisma");return await e.create({data:o})}async update(t,e){let o=await this.getModel(),n=this._meta.model.primaryKeys[0];return await o.update({where:{[n]:t[n]},data:this.applyManagedUpdateFields(e)})}async nativeUpsert(t,e){let o=await this.getModel(),n=this.getUpsertKeys(),s=this._meta.model.primaryKeys[0],r=this.getTimestampsConfig(),i={};for(let l of n){let g=t[l];g!==void 0&&(i[l]=g);}let d=this.applyManagedInsertFields(t,"prisma"),c={};for(let[l,g]of Object.entries(t))!n.includes(l)&&l!==s&&(this.createOnlyFields?.includes(l)||(c[l]=g));return r.enabled&&(c[r.updatedAt]=Date.now()),{data:await o.upsert({where:i,create:d,update:Object.keys(c).length>0?c:{}}),created:false}}},Re=class extends C$1{async getModel(){return M(this.prisma,this._meta.model.tableName)}async recordExists(t){return await(await this.getModel()).count({where:{[this.lookupField]:t}})>0}},Ee=class extends D$1{},ve=class extends E$1{},_e=class extends F$1{async getModel(){return M(this.prisma,this._meta.model.tableName)}async rollback(t,e,o){let n=await this.getModel(),s=this.getVersioningConfig().field,r=this._meta.model.primaryKeys[0],i=await n.findFirst({where:{[this.lookupField]:t}});if(!i)throw new Error(`Record not found: ${t}`);return await n.update({where:{[r]:i[r]},data:{...e,[s]:o}})}},Q=class extends G$1{useNativeAggregation=true;async getModel(){return M(this.prisma,this._meta.model.tableName)}async buildAggregateWhere(t){let e={},o=this.getSoftDeleteConfig();if(o.enabled){let{query:n}=await this.getValidatedData();n?.withDeleted===true||n?.withDeleted==="true"||(e[o.field]=null);}if(t.filters)for(let[n,s]of Object.entries(t.filters))if(typeof s=="object"&&s!==null){let r={};for(let[i,d]of Object.entries(s))switch(i){case "eq":r.equals=d;break;case "ne":r.not=d;break;case "gt":r.gt=d;break;case "gte":r.gte=d;break;case "lt":r.lt=d;break;case "lte":r.lte=d;break;case "in":r.in=d;break;case "nin":r.notIn=d;break;default:r[i]=d;}e[n]=r;}else e[n]=s;return e}async aggregate(t){let e=await this.getModel(),o=await this.buildAggregateWhere(t);if(!this.useNativeAggregation||t.having){let n=await e.findMany({where:o});return H$1(n,t)}return t.groupBy?.length?this.aggregateWithGroupBy(e,o,t):this.aggregateSimple(e,o,t)}groupAggregationsByOperation(t){let e={sum:[],avg:[],min:[],max:[],count:[],countDistinct:[]};for(let o of t)switch(o.operation){case "sum":e.sum.push(o.field);break;case "avg":e.avg.push(o.field);break;case "min":e.min.push(o.field);break;case "max":e.max.push(o.field);break;case "count":e.count.push(o.field);break;case "countDistinct":e.countDistinct.push(o.field);break}return e}async aggregateSimple(t,e,o){let n={where:e},s={},r=this.groupAggregationsByOperation(o.aggregations);if(n._count=true,r.sum.length){n._sum={};for(let c of r.sum)n._sum[c]=true;}if(r.avg.length){n._avg={};for(let c of r.avg)n._avg[c]=true;}if(r.min.length){n._min={};for(let c of r.min)n._min[c]=true;}if(r.max.length){n._max={};for(let c of r.max)n._max[c]=true;}let i=await w(this._meta.model.tableName),d=h(this.prisma,i);if(!d)throw new Error(`Model '${i}' not found in Prisma client`);try{let c=await d.aggregate(n);if(c._count!==void 0&&(s.count=typeof c._count=="object"?c._count._all??0:c._count),c._sum&&r.sum.length)for(let u of r.sum){let l=u.charAt(0).toUpperCase()+u.slice(1);s[`sum${l}`]=c._sum[u]??0;}if(c._avg&&r.avg.length)for(let u of r.avg){let l=u.charAt(0).toUpperCase()+u.slice(1);s[`avg${l}`]=c._avg[u]??0;}if(c._min&&r.min.length)for(let u of r.min){let l=u.charAt(0).toUpperCase()+u.slice(1);s[`min${l}`]=c._min[u];}if(c._max&&r.max.length)for(let u of r.max){let l=u.charAt(0).toUpperCase()+u.slice(1);s[`max${l}`]=c._max[u];}return {values:s,groups:[]}}catch{let u=await t.findMany({where:e});return H$1(u,o)}}async aggregateWithGroupBy(t,e,o){let n={by:o.groupBy,where:e},s=this.groupAggregationsByOperation(o.aggregations);if(n._count=true,s.sum.length){n._sum={};for(let d of s.sum)n._sum[d]=true;}if(s.avg.length){n._avg={};for(let d of s.avg)n._avg[d]=true;}if(s.min.length){n._min={};for(let d of s.min)n._min[d]=true;}if(s.max.length){n._max={};for(let d of s.max)n._max[d]=true;}let r=await w(this._meta.model.tableName),i=h(this.prisma,r);if(!i)throw new Error(`Model '${r}' not found in Prisma client`);try{let c=(await i.groupBy(n)).map(l=>{let g={},m={};for(let p of o.groupBy)g[p]=l[p];if(m.count=typeof l._count=="object"?l._count._all??0:l._count??0,l._sum&&s.sum.length)for(let p of s.sum){let f=p.charAt(0).toUpperCase()+p.slice(1);m[`sum${f}`]=l._sum[p]??0;}if(l._avg&&s.avg.length)for(let p of s.avg){let f=p.charAt(0).toUpperCase()+p.slice(1);m[`avg${f}`]=l._avg[p]??0;}if(l._min&&s.min.length)for(let p of s.min){let f=p.charAt(0).toUpperCase()+p.slice(1);m[`min${f}`]=l._min[p];}if(l._max&&s.max.length)for(let p of s.max){let f=p.charAt(0).toUpperCase()+p.slice(1);m[`max${f}`]=l._max[p];}return {key:g,values:m}});return {values:{count:c.reduce((l,g)=>l+(g.values.count||0),0)},groups:c}}catch{let c=await t.findMany({where:e});return H$1(c,o)}}},z=class extends u{async getModel(){return M(this.prisma,this._meta.model.tableName)}generateId(){return crypto.randomUUID()}async findSource(t,e){let o=await this.getModel(),n=this.getSoftDeleteConfig(),s={[this.lookupField]:t,...e};n.enabled&&(s[n.field]=null);let r=await o.findFirst({where:s});return r||null}async createClone(t){let e=await this.getModel(),o=this.applyManagedInsertFields(t,"prisma",()=>this.generateId());return await e.create({data:o})}};var ht={CreateEndpoint:C,ListEndpoint:A,ReadEndpoint:F,UpdateEndpoint:I,DeleteEndpoint:D,RestoreEndpoint:K,BatchCreateEndpoint:N,BatchUpdateEndpoint:S,BatchDeleteEndpoint:U,BatchRestoreEndpoint:T,BatchUpsertEndpoint:B,SearchEndpoint:$,AggregateEndpoint:Q,ExportEndpoint:L,ImportEndpoint:W,UpsertEndpoint:V,CloneEndpoint:z};export{xe as a,Ae as b,Ke as c,C as d,F as e,I as f,D as g,A as h,K as i,N as j,S as k,U as l,T as m,B as n,$ as o,L as p,W as q,V as r,Re as s,Ee as t,ve as u,_e as v,Q as w,z as x,ht as y};
@@ -0,0 +1,11 @@
1
+ import {a as a$1,b as b$1}from'./chunk-SDNXN7M5.js';import {b,f as f$2}from'./chunk-4PBGEU64.js';import {f as f$1}from'./chunk-3DE2MG3R.js';import {i,a as a$2,b as b$3,c as c$1,d as d$3}from'./chunk-FC56WWPB.js';import {f}from'./chunk-KLBMVJX3.js';import {e,g,n,o,p,c,j,d as d$2,k,i as i$1,r}from'./chunk-FHABLABR.js';import {d as d$1,e as e$1}from'./chunk-QRXEQTNE.js';import {d}from'./chunk-QXFY6NYI.js';import {b as b$4}from'./chunk-DMGP7QDL.js';import {a,b as b$2}from'./chunk-VJRDAVID.js';import {z}from'zod';import {HTTPException}from'hono/http-exception';import {stream}from'hono/streaming';var ue="createdAt",pe="updatedAt";function se(i){return i?i===true?{enabled:true,createdAt:ue,updatedAt:pe}:{enabled:true,createdAt:i.createdAt??ue,updatedAt:i.updatedAt??pe}:{enabled:false,createdAt:ue,updatedAt:pe}}function q(i,e={}){let{includePrimaryKeys:t=true}=e,o=new Set;if(t)for(let s of i.primaryKeys)o.add(s);let r=se(i.timestamps);return r.enabled&&(o.add(r.createdAt),o.add(r.updatedAt)),[...o]}function St(i){return i!=null&&i!==""}function Ze(i$1,e,t,o){let r={...i$1},s=e.primaryKeys[0];if(!St(r[s])){let c=e.id;if(typeof c=="function")r[s]=c();else if(c==="database"){if(t==="memory")throw new i("MemoryAdapter does not support id:'database' (no database to generate the key)");delete r[s];}else r[s]=o?o():crypto.randomUUID();}let n=se(e.timestamps);if(n.enabled){let c=Date.now();n.createdAt in i$1||(r[n.createdAt]=c),n.updatedAt in i$1||(r[n.updatedAt]=c);}return r}function De(i,e){let t=se(e.timestamps);return t.enabled?{...i,[t.updatedAt]:Date.now()}:{...i}}function ze(i$1,e){if(e==="memory"&&i$1.id==="database")throw new i("MemoryAdapter does not support id:'database' (no database to generate the key)")}function me(i){if(i===null||typeof i!="object")return i;if(Array.isArray(i))return i.map(me);let e={};for(let t of Object.keys(i).sort())e[t]=me(i[t]);return e}async function te(i){let e=JSON.stringify(me(i)),t=new TextEncoder().encode(e),o=await crypto.subtle.digest("SHA-256",t);return `"${Array.from(new Uint8Array(o)).map(n=>n.toString(16).padStart(2,"0")).join("").substring(0,32)}"`}function he(i,e){return i?i==="*"?true:i.split(",").map(t=>t.trim()).includes(e):false}function ge(i,e){return !i||i==="*"?true:i.split(",").map(t=>t.trim()).includes(e)}function Le(i,e){return i==="in"||i==="nin"||i==="between"?e.split(",").map(t=>t.trim()):i==="null"?e.toLowerCase()==="true":e}function Zt(i){let e=i.match(/^\[([a-z]+)\](.*)$/);if(e){let t=e[1];return {operator:t,value:Le(t,e[2])}}return {operator:"eq",value:i}}function ae(i,e){let t=[],o={},{filterFields:r=[],filterConfig:s={},searchFields:n=[],searchFieldName:c="search",sortFields:l=[],defaultSort:p,defaultPerPage:a=20,maxPerPage:u=100,cursorPaginationEnabled:d=false,softDeleteQueryParam:m="withDeleted",allowedIncludes:f=[],fieldSelectionEnabled:g=false,allowedSelectFields:j=[],blockedSelectFields:x=[],alwaysIncludeFields:k=[],defaultSelectFields:y=[]}=e,F={};for(let v of r)F[v]=["eq"];Object.assign(F,s);for(let[v,Y]of Object.entries(i)){if(Y==null)continue;let V=String(Y);if(d&&v==="cursor"){o.cursor=V;continue}if(d&&v==="limit"){o.limit=Math.min(u,Math.max(1,parseInt(V,10)||a));continue}if(v==="page"){o.page=Math.max(1,parseInt(V,10)||1);continue}if(v==="per_page"){o.per_page=Math.min(u,Math.max(1,parseInt(V,10)||a));continue}if(v==="sort"){(l.length===0||l.includes(V))&&(o.order_by=V);continue}if(v==="order"){(V==="asc"||V==="desc")&&(o.order_by_direction=V);continue}if(v===c&&n.length>0){o.search=V;continue}if(v===m){o.withDeleted=V.toLowerCase()==="true";continue}if(v==="onlyDeleted"){o.onlyDeleted=V.toLowerCase()==="true";continue}if(v==="include"){let X=V.split(",").map(D=>D.trim()).filter(Boolean);f&&f.length>0?o.include=X.filter(D=>f.includes(D)):o.include=X;continue}if(v==="fields"&&g){let D=V.split(",").map(oe=>oe.trim()).filter(Boolean);j.length>0&&(D=D.filter(oe=>j.includes(oe))),x.length>0&&(D=D.filter(oe=>!x.includes(oe))),k.length>0&&(D=[...new Set([...k,...D])]),o.fields=D;continue}let ce=v.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([a-z]+)\]$/);if(ce){let X=ce[1],D=ce[2];F[X]?.includes(D)&&t.push({field:X,operator:D,value:Le(D,V)});continue}F[v]&&t.push({field:v,operator:"eq",value:V});}if(o.page||(o.page=1),o.per_page||(o.per_page=a),!o.order_by&&p?.field&&(o.order_by=p.field),o.order_by_direction||(o.order_by_direction=p?.order??"asc"),g&&!o.fields&&y.length>0){let v=[...y];k.length>0&&(v=[...new Set([...k,...v])]),o.fields=v;}return {filters:t,options:o}}function L(i,e=[]){if(e.length===0)return i;let t=new Set(Object.keys(i.shape)),o=e.filter(s=>t.has(s));if(o.length===0)return i;let r=Object.fromEntries(o.map(s=>[s,true]));return i.omit(r)}function Dt(i,e={},t=[],o=[],r=[]){let{allowedFields:s=[],blockedFields:n=[],alwaysIncludeFields:c=[],defaultFields:l=[],allowComputedFields:p=true,allowRelationFields:a=true}=e;if(!i||typeof i!="string"||i.trim()==="")return l.length>0?{fields:[...new Set([...c,...l])],isActive:false}:{fields:[],isActive:false};let u=i.split(",").map(g=>g.trim()).filter(Boolean),d=new Set;for(let g of t)(s.length===0||s.includes(g))&&(n.includes(g)||d.add(g));if(p)for(let g of o)(s.length===0||s.includes(g))&&(n.includes(g)||d.add(g));if(a)for(let g of r)(s.length===0||s.includes(g))&&(n.includes(g)||d.add(g));let m=u.filter(g=>d.has(g));return {fields:[...new Set([...c,...m])],isActive:true}}function fe(i,e){if(!e.isActive||e.fields.length===0)return i;let t={};for(let o of e.fields)o in i&&(t[o]=i[o]);return t}function le(i,e){return !e.isActive||e.fields.length===0?i:i.map(t=>fe(t,e))}var Ue="__honoCrudResolvedSchema:";function Ot(i){return typeof i.getBodySchema=="function"}var S=class extends b{_auditLogger;_versionManager;_tx;getAuditLogger(){return this._auditLogger||(this._auditLogger=f(this._meta.model.audit)),this._auditLogger}getAuditConfig(){return e(this._meta.model.audit)}isAuditEnabled(){return this.getAuditConfig().enabled}getAuditUserId(){let e=this.getAuditConfig();return e.getUserId&&this.context?e.getUserId(this.context):this.context?.var?.userId}getVersionManager(){return this._versionManager||(this._versionManager=f$1(this._meta.model.versioning,this._meta.model.tableName)),this._versionManager}getVersioningConfig(){return g(this._meta.model.versioning,this._meta.model.tableName)}isVersioningEnabled(){return this.getVersioningConfig().enabled}getVersioningUserId(){let e=this.getVersioningConfig();return e.getUserId&&this.context?e.getUserId(this.context):this.context?.var?.userId}getSoftDeleteConfig(){return n(this._meta.model.softDelete)}isSoftDeleteEnabled(){return this.getSoftDeleteConfig().enabled}getMultiTenantConfig(){return o(this._meta.model.multiTenant)}isMultiTenantEnabled(){return this.getMultiTenantConfig().enabled}applyManagedInsertFields(e,t,o){return Ze(e,this._meta.model,t,o)}applyManagedUpdateFields(e){return De(e,this._meta.model)}assertIdStrategySupported(e){ze(this._meta.model,e);}getTimestampsConfig(){return se(this._meta.model.timestamps)}getTenantId(){if(!this.context)return;let e=this.getMultiTenantConfig();return p(this.context,e)}validateTenantId(){let e=this.getMultiTenantConfig();if(!e.enabled)return;let t=this.getTenantId();if(!t&&e.required)throw new HTTPException(400,{message:e.errorMessage});return t}injectTenantId(e){let t=this.getMultiTenantConfig();if(!t.enabled)return e;let o=this.getTenantId();return o?{...e,[t.field]:o}:e}async emitEvent(e,t){let o=d(this.context??void 0);o&&await o.emit({type:e,table:this._meta.model.tableName,recordId:t.recordId,data:t.data??null,previousData:t.previousData,userId:this.getAuditUserId(),tenantId:this.context?this.getTenantId():void 0,organizationId:this.context?a(this.context,"organizationId"):void 0,timestamp:new Date().toISOString(),metadata:t.metadata});}async encryptOnWrite(e){let t=this._meta.model.fieldEncryption;return t?await d$1(e,t.fields,t.keyProvider):e}async decryptOnRead(e){let t=this._meta.model.fieldEncryption;return t?await e$1(e,t.fields,t.keyProvider):e}applyProfile(e){let t=this._meta.model.serializationProfile;return t?a$1(e,t):e}applyProfileToArray(e){let t=this._meta.model.serializationProfile;return t?b$1(e,t):e}getRecordId(e){if(e===null||typeof e!="object")return null;let t=this._meta.model.primaryKeys[0],o=e[t];return typeof o=="string"||typeof o=="number"?o:null}getParentId(e){return this.getRecordId(e)}getPolicies(){if(this.context){let e=a(this.context,f$2);if(e)return e}return this._meta.model.policies}buildPolicyContext(){let e=this.context;return {user:e?a(e,"user"):void 0,userId:e?a(e,"userId"):void 0,tenantId:e?a(e,"tenantId"):void 0,organizationId:e?a(e,"organizationId"):void 0,request:e?.req?.raw??new Request("http://localhost/")}}async applyReadPolicy(e){let t=this.getPolicies();if(!t)return e;let o=this.buildPolicyContext();if(t.read&&!await t.read(o,e))return null;if(t.fields){let r=t.fields(o,e);return {...e,...r}}return e}async applyReadPolicyToArray(e){if(!this.getPolicies())return e;let o=[];for(let r of e){let s=await this.applyReadPolicy(r);s!==null&&o.push(s);}return o}async applyWritePolicy(e){let t=this.getPolicies();if(!t?.write)return;if(!await t.write(this.buildPolicyContext(),e))throw new HTTPException(403,{message:"Forbidden by policy"})}applyReadPushdown(e){let t=this.getPolicies();if(!t?.readPushdown)return;let o=t.readPushdown(this.buildPolicyContext());o&&o.length>0&&e.filters.push(...o);}buildHookContext(){let e=this.context;return {db:{tx:this._tx},request:e?.req?.raw,tenantId:e?this.getTenantId():void 0,organizationId:e?a(e,"organizationId"):void 0,userId:e?a(e,"userId"):void 0,agentId:e?a(e,"agentId"):void 0,agentRunId:e?a(e,"agentRunId"):void 0}}getModelSchema(){if(this.context&&this._meta.model.resolveSchema){let e=a(this.context,Ue+this._meta.model.tableName);if(e)return e}return this._meta.model.schema}async resolveModelSchema(){let e=this._meta.model.resolveSchema;if(!e||!this.context)return this._meta.model.schema;let t=Ue+this._meta.model.tableName,o=a(this.context,t);if(o)return o;let r={tenantId:a(this.context,"tenantId"),organizationId:a(this.context,"organizationId"),request:this.context.req?.raw,env:this.context.env},s;try{s=await e(r);}catch(n){throw new a$2(n instanceof Error?n.message:"Schema resolution failed",500,"SCHEMA_RESOLVE_ERROR",n instanceof Error?{cause:n.message}:void 0)}return b$2(this.context,t,s),s}async getValidatedData(){await this.resolveModelSchema();let e=await super.getValidatedData();if(this.context&&e.body!==void 0&&Ot(this)){let t=e.body;try{t=await this.context.req.json();}catch{}let r=this.getBodySchema().safeParse(t);if(!r.success)throw b$3.fromZodError(r.error);e.body=r.data;}return e}};var Be=class extends S{beforeHookMode="sequential";afterHookMode="sequential";allowNestedCreate=[];getBodySchema(){let e,t=q(this._meta.model),o=this.getMultiTenantConfig();o.enabled&&t.push(o.field),this._meta.fields?e=this._meta.fields:e=L(this.getModelSchema(),t);let r=this.getNestedWritableRelations();if(r.length===0)return e;let s={...e.shape};for(let n of r){let c=this._meta.model.relations?.[n];if(!c?.schema)continue;let l=["id",c.foreignKey],p=L(c.schema,l);c.type==="hasMany"?s[n]=z.array(p).optional():s[n]=p.optional();}return z.object(s)}getNestedWritableRelations(){if(this.allowNestedCreate.length>0)return this.allowNestedCreate;let e=this._meta.model.relations;return e?Object.entries(e).filter(([t,o])=>o.nestedWrites?.allowCreate===true).map(([t])=>t):[]}extractNestedData(e){let t=this.getNestedWritableRelations();return c(e,t)}getSchema(){let e=this.getBodySchema();return {...this.schema,request:{body:{content:{"application/json":{schema:e}},required:true}},responses:{201:{description:"Resource created successfully",content:{"application/json":{schema:z.object({success:z.literal(true),result:this.getModelSchema()})}}},400:{description:"Validation error",content:{"application/json":{schema:z.object({success:z.literal(false),error:z.object({code:z.string(),message:z.string(),details:z.unknown().optional()})})}}}}}}async getObject(){let{body:e}=await this.getValidatedData();return e}async before(e,t){return e}async after(e,t){return e}transform(e){return e}async createNested(e,t,o,r,s){return b$4().warn(`Nested writes not implemented for ${t}. Override createNested() in your adapter.`),[]}async handle(){this.validateTenantId();let e=await this.getObject(),{mainData:t,nestedData:o}=this.extractNestedData(e),r=t;r=this.injectTenantId(r);let s=this.buildHookContext();r=await this.before(r,s),r=await this.encryptOnWrite(r),r=await this.create(r,s.db.tx),r=await this.decryptOnRead(r);let n=this.getParentId(r),c={};if(Object.keys(o).length>0&&n!==null)for(let[u,d]of Object.entries(o)){if(d==null)continue;let m=this._meta.model.relations?.[u];if(!m)continue;let f=await this.createNested(n,u,m,d);c[u]=f;}if(Object.keys(c).length>0){let u={};for(let[d,m]of Object.entries(c)){let f=this._meta.model.relations?.[d];f&&(f.type==="hasMany"?u[d]=m:u[d]=m[0]||null);}r={...r,...u};}if(this.afterHookMode==="fire-and-forget"?this.runAfterResponse(Promise.resolve(this.after(r,s))):r=await this.after(r,s),this.isAuditEnabled()&&n!==null){let u=this.getAuditLogger();this.runAfterResponse(u.logCreate(this._meta.model.tableName,n,r,this.getAuditUserId()));}n!==null&&this.runAfterResponse(this.emitEvent("created",{recordId:n,data:r})),this._meta.model.computedFields&&(r=await j(r,this._meta.model.computedFields));let l=this._meta.model.serializer?this._meta.model.serializer(r):r,p=this.applyProfile(l),a=this.transform(p);return this.success(a,201)}};var He=class extends S{lookupField="id";lookupFields;additionalFilters;etagEnabled=false;allowedIncludes=[];fieldSelectionEnabled=false;allowedSelectFields=[];blockedSelectFields=[];alwaysIncludeFields=[];defaultSelectFields=[];getParamsSchema(){return z.object({[this.lookupField]:z.string()})}getQuerySchema(){let e={};if(this.additionalFilters?.length)for(let t of this.additionalFilters)e[t]=z.string().optional();if(this.allowedIncludes.length>0&&(e.include=z.string().optional().describe(`Comma-separated list of relations to include. Allowed: ${this.allowedIncludes.join(", ")}`)),this.fieldSelectionEnabled){let t=this.getAvailableSelectFields();e.fields=z.string().optional().describe(`Comma-separated list of fields to return. Available: ${t.join(", ")}`);}if(Object.keys(e).length!==0)return z.object(e)}getAvailableSelectFields(){let e=Object.keys(this.getModelSchema().shape),t=this._meta.model.computedFields?Object.keys(this._meta.model.computedFields):[],o=this._meta.model.relations?Object.keys(this._meta.model.relations):[],r=[...e,...t,...o];return this.allowedSelectFields.length>0&&(r=r.filter(s=>this.allowedSelectFields.includes(s))),this.blockedSelectFields.length>0&&(r=r.filter(s=>!this.blockedSelectFields.includes(s))),r}getSchema(){let e=this.getQuerySchema();return {...this.schema,request:{params:this.getParamsSchema(),...e&&{query:e}},responses:{200:{description:"Resource retrieved successfully",content:{"application/json":{schema:z.object({success:z.literal(true),result:this.getModelSchema()})}}},404:{description:"Resource not found",content:{"application/json":{schema:z.object({success:z.literal(false),error:z.object({code:z.string(),message:z.string()})})}}}}}}async getLookupValue(){let{params:e}=await this.getValidatedData();return e?.[this.lookupField]||""}async getAdditionalFilters(){if(!this.additionalFilters?.length)return {};let{query:e}=await this.getValidatedData(),t={};for(let o of this.additionalFilters)e?.[o]&&(t[o]=String(e[o]));return t}async getIncludeOptions(){let{query:e}=await this.getValidatedData(),t=e?.include;if(!t||typeof t!="string")return {relations:[]};let o=t.split(",").map(r=>r.trim()).filter(Boolean);return this.allowedIncludes.length>0?{relations:o.filter(r=>this.allowedIncludes.includes(r))}:{relations:o}}async getFieldSelection(){if(!this.fieldSelectionEnabled)return {fields:[],isActive:false};let{query:e}=await this.getValidatedData(),t=e?.fields;if(!t||typeof t!="string"||t.trim()==="")return this.defaultSelectFields.length>0?{fields:[...new Set([...this.alwaysIncludeFields,...this.defaultSelectFields])],isActive:true}:{fields:[],isActive:false};let o=t.split(",").map(n=>n.trim()).filter(Boolean),r=new Set(this.getAvailableSelectFields()),s=o.filter(n=>r.has(n));return this.alwaysIncludeFields.length>0&&(s=[...new Set([...this.alwaysIncludeFields,...s])]),{fields:s,isActive:true}}async after(e){return e}transform(e){return e}async handle(){let e=this.validateTenantId(),t=await this.getLookupValue(),o=await this.getAdditionalFilters(),r=await this.getIncludeOptions(),s=await this.getFieldSelection();if(e){let d=this.getMultiTenantConfig();o[d.field]=e;}let n=await this.read(t,o,r);if(!n)throw new c$1(this._meta.model.tableName,t);n=await this.decryptOnRead(n);let c=await this.applyReadPolicy(n);if(c===null)throw new c$1(this._meta.model.tableName,t);n=c,n=await this.after(n),this._meta.model.computedFields&&(n=await j(n,this._meta.model.computedFields));let l=this._meta.model.serializer?this._meta.model.serializer(n):n,p=this.applyProfile(l),a=this.transform(p),u=s.isActive&&s.fields.length>0?fe(a,s):a;if(this.etagEnabled){let d=await te(u),m=this.getContext(),f=m.req.header("If-None-Match");if(he(f,d))return new Response(null,{status:304,headers:{ETag:d}});m.header("ETag",d);}return this.success(u)}};var $e=class extends S{lookupField="id";lookupFields;additionalFilters;allowedUpdateFields;blockedUpdateFields;beforeHookMode="sequential";afterHookMode="sequential";allowNestedWrites=[];etagEnabled=false;getParamsSchema(){return z.object({[this.lookupField]:z.string()})}getBodySchema(){let e;if(this._meta.fields)e=this._meta.fields.partial();else {let r=q(this._meta.model);this.blockedUpdateFields&&(r=[...r,...this.blockedUpdateFields]);let s=L(this.getModelSchema(),r);if(this.allowedUpdateFields){let n=this.allowedUpdateFields.reduce((c,l)=>({...c,[l]:true}),{});s=s.pick(n);}e=s.partial();}let t=this.getNestedWritableRelations();if(t.length===0)return e;let o={...e.shape};for(let r of t){let s=this._meta.model.relations?.[r];if(!s?.schema)continue;let n=s.schema,c=z.object({create:z.union([n.partial(),z.array(n.partial())]).optional(),update:z.array(n.partial().extend({id:z.union([z.string(),z.number()])})).optional(),delete:z.array(z.union([z.string(),z.number()])).optional(),connect:z.array(z.union([z.string(),z.number()])).optional(),disconnect:z.array(z.union([z.string(),z.number()])).optional(),set:n.partial().nullable().optional()}).optional();o[r]=c;}return z.object(o)}getNestedWritableRelations(){if(this.allowNestedWrites.length>0)return this.allowNestedWrites;let e=this._meta.model.relations;return e?Object.entries(e).filter(([t,o])=>{let r=o.nestedWrites;return r&&(r.allowCreate||r.allowUpdate||r.allowDelete||r.allowConnect||r.allowDisconnect)}).map(([t])=>t):[]}extractNestedData(e){let t=this.getNestedWritableRelations();return c(e,t)}getSchema(){return {...this.schema,request:{params:this.getParamsSchema(),body:{content:{"application/json":{schema:this.getBodySchema()}},required:true}},responses:{200:{description:"Resource updated successfully",content:{"application/json":{schema:z.object({success:z.literal(true),result:this.getModelSchema()})}}},400:{description:"Validation error",content:{"application/json":{schema:z.object({success:z.literal(false),error:z.object({code:z.string(),message:z.string(),details:z.unknown().optional()})})}}},404:{description:"Resource not found",content:{"application/json":{schema:z.object({success:z.literal(false),error:z.object({code:z.string(),message:z.string()})})}}}}}}async getLookupValue(){let{params:e}=await this.getValidatedData();return e?.[this.lookupField]||""}async getObject(){let{body:e}=await this.getValidatedData();return e}async getAdditionalFilters(){if(!this.additionalFilters?.length)return {};let{query:e}=await this.getValidatedData(),t={};for(let o of this.additionalFilters)e?.[o]&&(t[o]=String(e[o]));return t}async before(e,t){return e}async after(e,t,o){return t}transform(e){return e}async findExisting(e,t,o){return null}async processNestedWrites(e,t,o,r,s){return b$4().warn(`Nested writes not implemented for ${t}. Override processNestedWrites() in your adapter.`),{created:[],updated:[],deleted:[],connected:[],disconnected:[]}}async handle(){let e=this.validateTenantId(),t=await this.getLookupValue(),o=await this.getAdditionalFilters();if(e){let y=this.getMultiTenantConfig();o[y.field]=e;}let r=await this.getObject(),{mainData:s,nestedData:n}=this.extractNestedData(r),c=this.getPolicies(),l=await this.findExisting(t,o,this._tx);if(l&&c?.write&&await this.applyWritePolicy(l),this.etagEnabled&&l){let y=this.getContext().req.header("If-Match");if(y){let F=await te(l);if(!ge(y,F))return this.error("Resource has been modified by another request","CONFLICT",409)}}let p;if(this.isVersioningEnabled()&&l){let y=this.getVersionManager(),F=this.getParentId(l);F!==null&&(p=await y.saveVersion(F,l,void 0,this.getVersioningUserId()));}let a=s;if(this.isVersioningEnabled()&&p!==void 0){let y=this.getVersioningConfig().field;a[y]=p;}let u=this.buildHookContext();a=await this.before(a,u),a=await this.encryptOnWrite(a);let d=await this.update(t,a,o,u.db.tx);if(!d)throw new c$1(this._meta.model.tableName,t);d=await this.decryptOnRead(d);let m=this.getParentId(d),f={};if(Object.keys(n).length>0&&m!==null)for(let[y,F]of Object.entries(n)){if(F==null)continue;let v=this._meta.model.relations?.[y];if(!v)continue;let Y;d$2(F)?Y={create:F}:Y=F;let V=await this.processNestedWrites(m,y,v,Y);f[y]=V;}if(Object.keys(f).length>0)for(let[y,F]of Object.entries(f)){let v=this._meta.model.relations?.[y];v&&(v.type==="hasMany"?d[y]=[...F.created,...F.updated]:d[y]=F.created[0]||F.updated[0]||null);}let g=l??d;if(this.afterHookMode==="fire-and-forget")this.runAfterResponse(Promise.resolve(this.after(g,d,u)));else {let y=await this.after(g,d,u);y!=null&&(d=y);}if(this.isAuditEnabled()&&m!==null&&l){let y=this.getAuditLogger();this.runAfterResponse(y.logUpdate(this._meta.model.tableName,m,l,d,this.getAuditUserId()));}m!==null&&this.runAfterResponse(this.emitEvent("updated",{recordId:m,data:d,previousData:l??void 0})),this._meta.model.computedFields&&(d=await j(d,this._meta.model.computedFields));let j$1=this._meta.model.serializer?this._meta.model.serializer(d):d,x=this.applyProfile(j$1),k=this.transform(x);if(this.etagEnabled){let y=await te(k);this.getContext().header("ETag",y);}return this.success(k)}};var Ke=class extends S{lookupField="id";lookupFields;additionalFilters;beforeHookMode="sequential";afterHookMode="sequential";includeCascadeResults=false;getParamsSchema(){return z.object({[this.lookupField]:z.string()})}getCascadeRelations(e){let t=this._meta.model.relations;return t?Object.entries(t).filter(([o,r])=>{let s=r.cascade?.[e];return s&&s!=="noAction"}).map(([o,r])=>({name:o,config:r,action:r.cascade[e]})):[]}getSchema(){let e=this.includeCascadeResults?z.object({deleted:z.literal(true),cascade:z.object({deleted:z.record(z.string(),z.number()),nullified:z.record(z.string(),z.number())}).optional()}):z.object({deleted:z.literal(true)});return {...this.schema,request:{params:this.getParamsSchema()},responses:{200:{description:"Resource deleted successfully",content:{"application/json":{schema:z.object({success:z.literal(true),result:e})}}},404:{description:"Resource not found",content:{"application/json":{schema:z.object({success:z.literal(false),error:z.object({code:z.string(),message:z.string()})})}}},409:{description:"Cannot delete - related records exist (restrict)",content:{"application/json":{schema:z.object({success:z.literal(false),error:z.object({code:z.string(),message:z.string(),details:z.object({relation:z.string(),count:z.number()}).optional()})})}}}}}}async getLookupValue(){let{params:e}=await this.getValidatedData();return e?.[this.lookupField]||""}async getAdditionalFilters(){if(!this.additionalFilters?.length)return {};let{query:e}=await this.getValidatedData(),t={};for(let o of this.additionalFilters)e?.[o]&&(t[o]=String(e[o]));return t}async before(e,t){}async after(e,t){}async countRelated(e,t,o,r){return b$4().warn(`countRelated not implemented for ${t}. Override in your adapter for restrict cascade to work.`),0}async deleteRelated(e,t,o,r){return b$4().warn(`deleteRelated not implemented for ${t}. Override in your adapter for cascade delete to work.`),0}async nullifyRelated(e,t,o,r){return b$4().warn(`nullifyRelated not implemented for ${t}. Override in your adapter for setNull cascade to work.`),0}async processCascade(e,t,o){let r=t?"onSoftDelete":"onDelete",s=this.getCascadeRelations(r),n={deleted:{},nullified:{}};for(let{name:c,config:l,action:p}of s)if(p==="cascade"){let a=await this.deleteRelated(e,c,l,o);a>0&&(n.deleted[c]=a);}else if(p==="setNull"){let a=await this.nullifyRelated(e,c,l,o);a>0&&(n.nullified[c]=a);}return n}async checkRestrictConstraints(e,t,o){let r=t?"onSoftDelete":"onDelete",s=this.getCascadeRelations(r);for(let{name:n,config:c,action:l}of s)if(l==="restrict"){let p=await this.countRelated(e,n,c,o);if(p>0)throw new d$3(`Cannot delete: ${p} related ${n} record(s) exist. Remove them first or change the cascade configuration.`,{relation:n,count:p})}}async handle(){let e=this.validateTenantId(),t=await this.getLookupValue(),o=await this.getAdditionalFilters();if(e){let u=this.getMultiTenantConfig();o[u.field]=e;}let r=this.isSoftDeleteEnabled(),s=await this.findForDelete(t,o,this._tx);if(!s)throw new c$1(this._meta.model.tableName,t);let n=this.getParentId(s);n!==null&&await this.checkRestrictConstraints(n,r),await this.applyWritePolicy(s);let c=this.buildHookContext();if(await this.before(t,c),!await this.delete(t,o,c.db.tx))throw new c$1(this._meta.model.tableName,t);let p;if(n!==null&&(p=await this.processCascade(n,r)),this.afterHookMode==="fire-and-forget"?this.runAfterResponse(Promise.resolve(this.after(s,c))):await this.after(s,c),this.isAuditEnabled()&&n!==null){let u=this.getAuditLogger();this.runAfterResponse(u.logDelete(this._meta.model.tableName,n,s,this.getAuditUserId()));}n!==null&&this.runAfterResponse(this.emitEvent("deleted",{recordId:n,previousData:s}));let a={deleted:true};if(this.includeCascadeResults&&p){let u=Object.keys(p.deleted).length>0,d=Object.keys(p.nullified).length>0;(u||d)&&(a.cascade=p);}return this.success(a)}};var de=class extends S{filterFields=[];filterConfig;searchFields=[];searchFieldName="search";sortFields=[];defaultSort;defaultPerPage=20;maxPerPage=100;cursorPaginationEnabled=false;cursorField;allowedIncludes=[];fieldSelectionEnabled=false;allowedSelectFields=[];blockedSelectFields=[];alwaysIncludeFields=[];defaultSelectFields=[];getQuerySchema(){let e={page:z.string().optional(),per_page:z.string().optional()};this.sortFields.length>0&&(e.sort=z.enum(this.sortFields).optional().describe("Field to sort by"),e.order=z.enum(["asc","desc"]).optional().describe("Sort direction (asc or desc)")),this.searchFields.length>0&&(e[this.searchFieldName]=z.string().optional());for(let o of this.filterFields)e[o]=z.string().optional();if(this.filterConfig)for(let[o,r]of Object.entries(this.filterConfig)){for(let s of r)e[`${o}[${s}]`]=z.string().optional();e[o]=z.string().optional();}let t=this.getSoftDeleteConfig();if(t.enabled&&t.allowQueryDeleted&&(e[t.queryParam]=z.enum(["true","false"]).optional(),e.onlyDeleted=z.enum(["true","false"]).optional()),this.allowedIncludes.length>0&&(e.include=z.string().optional().describe(`Comma-separated list of relations to include. Allowed: ${this.allowedIncludes.join(", ")}`)),this.fieldSelectionEnabled){let o=this.getAvailableSelectFields();e.fields=z.string().optional().describe(`Comma-separated list of fields to return. Available: ${o.join(", ")}`);}return this.cursorPaginationEnabled&&(e.cursor=z.string().optional().describe("Opaque cursor for fetching the next page"),e.limit=z.string().optional().describe("Number of items to return (cursor pagination)")),z.object(e)}getAvailableSelectFields(){let e=Object.keys(this.getModelSchema().shape),t=this._meta.model.computedFields?Object.keys(this._meta.model.computedFields):[],o=this._meta.model.relations?Object.keys(this._meta.model.relations):[],r=[...e,...t,...o];return this.allowedSelectFields.length>0&&(r=r.filter(s=>this.allowedSelectFields.includes(s))),this.blockedSelectFields.length>0&&(r=r.filter(s=>!this.blockedSelectFields.includes(s))),r}getSchema(){return {...this.schema,request:{query:this.getQuerySchema()},responses:{200:{description:"List of resources",content:{"application/json":{schema:z.object({success:z.literal(true),result:z.array(this.getModelSchema()),result_info:z.object({page:z.number(),per_page:z.number(),total_count:z.number().optional(),total_pages:z.number().optional(),has_next_page:z.boolean(),has_prev_page:z.boolean(),next_cursor:z.string().optional(),prev_cursor:z.string().optional()})})}}}}}}async getFilters(){let{query:e}=await this.getValidatedData(),t=this.getSoftDeleteConfig(),o={filterFields:this.filterFields,filterConfig:this.filterConfig,searchFields:this.searchFields,searchFieldName:this.searchFieldName,sortFields:this.sortFields,defaultSort:this.defaultSort,defaultPerPage:this.defaultPerPage,maxPerPage:this.maxPerPage,cursorPaginationEnabled:this.cursorPaginationEnabled,cursorField:this.cursorField,softDeleteQueryParam:t.queryParam,allowedIncludes:this.allowedIncludes,fieldSelectionEnabled:this.fieldSelectionEnabled,allowedSelectFields:this.allowedSelectFields,blockedSelectFields:this.blockedSelectFields,alwaysIncludeFields:this.alwaysIncludeFields,defaultSelectFields:this.defaultSelectFields};return ae(e||{},o)}async after(e){return e}transform(e){return e}async handle(){let e=this.validateTenantId(),t=await this.getFilters();if(e){let a=this.getMultiTenantConfig();t.filters.push({field:a.field,operator:"eq",value:e});}this.applyReadPushdown(t);let o=await this.list(t),r=await Promise.all(o.result.map(a=>this.decryptOnRead(a))),s=await this.applyReadPolicyToArray(r),n=await this.after(s);this._meta.model.computedFields&&(n=await k(n,this._meta.model.computedFields)),this._meta.model.serializer&&(n=n.map(a=>this._meta.model.serializer(a)));let l=this.applyProfileToArray(n).map(a=>this.transform(a)),p=this.fieldSelectionEnabled&&t.options.fields&&t.options.fields.length>0?le(l,{fields:t.options.fields,isActive:true}):l;return this.successPaginated(p,o.result_info)}};var We=class extends S{lookupField="id";excludeFromClone=[];getParamsSchema(){return z.object({[this.lookupField]:z.string()})}getBodySchema(){let e=[...q(this._meta.model),...this.excludeFromClone];return L(this.getModelSchema(),e).partial()}getSchema(){return {...this.schema,request:{params:this.getParamsSchema(),body:{content:{"application/json":{schema:this.getBodySchema()}},required:false}},responses:{201:{description:"Resource cloned successfully",content:{"application/json":{schema:z.object({success:z.literal(true),result:this.getModelSchema()})}}},404:{description:"Source resource not found",content:{"application/json":{schema:z.object({success:z.literal(false),error:z.object({code:z.string(),message:z.string()})})}}}}}}async getLookupValue(){let{params:e}=await this.getValidatedData();return e?.[this.lookupField]||""}async getOverrides(){let{body:e}=await this.getValidatedData();return e||{}}async before(e){return e}async after(e){return e}async handle(){let e=this.validateTenantId(),t=await this.getLookupValue(),o=await this.getOverrides(),r={};if(e){let a=this.getMultiTenantConfig();r[a.field]=e;}let s=await this.findSource(t,r);if(!s)throw new c$1(this._meta.model.tableName,t);let n={...s};for(let a of this._meta.model.primaryKeys)delete n[a];for(let a of this.excludeFromClone)delete n[a];Object.assign(n,o);let c=await this.before(n),l=await this.createClone(c);l=await this.after(l),this._meta.model.computedFields&&(l=await j(l,this._meta.model.computedFields));let p=this._meta.model.serializer?this._meta.model.serializer(l):l;return this.success(p,201)}};var Qe=class extends S{lookupField="id";lookupFields;additionalFilters;beforeHookMode="sequential";afterHookMode="sequential";getParamsSchema(){return z.object({[this.lookupField]:z.string()})}getSchema(){return {...this.schema,request:{params:this.getParamsSchema()},responses:{200:{description:"Resource restored successfully",content:{"application/json":{schema:z.object({success:z.literal(true),result:this.getModelSchema()})}}},400:{description:"Soft delete not enabled or record not deleted",content:{"application/json":{schema:z.object({success:z.literal(false),error:z.object({code:z.string(),message:z.string()})})}}},404:{description:"Resource not found",content:{"application/json":{schema:z.object({success:z.literal(false),error:z.object({code:z.string(),message:z.string()})})}}}}}}async getLookupValue(){let{params:e}=await this.getValidatedData();return e?.[this.lookupField]||""}async getAdditionalFilters(){if(!this.additionalFilters?.length)return {};let{query:e}=await this.getValidatedData(),t={};for(let o of this.additionalFilters)e?.[o]&&(t[o]=String(e[o]));return t}async before(e,t){}async after(e,t){return e}async handle(){if(!this.isSoftDeleteEnabled())throw new a$2("Soft delete is not enabled for this model",400,"SOFT_DELETE_NOT_ENABLED");let e=await this.getLookupValue(),t=await this.getAdditionalFilters();await this.before(e);let o=await this.restore(e,t);if(!o)throw new c$1(this._meta.model.tableName,e);this.afterHookMode==="fire-and-forget"?this.runAfterResponse(Promise.resolve(this.after(o))):o=await this.after(o);let r=this.getRecordId(o);if(this.isAuditEnabled()&&r!==null){let n=this.getAuditLogger();this.runAfterResponse(n.logRestore(this._meta.model.tableName,r,o,this.getAuditUserId()));}r!==null&&this.runAfterResponse(this.emitEvent("restored",{recordId:r,data:o}));let s=this._meta.model.serializer?this._meta.model.serializer(o):o;return this.success(s)}};var Ge=class extends S{upsertKeys;useNativeUpsert=false;createOnlyFields;updateOnlyFields;beforeHookMode="sequential";afterHookMode="sequential";allowNestedWrites=[];getUpsertKeys(){return this.upsertKeys||this._meta.model.primaryKeys}getBodySchema(){let e;if(this._meta.fields)e=this._meta.fields;else {let r=this.getUpsertKeys(),s=q(this._meta.model,{includePrimaryKeys:false});for(let l of this._meta.model.primaryKeys)r.includes(l)||s.push(l);let n=L(this.getModelSchema(),s),c={};for(let[l,p]of Object.entries(n.shape))r.includes(l)?c[l]=p:c[l]=p.optional();e=z.object(c);}let t=this.getNestedWritableRelations();if(t.length===0)return e;let o={...e.shape};for(let r of t){let s=this._meta.model.relations?.[r];if(!s?.schema)continue;let n=s.schema,c=z.union([s.type==="hasMany"?z.array(n.partial()):n.partial(),z.object({create:z.union([n.partial(),z.array(n.partial())]).optional(),update:z.array(n.partial().extend({id:z.union([z.string(),z.number()])})).optional(),upsert:z.union([n.partial(),z.array(n.partial())]).optional(),delete:z.array(z.union([z.string(),z.number()])).optional(),connect:z.array(z.union([z.string(),z.number()])).optional(),disconnect:z.array(z.union([z.string(),z.number()])).optional(),set:n.partial().nullable().optional()})]).optional();o[r]=c;}return z.object(o)}getNestedWritableRelations(){if(this.allowNestedWrites.length>0)return this.allowNestedWrites;let e=this._meta.model.relations;return e?Object.entries(e).filter(([t,o])=>{let r=o.nestedWrites;return r&&(r.allowCreate||r.allowUpdate||r.allowDelete||r.allowConnect||r.allowDisconnect)}).map(([t])=>t):[]}extractNestedData(e){let t=this.getNestedWritableRelations();return c(e,t)}getSchema(){return {...this.schema,request:{body:{content:{"application/json":{schema:this.getBodySchema()}},required:true}},responses:{200:{description:"Resource updated (upsert)",content:{"application/json":{schema:z.object({success:z.literal(true),result:this.getModelSchema(),created:z.literal(false)})}}},201:{description:"Resource created (upsert)",content:{"application/json":{schema:z.object({success:z.literal(true),result:this.getModelSchema(),created:z.literal(true)})}}},400:{description:"Validation error",content:{"application/json":{schema:z.object({success:z.literal(false),error:z.object({code:z.string(),message:z.string(),details:z.unknown().optional()})})}}}}}}async getObject(){let{body:e}=await this.getValidatedData();return e}async before(e,t,o){return e}async beforeCreate(e,t){return e}async beforeUpdate(e,t,o){return e}async after(e,t,o){return e}async nativeUpsert(e,t){return b$4().warn("Native upsert not implemented for this adapter. Falling back to find-then-insert/update pattern."),this.performStandardUpsert(e,t)}async performStandardUpsert(e,t){let o=await this.findExisting(e,t);if(o){let r={...e};if(this.createOnlyFields)for(let n of this.createOnlyFields)delete r[n];return r=await this.beforeUpdate(r,o,t),{data:await this.update(o,r,t),created:false}}else {let r={...e};if(this.updateOnlyFields)for(let n of this.updateOnlyFields)delete r[n];return r=await this.beforeCreate(r,t),{data:await this.create(r,t),created:true}}}async upsert(e,t){return this.useNativeUpsert?this.nativeUpsert(e,t):this.performStandardUpsert(e,t)}async processNestedWrites(e,t,o,r,s){return b$4().warn(`Nested writes not implemented for ${t}. Override processNestedWrites() in your adapter.`),{created:[],updated:[],deleted:[],connected:[],disconnected:[]}}async handle(){this.validateTenantId();let e=await this.getObject(),{mainData:t,nestedData:o}=this.extractNestedData(e),r=t;r=this.injectTenantId(r);let s=await this.findExisting(r),n=!s;r=await this.before(r,n);let c=await this.upsert(r),l=c.data,p=this.getParentId(l),a={};if(Object.keys(o).length>0&&p!==null)for(let[d,m]of Object.entries(o)){if(m==null)continue;let f=this._meta.model.relations?.[d];if(!f)continue;let g;d$2(m)?g={create:m}:g=m;let j=await this.processNestedWrites(p,d,f,g);a[d]=j;}if(Object.keys(a).length>0)for(let[d,m]of Object.entries(a)){let f=this._meta.model.relations?.[d];f&&(f.type==="hasMany"?l[d]=[...m.created,...m.updated]:l[d]=m.created[0]||m.updated[0]||null);}if(this.afterHookMode==="fire-and-forget"?this.runAfterResponse(Promise.resolve(this.after(l,c.created))):l=await this.after(l,c.created),this.isAuditEnabled()&&p!==null){let d=this.getAuditLogger();this.runAfterResponse(d.logUpsert(this._meta.model.tableName,p,l,s,c.created,this.getAuditUserId()));}this._meta.model.computedFields&&(l=await j(l,this._meta.model.computedFields));let u=this._meta.model.serializer?this._meta.model.serializer(l):l;return this.json({success:true,result:u,created:c.created},c.created?201:200)}};var Je=class extends S{maxBatchSize=100;stopOnError=true;beforeHookMode="sequential";afterHookMode="sequential";getBodySchema(){let e=this._meta.fields?this._meta.fields:L(this.getModelSchema(),q(this._meta.model));return z.object({items:z.array(e).min(1).max(this.maxBatchSize)})}getSchema(){return {...this.schema,request:{body:{content:{"application/json":{schema:this.getBodySchema()}}}},responses:{201:{description:"Resources created successfully",content:{"application/json":{schema:z.object({success:z.literal(true),result:z.object({created:z.array(this.getModelSchema()),count:z.number()})})}}},207:{description:"Partial success (some items failed)",content:{"application/json":{schema:z.object({success:z.literal(true),result:z.object({created:z.array(this.getModelSchema()),count:z.number(),errors:z.array(z.object({index:z.number(),error:z.string()})).optional()})})}}},400:{description:"Validation error",content:{"application/json":{schema:z.object({success:z.literal(false),error:z.object({code:z.string(),message:z.string()})})}}}}}}async getItems(){let{body:e}=await this.getValidatedData();return e?.items||[]}async before(e,t,o){return e}async after(e,t,o){return e}transform(e){return e}async handle(){let e=await this.getItems(),t=[],o=[];for(let a=0;a<e.length;a++)try{let u=await this.before(e[a],a);o.push(u);}catch(u){if(this.stopOnError)throw u;t.push({index:a,error:u instanceof Error?u.message:String(u)});}let r=await this.batchCreate(o),s=[];for(let a=0;a<r.length;a++)try{this.afterHookMode==="fire-and-forget"?(this.runAfterResponse(Promise.resolve(this.after(r[a],a))),s.push(r[a])):s.push(await this.after(r[a],a));}catch(u){if(this.stopOnError)throw u;t.push({index:a,error:u instanceof Error?u.message:String(u)}),s.push(r[a]);}if(this.isAuditEnabled()){let a=this.getAuditLogger(),u=s.map(d=>{let m=this.getRecordId(d);return m===null?null:{recordId:m,record:d}}).filter(d=>d!==null);u.length>0&&this.runAfterResponse(a.logBatch("batch_create",this._meta.model.tableName,u,this.getAuditUserId()));}let c=(this._meta.model.serializer?s.map(a=>this._meta.model.serializer(a)):s).map(a=>this.transform(a)),l={success:true,result:{created:c,count:c.length,...t.length>0&&{errors:t}}},p=t.length>0?207:201;return this.json(l,p)}};var Ye=class extends S{maxBatchSize=100;stopOnError=false;lookupField="id";allowedUpdateFields;blockedUpdateFields;beforeHookMode="sequential";afterHookMode="sequential";getBodySchema(){let e=this._meta.fields?this._meta.fields:L(this.getModelSchema(),q(this._meta.model));return z.object({items:z.array(z.object({id:z.string(),data:e.partial()})).min(1).max(this.maxBatchSize)})}getSchema(){return {...this.schema,request:{body:{content:{"application/json":{schema:this.getBodySchema()}}}},responses:{200:{description:"Resources updated successfully",content:{"application/json":{schema:z.object({success:z.literal(true),result:z.object({updated:z.array(this.getModelSchema()),count:z.number(),notFound:z.array(z.string()).optional()})})}}},207:{description:"Partial success (some items failed or not found)",content:{"application/json":{schema:z.object({success:z.literal(true),result:z.object({updated:z.array(this.getModelSchema()),count:z.number(),notFound:z.array(z.string()).optional(),errors:z.array(z.object({id:z.string(),error:z.string()})).optional()})})}}},400:{description:"Validation error",content:{"application/json":{schema:z.object({success:z.literal(false),error:z.object({code:z.string(),message:z.string()})})}}}}}}async getItems(){let{body:e}=await this.getValidatedData();return e?.items||[]}filterUpdateData(e){let t={...e};if(this.allowedUpdateFields){let o=new Set(this.allowedUpdateFields);t=Object.fromEntries(Object.entries(t).filter(([r])=>o.has(r)));}if(this.blockedUpdateFields)for(let o of this.blockedUpdateFields)delete t[o];for(let o of this._meta.model.primaryKeys)delete t[o];return t}async before(e,t,o){return t}async after(e,t){return e}async handle(){let e=await this.getItems(),t=[],o=[];for(let a of e)try{let u=this.filterUpdateData(a.data),d=await this.before(a.id,u);o.push({id:a.id,data:d});}catch(u){if(this.stopOnError)throw u;t.push({id:a.id,error:u instanceof Error?u.message:String(u)});}let{updated:r,notFound:s}=await this.batchUpdate(o),n=[];for(let a of r)try{this.afterHookMode==="fire-and-forget"?(this.runAfterResponse(Promise.resolve(this.after(a))),n.push(a)):n.push(await this.after(a));}catch(u){let d=String(a[this.lookupField]);if(this.stopOnError)throw u;t.push({id:d,error:u instanceof Error?u.message:String(u)}),n.push(a);}if(this.isAuditEnabled()){let a=this.getAuditLogger(),u=n.map(d=>{let m=this.getRecordId(d);return m===null?null:{recordId:m,record:d}}).filter(d=>d!==null);u.length>0&&this.runAfterResponse(a.logBatch("batch_update",this._meta.model.tableName,u,this.getAuditUserId()));}let c=this._meta.model.serializer?n.map(a=>this._meta.model.serializer(a)):n,l={success:true,result:{updated:c,count:c.length,...s.length>0&&{notFound:s},...t.length>0&&{errors:t}}},p=t.length>0||s.length>0?207:200;return this.json(l,p)}};var Xe=class extends S{maxBatchSize=100;stopOnError=false;lookupField="id";beforeHookMode="sequential";afterHookMode="sequential";getBodySchema(){return z.object({ids:z.array(z.string()).min(1).max(this.maxBatchSize)})}getSchema(){let e=this.isSoftDeleteEnabled();return {...this.schema,request:{body:{content:{"application/json":{schema:this.getBodySchema()}}}},responses:{200:{description:e?"Resources soft-deleted successfully":"Resources deleted successfully",content:{"application/json":{schema:z.object({success:z.literal(true),result:z.object({deleted:z.array(this.getModelSchema()),count:z.number(),notFound:z.array(z.string()).optional()})})}}},207:{description:"Partial success (some items failed or not found)",content:{"application/json":{schema:z.object({success:z.literal(true),result:z.object({deleted:z.array(this.getModelSchema()),count:z.number(),notFound:z.array(z.string()).optional(),errors:z.array(z.object({id:z.string(),error:z.string()})).optional()})})}}},400:{description:"Validation error",content:{"application/json":{schema:z.object({success:z.literal(false),error:z.object({code:z.string(),message:z.string()})})}}}}}}async getIds(){let{body:e}=await this.getValidatedData();return e?.ids||[]}async before(e,t){}async after(e,t){return e}async handle(){let e=await this.getIds(),t=[],o=[];for(let a of e)try{await this.before(a),o.push(a);}catch(u){if(this.stopOnError)throw u;t.push({id:a,error:u instanceof Error?u.message:String(u)});}let{deleted:r,notFound:s}=await this.batchDelete(o),n=[];for(let a of r)try{this.afterHookMode==="fire-and-forget"?(this.runAfterResponse(Promise.resolve(this.after(a))),n.push(a)):n.push(await this.after(a));}catch(u){let d=String(a[this.lookupField]);if(this.stopOnError)throw u;t.push({id:d,error:u instanceof Error?u.message:String(u)}),n.push(a);}if(this.isAuditEnabled()){let a=this.getAuditLogger(),u=n.map(d=>{let m=this.getRecordId(d);return m===null?null:{recordId:m,previousRecord:d}}).filter(d=>d!==null);u.length>0&&this.runAfterResponse(a.logBatch("batch_delete",this._meta.model.tableName,u,this.getAuditUserId()));}let c=this._meta.model.serializer?n.map(a=>this._meta.model.serializer(a)):n,l={success:true,result:{deleted:c,count:c.length,...s.length>0&&{notFound:s},...t.length>0&&{errors:t}}},p=t.length>0||s.length>0?207:200;return this.json(l,p)}};var et=class extends S{maxBatchSize=100;stopOnError=false;lookupField="id";beforeHookMode="sequential";afterHookMode="sequential";getBodySchema(){return z.object({ids:z.array(z.string()).min(1).max(this.maxBatchSize)})}getSchema(){return {...this.schema,request:{body:{content:{"application/json":{schema:this.getBodySchema()}}}},responses:{200:{description:"Resources restored successfully",content:{"application/json":{schema:z.object({success:z.literal(true),result:z.object({restored:z.array(this.getModelSchema()),count:z.number(),notFound:z.array(z.string()).optional()})})}}},207:{description:"Partial success (some items failed or not found)",content:{"application/json":{schema:z.object({success:z.literal(true),result:z.object({restored:z.array(this.getModelSchema()),count:z.number(),notFound:z.array(z.string()).optional(),errors:z.array(z.object({id:z.string(),error:z.string()})).optional()})})}}},400:{description:"Soft delete not enabled or validation error",content:{"application/json":{schema:z.object({success:z.literal(false),error:z.object({code:z.string(),message:z.string()})})}}}}}}async getIds(){let{body:e}=await this.getValidatedData();return e?.ids||[]}async before(e,t){}async after(e,t){return e}async handle(){if(!this.isSoftDeleteEnabled())throw new a$2("Soft delete is not enabled for this model",400,"SOFT_DELETE_NOT_ENABLED");let e=await this.getIds(),t=[],o=[];for(let a of e)try{await this.before(a),o.push(a);}catch(u){if(this.stopOnError)throw u;t.push({id:a,error:u instanceof Error?u.message:String(u)});}let{restored:r,notFound:s}=await this.batchRestore(o),n=[];for(let a of r)try{this.afterHookMode==="fire-and-forget"?(this.runAfterResponse(Promise.resolve(this.after(a))),n.push(a)):n.push(await this.after(a));}catch(u){let d=String(a[this.lookupField]);if(this.stopOnError)throw u;t.push({id:d,error:u instanceof Error?u.message:String(u)}),n.push(a);}if(this.isAuditEnabled()){let a=this.getAuditLogger(),u=n.map(d=>{let m=this.getRecordId(d);return m===null?null:{recordId:m,record:d}}).filter(d=>d!==null);u.length>0&&this.runAfterResponse(a.logBatch("batch_restore",this._meta.model.tableName,u,this.getAuditUserId()));}let c=this._meta.model.serializer?n.map(a=>this._meta.model.serializer(a)):n,l={success:true,result:{restored:c,count:c.length,...s.length>0&&{notFound:s},...t.length>0&&{errors:t}}},p=t.length>0||s.length>0?207:200;return this.json(l,p)}};var tt=class extends S{upsertKeys;createOnlyFields;updateOnlyFields;maxBatchSize=100;continueOnError=false;useNativeUpsert=false;beforeHookMode="sequential";afterHookMode="sequential";getUpsertKeys(){return this.upsertKeys||this._meta.model.primaryKeys}getItemSchema(){if(this._meta.fields)return this._meta.fields;let e=this.getUpsertKeys(),t=q(this._meta.model,{includePrimaryKeys:false});for(let s of this._meta.model.primaryKeys)e.includes(s)||t.push(s);let o=L(this.getModelSchema(),t),r={};for(let[s,n]of Object.entries(o.shape))e.includes(s)?r[s]=n:r[s]=n.optional();return z.object(r)}getBodySchema(){return z.array(this.getItemSchema()).max(this.maxBatchSize)}getSchema(){let e=z.object({data:this.getModelSchema(),created:z.boolean(),index:z.number()});return {...this.schema,request:{body:{content:{"application/json":{schema:this.getBodySchema()}},required:true}},responses:{200:{description:"Batch upsert completed",content:{"application/json":{schema:z.object({success:z.literal(true),result:z.object({items:z.array(e),createdCount:z.number(),updatedCount:z.number(),totalCount:z.number(),errors:z.array(z.object({index:z.number(),error:z.string()})).optional()})})}}},400:{description:"Validation error",content:{"application/json":{schema:z.object({success:z.literal(false),error:z.object({code:z.string(),message:z.string(),details:z.unknown().optional()})})}}}}}}async getItems(){let{body:e}=await this.getValidatedData();return e}async beforeItem(e,t,o,r){return e}async afterItem(e,t,o,r){return e}async beforeBatch(e,t){return e}async afterBatch(e,t){return e}async upsertOne(e,t,o){let r=await this.findExisting(e,o),s=!r,n=await this.beforeItem(e,t,s,o),c;if(r){if(this.createOnlyFields)for(let l of this.createOnlyFields)delete n[l];c=await this.update(r,n,o);}else {if(this.updateOnlyFields)for(let l of this.updateOnlyFields)delete n[l];c=await this.create(n,o);}return c=await this.afterItem(c,t,s,o),{data:c,created:s,index:t}}async nativeBatchUpsert(e,t){return b$4().warn("Native batch upsert not implemented for this adapter. Falling back to item-by-item pattern."),this.performStandardBatchUpsert(e,t)}async performStandardBatchUpsert(e,t){let o=[],r=[],s=0,n=0;for(let l=0;l<e.length;l++)try{let p=await this.upsertOne(e[l],l,t);o.push(p),p.created?s++:n++;}catch(p){if(this.continueOnError)r.push({index:l,error:p instanceof Error?p.message:String(p)});else throw p}let c={items:o,createdCount:s,updatedCount:n,totalCount:o.length};return r.length>0&&(c.errors=r),c}async batchUpsert(e,t){return this.useNativeUpsert?this.nativeBatchUpsert(e,t):this.performStandardBatchUpsert(e,t)}async handle(){let e=await this.getItems();e=await this.beforeBatch(e);let t=await this.batchUpsert(e);if(t=await this.afterBatch(t),this._meta.model.computedFields&&(t.items=await Promise.all(t.items.map(async o=>({...o,data:await j(o.data,this._meta.model.computedFields)})))),this.isAuditEnabled()){let o=this.getAuditLogger(),r=t.items.map(s=>{let n=this.getRecordId(s.data);return n===null?null:{recordId:n,record:s.data}}).filter(s=>s!==null);r.length>0&&this.runAfterResponse(o.logBatch("batch_upsert",this._meta.model.tableName,r,this.getAuditUserId()));}return this._meta.model.serializer&&(t.items=t.items.map(o=>({...o,data:this._meta.model.serializer(o.data)}))),this.success(t)}};var it=z.object({id:z.string(),recordId:z.union([z.string(),z.number()]),version:z.number(),data:z.record(z.string(),z.unknown()),createdAt:z.date(),changedBy:z.string().optional(),changeReason:z.string().optional(),changes:z.array(z.object({field:z.string(),oldValue:z.unknown().optional(),newValue:z.unknown().optional()})).optional()}),ot=class extends S{lookupField="id";defaultLimit=20;maxLimit=100;getParamsSchema(){return z.object({[this.lookupField]:z.string()})}getQuerySchema(){return z.object({limit:z.coerce.number().min(1).max(this.maxLimit).optional(),offset:z.coerce.number().min(0).optional()})}getSchema(){return {...this.schema,request:{params:this.getParamsSchema(),query:this.getQuerySchema()},responses:{200:{description:"Version history retrieved successfully",content:{"application/json":{schema:z.object({success:z.literal(true),result:z.object({versions:z.array(it),totalVersions:z.number()})})}}},400:{description:"Versioning not enabled",content:{"application/json":{schema:z.object({success:z.literal(false),error:z.object({code:z.string(),message:z.string()})})}}},404:{description:"Record not found",content:{"application/json":{schema:z.object({success:z.literal(false),error:z.object({code:z.string(),message:z.string()})})}}}}}}async getLookupValue(){let{params:e}=await this.getValidatedData();return e?.[this.lookupField]||""}async getPaginationOptions(){let{query:e}=await this.getValidatedData();return {limit:e?.limit?Number(e.limit):this.defaultLimit,offset:e?.offset?Number(e.offset):0}}async recordExists(e){return true}async handle(){if(!this.isVersioningEnabled())throw new a$2("Versioning is not enabled for this model",400,"VERSIONING_NOT_ENABLED");let e=await this.getLookupValue(),{limit:t,offset:o}=await this.getPaginationOptions();if(!await this.recordExists(e))throw new c$1(this._meta.model.tableName,e);let s=this.getVersionManager(),n=await s.getVersions(e,{limit:t,offset:o}),c=await s.getLatestVersion(e);return this.success({versions:n,totalVersions:c})}},rt=class extends S{lookupField="id";getParamsSchema(){return z.object({[this.lookupField]:z.string(),version:z.coerce.number().min(1)})}getSchema(){return {...this.schema,request:{params:this.getParamsSchema()},responses:{200:{description:"Version retrieved successfully",content:{"application/json":{schema:z.object({success:z.literal(true),result:it})}}},400:{description:"Versioning not enabled",content:{"application/json":{schema:z.object({success:z.literal(false),error:z.object({code:z.string(),message:z.string()})})}}},404:{description:"Version not found",content:{"application/json":{schema:z.object({success:z.literal(false),error:z.object({code:z.string(),message:z.string()})})}}}}}}async getLookupValue(){let{params:e}=await this.getValidatedData();return e?.[this.lookupField]||""}async getVersionNumber(){let{params:e}=await this.getValidatedData();return e?.version?Number(e.version):0}async handle(){if(!this.isVersioningEnabled())throw new a$2("Versioning is not enabled for this model",400,"VERSIONING_NOT_ENABLED");let e=await this.getLookupValue(),t=await this.getVersionNumber(),r=await this.getVersionManager().getVersion(e,t);if(!r)throw new c$1(`version ${t}`,e);return this.success(r)}},st=class extends S{lookupField="id";getParamsSchema(){return z.object({[this.lookupField]:z.string()})}getQuerySchema(){return z.object({from:z.coerce.number().min(1),to:z.coerce.number().min(1)})}getSchema(){return {...this.schema,request:{params:this.getParamsSchema(),query:this.getQuerySchema()},responses:{200:{description:"Version comparison completed",content:{"application/json":{schema:z.object({success:z.literal(true),result:z.object({from:z.number(),to:z.number(),changes:z.array(z.object({field:z.string(),oldValue:z.unknown().optional(),newValue:z.unknown().optional()}))})})}}},400:{description:"Versioning not enabled or invalid parameters",content:{"application/json":{schema:z.object({success:z.literal(false),error:z.object({code:z.string(),message:z.string()})})}}},404:{description:"Version not found",content:{"application/json":{schema:z.object({success:z.literal(false),error:z.object({code:z.string(),message:z.string()})})}}}}}}async getLookupValue(){let{params:e}=await this.getValidatedData();return e?.[this.lookupField]||""}async getVersionNumbers(){let{query:e}=await this.getValidatedData();return {from:e?.from?Number(e.from):0,to:e?.to?Number(e.to):0}}async handle(){if(!this.isVersioningEnabled())throw new a$2("Versioning is not enabled for this model",400,"VERSIONING_NOT_ENABLED");let e=await this.getLookupValue(),{from:t,to:o}=await this.getVersionNumbers(),s=await this.getVersionManager().compareVersions(e,t,o);return this.success({from:t,to:o,changes:s})}},nt=class extends S{lookupField="id";getParamsSchema(){return z.object({[this.lookupField]:z.string(),version:z.coerce.number().min(1)})}getSchema(){return {...this.schema,request:{params:this.getParamsSchema()},responses:{200:{description:"Record rolled back successfully",content:{"application/json":{schema:z.object({success:z.literal(true),result:this.getModelSchema()})}}},400:{description:"Versioning not enabled",content:{"application/json":{schema:z.object({success:z.literal(false),error:z.object({code:z.string(),message:z.string()})})}}},404:{description:"Version not found",content:{"application/json":{schema:z.object({success:z.literal(false),error:z.object({code:z.string(),message:z.string()})})}}}}}}async getLookupValue(){let{params:e}=await this.getValidatedData();return e?.[this.lookupField]||""}async getVersionNumber(){let{params:e}=await this.getValidatedData();return e?.version?Number(e.version):0}async handle(){if(!this.isVersioningEnabled())throw new a$2("Versioning is not enabled for this model",400,"VERSIONING_NOT_ENABLED");let e=await this.getLookupValue(),t=await this.getVersionNumber(),o=this.getVersionManager(),r=await o.getVersion(e,t);if(!r)throw new c$1(`version ${t}`,e);let n=await o.getLatestVersion(e)+1,c=await this.rollback(e,r.data,n),l=this._meta.model.serializer?this._meta.model.serializer(c):c;return this.success(l)}};var Rt={sumFields:[],avgFields:[],minMaxFields:[],countDistinctFields:[],groupByFields:[],defaultLimit:100,maxLimit:1e3},at=class extends S{aggregateConfig={};maxGroupByFields=5;filterFields=[];getAggregateConfig(){return {...Rt,...this.aggregateConfig}}getQuerySchema(){return z.object({count:z.union([z.string(),z.array(z.string())]).optional(),sum:z.union([z.string(),z.array(z.string())]).optional(),avg:z.union([z.string(),z.array(z.string())]).optional(),min:z.union([z.string(),z.array(z.string())]).optional(),max:z.union([z.string(),z.array(z.string())]).optional(),countDistinct:z.union([z.string(),z.array(z.string())]).optional(),groupBy:z.string().optional(),orderBy:z.string().optional(),orderDirection:z.enum(["asc","desc"]).optional(),limit:z.coerce.number().optional(),offset:z.coerce.number().optional(),withDeleted:z.coerce.boolean().optional()}).passthrough()}getSchema(){let e=z.object({key:z.record(z.string(),z.unknown()),values:z.record(z.string(),z.number().nullable())});return {...this.schema,request:{query:this.getQuerySchema()},responses:{200:{description:"Aggregation result",content:{"application/json":{schema:z.object({success:z.literal(true),result:z.object({values:z.record(z.string(),z.number().nullable()).optional(),groups:z.array(e).optional(),totalGroups:z.number().optional()})})}}},400:{description:"Invalid aggregation request",content:{"application/json":{schema:z.object({success:z.literal(false),error:z.object({code:z.string(),message:z.string(),details:z.unknown().optional()})})}}}}}}async getAggregateOptions(){let{query:e}=await this.getValidatedData();return i$1(e||{})}validateAggregations(e){let t=this.getAggregateConfig();for(let o of e.aggregations)if(!(o.operation==="count"&&o.field==="*"))switch(o.operation){case "sum":if(t.sumFields.length>0&&!t.sumFields.includes(o.field))throw new Error(`Field '${o.field}' is not allowed for SUM aggregation`);break;case "avg":if(t.avgFields.length>0&&!t.avgFields.includes(o.field))throw new Error(`Field '${o.field}' is not allowed for AVG aggregation`);break;case "min":case "max":if(t.minMaxFields.length>0&&!t.minMaxFields.includes(o.field))throw new Error(`Field '${o.field}' is not allowed for MIN/MAX aggregation`);break;case "countDistinct":if(t.countDistinctFields.length>0&&!t.countDistinctFields.includes(o.field))throw new Error(`Field '${o.field}' is not allowed for COUNT DISTINCT aggregation`);break}if(e.groupBy){if(e.groupBy.length>this.maxGroupByFields)throw new b$3(`Maximum ${this.maxGroupByFields} GROUP BY fields allowed`);for(let o of e.groupBy)if(t.groupByFields.length>0&&!t.groupByFields.includes(o))throw new Error(`Field '${o}' is not allowed for GROUP BY`)}if(e.limit!==void 0&&e.limit>t.maxLimit)throw new Error(`Limit cannot exceed ${t.maxLimit}`)}getAggregateAlias(e){return e.alias?e.alias:e.field==="*"?e.operation:`${e.operation}${e.field.charAt(0).toUpperCase()}${e.field.slice(1)}`}async handle(){let e=await this.getAggregateOptions();e.aggregations.length===0&&e.aggregations.push({operation:"count",field:"*"}),this.validateAggregations(e);let t=this.getAggregateConfig();e.groupBy&&e.groupBy.length>0&&e.limit===void 0&&(e.limit=t.defaultLimit);let o=await this.aggregate(e);return this.success(o)}},kt={eq:(i,e)=>i===e,ne:(i,e)=>i!==e,gt:(i,e)=>i>e,gte:(i,e)=>i>=e,lt:(i,e)=>i<e,lte:(i,e)=>i<=e};function xt(i,e){let t=i.get(e);if(t)return t;let o=[];return i.set(e,o),o}function Cr(i,e){let{aggregations:t,groupBy:o,having:r,orderBy:s,orderDirection:n,limit:c,offset:l}=e;if(!o||o.length===0){let d={};for(let m of t){let f=dt(m);d[f]=lt(i,m);}return {values:d}}let p=new Map;for(let d of i){let f=o.map(g=>String(d[g]??"null")).join("|");xt(p,f).push(d);}let a=[];for(let[d,m]of p){let f=d.split("|"),g={};o.forEach((x,k)=>{g[x]=f[k]==="null"?null:f[k];});let j={};for(let x of t){let k=dt(x);j[k]=lt(m,x);}a.push({key:g,values:j});}r&&(a=a.filter(d=>{for(let[m,f]of Object.entries(r)){let g=d.values[m];if(g!==null)for(let[j,x]of Object.entries(f)){let k=kt[j];if(k&&!k(g,Number(x)))return false}}return true}));let u=a.length;if(s){let d=n==="desc"?-1:1;a.sort((m,f)=>{if(s in m.values){let g=m.values[s]??0,j=f.values[s]??0;return (g-j)*d}if(s in m.key){let g=String(m.key[s]??""),j=String(f.key[s]??"");return g.localeCompare(j)*d}return 0});}if(l!==void 0||c!==void 0){let d=l||0,m=c?d+c:void 0;a=a.slice(d,m);}return {groups:a,totalGroups:u}}function be(i,e){return i.map(t=>t[e]).filter(t=>typeof t=="number")}var Ft={count:(i,e)=>e==="*"?i.length:i.filter(t=>t[e]!==null&&t[e]!==void 0).length,countDistinct:(i,e)=>new Set(i.map(o=>o[e]).filter(o=>o!=null).map(o=>String(o))).size,sum:(i,e)=>{let t=0;for(let o of i){let r=o[e];typeof r=="number"&&(t+=r);}return t},avg:(i,e)=>{let t=be(i,e);return t.length===0?null:t.reduce((r,s)=>r+s,0)/t.length},min:(i,e)=>{let t=be(i,e);return t.length===0?null:Math.min(...t)},max:(i,e)=>{let t=be(i,e);return t.length===0?null:Math.max(...t)}};function lt(i,e){if(i.length===0)return e.operation==="count"?0:null;let t=Ft[e.operation];return t?t(i,e.field):null}function dt(i){return i.alias?i.alias:i.field==="*"?i.operation:`${i.operation}${i.field.charAt(0).toUpperCase()}${i.field.slice(1)}`}var Pt=new Set(["a","an","and","are","as","at","be","by","for","from","has","he","in","is","it","its","of","on","or","that","the","to","was","were","will","with"]);function ut(i,e=true){if(!i||typeof i!="string")return [];let t=i.toLowerCase().replace(/[^\w\s]/g," ").split(/\s+/).filter(Boolean);return e?t.filter(o=>!Pt.has(o)&&o.length>1):t}function pt(i,e){return e==="phrase"?[i.toLowerCase().trim()]:ut(i)}function It(i,e){return e.length===0?0:e.filter(o=>o===i||o.includes(i)).length/e.length}function mt(i,e,t,o){if(e.length===0)return {score:0,matchedFields:[]};let r=0,s=0,n=[];for(let[l,p]of Object.entries(t)){let a=i[l];if(a==null)continue;let u=p.weight??1;s+=u;let d;p.type==="array"&&Array.isArray(a)?d=a.join(" "):d=String(a);let m=ut(d,false),f=d.toLowerCase(),g=0,j=0;if(o==="phrase"){let x=e[0];f.includes(x)&&(g=1,j=1);}else {for(let x of e){let k=It(x,m);k>0?(j++,g+=k):f.includes(x)&&(j++,g+=.5/e.length);}e.length>0&&(g=g/e.length);}o==="all"&&j<e.length&&(g=0),g>0&&(n.push(l),r+=g*u);}return {score:s>0?Math.min(1,r/s):0,matchedFields:n}}function ht(i,e,t,o="mark",r=150){if(i==null)return [];let s;if(Array.isArray(i)?s=i.join(" "):s=String(i),!s||e.length===0)return [];let n=[],c=s.toLowerCase();if(t==="phrase"){let l=e[0],p=c.indexOf(l);if(p!==-1){let a=ct(s,p,l.length,r,o);a&&n.push(a);}}else {let l=[];for(let a of e){let u=0;for(;u<c.length;){let d=c.indexOf(a,u);if(d===-1)break;l.push({start:d,length:a.length}),u=d+1;}}l.sort((a,u)=>a.start-u.start);let p=new Set;for(let a of l){if(Array.from(p).some(m=>Math.abs(m-a.start)<r))continue;let d=ct(s,a.start,a.length,r,o);if(d&&(n.push(d),p.add(a.start)),n.length>=3)break}}return n}function ct(i,e,t,o,r){let s=Math.floor(o/2),n=Math.max(0,e-s),c=Math.min(i.length,e+t+s);if(n>0){let a=i.indexOf(" ",n);a!==-1&&a<e&&(n=a+1);}if(c<i.length){let a=i.lastIndexOf(" ",c);a!==-1&&a>e+t&&(c=a);}let l=i.slice(n,c);return n>0&&(l="..."+l),c<i.length&&(l=l+"..."),Et(l,[i.slice(e,e+t)],r)}function Et(i,e,t){let o=i,r=i.toLowerCase(),s=[...e].sort((n,c)=>c.length-n.length);for(let n of s){let c=n.toLowerCase(),l=0,p="",a=0;for(;a<r.length;){let u=r.indexOf(c,a);if(u===-1)break;p+=o.slice(l,u),p+=`<${t}>${o.slice(u,u+n.length)}</${t}>`,l=u+n.length,a=l;}p&&(p+=o.slice(l),o=p);}return o}function gt(i,e){if(!i)return Object.keys(e);let t=i.split(",").map(r=>r.trim()).filter(Boolean),o=Object.keys(e);return t.filter(r=>o.includes(r))}function ft(i,e){let t={};for(let o of i)t[o]={weight:e?.[o]??1};return t}var bt=class extends S{searchableFields={};searchFields=[];fieldWeights={};defaultMode="any";minQueryLength=2;maxQueryLength=500;highlightTag="mark";snippetLength=150;defaultMinScore=0;filterFields=[];filterConfig;sortFields=[];defaultSort;defaultPerPage=20;maxPerPage=100;allowedIncludes=[];fieldSelectionEnabled=false;allowedSelectFields=[];blockedSelectFields=[];alwaysIncludeFields=[];defaultSelectFields=[];getSearchableFields(){if(Object.keys(this.searchableFields).length>0)return this.searchableFields;if(this.searchFields.length>0)return ft(this.searchFields,this.fieldWeights);let e=this.getModelSchema().shape,t={};for(let[o,r]of Object.entries(e))r._def?.typeName==="ZodString"&&(t[o]={weight:1});return t}getQuerySchema(){let e={q:z.string().min(this.minQueryLength).max(this.maxQueryLength).describe("Search query"),fields:z.string().optional().describe(`Comma-separated fields to search. Available: ${Object.keys(this.getSearchableFields()).join(", ")}`),mode:z.enum(["any","all","phrase"]).optional().describe("Search mode: any (OR), all (AND), phrase (exact)"),highlight:z.enum(["true","false"]).optional().describe("Include highlighted snippets"),minScore:z.string().optional().describe("Minimum relevance score threshold (0-1)"),page:z.string().optional(),per_page:z.string().optional()};this.sortFields.length>0&&(e.sort=z.enum(this.sortFields).optional().describe("Field to sort by"),e.order=z.enum(["asc","desc"]).optional().describe("Sort direction (asc or desc)"));for(let o of this.filterFields)e[o]=z.string().optional();if(this.filterConfig)for(let[o,r]of Object.entries(this.filterConfig)){for(let s of r)e[`${o}[${s}]`]=z.string().optional();e[o]=z.string().optional();}let t=this.getSoftDeleteConfig();if(t.enabled&&t.allowQueryDeleted&&(e[t.queryParam]=z.enum(["true","false"]).optional(),e.onlyDeleted=z.enum(["true","false"]).optional()),this.allowedIncludes.length>0&&(e.include=z.string().optional().describe(`Comma-separated list of relations to include. Allowed: ${this.allowedIncludes.join(", ")}`)),this.fieldSelectionEnabled){let o=this.getAvailableSelectFields();e.fields=z.string().optional().describe(`Comma-separated list of fields to return. Available: ${o.join(", ")}`);}return z.object(e)}getAvailableSelectFields(){let e=Object.keys(this.getModelSchema().shape),t=this._meta.model.computedFields?Object.keys(this._meta.model.computedFields):[],o=this._meta.model.relations?Object.keys(this._meta.model.relations):[],r=[...e,...t,...o];return this.allowedSelectFields.length>0&&(r=r.filter(s=>this.allowedSelectFields.includes(s))),this.blockedSelectFields.length>0&&(r=r.filter(s=>!this.blockedSelectFields.includes(s))),r}getSchema(){let e=z.object({item:this.getModelSchema(),score:z.number().min(0).max(1),highlights:z.record(z.string(),z.array(z.string())).optional(),matchedFields:z.array(z.string())});return {...this.schema,request:{query:this.getQuerySchema()},responses:{200:{description:"Search results",content:{"application/json":{schema:z.object({success:z.literal(true),result:z.array(e),result_info:z.object({page:z.number(),per_page:z.number(),total_count:z.number().optional(),total_pages:z.number().optional(),query:z.string(),searchedFields:z.array(z.string())})})}}},400:{description:"Invalid search request",content:{"application/json":{schema:z.object({success:z.literal(false),error:z.object({code:z.string(),message:z.string(),details:z.unknown().optional()})})}}}}}}async getSearchOptions(){let{query:e}=await this.getValidatedData(),t=e?.q,o=e?.fields,r$1=r(e?.mode),s=e?.highlight==="true",n=e?.minScore?Math.max(0,Math.min(1,parseFloat(e.minScore)||0)):this.defaultMinScore,c=this.getSearchableFields(),l=gt(o,c);return {query:t,fields:l.length>0?l:Object.keys(c),mode:r$1??this.defaultMode,highlight:s,minScore:n}}async getFilters(){let{query:e}=await this.getValidatedData(),t=this.getSoftDeleteConfig(),o={filterFields:this.filterFields,filterConfig:this.filterConfig,searchFields:[],searchFieldName:"q",sortFields:this.sortFields,defaultSort:this.defaultSort,defaultPerPage:this.defaultPerPage,maxPerPage:this.maxPerPage,softDeleteQueryParam:t.queryParam,allowedIncludes:this.allowedIncludes,fieldSelectionEnabled:this.fieldSelectionEnabled,allowedSelectFields:this.allowedSelectFields,blockedSelectFields:this.blockedSelectFields,alwaysIncludeFields:this.alwaysIncludeFields,defaultSelectFields:this.defaultSelectFields};return ae(e||{},o)}async beforeSearch(e){return e}async afterSearch(e){return e}async handle(){let e=await this.getSearchOptions(),t=await this.getFilters();if(!e.query||e.query.length<this.minQueryLength)return this.json({success:false,error:{code:"INVALID_QUERY",message:`Search query must be at least ${this.minQueryLength} characters`}},400);e=await this.beforeSearch(e);let o=await this.search(e,t),r=await this.afterSearch(o.items);if(this._meta.model.computedFields){let p=r.map(u=>u.item),a=await k(p,this._meta.model.computedFields);r=r.map((u,d)=>({...u,item:a[d]}));}this._meta.model.serializer&&(r=r.map(p=>({...p,item:this._meta.model.serializer(p.item)})));let s=r;this.fieldSelectionEnabled&&t.options.fields&&t.options.fields.length>0&&(s=r.map(p=>({...p,item:le([p.item],{fields:t.options.fields,isActive:true})[0]})));let n=t.options.page||1,c=t.options.per_page||this.defaultPerPage,l=Math.ceil(o.totalCount/c);return this.successPaginated(s,{page:n,per_page:c,total_count:o.totalCount,total_pages:l,query:e.query,searchedFields:e.fields||Object.keys(this.getSearchableFields())})}};function Lr(i,e,t){let o=pt(e.query,e.mode),r={},s=e.fields||Object.keys(t);for(let c of s)t[c]&&(r[c]=t[c]);let n=[];for(let c of i){let{score:l,matchedFields:p}=mt(c,o,r,e.mode);if(l<e.minScore||p.length===0)continue;let a;if(e.highlight){a={};for(let u of p){let d=ht(c[u],o,e.mode);d.length>0&&(a[u]=d);}}n.push({item:c,score:l,highlights:a&&Object.keys(a).length>0?a:void 0,matchedFields:p});}return n.sort((c,l)=>l.score-c.score),n}function Q(i,e={}){let{delimiter:t=",",nullValue:o="",dateFormat:r="iso"}=e;if(i==null)return o;if(i instanceof Date)switch(r){case "timestamp":return String(i.getTime());case "locale":return i.toLocaleString();default:return i.toISOString()}if(typeof i=="object")return Q(JSON.stringify(i),e);if(typeof i=="boolean")return i?"true":"false";let s=String(i),n=s.charAt(0);return n==="="||n==="+"||n==="-"||n==="@"||n===" "||n==="\r"?`" ${s.replace(/"/g,'""')}"`:s.includes(t)||s.includes('"')||s.includes(`
2
+ `)||s.includes("\r")?`"${s.replace(/"/g,'""')}"`:s}function we(i,e={}){let{delimiter:t=",",rowDelimiter:o=`\r
3
+ `,includeHeader:r=true,formatters:s={},excludeFields:n=[],headerLabels:c={},nullValue:l="",dateFormat:p="iso"}=e;if(i.length===0)return "";let a=e.headers;a?a=a.filter(d=>!n.includes(d)):a=Object.keys(i[0]).filter(d=>!n.includes(d));let u=[];if(r){let d=a.map(m=>{let f=c[m]||m;return Q(f,{delimiter:t,nullValue:l,dateFormat:p})});u.push(d.join(t));}for(let d of i){let m=a.map(f=>{let g=d[f];return s[f]&&(g=s[f](g)),Q(g,{delimiter:t,nullValue:l,dateFormat:p})});u.push(m.join(t));}return u.join(o)}function Ur(i,e={}){let{delimiter:t=",",rowDelimiter:o=`\r
4
+ `,includeHeader:r=true,formatters:s={},excludeFields:n=[],headerLabels:c={},nullValue:l="",dateFormat:p="iso"}=e,a=new TextEncoder,u=0,d=false,m=e.headers;return !m&&i.length>0?m=Object.keys(i[0]).filter(f=>!n.includes(f)):m?m=m.filter(f=>!n.includes(f)):m=[],new ReadableStream({pull(f){if(r&&!d&&m.length>0){let x=m.map(k=>{let y=c[k]||k;return Q(y,{delimiter:t,nullValue:l,dateFormat:p})});f.enqueue(a.encode(x.join(t)+o)),d=true;return}let g=100,j=[];for(;u<i.length&&j.length<g;){let x=i[u],k=m.map(y=>{let F=x[y];return s[y]&&(F=s[y](F)),Q(F,{delimiter:t,nullValue:l,dateFormat:p})});j.push(k.join(t)),u++;}j.length>0&&f.enqueue(a.encode(j.join(o)+o)),u>=i.length&&f.close();}})}function wt(i,e){let t=[],o="",r=false,s=0;for(;s<i.length;){let n=i[s];if(r){if(n==='"'){if(s+1<i.length&&i[s+1]==='"'){o+='"',s+=2;continue}r=false,s++;continue}o+=n,s++;}else {if(n==='"'){r=true,s++;continue}if(n===e){t.push(o),o="",s++;continue}o+=n,s++;}}return t.push(o),t}function vt(i){let e=[],t="",o=false;for(let r=0;r<i.length;r++){let s=i[r];if(s==='"'){if(o&&r+1<i.length&&i[r+1]==='"'){t+='""',r++;continue}o=!o,t+=s;continue}if(!o&&(s===`
5
+ `||s==="\r")){s==="\r"&&r+1<i.length&&i[r+1]===`
6
+ `&&r++,t.length>0&&(e.push(t),t="");continue}t+=s;}return t.length>0&&e.push(t),e}function ye(i,e={}){let{delimiter:t=",",hasHeader:o=true,trimValues:r=true,skipEmptyRows:s=true,parsers:n={},emptyValue:c="empty"}=e,l={data:[],headers:[],errors:[]},p=vt(i);if(p.length===0)return l;let a=0;if(o){let d=p[0];l.headers=wt(d,t).map(m=>r?m.trim():m),a=1;}else e.headers&&(l.headers=e.headers);let u=e.headers||l.headers;for(let d=a;d<p.length;d++){let m=p[d],f=d+1;if(!(s&&m.trim()===""))try{let g=wt(m,t),j={};for(let x=0;x<u.length;x++){let k=u[x],y=x<g.length?g[x]:"";if(r&&typeof y=="string"&&(y=y.trim()),y==="")switch(c){case "null":y=null;break;case "undefined":y=void 0;break}if(n[k]&&typeof y=="string")try{y=n[k](y);}catch(F){l.errors.push({row:f,message:`Failed to parse field "${k}": ${F instanceof Error?F.message:String(F)}`,content:m});}j[k]=y;}l.data.push(j);}catch(g){l.errors.push({row:f,message:`Failed to parse row: ${g instanceof Error?g.message:String(g)}`,content:m});}}return l}function yt(i,e,t={}){let{allowUnknownFields:o=false,optionalFields:r=[]}=t,s=e.shape,n=Object.keys(s),l=n.filter(d=>r.includes(d)?false:!s[d].isOptional()).filter(d=>!i.includes(d)),p=i.filter(d=>!n.includes(d)),a=i.filter(d=>n.includes(d));return {valid:l.length===0&&(o||p.length===0),missingFields:l,unknownFields:p,validFields:a}}function Br(i,e){if(i){let t=i.toLowerCase().split(".").pop();if(t==="csv")return "csv";if(t==="json")return "json"}if(e){let t=e.trim();if(t.startsWith("[")||t.startsWith("{"))return "json";if(t.includes(",")||t.includes(`
7
+ `))return "csv"}return "unknown"}function Hr(i,e={}){return we(i,e)}function $r(i,e={}){return ye(i,e).data}var Mt=class extends de{maxExportRecords=1e4;enableStreaming=true;streamPageSize=500;excludedExportFields=[];defaultFormat="json";csvOptions={};exportFilename;getExportQuerySchema(){return this.getQuerySchema().extend({format:z.enum(["json","csv"]).optional().describe("Export format"),stream:z.enum(["true","false"]).optional().describe("Enable streaming for large exports")})}getSchema(){return {...this.schema,request:{query:this.getExportQuerySchema()},responses:{200:{description:"Export successful",content:{"application/json":{schema:z.object({success:z.literal(true),result:z.object({data:z.array(this.getModelSchema()),count:z.number(),format:z.enum(["json","csv"]),exportedAt:z.string()})})},"text/csv":{schema:z.string()}}}}}}async getExportOptions(){let{query:e}=await this.getValidatedData(),t=e?.format||this.defaultFormat,o=e?.stream==="true"&&this.enableStreaming;return {format:t,stream:o,fields:e?.fields?String(e.fields).split(","):void 0}}getExportFilename(e){let o=(this.exportFilename||this._meta.model.tableName).replace(/[^a-zA-Z0-9_-]/g,"_"),r=new Date().toISOString().replace(/[:.]/g,"-");return `${o}-export-${r}.${e}`}prepareRecordsForExport(e){return this.excludedExportFields.length===0?e:e.map(t=>{let o={};for(let[r,s]of Object.entries(t))this.excludedExportFields.includes(r)||(o[r]=s);return o})}exportAsJson(e,t){let o={data:e,count:e.length,format:t,exportedAt:new Date().toISOString()};return new Response(JSON.stringify({success:true,result:o},null,2),{status:200,headers:{"Content-Type":"application/json","Content-Disposition":`attachment; filename="${this.getExportFilename(t)}"`}})}exportAsCsv(e,t){let o=we(e,{...this.csvOptions,excludeFields:this.excludedExportFields});return new Response(o,{status:200,headers:{"Content-Type":"text/csv; charset=utf-8","Content-Disposition":`attachment; filename="${this.getExportFilename(t)}"`}})}exportAsCsvStream(e,t){let o=this.getContext(),r=this.getExportFilename(t),s=this.csvOptions,n=this.excludedExportFields;return stream(o,async c=>{if(o.header("Content-Type","text/csv; charset=utf-8"),o.header("Content-Disposition",`attachment; filename="${r}"`),e.length===0)return;let l=Object.keys(e[0]).filter(u=>!n.includes(u)),p=l.map(u=>Q(u,s)).join(",")+`
8
+ `;await c.write(p);let a=100;for(let u=0;u<e.length;u+=a)for(let d of e.slice(u,u+a)){let m=l.map(f=>Q(d[f],s)).join(",")+`
9
+ `;await c.write(m);}})}exportAsCsvStreamPaginated(e,t){let o=this.getExportFilename(t),r=this.streamPageSize,s=Math.min(this.maxExportRecords,1e5),n=this.excludedExportFields,c=this.csvOptions,l=null,p=new ReadableStream({start:async a=>{let u=new TextEncoder,d=1,m=0;try{for(;m<s;){let f={...e,options:{...e.options,page:d,per_page:r}},j=(await this.list(f)).result;if(j.length===0)break;j.length>s-m&&(j=j.slice(0,s-m)),j=await this.after(j),j=await this.beforeExport(j);let x=this.prepareRecordsForExport(j);if(!l&&x.length>0){l=Object.keys(x[0]).filter(y=>!n.includes(y));let k=l.map(y=>Q(y,c)).join(",")+`
10
+ `;a.enqueue(u.encode(k));}if(l)for(let k of x){let y=l.map(F=>Q(k[F],c)).join(",")+`
11
+ `;a.enqueue(u.encode(y));}if(m+=j.length,d++,j.length<r)break}}catch(f){a.error(f);return}a.close();}});return new Response(p,{status:200,headers:{"Content-Type":"text/csv; charset=utf-8","Content-Disposition":`attachment; filename="${o}"`}})}async beforeExport(e){return e}async fetchAllForExport(e){let t=Math.min(this.maxExportRecords,1e5),o={...e,options:{...e.options,page:1,per_page:t}};return (await this.list(o)).result}async handle(){let e=await this.getExportOptions(),t=await this.getFilters();if(e.format==="csv"&&e.stream)return this.exportAsCsvStreamPaginated(t,e.format);let o=await this.fetchAllForExport(t);o=await this.after(o),o=await this.beforeExport(o);let r=this.prepareRecordsForExport(o);return e.format==="csv"?this.exportAsCsv(r,e.format):this.exportAsJson(r,e.format)}};var jt=class extends S{maxBatchSize=1e3;importBatchSize=100;stopOnError=false;skipInvalidRows=true;defaultMode="create";upsertKeys;immutableFields=[];csvOptions={};maxBodySize=10*1024*1024;optionalImportFields=[];getUpsertKeys(){return this.upsertKeys||this._meta.model.primaryKeys}getImportSchema(){let e=this._meta.fields||this.getModelSchema();return z.object({items:z.array(e.partial()).min(1).max(this.maxBatchSize)})}getSchema(){return {...this.schema,request:{query:z.object({mode:z.enum(["create","upsert"]).optional().describe("Import mode"),skipInvalid:z.enum(["true","false"]).optional().describe("Skip invalid rows"),stopOnError:z.enum(["true","false"]).optional().describe("Stop on first error")})},responses:{200:{description:"Import completed successfully",content:{"application/json":{schema:z.object({success:z.literal(true),result:z.object({summary:z.object({total:z.number(),created:z.number(),updated:z.number(),skipped:z.number(),failed:z.number()}),results:z.array(z.object({rowNumber:z.number(),status:z.enum(["created","updated","skipped","failed"]),data:z.unknown().optional(),error:z.string().optional(),validationErrors:z.array(z.object({path:z.string(),message:z.string()})).optional()}))})})}}},207:{description:"Import completed with partial failures",content:{"application/json":{schema:z.object({success:z.literal(true),result:z.object({summary:z.object({total:z.number(),created:z.number(),updated:z.number(),skipped:z.number(),failed:z.number()}),results:z.array(z.object({rowNumber:z.number(),status:z.enum(["created","updated","skipped","failed"]),data:z.unknown().optional(),error:z.string().optional(),validationErrors:z.array(z.object({path:z.string(),message:z.string()})).optional()}))})})}}},400:{description:"Validation error",content:{"application/json":{schema:z.object({success:z.literal(false),error:z.object({code:z.string(),message:z.string(),details:z.unknown().optional()})})}}}}}}async getImportOptions(){let{query:e}=await this.getValidatedData(),t=e?.skipInvalid==="true"?true:e?.skipInvalid==="false"?false:this.skipInvalidRows,o=e?.stopOnError==="true"?true:e?.stopOnError==="false"?false:this.stopOnError;return {mode:e?.mode||this.defaultMode,skipInvalidRows:t,stopOnError:o}}async parseImportData(){let e=this.context;if(!e)throw new b$3("No request available");let t=e.req.header("content-type")||"";if(t.includes("application/json")){let o=await e.req.json();if(!o)throw new b$3("Request body is empty");if(!o.items||!Array.isArray(o.items))throw new b$3('Request body must contain an "items" array');if(o.items.length>this.maxBatchSize)throw new b$3(`Maximum ${this.maxBatchSize} items allowed per import`);return o.items}if(t.includes("text/csv")){let o=await e.req.text();if(o.length>this.maxBodySize)throw new b$3(`Request body exceeds maximum size of ${this.maxBodySize} bytes`);return this.parseCsvData(o)}if(t.includes("multipart/form-data")){let r=(await e.req.formData()).get("file");if(!r)throw new b$3("No file provided in form data");let s=await r.text();if(s.length>this.maxBodySize)throw new b$3(`Uploaded file exceeds maximum size of ${this.maxBodySize} bytes`);let n=r.name.toLowerCase();if(n.endsWith(".json")){let l;try{l=JSON.parse(s);}catch{throw new b$3("Invalid JSON content in uploaded file")}let p=Array.isArray(l)?l:l.items;if(!p||!Array.isArray(p))throw new b$3('JSON file must contain an array or an object with "items" array');if(p.length>this.maxBatchSize)throw new b$3(`Maximum ${this.maxBatchSize} items allowed per import`);return p}if(n.endsWith(".csv"))return this.parseCsvData(s);let c=s.trim();if(c.startsWith("[")||c.startsWith("{")){let l;try{l=JSON.parse(s);}catch{throw new b$3("Invalid JSON content in uploaded file")}let p=Array.isArray(l)?l:l.items;if(!p||!Array.isArray(p))throw new b$3('JSON file must contain an array or an object with "items" array');return p}return this.parseCsvData(s)}throw new b$3("Unsupported content type. Use application/json, text/csv, or multipart/form-data")}parseCsvData(e){let t=ye(e,this.csvOptions);if(t.errors.length>0)throw new b$3(`CSV parsing errors: ${t.errors.map(s=>`Row ${s.row}: ${s.message}`).join("; ")}`);if(t.data.length===0)throw new b$3("CSV file is empty");if(t.data.length>this.maxBatchSize)throw new b$3(`Maximum ${this.maxBatchSize} items allowed per import`);let o=this._meta.fields||this.getModelSchema(),r=yt(t.headers,o,{allowUnknownFields:true,optionalFields:this.optionalImportFields});if(!r.valid&&r.missingFields.length>0)throw new b$3(`Missing required fields in CSV: ${r.missingFields.join(", ")}`);return t.data}validateRow(e,t){let o=this._meta.fields||this.getModelSchema(),r=this._meta.model.primaryKeys,s={};for(let c of r)s[c]=true;for(let c of this.optionalImportFields)s[c]=true;let n=o.partial(s);try{return n.parse(e),{valid:!0}}catch(c){return c instanceof z.ZodError?{valid:false,errors:c.issues.map(p=>({path:p.path.join("."),message:p.message}))}:{valid:false,errors:[{path:"",message:c instanceof Error?c.message:String(c)}]}}}removeImmutableFields(e){if(this.immutableFields.length===0)return e;let t={};for(let[o,r]of Object.entries(e))this.immutableFields.includes(o)||(t[o]=r);return t}async before(e,t,o,r){return e}async after(e,t,o,r){return e}async processRow(e,t,o,r){let s=this.validateRow(e,t);if(!s.valid)return o.skipInvalidRows?{rowNumber:t,status:"skipped",error:"Validation failed",validationErrors:s.errors}:{rowNumber:t,status:"failed",error:"Validation failed",validationErrors:s.errors};try{let n=await this.before(e,t,o.mode,r);if(o.mode==="upsert"){let l=await this.findExisting(n,r);if(l){let p=this.removeImmutableFields(n),a=await this.update(l,p,r);return {rowNumber:t,status:"updated",data:a}}}else if(await this.findExisting(n,r))return o.skipInvalidRows?{rowNumber:t,status:"skipped",error:"Record already exists"}:{rowNumber:t,status:"failed",error:"Record already exists (duplicate key)"};let c=await this.create(n,r);return {rowNumber:t,status:"created",data:c}}catch(n){return {rowNumber:t,status:"failed",error:n instanceof Error?n.message:String(n)}}}async handle(){let e=await this.getImportOptions(),t=await this.parseImportData();if(!Number.isInteger(this.importBatchSize)||this.importBatchSize<1)throw new i("importBatchSize must be a positive integer");let o={total:t.length,created:0,updated:0,skipped:0,failed:0},r=[],s=false,n=e.stopOnError?1:this.importBatchSize;for(let p=0;p<t.length&&!s;p+=n){let a=t.slice(p,p+n),u=await Promise.all(a.map(async(d,m)=>{let f=p+m+1,g=await this.processRow(d,f,e);return g=await this.after(g,f,e.mode),g}));for(let d of u){switch(r.push(d),d.status){case "created":o.created++;break;case "updated":o.updated++;break;case "skipped":o.skipped++;break;case "failed":o.failed++;break}if(e.stopOnError&&d.status==="failed"){s=true;break}}}if(this.isAuditEnabled()){let p=this.getAuditLogger(),a=r.filter(u=>u.status==="created"||u.status==="updated");if(a.length>0){let u=a.map(d=>{if(!d.data)return null;let m=this.getRecordId(d.data);return m===null?null:{recordId:m,record:d.data}}).filter(d=>d!==null);u.length>0&&this.runAfterResponse(p.logBatch(e.mode==="upsert"?"batch_upsert":"batch_create",this._meta.model.tableName,u,this.getAuditUserId()));}}let c={summary:o,results:r},l=o.failed>0&&o.failed<o.total?207:200;return this.json({success:true,result:c},l)}};export{et as A,tt as B,ot as C,rt as D,st as E,nt as F,at as G,Cr as H,ut as I,pt as J,It as K,mt as L,ht as M,gt as N,ft as O,bt as P,Lr as Q,Q as R,we as S,Ur as T,ye as U,yt as V,Br as W,Hr as X,$r as Y,Mt as Z,jt as _,se as a,q as b,Ze as c,De as d,ze as e,te as f,he as g,ge as h,S as i,Zt as j,ae as k,L as l,Dt as m,fe as n,le as o,Be as p,He as q,$e as r,Ke as s,de as t,We as u,Qe as v,Ge as w,Je as x,Ye as y,Xe as z};