glasswork 0.13.3 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (229) hide show
  1. package/CHANGELOG.md +80 -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/sqs-driver.d.ts +1 -1
  114. package/dist/jobs/drivers/sqs-driver.d.ts.map +1 -1
  115. package/dist/jobs/drivers/sqs-driver.js +1 -3
  116. package/dist/jobs/drivers/sqs-driver.js.map +1 -1
  117. package/dist/jobs/worker.d.ts.map +1 -1
  118. package/dist/jobs/worker.js +3 -14
  119. package/dist/jobs/worker.js.map +1 -1
  120. package/dist/list-query/builder.d.ts +26 -5
  121. package/dist/list-query/builder.d.ts.map +1 -1
  122. package/dist/list-query/builder.js +18 -10
  123. package/dist/list-query/builder.js.map +1 -1
  124. package/dist/list-query/casl.d.ts +20 -4
  125. package/dist/list-query/casl.d.ts.map +1 -1
  126. package/dist/list-query/casl.js +3 -12
  127. package/dist/list-query/casl.js.map +1 -1
  128. package/dist/list-query/filter-value-schemas.d.ts +16 -0
  129. package/dist/list-query/filter-value-schemas.d.ts.map +1 -0
  130. package/dist/list-query/filter-value-schemas.js +46 -0
  131. package/dist/list-query/filter-value-schemas.js.map +1 -0
  132. package/dist/list-query/index.d.ts +7 -1
  133. package/dist/list-query/index.d.ts.map +1 -1
  134. package/dist/list-query/index.js +6 -2
  135. package/dist/list-query/index.js.map +1 -1
  136. package/dist/list-query/list-params.d.ts +17 -0
  137. package/dist/list-query/list-params.d.ts.map +1 -0
  138. package/dist/list-query/list-params.js +2 -0
  139. package/dist/list-query/list-params.js.map +1 -0
  140. package/dist/list-query/parse-filter-values.d.ts +21 -0
  141. package/dist/list-query/parse-filter-values.d.ts.map +1 -0
  142. package/dist/list-query/parse-filter-values.js +177 -0
  143. package/dist/list-query/parse-filter-values.js.map +1 -0
  144. package/dist/list-query/prisma-builder.d.ts.map +1 -1
  145. package/dist/list-query/prisma-builder.js +3 -50
  146. package/dist/list-query/prisma-builder.js.map +1 -1
  147. package/dist/list-query/prisma-executor.d.ts +63 -0
  148. package/dist/list-query/prisma-executor.d.ts.map +1 -0
  149. package/dist/list-query/prisma-executor.js +88 -0
  150. package/dist/list-query/prisma-executor.js.map +1 -0
  151. package/dist/list-query/schema-helpers.d.ts +37 -17
  152. package/dist/list-query/schema-helpers.d.ts.map +1 -1
  153. package/dist/list-query/schema-helpers.js +87 -24
  154. package/dist/list-query/schema-helpers.js.map +1 -1
  155. package/dist/list-query/sort-field-types.d.ts +21 -0
  156. package/dist/list-query/sort-field-types.d.ts.map +1 -0
  157. package/dist/list-query/sort-field-types.js +2 -0
  158. package/dist/list-query/sort-field-types.js.map +1 -0
  159. package/dist/list-query/unrestricted-schemas.d.ts +13 -0
  160. package/dist/list-query/unrestricted-schemas.d.ts.map +1 -0
  161. package/dist/list-query/unrestricted-schemas.js +9 -0
  162. package/dist/list-query/unrestricted-schemas.js.map +1 -0
  163. package/dist/list-query/validator.d.ts +2 -2
  164. package/dist/list-query/validator.d.ts.map +1 -1
  165. package/dist/observability/exception-tracking.d.ts +5 -4
  166. package/dist/observability/exception-tracking.d.ts.map +1 -1
  167. package/dist/observability/exception-tracking.js +4 -3
  168. package/dist/observability/exception-tracking.js.map +1 -1
  169. package/dist/observability/index.d.ts +8 -0
  170. package/dist/observability/index.d.ts.map +1 -0
  171. package/dist/observability/index.js +8 -0
  172. package/dist/observability/index.js.map +1 -0
  173. package/dist/observability/pino-logger.d.ts +3 -3
  174. package/dist/observability/pino-logger.js +3 -3
  175. package/dist/observability/request-context.d.ts +4 -4
  176. package/dist/observability/request-context.js +4 -4
  177. package/package.json +93 -53
  178. package/dist/authorization/ability-middleware.d.ts +0 -61
  179. package/dist/authorization/ability-middleware.d.ts.map +0 -1
  180. package/dist/authorization/ability-middleware.js +0 -74
  181. package/dist/authorization/ability-middleware.js.map +0 -1
  182. package/dist/authorization/index.d.ts +0 -46
  183. package/dist/authorization/index.d.ts.map +0 -1
  184. package/dist/authorization/index.js +0 -46
  185. package/dist/authorization/index.js.map +0 -1
  186. package/dist/authorization/route-helpers.d.ts +0 -106
  187. package/dist/authorization/route-helpers.d.ts.map +0 -1
  188. package/dist/authorization/route-helpers.js +0 -136
  189. package/dist/authorization/route-helpers.js.map +0 -1
  190. package/dist/authorization/service-proxy.d.ts +0 -59
  191. package/dist/authorization/service-proxy.d.ts.map +0 -1
  192. package/dist/authorization/service-proxy.js +0 -110
  193. package/dist/authorization/service-proxy.js.map +0 -1
  194. package/dist/authorization/types.d.ts +0 -58
  195. package/dist/authorization/types.d.ts.map +0 -1
  196. package/dist/authorization/types.js +0 -7
  197. package/dist/authorization/types.js.map +0 -1
  198. package/dist/hooks/authorization-hook.d.ts +0 -100
  199. package/dist/hooks/authorization-hook.d.ts.map +0 -1
  200. package/dist/hooks/authorization-hook.js +0 -93
  201. package/dist/hooks/authorization-hook.js.map +0 -1
  202. package/dist/hooks/index.d.ts +0 -54
  203. package/dist/hooks/index.d.ts.map +0 -1
  204. package/dist/hooks/index.js +0 -55
  205. package/dist/hooks/index.js.map +0 -1
  206. package/dist/hooks/service-hooks.d.ts +0 -82
  207. package/dist/hooks/service-hooks.d.ts.map +0 -1
  208. package/dist/hooks/service-hooks.js +0 -158
  209. package/dist/hooks/service-hooks.js.map +0 -1
  210. package/dist/hooks/types.d.ts +0 -151
  211. package/dist/hooks/types.d.ts.map +0 -1
  212. package/dist/hooks/types.js +0 -2
  213. package/dist/hooks/types.js.map +0 -1
  214. package/dist/openapi/hooks.d.ts +0 -14
  215. package/dist/openapi/hooks.d.ts.map +0 -1
  216. package/dist/openapi/hooks.js +0 -83
  217. package/dist/openapi/hooks.js.map +0 -1
  218. package/dist/openapi/openapi-transformer.d.ts +0 -13
  219. package/dist/openapi/openapi-transformer.d.ts.map +0 -1
  220. package/dist/openapi/openapi-transformer.js +0 -87
  221. package/dist/openapi/openapi-transformer.js.map +0 -1
  222. package/dist/utils/pagination.d.ts +0 -48
  223. package/dist/utils/pagination.d.ts.map +0 -1
  224. package/dist/utils/pagination.js +0 -42
  225. package/dist/utils/pagination.js.map +0 -1
  226. package/dist/utils/serialize-dates.d.ts +0 -27
  227. package/dist/utils/serialize-dates.d.ts.map +0 -1
  228. package/dist/utils/serialize-dates.js +0 -39
  229. package/dist/utils/serialize-dates.js.map +0 -1
