@warlock.js/cascade 5.28.0 → 5.30.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 (393) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/cjs/index.cjs +101 -101
  3. package/cjs/index.cjs.map +1 -1
  4. package/esm/context/database-data-source-context.d.mts +1 -1
  5. package/esm/context/database-data-source-context.d.mts.map +1 -1
  6. package/esm/context/database-data-source-context.mjs +1 -1
  7. package/esm/context/database-data-source-context.mjs.map +1 -1
  8. package/esm/context/database-transaction-context.d.mts +1 -1
  9. package/esm/context/database-transaction-context.d.mts.map +1 -1
  10. package/esm/context/database-transaction-context.mjs +1 -1
  11. package/esm/context/database-transaction-context.mjs.map +1 -1
  12. package/esm/contracts/database-driver.contract.d.mts +1 -1
  13. package/esm/contracts/database-driver.contract.d.mts.map +1 -1
  14. package/esm/contracts/database-id-generator.contract.d.mts +1 -1
  15. package/esm/contracts/database-id-generator.contract.d.mts.map +1 -1
  16. package/esm/contracts/database-remover.contract.d.mts +1 -1
  17. package/esm/contracts/database-remover.contract.d.mts.map +1 -1
  18. package/esm/contracts/database-restorer.contract.d.mts +1 -1
  19. package/esm/contracts/database-restorer.contract.d.mts.map +1 -1
  20. package/esm/contracts/database-writer.contract.d.mts +1 -1
  21. package/esm/contracts/database-writer.contract.d.mts.map +1 -1
  22. package/esm/contracts/driver-blueprint.contract.d.mts +1 -1
  23. package/esm/contracts/driver-blueprint.contract.d.mts.map +1 -1
  24. package/esm/contracts/migration-driver.contract.d.mts +1 -1
  25. package/esm/contracts/migration-driver.contract.d.mts.map +1 -1
  26. package/esm/contracts/query-builder.contract.d.mts +1 -1
  27. package/esm/contracts/query-builder.contract.d.mts.map +1 -1
  28. package/esm/contracts/sync-adapter.contract.d.mts +1 -1
  29. package/esm/contracts/sync-adapter.contract.d.mts.map +1 -1
  30. package/esm/data-source/data-source-registry.d.mts +1 -1
  31. package/esm/data-source/data-source-registry.d.mts.map +1 -1
  32. package/esm/data-source/data-source-registry.mjs +1 -1
  33. package/esm/data-source/data-source-registry.mjs.map +1 -1
  34. package/esm/data-source/data-source.d.mts +1 -1
  35. package/esm/data-source/data-source.d.mts.map +1 -1
  36. package/esm/data-source/data-source.mjs +1 -1
  37. package/esm/data-source/data-source.mjs.map +1 -1
  38. package/esm/database-dirty-tracker.d.mts +1 -1
  39. package/esm/database-dirty-tracker.d.mts.map +1 -1
  40. package/esm/database-dirty-tracker.mjs +1 -1
  41. package/esm/database-dirty-tracker.mjs.map +1 -1
  42. package/esm/drivers/mongodb/mongodb-blueprint.mjs +1 -1
  43. package/esm/drivers/mongodb/mongodb-blueprint.mjs.map +1 -1
  44. package/esm/drivers/mongodb/mongodb-driver.d.mts +1 -1
  45. package/esm/drivers/mongodb/mongodb-driver.d.mts.map +1 -1
  46. package/esm/drivers/mongodb/mongodb-driver.mjs +1 -1
  47. package/esm/drivers/mongodb/mongodb-driver.mjs.map +1 -1
  48. package/esm/drivers/mongodb/mongodb-id-generator.d.mts +1 -1
  49. package/esm/drivers/mongodb/mongodb-id-generator.d.mts.map +1 -1
  50. package/esm/drivers/mongodb/mongodb-id-generator.mjs +1 -1
  51. package/esm/drivers/mongodb/mongodb-id-generator.mjs.map +1 -1
  52. package/esm/drivers/mongodb/mongodb-migration-driver.d.mts +1 -1
  53. package/esm/drivers/mongodb/mongodb-migration-driver.d.mts.map +1 -1
  54. package/esm/drivers/mongodb/mongodb-migration-driver.mjs +1 -1
  55. package/esm/drivers/mongodb/mongodb-migration-driver.mjs.map +1 -1
  56. package/esm/drivers/mongodb/mongodb-query-builder.d.mts +1 -1
  57. package/esm/drivers/mongodb/mongodb-query-builder.d.mts.map +1 -1
  58. package/esm/drivers/mongodb/mongodb-query-builder.mjs +1 -1
  59. package/esm/drivers/mongodb/mongodb-query-builder.mjs.map +1 -1
  60. package/esm/drivers/mongodb/mongodb-query-operations.d.mts +1 -1
  61. package/esm/drivers/mongodb/mongodb-query-operations.d.mts.map +1 -1
  62. package/esm/drivers/mongodb/mongodb-query-operations.mjs +1 -1
  63. package/esm/drivers/mongodb/mongodb-query-operations.mjs.map +1 -1
  64. package/esm/drivers/mongodb/mongodb-query-parser.d.mts +1 -1
  65. package/esm/drivers/mongodb/mongodb-query-parser.d.mts.map +1 -1
  66. package/esm/drivers/mongodb/mongodb-query-parser.mjs +1 -1
  67. package/esm/drivers/mongodb/mongodb-query-parser.mjs.map +1 -1
  68. package/esm/drivers/mongodb/mongodb-sync-adapter.d.mts +1 -1
  69. package/esm/drivers/mongodb/mongodb-sync-adapter.d.mts.map +1 -1
  70. package/esm/drivers/mongodb/mongodb-sync-adapter.mjs +1 -1
  71. package/esm/drivers/mongodb/mongodb-sync-adapter.mjs.map +1 -1
  72. package/esm/drivers/mongodb/mongodb-update-translator.mjs +1 -1
  73. package/esm/drivers/mongodb/mongodb-update-translator.mjs.map +1 -1
  74. package/esm/drivers/mongodb/pipeline-stage-object.mjs +1 -1
  75. package/esm/drivers/mongodb/pipeline-stage-object.mjs.map +1 -1
  76. package/esm/drivers/mongodb/types.d.mts +1 -1
  77. package/esm/drivers/mongodb/types.d.mts.map +1 -1
  78. package/esm/drivers/postgres/naming.mjs +1 -1
  79. package/esm/drivers/postgres/naming.mjs.map +1 -1
  80. package/esm/drivers/postgres/postgres-blueprint.d.mts +1 -1
  81. package/esm/drivers/postgres/postgres-blueprint.d.mts.map +1 -1
  82. package/esm/drivers/postgres/postgres-blueprint.mjs +1 -1
  83. package/esm/drivers/postgres/postgres-blueprint.mjs.map +1 -1
  84. package/esm/drivers/postgres/postgres-dialect.d.mts +1 -1
  85. package/esm/drivers/postgres/postgres-dialect.d.mts.map +1 -1
  86. package/esm/drivers/postgres/postgres-dialect.mjs +1 -1
  87. package/esm/drivers/postgres/postgres-dialect.mjs.map +1 -1
  88. package/esm/drivers/postgres/postgres-driver.d.mts +1 -1
  89. package/esm/drivers/postgres/postgres-driver.d.mts.map +1 -1
  90. package/esm/drivers/postgres/postgres-driver.mjs +1 -1
  91. package/esm/drivers/postgres/postgres-driver.mjs.map +1 -1
  92. package/esm/drivers/postgres/postgres-migration-driver.d.mts +1 -1
  93. package/esm/drivers/postgres/postgres-migration-driver.d.mts.map +1 -1
  94. package/esm/drivers/postgres/postgres-migration-driver.mjs +1 -1
  95. package/esm/drivers/postgres/postgres-migration-driver.mjs.map +1 -1
  96. package/esm/drivers/postgres/postgres-query-builder.d.mts +1 -1
  97. package/esm/drivers/postgres/postgres-query-builder.d.mts.map +1 -1
  98. package/esm/drivers/postgres/postgres-query-builder.mjs +1 -1
  99. package/esm/drivers/postgres/postgres-query-builder.mjs.map +1 -1
  100. package/esm/drivers/postgres/postgres-query-parser.d.mts +1 -1
  101. package/esm/drivers/postgres/postgres-query-parser.d.mts.map +1 -1
  102. package/esm/drivers/postgres/postgres-query-parser.mjs +1 -1
  103. package/esm/drivers/postgres/postgres-query-parser.mjs.map +1 -1
  104. package/esm/drivers/postgres/postgres-sql-serializer.mjs +1 -1
  105. package/esm/drivers/postgres/postgres-sql-serializer.mjs.map +1 -1
  106. package/esm/drivers/postgres/postgres-ttl-purge.mjs +1 -1
  107. package/esm/drivers/postgres/postgres-ttl-purge.mjs.map +1 -1
  108. package/esm/drivers/postgres/postgres-type-converters.mjs +1 -1
  109. package/esm/drivers/postgres/postgres-type-converters.mjs.map +1 -1
  110. package/esm/drivers/postgres/postgres-update-validator.mjs +1 -1
  111. package/esm/drivers/postgres/postgres-update-validator.mjs.map +1 -1
  112. package/esm/drivers/postgres/types.d.mts +1 -1
  113. package/esm/drivers/postgres/types.d.mts.map +1 -1
  114. package/esm/drivers/sql/sql-dialect.contract.d.mts +1 -1
  115. package/esm/drivers/sql/sql-dialect.contract.d.mts.map +1 -1
  116. package/esm/drivers/sql/sql-types.d.mts +1 -1
  117. package/esm/drivers/sql/sql-types.d.mts.map +1 -1
  118. package/esm/errors/missing-data-source.error.d.mts +1 -1
  119. package/esm/errors/missing-data-source.error.d.mts.map +1 -1
  120. package/esm/errors/missing-data-source.error.mjs +1 -1
  121. package/esm/errors/missing-data-source.error.mjs.map +1 -1
  122. package/esm/errors/transaction-rollback.error.d.mts +1 -1
  123. package/esm/errors/transaction-rollback.error.d.mts.map +1 -1
  124. package/esm/errors/transaction-rollback.error.mjs +1 -1
  125. package/esm/errors/transaction-rollback.error.mjs.map +1 -1
  126. package/esm/errors/undefined-where-value.error.d.mts +1 -1
  127. package/esm/errors/undefined-where-value.error.d.mts.map +1 -1
  128. package/esm/errors/undefined-where-value.error.mjs +1 -1
  129. package/esm/errors/undefined-where-value.error.mjs.map +1 -1
  130. package/esm/errors/unsafe-filter.error.d.mts +1 -1
  131. package/esm/errors/unsafe-filter.error.d.mts.map +1 -1
  132. package/esm/errors/unsafe-filter.error.mjs +1 -1
  133. package/esm/errors/unsafe-filter.error.mjs.map +1 -1
  134. package/esm/errors/unsafe-raw-expression.error.d.mts +1 -1
  135. package/esm/errors/unsafe-raw-expression.error.d.mts.map +1 -1
  136. package/esm/errors/unsafe-raw-expression.error.mjs +1 -1
  137. package/esm/errors/unsafe-raw-expression.error.mjs.map +1 -1
  138. package/esm/errors/unsupported-lean-operation.error.d.mts +1 -1
  139. package/esm/errors/unsupported-lean-operation.error.d.mts.map +1 -1
  140. package/esm/errors/unsupported-lean-operation.error.mjs +1 -1
  141. package/esm/errors/unsupported-lean-operation.error.mjs.map +1 -1
  142. package/esm/errors/unsupported-lock-for-update.error.d.mts +1 -1
  143. package/esm/errors/unsupported-lock-for-update.error.d.mts.map +1 -1
  144. package/esm/errors/unsupported-lock-for-update.error.mjs +1 -1
  145. package/esm/errors/unsupported-lock-for-update.error.mjs.map +1 -1
  146. package/esm/errors/unsupported-query-operation.error.d.mts +1 -1
  147. package/esm/errors/unsupported-query-operation.error.d.mts.map +1 -1
  148. package/esm/errors/unsupported-query-operation.error.mjs +1 -1
  149. package/esm/errors/unsupported-query-operation.error.mjs.map +1 -1
  150. package/esm/errors/unsupported-update-operation.error.d.mts +1 -1
  151. package/esm/errors/unsupported-update-operation.error.d.mts.map +1 -1
  152. package/esm/errors/unsupported-update-operation.error.mjs +1 -1
  153. package/esm/errors/unsupported-update-operation.error.mjs.map +1 -1
  154. package/esm/events/model-events.d.mts +1 -1
  155. package/esm/events/model-events.d.mts.map +1 -1
  156. package/esm/events/model-events.mjs +1 -1
  157. package/esm/events/model-events.mjs.map +1 -1
  158. package/esm/expressions/aggregate-expressions.d.mts +1 -1
  159. package/esm/expressions/aggregate-expressions.d.mts.map +1 -1
  160. package/esm/expressions/aggregate-expressions.mjs +1 -1
  161. package/esm/expressions/aggregate-expressions.mjs.map +1 -1
  162. package/esm/expressions/column-expressions.d.mts +1 -1
  163. package/esm/expressions/column-expressions.d.mts.map +1 -1
  164. package/esm/expressions/column-expressions.mjs +1 -1
  165. package/esm/expressions/column-expressions.mjs.map +1 -1
  166. package/esm/migration/column-builder.d.mts +1 -1
  167. package/esm/migration/column-builder.d.mts.map +1 -1
  168. package/esm/migration/column-builder.mjs +1 -1
  169. package/esm/migration/column-builder.mjs.map +1 -1
  170. package/esm/migration/column-helpers.d.mts +1 -1
  171. package/esm/migration/column-helpers.d.mts.map +1 -1
  172. package/esm/migration/column-helpers.mjs +1 -1
  173. package/esm/migration/column-helpers.mjs.map +1 -1
  174. package/esm/migration/foreign-key-builder.d.mts +1 -1
  175. package/esm/migration/foreign-key-builder.d.mts.map +1 -1
  176. package/esm/migration/foreign-key-builder.mjs +1 -1
  177. package/esm/migration/foreign-key-builder.mjs.map +1 -1
  178. package/esm/migration/migration-order.mjs +1 -1
  179. package/esm/migration/migration-order.mjs.map +1 -1
  180. package/esm/migration/migration-runner.d.mts +1 -1
  181. package/esm/migration/migration-runner.d.mts.map +1 -1
  182. package/esm/migration/migration-runner.mjs +1 -1
  183. package/esm/migration/migration-runner.mjs.map +1 -1
  184. package/esm/migration/migration.d.mts +1 -1
  185. package/esm/migration/migration.d.mts.map +1 -1
  186. package/esm/migration/migration.mjs +1 -1
  187. package/esm/migration/migration.mjs.map +1 -1
  188. package/esm/migration/parse-created-at.mjs +1 -1
  189. package/esm/migration/parse-created-at.mjs.map +1 -1
  190. package/esm/migration/sql-grammar.mjs +1 -1
  191. package/esm/migration/sql-grammar.mjs.map +1 -1
  192. package/esm/migration/sql-serializer.d.mts +1 -1
  193. package/esm/migration/sql-serializer.d.mts.map +1 -1
  194. package/esm/migration/sql-serializer.mjs +1 -1
  195. package/esm/migration/sql-serializer.mjs.map +1 -1
  196. package/esm/migration/types.d.mts +1 -1
  197. package/esm/migration/types.d.mts.map +1 -1
  198. package/esm/model/generate-model-id.mjs +1 -1
  199. package/esm/model/generate-model-id.mjs.map +1 -1
  200. package/esm/model/methods/accessor-methods.mjs +1 -1
  201. package/esm/model/methods/accessor-methods.mjs.map +1 -1
  202. package/esm/model/methods/delete-methods.mjs +1 -1
  203. package/esm/model/methods/delete-methods.mjs.map +1 -1
  204. package/esm/model/methods/dirty-methods.mjs +1 -1
  205. package/esm/model/methods/dirty-methods.mjs.map +1 -1
  206. package/esm/model/methods/hydration-methods.mjs +1 -1
  207. package/esm/model/methods/hydration-methods.mjs.map +1 -1
  208. package/esm/model/methods/instance-event-methods.mjs +1 -1
  209. package/esm/model/methods/instance-event-methods.mjs.map +1 -1
  210. package/esm/model/methods/meta-methods.mjs +1 -1
  211. package/esm/model/methods/meta-methods.mjs.map +1 -1
  212. package/esm/model/methods/pivot-methods.mjs +1 -1
  213. package/esm/model/methods/pivot-methods.mjs.map +1 -1
  214. package/esm/model/methods/query-methods.mjs +1 -1
  215. package/esm/model/methods/query-methods.mjs.map +1 -1
  216. package/esm/model/methods/restore-methods.mjs +1 -1
  217. package/esm/model/methods/restore-methods.mjs.map +1 -1
  218. package/esm/model/methods/scope-methods.mjs +1 -1
  219. package/esm/model/methods/scope-methods.mjs.map +1 -1
  220. package/esm/model/methods/serialization-methods.mjs +1 -1
  221. package/esm/model/methods/serialization-methods.mjs.map +1 -1
  222. package/esm/model/methods/static-event-methods.mjs +1 -1
  223. package/esm/model/methods/static-event-methods.mjs.map +1 -1
  224. package/esm/model/methods/write-methods.d.mts +1 -1
  225. package/esm/model/methods/write-methods.d.mts.map +1 -1
  226. package/esm/model/methods/write-methods.mjs +1 -1
  227. package/esm/model/methods/write-methods.mjs.map +1 -1
  228. package/esm/model/model.d.mts +1 -1
  229. package/esm/model/model.d.mts.map +1 -1
  230. package/esm/model/model.mjs +1 -1
  231. package/esm/model/model.mjs.map +1 -1
  232. package/esm/model/model.types.d.mts +1 -1
  233. package/esm/model/model.types.d.mts.map +1 -1
  234. package/esm/model/register-model.d.mts +1 -1
  235. package/esm/model/register-model.d.mts.map +1 -1
  236. package/esm/model/register-model.mjs +1 -1
  237. package/esm/model/register-model.mjs.map +1 -1
  238. package/esm/model/relation-decorators.d.mts +1 -1
  239. package/esm/model/relation-decorators.d.mts.map +1 -1
  240. package/esm/model/relation-decorators.mjs +1 -1
  241. package/esm/model/relation-decorators.mjs.map +1 -1
  242. package/esm/operations/database.d.mts +1 -1
  243. package/esm/operations/database.d.mts.map +1 -1
  244. package/esm/operations/database.mjs +1 -1
  245. package/esm/operations/database.mjs.map +1 -1
  246. package/esm/operations/migrations.d.mts +1 -1
  247. package/esm/operations/migrations.d.mts.map +1 -1
  248. package/esm/operations/migrations.mjs +1 -1
  249. package/esm/operations/migrations.mjs.map +1 -1
  250. package/esm/query-builder/lean-records.mjs +1 -1
  251. package/esm/query-builder/lean-records.mjs.map +1 -1
  252. package/esm/query-builder/query-builder.d.mts +1 -1
  253. package/esm/query-builder/query-builder.d.mts.map +1 -1
  254. package/esm/query-builder/query-builder.mjs +1 -1
  255. package/esm/query-builder/query-builder.mjs.map +1 -1
  256. package/esm/relations/key-conventions.mjs +1 -1
  257. package/esm/relations/key-conventions.mjs.map +1 -1
  258. package/esm/relations/pivot-operations.d.mts +1 -1
  259. package/esm/relations/pivot-operations.d.mts.map +1 -1
  260. package/esm/relations/pivot-operations.mjs +1 -1
  261. package/esm/relations/pivot-operations.mjs.map +1 -1
  262. package/esm/relations/relation-hydrator.d.mts +1 -1
  263. package/esm/relations/relation-hydrator.d.mts.map +1 -1
  264. package/esm/relations/relation-hydrator.mjs +1 -1
  265. package/esm/relations/relation-hydrator.mjs.map +1 -1
  266. package/esm/relations/relation-loader.d.mts +1 -1
  267. package/esm/relations/relation-loader.d.mts.map +1 -1
  268. package/esm/relations/relation-loader.mjs +1 -1
  269. package/esm/relations/relation-loader.mjs.map +1 -1
  270. package/esm/relations/types.d.mts +1 -1
  271. package/esm/relations/types.d.mts.map +1 -1
  272. package/esm/remover/database-remover.d.mts +1 -1
  273. package/esm/remover/database-remover.d.mts.map +1 -1
  274. package/esm/remover/database-remover.mjs +1 -1
  275. package/esm/remover/database-remover.mjs.map +1 -1
  276. package/esm/restorer/database-restorer.d.mts +1 -1
  277. package/esm/restorer/database-restorer.d.mts.map +1 -1
  278. package/esm/restorer/database-restorer.mjs +1 -1
  279. package/esm/restorer/database-restorer.mjs.map +1 -1
  280. package/esm/sql-database-dirty-tracker.d.mts +1 -1
  281. package/esm/sql-database-dirty-tracker.d.mts.map +1 -1
  282. package/esm/sql-database-dirty-tracker.mjs +1 -1
  283. package/esm/sql-database-dirty-tracker.mjs.map +1 -1
  284. package/esm/sync/model-events.mjs +1 -1
  285. package/esm/sync/model-events.mjs.map +1 -1
  286. package/esm/sync/model-sync-operation.d.mts +1 -1
  287. package/esm/sync/model-sync-operation.d.mts.map +1 -1
  288. package/esm/sync/model-sync-operation.mjs +1 -1
  289. package/esm/sync/model-sync-operation.mjs.map +1 -1
  290. package/esm/sync/model-sync.d.mts +1 -1
  291. package/esm/sync/model-sync.d.mts.map +1 -1
  292. package/esm/sync/model-sync.mjs +1 -1
  293. package/esm/sync/model-sync.mjs.map +1 -1
  294. package/esm/sync/sync-context.d.mts +1 -1
  295. package/esm/sync/sync-context.d.mts.map +1 -1
  296. package/esm/sync/sync-context.mjs +1 -1
  297. package/esm/sync/sync-context.mjs.map +1 -1
  298. package/esm/sync/sync-fanout.mjs +1 -1
  299. package/esm/sync/sync-fanout.mjs.map +1 -1
  300. package/esm/sync/sync-manager.d.mts +1 -1
  301. package/esm/sync/sync-manager.d.mts.map +1 -1
  302. package/esm/sync/sync-manager.mjs +1 -1
  303. package/esm/sync/sync-manager.mjs.map +1 -1
  304. package/esm/sync/types.d.mts +1 -1
  305. package/esm/sync/types.d.mts.map +1 -1
  306. package/esm/transactions/after-commit.d.mts +1 -1
  307. package/esm/transactions/after-commit.d.mts.map +1 -1
  308. package/esm/transactions/after-commit.mjs +1 -1
  309. package/esm/transactions/after-commit.mjs.map +1 -1
  310. package/esm/types.d.mts +1 -1
  311. package/esm/types.d.mts.map +1 -1
  312. package/esm/utils/connect-to-database.d.mts +1 -1
  313. package/esm/utils/connect-to-database.d.mts.map +1 -1
  314. package/esm/utils/connect-to-database.mjs +1 -1
  315. package/esm/utils/connect-to-database.mjs.map +1 -1
  316. package/esm/utils/database-writer.utils.d.mts +1 -1
  317. package/esm/utils/database-writer.utils.d.mts.map +1 -1
  318. package/esm/utils/database-writer.utils.mjs +1 -1
  319. package/esm/utils/database-writer.utils.mjs.map +1 -1
  320. package/esm/utils/define-model.d.mts +1 -1
  321. package/esm/utils/define-model.d.mts.map +1 -1
  322. package/esm/utils/define-model.mjs +1 -1
  323. package/esm/utils/define-model.mjs.map +1 -1
  324. package/esm/utils/escape-regex.d.mts +1 -1
  325. package/esm/utils/escape-regex.d.mts.map +1 -1
  326. package/esm/utils/escape-regex.mjs +1 -1
  327. package/esm/utils/escape-regex.mjs.map +1 -1
  328. package/esm/utils/is-valid-date-value.mjs +1 -1
  329. package/esm/utils/is-valid-date-value.mjs.map +1 -1
  330. package/esm/utils/once-connected.d.mts +1 -1
  331. package/esm/utils/once-connected.d.mts.map +1 -1
  332. package/esm/utils/once-connected.mjs +1 -1
  333. package/esm/utils/once-connected.mjs.map +1 -1
  334. package/esm/utils/prune-empty-parents.mjs +1 -1
  335. package/esm/utils/prune-empty-parents.mjs.map +1 -1
  336. package/esm/utils/sanitize-filter.d.mts +1 -1
  337. package/esm/utils/sanitize-filter.d.mts.map +1 -1
  338. package/esm/utils/sanitize-filter.mjs +1 -1
  339. package/esm/utils/sanitize-filter.mjs.map +1 -1
  340. package/esm/validation/database-seal-plugins.mjs +1 -1
  341. package/esm/validation/database-seal-plugins.mjs.map +1 -1
  342. package/esm/validation/database-writer-validation-error.d.mts +1 -1
  343. package/esm/validation/database-writer-validation-error.d.mts.map +1 -1
  344. package/esm/validation/database-writer-validation-error.mjs +1 -1
  345. package/esm/validation/database-writer-validation-error.mjs.map +1 -1
  346. package/esm/validation/mutators/embed-mutator.mjs +1 -1
  347. package/esm/validation/mutators/embed-mutator.mjs.map +1 -1
  348. package/esm/validation/plugins/database-rules-plugin.d.mts +1 -1
  349. package/esm/validation/plugins/database-rules-plugin.d.mts.map +1 -1
  350. package/esm/validation/plugins/database-rules-plugin.mjs +1 -1
  351. package/esm/validation/plugins/database-rules-plugin.mjs.map +1 -1
  352. package/esm/validation/plugins/embed-validator-plugin.d.mts +1 -1
  353. package/esm/validation/plugins/embed-validator-plugin.d.mts.map +1 -1
  354. package/esm/validation/plugins/embed-validator-plugin.mjs +1 -1
  355. package/esm/validation/plugins/embed-validator-plugin.mjs.map +1 -1
  356. package/esm/validation/rules/database-model-rule.mjs +1 -1
  357. package/esm/validation/rules/database-model-rule.mjs.map +1 -1
  358. package/esm/validation/rules/exists-rule.mjs +1 -1
  359. package/esm/validation/rules/exists-rule.mjs.map +1 -1
  360. package/esm/validation/rules/unique-rule.mjs +1 -1
  361. package/esm/validation/rules/unique-rule.mjs.map +1 -1
  362. package/esm/validation/transformers/embed-model-transformer.mjs +1 -1
  363. package/esm/validation/transformers/embed-model-transformer.mjs.map +1 -1
  364. package/esm/validation/types.d.mts +1 -1
  365. package/esm/validation/types.d.mts.map +1 -1
  366. package/esm/validation/validators/embed-validator.d.mts +1 -1
  367. package/esm/validation/validators/embed-validator.d.mts.map +1 -1
  368. package/esm/validation/validators/embed-validator.mjs +1 -1
  369. package/esm/validation/validators/embed-validator.mjs.map +1 -1
  370. package/esm/writer/database-writer.d.mts +1 -1
  371. package/esm/writer/database-writer.d.mts.map +1 -1
  372. package/esm/writer/database-writer.mjs +1 -1
  373. package/esm/writer/database-writer.mjs.map +1 -1
  374. package/llms-full.txt +93 -93
  375. package/llms.txt +15 -15
  376. package/package.json +7 -6
  377. package/skills/README.md +17 -17
  378. package/skills/aggregate-data/SKILL.md +3 -3
  379. package/skills/alter-migration/SKILL.md +4 -4
  380. package/skills/cascade-basics/SKILL.md +21 -21
  381. package/skills/configure-delete-strategy/SKILL.md +6 -6
  382. package/skills/define-model/SKILL.md +8 -8
  383. package/skills/define-relations/SKILL.md +3 -3
  384. package/skills/manage-data-sources/SKILL.md +4 -4
  385. package/skills/manage-transactions/SKILL.md +4 -4
  386. package/skills/paginate-results/SKILL.md +4 -4
  387. package/skills/perform-atomic-ops/SKILL.md +5 -5
  388. package/skills/query-data/SKILL.md +10 -10
  389. package/skills/run-cascade-cli/SKILL.md +3 -3
  390. package/skills/search-by-vector/SKILL.md +3 -3
  391. package/skills/subscribe-to-model-events/SKILL.md +5 -5
  392. package/skills/track-changes/SKILL.md +3 -3
  393. package/skills/write-migration/SKILL.md +7 -7
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: query-data
3
- description: 'Query records via the model — `.where(field, value)` / `.where(field, op, value)`, `.find(id)` / `.first` / `.all`, `.orderBy`, `.count` / `.exists`, `.lean()` plain-object reads, plus `.whereIn` / `.whereBetween` / `.whereLike` / `.pluck` / `.firstOrFail` / scopes via `addScope`. Covers filter safety: `where()` rejects `$`-prefixed keys (`UnsafeFilterError`), `whereRaw()` string form rejects `$where`/`$function`/`$accumulator` (`UnsafeRawExpressionError`), and `whereLike`/`whereStartsWith`/`whereEndsWith`/`whereSearch` match string arguments literally (pass a `RegExp` for pattern semantics). Triggers: `.where`, `.find`, `.first`, `.firstOrFail`, `.all`, `.get`, `.orderBy`, `.exists`, `.whereIn`, `.whereBetween`, `.whereLike`, `.whereRaw`, `.lean`, `UnsupportedLeanOperationError`, `addScope`, `escapeRegex`, `likePatternToRegexSource`, `UnsafeFilterError`, `UnsafeRawExpressionError`; "filter by status", "find by id", "fetch active users", "check existence", "search box query", "is where() safe from injection"; typical import `import { Model } from "@warlock.js/cascade"`. Skip: pagination — `@warlock.js/cascade/paginate-results/SKILL.md`; aggregates — `@warlock.js/cascade/aggregate-data/SKILL.md`.'
3
+ description: 'Query records via the model — `.where(field, value)` / `.where(field, op, value)`, `.find(id)` / `.first` / `.all`, `.orderBy`, `.count` / `.exists`, `.lean()` plain-object reads, plus `.whereIn` / `.whereBetween` / `.whereLike` / `.pluck` / `.firstOrFail` / scopes via `addScope`. Covers filter safety: `where()` rejects `$`-prefixed keys (`UnsafeFilterError`), `whereRaw()` string form rejects `$where`/`$function`/`$accumulator` (`UnsafeRawExpressionError`), and `whereLike`/`whereStartsWith`/`whereEndsWith`/`whereSearch` match string arguments literally (pass a `RegExp` for pattern semantics). Triggers: `.where`, `.find`, `.first`, `.firstOrFail`, `.all`, `.get`, `.orderBy`, `.exists`, `.whereIn`, `.whereBetween`, `.whereLike`, `.whereRaw`, `.lean`, `UnsupportedLeanOperationError`, `addScope`, `escapeRegex`, `likePatternToRegexSource`, `UnsafeFilterError`, `UnsafeRawExpressionError`; "filter by status", "find by id", "fetch active users", "check existence", "search box query", "is where() safe from injection"; typical import `import { Model } from "@warlock.js/cascade"`. Skip: pagination — the `paginate-results` topic; aggregates — the `aggregate-data` topic.'
4
4
  ---
