uql-orm 0.20.2 → 0.22.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 (775) hide show
  1. package/README.md +47 -110
  2. package/dist/browser/http/bus.d.ts +0 -1
  3. package/dist/browser/http/bus.js +0 -1
  4. package/dist/browser/http/http.d.ts +0 -1
  5. package/dist/browser/http/http.js +0 -1
  6. package/dist/browser/http/index.d.ts +0 -1
  7. package/dist/browser/http/index.js +0 -1
  8. package/dist/browser/index.d.ts +0 -1
  9. package/dist/browser/index.js +0 -1
  10. package/dist/browser/options.d.ts +0 -1
  11. package/dist/browser/options.js +0 -1
  12. package/dist/browser/querier/httpQuerier.d.ts +0 -1
  13. package/dist/browser/querier/httpQuerier.js +0 -1
  14. package/dist/browser/querier/index.d.ts +0 -1
  15. package/dist/browser/querier/index.js +0 -1
  16. package/dist/browser/type/clientQuerier.d.ts +0 -1
  17. package/dist/browser/type/clientQuerier.js +0 -1
  18. package/dist/browser/type/clientQuerierPool.d.ts +0 -1
  19. package/dist/browser/type/clientQuerierPool.js +0 -1
  20. package/dist/browser/type/index.d.ts +0 -1
  21. package/dist/browser/type/index.js +0 -1
  22. package/dist/browser/type/request.d.ts +0 -1
  23. package/dist/browser/type/request.js +0 -1
  24. package/dist/browser/uql-browser.min.js +2 -2
  25. package/dist/browser/uql-browser.min.js.map +1 -1
  26. package/dist/bunSql/bunSql.util.d.ts +0 -1
  27. package/dist/bunSql/bunSql.util.js +0 -1
  28. package/dist/bunSql/bunSqlCockroachDialect.d.ts +2 -3
  29. package/dist/bunSql/bunSqlCockroachDialect.js +4 -11
  30. package/dist/bunSql/bunSqlPostgresDialect.d.ts +2 -3
  31. package/dist/bunSql/bunSqlPostgresDialect.js +4 -11
  32. package/dist/bunSql/bunSqlQuerier.d.ts +0 -1
  33. package/dist/bunSql/bunSqlQuerier.js +0 -1
  34. package/dist/bunSql/bunSqlQuerierPool.d.ts +0 -1
  35. package/dist/bunSql/bunSqlQuerierPool.js +0 -1
  36. package/dist/bunSql/bunSqliteDialect.d.ts +0 -1
  37. package/dist/bunSql/bunSqliteDialect.js +0 -1
  38. package/dist/bunSql/index.d.ts +0 -1
  39. package/dist/bunSql/index.js +0 -1
  40. package/dist/cockroachdb/cockroachDialect.d.ts +20 -5
  41. package/dist/cockroachdb/cockroachDialect.js +33 -19
  42. package/dist/cockroachdb/crdbQuerier.d.ts +0 -1
  43. package/dist/cockroachdb/crdbQuerier.js +0 -1
  44. package/dist/cockroachdb/crdbQuerierPool.d.ts +0 -1
  45. package/dist/cockroachdb/crdbQuerierPool.js +0 -1
  46. package/dist/cockroachdb/index.d.ts +0 -1
  47. package/dist/cockroachdb/index.js +0 -1
  48. package/dist/context/context.browser.d.ts +0 -1
  49. package/dist/context/context.browser.js +0 -1
  50. package/dist/context/context.d.ts +0 -1
  51. package/dist/context/context.js +0 -1
  52. package/dist/context/securityError.d.ts +0 -1
  53. package/dist/context/securityError.js +0 -1
  54. package/dist/d1/d1Querier.d.ts +4 -4
  55. package/dist/d1/d1Querier.js +0 -4
  56. package/dist/d1/d1QuerierPool.d.ts +0 -1
  57. package/dist/d1/d1QuerierPool.js +0 -1
  58. package/dist/d1/d1SqliteDialect.d.ts +7 -1
  59. package/dist/d1/d1SqliteDialect.js +9 -1
  60. package/dist/d1/index.d.ts +0 -1
  61. package/dist/d1/index.js +0 -1
  62. package/dist/dialect/abstractDialect.d.ts +21 -5
  63. package/dist/dialect/abstractDialect.js +26 -5
  64. package/dist/dialect/abstractSqlDialect.d.ts +57 -17
  65. package/dist/dialect/abstractSqlDialect.js +182 -159
  66. package/dist/dialect/index.d.ts +1 -1
  67. package/dist/dialect/index.js +1 -1
  68. package/dist/dialect/indexSqlDialect.d.ts +57 -0
  69. package/dist/dialect/indexSqlDialect.js +101 -0
  70. package/dist/dialect/jsonArrayElemMatchUtils.d.ts +0 -1
  71. package/dist/dialect/jsonArrayElemMatchUtils.js +0 -1
  72. package/dist/dialect/jsonSql.d.ts +0 -1
  73. package/dist/dialect/jsonSql.js +1 -2
  74. package/dist/dialect/mysqlLikeSqlDialect.d.ts +16 -2
  75. package/dist/dialect/mysqlLikeSqlDialect.js +34 -5
  76. package/dist/dialect/pgLikeSqlDialect.d.ts +34 -16
  77. package/dist/dialect/pgLikeSqlDialect.js +94 -71
  78. package/dist/dialect/queryContext.d.ts +0 -1
  79. package/dist/dialect/queryContext.js +0 -1
  80. package/dist/dialect/vectorCast.d.ts +32 -0
  81. package/dist/dialect/vectorCast.js +41 -0
  82. package/dist/dialect/vectorSqlDialect.d.ts +11 -5
  83. package/dist/dialect/vectorSqlDialect.js +19 -9
  84. package/dist/entity/decorator/entity.d.ts +0 -1
  85. package/dist/entity/decorator/entity.js +0 -1
  86. package/dist/entity/decorator/field.d.ts +0 -1
  87. package/dist/entity/decorator/field.js +0 -1
  88. package/dist/entity/decorator/filter.d.ts +0 -1
  89. package/dist/entity/decorator/filter.js +0 -1
  90. package/dist/entity/decorator/hook.d.ts +0 -1
  91. package/dist/entity/decorator/hook.js +0 -1
  92. package/dist/entity/decorator/id.d.ts +0 -1
  93. package/dist/entity/decorator/id.js +0 -1
  94. package/dist/entity/decorator/index-decorator.d.ts +2 -10
  95. package/dist/entity/decorator/index-decorator.js +0 -1
  96. package/dist/entity/decorator/index.d.ts +0 -1
  97. package/dist/entity/decorator/index.js +0 -1
  98. package/dist/entity/decorator/relation.d.ts +0 -1
  99. package/dist/entity/decorator/relation.js +0 -1
  100. package/dist/entity/index.d.ts +0 -1
  101. package/dist/entity/index.js +0 -1
  102. package/dist/entity/metadata/definition.d.ts +5 -6
  103. package/dist/entity/metadata/definition.js +10 -6
  104. package/dist/express/index.d.ts +0 -1
  105. package/dist/express/index.js +0 -1
  106. package/dist/express/querierMiddleware.d.ts +0 -1
  107. package/dist/express/querierMiddleware.js +0 -1
  108. package/dist/http/contract.d.ts +0 -1
  109. package/dist/http/contract.js +0 -1
  110. package/dist/http/fetchHandler.d.ts +0 -1
  111. package/dist/http/fetchHandler.js +0 -1
  112. package/dist/http/handler.d.ts +0 -1
  113. package/dist/http/handler.js +0 -1
  114. package/dist/http/index.d.ts +0 -1
  115. package/dist/http/index.js +0 -1
  116. package/dist/http/query.d.ts +0 -1
  117. package/dist/http/query.js +0 -1
  118. package/dist/index.d.ts +0 -1
  119. package/dist/index.js +0 -1
  120. package/dist/libsql/index.d.ts +0 -1
  121. package/dist/libsql/index.js +0 -1
  122. package/dist/libsql/libsqlDialect.d.ts +12 -3
  123. package/dist/libsql/libsqlDialect.js +14 -3
  124. package/dist/libsql/libsqlQuerier.d.ts +9 -23
  125. package/dist/libsql/libsqlQuerier.js +9 -78
  126. package/dist/libsql/libsqlQuerierPool.d.ts +10 -9
  127. package/dist/libsql/libsqlQuerierPool.js +17 -16
  128. package/dist/maria/index.d.ts +0 -1
  129. package/dist/maria/index.js +0 -1
  130. package/dist/maria/mariaDialect.d.ts +26 -5
  131. package/dist/maria/mariaDialect.js +54 -16
  132. package/dist/maria/mariadbQuerier.d.ts +0 -1
  133. package/dist/maria/mariadbQuerier.js +0 -1
  134. package/dist/maria/mariadbQuerierPool.d.ts +0 -1
  135. package/dist/maria/mariadbQuerierPool.js +0 -1
  136. package/dist/migrate/acquireQuerierForMigrations.d.ts +0 -1
  137. package/dist/migrate/acquireQuerierForMigrations.js +0 -1
  138. package/dist/migrate/assertCliConfig.d.ts +0 -1
  139. package/dist/migrate/assertCliConfig.js +0 -1
  140. package/dist/migrate/bin.d.ts +0 -1
  141. package/dist/migrate/bin.js +0 -1
  142. package/dist/migrate/builder/columnBuilder.d.ts +0 -1
  143. package/dist/migrate/builder/columnBuilder.js +0 -1
  144. package/dist/migrate/builder/expressions.d.ts +0 -1
  145. package/dist/migrate/builder/expressions.js +0 -1
  146. package/dist/migrate/builder/index.d.ts +0 -1
  147. package/dist/migrate/builder/index.js +0 -1
  148. package/dist/migrate/builder/migrationBuilder.d.ts +9 -30
  149. package/dist/migrate/builder/migrationBuilder.js +58 -77
  150. package/dist/migrate/builder/splitSqlStatements.d.ts +0 -3
  151. package/dist/migrate/builder/splitSqlStatements.js +0 -3
  152. package/dist/migrate/builder/tableBuilder.d.ts +12 -3
  153. package/dist/migrate/builder/tableBuilder.js +71 -120
  154. package/dist/migrate/builder/types.d.ts +30 -42
  155. package/dist/migrate/builder/types.js +0 -1
  156. package/dist/migrate/cli-config.d.ts +0 -1
  157. package/dist/migrate/cli-config.js +9 -5
  158. package/dist/migrate/cli.d.ts +3 -3
  159. package/dist/migrate/cli.js +21 -49
  160. package/dist/migrate/codegen/entityCodeGenerator.d.ts +0 -5
  161. package/dist/migrate/codegen/entityCodeGenerator.js +5 -64
  162. package/dist/migrate/codegen/fieldOptionsSource.d.ts +10 -0
  163. package/dist/migrate/codegen/fieldOptionsSource.js +55 -0
  164. package/dist/migrate/codegen/index.d.ts +0 -3
  165. package/dist/migrate/codegen/index.js +0 -5
  166. package/dist/migrate/codegen/migrationFile.d.ts +0 -1
  167. package/dist/migrate/codegen/migrationFile.js +0 -1
  168. package/dist/migrate/codegen/smartRelationDetector.d.ts +0 -1
  169. package/dist/migrate/codegen/smartRelationDetector.js +0 -1
  170. package/dist/migrate/drift/driftDetector.d.ts +0 -1
  171. package/dist/migrate/drift/driftDetector.js +0 -1
  172. package/dist/migrate/drift/index.d.ts +0 -1
  173. package/dist/migrate/drift/index.js +0 -1
  174. package/dist/migrate/generator/indexNodeToSchema.d.ts +9 -0
  175. package/dist/migrate/generator/indexNodeToSchema.js +14 -0
  176. package/dist/migrate/generator/mongoCommand.d.ts +57 -0
  177. package/dist/migrate/generator/mongoCommand.js +26 -0
  178. package/dist/migrate/generator/mongoSchemaGenerator.d.ts +9 -21
  179. package/dist/migrate/generator/mongoSchemaGenerator.js +40 -83
  180. package/dist/migrate/index.d.ts +0 -2
  181. package/dist/migrate/index.js +0 -2
  182. package/dist/migrate/introspection/abstractSqlSchemaIntrospector.d.ts +25 -11
  183. package/dist/migrate/introspection/abstractSqlSchemaIntrospector.js +46 -33
  184. package/dist/migrate/introspection/baseSqlIntrospector.d.ts +0 -2
  185. package/dist/migrate/introspection/baseSqlIntrospector.js +3 -13
  186. package/dist/migrate/introspection/index.d.ts +0 -1
  187. package/dist/migrate/introspection/index.js +0 -1
  188. package/dist/migrate/introspection/mongoIntrospector.d.ts +0 -1
  189. package/dist/migrate/introspection/mongoIntrospector.js +2 -3
  190. package/dist/migrate/introspection/mysqlIntrospector.d.ts +5 -9
  191. package/dist/migrate/introspection/mysqlIntrospector.js +4 -11
  192. package/dist/migrate/introspection/postgresIntrospector.d.ts +5 -9
  193. package/dist/migrate/introspection/postgresIntrospector.js +4 -11
  194. package/dist/migrate/introspection/sqliteIntrospector.d.ts +6 -6
  195. package/dist/migrate/introspection/sqliteIntrospector.js +26 -19
  196. package/dist/migrate/migrator.d.ts +23 -4
  197. package/dist/migrate/migrator.js +57 -70
  198. package/dist/migrate/schemaGenerator.d.ts +26 -38
  199. package/dist/migrate/schemaGenerator.js +69 -175
  200. package/dist/migrate/schemaGeneratorAsync.d.ts +2 -3
  201. package/dist/migrate/schemaGeneratorAsync.js +3 -4
  202. package/dist/migrate/storage/databaseStorage.d.ts +0 -1
  203. package/dist/migrate/storage/databaseStorage.js +4 -5
  204. package/dist/migrate/storage/index.d.ts +0 -1
  205. package/dist/migrate/storage/index.js +0 -1
  206. package/dist/migrate/storage/jsonStorage.d.ts +0 -1
  207. package/dist/migrate/storage/jsonStorage.js +0 -1
  208. package/dist/mongo/index.d.ts +0 -1
  209. package/dist/mongo/index.js +0 -1
  210. package/dist/mongo/mongoDialect.d.ts +93 -5
  211. package/dist/mongo/mongoDialect.js +315 -83
  212. package/dist/mongo/mongodbNativeDialect.d.ts +0 -1
  213. package/dist/mongo/mongodbNativeDialect.js +0 -1
  214. package/dist/mongo/mongodbQuerier.d.ts +5 -1
  215. package/dist/mongo/mongodbQuerier.js +61 -19
  216. package/dist/mongo/mongodbQuerierPool.d.ts +0 -1
  217. package/dist/mongo/mongodbQuerierPool.js +0 -1
  218. package/dist/mysql/index.d.ts +0 -1
  219. package/dist/mysql/index.js +0 -1
  220. package/dist/mysql/mysql2Dialect.d.ts +0 -1
  221. package/dist/mysql/mysql2Dialect.js +0 -1
  222. package/dist/mysql/mysql2Querier.d.ts +0 -1
  223. package/dist/mysql/mysql2Querier.js +0 -1
  224. package/dist/mysql/mysql2QuerierPool.d.ts +0 -1
  225. package/dist/mysql/mysql2QuerierPool.js +0 -1
  226. package/dist/mysql/mysqlDialect.d.ts +8 -1
  227. package/dist/mysql/mysqlDialect.js +13 -1
  228. package/dist/namingStrategy/defaultNamingStrategy.d.ts +0 -1
  229. package/dist/namingStrategy/defaultNamingStrategy.js +0 -1
  230. package/dist/namingStrategy/index.d.ts +0 -1
  231. package/dist/namingStrategy/index.js +0 -1
  232. package/dist/namingStrategy/snakeCaseNamingStrategy.d.ts +0 -1
  233. package/dist/namingStrategy/snakeCaseNamingStrategy.js +0 -1
  234. package/dist/neon/index.d.ts +0 -1
  235. package/dist/neon/index.js +0 -1
  236. package/dist/neon/neonDialect.d.ts +0 -1
  237. package/dist/neon/neonDialect.js +0 -1
  238. package/dist/neon/neonQuerier.d.ts +0 -1
  239. package/dist/neon/neonQuerier.js +0 -1
  240. package/dist/neon/neonQuerierPool.d.ts +0 -1
  241. package/dist/neon/neonQuerierPool.js +0 -1
  242. package/dist/nestjs/index.d.ts +0 -1
  243. package/dist/nestjs/index.js +0 -1
  244. package/dist/nestjs/uqlContextInterceptor.d.ts +0 -1
  245. package/dist/nestjs/uqlContextInterceptor.js +9 -2
  246. package/dist/nestjs/uqlModule.d.ts +0 -1
  247. package/dist/nestjs/uqlModule.js +12 -2
  248. package/dist/options.d.ts +0 -1
  249. package/dist/options.js +0 -1
  250. package/dist/postgres/abstractPgQuerier.d.ts +0 -1
  251. package/dist/postgres/abstractPgQuerier.js +0 -1
  252. package/dist/postgres/abstractPgQuerierPool.d.ts +0 -1
  253. package/dist/postgres/abstractPgQuerierPool.js +0 -1
  254. package/dist/postgres/index.d.ts +0 -1
  255. package/dist/postgres/index.js +0 -1
  256. package/dist/postgres/pgDialect.d.ts +0 -1
  257. package/dist/postgres/pgDialect.js +0 -1
  258. package/dist/postgres/pgQuerier.d.ts +0 -1
  259. package/dist/postgres/pgQuerier.js +0 -1
  260. package/dist/postgres/pgQuerierPool.d.ts +0 -1
  261. package/dist/postgres/pgQuerierPool.js +0 -1
  262. package/dist/postgres/postgresDialect.d.ts +0 -1
  263. package/dist/postgres/postgresDialect.js +0 -1
  264. package/dist/postgres/postgresWireDriverCapabilities.d.ts +0 -1
  265. package/dist/postgres/postgresWireDriverCapabilities.js +0 -1
  266. package/dist/querier/abstractPoolQuerier.d.ts +0 -1
  267. package/dist/querier/abstractPoolQuerier.js +0 -1
  268. package/dist/querier/abstractQuerier.d.ts +0 -1
  269. package/dist/querier/abstractQuerier.js +9 -2
  270. package/dist/querier/abstractQuerierPool.d.ts +0 -1
  271. package/dist/querier/abstractQuerierPool.js +0 -1
  272. package/dist/querier/abstractSqlQuerier.d.ts +0 -1
  273. package/dist/querier/abstractSqlQuerier.js +9 -2
  274. package/dist/querier/abstractSqlQuerierPool.d.ts +0 -1
  275. package/dist/querier/abstractSqlQuerierPool.js +0 -1
  276. package/dist/querier/decorator/index.d.ts +0 -1
  277. package/dist/querier/decorator/index.js +0 -1
  278. package/dist/querier/decorator/injectQuerier.d.ts +0 -1
  279. package/dist/querier/decorator/injectQuerier.js +0 -1
  280. package/dist/querier/decorator/log.d.ts +0 -1
  281. package/dist/querier/decorator/log.js +0 -1
  282. package/dist/querier/decorator/serialized.d.ts +0 -1
  283. package/dist/querier/decorator/serialized.js +0 -1
  284. package/dist/querier/decorator/transactional.d.ts +0 -1
  285. package/dist/querier/decorator/transactional.js +0 -1
  286. package/dist/querier/index.d.ts +0 -1
  287. package/dist/querier/index.js +0 -1
  288. package/dist/schema/canonicalType.d.ts +14 -13
  289. package/dist/schema/canonicalType.js +41 -44
  290. package/dist/schema/index.d.ts +1 -2
  291. package/dist/schema/index.js +0 -1
  292. package/dist/schema/schemaAST.d.ts +0 -1
  293. package/dist/schema/schemaAST.js +0 -1
  294. package/dist/schema/schemaASTBuilder.d.ts +8 -2
  295. package/dist/schema/schemaASTBuilder.js +56 -48
  296. package/dist/schema/schemaASTDiffer.d.ts +0 -1
  297. package/dist/schema/schemaASTDiffer.js +0 -1
  298. package/dist/schema/types.d.ts +10 -38
  299. package/dist/schema/types.js +0 -1
  300. package/dist/sqlite/abstractSqliteQuerier.d.ts +39 -1
  301. package/dist/sqlite/abstractSqliteQuerier.js +44 -1
  302. package/dist/sqlite/bunSqliteAdapter.bun.d.ts +26 -0
  303. package/dist/sqlite/bunSqliteAdapter.bun.js +25 -0
  304. package/dist/sqlite/hranaQuerier.d.ts +54 -0
  305. package/dist/sqlite/hranaQuerier.js +90 -0
  306. package/dist/sqlite/hranaQuerierPool.d.ts +21 -0
  307. package/dist/sqlite/hranaQuerierPool.js +25 -0
  308. package/dist/sqlite/index.d.ts +2 -2
  309. package/dist/sqlite/index.js +2 -2
  310. package/dist/sqlite/sqliteDialect.d.ts +18 -5
  311. package/dist/sqlite/sqliteDialect.js +24 -25
  312. package/dist/sqlite/sqliteQuerier.d.ts +16 -10
  313. package/dist/sqlite/sqliteQuerier.js +4 -28
  314. package/dist/sqlite/sqliteQuerierPool.d.ts +14 -5
  315. package/dist/sqlite/sqliteQuerierPool.js +16 -6
  316. package/dist/turso/index.d.ts +3 -0
  317. package/dist/turso/index.js +3 -0
  318. package/dist/turso/local.d.ts +3 -0
  319. package/dist/turso/local.js +3 -0
  320. package/dist/turso/tursoDialect.d.ts +15 -0
  321. package/dist/turso/tursoDialect.js +18 -0
  322. package/dist/turso/tursoLocalQuerier.d.ts +25 -0
  323. package/dist/turso/tursoLocalQuerier.js +20 -0
  324. package/dist/turso/tursoLocalQuerierPool.d.ts +32 -0
  325. package/dist/turso/tursoLocalQuerierPool.js +39 -0
  326. package/dist/turso/tursoQuerier.d.ts +10 -0
  327. package/dist/turso/tursoQuerier.js +10 -0
  328. package/dist/turso/tursoQuerierPool.d.ts +39 -0
  329. package/dist/turso/tursoQuerierPool.js +38 -0
  330. package/dist/type/config.d.ts +0 -7
  331. package/dist/type/config.js +0 -1
  332. package/dist/type/dialect.d.ts +12 -5
  333. package/dist/type/dialect.js +7 -2
  334. package/dist/type/entity.d.ts +66 -6
  335. package/dist/type/entity.js +0 -1
  336. package/dist/type/index.d.ts +0 -1
  337. package/dist/type/index.js +0 -1
  338. package/dist/type/logger.d.ts +0 -1
  339. package/dist/type/logger.js +0 -1
  340. package/dist/type/migration.d.ts +32 -24
  341. package/dist/type/migration.js +0 -1
  342. package/dist/type/migratorDialect.d.ts +0 -1
  343. package/dist/type/migratorDialect.js +0 -1
  344. package/dist/type/namingStrategy.d.ts +0 -1
  345. package/dist/type/namingStrategy.js +0 -1
  346. package/dist/type/querier.d.ts +0 -1
  347. package/dist/type/querier.js +0 -1
  348. package/dist/type/querierPool.d.ts +0 -1
  349. package/dist/type/querierPool.js +0 -1
  350. package/dist/type/query.d.ts +0 -1
  351. package/dist/type/query.js +0 -1
  352. package/dist/type/queryAggregate.d.ts +0 -1
  353. package/dist/type/queryAggregate.js +0 -1
  354. package/dist/type/queryRaw.d.ts +0 -1
  355. package/dist/type/queryRaw.js +0 -1
  356. package/dist/type/queryWhere.d.ts +0 -1
  357. package/dist/type/queryWhere.js +0 -1
  358. package/dist/type/universalQuerier.d.ts +0 -1
  359. package/dist/type/universalQuerier.js +0 -1
  360. package/dist/type/utility.d.ts +0 -1
  361. package/dist/type/utility.js +0 -1
  362. package/dist/type/vector.d.ts +5 -3
  363. package/dist/type/vector.js +0 -1
  364. package/dist/util/dialect.util.d.ts +8 -2
  365. package/dist/util/dialect.util.js +16 -1
  366. package/dist/util/field.util.d.ts +0 -1
  367. package/dist/util/field.util.js +0 -1
  368. package/dist/util/filters.util.d.ts +0 -1
  369. package/dist/util/filters.util.js +0 -1
  370. package/dist/util/hook.util.d.ts +0 -1
  371. package/dist/util/hook.util.js +0 -1
  372. package/dist/util/index.d.ts +1 -1
  373. package/dist/util/index.js +1 -1
  374. package/dist/util/indexColumn.util.d.ts +6 -0
  375. package/dist/util/indexColumn.util.js +26 -0
  376. package/dist/util/logger.d.ts +0 -1
  377. package/dist/util/logger.js +0 -1
  378. package/dist/util/object.util.d.ts +0 -1
  379. package/dist/util/object.util.js +0 -1
  380. package/dist/util/raw.d.ts +0 -1
  381. package/dist/util/raw.js +0 -1
  382. package/dist/util/relationQuery.util.d.ts +0 -1
  383. package/dist/util/relationQuery.util.js +0 -1
  384. package/dist/util/sql.util.d.ts +0 -1
  385. package/dist/util/sql.util.js +0 -1
  386. package/dist/util/sqlLiteral.d.ts +19 -0
  387. package/dist/util/sqlLiteral.js +108 -0
  388. package/dist/util/string.util.d.ts +0 -1
  389. package/dist/util/string.util.js +0 -1
  390. package/package.json +57 -27
  391. package/CHANGELOG.md +0 -1359
  392. package/dist/browser/http/bus.d.ts.map +0 -1
  393. package/dist/browser/http/bus.js.map +0 -1
  394. package/dist/browser/http/http.d.ts.map +0 -1
  395. package/dist/browser/http/http.js.map +0 -1
  396. package/dist/browser/http/index.d.ts.map +0 -1
  397. package/dist/browser/http/index.js.map +0 -1
  398. package/dist/browser/index.d.ts.map +0 -1
  399. package/dist/browser/index.js.map +0 -1
  400. package/dist/browser/options.d.ts.map +0 -1
  401. package/dist/browser/options.js.map +0 -1
  402. package/dist/browser/querier/httpQuerier.d.ts.map +0 -1
  403. package/dist/browser/querier/httpQuerier.js.map +0 -1
  404. package/dist/browser/querier/index.d.ts.map +0 -1
  405. package/dist/browser/querier/index.js.map +0 -1
  406. package/dist/browser/type/clientQuerier.d.ts.map +0 -1
  407. package/dist/browser/type/clientQuerier.js.map +0 -1
  408. package/dist/browser/type/clientQuerierPool.d.ts.map +0 -1
  409. package/dist/browser/type/clientQuerierPool.js.map +0 -1
  410. package/dist/browser/type/index.d.ts.map +0 -1
  411. package/dist/browser/type/index.js.map +0 -1
  412. package/dist/browser/type/request.d.ts.map +0 -1
  413. package/dist/browser/type/request.js.map +0 -1
  414. package/dist/bunSql/bunSql.util.d.ts.map +0 -1
  415. package/dist/bunSql/bunSql.util.js.map +0 -1
  416. package/dist/bunSql/bunSqlCockroachDialect.d.ts.map +0 -1
  417. package/dist/bunSql/bunSqlCockroachDialect.js.map +0 -1
  418. package/dist/bunSql/bunSqlPostgresDialect.d.ts.map +0 -1
  419. package/dist/bunSql/bunSqlPostgresDialect.js.map +0 -1
  420. package/dist/bunSql/bunSqlQuerier.d.ts.map +0 -1
  421. package/dist/bunSql/bunSqlQuerier.js.map +0 -1
  422. package/dist/bunSql/bunSqlQuerierPool.d.ts.map +0 -1
  423. package/dist/bunSql/bunSqlQuerierPool.js.map +0 -1
  424. package/dist/bunSql/bunSqliteDialect.d.ts.map +0 -1
  425. package/dist/bunSql/bunSqliteDialect.js.map +0 -1
  426. package/dist/bunSql/index.d.ts.map +0 -1
  427. package/dist/bunSql/index.js.map +0 -1
  428. package/dist/cockroachdb/cockroachDialect.d.ts.map +0 -1
  429. package/dist/cockroachdb/cockroachDialect.js.map +0 -1
  430. package/dist/cockroachdb/crdbQuerier.d.ts.map +0 -1
  431. package/dist/cockroachdb/crdbQuerier.js.map +0 -1
  432. package/dist/cockroachdb/crdbQuerierPool.d.ts.map +0 -1
  433. package/dist/cockroachdb/crdbQuerierPool.js.map +0 -1
  434. package/dist/cockroachdb/index.d.ts.map +0 -1
  435. package/dist/cockroachdb/index.js.map +0 -1
  436. package/dist/context/context.browser.d.ts.map +0 -1
  437. package/dist/context/context.browser.js.map +0 -1
  438. package/dist/context/context.d.ts.map +0 -1
  439. package/dist/context/context.js.map +0 -1
  440. package/dist/context/securityError.d.ts.map +0 -1
  441. package/dist/context/securityError.js.map +0 -1
  442. package/dist/d1/d1Querier.d.ts.map +0 -1
  443. package/dist/d1/d1Querier.js.map +0 -1
  444. package/dist/d1/d1QuerierPool.d.ts.map +0 -1
  445. package/dist/d1/d1QuerierPool.js.map +0 -1
  446. package/dist/d1/d1SqliteDialect.d.ts.map +0 -1
  447. package/dist/d1/d1SqliteDialect.js.map +0 -1
  448. package/dist/d1/index.d.ts.map +0 -1
  449. package/dist/d1/index.js.map +0 -1
  450. package/dist/dialect/abstractDialect.d.ts.map +0 -1
  451. package/dist/dialect/abstractDialect.js.map +0 -1
  452. package/dist/dialect/abstractSqlDialect.d.ts.map +0 -1
  453. package/dist/dialect/abstractSqlDialect.js.map +0 -1
  454. package/dist/dialect/index.d.ts.map +0 -1
  455. package/dist/dialect/index.js.map +0 -1
  456. package/dist/dialect/jsonArrayElemMatchUtils.d.ts.map +0 -1
  457. package/dist/dialect/jsonArrayElemMatchUtils.js.map +0 -1
  458. package/dist/dialect/jsonSql.d.ts.map +0 -1
  459. package/dist/dialect/jsonSql.js.map +0 -1
  460. package/dist/dialect/mysqlLikeSqlDialect.d.ts.map +0 -1
  461. package/dist/dialect/mysqlLikeSqlDialect.js.map +0 -1
  462. package/dist/dialect/pgLikeSqlDialect.d.ts.map +0 -1
  463. package/dist/dialect/pgLikeSqlDialect.js.map +0 -1
  464. package/dist/dialect/queryContext.d.ts.map +0 -1
  465. package/dist/dialect/queryContext.js.map +0 -1
  466. package/dist/dialect/vectorSqlDialect.d.ts.map +0 -1
  467. package/dist/dialect/vectorSqlDialect.js.map +0 -1
  468. package/dist/entity/decorator/entity.d.ts.map +0 -1
  469. package/dist/entity/decorator/entity.js.map +0 -1
  470. package/dist/entity/decorator/field.d.ts.map +0 -1
  471. package/dist/entity/decorator/field.js.map +0 -1
  472. package/dist/entity/decorator/filter.d.ts.map +0 -1
  473. package/dist/entity/decorator/filter.js.map +0 -1
  474. package/dist/entity/decorator/hook.d.ts.map +0 -1
  475. package/dist/entity/decorator/hook.js.map +0 -1
  476. package/dist/entity/decorator/id.d.ts.map +0 -1
  477. package/dist/entity/decorator/id.js.map +0 -1
  478. package/dist/entity/decorator/index-decorator.d.ts.map +0 -1
  479. package/dist/entity/decorator/index-decorator.js.map +0 -1
  480. package/dist/entity/decorator/index.d.ts.map +0 -1
  481. package/dist/entity/decorator/index.js.map +0 -1
  482. package/dist/entity/decorator/relation.d.ts.map +0 -1
  483. package/dist/entity/decorator/relation.js.map +0 -1
  484. package/dist/entity/index.d.ts.map +0 -1
  485. package/dist/entity/index.js.map +0 -1
  486. package/dist/entity/metadata/definition.d.ts.map +0 -1
  487. package/dist/entity/metadata/definition.js.map +0 -1
  488. package/dist/entity/test-helpers.d.ts +0 -4
  489. package/dist/entity/test-helpers.d.ts.map +0 -1
  490. package/dist/entity/test-helpers.js +0 -16
  491. package/dist/entity/test-helpers.js.map +0 -1
  492. package/dist/express/index.d.ts.map +0 -1
  493. package/dist/express/index.js.map +0 -1
  494. package/dist/express/querierMiddleware.d.ts.map +0 -1
  495. package/dist/express/querierMiddleware.js.map +0 -1
  496. package/dist/http/contract.d.ts.map +0 -1
  497. package/dist/http/contract.js.map +0 -1
  498. package/dist/http/fetchHandler.d.ts.map +0 -1
  499. package/dist/http/fetchHandler.js.map +0 -1
  500. package/dist/http/handler.d.ts.map +0 -1
  501. package/dist/http/handler.js.map +0 -1
  502. package/dist/http/index.d.ts.map +0 -1
  503. package/dist/http/index.js.map +0 -1
  504. package/dist/http/query.d.ts.map +0 -1
  505. package/dist/http/query.js.map +0 -1
  506. package/dist/index.d.ts.map +0 -1
  507. package/dist/index.js.map +0 -1
  508. package/dist/libsql/index.d.ts.map +0 -1
  509. package/dist/libsql/index.js.map +0 -1
  510. package/dist/libsql/libsqlDialect.d.ts.map +0 -1
  511. package/dist/libsql/libsqlDialect.js.map +0 -1
  512. package/dist/libsql/libsqlQuerier.d.ts.map +0 -1
  513. package/dist/libsql/libsqlQuerier.js.map +0 -1
  514. package/dist/libsql/libsqlQuerierPool.d.ts.map +0 -1
  515. package/dist/libsql/libsqlQuerierPool.js.map +0 -1
  516. package/dist/maria/index.d.ts.map +0 -1
  517. package/dist/maria/index.js.map +0 -1
  518. package/dist/maria/mariaDialect.d.ts.map +0 -1
  519. package/dist/maria/mariaDialect.js.map +0 -1
  520. package/dist/maria/mariadbQuerier.d.ts.map +0 -1
  521. package/dist/maria/mariadbQuerier.js.map +0 -1
  522. package/dist/maria/mariadbQuerierPool.d.ts.map +0 -1
  523. package/dist/maria/mariadbQuerierPool.js.map +0 -1
  524. package/dist/migrate/acquireQuerierForMigrations.d.ts.map +0 -1
  525. package/dist/migrate/acquireQuerierForMigrations.js.map +0 -1
  526. package/dist/migrate/assertCliConfig.d.ts.map +0 -1
  527. package/dist/migrate/assertCliConfig.js.map +0 -1
  528. package/dist/migrate/bin.d.ts.map +0 -1
  529. package/dist/migrate/bin.js.map +0 -1
  530. package/dist/migrate/builder/columnBuilder.d.ts.map +0 -1
  531. package/dist/migrate/builder/columnBuilder.js.map +0 -1
  532. package/dist/migrate/builder/expressions.d.ts.map +0 -1
  533. package/dist/migrate/builder/expressions.js.map +0 -1
  534. package/dist/migrate/builder/index.d.ts.map +0 -1
  535. package/dist/migrate/builder/index.js.map +0 -1
  536. package/dist/migrate/builder/migrationBuilder.d.ts.map +0 -1
  537. package/dist/migrate/builder/migrationBuilder.js.map +0 -1
  538. package/dist/migrate/builder/splitSqlStatements.d.ts.map +0 -1
  539. package/dist/migrate/builder/splitSqlStatements.js.map +0 -1
  540. package/dist/migrate/builder/tableBuilder.d.ts.map +0 -1
  541. package/dist/migrate/builder/tableBuilder.js.map +0 -1
  542. package/dist/migrate/builder/types.d.ts.map +0 -1
  543. package/dist/migrate/builder/types.js.map +0 -1
  544. package/dist/migrate/cli-config.d.ts.map +0 -1
  545. package/dist/migrate/cli-config.js.map +0 -1
  546. package/dist/migrate/cli.d.ts.map +0 -1
  547. package/dist/migrate/cli.js.map +0 -1
  548. package/dist/migrate/codegen/entityCodeGenerator.d.ts.map +0 -1
  549. package/dist/migrate/codegen/entityCodeGenerator.js.map +0 -1
  550. package/dist/migrate/codegen/entityMerger.d.ts +0 -115
  551. package/dist/migrate/codegen/entityMerger.d.ts.map +0 -1
  552. package/dist/migrate/codegen/entityMerger.js +0 -294
  553. package/dist/migrate/codegen/entityMerger.js.map +0 -1
  554. package/dist/migrate/codegen/index.d.ts.map +0 -1
  555. package/dist/migrate/codegen/index.js.map +0 -1
  556. package/dist/migrate/codegen/migrationCodeGenerator.d.ts +0 -62
  557. package/dist/migrate/codegen/migrationCodeGenerator.d.ts.map +0 -1
  558. package/dist/migrate/codegen/migrationCodeGenerator.js +0 -356
  559. package/dist/migrate/codegen/migrationCodeGenerator.js.map +0 -1
  560. package/dist/migrate/codegen/migrationFile.d.ts.map +0 -1
  561. package/dist/migrate/codegen/migrationFile.js.map +0 -1
  562. package/dist/migrate/codegen/smartRelationDetector.d.ts.map +0 -1
  563. package/dist/migrate/codegen/smartRelationDetector.js.map +0 -1
  564. package/dist/migrate/drift/driftDetector.d.ts.map +0 -1
  565. package/dist/migrate/drift/driftDetector.js.map +0 -1
  566. package/dist/migrate/drift/index.d.ts.map +0 -1
  567. package/dist/migrate/drift/index.js.map +0 -1
  568. package/dist/migrate/generator/index.d.ts +0 -3
  569. package/dist/migrate/generator/index.d.ts.map +0 -1
  570. package/dist/migrate/generator/index.js +0 -3
  571. package/dist/migrate/generator/index.js.map +0 -1
  572. package/dist/migrate/generator/mongoSchemaGenerator.d.ts.map +0 -1
  573. package/dist/migrate/generator/mongoSchemaGenerator.js.map +0 -1
  574. package/dist/migrate/index.d.ts.map +0 -1
  575. package/dist/migrate/index.js.map +0 -1
  576. package/dist/migrate/introspection/abstractSqlSchemaIntrospector.d.ts.map +0 -1
  577. package/dist/migrate/introspection/abstractSqlSchemaIntrospector.js.map +0 -1
  578. package/dist/migrate/introspection/baseSqlIntrospector.d.ts.map +0 -1
  579. package/dist/migrate/introspection/baseSqlIntrospector.js.map +0 -1
  580. package/dist/migrate/introspection/index.d.ts.map +0 -1
  581. package/dist/migrate/introspection/index.js.map +0 -1
  582. package/dist/migrate/introspection/mongoIntrospector.d.ts.map +0 -1
  583. package/dist/migrate/introspection/mongoIntrospector.js.map +0 -1
  584. package/dist/migrate/introspection/mysqlIntrospector.d.ts.map +0 -1
  585. package/dist/migrate/introspection/mysqlIntrospector.js.map +0 -1
  586. package/dist/migrate/introspection/postgresIntrospector.d.ts.map +0 -1
  587. package/dist/migrate/introspection/postgresIntrospector.js.map +0 -1
  588. package/dist/migrate/introspection/sqliteIntrospector.d.ts.map +0 -1
  589. package/dist/migrate/introspection/sqliteIntrospector.js.map +0 -1
  590. package/dist/migrate/migrator.d.ts.map +0 -1
  591. package/dist/migrate/migrator.js.map +0 -1
  592. package/dist/migrate/schemaGenerator.d.ts.map +0 -1
  593. package/dist/migrate/schemaGenerator.js.map +0 -1
  594. package/dist/migrate/schemaGeneratorAsync.d.ts.map +0 -1
  595. package/dist/migrate/schemaGeneratorAsync.js.map +0 -1
  596. package/dist/migrate/storage/databaseStorage.d.ts.map +0 -1
  597. package/dist/migrate/storage/databaseStorage.js.map +0 -1
  598. package/dist/migrate/storage/index.d.ts.map +0 -1
  599. package/dist/migrate/storage/index.js.map +0 -1
  600. package/dist/migrate/storage/jsonStorage.d.ts.map +0 -1
  601. package/dist/migrate/storage/jsonStorage.js.map +0 -1
  602. package/dist/migrate/sync/index.d.ts +0 -7
  603. package/dist/migrate/sync/index.d.ts.map +0 -1
  604. package/dist/migrate/sync/index.js +0 -7
  605. package/dist/migrate/sync/index.js.map +0 -1
  606. package/dist/migrate/sync/schemaSync.d.ts +0 -132
  607. package/dist/migrate/sync/schemaSync.d.ts.map +0 -1
  608. package/dist/migrate/sync/schemaSync.js +0 -260
  609. package/dist/migrate/sync/schemaSync.js.map +0 -1
  610. package/dist/mongo/index.d.ts.map +0 -1
  611. package/dist/mongo/index.js.map +0 -1
  612. package/dist/mongo/mongoDialect.d.ts.map +0 -1
  613. package/dist/mongo/mongoDialect.js.map +0 -1
  614. package/dist/mongo/mongodbNativeDialect.d.ts.map +0 -1
  615. package/dist/mongo/mongodbNativeDialect.js.map +0 -1
  616. package/dist/mongo/mongodbQuerier.d.ts.map +0 -1
  617. package/dist/mongo/mongodbQuerier.js.map +0 -1
  618. package/dist/mongo/mongodbQuerierPool.d.ts.map +0 -1
  619. package/dist/mongo/mongodbQuerierPool.js.map +0 -1
  620. package/dist/mysql/index.d.ts.map +0 -1
  621. package/dist/mysql/index.js.map +0 -1
  622. package/dist/mysql/mysql2Dialect.d.ts.map +0 -1
  623. package/dist/mysql/mysql2Dialect.js.map +0 -1
  624. package/dist/mysql/mysql2Querier.d.ts.map +0 -1
  625. package/dist/mysql/mysql2Querier.js.map +0 -1
  626. package/dist/mysql/mysql2QuerierPool.d.ts.map +0 -1
  627. package/dist/mysql/mysql2QuerierPool.js.map +0 -1
  628. package/dist/mysql/mysqlDialect.d.ts.map +0 -1
  629. package/dist/mysql/mysqlDialect.js.map +0 -1
  630. package/dist/namingStrategy/defaultNamingStrategy.d.ts.map +0 -1
  631. package/dist/namingStrategy/defaultNamingStrategy.js.map +0 -1
  632. package/dist/namingStrategy/index.d.ts.map +0 -1
  633. package/dist/namingStrategy/index.js.map +0 -1
  634. package/dist/namingStrategy/snakeCaseNamingStrategy.d.ts.map +0 -1
  635. package/dist/namingStrategy/snakeCaseNamingStrategy.js.map +0 -1
  636. package/dist/neon/index.d.ts.map +0 -1
  637. package/dist/neon/index.js.map +0 -1
  638. package/dist/neon/neonDialect.d.ts.map +0 -1
  639. package/dist/neon/neonDialect.js.map +0 -1
  640. package/dist/neon/neonQuerier.d.ts.map +0 -1
  641. package/dist/neon/neonQuerier.js.map +0 -1
  642. package/dist/neon/neonQuerierPool.d.ts.map +0 -1
  643. package/dist/neon/neonQuerierPool.js.map +0 -1
  644. package/dist/nestjs/index.d.ts.map +0 -1
  645. package/dist/nestjs/index.js.map +0 -1
  646. package/dist/nestjs/uqlContextInterceptor.d.ts.map +0 -1
  647. package/dist/nestjs/uqlContextInterceptor.js.map +0 -1
  648. package/dist/nestjs/uqlModule.d.ts.map +0 -1
  649. package/dist/nestjs/uqlModule.js.map +0 -1
  650. package/dist/options.d.ts.map +0 -1
  651. package/dist/options.js.map +0 -1
  652. package/dist/postgres/abstractPgQuerier.d.ts.map +0 -1
  653. package/dist/postgres/abstractPgQuerier.js.map +0 -1
  654. package/dist/postgres/abstractPgQuerierPool.d.ts.map +0 -1
  655. package/dist/postgres/abstractPgQuerierPool.js.map +0 -1
  656. package/dist/postgres/index.d.ts.map +0 -1
  657. package/dist/postgres/index.js.map +0 -1
  658. package/dist/postgres/pgDialect.d.ts.map +0 -1
  659. package/dist/postgres/pgDialect.js.map +0 -1
  660. package/dist/postgres/pgQuerier.d.ts.map +0 -1
  661. package/dist/postgres/pgQuerier.js.map +0 -1
  662. package/dist/postgres/pgQuerierPool.d.ts.map +0 -1
  663. package/dist/postgres/pgQuerierPool.js.map +0 -1
  664. package/dist/postgres/postgresDialect.d.ts.map +0 -1
  665. package/dist/postgres/postgresDialect.js.map +0 -1
  666. package/dist/postgres/postgresWireDriverCapabilities.d.ts.map +0 -1
  667. package/dist/postgres/postgresWireDriverCapabilities.js.map +0 -1
  668. package/dist/querier/abstractPoolQuerier.d.ts.map +0 -1
  669. package/dist/querier/abstractPoolQuerier.js.map +0 -1
  670. package/dist/querier/abstractQuerier.d.ts.map +0 -1
  671. package/dist/querier/abstractQuerier.js.map +0 -1
  672. package/dist/querier/abstractQuerierPool.d.ts.map +0 -1
  673. package/dist/querier/abstractQuerierPool.js.map +0 -1
  674. package/dist/querier/abstractSqlQuerier.d.ts.map +0 -1
  675. package/dist/querier/abstractSqlQuerier.js.map +0 -1
  676. package/dist/querier/abstractSqlQuerierPool.d.ts.map +0 -1
  677. package/dist/querier/abstractSqlQuerierPool.js.map +0 -1
  678. package/dist/querier/decorator/index.d.ts.map +0 -1
  679. package/dist/querier/decorator/index.js.map +0 -1
  680. package/dist/querier/decorator/injectQuerier.d.ts.map +0 -1
  681. package/dist/querier/decorator/injectQuerier.js.map +0 -1
  682. package/dist/querier/decorator/log.d.ts.map +0 -1
  683. package/dist/querier/decorator/log.js.map +0 -1
  684. package/dist/querier/decorator/serialized.d.ts.map +0 -1
  685. package/dist/querier/decorator/serialized.js.map +0 -1
  686. package/dist/querier/decorator/transactional.d.ts.map +0 -1
  687. package/dist/querier/decorator/transactional.js.map +0 -1
  688. package/dist/querier/index.d.ts.map +0 -1
  689. package/dist/querier/index.js.map +0 -1
  690. package/dist/schema/canonicalType.d.ts.map +0 -1
  691. package/dist/schema/canonicalType.js.map +0 -1
  692. package/dist/schema/index.d.ts.map +0 -1
  693. package/dist/schema/index.js.map +0 -1
  694. package/dist/schema/schemaAST.d.ts.map +0 -1
  695. package/dist/schema/schemaAST.js.map +0 -1
  696. package/dist/schema/schemaASTBuilder.d.ts.map +0 -1
  697. package/dist/schema/schemaASTBuilder.js.map +0 -1
  698. package/dist/schema/schemaASTDiffer.d.ts.map +0 -1
  699. package/dist/schema/schemaASTDiffer.js.map +0 -1
  700. package/dist/schema/types.d.ts.map +0 -1
  701. package/dist/schema/types.js.map +0 -1
  702. package/dist/sqlite/abstractSqliteQuerier.d.ts.map +0 -1
  703. package/dist/sqlite/abstractSqliteQuerier.js.map +0 -1
  704. package/dist/sqlite/betterSqlite3Dialect.d.ts +0 -10
  705. package/dist/sqlite/betterSqlite3Dialect.d.ts.map +0 -1
  706. package/dist/sqlite/betterSqlite3Dialect.js +0 -10
  707. package/dist/sqlite/betterSqlite3Dialect.js.map +0 -1
  708. package/dist/sqlite/index.d.ts.map +0 -1
  709. package/dist/sqlite/index.js.map +0 -1
  710. package/dist/sqlite/sqliteDialect.d.ts.map +0 -1
  711. package/dist/sqlite/sqliteDialect.js.map +0 -1
  712. package/dist/sqlite/sqliteQuerier.d.ts.map +0 -1
  713. package/dist/sqlite/sqliteQuerier.js.map +0 -1
  714. package/dist/sqlite/sqliteQuerierPool.d.ts.map +0 -1
  715. package/dist/sqlite/sqliteQuerierPool.js.map +0 -1
  716. package/dist/type/config.d.ts.map +0 -1
  717. package/dist/type/config.js.map +0 -1
  718. package/dist/type/dialect.d.ts.map +0 -1
  719. package/dist/type/dialect.js.map +0 -1
  720. package/dist/type/entity.d.ts.map +0 -1
  721. package/dist/type/entity.js.map +0 -1
  722. package/dist/type/index.d.ts.map +0 -1
  723. package/dist/type/index.js.map +0 -1
  724. package/dist/type/logger.d.ts.map +0 -1
  725. package/dist/type/logger.js.map +0 -1
  726. package/dist/type/migration.d.ts.map +0 -1
  727. package/dist/type/migration.js.map +0 -1
  728. package/dist/type/migratorDialect.d.ts.map +0 -1
  729. package/dist/type/migratorDialect.js.map +0 -1
  730. package/dist/type/namingStrategy.d.ts.map +0 -1
  731. package/dist/type/namingStrategy.js.map +0 -1
  732. package/dist/type/querier.d.ts.map +0 -1
  733. package/dist/type/querier.js.map +0 -1
  734. package/dist/type/querierPool.d.ts.map +0 -1
  735. package/dist/type/querierPool.js.map +0 -1
  736. package/dist/type/query.d.ts.map +0 -1
  737. package/dist/type/query.js.map +0 -1
  738. package/dist/type/queryAggregate.d.ts.map +0 -1
  739. package/dist/type/queryAggregate.js.map +0 -1
  740. package/dist/type/queryRaw.d.ts.map +0 -1
  741. package/dist/type/queryRaw.js.map +0 -1
  742. package/dist/type/queryWhere.d.ts.map +0 -1
  743. package/dist/type/queryWhere.js.map +0 -1
  744. package/dist/type/universalQuerier.d.ts.map +0 -1
  745. package/dist/type/universalQuerier.js.map +0 -1
  746. package/dist/type/utility.d.ts.map +0 -1
  747. package/dist/type/utility.js.map +0 -1
  748. package/dist/type/vector.d.ts.map +0 -1
  749. package/dist/type/vector.js.map +0 -1
  750. package/dist/util/ansiSqlLiteral.d.ts +0 -23
  751. package/dist/util/ansiSqlLiteral.d.ts.map +0 -1
  752. package/dist/util/ansiSqlLiteral.js +0 -105
  753. package/dist/util/ansiSqlLiteral.js.map +0 -1
  754. package/dist/util/dialect.util.d.ts.map +0 -1
  755. package/dist/util/dialect.util.js.map +0 -1
  756. package/dist/util/field.util.d.ts.map +0 -1
  757. package/dist/util/field.util.js.map +0 -1
  758. package/dist/util/filters.util.d.ts.map +0 -1
  759. package/dist/util/filters.util.js.map +0 -1
  760. package/dist/util/hook.util.d.ts.map +0 -1
  761. package/dist/util/hook.util.js.map +0 -1
  762. package/dist/util/index.d.ts.map +0 -1
  763. package/dist/util/index.js.map +0 -1
  764. package/dist/util/logger.d.ts.map +0 -1
  765. package/dist/util/logger.js.map +0 -1
  766. package/dist/util/object.util.d.ts.map +0 -1
  767. package/dist/util/object.util.js.map +0 -1
  768. package/dist/util/raw.d.ts.map +0 -1
  769. package/dist/util/raw.js.map +0 -1
  770. package/dist/util/relationQuery.util.d.ts.map +0 -1
  771. package/dist/util/relationQuery.util.js.map +0 -1
  772. package/dist/util/sql.util.d.ts.map +0 -1
  773. package/dist/util/sql.util.js.map +0 -1
  774. package/dist/util/string.util.d.ts.map +0 -1
  775. package/dist/util/string.util.js.map +0 -1
