glasswork 1.0.1 → 1.2.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.
Files changed (247) hide show
  1. package/CHANGELOG.md +48 -1
  2. package/README.md +37 -2
  3. package/dist/audit/audit-logger.d.ts +22 -0
  4. package/dist/audit/audit-logger.d.ts.map +1 -0
  5. package/dist/audit/audit-logger.js +44 -0
  6. package/dist/audit/audit-logger.js.map +1 -0
  7. package/dist/audit/context.d.ts +13 -0
  8. package/dist/audit/context.d.ts.map +1 -0
  9. package/dist/audit/context.js +66 -0
  10. package/dist/audit/context.js.map +1 -0
  11. package/dist/audit/index.d.ts +8 -0
  12. package/dist/audit/index.d.ts.map +1 -0
  13. package/dist/audit/index.js +7 -0
  14. package/dist/audit/index.js.map +1 -0
  15. package/dist/audit/types.d.ts +74 -0
  16. package/dist/audit/types.d.ts.map +1 -0
  17. package/dist/audit/types.js +2 -0
  18. package/dist/audit/types.js.map +1 -0
  19. package/dist/auth/abilities.d.ts +1 -1
  20. package/dist/auth/abilities.d.ts.map +1 -1
  21. package/dist/auth/abilities.js.map +1 -1
  22. package/dist/auth/better-auth-provider.d.ts +17 -6
  23. package/dist/auth/better-auth-provider.d.ts.map +1 -1
  24. package/dist/auth/better-auth-provider.js +16 -9
  25. package/dist/auth/better-auth-provider.js.map +1 -1
  26. package/dist/auth/index.d.ts +2 -2
  27. package/dist/auth/index.d.ts.map +1 -1
  28. package/dist/auth/index.js.map +1 -1
  29. package/dist/auth/middleware.d.ts +10 -8
  30. package/dist/auth/middleware.d.ts.map +1 -1
  31. package/dist/auth/middleware.js +27 -11
  32. package/dist/auth/middleware.js.map +1 -1
  33. package/dist/auth/types.d.ts +13 -2
  34. package/dist/auth/types.d.ts.map +1 -1
  35. package/dist/config/config-service.d.ts.map +1 -1
  36. package/dist/config/config-service.js.map +1 -1
  37. package/dist/config/providers.js.map +1 -1
  38. package/dist/core/bootstrap.d.ts.map +1 -1
  39. package/dist/core/bootstrap.js +16 -7
  40. package/dist/core/bootstrap.js.map +1 -1
  41. package/dist/core/module-graph.js +3 -0
  42. package/dist/core/module-graph.js.map +1 -1
  43. package/dist/core/request-scope.d.ts +12 -0
  44. package/dist/core/request-scope.d.ts.map +1 -0
  45. package/dist/core/request-scope.js +86 -0
  46. package/dist/core/request-scope.js.map +1 -0
  47. package/dist/core/route-factory.d.ts +1 -0
  48. package/dist/core/route-factory.d.ts.map +1 -1
  49. package/dist/core/types.d.ts +6 -1
  50. package/dist/core/types.d.ts.map +1 -1
  51. package/dist/email/compiler/compiler.d.ts.map +1 -1
  52. package/dist/email/compiler/compiler.js +72 -20
  53. package/dist/email/compiler/compiler.js.map +1 -1
  54. package/dist/email/compiler/tokenizer.js +4 -2
  55. package/dist/email/compiler/tokenizer.js.map +1 -1
  56. package/dist/email/compiler/types.d.ts +2 -0
  57. package/dist/email/compiler/types.d.ts.map +1 -1
  58. package/dist/email/email-service.d.ts.map +1 -1
  59. package/dist/email/template-registry.d.ts.map +1 -1
  60. package/dist/email/templated-email-service.d.ts.map +1 -1
  61. package/dist/email/transports/mock-transport.d.ts.map +1 -1
  62. package/dist/email/transports/ses-transport.d.ts +8 -0
  63. package/dist/email/transports/ses-transport.d.ts.map +1 -1
  64. package/dist/email/transports/ses-transport.js +132 -25
  65. package/dist/email/transports/ses-transport.js.map +1 -1
  66. package/dist/email/webhooks/handler-factory.d.ts +1 -0
  67. package/dist/email/webhooks/handler-factory.d.ts.map +1 -1
  68. package/dist/email/webhooks/handler-factory.js +40 -38
  69. package/dist/email/webhooks/handler-factory.js.map +1 -1
  70. package/dist/email/webhooks/notification-parser.d.ts +1 -1
  71. package/dist/email/webhooks/notification-parser.js +1 -1
  72. package/dist/email/webhooks/signature-verification.d.ts +4 -2
  73. package/dist/email/webhooks/signature-verification.d.ts.map +1 -1
  74. package/dist/email/webhooks/signature-verification.js +63 -8
  75. package/dist/email/webhooks/signature-verification.js.map +1 -1
  76. package/dist/email/webhooks/subscription-handler.d.ts +4 -2
  77. package/dist/email/webhooks/subscription-handler.d.ts.map +1 -1
  78. package/dist/email/webhooks/subscription-handler.js +42 -6
  79. package/dist/email/webhooks/subscription-handler.js.map +1 -1
  80. package/dist/email/webhooks/types.d.ts +17 -2
  81. package/dist/email/webhooks/types.d.ts.map +1 -1
  82. package/dist/hono-context.d.ts +1 -1
  83. package/dist/hono-context.d.ts.map +1 -1
  84. package/dist/http/error-handler.js.map +1 -1
  85. package/dist/http/errors.d.ts.map +1 -1
  86. package/dist/http/errors.js.map +1 -1
  87. package/dist/http/route-authorization.d.ts +1 -2
  88. package/dist/http/route-authorization.d.ts.map +1 -1
  89. package/dist/http/route-authorization.js.map +1 -1
  90. package/dist/http/route-context.d.ts +4 -2
  91. package/dist/http/route-context.d.ts.map +1 -1
  92. package/dist/http/route-context.js +7 -2
  93. package/dist/http/route-context.js.map +1 -1
  94. package/dist/http/route-helpers.d.ts +3 -3
  95. package/dist/http/route-helpers.d.ts.map +1 -1
  96. package/dist/http/route-helpers.js.map +1 -1
  97. package/dist/http/route-openapi.d.ts +1 -1
  98. package/dist/http/route-openapi.d.ts.map +1 -1
  99. package/dist/http/route-openapi.js.map +1 -1
  100. package/dist/http/route-types.d.ts +26 -23
  101. package/dist/http/route-types.d.ts.map +1 -1
  102. package/dist/jobs/drivers/eventbridge-scheduler-driver.d.ts.map +1 -1
  103. package/dist/jobs/drivers/eventbridge-scheduler-driver.js.map +1 -1
  104. package/dist/jobs/drivers/mock-driver.d.ts.map +1 -1
  105. package/dist/jobs/drivers/mock-driver.js.map +1 -1
  106. package/dist/jobs/drivers/sqs-driver.d.ts.map +1 -1
  107. package/dist/jobs/drivers/sqs-driver.js.map +1 -1
  108. package/dist/jobs/errors.d.ts.map +1 -1
  109. package/dist/jobs/job-registry.d.ts.map +1 -1
  110. package/dist/jobs/job-registry.js.map +1 -1
  111. package/dist/jobs/job-service.d.ts.map +1 -1
  112. package/dist/jobs/job-service.js.map +1 -1
  113. package/dist/jobs/observability/client.d.ts +26 -0
  114. package/dist/jobs/observability/client.d.ts.map +1 -0
  115. package/dist/jobs/observability/client.js +286 -0
  116. package/dist/jobs/observability/client.js.map +1 -0
  117. package/dist/jobs/observability/dashboard.d.ts +19 -0
  118. package/dist/jobs/observability/dashboard.d.ts.map +1 -0
  119. package/dist/jobs/observability/dashboard.js +144 -0
  120. package/dist/jobs/observability/dashboard.js.map +1 -0
  121. package/dist/jobs/observability/emf.d.ts +24 -0
  122. package/dist/jobs/observability/emf.d.ts.map +1 -0
  123. package/dist/jobs/observability/emf.js +100 -0
  124. package/dist/jobs/observability/emf.js.map +1 -0
  125. package/dist/jobs/observability/index.d.ts +5 -0
  126. package/dist/jobs/observability/index.d.ts.map +1 -0
  127. package/dist/jobs/observability/index.js +4 -0
  128. package/dist/jobs/observability/index.js.map +1 -0
  129. package/dist/jobs/observability/types.d.ts +234 -0
  130. package/dist/jobs/observability/types.d.ts.map +1 -0
  131. package/dist/jobs/observability/types.js +2 -0
  132. package/dist/jobs/observability/types.js.map +1 -0
  133. package/dist/jobs/worker.d.ts +3 -1
  134. package/dist/jobs/worker.d.ts.map +1 -1
  135. package/dist/jobs/worker.js +2 -0
  136. package/dist/jobs/worker.js.map +1 -1
  137. package/dist/list-query/builder.d.ts +13 -3
  138. package/dist/list-query/builder.d.ts.map +1 -1
  139. package/dist/list-query/builder.js +45 -17
  140. package/dist/list-query/builder.js.map +1 -1
  141. package/dist/list-query/filter-mapping.d.ts +89 -0
  142. package/dist/list-query/filter-mapping.d.ts.map +1 -0
  143. package/dist/list-query/filter-mapping.js +254 -0
  144. package/dist/list-query/filter-mapping.js.map +1 -0
  145. package/dist/list-query/filter-value-schemas.d.ts +3 -3
  146. package/dist/list-query/filter-value-schemas.d.ts.map +1 -1
  147. package/dist/list-query/filter-value-schemas.js +13 -3
  148. package/dist/list-query/filter-value-schemas.js.map +1 -1
  149. package/dist/list-query/index.d.ts +4 -2
  150. package/dist/list-query/index.d.ts.map +1 -1
  151. package/dist/list-query/index.js +3 -1
  152. package/dist/list-query/index.js.map +1 -1
  153. package/dist/list-query/parse-filter-values.d.ts.map +1 -1
  154. package/dist/list-query/parse-filter-values.js +2 -2
  155. package/dist/list-query/parse-filter-values.js.map +1 -1
  156. package/dist/list-query/parser.d.ts +3 -2
  157. package/dist/list-query/parser.d.ts.map +1 -1
  158. package/dist/list-query/parser.js.map +1 -1
  159. package/dist/list-query/prisma-executor.d.ts +44 -29
  160. package/dist/list-query/prisma-executor.d.ts.map +1 -1
  161. package/dist/list-query/prisma-executor.js +48 -33
  162. package/dist/list-query/prisma-executor.js.map +1 -1
  163. package/dist/list-query/query-schema.d.ts +8 -13
  164. package/dist/list-query/query-schema.d.ts.map +1 -1
  165. package/dist/list-query/query-schema.js +11 -12
  166. package/dist/list-query/query-schema.js.map +1 -1
  167. package/dist/list-query/schema-helpers.d.ts +17 -17
  168. package/dist/list-query/schema-helpers.d.ts.map +1 -1
  169. package/dist/list-query/schema-helpers.js +11 -11
  170. package/dist/list-query/schema-helpers.js.map +1 -1
  171. package/dist/list-query/sort-mapping.d.ts +37 -0
  172. package/dist/list-query/sort-mapping.d.ts.map +1 -0
  173. package/dist/list-query/sort-mapping.js +88 -0
  174. package/dist/list-query/sort-mapping.js.map +1 -0
  175. package/dist/list-query/types.d.ts +3 -10
  176. package/dist/list-query/types.d.ts.map +1 -1
  177. package/dist/list-query/validator.d.ts.map +1 -1
  178. package/dist/list-query/validator.js +28 -10
  179. package/dist/list-query/validator.js.map +1 -1
  180. package/dist/middleware/rate-limit.d.ts.map +1 -1
  181. package/dist/middleware/rate-limit.js +60 -92
  182. package/dist/middleware/rate-limit.js.map +1 -1
  183. package/dist/observability/exception-tracking.d.ts.map +1 -1
  184. package/dist/observability/exception-tracking.js.map +1 -1
  185. package/dist/observability/index.d.ts +1 -1
  186. package/dist/observability/index.d.ts.map +1 -1
  187. package/dist/observability/index.js +1 -1
  188. package/dist/observability/index.js.map +1 -1
  189. package/dist/observability/pino-logger.d.ts +0 -28
  190. package/dist/observability/pino-logger.d.ts.map +1 -1
  191. package/dist/observability/pino-logger.js +21 -12
  192. package/dist/observability/pino-logger.js.map +1 -1
  193. package/dist/observability/request-context.d.ts +36 -1
  194. package/dist/observability/request-context.d.ts.map +1 -1
  195. package/dist/observability/request-context.js +43 -0
  196. package/dist/observability/request-context.js.map +1 -1
  197. package/dist/openapi/openapi.d.ts +1 -4
  198. package/dist/openapi/openapi.d.ts.map +1 -1
  199. package/dist/openapi/openapi.js +15 -35
  200. package/dist/openapi/openapi.js.map +1 -1
  201. package/dist/rls/configuration.d.ts +3 -0
  202. package/dist/rls/configuration.d.ts.map +1 -0
  203. package/dist/rls/configuration.js +13 -0
  204. package/dist/rls/configuration.js.map +1 -0
  205. package/dist/rls/context.d.ts +37 -0
  206. package/dist/rls/context.d.ts.map +1 -0
  207. package/dist/rls/context.js +56 -0
  208. package/dist/rls/context.js.map +1 -0
  209. package/dist/rls/extension.d.ts +7 -0
  210. package/dist/rls/extension.d.ts.map +1 -0
  211. package/dist/rls/extension.js +91 -0
  212. package/dist/rls/extension.js.map +1 -0
  213. package/dist/rls/generator.d.ts +17 -0
  214. package/dist/rls/generator.d.ts.map +1 -0
  215. package/dist/rls/generator.js +47 -0
  216. package/dist/rls/generator.js.map +1 -0
  217. package/dist/rls/index.d.ts +7 -0
  218. package/dist/rls/index.d.ts.map +1 -0
  219. package/dist/rls/index.js +7 -0
  220. package/dist/rls/index.js.map +1 -0
  221. package/dist/rls/middleware.d.ts +17 -0
  222. package/dist/rls/middleware.d.ts.map +1 -0
  223. package/dist/rls/middleware.js +51 -0
  224. package/dist/rls/middleware.js.map +1 -0
  225. package/dist/rls/testing.d.ts +24 -0
  226. package/dist/rls/testing.d.ts.map +1 -0
  227. package/dist/rls/testing.js +31 -0
  228. package/dist/rls/testing.js.map +1 -0
  229. package/dist/rls/types.d.ts +51 -0
  230. package/dist/rls/types.d.ts.map +1 -0
  231. package/dist/rls/types.js +16 -0
  232. package/dist/rls/types.js.map +1 -0
  233. package/dist/sse/index.d.ts +6 -0
  234. package/dist/sse/index.d.ts.map +1 -0
  235. package/dist/sse/index.js +18 -0
  236. package/dist/sse/index.js.map +1 -0
  237. package/dist/sse/sse-broadcaster.d.ts +38 -0
  238. package/dist/sse/sse-broadcaster.d.ts.map +1 -0
  239. package/dist/sse/sse-broadcaster.js +118 -0
  240. package/dist/sse/sse-broadcaster.js.map +1 -0
  241. package/dist/uploads/uploads.service.d.ts.map +1 -1
  242. package/dist/uploads/validators.d.ts.map +1 -1
  243. package/dist/utils/get-client-ip.d.ts.map +1 -1
  244. package/dist/utils/get-client-ip.js +22 -13
  245. package/dist/utils/get-client-ip.js.map +1 -1
  246. package/dist/utils/serialize-prisma-types.js.map +1 -1
  247. package/package.json +56 -35
