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,306 @@
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
+ // `pull` commands: pull credentials/config from the dashboard into the local
38
+ // project. The dashboard brokers the AWS Secrets Manager vault + S3, so these
39
+ // commands never touch AWS directly — they just fetch already-resolved
40
+ // credentials and materialize them as dotenv files.
41
+ const fs = __importStar(require("fs"));
42
+ const framework_1 = require("../framework");
43
+ const cloud_1 = require("../cloud");
44
+ const io_1 = require("../io");
45
+ // ─── Local helpers ────────────────────────────────────────────────────────────
46
+ /**
47
+ * Write KEY=VALUE lines to a dotenv `file`, merging with any existing contents:
48
+ * keys already present are replaced in place, new keys are appended. Everything
49
+ * else in the file (comments, blank lines, unrelated keys) is preserved.
50
+ */
51
+ function writeEnv(file, vars) {
52
+ // Credentials are about to land on disk — warn if the target isn't gitignored.
53
+ (0, io_1.warnIfTracked)(file);
54
+ const pending = new Map(Object.entries(vars));
55
+ let existing = '';
56
+ try {
57
+ existing = fs.readFileSync(file, 'utf8');
58
+ }
59
+ catch {
60
+ existing = '';
61
+ }
62
+ const lines = existing.length ? existing.split(/\r?\n/) : [];
63
+ // Drop a single trailing empty element from a final newline so we don't grow
64
+ // the file with blank lines on every write.
65
+ if (lines.length && lines[lines.length - 1] === '')
66
+ lines.pop();
67
+ const out2 = [];
68
+ for (const line of lines) {
69
+ const m = /^\s*(?:export\s+)?([A-Za-z_][A-Za-z0-9_]*)\s*=/.exec(line);
70
+ const key = m?.[1];
71
+ if (key && pending.has(key)) {
72
+ out2.push(`${key}=${pending.get(key)}`);
73
+ pending.delete(key);
74
+ }
75
+ else {
76
+ out2.push(line);
77
+ }
78
+ }
79
+ for (const [key, value] of pending) {
80
+ out2.push(`${key}=${value}`);
81
+ }
82
+ fs.writeFileSync(file, out2.join('\n') + '\n');
83
+ }
84
+ /** Build a postgres connection URL from a resolved secret payload. */
85
+ function buildPostgresUrl(data) {
86
+ if (data.connectionString)
87
+ return data.connectionString;
88
+ const host = data.host ?? 'localhost';
89
+ const port = data.port ?? 5432;
90
+ const database = data.database ?? 'postgres';
91
+ const user = data.username ?? '';
92
+ const pass = data.password ?? '';
93
+ const auth = user
94
+ ? `${encodeURIComponent(user)}${pass ? `:${encodeURIComponent(pass)}` : ''}@`
95
+ : '';
96
+ return `postgres://${auth}${host}:${port}/${database}`;
97
+ }
98
+ /** Mask a secret value for display, keeping just enough to be recognizable. */
99
+ function mask(value) {
100
+ const s = value == null ? '' : String(value);
101
+ if (!s)
102
+ return '';
103
+ if (s.length <= 4)
104
+ return '****';
105
+ return `${s.slice(0, 2)}${'*'.repeat(Math.min(8, s.length - 4))}${s.slice(-2)}`;
106
+ }
107
+ // ─── pull creds ────────────────────────────────────────────────────────────────
108
+ const pullCreds = (0, framework_1.defineCommand)({
109
+ name: 'pull creds',
110
+ description: 'Pull the raw credentials for a connection from the vault.',
111
+ group: 'Pull',
112
+ positionals: [
113
+ { name: 'connection', description: 'Connection id or name', required: true },
114
+ ],
115
+ flags: [
116
+ { name: 'json', type: 'boolean', description: 'Output raw JSON' },
117
+ { name: 'out', type: 'string', description: 'Write credentials to a dotenv file instead of stdout' },
118
+ ],
119
+ examples: [
120
+ 'orm-cli pull creds my-db',
121
+ 'orm-cli pull creds my-db --json',
122
+ 'orm-cli pull creds my-db --out .env.local',
123
+ ],
124
+ async run(ctx) {
125
+ (0, cloud_1.requireAuth)();
126
+ const connection = ctx.positionals[0];
127
+ const data = await (0, cloud_1.api)('/api/cli/secrets/pull', { query: { connection } });
128
+ if (ctx.flags.json) {
129
+ framework_1.out.json(data);
130
+ return;
131
+ }
132
+ if (typeof ctx.flags.out === 'string') {
133
+ const file = ctx.flags.out;
134
+ const vars = {};
135
+ for (const [k, v] of Object.entries(data)) {
136
+ if (v == null)
137
+ continue;
138
+ vars[k.replace(/([a-z0-9])([A-Z])/g, '$1_$2').toUpperCase()] = String(v);
139
+ }
140
+ writeEnv(file, vars);
141
+ framework_1.out.success(`Wrote credentials for ${connection} to ${file}`);
142
+ return;
143
+ }
144
+ const rows = Object.entries(data)
145
+ .filter(([, v]) => v != null)
146
+ .map(([field, value]) => ({
147
+ field,
148
+ value: /password|secret|token|key/i.test(field) ? mask(value) : String(value),
149
+ }));
150
+ framework_1.out.table(rows);
151
+ },
152
+ });
153
+ // ─── pull db ───────────────────────────────────────────────────────────────────
154
+ const pullDb = (0, framework_1.defineCommand)({
155
+ name: 'pull db',
156
+ description: 'Pull a database connection and write its URL to a dotenv file.',
157
+ group: 'Pull',
158
+ positionals: [
159
+ { name: 'connection', description: 'Connection id or name', required: true },
160
+ ],
161
+ flags: [
162
+ { name: 'out', type: 'string', description: 'Dotenv file to write', default: '.env' },
163
+ { name: 'var', type: 'string', description: 'Env var name for the URL', default: 'DATABASE_URL' },
164
+ { name: 'stdout', type: 'boolean', description: 'Print the URL to stdout instead of writing a file.' },
165
+ ],
166
+ examples: [
167
+ 'orm-cli pull db my-db',
168
+ 'orm-cli pull db my-db --var PG_URL --out .env.local',
169
+ 'orm-cli pull db my-db --stdout',
170
+ ],
171
+ async run(ctx) {
172
+ (0, cloud_1.requireAuth)();
173
+ const connection = ctx.positionals[0];
174
+ const file = String(ctx.flags.out);
175
+ const varName = String(ctx.flags.var);
176
+ const data = await (0, cloud_1.api)('/api/cli/secrets/pull', { query: { connection } });
177
+ const url = buildPostgresUrl(data);
178
+ if (ctx.flags.stdout) {
179
+ framework_1.out.info(url);
180
+ return;
181
+ }
182
+ writeEnv(file, { [varName]: url });
183
+ framework_1.out.success(`Wrote ${varName} to ${file}`);
184
+ },
185
+ });
186
+ const pullBucket = (0, framework_1.defineCommand)({
187
+ name: 'pull bucket',
188
+ description: 'Pull S3 bucket access credentials into a dotenv file.',
189
+ group: 'Pull',
190
+ positionals: [
191
+ { name: 'name', description: 'Bucket name', required: true },
192
+ ],
193
+ flags: [
194
+ { name: 'out', type: 'string', description: 'Dotenv file to write', default: '.env' },
195
+ { name: 'stdout', type: 'boolean', description: 'Print KEY=VALUE lines to stdout instead of writing a file.' },
196
+ ],
197
+ examples: [
198
+ 'orm-cli pull bucket my-uploads',
199
+ 'orm-cli pull bucket my-uploads --out .env.local',
200
+ 'orm-cli pull bucket my-uploads --stdout',
201
+ ],
202
+ async run(ctx) {
203
+ (0, cloud_1.requireAuth)();
204
+ const name = ctx.positionals[0];
205
+ const file = String(ctx.flags.out);
206
+ const data = await (0, cloud_1.api)('/api/cli/storage/access', { query: { bucket: name } });
207
+ const vars = {
208
+ S3_BUCKET: data.bucket,
209
+ AWS_REGION: data.region,
210
+ };
211
+ if (data.accessKeyId)
212
+ vars.AWS_ACCESS_KEY_ID = data.accessKeyId;
213
+ if (data.secretAccessKey)
214
+ vars.AWS_SECRET_ACCESS_KEY = data.secretAccessKey;
215
+ if (data.endpoint)
216
+ vars.S3_ENDPOINT = data.endpoint;
217
+ if (ctx.flags.stdout) {
218
+ for (const [k, v] of Object.entries(vars))
219
+ framework_1.out.info(`${k}=${v}`);
220
+ return;
221
+ }
222
+ writeEnv(file, vars);
223
+ framework_1.out.success(`Wrote bucket access for ${data.bucket} to ${file}`);
224
+ },
225
+ });
226
+ const pullSecrets = (0, framework_1.defineCommand)({
227
+ name: 'pull secrets',
228
+ description: 'Pull all vault secrets for a team into a dotenv file.',
229
+ group: 'Pull',
230
+ flags: [
231
+ { name: 'team', type: 'string', description: 'Team id or slug (defaults to current context)' },
232
+ { name: 'out', type: 'string', description: 'Dotenv file to write', default: '.env' },
233
+ { name: 'json', type: 'boolean', description: 'Output raw JSON instead of writing a file' },
234
+ ],
235
+ examples: [
236
+ 'orm-cli pull secrets',
237
+ 'orm-cli pull secrets --team acme --out .env.local',
238
+ 'orm-cli pull secrets --json',
239
+ ],
240
+ async run(ctx) {
241
+ (0, cloud_1.requireAuth)();
242
+ const team = typeof ctx.flags.team === 'string' ? ctx.flags.team : undefined;
243
+ const file = String(ctx.flags.out);
244
+ const data = await (0, cloud_1.api)('/api/cli/secrets', { query: { team } });
245
+ if (ctx.flags.json) {
246
+ framework_1.out.json(data);
247
+ return;
248
+ }
249
+ const vars = {};
250
+ for (const s of data.secrets ?? [])
251
+ vars[s.name] = s.value;
252
+ writeEnv(file, vars);
253
+ framework_1.out.success(`Wrote ${Object.keys(vars).length} secret(s) to ${file}`);
254
+ },
255
+ });
256
+ // ─── pull env ──────────────────────────────────────────────────────────────────
257
+ const pullEnv = (0, framework_1.defineCommand)({
258
+ name: 'pull env',
259
+ description: 'Pull the database URL, bucket access, and secrets for the current context.',
260
+ group: 'Pull',
261
+ flags: [
262
+ { name: 'out', type: 'string', description: 'Dotenv file to write', default: '.env' },
263
+ { name: 'team', type: 'string', description: 'Team id or slug (defaults to current context)' },
264
+ { name: 'connection', type: 'string', description: 'Database connection name (defaults to the team).' },
265
+ { name: 'bucket', type: 'string', description: 'Bucket name (defaults to the team).' },
266
+ { name: 'skip-db', type: 'boolean', description: 'Skip the database URL.' },
267
+ { name: 'skip-bucket', type: 'boolean', description: 'Skip bucket access.' },
268
+ ],
269
+ examples: [
270
+ 'orm-cli pull env',
271
+ 'orm-cli pull env --team acme --out .env.local',
272
+ 'orm-cli pull env --connection prod-db --bucket uploads',
273
+ ],
274
+ async run(ctx) {
275
+ (0, cloud_1.requireAuth)();
276
+ const file = String(ctx.flags.out);
277
+ const team = typeof ctx.flags.team === 'string' ? ctx.flags.team : (0, cloud_1.loadConfig)().teamSlug;
278
+ // The default connection/bucket are named after the team, but that is only a
279
+ // convention — allow explicit overrides so it works when they differ.
280
+ const connection = typeof ctx.flags.connection === 'string' && ctx.flags.connection ? ctx.flags.connection : team;
281
+ const bucketName = typeof ctx.flags.bucket === 'string' && ctx.flags.bucket ? ctx.flags.bucket : team;
282
+ const merged = {};
283
+ if (ctx.flags['skip-db'] !== true) {
284
+ const db = await (0, cloud_1.api)('/api/cli/secrets/pull', { query: { connection } });
285
+ merged.DATABASE_URL = buildPostgresUrl(db);
286
+ }
287
+ if (ctx.flags['skip-bucket'] !== true) {
288
+ const bucket = await (0, cloud_1.api)('/api/cli/storage/access', { query: { bucket: bucketName } });
289
+ merged.S3_BUCKET = bucket.bucket;
290
+ merged.AWS_REGION = bucket.region;
291
+ if (bucket.accessKeyId)
292
+ merged.AWS_ACCESS_KEY_ID = bucket.accessKeyId;
293
+ if (bucket.secretAccessKey)
294
+ merged.AWS_SECRET_ACCESS_KEY = bucket.secretAccessKey;
295
+ if (bucket.endpoint)
296
+ merged.S3_ENDPOINT = bucket.endpoint;
297
+ }
298
+ // Team secrets.
299
+ const secrets = await (0, cloud_1.api)('/api/cli/secrets', { query: { team } });
300
+ for (const s of secrets.secrets ?? [])
301
+ merged[s.name] = s.value;
302
+ writeEnv(file, merged);
303
+ framework_1.out.success(`Wrote ${Object.keys(merged).length} entr(ies) to ${file}`);
304
+ },
305
+ });
306
+ exports.commands = [pullCreds, pullDb, pullBucket, pullSecrets, pullEnv];
@@ -0,0 +1,2 @@
1
+ import type { Command } from '../framework';
2
+ export declare const commands: Command[];
@@ -0,0 +1,218 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.commands = void 0;
4
+ // Runners command module for the prorm CLI. A runner is a single execution of a
5
+ // code snippet inside a sandbox: it carries a sandboxId, a status, the docker
6
+ // image it ran on, and timing/exit metadata. These commands start runners, list
7
+ // them, tail their logs, and stop them against the dashboard API.
8
+ const framework_1 = require("../framework");
9
+ const cloud_1 = require("../cloud");
10
+ const io_1 = require("../io");
11
+ /** Statuses that mean the runner has finished and will not transition again. */
12
+ const TERMINAL = ['success', 'failed', 'stopped'];
13
+ /** Small sleep helper. */
14
+ const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
15
+ /** Fetch a runner's logs, resolving a presigned logsUrl via the shared client. */
16
+ async function fetchLogs(id) {
17
+ const res = await (0, cloud_1.api)('/api/dashboard/runners/' + id + '/logs');
18
+ if (res.logsUrl) {
19
+ // Route the presigned fetch through the shared client so it inherits the
20
+ // timeout/retry/proxy behavior instead of a bare fetch that can hang.
21
+ const text = await (0, cloud_1.api)(res.logsUrl, { auth: false });
22
+ return typeof text === 'string' ? text : JSON.stringify(text);
23
+ }
24
+ return res.logs ?? '';
25
+ }
26
+ const run = (0, framework_1.defineCommand)({
27
+ name: 'run',
28
+ description: 'Start a runner for a code snippet in a sandbox.',
29
+ group: 'Runners',
30
+ positionals: [{ name: 'codeId', description: 'ID of the code snippet to run.', required: true }],
31
+ flags: [
32
+ { name: 'image', type: 'string', description: 'Docker image to run in.' },
33
+ { name: 'dialect', type: 'string', description: 'Database dialect to target.' },
34
+ { name: 'wait', alias: 'w', type: 'boolean', description: 'Poll until the runner finishes.' },
35
+ { name: 'wait-timeout', type: 'number', description: 'Seconds to wait when --wait is set.', default: 120 },
36
+ ],
37
+ examples: [
38
+ 'orm-cli run code_123',
39
+ 'orm-cli run code_123 --image node:20 --dialect postgres',
40
+ 'orm-cli run code_123 --wait --wait-timeout 600',
41
+ ],
42
+ run: async (ctx) => {
43
+ (0, cloud_1.requireAuth)();
44
+ const codeId = ctx.positionals[0];
45
+ const body = { codeId };
46
+ if (typeof ctx.flags.image === 'string' && ctx.flags.image)
47
+ body.image = ctx.flags.image;
48
+ if (typeof ctx.flags.dialect === 'string' && ctx.flags.dialect)
49
+ body.dialect = ctx.flags.dialect;
50
+ const started = await (0, cloud_1.api)('/api/dashboard/runners', { method: 'POST', body });
51
+ framework_1.out.success(`Started runner ${started.id} (${started.status})`);
52
+ if (started.sandboxId)
53
+ framework_1.out.dim(`sandbox: ${started.sandboxId}`);
54
+ if (!ctx.flags.wait)
55
+ return 0;
56
+ const waitSec = typeof ctx.flags['wait-timeout'] === 'number' ? ctx.flags['wait-timeout'] : 120;
57
+ let last = started.status;
58
+ const deadline = Date.now() + waitSec * 1000;
59
+ let runner = { id: started.id, status: started.status };
60
+ const spin = (0, io_1.spinner)(`Running… (${runner.status})`);
61
+ try {
62
+ while (!TERMINAL.includes(runner.status) && Date.now() < deadline) {
63
+ await sleep(2000);
64
+ runner = await (0, cloud_1.api)('/api/dashboard/runners/' + started.id);
65
+ if (runner.status !== last) {
66
+ framework_1.out.info(`→ ${runner.status}`);
67
+ last = runner.status;
68
+ }
69
+ spin.update(`Running… (${runner.status})`);
70
+ }
71
+ }
72
+ finally {
73
+ spin.stop();
74
+ }
75
+ if (!TERMINAL.includes(runner.status)) {
76
+ // Don't leave a sandbox running (and billing) after we give up waiting —
77
+ // stop it so --wait can't silently leak compute. Use a distinct exit code
78
+ // so scripts can tell a timeout apart from a runner failure.
79
+ framework_1.out.warn(`Timed out after ${waitSec}s waiting for runner ${started.id} (still ${runner.status}); stopping it.`);
80
+ try {
81
+ await (0, cloud_1.api)('/api/dashboard/runners/' + started.id + '/stop', { method: 'POST' });
82
+ framework_1.out.dim(`Stopped ${started.id}.`);
83
+ }
84
+ catch (err) {
85
+ framework_1.out.warn(`Could not stop ${started.id}: ${err instanceof Error ? err.message : String(err)}`);
86
+ }
87
+ return framework_1.EXIT.TIMEOUT;
88
+ }
89
+ if (runner.exitCode !== undefined)
90
+ framework_1.out.info(`exitCode: ${runner.exitCode}`);
91
+ if (runner.durationMs !== undefined)
92
+ framework_1.out.info(`duration: ${runner.durationMs}ms`);
93
+ return runner.status === 'success' ? 0 : 1;
94
+ },
95
+ });
96
+ const runsList = (0, framework_1.defineCommand)({
97
+ name: 'runs list',
98
+ description: 'List recent runners.',
99
+ group: 'Runners',
100
+ aliases: ['runs ls'],
101
+ flags: [
102
+ { name: 'json', type: 'boolean', description: 'Output raw JSON.' },
103
+ {
104
+ name: 'status',
105
+ type: 'string',
106
+ description: 'Filter by status.',
107
+ choices: ['queued', 'running', 'success', 'failed', 'stopped'],
108
+ },
109
+ { name: 'limit', type: 'number', description: 'Maximum number of runners to return.', default: 20 },
110
+ { name: 'offset', type: 'number', description: 'Number of runners to skip (pagination).', default: 0 },
111
+ ],
112
+ examples: [
113
+ 'orm-cli runs list',
114
+ 'orm-cli runs list --status running --limit 50',
115
+ 'orm-cli runs list --limit 20 --offset 40',
116
+ 'orm-cli runs list --json',
117
+ ],
118
+ run: async (ctx) => {
119
+ (0, cloud_1.requireAuth)();
120
+ const query = {};
121
+ if (typeof ctx.flags.status === 'string')
122
+ query.status = ctx.flags.status;
123
+ if (typeof ctx.flags.limit === 'number')
124
+ query.limit = ctx.flags.limit;
125
+ if (typeof ctx.flags.offset === 'number' && ctx.flags.offset > 0)
126
+ query.offset = ctx.flags.offset;
127
+ const { runners, pagination } = await (0, cloud_1.api)('/api/dashboard/runners', { query });
128
+ if (ctx.flags.json) {
129
+ framework_1.out.json(runners);
130
+ return;
131
+ }
132
+ framework_1.out.table(runners.map((r) => ({
133
+ id: r.id,
134
+ codeId: r.codeId ?? '',
135
+ status: r.status,
136
+ image: r.image ?? '',
137
+ durationMs: r.durationMs ?? '',
138
+ createdAt: r.createdAt ?? '',
139
+ })));
140
+ if (pagination && pagination.hasMore) {
141
+ framework_1.out.dim(`Showing ${pagination.offset + 1}-${pagination.offset + runners.length} of ${pagination.total}. ` +
142
+ `Next: --offset ${pagination.offset + pagination.limit}`);
143
+ }
144
+ },
145
+ });
146
+ const runGet = (0, framework_1.defineCommand)({
147
+ name: 'runs get',
148
+ description: "Show a single runner's full metadata.",
149
+ group: 'Runners',
150
+ positionals: [{ name: 'id', description: 'Runner ID.', required: true }],
151
+ flags: [{ name: 'json', type: 'boolean', description: 'Output raw JSON.' }],
152
+ examples: ['orm-cli runs get runner_123', 'orm-cli runs get runner_123 --json'],
153
+ run: async (ctx) => {
154
+ (0, cloud_1.requireAuth)();
155
+ const runner = await (0, cloud_1.api)('/api/dashboard/runners/' + ctx.positionals[0]);
156
+ if (ctx.flags.json) {
157
+ framework_1.out.json(runner);
158
+ return;
159
+ }
160
+ framework_1.out.table(Object.entries(runner).map(([field, value]) => ({ field, value: value ?? '' })));
161
+ },
162
+ });
163
+ const runLogs = (0, framework_1.defineCommand)({
164
+ name: 'run logs',
165
+ description: 'Show (or follow) the logs for a runner.',
166
+ group: 'Runners',
167
+ positionals: [{ name: 'id', description: 'Runner ID.', required: true }],
168
+ flags: [
169
+ { name: 'json', type: 'boolean', description: 'Output raw JSON.' },
170
+ { name: 'follow', alias: 'f', type: 'boolean', description: 'Stream new log output until the runner finishes.' },
171
+ ],
172
+ examples: ['orm-cli run logs runner_123', 'orm-cli run logs runner_123 -f'],
173
+ run: async (ctx) => {
174
+ (0, cloud_1.requireAuth)();
175
+ const id = ctx.positionals[0];
176
+ if (ctx.flags.follow && !ctx.flags.json) {
177
+ // Tail: poll logs + status, printing only the newly-appended tail, until
178
+ // the runner reaches a terminal state.
179
+ let printed = 0;
180
+ for (;;) {
181
+ const text = await fetchLogs(id);
182
+ if (text.length > printed) {
183
+ process.stdout.write(text.slice(printed));
184
+ printed = text.length;
185
+ }
186
+ const runner = await (0, cloud_1.api)('/api/dashboard/runners/' + id);
187
+ if (TERMINAL.includes(runner.status)) {
188
+ if (printed === 0 || !text.endsWith('\n'))
189
+ process.stdout.write('\n');
190
+ framework_1.out.dim(`runner ${runner.status}`);
191
+ return runner.status === 'success' ? 0 : 1;
192
+ }
193
+ await sleep(2000);
194
+ }
195
+ }
196
+ if (ctx.flags.json) {
197
+ const res = await (0, cloud_1.api)('/api/dashboard/runners/' + id + '/logs');
198
+ framework_1.out.json(res);
199
+ return 0;
200
+ }
201
+ framework_1.out.info(await fetchLogs(id));
202
+ return 0;
203
+ },
204
+ });
205
+ const runStop = (0, framework_1.defineCommand)({
206
+ name: 'run stop',
207
+ description: 'Stop a running runner.',
208
+ group: 'Runners',
209
+ positionals: [{ name: 'id', description: 'Runner ID.', required: true }],
210
+ examples: ['orm-cli run stop runner_123'],
211
+ run: async (ctx) => {
212
+ (0, cloud_1.requireAuth)();
213
+ const id = ctx.positionals[0];
214
+ await (0, cloud_1.api)('/api/dashboard/runners/' + id + '/stop', { method: 'POST' });
215
+ framework_1.out.success(`Stopped ${id}`);
216
+ },
217
+ });
218
+ exports.commands = [run, runsList, runGet, runLogs, runStop];
@@ -0,0 +1,2 @@
1
+ import type { Command } from '../framework';
2
+ export declare const commands: Command[];