glasswork 0.13.2 → 1.0.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 (178) hide show
  1. package/CHANGELOG.md +69 -0
  2. package/README.md +6 -2
  3. package/dist/auth/abilities.d.ts +9 -6
  4. package/dist/auth/abilities.d.ts.map +1 -1
  5. package/dist/auth/abilities.js +15 -19
  6. package/dist/auth/abilities.js.map +1 -1
  7. package/dist/auth/assert.d.ts +3 -3
  8. package/dist/auth/assert.d.ts.map +1 -1
  9. package/dist/auth/casl-bridge.d.ts +19 -0
  10. package/dist/auth/casl-bridge.d.ts.map +1 -0
  11. package/dist/auth/casl-bridge.js +29 -0
  12. package/dist/auth/casl-bridge.js.map +1 -0
  13. package/dist/auth/index.d.ts +1 -0
  14. package/dist/auth/index.d.ts.map +1 -1
  15. package/dist/auth/index.js +1 -0
  16. package/dist/auth/index.js.map +1 -1
  17. package/dist/auth/middleware.d.ts +3 -3
  18. package/dist/auth/middleware.d.ts.map +1 -1
  19. package/dist/auth/middleware.js +2 -2
  20. package/dist/auth/middleware.js.map +1 -1
  21. package/dist/auth/types.d.ts +2 -2
  22. package/dist/auth/types.d.ts.map +1 -1
  23. package/dist/config/index.d.ts +1 -1
  24. package/dist/config/index.js +1 -1
  25. package/dist/core/bootstrap.d.ts +0 -17
  26. package/dist/core/bootstrap.d.ts.map +1 -1
  27. package/dist/core/bootstrap.js +4 -240
  28. package/dist/core/bootstrap.js.map +1 -1
  29. package/dist/core/index.d.ts +19 -0
  30. package/dist/core/index.d.ts.map +1 -0
  31. package/dist/core/index.js +15 -0
  32. package/dist/core/index.js.map +1 -0
  33. package/dist/core/lifecycle.d.ts +7 -0
  34. package/dist/core/lifecycle.d.ts.map +1 -0
  35. package/dist/core/lifecycle.js +28 -0
  36. package/dist/core/lifecycle.js.map +1 -0
  37. package/dist/core/module-graph.d.ts +21 -0
  38. package/dist/core/module-graph.d.ts.map +1 -0
  39. package/dist/core/module-graph.js +169 -0
  40. package/dist/core/module-graph.js.map +1 -0
  41. package/dist/core/route-factory.d.ts +20 -0
  42. package/dist/core/route-factory.d.ts.map +1 -0
  43. package/dist/core/route-factory.js +2 -0
  44. package/dist/core/route-factory.js.map +1 -0
  45. package/dist/core/types.d.ts +4 -14
  46. package/dist/core/types.d.ts.map +1 -1
  47. package/dist/email/compiler/compile-templates.d.ts +3 -8
  48. package/dist/email/compiler/compile-templates.d.ts.map +1 -1
  49. package/dist/email/compiler/compile-templates.js +3 -3
  50. package/dist/email/compiler/compile-templates.js.map +1 -1
  51. package/dist/email/compiler/compiler.d.ts +5 -2
  52. package/dist/email/compiler/compiler.d.ts.map +1 -1
  53. package/dist/email/compiler/compiler.js +2 -21
  54. package/dist/email/compiler/compiler.js.map +1 -1
  55. package/dist/email/transports/ses-transport.d.ts.map +1 -1
  56. package/dist/email/transports/ses-transport.js +11 -18
  57. package/dist/email/transports/ses-transport.js.map +1 -1
  58. package/dist/email/webhooks/handler-factory.d.ts +1 -1
  59. package/dist/email/webhooks/handler-factory.js +1 -1
  60. package/dist/email/webhooks/notification-parser.d.ts +1 -1
  61. package/dist/email/webhooks/notification-parser.js +1 -1
  62. package/dist/email/webhooks/signature-verification.d.ts +1 -1
  63. package/dist/email/webhooks/signature-verification.js +1 -1
  64. package/dist/email/webhooks/subscription-handler.d.ts +1 -1
  65. package/dist/email/webhooks/subscription-handler.js +1 -1
  66. package/dist/hono-context.d.ts +13 -0
  67. package/dist/hono-context.d.ts.map +1 -0
  68. package/dist/hono-context.js +2 -0
  69. package/dist/hono-context.js.map +1 -0
  70. package/dist/http/index.d.ts +18 -0
  71. package/dist/http/index.d.ts.map +1 -0
  72. package/dist/http/index.js +15 -0
  73. package/dist/http/index.js.map +1 -0
  74. package/dist/http/route-authorization.d.ts +9 -0
  75. package/dist/http/route-authorization.d.ts.map +1 -0
  76. package/dist/http/route-authorization.js +19 -0
  77. package/dist/http/route-authorization.js.map +1 -0
  78. package/dist/http/route-context.d.ts +8 -0
  79. package/dist/http/route-context.d.ts.map +1 -0
  80. package/dist/http/route-context.js +26 -0
  81. package/dist/http/route-context.js.map +1 -0
  82. package/dist/http/route-helpers.d.ts +6 -419
  83. package/dist/http/route-helpers.d.ts.map +1 -1
  84. package/dist/http/route-helpers.js +7 -462
  85. package/dist/http/route-helpers.js.map +1 -1
  86. package/dist/http/route-openapi-context.d.ts +27 -0
  87. package/dist/http/route-openapi-context.d.ts.map +1 -0
  88. package/dist/http/route-openapi-context.js +16 -0
  89. package/dist/http/route-openapi-context.js.map +1 -0
  90. package/dist/http/route-openapi.d.ts +5 -0
  91. package/dist/http/route-openapi.d.ts.map +1 -0
  92. package/dist/http/route-openapi.js +112 -0
  93. package/dist/http/route-openapi.js.map +1 -0
  94. package/dist/http/route-response.d.ts +5 -0
  95. package/dist/http/route-response.d.ts.map +1 -0
  96. package/dist/http/route-response.js +78 -0
  97. package/dist/http/route-response.js.map +1 -0
  98. package/dist/http/route-types.d.ts +93 -0
  99. package/dist/http/route-types.d.ts.map +1 -0
  100. package/dist/http/route-types.js +22 -0
  101. package/dist/http/route-types.js.map +1 -0
  102. package/dist/http/route-validation.d.ts +11 -0
  103. package/dist/http/route-validation.d.ts.map +1 -0
  104. package/dist/http/route-validation.js +24 -0
  105. package/dist/http/route-validation.js.map +1 -0
  106. package/dist/index.d.ts +7 -45
  107. package/dist/index.d.ts.map +1 -1
  108. package/dist/index.js +5 -65
  109. package/dist/index.js.map +1 -1
  110. package/dist/jobs/drivers/eventbridge-scheduler-driver.d.ts.map +1 -1
  111. package/dist/jobs/drivers/eventbridge-scheduler-driver.js +1 -3
  112. package/dist/jobs/drivers/eventbridge-scheduler-driver.js.map +1 -1
  113. package/dist/jobs/drivers/mock-driver.d.ts +7 -0
  114. package/dist/jobs/drivers/mock-driver.d.ts.map +1 -1
  115. package/dist/jobs/drivers/mock-driver.js +75 -16
  116. package/dist/jobs/drivers/mock-driver.js.map +1 -1
  117. package/dist/jobs/drivers/sqs-driver.d.ts +1 -1
  118. package/dist/jobs/drivers/sqs-driver.d.ts.map +1 -1
  119. package/dist/jobs/drivers/sqs-driver.js +1 -3
  120. package/dist/jobs/drivers/sqs-driver.js.map +1 -1
  121. package/dist/jobs/job-service.d.ts.map +1 -1
  122. package/dist/jobs/job-service.js +3 -0
  123. package/dist/jobs/job-service.js.map +1 -1
  124. package/dist/jobs/types.d.ts +2 -0
  125. package/dist/jobs/types.d.ts.map +1 -1
  126. package/dist/jobs/worker.d.ts.map +1 -1
  127. package/dist/jobs/worker.js +3 -14
  128. package/dist/jobs/worker.js.map +1 -1
  129. package/dist/list-query/builder.d.ts +26 -5
  130. package/dist/list-query/builder.d.ts.map +1 -1
  131. package/dist/list-query/builder.js +13 -9
  132. package/dist/list-query/builder.js.map +1 -1
  133. package/dist/list-query/casl.d.ts +20 -4
  134. package/dist/list-query/casl.d.ts.map +1 -1
  135. package/dist/list-query/casl.js +3 -12
  136. package/dist/list-query/casl.js.map +1 -1
  137. package/dist/list-query/index.d.ts +6 -1
  138. package/dist/list-query/index.d.ts.map +1 -1
  139. package/dist/list-query/index.js +4 -1
  140. package/dist/list-query/index.js.map +1 -1
  141. package/dist/list-query/list-params.d.ts +17 -0
  142. package/dist/list-query/list-params.d.ts.map +1 -0
  143. package/dist/list-query/list-params.js +2 -0
  144. package/dist/list-query/list-params.js.map +1 -0
  145. package/dist/list-query/prisma-builder.d.ts.map +1 -1
  146. package/dist/list-query/prisma-builder.js +36 -8
  147. package/dist/list-query/prisma-builder.js.map +1 -1
  148. package/dist/list-query/prisma-executor.d.ts +63 -0
  149. package/dist/list-query/prisma-executor.d.ts.map +1 -0
  150. package/dist/list-query/prisma-executor.js +88 -0
  151. package/dist/list-query/prisma-executor.js.map +1 -0
  152. package/dist/list-query/schema-helpers.d.ts +20 -3
  153. package/dist/list-query/schema-helpers.d.ts.map +1 -1
  154. package/dist/list-query/schema-helpers.js +57 -4
  155. package/dist/list-query/schema-helpers.js.map +1 -1
  156. package/dist/list-query/sort-field-types.d.ts +21 -0
  157. package/dist/list-query/sort-field-types.d.ts.map +1 -0
  158. package/dist/list-query/sort-field-types.js +2 -0
  159. package/dist/list-query/sort-field-types.js.map +1 -0
  160. package/dist/list-query/unrestricted-schemas.d.ts +13 -0
  161. package/dist/list-query/unrestricted-schemas.d.ts.map +1 -0
  162. package/dist/list-query/unrestricted-schemas.js +9 -0
  163. package/dist/list-query/unrestricted-schemas.js.map +1 -0
  164. package/dist/list-query/validator.d.ts +2 -2
  165. package/dist/list-query/validator.d.ts.map +1 -1
  166. package/dist/observability/exception-tracking.d.ts +5 -4
  167. package/dist/observability/exception-tracking.d.ts.map +1 -1
  168. package/dist/observability/exception-tracking.js +4 -3
  169. package/dist/observability/exception-tracking.js.map +1 -1
  170. package/dist/observability/index.d.ts +8 -0
  171. package/dist/observability/index.d.ts.map +1 -0
  172. package/dist/observability/index.js +8 -0
  173. package/dist/observability/index.js.map +1 -0
  174. package/dist/observability/pino-logger.d.ts +3 -3
  175. package/dist/observability/pino-logger.js +3 -3
  176. package/dist/observability/request-context.d.ts +4 -4
  177. package/dist/observability/request-context.js +4 -4
  178. package/package.json +94 -54
