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.
- package/CHANGELOG.md +48 -1
- package/README.md +37 -2
- package/dist/audit/audit-logger.d.ts +22 -0
- package/dist/audit/audit-logger.d.ts.map +1 -0
- package/dist/audit/audit-logger.js +44 -0
- package/dist/audit/audit-logger.js.map +1 -0
- package/dist/audit/context.d.ts +13 -0
- package/dist/audit/context.d.ts.map +1 -0
- package/dist/audit/context.js +66 -0
- package/dist/audit/context.js.map +1 -0
- package/dist/audit/index.d.ts +8 -0
- package/dist/audit/index.d.ts.map +1 -0
- package/dist/audit/index.js +7 -0
- package/dist/audit/index.js.map +1 -0
- package/dist/audit/types.d.ts +74 -0
- package/dist/audit/types.d.ts.map +1 -0
- package/dist/audit/types.js +2 -0
- package/dist/audit/types.js.map +1 -0
- package/dist/auth/abilities.d.ts +1 -1
- package/dist/auth/abilities.d.ts.map +1 -1
- package/dist/auth/abilities.js.map +1 -1
- package/dist/auth/better-auth-provider.d.ts +17 -6
- package/dist/auth/better-auth-provider.d.ts.map +1 -1
- package/dist/auth/better-auth-provider.js +16 -9
- package/dist/auth/better-auth-provider.js.map +1 -1
- package/dist/auth/index.d.ts +2 -2
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/middleware.d.ts +10 -8
- package/dist/auth/middleware.d.ts.map +1 -1
- package/dist/auth/middleware.js +27 -11
- package/dist/auth/middleware.js.map +1 -1
- package/dist/auth/types.d.ts +13 -2
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/config/config-service.d.ts.map +1 -1
- package/dist/config/config-service.js.map +1 -1
- package/dist/config/providers.js.map +1 -1
- package/dist/core/bootstrap.d.ts.map +1 -1
- package/dist/core/bootstrap.js +16 -7
- package/dist/core/bootstrap.js.map +1 -1
- package/dist/core/module-graph.js +3 -0
- package/dist/core/module-graph.js.map +1 -1
- package/dist/core/request-scope.d.ts +12 -0
- package/dist/core/request-scope.d.ts.map +1 -0
- package/dist/core/request-scope.js +86 -0
- package/dist/core/request-scope.js.map +1 -0
- package/dist/core/route-factory.d.ts +1 -0
- package/dist/core/route-factory.d.ts.map +1 -1
- package/dist/core/types.d.ts +6 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/email/compiler/compiler.d.ts.map +1 -1
- package/dist/email/compiler/compiler.js +72 -20
- package/dist/email/compiler/compiler.js.map +1 -1
- package/dist/email/compiler/tokenizer.js +4 -2
- package/dist/email/compiler/tokenizer.js.map +1 -1
- package/dist/email/compiler/types.d.ts +2 -0
- package/dist/email/compiler/types.d.ts.map +1 -1
- package/dist/email/email-service.d.ts.map +1 -1
- package/dist/email/template-registry.d.ts.map +1 -1
- package/dist/email/templated-email-service.d.ts.map +1 -1
- package/dist/email/transports/mock-transport.d.ts.map +1 -1
- package/dist/email/transports/ses-transport.d.ts +8 -0
- package/dist/email/transports/ses-transport.d.ts.map +1 -1
- package/dist/email/transports/ses-transport.js +132 -25
- package/dist/email/transports/ses-transport.js.map +1 -1
- package/dist/email/webhooks/handler-factory.d.ts +1 -0
- package/dist/email/webhooks/handler-factory.d.ts.map +1 -1
- package/dist/email/webhooks/handler-factory.js +40 -38
- package/dist/email/webhooks/handler-factory.js.map +1 -1
- package/dist/email/webhooks/notification-parser.d.ts +1 -1
- package/dist/email/webhooks/notification-parser.js +1 -1
- package/dist/email/webhooks/signature-verification.d.ts +4 -2
- package/dist/email/webhooks/signature-verification.d.ts.map +1 -1
- package/dist/email/webhooks/signature-verification.js +63 -8
- package/dist/email/webhooks/signature-verification.js.map +1 -1
- package/dist/email/webhooks/subscription-handler.d.ts +4 -2
- package/dist/email/webhooks/subscription-handler.d.ts.map +1 -1
- package/dist/email/webhooks/subscription-handler.js +42 -6
- package/dist/email/webhooks/subscription-handler.js.map +1 -1
- package/dist/email/webhooks/types.d.ts +17 -2
- package/dist/email/webhooks/types.d.ts.map +1 -1
- package/dist/hono-context.d.ts +1 -1
- package/dist/hono-context.d.ts.map +1 -1
- package/dist/http/error-handler.js.map +1 -1
- package/dist/http/errors.d.ts.map +1 -1
- package/dist/http/errors.js.map +1 -1
- package/dist/http/route-authorization.d.ts +1 -2
- package/dist/http/route-authorization.d.ts.map +1 -1
- package/dist/http/route-authorization.js.map +1 -1
- package/dist/http/route-context.d.ts +4 -2
- package/dist/http/route-context.d.ts.map +1 -1
- package/dist/http/route-context.js +7 -2
- package/dist/http/route-context.js.map +1 -1
- package/dist/http/route-helpers.d.ts +3 -3
- package/dist/http/route-helpers.d.ts.map +1 -1
- package/dist/http/route-helpers.js.map +1 -1
- package/dist/http/route-openapi.d.ts +1 -1
- package/dist/http/route-openapi.d.ts.map +1 -1
- package/dist/http/route-openapi.js.map +1 -1
- package/dist/http/route-types.d.ts +26 -23
- package/dist/http/route-types.d.ts.map +1 -1
- package/dist/jobs/drivers/eventbridge-scheduler-driver.d.ts.map +1 -1
- package/dist/jobs/drivers/eventbridge-scheduler-driver.js.map +1 -1
- package/dist/jobs/drivers/mock-driver.d.ts.map +1 -1
- package/dist/jobs/drivers/mock-driver.js.map +1 -1
- package/dist/jobs/drivers/sqs-driver.d.ts.map +1 -1
- package/dist/jobs/drivers/sqs-driver.js.map +1 -1
- package/dist/jobs/errors.d.ts.map +1 -1
- package/dist/jobs/job-registry.d.ts.map +1 -1
- package/dist/jobs/job-registry.js.map +1 -1
- package/dist/jobs/job-service.d.ts.map +1 -1
- package/dist/jobs/job-service.js.map +1 -1
- package/dist/jobs/observability/client.d.ts +26 -0
- package/dist/jobs/observability/client.d.ts.map +1 -0
- package/dist/jobs/observability/client.js +286 -0
- package/dist/jobs/observability/client.js.map +1 -0
- package/dist/jobs/observability/dashboard.d.ts +19 -0
- package/dist/jobs/observability/dashboard.d.ts.map +1 -0
- package/dist/jobs/observability/dashboard.js +144 -0
- package/dist/jobs/observability/dashboard.js.map +1 -0
- package/dist/jobs/observability/emf.d.ts +24 -0
- package/dist/jobs/observability/emf.d.ts.map +1 -0
- package/dist/jobs/observability/emf.js +100 -0
- package/dist/jobs/observability/emf.js.map +1 -0
- package/dist/jobs/observability/index.d.ts +5 -0
- package/dist/jobs/observability/index.d.ts.map +1 -0
- package/dist/jobs/observability/index.js +4 -0
- package/dist/jobs/observability/index.js.map +1 -0
- package/dist/jobs/observability/types.d.ts +234 -0
- package/dist/jobs/observability/types.d.ts.map +1 -0
- package/dist/jobs/observability/types.js +2 -0
- package/dist/jobs/observability/types.js.map +1 -0
- package/dist/jobs/worker.d.ts +3 -1
- package/dist/jobs/worker.d.ts.map +1 -1
- package/dist/jobs/worker.js +2 -0
- package/dist/jobs/worker.js.map +1 -1
- package/dist/list-query/builder.d.ts +13 -3
- package/dist/list-query/builder.d.ts.map +1 -1
- package/dist/list-query/builder.js +45 -17
- package/dist/list-query/builder.js.map +1 -1
- package/dist/list-query/filter-mapping.d.ts +89 -0
- package/dist/list-query/filter-mapping.d.ts.map +1 -0
- package/dist/list-query/filter-mapping.js +254 -0
- package/dist/list-query/filter-mapping.js.map +1 -0
- package/dist/list-query/filter-value-schemas.d.ts +3 -3
- package/dist/list-query/filter-value-schemas.d.ts.map +1 -1
- package/dist/list-query/filter-value-schemas.js +13 -3
- package/dist/list-query/filter-value-schemas.js.map +1 -1
- package/dist/list-query/index.d.ts +4 -2
- package/dist/list-query/index.d.ts.map +1 -1
- package/dist/list-query/index.js +3 -1
- package/dist/list-query/index.js.map +1 -1
- package/dist/list-query/parse-filter-values.d.ts.map +1 -1
- package/dist/list-query/parse-filter-values.js +2 -2
- package/dist/list-query/parse-filter-values.js.map +1 -1
- package/dist/list-query/parser.d.ts +3 -2
- package/dist/list-query/parser.d.ts.map +1 -1
- package/dist/list-query/parser.js.map +1 -1
- package/dist/list-query/prisma-executor.d.ts +44 -29
- package/dist/list-query/prisma-executor.d.ts.map +1 -1
- package/dist/list-query/prisma-executor.js +48 -33
- package/dist/list-query/prisma-executor.js.map +1 -1
- package/dist/list-query/query-schema.d.ts +8 -13
- package/dist/list-query/query-schema.d.ts.map +1 -1
- package/dist/list-query/query-schema.js +11 -12
- package/dist/list-query/query-schema.js.map +1 -1
- package/dist/list-query/schema-helpers.d.ts +17 -17
- package/dist/list-query/schema-helpers.d.ts.map +1 -1
- package/dist/list-query/schema-helpers.js +11 -11
- package/dist/list-query/schema-helpers.js.map +1 -1
- package/dist/list-query/sort-mapping.d.ts +37 -0
- package/dist/list-query/sort-mapping.d.ts.map +1 -0
- package/dist/list-query/sort-mapping.js +88 -0
- package/dist/list-query/sort-mapping.js.map +1 -0
- package/dist/list-query/types.d.ts +3 -10
- package/dist/list-query/types.d.ts.map +1 -1
- package/dist/list-query/validator.d.ts.map +1 -1
- package/dist/list-query/validator.js +28 -10
- package/dist/list-query/validator.js.map +1 -1
- package/dist/middleware/rate-limit.d.ts.map +1 -1
- package/dist/middleware/rate-limit.js +60 -92
- package/dist/middleware/rate-limit.js.map +1 -1
- package/dist/observability/exception-tracking.d.ts.map +1 -1
- package/dist/observability/exception-tracking.js.map +1 -1
- package/dist/observability/index.d.ts +1 -1
- package/dist/observability/index.d.ts.map +1 -1
- package/dist/observability/index.js +1 -1
- package/dist/observability/index.js.map +1 -1
- package/dist/observability/pino-logger.d.ts +0 -28
- package/dist/observability/pino-logger.d.ts.map +1 -1
- package/dist/observability/pino-logger.js +21 -12
- package/dist/observability/pino-logger.js.map +1 -1
- package/dist/observability/request-context.d.ts +36 -1
- package/dist/observability/request-context.d.ts.map +1 -1
- package/dist/observability/request-context.js +43 -0
- package/dist/observability/request-context.js.map +1 -1
- package/dist/openapi/openapi.d.ts +1 -4
- package/dist/openapi/openapi.d.ts.map +1 -1
- package/dist/openapi/openapi.js +15 -35
- package/dist/openapi/openapi.js.map +1 -1
- package/dist/rls/configuration.d.ts +3 -0
- package/dist/rls/configuration.d.ts.map +1 -0
- package/dist/rls/configuration.js +13 -0
- package/dist/rls/configuration.js.map +1 -0
- package/dist/rls/context.d.ts +37 -0
- package/dist/rls/context.d.ts.map +1 -0
- package/dist/rls/context.js +56 -0
- package/dist/rls/context.js.map +1 -0
- package/dist/rls/extension.d.ts +7 -0
- package/dist/rls/extension.d.ts.map +1 -0
- package/dist/rls/extension.js +91 -0
- package/dist/rls/extension.js.map +1 -0
- package/dist/rls/generator.d.ts +17 -0
- package/dist/rls/generator.d.ts.map +1 -0
- package/dist/rls/generator.js +47 -0
- package/dist/rls/generator.js.map +1 -0
- package/dist/rls/index.d.ts +7 -0
- package/dist/rls/index.d.ts.map +1 -0
- package/dist/rls/index.js +7 -0
- package/dist/rls/index.js.map +1 -0
- package/dist/rls/middleware.d.ts +17 -0
- package/dist/rls/middleware.d.ts.map +1 -0
- package/dist/rls/middleware.js +51 -0
- package/dist/rls/middleware.js.map +1 -0
- package/dist/rls/testing.d.ts +24 -0
- package/dist/rls/testing.d.ts.map +1 -0
- package/dist/rls/testing.js +31 -0
- package/dist/rls/testing.js.map +1 -0
- package/dist/rls/types.d.ts +51 -0
- package/dist/rls/types.d.ts.map +1 -0
- package/dist/rls/types.js +16 -0
- package/dist/rls/types.js.map +1 -0
- package/dist/sse/index.d.ts +6 -0
- package/dist/sse/index.d.ts.map +1 -0
- package/dist/sse/index.js +18 -0
- package/dist/sse/index.js.map +1 -0
- package/dist/sse/sse-broadcaster.d.ts +38 -0
- package/dist/sse/sse-broadcaster.d.ts.map +1 -0
- package/dist/sse/sse-broadcaster.js +118 -0
- package/dist/sse/sse-broadcaster.js.map +1 -0
- package/dist/uploads/uploads.service.d.ts.map +1 -1
- package/dist/uploads/validators.d.ts.map +1 -1
- package/dist/utils/get-client-ip.d.ts.map +1 -1
- package/dist/utils/get-client-ip.js +22 -13
- package/dist/utils/get-client-ip.js.map +1 -1
- package/dist/utils/serialize-prisma-types.js.map +1 -1
- package/package.json +56 -35
|
@@ -6,46 +6,56 @@ export interface PrismaGroupByDelegate {
|
|
|
6
6
|
_count: Record<string, number>;
|
|
7
7
|
}>>;
|
|
8
8
|
}
|
|
9
|
-
/**
|
|
10
|
-
export
|
|
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
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
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?:
|
|
33
|
-
count(args?:
|
|
34
|
-
groupBy
|
|
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
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
readonly
|
|
47
|
-
readonly
|
|
48
|
-
readonly
|
|
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,
|
|
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":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAE7E,+EAA+E;AAC/E,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAC7C,KAAK,CACH,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;QACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAChC,CACF,CACF,CAAC;CACH;AAED,
|
|
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
|
|
61
|
-
const delegate = config.delegate();
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
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":"AA0CA
|
|
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
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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":"
|
|
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 {
|
|
1
|
+
import { check, exactOptional, integer, maxLength, maxValue, minValue, pipe, regex, strictObject, string, transform, } from 'valibot';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
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
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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,
|
|
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").
|
|
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").
|
|
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").
|
|
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").
|
|
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").
|
|
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").
|
|
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<
|
|
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<
|
|
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").
|
|
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").
|
|
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").
|
|
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,
|
|
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,
|
|
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 = () =>
|
|
20
|
+
export const stringFilterSchema = () => strictObject({
|
|
21
21
|
equals: optional(string()),
|
|
22
|
-
not: optional(union([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(
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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":"AAAA,OAAO,EACL,KAAK,EAIL,
|
|
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"}
|