@@ -6,46 +6,56 @@ export interface PrismaGroupByDelegate {
6
6
  _count: Record<string, number>;
7
7
  }>>;
8
8
  }
9
- /** Minimal Prisma list delegate used by {@link createPrismaListExecutor}. */
10
- export interface PrismaListDelegate<TItem, TWhere, TOrderBy> {
11
- findMany(args: {
9
+ /** Prisma model delegate shape accepted by {@link executePrismaList} and {@link createPrismaListExecutor}. */
10
+ export type PrismaModelDelegate<TItem = unknown, TWhere = unknown, TOrderBy = unknown> = {
11
+ findMany(args?: {
12
12
  where?: TWhere;
13
- orderBy?: TOrderBy | TOrderBy[];
13
+ orderBy?: TOrderBy | readonly TOrderBy[];
14
14
  skip?: number;
15
15
  take?: number;
16
16
  include?: Record<string, unknown>;
17
17
  select?: Record<string, unknown>;
18
18
  }): Promise<TItem[]>;
19
- count(args: {
19
+ count(args?: {
20
20
  where?: TWhere;
21
21
  }): Promise<number>;
22
- }
23
- export interface PrismaListQueryParams<TWhere, TOrderBy> {
24
- readonly where?: TWhere;
25
- readonly orderBy?: readonly TOrderBy[];
26
- readonly skip?: number;
27
- readonly take?: number;
28
- readonly aggregations?: Record<string, PrismaAggregationParams>;
29
- }
30
- /** Prisma model delegate shape accepted by {@link bindPrismaListDelegate}. */
22
+ groupBy?(args?: Record<string, unknown>): Promise<unknown[]>;
23
+ };
24
+ /** Backwards-compatible alias for {@link PrismaModelDelegate}. */
25
+ export type PrismaListDelegate<TItem, TWhere, TOrderBy> = PrismaModelDelegate<TItem, TWhere, TOrderBy>;
26
+ /** Backwards-compatible alias for loose model delegate shape. */
31
27
  export type PrismaListModelDelegate = {
32
- findMany(args?: object): Promise<unknown[]>;
33
- count(args?: object): Promise<number>;
34
- groupBy?(args?: object): Promise<unknown[]>;
28
+ findMany(args?: never): Promise<unknown>;
29
+ count(args?: never): Promise<number>;
30
+ groupBy?: (args: never) => Promise<unknown>;
35
31
  };
36
- /**
37
- * Adapt a Prisma model delegate for {@link createPrismaListExecutor}.
38
- * Centralizes the include/payload typing gap between Prisma delegates and list executors.
39
- */
40
- export declare function bindPrismaListDelegate<TItem, TWhere, TOrderBy>(delegate: PrismaListModelDelegate): PrismaListDelegate<TItem, TWhere, TOrderBy>;
41
32
  /** Adapt a Prisma model delegate for {@link runGroupByAggregations}. */
42
33
  export declare function bindPrismaGroupByDelegate(delegate: PrismaListModelDelegate): PrismaGroupByDelegate;
43
- export interface PrismaListExecutorConfig<TItem, TWhere, TOrderBy> {
44
- /** Resolves the Prisma model delegate (e.g. `() => bindPrismaListDelegate(prisma.user)`). */
45
- delegate: () => PrismaListDelegate<TItem, TWhere, TOrderBy>;
46
- readonly include?: Record<string, unknown>;
47
- readonly select?: Record<string, unknown>;
48
- readonly defaultOrderBy?: readonly TOrderBy[];
34
+ export interface ExecutePrismaListArgs<TItem = unknown, TResult = TItem, TWhere = unknown, TOrderBy = unknown> {
35
+ readonly where?: TWhere | undefined;
36
+ readonly orderBy?: TOrderBy | readonly TOrderBy[] | undefined;
37
+ readonly skip?: number | undefined;
38
+ readonly take?: number | undefined;
39
+ readonly include?: Record<string, unknown> | undefined;
40
+ readonly select?: Record<string, unknown> | undefined;
41
+ readonly aggregations?: Record<string, PrismaAggregationParams> | undefined;
42
+ readonly defaultOrderBy?: readonly TOrderBy[] | undefined;
43
+ readonly map?: ((item: TItem) => TResult) | undefined;
44
+ }
45
+ export interface PrismaListQueryParams<TWhere, TOrderBy> {
46
+ readonly where?: TWhere | undefined;
47
+ readonly orderBy?: readonly TOrderBy[] | undefined;
48
+ readonly skip?: number | undefined;
49
+ readonly take?: number | undefined;
50
+ readonly aggregations?: Record<string, PrismaAggregationParams> | undefined;
51
+ }
52
+ export interface PrismaListExecutorConfig<TItem = unknown, TResult = TItem, TOrderBy = unknown> {
53
+ /** Resolves or provides the Prisma model delegate (e.g. `prisma.user` or `() => prisma.user`). */
54
+ delegate: PrismaListModelDelegate | (() => PrismaListModelDelegate);
55
+ readonly include?: Record<string, unknown> | undefined;
56
+ readonly select?: Record<string, unknown> | undefined;
57
+ readonly defaultOrderBy?: readonly TOrderBy[] | undefined;
58
+ readonly map?: ((item: TItem) => TResult) | undefined;
49
59
  }
50
60
  /**
51
61
  * Pick `orderBy` from list params, falling back to `defaultOrderBy` when empty.
@@ -55,9 +65,14 @@ export declare function resolveOrderBy<TOrderBy>(orderBy: readonly TOrderBy[] |
55
65
  * Run Prisma `groupBy` aggregations produced by `createListQuery().build()`.
56
66
  */
57
67
  export declare function runGroupByAggregations(delegate: PrismaGroupByDelegate, aggregationConfigs?: Record<string, PrismaAggregationParams>): Promise<Record<string, AggregationResult> | undefined>;
68
+ /**
69
+ * Execute a Prisma list query directly against a model delegate with findMany, count,
70
+ * and optional groupBy aggregations.
71
+ */
72
+ export declare function executePrismaList<TItem = unknown, TResult = TItem, TWhere = unknown, TOrderBy = unknown>(delegate: PrismaListModelDelegate, args?: ExecutePrismaListArgs<TItem, TResult, TWhere, TOrderBy>): Promise<PaginatedResult<TResult>>;
58
73
  /**
59
74
  * Create a reusable list handler that runs `findMany`, `count`, and optional `groupBy`
60
75
  * aggregations from {@link createListQuery} params.
61
76
  */
62
- export declare function createPrismaListExecutor<TItem, TWhere, TOrderBy>(config: PrismaListExecutorConfig<TItem, TWhere, TOrderBy>): (params?: PrismaListQueryParams<TWhere, TOrderBy>) => Promise<PaginatedResult<TItem>>;
77
+ export declare function createPrismaListExecutor<TItem = unknown, TResult = TItem, TWhere = unknown, TOrderBy = unknown>(config: PrismaListExecutorConfig<TItem, TResult, TOrderBy>): (params?: PrismaListQueryParams<TWhere, TOrderBy>) => Promise<PaginatedResult<TResult>>;
63
78
  //# sourceMappingURL=prisma-executor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"prisma-executor.d.ts","sourceRoot":"","sources":["../../src/list-query/prisma-executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prisma-executor.d.ts","sourceRoot":"","sources":["../../src/list-query/prisma-executor.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,3 @@
1
- /**
2
- * Adapt a Prisma model delegate for {@link createPrismaListExecutor}.
3
- * Centralizes the include/payload typing gap between Prisma delegates and list executors.
4
- */
5
- export function bindPrismaListDelegate(delegate) {
6
- return delegate;
7
- }
8
1
  /** Adapt a Prisma model delegate for {@link runGroupByAggregations}. */
9
2
  export function bindPrismaGroupByDelegate(delegate) {
10
3
  return delegate;
@@ -52,37 +45,59 @@ export async function runGroupByAggregations(delegate, aggregationConfigs) {
52
45
  }));
53
46
  return results;
54
47
  }
48
+ /**
49
+ * Execute a Prisma list query directly against a model delegate with findMany, count,
50
+ * and optional groupBy aggregations.
51
+ */
52
+ export async function executePrismaList(delegate, args) {
53
+ const where = args?.where;
54
+ const rawOrderBy = args?.orderBy;
55
+ const orderByArray = rawOrderBy
56
+ ? Array.isArray(rawOrderBy)
57
+ ? rawOrderBy
58
+ : [rawOrderBy]
59
+ : undefined;
60
+ const orderBy = resolveOrderBy(orderByArray, args?.defaultOrderBy);
61
+ const findManyArgs = {
62
+ where,
63
+ orderBy,
64
+ skip: args?.skip,
65
+ take: args?.take,
66
+ };
67
+ if (args?.include !== undefined) {
68
+ findManyArgs.include = args.include;
69
+ }
70
+ if (args?.select !== undefined) {
71
+ findManyArgs.select = args.select;
72
+ }
73
+ const caller = delegate;
74
+ const [rawData, total, aggregations] = await Promise.all([
75
+ caller.findMany(findManyArgs),
76
+ caller.count({ where }),
77
+ runGroupByAggregations(caller, args?.aggregations),
78
+ ]);
79
+ const mapFn = args?.map;
80
+ const data = mapFn ? rawData.map(mapFn) : rawData;
81
+ return {
82
+ data,
83
+ total,
84
+ ...(aggregations && { aggregations }),
85
+ };
86
+ }
55
87
  /**
56
88
  * Create a reusable list handler that runs `findMany`, `count`, and optional `groupBy`
57
89
  * aggregations from {@link createListQuery} params.
58
90
  */
59
91
  export function createPrismaListExecutor(config) {
60
- return async (params) => {
61
- const delegate = config.delegate();
62
- const where = params?.where;
63
- const orderBy = resolveOrderBy(params?.orderBy, config.defaultOrderBy);
64
- const findManyArgs = {
65
- where,
66
- orderBy,
67
- skip: params?.skip,
68
- take: params?.take,
69
- };
70
- if (config.include !== undefined) {
71
- findManyArgs.include = config.include;
72
- }
73
- if (config.select !== undefined) {
74
- findManyArgs.select = config.select;
75
- }
76
- const [data, total, aggregations] = await Promise.all([
77
- delegate.findMany(findManyArgs),
78
- delegate.count({ where }),
79
- runGroupByAggregations(delegate, params?.aggregations),
80
- ]);
81
- return {
82
- data,
83
- total,
84
- ...(aggregations && { aggregations }),
85
- };
92
+ return (params) => {
93
+ const delegate = typeof config.delegate === 'function' ? config.delegate() : config.delegate;
94
+ return executePrismaList(delegate, {
95
+ ...params,
96
+ include: config.include,
97
+ select: config.select,
98
+ defaultOrderBy: config.defaultOrderBy,
99
+ map: config.map,
100
+ });
86
101
  };
87
102
  }
88
103
  //# sourceMappingURL=prisma-executor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prisma-executor.js","sourceRoot":"","sources":["../../src/list-query/prisma-executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prisma-executor.js","sourceRoot":"","sources":["../../src/list-query/prisma-executor.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,10 @@
1
- /**
2
- * Valibot schema for list query parameters
3
- * Used in route definitions for OpenAPI generation and basic validation
4
- *
5
- * Note: Query parameters are always strings, so we transform them to numbers
6
- * Valibot correctly infers the output type as number after transformation
7
- */
8
- export declare const ListQuerySchema: import("valibot").ObjectSchema<{
9
- readonly sorts: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
10
- readonly filters: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
11
- readonly page: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").TransformAction<string, number>]>, undefined>;
12
- readonly pageSize: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").TransformAction<string, number>]>, undefined>;
13
- readonly search: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
1
+ import { type InferOutput } from 'valibot';
2
+ export declare const ListQuerySchema: import("valibot").StrictObjectSchema<{
3
+ readonly sorts: import("valibot").ExactOptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").MaxLengthAction<string, 100, undefined>]>, undefined>;
4
+ readonly filters: import("valibot").ExactOptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").MaxLengthAction<string, 1000, undefined>]>, undefined>;
5
+ readonly page: import("valibot").ExactOptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").RegexAction<string, undefined>, import("valibot").CheckAction<string, "Expected at most 10 digits">, import("valibot").TransformAction<any, number>, import("valibot").IntegerAction<number, undefined>, import("valibot").MinValueAction<number, 1, undefined>, import("valibot").MaxValueAction<number, number, undefined>]>, undefined>;
6
+ readonly pageSize: import("valibot").ExactOptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").RegexAction<string, undefined>, import("valibot").CheckAction<string, "Expected at most 10 digits">, import("valibot").TransformAction<any, number>, import("valibot").IntegerAction<number, undefined>, import("valibot").MinValueAction<number, 1, undefined>, import("valibot").MaxValueAction<number, number, undefined>]>, undefined>;
7
+ readonly search: import("valibot").ExactOptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").MaxLengthAction<string, 255, undefined>]>, undefined>;
14
8
  }, undefined>;
9
+ export type ListQueryParams = InferOutput<typeof ListQuerySchema>;
15
10
  //# sourceMappingURL=query-schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"query-schema.d.ts","sourceRoot":"","sources":["../../src/list-query/query-schema.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,eAAO,MAAM,eAAe;;;;;;aAgB1B,CAAC"}
1
+ {"version":3,"file":"query-schema.d.ts","sourceRoot":"","sources":["../../src/list-query/query-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,WAAW,EAUjB,MAAM,SAAS,CAAC;AAkBjB,eAAO,MAAM,eAAe;;;;;;aAM1B,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC,OAAO,eAAe,CAAC,CAAC"}
@@ -1,16 +1,15 @@
1
- import { object, optional, pipe, string, transform } from 'valibot';
1
+ import { check, exactOptional, integer, maxLength, maxValue, minValue, pipe, regex, strictObject, string, transform, } from 'valibot';
2
2
  /**
3
- * Valibot schema for list query parameters
4
- * Used in route definitions for OpenAPI generation and basic validation
5
- *
6
- * Note: Query parameters are always strings, so we transform them to numbers
7
- * Valibot correctly infers the output type as number after transformation
3
+ * Strict, bounded HTTP contract for list-query parameters.
4
+ * Field, operator, and value validation happens against the configured
5
+ * filter and sort schemas when the list query is built.
8
6
  */
9
- export const ListQuerySchema = object({
10
- sorts: optional(string()),
11
- filters: optional(string()),
12
- page: optional(pipe(string(), transform((value) => Math.max(1, Math.floor(Number(value)))))),
13
- pageSize: optional(pipe(string(), transform((value) => Math.max(1, Math.min(100, Math.floor(Number(value))))))),
14
- search: optional(string()),
7
+ const positiveIntegerQuery = (maximum) => pipe(string(), regex(/^[1-9]\d*$/), check((value) => value.length <= 10, 'Expected at most 10 digits'), transform(Number), integer(), minValue(1), maxValue(maximum));
8
+ export const ListQuerySchema = strictObject({
9
+ sorts: exactOptional(pipe(string(), maxLength(100))),
10
+ filters: exactOptional(pipe(string(), maxLength(1_000))),
11
+ page: exactOptional(positiveIntegerQuery(1_000_000)),
12
+ pageSize: exactOptional(positiveIntegerQuery(100)),
13
+ search: exactOptional(pipe(string(), maxLength(255))),
15
14
  });
16
15
  //# sourceMappingURL=query-schema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"query-schema.js","sourceRoot":"","sources":["../../src/list-query/query-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC;IACpC,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IACzB,OAAO,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IAC3B,IAAI,EAAE,QAAQ,CACZ,IAAI,CACF,MAAM,EAAE,EACR,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAC7D,CACF;IACD,QAAQ,EAAE,QAAQ,CAChB,IAAI,CACF,MAAM,EAAE,EACR,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAC5E,CACF;IACD,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;CAC3B,CAAC,CAAC"}
1
+ {"version":3,"file":"query-schema.js","sourceRoot":"","sources":["../../src/list-query/query-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,aAAa,EAEb,OAAO,EACP,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,KAAK,EACL,YAAY,EACZ,MAAM,EACN,SAAS,GACV,MAAM,SAAS,CAAC;AAEjB;;;;GAIG;AACH,MAAM,oBAAoB,GAAG,CAAC,OAAe,EAAE,EAAE,CAC/C,IAAI,CACF,MAAM,EAAE,EACR,KAAK,CAAC,YAAY,CAAC,EACnB,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,EAAE,4BAA4B,CAAC,EAClE,SAAS,CAAC,MAAM,CAAC,EACjB,OAAO,EAAE,EACT,QAAQ,CAAC,CAAC,CAAC,EACX,QAAQ,CAAC,OAAO,CAAC,CAClB,CAAC;AAEJ,MAAM,CAAC,MAAM,eAAe,GAAG,YAAY,CAAC;IAC1C,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IACpD,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IACxD,IAAI,EAAE,aAAa,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;IACpD,QAAQ,EAAE,aAAa,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAClD,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;CACtD,CAAC,CAAC"}
@@ -11,9 +11,9 @@ export declare const sortDirectionSchema: () => import("valibot").PicklistSchema
11
11
  * Schema for Prisma StringFilter operations
12
12
  * Supports all string-based filter operations
13
13
  */
14
- export declare const stringFilterSchema: () => import("valibot").ObjectSchema<{
14
+ export declare const stringFilterSchema: () => import("valibot").StrictObjectSchema<{
15
15
  readonly equals: OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
16
- readonly not: OptionalSchema<import("valibot").UnionSchema<[import("valibot").StringSchema<undefined>, import("valibot").ObjectSchema<{
16
+ readonly not: OptionalSchema<import("valibot").UnionSchema<[import("valibot").StringSchema<undefined>, import("valibot").StrictObjectSchema<{
17
17
  readonly equals: OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
18
18
  }, undefined>], undefined>, undefined>;
19
19
  readonly contains: OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
@@ -27,7 +27,7 @@ export declare const stringFilterSchema: () => import("valibot").ObjectSchema<{
27
27
  * Schema for Prisma IntFilter or FloatFilter operations
28
28
  * Supports numeric comparison operations
29
29
  */
30
- export declare const numberFilterSchema: () => import("valibot").ObjectSchema<{
30
+ export declare const numberFilterSchema: () => import("valibot").StrictObjectSchema<{
31
31
  readonly equals: OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").UnionSchema<[import("valibot").StringSchema<undefined>, import("valibot").NumberSchema<undefined>, import("valibot").LiteralSchema<true, undefined>, import("valibot").LiteralSchema<false, undefined>], undefined>, import("valibot").TransformAction<string | number | boolean, string | number | boolean>]>, undefined>;
32
32
  readonly not: OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").UnionSchema<[import("valibot").StringSchema<undefined>, import("valibot").NumberSchema<undefined>, import("valibot").LiteralSchema<true, undefined>, import("valibot").LiteralSchema<false, undefined>], undefined>, import("valibot").TransformAction<string | number | boolean, string | number | boolean>]>, undefined>;
33
33
  readonly lt: OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").UnionSchema<[import("valibot").StringSchema<undefined>, import("valibot").NumberSchema<undefined>, import("valibot").LiteralSchema<true, undefined>, import("valibot").LiteralSchema<false, undefined>], undefined>, import("valibot").TransformAction<string | number | boolean, string | number | boolean>]>, undefined>;
@@ -38,7 +38,7 @@ export declare const numberFilterSchema: () => import("valibot").ObjectSchema<{
38
38
  /**
39
39
  * Schema for Prisma IntFilter operations (numeric fields stored as integers).
40
40
  */
41
- export declare const intFilterSchema: () => import("valibot").ObjectSchema<{
41
+ export declare const intFilterSchema: () => import("valibot").StrictObjectSchema<{
42
42
  readonly equals: OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").UnionSchema<[import("valibot").StringSchema<undefined>, import("valibot").NumberSchema<undefined>], undefined>, import("valibot").TransformAction<string | number, number>]>, undefined>;
43
43
  readonly not: OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").UnionSchema<[import("valibot").StringSchema<undefined>, import("valibot").NumberSchema<undefined>], undefined>, import("valibot").TransformAction<string | number, number>]>, undefined>;
44
44
  readonly lt: OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").UnionSchema<[import("valibot").StringSchema<undefined>, import("valibot").NumberSchema<undefined>], undefined>, import("valibot").TransformAction<string | number, number>]>, undefined>;
@@ -52,28 +52,28 @@ export declare const intFilterSchema: () => import("valibot").ObjectSchema<{
52
52
  * Schema for Prisma DateTimeFilter operations
53
53
  * Supports date comparison operations
54
54
  */
55
- export declare const dateFilterSchema: () => import("valibot").ObjectSchema<{
56
- readonly equals: OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").UnionSchema<[import("valibot").DateSchema<undefined>, import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").IsoDateAction<string, undefined>]>], undefined>, import("valibot").TransformAction<string | Date, Date>]>, undefined>;
57
- readonly not: OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").UnionSchema<[import("valibot").DateSchema<undefined>, import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").IsoDateAction<string, undefined>]>], undefined>, import("valibot").TransformAction<string | Date, Date>]>, undefined>;
58
- readonly lt: OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").UnionSchema<[import("valibot").DateSchema<undefined>, import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").IsoDateAction<string, undefined>]>], undefined>, import("valibot").TransformAction<string | Date, Date>]>, undefined>;
59
- readonly lte: OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").UnionSchema<[import("valibot").DateSchema<undefined>, import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").IsoDateAction<string, undefined>]>], undefined>, import("valibot").TransformAction<string | Date, Date>]>, undefined>;
60
- readonly gt: OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").UnionSchema<[import("valibot").DateSchema<undefined>, import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").IsoDateAction<string, undefined>]>], undefined>, import("valibot").TransformAction<string | Date, Date>]>, undefined>;
61
- readonly gte: OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").UnionSchema<[import("valibot").DateSchema<undefined>, import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").IsoDateAction<string, undefined>]>], undefined>, import("valibot").TransformAction<string | Date, Date>]>, undefined>;
55
+ export declare const dateFilterSchema: () => import("valibot").StrictObjectSchema<{
56
+ readonly equals: OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").UnionSchema<[import("valibot").DateSchema<undefined>, import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").IsoDateAction<string, undefined>, import("valibot").CheckAction<string, "Expected an existing calendar date">]>], undefined>, import("valibot").TransformAction<string | Date, Date>]>, undefined>;
57
+ readonly not: OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").UnionSchema<[import("valibot").DateSchema<undefined>, import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").IsoDateAction<string, undefined>, import("valibot").CheckAction<string, "Expected an existing calendar date">]>], undefined>, import("valibot").TransformAction<string | Date, Date>]>, undefined>;
58
+ readonly lt: OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").UnionSchema<[import("valibot").DateSchema<undefined>, import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").IsoDateAction<string, undefined>, import("valibot").CheckAction<string, "Expected an existing calendar date">]>], undefined>, import("valibot").TransformAction<string | Date, Date>]>, undefined>;
59
+ readonly lte: OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").UnionSchema<[import("valibot").DateSchema<undefined>, import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").IsoDateAction<string, undefined>, import("valibot").CheckAction<string, "Expected an existing calendar date">]>], undefined>, import("valibot").TransformAction<string | Date, Date>]>, undefined>;
60
+ readonly gt: OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").UnionSchema<[import("valibot").DateSchema<undefined>, import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").IsoDateAction<string, undefined>, import("valibot").CheckAction<string, "Expected an existing calendar date">]>], undefined>, import("valibot").TransformAction<string | Date, Date>]>, undefined>;
61
+ readonly gte: OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").UnionSchema<[import("valibot").DateSchema<undefined>, import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").IsoDateAction<string, undefined>, import("valibot").CheckAction<string, "Expected an existing calendar date">]>], undefined>, import("valibot").TransformAction<string | Date, Date>]>, undefined>;
62
62
  }, undefined>;
