hono-crud 0.11.0 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2 -0
- package/dist/adapters/drizzle/index.d.ts +4 -4
- package/dist/adapters/drizzle/index.js +1 -1
- package/dist/adapters/memory/index.d.ts +4 -4
- package/dist/adapters/memory/index.js +1 -1
- package/dist/adapters/prisma/index.d.ts +4 -4
- package/dist/adapters/prisma/index.js +1 -1
- package/dist/audit/index.d.ts +1 -1
- package/dist/audit/index.js +1 -1
- package/dist/auth/index.d.ts +3 -3
- package/dist/auth/index.js +1 -1
- package/dist/{bulk-patch-DX-qtuN4.d.ts → bulk-patch-DE5uhC6m.d.ts} +2 -2
- package/dist/cache/index.d.ts +2 -2
- package/dist/cache/index.js +1 -1
- package/dist/chunk-26IVGJU7.js +1 -0
- package/dist/{chunk-U4PDR4P3.js → chunk-3DE2MG3R.js} +1 -1
- package/dist/{chunk-MGEQVZAI.js → chunk-4CM6OCS3.js} +1 -1
- package/dist/{chunk-VSTEFZOU.js → chunk-4FZTIZFM.js} +1 -1
- package/dist/{chunk-RXUYM2KD.js → chunk-4PBGEU64.js} +1 -1
- package/dist/chunk-6WIZTUZK.js +1 -0
- package/dist/{chunk-3HBOKHIU.js → chunk-ESMN3MEH.js} +1 -1
- package/dist/{chunk-QJPUXVTT.js → chunk-FHABLABR.js} +1 -1
- package/dist/{chunk-IDUJWS5U.js → chunk-KLBMVJX3.js} +1 -1
- package/dist/chunk-M7YICFXP.js +11 -0
- package/dist/chunk-NIGKMRDM.js +4 -0
- package/dist/{import-BowFqS6q.d.ts → import-5Dvy1PMu.d.ts} +105 -3
- package/dist/{index-C7qXEfCh.d.ts → index-5CxvXfpu.d.ts} +3 -3
- package/dist/index.d.ts +9 -9
- package/dist/index.js +2 -2
- package/dist/logging/index.js +1 -1
- package/dist/rate-limit/index.js +1 -1
- package/dist/{route-CTec4QxL.d.ts → route-Ctv6vIW0.d.ts} +1 -1
- package/dist/storage/index.d.ts +1 -1
- package/dist/storage/index.js +1 -1
- package/dist/{types-QHT43lek.d.ts → types-Bg1Mpdsl.d.ts} +69 -1
- package/dist/versioning/index.d.ts +1 -1
- package/dist/versioning/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-A5UWQNQQ.js +0 -11
- package/dist/chunk-MKMSOGVE.js +0 -1
- package/dist/chunk-QK65CFMV.js +0 -1
- package/dist/chunk-UQUDEKCP.js +0 -4
package/CHANGELOG.md
CHANGED
|
@@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
8
8
|
%b
|
|
9
9
|
%b
|
|
10
10
|
%b
|
|
11
|
+
%b
|
|
11
12
|
## [0.8.0] — 2026-05-03
|
|
12
13
|
|
|
13
14
|
### Added
|
|
@@ -81,3 +82,4 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
81
82
|
[0.9.0]: https://github.com/kshdotdev/hono-crud/compare/v0.7.0...v0.9.0
|
|
82
83
|
[0.10.0]: https://github.com/kshdotdev/hono-crud/compare/v0.9.0...v0.10.0
|
|
83
84
|
[0.11.0]: https://github.com/kshdotdev/hono-crud/compare/v0.10.0...v0.11.0
|
|
85
|
+
[0.12.0]: https://github.com/kshdotdev/hono-crud/compare/v0.11.0...v0.12.0
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { Table, SQL, Column } from 'drizzle-orm';
|
|
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-
|
|
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-
|
|
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';
|
|
5
5
|
import { z } from 'zod';
|
|
6
|
-
import { A as AdapterBundle } from '../../index-
|
|
6
|
+
import { A as AdapterBundle } from '../../index-5CxvXfpu.js';
|
|
7
7
|
import '../../types-B5wq2iKZ.js';
|
|
8
8
|
import '../../types-BAcN7U0B.js';
|
|
9
9
|
import '@hono/zod-openapi';
|
|
10
|
-
import '../../route-
|
|
10
|
+
import '../../route-Ctv6vIW0.js';
|
|
11
11
|
import 'hono/utils/http-status';
|
|
12
12
|
import '../../audit/index.js';
|
|
13
13
|
import '../../registry-PNJjvSvm.js';
|
|
@@ -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-
|
|
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,9 +1,9 @@
|
|
|
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-
|
|
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-
|
|
4
|
-
import { B as BulkPatchEndpoint } from '../../bulk-patch-
|
|
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';
|
|
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';
|
|
5
5
|
import 'zod';
|
|
6
|
-
import '../../route-
|
|
6
|
+
import '../../route-Ctv6vIW0.js';
|
|
7
7
|
import 'hono/utils/http-status';
|
|
8
8
|
import '../../audit/index.js';
|
|
9
9
|
import '../../registry-PNJjvSvm.js';
|
|
@@ -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-
|
|
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,9 +1,9 @@
|
|
|
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-
|
|
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-
|
|
4
|
-
import { A as AdapterBundle } from '../../index-
|
|
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';
|
|
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';
|
|
5
5
|
import 'zod';
|
|
6
|
-
import '../../route-
|
|
6
|
+
import '../../route-Ctv6vIW0.js';
|
|
7
7
|
import 'hono/utils/http-status';
|
|
8
8
|
import '../../audit/index.js';
|
|
9
9
|
import '../../registry-PNJjvSvm.js';
|
|
@@ -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-
|
|
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';
|
package/dist/audit/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Context, Env } from 'hono';
|
|
2
|
-
import { A as AuditConfig, c as AuditLogEntry, d as AuditAction } from '../types-
|
|
2
|
+
import { A as AuditConfig, c as AuditLogEntry, d as AuditAction } from '../types-Bg1Mpdsl.js';
|
|
3
3
|
import { S as StorageRegistry } from '../registry-PNJjvSvm.js';
|
|
4
4
|
import 'zod';
|
|
5
5
|
import '../types-B5wq2iKZ.js';
|
package/dist/audit/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{e as AuditLogger,a as MemoryAuditLogStorage,b as auditStorageRegistry,f as createAuditLogger,d as getAuditStorage,c as setAuditStorage}from'../chunk-
|
|
1
|
+
export{e as AuditLogger,a as MemoryAuditLogStorage,b as auditStorageRegistry,f as createAuditLogger,d as getAuditStorage,c as setAuditStorage}from'../chunk-KLBMVJX3.js';import'../chunk-FHABLABR.js';import'../chunk-GBQQ3YQX.js';import'../chunk-MDHMZPXK.js';import'../chunk-VJRDAVID.js';
|
package/dist/auth/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { r as AuthEnv,
|
|
2
|
-
export { v as ActionSource, E as AuthType,
|
|
1
|
+
import { r as AuthEnv, aa as JWTConfig, a8 as JWTClaims, s as APIKeyConfig, t as APIKeyEntry, D as AuthConfig, _ as Guard, B as ApprovalConfig, J as AuthorizationCheck, ao as OwnershipExtractor, ad as ModelPolicies, C as ApprovalStorage, ar as PendingAction, G as AuthUser, M as MetaInput, O as OpenAPIRouteSchema, aY as Constructor, X as EndpointAuthConfig, aZ as APIKeyStorage, u as APIKeyLookupResult } from '../types-Bg1Mpdsl.js';
|
|
2
|
+
export { v as ActionSource, E as AuthType, a7 as JWTAlgorithm, a9 as JWTClaimsSchema, aq as PathPattern, as as PendingActionStatus, aE as ValidatedJWTClaims, aV as parseJWTClaims, aX as safeParseJWTClaims } from '../types-Bg1Mpdsl.js';
|
|
3
3
|
import { MiddlewareHandler, Context } from 'hono';
|
|
4
|
-
import { O as OpenAPIRoute } from '../route-
|
|
4
|
+
import { O as OpenAPIRoute } from '../route-Ctv6vIW0.js';
|
|
5
5
|
import 'zod';
|
|
6
6
|
import '../types-B5wq2iKZ.js';
|
|
7
7
|
import '../types-BAcN7U0B.js';
|
package/dist/auth/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{o as AuthenticatedEndpoint,a as JWTClaimsSchema,j as createAPIKeyMiddleware,l as createAuthMiddleware,e as createJWTMiddleware,g as decodeJWT,i as defaultHashAPIKey,m as optionalAuth,b as parseJWTClaims,n as requireAuthentication,c as safeParseJWTClaims,k as validateAPIKey,h as validateAPIKeyEntry,d as validateJWTClaims,f as verifyJWT,p as withAuth}from'../chunk-
|
|
1
|
+
export{o as AuthenticatedEndpoint,a as JWTClaimsSchema,j as createAPIKeyMiddleware,l as createAuthMiddleware,e as createJWTMiddleware,g as decodeJWT,i as defaultHashAPIKey,m as optionalAuth,b as parseJWTClaims,n as requireAuthentication,c as safeParseJWTClaims,k as validateAPIKey,h as validateAPIKeyEntry,d as validateJWTClaims,f as verifyJWT,p as withAuth}from'../chunk-4FZTIZFM.js';export{e as MemoryApprovalStorage,f as POLICIES_CONTEXT_KEY,n as allOf,q as allowAll,o as anyOf,p as denyAll,d as parseIso8601Duration,h as requireAllRoles,j as requireAnyPermission,t as requireApproval,k as requireAuth,r as requireAuthenticated,l as requireOwnership,m as requireOwnershipOrRole,i as requirePermissions,s as requirePolicy,g as requireRoles}from'../chunk-4PBGEU64.js';export{c as MemoryAPIKeyStorage,d as generateAPIKey,h as getAPIKeyStorage,e as hashAPIKey,f as isValidAPIKeyFormat,i as setAPIKeyStorage}from'../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,7 +1,7 @@
|
|
|
1
1
|
import { ZodObject, ZodRawShape } from 'zod';
|
|
2
2
|
import { Env } from 'hono';
|
|
3
|
-
import { C as CrudEndpoint, M as ModelObject } from './import-
|
|
4
|
-
import { M as MetaInput, H as HookMode, L as ListFilters, O as OpenAPIRouteSchema } from './types-
|
|
3
|
+
import { C as CrudEndpoint, M as ModelObject } from './import-5Dvy1PMu.js';
|
|
4
|
+
import { M as MetaInput, H as HookMode, L as ListFilters, O as OpenAPIRouteSchema } from './types-Bg1Mpdsl.js';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Result of a bulk patch operation.
|
package/dist/cache/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { I as InvalidationPatternOptions, d as CacheKeyOptions, C as CacheStorage, b as CacheEntry, e as CacheSetOptions, f as CacheStats, a as CacheConfig, c as CacheInvalidationConfig } from '../types-BdRvpp1z.js';
|
|
2
2
|
export { g as InvalidationStrategy } from '../types-BdRvpp1z.js';
|
|
3
3
|
import { K as KVNamespace } from '../cloudflare-kv-types-ByUEHhBc.js';
|
|
4
|
-
import {
|
|
5
|
-
import { O as OpenAPIRoute } from '../route-
|
|
4
|
+
import { aY as Constructor } from '../types-Bg1Mpdsl.js';
|
|
5
|
+
import { O as OpenAPIRoute } from '../route-Ctv6vIW0.js';
|
|
6
6
|
import 'hono';
|
|
7
7
|
import 'zod';
|
|
8
8
|
import '../types-B5wq2iKZ.js';
|
package/dist/cache/index.js
CHANGED
|
@@ -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-
|
|
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';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import {o,p,q,r,s,u,w as w$1,x,y as y$1,z as z$1,A as A$1,O,P as P$1,Y as Y$1,Z,v as v$1,B as B$1,C as C$1,D as D$1,E as E$1,F as F$1,G as G$1,t}from'./chunk-M7YICFXP.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 o{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 p{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 q{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 r{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 s{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 u{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 w$1{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 x{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 y$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 z$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 A$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 O{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=P$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 Y$1{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 Z{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 v$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 B$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 C$1{},ve=class extends D$1{},_e=class extends E$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 F$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 G$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 G$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 G$1(c,o)}}},z=class extends t{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};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import {g,f}from'./chunk-
|
|
1
|
+
import {g,f}from'./chunk-FHABLABR.js';import {c}from'./chunk-GBQQ3YQX.js';var d=class{versions=new Map;getKey(e,n){return `${e}:${n}`}async save(e){let n=this.getKey(e.tableName||e.id.split(":")[0]||"unknown",e.recordId),r={...e,tableName:n.split(":")[0]},t=this.versions.get(n)||[];t.push(r),this.versions.set(n,t);}async store(e,n){let r=this.getKey(e,n.recordId),t=this.versions.get(r)||[];t.push({...n,tableName:e}),this.versions.set(r,t);}async getByRecordId(e,n,r){let t=this.getKey(e,n),i=[...this.versions.get(t)||[]].sort((c,o)=>o.version-c.version),g=r?.offset||0,a=r?.limit||i.length;return i.slice(g,g+a)}async getVersion(e,n,r){let t=this.getKey(e,n);return (this.versions.get(t)||[]).find(i=>i.version===r)||null}async getLatestVersion(e,n){let r=this.getKey(e,n),t=this.versions.get(r)||[];return t.length===0?0:Math.max(...t.map(s=>s.version))}async pruneVersions(e,n,r){let t=this.getKey(e,n),s=this.versions.get(t)||[];if(s.length<=r)return 0;let i=[...s].sort((c,o)=>o.version-c.version),g=i.slice(0,r),a=i.length-g.length;return this.versions.set(t,g),a}async deleteAllVersions(e,n){let r=this.getKey(e,n),s=(this.versions.get(r)||[]).length;return this.versions.delete(r),s}getAllVersions(){let e=[];for(let n of this.versions.values())e.push(...n);return e}clear(){this.versions.clear();}},h=c("versioningStorage",()=>new d);function p(u){h.set(u);}function E(){return h.getRequired()}var y=class{config;storage;tableName;constructor(e,n,r,t){this.config=g(e,n),this.tableName=n,this.storage=h.resolve(t,r);}getStorage(){if(!this.storage)throw new Error("Versioning storage not configured. Pass storage explicitly or inject versioningStorage with createCrudMiddleware().");return this.storage}isEnabled(){return this.config.enabled}getVersionField(){return this.config.field}getHistoryTable(){return this.config.historyTable}async saveVersion(e,n,r,t,s){if(!this.isEnabled())return n[this.config.field]||1;let i=n[this.config.field]||0,g=i+1,a;r&&(a=f(r,n,this.config.excludeFields));let c=this.filterFields(n),o={id:crypto.randomUUID(),recordId:e,version:i,data:c,createdAt:new Date,changes:a};this.config.trackChangedBy&&t&&(o.changedBy=t),s&&(o.changeReason=s);let l=this.getStorage();return "store"in l&&typeof l.store=="function"?await l.store(this.tableName,o):await l.save(o),this.config.maxVersions&&l.pruneVersions&&await l.pruneVersions(this.tableName,e,this.config.maxVersions),g}async getVersions(e,n){return this.getStorage().getByRecordId(this.tableName,e,n)}async getVersion(e,n){return this.getStorage().getVersion(this.tableName,e,n)}async getVersionData(e,n){let r=await this.getVersion(e,n);return r?r.data:null}async getLatestVersion(e){return this.getStorage().getLatestVersion(this.tableName,e)}async compareVersions(e,n,r){let[t,s]=await Promise.all([this.getVersion(e,n),this.getVersion(e,r)]);return !t||!s?[]:f(t.data,s.data,this.config.excludeFields)}async deleteAllVersions(e){let n=this.getStorage();return n.deleteAllVersions?n.deleteAllVersions(this.tableName,e):0}filterFields(e){if(this.config.excludeFields.length===0)return e;let n={};for(let[r,t]of Object.entries(e))this.config.excludeFields.includes(r)||(n[r]=t);return n}};function P(u,e,n,r){return new y(u,e,n,r)}export{d as a,h as b,p as c,E as d,y as e,P as f};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import {b as b$4}from'./chunk-U4PDR4P3.js';import {a as a$3}from'./chunk-GF2EC5G4.js';import {b as b$3}from'./chunk-IDUJWS5U.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 {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 +1 @@
|
|
|
1
|
-
import {b as b$2}from'./chunk-RXUYM2KD.js';import {b as b$1}from'./chunk-2M5BM4VD.js';import {e,f as f$1}from'./chunk-FC56WWPB.js';import {z as z$1}from'zod';import {decode,verify}from'hono/jwt';var P=z$1.object({sub:z$1.string().optional(),iss:z$1.string().optional(),aud:z$1.union([z$1.string(),z$1.array(z$1.string())]).optional(),exp:z$1.number().int().optional(),nbf:z$1.number().int().optional(),iat:z$1.number().int().optional(),jti:z$1.string().optional()}).passthrough();function K(e){return P.parse(e)}function S(e){return P.safeParse(e)}z$1.object({id:z$1.string(),tenantId:z$1.string().optional(),organizationId:z$1.string().optional(),userId:z$1.string().optional(),actorUserId:z$1.string().optional(),onBehalfOfUserId:z$1.string().optional(),agentId:z$1.string().optional(),agentRunId:z$1.string().optional(),toolCallId:z$1.string().optional(),source:z$1.enum(["http","agent-mcp","agent-code-mode","workflow","job","system"]),toolName:z$1.string(),input:z$1.unknown(),status:z$1.enum(["pending","approved","rejected","expired"]),createdAt:z$1.iso.datetime(),expiresAt:z$1.iso.datetime(),reason:z$1.string(),approvedBy:z$1.string().optional(),approvedAt:z$1.iso.datetime().optional(),rejectedBy:z$1.string().optional(),rejectedReason:z$1.string().optional()});function f(e$1,t={}){let{clockTolerance:n=0,issuer:s,audience:r,skipTimeValidation:o=false}=t;if(!o){let l=Math.floor(Date.now()/1e3);if(e$1.exp!==void 0&&l>e$1.exp+n)throw new e("Token has expired");if(e$1.nbf!==void 0&&l<e$1.nbf-n)throw new e("Token not yet valid")}if(s!==void 0&&e$1.iss!==s)throw new e("Invalid token issuer");if(r!==void 0){let l=Array.isArray(r)?r:[r],u=Array.isArray(e$1.aud)?e$1.aud:[e$1.aud];if(!l.some(A=>u.includes(A)))throw new e("Invalid token audience")}}function b(e){if(!["HS256","HS384","HS512","RS256","RS384","RS512","ES256","ES384","ES512"].includes(e))throw new Error(`Unsupported algorithm: ${e}`);return e}function J(e){let t=e.req.header("Authorization");if(!t)return null;let n=t.split(" ");return n.length!==2||n[0].toLowerCase()!=="bearer"?null:n[1]}function W(e){return {id:String(e.sub||e.id||""),email:e.email,roles:e.roles||e.role,permissions:e.permissions,metadata:e.metadata}}function E(e$1){let t=b(e$1.algorithm||"HS256"),n=e$1.clockTolerance||0,s=e$1.extractToken||J,r=e$1.extractUser||W;return async(o,l)=>{let u=s(o);if(!u)throw new e("Missing authentication token");let h=decode(u);if(!h||!h.header)throw new e("Invalid token format");if(h.header.alg!==t)throw new e("Invalid token algorithm");let A;try{A=await verify(u,e$1.secret,t);}catch(c){if(c instanceof Error){if(c.message.includes("expired")||c.name==="JwtTokenExpired")throw new e("Token has expired");if(c.message.includes("signature")||c.name==="JwtTokenSignatureMismatched")throw new e("Invalid token signature");if(c.message.includes("not valid yet")||c.name==="JwtTokenNotYetValid")throw new e("Token not yet valid")}throw new e("Invalid token")}let m=A;f(m,{clockTolerance:n,issuer:e$1.issuer,audience:e$1.audience});let p=r(m);o.set("userId",p.id),o.set("user",p),o.set("roles",p.roles||[]),o.set("permissions",p.permissions||[]),o.set("authType","jwt"),await l();}}async function O(e$1,t){let n=b(t.algorithm||"HS256"),s=t.clockTolerance||0,r=decode(e$1);if(!r||!r.header)throw new e("Invalid token format");if(r.header.alg!==n)throw new e("Invalid token algorithm");let o;try{o=await verify(e$1,t.secret,n);}catch(u){if(u instanceof Error){if(u.message.includes("expired")||u.name==="JwtTokenExpired")throw new e("Token has expired");if(u.message.includes("signature")||u.name==="JwtTokenSignatureMismatched")throw new e("Invalid token signature");if(u.message.includes("not valid yet")||u.name==="JwtTokenNotYetValid")throw new e("Token not yet valid")}throw new e("Invalid token")}let l=o;return f(l,{clockTolerance:s,issuer:t.issuer,audience:t.audience}),l}function j(e){try{let t=decode(e);return !t||!t.header||!t.payload?null:{header:t.header,payload:t.payload}}catch{return null}}function w(e$1){if(!e$1)throw new e("Invalid API key");if(!e$1.active)throw new e("API key has been revoked");if(e$1.expiresAt&&new Date>e$1.expiresAt)throw new e("API key has expired");return e$1}async function v(e){let n=new TextEncoder().encode(e),s=await crypto.subtle.digest("SHA-256",n),r=new Uint8Array(s);return Array.from(r).map(o=>o.toString(16).padStart(2,"0")).join("")}function H(e){return {id:e.userId,roles:e.roles,permissions:e.permissions,metadata:{...e.metadata,apiKeyId:e.id,apiKeyName:e.name}}}function M(e,t){return e.req.header(t)||null}function z(e,t){return e.req.query(t)||null}function I(e$1){let t=e$1.headerName||"X-API-Key",n=e$1.queryParam??null,s=e$1.hashKey||v,r=e$1.extractUser||H;return async(o,l)=>{let u=M(o,t);if(!u&&n&&(u=z(o,n)),!u)throw new e("Missing API key");let h=await s(u),A=await e$1.lookupKey(h),m=w(A),p=r(m);o.set("userId",p.id),o.set("user",p),o.set("roles",p.roles||[]),o.set("permissions",p.permissions||[]),o.set("authType","api-key"),e$1.updateLastUsed&&Promise.resolve(e$1.updateLastUsed(m.id)).catch(()=>{}),await l();}}async function N(e,t){let s=await(t.hashKey||v)(e),r=await t.lookupKey(s);return w(r)}function C(e$1){let t=e$1.requireAuth??true,n=e$1.skipPaths||[],s=e$1.unauthorizedMessage||"Unauthorized",r=e$1.authOrder||["jwt","api-key"],o=e$1.jwt?E(e$1.jwt):null,l=e$1.apiKey?I(e$1.apiKey):null;return async(u,h)=>{let A=u.req.path;if(b$1(A,n))return u.set("authType","none"),h();let m=false,p=null;for(let c of r)try{if(c==="jwt"&&o&&u.req.header("Authorization")?.toLowerCase().startsWith("bearer ")){await o(u,async()=>{}),m=!0;break}if(c==="api-key"&&l){let y=e$1.apiKey?.headerName||"X-API-Key",R=e$1.apiKey?.queryParam;if(u.req.header(y)||R&&u.req.query(R)){await l(u,async()=>{}),m=!0;break}}}catch(y){p=y instanceof Error?y:new Error(String(y));}if(!m){if(t)throw p instanceof e?p:new e(s);u.set("authType","none");}await h();}}function V(e){return C({...e,requireAuth:false})}function L(e){return C({...e,requireAuth:true})}var T=class extends b$2{requiresAuth=true;requiredRoles;requiredPermissions;requireAllRoles=false;async authorize(t,n){return true}getUser(){let n=this.getContext().var.user;if(!n)throw new e("Authentication required");return n}getUserOrNull(){return this.getContext().var.user}getUserId(){return this.getUser().id}getUserIdOrNull(){return this.getUserOrNull()?.id}getUserRoles(){return this.getUser().roles||[]}getUserPermissions(){return this.getUser().permissions||[]}hasRole(t){return this.getUserRoles().includes(t)}hasAnyRole(...t){let n=this.getUserRoles();return t.some(s=>n.includes(s))}hasAllRoles(...t){let n=this.getUserRoles();return t.every(s=>n.includes(s))}hasPermission(t){return this.getUserPermissions().includes(t)}hasAllPermissions(...t){let n=this.getUserPermissions();return t.every(s=>n.includes(s))}hasAnyPermission(...t){let n=this.getUserPermissions();return t.some(s=>n.includes(s))}async enforceAuth(){let t=this.getContext();if(this.requiresAuth&&!t.var.user)throw new e("Authentication required");let n=t.var.user;if(!n)return;if(this.requiredRoles&&this.requiredRoles.length>0){let r=n.roles||[];if(this.requireAllRoles){if(!this.requiredRoles.every(l=>r.includes(l)))throw new f$1(`Required roles: ${this.requiredRoles.join(" and ")}`)}else if(!this.requiredRoles.some(l=>r.includes(l)))throw new f$1(`Required role: ${this.requiredRoles.join(" or ")}`)}if(this.requiredPermissions&&this.requiredPermissions.length>0){let r=n.permissions||[];if(!this.requiredPermissions.every(l=>r.includes(l)))throw new f$1(`Required permissions: ${this.requiredPermissions.join(", ")}`)}if(!await this.authorize(n,t))throw new f$1("Access denied")}getSchema(){let t=super.getSchema(),n=this.requiresAuth?[{bearerAuth:[]}]:void 0,s={401:{description:"Unauthorized - Authentication required",content:{"application/json":{schema:z$1.object({success:z$1.literal(false),error:z$1.object({code:z$1.literal("UNAUTHORIZED"),message:z$1.string()})})}}},403:{description:"Forbidden - Insufficient permissions",content:{"application/json":{schema:z$1.object({success:z$1.literal(false),error:z$1.object({code:z$1.literal("FORBIDDEN"),message:z$1.string()})})}}}};return {...t,security:n,responses:{...t.responses,...this.requiresAuth?s:{}}}}};function B(e$1){class t extends e$1{requiresAuth=true;requiredRoles;requiredPermissions;requireAllRoles=false;async authorize(s,r){return true}getUser(){let r=this.getContext().var.user;if(!r)throw new e("Authentication required");return r}getUserOrNull(){return this.getContext().var.user}getUserId(){return this.getUser().id}getUserIdOrNull(){return this.getUserOrNull()?.id}getUserRoles(){return this.getUser().roles||[]}getUserPermissions(){return this.getUser().permissions||[]}hasRole(s){let r=this.getUserOrNull();return r?(r.roles||[]).includes(s):false}hasAnyRole(...s){let r=this.getUserOrNull()?.roles||[];return s.some(o=>r.includes(o))}hasAllRoles(...s){let r=this.getUserOrNull()?.roles||[];return s.every(o=>r.includes(o))}hasPermission(s){let r=this.getUserOrNull();return r?(r.permissions||[]).includes(s):false}hasAllPermissions(...s){let r=this.getUserOrNull()?.permissions||[];return s.every(o=>r.includes(o))}hasAnyPermission(...s){let r=this.getUserOrNull()?.permissions||[];return s.some(o=>r.includes(o))}async enforceAuth(){let s=this.getContext();if(this.requiresAuth&&!s.var.user)throw new e("Authentication required");let r=s.var.user;if(!r)return;if(this.requiredRoles&&this.requiredRoles.length>0){let l=r.roles||[];if(this.requireAllRoles){if(!this.requiredRoles.every(h=>l.includes(h)))throw new f$1(`Required roles: ${this.requiredRoles.join(" and ")}`)}else if(!this.requiredRoles.some(h=>l.includes(h)))throw new f$1(`Required role: ${this.requiredRoles.join(" or ")}`)}if(this.requiredPermissions&&this.requiredPermissions.length>0){let l=r.permissions||[];if(!this.requiredPermissions.every(h=>l.includes(h)))throw new f$1(`Required permissions: ${this.requiredPermissions.join(", ")}`)}if(!await this.authorize(r,s))throw new f$1("Access denied")}getSchema(){let s=super.getSchema(),r=this.requiresAuth?[{bearerAuth:[]}]:void 0,o={401:{description:"Unauthorized - Authentication required",content:{"application/json":{schema:z$1.object({success:z$1.literal(false),error:z$1.object({code:z$1.literal("UNAUTHORIZED"),message:z$1.string()})})}}},403:{description:"Forbidden - Insufficient permissions",content:{"application/json":{schema:z$1.object({success:z$1.literal(false),error:z$1.object({code:z$1.literal("FORBIDDEN"),message:z$1.string()})})}}}};return {...s,security:r,responses:{...s.responses,...this.requiresAuth?o:{}}}}}return t}export{P as a,K as b,S as c,f as d,E as e,O as f,j as g,w as h,v as i,I as j,N as k,C as l,V as m,L as n,T as o,B as p};
|
|
1
|
+
import {b as b$2}from'./chunk-4PBGEU64.js';import {b as b$1}from'./chunk-2M5BM4VD.js';import {e,f as f$1}from'./chunk-FC56WWPB.js';import {z as z$1}from'zod';import {decode,verify}from'hono/jwt';var P=z$1.object({sub:z$1.string().optional(),iss:z$1.string().optional(),aud:z$1.union([z$1.string(),z$1.array(z$1.string())]).optional(),exp:z$1.number().int().optional(),nbf:z$1.number().int().optional(),iat:z$1.number().int().optional(),jti:z$1.string().optional()}).passthrough();function K(e){return P.parse(e)}function S(e){return P.safeParse(e)}z$1.object({id:z$1.string(),tenantId:z$1.string().optional(),organizationId:z$1.string().optional(),userId:z$1.string().optional(),actorUserId:z$1.string().optional(),onBehalfOfUserId:z$1.string().optional(),agentId:z$1.string().optional(),agentRunId:z$1.string().optional(),toolCallId:z$1.string().optional(),source:z$1.enum(["http","agent-mcp","agent-code-mode","workflow","job","system"]),toolName:z$1.string(),input:z$1.unknown(),status:z$1.enum(["pending","approved","rejected","expired"]),createdAt:z$1.iso.datetime(),expiresAt:z$1.iso.datetime(),reason:z$1.string(),approvedBy:z$1.string().optional(),approvedAt:z$1.iso.datetime().optional(),rejectedBy:z$1.string().optional(),rejectedReason:z$1.string().optional()});function f(e$1,t={}){let{clockTolerance:n=0,issuer:s,audience:r,skipTimeValidation:o=false}=t;if(!o){let l=Math.floor(Date.now()/1e3);if(e$1.exp!==void 0&&l>e$1.exp+n)throw new e("Token has expired");if(e$1.nbf!==void 0&&l<e$1.nbf-n)throw new e("Token not yet valid")}if(s!==void 0&&e$1.iss!==s)throw new e("Invalid token issuer");if(r!==void 0){let l=Array.isArray(r)?r:[r],u=Array.isArray(e$1.aud)?e$1.aud:[e$1.aud];if(!l.some(A=>u.includes(A)))throw new e("Invalid token audience")}}function b(e){if(!["HS256","HS384","HS512","RS256","RS384","RS512","ES256","ES384","ES512"].includes(e))throw new Error(`Unsupported algorithm: ${e}`);return e}function J(e){let t=e.req.header("Authorization");if(!t)return null;let n=t.split(" ");return n.length!==2||n[0].toLowerCase()!=="bearer"?null:n[1]}function W(e){return {id:String(e.sub||e.id||""),email:e.email,roles:e.roles||e.role,permissions:e.permissions,metadata:e.metadata}}function E(e$1){let t=b(e$1.algorithm||"HS256"),n=e$1.clockTolerance||0,s=e$1.extractToken||J,r=e$1.extractUser||W;return async(o,l)=>{let u=s(o);if(!u)throw new e("Missing authentication token");let h=decode(u);if(!h||!h.header)throw new e("Invalid token format");if(h.header.alg!==t)throw new e("Invalid token algorithm");let A;try{A=await verify(u,e$1.secret,t);}catch(c){if(c instanceof Error){if(c.message.includes("expired")||c.name==="JwtTokenExpired")throw new e("Token has expired");if(c.message.includes("signature")||c.name==="JwtTokenSignatureMismatched")throw new e("Invalid token signature");if(c.message.includes("not valid yet")||c.name==="JwtTokenNotYetValid")throw new e("Token not yet valid")}throw new e("Invalid token")}let m=A;f(m,{clockTolerance:n,issuer:e$1.issuer,audience:e$1.audience});let p=r(m);o.set("userId",p.id),o.set("user",p),o.set("roles",p.roles||[]),o.set("permissions",p.permissions||[]),o.set("authType","jwt"),await l();}}async function O(e$1,t){let n=b(t.algorithm||"HS256"),s=t.clockTolerance||0,r=decode(e$1);if(!r||!r.header)throw new e("Invalid token format");if(r.header.alg!==n)throw new e("Invalid token algorithm");let o;try{o=await verify(e$1,t.secret,n);}catch(u){if(u instanceof Error){if(u.message.includes("expired")||u.name==="JwtTokenExpired")throw new e("Token has expired");if(u.message.includes("signature")||u.name==="JwtTokenSignatureMismatched")throw new e("Invalid token signature");if(u.message.includes("not valid yet")||u.name==="JwtTokenNotYetValid")throw new e("Token not yet valid")}throw new e("Invalid token")}let l=o;return f(l,{clockTolerance:s,issuer:t.issuer,audience:t.audience}),l}function j(e){try{let t=decode(e);return !t||!t.header||!t.payload?null:{header:t.header,payload:t.payload}}catch{return null}}function w(e$1){if(!e$1)throw new e("Invalid API key");if(!e$1.active)throw new e("API key has been revoked");if(e$1.expiresAt&&new Date>e$1.expiresAt)throw new e("API key has expired");return e$1}async function v(e){let n=new TextEncoder().encode(e),s=await crypto.subtle.digest("SHA-256",n),r=new Uint8Array(s);return Array.from(r).map(o=>o.toString(16).padStart(2,"0")).join("")}function H(e){return {id:e.userId,roles:e.roles,permissions:e.permissions,metadata:{...e.metadata,apiKeyId:e.id,apiKeyName:e.name}}}function M(e,t){return e.req.header(t)||null}function z(e,t){return e.req.query(t)||null}function I(e$1){let t=e$1.headerName||"X-API-Key",n=e$1.queryParam??null,s=e$1.hashKey||v,r=e$1.extractUser||H;return async(o,l)=>{let u=M(o,t);if(!u&&n&&(u=z(o,n)),!u)throw new e("Missing API key");let h=await s(u),A=await e$1.lookupKey(h),m=w(A),p=r(m);o.set("userId",p.id),o.set("user",p),o.set("roles",p.roles||[]),o.set("permissions",p.permissions||[]),o.set("authType","api-key"),e$1.updateLastUsed&&Promise.resolve(e$1.updateLastUsed(m.id)).catch(()=>{}),await l();}}async function N(e,t){let s=await(t.hashKey||v)(e),r=await t.lookupKey(s);return w(r)}function C(e$1){let t=e$1.requireAuth??true,n=e$1.skipPaths||[],s=e$1.unauthorizedMessage||"Unauthorized",r=e$1.authOrder||["jwt","api-key"],o=e$1.jwt?E(e$1.jwt):null,l=e$1.apiKey?I(e$1.apiKey):null;return async(u,h)=>{let A=u.req.path;if(b$1(A,n))return u.set("authType","none"),h();let m=false,p=null;for(let c of r)try{if(c==="jwt"&&o&&u.req.header("Authorization")?.toLowerCase().startsWith("bearer ")){await o(u,async()=>{}),m=!0;break}if(c==="api-key"&&l){let y=e$1.apiKey?.headerName||"X-API-Key",R=e$1.apiKey?.queryParam;if(u.req.header(y)||R&&u.req.query(R)){await l(u,async()=>{}),m=!0;break}}}catch(y){p=y instanceof Error?y:new Error(String(y));}if(!m){if(t)throw p instanceof e?p:new e(s);u.set("authType","none");}await h();}}function V(e){return C({...e,requireAuth:false})}function L(e){return C({...e,requireAuth:true})}var T=class extends b$2{requiresAuth=true;requiredRoles;requiredPermissions;requireAllRoles=false;async authorize(t,n){return true}getUser(){let n=this.getContext().var.user;if(!n)throw new e("Authentication required");return n}getUserOrNull(){return this.getContext().var.user}getUserId(){return this.getUser().id}getUserIdOrNull(){return this.getUserOrNull()?.id}getUserRoles(){return this.getUser().roles||[]}getUserPermissions(){return this.getUser().permissions||[]}hasRole(t){return this.getUserRoles().includes(t)}hasAnyRole(...t){let n=this.getUserRoles();return t.some(s=>n.includes(s))}hasAllRoles(...t){let n=this.getUserRoles();return t.every(s=>n.includes(s))}hasPermission(t){return this.getUserPermissions().includes(t)}hasAllPermissions(...t){let n=this.getUserPermissions();return t.every(s=>n.includes(s))}hasAnyPermission(...t){let n=this.getUserPermissions();return t.some(s=>n.includes(s))}async enforceAuth(){let t=this.getContext();if(this.requiresAuth&&!t.var.user)throw new e("Authentication required");let n=t.var.user;if(!n)return;if(this.requiredRoles&&this.requiredRoles.length>0){let r=n.roles||[];if(this.requireAllRoles){if(!this.requiredRoles.every(l=>r.includes(l)))throw new f$1(`Required roles: ${this.requiredRoles.join(" and ")}`)}else if(!this.requiredRoles.some(l=>r.includes(l)))throw new f$1(`Required role: ${this.requiredRoles.join(" or ")}`)}if(this.requiredPermissions&&this.requiredPermissions.length>0){let r=n.permissions||[];if(!this.requiredPermissions.every(l=>r.includes(l)))throw new f$1(`Required permissions: ${this.requiredPermissions.join(", ")}`)}if(!await this.authorize(n,t))throw new f$1("Access denied")}getSchema(){let t=super.getSchema(),n=this.requiresAuth?[{bearerAuth:[]}]:void 0,s={401:{description:"Unauthorized - Authentication required",content:{"application/json":{schema:z$1.object({success:z$1.literal(false),error:z$1.object({code:z$1.literal("UNAUTHORIZED"),message:z$1.string()})})}}},403:{description:"Forbidden - Insufficient permissions",content:{"application/json":{schema:z$1.object({success:z$1.literal(false),error:z$1.object({code:z$1.literal("FORBIDDEN"),message:z$1.string()})})}}}};return {...t,security:n,responses:{...t.responses,...this.requiresAuth?s:{}}}}};function B(e$1){class t extends e$1{requiresAuth=true;requiredRoles;requiredPermissions;requireAllRoles=false;async authorize(s,r){return true}getUser(){let r=this.getContext().var.user;if(!r)throw new e("Authentication required");return r}getUserOrNull(){return this.getContext().var.user}getUserId(){return this.getUser().id}getUserIdOrNull(){return this.getUserOrNull()?.id}getUserRoles(){return this.getUser().roles||[]}getUserPermissions(){return this.getUser().permissions||[]}hasRole(s){let r=this.getUserOrNull();return r?(r.roles||[]).includes(s):false}hasAnyRole(...s){let r=this.getUserOrNull()?.roles||[];return s.some(o=>r.includes(o))}hasAllRoles(...s){let r=this.getUserOrNull()?.roles||[];return s.every(o=>r.includes(o))}hasPermission(s){let r=this.getUserOrNull();return r?(r.permissions||[]).includes(s):false}hasAllPermissions(...s){let r=this.getUserOrNull()?.permissions||[];return s.every(o=>r.includes(o))}hasAnyPermission(...s){let r=this.getUserOrNull()?.permissions||[];return s.some(o=>r.includes(o))}async enforceAuth(){let s=this.getContext();if(this.requiresAuth&&!s.var.user)throw new e("Authentication required");let r=s.var.user;if(!r)return;if(this.requiredRoles&&this.requiredRoles.length>0){let l=r.roles||[];if(this.requireAllRoles){if(!this.requiredRoles.every(h=>l.includes(h)))throw new f$1(`Required roles: ${this.requiredRoles.join(" and ")}`)}else if(!this.requiredRoles.some(h=>l.includes(h)))throw new f$1(`Required role: ${this.requiredRoles.join(" or ")}`)}if(this.requiredPermissions&&this.requiredPermissions.length>0){let l=r.permissions||[];if(!this.requiredPermissions.every(h=>l.includes(h)))throw new f$1(`Required permissions: ${this.requiredPermissions.join(", ")}`)}if(!await this.authorize(r,s))throw new f$1("Access denied")}getSchema(){let s=super.getSchema(),r=this.requiresAuth?[{bearerAuth:[]}]:void 0,o={401:{description:"Unauthorized - Authentication required",content:{"application/json":{schema:z$1.object({success:z$1.literal(false),error:z$1.object({code:z$1.literal("UNAUTHORIZED"),message:z$1.string()})})}}},403:{description:"Forbidden - Insufficient permissions",content:{"application/json":{schema:z$1.object({success:z$1.literal(false),error:z$1.object({code:z$1.literal("FORBIDDEN"),message:z$1.string()})})}}}};return {...s,security:r,responses:{...s.responses,...this.requiresAuth?o:{}}}}}return t}export{P as a,K as b,S as c,f as d,E as e,O as f,j as g,w as h,v as i,I as j,N as k,C as l,V as m,L as n,T as o,B as p};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import {e,f}from'./chunk-FC56WWPB.js';import {q as q$1}from'./chunk-
|
|
1
|
+
import {e,f}from'./chunk-FC56WWPB.js';import {q as q$1}from'./chunk-FHABLABR.js';import {b}from'./chunk-DMGP7QDL.js';import {b as b$1,a}from'./chunk-VJRDAVID.js';import {z as z$1}from'zod';function E(r,e){try{return r.req.valid(e)}catch{return}}function w(r,e,n){return r.json(e,n)}var S=class{static isRoute=true;schema={};params={};context=null;getSchema(){return this.schema}async getValidatedData(){if(!this.context)throw new Error("Context not set. Call setContext() first.");let e=this.context,n=this.getSchema(),t={};if(n.request?.body){let o=E(e,"json");if(o===void 0)try{o=await e.req.json();}catch{}o!==void 0&&(t.body=o);}if(n.request?.query){let o=E(e,"query");o===void 0&&(o=e.req.query()),o!==void 0&&(t.query=o);}if(n.request?.params){let o=E(e,"param");o===void 0&&(o=e.req.param()),o!==void 0&&(t.params=o);}return t}setContext(e){this.context=e;}getContext(){if(!this.context)throw new Error("Context not set");return this.context}json(e,n=200){return w(this.getContext(),e,n)}getResponseEnvelope(){return this.context?this.context?.var?.[q$1]??void 0:void 0}success(e,n=200){let t=this.getResponseEnvelope(),o=t?t.success(e):{success:true,result:e};return w(this.getContext(),o,n)}successPaginated(e,n,t=200){let o=this.getResponseEnvelope(),s=o?o.success(e,n):{success:true,result:e,result_info:n};return w(this.getContext(),s,t)}runAfterResponse(e){let n;try{let t=this.getContext().executionCtx;t&&typeof t.waitUntil=="function"&&(n=t.waitUntil.bind(t));}catch{}n?n(e):e.catch(t=>{b().error("Background task failed",{error:t instanceof Error?t.message:String(t)});});}error(e,n="ERROR",t=400,o){let s={code:n,message:e};o&&(s.details=o);let i=this.getResponseEnvelope(),p=i?i.error(s):{success:false,error:s};return w(this.getContext(),p,t)}};function z(r){return typeof r=="function"&&"isRoute"in r&&r.isRoute===true}var j=/^P(?:(\d+)D)?(?:T(?:(\d+)H)?(?:(\d+)M)?(?:(\d+)S)?)?$/;function C(r){let e=j.exec(r);if(!e)throw new Error(`Invalid ISO 8601 duration: ${r}. Use P[nD][T[nH][nM][nS]] (years and months unsupported).`);let[,n,t,o,s]=e,i=(n?Number(n)*864e5:0)+(t?Number(t)*36e5:0)+(o?Number(o)*6e4:0)+(s?Number(s)*1e3:0);if(i===0&&r!=="PT0S"&&r!=="P0D")throw new Error(`ISO 8601 duration ${r} parsed to zero milliseconds \u2014 verify the format.`);return i}var g=class{store=new Map;async create(e){this.store.set(e.id,{...e});}async get(e){let n=this.store.get(e);if(!n)return null;if(n.status==="pending"&&Date.parse(n.expiresAt)<=Date.now()){let t={...n,status:"expired"};return this.store.set(e,t),t}return {...n}}async approve(e,n){let t=await this.get(e);if(!t)throw new Error(`Pending action ${e} not found`);if(t.status!=="pending")throw new Error(`Pending action ${e} cannot be approved from status '${t.status}'`);this.store.set(e,{...t,status:"approved",approvedBy:n,approvedAt:new Date().toISOString()});}async reject(e,n,t){let o=await this.get(e);if(!o)throw new Error(`Pending action ${e} not found`);if(o.status!=="pending")throw new Error(`Pending action ${e} cannot be rejected from status '${o.status}'`);this.store.set(e,{...o,status:"rejected",rejectedBy:n,rejectedReason:t});}clear(){this.store.clear();}};function _(r){return r!==null&&typeof r=="object"&&!Array.isArray(r)}var m,q=false;function D(){return m||(m=new g),q||(q=true,b().warn("requireApproval: no approvalStorage configured \u2014 using process-local in-memory storage. NOT safe for multi-instance / serverless / edge-isolate deployments where phase 1 and phase 2 may hit different processes. Pass an explicit approvalStorage (e.g. PostgresApprovalStorage) for production. This warning is logged once per process.")),m}var H="__honoCrudPolicies";function F(...r){return async(e$1,n)=>{let t=e$1.var.user;if(!t)throw new e("Authentication required");let o=t.roles||[];if(!r.some(i=>o.includes(i)))throw new f("Insufficient permissions");await n();}}function Q(...r){return async(e$1,n)=>{let t=e$1.var.user;if(!t)throw new e("Authentication required");let o=t.roles||[];if(!r.every(i=>o.includes(i)))throw new f("Insufficient permissions");await n();}}function ee(...r){return async(e$1,n)=>{let t=e$1.var.user;if(!t)throw new e("Authentication required");let o=t.permissions||[];if(!r.every(i=>o.includes(i)))throw new f("Insufficient permissions");await n();}}function te(...r){return async(e$1,n)=>{let t=e$1.var.user;if(!t)throw new e("Authentication required");let o=t.permissions||[];if(!r.some(i=>o.includes(i)))throw new f("Insufficient permissions");await n();}}function ne(r){return async(e$1,n)=>{let t=e$1.var.user;if(!t)throw new e("Authentication required");if(!await r(t,e$1))throw new f("Access denied");await n();}}function re(r){return async(e$1,n)=>{let t=e$1.var.user;if(!t)throw new e("Authentication required");let o=await r(e$1);if(t.id!==o)throw new f("Access denied: not resource owner");await n();}}function oe(r,...e$1){return async(n,t)=>{let o=n.var.user;if(!o)throw new e("Authentication required");let s=o.roles||[];if(e$1.some(l=>s.includes(l))){await t();return}let p=await r(n);if(o.id===p){await t();return}throw new f("Access denied")}}function se(...r){return async(e,n)=>{for(let t of r)await t(e,async()=>{});await n();}}function ie(...r){return async(e,n)=>{let t=null;for(let o of r)try{await o(e,async()=>{}),await n();return}catch(s){t=s instanceof Error?s:new Error(String(s));}throw t||new f("Access denied")}}function ae(r="Access denied"){return async()=>{throw new f(r)}}function ue(){return async(r,e)=>{await e();}}function de(){return async(r,e$1)=>{if(!r.var.user)throw new e("Authentication required");await e$1();}}function ce(r){return async(e,n)=>{b$1(e,H,r),await n();}}function pe(r){let e=r.approvalStorage??D(),n=r.resumeMarker??"_resume_",t=C(r.expiresAfter??"P1D"),o=z$1.object({[n]:z$1.string()}).loose();return async(s,i)=>{let p={};try{let c=await s.req.json();_(c)&&(p=c);}catch{}let l=o.safeParse(p).data?.[n];if(l){let c=await e.get(l);if(!c)throw new f(`Pending action ${l} not found`);if(c.status==="expired")throw new f(`Pending action ${l} has expired`);if(c.status!=="approved")throw new f(`Pending action ${l} is ${c.status}, cannot resume`);$(s,c.input),await i();return}let v=a(s,"userId"),A=a(s,"agentId"),O=a(s,"agentRunId"),b=a(s,"onBehalfOfUserId"),I=a(s,"toolCallId"),k=a(s,"tenantId"),M=a(s,"organizationId"),T=a(s,"actionSource")??(A?"agent-mcp":"http"),y=Date.now(),h={id:crypto.randomUUID(),tenantId:k,organizationId:M,userId:v,actorUserId:v,onBehalfOfUserId:b,agentId:A,agentRunId:O,toolCallId:I,source:T,toolName:r.toolName??`${s.req.method} ${s.req.path}`,input:p,status:"pending",createdAt:new Date(y).toISOString(),expiresAt:new Date(y+t).toISOString(),reason:r.reason};return await e.create(h),s.json({status:"pending",actionId:h.id,expiresAt:h.expiresAt,reason:h.reason},202)}}function $(r,e){let n=r.req,t=Promise.resolve(JSON.stringify(e));n.bodyCache?(n.bodyCache.text=t,delete n.bodyCache.parsedBody,delete n.bodyCache.json):n.bodyCache={text:t};}export{w as a,S as b,z as c,C as d,g as e,H as f,F as g,Q as h,ee as i,te as j,ne as k,re as l,oe as m,se as n,ie as o,ae as p,ue as q,de as r,ce as s,pe as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import {o,p,q,r,s,u,w,x as x$1,y,z,A,h,j as j$1,t,v as v$1,B,C,D,E,F,G,O,P,Y,Z}from'./chunk-M7YICFXP.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 o{_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 p{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 q{_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 r{_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 s{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 u{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 w{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 x$1{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 y{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 z{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 A{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 h{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=j$1(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 t{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 v$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}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 B{async recordExists(n){return m(this._meta.model.tableName).has(n)}},ye=class extends C{},xe=class extends D{},Oe=class extends E{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 F{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 G(t,n)}},ke=class extends O{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=P(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 Y{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 Z{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-
|
|
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 +1 @@
|
|
|
1
|
-
import {a}from'./chunk-VJRDAVID.js';function T(e){return btoa(String(e))}function h(e){try{return atob(e)}catch{return null}}function C(e,t){let n={},o={};for(let[a,r]of Object.entries(e))t.includes(a)&&r!==void 0?o[a]=r:n[a]=r;return {mainData:n,nestedData:o}}function k(e){if(Array.isArray(e))return true;if(typeof e=="object"&&e!==null){let t=Object.keys(e),n=["create","update","delete","connect","disconnect","set"];return !t.some(o=>n.includes(o))}return false}function w(e){return !e||!e.enabled?{enabled:false,tableName:"audit_logs",actions:[],excludeFields:[],storeRecord:true,storePreviousRecord:true,trackChanges:true}:{enabled:true,tableName:e.tableName||"audit_logs",actions:e.actions||["create","update","delete"],excludeFields:e.excludeFields||[],storeRecord:e.storeRecord??true,storePreviousRecord:e.storePreviousRecord??true,trackChanges:e.trackChanges??true,getUserId:e.getUserId}}function R(e,t,n=[]){let o=[];if(!e&&!t)return o;let a=new Set([...Object.keys(e||{}),...Object.keys(t||{})]);for(let r of a){if(n.includes(r))continue;let l=e?.[r],u=t?.[r],g=JSON.stringify(l),p=JSON.stringify(u);g!==p&&o.push({field:r,oldValue:l,newValue:u});}return o}function A(e,t){return !e||!e.enabled?{enabled:false,field:"version",historyTable:`${t}_history`,maxVersions:null,trackChangedBy:false,excludeFields:[]}:{enabled:true,field:e.field||"version",historyTable:e.historyTable||`${t}_history`,maxVersions:e.maxVersions??null,trackChangedBy:e.trackChangedBy??false,excludeFields:e.excludeFields||[],getUserId:e.getUserId}}function I(e){let t=e.split(":");if(t.length<2)return null;let n=t[0].toLowerCase();return ["count","sum","avg","min","max","countdistinct"].includes(n)?{operation:n==="countdistinct"?"countDistinct":n,field:t[1],alias:t[2]}:null}function P(e){let t=[],n={},o=["count","sum","avg","min","max","countDistinct"];for(let i of o){let s=e[i];if(s){let c=Array.isArray(s)?s:[s];for(let d of c)typeof d=="string"&&t.push({operation:i,field:d==="true"||d===""?"*":d});}}let a;if(e.groupBy){let i=e.groupBy;typeof i=="string"?a=i.split(",").map(s=>s.trim()):Array.isArray(i)&&(a=i.filter(s=>typeof s=="string"));}let r;for(let[i,s]of Object.entries(e)){let c=i.match(/^having\[(\w+)\]\[(\w+)\]$/);if(c){let[,d,m]=c;r||(r={}),r[d]||(r[d]={}),r[d][m]=s;}}let l=typeof e.orderBy=="string"?e.orderBy:void 0,u=e.orderDirection==="desc"?"desc":"asc",g=typeof e.limit=="string"?parseInt(e.limit,10):void 0,p=typeof e.offset=="string"?parseInt(e.offset,10):void 0,x=[...o,"groupBy","orderBy","orderDirection","limit","offset"];for(let[i,s]of Object.entries(e))!x.includes(i)&&!i.startsWith("having[")&&(n[i]=s);return {aggregations:t,groupBy:a,filters:Object.keys(n).length>0?n:void 0,having:r,orderBy:l,orderDirection:u,limit:g,offset:p}}async function y(e,t){if(!t||Object.keys(t).length===0)return e;let n={...e};for(let[o,a]of Object.entries(t))try{let r=await a.compute(e);n[o]=r;}catch{n[o]=void 0;}return n}async function O(e,t){return !t||Object.keys(t).length===0?e:Promise.all(e.map(n=>y(n,t)))}function F(e){return e}function
|
|
1
|
+
import {a}from'./chunk-VJRDAVID.js';function T(e){return btoa(String(e))}function h(e){try{return atob(e)}catch{return null}}function C(e,t){let n={},o={};for(let[a,r]of Object.entries(e))t.includes(a)&&r!==void 0?o[a]=r:n[a]=r;return {mainData:n,nestedData:o}}function k(e){if(Array.isArray(e))return true;if(typeof e=="object"&&e!==null){let t=Object.keys(e),n=["create","update","delete","connect","disconnect","set"];return !t.some(o=>n.includes(o))}return false}function w(e){return !e||!e.enabled?{enabled:false,tableName:"audit_logs",actions:[],excludeFields:[],storeRecord:true,storePreviousRecord:true,trackChanges:true}:{enabled:true,tableName:e.tableName||"audit_logs",actions:e.actions||["create","update","delete"],excludeFields:e.excludeFields||[],storeRecord:e.storeRecord??true,storePreviousRecord:e.storePreviousRecord??true,trackChanges:e.trackChanges??true,getUserId:e.getUserId}}function R(e,t,n=[]){let o=[];if(!e&&!t)return o;let a=new Set([...Object.keys(e||{}),...Object.keys(t||{})]);for(let r of a){if(n.includes(r))continue;let l=e?.[r],u=t?.[r],g=JSON.stringify(l),p=JSON.stringify(u);g!==p&&o.push({field:r,oldValue:l,newValue:u});}return o}function A(e,t){return !e||!e.enabled?{enabled:false,field:"version",historyTable:`${t}_history`,maxVersions:null,trackChangedBy:false,excludeFields:[]}:{enabled:true,field:e.field||"version",historyTable:e.historyTable||`${t}_history`,maxVersions:e.maxVersions??null,trackChangedBy:e.trackChangedBy??false,excludeFields:e.excludeFields||[],getUserId:e.getUserId}}function I(e){let t=e.split(":");if(t.length<2)return null;let n=t[0].toLowerCase();return ["count","sum","avg","min","max","countdistinct"].includes(n)?{operation:n==="countdistinct"?"countDistinct":n,field:t[1],alias:t[2]}:null}function P(e){let t=[],n={},o=["count","sum","avg","min","max","countDistinct"];for(let i of o){let s=e[i];if(s){let c=Array.isArray(s)?s:[s];for(let d of c)typeof d=="string"&&t.push({operation:i,field:d==="true"||d===""?"*":d});}}let a;if(e.groupBy){let i=e.groupBy;typeof i=="string"?a=i.split(",").map(s=>s.trim()):Array.isArray(i)&&(a=i.filter(s=>typeof s=="string"));}let r;for(let[i,s]of Object.entries(e)){let c=i.match(/^having\[(\w+)\]\[(\w+)\]$/);if(c){let[,d,m]=c;r||(r={}),r[d]||(r[d]={}),r[d][m]=s;}}let l=typeof e.orderBy=="string"?e.orderBy:void 0,u=e.orderDirection==="desc"?"desc":"asc",g=typeof e.limit=="string"?parseInt(e.limit,10):void 0,p=typeof e.offset=="string"?parseInt(e.offset,10):void 0,x=[...o,"groupBy","orderBy","orderDirection","limit","offset"];for(let[i,s]of Object.entries(e))!x.includes(i)&&!i.startsWith("having[")&&(n[i]=s);return {aggregations:t,groupBy:a,filters:Object.keys(n).length>0?n:void 0,having:r,orderBy:l,orderDirection:u,limit:g,offset:p}}async function y(e,t){if(!t||Object.keys(t).length===0)return e;let n={...e};for(let[o,a]of Object.entries(t))try{let r=await a.compute(e);n[o]=r;}catch{n[o]=void 0;}return n}async function O(e,t){return !t||Object.keys(t).length===0?e:Promise.all(e.map(n=>y(n,t)))}function F(e){return e}function S(e){return e}function v(e){return e?e===true?{enabled:true,field:"deletedAt",allowQueryDeleted:true,queryParam:"withDeleted"}:{enabled:true,field:e.field??"deletedAt",allowQueryDeleted:e.allowQueryDeleted??true,queryParam:e.queryParam??"withDeleted"}:{enabled:false,field:"deletedAt",allowQueryDeleted:true,queryParam:"withDeleted"}}function M(e){let t={enabled:false,field:"tenantId",source:"context",headerName:"X-Tenant-ID",contextKey:"tenantId",pathParam:"tenantId",required:true,errorMessage:"Tenant ID is required"};return e?e===true?{...t,enabled:true}:{enabled:true,field:e.field??t.field,source:e.source??t.source,headerName:e.headerName??t.headerName,contextKey:e.contextKey??t.contextKey,pathParam:e.pathParam??t.pathParam,getTenantId:e.getTenantId,required:e.required??t.required,errorMessage:e.errorMessage??t.errorMessage}:t}function N(e,t){if(t.enabled)switch(t.source){case "header":return e.req.header(t.headerName);case "context":return a(e,t.contextKey);case "path":return e.req.param(t.pathParam);case "custom":return t.getTenantId?t.getTenantId(e):void 0;default:return}}var D="__honoCrudResponseEnvelope__";function _(e){return e==="all"||e==="phrase"?e:"any"}export{T as a,h as b,C as c,k as d,w as e,R as f,A as g,I as h,P as i,y as j,O as k,F as l,S as m,v as n,M as o,N as p,D as q,_ as r};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import {e,f}from'./chunk-
|
|
1
|
+
import {e,f}from'./chunk-FHABLABR.js';import {c}from'./chunk-GBQQ3YQX.js';var a=class{logs=[];async store(t){this.logs.push(t);}async getByRecordId(t,e,r){let n=this.logs.filter(s=>s.tableName===t&&s.recordId===e),i=r?.offset||0,o=r?.limit||n.length;return n.slice(i,i+o)}async getAll(t){let e=[...this.logs];t?.tableName&&(e=e.filter(i=>i.tableName===t.tableName)),t?.action&&(e=e.filter(i=>i.action===t.action)),t?.userId&&(e=e.filter(i=>i.userId===t.userId)),t?.startDate&&(e=e.filter(i=>i.timestamp>=t.startDate)),t?.endDate&&(e=e.filter(i=>i.timestamp<=t.endDate));let r=t?.offset||0,n=t?.limit||e.length;return e.slice(r,r+n)}getAllLogs(){return [...this.logs]}clear(){this.logs=[];}},l=c("auditStorage",()=>new a);function A(d){l.set(d);}function R(){return l.getRequired()}var u=class{config;storage;constructor(t,e$1,r){this.config=e(t),this.storage=l.resolve(r,e$1);}getStorage(){if(!this.storage)throw new Error("Audit storage not configured. Pass storage explicitly or inject auditStorage with createCrudMiddleware().");return this.storage}isEnabled(t){return this.config.enabled&&this.config.actions.includes(t)}async logCreate(t,e,r,n,i){if(!this.isEnabled("create"))return;let o=this.createEntry("create",t,e,n,i);this.config.storeRecord&&(o.record=this.filterFields(r)),await this.getStorage().store(o);}async logUpdate(t,e,r,n,i,o){if(!this.isEnabled("update"))return;let s=this.createEntry("update",t,e,i,o);this.config.storeRecord&&(s.record=this.filterFields(n)),this.config.storePreviousRecord&&(s.previousRecord=this.filterFields(r)),this.config.trackChanges&&(s.changes=f(r,n,this.config.excludeFields)),await this.getStorage().store(s);}async logDelete(t,e,r,n,i){if(!this.isEnabled("delete"))return;let o=this.createEntry("delete",t,e,n,i);this.config.storePreviousRecord&&(o.previousRecord=this.filterFields(r)),await this.getStorage().store(o);}async logRestore(t,e,r,n,i){if(!this.isEnabled("restore"))return;let o=this.createEntry("restore",t,e,n,i);this.config.storeRecord&&(o.record=this.filterFields(r)),await this.getStorage().store(o);}async logUpsert(t,e,r,n,i,o,s){if(!this.isEnabled("upsert"))return;let g=this.createEntry("upsert",t,e,o,{...s,created:i});this.config.storeRecord&&(g.record=this.filterFields(r)),this.config.storePreviousRecord&&n&&(g.previousRecord=this.filterFields(n)),this.config.trackChanges&&n&&(g.changes=f(n,r,this.config.excludeFields)),await this.getStorage().store(g);}async logBatch(t,e,r,n,i){if(this.isEnabled(t))for(let o of r){let s=this.createEntry(t,e,o.recordId,n,i);this.config.storeRecord&&o.record&&(s.record=this.filterFields(o.record)),this.config.storePreviousRecord&&o.previousRecord&&(s.previousRecord=this.filterFields(o.previousRecord)),this.config.trackChanges&&o.previousRecord&&o.record&&(s.changes=f(o.previousRecord,o.record,this.config.excludeFields)),await this.getStorage().store(s);}}createEntry(t,e,r,n,i){return {id:crypto.randomUUID(),timestamp:new Date,action:t,tableName:e,recordId:r,userId:n,metadata:i}}filterFields(t){if(this.config.excludeFields.length===0)return t;let e={};for(let[r,n]of Object.entries(t))this.config.excludeFields.includes(r)||(e[r]=n);return e}};function b(d,t,e){return new u(d,t,e)}export{a,l as b,A as c,R as d,u as e,b as f};
|