@warlock.js/cascade 5.12.0 → 5.14.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 +31 -0
- package/cjs/index.cjs +685 -128
- package/cjs/index.cjs.map +1 -1
- package/esm/contracts/database-driver.contract.d.mts +44 -7
- package/esm/contracts/database-driver.contract.d.mts.map +1 -1
- package/esm/contracts/index.d.mts +2 -2
- package/esm/contracts/query-builder.contract.d.mts +61 -1
- package/esm/contracts/query-builder.contract.d.mts.map +1 -1
- package/esm/drivers/mongodb/mongodb-driver.d.mts +8 -4
- package/esm/drivers/mongodb/mongodb-driver.d.mts.map +1 -1
- package/esm/drivers/mongodb/mongodb-driver.mjs +16 -6
- package/esm/drivers/mongodb/mongodb-driver.mjs.map +1 -1
- package/esm/drivers/mongodb/mongodb-query-builder.d.mts +32 -7
- package/esm/drivers/mongodb/mongodb-query-builder.d.mts.map +1 -1
- package/esm/drivers/mongodb/mongodb-query-builder.mjs +56 -8
- package/esm/drivers/mongodb/mongodb-query-builder.mjs.map +1 -1
- package/esm/drivers/mongodb/mongodb-query-parser.d.mts +39 -12
- package/esm/drivers/mongodb/mongodb-query-parser.d.mts.map +1 -1
- package/esm/drivers/mongodb/mongodb-query-parser.mjs +143 -55
- package/esm/drivers/mongodb/mongodb-query-parser.mjs.map +1 -1
- package/esm/drivers/mongodb/mongodb-update-translator.mjs +25 -0
- package/esm/drivers/mongodb/mongodb-update-translator.mjs.map +1 -0
- package/esm/drivers/mongodb/pipeline-stage-object.mjs +24 -0
- package/esm/drivers/mongodb/pipeline-stage-object.mjs.map +1 -0
- package/esm/drivers/mongodb/types.d.mts +7 -1
- package/esm/drivers/mongodb/types.d.mts.map +1 -1
- package/esm/drivers/postgres/postgres-driver.d.mts +52 -9
- package/esm/drivers/postgres/postgres-driver.d.mts.map +1 -1
- package/esm/drivers/postgres/postgres-driver.mjs +170 -38
- package/esm/drivers/postgres/postgres-driver.mjs.map +1 -1
- package/esm/drivers/postgres/postgres-query-builder.d.mts +17 -1
- package/esm/drivers/postgres/postgres-query-builder.d.mts.map +1 -1
- package/esm/drivers/postgres/postgres-query-builder.mjs +31 -0
- package/esm/drivers/postgres/postgres-query-builder.mjs.map +1 -1
- package/esm/drivers/postgres/postgres-update-validator.mjs +36 -0
- package/esm/drivers/postgres/postgres-update-validator.mjs.map +1 -0
- package/esm/errors/unsupported-lean-operation.error.d.mts +25 -0
- package/esm/errors/unsupported-lean-operation.error.d.mts.map +1 -0
- package/esm/errors/unsupported-lean-operation.error.mjs +31 -0
- package/esm/errors/unsupported-lean-operation.error.mjs.map +1 -0
- package/esm/errors/unsupported-query-operation.error.d.mts +30 -0
- package/esm/errors/unsupported-query-operation.error.d.mts.map +1 -0
- package/esm/errors/unsupported-query-operation.error.mjs +37 -0
- package/esm/errors/unsupported-query-operation.error.mjs.map +1 -0
- package/esm/errors/unsupported-update-operation.error.d.mts +30 -0
- package/esm/errors/unsupported-update-operation.error.d.mts.map +1 -0
- package/esm/errors/unsupported-update-operation.error.mjs +37 -0
- package/esm/errors/unsupported-update-operation.error.mjs.map +1 -0
- package/esm/index.d.mts +6 -3
- package/esm/index.mjs +4 -1
- package/esm/model/methods/query-methods.mjs +22 -6
- package/esm/model/methods/query-methods.mjs.map +1 -1
- package/esm/model/model.d.mts +28 -11
- package/esm/model/model.d.mts.map +1 -1
- package/esm/model/model.mjs +30 -13
- package/esm/model/model.mjs.map +1 -1
- package/esm/query-builder/lean-records.mjs +34 -0
- package/esm/query-builder/lean-records.mjs.map +1 -0
- package/esm/query-builder/query-builder.d.mts +13 -1
- package/esm/query-builder/query-builder.d.mts.map +1 -1
- package/esm/query-builder/query-builder.mjs +16 -0
- package/esm/query-builder/query-builder.mjs.map +1 -1
- package/llms-full.txt +72 -5
- package/llms.txt +3 -3
- package/package.json +4 -4
- package/skills/aggregate-data/SKILL.md +24 -1
- package/skills/perform-atomic-ops/SKILL.md +38 -3
- package/skills/query-data/SKILL.md +10 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CursorPaginationOptions, CursorPaginationResult, DriverQuery, GroupByInput, HavingInput, JoinOptions, OrderDirection, PaginationOptions, PaginationResult, QueryBuilderContract, RawExpression, WhereCallback, WhereObject, WhereOperator } from "../../contracts/query-builder.contract.mjs";
|
|
1
|
+
import { CursorPaginationOptions, CursorPaginationResult, DriverQuery, GroupByInput, HavingInput, JoinOptions, LeanDocument, OrderDirection, PaginationOptions, PaginationResult, QueryBuilderContract, RawExpression, UnwindOptions, WhereCallback, WhereObject, WhereOperator } from "../../contracts/query-builder.contract.mjs";
|
|
2
2
|
import { DataSource } from "../../data-source/data-source.mjs";
|
|
3
3
|
import { Operation } from "./types.mjs";
|
|
4
4
|
import { QueryBuilder } from "../../query-builder/query-builder.mjs";
|
|
@@ -813,17 +813,27 @@ declare class MongoQueryBuilder<T = unknown> extends QueryBuilder<T> implements
|
|
|
813
813
|
*/
|
|
814
814
|
crossJoin(table: string): this;
|
|
815
815
|
/**
|
|
816
|
-
* Performs a raw join using
|
|
816
|
+
* Performs a raw join using caller-built aggregation stages.
|
|
817
817
|
*
|
|
818
|
-
*
|
|
818
|
+
* The expression is one pipeline stage (typically `{ $lookup: { ... } }`) or
|
|
819
|
+
* an array of stages. They are emitted verbatim in call order, so a later
|
|
820
|
+
* `where()` / `orderBy()` can use the joined fields.
|
|
819
821
|
*
|
|
820
|
-
* @param expression -
|
|
821
|
-
* @param _bindings -
|
|
822
|
+
* @param expression - A pipeline stage object, or an array of stage objects
|
|
823
|
+
* @param _bindings - Not used on MongoDB; kept for API consistency
|
|
824
|
+
* @throws UnsupportedQueryOperationError when the expression is not a stage
|
|
825
|
+
* object or an array of them (e.g. a SQL `JOIN` string)
|
|
822
826
|
*/
|
|
823
827
|
joinRaw(expression: RawExpression, _bindings?: unknown[]): this;
|
|
824
828
|
/**
|
|
825
|
-
* Allows direct manipulation of the native MongoDB
|
|
826
|
-
*
|
|
829
|
+
* Allows direct manipulation of the native MongoDB aggregation pipeline.
|
|
830
|
+
*
|
|
831
|
+
* The callback receives the pipeline array built from the operations
|
|
832
|
+
* recorded before this call. Return a new array of stages to replace it, or
|
|
833
|
+
* mutate the array in place and return nothing. Operations recorded after
|
|
834
|
+
* `raw()` are appended to that result.
|
|
835
|
+
*
|
|
836
|
+
* @param builder - Receives the pipeline array; returns a replacement or nothing
|
|
827
837
|
*/
|
|
828
838
|
raw(builder: (native: unknown) => unknown): this;
|
|
829
839
|
/**
|
|
@@ -838,6 +848,10 @@ declare class MongoQueryBuilder<T = unknown> extends QueryBuilder<T> implements
|
|
|
838
848
|
* @returns A new query builder instance with copied operations
|
|
839
849
|
*/
|
|
840
850
|
clone(): this;
|
|
851
|
+
/**
|
|
852
|
+
* Switch to lean read mode — see `QueryBuilderContract.lean()`.
|
|
853
|
+
*/
|
|
854
|
+
lean(): MongoQueryBuilder<LeanDocument<T>>;
|
|
841
855
|
/**
|
|
842
856
|
* Row-level locking is a SQL capability — MongoDB has no
|
|
843
857
|
* `SELECT ... FOR UPDATE`. Throwing (instead of silently ignoring the call)
|
|
@@ -1122,6 +1136,17 @@ declare class MongoQueryBuilder<T = unknown> extends QueryBuilder<T> implements
|
|
|
1122
1136
|
* @param callback - Callback to define conditions
|
|
1123
1137
|
*/
|
|
1124
1138
|
whereDoesntHave(relation: string, callback: (query: QueryBuilderContract) => void): this;
|
|
1139
|
+
/**
|
|
1140
|
+
* Deconstruct an array field into one document per element (`$unwind`).
|
|
1141
|
+
* The short form is emitted when no option is given. See
|
|
1142
|
+
* `QueryBuilderContract.unwind()`.
|
|
1143
|
+
*/
|
|
1144
|
+
unwind(field: string, options?: UnwindOptions): this;
|
|
1145
|
+
/**
|
|
1146
|
+
* Add computed fields while keeping every existing field (`$addFields`).
|
|
1147
|
+
* See `QueryBuilderContract.addFields()`.
|
|
1148
|
+
*/
|
|
1149
|
+
addFields(fields: Record<string, unknown>): this;
|
|
1125
1150
|
/**
|
|
1126
1151
|
* Nearest-neighbour vector similarity search via MongoDB Atlas $vectorSearch.
|
|
1127
1152
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mongodb-query-builder.d.mts","names":[],"sources":["../../../../../../../../cascade/src/drivers/mongodb/mongodb-query-builder.ts"],"mappings":";;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"mongodb-query-builder.d.mts","names":[],"sources":["../../../../../../../../cascade/src/drivers/mongodb/mongodb-query-builder.ts"],"mappings":"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"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { databaseTransactionContext } from "../../context/database-transaction-context.mjs";
|
|
2
2
|
import { dataSourceRegistry } from "../../data-source/data-source-registry.mjs";
|
|
3
|
+
import { UnsupportedQueryOperationError } from "../../errors/unsupported-query-operation.error.mjs";
|
|
3
4
|
import { RelationLoader } from "../../relations/relation-loader.mjs";
|
|
4
5
|
import { sanitizeFilter, sanitizeFilterValue } from "../../utils/sanitize-filter.mjs";
|
|
6
|
+
import { assertLeanCompatible, stripHiddenFromLeanRecords } from "../../query-builder/lean-records.mjs";
|
|
5
7
|
import { QueryBuilder } from "../../query-builder/query-builder.mjs";
|
|
6
8
|
import { MongoQueryOperations } from "./mongodb-query-operations.mjs";
|
|
9
|
+
import { isPipelineStageObject } from "./pipeline-stage-object.mjs";
|
|
7
10
|
import { MongoQueryParser } from "./mongodb-query-parser.mjs";
|
|
8
11
|
import { get } from "@mongez/reinforcements";
|
|
9
12
|
|
|
@@ -1255,23 +1258,35 @@ var MongoQueryBuilder = class MongoQueryBuilder extends QueryBuilder {
|
|
|
1255
1258
|
return this;
|
|
1256
1259
|
}
|
|
1257
1260
|
/**
|
|
1258
|
-
* Performs a raw join using
|
|
1261
|
+
* Performs a raw join using caller-built aggregation stages.
|
|
1259
1262
|
*
|
|
1260
|
-
*
|
|
1263
|
+
* The expression is one pipeline stage (typically `{ $lookup: { ... } }`) or
|
|
1264
|
+
* an array of stages. They are emitted verbatim in call order, so a later
|
|
1265
|
+
* `where()` / `orderBy()` can use the joined fields.
|
|
1261
1266
|
*
|
|
1262
|
-
* @param expression -
|
|
1263
|
-
* @param _bindings -
|
|
1267
|
+
* @param expression - A pipeline stage object, or an array of stage objects
|
|
1268
|
+
* @param _bindings - Not used on MongoDB; kept for API consistency
|
|
1269
|
+
* @throws UnsupportedQueryOperationError when the expression is not a stage
|
|
1270
|
+
* object or an array of them (e.g. a SQL `JOIN` string)
|
|
1264
1271
|
*/
|
|
1265
1272
|
joinRaw(expression, _bindings) {
|
|
1266
|
-
|
|
1273
|
+
const stages = Array.isArray(expression) ? expression : [expression];
|
|
1274
|
+
if (stages.length === 0 || !stages.every(isPipelineStageObject)) throw new UnsupportedQueryOperationError("joinRaw", "mongodb", "Pass a pipeline stage object such as { $lookup: { ... } }, or an array of stage objects.");
|
|
1275
|
+
this.operationsHelper.addOperation("$raw", "joinRaw", { stages });
|
|
1267
1276
|
return this;
|
|
1268
1277
|
}
|
|
1269
1278
|
/**
|
|
1270
|
-
* Allows direct manipulation of the native MongoDB
|
|
1271
|
-
*
|
|
1279
|
+
* Allows direct manipulation of the native MongoDB aggregation pipeline.
|
|
1280
|
+
*
|
|
1281
|
+
* The callback receives the pipeline array built from the operations
|
|
1282
|
+
* recorded before this call. Return a new array of stages to replace it, or
|
|
1283
|
+
* mutate the array in place and return nothing. Operations recorded after
|
|
1284
|
+
* `raw()` are appended to that result.
|
|
1285
|
+
*
|
|
1286
|
+
* @param builder - Receives the pipeline array; returns a replacement or nothing
|
|
1272
1287
|
*/
|
|
1273
1288
|
raw(builder) {
|
|
1274
|
-
this.operationsHelper.
|
|
1289
|
+
this.operationsHelper.addOperation("$raw", "raw", { builder });
|
|
1275
1290
|
return this;
|
|
1276
1291
|
}
|
|
1277
1292
|
/**
|
|
@@ -1294,6 +1309,8 @@ var MongoQueryBuilder = class MongoQueryBuilder extends QueryBuilder {
|
|
|
1294
1309
|
cloned.fetchingCallback = this.fetchingCallback?.bind(cloned);
|
|
1295
1310
|
cloned.hydratingCallback = this.hydratingCallback?.bind(cloned);
|
|
1296
1311
|
cloned.fetchedCallback = this.fetchedCallback?.bind(cloned);
|
|
1312
|
+
cloned.isLean = this.isLean;
|
|
1313
|
+
cloned.modelClass = this.modelClass;
|
|
1297
1314
|
cloned.pendingGlobalScopes = this.pendingGlobalScopes;
|
|
1298
1315
|
cloned.availableLocalScopes = this.availableLocalScopes;
|
|
1299
1316
|
cloned.disabledGlobalScopes = new Set(this.disabledGlobalScopes);
|
|
@@ -1302,6 +1319,13 @@ var MongoQueryBuilder = class MongoQueryBuilder extends QueryBuilder {
|
|
|
1302
1319
|
return cloned;
|
|
1303
1320
|
}
|
|
1304
1321
|
/**
|
|
1322
|
+
* Switch to lean read mode — see `QueryBuilderContract.lean()`.
|
|
1323
|
+
*/
|
|
1324
|
+
lean() {
|
|
1325
|
+
super.lean();
|
|
1326
|
+
return this;
|
|
1327
|
+
}
|
|
1328
|
+
/**
|
|
1305
1329
|
* Row-level locking is a SQL capability — MongoDB has no
|
|
1306
1330
|
* `SELECT ... FOR UPDATE`. Throwing (instead of silently ignoring the call)
|
|
1307
1331
|
* keeps a queue-claim pattern from silently running unlocked.
|
|
@@ -1338,6 +1362,10 @@ var MongoQueryBuilder = class MongoQueryBuilder extends QueryBuilder {
|
|
|
1338
1362
|
async get() {
|
|
1339
1363
|
const startTime = Date.now();
|
|
1340
1364
|
if (this.fetchingCallback) await this.fetchingCallback(this);
|
|
1365
|
+
if (this.isLean) {
|
|
1366
|
+
assertLeanCompatible(this);
|
|
1367
|
+
return stripHiddenFromLeanRecords(await this.execute(), this.modelClass);
|
|
1368
|
+
}
|
|
1341
1369
|
const rawRecords = await this.execute();
|
|
1342
1370
|
if (this.hydratingCallback) await this.hydratingCallback(rawRecords, {
|
|
1343
1371
|
query: this,
|
|
@@ -1837,6 +1865,26 @@ var MongoQueryBuilder = class MongoQueryBuilder extends QueryBuilder {
|
|
|
1837
1865
|
return this;
|
|
1838
1866
|
}
|
|
1839
1867
|
/**
|
|
1868
|
+
* Deconstruct an array field into one document per element (`$unwind`).
|
|
1869
|
+
* The short form is emitted when no option is given. See
|
|
1870
|
+
* `QueryBuilderContract.unwind()`.
|
|
1871
|
+
*/
|
|
1872
|
+
unwind(field, options) {
|
|
1873
|
+
const data = { path: field.startsWith("$") ? field : `$${field}` };
|
|
1874
|
+
if (options?.preserveNullAndEmptyArrays !== void 0) data.preserveNullAndEmptyArrays = options.preserveNullAndEmptyArrays;
|
|
1875
|
+
if (options?.includeArrayIndex !== void 0) data.includeArrayIndex = options.includeArrayIndex;
|
|
1876
|
+
this.operationsHelper.addOperation("$unwind", "unwind", data, false);
|
|
1877
|
+
return this;
|
|
1878
|
+
}
|
|
1879
|
+
/**
|
|
1880
|
+
* Add computed fields while keeping every existing field (`$addFields`).
|
|
1881
|
+
* See `QueryBuilderContract.addFields()`.
|
|
1882
|
+
*/
|
|
1883
|
+
addFields(fields) {
|
|
1884
|
+
this.operationsHelper.addOperation("$addFields", "addFields", { ...fields }, false);
|
|
1885
|
+
return this;
|
|
1886
|
+
}
|
|
1887
|
+
/**
|
|
1840
1888
|
* Nearest-neighbour vector similarity search via MongoDB Atlas $vectorSearch.
|
|
1841
1889
|
*
|
|
1842
1890
|
* Adds two pipeline stages:
|