@@ -1,4 +1,20 @@
1
- export type CaslAccessibleBy = (ability: any, action?: string) => Record<string, Record<string, unknown>>;
1
+ /** Minimal CASL ability surface used by {@link withCaslScope}. */
2
+ export interface CaslAbilityLike {
3
+ readonly rules: readonly unknown[];
4
+ can(action: string, subject: unknown): boolean;
5
+ }
6
+ /** Stored integration function type. */
7
+ export type CaslAccessibleBy = {
8
+ bivarianceHack(ability: CaslAbilityLike, action?: string): {
9
+ ofType: (subject: string) => Record<string, unknown>;
10
+ };
11
+ }['bivarianceHack'];
12
+ /** Consumer registration type (bivariant so `accessibleBy` from any `@casl/prisma` install fits). */
13
+ export type CaslAccessibleByRegistration = {
14
+ bivarianceHack(ability: CaslAbilityLike, action?: string): {
15
+ ofType: (subject: string) => Record<string, unknown>;
16
+ };
17
+ }['bivarianceHack'];
2
18
  /**
3
19
  * Register CASL integration dependencies.
4
20
  * This must be called at application startup if you use CASL features.
@@ -6,13 +22,13 @@ export type CaslAccessibleBy = (ability: any, action?: string) => Record<string,
6
22
  * @example
7
23
  * ```typescript
8
24
  * import { accessibleBy } from '@casl/prisma';
9
- * import { registerCasl } from 'glasswork';
25
+ * import { registerCasl } from 'glasswork/list-query';
10
26
  *
11
27
  * registerCasl({ accessibleBy });
12
28
  * ```
13
29
  */