@@ -1,12 +1,13 @@
1
1
  import { getMeta } from '../entity/index.js';
2
2
  import { QueryRaw, RAW_ALIAS, RAW_VALUE, } from '../type/index.js';
3
- import { escapeAnsiSqlLiteral, escapeSingleQuotes } from '../util/ansiSqlLiteral.js';
4
- import { applyFilters, asSelectMap, buildQueryWhereAsMap, buildSortMap, escapeSqlId, fillOnFields, filterFieldKeys, flatObject, getFieldKeys, getInsertFieldKeys, getKeys, getRelationRequestSummary, getSoftDeleteValue, hasKeys, hasMultipleKeys, isJsonType, isJsonUpdateOp, isOperatorObject, isOperatorOnlyObject, isPopulatingRelations, isVectorSearch, normalizeScalarFieldSelection, parseGroupMap, parseRelationAtKey, raw, someValue, withoutSoftDeleteFilter, } from '../util/index.js';
3
+ import { asSelectMap, buildQueryWhereAsMap, buildSortMap, escapeSqlId, fillOnFields, filterFieldKeys, flatObject, getInsertFieldKeys, getKeys, getRelationRequestSummary, getSoftDeleteValue, hasKeys, hasMultipleKeys, isJsonType, isJsonUpdateOp, isOperatorObject, isOperatorOnlyObject, isPopulatingRelations, isVectorSearch, normalizeScalarFieldSelection, parseGroupMap, parseRelationAtKey, parseRelationSize, raw, someValue, withoutSoftDeleteFilter, } from '../util/index.js';
4
+ import { escapeAnsiSqlLiteral, escapeSingleQuotes } from '../util/sqlLiteral.js';
5
+ import { IndexSqlDialect } from './indexSqlDialect.js';
5
6
  import { buildElemMatchConditions } from './jsonArrayElemMatchUtils.js';
