ts-prorm-orm 1.1.0 → 1.2.1

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 (460) hide show
  1. package/CHANGELOG.md +95 -0
  2. package/README.md +194 -72
  3. package/dist/audit/history-query.d.ts +35 -0
  4. package/dist/audit/index.d.ts +16 -0
  5. package/dist/audit/logger.d.ts +126 -0
  6. package/dist/cache/cache-manager.d.ts +341 -0
  7. package/dist/cache/index.d.ts +8 -0
  8. package/dist/cache/redis-cluster-cache.d.ts +164 -0
  9. package/dist/cache/redis-cluster-cache.js +19 -36
  10. package/dist/cli/cloud.d.ts +55 -0
  11. package/dist/cli/cloud.js +318 -0
  12. package/dist/cli/commands/auth.d.ts +2 -0
  13. package/dist/cli/commands/auth.js +345 -0
  14. package/dist/cli/commands/billing.d.ts +2 -0
  15. package/dist/cli/commands/billing.js +135 -0
  16. package/dist/cli/commands/code.d.ts +2 -0
  17. package/dist/cli/commands/code.js +168 -0
  18. package/dist/cli/commands/config.d.ts +2 -0
  19. package/dist/cli/commands/config.js +154 -0
  20. package/dist/cli/commands/db.d.ts +2 -0
  21. package/dist/cli/commands/db.js +189 -0
  22. package/dist/cli/commands/index.d.ts +1 -0
  23. package/dist/cli/commands/index.js +22 -0
  24. package/dist/cli/commands/keys.d.ts +2 -0
  25. package/dist/cli/commands/keys.js +100 -0
  26. package/dist/cli/commands/misc.d.ts +2 -0
  27. package/dist/cli/commands/misc.js +282 -0
  28. package/dist/cli/commands/pull.d.ts +2 -0
  29. package/dist/cli/commands/pull.js +306 -0
  30. package/dist/cli/commands/runners.d.ts +2 -0
  31. package/dist/cli/commands/runners.js +218 -0
  32. package/dist/cli/commands/scaffold.d.ts +2 -0
  33. package/dist/cli/commands/scaffold.js +383 -0
  34. package/dist/cli/commands/secrets.d.ts +2 -0
  35. package/dist/cli/commands/secrets.js +162 -0
  36. package/dist/cli/commands/store.d.ts +2 -0
  37. package/dist/cli/commands/store.js +274 -0
  38. package/dist/cli/commands/system.d.ts +10 -0
  39. package/dist/cli/commands/system.js +169 -0
  40. package/dist/cli/commands/teams.d.ts +2 -0
  41. package/dist/cli/commands/teams.js +189 -0
  42. package/dist/cli/commands/user.d.ts +2 -0
  43. package/dist/cli/commands/user.js +171 -0
  44. package/dist/cli/framework.d.ts +103 -0
  45. package/dist/cli/framework.js +436 -0
  46. package/dist/cli/io.d.ts +26 -0
  47. package/dist/cli/io.js +181 -0
  48. package/dist/cli/keychain.d.ts +10 -0
  49. package/dist/cli/keychain.js +101 -0
  50. package/dist/cli/prompt.d.ts +20 -0
  51. package/dist/cli/prompt.js +111 -0
  52. package/dist/cli.d.ts +214 -0
  53. package/dist/cli.js +72 -5
  54. package/dist/compliance/audit-trail.d.ts +66 -0
  55. package/dist/compliance/backup-verification.d.ts +279 -0
  56. package/dist/compliance/breach-detector.d.ts +197 -0
  57. package/dist/compliance/consent-record.d.ts +107 -0
  58. package/dist/compliance/consent-versioning.d.ts +169 -0
  59. package/dist/compliance/cross-border-log.d.ts +254 -0
  60. package/dist/compliance/data-classifier.d.ts +127 -0
  61. package/dist/compliance/data-lineage.d.ts +268 -0
  62. package/dist/compliance/data-masker.d.ts +110 -0
  63. package/dist/compliance/data-portability.d.ts +98 -0
  64. package/dist/compliance/data-retention.d.ts +108 -0
  65. package/dist/compliance/dsar-workflow.d.ts +175 -0
  66. package/dist/compliance/field-encryption.d.ts +84 -0
  67. package/dist/compliance/immutable-record.d.ts +84 -0
  68. package/dist/compliance/index.d.ts +93 -0
  69. package/dist/compliance/privacy-impact-assessment.d.ts +196 -0
  70. package/dist/compliance/pseudonymization.d.ts +96 -0
  71. package/dist/compliance/query-firewall.d.ts +661 -0
  72. package/dist/compliance/rate-limiter.d.ts +203 -0
  73. package/dist/compliance/right-to-erasure.d.ts +96 -0
  74. package/dist/compliance/row-level-security.d.ts +152 -0
  75. package/dist/compliance/security-decorator.d.ts +388 -0
  76. package/dist/compliance/security-monitor.d.ts +170 -0
  77. package/dist/compliance/sensitive-data-discovery.d.ts +151 -0
  78. package/dist/compliance/session-isolation.d.ts +286 -0
  79. package/dist/compliance/tls-enforcer.d.ts +51 -0
  80. package/dist/compliance/worm-storage.d.ts +225 -0
  81. package/dist/connection-manager.d.ts +130 -0
  82. package/dist/connection-pool.d.ts +311 -0
  83. package/dist/decorators/audit.d.ts +49 -0
  84. package/dist/decorators/check.d.ts +218 -0
  85. package/dist/decorators/collate.d.ts +346 -0
  86. package/dist/decorators/comment.d.ts +51 -0
  87. package/dist/decorators/database-settings.d.ts +193 -0
  88. package/dist/decorators/default.d.ts +148 -0
  89. package/dist/decorators/encryption.d.ts +175 -0
  90. package/dist/decorators/engine.d.ts +97 -0
  91. package/dist/decorators/fk-constraints.d.ts +387 -0
  92. package/dist/decorators/foreign-table.d.ts +57 -0
  93. package/dist/decorators/generated.d.ts +232 -0
  94. package/dist/decorators/hstore.d.ts +96 -0
  95. package/dist/decorators/index.d.ts +57 -0
  96. package/dist/decorators/index.js +14 -30
  97. package/dist/decorators/json-column.d.ts +47 -0
  98. package/dist/decorators/jsonb.d.ts +83 -0
  99. package/dist/decorators/orm-decorators.d.ts +274 -0
  100. package/dist/decorators/permissions.d.ts +192 -0
  101. package/dist/decorators/procedure.d.ts +168 -0
  102. package/dist/decorators/procedure.js +31 -7
  103. package/dist/decorators/query-options.d.ts +527 -0
  104. package/dist/decorators/range.d.ts +122 -0
  105. package/dist/decorators/set-column.d.ts +43 -0
  106. package/dist/decorators/spatial.d.ts +60 -0
  107. package/dist/decorators/storage.d.ts +561 -0
  108. package/dist/decorators/timezone.d.ts +319 -0
  109. package/dist/decorators/trigger.d.ts +50 -0
  110. package/dist/decorators/uuid.d.ts +102 -0
  111. package/dist/decorators/view.d.ts +213 -0
  112. package/dist/diagrams/chen-diagram.d.ts +70 -0
  113. package/dist/diagrams/chen-diagram.js +33 -31
  114. package/dist/diagrams/class-diagram.d.ts +78 -0
  115. package/dist/diagrams/class-diagram.js +23 -27
  116. package/dist/diagrams/dependency-diagram.d.ts +82 -0
  117. package/dist/diagrams/dependency-diagram.js +18 -9
  118. package/dist/diagrams/er-diagram.d.ts +82 -0
  119. package/dist/diagrams/er-diagram.js +174 -231
  120. package/dist/diagrams/flow-diagram.d.ts +70 -0
  121. package/dist/diagrams/flow-diagram.js +23 -18
  122. package/dist/diagrams/gantt-diagram.d.ts +67 -0
  123. package/dist/diagrams/gantt-diagram.js +20 -18
  124. package/dist/diagrams/index-diagram.d.ts +61 -0
  125. package/dist/diagrams/index-diagram.js +36 -31
  126. package/dist/diagrams/index.d.ts +155 -0
  127. package/dist/diagrams/index.js +7 -1
  128. package/dist/diagrams/migration-diagram.d.ts +67 -0
  129. package/dist/diagrams/migration-diagram.js +45 -57
  130. package/dist/diagrams/model-diagram.d.ts +85 -0
  131. package/dist/diagrams/model-diagram.js +225 -287
  132. package/dist/diagrams/package-diagram.d.ts +69 -0
  133. package/dist/diagrams/package-diagram.js +30 -32
  134. package/dist/diagrams/palette.d.ts +138 -0
  135. package/dist/diagrams/palette.js +134 -25
  136. package/dist/diagrams/relational-diagram.d.ts +82 -0
  137. package/dist/diagrams/relational-diagram.js +51 -59
  138. package/dist/diagrams/schemadoc-diagram.d.ts +57 -0
  139. package/dist/diagrams/schemadoc-diagram.js +36 -28
  140. package/dist/diagrams/sequence-diagram.d.ts +61 -0
  141. package/dist/diagrams/sequence-diagram.js +20 -11
  142. package/dist/diagrams/state-diagram.d.ts +85 -0
  143. package/dist/diagrams/state-diagram.js +21 -17
  144. package/dist/diagrams/svg-dom.d.ts +62 -0
  145. package/dist/diagrams/svg-dom.js +11 -0
  146. package/dist/diagrams/tree-diagram.d.ts +47 -0
  147. package/dist/diagrams/tree-diagram.js +19 -10
  148. package/dist/dialects/clickhouse/index.d.ts +660 -0
  149. package/dist/dialects/clickhouse/index.js +107 -2
  150. package/dist/dialects/cockroachdb/index.d.ts +1708 -0
  151. package/dist/dialects/cockroachdb/index.js +139 -10
  152. package/dist/dialects/cratedb/index.d.ts +262 -0
  153. package/dist/dialects/cratedb/index.js +148 -0
  154. package/dist/dialects/databricks/index.d.ts +397 -0
  155. package/dist/dialects/databricks/index.js +233 -11
  156. package/dist/dialects/db2/index.d.ts +729 -0
  157. package/dist/dialects/db2/index.js +152 -2
  158. package/dist/dialects/dialect.d.ts +1653 -0
  159. package/dist/dialects/duckdb/index.d.ts +440 -0
  160. package/dist/dialects/duckdb/index.js +21 -37
  161. package/dist/dialects/exasol/index.d.ts +197 -0
  162. package/dist/dialects/exasol/index.js +14 -0
  163. package/dist/dialects/firebird/index.d.ts +286 -0
  164. package/dist/dialects/firebird/index.js +135 -0
  165. package/dist/dialects/greenplum/index.d.ts +336 -0
  166. package/dist/dialects/greenplum/index.js +168 -0
  167. package/dist/dialects/hana/index.d.ts +512 -0
  168. package/dist/dialects/hana/index.js +17 -35
  169. package/dist/dialects/mariadb/index.d.ts +1241 -0
  170. package/dist/dialects/mariadb/index.js +181 -43
  171. package/dist/dialects/mssql/index.d.ts +729 -0
  172. package/dist/dialects/mssql/index.js +76 -7
  173. package/dist/dialects/mysql/index.d.ts +1233 -0
  174. package/dist/dialects/mysql/index.js +87 -19
  175. package/dist/dialects/oracle/index.d.ts +1222 -0
  176. package/dist/dialects/oracle/index.js +210 -9
  177. package/dist/dialects/postgres/index.d.ts +1598 -0
  178. package/dist/dialects/postgres/index.js +34 -13
  179. package/dist/dialects/query-stream-helper.d.ts +58 -0
  180. package/dist/dialects/questdb/index.d.ts +430 -0
  181. package/dist/dialects/questdb/index.js +292 -0
  182. package/dist/dialects/redshift/index.d.ts +933 -0
  183. package/dist/dialects/redshift/index.js +17 -5
  184. package/dist/dialects/singlestore/index.d.ts +233 -0
  185. package/dist/dialects/singlestore/index.js +53 -0
  186. package/dist/dialects/snowflake/index.d.ts +727 -0
  187. package/dist/dialects/snowflake/index.js +154 -5
  188. package/dist/dialects/spanner/index.d.ts +660 -0
  189. package/dist/dialects/spanner/index.js +43 -21
  190. package/dist/dialects/sqlite/index.d.ts +1133 -0
  191. package/dist/dialects/sqlite/index.js +168 -30
  192. package/dist/dialects/tidb/index.d.ts +226 -0
  193. package/dist/dialects/tidb/index.js +10 -0
  194. package/dist/dialects/timescaledb/index.d.ts +286 -0
  195. package/dist/dialects/timescaledb/index.js +179 -0
  196. package/dist/dialects/trino/index.d.ts +230 -0
  197. package/dist/dialects/trino/index.js +85 -10
  198. package/dist/dialects/turso/index.d.ts +98 -0
  199. package/dist/dialects/turso/index.js +10 -0
  200. package/dist/dialects/vertica/index.d.ts +321 -0
  201. package/dist/dialects/vertica/index.js +161 -0
  202. package/dist/dialects/yugabytedb/index.d.ts +276 -0
  203. package/dist/dialects/yugabytedb/index.js +121 -0
  204. package/dist/errors/index.d.ts +378 -0
  205. package/dist/errors/index.js +29 -1
  206. package/dist/errors/utils.d.ts +53 -0
  207. package/dist/errors.d.ts +5 -0
  208. package/dist/extensions/catalog/cloud-warehouse-features.d.ts +27 -0
  209. package/dist/extensions/catalog/mssql-features.d.ts +20 -0
  210. package/dist/extensions/catalog/mysql-mariadb-plugins.d.ts +18 -0
  211. package/dist/extensions/catalog/oracle-db2-features.d.ts +17 -0
  212. package/dist/extensions/catalog/postgres-extensions.d.ts +15 -0
  213. package/dist/extensions/index.d.ts +34 -0
  214. package/dist/extensions/types.d.ts +43 -0
  215. package/dist/external-fields/adapters.d.ts +50 -0
  216. package/dist/external-fields/adapters.js +227 -0
  217. package/dist/external-fields/decorator.d.ts +77 -0
  218. package/dist/external-fields/decorator.js +80 -0
  219. package/dist/external-fields/index.d.ts +10 -0
  220. package/dist/external-fields/index.js +19 -0
  221. package/dist/external-fields/runtime.d.ts +39 -0
  222. package/dist/external-fields/runtime.js +221 -0
  223. package/dist/foreign-data.d.ts +168 -0
  224. package/dist/graph/base-graph-dialect.d.ts +250 -0
  225. package/dist/graph/base-graph-dialect.js +539 -0
  226. package/dist/graph/dgraph/index.d.ts +65 -0
  227. package/dist/graph/dgraph/index.js +559 -0
  228. package/dist/graph/gremlin/index.d.ts +59 -0
  229. package/dist/graph/gremlin/index.js +378 -0
  230. package/dist/graph/index.d.ts +60 -0
  231. package/dist/graph/index.js +67 -0
  232. package/dist/graph/neo4j/index.d.ts +50 -0
  233. package/dist/graph/neo4j/index.js +462 -0
  234. package/dist/graph/types.d.ts +213 -0
  235. package/dist/graph/types.js +234 -0
  236. package/dist/hooks/hooks-manager.d.ts +189 -0
  237. package/dist/hooks/index.d.ts +8 -0
  238. package/dist/index.d.ts +713 -0
  239. package/dist/index.js +36 -4
  240. package/dist/logging.d.ts +183 -0
  241. package/dist/migrations/index.d.ts +9 -0
  242. package/dist/migrations/migration.d.ts +143 -0
  243. package/dist/migrations/migrator.d.ts +199 -0
  244. package/dist/migrations/prormmigration.d.ts +131 -0
  245. package/dist/migrations/query-interface.d.ts +335 -0
  246. package/dist/migrations/seeder.d.ts +167 -0
  247. package/dist/models/associations.d.ts +131 -0
  248. package/dist/models/associations.js +7 -2
  249. package/dist/models/constraints.d.ts +175 -0
  250. package/dist/models/data-types.d.ts +1656 -0
  251. package/dist/models/decorators.d.ts +328 -0
  252. package/dist/models/decorators.js +61 -82
  253. package/dist/models/eager-load.d.ts +86 -0
  254. package/dist/models/eager-load.js +369 -0
  255. package/dist/models/index.d.ts +13 -0
  256. package/dist/models/indexes.d.ts +325 -0
  257. package/dist/models/methods.d.ts +419 -0
  258. package/dist/models/model-manager.d.ts +76 -0
  259. package/dist/models/model.d.ts +820 -0
  260. package/dist/models/model.js +15 -101
  261. package/dist/models/operators.d.ts +29 -0
  262. package/dist/models/scopes.d.ts +71 -0
  263. package/dist/models/typescript-types.d.ts +177 -0
  264. package/dist/nosql/aerospike/index.d.ts +126 -0
  265. package/dist/nosql/allegrograph/index.d.ts +86 -0
  266. package/dist/nosql/arangodb/index.d.ts +285 -0
  267. package/dist/nosql/arangodb/index.js +274 -2
  268. package/dist/nosql/arangodb/where.d.ts +38 -0
  269. package/dist/nosql/arangodb/where.js +94 -0
  270. package/dist/nosql/azure-blob/index.d.ts +104 -0
  271. package/dist/nosql/beanstalkd/index.d.ts +88 -0
  272. package/dist/nosql/beequeue/index.d.ts +99 -0
  273. package/dist/nosql/bigchaindb/index.d.ts +113 -0
  274. package/dist/nosql/bigtable/index.d.ts +144 -0
  275. package/dist/nosql/blazegraph/index.d.ts +88 -0
  276. package/dist/nosql/bullmq/index.d.ts +83 -0
  277. package/dist/nosql/cassandra/index.d.ts +119 -0
  278. package/dist/nosql/chroma/index.d.ts +151 -0
  279. package/dist/nosql/cloudflare-kv/index.d.ts +120 -0
  280. package/dist/nosql/coherence/index.d.ts +91 -0
  281. package/dist/nosql/cosmosdb/index.d.ts +78 -0
  282. package/dist/nosql/couchbase/index.d.ts +103 -0
  283. package/dist/nosql/dax/index.d.ts +118 -0
  284. package/dist/nosql/deno-kv/index.d.ts +109 -0
  285. package/dist/nosql/dgraph/index.d.ts +80 -0
  286. package/dist/nosql/doris/index.d.ts +88 -0
  287. package/dist/nosql/druid/index.d.ts +95 -0
  288. package/dist/nosql/dynamodb/index.d.ts +643 -0
  289. package/dist/nosql/dynamodb/index.js +423 -0
  290. package/dist/nosql/elasticsearch/index.d.ts +239 -0
  291. package/dist/nosql/etcd/index.d.ts +243 -0
  292. package/dist/nosql/eventhubs/index.d.ts +89 -0
  293. package/dist/nosql/eventstore/index.d.ts +102 -0
  294. package/dist/nosql/faunadb/index.d.ts +141 -0
  295. package/dist/nosql/faunadb/index.js +329 -0
  296. package/dist/nosql/firestore/index.d.ts +67 -0
  297. package/dist/nosql/fluree/index.d.ts +88 -0
  298. package/dist/nosql/fuseki/index.d.ts +94 -0
  299. package/dist/nosql/gcs/index.d.ts +62 -0
  300. package/dist/nosql/gearman/index.d.ts +77 -0
  301. package/dist/nosql/geode/index.d.ts +93 -0
  302. package/dist/nosql/graphdb/index.d.ts +86 -0
  303. package/dist/nosql/graylog/index.d.ts +118 -0
  304. package/dist/nosql/gridgain/index.d.ts +78 -0
  305. package/dist/nosql/hazelcast/index.d.ts +73 -0
  306. package/dist/nosql/hbase/index.d.ts +123 -0
  307. package/dist/nosql/ignite/index.d.ts +80 -0
  308. package/dist/nosql/immudb/index.d.ts +131 -0
  309. package/dist/nosql/index.d.ts +215 -0
  310. package/dist/nosql/infinispan/index.d.ts +95 -0
  311. package/dist/nosql/influxdb/flux-compiler.d.ts +23 -0
  312. package/dist/nosql/influxdb/flux-compiler.js +170 -0
  313. package/dist/nosql/influxdb/index.d.ts +300 -0
  314. package/dist/nosql/influxdb/index.js +0 -0
  315. package/dist/nosql/kafka/index.d.ts +113 -0
  316. package/dist/nosql/keyspaces/index.d.ts +122 -0
  317. package/dist/nosql/kinesis/index.d.ts +121 -0
  318. package/dist/nosql/leveldb/index.d.ts +112 -0
  319. package/dist/nosql/leveldb/index.js +103 -1
  320. package/dist/nosql/lmdb/index.d.ts +76 -0
  321. package/dist/nosql/loki/index.d.ts +126 -0
  322. package/dist/nosql/marklogic/index.d.ts +76 -0
  323. package/dist/nosql/materialize/index.d.ts +91 -0
  324. package/dist/nosql/meilisearch/index.d.ts +76 -0
  325. package/dist/nosql/memcached/index.d.ts +138 -0
  326. package/dist/nosql/milvus/index.d.ts +167 -0
  327. package/dist/nosql/minio/index.d.ts +122 -0
  328. package/dist/nosql/momento/index.d.ts +99 -0
  329. package/dist/nosql/mongodb/index.d.ts +265 -0
  330. package/dist/nosql/mongodb/index.js +139 -0
  331. package/dist/nosql/mongodb/where.d.ts +8 -0
  332. package/dist/nosql/mongodb/where.js +181 -0
  333. package/dist/nosql/nats/index.d.ts +139 -0
  334. package/dist/nosql/nedb/index.d.ts +79 -0
  335. package/dist/nosql/neo4j/index.d.ts +217 -0
  336. package/dist/nosql/neo4j/index.js +26 -14
  337. package/dist/nosql/neptune/index.d.ts +234 -0
  338. package/dist/nosql/neptune/index.js +23 -9
  339. package/dist/nosql/nsq/index.d.ts +93 -0
  340. package/dist/nosql/opensearch/index.d.ts +97 -0
  341. package/dist/nosql/orientdb/index.d.ts +72 -0
  342. package/dist/nosql/papertrail/index.d.ts +120 -0
  343. package/dist/nosql/pinecone/index.d.ts +148 -0
  344. package/dist/nosql/pinot/index.d.ts +90 -0
  345. package/dist/nosql/pouchdb/index.d.ts +95 -0
  346. package/dist/nosql/prometheus/index.d.ts +112 -0
  347. package/dist/nosql/provendb/index.d.ts +143 -0
  348. package/dist/nosql/provendb/index.js +262 -0
  349. package/dist/nosql/pubsub/index.d.ts +83 -0
  350. package/dist/nosql/pulsar/index.d.ts +105 -0
  351. package/dist/nosql/qdrant/index.d.ts +231 -0
  352. package/dist/nosql/qldb/index.d.ts +182 -0
  353. package/dist/nosql/qldb/index.js +302 -1
  354. package/dist/nosql/r2/index.d.ts +160 -0
  355. package/dist/nosql/rabbitmq/index.d.ts +131 -0
  356. package/dist/nosql/ravendb/index.d.ts +138 -0
  357. package/dist/nosql/ravendb/index.js +323 -9
  358. package/dist/nosql/ravendb/where.d.ts +38 -0
  359. package/dist/nosql/ravendb/where.js +94 -0
  360. package/dist/nosql/redis/index.d.ts +267 -0
  361. package/dist/nosql/redis/index.js +19 -5
  362. package/dist/nosql/redpanda/index.d.ts +117 -0
  363. package/dist/nosql/resque/index.d.ts +91 -0
  364. package/dist/nosql/rethinkdb/index.d.ts +194 -0
  365. package/dist/nosql/rethinkdb/index.js +290 -0
  366. package/dist/nosql/rethinkdb/where.d.ts +38 -0
  367. package/dist/nosql/rethinkdb/where.js +94 -0
  368. package/dist/nosql/rocksdb/document-layer.d.ts +162 -0
  369. package/dist/nosql/rocksdb/document-layer.js +338 -0
  370. package/dist/nosql/rocksdb/index.d.ts +112 -0
  371. package/dist/nosql/rocksdb/index.js +103 -1
  372. package/dist/nosql/rocksdb/where-match.d.ts +21 -0
  373. package/dist/nosql/rocksdb/where-match.js +238 -0
  374. package/dist/nosql/rockset/index.d.ts +84 -0
  375. package/dist/nosql/s3/index.d.ts +170 -0
  376. package/dist/nosql/scylladb/index.d.ts +117 -0
  377. package/dist/nosql/signoz/index.d.ts +116 -0
  378. package/dist/nosql/sns/index.d.ts +99 -0
  379. package/dist/nosql/solr/index.d.ts +129 -0
  380. package/dist/nosql/splunk/index.d.ts +125 -0
  381. package/dist/nosql/sqs/index.d.ts +116 -0
  382. package/dist/nosql/stardog/index.d.ts +86 -0
  383. package/dist/nosql/starrocks/index.d.ts +89 -0
  384. package/dist/nosql/store.d.ts +23 -0
  385. package/dist/nosql/sumologic/index.d.ts +119 -0
  386. package/dist/nosql/surrealdb/index.d.ts +156 -0
  387. package/dist/nosql/surrealdb/index.js +174 -1
  388. package/dist/nosql/surrealdb/query-compiler.d.ts +26 -0
  389. package/dist/nosql/surrealdb/query-compiler.js +193 -0
  390. package/dist/nosql/terminusdb/index.d.ts +95 -0
  391. package/dist/nosql/tigergraph/index.d.ts +314 -0
  392. package/dist/nosql/typesense/index.d.ts +82 -0
  393. package/dist/nosql/unqlite/index.d.ts +68 -0
  394. package/dist/nosql/upstash/index.d.ts +80 -0
  395. package/dist/nosql/vercel-kv/index.d.ts +82 -0
  396. package/dist/nosql/victoriametrics/index.d.ts +129 -0
  397. package/dist/nosql/virtuoso/index.d.ts +87 -0
  398. package/dist/nosql/weaviate/index.d.ts +196 -0
  399. package/dist/operators/index.d.ts +7 -0
  400. package/dist/operators.d.ts +2947 -0
  401. package/dist/operators.js +46 -1
  402. package/dist/prisma-migrate/index.d.ts +28 -0
  403. package/dist/prisma-migrate/migration-generator.d.ts +21 -0
  404. package/dist/prisma-migrate/model-generator.d.ts +12 -0
  405. package/dist/prisma-migrate/relations.d.ts +28 -0
  406. package/dist/prisma-migrate/schema-parser.d.ts +42 -0
  407. package/dist/prisma-migrate/type-mapper.d.ts +20 -0
  408. package/dist/prorm.d.ts +2093 -0
  409. package/dist/prorm.js +721 -302
  410. package/dist/query-builders/cte-builder.d.ts +104 -0
  411. package/dist/query-builders/functions/aggregate.d.ts +199 -0
  412. package/dist/query-builders/functions/conditional.d.ts +195 -0
  413. package/dist/query-builders/functions/datetime.d.ts +202 -0
  414. package/dist/query-builders/functions/fulltext.d.ts +220 -0
  415. package/dist/query-builders/functions/index.d.ts +17 -0
  416. package/dist/query-builders/functions/json.d.ts +157 -0
  417. package/dist/query-builders/functions/math.d.ts +215 -0
  418. package/dist/query-builders/functions/string.d.ts +233 -0
  419. package/dist/query-builders/functions/window.d.ts +209 -0
  420. package/dist/query-builders/include-builder.d.ts +85 -0
  421. package/dist/query-builders/index-expression-builder.d.ts +153 -0
  422. package/dist/query-builders/index.d.ts +121 -0
  423. package/dist/query-builders/index.js +10 -0
  424. package/dist/query-builders/insert-builder.d.ts +62 -0
  425. package/dist/query-builders/model-helpers.d.ts +28 -0
  426. package/dist/query-builders/order-limit-builder.d.ts +84 -0
  427. package/dist/query-builders/sql-compiler.d.ts +562 -0
  428. package/dist/query-builders/subquery-builder.d.ts +133 -0
  429. package/dist/query-builders/update-builder.d.ts +71 -0
  430. package/dist/query-builders/view-builder.d.ts +189 -0
  431. package/dist/query-builders/where-builder.d.ts +124 -0
  432. package/dist/query-interface.d.ts +407 -0
  433. package/dist/query-interface.js +84 -0
  434. package/dist/query-optimizers/batch-optimizer.d.ts +175 -0
  435. package/dist/query-optimizers/explain-plans.d.ts +187 -0
  436. package/dist/query-optimizers/index.d.ts +27 -0
  437. package/dist/query-optimizers/prepared-statement-cache.d.ts +252 -0
  438. package/dist/query-optimizers/query-hints.d.ts +201 -0
  439. package/dist/query-optimizers/query-optimizer.d.ts +162 -0
  440. package/dist/query-optimizers/slow-query-logger.d.ts +186 -0
  441. package/dist/replica-manager.d.ts +235 -0
  442. package/dist/schema/index.d.ts +7 -0
  443. package/dist/schema/migration-generator.d.ts +74 -0
  444. package/dist/schema/schema-differ.d.ts +114 -0
  445. package/dist/schema/types.d.ts +246 -0
  446. package/dist/schema-objects.d.ts +78 -0
  447. package/dist/schema-objects.js +203 -0
  448. package/dist/sql-constants.d.ts +240 -0
  449. package/dist/sqlite-advanced.d.ts +572 -0
  450. package/dist/streams/index.d.ts +5 -0
  451. package/dist/streams/transforms.d.ts +120 -0
  452. package/dist/transaction.d.ts +221 -0
  453. package/dist/types/index.d.ts +3123 -0
  454. package/dist/user-management.d.ts +141 -0
  455. package/dist/utils/date.d.ts +149 -0
  456. package/dist/utils/index.d.ts +359 -0
  457. package/dist/utils/string.d.ts +88 -0
  458. package/dist/validators/index.d.ts +7 -0
  459. package/dist/validators/validator.d.ts +306 -0
  460. package/package.json +20 -5
