@warlock.js/cascade 5.24.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.
Files changed (93) hide show
  1. package/CHANGELOG.md +30 -5
  2. package/README.md +101 -101
  3. package/bin/cascade.js +0 -0
  4. package/cjs/index.cjs +307 -88
  5. package/cjs/index.cjs.map +1 -1
  6. package/esm/contracts/database-driver.contract.d.mts +22 -1
  7. package/esm/contracts/database-driver.contract.d.mts.map +1 -1
  8. package/esm/contracts/index.d.mts +1 -1
  9. package/esm/contracts/query-builder.contract.d.mts +7 -0
  10. package/esm/contracts/query-builder.contract.d.mts.map +1 -1
  11. package/esm/data-source/data-source-registry.d.mts +8 -6
  12. package/esm/data-source/data-source-registry.d.mts.map +1 -1
  13. package/esm/data-source/data-source-registry.mjs +7 -1
  14. package/esm/data-source/data-source-registry.mjs.map +1 -1
  15. package/esm/drivers/mongodb/mongodb-driver.d.mts +13 -0
  16. package/esm/drivers/mongodb/mongodb-driver.d.mts.map +1 -1
  17. package/esm/drivers/mongodb/mongodb-driver.mjs +71 -2
  18. package/esm/drivers/mongodb/mongodb-driver.mjs.map +1 -1
  19. package/esm/drivers/mongodb/mongodb-query-builder.d.mts +5 -0
  20. package/esm/drivers/mongodb/mongodb-query-builder.d.mts.map +1 -1
  21. package/esm/drivers/mongodb/mongodb-query-builder.mjs +11 -1
  22. package/esm/drivers/mongodb/mongodb-query-builder.mjs.map +1 -1
  23. package/esm/drivers/postgres/postgres-driver.d.mts +9 -0
  24. package/esm/drivers/postgres/postgres-driver.d.mts.map +1 -1
  25. package/esm/drivers/postgres/postgres-driver.mjs +55 -7
  26. package/esm/drivers/postgres/postgres-driver.mjs.map +1 -1
  27. package/esm/drivers/postgres/postgres-query-builder.d.mts +5 -0
  28. package/esm/drivers/postgres/postgres-query-builder.d.mts.map +1 -1
  29. package/esm/drivers/postgres/postgres-query-builder.mjs +15 -0
  30. package/esm/drivers/postgres/postgres-query-builder.mjs.map +1 -1
  31. package/esm/drivers/postgres/postgres-query-parser.d.mts +1 -4
  32. package/esm/drivers/postgres/postgres-query-parser.d.mts.map +1 -1
  33. package/esm/drivers/postgres/postgres-query-parser.mjs +4 -5
  34. package/esm/drivers/postgres/postgres-query-parser.mjs.map +1 -1
  35. package/esm/errors/unsafe-filter.error.mjs.map +1 -1
  36. package/esm/errors/unsafe-raw-expression.error.mjs.map +1 -1
  37. package/esm/errors/unsupported-lock-for-update.error.d.mts +11 -0
  38. package/esm/errors/unsupported-lock-for-update.error.d.mts.map +1 -0
  39. package/esm/errors/unsupported-lock-for-update.error.mjs +16 -0
  40. package/esm/errors/unsupported-lock-for-update.error.mjs.map +1 -0
  41. package/esm/events/model-events.mjs.map +1 -1
  42. package/esm/index.d.mts +4 -3
  43. package/esm/index.mjs +2 -1
  44. package/esm/migration/index.d.mts +1 -1
  45. package/esm/migration/migration-order.mjs +6 -3
  46. package/esm/migration/migration-order.mjs.map +1 -1
  47. package/esm/migration/migration-runner.d.mts +5 -3
  48. package/esm/migration/migration-runner.d.mts.map +1 -1
  49. package/esm/migration/migration-runner.mjs +3 -2
  50. package/esm/migration/migration-runner.mjs.map +1 -1
  51. package/esm/migration/migration.d.mts +11 -1
  52. package/esm/migration/migration.d.mts.map +1 -1
  53. package/esm/migration/migration.mjs +45 -2
  54. package/esm/migration/migration.mjs.map +1 -1
  55. package/esm/migration/sql-grammar.mjs.map +1 -1
  56. package/esm/model/generate-model-id.mjs +23 -0
  57. package/esm/model/generate-model-id.mjs.map +1 -0
  58. package/esm/model/methods/delete-methods.mjs.map +1 -1
  59. package/esm/model/methods/meta-methods.mjs.map +1 -1
  60. package/esm/model/methods/query-methods.mjs +38 -11
  61. package/esm/model/methods/query-methods.mjs.map +1 -1
  62. package/esm/model/methods/write-methods.mjs.map +1 -1
  63. package/esm/model/model.d.mts +2 -2
  64. package/esm/model/model.d.mts.map +1 -1
  65. package/esm/model/model.mjs +1 -1
  66. package/esm/model/model.mjs.map +1 -1
  67. package/esm/query-builder/query-builder.d.mts +5 -0
  68. package/esm/query-builder/query-builder.d.mts.map +1 -1
  69. package/esm/query-builder/query-builder.mjs +16 -1
  70. package/esm/query-builder/query-builder.mjs.map +1 -1
  71. package/esm/utils/sanitize-filter.mjs.map +1 -1
  72. package/esm/validation/plugins/database-rules-plugin.mjs.map +1 -1
  73. package/esm/writer/database-writer.d.mts +0 -33
  74. package/esm/writer/database-writer.d.mts.map +1 -1
  75. package/esm/writer/database-writer.mjs +3 -52
  76. package/esm/writer/database-writer.mjs.map +1 -1
  77. package/llms-full.txt +2911 -2864
  78. package/package.json +5 -5
  79. package/skills/aggregate-data/SKILL.md +165 -165
  80. package/skills/alter-migration/SKILL.md +531 -531
  81. package/skills/configure-delete-strategy/SKILL.md +130 -130
  82. package/skills/define-model/SKILL.md +205 -205
  83. package/skills/define-relations/SKILL.md +171 -171
  84. package/skills/manage-data-sources/SKILL.md +177 -140
  85. package/skills/manage-transactions/SKILL.md +215 -205
  86. package/skills/paginate-results/SKILL.md +122 -122
  87. package/skills/perform-atomic-ops/SKILL.md +156 -156
  88. package/skills/query-data/SKILL.md +213 -213
  89. package/skills/run-cascade-cli/SKILL.md +125 -125
  90. package/skills/search-by-vector/SKILL.md +127 -127
  91. package/skills/subscribe-to-model-events/SKILL.md +148 -148
  92. package/skills/track-changes/SKILL.md +127 -127
  93. package/skills/write-migration/SKILL.md +206 -206
