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,318 @@
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.NetworkError = exports.AuthError = exports.ApiError = void 0;
37
+ exports.configPath = configPath;
38
+ exports.loadConfig = loadConfig;
39
+ exports.saveConfig = saveConfig;
40
+ exports.updateConfig = updateConfig;
41
+ exports.storeToken = storeToken;
42
+ exports.clearAuth = clearAuth;
43
+ exports.requireAuth = requireAuth;
44
+ exports.api = api;
45
+ // Shared state + transport for the cloud/account CLI commands. Config lives at
46
+ // ~/.prorm/config.json (overridable via PRORM_CONFIG or --config; profiles via
47
+ // --profile / PRORM_PROFILE). Commands authenticate against the dashboard API
48
+ // (the Next.js app), which brokers AWS Secrets Manager (the vault), the S3
49
+ // bucket, and the connected-database registry.
50
+ const fs = __importStar(require("fs"));
51
+ const os = __importStar(require("os"));
52
+ const path = __importStar(require("path"));
53
+ const framework_1 = require("./framework");
54
+ const keychain = __importStar(require("./keychain"));
55
+ const DEFAULT_API = process.env.PRORM_API_URL || 'https://docs-next-alpha.vercel.app';
56
+ /** CLI version, best-effort, for the User-Agent header. */
57
+ function cliVersion() {
58
+ for (const rel of ['../package.json', '../../package.json']) {
59
+ try {
60
+ const pkg = JSON.parse(fs.readFileSync(path.join(__dirname, rel), 'utf8'));
61
+ if (pkg.version)
62
+ return pkg.version;
63
+ }
64
+ catch {
65
+ // try next
66
+ }
67
+ }
68
+ return '0.0.0';
69
+ }
70
+ /** Active profile name from --profile or PRORM_PROFILE (undefined = default). */
71
+ function activeProfile() {
72
+ return (0, framework_1.getGlobalOptions)().profile || process.env.PRORM_PROFILE || undefined;
73
+ }
74
+ function configPath() {
75
+ const override = (0, framework_1.getGlobalOptions)().configPath || process.env.PRORM_CONFIG;
76
+ if (override)
77
+ return override;
78
+ const profile = activeProfile();
79
+ const file = profile ? `config.${profile}.json` : 'config.json';
80
+ return path.join(os.homedir(), '.prorm', file);
81
+ }
82
+ function loadConfig() {
83
+ let cfg = {};
84
+ try {
85
+ cfg = JSON.parse(fs.readFileSync(configPath(), 'utf8'));
86
+ }
87
+ catch {
88
+ cfg = {};
89
+ }
90
+ const merged = { ...cfg, apiUrl: cfg.apiUrl || DEFAULT_API };
91
+ // Pull the token out of the OS keychain when it lives there.
92
+ if (merged.tokenInKeychain && !merged.token) {
93
+ const kc = keychain.getToken();
94
+ if (kc)
95
+ merged.token = kc;
96
+ }
97
+ // Per-invocation overrides (flags/env) win over the stored file.
98
+ const g = (0, framework_1.getGlobalOptions)();
99
+ if (g.apiUrl)
100
+ merged.apiUrl = g.apiUrl;
101
+ if (g.team)
102
+ merged.teamSlug = g.team;
103
+ return merged;
104
+ }
105
+ function saveConfig(cfg) {
106
+ const p = configPath();
107
+ fs.mkdirSync(path.dirname(p), { recursive: true });
108
+ // Never persist the raw token to disk when a keychain is holding it.
109
+ const toWrite = { ...cfg };
110
+ if (cfg.tokenInKeychain)
111
+ delete toWrite.token;
112
+ fs.writeFileSync(p, JSON.stringify(toWrite, null, 2), { mode: 0o600 });
113
+ }
114
+ function updateConfig(patch) {
115
+ const next = { ...loadConfig(), ...patch };
116
+ saveConfig(next);
117
+ return next;
118
+ }
119
+ /**
120
+ * Store the access token, preferring the OS keychain. Returns whether the
121
+ * keychain was used (false = written to the config file as a fallback).
122
+ */
123
+ function storeToken(token, extra = {}) {
124
+ const inKeychain = keychain.isAvailable() && keychain.setToken(token);
125
+ const patch = { ...extra, tokenInKeychain: inKeychain };
126
+ if (inKeychain)
127
+ patch.token = undefined;
128
+ else
129
+ patch.token = token;
130
+ updateConfig(patch);
131
+ return inKeychain;
132
+ }
133
+ function clearAuth() {
134
+ keychain.deleteToken();
135
+ const cfg = loadConfig();
136
+ delete cfg.token;
137
+ delete cfg.refreshToken;
138
+ delete cfg.tokenInKeychain;
139
+ delete cfg.user;
140
+ saveConfig(cfg);
141
+ }
142
+ function requireAuth() {
143
+ const cfg = loadConfig();
144
+ if (!cfg.token) {
145
+ throw new AuthError('Not authenticated. Run `orm-cli auth login` first.');
146
+ }
147
+ return cfg;
148
+ }
149
+ // ─── Typed transport errors ────────────────────────────────────────────────────
150
+ class ApiError extends Error {
151
+ constructor(message, status, details) {
152
+ super(message);
153
+ this.status = status;
154
+ this.details = details;
155
+ }
156
+ }
157
+ exports.ApiError = ApiError;
158
+ class AuthError extends ApiError {
159
+ constructor(message) {
160
+ super(message, 401);
161
+ }
162
+ }
163
+ exports.AuthError = AuthError;
164
+ class NetworkError extends Error {
165
+ constructor() {
166
+ super(...arguments);
167
+ this.code = 'ENETWORK';
168
+ }
169
+ }
170
+ exports.NetworkError = NetworkError;
171
+ // ─── Proxy support ─────────────────────────────────────────────────────────────
172
+ // Best-effort: route requests through HTTP(S)_PROXY when undici's ProxyAgent is
173
+ // available. NO_PROXY hosts bypass the proxy. Silently no-ops if unavailable.
174
+ let proxyDispatcher;
175
+ let proxyResolved = false;
176
+ function noProxyMatch(host) {
177
+ const list = (process.env.NO_PROXY || process.env.no_proxy || '')
178
+ .split(',')
179
+ .map((s) => s.trim().toLowerCase())
180
+ .filter(Boolean);
181
+ if (list.includes('*'))
182
+ return true;
183
+ return list.some((entry) => host === entry || host.endsWith(entry.replace(/^\./, '.')) || host.endsWith(entry));
184
+ }
185
+ function dispatcherFor(url) {
186
+ const proxy = url.protocol === 'https:'
187
+ ? process.env.HTTPS_PROXY || process.env.https_proxy || process.env.ALL_PROXY
188
+ : process.env.HTTP_PROXY || process.env.http_proxy || process.env.ALL_PROXY;
189
+ if (!proxy || noProxyMatch(url.hostname.toLowerCase()))
190
+ return undefined;
191
+ if (!proxyResolved) {
192
+ proxyResolved = true;
193
+ try {
194
+ // undici ships with Node 18+; require lazily so environments without it
195
+ // (or without a proxy set) pay nothing.
196
+ const { ProxyAgent } = require('undici');
197
+ proxyDispatcher = new ProxyAgent(proxy);
198
+ }
199
+ catch {
200
+ proxyDispatcher = undefined;
201
+ }
202
+ }
203
+ return proxyDispatcher;
204
+ }
205
+ const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
206
+ const RETRYABLE = new Set([429, 500, 502, 503, 504]);
207
+ function defaultTimeoutMs() {
208
+ const g = (0, framework_1.getGlobalOptions)();
209
+ return g.timeoutSec && g.timeoutSec > 0 ? g.timeoutSec * 1000 : 30000;
210
+ }
211
+ /** Call the dashboard API with timeout, retry/backoff, and typed errors. */
212
+ async function api(pathname, opts = {}) {
213
+ const cfg = loadConfig();
214
+ const auth = opts.auth !== false;
215
+ const token = opts.token ?? cfg.token;
216
+ if (auth && !token)
217
+ throw new AuthError('Not authenticated. Run `orm-cli auth login`.');
218
+ const url = new URL(pathname.replace(/^\//, ''), cfg.apiUrl.replace(/\/?$/, '/'));
219
+ for (const [k, v] of Object.entries(opts.query ?? {})) {
220
+ if (v !== undefined)
221
+ url.searchParams.set(k, String(v));
222
+ }
223
+ const timeoutMs = opts.timeoutMs ?? defaultTimeoutMs();
224
+ const maxRetries = opts.retries ?? 3;
225
+ const method = opts.method ?? 'GET';
226
+ const dispatcher = dispatcherFor(url);
227
+ const debug = Boolean(process.env.PRORM_DEBUG) || (0, framework_1.getGlobalOptions)().verbose;
228
+ let lastErr;
229
+ for (let attempt = 0; attempt <= maxRetries; attempt++) {
230
+ const controller = new AbortController();
231
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
232
+ if (debug)
233
+ console.error(`[http] ${method} ${url}${attempt ? ` (retry ${attempt})` : ''}`);
234
+ try {
235
+ const res = await fetch(url, {
236
+ method,
237
+ headers: {
238
+ 'content-type': 'application/json',
239
+ 'user-agent': `prorm-cli/${cliVersion()} (${process.platform}; node/${process.versions.node})`,
240
+ ...(auth && token ? { authorization: `Bearer ${token}` } : {}),
241
+ },
242
+ body: opts.body !== undefined ? JSON.stringify(opts.body) : undefined,
243
+ signal: controller.signal,
244
+ ...(dispatcher ? { dispatcher } : {}),
245
+ });
246
+ clearTimeout(timer);
247
+ if (RETRYABLE.has(res.status) && attempt < maxRetries) {
248
+ const retryAfter = Number(res.headers.get('retry-after'));
249
+ const backoff = Number.isFinite(retryAfter) && retryAfter > 0
250
+ ? retryAfter * 1000
251
+ : Math.min(8000, 2 ** attempt * 500) + Math.random() * 250;
252
+ if (debug)
253
+ console.error(`[http] ${res.status}; retrying in ${Math.round(backoff)}ms`);
254
+ await sleep(backoff);
255
+ continue;
256
+ }
257
+ const text = await res.text();
258
+ const data = text ? safeJson(text) : undefined;
259
+ if (!res.ok) {
260
+ throw toApiError(method, pathname, res.status, res.statusText, data);
261
+ }
262
+ return data;
263
+ }
264
+ catch (err) {
265
+ clearTimeout(timer);
266
+ if (err instanceof ApiError)
267
+ throw err; // Non-retryable HTTP error.
268
+ lastErr = err;
269
+ // Abort (timeout) or network failure — retry with backoff if we can.
270
+ if (attempt < maxRetries) {
271
+ await sleep(Math.min(8000, 2 ** attempt * 500) + Math.random() * 250);
272
+ continue;
273
+ }
274
+ }
275
+ }
276
+ throw translateNetworkError(lastErr, url, timeoutMs);
277
+ }
278
+ function toApiError(method, pathname, status, statusText, data) {
279
+ const body = data;
280
+ let msg = body?.error || body?.message || `${status} ${statusText}`;
281
+ const details = body?.details ?? body?.errors;
282
+ if (details) {
283
+ try {
284
+ msg += ` — ${typeof details === 'string' ? details : JSON.stringify(details)}`;
285
+ }
286
+ catch {
287
+ // ignore stringify failure
288
+ }
289
+ }
290
+ if (status === 401) {
291
+ return new AuthError(`Authentication failed (${msg}). Your session may have expired — run \`orm-cli auth login\` again.`);
292
+ }
293
+ const full = `API ${method} ${pathname} failed: ${msg}`;
294
+ return new ApiError(full, status, details);
295
+ }
296
+ function translateNetworkError(err, url, timeoutMs) {
297
+ const e = err;
298
+ if (e?.name === 'AbortError') {
299
+ return new NetworkError(`Request to ${url.host} timed out after ${Math.round(timeoutMs / 1000)}s.`);
300
+ }
301
+ const code = e?.code || e?.cause?.code;
302
+ if (code === 'ENOTFOUND' || code === 'EAI_AGAIN') {
303
+ return new NetworkError(`Cannot reach ${url.host} — you appear to be offline or the host is wrong.`);
304
+ }
305
+ if (code === 'ECONNREFUSED') {
306
+ return new NetworkError(`Connection to ${url.host} was refused. Is the API URL correct?`);
307
+ }
308
+ const msg = err instanceof Error ? err.message : String(err);
309
+ return new NetworkError(`Network request to ${url.host} failed: ${msg}`);
310
+ }
311
+ function safeJson(s) {
312
+ try {
313
+ return JSON.parse(s);
314
+ }
315
+ catch {
316
+ return s;
317
+ }
318
+ }
@@ -0,0 +1,2 @@
1
+ import type { Command } from '../framework';
2
+ export declare const commands: Command[];
@@ -0,0 +1,345 @@
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
+ // Auth command module for the prorm CLI. Authenticates the CLI against the
38
+ // dashboard API using a pasted access token or the browser OAuth device flow,
39
+ // and manages the stored session. Tokens are kept in the OS keychain when one
40
+ // is available (see ../keychain), otherwise in the 0600 config file.
41
+ const child_process_1 = require("child_process");
42
+ const framework_1 = require("../framework");
43
+ const cloud_1 = require("../cloud");
44
+ const prompt_1 = require("../prompt");
45
+ const io_1 = require("../io");
46
+ const keychain = __importStar(require("../keychain"));
47
+ const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
48
+ /** Best-effort open a URL in the user's browser; failures are ignored. */
49
+ function openBrowser(url) {
50
+ try {
51
+ const cmd = process.platform === 'darwin' ? 'open' : process.platform === 'win32' ? 'cmd' : 'xdg-open';
52
+ const args = process.platform === 'win32' ? ['/c', 'start', '', url] : [url];
53
+ const child = (0, child_process_1.spawn)(cmd, args, { detached: true, stdio: 'ignore' });
54
+ child.unref();
55
+ }
56
+ catch {
57
+ // Ignore — the user can open the URL manually.
58
+ }
59
+ }
60
+ /** Persist the token (keychain-preferred) plus optional refresh token + team. */
61
+ async function finishLogin(accessToken, refreshToken, team) {
62
+ const inKeychain = (0, cloud_1.storeToken)(accessToken, refreshToken ? { refreshToken } : {});
63
+ const user = await (0, cloud_1.api)('/api/cli/auth/whoami', { token: accessToken });
64
+ (0, cloud_1.updateConfig)({ user });
65
+ framework_1.out.success(`Logged in as ${user.email}`);
66
+ if (inKeychain)
67
+ framework_1.out.dim('Token stored in the OS keychain.');
68
+ if (team) {
69
+ (0, cloud_1.updateConfig)({ teamSlug: team });
70
+ framework_1.out.info(`Default team set to ${team}`);
71
+ }
72
+ }
73
+ const login = (0, framework_1.defineCommand)({
74
+ name: 'auth login',
75
+ description: 'Authenticate the CLI with a dashboard access token.',
76
+ group: 'Auth',
77
+ flags: [
78
+ { name: 'token', alias: 't', type: 'string', description: 'Paste a dashboard access token (omit the value to be prompted).' },
79
+ { name: 'api-url', type: 'string', description: 'Override the API base URL.' },
80
+ { name: 'team', type: 'string', description: 'Default team slug.' },
81
+ { name: 'browser', type: 'boolean', default: true, description: 'Auto-open the browser (use --no-browser to skip).' },
82
+ ],
83
+ examples: [
84
+ 'orm-cli auth login',
85
+ 'orm-cli auth login --no-browser',
86
+ 'orm-cli auth login --token <token>',
87
+ 'orm-cli auth login -t <token> --team acme',
88
+ 'orm-cli auth login --api-url https://app.prorm.dev -t <token>',
89
+ ],
90
+ run: async (ctx) => {
91
+ const apiUrl = ctx.flags['api-url'];
92
+ if (typeof apiUrl === 'string' && apiUrl) {
93
+ (0, cloud_1.updateConfig)({ apiUrl });
94
+ }
95
+ const team = typeof ctx.flags.team === 'string' && ctx.flags.team ? ctx.flags.team : undefined;
96
+ // Token flow: either a value was passed, or --token was given without one
97
+ // (or PRORM env) so we prompt for it hidden rather than take it on argv.
98
+ let token = typeof ctx.flags.token === 'string' ? ctx.flags.token : undefined;
99
+ if (ctx.flags.token !== undefined && !token) {
100
+ token = await (0, prompt_1.promptHidden)('Access token: ');
101
+ }
102
+ if (token) {
103
+ await finishLogin(token, undefined, team);
104
+ return 0;
105
+ }
106
+ // Browser OAuth device flow.
107
+ const device = await (0, cloud_1.api)('/api/cli/auth/device', { method: 'POST', auth: false });
108
+ framework_1.out.info(`To sign in, visit ${device.verification_uri} and enter code: ${device.user_code}`);
109
+ framework_1.out.dim(device.verification_uri_complete);
110
+ if (ctx.flags.browser !== false) {
111
+ openBrowser(device.verification_uri_complete);
112
+ }
113
+ let intervalMs = (device.interval && device.interval > 0 ? device.interval : 5) * 1000;
114
+ const deadline = Date.now() + (device.expires_in && device.expires_in > 0 ? device.expires_in : 300) * 1000;
115
+ const spin = (0, io_1.spinner)('Waiting for you to authorize in the browser…');
116
+ let accessToken;
117
+ let refreshToken;
118
+ try {
119
+ while (Date.now() < deadline) {
120
+ await sleep(intervalMs);
121
+ try {
122
+ const res = await (0, cloud_1.api)('/api/cli/auth/token', {
123
+ method: 'POST',
124
+ auth: false,
125
+ body: { device_code: device.device_code },
126
+ });
127
+ if (res && res.access_token) {
128
+ accessToken = res.access_token;
129
+ refreshToken = res.refresh_token;
130
+ break;
131
+ }
132
+ }
133
+ catch (err) {
134
+ const msg = err instanceof Error ? err.message : String(err);
135
+ if (msg.includes('slow_down')) {
136
+ // OAuth back-pressure: lengthen the poll interval and keep going.
137
+ intervalMs += 5000;
138
+ continue;
139
+ }
140
+ if (msg.includes('authorization_pending')) {
141
+ continue; // Keep polling — the user hasn't approved yet.
142
+ }
143
+ if (msg.includes('expired_token')) {
144
+ spin.stop();
145
+ framework_1.out.error('The login request expired. Please run `orm-cli auth login` again.');
146
+ return 1;
147
+ }
148
+ if (msg.includes('access_denied')) {
149
+ spin.stop();
150
+ framework_1.out.error('Login was denied.');
151
+ return 1;
152
+ }
153
+ throw err;
154
+ }
155
+ }
156
+ }
157
+ finally {
158
+ spin.stop();
159
+ }
160
+ if (!accessToken) {
161
+ framework_1.out.error('The login request timed out. Please run `orm-cli auth login` again.');
162
+ return 1;
163
+ }
164
+ await finishLogin(accessToken, refreshToken, team);
165
+ return 0;
166
+ },
167
+ });
168
+ const logout = (0, framework_1.defineCommand)({
169
+ name: 'auth logout',
170
+ description: 'Clear the stored CLI credentials and revoke the session server-side.',
171
+ group: 'Auth',
172
+ flags: [{ name: 'local', type: 'boolean', description: 'Only clear locally; do not revoke server-side.' }],
173
+ examples: ['orm-cli auth logout', 'orm-cli auth logout --local'],
174
+ run: async (ctx) => {
175
+ const cfg = (0, cloud_1.loadConfig)();
176
+ if (ctx.flags.local !== true && cfg.token) {
177
+ try {
178
+ await (0, cloud_1.api)('/api/cli/auth/revoke', { method: 'POST', body: { token: cfg.token } });
179
+ framework_1.out.dim('Session revoked server-side.');
180
+ }
181
+ catch {
182
+ framework_1.out.warn('Could not revoke the session server-side (continuing to clear it locally).');
183
+ }
184
+ }
185
+ (0, cloud_1.clearAuth)();
186
+ framework_1.out.success('Logged out.');
187
+ return 0;
188
+ },
189
+ });
190
+ const whoami = (0, framework_1.defineCommand)({
191
+ name: 'auth whoami',
192
+ description: 'Show the authenticated user, verified against the API.',
193
+ group: 'Auth',
194
+ flags: [
195
+ { name: 'json', type: 'boolean', description: 'Output raw JSON.' },
196
+ { name: 'offline', type: 'boolean', description: 'Print the cached user without calling the API.' },
197
+ ],
198
+ examples: ['orm-cli auth whoami', 'orm-cli auth whoami --offline', 'orm-cli auth whoami --json'],
199
+ run: async (ctx) => {
200
+ const cfg = (0, cloud_1.loadConfig)();
201
+ if (ctx.flags.offline) {
202
+ if (!cfg.user) {
203
+ framework_1.out.warn('No cached user. Run `orm-cli auth whoami` online first.');
204
+ return 1;
205
+ }
206
+ if (ctx.flags.json) {
207
+ framework_1.out.json(cfg.user);
208
+ return 0;
209
+ }
210
+ framework_1.out.info(`Email: ${cfg.user.email}`);
211
+ if (cfg.user.name)
212
+ framework_1.out.info(`Name: ${cfg.user.name}`);
213
+ framework_1.out.info(`ID: ${cfg.user.id}`);
214
+ return 0;
215
+ }
216
+ const user = await (0, cloud_1.api)('/api/cli/auth/whoami');
217
+ if (ctx.flags.json) {
218
+ framework_1.out.json(user);
219
+ return 0;
220
+ }
221
+ framework_1.out.info(`Email: ${user.email}`);
222
+ if (user.name)
223
+ framework_1.out.info(`Name: ${user.name}`);
224
+ framework_1.out.info(`ID: ${user.id}`);
225
+ framework_1.out.info(`Team: ${cfg.teamSlug ?? '(none)'}`);
226
+ return 0;
227
+ },
228
+ });
229
+ const status = (0, framework_1.defineCommand)({
230
+ name: 'auth status',
231
+ description: 'Show the local CLI configuration and verify the session.',
232
+ group: 'Auth',
233
+ flags: [
234
+ { name: 'json', type: 'boolean', description: 'Output raw JSON.' },
235
+ { name: 'no-verify', type: 'boolean', description: 'Skip the live token-validity check.' },
236
+ ],
237
+ examples: ['orm-cli auth status', 'orm-cli auth status --no-verify', 'orm-cli auth status --json'],
238
+ run: async (ctx) => {
239
+ const cfg = (0, cloud_1.loadConfig)();
240
+ // Verify the token against the API unless asked not to, so a revoked/expired
241
+ // token is reported as invalid rather than "present".
242
+ let valid;
243
+ if (cfg.token && ctx.flags['no-verify'] !== true) {
244
+ try {
245
+ await (0, cloud_1.api)('/api/cli/auth/whoami');
246
+ valid = true;
247
+ }
248
+ catch {
249
+ valid = false;
250
+ }
251
+ }
252
+ if (ctx.flags.json) {
253
+ framework_1.out.json({
254
+ apiUrl: cfg.apiUrl,
255
+ authenticated: Boolean(cfg.token),
256
+ tokenValid: valid,
257
+ tokenStorage: cfg.tokenInKeychain ? 'keychain' : cfg.token ? 'file' : null,
258
+ user: cfg.user?.email,
259
+ team: cfg.teamSlug,
260
+ });
261
+ return valid === false ? 3 : 0;
262
+ }
263
+ framework_1.out.info(`API URL: ${cfg.apiUrl}`);
264
+ framework_1.out.info(`Token present: ${cfg.token ? 'yes' : 'no'}`);
265
+ if (cfg.token)
266
+ framework_1.out.info(`Token storage: ${cfg.tokenInKeychain ? 'OS keychain' : 'config file'}`);
267
+ if (valid !== undefined)
268
+ framework_1.out.info(`Token valid: ${valid ? 'yes' : 'no (expired or revoked)'}`);
269
+ framework_1.out.info(`User: ${cfg.user?.email ?? '(none)'}`);
270
+ framework_1.out.info(`Team: ${cfg.teamSlug ?? '(none)'}`);
271
+ return valid === false ? 3 : 0;
272
+ },
273
+ });
274
+ const refresh = (0, framework_1.defineCommand)({
275
+ name: 'auth refresh',
276
+ description: 'Refresh the access token using the stored refresh token.',
277
+ group: 'Auth',
278
+ examples: ['orm-cli auth refresh'],
279
+ run: async () => {
280
+ const cfg = (0, cloud_1.loadConfig)();
281
+ if (!cfg.refreshToken) {
282
+ framework_1.out.error('No refresh token stored. Run `orm-cli auth login` to re-authenticate.');
283
+ return 1;
284
+ }
285
+ const res = await (0, cloud_1.api)('/api/cli/auth/token', {
286
+ method: 'POST',
287
+ auth: false,
288
+ body: { grant_type: 'refresh_token', refresh_token: cfg.refreshToken },
289
+ });
290
+ if (!res.access_token) {
291
+ framework_1.out.error('Refresh failed. Run `orm-cli auth login` to re-authenticate.');
292
+ return 1;
293
+ }
294
+ (0, cloud_1.storeToken)(res.access_token, res.refresh_token ? { refreshToken: res.refresh_token } : {});
295
+ framework_1.out.success('Access token refreshed.');
296
+ return 0;
297
+ },
298
+ });
299
+ const token = (0, framework_1.defineCommand)({
300
+ name: 'auth token',
301
+ description: 'Print or set the stored access token.',
302
+ group: 'Auth',
303
+ flags: [
304
+ { name: 'set', type: 'string', description: 'Store a new access token (omit the value to be prompted).' },
305
+ { name: 'reveal', type: 'boolean', description: 'Print the full token (otherwise it is confirmed/masked).' },
306
+ ],
307
+ examples: ['orm-cli auth token --reveal', 'orm-cli auth token --set <token>'],
308
+ run: async (ctx) => {
309
+ if (ctx.flags.set !== undefined) {
310
+ let value = typeof ctx.flags.set === 'string' ? ctx.flags.set : '';
311
+ if (!value)
312
+ value = await (0, prompt_1.promptHidden)('Access token: ');
313
+ if (!value) {
314
+ framework_1.out.error('No token provided.');
315
+ return 1;
316
+ }
317
+ const inKeychain = (0, cloud_1.storeToken)(value);
318
+ framework_1.out.success(inKeychain ? 'Token stored in the OS keychain.' : 'Token stored.');
319
+ return 0;
320
+ }
321
+ const cfg = (0, cloud_1.loadConfig)();
322
+ if (!cfg.token) {
323
+ framework_1.out.warn('No token stored. Run `orm-cli auth login` first.');
324
+ return 1;
325
+ }
326
+ // Printing the full secret leaks into scrollback — guard it behind --reveal
327
+ // plus an interactive confirmation (or --yes).
328
+ if (ctx.flags.reveal) {
329
+ const g = (0, framework_1.getGlobalOptions)();
330
+ const ok = await (0, prompt_1.confirm)('Print the full access token to stdout?', { assumeYes: g.assumeYes, default: false });
331
+ if (!ok) {
332
+ framework_1.out.warn('Aborted.');
333
+ return 1;
334
+ }
335
+ framework_1.out.info(cfg.token);
336
+ return 0;
337
+ }
338
+ const t = cfg.token;
339
+ const masked = t.length <= 8 ? '*'.repeat(t.length) : `${t.slice(0, 4)}…${t.slice(-4)}`;
340
+ framework_1.out.info(masked);
341
+ framework_1.out.dim(`Stored in ${keychain.isAvailable() && cfg.tokenInKeychain ? 'the OS keychain' : 'the config file'}. Use --reveal to print the full token.`);
342
+ return 0;
343
+ },
344
+ });
345
+ exports.commands = [login, logout, whoami, status, refresh, token];
@@ -0,0 +1,2 @@
1
+ import type { Command } from '../framework';
2
+ export declare const commands: Command[];