@@ -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":""}
@@ -0,0 +1,21 @@
1
+ import { type BaseIssue, type BaseSchema } from 'valibot';
2
+ import type { FilterOperator } from './types.js';
3
+ type SchemaNode = BaseSchema<unknown, unknown, BaseIssue<unknown>>;
4
+ type WhereRecord = Record<string, unknown>;
5
+ export type FilterScalar = string | number | boolean | Date;
6
+ export { parseFilterLiteral } from './filter-value-schemas.js';
7
+ /**
8
+ * Parse a filter value for `operator` before building Prisma conditions from query params.
9
+ *
10
+ * Substring and IN operators keep the raw string; equality and comparison operators
11
+ * delegate to `parseFilterLiteral`.
12
+ */
13
+ export declare function parseFilterValue(value: string, operator: FilterOperator): string | number | boolean;
14
+ /**
15
+ * Parse filter values in a Prisma `where` clause using the list-query filter schema.
16
+ *
17
+ * Query params are parsed earlier via `parseFilterValue`; this pass applies Valibot
18
+ * transforms on typed filter fields after user filters are merged with scope conditions.
19
+ */
20
+ export declare function parseWhereFilterValues(where: WhereRecord, filterSchema: SchemaNode): WhereRecord;
21
+ //# sourceMappingURL=parse-filter-values.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-filter-values.d.ts","sourceRoot":"","sources":["../../src/list-query/parse-filter-values.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,UAAU,EAA2B,MAAM,SAAS,CAAC;AAGnF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAOjD,KAAK,UAAU,GAAG,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;AACnE,KAAK,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAG3C,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AAE5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAS/D;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,cAAc,GACvB,MAAM,GAAG,MAAM,GAAG,OAAO,CAmB3B;AAiKD;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,GAAG,WAAW,CAEhG"}
@@ -0,0 +1,177 @@
1
+ import { object, optional, parse } from 'valibot';
2
+ import { parseFilterLiteral, unknownComparisonValueSchema } from './filter-value-schemas.js';
3
+ import { FILTER_SCHEMA_KIND } from './schema-helpers.js';
4
+ const FILTER_OPERATORS = ['equals', 'not', 'lt', 'lte', 'gt', 'gte', 'in', 'notIn'];
5
+ const COMPARISON_OPERATORS = ['lt', 'lte', 'gt', 'gte'];
6
+ const RELATION_WRAPPER_KEYS = ['is', 'isNot', 'some', 'none', 'every'];
7
+ const LOGICAL_OPERATORS = new Set(['AND', 'OR']);
8
+ export { parseFilterLiteral } from './filter-value-schemas.js';
9
+ const unknownComparisonFilterSchema = object({
10
+ gt: optional(unknownComparisonValueSchema()),
11
+ gte: optional(unknownComparisonValueSchema()),
12
+ lt: optional(unknownComparisonValueSchema()),
13
+ lte: optional(unknownComparisonValueSchema()),
14
+ });
15
+ /**
16
+ * Parse a filter value for `operator` before building Prisma conditions from query params.
17
+ *
18
+ * Substring and IN operators keep the raw string; equality and comparison operators
19
+ * delegate to `parseFilterLiteral`.
20
+ */
21
+ export function parseFilterValue(value, operator) {
22
+ const baseOperator = operator.replace(/\*$/, '');
23
+ if (baseOperator.includes('|')) {
24
+ return value;
25
+ }
26
+ if (baseOperator === '@=' ||
27
+ baseOperator === '_=' ||
28
+ baseOperator === '_-=' ||
29
+ baseOperator === '!@=' ||
30
+ baseOperator === '!_=' ||
31
+ baseOperator === '!_-=') {
32
+ return value;
33
+ }
34
+ return parseFilterLiteral(value);
35
+ }
36
+ function isWhereRecord(value) {
37
+ return value !== null && typeof value === 'object' && !Array.isArray(value);
38
+ }
39
+ function unwrapSchema(schema) {
40
+ let current = schema;
41
+ while (current !== null &&
42
+ typeof current === 'object' &&
43
+ 'type' in current &&
44
+ (current.type === 'optional' || current.type === 'nullable') &&
45
+ 'wrapped' in current) {
46
+ current = current.wrapped;
47
+ }
48
+ return current;
49
+ }
50
+ function isTypedFilterSchema(schema) {
51
+ const unwrapped = unwrapSchema(schema);
52
+ return typeof unwrapped === 'object' && unwrapped !== null && FILTER_SCHEMA_KIND in unwrapped;
53
+ }
54
+ function getObjectSchemaEntries(schema) {
55
+ const unwrapped = unwrapSchema(schema);
56
+ if (unwrapped.type !== 'object' || !unwrapped.entries) {
57
+ return undefined;
58
+ }
59
+ return unwrapped.entries;
60
+ }
61
+ function isRelationFilterSchema(schema) {
62
+ const entries = getObjectSchemaEntries(schema);
63
+ if (!entries) {
64
+ return false;
65
+ }
66
+ const keys = Object.keys(entries);
67
+ return keys.length > 0 && keys.every((key) => key === 'is' || key === 'isNot');
68
+ }
69
+ function isFilterConditionObject(value) {
70
+ return FILTER_OPERATORS.some((operator) => operator in value);
71
+ }
72
+ function parseLogicalConditions(value, parseItem) {
73
+ if (!Array.isArray(value)) {
74
+ return value;
75
+ }
76
+ return value.map((item) => (isWhereRecord(item) ? parseItem(item) : item));
77
+ }
78
+ function parseTypedFieldValue(fieldSchema, valueObject) {
79
+ return parse(fieldSchema, valueObject);
80
+ }
81
+ function parseUnknownFilterCondition(value) {
82
+ const comparisonOnly = {};
83
+ for (const operator of COMPARISON_OPERATORS) {
84
+ if (operator in value) {
85
+ comparisonOnly[operator] = value[operator];
86
+ }
87
+ }
88
+ if (Object.keys(comparisonOnly).length === 0) {
89
+ return value;
90
+ }
91
+ const parsedComparisons = parse(unknownComparisonFilterSchema, comparisonOnly);
92
+ return { ...value, ...parsedComparisons };
93
+ }
94
+ function parseUnknownWhereEntry(key, value) {
95
+ if (LOGICAL_OPERATORS.has(key)) {
96
+ return parseLogicalConditions(value, parseUnknownWhere);
97
+ }
98
+ if (!isWhereRecord(value)) {
99
+ return value;
100
+ }
101
+ if (isFilterConditionObject(value)) {
102
+ return parseUnknownFilterCondition(value);
103
+ }
104
+ return parseUnknownWhere(value);
105
+ }
106
+ function parseUnknownWhere(where) {
107
+ const result = {};
108
+ for (const [key, value] of Object.entries(where)) {
109
+ result[key] = parseUnknownWhereEntry(key, value);
110
+ }
111
+ return result;
112
+ }
113
+ function parseRelationFilterValue(valueObject, fieldSchema) {
114
+ const relationEntries = getObjectSchemaEntries(fieldSchema);
115
+ const nestedFilterSchema = relationEntries?.is ?? relationEntries?.isNot;
116
+ const parsedRelation = {};
117
+ for (const relKey of RELATION_WRAPPER_KEYS) {
118
+ const nestedValue = valueObject[relKey];
119
+ if (nestedFilterSchema && isWhereRecord(nestedValue)) {
120
+ parsedRelation[relKey] = parseWhereBySchema(nestedValue, nestedFilterSchema);
121
+ }
122
+ else if (relKey in valueObject) {
123
+ parsedRelation[relKey] = nestedValue;
124
+ }
125
+ }
126
+ for (const [relKey, nestedValue] of Object.entries(valueObject)) {
127
+ if (!(relKey in parsedRelation)) {
128
+ parsedRelation[relKey] = nestedValue;
129
+ }
130
+ }
131
+ return parsedRelation;
132
+ }
133
+ function parseKnownFieldValue(valueObject, fieldSchema) {
134
+ if (isTypedFilterSchema(fieldSchema)) {
135
+ return parseTypedFieldValue(fieldSchema, valueObject);
136
+ }
137
+ if (isRelationFilterSchema(fieldSchema)) {
138
+ return parseRelationFilterValue(valueObject, fieldSchema);
139
+ }
140
+ if (getObjectSchemaEntries(fieldSchema)) {
141
+ return parseWhereBySchema(valueObject, fieldSchema);
142
+ }
143
+ return valueObject;
144
+ }
145
+ function parseSchemaWhereEntry(key, value, fieldSchema, filterSchema) {
146
+ if (LOGICAL_OPERATORS.has(key)) {
147
+ return parseLogicalConditions(value, (item) => parseWhereBySchema(item, filterSchema));
148
+ }
149
+ if (!fieldSchema) {
150
+ return isWhereRecord(value) ? parseUnknownWhere(value) : value;
151
+ }
152
+ if (!isWhereRecord(value)) {
153
+ return value;
154
+ }
155
+ return parseKnownFieldValue(value, fieldSchema);
156
+ }
157
+ function parseWhereBySchema(where, filterSchema) {
158
+ const entries = getObjectSchemaEntries(filterSchema);
159
+ if (!entries) {
160
+ return parseUnknownWhere(where);
161
+ }
162
+ const result = {};
163
+ for (const [key, value] of Object.entries(where)) {
164
+ result[key] = parseSchemaWhereEntry(key, value, entries[key], filterSchema);
165
+ }
166
+ return result;
167
+ }
168
+ /**
169
+ * Parse filter values in a Prisma `where` clause using the list-query filter schema.
170
+ *
171
+ * Query params are parsed earlier via `parseFilterValue`; this pass applies Valibot
172
+ * transforms on typed filter fields after user filters are merged with scope conditions.
173
+ */
174
+ export function parseWhereFilterValues(where, filterSchema) {
175
+ return parseWhereBySchema(where, filterSchema);
176
+ }
177
+ //# sourceMappingURL=parse-filter-values.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-filter-values.js","sourceRoot":"","sources":["../../src/list-query/parse-filter-values.ts"],"names":[],"mappings":"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"}
@@ -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;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"}
1
+ {"version":3,"file":"prisma-builder.d.ts","sourceRoot":"","sources":["../../src/list-query/prisma-builder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAGV,YAAY,EACZ,iBAAiB,EACjB,UAAU,EACX,MAAM,YAAY,CAAC;AAkNpB;;;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"}
@@ -1,3 +1,4 @@
1
+ import { parseFilterLiteral, parseFilterValue } from './parse-filter-values.js';
1
2
  /**
2
3
  * Build condition for equality operators
3
4
  */
@@ -57,7 +58,7 @@ function buildStringCondition(operator, value, isCaseInsensitive) {
57
58
  */
58
59
  function buildInCondition(operator, value, isCaseInsensitive) {
59
60
  // Split by pipe and parse each value
60
- const values = value.split('|').map((v) => parsePrimitiveValue(v.trim()));
61
+ const values = value.split('|').map((v) => parseFilterLiteral(v.trim()));
61
62
  // Check if all values are strings for case-insensitive mode
62
63
  const allStrings = values.every((v) => typeof v === 'string');
63
64
  if (operator === '@=|') {
@@ -104,54 +105,6 @@ function operatorToPrismaCondition(operator, value) {
104
105
  }
105
106
  throw new Error(`Unsupported operator: ${operator}`);
106
107
  }
107
- /**
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.
114
- */
115
- function parsePrimitiveValue(value) {
116
- if (value === 'true') {
117
- return true;
118
- }
119
- if (value === 'false') {
120
- return false;
121
- }
122
- const numValue = Number(value);
123
- if (!Number.isNaN(numValue) && value.trim() !== '') {
124
- return numValue;
125
- }
126
- return value;
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
- }
155
108
  /**
156
109
  * Build a nested Prisma where condition from a field path
157
110
  * For nested paths (relations), wraps in Prisma's relation filter structure { is: { ... } }
@@ -220,7 +173,7 @@ export function buildWhereClause(filters) {
220
173
  }
221
174
  let where = {};
222
175
  for (const filter of filters) {
223
- const parsedValue = parseValue(filter.value, filter.operator);
176
+ const parsedValue = parseFilterValue(filter.value, filter.operator);
224
177
  const condition = operatorToPrismaCondition(filter.operator, parsedValue);
225
178
  const nestedCondition = buildNestedWhereCondition(filter.fieldPath, condition);
226
179
  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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"}