5
5
 
6
6
  # Query data
@@ -48,7 +48,7 @@ Equivalent to chained equalities. Useful when the filter comes from a dynamic so
48
48
 
49
49
  ### Filters are safe to build from request data — but only through this API
50
50
 
51
- `where(field, value)`, `where(field, "=", value)` and the object form all run the value through a `$`-prefixed-key check before it reaches the driver, so `User.first({ email: req.body.email, password: req.body.password })` throws `UnsafeFilterError` instead of compiling `{ password: { $ne: null } }` into a live MongoDB operator query (the classic NoSQL auth-bypass). This applies to every filter-accepting model static too — `first`, `findFirst`, `findAll`, `count`, `paginate`, `all`, `deleteMany`/`delete`, `deleteOne`, and the atomic/find-and-modify statics in [`perform-atomic-ops`](@warlock.js/cascade/perform-atomic-ops/SKILL.md). Explicit operator APIs (`where(field, operator, value)` for operators other than `=`, `whereIn`/`whereNull`/`whereBetween`/…, object-form `whereRaw({ ... })`) are intentionally not routed through this check — they already express an operator on purpose. Dotted paths (`"profile.name"`) and plain nested-object equality values remain valid; only literal `$`-prefixed keys are rejected. `sanitizeFilter` / `sanitizeFilterValue` are exported if you need the same check on a filter you forward to a driver-level API directly.
51
+ `where(field, value)`, `where(field, "=", value)` and the object form all run the value through a `$`-prefixed-key check before it reaches the driver, so `User.first({ email: req.body.email, password: req.body.password })` throws `UnsafeFilterError` instead of compiling `{ password: { $ne: null } }` into a live MongoDB operator query (the classic NoSQL auth-bypass). This applies to every filter-accepting model static too — `first`, `findFirst`, `findAll`, `count`, `paginate`, `all`, `deleteMany`/`delete`, `deleteOne`, and the atomic/find-and-modify statics in the `perform-atomic-ops` topic. Explicit operator APIs (`where(field, operator, value)` for operators other than `=`, `whereIn`/`whereNull`/`whereBetween`/…, object-form `whereRaw({ ... })`) are intentionally not routed through this check — they already express an operator on purpose. Dotted paths (`"profile.name"`) and plain nested-object equality values remain valid; only literal `$`-prefixed keys are rejected. `sanitizeFilter` / `sanitizeFilterValue` are exported if you need the same check on a filter you forward to a driver-level API directly.
52
52
 
