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,436 @@
1
+ "use strict";
2
+ // Modular CLI framework for the cloud/account commands (auth, pull, add, new, …).
3
+ // Each command is a self-contained module registered here, so the command
4
+ // surface can grow without touching a central switch. The legacy monolithic
5
+ // commands in ../cli.ts still work; unknown commands fall through to this
6
+ // registry (see wiring in ../cli.ts).
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.out = exports.UsageError = exports.GLOBAL_FLAGS = exports.EXIT = void 0;
9
+ exports.defineCommand = defineCommand;
10
+ exports.getGlobalOptions = getGlobalOptions;
11
+ exports.register = register;
12
+ exports.getCommand = getCommand;
13
+ exports.allCommands = allCommands;
14
+ exports.resolveCommand = resolveCommand;
15
+ exports.closest = closest;
16
+ exports.suggestCommand = suggestCommand;
17
+ exports.parseArgs = parseArgs;
18
+ exports.configureOutput = configureOutput;
19
+ exports.commandHelp = commandHelp;
20
+ exports.topLevelHelp = topLevelHelp;
21
+ exports.runRegistered = runRegistered;
22
+ exports.exitCodeFor = exitCodeFor;
23
+ function defineCommand(cmd) {
24
+ return cmd;
25
+ }
26
+ // ─── Exit codes ───────────────────────────────────────────────────────────────
27
+ // Distinct, script-friendly exit codes so callers can tell classes of failure
28
+ // apart instead of collapsing everything to 1.
29
+ exports.EXIT = {
30
+ OK: 0,
31
+ ERROR: 1,
32
+ USAGE: 2,
33
+ AUTH: 3,
34
+ NETWORK: 4,
35
+ NOT_FOUND: 5,
36
+ TIMEOUT: 124,
37
+ };
38
+ const globalOptions = {
39
+ json: false,
40
+ quiet: false,
41
+ verbose: false,
42
+ assumeYes: false,
43
+ noInput: false,
44
+ truncate: true,
45
+ };
46
+ function getGlobalOptions() {
47
+ return globalOptions;
48
+ }
49
+ /** Flags accepted on every command (merged unless a command declares its own). */
50
+ exports.GLOBAL_FLAGS = [
51
+ { name: 'json', type: 'boolean', description: 'Output raw JSON.' },
52
+ { name: 'output', alias: 'o', type: 'string', description: 'Output format.', choices: ['table', 'json', 'csv', 'tsv'] },
53
+ { name: 'quiet', alias: 'q', type: 'boolean', description: 'Suppress non-essential output.' },
54
+ { name: 'verbose', type: 'boolean', description: 'Verbose / debug output.' },
55
+ { name: 'color', type: 'boolean', description: 'Force color (use --no-color to disable).' },
56
+ { name: 'api-url', type: 'string', description: 'Override the API base URL for this run.' },
57
+ { name: 'team', type: 'string', description: 'Team context for this run.' },
58
+ { name: 'yes', alias: 'y', type: 'boolean', description: 'Assume yes; skip confirmation prompts.' },
59
+ { name: 'no-input', type: 'boolean', description: 'Never prompt (CI/non-interactive mode).' },
60
+ { name: 'profile', type: 'string', description: 'Named config profile to use.' },
61
+ { name: 'config', type: 'string', description: 'Path to an alternate config file.' },
62
+ { name: 'no-truncate', type: 'boolean', description: 'Do not truncate wide table columns.' },
63
+ { name: 'wide', type: 'boolean', description: 'Show full-width table columns (no truncation).' },
64
+ { name: 'timeout', type: 'number', description: 'HTTP timeout in seconds.' },
65
+ ];
66
+ const GLOBAL_FLAG_NAMES = new Set(exports.GLOBAL_FLAGS.map((f) => f.name));
67
+ /** Populate the global-options singleton from parsed flags. */
68
+ function captureGlobalOptions(flags) {
69
+ if (flags.json === true)
70
+ globalOptions.json = true;
71
+ const output = flags.output;
72
+ if (typeof output === 'string') {
73
+ globalOptions.output = output;
74
+ if (output === 'json')
75
+ globalOptions.json = true;
76
+ }
77
+ if (flags.quiet === true)
78
+ globalOptions.quiet = true;
79
+ if (flags.verbose === true)
80
+ globalOptions.verbose = true;
81
+ if (typeof flags.color === 'boolean')
82
+ globalOptions.color = flags.color;
83
+ if (typeof flags['api-url'] === 'string' && flags['api-url'])
84
+ globalOptions.apiUrl = flags['api-url'];
85
+ if (typeof flags.team === 'string' && flags.team)
86
+ globalOptions.team = flags.team;
87
+ if (flags.yes === true)
88
+ globalOptions.assumeYes = true;
89
+ if (flags['no-input'] === true)
90
+ globalOptions.noInput = true;
91
+ if (typeof flags.profile === 'string' && flags.profile)
92
+ globalOptions.profile = flags.profile;
93
+ if (typeof flags.config === 'string' && flags.config)
94
+ globalOptions.configPath = flags.config;
95
+ if (flags['no-truncate'] === true || flags.wide === true)
96
+ globalOptions.truncate = false;
97
+ if (typeof flags.timeout === 'number' && !Number.isNaN(flags.timeout))
98
+ globalOptions.timeoutSec = flags.timeout;
99
+ }
100
+ // ─── Registry ───────────────────────────────────────────────────────────────
101
+ const registry = new Map();
102
+ const aliasMap = new Map();
103
+ function register(...cmds) {
104
+ for (const c of cmds) {
105
+ if (registry.has(c.name))
106
+ throw new Error(`Duplicate CLI command: ${c.name}`);
107
+ registry.set(c.name, c);
108
+ for (const a of c.aliases ?? []) {
109
+ if (!aliasMap.has(a))
110
+ aliasMap.set(a, c.name);
111
+ }
112
+ }
113
+ }
114
+ function getCommand(name) {
115
+ return registry.get(name) ?? registry.get(aliasMap.get(name) ?? '');
116
+ }
117
+ function allCommands() {
118
+ return [...registry.values()].sort((a, b) => a.name.localeCompare(b.name));
119
+ }
120
+ /** Resolve a possibly multi-word command from argv (longest match wins). */
121
+ function resolveCommand(argv) {
122
+ for (const take of [3, 2, 1]) {
123
+ const name = argv.slice(0, take).join(' ');
124
+ const cmd = registry.get(name) ?? registry.get(aliasMap.get(name) ?? '');
125
+ if (cmd)
126
+ return { cmd, rest: argv.slice(take) };
127
+ }
128
+ return { rest: argv };
129
+ }
130
+ // ─── Levenshtein "did you mean" ────────────────────────────────────────────────
131
+ function levenshtein(a, b) {
132
+ const m = a.length;
133
+ const n = b.length;
134
+ const dp = Array.from({ length: m + 1 }, (_, i) => [i, ...new Array(n).fill(0)]);
135
+ for (let j = 0; j <= n; j++)
136
+ dp[0][j] = j;
137
+ for (let i = 1; i <= m; i++) {
138
+ for (let j = 1; j <= n; j++) {
139
+ const cost = a[i - 1] === b[j - 1] ? 0 : 1;
140
+ dp[i][j] = Math.min(dp[i - 1][j] + 1, dp[i][j - 1] + 1, dp[i - 1][j - 1] + cost);
141
+ }
142
+ }
143
+ return dp[m][n];
144
+ }
145
+ /** Closest candidate to `input` within an edit-distance threshold, if any. */
146
+ function closest(input, candidates) {
147
+ let best;
148
+ let bestScore = Infinity;
149
+ for (const cand of candidates) {
150
+ const score = levenshtein(input, cand);
151
+ if (score < bestScore) {
152
+ bestScore = score;
153
+ best = cand;
154
+ }
155
+ }
156
+ const threshold = Math.max(2, Math.floor(input.length / 3));
157
+ return best !== undefined && bestScore <= threshold ? best : undefined;
158
+ }
159
+ /** Suggest a registered command (or alias) close to `name`. */
160
+ function suggestCommand(name) {
161
+ const names = [...registry.keys(), ...aliasMap.keys()];
162
+ // Also match on the first word for namespaced commands.
163
+ return closest(name, names) ?? closest(name, [...new Set(names.map((n) => n.split(' ')[0]))]);
164
+ }
165
+ // ─── Arg parsing ──────────────────────────────────────────────────────────────
166
+ function parseArgs(argv, cmd) {
167
+ const flags = {};
168
+ const positionals = [];
169
+ const flagByName = new Map();
170
+ const flagByAlias = new Map();
171
+ // Command flags first; globals fill any names the command did not claim.
172
+ const merged = [...(cmd.flags ?? [])];
173
+ const declared = new Set(merged.map((f) => f.name));
174
+ for (const g of exports.GLOBAL_FLAGS)
175
+ if (!declared.has(g.name))
176
+ merged.push(g);
177
+ for (const f of merged) {
178
+ flagByName.set(f.name, f);
179
+ if (f.alias && !flagByAlias.has(f.alias))
180
+ flagByAlias.set(f.alias, f);
181
+ if (f.default !== undefined)
182
+ flags[f.name] = f.default;
183
+ }
184
+ for (let i = 0; i < argv.length; i++) {
185
+ const tok = argv[i];
186
+ if (tok === '--') {
187
+ positionals.push(...argv.slice(i + 1));
188
+ break;
189
+ }
190
+ let spec;
191
+ let inlineVal;
192
+ let negated = false;
193
+ if (tok.startsWith('--')) {
194
+ const eq = tok.indexOf('=');
195
+ const name = eq >= 0 ? tok.slice(2, eq) : tok.slice(2);
196
+ if (eq >= 0)
197
+ inlineVal = tok.slice(eq + 1);
198
+ spec = flagByName.get(name);
199
+ if (!spec && name.startsWith('no-')) {
200
+ const base = flagByName.get(name.slice(3));
201
+ if (base && base.type === 'boolean') {
202
+ spec = base;
203
+ negated = true;
204
+ }
205
+ }
206
+ if (!spec) {
207
+ const hint = closest(name, [...flagByName.keys()]);
208
+ throw new UsageError(`Unknown flag: ${tok}${hint ? ` (did you mean --${hint}?)` : ''}`);
209
+ }
210
+ }
211
+ else if (tok.startsWith('-') && tok.length > 1) {
212
+ spec = flagByAlias.get(tok.slice(1));
213
+ if (!spec)
214
+ throw new UsageError(`Unknown flag: ${tok}`);
215
+ }
216
+ else {
217
+ positionals.push(tok);
218
+ continue;
219
+ }
220
+ if (negated) {
221
+ flags[spec.name] = false;
222
+ continue;
223
+ }
224
+ if (spec.type === 'boolean') {
225
+ flags[spec.name] = inlineVal === undefined ? true : inlineVal !== 'false';
226
+ }
227
+ else {
228
+ const val = inlineVal ?? argv[++i];
229
+ if (val === undefined)
230
+ throw new UsageError(`Flag --${spec.name} needs a value`);
231
+ if (spec.choices && !spec.choices.includes(val)) {
232
+ throw new UsageError(`--${spec.name} must be one of: ${spec.choices.join(', ')}`);
233
+ }
234
+ flags[spec.name] = spec.type === 'number' ? Number(val) : val;
235
+ }
236
+ }
237
+ // Validate required flags + positionals.
238
+ for (const f of cmd.flags ?? []) {
239
+ if (f.required && flags[f.name] === undefined)
240
+ throw new UsageError(`Missing required flag --${f.name}`);
241
+ }
242
+ (cmd.positionals ?? []).forEach((p, idx) => {
243
+ if (p.required && positionals[idx] === undefined)
244
+ throw new UsageError(`Missing argument <${p.name}>`);
245
+ if (p.choices && positionals[idx] && !p.choices.includes(positionals[idx])) {
246
+ throw new UsageError(`<${p.name}> must be one of: ${p.choices.join(', ')}`);
247
+ }
248
+ });
249
+ captureGlobalOptions(flags);
250
+ return { positionals, flags, raw: argv };
251
+ }
252
+ // ─── Typed errors ─────────────────────────────────────────────────────────────
253
+ /** A user/usage error (bad flags, missing args) — exits with EXIT.USAGE. */
254
+ class UsageError extends Error {
255
+ }
256
+ exports.UsageError = UsageError;
257
+ // ─── Output helpers ───────────────────────────────────────────────────────────
258
+ const outState = {
259
+ color: process.stdout.isTTY && !process.env.NO_COLOR && process.env.FORCE_COLOR !== '0',
260
+ quiet: false,
261
+ format: 'table',
262
+ truncate: true,
263
+ };
264
+ /** Apply global options to the output layer. Call once after parsing. */
265
+ function configureOutput() {
266
+ const g = globalOptions;
267
+ if (g.color === true)
268
+ outState.color = true;
269
+ else if (g.color === false)
270
+ outState.color = false;
271
+ else if (process.env.FORCE_COLOR && process.env.FORCE_COLOR !== '0')
272
+ outState.color = true;
273
+ else
274
+ outState.color = Boolean(process.stdout.isTTY) && !process.env.NO_COLOR;
275
+ outState.quiet = g.quiet;
276
+ outState.truncate = g.truncate;
277
+ if (g.output === 'csv' || g.output === 'tsv')
278
+ outState.format = g.output;
279
+ }
280
+ const c = (code, s) => (outState.color ? `\x1b[${code}m${s}\x1b[0m` : s);
281
+ function cell(value) {
282
+ return value === undefined || value === null ? '' : String(value);
283
+ }
284
+ function delimited(rows, sep) {
285
+ if (!rows.length)
286
+ return;
287
+ const cols = Object.keys(rows[0]);
288
+ const esc = (s) => sep === ',' && /[",\n]/.test(s) ? `"${s.replace(/"/g, '""')}"` : s;
289
+ console.log(cols.map(esc).join(sep));
290
+ for (const r of rows)
291
+ console.log(cols.map((col) => esc(cell(r[col]))).join(sep));
292
+ }
293
+ exports.out = {
294
+ info: (m) => { if (!outState.quiet)
295
+ console.log(m); },
296
+ success: (m) => { if (!outState.quiet)
297
+ console.log(`${c('32', '✓')} ${m}`); },
298
+ warn: (m) => console.warn(`${c('33', '!')} ${m}`),
299
+ error: (m) => console.error(`${c('31', '✗')} ${m}`),
300
+ dim: (m) => { if (!outState.quiet)
301
+ console.log(c('2', m)); },
302
+ json: (v) => console.log(JSON.stringify(v, null, 2)),
303
+ table: (rows) => {
304
+ if (outState.format === 'csv')
305
+ return delimited(rows, ',');
306
+ if (outState.format === 'tsv')
307
+ return delimited(rows, '\t');
308
+ if (!rows.length)
309
+ return console.log('(none)');
310
+ const cols = Object.keys(rows[0]);
311
+ // Budget per-column width against the terminal so wide values (URLs, source)
312
+ // don't blow past the screen. Disabled by --no-truncate/--wide.
313
+ const termWidth = outState.truncate ? (process.stdout.columns || 0) : 0;
314
+ const cap = termWidth > 0 ? Math.max(12, Math.floor(termWidth / cols.length) - 2) : Infinity;
315
+ const trunc = (s) => (s.length > cap ? s.slice(0, cap - 1) + '…' : s);
316
+ const w = cols.map((col) => Math.max(col.length, ...rows.map((r) => trunc(cell(r[col])).length)));
317
+ const line = (cells) => cells.map((s, i) => s.padEnd(w[i])).join(' ');
318
+ console.log(c('1', line(cols)));
319
+ rows.forEach((r) => console.log(line(cols.map((col) => trunc(cell(r[col]))))));
320
+ },
321
+ };
322
+ // ─── Help ─────────────────────────────────────────────────────────────────────
323
+ function commandHelp(cmd) {
324
+ const lines = [`\n${cmd.name} — ${cmd.description}\n`];
325
+ const usageParts = ['orm-cli', cmd.name];
326
+ (cmd.positionals ?? []).forEach((p) => usageParts.push(p.required ? `<${p.name}>` : `[${p.name}]`));
327
+ if (cmd.flags?.length)
328
+ usageParts.push('[flags]');
329
+ lines.push(`Usage: ${usageParts.join(' ')}\n`);
330
+ if (cmd.aliases?.length)
331
+ lines.push(`Aliases: ${cmd.aliases.join(', ')}\n`);
332
+ if (cmd.positionals?.length) {
333
+ lines.push('Arguments:');
334
+ cmd.positionals.forEach((p) => {
335
+ const meta = p.choices ? ` [choices: ${p.choices.join(', ')}]` : '';
336
+ lines.push(` ${p.name.padEnd(18)} ${p.description}${meta}`);
337
+ });
338
+ lines.push('');
339
+ }
340
+ if (cmd.flags?.length) {
341
+ lines.push('Flags:');
342
+ cmd.flags.forEach((f) => {
343
+ const names = `--${f.name}${f.alias ? `, -${f.alias}` : ''}`;
344
+ const bits = [];
345
+ if (f.choices)
346
+ bits.push(`choices: ${f.choices.join(', ')}`);
347
+ if (f.default !== undefined)
348
+ bits.push(`default: ${f.default}`);
349
+ const meta = bits.length ? ` [${bits.join('; ')}]` : '';
350
+ lines.push(` ${names.padEnd(22)} ${f.description}${f.required ? ' (required)' : ''}${meta}`);
351
+ });
352
+ lines.push('');
353
+ }
354
+ if (cmd.examples?.length) {
355
+ lines.push('Examples:');
356
+ cmd.examples.forEach((e) => lines.push(` ${e}`));
357
+ lines.push('');
358
+ }
359
+ lines.push('Global flags: --json, -o <fmt>, --quiet, --verbose, --color/--no-color,');
360
+ lines.push(' --api-url <url>, --team <slug>, --yes, --no-input, --profile <name>,');
361
+ lines.push(' --config <path>, --no-truncate, --timeout <sec>');
362
+ return lines.join('\n');
363
+ }
364
+ function topLevelHelp() {
365
+ const groups = new Map();
366
+ for (const cmd of allCommands()) {
367
+ const g = cmd.group ?? 'Commands';
368
+ if (!groups.has(g))
369
+ groups.set(g, []);
370
+ groups.get(g).push(cmd);
371
+ }
372
+ const lines = ['\norm-cli — prorm command line\n', 'Usage: orm-cli <command> [args] [flags]\n'];
373
+ for (const [g, cmds] of [...groups].sort()) {
374
+ lines.push(c('1', g));
375
+ cmds.forEach((cmd) => lines.push(` ${cmd.name.padEnd(22)} ${cmd.description}`));
376
+ lines.push('');
377
+ }
378
+ lines.push('Global flags (any command):');
379
+ lines.push(' --json / -o <table|json|csv|tsv> Output format');
380
+ lines.push(' --quiet / --verbose Silence or expand output');
381
+ lines.push(' --color / --no-color Force or disable ANSI color');
382
+ lines.push(' --api-url <url> --team <slug> Per-invocation context override');
383
+ lines.push(' --yes / --no-input Confirm-all / never-prompt (CI)');
384
+ lines.push(' --profile <name> --config <path> Alternate account / config file');
385
+ lines.push('');
386
+ lines.push('Environment: PRORM_API_URL, PRORM_CONFIG, PRORM_PROFILE, PRORM_NO_INPUT,');
387
+ lines.push(' PRORM_NO_KEYCHAIN, NO_COLOR, FORCE_COLOR, HTTP(S)_PROXY, PRORM_DEBUG');
388
+ lines.push('');
389
+ lines.push('Run `orm-cli help <command>` or `orm-cli <command> --help` for details.');
390
+ return lines.join('\n');
391
+ }
392
+ // ─── Dispatch ───────────────────────────────────────────────────────────────
393
+ /** Dispatch argv against the registry. Returns an exit code, or null if no
394
+ * registered command matched (so the caller can fall back to legacy handling). */
395
+ async function runRegistered(argv) {
396
+ // `help [command]` form.
397
+ if (argv[0] === 'help') {
398
+ const { cmd } = resolveCommand(argv.slice(1));
399
+ console.log(cmd ? commandHelp(cmd) : topLevelHelp());
400
+ return 0;
401
+ }
402
+ const { cmd, rest } = resolveCommand(argv);
403
+ if (!cmd)
404
+ return null;
405
+ if (rest.includes('--help') || rest.includes('-h')) {
406
+ console.log(commandHelp(cmd));
407
+ return 0;
408
+ }
409
+ try {
410
+ const ctx = parseArgs(rest, cmd);
411
+ configureOutput();
412
+ const code = await cmd.run(ctx);
413
+ return typeof code === 'number' ? code : 0;
414
+ }
415
+ catch (err) {
416
+ configureOutput();
417
+ exports.out.error(err instanceof Error ? err.message : String(err));
418
+ return exitCodeFor(err);
419
+ }
420
+ }
421
+ /** Map a thrown error to a script-friendly exit code. */
422
+ function exitCodeFor(err) {
423
+ if (err instanceof UsageError)
424
+ return exports.EXIT.USAGE;
425
+ const anyErr = err;
426
+ if (anyErr && typeof anyErr.status === 'number') {
427
+ if (anyErr.status === 401 || anyErr.status === 403)
428
+ return exports.EXIT.AUTH;
429
+ if (anyErr.status === 404)
430
+ return exports.EXIT.NOT_FOUND;
431
+ }
432
+ if (anyErr && (anyErr.code === 'ENETWORK' || anyErr.code === 'ENOTFOUND' || anyErr.code === 'ETIMEDOUT')) {
433
+ return exports.EXIT.NETWORK;
434
+ }
435
+ return exports.EXIT.ERROR;
436
+ }
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Guard a local write: if `dest` already exists, confirm before clobbering it.
3
+ * Returns true when it is safe to proceed. `assumeYes` (from --yes) skips the
4
+ * prompt; in a non-interactive session without --yes this refuses.
5
+ */
6
+ export declare function ensureOverwrite(dest: string, assumeYes: boolean): Promise<boolean>;
7
+ /** Stream a local file to a presigned PUT URL without buffering it in memory. */
8
+ export declare function uploadFile(url: string, filePath: string, contentType: string): Promise<number>;
9
+ /** Stream a presigned GET URL to a local file without buffering it in memory. */
10
+ export declare function downloadFile(url: string, dest: string): Promise<void>;
11
+ /**
12
+ * Expand simple `*`/`?` globs against the filesystem. Patterns without wildcards
13
+ * are returned as-is. Only the basename segment is matched (single directory).
14
+ */
15
+ export declare function expandGlobs(patterns: string[]): string[];
16
+ /**
17
+ * Warn when writing credentials to a file that is not git-ignored. Best-effort:
18
+ * checks a sibling/ancestor .gitignore for the target's basename. Never blocks.
19
+ */
20
+ export declare function warnIfTracked(file: string): void;
21
+ export interface Spinner {
22
+ update(text: string): void;
23
+ stop(finalText?: string): void;
24
+ }
25
+ /** Start a spinner (no-op when quiet or not a TTY). */
26
+ export declare function spinner(text: string): Spinner;
package/dist/cli/io.js ADDED
@@ -0,0 +1,181 @@
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.ensureOverwrite = ensureOverwrite;
37
+ exports.uploadFile = uploadFile;
38
+ exports.downloadFile = downloadFile;
39
+ exports.expandGlobs = expandGlobs;
40
+ exports.warnIfTracked = warnIfTracked;
41
+ exports.spinner = spinner;
42
+ // Filesystem + transfer helpers shared by the storage/code/user commands:
43
+ // streaming up/downloads (so large files never buffer fully in memory),
44
+ // overwrite protection, glob expansion, a .env git-tracking guard, and a small
45
+ // TTY spinner for long-running operations.
46
+ const fs = __importStar(require("fs"));
47
+ const path = __importStar(require("path"));
48
+ const stream_1 = require("stream");
49
+ const promises_1 = require("stream/promises");
50
+ const framework_1 = require("./framework");
51
+ const prompt_1 = require("./prompt");
52
+ // ─── Overwrite protection ──────────────────────────────────────────────────────
53
+ /**
54
+ * Guard a local write: if `dest` already exists, confirm before clobbering it.
55
+ * Returns true when it is safe to proceed. `assumeYes` (from --yes) skips the
56
+ * prompt; in a non-interactive session without --yes this refuses.
57
+ */
58
+ async function ensureOverwrite(dest, assumeYes) {
59
+ if (!fs.existsSync(dest))
60
+ return true;
61
+ const ok = await (0, prompt_1.confirm)(`${dest} already exists. Overwrite?`, { assumeYes, default: false });
62
+ if (!ok)
63
+ framework_1.out.warn(`Skipped ${dest} (exists; pass --yes to overwrite).`);
64
+ return ok;
65
+ }
66
+ // ─── Streaming transfers ───────────────────────────────────────────────────────
67
+ /** Stream a local file to a presigned PUT URL without buffering it in memory. */
68
+ async function uploadFile(url, filePath, contentType) {
69
+ const size = fs.statSync(filePath).size;
70
+ const stream = fs.createReadStream(filePath);
71
+ const res = await fetch(url, {
72
+ method: 'PUT',
73
+ // Node's fetch (undici) requires duplex for a stream body.
74
+ body: stream_1.Readable.toWeb(stream),
75
+ duplex: 'half',
76
+ headers: { 'content-type': contentType, 'content-length': String(size) },
77
+ });
78
+ if (!res.ok)
79
+ throw new Error(`Upload failed: ${res.status} ${res.statusText}`);
80
+ return size;
81
+ }
82
+ /** Stream a presigned GET URL to a local file without buffering it in memory. */
83
+ async function downloadFile(url, dest) {
84
+ const res = await fetch(url);
85
+ if (!res.ok)
86
+ throw new Error(`Download failed: ${res.status} ${res.statusText}`);
87
+ if (!res.body) {
88
+ fs.writeFileSync(dest, Buffer.from(await res.arrayBuffer()));
89
+ return;
90
+ }
91
+ const dir = path.dirname(dest);
92
+ if (dir)
93
+ fs.mkdirSync(dir, { recursive: true });
94
+ await (0, promises_1.pipeline)(stream_1.Readable.fromWeb(res.body), fs.createWriteStream(dest));
95
+ }
96
+ // ─── Glob expansion ────────────────────────────────────────────────────────────
97
+ /**
98
+ * Expand simple `*`/`?` globs against the filesystem. Patterns without wildcards
99
+ * are returned as-is. Only the basename segment is matched (single directory).
100
+ */
101
+ function expandGlobs(patterns) {
102
+ const results = [];
103
+ for (const pattern of patterns) {
104
+ if (!/[*?]/.test(pattern)) {
105
+ results.push(pattern);
106
+ continue;
107
+ }
108
+ const dir = path.dirname(pattern);
109
+ const base = path.basename(pattern);
110
+ const re = new RegExp('^' + base.replace(/[.+^${}()|[\]\\]/g, '\\$&').replace(/\*/g, '.*').replace(/\?/g, '.') + '$');
111
+ let entries = [];
112
+ try {
113
+ entries = fs.readdirSync(dir);
114
+ }
115
+ catch {
116
+ entries = [];
117
+ }
118
+ const matched = entries.filter((e) => re.test(e)).map((e) => path.join(dir, e));
119
+ if (matched.length)
120
+ results.push(...matched);
121
+ else
122
+ framework_1.out.warn(`No files match ${pattern}`);
123
+ }
124
+ return results;
125
+ }
126
+ // ─── .env git-tracking guard ────────────────────────────────────────────────────
127
+ /**
128
+ * Warn when writing credentials to a file that is not git-ignored. Best-effort:
129
+ * checks a sibling/ancestor .gitignore for the target's basename. Never blocks.
130
+ */
131
+ function warnIfTracked(file) {
132
+ const abs = path.resolve(file);
133
+ const base = path.basename(abs);
134
+ let dir = path.dirname(abs);
135
+ for (let i = 0; i < 6; i++) {
136
+ const gi = path.join(dir, '.gitignore');
137
+ try {
138
+ const contents = fs.readFileSync(gi, 'utf8');
139
+ const patterns = contents.split(/\r?\n/).map((l) => l.trim()).filter((l) => l && !l.startsWith('#'));
140
+ if (patterns.some((p) => p === base || p === '*.env' || p === base.replace(/^\./, '.') || (p.startsWith('.env') && base.startsWith('.env')))) {
141
+ return; // Looks ignored.
142
+ }
143
+ }
144
+ catch {
145
+ // no .gitignore here
146
+ }
147
+ const parent = path.dirname(dir);
148
+ if (parent === dir)
149
+ break;
150
+ dir = parent;
151
+ if (fs.existsSync(path.join(dir, '.git')))
152
+ break;
153
+ }
154
+ framework_1.out.warn(`${file} may not be git-ignored — add it to .gitignore so credentials aren't committed.`);
155
+ }
156
+ // ─── Spinner ────────────────────────────────────────────────────────────────────
157
+ const FRAMES = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
158
+ /** Start a spinner (no-op when quiet or not a TTY). */
159
+ function spinner(text) {
160
+ const g = (0, framework_1.getGlobalOptions)();
161
+ const active = Boolean(process.stderr.isTTY) && !g.quiet && !g.json;
162
+ if (!active) {
163
+ return { update: () => undefined, stop: () => undefined };
164
+ }
165
+ let i = 0;
166
+ let current = text;
167
+ const render = () => {
168
+ process.stderr.write(`\r${FRAMES[i = (i + 1) % FRAMES.length]} ${current}`);
169
+ };
170
+ const timer = setInterval(render, 80);
171
+ render();
172
+ return {
173
+ update: (t) => { current = t; },
174
+ stop: (finalText) => {
175
+ clearInterval(timer);
176
+ process.stderr.write('\r\x1b[K');
177
+ if (finalText)
178
+ process.stderr.write(finalText + '\n');
179
+ },
180
+ };
181
+ }
@@ -0,0 +1,10 @@
1
+ /** The keychain backend available on this host, or null if none. */
2
+ export declare function backend(): 'macos' | 'libsecret' | null;
3
+ /** True when a native credential store will be used for the token. */
4
+ export declare function isAvailable(): boolean;
5
+ /** Store the token in the OS keychain. Returns false if no backend handled it. */
6
+ export declare function setToken(token: string): boolean;
7
+ /** Read the token from the OS keychain, or undefined if absent/unavailable. */
8
+ export declare function getToken(): string | undefined;
9
+ /** Delete the token from the OS keychain (best-effort). */
10
+ export declare function deleteToken(): void;