14
30
  export declare function registerCasl(options: {
15
- accessibleBy: CaslAccessibleBy;
31
+ accessibleBy: CaslAccessibleByRegistration;
16
32
  }): void;
17
33
  /**
18
34
  * Create a CASL scope helper that extracts ability from context
@@ -32,5 +48,5 @@ export declare function registerCasl(options: {
32
48
  * .build();
33
49
  * ```
34
50
  */
35
- export declare function withCaslScope<TAbility = any>(ability: TAbility, action: string, subject: string): Record<string, unknown>;
51
+ export declare function withCaslScope(ability: CaslAbilityLike, action: string, subject: string): Record<string, unknown>;
36
52
  //# sourceMappingURL=casl.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"casl.d.ts","sourceRoot":"","sources":["../../src/list-query/casl.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,gBAAgB,GAAG,CAE7B,OAAO,EAAE,GAAG,EACZ,MAAM,CAAC,EAAE,MAAM,KACZ,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAU7C;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE;IAAE,YAAY,EAAE,gBAAgB,CAAA;CAAE,QAEvE;AAeD;;;;;;;;;;;;;;;;;GAiBG;AAEH,wBAAgB,aAAa,CAAC,QAAQ,GAAG,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,2BAY/F"}
1
+ {"version":3,"file":"casl.d.ts","sourceRoot":"","sources":["../../src/list-query/casl.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,CAAC;IACnC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC;CAChD;AAED,wCAAwC;AACxC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,cAAc,CACZ,OAAO,EAAE,eAAe,EACxB,MAAM,CAAC,EAAE,MAAM,GACd;QACD,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACtD,CAAC;CACH,CAAC,gBAAgB,CAAC,CAAC;AAEpB,qGAAqG;AACrG,MAAM,MAAM,4BAA4B,GAAG;IACzC,cAAc,CACZ,OAAO,EAAE,eAAe,EACxB,MAAM,CAAC,EAAE,MAAM,GACd;QACD,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACtD,CAAC;CACH,CAAC,gBAAgB,CAAC,CAAC;AAUpB;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE;IAAE,YAAY,EAAE,4BAA4B,CAAA;CAAE,GAAG,IAAI,CAE1F;AAeD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,2BAGtF"}
@@ -8,7 +8,7 @@ const config = {
8
8
  * @example
9
9
  * ```typescript
10
10
  * import { accessibleBy } from '@casl/prisma';
11
- * import { registerCasl } from 'glasswork';
11
+ * import { registerCasl } from 'glasswork/list-query';
12
12
  *
13
13
  * registerCasl({ accessibleBy });
14
14
  * ```
@@ -21,7 +21,7 @@ function getAccessibleBy() {
21
21
  throw new Error('CASL integration not configured. You must call registerCasl({ accessibleBy }) at application startup.\n' +
22
22
  'Example:\n' +
23
23
  " import { accessibleBy } from '@casl/prisma';\n" +
24
- " import { registerCasl } from 'glasswork';\n" +
24
+ " import { registerCasl } from 'glasswork/list-query';\n" +
25
25
  ' registerCasl({ accessibleBy });');
26
26
  }
27
27
  return config.accessibleBy;
@@ -44,17 +44,8 @@ function getAccessibleBy() {
44
44
  * .build();
45
45
  * ```
46
46
  */
47
- // biome-ignore lint/suspicious/noExplicitAny: Ability type is generic
48
47
  export function withCaslScope(ability, action, subject) {
49
48
  const accessibleBy = getAccessibleBy();
50
- const conditions = accessibleBy(ability, action);
51
- if (!(subject in conditions)) {
52
- // Return empty object or undefined? Prisma generally assumes conditions exist if asked.
53
- // If we assume accessibleBy returns all possible subjects, then missing key might be fine or error.
54
- // Let's just return what is there, which is undefined if missing. The types expect Record<string, unknown>.
55
- // Casting to allow potentially undefined access if user made a typo.
56
- return conditions[subject];
57
- }
58
- return conditions[subject];
49
+ return accessibleBy(ability, action).ofType(subject);
59
50
  }
60
51
  //# sourceMappingURL=casl.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"casl.js","sourceRoot":"","sources":["../../src/list-query/casl.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,GAAe;IACzB,YAAY,EAAE,IAAI;CACnB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,YAAY,CAAC,OAA2C;IACtE,MAAM,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;AAC7C,CAAC;AAED,SAAS,eAAe;IACtB,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,yGAAyG;YACvG,YAAY;YACZ,kDAAkD;YAClD,+CAA+C;YAC/C,mCAAmC,CACtC,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,YAAY,CAAC;AAC7B,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,sEAAsE;AACtE,MAAM,UAAU,aAAa,CAAiB,OAAiB,EAAE,MAAc,EAAE,OAAe;IAC9F,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IACvC,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAEjD,IAAI,CAAC,CAAC,OAAO,IAAI,UAAU,CAAC,EAAE,CAAC;QAC7B,wFAAwF;QACxF,oGAAoG;QACpG,4GAA4G;QAC5G,qEAAqE;QACrE,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC"}
1
+ {"version":3,"file":"casl.js","sourceRoot":"","sources":["../../src/list-query/casl.ts"],"names":[],"mappings":"AA8BA,MAAM,MAAM,GAAe;IACzB,YAAY,EAAE,IAAI;CACnB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,YAAY,CAAC,OAAuD;IAClF,MAAM,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;AAC7C,CAAC;AAED,SAAS,eAAe;IACtB,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,yGAAyG;YACvG,YAAY;YACZ,kDAAkD;YAClD,0DAA0D;YAC1D,mCAAmC,CACtC,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,YAAY,CAAC;AAC7B,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,aAAa,CAAC,OAAwB,EAAE,MAAc,EAAE,OAAe;IACrF,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IACvC,OAAO,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACvD,CAAC"}
@@ -1,6 +1,11 @@
1
1
  export { createListQuery, type ListQueryBuilder, type ListQueryConfig, type PaginatedResult, } from './builder.js';
2
+ export { type CaslAbilityLike, type CaslAccessibleBy, registerCasl, withCaslScope, } from './casl.js';
3
+ export type { InferListParams, InferOrderByItem } from './list-params.js';
4
+ export { bindPrismaGroupByDelegate, bindPrismaListDelegate, createPrismaListExecutor, type PrismaGroupByDelegate, type PrismaListDelegate, type PrismaListExecutorConfig, type PrismaListModelDelegate, type PrismaListQueryParams, resolveOrderBy, runGroupByAggregations, } from './prisma-executor.js';
2
5
  export { ListQuerySchema } from './query-schema.js';
3
- export { booleanFilterSchema, createFilterSchema, createSortSchema, dateFilterSchema, enumFilterSchema, numberFilterSchema, relationFilterSchema, sortDirectionSchema, stringFilterSchema, } from './schema-helpers.js';
6
+ export { booleanFilterSchema, createFilterSchema, createSortSchema, dateFilterSchema, enumFilterSchema, intFilterSchema, numberFilterSchema, relationFilterSchema, sortDirectionSchema, stringFilterSchema, } from './schema-helpers.js';
7
+ export type { SortDirection as PrismaSortDirection, SortFieldsToOrderBy, SortPathToOrderBy, } from './sort-field-types.js';
4
8
  export type { AggregationConfig, AggregationResult, AggregationType, FieldPath, FilterOperator, ParsedFilter, ParsedQueryParams, ParsedSort, PrismaAggregationParams, PrismaListParams, RawQueryParams, SearchFieldInput, SortDirection, } from './types.js';
9
+ export { type PermissiveOrderBy, permissiveOrderByEntrySchema, unrestrictedWhereSchema, } from './unrestricted-schemas.js';
5
10
  export type { SchemaValidationConfig, ValidatedListParams } from './validator.js';
6
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/list-query/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EACf,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,eAAe,GACrB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAG7B,YAAY,EACV,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,SAAS,EACT,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,UAAU,EACV,uBAAuB,EACvB,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,aAAa,GACd,MAAM,YAAY,CAAC;AAGpB,YAAY,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/list-query/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EACf,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,eAAe,GACrB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,YAAY,EACZ,aAAa,GACd,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EACL,yBAAyB,EACzB,sBAAsB,EACtB,wBAAwB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAC1B,cAAc,EACd,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,aAAa,IAAI,mBAAmB,EACpC,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EACV,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,SAAS,EACT,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,UAAU,EACV,uBAAuB,EACvB,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,aAAa,GACd,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,KAAK,iBAAiB,EACtB,4BAA4B,EAC5B,uBAAuB,GACxB,MAAM,2BAA2B,CAAC;AAGnC,YAAY,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -1,7 +1,10 @@
1
1
  // Builder API
2
2
  export { createListQuery, } from './builder.js';
3
+ export { registerCasl, withCaslScope, } from './casl.js';
4
+ export { bindPrismaGroupByDelegate, bindPrismaListDelegate, createPrismaListExecutor, resolveOrderBy, runGroupByAggregations, } from './prisma-executor.js';
3
5
  // Query schema
4
6
  export { ListQuerySchema } from './query-schema.js';
5
7
  // Schema helpers
6
- export { booleanFilterSchema, createFilterSchema, createSortSchema, dateFilterSchema, enumFilterSchema, numberFilterSchema, relationFilterSchema, sortDirectionSchema, stringFilterSchema, } from './schema-helpers.js';
8
+ export { booleanFilterSchema, createFilterSchema, createSortSchema, dateFilterSchema, enumFilterSchema, intFilterSchema, numberFilterSchema, relationFilterSchema, sortDirectionSchema, stringFilterSchema, } from './schema-helpers.js';
9
+ export { permissiveOrderByEntrySchema, unrestrictedWhereSchema, } from './unrestricted-schemas.js';
7
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/list-query/index.ts"],"names":[],"mappings":"AAAA,cAAc;AACd,OAAO,EACL,eAAe,GAIhB,MAAM,cAAc,CAAC;AAEtB,eAAe;AACf,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,iBAAiB;AACjB,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/list-query/index.ts"],"names":[],"mappings":"AAAA,cAAc;AACd,OAAO,EACL,eAAe,GAIhB,MAAM,cAAc,CAAC;AACtB,OAAO,EAGL,YAAY,EACZ,aAAa,GACd,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,yBAAyB,EACzB,sBAAsB,EACtB,wBAAwB,EAMxB,cAAc,EACd,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAC9B,eAAe;AACf,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,iBAAiB;AACjB,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAsB7B,OAAO,EAEL,4BAA4B,EAC5B,uBAAuB,GACxB,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { BaseIssue, BaseSchema, InferOutput } from 'valibot';
2
+ import type { ValidatedListParams } from './validator.js';
3
+ /**
4
+ * Infer list params from filter and sort Valibot schemas.
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * type UserListParams = InferListParams<
9
+ * typeof UserFilterSchema,
10
+ * typeof UserSortSchema
11
+ * >;
12
+ * ```
13
+ */
14
+ export type InferListParams<TWhereSchema extends BaseSchema<unknown, unknown, BaseIssue<unknown>>, TOrderBySchema extends BaseSchema<unknown, unknown, BaseIssue<unknown>>> = ValidatedListParams<TWhereSchema, TOrderBySchema>;
15
+ /** Single orderBy entry type from list params or a sort schema. */
16
+ export type InferOrderByItem<TOrderBySchema extends BaseSchema<unknown, unknown, BaseIssue<unknown>>> = InferOutput<TOrderBySchema>;
17
+ //# sourceMappingURL=list-params.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-params.d.ts","sourceRoot":"","sources":["../../src/list-query/list-params.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAE1D;;;;;;;;;;GAUG;AACH,MAAM,MAAM,eAAe,CACzB,YAAY,SAAS,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,EACrE,cAAc,SAAS,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,IACrE,mBAAmB,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;AAEtD,mEAAmE;AACnE,MAAM,MAAM,gBAAgB,CAC1B,cAAc,SAAS,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,IACrE,WAAW,CAAC,cAAc,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=list-params.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-params.js","sourceRoot":"","sources":["../../src/list-query/list-params.ts"],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"prisma-builder.d.ts","sourceRoot":"","sources":["../../src/list-query/prisma-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,YAAY,EACZ,iBAAiB,EACjB,UAAU,EACX,MAAM,YAAY,CAAC;AAoOpB;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAe1F;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,GAAG,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAkC7F;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG;IAC5D,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,OAAO,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAWA"}
1
+ {"version":3,"file":"prisma-builder.d.ts","sourceRoot":"","sources":["../../src/list-query/prisma-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,YAAY,EACZ,iBAAiB,EACjB,UAAU,EACX,MAAM,YAAY,CAAC;AAyQpB;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAY1F;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,GAAG,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAkC7F;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG;IAC5D,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,OAAO,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAWA"}
@@ -57,7 +57,7 @@ function buildStringCondition(operator, value, isCaseInsensitive) {
57
57
  */
58
58
  function buildInCondition(operator, value, isCaseInsensitive) {
59
59
  // Split by pipe and parse each value
60
- const values = value.split('|').map((v) => parseValue(v.trim()));
60
+ const values = value.split('|').map((v) => parsePrimitiveValue(v.trim()));
61
61
  // Check if all values are strings for case-insensitive mode
62
62
  const allStrings = values.every((v) => typeof v === 'string');
63
63
  if (operator === '@=|') {
@@ -105,10 +105,14 @@ function operatorToPrismaCondition(operator, value) {
105
105
  throw new Error(`Unsupported operator: ${operator}`);
106
106
  }
107
107
  /**
108
- * Convert a value string to appropriate type for Prisma
109
- * Attempts to parse as number or boolean, otherwise returns as string
108
+ * Coerce a single literal string to the primitive types we support in filters when the operator
109
+ * does not require a raw string (equality, comparison, IN list tokens).
110
+ *
111
+ * - `true` / `false` → boolean (exact match, case-sensitive).
112
+ * - Numeric-looking strings → number (so `age==42` and `age>18` behave intuitively).
113
+ * - Everything else → unchanged string.
110
114
  */
111
- function parseValue(value) {
115
+ function parsePrimitiveValue(value) {
112
116
  if (value === 'true') {
113
117
  return true;
114
118
  }
@@ -121,6 +125,33 @@ function parseValue(value) {
121
125
  }
122
126
  return value;
123
127
  }
128
+ /**
129
+ * Coerce a filter value for `operator` before building Prisma conditions.
130
+ *
131
+ * - **Substring / IN**: return the string as-is. Text search must not turn `"432"` into a number;
132
+ * pipe-separated IN lists are split and parsed per segment in `buildInCondition`.
133
+ * - **Equality and comparisons**: delegate to `parsePrimitiveValue` so legacy string inputs like
134
+ * `"42"` or `"true"` still coerce.
135
+ *
136
+ * A trailing `*` on `operator` is stripped before branching; it only affects case-insensitive
137
+ * matching, not how the value is parsed.
138
+ */
139
+ function parseValue(value, operator) {
140
+ const baseOperator = operator.replace(/\*$/, '');
141
+ // For IN operators, keep the value as string (pipe-separated).
142
+ if (baseOperator.includes('|')) {
143
+ return value;
144
+ }
145
+ if (baseOperator === '@=' ||
146
+ baseOperator === '_=' ||
147
+ baseOperator === '_-=' ||
148
+ baseOperator === '!@=' ||
149
+ baseOperator === '!_=' ||
150
+ baseOperator === '!_-=') {
151
+ return value;
152
+ }
153
+ return parsePrimitiveValue(value);
154
+ }
124
155
  /**
125
156
  * Build a nested Prisma where condition from a field path
126
157
  * For nested paths (relations), wraps in Prisma's relation filter structure { is: { ... } }
@@ -189,10 +220,7 @@ export function buildWhereClause(filters) {
189
220
  }
190
221
  let where = {};
191
222
  for (const filter of filters) {
192
- // For IN operators, keep the value as string (pipe-separated)
193
- // The buildInCondition function will split and parse individual values
194
- const isInOperator = filter.operator.includes('|');
195
- const parsedValue = isInOperator ? filter.value : parseValue(filter.value);
223
+ const parsedValue = parseValue(filter.value, filter.operator);
196
224
  const condition = operatorToPrismaCondition(filter.operator, parsedValue);
197
225
  const nestedCondition = buildNestedWhereCondition(filter.fieldPath, condition);
198
226
  where = mergeWhereConditions(where, nestedCondition);
@@ -1 +1 @@
1
- {"version":3,"file":"prisma-builder.js","sourceRoot":"","sources":["../../src/list-query/prisma-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prisma-builder.js","sourceRoot":"","sources":["../../src/list-query/prisma-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ import type { PaginatedResult } from './builder.js';
2
+ import type { AggregationResult, PrismaAggregationParams } from './types.js';
3
+ /** Minimal Prisma `groupBy` surface used by {@link runGroupByAggregations}. */
4
+ export interface PrismaGroupByDelegate {
5
+ groupBy(args: Record<string, unknown>): Promise<Array<Record<string, unknown> & {
6
+ _count: Record<string, number>;
7
+ }>>;
8
+ }
9
+ /** Minimal Prisma list delegate used by {@link createPrismaListExecutor}. */
10
+ export interface PrismaListDelegate<TItem, TWhere, TOrderBy> {
11
+ findMany(args: {
12
+ where?: TWhere;
13
+ orderBy?: TOrderBy | TOrderBy[];
14
+ skip?: number;
15
+ take?: number;
16
+ include?: Record<string, unknown>;
17
+ select?: Record<string, unknown>;
18
+ }): Promise<TItem[]>;
19
+ count(args: {
20
+ where?: TWhere;
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}. */
31
+ export type PrismaListModelDelegate = {
32
+ findMany(args?: object): Promise<unknown[]>;
33
+ count(args?: object): Promise<number>;
34
+ groupBy?(args?: object): Promise<unknown[]>;
35
+ };
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
+ /** Adapt a Prisma model delegate for {@link runGroupByAggregations}. */
42
+ 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[];
49
+ }
50
+ /**
51
+ * Pick `orderBy` from list params, falling back to `defaultOrderBy` when empty.
52
+ */
53
+ export declare function resolveOrderBy<TOrderBy>(orderBy: readonly TOrderBy[] | undefined, defaultOrderBy?: readonly TOrderBy[]): TOrderBy[];
54
+ /**
55
+ * Run Prisma `groupBy` aggregations produced by `createListQuery().build()`.
56
+ */
57
+ export declare function runGroupByAggregations(delegate: PrismaGroupByDelegate, aggregationConfigs?: Record<string, PrismaAggregationParams>): Promise<Record<string, AggregationResult> | undefined>;
58
+ /**
59
+ * Create a reusable list handler that runs `findMany`, `count`, and optional `groupBy`
60
+ * aggregations from {@link createListQuery} params.
61
+ */
62
+ export declare function createPrismaListExecutor<TItem, TWhere, TOrderBy>(config: PrismaListExecutorConfig<TItem, TWhere, TOrderBy>): (params?: PrismaListQueryParams<TWhere, TOrderBy>) => Promise<PaginatedResult<TItem>>;
63
+ //# sourceMappingURL=prisma-executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prisma-executor.d.ts","sourceRoot":"","sources":["../../src/list-query/prisma-executor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,88 @@
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
+ /** Adapt a Prisma model delegate for {@link runGroupByAggregations}. */
9
+ export function bindPrismaGroupByDelegate(delegate) {
10
+ return delegate;
11
+ }
12
+ /**
13
+ * Pick `orderBy` from list params, falling back to `defaultOrderBy` when empty.
14
+ */
15
+ export function resolveOrderBy(orderBy, defaultOrderBy) {
16
+ if (orderBy && orderBy.length > 0) {
17
+ return [...orderBy];
18
+ }
19
+ return defaultOrderBy ? [...defaultOrderBy] : [];
20
+ }
21
+ /**
22
+ * Run Prisma `groupBy` aggregations produced by `createListQuery().build()`.
23
+ */
24
+ export async function runGroupByAggregations(delegate, aggregationConfigs) {
25
+ if (!aggregationConfigs) {
26
+ return undefined;
27
+ }
28
+ const entries = Object.entries(aggregationConfigs);
29
+ if (entries.length === 0) {
30
+ return undefined;
31
+ }
32
+ const results = {};
33
+ await Promise.all(entries.map(async ([key, config]) => {
34
+ const grouped = await delegate.groupBy({
35
+ by: config.by,
36
+ _count: config._count,
37
+ where: config.where,
38
+ });
39
+ const countField = Object.keys(config._count)[0];
40
+ if (!countField) {
41
+ return;
42
+ }
43
+ const aggregationResult = {};
44
+ for (const item of grouped) {
45
+ const fieldValue = item[countField];
46
+ const count = item._count[countField];
47
+ if (count !== undefined) {
48
+ aggregationResult[String(fieldValue)] = count;
49
+ }
50
+ }
51
+ results[key] = aggregationResult;
52
+ }));
53
+ return results;
54
+ }
55
+ /**
56
+ * Create a reusable list handler that runs `findMany`, `count`, and optional `groupBy`
57
+ * aggregations from {@link createListQuery} params.
58
+ */
59
+ 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
+ };
86
+ };
87
+ }
88
+ //# sourceMappingURL=prisma-executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prisma-executor.js","sourceRoot":"","sources":["../../src/list-query/prisma-executor.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { type BaseIssue, type BaseSchema, type OptionalSchema } from 'valibot';
2
+ import type { SortFieldsToOrderBy } from './sort-field-types.js';
2
3
  /**
3
4
  * Schema for Prisma sort direction
4
5
  */
@@ -31,6 +32,19 @@ export declare const numberFilterSchema: () => import("valibot").ObjectSchema<{
31
32
  readonly gt: OptionalSchema<import("valibot").UnionSchema<[import("valibot").StringSchema<undefined>, import("valibot").LiteralSchema<true, undefined>, import("valibot").LiteralSchema<false, undefined>], undefined>, undefined>;
32
33
  readonly gte: OptionalSchema<import("valibot").UnionSchema<[import("valibot").StringSchema<undefined>, import("valibot").LiteralSchema<true, undefined>, import("valibot").LiteralSchema<false, undefined>], undefined>, undefined>;
33
34
  }, undefined>;
35
+ /**
36
+ * Schema for Prisma IntFilter operations (numeric fields stored as integers).
37
+ */
38
+ export declare const intFilterSchema: () => import("valibot").ObjectSchema<{
39
+ readonly equals: OptionalSchema<import("valibot").NumberSchema<undefined>, undefined>;
40
+ readonly not: OptionalSchema<import("valibot").NumberSchema<undefined>, undefined>;
41
+ readonly lt: OptionalSchema<import("valibot").NumberSchema<undefined>, undefined>;
42
+ readonly lte: OptionalSchema<import("valibot").NumberSchema<undefined>, undefined>;
43
+ readonly gt: OptionalSchema<import("valibot").NumberSchema<undefined>, undefined>;
44
+ readonly gte: OptionalSchema<import("valibot").NumberSchema<undefined>, undefined>;
45
+ readonly in: OptionalSchema<import("valibot").ArraySchema<import("valibot").NumberSchema<undefined>, undefined>, undefined>;
46
+ readonly notIn: OptionalSchema<import("valibot").ArraySchema<import("valibot").NumberSchema<undefined>, undefined>, undefined>;
47
+ }, undefined>;
34
48
  /**
35
49
  * Schema for Prisma DateTimeFilter operations
36
50
  * Supports date comparison operations
@@ -70,14 +84,17 @@ export declare function relationFilterSchema<T extends BaseSchema<unknown, unkno
70
84
  readonly is: OptionalSchema<T, undefined>;
71
85
  readonly isNot: OptionalSchema<T, undefined>;
72
86
  }, undefined>;
87
+ type SortDirectionSchema = ReturnType<typeof sortDirectionSchema>;
73
88
  /**
74
- * Helper to create a sort schema for a model
75
- * Pass an object with field names as keys and sortDirectionSchema() as values
89
+ * Helper to create a sort schema for a model.
90
+ * Pass field names as keys and sortDirectionSchema() as values.
91
+ * Use dot notation for nested relation sorts (e.g. `'organization.name'`).
76
92
  */
77
- export declare function createSortSchema<T extends Record<string, ReturnType<typeof sortDirectionSchema>>>(fields: T): import("valibot").ObjectSchema<{ [K in keyof T]: OptionalSchema<T[K], undefined>; }, undefined>;
93
+ export declare function createSortSchema<T extends Record<string, SortDirectionSchema>>(fields: T): BaseSchema<SortFieldsToOrderBy<T>, SortFieldsToOrderBy<T>, BaseIssue<unknown>>;
78
94
  /**
79
95
  * Helper to create a filter schema for a model
80
96
  * Pass an object with field names as keys and filter schemas as values
81
97
  */
82
98
  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>;
99
+ export {};
83
100
  //# 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,EAEf,KAAK,cAAc,EAMpB,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,eAAO,MAAM,mBAAmB,oEAAkC,CAAC;AAEnE;;;GAGG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;aAU3B,CAAC;AAEL;;;GAGG;AACH,eAAO,MAAM,kBAAkB;;;;;;;aAQ3B,CAAC;AAEL;;;GAGG;AACH,eAAO,MAAM,gBAAgB;;;;;;;aAQzB,CAAC;AAEL;;;GAGG;AACH,eAAO,MAAM,mBAAmB;;;aAI5B,CAAC;AAEL;;;;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;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,EAC/F,MAAM,EAAE,CAAC,qCAIJ,CAAC,6DAGP;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,EAGf,KAAK,cAAc,EAMpB,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEjE;;GAEG;AACH,eAAO,MAAM,mBAAmB,oEAAkC,CAAC;AAEnE;;;GAGG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;aAU3B,CAAC;AAEL;;;GAGG;AACH,eAAO,MAAM,kBAAkB;;;;;;;aAQ3B,CAAC;AAEL;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;;aAUxB,CAAC;AAEL;;;GAGG;AACH,eAAO,MAAM,gBAAgB;;;;;;;aAQzB,CAAC;AAEL;;;GAGG;AACH,eAAO,MAAM,mBAAmB;;;aAI5B,CAAC;AAEL;;;;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,4 +1,4 @@
1
- import { array, literal, object, optional, picklist, string, union, } from 'valibot';
1
+ import { array, literal, number, object, optional, picklist, string, union, } from 'valibot';
2
2
  /**
3
3
  * Schema for Prisma sort direction
4
4
  */
@@ -29,6 +29,19 @@ export const numberFilterSchema = () => object({
29
29
  gt: optional(union([string(), literal(true), literal(false)])),
30
30
  gte: optional(union([string(), literal(true), literal(false)])),
31
31
  });
32
+ /**
33
+ * Schema for Prisma IntFilter operations (numeric fields stored as integers).
34
+ */
35
+ export const intFilterSchema = () => object({
36
+ equals: optional(number()),
37
+ not: optional(number()),
38
+ lt: optional(number()),
39
+ lte: optional(number()),
40
+ gt: optional(number()),
41
+ gte: optional(number()),
42
+ in: optional(array(number())),
43
+ notIn: optional(array(number())),
44
+ });
32
45
  /**
33
46
  * Schema for Prisma DateTimeFilter operations
34
47
  * Supports date comparison operations
@@ -72,12 +85,52 @@ export function relationFilterSchema(nestedSchema) {
72
85
  isNot: optional(nestedSchema),
73
86
  });
74
87
  }
88
+ function isSortDirectionSchema(value) {
89
+ return typeof value === 'object' && value !== null && '~run' in value;
90
+ }
91
+ function addSortFieldToTree(tree, path, schema) {
92
+ const segments = path.split('.');
93
+ if (segments.some((segment) => segment === '')) {
94
+ throw new Error(`Invalid sort field path: "${path}"`);
95
+ }
96
+ if (segments.length === 1) {
97
+ const field = segments[0];
98
+ const existing = tree[field];
99
+ if (existing !== undefined && !isSortDirectionSchema(existing)) {
100
+ throw new Error(`Sort field path conflict at "${field}"`);
101
+ }
102
+ tree[field] = schema;
103
+ return;
104
+ }
105
+ const [head, ...rest] = segments;
106
+ const field = head;
107
+ const existing = tree[field];
108
+ if (existing !== undefined && isSortDirectionSchema(existing)) {
109
+ throw new Error(`Sort field path conflict at "${field}"`);
110
+ }
111
+ const nested = (existing ?? {});
112
+ tree[field] = nested;
113
+ addSortFieldToTree(nested, rest.join('.'), schema);
114
+ }
115
+ function buildSortObjectSchema(fields) {
116
+ return object(Object.fromEntries(Object.entries(fields).map(([key, value]) => {
117
+ if (isSortDirectionSchema(value)) {
118
+ return [key, optional(value)];
119
+ }
120
+ return [key, optional(buildSortObjectSchema(value))];
121
+ })));
122
+ }
75
123
  /**
76
- * Helper to create a sort schema for a model
77
- * Pass an object with field names as keys and sortDirectionSchema() as values
124
+ * Helper to create a sort schema for a model.
125
+ * Pass field names as keys and sortDirectionSchema() as values.
126
+ * Use dot notation for nested relation sorts (e.g. `'organization.name'`).
78
127
  */
79
128
  export function createSortSchema(fields) {
80
- return object(Object.fromEntries(Object.entries(fields).map(([key, schema]) => [key, optional(schema)])));
129
+ const tree = {};
130
+ for (const [path, schema] of Object.entries(fields)) {
131
+ addSortFieldToTree(tree, path, schema);
132
+ }
133
+ return buildSortObjectSchema(tree);
81
134
  }
82
135
  /**
83
136
  * Helper to create a filter schema for a model
@@ -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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"}