ts-prorm-orm 1.1.0 → 1.2.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 (460) hide show
  1. package/CHANGELOG.md +83 -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 +711 -0
  239. package/dist/index.js +19 -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,135 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.commands = void 0;
4
+ // Billing command module for the prorm CLI. Reports usage, changes plans, buys
5
+ // runner minutes, and opens the Stripe customer portal, all against the
6
+ // dashboard billing API. Every command requires an authenticated session.
7
+ const child_process_1 = require("child_process");
8
+ const framework_1 = require("../framework");
9
+ const cloud_1 = require("../cloud");
10
+ /** Best-effort open a URL in the user's browser; failures are ignored. */
11
+ function openBrowser(url) {
12
+ try {
13
+ const cmd = process.platform === 'darwin' ? 'open' : process.platform === 'win32' ? 'cmd' : 'xdg-open';
14
+ const args = process.platform === 'win32' ? ['/c', 'start', '', url] : [url];
15
+ const child = (0, child_process_1.spawn)(cmd, args, { detached: true, stdio: 'ignore' });
16
+ child.unref();
17
+ }
18
+ catch {
19
+ // Ignore — the user can open the URL manually.
20
+ }
21
+ }
22
+ function teamQuery(team) {
23
+ return typeof team === 'string' && team ? { team } : undefined;
24
+ }
25
+ function billingUrl() {
26
+ return (0, cloud_1.loadConfig)().apiUrl.replace(/\/?$/, '') + '/dashboard/billing';
27
+ }
28
+ function printUsage(u) {
29
+ framework_1.out.info(`Plan: ${u.plan}`);
30
+ framework_1.out.info(`Used minutes: ${u.usedMinutes}`);
31
+ framework_1.out.info(`Included: ${u.includedMinutes}`);
32
+ framework_1.out.info(`Remaining free: ${u.remainingFreeMinutes}`);
33
+ framework_1.out.info(`Period end: ${u.periodEnd ?? '(n/a)'}`);
34
+ }
35
+ const usage = (0, framework_1.defineCommand)({
36
+ name: 'billing usage',
37
+ description: 'Show plan and runner-minute usage for the current period.',
38
+ group: 'Billing',
39
+ flags: [
40
+ { name: 'team', type: 'string', description: 'Team slug to scope billing to.' },
41
+ { name: 'json', type: 'boolean', description: 'Output raw JSON.' },
42
+ ],
43
+ examples: ['orm-cli billing usage', 'orm-cli billing usage --team acme', 'orm-cli billing usage --json'],
44
+ run: async (ctx) => {
45
+ (0, cloud_1.requireAuth)();
46
+ const u = await (0, cloud_1.api)('/api/dashboard/billing/usage', { query: teamQuery(ctx.flags.team) });
47
+ if (ctx.flags.json) {
48
+ framework_1.out.json(u);
49
+ return;
50
+ }
51
+ printUsage(u);
52
+ },
53
+ });
54
+ const plan = (0, framework_1.defineCommand)({
55
+ name: 'billing plan',
56
+ description: 'Switch the billing plan (free, payg, or flat).',
57
+ group: 'Billing',
58
+ positionals: [
59
+ { name: 'plan', description: 'Target plan.', required: true, choices: ['free', 'payg', 'flat'] },
60
+ ],
61
+ flags: [
62
+ { name: 'team', type: 'string', description: 'Team slug to scope billing to.' },
63
+ { name: 'json', type: 'boolean', description: 'Output raw JSON.' },
64
+ ],
65
+ examples: ['orm-cli billing plan payg', 'orm-cli billing plan flat --team acme', 'orm-cli billing plan free'],
66
+ run: async (ctx) => {
67
+ (0, cloud_1.requireAuth)();
68
+ const target = ctx.positionals[0];
69
+ const query = teamQuery(ctx.flags.team);
70
+ const result = await (0, cloud_1.api)('/api/dashboard/billing/subscription', target === 'free'
71
+ ? { method: 'DELETE', query }
72
+ : { method: 'POST', body: { plan: target }, query });
73
+ if (ctx.flags.json) {
74
+ framework_1.out.json(result);
75
+ return;
76
+ }
77
+ framework_1.out.success(`Plan set to ${result?.plan ?? target}.`);
78
+ if (result && result.clientSecret) {
79
+ framework_1.out.warn('This plan needs card confirmation — finish in the dashboard billing page.');
80
+ framework_1.out.info(billingUrl());
81
+ }
82
+ },
83
+ });
84
+ const buy = (0, framework_1.defineCommand)({
85
+ name: 'billing buy',
86
+ description: 'Buy additional runner minutes.',
87
+ group: 'Billing',
88
+ positionals: [{ name: 'minutes', description: 'Number of minutes to buy.', required: true }],
89
+ flags: [{ name: 'team', type: 'string', description: 'Team slug to scope billing to.' }],
90
+ examples: ['orm-cli billing buy 500', 'orm-cli billing buy 1000 --team acme'],
91
+ run: async (ctx) => {
92
+ (0, cloud_1.requireAuth)();
93
+ const minutes = Number(ctx.positionals[0]);
94
+ if (!Number.isFinite(minutes) || !Number.isInteger(minutes) || minutes <= 0) {
95
+ framework_1.out.error(`Invalid minutes: '${ctx.positionals[0]}'. Pass a positive whole number.`);
96
+ return 1;
97
+ }
98
+ const result = await (0, cloud_1.api)('/api/dashboard/billing/buy-minutes', { method: 'POST', body: { minutes: minutes }, query: teamQuery(ctx.flags.team) });
99
+ const price = typeof result?.amountCents === 'number' ? `$${(result.amountCents / 100).toFixed(2)}` : '(unknown)';
100
+ framework_1.out.info(`${minutes} minutes — ${price}`);
101
+ framework_1.out.info('Confirm payment in the dashboard billing page (card confirmation needs the browser):');
102
+ framework_1.out.info(billingUrl());
103
+ return 0;
104
+ },
105
+ });
106
+ const portal = (0, framework_1.defineCommand)({
107
+ name: 'billing portal',
108
+ description: 'Open the Stripe customer billing portal.',
109
+ group: 'Billing',
110
+ flags: [{ name: 'team', type: 'string', description: 'Team slug to scope billing to.' }],
111
+ examples: ['orm-cli billing portal', 'orm-cli billing portal --team acme'],
112
+ run: async (ctx) => {
113
+ (0, cloud_1.requireAuth)();
114
+ const { url } = await (0, cloud_1.api)('/api/dashboard/billing/portal', {
115
+ method: 'POST',
116
+ query: teamQuery(ctx.flags.team),
117
+ });
118
+ framework_1.out.info(url);
119
+ openBrowser(url);
120
+ },
121
+ });
122
+ const status = (0, framework_1.defineCommand)({
123
+ name: 'billing status',
124
+ description: 'One-line billing summary (alias of usage).',
125
+ group: 'Billing',
126
+ flags: [{ name: 'team', type: 'string', description: 'Team slug to scope billing to.' }],
127
+ examples: ['orm-cli billing status', 'orm-cli billing status --team acme'],
128
+ run: async (ctx) => {
129
+ (0, cloud_1.requireAuth)();
130
+ const u = await (0, cloud_1.api)('/api/dashboard/billing/usage', { query: teamQuery(ctx.flags.team) });
131
+ framework_1.out.info(`${u.plan}: ${u.usedMinutes}/${u.includedMinutes} min used, ${u.remainingFreeMinutes} free remaining` +
132
+ (u.periodEnd ? ` (period ends ${u.periodEnd})` : ''));
133
+ },
134
+ });
135
+ exports.commands = [usage, plan, buy, portal, status];
@@ -0,0 +1,2 @@
1
+ import type { Command } from '../framework';
2
+ export declare const commands: Command[];
@@ -0,0 +1,168 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.commands = void 0;
37
+ // Code command module for the prorm CLI. Manages a user's saved code snippets
38
+ // (a user has many). Snippet source is read from / written to the local
39
+ // filesystem; metadata and source are persisted server-side via the dashboard
40
+ // API at /api/dashboard/code.
41
+ const fs = __importStar(require("fs"));
42
+ const path = __importStar(require("path"));
43
+ const framework_1 = require("../framework");
44
+ const cloud_1 = require("../cloud");
45
+ const prompt_1 = require("../prompt");
46
+ const io_1 = require("../io");
47
+ const str = (v) => (typeof v === 'string' && v ? v : undefined);
48
+ const push = (0, framework_1.defineCommand)({
49
+ name: 'code push',
50
+ description: 'Create or update a code snippet from a local file.',
51
+ group: 'Code',
52
+ positionals: [{ name: 'file', description: 'Path to the source file to upload.', required: true }],
53
+ flags: [
54
+ { name: 'title', type: 'string', description: 'Snippet title (defaults to the file basename).' },
55
+ { name: 'language', type: 'string', description: 'Source language.', default: 'typescript' },
56
+ { name: 'dialect', type: 'string', description: 'Database dialect the snippet targets.' },
57
+ { name: 'public', type: 'boolean', description: 'Make the snippet publicly visible.' },
58
+ { name: 'id', type: 'string', description: 'Update this snippet id instead of creating a new one.' },
59
+ ],
60
+ examples: [
61
+ 'orm-cli code push query.ts',
62
+ 'orm-cli code push query.ts --title "User query" --language typescript --dialect postgres',
63
+ 'orm-cli code push query.ts --public',
64
+ 'orm-cli code push query.ts --id code_123',
65
+ ],
66
+ run: async (ctx) => {
67
+ (0, cloud_1.requireAuth)();
68
+ const file = ctx.positionals[0];
69
+ const source = fs.readFileSync(file, 'utf8');
70
+ const title = str(ctx.flags.title) ?? path.basename(file);
71
+ const language = str(ctx.flags.language) ?? 'typescript';
72
+ const dialect = str(ctx.flags.dialect);
73
+ const isPublic = ctx.flags.public === true;
74
+ const body = { title, source, language, dialect, isPublic };
75
+ const id = str(ctx.flags.id);
76
+ const data = id
77
+ ? await (0, cloud_1.api)('/api/dashboard/code/' + id, { method: 'PUT', body })
78
+ : await (0, cloud_1.api)('/api/dashboard/code', { method: 'POST', body });
79
+ framework_1.out.success(`Saved code ${data.id}`);
80
+ },
81
+ });
82
+ const list = (0, framework_1.defineCommand)({
83
+ name: 'code list',
84
+ description: 'List your code snippets.',
85
+ group: 'Code',
86
+ flags: [
87
+ { name: 'json', type: 'boolean', description: 'Output raw JSON.' },
88
+ { name: 'mine', type: 'boolean', description: 'Only your own snippets.', default: true },
89
+ { name: 'limit', type: 'number', description: 'Max snippets to return.', default: 50 },
90
+ { name: 'offset', type: 'number', description: 'Skip this many snippets.' },
91
+ ],
92
+ examples: ['orm-cli code list', 'orm-cli code list --limit 100 --offset 100', 'orm-cli code list --no-mine'],
93
+ run: async (ctx) => {
94
+ (0, cloud_1.requireAuth)();
95
+ const mine = ctx.flags.mine !== false;
96
+ const data = await (0, cloud_1.api)('/api/dashboard/code', {
97
+ query: {
98
+ mine,
99
+ limit: typeof ctx.flags.limit === 'number' ? ctx.flags.limit : undefined,
100
+ offset: typeof ctx.flags.offset === 'number' ? ctx.flags.offset : undefined,
101
+ },
102
+ });
103
+ const rows = data.code ?? [];
104
+ if (ctx.flags.json === true) {
105
+ framework_1.out.json(rows);
106
+ return;
107
+ }
108
+ framework_1.out.table(rows.map((r) => ({
109
+ id: r.id,
110
+ title: r.title,
111
+ language: r.language,
112
+ dialect: r.dialect ?? '',
113
+ public: r.public ?? r.isPublic ?? false,
114
+ updatedAt: r.updatedAt ?? '',
115
+ })));
116
+ },
117
+ });
118
+ const pull = (0, framework_1.defineCommand)({
119
+ name: 'code pull',
120
+ description: 'Fetch a code snippet by id and print or save its source.',
121
+ group: 'Code',
122
+ positionals: [{ name: 'id', description: 'Snippet id to fetch.', required: true }],
123
+ flags: [
124
+ { name: 'out', type: 'string', description: 'Write the source to this file instead of stdout.' },
125
+ { name: 'yes', alias: 'y', type: 'boolean', description: 'Overwrite an existing local file without prompting.' },
126
+ ],
127
+ examples: ['orm-cli code pull code_123', 'orm-cli code pull code_123 --out query.ts'],
128
+ run: async (ctx) => {
129
+ (0, cloud_1.requireAuth)();
130
+ const id = ctx.positionals[0];
131
+ const dest = str(ctx.flags.out);
132
+ if (dest) {
133
+ const assumeYes = ctx.flags.yes === true || (0, framework_1.getGlobalOptions)().assumeYes;
134
+ if (!(await (0, io_1.ensureOverwrite)(dest, assumeYes)))
135
+ return 1;
136
+ }
137
+ const data = await (0, cloud_1.api)('/api/dashboard/code/' + id);
138
+ if (dest) {
139
+ fs.writeFileSync(dest, data.source);
140
+ framework_1.out.success(`Wrote ${data.id} to ${dest}`);
141
+ return 0;
142
+ }
143
+ framework_1.out.info(data.source);
144
+ return 0;
145
+ },
146
+ });
147
+ const rm = (0, framework_1.defineCommand)({
148
+ name: 'code rm',
149
+ description: 'Delete a code snippet by id.',
150
+ group: 'Code',
151
+ positionals: [{ name: 'id', description: 'Snippet id to delete.', required: true }],
152
+ flags: [{ name: 'yes', alias: 'y', type: 'boolean', description: 'Skip the confirmation prompt.' }],
153
+ examples: ['orm-cli code rm code_123 --yes', 'orm-cli code rm code_123 -y'],
154
+ run: async (ctx) => {
155
+ (0, cloud_1.requireAuth)();
156
+ const id = ctx.positionals[0];
157
+ const assumeYes = ctx.flags.yes === true || (0, framework_1.getGlobalOptions)().assumeYes;
158
+ framework_1.out.warn(`This will permanently delete code ${id}.`);
159
+ if (!(await (0, prompt_1.confirm)(`Delete code ${id}?`, { assumeYes, default: false }))) {
160
+ framework_1.out.info('Aborted (pass --yes to skip this prompt in a non-interactive session).');
161
+ return 1;
162
+ }
163
+ await (0, cloud_1.api)('/api/dashboard/code/' + id, { method: 'DELETE' });
164
+ framework_1.out.success(`Deleted code ${id}`);
165
+ return 0;
166
+ },
167
+ });
168
+ exports.commands = [push, list, pull, rm];
@@ -0,0 +1,2 @@
1
+ import type { Command } from '../framework';
2
+ export declare const commands: Command[];
@@ -0,0 +1,154 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.commands = void 0;
4
+ // Config command module for the prorm CLI. Reads and writes the local CLI
5
+ // config at ~/.prorm/config.json (see ../cloud). These commands are purely
6
+ // local — they never call the dashboard API — so you can inspect or repair the
7
+ // stored context (apiUrl, token, team) without being authenticated.
8
+ const framework_1 = require("../framework");
9
+ const cloud_1 = require("../cloud");
10
+ /** Top-level keys that `config set` is allowed to write. */
11
+ const SETTABLE_KEYS = ['apiUrl', 'token', 'teamId', 'teamSlug', 'defaultDb'];
12
+ /** Keys that must always be present — `config unset` refuses to remove them. */
13
+ const REQUIRED_KEYS = ['apiUrl'];
14
+ /** Mask a secret value (token), revealing only the last 4 chars. */
15
+ function maskToken(value) {
16
+ const s = String(value ?? '');
17
+ if (!s)
18
+ return '';
19
+ if (s.length <= 8)
20
+ return '*'.repeat(s.length);
21
+ return `${'*'.repeat(s.length - 4)}${s.slice(-4)}`;
22
+ }
23
+ /** True when the (dotted) key refers to the token. */
24
+ function isTokenKey(key) {
25
+ return key === 'token';
26
+ }
27
+ /** Resolve a dotted path (e.g. `apiUrl`, `user.email`) against the config. */
28
+ function getByPath(cfg, key) {
29
+ return key.split('.').reduce((acc, part) => {
30
+ if (acc && typeof acc === 'object' && part in acc) {
31
+ return acc[part];
32
+ }
33
+ return undefined;
34
+ }, cfg);
35
+ }
36
+ /** Return a shallow copy of the config with the token masked. */
37
+ function maskConfig(cfg) {
38
+ const copy = { ...cfg };
39
+ if (copy.token !== undefined)
40
+ copy.token = maskToken(copy.token);
41
+ return copy;
42
+ }
43
+ const get = (0, framework_1.defineCommand)({
44
+ name: 'config get',
45
+ description: 'Print a single config value by key (dotted paths allowed).',
46
+ group: 'Config',
47
+ positionals: [
48
+ { name: 'key', description: 'Config key, e.g. apiUrl or teamSlug.', required: true },
49
+ ],
50
+ flags: [{ name: 'json', type: 'boolean', description: 'Output raw JSON.' }],
51
+ examples: [
52
+ 'orm-cli config get apiUrl',
53
+ 'orm-cli config get teamSlug',
54
+ 'orm-cli config get token',
55
+ 'orm-cli config get apiUrl --json',
56
+ ],
57
+ run: (ctx) => {
58
+ const key = ctx.positionals[0];
59
+ const cfg = (0, cloud_1.loadConfig)();
60
+ const raw = getByPath(cfg, key);
61
+ const value = raw === undefined ? undefined : isTokenKey(key) ? maskToken(raw) : raw;
62
+ if (ctx.flags.json) {
63
+ framework_1.out.json({ key, value: value ?? null });
64
+ return 0;
65
+ }
66
+ framework_1.out.info(value === undefined ? '(unset)' : String(value));
67
+ return 0;
68
+ },
69
+ });
70
+ const set = (0, framework_1.defineCommand)({
71
+ name: 'config set',
72
+ description: 'Set a config value (stored as a string).',
73
+ group: 'Config',
74
+ positionals: [
75
+ { name: 'key', description: `Config key, one of: ${SETTABLE_KEYS.join(', ')}.`, required: true },
76
+ { name: 'value', description: 'The value to store.', required: true },
77
+ ],
78
+ examples: [
79
+ 'orm-cli config set apiUrl https://api.example.com',
80
+ 'orm-cli config set teamSlug acme',
81
+ 'orm-cli config set teamId team_123',
82
+ ],
83
+ run: (ctx) => {
84
+ const key = ctx.positionals[0];
85
+ const value = ctx.positionals[1];
86
+ if (!SETTABLE_KEYS.includes(key)) {
87
+ framework_1.out.error(`Unknown config key '${key}'. Allowed: ${SETTABLE_KEYS.join(', ')}`);
88
+ return 1;
89
+ }
90
+ (0, cloud_1.updateConfig)({ [key]: value });
91
+ framework_1.out.success(`Set ${key}`);
92
+ return 0;
93
+ },
94
+ });
95
+ const list = (0, framework_1.defineCommand)({
96
+ name: 'config list',
97
+ description: 'Print the full config (token masked).',
98
+ group: 'Config',
99
+ flags: [{ name: 'json', type: 'boolean', description: 'Output raw JSON.' }],
100
+ examples: ['orm-cli config list', 'orm-cli config list --json'],
101
+ run: (ctx) => {
102
+ const cfg = (0, cloud_1.loadConfig)();
103
+ const masked = maskConfig(cfg);
104
+ if (ctx.flags.json) {
105
+ framework_1.out.json(masked);
106
+ return 0;
107
+ }
108
+ framework_1.out.table(Object.entries(masked).map(([key, value]) => ({
109
+ key,
110
+ value: value === undefined || value === null
111
+ ? ''
112
+ : typeof value === 'object'
113
+ ? JSON.stringify(value)
114
+ : String(value),
115
+ })));
116
+ return 0;
117
+ },
118
+ });
119
+ const unset = (0, framework_1.defineCommand)({
120
+ name: 'config unset',
121
+ description: 'Remove a config value by key.',
122
+ group: 'Config',
123
+ positionals: [
124
+ { name: 'key', description: 'Config key to remove.', required: true },
125
+ ],
126
+ examples: ['orm-cli config unset token', 'orm-cli config unset teamSlug'],
127
+ run: (ctx) => {
128
+ const key = ctx.positionals[0];
129
+ if (REQUIRED_KEYS.includes(key)) {
130
+ framework_1.out.error(`Cannot unset required key '${key}'. Use \`config set ${key} <value>\` to change it.`);
131
+ return 1;
132
+ }
133
+ const cfg = (0, cloud_1.loadConfig)();
134
+ if (!(key in cfg)) {
135
+ framework_1.out.warn(`Key '${key}' is not set.`);
136
+ return 0;
137
+ }
138
+ delete cfg[key];
139
+ (0, cloud_1.saveConfig)(cfg);
140
+ framework_1.out.success(`Unset ${key}`);
141
+ return 0;
142
+ },
143
+ });
144
+ const path = (0, framework_1.defineCommand)({
145
+ name: 'config path',
146
+ description: 'Print the path to the config file.',
147
+ group: 'Config',
148
+ examples: ['orm-cli config path'],
149
+ run: () => {
150
+ framework_1.out.info((0, cloud_1.configPath)());
151
+ return 0;
152
+ },
153
+ });
154
+ exports.commands = [get, set, list, unset, path];
@@ -0,0 +1,2 @@
1
+ import type { Command } from '../framework';
2
+ export declare const commands: Command[];
@@ -0,0 +1,189 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.commands = void 0;
4
+ // Database command module for the prorm CLI. Manages the connected-database
5
+ // registry. Credentials (passwords / connection URLs) are never stored locally:
6
+ // they are sent once to the dashboard API, which persists them server-side in
7
+ // AWS Secrets Manager (the vault). Only non-secret metadata is echoed back.
8
+ const framework_1 = require("../framework");
9
+ const cloud_1 = require("../cloud");
10
+ const prompt_1 = require("../prompt");
11
+ const DIALECTS = ['postgres', 'mysql', 'mariadb', 'mssql', 'oracle', 'sqlite', 'cockroachdb'];
12
+ const add = (0, framework_1.defineCommand)({
13
+ name: 'db add',
14
+ description: 'Register a new database connection (credentials stored in the AWS vault).',
15
+ group: 'Databases',
16
+ flags: [
17
+ { name: 'name', type: 'string', description: 'Human-readable connection name.', required: true },
18
+ { name: 'dialect', type: 'string', description: 'Database dialect.', required: true, choices: DIALECTS },
19
+ { name: 'host', type: 'string', description: 'Database host.' },
20
+ { name: 'port', type: 'number', description: 'Database port.' },
21
+ { name: 'database', type: 'string', description: 'Database name.' },
22
+ { name: 'username', type: 'string', description: 'Database username.' },
23
+ { name: 'password', type: 'string', description: 'Database password (omit the value to be prompted; stored in the vault).' },
24
+ { name: 'url', type: 'string', description: 'Full connection string (alternative to host/port/…).' },
25
+ { name: 'team', type: 'string', description: 'Team slug that owns the connection.' },
26
+ { name: 'ssl', type: 'boolean', description: 'Use SSL/TLS.', default: true },
27
+ ],
28
+ examples: [
29
+ 'orm-cli db add --name prod --dialect postgres --host db.example.com --port 5432 --database app --username app --password secret',
30
+ 'orm-cli db add --name analytics --dialect mysql --url mysql://user:pass@host:3306/db',
31
+ 'orm-cli db add --name local --dialect sqlite --url file:./dev.db --no-ssl',
32
+ ],
33
+ run: async (ctx) => {
34
+ (0, cloud_1.requireAuth)();
35
+ const str = (v) => (typeof v === 'string' && v ? v : undefined);
36
+ const num = (v) => (typeof v === 'number' && !Number.isNaN(v) ? v : undefined);
37
+ const url = str(ctx.flags.url);
38
+ const dialect = ctx.flags.dialect;
39
+ const host = str(ctx.flags.host);
40
+ const port = num(ctx.flags.port);
41
+ let database = str(ctx.flags.database);
42
+ // Validate discrete connection parts client-side when no --url is given
43
+ // (sqlite/file dialects don't need a host, only a database/path).
44
+ if (!url) {
45
+ const needsHost = dialect !== 'sqlite';
46
+ const missing = [];
47
+ if (needsHost && !host)
48
+ missing.push('--host');
49
+ if (needsHost && port === undefined)
50
+ missing.push('--port');
51
+ if (!database)
52
+ missing.push('--database');
53
+ if (missing.length) {
54
+ framework_1.out.error(`Missing ${missing.join(', ')} (or pass --url for a full connection string).`);
55
+ return 1;
56
+ }
57
+ }
58
+ // Prompt for the password without leaking it into shell history when
59
+ // --password is given without a value.
60
+ let password = str(ctx.flags.password);
61
+ if (ctx.flags.password !== undefined && !password) {
62
+ password = await (0, prompt_1.promptHidden)('Database password: ') || undefined;
63
+ }
64
+ const body = {
65
+ name: ctx.flags.name,
66
+ dialect,
67
+ host,
68
+ port,
69
+ database,
70
+ username: str(ctx.flags.username),
71
+ password,
72
+ url,
73
+ team: str(ctx.flags.team),
74
+ ssl: ctx.flags.ssl !== false,
75
+ };
76
+ const data = await (0, cloud_1.api)('/api/dashboard/databases', { method: 'POST', body });
77
+ framework_1.out.success(`Connected database ${data.name} (${data.id})`);
78
+ return 0;
79
+ },
80
+ });
81
+ const list = (0, framework_1.defineCommand)({
82
+ name: 'db list',
83
+ description: 'List connected databases.',
84
+ group: 'Databases',
85
+ flags: [
86
+ { name: 'team', type: 'string', description: 'Filter by team slug.' },
87
+ { name: 'json', type: 'boolean', description: 'Output raw JSON.' },
88
+ ],
89
+ examples: ['orm-cli db list', 'orm-cli db list --team acme', 'orm-cli db list --json'],
90
+ run: async (ctx) => {
91
+ (0, cloud_1.requireAuth)();
92
+ const team = typeof ctx.flags.team === 'string' ? ctx.flags.team : undefined;
93
+ const data = await (0, cloud_1.api)('/api/dashboard/databases', {
94
+ query: { team },
95
+ });
96
+ const connections = data.connections ?? [];
97
+ if (ctx.flags.json) {
98
+ framework_1.out.json(connections);
99
+ return;
100
+ }
101
+ framework_1.out.table(connections.map((c) => ({
102
+ id: c.id,
103
+ name: c.name,
104
+ dialect: c.dialect,
105
+ host: c.host ?? '',
106
+ database: c.database ?? '',
107
+ owner: c.owner ?? '',
108
+ })));
109
+ },
110
+ });
111
+ const remove = (0, framework_1.defineCommand)({
112
+ name: 'db remove',
113
+ description: 'Remove a connected database.',
114
+ group: 'Databases',
115
+ positionals: [{ name: 'id', description: 'Connection id to remove.', required: true }],
116
+ flags: [{ name: 'yes', alias: 'y', type: 'boolean', description: 'Skip the confirmation prompt.' }],
117
+ examples: ['orm-cli db remove conn_123 --yes', 'orm-cli db remove conn_123 -y'],
118
+ run: async (ctx) => {
119
+ (0, cloud_1.requireAuth)();
120
+ const id = ctx.positionals[0];
121
+ const assumeYes = ctx.flags.yes === true || (0, framework_1.getGlobalOptions)().assumeYes;
122
+ framework_1.out.warn(`This will remove database connection ${id} and its stored secret.`);
123
+ const ok = await (0, prompt_1.confirm)(`Remove ${id}?`, { assumeYes, default: false });
124
+ if (!ok) {
125
+ framework_1.out.info('Aborted (pass --yes to skip this prompt in a non-interactive session).');
126
+ return 1;
127
+ }
128
+ await (0, cloud_1.api)('/api/dashboard/databases/' + id, { method: 'DELETE' });
129
+ framework_1.out.success(`Removed database connection ${id}`);
130
+ return 0;
131
+ },
132
+ });
133
+ const test = (0, framework_1.defineCommand)({
134
+ name: 'db test',
135
+ description: 'Test connectivity to a connected database.',
136
+ group: 'Databases',
137
+ positionals: [{ name: 'id', description: 'Connection id to test.', required: true }],
138
+ examples: ['orm-cli db test conn_123'],
139
+ run: async (ctx) => {
140
+ (0, cloud_1.requireAuth)();
141
+ const id = ctx.positionals[0];
142
+ const result = await (0, cloud_1.api)('/api/dashboard/databases/' + id + '/test', { method: 'POST' });
143
+ const latency = result.latencyMs !== undefined ? ` (${result.latencyMs}ms)` : '';
144
+ if (result.ok) {
145
+ framework_1.out.success(`${result.message}${latency}`);
146
+ return 0;
147
+ }
148
+ framework_1.out.error(`${result.message}${latency}`);
149
+ return 1;
150
+ },
151
+ });
152
+ const use = (0, framework_1.defineCommand)({
153
+ name: 'db use',
154
+ description: 'Set the default database connection for this CLI.',
155
+ group: 'Databases',
156
+ positionals: [{ name: 'id', description: 'Connection id to use by default.', required: true }],
157
+ examples: ['orm-cli db use conn_123'],
158
+ run: async (ctx) => {
159
+ (0, cloud_1.requireAuth)();
160
+ const id = ctx.positionals[0];
161
+ (0, cloud_1.updateConfig)({ defaultDb: id });
162
+ framework_1.out.success(`Default database set to ${id}`);
163
+ },
164
+ });
165
+ const buy = (0, framework_1.defineCommand)({
166
+ name: 'db buy',
167
+ description: 'Buy a managed database (starter, standard, or pro).',
168
+ group: 'Database',
169
+ positionals: [
170
+ { name: 'tier', description: 'Database tier.', required: true, choices: ['starter', 'standard', 'pro'] },
171
+ ],
172
+ flags: [
173
+ { name: 'dialect', type: 'string', description: 'Database dialect.', default: 'postgres', choices: DIALECTS },
174
+ { name: 'region', type: 'string', description: 'Region to provision in.', default: 'us-east-1' },
175
+ { name: 'team', type: 'string', description: 'Team slug that owns the database.' },
176
+ ],
177
+ examples: ['orm-cli db buy starter', 'orm-cli db buy pro --dialect postgres --team acme'],
178
+ run: async (ctx) => {
179
+ (0, cloud_1.requireAuth)();
180
+ const tier = ctx.positionals[0];
181
+ const team = typeof ctx.flags.team === 'string' && ctx.flags.team ? { team: ctx.flags.team } : undefined;
182
+ const result = await (0, cloud_1.api)('/api/dashboard/billing/buy-database', { method: 'POST', body: { tier, dialect: ctx.flags.dialect, region: ctx.flags.region }, query: team });
183
+ const price = `$${(result.amountCents / 100).toFixed(2)}`;
184
+ framework_1.out.info(`Ordered ${result.tier} ${result.dialect} database — ${price}/mo (purchase ${result.purchaseId}).`);
185
+ framework_1.out.info('Confirm payment in the dashboard billing page; the database provisions once payment settles.');
186
+ framework_1.out.info((0, cloud_1.loadConfig)().apiUrl.replace(/\/?$/, '') + '/dashboard/billing');
187
+ },
188
+ });
189
+ exports.commands = [add, list, remove, test, use, buy];
@@ -0,0 +1 @@
1
+ export {};