uql-orm 0.18.0 → 0.20.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 +77 -0
- package/README.md +3 -3
- package/dist/browser/querier/httpQuerier.d.ts +10 -10
- package/dist/browser/querier/httpQuerier.d.ts.map +1 -1
- package/dist/browser/querier/httpQuerier.js.map +1 -1
- package/dist/browser/type/clientQuerier.d.ts +9 -9
- package/dist/browser/type/clientQuerier.d.ts.map +1 -1
- package/dist/browser/uql-browser.min.js +2 -2
- package/dist/browser/uql-browser.min.js.map +4 -4
- package/dist/bunSql/bunSqlCockroachDialect.d.ts +1 -1
- package/dist/bunSql/bunSqlCockroachDialect.js +1 -1
- package/dist/dialect/abstractSqlDialect.d.ts +113 -51
- package/dist/dialect/abstractSqlDialect.d.ts.map +1 -1
- package/dist/dialect/abstractSqlDialect.js +186 -123
- package/dist/dialect/abstractSqlDialect.js.map +1 -1
- package/dist/dialect/jsonArrayElemMatchUtils.d.ts +5 -6
- package/dist/dialect/jsonArrayElemMatchUtils.d.ts.map +1 -1
- package/dist/dialect/jsonArrayElemMatchUtils.js +9 -19
- package/dist/dialect/jsonArrayElemMatchUtils.js.map +1 -1
- package/dist/dialect/jsonSql.d.ts +24 -0
- package/dist/dialect/jsonSql.d.ts.map +1 -0
- package/dist/dialect/jsonSql.js +37 -0
- package/dist/dialect/jsonSql.js.map +1 -0
- package/dist/dialect/mysqlLikeSqlDialect.d.ts +35 -3
- package/dist/dialect/mysqlLikeSqlDialect.d.ts.map +1 -1
- package/dist/dialect/mysqlLikeSqlDialect.js +64 -18
- package/dist/dialect/mysqlLikeSqlDialect.js.map +1 -1
- package/dist/dialect/pgLikeSqlDialect.d.ts +24 -5
- package/dist/dialect/pgLikeSqlDialect.d.ts.map +1 -1
- package/dist/dialect/pgLikeSqlDialect.js +50 -37
- package/dist/dialect/pgLikeSqlDialect.js.map +1 -1
- package/dist/dialect/vectorSqlDialect.d.ts +54 -0
- package/dist/dialect/vectorSqlDialect.d.ts.map +1 -0
- package/dist/dialect/vectorSqlDialect.js +73 -0
- package/dist/dialect/vectorSqlDialect.js.map +1 -0
- package/dist/entity/decorator/index-decorator.d.ts +6 -13
- package/dist/entity/decorator/index-decorator.d.ts.map +1 -1
- package/dist/entity/decorator/index-decorator.js.map +1 -1
- package/dist/maria/mariaDialect.d.ts +15 -3
- package/dist/maria/mariaDialect.d.ts.map +1 -1
- package/dist/maria/mariaDialect.js +25 -12
- package/dist/maria/mariaDialect.js.map +1 -1
- package/dist/migrate/generator/mongoSchemaGenerator.d.ts +1 -1
- package/dist/migrate/generator/mongoSchemaGenerator.d.ts.map +1 -1
- package/dist/migrate/introspection/abstractSqlSchemaIntrospector.d.ts +2 -1
- package/dist/migrate/introspection/abstractSqlSchemaIntrospector.d.ts.map +1 -1
- package/dist/migrate/introspection/abstractSqlSchemaIntrospector.js +5 -0
- package/dist/migrate/introspection/abstractSqlSchemaIntrospector.js.map +1 -1
- package/dist/migrate/introspection/baseSqlIntrospector.js +1 -1
- package/dist/migrate/introspection/baseSqlIntrospector.js.map +1 -1
- package/dist/migrate/introspection/mysqlIntrospector.d.ts +1 -3
- package/dist/migrate/introspection/mysqlIntrospector.d.ts.map +1 -1
- package/dist/migrate/introspection/mysqlIntrospector.js +0 -5
- package/dist/migrate/introspection/mysqlIntrospector.js.map +1 -1
- package/dist/migrate/introspection/postgresIntrospector.d.ts +1 -3
- package/dist/migrate/introspection/postgresIntrospector.d.ts.map +1 -1
- package/dist/migrate/introspection/postgresIntrospector.js +0 -5
- package/dist/migrate/introspection/postgresIntrospector.js.map +1 -1
- package/dist/migrate/introspection/sqliteIntrospector.d.ts +1 -3
- package/dist/migrate/introspection/sqliteIntrospector.d.ts.map +1 -1
- package/dist/migrate/introspection/sqliteIntrospector.js +0 -5
- package/dist/migrate/introspection/sqliteIntrospector.js.map +1 -1
- package/dist/migrate/schemaGenerator.js +1 -1
- package/dist/migrate/schemaGenerator.js.map +1 -1
- package/dist/mongo/mongoDialect.d.ts +29 -8
- package/dist/mongo/mongoDialect.d.ts.map +1 -1
- package/dist/mongo/mongoDialect.js +101 -12
- package/dist/mongo/mongoDialect.js.map +1 -1
- package/dist/mongo/mongodbQuerier.d.ts +2 -2
- package/dist/mongo/mongodbQuerier.d.ts.map +1 -1
- package/dist/mongo/mongodbQuerier.js +5 -4
- package/dist/mongo/mongodbQuerier.js.map +1 -1
- package/dist/postgres/postgresWireDriverCapabilities.d.ts +1 -1
- package/dist/postgres/postgresWireDriverCapabilities.js +1 -1
- package/dist/querier/abstractQuerier.d.ts +2 -2
- package/dist/querier/abstractQuerier.d.ts.map +1 -1
- package/dist/querier/abstractQuerier.js +6 -5
- package/dist/querier/abstractQuerier.js.map +1 -1
- package/dist/querier/abstractQuerierPool.d.ts +1 -1
- package/dist/querier/abstractQuerierPool.d.ts.map +1 -1
- package/dist/querier/abstractQuerierPool.js.map +1 -1
- package/dist/querier/abstractSqlQuerier.d.ts +2 -2
- package/dist/querier/abstractSqlQuerier.d.ts.map +1 -1
- package/dist/querier/abstractSqlQuerier.js.map +1 -1
- package/dist/querier/decorator/injectQuerier.d.ts +2 -2
- package/dist/querier/decorator/injectQuerier.d.ts.map +1 -1
- package/dist/querier/decorator/injectQuerier.js.map +1 -1
- package/dist/schema/schemaAST.d.ts.map +1 -1
- package/dist/schema/schemaAST.js +7 -19
- package/dist/schema/schemaAST.js.map +1 -1
- package/dist/schema/types.d.ts +1 -1
- package/dist/sqlite/sqliteDialect.d.ts +29 -8
- package/dist/sqlite/sqliteDialect.d.ts.map +1 -1
- package/dist/sqlite/sqliteDialect.js +59 -74
- package/dist/sqlite/sqliteDialect.js.map +1 -1
- package/dist/type/dialect.d.ts +192 -0
- package/dist/type/dialect.d.ts.map +1 -0
- package/dist/type/dialect.js +2 -0
- package/dist/type/dialect.js.map +1 -0
- package/dist/type/entity.d.ts +97 -45
- package/dist/type/entity.d.ts.map +1 -1
- package/dist/type/entity.js.map +1 -1
- package/dist/type/index.d.ts +5 -0
- package/dist/type/index.d.ts.map +1 -1
- package/dist/type/index.js +5 -0
- package/dist/type/index.js.map +1 -1
- package/dist/type/querier.d.ts +4 -3
- package/dist/type/querier.d.ts.map +1 -1
- package/dist/type/querier.js +1 -1
- package/dist/type/querier.js.map +1 -1
- package/dist/type/query.d.ts +19 -668
- package/dist/type/query.d.ts.map +1 -1
- package/dist/type/query.js +1 -51
- package/dist/type/query.js.map +1 -1
- package/dist/type/queryAggregate.d.ts +191 -0
- package/dist/type/queryAggregate.d.ts.map +1 -0
- package/dist/type/queryAggregate.js +39 -0
- package/dist/type/queryAggregate.js.map +1 -0
- package/dist/type/queryRaw.d.ts +35 -0
- package/dist/type/queryRaw.d.ts.map +1 -0
- package/dist/type/queryRaw.js +11 -0
- package/dist/type/queryRaw.js.map +1 -0
- package/dist/type/queryWhere.d.ts +271 -0
- package/dist/type/queryWhere.d.ts.map +1 -0
- package/dist/type/queryWhere.js +2 -0
- package/dist/type/queryWhere.js.map +1 -0
- package/dist/type/universalQuerier.d.ts +3 -2
- package/dist/type/universalQuerier.d.ts.map +1 -1
- package/dist/type/utility.d.ts +16 -2
- package/dist/type/utility.d.ts.map +1 -1
- package/dist/type/vector.d.ts +55 -0
- package/dist/type/vector.d.ts.map +1 -0
- package/dist/type/vector.js +2 -0
- package/dist/type/vector.js.map +1 -0
- package/dist/util/ansiSqlLiteral.d.ts +2 -0
- package/dist/util/ansiSqlLiteral.d.ts.map +1 -1
- package/dist/util/ansiSqlLiteral.js +5 -1
- package/dist/util/ansiSqlLiteral.js.map +1 -1
- package/dist/util/dialect.util.d.ts +14 -2
- package/dist/util/dialect.util.d.ts.map +1 -1
- package/dist/util/dialect.util.js +23 -0
- package/dist/util/dialect.util.js.map +1 -1
- package/dist/util/object.util.d.ts +12 -1
- package/dist/util/object.util.d.ts.map +1 -1
- package/dist/util/object.util.js +18 -0
- package/dist/util/object.util.js.map +1 -1
- package/dist/util/relationQuery.util.js +1 -1
- package/dist/util/relationQuery.util.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
import type { FieldKey, IdValue, JsonFieldPaths, JsonFieldPathValue, RelationKey } from './entity.js';
|
|
2
|
+
import type { QueryRaw } from './queryRaw.js';
|
|
3
|
+
import type { ExpandScalar, QueryComparableScalar, Scalar, Unpacked } from './utility.js';
|
|
4
|
+
/**
|
|
5
|
+
* options for full-text-search operator.
|
|
6
|
+
*/
|
|
7
|
+
export type QueryTextSearchOptions<E> = {
|
|
8
|
+
/**
|
|
9
|
+
* text to search for.
|
|
10
|
+
*/
|
|
11
|
+
$value: string;
|
|
12
|
+
/**
|
|
13
|
+
* list of fields to search on.
|
|
14
|
+
*/
|
|
15
|
+
$fields?: FieldKey<E>[];
|
|
16
|
+
/**
|
|
17
|
+
* Postgres text-search configuration (e.g. `'english'`), applied to both the document and the
|
|
18
|
+
* query. Defaults to the server's `default_text_search_config`. Ignored by other dialects.
|
|
19
|
+
*/
|
|
20
|
+
$config?: string;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* comparison by fields.
|
|
24
|
+
*/
|
|
25
|
+
export type QueryWhereFieldMap<E> = {
|
|
26
|
+
[K in FieldKey<E>]?: QueryWhereFieldValue<E[K]>;
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Field comparison, JSON dot-path access, and relation filtering - all fully typed.
|
|
30
|
+
* JSON dot-paths are restricted to real JSON fields, and typed payloads type each path's value
|
|
31
|
+
* (untyped `Json` payloads accept any `field.suffix` path with a permissive value). Relations are
|
|
32
|
+
* filtered via nested typed objects; dotted relation paths are not supported (the dialects throw
|
|
33
|
+
* for non-JSON dotted keys).
|
|
34
|
+
*/
|
|
35
|
+
export type QueryWhereMap<E> = QueryWhereFieldMap<E> & QueryWhereRootOperator<E> & {
|
|
36
|
+
[P in JsonFieldPaths<E>]?: QueryWhereFieldValue<JsonFieldPathValue<E, P>>;
|
|
37
|
+
} & {
|
|
38
|
+
[K in RelationKey<E>]?: QueryWhereMap<Unpacked<NonNullable<E[K]>>> | QueryRelationSizeFilter;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Filter a to-many relation by its row count.
|
|
42
|
+
* @example { users: { $size: 2 } }
|
|
43
|
+
* @example { users: { $size: { $gte: 2 } } }
|
|
44
|
+
*/
|
|
45
|
+
export type QueryRelationSizeFilter = {
|
|
46
|
+
readonly $size: number | QuerySizeComparisonOps;
|
|
47
|
+
};
|
|
48
|
+
export type QueryWhereRootOperator<E> = {
|
|
49
|
+
/**
|
|
50
|
+
* joins query clauses with a logical `AND`, returns records that match all the clauses.
|
|
51
|
+
*/
|
|
52
|
+
$and?: QueryWhereArray<E>;
|
|
53
|
+
/**
|
|
54
|
+
* joins query clauses with a logical `OR`, returns records that match any of the clauses.
|
|
55
|
+
*/
|
|
56
|
+
$or?: QueryWhereArray<E>;
|
|
57
|
+
/**
|
|
58
|
+
* joins query clauses with a logical `AND`, returns records that do not match all the clauses.
|
|
59
|
+
* @see {@link QueryWhereFieldOperatorMap.$not} for per-field negation.
|
|
60
|
+
*/
|
|
61
|
+
$not?: QueryWhereArray<E>;
|
|
62
|
+
/**
|
|
63
|
+
* joins query clauses with a logical `OR`, returns records that do not match any of the clauses.
|
|
64
|
+
*/
|
|
65
|
+
$nor?: QueryWhereArray<E>;
|
|
66
|
+
/**
|
|
67
|
+
* whether the specified fields match against a full-text search of the given string.
|
|
68
|
+
*/
|
|
69
|
+
$text?: QueryTextSearchOptions<E>;
|
|
70
|
+
/**
|
|
71
|
+
* whether the record exists in the given sub-query.
|
|
72
|
+
*/
|
|
73
|
+
$exists?: QueryRaw;
|
|
74
|
+
/**
|
|
75
|
+
* whether the record does not exists in the given sub-query.
|
|
76
|
+
*/
|
|
77
|
+
$nexists?: QueryRaw;
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* Per-field negation operators. `Pick`'s constraint ties this back to
|
|
81
|
+
* {@link QueryWhereRootOperator} so a rename there breaks this union at compile time.
|
|
82
|
+
*/
|
|
83
|
+
export type QueryNegateOp = keyof Pick<QueryWhereRootOperator<unknown>, '$not' | '$nor'>;
|
|
84
|
+
/**
|
|
85
|
+
* Comparison operators accepted by `$size` for range queries: {@link QueryHavingOp} plus `$between`.
|
|
86
|
+
* Strips `null` from picked operators since array size is always numeric.
|
|
87
|
+
*/
|
|
88
|
+
export type QuerySizeComparisonOps = {
|
|
89
|
+
[K in QueryHavingOp | '$between']?: NonNullable<QueryWhereFieldOperatorMap<number>[K]>;
|
|
90
|
+
};
|
|
91
|
+
export type QueryWhereFieldOperatorMap<T> = {
|
|
92
|
+
/**
|
|
93
|
+
* whether a value is equal to the given value.
|
|
94
|
+
*/
|
|
95
|
+
$eq?: ExpandScalar<T> | null;
|
|
96
|
+
/**
|
|
97
|
+
* whether a value is not equal to the given value.
|
|
98
|
+
*/
|
|
99
|
+
$ne?: ExpandScalar<T> | null;
|
|
100
|
+
/**
|
|
101
|
+
* negates the given comparison for a single field.
|
|
102
|
+
* @see {@link QueryWhereRootOperator.$not} for root-level clause negation.
|
|
103
|
+
*/
|
|
104
|
+
$not?: QueryWhereFieldValue<T>;
|
|
105
|
+
/**
|
|
106
|
+
* whether a value is less than the given value.
|
|
107
|
+
*/
|
|
108
|
+
$lt?: ExpandScalar<T>;
|
|
109
|
+
/**
|
|
110
|
+
* whether a value is less than or equal to the given value.
|
|
111
|
+
*/
|
|
112
|
+
$lte?: ExpandScalar<T>;
|
|
113
|
+
/**
|
|
114
|
+
* whether a value is greater than the given value.
|
|
115
|
+
*/
|
|
116
|
+
$gt?: ExpandScalar<T>;
|
|
117
|
+
/**
|
|
118
|
+
* whether a value is greater than or equal to the given value.
|
|
119
|
+
*/
|
|
120
|
+
$gte?: ExpandScalar<T>;
|
|
121
|
+
/**
|
|
122
|
+
* whether a value is between two values (inclusive). Shorthand for $gte + $lte.
|
|
123
|
+
* @example { age: { $between: [18, 65] } }
|
|
124
|
+
*/
|
|
125
|
+
$between?: [ExpandScalar<T>, ExpandScalar<T>];
|
|
126
|
+
/**
|
|
127
|
+
* whether a string begins with the given string (case sensitive).
|
|
128
|
+
*/
|
|
129
|
+
$startsWith?: string;
|
|
130
|
+
/**
|
|
131
|
+
* whether a string begins with the given string (case insensitive).
|
|
132
|
+
*/
|
|
133
|
+
$istartsWith?: string;
|
|
134
|
+
/**
|
|
135
|
+
* whether a string ends with the given string (case sensitive).
|
|
136
|
+
*/
|
|
137
|
+
$endsWith?: string;
|
|
138
|
+
/**
|
|
139
|
+
* whether a string ends with the given string (case insensitive).
|
|
140
|
+
*/
|
|
141
|
+
$iendsWith?: string;
|
|
142
|
+
/**
|
|
143
|
+
* whether a string is contained within the given string (case sensitive).
|
|
144
|
+
*/
|
|
145
|
+
$includes?: string;
|
|
146
|
+
/**
|
|
147
|
+
* whether a string is contained within the given string (case insensitive).
|
|
148
|
+
*/
|
|
149
|
+
$iincludes?: string;
|
|
150
|
+
/**
|
|
151
|
+
* whether a string fulfills the given pattern (case sensitive).
|
|
152
|
+
*/
|
|
153
|
+
$like?: string;
|
|
154
|
+
/**
|
|
155
|
+
* whether a string fulfills the given pattern (case insensitive).
|
|
156
|
+
*/
|
|
157
|
+
$ilike?: string;
|
|
158
|
+
/**
|
|
159
|
+
* whether a string matches the given regular expression.
|
|
160
|
+
*/
|
|
161
|
+
$regex?: string;
|
|
162
|
+
/**
|
|
163
|
+
* whether a value matches any of the given values.
|
|
164
|
+
*/
|
|
165
|
+
$in?: ExpandScalar<T>[];
|
|
166
|
+
/**
|
|
167
|
+
* whether a value does not match any of the given values.
|
|
168
|
+
*/
|
|
169
|
+
$nin?: ExpandScalar<T>[];
|
|
170
|
+
/**
|
|
171
|
+
* whether a value is null.
|
|
172
|
+
* @example { deletedAt: { $isNull: true } }
|
|
173
|
+
*/
|
|
174
|
+
$isNull?: boolean;
|
|
175
|
+
/**
|
|
176
|
+
* whether a value is not null.
|
|
177
|
+
* @example { email: { $isNotNull: true } }
|
|
178
|
+
*/
|
|
179
|
+
$isNotNull?: boolean;
|
|
180
|
+
/**
|
|
181
|
+
* whether an array contains all the specified values.
|
|
182
|
+
* @example { tags: { $all: ['typescript', 'orm'] } }
|
|
183
|
+
*/
|
|
184
|
+
$all?: unknown extends T ? unknown[] : NonNullable<T> extends readonly (infer U)[] ? ExpandScalar<U>[] : never;
|
|
185
|
+
/**
|
|
186
|
+
* whether an array has the specified length.
|
|
187
|
+
* Accepts a number for exact match, or a comparison operator object for range queries.
|
|
188
|
+
* @example { roles: { $size: 3 } }
|
|
189
|
+
* @example { roles: { $size: { $gte: 2 } } }
|
|
190
|
+
* @example { roles: { $size: { $gt: 0, $lte: 5 } } }
|
|
191
|
+
*/
|
|
192
|
+
$size?: number | QuerySizeComparisonOps;
|
|
193
|
+
/**
|
|
194
|
+
* whether an array contains at least one element matching all specified conditions.
|
|
195
|
+
* Each key of the element type maps to a value or an operator map for that key.
|
|
196
|
+
* @example { addresses: { $elemMatch: { city: 'NYC', zip: '10001' } } }
|
|
197
|
+
* @example { addresses: { $elemMatch: { city: { $like: 'New%' } } } }
|
|
198
|
+
*/
|
|
199
|
+
$elemMatch?: unknown extends T ? QueryWhereElemMatch<unknown> : NonNullable<T> extends readonly (infer U)[] ? QueryWhereElemMatch<U> : never;
|
|
200
|
+
};
|
|
201
|
+
/**
|
|
202
|
+
* Element-level conditions for `$elemMatch`. Scalar elements take an operator map for the element
|
|
203
|
+
* itself (`{ tags: { $elemMatch: { $startsWith: 'ad' } } }`); object elements map each key to a
|
|
204
|
+
* field comparison. An untyped element (`unknown`) accepts any keys but still requires the
|
|
205
|
+
* object-of-conditions shape (a bare scalar is rejected).
|
|
206
|
+
*/
|
|
207
|
+
export type QueryWhereElemMatch<U> = unknown extends U ? {
|
|
208
|
+
[key: string]: QueryWhereFieldValue<unknown> | undefined;
|
|
209
|
+
} : NonNullable<U> extends Scalar ? QueryWhereFieldOperators<NonNullable<U>> : {
|
|
210
|
+
[K in keyof NonNullable<U>]?: QueryWhereFieldValue<NonNullable<U>[K]>;
|
|
211
|
+
};
|
|
212
|
+
/**
|
|
213
|
+
* Simple relational comparison operators. `Pick`'s constraint ties this back to
|
|
214
|
+
* {@link QueryWhereFieldOperatorMap} so a rename there breaks this union at compile time.
|
|
215
|
+
*/
|
|
216
|
+
export type QueryCompareOp = keyof Pick<QueryWhereFieldOperatorMap<unknown>, '$gt' | '$gte' | '$lt' | '$lte'>;
|
|
217
|
+
/**
|
|
218
|
+
* String pattern-matching operators. `Pick`'s constraint ties this back to
|
|
219
|
+
* {@link QueryWhereFieldOperatorMap} so a rename there breaks this union at compile time.
|
|
220
|
+
*/
|
|
221
|
+
export type QueryLikeOp = keyof Pick<QueryWhereFieldOperatorMap<unknown>, '$startsWith' | '$istartsWith' | '$endsWith' | '$iendsWith' | '$includes' | '$iincludes' | '$like' | '$ilike'>;
|
|
222
|
+
/**
|
|
223
|
+
* `HAVING` clause operators: {@link QueryCompareOp} plus `$eq`/`$ne`. `Pick`'s constraint ties the
|
|
224
|
+
* latter back to {@link QueryWhereFieldOperatorMap} so a rename there breaks this union at compile time.
|
|
225
|
+
*/
|
|
226
|
+
export type QueryHavingOp = QueryCompareOp | keyof Pick<QueryWhereFieldOperatorMap<number>, '$eq' | '$ne'>;
|
|
227
|
+
/**
|
|
228
|
+
* String pattern-matching operators: {@link QueryLikeOp} plus `$regex`. `Pick`'s constraint ties
|
|
229
|
+
* the latter back to {@link QueryWhereFieldOperatorMap} so a rename there breaks this union.
|
|
230
|
+
*/
|
|
231
|
+
type QueryStringOp = QueryLikeOp | keyof Pick<QueryWhereFieldOperatorMap<unknown>, '$regex'>;
|
|
232
|
+
/**
|
|
233
|
+
* Array-only operators. `Pick`'s constraint ties this back to {@link QueryWhereFieldOperatorMap}
|
|
234
|
+
* so a rename there breaks this union at compile time.
|
|
235
|
+
*/
|
|
236
|
+
type QueryArrayOp = keyof Pick<QueryWhereFieldOperatorMap<unknown>, '$all' | '$size' | '$elemMatch'>;
|
|
237
|
+
/**
|
|
238
|
+
* Ordering operators: {@link QueryCompareOp} plus `$between`.
|
|
239
|
+
*/
|
|
240
|
+
type QueryOrderedOp = QueryCompareOp | keyof Pick<QueryWhereFieldOperatorMap<unknown>, '$between'>;
|
|
241
|
+
/**
|
|
242
|
+
* Operators applicable to every field type: equality, membership, negation, and null checks.
|
|
243
|
+
*/
|
|
244
|
+
type QueryCommonOp = Exclude<keyof QueryWhereFieldOperatorMap<unknown>, QueryStringOp | QueryArrayOp | QueryOrderedOp>;
|
|
245
|
+
/**
|
|
246
|
+
* Operator keys applicable to a field of type `T`. Brackets prevent union distribution so an
|
|
247
|
+
* optional field (`string | undefined`) or a literal union (`'a' | 'b'`) gates as one type.
|
|
248
|
+
*/
|
|
249
|
+
type QueryAllowedOp<T> = QueryCommonOp | ([NonNullable<T>] extends [QueryComparableScalar] ? QueryOrderedOp : never) | ([NonNullable<T>] extends [string] ? QueryStringOp : never) | ([NonNullable<T>] extends [readonly unknown[]] ? QueryArrayOp : never);
|
|
250
|
+
/**
|
|
251
|
+
* Operators applicable to a field of type `T`: string operators require string fields, ordering
|
|
252
|
+
* operators comparable fields, array operators array fields. `unknown` stays fully permissive
|
|
253
|
+
* (untyped JSON dot-paths, erased dialect shapes).
|
|
254
|
+
*/
|
|
255
|
+
export type QueryWhereFieldOperators<T> = unknown extends T ? QueryWhereFieldOperatorMap<T> : Pick<QueryWhereFieldOperatorMap<T>, QueryAllowedOp<T>>;
|
|
256
|
+
/**
|
|
257
|
+
* Value for a field comparison. A bare array is an implicit `$in` for scalar fields only:
|
|
258
|
+
* on array-typed fields (e.g. a vector `number[]`) an array of arrays is ambiguous, so
|
|
259
|
+
* membership there requires an explicit operator.
|
|
260
|
+
*/
|
|
261
|
+
export type QueryWhereFieldValue<T> = T | ([NonNullable<T>] extends [readonly unknown[]] ? never : T[]) | QueryWhereFieldOperators<T> | QueryRaw;
|
|
262
|
+
/**
|
|
263
|
+
* query filter array - used for `$and`, `$or`, `$not`, `$nor` operators.
|
|
264
|
+
*/
|
|
265
|
+
export type QueryWhereArray<E> = (QueryWhereMap<E> | QueryRaw)[];
|
|
266
|
+
/**
|
|
267
|
+
* query filter.
|
|
268
|
+
*/
|
|
269
|
+
export type QueryWhere<E> = IdValue<E> | IdValue<E>[] | QueryWhereMap<E> | QueryWhereArray<E> | QueryRaw;
|
|
270
|
+
export {};
|
|
271
|
+
//# sourceMappingURL=queryWhere.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queryWhere.d.ts","sourceRoot":"","sources":["../../src/type/queryWhere.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queryWhere.js","sourceRoot":"","sources":["../../src/type/queryWhere.ts"],"names":[],"mappings":""}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { IdValue, UpdatePayload } from './entity.js';
|
|
2
|
-
import type { Query,
|
|
2
|
+
import type { Query, QueryConflictPaths, QueryOne, QueryOptions, QuerySearch, QueryUpdateResult } from './query.js';
|
|
3
|
+
import type { QueryAggMap, QueryAggregate, QueryAggregateResult, QueryGroupMap } from './queryAggregate.js';
|
|
3
4
|
import type { Type } from './utility.js';
|
|
4
5
|
/**
|
|
5
6
|
* A `querier` allows to interact with the datasource to perform persistence operations on any entity.
|
|
@@ -50,7 +51,7 @@ export interface UniversalQuerier {
|
|
|
50
51
|
* @param q the search options
|
|
51
52
|
* @return the count
|
|
52
53
|
*/
|
|
53
|
-
count<E extends object>(entity: Type<E>, q
|
|
54
|
+
count<E extends object>(entity: Type<E>, q?: QuerySearch<E>, opts?: QueryOptions): Promise<number>;
|
|
54
55
|
/**
|
|
55
56
|
* inserts a record.
|
|
56
57
|
* @param entity the entity to persist on
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"universalQuerier.d.ts","sourceRoot":"","sources":["../../src/type/universalQuerier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"universalQuerier.d.ts","sourceRoot":"","sources":["../../src/type/universalQuerier.ts"],"names":[],"mappings":"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"}
|
package/dist/type/utility.d.ts
CHANGED
|
@@ -3,8 +3,15 @@ export type BooleanLike = boolean | 0 | 1;
|
|
|
3
3
|
export type MongoId = {
|
|
4
4
|
toHexString: () => string;
|
|
5
5
|
};
|
|
6
|
+
/**
|
|
7
|
+
* Every value type storable in an entity column. Superset of {@link QueryComparableScalar}
|
|
8
|
+
* and {@link PrimaryKey}.
|
|
9
|
+
*/
|
|
6
10
|
export type Scalar = string | number | boolean | bigint | Date | RegExp | Buffer | MongoId;
|
|
7
|
-
|
|
11
|
+
/**
|
|
12
|
+
* Scalar types with a meaningful ordering, accepted by `$lt`/`$lte`/`$gt`/`$gte`/`$between`.
|
|
13
|
+
*/
|
|
14
|
+
export type QueryComparableScalar = string | number | bigint | Date;
|
|
8
15
|
/**
|
|
9
16
|
* Represents a database primary key value.
|
|
10
17
|
*/
|
|
@@ -33,5 +40,12 @@ export interface RawRow {
|
|
|
33
40
|
export type Writable<T> = {
|
|
34
41
|
-readonly [K in keyof T]: T[K];
|
|
35
42
|
};
|
|
36
|
-
|
|
43
|
+
/**
|
|
44
|
+
* `Omit`, but distributed over `T`'s union members before recombining. Plain `Omit<T, K>` computes
|
|
45
|
+
* `keyof T` up front, which for a union takes the intersection of each member's keys and flattens
|
|
46
|
+
* their property types together - collapsing a discriminated union (e.g. `EntityIndexMeta`'s
|
|
47
|
+
* `type`/`distance` pairing) into a single, non-discriminated shape.
|
|
48
|
+
*/
|
|
49
|
+
export type DistributiveOmit<T, K extends PropertyKey> = T extends unknown ? Omit<T, K> : never;
|
|
50
|
+
export type Unpacked<T> = T extends readonly (infer U)[] ? U : T extends (...args: unknown[]) => infer U ? U : T extends Promise<infer U> ? U : T;
|
|
37
51
|
//# sourceMappingURL=utility.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utility.d.ts","sourceRoot":"","sources":["../../src/type/utility.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,QAAQ,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;AAEjG,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;AAE1C,MAAM,MAAM,OAAO,GAAG;IACpB,WAAW,EAAE,MAAM,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3F,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"utility.d.ts","sourceRoot":"","sources":["../../src/type/utility.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,QAAQ,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;AAEjG,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;AAE1C,MAAM,MAAM,OAAO,GAAG;IACpB,WAAW,EAAE,MAAM,MAAM,CAAC;CAC3B,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3F;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;AAEpE;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAElD;;;;;;;;;;GAUG;AACH,MAAM,MAAM,IAAI,CAAC,CAAC,GAAG,OAAO,IAAI,CAAC,GAAG;IAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AAEhE,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,CAAC,CAAC;AAEjE;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;IAAE,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC;AAE7D;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,EAAE,CAAC,SAAS,WAAW,IAAI,CAAC,SAAS,OAAO,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC;AAEhG,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GACpD,CAAC,GACD,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,MAAM,CAAC,GACvC,CAAC,GACD,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,CAAC,GACxB,CAAC,GACD,CAAC,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { IndexType } from '../schema/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Distance metrics supported by vector similarity search.
|
|
4
|
+
* - `cosine` - best for text/LLM embeddings (default)
|
|
5
|
+
* - `l2` - Euclidean distance
|
|
6
|
+
* - `inner` - inner (dot) product
|
|
7
|
+
* - `l1` - Manhattan distance
|
|
8
|
+
* - `hamming` - for binary vectors
|
|
9
|
+
*/
|
|
10
|
+
export type VectorDistance = 'cosine' | 'l2' | 'inner' | 'l1' | 'hamming';
|
|
11
|
+
/**
|
|
12
|
+
* Vector similarity search options - used inside `$sort` on vector fields.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```ts
|
|
16
|
+
* querier.findMany(Article, {
|
|
17
|
+
* $sort: { embedding: { $vector: queryVec } },
|
|
18
|
+
* $limit: 10,
|
|
19
|
+
* });
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export interface QueryVectorSearch {
|
|
23
|
+
/** The query vector to compare against. */
|
|
24
|
+
readonly $vector: readonly number[];
|
|
25
|
+
/** Distance metric. Overrides entity-level default. Falls back to `'cosine'`. */
|
|
26
|
+
readonly $distance?: VectorDistance;
|
|
27
|
+
/** Project the computed distance as a named field in the result. */
|
|
28
|
+
readonly $project?: string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Augments an entity with the distance field projected by a vector-search `$sort.$project`. The
|
|
32
|
+
* find methods return the plain entity, so annotate the result with this when you project a score:
|
|
33
|
+
* ```ts
|
|
34
|
+
* const results = (await querier.findMany(Article, {
|
|
35
|
+
* $sort: { embedding: { $vector: queryVec, $project: 'similarity' } },
|
|
36
|
+
* })) as WithDistance<Article, 'similarity'>[];
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
export type WithDistance<E, K extends string = '_distance'> = E & Record<K, number>;
|
|
40
|
+
/**
|
|
41
|
+
* Vector-specific tuning options shared by `@Index` decorator, entity metadata, and migration schema.
|
|
42
|
+
*/
|
|
43
|
+
export type VectorIndexOptions = {
|
|
44
|
+
/** Distance metric for vector indexes - maps to operator class. */
|
|
45
|
+
distance?: VectorDistance;
|
|
46
|
+
/** HNSW: max connections per node. */
|
|
47
|
+
m?: number;
|
|
48
|
+
/** HNSW: construction search depth. */
|
|
49
|
+
efConstruction?: number;
|
|
50
|
+
/** IVFFlat: number of inverted lists. */
|
|
51
|
+
lists?: number;
|
|
52
|
+
};
|
|
53
|
+
/** Index types whose emitted DDL depends on the distance metric. */
|
|
54
|
+
export type VectorIndexType = Extract<IndexType, 'hnsw' | 'ivfflat' | 'vector'>;
|
|
55
|
+
//# sourceMappingURL=vector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vector.d.ts","sourceRoot":"","sources":["../../src/type/vector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD;;;;;;;GAOG;AACH,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,IAAI,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;AAE1E;;;;;;;;;;GAUG;AACH,MAAM,WAAW,iBAAiB;IAChC,2CAA2C;IAC3C,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,iFAAiF;IACjF,QAAQ,CAAC,SAAS,CAAC,EAAE,cAAc,CAAC;IACpC,oEAAoE;IACpE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,GAAG,WAAW,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAEpF;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,mEAAmE;IACnE,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,sCAAsC;IACtC,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,uCAAuC;IACvC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,oEAAoE;AACpE,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vector.js","sourceRoot":"","sources":["../../src/type/vector.ts"],"names":[],"mappings":""}
|
|
@@ -13,6 +13,8 @@
|
|
|
13
13
|
* are separate from this helper; see {@link PostgresDialect} (array text format when
|
|
14
14
|
* `nativeArrays` is false) - do not "unify" that path with this function.
|
|
15
15
|
*/
|
|
16
|
+
/** Doubles every single quote in `val`, the ANSI escaping shared by string literals and JSON path keys. */
|
|
17
|
+
export declare function escapeSingleQuotes(val: string): string;
|
|
16
18
|
/**
|
|
17
19
|
* Escape `value` as an SQL literal (or `NULL`). Throws on unsupported types so callers cannot
|
|
18
20
|
* accidentally stringify attacker-controlled objects into SQL.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ansiSqlLiteral.d.ts","sourceRoot":"","sources":["../../src/util/ansiSqlLiteral.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;
|
|
1
|
+
{"version":3,"file":"ansiSqlLiteral.d.ts","sourceRoot":"","sources":["../../src/util/ansiSqlLiteral.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,2GAA2G;AAC3G,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEtD;AAkDD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAsC3D"}
|
|
@@ -14,8 +14,12 @@
|
|
|
14
14
|
* `nativeArrays` is false) - do not "unify" that path with this function.
|
|
15
15
|
*/
|
|
16
16
|
const SINGLE_QUOTE = /'/g;
|
|
17
|
+
/** Doubles every single quote in `val`, the ANSI escaping shared by string literals and JSON path keys. */
|
|
18
|
+
export function escapeSingleQuotes(val) {
|
|
19
|
+
return val.replace(SINGLE_QUOTE, "''");
|
|
20
|
+
}
|
|
17
21
|
function escapeStringLiteral(val) {
|
|
18
|
-
return `'${val
|
|
22
|
+
return `'${escapeSingleQuotes(val)}'`;
|
|
19
23
|
}
|
|
20
24
|
function zeroPad(n, len) {
|
|
21
25
|
let s = String(n);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ansiSqlLiteral.js","sourceRoot":"","sources":["../../src/util/ansiSqlLiteral.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,YAAY,GAAG,IAAI,CAAC;AAE1B,
|
|
1
|
+
{"version":3,"file":"ansiSqlLiteral.js","sourceRoot":"","sources":["../../src/util/ansiSqlLiteral.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type CascadeType, type EntityMeta, type FieldKey, type FieldOptions, type OnFieldCallback, type QueryAggMap, type QueryAggregateOp, type QueryExclude, type QueryGroupMap, type QueryOptions, QueryRaw, type QuerySelect, type QuerySortMap, type QueryVectorSearch, type QueryWhere, type QueryWhereMap, type RelationKey } from '../type/index.js';
|
|
1
|
+
import { type CascadeType, type EntityMeta, type FieldKey, type FieldOptions, type JsonUpdateOp, type OnFieldCallback, type QueryAggMap, type QueryAggregateOp, type QueryExclude, type QueryGroupMap, type QueryOptions, QueryRaw, type QuerySelect, type QuerySelectValue, type QuerySortMap, type QueryVectorSearch, type QueryWhere, type QueryWhereMap, type RelationKey } from '../type/index.js';
|
|
2
2
|
export type CallbackKey = keyof Pick<FieldOptions, 'onInsert' | 'onUpdate'>;
|
|
3
3
|
export declare function filterFieldKeys<E>(meta: EntityMeta<E>, payload: E, callbackKey: CallbackKey): FieldKey<E>[];
|
|
4
4
|
/**
|
|
@@ -23,12 +23,24 @@ export declare function getFieldCallbackValue(val: OnFieldCallback): QueryRaw |
|
|
|
23
23
|
*/
|
|
24
24
|
export declare function getSoftDeleteValue(field: FieldOptions): QueryRaw | import("../type/utility.js").Scalar;
|
|
25
25
|
export declare function fillOnFields<E>(meta: EntityMeta<E>, payload: E | E[], callbackKey: CallbackKey): E[];
|
|
26
|
-
|
|
26
|
+
/**
|
|
27
|
+
* The relation keys present in `payload` whose cascade configuration allows `action`. Only
|
|
28
|
+
* `payload`'s keys are read, so any keys-bearing object works (an entity, an update payload,
|
|
29
|
+
* or `meta.relations` itself to enumerate every cascadable relation).
|
|
30
|
+
*/
|
|
31
|
+
export declare function filterPersistableRelationKeys<E>(meta: EntityMeta<E>, payload: object, action: CascadeType): RelationKey<E>[];
|
|
27
32
|
export declare function isCascadable(action: CascadeType, configuration?: boolean | CascadeType): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* The map form of a `$select` value, or `undefined` for the raw-array form. Centralizes the one
|
|
35
|
+
* narrowing cast: `Array.isArray` does not narrow `readonly` arrays out of a union.
|
|
36
|
+
*/
|
|
37
|
+
export declare function asSelectMap<E>(select: QuerySelectValue<E> | undefined): QuerySelect<E> | undefined;
|
|
28
38
|
export declare function normalizeScalarFieldSelection<E>(meta: EntityMeta<E>, select?: QuerySelect<E>, exclude?: QueryExclude<E>): FieldKey<E>[];
|
|
29
39
|
export declare function buildSortMap<E>(sort: QuerySortMap<E> | undefined): QuerySortMap<E>;
|
|
30
40
|
/** Type guard: checks whether a sort value is a vector similarity search. */
|
|
31
41
|
export declare function isVectorSearch(value: unknown): value is QueryVectorSearch;
|
|
42
|
+
/** Type guard: checks whether an update payload value is a JSON operator object. */
|
|
43
|
+
export declare function isJsonUpdateOp(value: unknown): value is JsonUpdateOp;
|
|
32
44
|
export declare function augmentWhere<E>(meta: EntityMeta<E>, target?: QueryWhere<E>, source?: QueryWhere<E>): QueryWhere<E>;
|
|
33
45
|
/**
|
|
34
46
|
* Normalizes any `$where` shape (id, id[], raw, or map) to a `QueryWhereMap`. Read-only: for a map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialect.util.d.ts","sourceRoot":"","sources":["../../src/util/dialect.util.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,YAAY,
|
|
1
|
+
{"version":3,"file":"dialect.util.d.ts","sourceRoot":"","sources":["../../src/util/dialect.util.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,YAAY,EAGjB,KAAK,YAAY,EAEjB,KAAK,eAAe,EACpB,KAAK,WAAW,EAGhB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,QAAQ,EACR,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,WAAW,EAGjB,MAAM,kBAAkB,CAAC;AAG1B,MAAM,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,UAAU,GAAG,UAAU,CAAC,CAAC;AAE5E,wBAAgB,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAK3G;AAkBD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAqBvF;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,eAAe,kDAEzD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,kDAErD;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,WAAW,EAAE,WAAW,GAAG,CAAC,EAAE,CAcpG;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAAC,CAAC,EAC7C,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EACnB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,WAAW,GAClB,WAAW,CAAC,CAAC,CAAC,EAAE,CAMlB;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,aAAa,CAAC,EAAE,OAAO,GAAG,WAAW,GAAG,OAAO,CAKhG;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS,CAElG;AAED,wBAAgB,6BAA6B,CAAC,CAAC,EAC7C,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EACnB,MAAM,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,EACvB,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,GACxB,QAAQ,CAAC,CAAC,CAAC,EAAE,CAqCf;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,CAElF;AAED,6EAA6E;AAC7E,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,iBAAiB,CAEzE;AAUD,oFAAoF;AACpF,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAEpE;AAED,wBAAgB,YAAY,CAAC,CAAC,EAC5B,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EACnB,MAAM,GAAE,UAAU,CAAC,CAAC,CAAM,EAC1B,MAAM,GAAE,UAAU,CAAC,CAAC,CAAM,GACzB,UAAU,CAAC,CAAC,CAAC,CAOf;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,GAAE,UAAU,CAAC,CAAC,CAAM,GAAG,aAAa,CAAC,CAAC,CAAC,CAUzG;AAED,kHAAkH;AAClH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC,GAAG,YAAY,CAAC,SAAS,CAAC,CAEjG;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAC5B,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EACnB,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,EAC1B,IAAI,CAAC,EAAE,YAAY,GAClB,aAAa,CAAC,CAAC,CAAC,CAuDlB;AAaD;;GAEG;AACH,MAAM,MAAM,gBAAgB,GACxB;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAChD;IACE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,EAAE,gBAAgB,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,uFAAuF;IACvF,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEN;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,gBAAgB,EAAE,CAuBnG"}
|
|
@@ -77,6 +77,11 @@ export function fillOnFields(meta, payload, callbackKey) {
|
|
|
77
77
|
}
|
|
78
78
|
return payloads;
|
|
79
79
|
}
|
|
80
|
+
/**
|
|
81
|
+
* The relation keys present in `payload` whose cascade configuration allows `action`. Only
|
|
82
|
+
* `payload`'s keys are read, so any keys-bearing object works (an entity, an update payload,
|
|
83
|
+
* or `meta.relations` itself to enumerate every cascadable relation).
|
|
84
|
+
*/
|
|
80
85
|
export function filterPersistableRelationKeys(meta, payload, action) {
|
|
81
86
|
const keys = getKeys(payload);
|
|
82
87
|
return keys.filter((key) => {
|
|
@@ -90,6 +95,13 @@ export function isCascadable(action, configuration) {
|
|
|
90
95
|
}
|
|
91
96
|
return configuration === action;
|
|
92
97
|
}
|
|
98
|
+
/**
|
|
99
|
+
* The map form of a `$select` value, or `undefined` for the raw-array form. Centralizes the one
|
|
100
|
+
* narrowing cast: `Array.isArray` does not narrow `readonly` arrays out of a union.
|
|
101
|
+
*/
|
|
102
|
+
export function asSelectMap(select) {
|
|
103
|
+
return Array.isArray(select) ? undefined : select;
|
|
104
|
+
}
|
|
93
105
|
export function normalizeScalarFieldSelection(meta, select, exclude) {
|
|
94
106
|
// A positive `$select` (the common case) wins outright and returns
|
|
95
107
|
// before `$exclude` is ever scanned.
|
|
@@ -135,6 +147,17 @@ export function buildSortMap(sort) {
|
|
|
135
147
|
export function isVectorSearch(value) {
|
|
136
148
|
return value !== null && typeof value === 'object' && '$vector' in value;
|
|
137
149
|
}
|
|
150
|
+
/** `satisfies` ties this to {@link JsonUpdateOp}, so renaming an operator breaks it at compile time. */
|
|
151
|
+
const JSON_UPDATE_OPS = [
|
|
152
|
+
'$set',
|
|
153
|
+
'$unset',
|
|
154
|
+
'$push',
|
|
155
|
+
'$pull',
|
|
156
|
+
];
|
|
157
|
+
/** Type guard: checks whether an update payload value is a JSON operator object. */
|
|
158
|
+
export function isJsonUpdateOp(value) {
|
|
159
|
+
return value !== null && typeof value === 'object' && someKey(value, (key) => JSON_UPDATE_OPS.includes(key));
|
|
160
|
+
}
|
|
138
161
|
export function augmentWhere(meta, target = {}, source = {}) {
|
|
139
162
|
const targetComparison = buildQueryWhereAsMap(meta, target);
|
|
140
163
|
const sourceComparison = buildQueryWhereAsMap(meta, source);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialect.util.js","sourceRoot":"","sources":["../../src/util/dialect.util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,
|
|
1
|
+
{"version":3,"file":"dialect.util.js","sourceRoot":"","sources":["../../src/util/dialect.util.ts"],"names":[],"mappings":"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"}
|