@agentforge/tools 0.16.38 → 0.16.39

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/dist/index.cjs CHANGED
@@ -5092,11 +5092,9 @@ function rowsHaveHomogeneousColumns(rows) {
5092
5092
  function buildSingleRowInsert(table, row, vendor) {
5093
5093
  const columns = Object.keys(row);
5094
5094
  if (columns.length === 0) {
5095
- const quotedTable2 = quoteQualifiedIdentifier(table, vendor);
5096
- return drizzleOrm.sql.raw(`INSERT INTO ${quotedTable2} DEFAULT VALUES`);
5095
+ return drizzleOrm.sql.raw(`INSERT INTO ${quoteQualifiedIdentifier(table, vendor)} DEFAULT VALUES`);
5097
5096
  }
5098
5097
  columns.forEach((column) => validateIdentifier(column, "Insert column"));
5099
- const quotedTable = quoteQualifiedIdentifier(table, vendor);
5100
5098
  const quotedColumns = columns.map((column) => quoteIdentifier(column, vendor)).join(", ");
5101
5099
  const valueFragments = columns.map((column) => {
5102
5100
  const value = row[column];
@@ -5107,7 +5105,9 @@ function buildSingleRowInsert(table, row, vendor) {
5107
5105
  });
5108
5106
  return drizzleOrm.sql.join(
5109
5107
  [
5110
- drizzleOrm.sql.raw(`INSERT INTO ${quotedTable} (${quotedColumns}) VALUES (`),
5108
+ drizzleOrm.sql.raw(
5109
+ `INSERT INTO ${quoteQualifiedIdentifier(table, vendor)} (${quotedColumns}) VALUES (`
5110
+ ),
5111
5111
  drizzleOrm.sql.join(valueFragments, drizzleOrm.sql.raw(", ")),
5112
5112
  drizzleOrm.sql.raw(")")
5113
5113
  ],
@@ -5118,12 +5118,13 @@ function buildInsertValuesQuery(table, columns, rows, vendor) {
5118
5118
  if (vendor === "sqlite" && !rowsHaveHomogeneousColumns(rows)) {
5119
5119
  return rows.map((row) => buildSingleRowInsert(table, row, vendor));
5120
5120
  }
5121
- const quotedTable = quoteQualifiedIdentifier(table, vendor);
5122
5121
  const quotedColumns = columns.map((column) => quoteIdentifier(column, vendor)).join(", ");
5123
5122
  const rowTuples = rows.map((row) => buildValuesTuple(columns, row));
5124
5123
  return drizzleOrm.sql.join(
5125
5124
  [
5126
- drizzleOrm.sql.raw(`INSERT INTO ${quotedTable} (${quotedColumns}) VALUES `),
5125
+ drizzleOrm.sql.raw(
5126
+ `INSERT INTO ${quoteQualifiedIdentifier(table, vendor)} (${quotedColumns}) VALUES `
5127
+ ),
5127
5128
  drizzleOrm.sql.join(rowTuples, drizzleOrm.sql.raw(", "))
5128
5129
  ],
5129
5130
  drizzleOrm.sql.raw("")
@@ -5133,8 +5134,7 @@ function buildInsertDefaultValuesQuery(table, rowCount, vendor) {
5133
5134
  if (rowCount > 1) {
5134
5135
  throw new Error("Batch INSERT with only DEFAULT VALUES is not supported");
5135
5136
  }
5136
- const quotedTable = quoteQualifiedIdentifier(table, vendor);
5137
- return drizzleOrm.sql.raw(`INSERT INTO ${quotedTable} DEFAULT VALUES`);
5137
+ return drizzleOrm.sql.raw(`INSERT INTO ${quoteQualifiedIdentifier(table, vendor)} DEFAULT VALUES`);
5138
5138
  }
5139
5139
  function buildInsertQuery(input) {
5140
5140
  validateQualifiedIdentifier(input.table, "Table name");
@@ -5157,9 +5157,7 @@ function buildInsertQuery(input) {
5157
5157
  let queries = valuesResult;
5158
5158
  if (returningMode !== "none" && supportsReturning) {
5159
5159
  const returningClause = returningMode === "id" ? drizzleOrm.sql.raw(` RETURNING ${quoteIdentifier(idColumn, input.vendor)}`) : drizzleOrm.sql.raw(" RETURNING *");
5160
- queries = queries.map(
5161
- (q) => drizzleOrm.sql.join([q, returningClause], drizzleOrm.sql.raw(""))
5162
- );
5160
+ queries = queries.map((query2) => drizzleOrm.sql.join([query2, returningClause], drizzleOrm.sql.raw("")));
5163
5161
  }
5164
5162
  return {
5165
5163
  query: queries,
@@ -5171,14 +5169,10 @@ function buildInsertQuery(input) {
5171
5169
  }
5172
5170
  let query = valuesResult;
5173
5171
  if (returningMode !== "none" && supportsReturning) {
5174
- if (returningMode === "id") {
5175
- query = drizzleOrm.sql.join(
5176
- [query, drizzleOrm.sql.raw(` RETURNING ${quoteIdentifier(idColumn, input.vendor)}`)],
5177
- drizzleOrm.sql.raw("")
5178
- );
5179
- } else {
5180
- query = drizzleOrm.sql.join([query, drizzleOrm.sql.raw(" RETURNING *")], drizzleOrm.sql.raw(""));
5181
- }
5172
+ query = returningMode === "id" ? drizzleOrm.sql.join(
5173
+ [query, drizzleOrm.sql.raw(` RETURNING ${quoteIdentifier(idColumn, input.vendor)}`)],
5174
+ drizzleOrm.sql.raw("")
5175
+ ) : drizzleOrm.sql.join([query, drizzleOrm.sql.raw(" RETURNING *")], drizzleOrm.sql.raw(""));
5182
5176
  }
5183
5177
  return {
5184
5178
  query,
@@ -5188,23 +5182,7 @@ function buildInsertQuery(input) {
5188
5182
  supportsReturning
5189
5183
  };
5190
5184
  }
5191
- function normalizeUpdateData(data) {
5192
- if (!data || typeof data !== "object" || Array.isArray(data)) {
5193
- throw new Error("Update data must be an object");
5194
- }
5195
- const keys = Object.keys(data);
5196
- if (keys.length === 0) {
5197
- throw new Error("Update data must not be empty");
5198
- }
5199
- keys.forEach((column) => {
5200
- validateIdentifier(column, "Update column");
5201
- if (data[column] === void 0) {
5202
- throw new Error(`Update value for column "${column}" must not be undefined`);
5203
- }
5204
- });
5205
- return data;
5206
- }
5207
- function buildUpdateWhereCondition(condition, vendor) {
5185
+ function buildWhereCondition(condition, vendor) {
5208
5186
  validateIdentifier(condition.column, "WHERE column");
5209
5187
  const column = drizzleOrm.sql.raw(quoteIdentifier(condition.column, vendor));
5210
5188
  switch (condition.operator) {
@@ -5253,12 +5231,12 @@ function buildUpdateWhereCondition(condition, vendor) {
5253
5231
  if (!Array.isArray(condition.value) || condition.value.length === 0) {
5254
5232
  throw new Error(`IN operator requires a non-empty array value for column ${condition.column}`);
5255
5233
  }
5256
- return drizzleOrm.sql`${column} IN (${drizzleOrm.sql.join(condition.value.map((v) => drizzleOrm.sql`${v}`), drizzleOrm.sql.raw(", "))})`;
5234
+ return drizzleOrm.sql`${column} IN (${drizzleOrm.sql.join(condition.value.map((value) => drizzleOrm.sql`${value}`), drizzleOrm.sql.raw(", "))})`;
5257
5235
  case "notIn":
5258
5236
  if (!Array.isArray(condition.value) || condition.value.length === 0) {
5259
5237
  throw new Error(`NOT IN operator requires a non-empty array value for column ${condition.column}`);
5260
5238
  }
5261
- return drizzleOrm.sql`${column} NOT IN (${drizzleOrm.sql.join(condition.value.map((v) => drizzleOrm.sql`${v}`), drizzleOrm.sql.raw(", "))})`;
5239
+ return drizzleOrm.sql`${column} NOT IN (${drizzleOrm.sql.join(condition.value.map((value) => drizzleOrm.sql`${value}`), drizzleOrm.sql.raw(", "))})`;
5262
5240
  case "isNull":
5263
5241
  if (condition.value !== void 0) {
5264
5242
  throw new Error(`IS NULL operator must not include value for column ${condition.column}`);
@@ -5271,6 +5249,24 @@ function buildUpdateWhereCondition(condition, vendor) {
5271
5249
  return drizzleOrm.sql`${column} IS NOT NULL`;
5272
5250
  }
5273
5251
  }
5252
+
5253
+ // src/data/relational/query/query-builder-mutation.ts
5254
+ function normalizeUpdateData(data) {
5255
+ if (!data || typeof data !== "object" || Array.isArray(data)) {
5256
+ throw new Error("Update data must be an object");
5257
+ }
5258
+ const keys = Object.keys(data);
5259
+ if (keys.length === 0) {
5260
+ throw new Error("Update data must not be empty");
5261
+ }
5262
+ keys.forEach((column) => {
5263
+ validateIdentifier(column, "Update column");
5264
+ if (data[column] === void 0) {
5265
+ throw new Error(`Update value for column "${column}" must not be undefined`);
5266
+ }
5267
+ });
5268
+ return data;
5269
+ }
5274
5270
  function buildUpdateQuery(input) {
5275
5271
  validateQualifiedIdentifier(input.table, "Table name");
5276
5272
  const normalizedData = normalizeUpdateData(input.data);
@@ -5279,7 +5275,7 @@ function buildUpdateQuery(input) {
5279
5275
  return drizzleOrm.sql`${quotedColumn} = ${value}`;
5280
5276
  });
5281
5277
  const whereConditions = (input.where ?? []).map(
5282
- (condition) => buildUpdateWhereCondition(condition, input.vendor)
5278
+ (condition) => buildWhereCondition(condition, input.vendor)
5283
5279
  );
5284
5280
  if (input.optimisticLock) {
5285
5281
  validateIdentifier(input.optimisticLock.column, "Optimistic lock column");
@@ -5290,7 +5286,9 @@ function buildUpdateQuery(input) {
5290
5286
  whereConditions.push(drizzleOrm.sql`${lockColumn} = ${input.optimisticLock.expectedValue}`);
5291
5287
  }
5292
5288
  if (whereConditions.length === 0 && !input.allowFullTableUpdate) {
5293
- throw new Error("WHERE conditions are required for UPDATE queries. Set allowFullTableUpdate=true to override.");
5289
+ throw new Error(
5290
+ "WHERE conditions are required for UPDATE queries. Set allowFullTableUpdate=true to override."
5291
+ );
5294
5292
  }
5295
5293
  let query = drizzleOrm.sql.join(
5296
5294
  [
@@ -5300,7 +5298,10 @@ function buildUpdateQuery(input) {
5300
5298
  drizzleOrm.sql.raw("")
5301
5299
  );
5302
5300
  if (whereConditions.length > 0) {
5303
- query = drizzleOrm.sql.join([query, drizzleOrm.sql.raw(" WHERE "), drizzleOrm.sql.join(whereConditions, drizzleOrm.sql.raw(" AND "))], drizzleOrm.sql.raw(""));
5301
+ query = drizzleOrm.sql.join(
5302
+ [query, drizzleOrm.sql.raw(" WHERE "), drizzleOrm.sql.join(whereConditions, drizzleOrm.sql.raw(" AND "))],
5303
+ drizzleOrm.sql.raw("")
5304
+ );
5304
5305
  }
5305
5306
  return {
5306
5307
  query,
@@ -5311,10 +5312,12 @@ function buildUpdateQuery(input) {
5311
5312
  function buildDeleteQuery(input) {
5312
5313
  validateQualifiedIdentifier(input.table, "Table name");
5313
5314
  const whereConditions = (input.where ?? []).map(
5314
- (condition) => buildUpdateWhereCondition(condition, input.vendor)
5315
+ (condition) => buildWhereCondition(condition, input.vendor)
5315
5316
  );
5316
5317
  if (whereConditions.length === 0 && !input.allowFullTableDelete) {
5317
- throw new Error("WHERE conditions are required for DELETE queries. Set allowFullTableDelete=true to override.");
5318
+ throw new Error(
5319
+ "WHERE conditions are required for DELETE queries. Set allowFullTableDelete=true to override."
5320
+ );
5318
5321
  }
5319
5322
  const softDeleteColumn = input.softDelete?.column ?? "deleted_at";
5320
5323
  const softDeleteValue = input.softDelete?.value ?? (/* @__PURE__ */ new Date()).toISOString();
@@ -5333,7 +5336,10 @@ function buildDeleteQuery(input) {
5333
5336
  query = drizzleOrm.sql.raw(`DELETE FROM ${quoteQualifiedIdentifier(input.table, input.vendor)}`);
5334
5337
  }
5335
5338
  if (whereConditions.length > 0) {
5336
- query = drizzleOrm.sql.join([query, drizzleOrm.sql.raw(" WHERE "), drizzleOrm.sql.join(whereConditions, drizzleOrm.sql.raw(" AND "))], drizzleOrm.sql.raw(""));
5339
+ query = drizzleOrm.sql.join(
5340
+ [query, drizzleOrm.sql.raw(" WHERE "), drizzleOrm.sql.join(whereConditions, drizzleOrm.sql.raw(" AND "))],
5341
+ drizzleOrm.sql.raw("")
5342
+ );
5337
5343
  }
5338
5344
  return {
5339
5345
  query,
@@ -5342,73 +5348,6 @@ function buildDeleteQuery(input) {
5342
5348
  softDeleteColumn: input.softDelete ? softDeleteColumn : void 0
5343
5349
  };
5344
5350
  }
5345
- function buildSelectWhereCondition(condition, vendor) {
5346
- validateIdentifier(condition.column, "WHERE column");
5347
- const column = drizzleOrm.sql.raw(quoteIdentifier(condition.column, vendor));
5348
- switch (condition.operator) {
5349
- case "eq":
5350
- if (condition.value === void 0) {
5351
- throw new Error(`EQ operator requires a value for column ${condition.column}`);
5352
- }
5353
- if (condition.value === null) {
5354
- throw new Error("null is only allowed with isNull/isNotNull operators");
5355
- }
5356
- return drizzleOrm.sql`${column} = ${condition.value}`;
5357
- case "ne":
5358
- if (condition.value === void 0) {
5359
- throw new Error(`NE operator requires a value for column ${condition.column}`);
5360
- }
5361
- if (condition.value === null) {
5362
- throw new Error("null is only allowed with isNull/isNotNull operators");
5363
- }
5364
- return drizzleOrm.sql`${column} != ${condition.value}`;
5365
- case "gt":
5366
- if (typeof condition.value !== "string" && typeof condition.value !== "number") {
5367
- throw new Error(`GT operator requires a string or number value for column ${condition.column}`);
5368
- }
5369
- return drizzleOrm.sql`${column} > ${condition.value}`;
5370
- case "lt":
5371
- if (typeof condition.value !== "string" && typeof condition.value !== "number") {
5372
- throw new Error(`LT operator requires a string or number value for column ${condition.column}`);
5373
- }
5374
- return drizzleOrm.sql`${column} < ${condition.value}`;
5375
- case "gte":
5376
- if (typeof condition.value !== "string" && typeof condition.value !== "number") {
5377
- throw new Error(`GTE operator requires a string or number value for column ${condition.column}`);
5378
- }
5379
- return drizzleOrm.sql`${column} >= ${condition.value}`;
5380
- case "lte":
5381
- if (typeof condition.value !== "string" && typeof condition.value !== "number") {
5382
- throw new Error(`LTE operator requires a string or number value for column ${condition.column}`);
5383
- }
5384
- return drizzleOrm.sql`${column} <= ${condition.value}`;
5385
- case "like":
5386
- if (typeof condition.value !== "string") {
5387
- throw new Error(`LIKE operator requires a string value for column ${condition.column}`);
5388
- }
5389
- return drizzleOrm.sql`${column} LIKE ${condition.value}`;
5390
- case "in":
5391
- if (!Array.isArray(condition.value) || condition.value.length === 0) {
5392
- throw new Error(`IN operator requires a non-empty array value for column ${condition.column}`);
5393
- }
5394
- return drizzleOrm.sql`${column} IN (${drizzleOrm.sql.join(condition.value.map((v) => drizzleOrm.sql`${v}`), drizzleOrm.sql.raw(", "))})`;
5395
- case "notIn":
5396
- if (!Array.isArray(condition.value) || condition.value.length === 0) {
5397
- throw new Error(`NOT IN operator requires a non-empty array value for column ${condition.column}`);
5398
- }
5399
- return drizzleOrm.sql`${column} NOT IN (${drizzleOrm.sql.join(condition.value.map((v) => drizzleOrm.sql`${v}`), drizzleOrm.sql.raw(", "))})`;
5400
- case "isNull":
5401
- if (condition.value !== void 0) {
5402
- throw new Error(`IS NULL operator must not include value for column ${condition.column}`);
5403
- }
5404
- return drizzleOrm.sql`${column} IS NULL`;
5405
- case "isNotNull":
5406
- if (condition.value !== void 0) {
5407
- throw new Error(`IS NOT NULL operator must not include value for column ${condition.column}`);
5408
- }
5409
- return drizzleOrm.sql`${column} IS NOT NULL`;
5410
- }
5411
- }
5412
5351
  function buildSelectQuery(input) {
5413
5352
  validateQualifiedIdentifier(input.table, "Table name");
5414
5353
  let query = drizzleOrm.sql.raw("SELECT ");
@@ -5426,7 +5365,9 @@ function buildSelectQuery(input) {
5426
5365
  drizzleOrm.sql.raw("")
5427
5366
  );
5428
5367
  if (input.where && input.where.length > 0) {
5429
- const whereConditions = input.where.map((condition) => buildSelectWhereCondition(condition, input.vendor));
5368
+ const whereConditions = input.where.map(
5369
+ (condition) => buildWhereCondition(condition, input.vendor)
5370
+ );
5430
5371
  query = drizzleOrm.sql.join(
5431
5372
  [query, drizzleOrm.sql.raw(" WHERE "), drizzleOrm.sql.join(whereConditions, drizzleOrm.sql.raw(" AND "))],
5432
5373
  drizzleOrm.sql.raw("")