@@ -0,0 +1,328 @@
1
+ /**
2
+ * Model Decorators for TypeScript
3
+ *
4
+ * Provides decorators for defining models:
5
+ * - @Table - Configure table options
6
+ * - @Attribute - Define a column attribute
7
+ * - @PrimaryKey - Mark as primary key
8
+ * - @AutoIncrement - Enable auto-increment
9
+ * - @NotNull - Add NOT NULL constraint
10
+ * - @Default - Set default value
11
+ * - @Unique - Add UNIQUE constraint
12
+ * - @Comment - Add column comment
13
+ */
14
+ import type { IndexOptions } from '../dialects/dialect';
15
+ /**
16
+ * @example
17
+ * ```typescript
18
+ * import { Model, DataTypes, InferAttributes, InferCreationAttributes } from 'orm';
19
+ * import { Table, Attribute, PrimaryKey, AutoIncrement, NotNull, Default } from 'orm/decorators';
20
+ *
21
+ * @Table({ tableName: 'users', timestamps: true })
22
+ * export class User extends Model<InferAttributes<User>, InferCreationAttributes<User>> {
23
+ * @Attribute(DataTypes.INTEGER)
24
+ * @PrimaryKey
25
+ * @AutoIncrement
26
+ * declare id: number;
27
+ *
28
+ * @Attribute(DataTypes.STRING)
29
+ * @NotNull
30
+ * declare name: string;
31
+ *
32
+ * @Attribute(DataTypes.DATE)
33
+ * @Default(DataTypes.NOW)
34
+ * declare createdAt: Date;
35
+ * }
36
+ * ```
37
+ */
38
+ import { DataType } from './data-types';
39
+ interface ModelMetadata {
40
+ tableName?: string;
41
+ schema?: string;
42
+ schemaDelimiter?: string;
43
+ modelName?: string;
44
+ timestamps?: boolean;
45
+ createdAt?: string | false;
46
+ updatedAt?: string | false;
47
+ deletedAt?: string | false;
48
+ underscored?: boolean;
49
+ freezeTableName?: boolean;
50
+ hooks?: Record<string, any> | boolean;
51
+ indexes?: any[];
52
+ comment?: string;
53
+ collate?: string;
54
+ primaryKey?: boolean;
55
+ paranoid?: boolean;
56
+ defaultScope?: Record<string, any>;
57
+ scopes?: Record<string, any>;
58
+ validate?: Record<string, any>;
59
+ name?: {
60
+ singular?: string;
61
+ plural?: string;
62
+ };
63
+ getterMethods?: Record<string, any>;
64
+ setterMethods?: Record<string, any>;
65
+ version?: boolean | string;
66
+ }
67
+ /**
68
+ * Metadata captured for an @HasOne / @HasMany / @BelongsTo / @BelongsToMany
69
+ * decorator, in the same spirit as AttributeMetadata above.
70
+ */
71
+ export interface AssociationMetadata {
72
+ /** Association kind */
73
+ type: 'hasOne' | 'hasMany' | 'belongsTo' | 'belongsToMany';
74
+ /** Property the decorator was applied to (e.g. 'profile', 'posts') */
75
+ propertyKey: string;
76
+ /** Lazily-resolved target model class (avoids circular import ordering issues) */
77
+ target: () => any;
78
+ /** Alias for the association (defaults to the property name) */
79
+ as: string;
80
+ /** Foreign key column name */
81
+ foreignKey?: string;
82
+ /** Source-side key (used by hasOne/hasMany) */
83
+ sourceKey?: string;
84
+ /** Target-side key (used by belongsTo) */
85
+ targetKey?: string;
86
+ /** Other key on the join table (used by belongsToMany) */
87
+ otherKey?: string;
88
+ /** Through model/table for belongsToMany */
89
+ through?: any;
90
+ onDelete?: 'CASCADE' | 'SET NULL' | 'RESTRICT' | 'NO ACTION';
91
+ onUpdate?: 'CASCADE' | 'SET NULL' | 'RESTRICT' | 'NO ACTION';
92
+ hooks?: boolean;
93
+ }
94
+ interface AttributeMetadata {
95
+ fieldName?: string;
96
+ type: DataType | string;
97
+ allowNull?: boolean;
98
+ defaultValue?: any;
99
+ primaryKey?: boolean;
100
+ autoIncrement?: boolean;
101
+ unique?: boolean | string;
102
+ notNull?: boolean;
103
+ comment?: string;
104
+ references?: string;
105
+ referencesKey?: string;
106
+ validate?: Record<string, any>;
107
+ }
108
+ /**
109
+ * Define model options (use on model class)
110
+ *
111
+ * @example
112
+ * @Table({ tableName: 'users', timestamps: true })
113
+ */
114
+ export declare function Table(options?: TableOptions): ClassDecorator;
115
+ /**
116
+ * Table options interface
117
+ */
118
+ export interface TableOptions {
119
+ /** Table name (defaults to model name) */
120
+ tableName?: string;
121
+ /** Schema name */
122
+ schema?: string;
123
+ /** Schema delimiter */
124
+ schemaDelimiter?: string;
125
+ /** Model name override */
126
+ modelName?: string;
127
+ /** Enable timestamps (default: true) */
128
+ timestamps?: boolean;
129
+ /** CreatedAt column name (default: 'createdAt') */
130
+ createdAt?: string | false;
131
+ /** UpdatedAt column name (default: 'updatedAt') */
132
+ updatedAt?: string | false;
133
+ /** DeletedAt column name for paranoid deletes */
134
+ deletedAt?: string | false;
135
+ /** Use underscored column names */
136
+ underscored?: boolean;
137
+ /** Don't pluralize table name */
138
+ freezeTableName?: boolean;
139
+ /** Lifecycle hooks (e.g. beforeCreate, afterCreate) */
140
+ hooks?: Record<string, (...args: any[]) => any> | boolean;
141
+ /** Indexes */
142
+ indexes?: IndexOptions[];
143
+ /** Table comment */
144
+ comment?: string;
145
+ /** Collation (MySQL) */
146
+ collate?: string;
147
+ /** Custom primary key */
148
+ primaryKey?: boolean;
149
+ /** Enable soft-deletes (paranoid mode). Implied when `deletedAt` is set. */
150
+ paranoid?: boolean;
151
+ /** Default scope applied to all queries unless overridden */
152
+ defaultScope?: Record<string, any>;
153
+ /** Named scopes available via Model.scope(name) */
154
+ scopes?: Record<string, any>;
155
+ /** Model-level validation rules */
156
+ validate?: Record<string, any>;
157
+ /** Singular/plural model naming overrides */
158
+ name?: {
159
+ singular?: string;
160
+ plural?: string;
161
+ };
162
+ /** Virtual getter methods */
163
+ getterMethods?: Record<string, (...args: any[]) => any>;
164
+ /** Virtual setter methods */
165
+ setterMethods?: Record<string, (...args: any[]) => any>;
166
+ /** Enable optimistic locking version column */
167
+ version?: boolean | string;
168
+ }
169
+ export declare function Attribute(type: DataType | string): PropertyDecorator;
170
+ /**
171
+ * Column decorator - alias for Attribute
172
+ */
173
+ export declare function Column(type: DataType | string): PropertyDecorator;
174
+ /**
175
+ * AllowNull decorator - mark attribute as nullable (default)
176
+ */
177
+ export declare function AllowNull(allowNull?: boolean): PropertyDecorator;
178
+ /**
179
+ * Mark attribute as primary key
180
+ *
181
+ * @example
182
+ * @Attribute(DataTypes.INTEGER)
183
+ * @PrimaryKey
184
+ */
185
+ export declare function PrimaryKey(): PropertyDecorator;
186
+ /**
187
+ * Enable auto-increment on attribute
188
+ *
189
+ * @example
190
+ * @Attribute(DataTypes.INTEGER)
191
+ * @AutoIncrement
192
+ */
193
+ export declare function AutoIncrement(): PropertyDecorator;
194
+ /**
195
+ * Add NOT NULL constraint
196
+ *
197
+ * @example
198
+ * @Attribute(DataTypes.STRING)
199
+ * @NotNull
200
+ */
201
+ export declare function NotNull(): PropertyDecorator;
202
+ /**
203
+ * Set default value
204
+ *
205
+ * @example
206
+ * @Default('value')
207
+ * @Default(DataTypes.NOW)
208
+ * @Default(() => Math.random())
209
+ */
210
+ export declare function Default(value: any): PropertyDecorator;
211
+ /**
212
+ * Add UNIQUE constraint
213
+ *
214
+ * @example
215
+ * @Unique
216
+ * @Unique('unique_name')
217
+ */
218
+ export declare function Unique(nameOrOptions?: string | boolean): PropertyDecorator;
219
+ /**
220
+ * Add comment to column
221
+ *
222
+ * @example
223
+ * @Comment('User email address')
224
+ */
225
+ export declare function Comment(text: string): PropertyDecorator;
226
+ /**
227
+ * Define a hasOne association
228
+ *
229
+ * @example
230
+ * @HasOne(() => Profile)
231
+ * declare profile: HasOne<Profile>;
232
+ */
233
+ export declare function HasOne(targetFn: () => any, options?: HasOneOptions): PropertyDecorator;
234
+ /**
235
+ * Define a hasMany association
236
+ *
237
+ * @example
238
+ * @HasMany(() => Post)
239
+ * declare posts: HasMany<Post>;
240
+ */
241
+ export declare function HasMany(targetFn: () => any, options?: HasManyOptions): PropertyDecorator;
242
+ /**
243
+ * Define a belongsTo association
244
+ *
245
+ * @example
246
+ * @BelongsTo(() => User)
247
+ * declare user: BelongsTo<User>;
248
+ */
249
+ export declare function BelongsTo(targetFn: () => any, options?: BelongsToOptions): PropertyDecorator;
250
+ /**
251
+ * Define a belongsToMany association
252
+ *
253
+ * @example
254
+ * @BelongsToMany(() => Role, { through: UserRole })
255
+ * declare roles: BelongsToMany<Role>;
256
+ */
257
+ export declare function BelongsToMany(targetFn: () => any, options: BelongsToManyOptions): PropertyDecorator;
258
+ export interface HasOneOptions {
259
+ as?: string;
260
+ foreignKey?: string;
261
+ sourceKey?: string;
262
+ onDelete?: 'CASCADE' | 'SET NULL' | 'RESTRICT' | 'NO ACTION';
263
+ onUpdate?: 'CASCADE' | 'SET NULL' | 'RESTRICT' | 'NO ACTION';
264
+ hooks?: boolean;
265
+ }
266
+ export interface HasManyOptions {
267
+ as?: string;
268
+ foreignKey?: string;
269
+ sourceKey?: string;
270
+ onDelete?: 'CASCADE' | 'SET NULL' | 'RESTRICT' | 'NO ACTION';
271
+ onUpdate?: 'CASCADE' | 'SET NULL' | 'RESTRICT' | 'NO ACTION';
272
+ hooks?: boolean;
273
+ }
274
+ export interface BelongsToOptions {
275
+ as?: string;
276
+ foreignKey?: string;
277
+ targetKey?: string;
278
+ onDelete?: 'CASCADE' | 'SET NULL' | 'RESTRICT' | 'NO ACTION';
279
+ onUpdate?: 'CASCADE' | 'SET NULL' | 'RESTRICT' | 'NO ACTION';
280
+ hooks?: boolean;
281
+ }
282
+ export interface BelongsToManyOptions {
283
+ as?: string;
284
+ through: any;
285
+ foreignKey?: string;
286
+ otherKey?: string;
287
+ onDelete?: 'CASCADE' | 'SET NULL' | 'RESTRICT' | 'NO ACTION';
288
+ onUpdate?: 'CASCADE' | 'SET NULL' | 'RESTRICT' | 'NO ACTION';
289
+ hooks?: boolean;
290
+ }
291
+ /**
292
+ * Get model metadata
293
+ */
294
+ export declare function getModelMetadata(modelName: string): ModelMetadata | undefined;
295
+ /**
296
+ * Get attribute metadata for a model
297
+ */
298
+ export declare function getAttributeMetadata(modelName: string): Map<string, AttributeMetadata> | undefined;
299
+ /**
300
+ * Get association metadata (from @HasOne/@HasMany/@BelongsTo/@BelongsToMany)
301
+ * recorded for a model.
302
+ */
303
+ export declare function getAssociationMetadata(modelName: string): AssociationMetadata[] | undefined;
304
+ /**
305
+ * Extract all attributes from a model class
306
+ */
307
+ export declare function getModelAttributes<T = any>(model: new () => T): Record<string, AttributeMetadata>;
308
+ /**
309
+ * Clear all metadata (useful for testing)
310
+ */
311
+ export declare function clearMetadata(): void;
312
+ /**
313
+ * Type helper for hasOne association return
314
+ */
315
+ export type HasOne<T> = T;
316
+ /**
317
+ * Type helper for hasMany association return
318
+ */
319
+ export type HasMany<T> = T[];
320
+ /**
321
+ * Type helper for belongsTo association return
322
+ */
323
+ export type BelongsTo<T> = T | null;
324
+ /**
325
+ * Type helper for belongsToMany association return
326
+ */
327
+ export type BelongsToMany<T> = T[];
328
+ export {};
@@ -110,20 +110,49 @@ function Table(options = {}) {
110
110
  * @Attribute(DataTypes.STRING)
111
111
  * @Attribute(DataTypes.INTEGER)
112
112
  */
113
+ /**
114
+ * Get (creating if needed) the attribute entry for a decorated property.
115
+ *
116
+ * Stacked property decorators are applied bottom-up, so a modifier such as
117
+ * `@PrimaryKey` frequently runs *before* the `@Column` that declares the
118
+ * attribute. These modifiers previously bailed out when the entry did not exist
119
+ * yet, and `@Column` then replaced whatever they had set - so the documented
120
+ * ordering
121
+ *
122
+ * @Column(DataTypes.INTEGER())
123
+ * @PrimaryKey()
124
+ * @AutoIncrement()
125
+ * declare id: number;
126
+ *
127
+ * produced a plain nullable INTEGER with no primary key and no auto-increment.
128
+ * Every decorator now goes through this helper and merges, making the stack
129
+ * order-independent.
130
+ */
131
+ function ensureAttr(target, propertyKey) {
132
+ const modelName = target?.constructor?.name;
133
+ if (!modelName)
134
+ return undefined;
135
+ if (!attributeMetadata.has(modelName)) {
136
+ attributeMetadata.set(modelName, new Map());
137
+ }
138
+ const attrs = attributeMetadata.get(modelName);
139
+ const fieldName = String(propertyKey);
140
+ let attr = attrs.get(fieldName);
141
+ if (!attr) {
142
+ // Placeholder type; a later @Column/@Attribute overwrites just the type.
143
+ attr = { type: data_types_1.DataTypes.INTEGER(), allowNull: true };
144
+ attrs.set(fieldName, attr);
145
+ }
146
+ return attr;
147
+ }
113
148
  function Attribute(type) {
114
149
  return function (target, propertyKey) {
115
- const modelName = target.constructor?.name;
116
- if (!modelName)
150
+ const attr = ensureAttr(target, propertyKey);
151
+ if (!attr)
117
152
  return;
118
- if (!attributeMetadata.has(modelName)) {
119
- attributeMetadata.set(modelName, new Map());
120
- }
121
- const attrs = attributeMetadata.get(modelName);
122
- const fieldName = String(propertyKey);
123
- attrs.set(fieldName, {
124
- type,
125
- allowNull: true,
126
- });
153
+ // Set only the type: modifiers such as @PrimaryKey / @AutoIncrement may
154
+ // already have run (decorators apply bottom-up) and must not be discarded.
155
+ attr.type = type;
127
156
  };
128
157
  }
129
158
  /**
@@ -137,17 +166,9 @@ function Column(type) {
137
166
  */
138
167
  function AllowNull(allowNull = true) {
139
168
  return function (target, propertyKey) {
140
- const modelName = target.constructor?.name;
141
- if (!modelName)
142
- return;
143
- const attrs = attributeMetadata.get(modelName);
144
- if (attrs) {
145
- const fieldName = String(propertyKey);
146
- const attr = attrs.get(fieldName);
147
- if (attr) {
148
- attr.allowNull = allowNull;
149
- }
150
- }
169
+ const attr = ensureAttr(target, propertyKey);
170
+ if (attr)
171
+ attr.allowNull = allowNull;
151
172
  };
152
173
  }
153
174
  /**
@@ -159,17 +180,8 @@ function AllowNull(allowNull = true) {
159
180
  */
160
181
  function PrimaryKey() {
161
182
  return function (target, propertyKey) {
162
- const modelName = target.constructor?.name;
163
- if (!modelName)
164
- return;
165
- const attrs = attributeMetadata.get(modelName);
166
- if (attrs) {
167
- const fieldName = String(propertyKey);
168
- let attr = attrs.get(fieldName);
169
- if (!attr) {
170
- attr = { type: data_types_1.DataTypes.INTEGER() };
171
- attrs.set(fieldName, attr);
172
- }
183
+ const attr = ensureAttr(target, propertyKey);
184
+ if (attr) {
173
185
  attr.primaryKey = true;
174
186
  attr.allowNull = false;
175
187
  }
@@ -184,17 +196,9 @@ function PrimaryKey() {
184
196
  */
185
197
  function AutoIncrement() {
186
198
  return function (target, propertyKey) {
187
- const modelName = target.constructor?.name;
188
- if (!modelName)
189
- return;
190
- const attrs = attributeMetadata.get(modelName);
191
- if (attrs) {
192
- const fieldName = String(propertyKey);
193
- const attr = attrs.get(fieldName);
194
- if (attr) {
195
- attr.autoIncrement = true;
196
- }
197
- }
199
+ const attr = ensureAttr(target, propertyKey);
200
+ if (attr)
201
+ attr.autoIncrement = true;
198
202
  };
199
203
  }
200
204
  /**
@@ -209,14 +213,10 @@ function NotNull() {
209
213
  const modelName = target.constructor?.name;
210
214
  if (!modelName)
211
215
  return;
212
- const attrs = attributeMetadata.get(modelName);
213
- if (attrs) {
214
- const fieldName = String(propertyKey);
215
- const attr = attrs.get(fieldName);
216
- if (attr) {
217
- attr.notNull = true;
218
- attr.allowNull = false;
219
- }
216
+ const attr = ensureAttr(target, propertyKey);
217
+ if (attr) {
218
+ attr.notNull = true;
219
+ attr.allowNull = false;
220
220
  }
221
221
  };
222
222
  }
@@ -230,16 +230,9 @@ function NotNull() {
230
230
  */
231
231
  function Default(value) {
232
232
  return function (target, propertyKey) {
233
- const modelName = target.constructor?.name;
234
- if (!modelName)
235
- return;
236
- const attrs = attributeMetadata.get(modelName);
237
- if (attrs) {
238
- const fieldName = String(propertyKey);
239
- const attr = attrs.get(fieldName);
240
- if (attr) {
241
- attr.defaultValue = value;
242
- }
233
+ const attr = ensureAttr(target, propertyKey);
234
+ if (attr) {
235
+ attr.defaultValue = value;
243
236
  }
244
237
  };
245
238
  }
@@ -252,16 +245,9 @@ function Default(value) {
252
245
  */
253
246
  function Unique(nameOrOptions) {
254
247
  return function (target, propertyKey) {
255
- const modelName = target.constructor?.name;
256
- if (!modelName)
257
- return;
258
- const attrs = attributeMetadata.get(modelName);
259
- if (attrs) {
260
- const fieldName = String(propertyKey);
261
- const attr = attrs.get(fieldName);
262
- if (attr) {
263
- attr.unique = typeof nameOrOptions === 'string' ? nameOrOptions : true;
264
- }
248
+ const attr = ensureAttr(target, propertyKey);
249
+ if (attr) {
250
+ attr.unique = typeof nameOrOptions === 'string' ? nameOrOptions : true;
265
251
  }
266
252
  };
267
253
  }
@@ -273,16 +259,9 @@ function Unique(nameOrOptions) {
273
259
  */
274
260
  function Comment(text) {
275
261
  return function (target, propertyKey) {
276
- const modelName = target.constructor?.name;
277
- if (!modelName)
278
- return;
279
- const attrs = attributeMetadata.get(modelName);
280
- if (attrs) {
281
- const fieldName = String(propertyKey);
282
- const attr = attrs.get(fieldName);
283
- if (attr) {
284
- attr.comment = text;
285
- }
262
+ const attr = ensureAttr(target, propertyKey);
263
+ if (attr) {
264
+ attr.comment = text;
286
265
  }
287
266
  };
288
267
  }
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Shared eager-loading (`include`) implementation.
3
+ *
4
+ * There used to be two separate implementations of this: one inside
5
+ * `Prorm.define()`'s `findAll` closure (used by models created with
6
+ * `prorm.define(...)`) and one in `models/model.ts` (`processNestedIncludes`,
7
+ * used by the class-based `Model` API). Both were live, and they had drifted:
8
+ * the model.ts copy treated `belongsTo` exactly like `hasMany` - querying the
9
+ * target table for a foreign key that actually lives on the parent - and
10
+ * skipped `belongsToMany` entirely with a bare `continue`. Which of the two
11
+ * bugs you hit depended on which API you had used to define the model.
12
+ *
13
+ * Both paths now call `loadIncludes()` below.
14
+ */
15
+ /** Minimal view of the association records kept in `Prorm.associations`. */
16
+ export interface EagerLoadAssociation {
17
+ type: 'belongsTo' | 'hasOne' | 'hasMany' | 'belongsToMany';
18
+ source: any;
19
+ target: any;
20
+ foreignKey: string | string[];
21
+ as?: string;
22
+ otherKey?: string;
23
+ through?: string;
24
+ throughModel?: any;
25
+ options?: Record<string, any>;
26
+ }
27
+ /** What the loader needs from the owning Prorm instance. */
28
+ export interface EagerLoadContext {
29
+ /**
30
+ * All registered associations, in declaration order.
31
+ *
32
+ * Must be an array, not a Map iterator: this is rescanned once per include
33
+ * and again for every nested level, and a single-use iterator would come
34
+ * back empty after the first scan.
35
+ */
36
+ associations: readonly EagerLoadAssociation[];
37
+ /** Registered models by name, for resolving a `through` given as a string. */
38
+ models: Record<string, any> | Map<string, any>;
39
+ }
40
+ /** Resolve a model's primary key attribute name, defaulting to `id`. */
41
+ export declare function resolvePrimaryKeyAttr(m: any): string;
42
+ /**
43
+ * Find the association backing one `include` entry.
44
+ *
45
+ * Matching is deliberately strict about aliases. The previous implementation
46
+ * scanned for any association linking the two models and took the first hit,
47
+ * with a second pass that also matched the *reverse* direction - so with both
48
+ * `Post.belongsTo(User, { as: 'author' })` and
49
+ * `Post.belongsTo(User, { as: 'editor' })` declared, an unaliased
50
+ * `include: [User]` silently bound to whichever was registered first, and could
51
+ * bind to an association pointing the other way and then apply the wrong
52
+ * foreign-key logic to it.
53
+ */
54
+ export declare function resolveIncludeAssociation(ctx: EagerLoadContext, parentModel: any, parentModelName: string, includeOpt: any): EagerLoadAssociation;
55
+ /**
56
+ * An include filters its parents when it is `required`, and `required` defaults
57
+ * to true whenever the include carries its own `where` - the same rule Sequelize
58
+ * uses, and the one the docs describe as INNER JOIN semantics.
59
+ */
60
+ export declare function includeFiltersParents(includeOpt: any): boolean;
61
+ /**
62
+ * Collect the parent-key values that satisfy a filtering (`required`) include.
63
+ *
64
+ * This is what gives `required: true` and `include.where` their INNER JOIN
65
+ * *semantics*: the set of parent keys with a matching child is resolved first,
66
+ * and the caller adds it to the main query's WHERE so that LIMIT/OFFSET apply
67
+ * after filtering rather than before. `include` still does not emit a single
68
+ * JOINed SELECT - associations are fetched with their own queries - but the
69
+ * rows a filtering include selects are now correct.
70
+ *
71
+ * Returns the list of matching parent key values, plus the parent attribute
72
+ * those values should be compared against.
73
+ */
74
+ export declare function resolveRequiredIncludeFilter(ctx: EagerLoadContext, parentModel: any, parentModelName: string, rawIncludeOpt: any): Promise<{
75
+ parentAttr: string;
76
+ values: any[];
77
+ } | null>;
78
+ /**
79
+ * Eager-load `includeList` onto `parentRows`, recursing into nested includes.
80
+ *
81
+ * Failures are raised as `EagerLoadError` rather than swallowed. They used to be
82
+ * caught and reported as an empty result, which made a typo'd alias, a missing
83
+ * foreign key column, an unresolvable through model and a genuinely childless
84
+ * parent all look identical - and hid most of the bugs this module now fixes.
85
+ */
86
+ export declare function loadIncludes(ctx: EagerLoadContext, parentRows: any[], parentModel: any, parentModelName: string, includeList: any[]): Promise<void>;