63
63
  /**
64
64
  * Schema for Prisma BoolFilter operations
65
65
  * Only supports equals and not operations
66
66
  */
67
- export declare const booleanFilterSchema: () => import("valibot").ObjectSchema<{
68
- readonly equals: OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").UnionSchema<[import("valibot").BooleanSchema<undefined>, import("valibot").PicklistSchema<["true", "false"], undefined>], undefined>, import("valibot").TransformAction<boolean | "true" | "false", boolean>]>, undefined>;
69
- readonly not: OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").UnionSchema<[import("valibot").BooleanSchema<undefined>, import("valibot").PicklistSchema<["true", "false"], undefined>], undefined>, import("valibot").TransformAction<boolean | "true" | "false", boolean>]>, undefined>;
67
+ export declare const booleanFilterSchema: () => import("valibot").StrictObjectSchema<{
68
+ readonly equals: OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").UnionSchema<[import("valibot").BooleanSchema<undefined>, import("valibot").PicklistSchema<["true", "false"], undefined>], undefined>, import("valibot").TransformAction<"false" | "true" | boolean, boolean>]>, undefined>;
69
+ readonly not: OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").UnionSchema<[import("valibot").BooleanSchema<undefined>, import("valibot").PicklistSchema<["true", "false"], undefined>], undefined>, import("valibot").TransformAction<"false" | "true" | boolean, boolean>]>, undefined>;
70
70
  }, undefined>;
71
71
  /**
72
72
  * Schema for Prisma EnumFilter operations
73
73
  * Supports equals and not operations with specific enum values
74
74
  * Pass a picklist schema with the allowed enum values
75
75
  */
76
- export declare function enumFilterSchema<TEnum extends BaseSchema<unknown, unknown, BaseIssue<unknown>>>(enumSchema: TEnum): import("valibot").ObjectSchema<{
76
+ export declare function enumFilterSchema<TEnum extends BaseSchema<unknown, unknown, BaseIssue<unknown>>>(enumSchema: TEnum): import("valibot").StrictObjectSchema<{
77
77
  readonly equals: OptionalSchema<TEnum, undefined>;
78
78
  readonly not: OptionalSchema<TEnum, undefined>;
79
79
  readonly in: OptionalSchema<import("valibot").ArraySchema<TEnum, undefined>, undefined>;
@@ -83,7 +83,7 @@ export declare function enumFilterSchema<TEnum extends BaseSchema<unknown, unkno
83
83
  * Schema for nested relation filters
84
84
  * Allows validation of nested where conditions
85
85
  */
86
- export declare function relationFilterSchema<T extends BaseSchema<unknown, unknown, BaseIssue<unknown>>>(nestedSchema: T): import("valibot").ObjectSchema<{
86
+ export declare function relationFilterSchema<T extends BaseSchema<unknown, unknown, BaseIssue<unknown>>>(nestedSchema: T): import("valibot").StrictObjectSchema<{
87
87
  readonly is: OptionalSchema<T, undefined>;
88
88
  readonly isNot: OptionalSchema<T, undefined>;
89
89
  }, undefined>;
@@ -98,6 +98,6 @@ export declare function createSortSchema<T extends Record<string, SortDirectionS
98
98
  * Helper to create a filter schema for a model
99
99
  * Pass an object with field names as keys and filter schemas as values
100
100
  */
101
- export declare function createFilterSchema<T extends Record<string, BaseSchema<unknown, unknown, BaseIssue<unknown>>>>(fields: T): import("valibot").ObjectSchema<{ [K in keyof T]: OptionalSchema<T[K], undefined>; }, undefined>;
101
+ export declare function createFilterSchema<T extends Record<string, BaseSchema<unknown, unknown, BaseIssue<unknown>>>>(fields: T): import("valibot").StrictObjectSchema<{ [K in keyof T]: OptionalSchema<T[K], undefined>; }, undefined>;
102
102
  export {};
103
103
  //# sourceMappingURL=schema-helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema-helpers.d.ts","sourceRoot":"","sources":["../../src/list-query/schema-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,cAAc,EAMpB,MAAM,SAAS,CAAC;AAOjB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEjE,uFAAuF;AACvF,eAAO,MAAM,kBAAkB,eAAsD,CAAC;AAEtF,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;AAU1E;;GAEG;AACH,eAAO,MAAM,mBAAmB,oEAAkC,CAAC;AAEnE;;;GAGG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;aAU3B,CAAC;AAEL;;;GAGG;AACH,eAAO,MAAM,kBAAkB;;;;;;;aAW5B,CAAC;AAEJ;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;;aAazB,CAAC;AAEJ;;;GAGG;AACH,eAAO,MAAM,gBAAgB;;;;;;;aAW1B,CAAC;AAEJ;;;GAGG;AACH,eAAO,MAAM,mBAAmB;;;aAO7B,CAAC;AAEJ;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,SAAS,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,EAC7F,UAAU,EAAE,KAAK;;;;;cAQlB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,EAC7F,YAAY,EAAE,CAAC;;;cAMhB;AAED,KAAK,mBAAmB,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAuDlE;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,EAC5E,MAAM,EAAE,CAAC,GACR,UAAU,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAUhF;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAC1E,MAAM,EAAE,CAAC,qCAGJ,CAAC,6DAGP"}
1
+ {"version":3,"file":"schema-helpers.d.ts","sourceRoot":"","sources":["../../src/list-query/schema-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,cAAc,EAMpB,MAAM,SAAS,CAAC;AAOjB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEjE,uFAAuF;AACvF,eAAO,MAAM,kBAAkB,eAAsD,CAAC;AAEtF,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;AAU1E;;GAEG;AACH,eAAO,MAAM,mBAAmB,oEAAkC,CAAC;AAEnE;;;GAGG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;aAU3B,CAAC;AAEL;;;GAGG;AACH,eAAO,MAAM,kBAAkB;;;;;;;aAW5B,CAAC;AAEJ;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;;aAazB,CAAC;AAEJ;;;GAGG;AACH,eAAO,MAAM,gBAAgB;;;;;;;aAW1B,CAAC;AAEJ;;;GAGG;AACH,eAAO,MAAM,mBAAmB;;;aAO7B,CAAC;AAEJ;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,SAAS,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,EAC7F,UAAU,EAAE,KAAK;;;;;cAQlB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,EAC7F,YAAY,EAAE,CAAC;;;cAMhB;AAED,KAAK,mBAAmB,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAuDlE;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,EAC5E,MAAM,EAAE,CAAC,GACR,UAAU,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAUhF;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAC1E,MAAM,EAAE,CAAC,2CAGJ,CAAC,6DAGP"}
@@ -1,4 +1,4 @@
1
- import { array, object, optional, picklist, string, union, } from 'valibot';
1
+ import { array, optional, picklist, strictObject, string, union, } from 'valibot';
2
2
  import { booleanFilterValueSchema, dateFilterValueSchema, intFilterValueSchema, numberFilterValueSchema, } from './filter-value-schemas.js';
3
3
  /** Marks typed filter schemas for schema-aware value parsing in list-query builder. */
4
4
  export const FILTER_SCHEMA_KIND = Symbol.for('glasswork.list-query.filterSchemaKind');
@@ -17,9 +17,9 @@ export const sortDirectionSchema = () => picklist(['asc', 'desc']);
17
17
  * Schema for Prisma StringFilter operations
18
18
  * Supports all string-based filter operations
19
19
  */
20
- export const stringFilterSchema = () => object({
20
+ export const stringFilterSchema = () => strictObject({
21
21
  equals: optional(string()),
22
- not: optional(union([string(), object({ equals: optional(string()) })])),
22
+ not: optional(union([string(), strictObject({ equals: optional(string()) })])),
23
23
  contains: optional(string()),
24
24
  startsWith: optional(string()),
25
25
  endsWith: optional(string()),
@@ -31,7 +31,7 @@ export const stringFilterSchema = () => object({
31
31
  * Schema for Prisma IntFilter or FloatFilter operations
32
32
  * Supports numeric comparison operations
33
33
  */
34
- export const numberFilterSchema = () => markTypedFilterSchema(object({
34
+ export const numberFilterSchema = () => markTypedFilterSchema(strictObject({
35
35
  equals: optional(numberFilterValueSchema()),
36
36
  not: optional(numberFilterValueSchema()),
37
37
  lt: optional(numberFilterValueSchema()),
@@ -42,7 +42,7 @@ export const numberFilterSchema = () => markTypedFilterSchema(object({
42
42
  /**
43
43
  * Schema for Prisma IntFilter operations (numeric fields stored as integers).
44
44
  */
45
- export const intFilterSchema = () => markTypedFilterSchema(object({
45
+ export const intFilterSchema = () => markTypedFilterSchema(strictObject({
46
46
  equals: optional(intFilterValueSchema()),
47
47
  not: optional(intFilterValueSchema()),
48
48
  lt: optional(intFilterValueSchema()),
@@ -56,7 +56,7 @@ export const intFilterSchema = () => markTypedFilterSchema(object({
56
56
  * Schema for Prisma DateTimeFilter operations
57
57
  * Supports date comparison operations
58
58
  */
59
- export const dateFilterSchema = () => markTypedFilterSchema(object({
59
+ export const dateFilterSchema = () => markTypedFilterSchema(strictObject({
60
60
  equals: optional(dateFilterValueSchema()),
61
61
  not: optional(dateFilterValueSchema()),
62
62
  lt: optional(dateFilterValueSchema()),
@@ -68,7 +68,7 @@ export const dateFilterSchema = () => markTypedFilterSchema(object({
68
68
  * Schema for Prisma BoolFilter operations
69
69
  * Only supports equals and not operations
70
70
  */
71
- export const booleanFilterSchema = () => markTypedFilterSchema(object({
71
+ export const booleanFilterSchema = () => markTypedFilterSchema(strictObject({
72
72
  equals: optional(booleanFilterValueSchema()),
73
73
  not: optional(booleanFilterValueSchema()),
74
74
  }), 'boolean');
@@ -78,7 +78,7 @@ export const booleanFilterSchema = () => markTypedFilterSchema(object({
78
78
  * Pass a picklist schema with the allowed enum values
79
79
  */
80
80
  export function enumFilterSchema(enumSchema) {
81
- return object({
81
+ return strictObject({
82
82
  equals: optional(enumSchema),
83
83
  not: optional(enumSchema),
84
84
  in: optional(array(enumSchema)),
@@ -90,7 +90,7 @@ export function enumFilterSchema(enumSchema) {
90
90
  * Allows validation of nested where conditions
91
91
  */
92
92
  export function relationFilterSchema(nestedSchema) {
93
- return object({
93
+ return strictObject({
94
94
  is: optional(nestedSchema),
95
95
  isNot: optional(nestedSchema),
96
96
  });
@@ -123,7 +123,7 @@ function addSortFieldToTree(tree, path, schema) {
123
123
  addSortFieldToTree(nested, rest.join('.'), schema);
124
124
  }
125
125
  function buildSortObjectSchema(fields) {
126
- return object(Object.fromEntries(Object.entries(fields).map(([key, value]) => {
126
+ return strictObject(Object.fromEntries(Object.entries(fields).map(([key, value]) => {
127
127
  if (isSortDirectionSchema(value)) {
128
128
  return [key, optional(value)];
129
129
  }
@@ -147,6 +147,6 @@ export function createSortSchema(fields) {
147
147
  * Pass an object with field names as keys and filter schemas as values
148
148
  */
149
149
  export function createFilterSchema(fields) {
150
- return object(Object.fromEntries(Object.entries(fields).map(([key, schema]) => [key, optional(schema)])));
150
+ return strictObject(Object.fromEntries(Object.entries(fields).map(([key, schema]) => [key, optional(schema)])));
151
151
  }
152
152
  //# sourceMappingURL=schema-helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema-helpers.js","sourceRoot":"","sources":["../../src/list-query/schema-helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema-helpers.js","sourceRoot":"","sources":["../../src/list-query/schema-helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ export type SortDirection = 'asc' | 'desc';
2
+ export type SortMapper = (direction: SortDirection) => Record<string, unknown>;
3
+ export type SortMapping = string | SortMapper;
4
+ export type SortMappings = Record<string, SortMapping>;
5
+ /**
6
+ * Creates a sort mapper that maps a sort field to a nested relational path.
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * mapSorts: {
11
+ * name: nestSort('user.name'),
12
+ * }
13
+ * ```
14
+ */
15
+ export declare function nestSort(path: string): SortMapper;
16
+ /**
17
+ * Creates a sort mapper that renames a public sort field to another column.
18
+ *
19
+ * @example
20
+ * ```ts
21
+ * mapSorts: {
22
+ * displayName: renameSort('name'),
23
+ * }
24
+ * ```
25
+ */
26
+ export declare function renameSort(targetField: string): SortMapper;
27
+ /**
28
+ * Applies sort mappings to an array of Prisma orderBy clauses.
29
+ *
30
+ * @example
31
+ * ```ts
32
+ * applySortMappings([{ name: 'asc' }], { name: 'user.name' })
33
+ * // => [{ user: { name: 'asc' } }]
34
+ * ```
35
+ */
36
+ export declare function applySortMappings(orderBy: readonly Record<string, unknown>[], mappings: SortMappings): Record<string, unknown>[];
37
+ //# sourceMappingURL=sort-mapping.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sort-mapping.d.ts","sourceRoot":"","sources":["../../src/list-query/sort-mapping.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,MAAM,CAAC;AAE3C,MAAM,MAAM,UAAU,GAAG,CAAC,SAAS,EAAE,aAAa,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE/E,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,UAAU,CAAC;AAE9C,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAkCvD;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAGjD;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,UAAU,CAE1D;AA2BD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC3C,QAAQ,EAAE,YAAY,GACrB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAM3B"}