@@ -148,6 +148,8 @@ declare class PostgresDriver implements DriverContract {
148
148
  * @param listener - Callback function to invoke
149
149
  */
150
150
  on(event: string, listener: DriverEventListener): void;
151
+ /** Remove a previously registered driver event listener. */
152
+ off(event: string, listener: DriverEventListener): void;
151
153
  /**
152
154
  * Serialize data for storage in PostgreSQL.
153
155
  *
@@ -493,6 +495,13 @@ declare class PostgresDriver implements DriverContract {
493
495
  */
494
496
  private recordColumnTypes;
495
497
  query<T = Record<string, unknown>>(sql: string, params?: unknown[]): Promise<PostgresQueryResult<T>>;
498
+ /** Execute SQL and emit its public query event when the event is observed. */
499
+ private executePostgresQuery;
500
+ /**
501
+ * Emit a `query` event. An observer is never allowed to fail the query it
502
+ * observes, so a throwing listener is swallowed here.
503
+ */
504
+ private emitQueryEvent;
496
505
  /**
497
506
  * Emit an event to all registered listeners.
498
507
  *
@@ -1 +1 @@
1
- {"version":3,"file":"postgres-driver.d.mts","names":[],"sources":["../../../../../../../../cascade/src/drivers/postgres/postgres-driver.ts"],"mappings":"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"}
1
+ {"version":3,"file":"postgres-driver.d.mts","names":[],"sources":["../../../../../../../../cascade/src/drivers/postgres/postgres-driver.ts"],"mappings":"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"}
@@ -309,6 +309,13 @@ var PostgresDriver = class {
309
309
  if (!this._eventListeners.has(event)) this._eventListeners.set(event, /* @__PURE__ */ new Set());
310
310
  this._eventListeners.get(event).add(listener);
311
311
  }