53
53
  ```ts
54
54
  await User.first({ email, password }); // throws UnsafeFilterError if password is `{ $ne: null }`
@@ -102,7 +102,7 @@ const newest = await User
102
102
 
103
103
  `.orderBy(field, "asc" | "desc")` sorts. Default direction is `"asc"`. Chain multiple `.orderBy()` for tiebreakers.
104
104
 
105
- For pagination see [`@warlock.js/cascade/paginate-results/SKILL.md`](@warlock.js/cascade/paginate-results/SKILL.md).
105
+ For pagination see the `paginate-results` topic.
106
106
 
107
107
  ## Plain objects — `.lean()`
108
108
 
@@ -135,7 +135,7 @@ const activeUsers = await User.all({ status: "active" });
135
135
 
136
136
  `Model.all(filter?)` is the shortcut for "fetch all records matching a simple equality filter, or every record if no filter."
137
137
 
138
- **Caution.** `.all()` with no filter loads the entire table. Use [pagination](@warlock.js/cascade/paginate-results/SKILL.md) for tables larger than a few hundred rows.
138
+ **Caution.** `.all()` with no filter loads the entire table. Use pagination (see the `paginate-results` topic) for tables larger than a few hundred rows.
139
139
 
140
140
  ## The wider query vocabulary
141
141
 
@@ -149,11 +149,11 @@ Cascade's query builder has around 60 methods. Reach for these as the need arise
149
149
  | `.whereDate(field, value)`, `.whereDateBetween`, `.whereDateBefore`, `.whereDateAfter` | Date helpers |
150
150
  | `.whereLike(field, pattern)` / `.whereStartsWith` / `.whereEndsWith` / `.whereSearch` | Pattern matching — see below for literal-vs-regex semantics |
151
151
  | `.whereHas(relation, callback)` | Filter by conditions on a related model |
152
- | `.sum(field)` / `.avg(field)` / `.min(field)` / `.max(field)` | Aggregates — [`use-aggregates`](@warlock.js/cascade/aggregate-data/SKILL.md) |
152
+ | `.sum(field)` / `.avg(field)` / `.min(field)` / `.max(field)` | Aggregates — the `aggregate-data` topic |
153
153
  | `.distinct(field)` / `.pluck(field)` | Single-field reads (distinct values, flat list) |
154
154
  | `.chunk(size, callback)` | Stream a large table in batches |
155
- | `.cursorPaginate({ limit, cursor })` | Cursor pagination — [`paginate-results`](@warlock.js/cascade/paginate-results/SKILL.md) |
156
- | `.similarTo(column, embedding)` | Vector similarity — [`use-vector-search`](@warlock.js/cascade/search-by-vector/SKILL.md) |
155
+ | `.cursorPaginate({ limit, cursor })` | Cursor pagination — the `paginate-results` topic |
156
+ | `.similarTo(column, embedding)` | Vector similarity — the `search-by-vector` topic |
157
157
 
158
158
  Each chains off `User.where(...)` or `User.query()` and ends with the appropriate terminator. (`where`, `with`, `joinWith`, `first`, `count`, `find`, `all`, `paginate` are static shortcuts on the model; the rest live on the query builder, so reach them via `User.query()` or by chaining off a static `where`.)
159
159
 
@@ -208,6 +208,6 @@ const activeUsers = await User.query().scope("active").get();
208
208
 
209
209
  ## See also
210
210
 
211
- - [`@warlock.js/cascade/define-relations/SKILL.md`](@warlock.js/cascade/define-relations/SKILL.md) — `.with(...)`, `.whereHas(...)`, eager loading
212
- - [`@warlock.js/cascade/paginate-results/SKILL.md`](@warlock.js/cascade/paginate-results/SKILL.md) — pagination + cursor + chunk
213
- - [`@warlock.js/cascade/aggregate-data/SKILL.md`](@warlock.js/cascade/aggregate-data/SKILL.md) — `.sum`, `.avg`, `.groupBy`, `.having`
211
+ - The `define-relations` topic — `.with(...)`, `.whereHas(...)`, eager loading
212
+ - The `paginate-results` topic — pagination + cursor + chunk
213
+ - The `aggregate-data` topic — `.sum`, `.avg`, `.groupBy`, `.having`
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: run-cascade-cli
3
- description: 'Cascade''s standalone `cascade` binary + the Operations API it wraps — `cascade migrate` / `migrate:list` / `migrate:rollback` / `migrate:export-sql`, and `runMigrations` / `rollbackMigrations` / `freshMigrate` / `exportMigrationsSQL` / `listExecutedMigrations` / `createDatabase` / `dropAllTables` / `migrationRunner`. Triggers: `cascade migrate`, `migrate:list`, `migrate:rollback`, `migrate:export-sql`, `runMigrations`, `rollbackMigrations`, `freshMigrate`, `exportMigrationsSQL`, `listExecutedMigrations`, `migrationRunner`; "run migrations in deploy/CI", "reset DB for tests", "programmatic migration", "foreign key constraint cannot be implemented", `CASCADE_PRIMARY_KEY`; typical import `import { runMigrations, migrationRunner } from "@warlock.js/cascade"`. Skip: writing migration files — `@warlock.js/cascade/write-migration/SKILL.md`; competing tools `knex migrate:latest`, `prisma migrate deploy`, `typeorm migration:run`.'
3
+ description: 'Cascade''s standalone `cascade` binary + the Operations API it wraps — `cascade migrate` / `migrate:list` / `migrate:rollback` / `migrate:export-sql`, and `runMigrations` / `rollbackMigrations` / `freshMigrate` / `exportMigrationsSQL` / `listExecutedMigrations` / `createDatabase` / `dropAllTables` / `migrationRunner`. Triggers: `cascade migrate`, `migrate:list`, `migrate:rollback`, `migrate:export-sql`, `runMigrations`, `rollbackMigrations`, `freshMigrate`, `exportMigrationsSQL`, `listExecutedMigrations`, `migrationRunner`; "run migrations in deploy/CI", "reset DB for tests", "programmatic migration", "foreign key constraint cannot be implemented", `CASCADE_PRIMARY_KEY`; typical import `import { runMigrations, migrationRunner } from "@warlock.js/cascade"`. Skip: writing migration files — the `write-migration` topic; competing tools `knex migrate:latest`, `prisma migrate deploy`, `typeorm migration:run`.'
4
4
  ---
5
5
 
6
6
  # Run the cascade CLI / Operations API
@@ -121,5 +121,5 @@ Reach for these when you need migrations inside test setup (`beforeAll(async ()
121
121
 
122
122
  ## See also
123
123
 
124
- - [`@warlock.js/cascade/write-migration/SKILL.md`](@warlock.js/cascade/write-migration/SKILL.md) — writing migration files
125
- - [`@warlock.js/cascade/manage-data-sources/SKILL.md`](@warlock.js/cascade/manage-data-sources/SKILL.md) — multi-database routing
124
+ - The `write-migration` topic — writing migration files
125
+ - The `manage-data-sources` topic — multi-database routing
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: search-by-vector
3
- description: 'Vector similarity search via `.similarTo(column, embedding, alias?)` — adds a similarity `score` column and orders by vector distance so the index is used; cap results with `.limit()`. Postgres uses pgvector (IVFFlat index via `this.vectorIndex`); MongoDB needs Atlas. Schema: `this.vector(column, dimensions)` + `this.vectorIndex(column, { dimensions, similarity })`. Triggers: `.similarTo`, `this.vector`, `this.vectorIndex`, `.whereFullText`, pgvector; "semantic search", "RAG retrieval", "find similar articles", "hybrid vector + full-text"; typical import `import { Model } from "@warlock.js/cascade"`. Skip: query basics — `@warlock.js/cascade/query-data/SKILL.md`; semantic cache — `@warlock.js/cache/use-cache-similarity/SKILL.md`; competing libs `pgvector` directly, `chromadb`, `pinecone`, `weaviate`, `qdrant`.'
3
+ description: 'Vector similarity search via `.similarTo(column, embedding, alias?)` — adds a similarity `score` column and orders by vector distance so the index is used; cap results with `.limit()`. Postgres uses pgvector (IVFFlat index via `this.vectorIndex`); MongoDB needs Atlas. Schema: `this.vector(column, dimensions)` + `this.vectorIndex(column, { dimensions, similarity })`. Triggers: `.similarTo`, `this.vector`, `this.vectorIndex`, `.whereFullText`, pgvector; "semantic search", "RAG retrieval", "find similar articles", "hybrid vector + full-text"; typical import `import { Model } from "@warlock.js/cascade"`. Skip: query basics — the `query-data` topic; semantic cache — the `use-cache-similarity` topic of the `warlock-js-cache` skill; competing libs `pgvector` directly, `chromadb`, `pinecone`, `weaviate`, `qdrant`.'
4
4
  ---
5
5
 
6
6
  # Use vector search
@@ -123,5 +123,5 @@ For local dev with MongoDB, develop the vector path against Postgres + pgvector.
123
123
 
124
124
  ## See also
125
125
 
126
- - [`@warlock.js/cascade/query-data/SKILL.md`](@warlock.js/cascade/query-data/SKILL.md) — `.where`, `.whereFullText`, the broader query vocabulary
127
- - [`@warlock.js/cache/use-cache-similarity/SKILL.md`](@warlock.js/cache/use-cache-similarity/SKILL.md) — semantic cache of LLM output
126
+ - The `query-data` topic — `.where`, `.whereFullText`, the broader query vocabulary
127
+ - The `use-cache-similarity` topic of the `warlock-js-cache` skill — semantic cache of LLM output
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: subscribe-to-model-events
3
- description: 'Hook into model lifecycle events — `saving` / `saved`, `creating` / `created`, `updating` / `updated`, `validating` / `validated`, `deleting` / `deleted`, `restoring` / `restored`, `fetching` / `fetched`. Per-model `Model.on(event, fn)` or global via `Model.globalEvents()`. Triggers: `Model.on`, `Model.off`, `saving`, `saved`, `created`, `updated`, `deleting`, `deleted`, `restored`; "audit log on save", "notify on change", "denormalize into search index"; typical import `import { Model } from "@warlock.js/cascade"`. Skip: dirty tracking — `@warlock.js/cascade/track-changes/SKILL.md`; competing libs `mongoose` middleware, `typeorm` subscribers, `prisma` extensions.'
3
+ description: 'Hook into model lifecycle events — `saving` / `saved`, `creating` / `created`, `updating` / `updated`, `validating` / `validated`, `deleting` / `deleted`, `restoring` / `restored`, `fetching` / `fetched`. Per-model `Model.on(event, fn)` or global via `Model.globalEvents()`. Triggers: `Model.on`, `Model.off`, `saving`, `saved`, `created`, `updated`, `deleting`, `deleted`, `restored`; "audit log on save", "notify on change", "denormalize into search index"; typical import `import { Model } from "@warlock.js/cascade"`. Skip: dirty tracking — the `track-changes` topic; competing libs `mongoose` middleware, `typeorm` subscribers, `prisma` extensions.'
4
4
  ---
5
5
 
6
6
  # Use model events
@@ -63,7 +63,7 @@ User.on("saving", async (user) => {
63
63
  });
64
64
  ```
65
65
 
66
- Pair with `isDirty()` from [`@warlock.js/cascade/track-changes/SKILL.md`](@warlock.js/cascade/track-changes/SKILL.md) so the listener only runs its expensive check when the relevant field changed.
66
+ Pair with `isDirty()` from the `track-changes` topic so the listener only runs its expensive check when the relevant field changed.
67
67
 
68
68
  ## Global listeners — across all models
69
69
 
@@ -129,7 +129,7 @@ User.on("deleted", async (user) => {
129
129
  });
130
130
  ```
131
131
 
132
- See [`@warlock.js/cache/use-cache-tags/SKILL.md`](@warlock.js/cache/use-cache-tags/SKILL.md).
132
+ See the `use-cache-tags` topic of the `warlock-js-cache` skill.
133
133
 
134
134
  ### Side effects that must only fire after commit
135
135
 
@@ -144,5 +144,5 @@ For external side effects (queues, emails) that must only fire if a surrounding
144
144
 
145
145
  ## See also
146
146
 
147
- - [`@warlock.js/cascade/track-changes/SKILL.md`](@warlock.js/cascade/track-changes/SKILL.md) — `isDirty` / `getDirtyColumnsWithValues` for "only run if this field changed"
148
- - [`@warlock.js/cascade/configure-delete-strategy/SKILL.md`](@warlock.js/cascade/configure-delete-strategy/SKILL.md) — `deleting` / `deleted` / `restored` around delete strategies
147
+ - The `track-changes` topic — `isDirty` / `getDirtyColumnsWithValues` for "only run if this field changed"
148
+ - The `configure-delete-strategy` topic — `deleting` / `deleted` / `restored` around delete strategies
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: track-changes
3
- description: 'Inspect a model''s pending changes — `hasChanges()` (any field dirty?), `isDirty(column)` (one column), `getDirtyColumns()` (changed field names), `getDirtyColumnsWithValues()` (old + new per field), `getRemovedColumns()` (unset fields). Triggers: `hasChanges`, `isDirty`, `getDirtyColumns`, `getDirtyColumnsWithValues`, `getRemovedColumns`; "only run if email changed", "diff for an audit log", "what fields are dirty", "compare old vs new value"; typical import `import { Model } from "@warlock.js/cascade"`. Skip: hooking into save — `@warlock.js/cascade/subscribe-to-model-events/SKILL.md`; update idioms — `@warlock.js/cascade/define-model/SKILL.md`; competing libs `mongoose` `isModified` / `modifiedPaths`, `typeorm` change detection.'
3
+ description: 'Inspect a model''s pending changes — `hasChanges()` (any field dirty?), `isDirty(column)` (one column), `getDirtyColumns()` (changed field names), `getDirtyColumnsWithValues()` (old + new per field), `getRemovedColumns()` (unset fields). Triggers: `hasChanges`, `isDirty`, `getDirtyColumns`, `getDirtyColumnsWithValues`, `getRemovedColumns`; "only run if email changed", "diff for an audit log", "what fields are dirty", "compare old vs new value"; typical import `import { Model } from "@warlock.js/cascade"`. Skip: hooking into save — the `subscribe-to-model-events` topic; update idioms — the `define-model` topic; competing libs `mongoose` `isModified` / `modifiedPaths`, `typeorm` change detection.'
4
4
  ---
5
5
 
6
6
  # Track changes
@@ -123,5 +123,5 @@ Before 4.9.1 a `Date` merged over a column that **already held a `Date`** was si
123
123
 
124
124
  ## See also
125
125
 
126
- - [`@warlock.js/cascade/subscribe-to-model-events/SKILL.md`](@warlock.js/cascade/subscribe-to-model-events/SKILL.md) — combining with `saved` / `saving` for cross-cutting behavior
127
- - [`@warlock.js/cascade/define-model/SKILL.md`](@warlock.js/cascade/define-model/SKILL.md) — the `.set` / `.merge` / `.save` idioms that stage changes
126
+ - The `subscribe-to-model-events` topic — combining with `saved` / `saving` for cross-cutting behavior
127
+ - The `define-model` topic — the `.set` / `.merge` / `.save` idioms that stage changes
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: write-migration
3
- description: 'Write a Cascade migration — the declarative `Migration.create(Model, { columns })` / `Migration.alter(Model, { ... })` factory is the primary form (column helpers `string` / `text` / `uuid` / `integer` imported from cascade, chained with `.notNullable()` / `.unique()` / `.references()`); the `extends Migration` class form is the imperative escape hatch. Run with the `cascade migrate` CLI; pin a source via `public dataSource`. Triggers: `Migration.create`, `Migration.alter`, `string()`, `text()`, `uuid()`, `.references`, `extends Migration`, `cascade migrate`; "write a migration", "create the users table", "add a column", "rollback the last batch"; typical import `import { Migration, text, uuid } from "@warlock.js/cascade"`. Skip: running migrations programmatically — `@warlock.js/cascade/run-cascade-cli/SKILL.md`; per-source migrations — `@warlock.js/cascade/manage-data-sources/SKILL.md`; competing tools `knex migrate`, `prisma migrate`, `typeorm migration`.'
3
+ description: 'Write a Cascade migration — the declarative `Migration.create(Model, { columns })` / `Migration.alter(Model, { ... })` factory is the primary form (column helpers `string` / `text` / `uuid` / `integer` imported from cascade, chained with `.notNullable()` / `.unique()` / `.references()`); the `extends Migration` class form is the imperative escape hatch. Run with the `cascade migrate` CLI; pin a source via `public dataSource`. Triggers: `Migration.create`, `Migration.alter`, `string()`, `text()`, `uuid()`, `.references`, `extends Migration`, `cascade migrate`; "write a migration", "create the users table", "add a column", "rollback the last batch"; typical import `import { Migration, text, uuid } from "@warlock.js/cascade"`. Skip: running migrations programmatically — the `run-cascade-cli` topic; per-source migrations — the `manage-data-sources` topic; competing tools `knex migrate`, `prisma migrate`, `typeorm migration`.'
4
4
  ---
5
5
 
6
6
  # Write a migration
@@ -47,7 +47,7 @@ export default Migration.create(User, {
47
47
  - It only fires for the `"soft"` strategy — `"permanent"` and `"trash"` add nothing. No driver defaults to `"soft"`, so this never fires unless soft delete is opted into.
48
48
  - Opt out for one table with `{ softDeletes: false }`; force it on with `{ softDeletes: true }`. A model with `deletedAtColumn = false` is never wired. An already-declared `deletedAt` in the map is not duplicated.
49
49
 
50
- See [`@warlock.js/cascade/configure-delete-strategy/SKILL.md`](@warlock.js/cascade/configure-delete-strategy/SKILL.md) for the strategies themselves.
50
+ See the `configure-delete-strategy` topic for the strategies themselves.
51
51
 
52
52
  ## Running migrations
53
53
 
@@ -58,7 +58,7 @@ npx cascade migrate:list # which migrations have been executed
58
58
  npx cascade migrate:export-sql # write .up.sql / .down.sql instead of executing
59
59
  ```
60
60
 
61
- `cascade migrate` discovers migration files via the `-p`/`--path` glob (default `./migrations/**`), runs them in order, and records each in the `_migrations` table / collection. See [`@warlock.js/cascade/run-cascade-cli/SKILL.md`](@warlock.js/cascade/run-cascade-cli/SKILL.md) for every flag and the programmatic Operations API.
61
+ `cascade migrate` discovers migration files via the `-p`/`--path` glob (default `./migrations/**`), runs them in order, and records each in the `_migrations` table / collection. See the `run-cascade-cli` topic for every flag and the programmatic Operations API.
62
62
 
63
63
  ## File naming convention
64
64
 
@@ -189,7 +189,7 @@ export default Migration.create(AnalyticsEvent, {
189
189
  });
190
190
  ```
191
191
 
192
- For a class-form migration not bound to a model, set `public readonly dataSource = "analytics"` directly. See [`@warlock.js/cascade/manage-data-sources/SKILL.md`](@warlock.js/cascade/manage-data-sources/SKILL.md) for the registry.
192
+ For a class-form migration not bound to a model, set `public readonly dataSource = "analytics"` directly. See the `manage-data-sources` topic for the registry.
193
193
 
194
194
  ## Things NOT to do
195
195
 
@@ -201,6 +201,6 @@ For a class-form migration not bound to a model, set `public readonly dataSource
201
201
 
202
202
  ## See also
203
203
 
204
- - [`@warlock.js/cascade/run-cascade-cli/SKILL.md`](@warlock.js/cascade/run-cascade-cli/SKILL.md) — CLI flags + Operations API for programmatic runs
205
- - [`@warlock.js/cascade/manage-data-sources/SKILL.md`](@warlock.js/cascade/manage-data-sources/SKILL.md) — multi-DB migrations
206
- - [`@warlock.js/cascade/configure-delete-strategy/SKILL.md`](@warlock.js/cascade/configure-delete-strategy/SKILL.md) — soft / trash / permanent deletes and the `deletedAt` column
204
+ - The `run-cascade-cli` topic — CLI flags + Operations API for programmatic runs
205
+ - The `manage-data-sources` topic — multi-DB migrations
206
+ - The `configure-delete-strategy` topic — soft / trash / permanent deletes and the `deletedAt` column