@venizia/ignis-filter 0.2.0-0 → 0.2.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.
@@ -1 +1 @@
1
- {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../../src/schemas/builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAOvD,eAAO,MAAM,iBAAiB,GAAI,OAAO;IAAE,QAAQ,CAAC,EAAE,gBAAgB,CAAA;CAAE;;;;;;;;;CA8JvE,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../../src/schemas/builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAOvD,eAAO,MAAM,iBAAiB,GAAI,OAAO;IAAE,QAAQ,CAAC,EAAE,gBAAgB,CAAA;CAAE;;;;;;;;;CAqLvE,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
@@ -7,15 +7,21 @@ const zod_1 = require("zod");
7
7
  const identityDecorator = schema => schema;
8
8
  const buildQuerySchemas = (opts) => {
9
9
  const decorate = opts?.decorate ?? identityDecorator;
10
- const LimitSchema = decorate(zod_1.z.number().optional(), {
10
+ /**
11
+ * `int().nonnegative()`, not a bare `number()`. A NEGATIVE limit is not a smaller page - Drizzle
12
+ * renders the LIMIT clause only when the value is `>= 0`, so `filter={"limit":-1}` emitted a
13
+ * `select` with no LIMIT at all and returned the whole table. A fractional limit reaches the
14
+ * driver as `LIMIT 1.5` and errors there instead of here.
15
+ */
16
+ const LimitSchema = decorate(zod_1.z.number().int().nonnegative().optional(), {
11
17
  description: 'Maximum number of items to return. Defaults to 10 for top-level list queries.',
12
18
  examples: [1, 2, 3],
13
19
  });
14
- const OffsetSchema = decorate(zod_1.z.number().optional(), {
20
+ const OffsetSchema = decorate(zod_1.z.number().int().nonnegative().optional(), {
15
21
  description: 'Number of items to offset for pagination.',
16
22
  examples: [1, 2, 3],
17
23
  });
18
- const SkipSchema = decorate(zod_1.z.number().optional(), {
24
+ const SkipSchema = decorate(zod_1.z.number().int().nonnegative().optional(), {
19
25
  description: 'Number of items to skip for pagination.',
20
26
  examples: [1, 2, 3],
21
27
  });
@@ -46,11 +52,20 @@ const buildQuerySchemas = (opts) => {
46
52
  RecursiveWhereSchema,
47
53
  zod_1.z
48
54
  .string()
49
- .transform(val => {
50
- if (val) {
55
+ // A caught parse, never a bare `JSON.parse`. zod lets a thrown SyntaxError escape
56
+ // `safeParse`, so the controller's validation hook never ran and `?where=not-json` surfaced
57
+ // as a 500 with a stack - for what is simply a malformed query string.
58
+ .transform((val, ctx) => {
59
+ if (!val) {
60
+ return undefined;
61
+ }
62
+ try {
51
63
  return JSON.parse(val);
52
64
  }
53
- return undefined;
65
+ catch {
66
+ ctx.addIssue({ code: 'custom', message: 'where must be valid JSON' });
67
+ return zod_1.z.NEVER;
68
+ }
54
69
  })
55
70
  .pipe(RecursiveWhereSchema),
56
71
  ]), { type: 'object', description: 'Query conditions for selecting data.' });
@@ -61,9 +76,11 @@ const buildQuerySchemas = (opts) => {
61
76
  scope: decorate(zod_1.z
62
77
  .lazy(() => FilterSchema) // eslint-disable-line @typescript-eslint/no-use-before-define
63
78
  .optional(), { description: 'Model relation filter' }),
64
- shouldSkipDefaultFilter: decorate(zod_1.z.boolean().optional(), {
65
- description: 'Skip the default filter for this relation',
66
- }),
79
+ // `shouldSkipDefaultFilter` is deliberately NOT on the wire schema. It stays on the
80
+ // internal `TInclusion` type, so server-side callers keep it, but a client could
81
+ // otherwise send `include[].shouldSkipDefaultFilter` and the relation would be emitted
82
+ // with no where clause at all - erasing the `@model` defaultFilter that implements
83
+ // soft-delete and the static visibility scopes.
67
84
  }))
68
85
  .optional(), {
69
86
  description: 'Define related models to include in the response.',
@@ -88,11 +105,19 @@ const buildQuerySchemas = (opts) => {
88
105
  InternalFilterSchema,
89
106
  zod_1.z
90
107
  .string()
91
- .transform(val => {
92
- if (val) {
108
+ // Same reason as `where` above: a malformed filter is the caller's mistake, so it has to
109
+ // become a validation issue rather than an uncaught throw.
110
+ .transform((val, ctx) => {
111
+ if (!val) {
112
+ return {};
113
+ }
114
+ try {
93
115
  return JSON.parse(val);
94
116
  }
95
- return {};
117
+ catch {
118
+ ctx.addIssue({ code: 'custom', message: 'filter must be valid JSON' });
119
+ return zod_1.z.NEVER;
120
+ }
96
121
  })
97
122
  .pipe(InternalFilterSchema),
98
123
  ])
@@ -1 +1 @@
1
- {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../src/schemas/builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../src/schemas/builder.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../../src/schemas/builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAOvD,eAAO,MAAM,iBAAiB,GAAI,OAAO;IAAE,QAAQ,CAAC,EAAE,gBAAgB,CAAA;CAAE;;;;;;;;;CA8JvE,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../../src/schemas/builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAOvD,eAAO,MAAM,iBAAiB,GAAI,OAAO;IAAE,QAAQ,CAAC,EAAE,gBAAgB,CAAA;CAAE;;;;;;;;;CAqLvE,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
@@ -4,15 +4,21 @@ import { z } from 'zod';
4
4
  const identityDecorator = schema => schema;
5
5
  export const buildQuerySchemas = (opts) => {
6
6
  const decorate = opts?.decorate ?? identityDecorator;
7
- const LimitSchema = decorate(z.number().optional(), {
7
+ /**
8
+ * `int().nonnegative()`, not a bare `number()`. A NEGATIVE limit is not a smaller page - Drizzle
9
+ * renders the LIMIT clause only when the value is `>= 0`, so `filter={"limit":-1}` emitted a
10
+ * `select` with no LIMIT at all and returned the whole table. A fractional limit reaches the
11
+ * driver as `LIMIT 1.5` and errors there instead of here.
12
+ */
13
+ const LimitSchema = decorate(z.number().int().nonnegative().optional(), {
8
14
  description: 'Maximum number of items to return. Defaults to 10 for top-level list queries.',
9
15
  examples: [1, 2, 3],
10
16
  });
11
- const OffsetSchema = decorate(z.number().optional(), {
17
+ const OffsetSchema = decorate(z.number().int().nonnegative().optional(), {
12
18
  description: 'Number of items to offset for pagination.',
13
19
  examples: [1, 2, 3],
14
20
  });
15
- const SkipSchema = decorate(z.number().optional(), {
21
+ const SkipSchema = decorate(z.number().int().nonnegative().optional(), {
16
22
  description: 'Number of items to skip for pagination.',
17
23
  examples: [1, 2, 3],
18
24
  });
@@ -43,11 +49,20 @@ export const buildQuerySchemas = (opts) => {
43
49
  RecursiveWhereSchema,
44
50
  z
45
51
  .string()
46
- .transform(val => {
47
- if (val) {
52
+ // A caught parse, never a bare `JSON.parse`. zod lets a thrown SyntaxError escape
53
+ // `safeParse`, so the controller's validation hook never ran and `?where=not-json` surfaced
54
+ // as a 500 with a stack - for what is simply a malformed query string.
55
+ .transform((val, ctx) => {
56
+ if (!val) {
57
+ return undefined;
58
+ }
59
+ try {
48
60
  return JSON.parse(val);
49
61
  }
50
- return undefined;
62
+ catch {
63
+ ctx.addIssue({ code: 'custom', message: 'where must be valid JSON' });
64
+ return z.NEVER;
65
+ }
51
66
  })
52
67
  .pipe(RecursiveWhereSchema),
53
68
  ]), { type: 'object', description: 'Query conditions for selecting data.' });
@@ -58,9 +73,11 @@ export const buildQuerySchemas = (opts) => {
58
73
  scope: decorate(z
59
74
  .lazy(() => FilterSchema) // eslint-disable-line @typescript-eslint/no-use-before-define
60
75
  .optional(), { description: 'Model relation filter' }),
61
- shouldSkipDefaultFilter: decorate(z.boolean().optional(), {
62
- description: 'Skip the default filter for this relation',
63
- }),
76
+ // `shouldSkipDefaultFilter` is deliberately NOT on the wire schema. It stays on the
77
+ // internal `TInclusion` type, so server-side callers keep it, but a client could
78
+ // otherwise send `include[].shouldSkipDefaultFilter` and the relation would be emitted
79
+ // with no where clause at all - erasing the `@model` defaultFilter that implements
80
+ // soft-delete and the static visibility scopes.
64
81
  }))
65
82
  .optional(), {
66
83
  description: 'Define related models to include in the response.',
@@ -85,11 +102,19 @@ export const buildQuerySchemas = (opts) => {
85
102
  InternalFilterSchema,
86
103
  z
87
104
  .string()
88
- .transform(val => {
89
- if (val) {
105
+ // Same reason as `where` above: a malformed filter is the caller's mistake, so it has to
106
+ // become a validation issue rather than an uncaught throw.
107
+ .transform((val, ctx) => {
108
+ if (!val) {
109
+ return {};
110
+ }
111
+ try {
90
112
  return JSON.parse(val);
91
113
  }
92
- return {};
114
+ catch {
115
+ ctx.addIssue({ code: 'custom', message: 'filter must be valid JSON' });
116
+ return z.NEVER;
117
+ }
93
118
  })
94
119
  .pipe(InternalFilterSchema),
95
120
  ])
@@ -1 +1 @@
1
- {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../src/schemas/builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../src/schemas/builder.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@venizia/ignis-filter",
3
- "version": "0.2.0-0",
3
+ "version": "0.2.0-1",
4
4
  "description": "Engine-neutral query filter vocabulary for TypeScript: the `{ where, order, limit, offset, skip, fields, include }` shape, comparison/pattern/null/array/logical operators, and sort direction constants. Isomorphic by construction - no node builtins and no server-only peer, so the same filter language serves a server repository and a browser data layer.",
5
5
  "keywords": [
6
6
  "browser",