6
7
  import { JSON_ELEM_ALIAS_PREFIX, jsonElemExists } from './jsonSql.js';
7
8
  import { SqlQueryContext } from './queryContext.js';
8
- import { VectorSqlDialect } from './vectorSqlDialect.js';
9
- export class AbstractSqlDialect extends VectorSqlDialect {
9
+ import { isVectorFieldType } from './vectorCast.js';
10
+ export class AbstractSqlDialect extends IndexSqlDialect {
10
11
  isolationLevelStrategy = 'inline';
11
12
  alterColumnStrategy = 'single-statement';
12
13
  alterColumnSyntax = 'ALTER COLUMN';
@@ -81,7 +82,7 @@ export class AbstractSqlDialect extends VectorSqlDialect {
81
82
  returningId(entity) {
82
83
  const meta = getMeta(entity);
83
84
  const idKey = (meta.id ?? 'id');
84
- const idName = this.resolveColumnName(idKey, meta.fields[idKey]);
85
+ const idName = this.columnOf(meta, idKey);
85
86
  return `RETURNING ${this.escapeId(idName)} ${this.escapeId('id')}`;
86
87
  }
87
88
  search(ctx, entity, q = {}, opts = {}) {
@@ -135,7 +136,6 @@ export class AbstractSqlDialect extends VectorSqlDialect {
135
136
  const field = meta.fields[key];
136
137
  if (!field)
137
138
  return;
138
- const columnName = this.resolveColumnName(key, field);
139
139
  if (field.virtual) {
140
140
  this.getRawValue(ctx, {
141
141
  value: raw(field.virtual[RAW_VALUE], key),
@@ -143,17 +143,35 @@ export class AbstractSqlDialect extends VectorSqlDialect {
143
143
  escapedPrefix,
144
144
  autoPrefixAlias: opts.autoPrefixAlias,
145
145
  });
146
+ return;
146
147
  }
147
- else {
148
- ctx.append(escapedPrefix + this.escapeId(columnName));
149
- }
150
- if (!field.virtual && (columnName !== key || opts.autoPrefixAlias)) {
151
- const aliasStr = prefix + key;
152
- ctx.append(' ' + this.escapeId(aliasStr, true));
148
+ const columnName = this.resolveColumnName(key, field);
149
+ const column = escapedPrefix + this.escapeId(columnName);
150
+ const expr = this.selectFieldExpr(column, field);
151
+ ctx.append(expr);
152
+ // An expression needs the alias too, or the row comes back keyed by the expression text.
153
+ if (expr !== column || columnName !== key || opts.autoPrefixAlias) {
154
+ ctx.append(' ' + this.escapeId(prefix + key, true));
153
155
  }
154
156
  }
155
157
  });
156
158
  }
159
+ /**
160
+ * The expression a scalar field is read through, the plain column by default. MariaDB reads a
161
+ * vector column back with `VEC_ToText`, since selecting it raw yields its binary form.
162
+ */
163
+ selectFieldExpr(escapedColumn, _field) {
164
+ return escapedColumn;
165
+ }
166
+ /**
167
+ * The `$text` full-text predicate, which every engine spells differently: `MATCH ... AGAINST`
168
+ * (MySQL family), `to_tsvector @@ websearch_to_tsquery` (Postgres-wire), an FTS5 `MATCH` against
169
+ * the table itself (SQLite). No portable form exists, so a dialect without one says so here rather
170
+ * than inheriting another engine's syntax.
171
+ */
172
+ appendTextSearch(_ctx, _entity, _meta, _search) {
173
+ throw new TypeError(`${this.dialectName} does not support $text full-text search`);
174
+ }
157
175
  select(ctx, entity, select, exclude, populate, opts = {}, distinct, sort) {
158
176
  const meta = getMeta(entity);
159
177
  const tableName = this.resolveTableName(entity, meta);
@@ -239,9 +257,8 @@ export class AbstractSqlDialect extends VectorSqlDialect {
239
257
  }
240
258
  where(ctx, entity, where = {}, opts = {}) {
241
259
  const meta = getMeta(entity);
242
- // Apply this entity's filters once, at the scope entry point; recursion uses `renderWhere`.
243
- const whereMap = applyFilters(meta, buildQueryWhereAsMap(meta, where), opts);
244
- this.renderWhere(ctx, entity, whereMap, opts);
260
+ // Filters are applied once, here at the scope entry point; recursion uses `renderWhere`.
261
+ this.renderWhere(ctx, entity, this.scopedWhereMap(meta, where, opts), opts);
245
262
  }
246
263
  /** Renders a `$where` tree without applying entity filters (used for same-scope `$and`/`$or` recursion). */
247
264
  renderWhere(ctx, entity, where = {}, opts = {}) {
@@ -297,16 +314,7 @@ export class AbstractSqlDialect extends VectorSqlDialect {
297
314
  return;
298
315
  }
299
316
  if (key === '$text') {
300
- const search = val;
301
- const searchFields = search.$fields ?? getFieldKeys(meta.fields);
302
- const fields = searchFields.map((fKey) => {
303
- const field = meta.fields[fKey];
304
- const columnName = this.resolveColumnName(fKey, field);
305
- return this.escapeId(columnName);
306
- });
307
- ctx.append(`MATCH(${fields.join(', ')}) AGAINST(`);
308
- ctx.addValue(search.$value);
309
- ctx.append(')');
317
+ this.appendTextSearch(ctx, entity, meta, val);
310
318
  return;
311
319
  }
312
320
  if (key === '$and' || key === '$or' || key === '$not' || key === '$nor') {
@@ -322,13 +330,11 @@ export class AbstractSqlDialect extends VectorSqlDialect {
322
330
  if (key.includes('.')) {
323
331
  throw new TypeError(`path ${key} does not exist in ${meta.name}`);
324
332
  }
325
- // Detect relation filtering
326
333
  const rel = meta.relations[key];
327
334
  if (rel) {
328
- // Check if this is a $size query on a relation (count filtering)
329
- const valObj = val;
330
- if (valObj && typeof valObj === 'object' && '$size' in valObj && Object.keys(valObj).length === 1) {
331
- this.compareRelationSize(ctx, entity, key, valObj['$size'], rel, opts);
335
+ const sizeVal = parseRelationSize(val);
336
+ if (sizeVal !== undefined) {
337
+ this.compareRelationSize(ctx, entity, key, sizeVal, rel, opts);
332
338
  return;
333
339
  }
334
340
  this.compareRelation(ctx, entity, key, val, rel, opts);
@@ -382,6 +388,8 @@ export class AbstractSqlDialect extends VectorSqlDialect {
382
388
  }
383
389
  }
384
390
  /** Simple comparison operators: `getComparisonKey → op → addValue`. */
391
+ /** Memoizes {@link escapedColumnName}; see there for why it is per dialect instance. */
392
+ escapedColumns = new WeakMap();
385
393
  static NEGATE_OP_MAP = new Map([
386
394
  ['$not', '$and'],
387
395
  ['$nor', '$or'],
@@ -797,9 +805,7 @@ export class AbstractSqlDialect extends VectorSqlDialect {
797
805
  if (!sqlFn) {
798
806
  throw TypeError(`unsupported aggregate operator: ${entry.op}`);
799
807
  }
800
- const sqlArg = entry.fieldRef === '*'
801
- ? '*'
802
- : this.escapeId(this.resolveColumnName(entry.fieldRef, meta.fields[entry.fieldRef]));
808
+ const sqlArg = entry.fieldRef === '*' ? '*' : this.escapeId(this.columnOf(meta, entry.fieldRef));
803
809
  const expr = `${sqlFn}(${entry.distinct ? 'DISTINCT ' : ''}${sqlArg})`;
804
810
  aggregateExpressions[entry.alias] = expr;
805
811
  selectParts.push(`${expr} ${this.escapeId(entry.alias)}`);
@@ -860,7 +866,8 @@ export class AbstractSqlDialect extends VectorSqlDialect {
860
866
  }
861
867
  return direction;
862
868
  }
863
- static havingOpMap = new Map([
869
+ /** Scalar comparison operators shared by `HAVING` conditions and `$size` comparisons. */
870
+ static comparisonOpMap = new Map([
864
871
  ['$eq', '='],
865
872
  ['$ne', '<>'],
866
873
  ['$gt', '>'],
@@ -900,7 +907,7 @@ export class AbstractSqlDialect extends VectorSqlDialect {
900
907
  ctx.append(this.neExpr(expr, this.addValue(ctx.values, val)));
901
908
  }
902
909
  else {
903
- const sqlOp = AbstractSqlDialect.havingOpMap.get(op);
910
+ const sqlOp = AbstractSqlDialect.comparisonOpMap.get(op);
904
911
  if (!sqlOp)
905
912
  throw TypeError(`unsupported HAVING operator: ${op}`);
906
913
  ctx.append(`${expr} ${sqlOp} `);
@@ -913,32 +920,58 @@ export class AbstractSqlDialect extends VectorSqlDialect {
913
920
  this.search(ctx, entity, q, opts);
914
921
  }
915
922
  insert(ctx, entity, payload, opts) {
923
+ this.appendInsertValues(ctx, entity, payload, opts);
924
+ // Every engine whose ids come back from the statement itself wants the same clause, so it is
925
+ // appended once here instead of in an identical `insert` override per dialect.
926
+ if (this.insertIdSource === 'returning') {
927
+ ctx.append(` ${this.returningId(entity)}`);
928
+ }
929
+ }
930
+ /**
931
+ * `INSERT INTO ... VALUES (...)` and nothing more. The upsert builders extend this rather than
932
+ * {@link insert}: their own clause has to come before the `RETURNING`, not after it.
933
+ */
934
+ appendInsertValues(ctx, entity, payload, opts) {
916
935
  const meta = getMeta(entity);
917
936
  const payloads = fillOnFields(meta, payload, 'onInsert');
918
937
  const keys = getInsertFieldKeys(meta, payloads);
919
- const columns = keys.map((key) => {
938
+ // Resolve each key's field and escaped column once, then index into them: re-reading
939
+ // `meta.fields[key]` per record cost 40 redundant lookups on a 10-row, 4-column insert.
940
+ const width = keys.length;
941
+ const fields = new Array(width);
942
+ const columns = new Array(width);
943
+ const kinds = new Array(width);
944
+ for (let i = 0; i < width; i++) {
945
+ const key = keys[i];
920
946
  const field = meta.fields[key];
921
- return this.escapeId(this.resolveColumnName(key, field));
922
- });
947
+ fields[i] = field;
948
+ columns[i] = this.escapedColumnName(meta, key);
949
+ kinds[i] = this.persistKind(field);
950
+ }
923
951
  const tableName = this.resolveTableName(entity, meta);
924
952
  ctx.append(`INSERT INTO ${this.escapeId(tableName)} (${columns.join(', ')}) VALUES (`);
925
- payloads.forEach((it, recordIndex) => {
926
- if (recordIndex > 0) {
953
+ for (let r = 0; r < payloads.length; r++) {
954
+ if (r > 0) {
927
955
  ctx.append('), (');
928
956
  }
929
- keys.forEach((key, keyIndex) => {
930
- if (keyIndex > 0) {
957
+ const record = payloads[r];
958
+ for (let i = 0; i < width; i++) {
959
+ if (i > 0) {
931
960
  ctx.append(', ');
932
961
  }
933
- const field = meta.fields[key];
934
- if (it[key] === undefined) {
935
- this.appendDefaultInsertValue(ctx, field);
962
+ const value = record[keys[i]];
963
+ if (value === undefined) {
964
+ this.appendDefaultInsertValue(ctx, fields[i]);
965
+ }
966
+ else if (kinds[i] === 'plain' && !(value instanceof QueryRaw)) {
967
+ // The overwhelmingly common case in a bulk insert, so it binds without a dispatch.
968
+ ctx.addValue(value);
936
969
  }
937
970
  else {
938
- this.formatPersistableValue(ctx, field, it[key]);
971
+ this.writePersistableValue(ctx, kinds[i], fields[i], value);
939
972
  }
940
- });
941
- });
973
+ }
974
+ }
942
975
  ctx.append(')');
943
976
  }
944
977
  /**
@@ -955,13 +988,13 @@ export class AbstractSqlDialect extends VectorSqlDialect {
955
988
  const keys = filterFieldKeys(meta, filledPayload, 'onUpdate');
956
989
  const tableName = this.resolveTableName(entity, meta);
957
990
  ctx.append(`UPDATE ${this.escapeId(tableName)} SET `);
958
- keys.forEach((key, index) => {
959
- if (index > 0) {
991
+ for (let i = 0; i < keys.length; i++) {
992
+ if (i > 0) {
960
993
  ctx.append(', ');
961
994
  }
995
+ const key = keys[i];
962
996
  const field = meta.fields[key];
963
- const columnName = this.resolveColumnName(key, field);
964
- const escapedCol = this.escapeId(columnName);
997
+ const escapedCol = this.escapedColumnName(meta, key);
965
998
  const value = filledPayload[key];
966
999
  if (isJsonUpdateOp(value)) {
967
1000
  this.formatJsonUpdate(ctx, escapedCol, value, field);
@@ -970,7 +1003,7 @@ export class AbstractSqlDialect extends VectorSqlDialect {
970
1003
  ctx.append(`${escapedCol} = `);
971
1004
  this.formatPersistableValue(ctx, field, value);
972
1005
  }
973
- });
1006
+ }
974
1007
  this.search(ctx, entity, q, opts);
975
1008
  }
976
1009
  upsert(ctx, entity, conflictPaths, payload) {
@@ -978,13 +1011,13 @@ export class AbstractSqlDialect extends VectorSqlDialect {
978
1011
  const updateCtx = this.createContext();
979
1012
  const update = this.getUpsertUpdateAssignments(updateCtx, meta, conflictPaths, payload, (name) => `VALUES(${name})`);
980
1013
  if (update) {
981
- this.insert(ctx, entity, payload);
1014
+ this.appendInsertValues(ctx, entity, payload);
982
1015
  ctx.append(` ON DUPLICATE KEY UPDATE ${update}`);
983
1016
  ctx.pushValue(...updateCtx.values);
984
1017
  }
985
1018
  else {
986
1019
  const insertCtx = this.createContext();
987
- this.insert(insertCtx, entity, payload);
1020
+ this.appendInsertValues(insertCtx, entity, payload);
988
1021
  ctx.append(insertCtx.sql.replace(/^INSERT/, 'INSERT IGNORE'));
989
1022
  ctx.pushValue(...insertCtx.values);
990
1023
  }
@@ -1039,21 +1072,46 @@ export class AbstractSqlDialect extends VectorSqlDialect {
1039
1072
  escapeId(val, forbidQualified, addDot) {
1040
1073
  return escapeSqlId(val, this.escapeIdChar, forbidQualified, addDot);
1041
1074
  }
1075
+ /**
1076
+ * Bind one persisted value, classifying its column on the spot. Dialects override
1077
+ * {@link appendJsonValue} and {@link appendVectorValue} rather than this, so the chain runs once per
1078
+ * value - overriding this and delegating back to `super` ran every check twice, measurably slowing
1079
+ * every INSERT/UPDATE.
1080
+ */
1042
1081
  formatPersistableValue(ctx, field, value) {
1082
+ this.writePersistableValue(ctx, this.persistKind(field), field, value);
1083
+ }
1084
+ /**
1085
+ * How a column's values are written. A function of the column, not of the value, so a bulk insert
1086
+ * classifies each column once instead of re-deciding per row: a 20-row, 6-column insert asked
1087
+ * `isJsonType` and `isVectorFieldType` 120 times to get the same six answers.
1088
+ */
1089
+ persistKind(field) {
1090
+ const type = field?.type;
1091
+ if (isJsonType(type)) {
1092
+ return 'json';
1093
+ }
1094
+ return isVectorFieldType(type) ? 'vector' : 'plain';
1095
+ }
1096
+ /** The one type dispatch for a persisted value, over a column kind decided by the caller. */
1097
+ writePersistableValue(ctx, kind, field, value) {
1043
1098
  if (value instanceof QueryRaw) {
1044
1099
  this.getRawValue(ctx, { value });
1045
1100
  return;
1046
1101
  }
1047
- if (isJsonType(field?.type)) {
1048
- ctx.addValue(value == null ? null : JSON.stringify(value));
1102
+ if (kind === 'json') {
1103
+ this.appendJsonValue(ctx, value, field?.type);
1049
1104
  return;
1050
1105
  }
1051
- if (field?.type === 'vector' && Array.isArray(value)) {
1052
- ctx.addValue(`[${value.join(',')}]`);
1106
+ if (kind === 'vector' && Array.isArray(value)) {
1107
+ this.appendVectorValue(ctx, value, field);
1053
1108
  return;
1054
1109
  }
1055
1110
  ctx.addValue(value);
1056
1111
  }
1112
+ appendJsonValue(ctx, value, _type) {
1113
+ ctx.addValue(value == null ? null : JSON.stringify(value));
1114
+ }
1057
1115
  /**
1058
1116
  * Reads `operand` as a JSON value. Passing the `?` placeholder yields the cast for a bound
1059
1117
  * parameter, and passing an expression re-reads text as JSON - the same SQL either way, which is
@@ -1208,97 +1266,85 @@ export class AbstractSqlDialect extends VectorSqlDialect {
1208
1266
  return { $eq: val };
1209
1267
  }
1210
1268
  /**
1211
- * Filter by relation using an EXISTS subquery.
1212
- * Supports all cardinalities: mm (via junction), 1m, m1, and 11.
1269
+ * A field key's mapped column (`@Field({ name })`), escaped, memoized per dialect instance: field
1270
+ * metadata is shared between dialects while this result is not, since `escapeIdChar` and the naming
1271
+ * strategy differ. Weakly keyed so a transient entity's metadata stays collectable.
1213
1272
  */
1273
+ escapedColumnName(meta, key) {
1274
+ const field = meta.fields[key];
1275
+ if (!field) {
1276
+ return this.escapeId(this.columnOf(meta, key));
1277
+ }
1278
+ let escaped = this.escapedColumns.get(field);
1279
+ if (escaped === undefined) {
1280
+ escaped = this.escapeId(this.columnOf(meta, key));
1281
+ this.escapedColumns.set(field, escaped);
1282
+ }
1283
+ return escaped;
1284
+ }
1285
+ escapedColumn(table, meta, key) {
1286
+ return this.escapeId(table, false, true) + this.escapedColumnName(meta, key);
1287
+ }
1288
+ /** As {@link escapedColumn}, but qualified by the query alias when the parent is nested. */
1289
+ escapedParentColumn(parentTable, meta, opts, key) {
1290
+ return opts.prefix
1291
+ ? this.escapeId(opts.prefix, true, true) + this.escapedColumnName(meta, key)
1292
+ : this.escapedColumn(parentTable, meta, key);
1293
+ }
1214
1294
  /**
1215
- * The parent side of a relation-filtering subquery: its table name, escaped id reference, and a
1216
- * guard against a relation with no configured references. Shared by
1217
- * `compareRelation`/`compareRelationSize`. `rel.references` is asserted non-null at call sites
1218
- * relying on this guard, since the check lives here instead of in the caller's own scope.
1295
+ * The single path from a relation operator to its target, so none can emit an unscoped subquery:
1296
+ * the target's `$where` is merged with its active filters, making a trashed or out-of-scope row
1297
+ * invisible here just as it is to a joined `$populate`. The caller's filter bypass is deliberately
1298
+ * not propagated (`withDeleted()` does not reach into relations), matching `selectRelationJoins`.
1219
1299
  */
1220
- resolveRelationParent(entity, key, rel, opts) {
1300
+ appendRelationSubquery(ctx, entity, key, rel, opts, projection, val) {
1221
1301
  const meta = getMeta(entity);
1222
1302
  const parentTable = this.resolveTableName(entity, meta);
1223
1303
  if (!rel.references?.length) {
1224
1304
  throw new TypeError(`Relation '${key}' on '${parentTable}' has no references defined`);
1225
1305
  }
1226
- const escapedParentId = (opts.prefix ? this.escapeId(opts.prefix, true, true) : this.escapeId(parentTable, false, true)) +
1227
- this.escapeId(meta.id);
1228
- return { parentTable, escapedParentId };
1229
- }
1230
- compareRelation(ctx, entity, key, val, rel, opts) {
1231
- const { parentTable, escapedParentId } = this.resolveRelationParent(entity, key, rel, opts);
1232
1306
  const references = rel.references;
1307
+ const escapedParentId = this.escapedParentColumn(parentTable, meta, opts, meta.id);
1233
1308
  const relatedEntity = rel.entity();
1234
1309
  const relatedMeta = getMeta(relatedEntity);
1235
1310
  const relatedTable = this.resolveTableName(relatedEntity, relatedMeta);
1236
- ctx.append('EXISTS (SELECT 1 FROM ');
1311
+ // Resolved before any SQL is emitted: it also decides whether the mm form reaches the target.
1312
+ const targetWhere = this.scopedWhereMap(relatedMeta, val);
1313
+ ctx.append(`(SELECT ${projection} FROM `);
1237
1314
  if (rel.cardinality === 'mm' && rel.through) {
1238
- // ManyToMany: EXISTS (SELECT 1 FROM JunctionTable WHERE junction.localFk = parent.id AND junction.foreignFk IN (SELECT related.id FROM Related WHERE ...))
1239
1315
  const throughEntity = rel.through();
1240
1316
  const throughMeta = getMeta(throughEntity);
1241
1317
  const throughTable = this.resolveTableName(throughEntity, throughMeta);
1242
- const localFk = references[0].local;
1243
- const foreignFk = references[1].local;
1244
- const relatedId = relatedMeta.id;
1245
1318
  ctx.append(this.escapeId(throughTable));
1246
- ctx.append(` WHERE ${this.escapeId(throughTable, false, true)}${this.escapeId(localFk)} = ${escapedParentId}`);
1247
- ctx.append(` AND ${this.escapeId(throughTable, false, true)}${this.escapeId(foreignFk)} IN (`);
1248
- ctx.append(`SELECT ${this.escapeId(relatedTable, false, true)}${this.escapeId(relatedId)} FROM ${this.escapeId(relatedTable)}`);
1249
- this.where(ctx, relatedEntity, val, {
1250
- prefix: relatedTable,
1251
- clause: 'WHERE',
1252
- filters: { softDelete: false },
1253
- });
1254
- ctx.append(')');
1319
+ ctx.append(` WHERE ${this.escapedColumn(throughTable, throughMeta, references[0].local)} = ${escapedParentId}`);
1320
+ // The junction is a row being read too: a soft-deleted link is not a link.
1321
+ this.where(ctx, throughEntity, {}, { prefix: throughTable, clause: 'AND' });
1322
+ if (hasKeys(targetWhere)) {
1323
+ ctx.append(` AND ${this.escapedColumn(throughTable, throughMeta, references[1].local)} IN (`);
1324
+ ctx.append(`SELECT ${this.escapedColumn(relatedTable, relatedMeta, relatedMeta.id)} FROM ${this.escapeId(relatedTable)}`);
1325
+ this.renderWhere(ctx, relatedEntity, targetWhere, { prefix: relatedTable, clause: 'WHERE' });
1326
+ ctx.append(')');
1327
+ }
1255
1328
  }
1256
1329
  else {
1257
- // 1m / m1 / 11: EXISTS (SELECT 1 FROM Related WHERE related.fk_or_pk = parent.pk_or_fk AND ...)
1258
- // Left side is always relatedTable.references[0].foreign
1259
- // Right side is the parent's PK (1m) or the parent's FK (m1/11)
1260
- const joinLeft = `${this.escapeId(relatedTable, false, true)}${this.escapeId(references[0].foreign)}`;
1330
+ const joinLeft = this.escapedColumn(relatedTable, relatedMeta, references[0].foreign);
1261
1331
  const joinRight = rel.cardinality === '1m'
1262
1332
  ? escapedParentId
1263
- : (opts.prefix ? this.escapeId(opts.prefix, true, true) : this.escapeId(parentTable, false, true)) +
1264
- this.escapeId(references[0].local);
1333
+ : this.escapedParentColumn(parentTable, meta, opts, references[0].local);
1265
1334
  ctx.append(this.escapeId(relatedTable));
1266
1335
  ctx.append(` WHERE ${joinLeft} = ${joinRight}`);
1267
- this.where(ctx, relatedEntity, val, {
1268
- prefix: relatedTable,
1269
- clause: 'AND',
1270
- filters: { softDelete: false },
1271
- });
1336
+ this.renderWhere(ctx, relatedEntity, targetWhere, { prefix: relatedTable, clause: 'AND' });
1272
1337
  }
1273
1338
  ctx.append(')');
1274
1339
  }
1275
- /**
1276
- * Filter by relation size using a `COUNT(*)` subquery.
1277
- * Supports all cardinalities: mm (via junction), 1m.
1278
- */
1340
+ /** Filter by relation: a parent matches when {@link appendRelationSubquery} finds one target row. */
1341
+ compareRelation(ctx, entity, key, val, rel, opts) {
1342
+ ctx.append('EXISTS ');
1343
+ this.appendRelationSubquery(ctx, entity, key, rel, opts, '1', val);
1344
+ }
1345
+ /** Filter by relation size: the same subquery, counting instead of testing for existence. */
1279
1346
  compareRelationSize(ctx, entity, key, sizeVal, rel, opts) {
1280
- const { escapedParentId } = this.resolveRelationParent(entity, key, rel, opts);
1281
- const appendSubquery = () => {
1282
- ctx.append('(SELECT COUNT(*) FROM ');
1283
- if (rel.cardinality === 'mm' && rel.through) {
1284
- const throughEntity = rel.through();
1285
- const throughMeta = getMeta(throughEntity);
1286
- const throughTable = this.resolveTableName(throughEntity, throughMeta);
1287
- const localFk = rel.references[0].local;
1288
- ctx.append(this.escapeId(throughTable));
1289
- ctx.append(` WHERE ${this.escapeId(throughTable, false, true)}${this.escapeId(localFk)} = ${escapedParentId}`);
1290
- }
1291
- else {
1292
- const relatedEntity = rel.entity();
1293
- const relatedMeta = getMeta(relatedEntity);
1294
- const relatedTable = this.resolveTableName(relatedEntity, relatedMeta);
1295
- const joinLeft = `${this.escapeId(relatedTable, false, true)}${this.escapeId(rel.references[0].foreign)}`;
1296
- ctx.append(this.escapeId(relatedTable));
1297
- ctx.append(` WHERE ${joinLeft} = ${escapedParentId}`);
1298
- }
1299
- ctx.append(')');
1300
- };
1301
- this.buildSizeComparison(ctx, appendSubquery, sizeVal);
1347
+ this.buildSizeComparison(ctx, () => this.appendRelationSubquery(ctx, entity, key, rel, opts, 'COUNT(*)', {}), sizeVal);
1302
1348
  }
1303
1349
  /**
1304
1350
  * Build a complete `$size` comparison expression.
@@ -1331,42 +1377,20 @@ export class AbstractSqlDialect extends VectorSqlDialect {
1331
1377
  * Append a single size comparison operator and value to the context.
1332
1378
  */
1333
1379
  appendSizeOp(ctx, op, val) {
1334
- switch (op) {
1335
- case '$eq':
1336
- ctx.append(' = ');
1337
- ctx.addValue(val);
1338
- break;
1339
- case '$ne':
1340
- ctx.append(' <> ');
1341
- ctx.addValue(val);
1342
- break;
1343
- case '$gt':
1344
- ctx.append(' > ');
1345
- ctx.addValue(val);
1346
- break;
1347
- case '$gte':
1348
- ctx.append(' >= ');
1349
- ctx.addValue(val);
1350
- break;
1351
- case '$lt':
1352
- ctx.append(' < ');
1353
- ctx.addValue(val);
1354
- break;
1355
- case '$lte':
1356
- ctx.append(' <= ');
1357
- ctx.addValue(val);
1358
- break;
1359
- case '$between': {
1360
- const [min, max] = val;
1361
- ctx.append(' BETWEEN ');
1362
- ctx.addValue(min);
1363
- ctx.append(' AND ');
1364
- ctx.addValue(max);
1365
- break;
1366
- }
1367
- default:
1368
- throw TypeError(`unsupported $size comparison operator: ${op}`);
1380
+ if (op === '$between') {
1381
+ const [min, max] = val;
1382
+ ctx.append(' BETWEEN ');
1383
+ ctx.addValue(min);
1384
+ ctx.append(' AND ');
1385
+ ctx.addValue(max);
1386
+ return;
1387
+ }
1388
+ const sqlOp = AbstractSqlDialect.comparisonOpMap.get(op);
1389
+ if (!sqlOp) {
1390
+ throw TypeError(`unsupported $size comparison operator: ${op}`);
1369
1391
  }
1392
+ ctx.append(` ${sqlOp} `);
1393
+ ctx.addValue(val);
1370
1394
  }
1371
1395
  /** ANSI-style single-quote escaping. MySQL-family dialects override this for backslash escaping. */
1372
1396
  escape(value) {
@@ -1408,4 +1432,3 @@ export class AbstractSqlDialect extends VectorSqlDialect {
1408
1432
  return this.dialectName;
1409
1433
  }
1410
1434
  }
1411
- //# sourceMappingURL=abstractSqlDialect.js.map
@@ -4,6 +4,6 @@ export { PostgresDialect } from '../postgres/postgresDialect.js';
4
4
  export { SqliteDialect } from '../sqlite/sqliteDialect.js';
5
5
  export * from './abstractDialect.js';
6
6
  export * from './abstractSqlDialect.js';
7
+ export * from './indexSqlDialect.js';
7
8
  export * from './mysqlLikeSqlDialect.js';
8
9
  export * from './queryContext.js';
9
- //# sourceMappingURL=index.d.ts.map
@@ -4,6 +4,6 @@ export { PostgresDialect } from '../postgres/postgresDialect.js';
4
4
  export { SqliteDialect } from '../sqlite/sqliteDialect.js';
5
5
  export * from './abstractDialect.js';
6
6
  export * from './abstractSqlDialect.js';
7
+ export * from './indexSqlDialect.js';
7
8
  export * from './mysqlLikeSqlDialect.js';
8
9
  export * from './queryContext.js';
9
- //# sourceMappingURL=index.js.map
@@ -0,0 +1,57 @@
1
+ import { type IndexColumnSchema, type IndexFeature, type IndexSchema } from '../type/index.js';
2
+ import { VectorSqlDialect } from './vectorSqlDialect.js';
3
+ /**
4
+ * `CREATE INDEX` for SQL dialects: the statement and the fragments each engine spells differently.
5
+ *
6
+ * A layer of its own for the same reason as {@link VectorSqlDialect} below it - it needs only
7
+ * `escapeId` and `features.indexIfNotExists` from the SQL dialect above, so keeping it here spares
8
+ * that 2000-line class thirteen more members. What each engine can express at all is data
9
+ * ({@link indexFeatures}), validated once, rather than a throw per feature per dialect.
10
+ */
11
+ export declare abstract class IndexSqlDialect extends VectorSqlDialect {
12
+ /**
13
+ * The `CREATE INDEX` statement for this dialect. The form here is the portable one, which SQLite
14
+ * (and so libSQL, Turso and D1) takes verbatim: no access-method clause, no operator classes, no
15
+ * tuning parameters. Dialects that have those override the fragments below rather than this.
16
+ */
17
+ getCreateIndexStatement(tableName: string, index: IndexSchema, opts?: {
18
+ ifNotExists?: boolean;
19
+ }): string;
20
+ /**
21
+ * Index features this dialect can express. Everything here is supported by at least one engine and
22
+ * refused by at least one other, so an index asking for a missing one is rejected rather than
23
+ * emitted: each of them is a hard error at the server, not a slower plan.
24
+ */
25
+ protected readonly indexFeatures: ReadonlySet<IndexFeature>;
26
+ private assertIndexFeatures;
27
+ /**
28
+ * The column-level declaration for a vector index that lives inside `CREATE TABLE` rather than in
29
+ * its own statement, which the `inlineVectorIndex` feature flags. Only MariaDB has one.
30
+ */
31
+ getInlineVectorIndexDeclaration(index: IndexSchema): string;
32
+ /** Only CockroachDB's native vector index replaces the `INDEX` keyword. */
33
+ protected indexKeyword(_index: IndexSchema): string;
34
+ /** One index entry: what is indexed, its operator class if any, then its stored order. */
35
+ protected indexColumn(entry: IndexColumnSchema, index: IndexSchema): string;
36
+ /**
37
+ * A quoted column, optionally prefix-limited, or an expression in its own parentheses - the form
38
+ * `((lower("email")))` that MySQL requires and Postgres, CockroachDB and SQLite all accept, so one
39
+ * rendering serves every engine that has expression indexes.
40
+ */
41
+ protected indexColumnTarget(entry: IndexColumnSchema): string;
42
+ /** Postgres-wire dialects put a vector or user-declared operator class here. */
43
+ protected indexColumnOpsClass(_entry: IndexColumnSchema, _index: IndexSchema): string;
44
+ /** `ASC` is every engine's default, so only `DESC` is worth emitting. */
45
+ protected indexColumnOrder(entry: IndexColumnSchema): string;
46
+ /** ` INCLUDE (...)`: non-key columns stored for index-only scans. Postgres-wire only. */
47
+ protected indexInclude(_index: IndexSchema): string;
48
+ /** ` USING <method>`, which SQLite's grammar has no place for at all. */
49
+ protected indexAccessMethod(_index: IndexSchema): string;
50
+ /** pgvector's ` WITH (m = ..., ef_construction = ..., lists = ...)`. */
51
+ protected indexTuning(_index: IndexSchema): string;
52
+ /**
53
+ * The partial-index predicate. Dialects without partial indexes throw instead of dropping it:
54
+ * silently widening a partial unique index changes which rows the database accepts.
55
+ */
56
+ protected indexPredicate(index: IndexSchema): string;
57
+ }