@cosmicdrift/kumiko-types 0.273.0 → 0.274.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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cosmicdrift/kumiko-types",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.274.0",
|
|
4
4
|
"description": "Framework-Type-Definitions für Kumiko — FeatureDefinition, BootCheck-Types und die reinen Engine-Types. Erlaubt Downstream-Konsumenten, gegen die Type-Contracts zu bauen, ohne das ganze Framework-Package zu importieren. Enthaelt keine identitaets-sensitiven Runtime-Werte mehr (Error-Klassen leben seit #1629 in kumiko-framework, Brand-Symbole nutzen Symbol.for) und ist deshalb eine plain dependency, keine peerDependency.",
|
|
5
5
|
"license": "BUSL-1.1",
|
|
6
6
|
"author": "Marc Frost <marc@cosmicdriftgamestudio.com>",
|
|
@@ -74,7 +74,7 @@ export type EventStoreExecutor = {
|
|
|
74
74
|
filter?:
|
|
75
75
|
| {
|
|
76
76
|
readonly field: string;
|
|
77
|
-
readonly op: "eq" | "ne" | "lt" | "gt" | "in";
|
|
77
|
+
readonly op: "eq" | "ne" | "lt" | "gt" | "lte" | "gte" | "in";
|
|
78
78
|
readonly value: unknown;
|
|
79
79
|
}
|
|
80
80
|
| undefined;
|
|
@@ -83,7 +83,7 @@ export type EventStoreExecutor = {
|
|
|
83
83
|
filters?:
|
|
84
84
|
| ReadonlyArray<{
|
|
85
85
|
readonly field: string;
|
|
86
|
-
readonly op: "eq" | "ne" | "lt" | "gt" | "in";
|
|
86
|
+
readonly op: "eq" | "ne" | "lt" | "gt" | "lte" | "gte" | "in";
|
|
87
87
|
readonly value: unknown;
|
|
88
88
|
}>
|
|
89
89
|
| undefined;
|
package/src/screen.ts
CHANGED
|
@@ -171,21 +171,23 @@ export type ListSortSpec = {
|
|
|
171
171
|
// unterscheidet sie.
|
|
172
172
|
//
|
|
173
173
|
// Operatoren (Drizzle-konsistent):
|
|
174
|
-
// eq/ne
|
|
175
|
-
// lt/gt
|
|
176
|
-
//
|
|
174
|
+
// eq/ne → field = value | field != value
|
|
175
|
+
// lt/gt → field < value | field > value (numerisch / temporal)
|
|
176
|
+
// lte/gte → field <= value | field >= value (numerisch / temporal)
|
|
177
|
+
// in → field IN (...values), value muss readonly array sein
|
|
177
178
|
//
|
|
178
179
|
// Field muss in der Entity existieren UND `filterable: true` haben
|
|
179
|
-
// (Boot-Validator pinned beides). `lt`/`gt` nur auf
|
|
180
|
-
// Field-Types (number/money/date/timestamp/
|
|
181
|
-
// text/boolean/select/multiSelect lehnt der
|
|
180
|
+
// (Boot-Validator pinned beides). `lt`/`gt`/`lte`/`gte` nur auf
|
|
181
|
+
// vergleichbaren Field-Types (number/money/date/timestamp/
|
|
182
|
+
// locatedTimestamp); auf text/boolean/select/multiSelect lehnt der
|
|
183
|
+
// Validator das ab.
|
|
182
184
|
//
|
|
183
185
|
// Security-Modell: Filter ist UX-Bucketing, KEINE Access-Boundary. Der
|
|
184
186
|
// Server appliziert den filter aus dem Payload — der Client kann ihn
|
|
185
187
|
// weglassen oder durch einen anderen ersetzen. Boundary bleiben
|
|
186
188
|
// access-rule + Tenant-Scope; Felder mit Sicherheits-Bias (encrypted,
|
|
187
189
|
// restricted) müssen dort geschützt werden, nicht über den Screen-Filter.
|
|
188
|
-
export type ScreenFilterOp = "eq" | "ne" | "lt" | "gt" | "in";
|
|
190
|
+
export type ScreenFilterOp = "eq" | "ne" | "lt" | "gt" | "lte" | "gte" | "in";
|
|
189
191
|
export type ScreenFilter = {
|
|
190
192
|
readonly field: string;
|
|
191
193
|
readonly op: ScreenFilterOp;
|