312
+ /** Remove a previously registered driver event listener. */
313
+ off(event, listener) {
314
+ const listeners = this._eventListeners.get(event);
315
+ if (!listeners) return;
316
+ listeners.delete(listener);
317
+ if (listeners.size === 0) this._eventListeners.delete(event);
318
+ }
312
319
  /**
313
320
  * Serialize data for storage in PostgreSQL.
314
321
  *
@@ -810,12 +817,12 @@ var PostgresDriver = class {
810
817
  if (options?.isolationLevel) beginSql += ` ISOLATION LEVEL ${options.isolationLevel.toUpperCase()}`;
811
818
  if (options?.readOnly) beginSql += " READ ONLY";
812
819
  if (options?.deferrable) beginSql += " DEFERRABLE";
813
- await client.query(beginSql);
820
+ await this.executePostgresQuery(() => client.query(beginSql), beginSql);
814
821
  transactionStarted = true;
815
- for (const [name, value] of settings) await client.query("SELECT set_config($1, $2, true)", [name, String(value)]);
822
+ for (const [name, value] of settings) await this.executePostgresQuery(() => client.query("SELECT set_config($1, $2, true)", [name, String(value)]), "SELECT set_config($1, $2, true)", [name, String(value)]);
816
823
  } catch (error) {
817
824
  if (transactionStarted) try {
818
- await client.query("ROLLBACK");
825
+ await this.executePostgresQuery(() => client.query("ROLLBACK"), "ROLLBACK");
819
826
  } catch {}
820
827
  client.release(error instanceof Error ? error : new Error(String(error)));
821
828
  throw error;
@@ -824,7 +831,7 @@ var PostgresDriver = class {
824
831
  context: client,
825
832
  commit: async () => {
826
833
  try {
827
- await client.query("COMMIT");
834
+ await this.executePostgresQuery(() => client.query("COMMIT"), "COMMIT");
828
835
  } catch (error) {
829
836
  client.release(error instanceof Error ? error : new Error(String(error)));
830
837
  throw error;
@@ -833,7 +840,7 @@ var PostgresDriver = class {
833
840
  },
834
841
  rollback: async () => {
835
842
  try {
836
- await client.query("ROLLBACK");
843
+ await this.executePostgresQuery(() => client.query("ROLLBACK"), "ROLLBACK");
837
844
  } catch (error) {
838
845
  client.release(error instanceof Error ? error : new Error(String(error)));
839
846
  throw error;
@@ -1066,8 +1073,8 @@ var PostgresDriver = class {
1066
1073
  paramCount: params.length
1067
1074
  }
1068
1075
  });
1069
- if (txClient) result = await txClient.query(sql, params);
1070
- else result = await this.pool.query(sql, params);
1076
+ if (txClient) result = await this.executePostgresQuery(() => txClient.query(sql, params), sql, params);
1077
+ else result = await this.executePostgresQuery(() => this.pool.query(sql, params), sql, params);
1071
1078
  if (this.config.logging) {
1072
1079
  const duration = (performance.now() - startTime).toFixed(2);
1073
1080
  log.success({
@@ -1100,6 +1107,47 @@ var PostgresDriver = class {
1100
1107
  throw error;
1101
1108
  }
1102
1109
  }
1110
+ /** Execute SQL and emit its public query event when the event is observed. */
1111
+ async executePostgresQuery(execute, sql, bindings = []) {
1112
+ if (!this._eventListeners.get("query")?.size) return execute();
1113
+ const started = performance.now();
1114
+ const startedAt = performance.timeOrigin + started;
1115
+ let result;
1116
+ try {
1117
+ result = await execute();
1118
+ } catch (error) {
1119
+ this.emitQueryEvent({
1120
+ connection: this.name,
1121
+ driver: "postgres",
1122
+ sql,
1123
+ bindings,
1124
+ durationMs: performance.now() - started,
1125
+ startedAt,
1126
+ error
1127
+ });
1128
+ throw error;
1129
+ }
1130
+ const event = {
1131
+ connection: this.name,
1132
+ driver: "postgres",
1133
+ sql,
1134
+ bindings,
1135
+ durationMs: performance.now() - started,
1136
+ startedAt
1137
+ };
1138
+ if (typeof result.rowCount === "number") event.rowCount = result.rowCount;
1139
+ this.emitQueryEvent(event);
1140
+ return result;
1141
+ }
1142
+ /**
1143
+ * Emit a `query` event. An observer is never allowed to fail the query it
1144
+ * observes, so a throwing listener is swallowed here.
1145
+ */
1146
+ emitQueryEvent(event) {
1147
+ try {
1148
+ this.emit("query", event);
1149
+ } catch {}
1150
+ }
1103
1151
  /**
1104
1152
  * Emit an event to all registered listeners.
1105
1153
  *