@warlock.js/cascade 5.25.0 → 5.26.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 +12 -0
- package/cjs/index.cjs +106 -17
- package/cjs/index.cjs.map +1 -1
- package/esm/contracts/query-builder.contract.d.mts +7 -0
- package/esm/contracts/query-builder.contract.d.mts.map +1 -1
- package/esm/drivers/mongodb/mongodb-query-builder.d.mts +5 -0
- package/esm/drivers/mongodb/mongodb-query-builder.d.mts.map +1 -1
- package/esm/drivers/mongodb/mongodb-query-builder.mjs +9 -0
- package/esm/drivers/mongodb/mongodb-query-builder.mjs.map +1 -1
- package/esm/drivers/postgres/postgres-query-builder.d.mts +5 -0
- package/esm/drivers/postgres/postgres-query-builder.d.mts.map +1 -1
- package/esm/drivers/postgres/postgres-query-builder.mjs +15 -0
- package/esm/drivers/postgres/postgres-query-builder.mjs.map +1 -1
- package/esm/index.d.mts +2 -2
- package/esm/migration/index.d.mts +1 -1
- package/esm/migration/migration-order.mjs +6 -3
- package/esm/migration/migration-order.mjs.map +1 -1
- package/esm/migration/migration-runner.d.mts +5 -3
- package/esm/migration/migration-runner.d.mts.map +1 -1
- package/esm/migration/migration-runner.mjs +3 -2
- package/esm/migration/migration-runner.mjs.map +1 -1
- package/esm/migration/migration.d.mts +11 -1
- package/esm/migration/migration.d.mts.map +1 -1
- package/esm/migration/migration.mjs +45 -2
- package/esm/migration/migration.mjs.map +1 -1
- package/esm/model/methods/query-methods.mjs +13 -9
- package/esm/model/methods/query-methods.mjs.map +1 -1
- package/esm/model/model.d.mts +2 -2
- package/esm/model/model.d.mts.map +1 -1
- package/esm/model/model.mjs +1 -1
- package/esm/model/model.mjs.map +1 -1
- package/esm/query-builder/query-builder.d.mts +5 -0
- package/esm/query-builder/query-builder.d.mts.map +1 -1
- package/esm/query-builder/query-builder.mjs +15 -0
- package/esm/query-builder/query-builder.mjs.map +1 -1
- package/llms-full.txt +11 -1
- package/package.json +5 -5
|
@@ -96,6 +96,10 @@ function toDriverOptions(options) {
|
|
|
96
96
|
const { trustedFilter: _trustedFilter, ...rest } = options;
|
|
97
97
|
return rest;
|
|
98
98
|
}
|
|
99
|
+
function applyWriteFilter(query, filter, trustedFilter) {
|
|
100
|
+
if (trustedFilter && typeof query.whereTrusted === "function") return query.whereTrusted(filter);
|
|
101
|
+
return query.where(filter);
|
|
102
|
+
}
|
|
99
103
|
/**
|
|
100
104
|
* Add the same generated `id` that normal Mongo inserts receive to an upsert's
|
|
101
105
|
* insert branch. `$setOnInsert` keeps an existing document's id immutable.
|
|
@@ -122,9 +126,9 @@ async function withAutoGeneratedUpsertId(ModelClass, filter, operations, options
|
|
|
122
126
|
* so the target ids are resolved through the scoped query builder and added to
|
|
123
127
|
* the filter. `null` means no visible row matches: the write must be a no-op.
|
|
124
128
|
*/
|
|
125
|
-
async function scopeWriteFilter(ModelClass, filter, single) {
|
|
129
|
+
async function scopeWriteFilter(ModelClass, filter, single, trustedFilter = false) {
|
|
126
130
|
const primaryKey = ModelClass.primaryKey;
|
|
127
|
-
const ids = await ModelClass.query()
|
|
131
|
+
const ids = await applyWriteFilter(ModelClass.query(), filter, trustedFilter).pluck(primaryKey);
|
|
128
132
|
if (ids.length === 0) return null;
|
|
129
133
|
return {
|
|
130
134
|
...filter,
|
|
@@ -136,10 +140,10 @@ async function scopeWriteFilter(ModelClass, filter, single) {
|
|
|
136
140
|
* the driver would insert or, worse, update a row a scope hides (another
|
|
137
141
|
* tenant's, a soft-deleted one), so a hidden match is refused.
|
|
138
142
|
*/
|
|
139
|
-
async function scopeUpsertFilter(ModelClass, filter) {
|
|
140
|
-
const scoped = await scopeWriteFilter(ModelClass, filter, true);
|
|
143
|
+
async function scopeUpsertFilter(ModelClass, filter, trustedFilter = false) {
|
|
144
|
+
const scoped = await scopeWriteFilter(ModelClass, filter, true, trustedFilter);
|
|
141
145
|
if (scoped) return scoped;
|
|
142
|
-
if (await ModelClass.query().withoutGlobalScopes()
|
|
146
|
+
if (await applyWriteFilter(ModelClass.query().withoutGlobalScopes(), filter, trustedFilter).exists()) throw new Error(`${ModelClass.name}: upsert matches a row hidden by a global scope (tenant or soft delete); refusing to touch it.`);
|
|
143
147
|
return filter;
|
|
144
148
|
}
|
|
145
149
|
/**
|
|
@@ -148,7 +152,7 @@ async function scopeUpsertFilter(ModelClass, filter) {
|
|
|
148
152
|
*/
|
|
149
153
|
async function performAtomic(ModelClass, filter, operations, options) {
|
|
150
154
|
const resolved = resolveFilter(filter, options);
|
|
151
|
-
const scoped = options?.upsert ? await scopeUpsertFilter(ModelClass, resolved) : await scopeWriteFilter(ModelClass, resolved, false);
|
|
155
|
+
const scoped = options?.upsert ? await scopeUpsertFilter(ModelClass, resolved, options?.trustedFilter) : await scopeWriteFilter(ModelClass, resolved, false, options?.trustedFilter);
|
|
152
156
|
if (!scoped) return 0;
|
|
153
157
|
const upsertOperations = await withAutoGeneratedUpsertId(ModelClass, scoped, operations, options);
|
|
154
158
|
const result = await ModelClass.getDriver().atomic(ModelClass.table, scoped, upsertOperations, toDriverOptions(options));
|
|
@@ -168,8 +172,8 @@ async function updateById(ModelClass, id, data) {
|
|
|
168
172
|
}
|
|
169
173
|
async function findAndUpdateRecords(ModelClass, filter, update, options) {
|
|
170
174
|
const primaryKey = ModelClass.primaryKey;
|
|
171
|
-
const safeFilter =
|
|
172
|
-
const ids = await ModelClass.query()
|
|
175
|
+
const safeFilter = resolveFilter(filter, options);
|
|
176
|
+
const ids = await applyWriteFilter(ModelClass.query(), safeFilter, options?.trustedFilter ?? false).pluck(primaryKey);
|
|
173
177
|
if (ids.length === 0) {
|
|
174
178
|
if (!options?.upsert) return [];
|
|
175
179
|
await performAtomic(ModelClass, safeFilter, update, {
|
|
@@ -186,7 +190,7 @@ async function findAndUpdateRecords(ModelClass, filter, update, options) {
|
|
|
186
190
|
}
|
|
187
191
|
async function findOneAndUpdateRecord(ModelClass, filter, update, options) {
|
|
188
192
|
const resolved = resolveFilter(filter, options);
|
|
189
|
-
const scoped = options?.upsert ? await scopeUpsertFilter(ModelClass, resolved) : await scopeWriteFilter(ModelClass, resolved, true);
|
|
193
|
+
const scoped = options?.upsert ? await scopeUpsertFilter(ModelClass, resolved, options?.trustedFilter) : await scopeWriteFilter(ModelClass, resolved, true, options?.trustedFilter);
|
|
190
194
|
if (!scoped) return null;
|
|
191
195
|
const upsertUpdate = await withAutoGeneratedUpsertId(ModelClass, scoped, update, options);
|
|
192
196
|
const result = await ModelClass.getDriver().findOneAndUpdate(ModelClass.table, scoped, upsertUpdate, toDriverOptions(options));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-methods.mjs","names":[],"sources":["../../../../../../../../cascade/src/model/methods/query-methods.ts"],"sourcesContent":["import type {\n AtomicUpdate,\n AtomicUpdateOptions,\n FindOneAndUpdateOptions,\n PaginationOptions,\n PaginationResult,\n QueryBuilderContract,\n} from \"../../contracts\";\nimport type { DataSource } from \"../../data-source/data-source\";\nimport { dataSourceRegistry } from \"../../data-source/data-source-registry\";\nimport { sanitizeFilter } from \"../../utils/sanitize-filter\";\nimport { generateModelId } from \"../generate-model-id\";\nimport type { ChildModel, GlobalScopeDefinition, Model } from \"../model\";\nimport { emitStaticEvent } from \"./static-event-methods\";\nimport { warnUndeclaredSensitiveFields } from \"./serialization-methods\";\n\nexport function buildQuery<TModel extends Model>(\n ModelClass: ChildModel<TModel>,\n BaseModel: typeof Model,\n): QueryBuilderContract<TModel> {\n const queryBuilder = ModelClass.newQueryBuilder<TModel>();\n const qb = queryBuilder;\n\n // Collect global scopes from base Model and child model\n const allGlobalScopes = new Map<string, GlobalScopeDefinition>([\n ...BaseModel.globalScopes,\n ...ModelClass.globalScopes,\n ]);\n\n queryBuilder.pendingGlobalScopes = allGlobalScopes;\n queryBuilder.availableLocalScopes = ModelClass.localScopes;\n queryBuilder.disabledGlobalScopes = new Set();\n queryBuilder.relationDefinitions = ModelClass.relations;\n queryBuilder.modelClass = ModelClass;\n\n let fetchStartedAt = Date.now();\n\n // Emitted from the builder's execute path (awaited), not at construction, so\n // listener changes apply before the query runs and a throwing listener fails\n // the query instead of becoming an unhandled rejection.\n queryBuilder.onFetching(async () => {\n fetchStartedAt = Date.now();\n\n await emitStaticEvent(ModelClass, \"fetching\", queryBuilder, {\n table: ModelClass.table,\n modelClass: ModelClass,\n });\n });\n\n queryBuilder.onHydrating(async (records: any[], context: any) => {\n await emitStaticEvent(ModelClass, \"hydrating\", records as any, {\n query: queryBuilder,\n hydrateCallback: context?.hydrateCallback,\n });\n });\n\n queryBuilder.hydrate((data: any) => {\n return ModelClass.hydrate(data);\n });\n\n // Eager-loading runs inside the driver's `get()` so it works for any\n // builder construction path (Model.query, Model.newQueryBuilder, custom\n // subclassed builders). This hook only handles the model-level `fetched`\n // event emission.\n queryBuilder.onFetched(async (models: any[], context: any) => {\n await emitStaticEvent(ModelClass, \"fetched\", models as any, {\n query: queryBuilder,\n rawRecords: context?.rawRecords ?? [],\n duration: context?.duration ?? Date.now() - fetchStartedAt,\n });\n });\n\n return queryBuilder;\n}\n\nexport function buildNewQueryBuilder<TModel extends Model>(\n ModelClass: ChildModel<TModel>,\n): QueryBuilderContract<TModel> {\n const dataSource = ModelClass.getDataSource();\n\n if (ModelClass.builder) {\n const BuilderClass = ModelClass.builder;\n return new BuilderClass(ModelClass.table, dataSource) as QueryBuilderContract<TModel>;\n }\n\n const queryBuilder = dataSource.driver.queryBuilder<TModel>(ModelClass.table);\n return queryBuilder;\n}\n\nexport async function findFirst<TModel extends Model>(\n ModelClass: ChildModel<TModel>,\n filter?: Record<string, unknown>,\n): Promise<TModel | null> {\n const query = ModelClass.query();\n if (filter) {\n query.where(filter);\n }\n return query.first();\n}\n\nexport async function findLast<TModel extends Model>(\n ModelClass: ChildModel<TModel>,\n filter?: Record<string, unknown>,\n): Promise<TModel | null> {\n const query = ModelClass.query();\n if (filter) {\n query.where(filter);\n }\n\n return query.last();\n}\n\nexport async function findAll<TModel extends Model>(\n ModelClass: ChildModel<TModel>,\n filter?: Record<string, unknown>,\n): Promise<TModel[]> {\n const query = ModelClass.query();\n if (filter) {\n query.where(filter);\n }\n return query.get();\n}\n\nexport function countRecords<TModel extends Model>(\n ModelClass: ChildModel<TModel>,\n filter?: Record<string, unknown>,\n): Promise<number> {\n const query = ModelClass.query();\n if (filter) {\n query.where(filter);\n }\n return query.count();\n}\n\nexport async function findById<TModel extends Model>(\n ModelClass: ChildModel<TModel>,\n id: string | number,\n): Promise<TModel | null> {\n const query = ModelClass.query();\n return query.where(ModelClass.primaryKey, id).first();\n}\n\nexport async function paginateRecords<TModel extends Model>(\n ModelClass: ChildModel<TModel>,\n options: PaginationOptions & { filter?: Record<string, unknown> } = {},\n): Promise<PaginationResult<TModel>> {\n const query = ModelClass.query();\n if (options.filter) {\n query.where(options.filter);\n }\n\n return query.paginate({\n limit: options.limit,\n page: options.page,\n });\n}\n\nexport async function findLatest<TModel extends Model>(\n ModelClass: ChildModel<TModel>,\n filter?: Record<string, unknown>,\n): Promise<TModel[]> {\n const query = ModelClass.query();\n if (filter) {\n query.where(filter);\n }\n return (await query.latest()) as unknown as TModel[];\n}\n\nexport function increaseField<TModel extends Model>(\n ModelClass: ChildModel<TModel>,\n filter: Record<string, unknown>,\n field: string,\n amount: number,\n): Promise<number> {\n const query = ModelClass.query().where(filter);\n return query.increment(field, amount);\n}\n\nexport function decreaseField<TModel extends Model>(\n ModelClass: ChildModel<TModel>,\n filter: Record<string, unknown>,\n field: string,\n amount: number,\n): Promise<number> {\n const query = ModelClass.query().where(filter);\n return query.decrement(field, amount);\n}\n\n// The atomic/find-and-modify statics below forward their filter straight to\n// the driver — they never pass through where(), so they must run the same\n// operator-injection check themselves. Only the FILTER is sanitized; update\n// operators ($set/$inc/…) are the point of these APIs and stay untouched.\n//\n// `trustedFilter` is the explicit, code-authored opt-out: it lets a conditional\n// filter such as `{ used: { $lt: 10 } }` through. It is stripped before the\n// options reach the driver.\nfunction resolveFilter(\n filter: Record<string, unknown>,\n options: AtomicUpdateOptions | undefined,\n): Record<string, unknown> {\n return options?.trustedFilter ? filter : sanitizeFilter(filter);\n}\n\nfunction toDriverOptions<TOptions extends AtomicUpdateOptions>(\n options: TOptions | undefined,\n): Omit<TOptions, \"trustedFilter\"> | undefined {\n if (!options) {\n return undefined;\n }\n\n const { trustedFilter: _trustedFilter, ...rest } = options;\n\n return rest;\n}\n\n/**\n * Add the same generated `id` that normal Mongo inserts receive to an upsert's\n * insert branch. `$setOnInsert` keeps an existing document's id immutable.\n */\nasync function withAutoGeneratedUpsertId<TModel extends Model>(\n ModelClass: ChildModel<TModel>,\n filter: Record<string, unknown>,\n operations: AtomicUpdate,\n options: AtomicUpdateOptions | undefined,\n): Promise<AtomicUpdate> {\n if (\n !options?.upsert ||\n !ModelClass.autoGenerateId ||\n ModelClass.getDriver().name !== \"mongodb\" ||\n Array.isArray(operations)\n ) {\n return operations;\n }\n\n const filterId = filter.id;\n const filterConstrainsId =\n Object.hasOwn(filter, \"id\") &&\n (filterId === null ||\n typeof filterId !== \"object\" ||\n (!Array.isArray(filterId) && Object.hasOwn(filterId, \"$eq\")));\n const updateSuppliesId =\n Object.hasOwn(operations.$set ?? {}, \"id\") ||\n Object.hasOwn(operations.$setOnInsert ?? {}, \"id\");\n\n if (filterConstrainsId || updateSuppliesId) {\n return operations;\n }\n\n const id = await generateModelId(ModelClass);\n\n if (id === undefined) {\n return operations;\n }\n\n return {\n ...operations,\n $setOnInsert: { ...operations.$setOnInsert, id },\n };\n}\n\n/**\n * Pin a driver-level write to the rows the model's global scopes (tenant, soft\n * delete) allow. The driver write APIs take a raw filter and never see scopes,\n * so the target ids are resolved through the scoped query builder and added to\n * the filter. `null` means no visible row matches: the write must be a no-op.\n */\nexport async function scopeWriteFilter(\n ModelClass: ChildModel<any>,\n filter: Record<string, unknown>,\n single: boolean,\n): Promise<Record<string, unknown> | null> {\n const primaryKey = ModelClass.primaryKey;\n const ids = await ModelClass.query().where(filter).pluck(primaryKey);\n\n if (ids.length === 0) {\n return null;\n }\n\n return { ...filter, [primaryKey]: single ? ids[0] : { $in: ids } };\n}\n\n/**\n * Scoped filter for a write that may insert (`upsert`). With no visible match\n * the driver would insert or, worse, update a row a scope hides (another\n * tenant's, a soft-deleted one), so a hidden match is refused.\n */\nexport async function scopeUpsertFilter(\n ModelClass: ChildModel<any>,\n filter: Record<string, unknown>,\n): Promise<Record<string, unknown>> {\n const scoped = await scopeWriteFilter(ModelClass, filter, true);\n\n if (scoped) {\n return scoped;\n }\n\n const hidden = await ModelClass.query().withoutGlobalScopes().where(filter).exists();\n\n if (hidden) {\n throw new Error(\n `${ModelClass.name}: upsert matches a row hidden by a global scope (tenant or soft delete); refusing to touch it.`,\n );\n }\n\n return filter;\n}\n\n/**\n * Run an atomic update and return the number of documents modified plus the\n * number inserted by an `upsert`.\n */\nexport async function performAtomic<TModel extends Model>(\n ModelClass: ChildModel<TModel>,\n filter: Record<string, unknown>,\n operations: AtomicUpdate,\n options?: AtomicUpdateOptions,\n): Promise<number> {\n const resolved = resolveFilter(filter, options);\n const scoped = options?.upsert\n ? await scopeUpsertFilter(ModelClass, resolved)\n : await scopeWriteFilter(ModelClass, resolved, false);\n\n if (!scoped) {\n return 0;\n }\n\n const upsertOperations = await withAutoGeneratedUpsertId(ModelClass, scoped, operations, options);\n\n const result = await ModelClass.getDriver().atomic(\n ModelClass.table,\n scoped,\n upsertOperations,\n toDriverOptions(options),\n );\n\n return result.modifiedCount + (result.upsertedCount ?? 0);\n}\n\n/**\n * Update a row by id through the model writer: the row is loaded (scopes\n * apply), merged, and saved, so the schema, strictMode, casting, `updatedAt`\n * and events all apply. Returns 1 when a row was saved, 0 when none is visible.\n */\nexport async function updateById<TModel extends Model>(\n ModelClass: ChildModel<TModel>,\n id: string | number,\n data: Record<string, unknown>,\n): Promise<number> {\n const model = await ModelClass.query().where(ModelClass.primaryKey, id).first();\n\n if (!model) {\n return 0;\n }\n\n model.merge(data);\n await model.save();\n\n return 1;\n}\n\nexport async function findAndUpdateRecords<TModel extends Model>(\n ModelClass: ChildModel<TModel>,\n filter: Record<string, unknown>,\n update: AtomicUpdate,\n options?: Omit<AtomicUpdateOptions, \"trustedFilter\">,\n): Promise<TModel[]> {\n const primaryKey = ModelClass.primaryKey;\n const safeFilter = sanitizeFilter(filter);\n\n // Capture the matching ids first: the update usually changes the very field\n // the filter matches on, so re-querying with the filter would find nothing.\n const ids = await ModelClass.query().where(safeFilter).pluck(primaryKey);\n\n if (ids.length === 0) {\n if (!options?.upsert) {\n return [];\n }\n\n await performAtomic(ModelClass, safeFilter, update, { ...options, trustedFilter: true });\n return await ModelClass.query().where(safeFilter).get();\n }\n\n await performAtomic(ModelClass, { [primaryKey]: { $in: ids } }, update, {\n ...options,\n trustedFilter: true,\n });\n\n return await ModelClass.query().whereIn(primaryKey, ids).get();\n}\n\nexport async function findOneAndUpdateRecord<TModel extends Model>(\n ModelClass: ChildModel<TModel>,\n filter: Record<string, unknown>,\n update: AtomicUpdate,\n options?: FindOneAndUpdateOptions,\n): Promise<TModel | null> {\n const resolved = resolveFilter(filter, options);\n const scoped = options?.upsert\n ? await scopeUpsertFilter(ModelClass, resolved)\n : await scopeWriteFilter(ModelClass, resolved, true);\n\n if (!scoped) return null;\n\n const upsertUpdate = await withAutoGeneratedUpsertId(ModelClass, scoped, update, options);\n\n const result = await ModelClass.getDriver().findOneAndUpdate(\n ModelClass.table,\n scoped,\n upsertUpdate,\n toDriverOptions(options),\n );\n if (!result) return null;\n return ModelClass.hydrate(result as Record<string, unknown>) as TModel;\n}\n\nexport async function findAndReplaceRecord<TModel extends Model>(\n ModelClass: ChildModel<TModel>,\n filter: Record<string, unknown>,\n document: Record<string, unknown>,\n): Promise<TModel | null> {\n const scoped = await scopeWriteFilter(ModelClass, sanitizeFilter(filter), true);\n\n if (!scoped) return null;\n\n const result = await ModelClass.getDriver().replace(ModelClass.table, scoped, document);\n if (!result) return null;\n return ModelClass.hydrate(result as Record<string, unknown>) as TModel;\n}\n\nexport async function findOneAndDeleteRecord<TModel extends Model>(\n ModelClass: ChildModel<TModel>,\n filter: Record<string, unknown>,\n options?: Record<string, unknown>,\n): Promise<TModel | null> {\n const scoped = await scopeWriteFilter(ModelClass, sanitizeFilter(filter), true);\n\n if (!scoped) {\n return null;\n }\n\n const result = await ModelClass.getDriver().findOneAndDelete(ModelClass.table, scoped, options);\n\n if (!result) {\n return null;\n }\n\n const model = ModelClass.hydrate(result as Record<string, unknown>);\n model.dirtyTracker.reset();\n return model;\n}\n\nexport function resolveDataSource<TModel extends Model>(\n ModelClass: ChildModel<TModel>,\n): DataSource {\n const ref = ModelClass.dataSource;\n let dataSource: DataSource;\n\n if (typeof ref === \"string\") {\n dataSource = dataSourceRegistry.get(ref);\n } else if (ref) {\n dataSource = ref;\n } else {\n dataSource = dataSourceRegistry.get();\n }\n\n if (!ModelClass.hasOwnProperty(\"_defaultsApplied\")) {\n const driverDefaults = dataSource.driver.modelDefaults || {};\n const dataSourceDefaults = dataSource.modelDefaults || {};\n\n const mergedDefaults = {\n ...driverDefaults,\n ...dataSourceDefaults,\n };\n\n if (Object.keys(mergedDefaults).length > 0) {\n (ModelClass as any).applyModelDefaults(mergedDefaults);\n }\n\n (ModelClass as any)._defaultsApplied = true;\n }\n\n // First data-source resolution is the earliest per-class hook every model\n // passes through — warn here (once) if the schema carries credential-shaped\n // fields that toJSON() would expose.\n warnUndeclaredSensitiveFields(ModelClass);\n\n return dataSource;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"query-methods.mjs","names":[],"sources":["../../../../../../../../cascade/src/model/methods/query-methods.ts"],"sourcesContent":["import type {\n AtomicUpdate,\n AtomicUpdateOptions,\n FindOneAndUpdateOptions,\n PaginationOptions,\n PaginationResult,\n QueryBuilderContract,\n} from \"../../contracts\";\nimport type { DataSource } from \"../../data-source/data-source\";\nimport { dataSourceRegistry } from \"../../data-source/data-source-registry\";\nimport { sanitizeFilter } from \"../../utils/sanitize-filter\";\nimport { generateModelId } from \"../generate-model-id\";\nimport type { ChildModel, GlobalScopeDefinition, Model } from \"../model\";\nimport { emitStaticEvent } from \"./static-event-methods\";\nimport { warnUndeclaredSensitiveFields } from \"./serialization-methods\";\n\nexport function buildQuery<TModel extends Model>(\n ModelClass: ChildModel<TModel>,\n BaseModel: typeof Model,\n): QueryBuilderContract<TModel> {\n const queryBuilder = ModelClass.newQueryBuilder<TModel>();\n const qb = queryBuilder;\n\n // Collect global scopes from base Model and child model\n const allGlobalScopes = new Map<string, GlobalScopeDefinition>([\n ...BaseModel.globalScopes,\n ...ModelClass.globalScopes,\n ]);\n\n queryBuilder.pendingGlobalScopes = allGlobalScopes;\n queryBuilder.availableLocalScopes = ModelClass.localScopes;\n queryBuilder.disabledGlobalScopes = new Set();\n queryBuilder.relationDefinitions = ModelClass.relations;\n queryBuilder.modelClass = ModelClass;\n\n let fetchStartedAt = Date.now();\n\n // Emitted from the builder's execute path (awaited), not at construction, so\n // listener changes apply before the query runs and a throwing listener fails\n // the query instead of becoming an unhandled rejection.\n queryBuilder.onFetching(async () => {\n fetchStartedAt = Date.now();\n\n await emitStaticEvent(ModelClass, \"fetching\", queryBuilder, {\n table: ModelClass.table,\n modelClass: ModelClass,\n });\n });\n\n queryBuilder.onHydrating(async (records: any[], context: any) => {\n await emitStaticEvent(ModelClass, \"hydrating\", records as any, {\n query: queryBuilder,\n hydrateCallback: context?.hydrateCallback,\n });\n });\n\n queryBuilder.hydrate((data: any) => {\n return ModelClass.hydrate(data);\n });\n\n // Eager-loading runs inside the driver's `get()` so it works for any\n // builder construction path (Model.query, Model.newQueryBuilder, custom\n // subclassed builders). This hook only handles the model-level `fetched`\n // event emission.\n queryBuilder.onFetched(async (models: any[], context: any) => {\n await emitStaticEvent(ModelClass, \"fetched\", models as any, {\n query: queryBuilder,\n rawRecords: context?.rawRecords ?? [],\n duration: context?.duration ?? Date.now() - fetchStartedAt,\n });\n });\n\n return queryBuilder;\n}\n\nexport function buildNewQueryBuilder<TModel extends Model>(\n ModelClass: ChildModel<TModel>,\n): QueryBuilderContract<TModel> {\n const dataSource = ModelClass.getDataSource();\n\n if (ModelClass.builder) {\n const BuilderClass = ModelClass.builder;\n return new BuilderClass(ModelClass.table, dataSource) as QueryBuilderContract<TModel>;\n }\n\n const queryBuilder = dataSource.driver.queryBuilder<TModel>(ModelClass.table);\n return queryBuilder;\n}\n\nexport async function findFirst<TModel extends Model>(\n ModelClass: ChildModel<TModel>,\n filter?: Record<string, unknown>,\n): Promise<TModel | null> {\n const query = ModelClass.query();\n if (filter) {\n query.where(filter);\n }\n return query.first();\n}\n\nexport async function findLast<TModel extends Model>(\n ModelClass: ChildModel<TModel>,\n filter?: Record<string, unknown>,\n): Promise<TModel | null> {\n const query = ModelClass.query();\n if (filter) {\n query.where(filter);\n }\n\n return query.last();\n}\n\nexport async function findAll<TModel extends Model>(\n ModelClass: ChildModel<TModel>,\n filter?: Record<string, unknown>,\n): Promise<TModel[]> {\n const query = ModelClass.query();\n if (filter) {\n query.where(filter);\n }\n return query.get();\n}\n\nexport function countRecords<TModel extends Model>(\n ModelClass: ChildModel<TModel>,\n filter?: Record<string, unknown>,\n): Promise<number> {\n const query = ModelClass.query();\n if (filter) {\n query.where(filter);\n }\n return query.count();\n}\n\nexport async function findById<TModel extends Model>(\n ModelClass: ChildModel<TModel>,\n id: string | number,\n): Promise<TModel | null> {\n const query = ModelClass.query();\n return query.where(ModelClass.primaryKey, id).first();\n}\n\nexport async function paginateRecords<TModel extends Model>(\n ModelClass: ChildModel<TModel>,\n options: PaginationOptions & { filter?: Record<string, unknown> } = {},\n): Promise<PaginationResult<TModel>> {\n const query = ModelClass.query();\n if (options.filter) {\n query.where(options.filter);\n }\n\n return query.paginate({\n limit: options.limit,\n page: options.page,\n });\n}\n\nexport async function findLatest<TModel extends Model>(\n ModelClass: ChildModel<TModel>,\n filter?: Record<string, unknown>,\n): Promise<TModel[]> {\n const query = ModelClass.query();\n if (filter) {\n query.where(filter);\n }\n return (await query.latest()) as unknown as TModel[];\n}\n\nexport function increaseField<TModel extends Model>(\n ModelClass: ChildModel<TModel>,\n filter: Record<string, unknown>,\n field: string,\n amount: number,\n): Promise<number> {\n const query = ModelClass.query().where(filter);\n return query.increment(field, amount);\n}\n\nexport function decreaseField<TModel extends Model>(\n ModelClass: ChildModel<TModel>,\n filter: Record<string, unknown>,\n field: string,\n amount: number,\n): Promise<number> {\n const query = ModelClass.query().where(filter);\n return query.decrement(field, amount);\n}\n\n// The atomic/find-and-modify statics below forward their filter straight to\n// the driver — they never pass through where(), so they must run the same\n// operator-injection check themselves. Only the FILTER is sanitized; update\n// operators ($set/$inc/…) are the point of these APIs and stay untouched.\n//\n// `trustedFilter` is the explicit, code-authored opt-out: it lets a conditional\n// filter such as `{ used: { $lt: 10 } }` through. It is stripped before the\n// options reach the driver.\nfunction resolveFilter(\n filter: Record<string, unknown>,\n options: AtomicUpdateOptions | undefined,\n): Record<string, unknown> {\n return options?.trustedFilter ? filter : sanitizeFilter(filter);\n}\n\nfunction toDriverOptions<TOptions extends AtomicUpdateOptions>(\n options: TOptions | undefined,\n): Omit<TOptions, \"trustedFilter\"> | undefined {\n if (!options) {\n return undefined;\n }\n\n const { trustedFilter: _trustedFilter, ...rest } = options;\n\n return rest;\n}\n\nfunction applyWriteFilter<TModel extends Model>(\n query: QueryBuilderContract<TModel>,\n filter: Record<string, unknown>,\n trustedFilter: boolean,\n): QueryBuilderContract<TModel> {\n // Query builders supplied by integrations predating `whereTrusted` can\n // still apply a code-authored filter through their regular `where` method.\n // Concrete Cascade builders implement `whereTrusted`, which is required for\n // MongoDB operator filters; retain the fallback for compatible custom\n // builders and test doubles.\n if (trustedFilter && typeof query.whereTrusted === \"function\") {\n return query.whereTrusted(filter);\n }\n\n return query.where(filter);\n}\n\n/**\n * Add the same generated `id` that normal Mongo inserts receive to an upsert's\n * insert branch. `$setOnInsert` keeps an existing document's id immutable.\n */\nasync function withAutoGeneratedUpsertId<TModel extends Model>(\n ModelClass: ChildModel<TModel>,\n filter: Record<string, unknown>,\n operations: AtomicUpdate,\n options: AtomicUpdateOptions | undefined,\n): Promise<AtomicUpdate> {\n if (\n !options?.upsert ||\n !ModelClass.autoGenerateId ||\n ModelClass.getDriver().name !== \"mongodb\" ||\n Array.isArray(operations)\n ) {\n return operations;\n }\n\n const filterId = filter.id;\n const filterConstrainsId =\n Object.hasOwn(filter, \"id\") &&\n (filterId === null ||\n typeof filterId !== \"object\" ||\n (!Array.isArray(filterId) && Object.hasOwn(filterId, \"$eq\")));\n const updateSuppliesId =\n Object.hasOwn(operations.$set ?? {}, \"id\") ||\n Object.hasOwn(operations.$setOnInsert ?? {}, \"id\");\n\n if (filterConstrainsId || updateSuppliesId) {\n return operations;\n }\n\n const id = await generateModelId(ModelClass);\n\n if (id === undefined) {\n return operations;\n }\n\n return {\n ...operations,\n $setOnInsert: { ...operations.$setOnInsert, id },\n };\n}\n\n/**\n * Pin a driver-level write to the rows the model's global scopes (tenant, soft\n * delete) allow. The driver write APIs take a raw filter and never see scopes,\n * so the target ids are resolved through the scoped query builder and added to\n * the filter. `null` means no visible row matches: the write must be a no-op.\n */\nexport async function scopeWriteFilter(\n ModelClass: ChildModel<any>,\n filter: Record<string, unknown>,\n single: boolean,\n trustedFilter = false,\n): Promise<Record<string, unknown> | null> {\n const primaryKey = ModelClass.primaryKey;\n const query = ModelClass.query();\n const ids = await applyWriteFilter(query, filter, trustedFilter).pluck(primaryKey);\n\n if (ids.length === 0) {\n return null;\n }\n\n return { ...filter, [primaryKey]: single ? ids[0] : { $in: ids } };\n}\n\n/**\n * Scoped filter for a write that may insert (`upsert`). With no visible match\n * the driver would insert or, worse, update a row a scope hides (another\n * tenant's, a soft-deleted one), so a hidden match is refused.\n */\nexport async function scopeUpsertFilter(\n ModelClass: ChildModel<any>,\n filter: Record<string, unknown>,\n trustedFilter = false,\n): Promise<Record<string, unknown>> {\n const scoped = await scopeWriteFilter(ModelClass, filter, true, trustedFilter);\n\n if (scoped) {\n return scoped;\n }\n\n const query = ModelClass.query().withoutGlobalScopes();\n const hidden = await applyWriteFilter(query, filter, trustedFilter).exists();\n\n if (hidden) {\n throw new Error(\n `${ModelClass.name}: upsert matches a row hidden by a global scope (tenant or soft delete); refusing to touch it.`,\n );\n }\n\n return filter;\n}\n\n/**\n * Run an atomic update and return the number of documents modified plus the\n * number inserted by an `upsert`.\n */\nexport async function performAtomic<TModel extends Model>(\n ModelClass: ChildModel<TModel>,\n filter: Record<string, unknown>,\n operations: AtomicUpdate,\n options?: AtomicUpdateOptions,\n): Promise<number> {\n const resolved = resolveFilter(filter, options);\n const scoped = options?.upsert\n ? await scopeUpsertFilter(ModelClass, resolved, options?.trustedFilter)\n : await scopeWriteFilter(ModelClass, resolved, false, options?.trustedFilter);\n\n if (!scoped) {\n return 0;\n }\n\n const upsertOperations = await withAutoGeneratedUpsertId(ModelClass, scoped, operations, options);\n\n const result = await ModelClass.getDriver().atomic(\n ModelClass.table,\n scoped,\n upsertOperations,\n toDriverOptions(options),\n );\n\n return result.modifiedCount + (result.upsertedCount ?? 0);\n}\n\n/**\n * Update a row by id through the model writer: the row is loaded (scopes\n * apply), merged, and saved, so the schema, strictMode, casting, `updatedAt`\n * and events all apply. Returns 1 when a row was saved, 0 when none is visible.\n */\nexport async function updateById<TModel extends Model>(\n ModelClass: ChildModel<TModel>,\n id: string | number,\n data: Record<string, unknown>,\n): Promise<number> {\n const model = await ModelClass.query().where(ModelClass.primaryKey, id).first();\n\n if (!model) {\n return 0;\n }\n\n model.merge(data);\n await model.save();\n\n return 1;\n}\n\nexport async function findAndUpdateRecords<TModel extends Model>(\n ModelClass: ChildModel<TModel>,\n filter: Record<string, unknown>,\n update: AtomicUpdate,\n options?: AtomicUpdateOptions,\n): Promise<TModel[]> {\n const primaryKey = ModelClass.primaryKey;\n const safeFilter = resolveFilter(filter, options);\n\n // Capture the matching ids first: the update usually changes the very field\n // the filter matches on, so re-querying with the filter would find nothing.\n const query = ModelClass.query();\n const ids = await applyWriteFilter(query, safeFilter, options?.trustedFilter ?? false).pluck(\n primaryKey,\n );\n\n if (ids.length === 0) {\n if (!options?.upsert) {\n return [];\n }\n\n await performAtomic(ModelClass, safeFilter, update, { ...options, trustedFilter: true });\n return await ModelClass.query().where(safeFilter).get();\n }\n\n await performAtomic(ModelClass, { [primaryKey]: { $in: ids } }, update, {\n ...options,\n trustedFilter: true,\n });\n\n return await ModelClass.query().whereIn(primaryKey, ids).get();\n}\n\nexport async function findOneAndUpdateRecord<TModel extends Model>(\n ModelClass: ChildModel<TModel>,\n filter: Record<string, unknown>,\n update: AtomicUpdate,\n options?: FindOneAndUpdateOptions,\n): Promise<TModel | null> {\n const resolved = resolveFilter(filter, options);\n const scoped = options?.upsert\n ? await scopeUpsertFilter(ModelClass, resolved, options?.trustedFilter)\n : await scopeWriteFilter(ModelClass, resolved, true, options?.trustedFilter);\n\n if (!scoped) return null;\n\n const upsertUpdate = await withAutoGeneratedUpsertId(ModelClass, scoped, update, options);\n\n const result = await ModelClass.getDriver().findOneAndUpdate(\n ModelClass.table,\n scoped,\n upsertUpdate,\n toDriverOptions(options),\n );\n if (!result) return null;\n return ModelClass.hydrate(result as Record<string, unknown>) as TModel;\n}\n\nexport async function findAndReplaceRecord<TModel extends Model>(\n ModelClass: ChildModel<TModel>,\n filter: Record<string, unknown>,\n document: Record<string, unknown>,\n): Promise<TModel | null> {\n const scoped = await scopeWriteFilter(ModelClass, sanitizeFilter(filter), true);\n\n if (!scoped) return null;\n\n const result = await ModelClass.getDriver().replace(ModelClass.table, scoped, document);\n if (!result) return null;\n return ModelClass.hydrate(result as Record<string, unknown>) as TModel;\n}\n\nexport async function findOneAndDeleteRecord<TModel extends Model>(\n ModelClass: ChildModel<TModel>,\n filter: Record<string, unknown>,\n options?: Record<string, unknown>,\n): Promise<TModel | null> {\n const scoped = await scopeWriteFilter(ModelClass, sanitizeFilter(filter), true);\n\n if (!scoped) {\n return null;\n }\n\n const result = await ModelClass.getDriver().findOneAndDelete(ModelClass.table, scoped, options);\n\n if (!result) {\n return null;\n }\n\n const model = ModelClass.hydrate(result as Record<string, unknown>);\n model.dirtyTracker.reset();\n return model;\n}\n\nexport function resolveDataSource<TModel extends Model>(\n ModelClass: ChildModel<TModel>,\n): DataSource {\n const ref = ModelClass.dataSource;\n let dataSource: DataSource;\n\n if (typeof ref === \"string\") {\n dataSource = dataSourceRegistry.get(ref);\n } else if (ref) {\n dataSource = ref;\n } else {\n dataSource = dataSourceRegistry.get();\n }\n\n if (!ModelClass.hasOwnProperty(\"_defaultsApplied\")) {\n const driverDefaults = dataSource.driver.modelDefaults || {};\n const dataSourceDefaults = dataSource.modelDefaults || {};\n\n const mergedDefaults = {\n ...driverDefaults,\n ...dataSourceDefaults,\n };\n\n if (Object.keys(mergedDefaults).length > 0) {\n (ModelClass as any).applyModelDefaults(mergedDefaults);\n }\n\n (ModelClass as any)._defaultsApplied = true;\n }\n\n // First data-source resolution is the earliest per-class hook every model\n // passes through — warn here (once) if the schema carries credential-shaped\n // fields that toJSON() would expose.\n warnUndeclaredSensitiveFields(ModelClass);\n\n return dataSource;\n}\n"],"mappings":"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"}
|
package/esm/model/model.d.mts
CHANGED
|
@@ -1313,10 +1313,10 @@ declare abstract class Model<TSchema extends ModelSchema = ModelSchema> {
|
|
|
1313
1313
|
* Find one and update multiple records that matches the provided filter and return the updated record
|
|
1314
1314
|
* @param filter - Filter conditions
|
|
1315
1315
|
* @param update - Update operators, or an aggregation pipeline (MongoDB only)
|
|
1316
|
-
* @param options - `upsert`, `arrayFilters` (MongoDB only)
|
|
1316
|
+
* @param options - `upsert`, `arrayFilters` (MongoDB only), `trustedFilter`
|
|
1317
1317
|
* @returns The updated records
|
|
1318
1318
|
*/
|
|
1319
|
-
static findAndUpdate<TModel extends Model = Model>(this: ChildModel<TModel>, filter: Record<string, unknown>, update: AtomicUpdate, options?:
|
|
1319
|
+
static findAndUpdate<TModel extends Model = Model>(this: ChildModel<TModel>, filter: Record<string, unknown>, update: AtomicUpdate, options?: AtomicUpdateOptions): Promise<TModel[]>;
|
|
1320
1320
|
/**
|
|
1321
1321
|
* Find one and update a single record that matches the provided filter and return the updated record
|
|
1322
1322
|
* @param filter - Filter conditions
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.d.mts","names":[],"sources":["../../../../../../../cascade/src/model/model.ts"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"model.d.mts","names":[],"sources":["../../../../../../../cascade/src/model/model.ts"],"mappings":"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"}
|
package/esm/model/model.mjs
CHANGED
|
@@ -1262,7 +1262,7 @@ var Model = class Model {
|
|
|
1262
1262
|
* Find one and update multiple records that matches the provided filter and return the updated record
|
|
1263
1263
|
* @param filter - Filter conditions
|
|
1264
1264
|
* @param update - Update operators, or an aggregation pipeline (MongoDB only)
|
|
1265
|
-
* @param options - `upsert`, `arrayFilters` (MongoDB only)
|
|
1265
|
+
* @param options - `upsert`, `arrayFilters` (MongoDB only), `trustedFilter`
|
|
1266
1266
|
* @returns The updated records
|
|
1267
1267
|
*/
|
|
1268
1268
|
static async findAndUpdate(filter, update, options) {
|