git-remote-ops 0.1.0 → 0.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 (274) hide show
  1. package/AGENTS.md +33 -32
  2. package/README.md +80 -206
  3. package/dist/cli.js +215 -0
  4. package/dist/cli.js.map +1 -0
  5. package/{types → dist}/client.d.ts +11 -15
  6. package/dist/client.d.ts.map +1 -0
  7. package/{esm → dist}/client.js +107 -83
  8. package/dist/client.js.map +1 -0
  9. package/{types → dist}/errors.d.ts +30 -16
  10. package/dist/errors.d.ts.map +1 -0
  11. package/{esm → dist}/errors.js +17 -8
  12. package/dist/errors.js.map +1 -0
  13. package/{types → dist}/index.d.ts +1 -0
  14. package/dist/index.d.ts.map +1 -0
  15. package/{esm → dist}/index.js +2 -0
  16. package/dist/index.js.map +1 -0
  17. package/{types → dist}/logger.d.ts +11 -0
  18. package/dist/logger.d.ts.map +1 -0
  19. package/{esm → dist}/logger.js +3 -19
  20. package/dist/logger.js.map +1 -0
  21. package/{esm → dist}/objects/commit.js +1 -0
  22. package/dist/objects/commit.js.map +1 -0
  23. package/{esm → dist}/objects/index.js +1 -0
  24. package/dist/objects/index.js.map +1 -0
  25. package/{types → dist}/objects/tree.d.ts.map +1 -1
  26. package/{esm → dist}/objects/tree.js +2 -2
  27. package/dist/objects/tree.js.map +1 -0
  28. package/{esm → dist}/pack/delta.js +1 -0
  29. package/dist/pack/delta.js.map +1 -0
  30. package/{esm → dist}/pack/index.js +1 -0
  31. package/dist/pack/index.js.map +1 -0
  32. package/{types → dist}/pack/objects.d.ts.map +1 -1
  33. package/{esm → dist}/pack/objects.js +3 -3
  34. package/dist/pack/objects.js.map +1 -0
  35. package/{types → dist}/pack/parser.d.ts +19 -3
  36. package/dist/pack/parser.d.ts.map +1 -0
  37. package/{esm → dist}/pack/parser.js +46 -15
  38. package/dist/pack/parser.js.map +1 -0
  39. package/{esm → dist}/protocol/index.js +1 -0
  40. package/dist/protocol/index.js.map +1 -0
  41. package/{types → dist}/protocol/pkt_line.d.ts +3 -3
  42. package/{types → dist}/protocol/pkt_line.d.ts.map +1 -1
  43. package/{esm → dist}/protocol/pkt_line.js +1 -0
  44. package/dist/protocol/pkt_line.js.map +1 -0
  45. package/{esm → dist}/protocol/refs.js +1 -0
  46. package/dist/protocol/refs.js.map +1 -0
  47. package/{types → dist}/protocol/upload_pack.d.ts +1 -0
  48. package/{types → dist}/protocol/upload_pack.d.ts.map +1 -1
  49. package/{esm → dist}/protocol/upload_pack.js +10 -1
  50. package/dist/protocol/upload_pack.js.map +1 -0
  51. package/dist/store.d.ts +28 -0
  52. package/dist/store.d.ts.map +1 -0
  53. package/dist/store.js +179 -0
  54. package/dist/store.js.map +1 -0
  55. package/{types → dist}/transport.d.ts +15 -2
  56. package/dist/transport.d.ts.map +1 -0
  57. package/{esm → dist}/transport.js +44 -15
  58. package/dist/transport.js.map +1 -0
  59. package/{types → dist}/types.d.ts +12 -7
  60. package/dist/types.d.ts.map +1 -0
  61. package/{esm → dist}/types.js +1 -0
  62. package/dist/types.js.map +1 -0
  63. package/package.json +42 -29
  64. package/esm/_dnt.shims.js +0 -72
  65. package/esm/cli.js +0 -217
  66. package/esm/deps/jsr.io/@cliffy/command/1.1.0/_argument_types.js +0 -1
  67. package/esm/deps/jsr.io/@cliffy/command/1.1.0/_errors.js +0 -133
  68. package/esm/deps/jsr.io/@cliffy/command/1.1.0/_spread.js +0 -1
  69. package/esm/deps/jsr.io/@cliffy/command/1.1.0/_type_utils.js +0 -1
  70. package/esm/deps/jsr.io/@cliffy/command/1.1.0/_utils.js +0 -141
  71. package/esm/deps/jsr.io/@cliffy/command/1.1.0/command.js +0 -1861
  72. package/esm/deps/jsr.io/@cliffy/command/1.1.0/help/_help_generator.js +0 -357
  73. package/esm/deps/jsr.io/@cliffy/command/1.1.0/mod.js +0 -13
  74. package/esm/deps/jsr.io/@cliffy/command/1.1.0/type.js +0 -27
  75. package/esm/deps/jsr.io/@cliffy/command/1.1.0/types/action_list.js +0 -16
  76. package/esm/deps/jsr.io/@cliffy/command/1.1.0/types/boolean.js +0 -13
  77. package/esm/deps/jsr.io/@cliffy/command/1.1.0/types/child_command.js +0 -14
  78. package/esm/deps/jsr.io/@cliffy/command/1.1.0/types/command.js +0 -9
  79. package/esm/deps/jsr.io/@cliffy/command/1.1.0/types/enum.js +0 -24
  80. package/esm/deps/jsr.io/@cliffy/command/1.1.0/types/file.js +0 -12
  81. package/esm/deps/jsr.io/@cliffy/command/1.1.0/types/integer.js +0 -9
  82. package/esm/deps/jsr.io/@cliffy/command/1.1.0/types/number.js +0 -9
  83. package/esm/deps/jsr.io/@cliffy/command/1.1.0/types/secret.js +0 -7
  84. package/esm/deps/jsr.io/@cliffy/command/1.1.0/types/string.js +0 -9
  85. package/esm/deps/jsr.io/@cliffy/command/1.1.0/types.js +0 -2
  86. package/esm/deps/jsr.io/@cliffy/command/1.1.0/upgrade/_check_version.js +0 -26
  87. package/esm/deps/jsr.io/@cliffy/flags/1.1.0/_errors.js +0 -129
  88. package/esm/deps/jsr.io/@cliffy/flags/1.1.0/_utils.js +0 -100
  89. package/esm/deps/jsr.io/@cliffy/flags/1.1.0/_validate_flags.js +0 -166
  90. package/esm/deps/jsr.io/@cliffy/flags/1.1.0/flags.js +0 -750
  91. package/esm/deps/jsr.io/@cliffy/flags/1.1.0/mod.js +0 -55
  92. package/esm/deps/jsr.io/@cliffy/flags/1.1.0/types/boolean.js +0 -11
  93. package/esm/deps/jsr.io/@cliffy/flags/1.1.0/types/integer.js +0 -9
  94. package/esm/deps/jsr.io/@cliffy/flags/1.1.0/types/number.js +0 -11
  95. package/esm/deps/jsr.io/@cliffy/flags/1.1.0/types/string.js +0 -4
  96. package/esm/deps/jsr.io/@cliffy/flags/1.1.0/types.js +0 -1
  97. package/esm/deps/jsr.io/@cliffy/internal/1.1.0/runtime/exit.js +0 -16
  98. package/esm/deps/jsr.io/@cliffy/internal/1.1.0/runtime/get_args.js +0 -11
  99. package/esm/deps/jsr.io/@cliffy/internal/1.1.0/runtime/get_columns.js +0 -25
  100. package/esm/deps/jsr.io/@cliffy/internal/1.1.0/runtime/get_env.js +0 -18
  101. package/esm/deps/jsr.io/@cliffy/internal/1.1.0/runtime/inspect.js +0 -11
  102. package/esm/deps/jsr.io/@cliffy/table/1.1.0/_layout.js +0 -616
  103. package/esm/deps/jsr.io/@cliffy/table/1.1.0/_utils.js +0 -79
  104. package/esm/deps/jsr.io/@cliffy/table/1.1.0/border.js +0 -18
  105. package/esm/deps/jsr.io/@cliffy/table/1.1.0/cell.js +0 -190
  106. package/esm/deps/jsr.io/@cliffy/table/1.1.0/column.js +0 -117
  107. package/esm/deps/jsr.io/@cliffy/table/1.1.0/consume_words.js +0 -64
  108. package/esm/deps/jsr.io/@cliffy/table/1.1.0/mod.js +0 -42
  109. package/esm/deps/jsr.io/@cliffy/table/1.1.0/row.js +0 -82
  110. package/esm/deps/jsr.io/@cliffy/table/1.1.0/table.js +0 -341
  111. package/esm/deps/jsr.io/@cliffy/table/1.1.0/unicode_width.js +0 -101
  112. package/esm/deps/jsr.io/@std/crypto/1.1.0/_types.js +0 -2
  113. package/esm/deps/jsr.io/@std/crypto/1.1.0/_wasm/lib/deno_std_wasm_crypto.internal.js +0 -237
  114. package/esm/deps/jsr.io/@std/crypto/1.1.0/_wasm/lib/deno_std_wasm_crypto.js +0 -2277
  115. package/esm/deps/jsr.io/@std/crypto/1.1.0/_wasm/mod.js +0 -46
  116. package/esm/deps/jsr.io/@std/crypto/1.1.0/aes_gcm.js +0 -132
  117. package/esm/deps/jsr.io/@std/crypto/1.1.0/crypto.js +0 -270
  118. package/esm/deps/jsr.io/@std/crypto/1.1.0/mod.js +0 -23
  119. package/esm/deps/jsr.io/@std/crypto/1.1.0/timing_safe_equal.js +0 -61
  120. package/esm/deps/jsr.io/@std/encoding/1.0.10/_common16.js +0 -51
  121. package/esm/deps/jsr.io/@std/encoding/1.0.10/_common_detach.js +0 -13
  122. package/esm/deps/jsr.io/@std/encoding/1.0.10/_types.js +0 -2
  123. package/esm/deps/jsr.io/@std/encoding/1.0.10/hex.js +0 -87
  124. package/esm/deps/jsr.io/@std/fmt/1.0.10/colors.js +0 -903
  125. package/esm/deps/jsr.io/@std/text/1.0.18/closest_string.js +0 -46
  126. package/esm/deps/jsr.io/@std/text/1.0.18/levenshtein_distance.js +0 -127
  127. package/esm/package.json +0 -3
  128. package/types/_dnt.shims.d.ts +0 -16
  129. package/types/_dnt.shims.d.ts.map +0 -1
  130. package/types/client.d.ts.map +0 -1
  131. package/types/deps/jsr.io/@cliffy/command/1.1.0/_argument_types.d.ts +0 -163
  132. package/types/deps/jsr.io/@cliffy/command/1.1.0/_argument_types.d.ts.map +0 -1
  133. package/types/deps/jsr.io/@cliffy/command/1.1.0/_errors.d.ts +0 -71
  134. package/types/deps/jsr.io/@cliffy/command/1.1.0/_errors.d.ts.map +0 -1
  135. package/types/deps/jsr.io/@cliffy/command/1.1.0/_spread.d.ts +0 -16
  136. package/types/deps/jsr.io/@cliffy/command/1.1.0/_spread.d.ts.map +0 -1
  137. package/types/deps/jsr.io/@cliffy/command/1.1.0/_type_utils.d.ts +0 -15
  138. package/types/deps/jsr.io/@cliffy/command/1.1.0/_type_utils.d.ts.map +0 -1
  139. package/types/deps/jsr.io/@cliffy/command/1.1.0/_utils.d.ts +0 -38
  140. package/types/deps/jsr.io/@cliffy/command/1.1.0/_utils.d.ts.map +0 -1
  141. package/types/deps/jsr.io/@cliffy/command/1.1.0/command.d.ts +0 -1086
  142. package/types/deps/jsr.io/@cliffy/command/1.1.0/command.d.ts.map +0 -1
  143. package/types/deps/jsr.io/@cliffy/command/1.1.0/help/_help_generator.d.ts +0 -33
  144. package/types/deps/jsr.io/@cliffy/command/1.1.0/help/_help_generator.d.ts.map +0 -1
  145. package/types/deps/jsr.io/@cliffy/command/1.1.0/mod.d.ts +0 -78
  146. package/types/deps/jsr.io/@cliffy/command/1.1.0/mod.d.ts.map +0 -1
  147. package/types/deps/jsr.io/@cliffy/command/1.1.0/type.d.ts +0 -51
  148. package/types/deps/jsr.io/@cliffy/command/1.1.0/type.d.ts.map +0 -1
  149. package/types/deps/jsr.io/@cliffy/command/1.1.0/types/action_list.d.ts +0 -10
  150. package/types/deps/jsr.io/@cliffy/command/1.1.0/types/action_list.d.ts.map +0 -1
  151. package/types/deps/jsr.io/@cliffy/command/1.1.0/types/boolean.d.ts +0 -10
  152. package/types/deps/jsr.io/@cliffy/command/1.1.0/types/boolean.d.ts.map +0 -1
  153. package/types/deps/jsr.io/@cliffy/command/1.1.0/types/child_command.d.ts +0 -10
  154. package/types/deps/jsr.io/@cliffy/command/1.1.0/types/child_command.d.ts.map +0 -1
  155. package/types/deps/jsr.io/@cliffy/command/1.1.0/types/command.d.ts +0 -8
  156. package/types/deps/jsr.io/@cliffy/command/1.1.0/types/command.d.ts.map +0 -1
  157. package/types/deps/jsr.io/@cliffy/command/1.1.0/types/enum.d.ts +0 -11
  158. package/types/deps/jsr.io/@cliffy/command/1.1.0/types/enum.d.ts.map +0 -1
  159. package/types/deps/jsr.io/@cliffy/command/1.1.0/types/file.d.ts +0 -6
  160. package/types/deps/jsr.io/@cliffy/command/1.1.0/types/file.d.ts.map +0 -1
  161. package/types/deps/jsr.io/@cliffy/command/1.1.0/types/integer.d.ts +0 -8
  162. package/types/deps/jsr.io/@cliffy/command/1.1.0/types/integer.d.ts.map +0 -1
  163. package/types/deps/jsr.io/@cliffy/command/1.1.0/types/number.d.ts +0 -8
  164. package/types/deps/jsr.io/@cliffy/command/1.1.0/types/number.d.ts.map +0 -1
  165. package/types/deps/jsr.io/@cliffy/command/1.1.0/types/secret.d.ts +0 -6
  166. package/types/deps/jsr.io/@cliffy/command/1.1.0/types/secret.d.ts.map +0 -1
  167. package/types/deps/jsr.io/@cliffy/command/1.1.0/types/string.d.ts +0 -8
  168. package/types/deps/jsr.io/@cliffy/command/1.1.0/types/string.d.ts.map +0 -1
  169. package/types/deps/jsr.io/@cliffy/command/1.1.0/types.d.ts +0 -161
  170. package/types/deps/jsr.io/@cliffy/command/1.1.0/types.d.ts.map +0 -1
  171. package/types/deps/jsr.io/@cliffy/command/1.1.0/upgrade/_check_version.d.ts +0 -4
  172. package/types/deps/jsr.io/@cliffy/command/1.1.0/upgrade/_check_version.d.ts.map +0 -1
  173. package/types/deps/jsr.io/@cliffy/flags/1.1.0/_errors.d.ts +0 -67
  174. package/types/deps/jsr.io/@cliffy/flags/1.1.0/_errors.d.ts.map +0 -1
  175. package/types/deps/jsr.io/@cliffy/flags/1.1.0/_utils.d.ts +0 -17
  176. package/types/deps/jsr.io/@cliffy/flags/1.1.0/_utils.d.ts.map +0 -1
  177. package/types/deps/jsr.io/@cliffy/flags/1.1.0/_validate_flags.d.ts +0 -11
  178. package/types/deps/jsr.io/@cliffy/flags/1.1.0/_validate_flags.d.ts.map +0 -1
  179. package/types/deps/jsr.io/@cliffy/flags/1.1.0/flags.d.ts +0 -154
  180. package/types/deps/jsr.io/@cliffy/flags/1.1.0/flags.d.ts.map +0 -1
  181. package/types/deps/jsr.io/@cliffy/flags/1.1.0/mod.d.ts +0 -57
  182. package/types/deps/jsr.io/@cliffy/flags/1.1.0/mod.d.ts.map +0 -1
  183. package/types/deps/jsr.io/@cliffy/flags/1.1.0/types/boolean.d.ts +0 -4
  184. package/types/deps/jsr.io/@cliffy/flags/1.1.0/types/boolean.d.ts.map +0 -1
  185. package/types/deps/jsr.io/@cliffy/flags/1.1.0/types/integer.d.ts +0 -4
  186. package/types/deps/jsr.io/@cliffy/flags/1.1.0/types/integer.d.ts.map +0 -1
  187. package/types/deps/jsr.io/@cliffy/flags/1.1.0/types/number.d.ts +0 -4
  188. package/types/deps/jsr.io/@cliffy/flags/1.1.0/types/number.d.ts.map +0 -1
  189. package/types/deps/jsr.io/@cliffy/flags/1.1.0/types/string.d.ts +0 -4
  190. package/types/deps/jsr.io/@cliffy/flags/1.1.0/types/string.d.ts.map +0 -1
  191. package/types/deps/jsr.io/@cliffy/flags/1.1.0/types.d.ts +0 -170
  192. package/types/deps/jsr.io/@cliffy/flags/1.1.0/types.d.ts.map +0 -1
  193. package/types/deps/jsr.io/@cliffy/internal/1.1.0/runtime/exit.d.ts +0 -8
  194. package/types/deps/jsr.io/@cliffy/internal/1.1.0/runtime/exit.d.ts.map +0 -1
  195. package/types/deps/jsr.io/@cliffy/internal/1.1.0/runtime/get_args.d.ts +0 -7
  196. package/types/deps/jsr.io/@cliffy/internal/1.1.0/runtime/get_args.d.ts.map +0 -1
  197. package/types/deps/jsr.io/@cliffy/internal/1.1.0/runtime/get_columns.d.ts +0 -7
  198. package/types/deps/jsr.io/@cliffy/internal/1.1.0/runtime/get_columns.d.ts.map +0 -1
  199. package/types/deps/jsr.io/@cliffy/internal/1.1.0/runtime/get_env.d.ts +0 -8
  200. package/types/deps/jsr.io/@cliffy/internal/1.1.0/runtime/get_env.d.ts.map +0 -1
  201. package/types/deps/jsr.io/@cliffy/internal/1.1.0/runtime/inspect.d.ts +0 -7
  202. package/types/deps/jsr.io/@cliffy/internal/1.1.0/runtime/inspect.d.ts.map +0 -1
  203. package/types/deps/jsr.io/@cliffy/table/1.1.0/_layout.d.ts +0 -108
  204. package/types/deps/jsr.io/@cliffy/table/1.1.0/_layout.d.ts.map +0 -1
  205. package/types/deps/jsr.io/@cliffy/table/1.1.0/_utils.d.ts +0 -26
  206. package/types/deps/jsr.io/@cliffy/table/1.1.0/_utils.d.ts.map +0 -1
  207. package/types/deps/jsr.io/@cliffy/table/1.1.0/border.d.ts +0 -21
  208. package/types/deps/jsr.io/@cliffy/table/1.1.0/border.d.ts.map +0 -1
  209. package/types/deps/jsr.io/@cliffy/table/1.1.0/cell.d.ts +0 -155
  210. package/types/deps/jsr.io/@cliffy/table/1.1.0/cell.d.ts.map +0 -1
  211. package/types/deps/jsr.io/@cliffy/table/1.1.0/column.d.ts +0 -97
  212. package/types/deps/jsr.io/@cliffy/table/1.1.0/column.d.ts.map +0 -1
  213. package/types/deps/jsr.io/@cliffy/table/1.1.0/consume_words.d.ts +0 -30
  214. package/types/deps/jsr.io/@cliffy/table/1.1.0/consume_words.d.ts.map +0 -1
  215. package/types/deps/jsr.io/@cliffy/table/1.1.0/mod.d.ts +0 -43
  216. package/types/deps/jsr.io/@cliffy/table/1.1.0/mod.d.ts.map +0 -1
  217. package/types/deps/jsr.io/@cliffy/table/1.1.0/row.d.ts +0 -67
  218. package/types/deps/jsr.io/@cliffy/table/1.1.0/row.d.ts.map +0 -1
  219. package/types/deps/jsr.io/@cliffy/table/1.1.0/table.d.ts +0 -235
  220. package/types/deps/jsr.io/@cliffy/table/1.1.0/table.d.ts.map +0 -1
  221. package/types/deps/jsr.io/@cliffy/table/1.1.0/unicode_width.d.ts +0 -40
  222. package/types/deps/jsr.io/@cliffy/table/1.1.0/unicode_width.d.ts.map +0 -1
  223. package/types/deps/jsr.io/@std/crypto/1.1.0/_types.d.ts +0 -9
  224. package/types/deps/jsr.io/@std/crypto/1.1.0/_types.d.ts.map +0 -1
  225. package/types/deps/jsr.io/@std/crypto/1.1.0/_wasm/lib/deno_std_wasm_crypto.d.ts +0 -2
  226. package/types/deps/jsr.io/@std/crypto/1.1.0/_wasm/lib/deno_std_wasm_crypto.d.ts.map +0 -1
  227. package/types/deps/jsr.io/@std/crypto/1.1.0/_wasm/lib/deno_std_wasm_crypto.internal.d.ts +0 -69
  228. package/types/deps/jsr.io/@std/crypto/1.1.0/_wasm/lib/deno_std_wasm_crypto.internal.d.ts.map +0 -1
  229. package/types/deps/jsr.io/@std/crypto/1.1.0/_wasm/mod.d.ts +0 -13
  230. package/types/deps/jsr.io/@std/crypto/1.1.0/_wasm/mod.d.ts.map +0 -1
  231. package/types/deps/jsr.io/@std/crypto/1.1.0/aes_gcm.d.ts +0 -76
  232. package/types/deps/jsr.io/@std/crypto/1.1.0/aes_gcm.d.ts.map +0 -1
  233. package/types/deps/jsr.io/@std/crypto/1.1.0/crypto.d.ts +0 -149
  234. package/types/deps/jsr.io/@std/crypto/1.1.0/crypto.d.ts.map +0 -1
  235. package/types/deps/jsr.io/@std/crypto/1.1.0/mod.d.ts +0 -22
  236. package/types/deps/jsr.io/@std/crypto/1.1.0/mod.d.ts.map +0 -1
  237. package/types/deps/jsr.io/@std/crypto/1.1.0/timing_safe_equal.d.ts +0 -40
  238. package/types/deps/jsr.io/@std/crypto/1.1.0/timing_safe_equal.d.ts.map +0 -1
  239. package/types/deps/jsr.io/@std/encoding/1.0.10/_common16.d.ts +0 -23
  240. package/types/deps/jsr.io/@std/encoding/1.0.10/_common16.d.ts.map +0 -1
  241. package/types/deps/jsr.io/@std/encoding/1.0.10/_common_detach.d.ts +0 -4
  242. package/types/deps/jsr.io/@std/encoding/1.0.10/_common_detach.d.ts.map +0 -1
  243. package/types/deps/jsr.io/@std/encoding/1.0.10/_types.d.ts +0 -9
  244. package/types/deps/jsr.io/@std/encoding/1.0.10/_types.d.ts.map +0 -1
  245. package/types/deps/jsr.io/@std/encoding/1.0.10/hex.d.ts +0 -39
  246. package/types/deps/jsr.io/@std/encoding/1.0.10/hex.d.ts.map +0 -1
  247. package/types/deps/jsr.io/@std/fmt/1.0.10/colors.d.ts +0 -700
  248. package/types/deps/jsr.io/@std/fmt/1.0.10/colors.d.ts.map +0 -1
  249. package/types/deps/jsr.io/@std/text/1.0.18/closest_string.d.ts +0 -42
  250. package/types/deps/jsr.io/@std/text/1.0.18/closest_string.d.ts.map +0 -1
  251. package/types/deps/jsr.io/@std/text/1.0.18/levenshtein_distance.d.ts +0 -23
  252. package/types/deps/jsr.io/@std/text/1.0.18/levenshtein_distance.d.ts.map +0 -1
  253. package/types/errors.d.ts.map +0 -1
  254. package/types/index.d.ts.map +0 -1
  255. package/types/logger.d.ts.map +0 -1
  256. package/types/pack/parser.d.ts.map +0 -1
  257. package/types/transport.d.ts.map +0 -1
  258. package/types/types.d.ts.map +0 -1
  259. /package/{types → dist}/cli.d.ts +0 -0
  260. /package/{types → dist}/cli.d.ts.map +0 -0
  261. /package/{types → dist}/objects/commit.d.ts +0 -0
  262. /package/{types → dist}/objects/commit.d.ts.map +0 -0
  263. /package/{types → dist}/objects/index.d.ts +0 -0
  264. /package/{types → dist}/objects/index.d.ts.map +0 -0
  265. /package/{types → dist}/objects/tree.d.ts +0 -0
  266. /package/{types → dist}/pack/delta.d.ts +0 -0
  267. /package/{types → dist}/pack/delta.d.ts.map +0 -0
  268. /package/{types → dist}/pack/index.d.ts +0 -0
  269. /package/{types → dist}/pack/index.d.ts.map +0 -0
  270. /package/{types → dist}/pack/objects.d.ts +0 -0
  271. /package/{types → dist}/protocol/index.d.ts +0 -0
  272. /package/{types → dist}/protocol/index.d.ts.map +0 -0
  273. /package/{types → dist}/protocol/refs.d.ts +0 -0
  274. /package/{types → dist}/protocol/refs.d.ts.map +0 -0
@@ -1,750 +0,0 @@
1
- import { getArgs } from "../../internal/1.1.0/runtime/get_args.js";
2
- import { getDefaultValue, getOption, matchWildCardOptions, paramCaseToCamelCase, } from "./_utils.js";
3
- import { DuplicateOptionError, InvalidOptionValueError, MissingArgumentError, MissingArgumentsError, MissingOptionValueError, TooManyArgumentsError, UnexpectedArgumentAfterVariadicArgumentError, UnexpectedOptionValueError, UnexpectedRequiredArgumentError, UnknownConflictingOptionError, UnknownOptionError, UnknownRequiredOptionError, UnknownTypeError, } from "./_errors.js";
4
- import { boolean } from "./types/boolean.js";
5
- import { number } from "./types/number.js";
6
- import { string } from "./types/string.js";
7
- import { validateFlags } from "./_validate_flags.js";
8
- import { integer } from "./types/integer.js";
9
- const DefaultTypes = {
10
- string,
11
- number,
12
- integer,
13
- boolean,
14
- };
15
- /**
16
- * Command-line arguments parser with built-in validations.
17
- *
18
- * The `parseFlags` method takes as its first argument the arguments to be parsed,
19
- * usually `Deno.args`, or a {@linkcode ParseFlagsContext}. As the second
20
- * argument you can define {@linkcode ParseFlagsOptions}.
21
- *
22
- * ### Basic usage
23
- *
24
- * If `parseFlags` is called without defining specific flags with the options
25
- * object, all arguments are parsed and added to the flags object returned by the
26
- * `parseFlags` method. All non-options arguments are added to the `unknown` array
27
- * and all flags specified after the double dash (`--`) are added to the `literal`
28
- * array.
29
- *
30
- * @example Parse arguments without validation
31
- *
32
- * ```typescript
33
- * import { parseFlags } from "https://deno.land/x/cliffy/flags/mod.ts";
34
- *
35
- * console.log(parseFlags(Deno.args));
36
- * ```
37
- *
38
- * ```console
39
- * $ deno run https://deno.land/x/cliffy/examples/flags/flags.ts -a foo -b bar
40
- * {
41
- * flags: { a: "foo", b: "bar" },
42
- * literal: [],
43
- * unknown: [],
44
- * stopEarly: false,
45
- * stopOnUnknown: false
46
- * }
47
- *
48
- * $ deno run https://deno.land/x/cliffy/examples/flags/flags.ts \
49
- * -x 3 \
50
- * -y.z -n5 \
51
- * -abc \
52
- * --beep=boop \
53
- * foo bar baz \
54
- * --deno.land \
55
- * --deno.com -- --cliffy
56
- * {
57
- * flags: {
58
- * x: "3",
59
- * y: { z: true },
60
- * n: "5",
61
- * a: true,
62
- * b: true,
63
- * c: true,
64
- * beep: "boop",
65
- * deno: { land: true, com: true }
66
- * },
67
- * literal: [ "--cliffy" ],
68
- * unknown: [ "foo", "bar", "baz" ],
69
- * stopEarly: false,
70
- * stopOnUnknown: false
71
- * }
72
- * ```
73
- *
74
- * ### Define flags
75
- *
76
- * You can specify flags with the options object. For all unknown or invalid flags
77
- * an `ValidationError` is thrown. Read more about error handling
78
- * [here](./error_handling.md). A list of all available flag options can be found
79
- * [here](./flag_options.md).
80
- *
81
- * @example Parse flags with validation
82
- *
83
- * ```typescript
84
- * import { parseFlags } from "https://deno.land/x/cliffy/flags/mod.ts";
85
- *
86
- * const { flags } = parseFlags(Deno.args, {
87
- * flags: [{
88
- * name: "help",
89
- * aliases: ["h"],
90
- * standalone: true,
91
- * }, {
92
- * name: "verbose",
93
- * aliases: ["v"],
94
- * collect: true,
95
- * value: (val: boolean, previous = 0) => val ? previous + 1 : 0,
96
- * }, {
97
- * name: "file",
98
- * aliases: ["f"],
99
- * type: "string",
100
- * }],
101
- * });
102
- *
103
- * console.log(flags);
104
- * ```
105
- *
106
- * ```console
107
- * $ deno run https://deno.land/x/cliffy/examples/flags/options.ts -vvv -f ./example.ts
108
- * { verbose: 3, file: "./example.ts" }
109
- * ```
110
- *
111
- * ### Parse context
112
- *
113
- * The `parseFlags` method accepts also a parse context as first argument. The
114
- * context can either be a manually created object or the result of a previously
115
- * called `parseFlags` method.
116
- *
117
- * This can be used to parse command line flags in multiple steps, for example,
118
- * when parsing options that precede a subcommand.
119
- *
120
- * @example Pre-parsing global options
121
- *
122
- * ```ts
123
- * import { parseFlags } from "https://deno.land/x/cliffy/flags/mod.ts";
124
- *
125
- * const globalFlags = [{
126
- * name: "foo-global",
127
- * alias: ["g"],
128
- * collect: true,
129
- * }];
130
- *
131
- * const flags = [{
132
- * name: "foo",
133
- * alias: ["f"],
134
- * collect: true,
135
- * }];
136
- *
137
- * const args = ["--foo-global", "cmd1", "--foo-global", "--foo", "arg1", "--foo"];
138
- *
139
- * // Parse main command args (all flags until the first unknown argument).
140
- * const ctx = parseFlags(args, {
141
- * flags: globalFlags,
142
- * stopEarly: true, // Stop on first non option argument.
143
- * stopOnUnknown: true, // Stop on first option argument.
144
- * dotted: false, // Don't convert dotted option keys to nested objects.
145
- * });
146
- *
147
- * // Shift sub-command from arguments.
148
- * const subCommand = ctx.unknown.shift();
149
- *
150
- * // Parse all sub command args.
151
- * parseFlags(ctx, {
152
- * flags: [
153
- * ...globalFlags,
154
- * ...flags,
155
- * ],
156
- * });
157
- *
158
- * console.log("sub-command:", subCommand); // -> cmd1
159
- * console.log("options:", ctx.flags); // -> { fooGlobal: [ true, true ], foo: [ true, true ] }
160
- * console.log("arguments:", ctx.unknown); // -> [ "arg1" ]
161
- * ```
162
- *
163
- * @param argsOrCtx Command line arguments e.g: `Deno.args` or parse context.
164
- * @param opts Parse options.
165
- */
166
- export function parseFlags(argsOrCtx = getArgs(), opts = {}) {
167
- let args;
168
- let ctx;
169
- if (Array.isArray(argsOrCtx)) {
170
- ctx = {};
171
- args = argsOrCtx;
172
- }
173
- else {
174
- ctx = argsOrCtx;
175
- args = argsOrCtx.unknown;
176
- argsOrCtx.unknown = [];
177
- }
178
- args = args.slice();
179
- ctx.flags ??= {};
180
- // ctx.args ??= [];
181
- ctx.literal ??= [];
182
- ctx.unknown ??= [];
183
- ctx.stopEarly = false;
184
- ctx.stopOnUnknown = false;
185
- ctx.defaults ??= {};
186
- ctx.parsedFlags ??= [];
187
- opts.dotted ??= true;
188
- validateOptions(opts);
189
- const options = parseArgs(ctx, args, opts);
190
- validateFlags(ctx, opts, options);
191
- validateArguments(ctx, opts, options);
192
- if (opts.dotted) {
193
- parseDottedOptions(ctx);
194
- }
195
- return ctx;
196
- }
197
- function validateOptions(opts) {
198
- opts.flags?.forEach((opt) => {
199
- opt.depends?.forEach((flag) => {
200
- if (!opts.flags || !getOption(opts.flags, flag)) {
201
- throw new UnknownRequiredOptionError(flag, opts.flags ?? []);
202
- }
203
- });
204
- opt.conflicts?.forEach((flag) => {
205
- if (!opts.flags || !getOption(opts.flags, flag)) {
206
- throw new UnknownConflictingOptionError(flag, opts.flags ?? []);
207
- }
208
- });
209
- });
210
- }
211
- function parseArgs(ctx, args, opts) {
212
- /** Option name mapping: propertyName -> option.name */
213
- const optionsMap = new Map();
214
- let inLiteral = false;
215
- let argIndex = 0;
216
- for (let argsIndex = 0; argsIndex < args.length; argsIndex++) {
217
- let option;
218
- let current = args[argsIndex];
219
- let currentValue;
220
- let negate = false;
221
- let skipArgument = false;
222
- // literal args after --
223
- if (inLiteral) {
224
- ctx.literal.push(current);
225
- continue;
226
- }
227
- else if (current === "--") {
228
- inLiteral = true;
229
- continue;
230
- }
231
- else if (ctx.stopEarly || ctx.stopOnUnknown) {
232
- ctx.unknown.push(current);
233
- continue;
234
- }
235
- const maybeIsFlag = current.length > 1 && current[0] === "-";
236
- if (!maybeIsFlag) {
237
- if (opts.stopEarly) {
238
- ctx.stopEarly = true;
239
- }
240
- if (opts.stopEarly || !opts.args?.length) {
241
- ctx.unknown.push(current);
242
- continue;
243
- }
244
- }
245
- const maybeIsShort = maybeIsFlag && current[1] !== "-";
246
- const maybeIsLong = maybeIsShort
247
- ? false
248
- : maybeIsFlag && current.length > 3 && current[2] !== "-";
249
- // normalize short flags: -abc => -a -b -c
250
- const currentRaw = current;
251
- let splitCount = 0;
252
- if (maybeIsShort && current.length > 2 && current[2] !== ".") {
253
- const flags = splitFlags(current);
254
- splitCount = flags.length;
255
- args.splice(argsIndex, 1, ...flags);
256
- current = args[argsIndex];
257
- }
258
- else if (maybeIsLong && current.startsWith("--no-")) {
259
- negate = true;
260
- }
261
- // split value: --foo="bar=baz" => --foo bar=baz
262
- const equalSignIndex = current.indexOf("=");
263
- if (equalSignIndex !== -1) {
264
- currentValue = current.slice(equalSignIndex + 1);
265
- current = current.slice(0, equalSignIndex);
266
- }
267
- if (opts.flags) {
268
- if (maybeIsFlag) {
269
- option = getOption(opts.flags, current);
270
- }
271
- if (!option) {
272
- const name = current.replace(/^-+/, "");
273
- option = matchWildCardOptions(name, opts.flags);
274
- if (!option) {
275
- if (opts.stopOnUnknown) {
276
- ctx.stopOnUnknown = true;
277
- ctx.unknown.push(args[argsIndex]);
278
- continue;
279
- }
280
- // Check if value is a positional argument
281
- if (opts.args?.length) {
282
- const argDef = opts.args[argIndex];
283
- if (argDef) {
284
- const args = ctx.args ??= [];
285
- if (argDef.optional && currentRaw === "") {
286
- if (!argDef.variadic) {
287
- args.push(undefined);
288
- argIndex++;
289
- }
290
- continue;
291
- }
292
- // Parse argument value
293
- if (argDef.list) {
294
- args.push(parseListValue(opts, {
295
- label: "Argument",
296
- name: argDef.name || `arg[${argIndex}]`,
297
- type: argDef.type || "string",
298
- value: currentRaw,
299
- separator: argDef.separator,
300
- }));
301
- }
302
- else {
303
- args.push(parseValue(opts, {
304
- label: "Argument",
305
- name: argDef.name || `arg[${argIndex}]`,
306
- type: argDef.type || "string",
307
- value: currentRaw,
308
- }));
309
- }
310
- // Increase argsIndex by amount of normalized arguments.
311
- if (splitCount > 1) {
312
- argsIndex += splitCount - 1;
313
- }
314
- if (!argDef.variadic) {
315
- argIndex++;
316
- }
317
- else if (opts.args[argIndex + 1]) {
318
- throw new UnexpectedArgumentAfterVariadicArgumentError(currentRaw);
319
- }
320
- continue;
321
- }
322
- }
323
- if (!maybeIsFlag) {
324
- throw new TooManyArgumentsError([currentRaw]);
325
- }
326
- throw new UnknownOptionError(current, opts.flags);
327
- }
328
- }
329
- }
330
- else {
331
- if (opts.args?.length && !maybeIsFlag) {
332
- const argDef = opts.args[argIndex];
333
- if (argDef) {
334
- const posArgs = ctx.args ??= [];
335
- if (argDef.optional && currentRaw === "") {
336
- if (!argDef.variadic) {
337
- posArgs.push(undefined);
338
- argIndex++;
339
- }
340
- continue;
341
- }
342
- if (argDef.list) {
343
- posArgs.push(parseListValue(opts, {
344
- label: "Argument",
345
- name: argDef.name || `arg[${argIndex}]`,
346
- type: argDef.type || "string",
347
- value: currentRaw,
348
- separator: argDef.separator,
349
- }));
350
- }
351
- else {
352
- posArgs.push(parseValue(opts, {
353
- label: "Argument",
354
- name: argDef.name || `arg[${argIndex}]`,
355
- type: argDef.type || "string",
356
- value: currentRaw,
357
- }));
358
- }
359
- if (!argDef.variadic) {
360
- argIndex++;
361
- }
362
- else if (opts.args[argIndex + 1]) {
363
- throw new UnexpectedArgumentAfterVariadicArgumentError(currentRaw);
364
- }
365
- continue;
366
- }
367
- }
368
- option = {
369
- name: current.replace(/^-+/, ""),
370
- optionalValue: true,
371
- type: "string",
372
- };
373
- }
374
- ctx.parsedFlags.push(args[argsIndex]);
375
- if (option.standalone) {
376
- ctx.standalone = option;
377
- }
378
- const positiveName = negate
379
- ? option.name.replace(/^no-?/, "")
380
- : option.name;
381
- const propName = paramCaseToCamelCase(positiveName);
382
- if (typeof ctx.flags[propName] !== "undefined") {
383
- if (!opts.flags?.length) {
384
- option.collect = true;
385
- }
386
- else if (!option.collect && !ctx.defaults[option.name]) {
387
- throw new DuplicateOptionError(current);
388
- }
389
- }
390
- if (option.type && !option.args?.length) {
391
- option.args = [{
392
- name: option.name,
393
- type: option.type,
394
- optional: option.optionalValue,
395
- variadic: option.variadic,
396
- list: option.list,
397
- separator: option.separator,
398
- default: option.default,
399
- value: option.value,
400
- }];
401
- }
402
- if (opts.flags?.length && !option.args?.length &&
403
- typeof currentValue !== "undefined") {
404
- throw new UnexpectedOptionValueError(option.name, currentValue);
405
- }
406
- let optionArgsIndex = 0;
407
- let inOptionalArg = false;
408
- const next = () => currentValue ?? args[argsIndex + 1];
409
- const previous = ctx.flags[propName];
410
- parseNext(option);
411
- if (skipArgument) {
412
- continue;
413
- }
414
- if (typeof ctx.flags[propName] === "undefined") {
415
- if (option.args?.length && !option.args?.[optionArgsIndex].optional) {
416
- throw new MissingOptionValueError(option.name);
417
- }
418
- else if ((option.default !== undefined &&
419
- (option.type || option.value || option.args?.length)) ||
420
- option.args?.some((arg) => arg.default !== undefined && (arg.type || arg.value))) {
421
- ctx.flags[propName] = getDefaultValue(option);
422
- }
423
- else {
424
- setFlagValue(true);
425
- }
426
- }
427
- // TODO: decuple option and option.args so we can have a value handle for
428
- // each arg separately and one additionally for all args.
429
- if (option.args?.some((arg) => arg.value) &&
430
- (option.args.length > 1 || !option.value)) {
431
- if (option.args.length === 1) {
432
- const arg = option.args[0];
433
- if (typeof arg.value === "function") {
434
- ctx.flags[propName] = arg.value(ctx.flags[propName]);
435
- }
436
- }
437
- else {
438
- for (const [index, arg] of option.args.entries()) {
439
- if (typeof arg.value === "function") {
440
- ctx.flags[propName][index] = arg.value(ctx.flags[propName][index]);
441
- // setFlagValue(ctx.flags[propName]);
442
- }
443
- }
444
- }
445
- }
446
- if (option.value) {
447
- const value = option.value(ctx.flags[propName], previous);
448
- setFlagValue(value);
449
- }
450
- else if (option.collect) {
451
- const value = typeof previous !== "undefined"
452
- ? (Array.isArray(previous) ? previous : [previous])
453
- : [];
454
- value.push(ctx.flags[propName]);
455
- setFlagValue(value);
456
- }
457
- optionsMap.set(propName, option);
458
- opts.option?.(option, ctx.flags[propName]);
459
- /** Parse next argument for current option. */
460
- // deno-lint-ignore no-inner-declarations
461
- function parseNext(option) {
462
- let skipOptionArgument = false;
463
- if (negate) {
464
- setFlagValue(false);
465
- return;
466
- }
467
- else if (!option.args?.length) {
468
- setFlagValue(undefined);
469
- return;
470
- }
471
- const arg = option.args[optionArgsIndex];
472
- if (!arg) {
473
- const flag = next();
474
- throw new UnknownOptionError(flag, opts.flags ?? []);
475
- }
476
- if (!arg.type) {
477
- arg.type = "boolean";
478
- }
479
- // make boolean values optional by default
480
- // if (
481
- // !option.args?.length &&
482
- // arg.type === "boolean" &&
483
- // arg.optional === undefined
484
- // ) {
485
- // arg.optional = true;
486
- // }
487
- if (arg.optional) {
488
- inOptionalArg = true;
489
- }
490
- else if (inOptionalArg) {
491
- throw new UnexpectedRequiredArgumentError(option.name);
492
- }
493
- let result;
494
- let increase = false;
495
- if (hasNext(arg) && (!option.required || arg.optional) && next() === "") {
496
- // if the value is empty and the argument is optional,
497
- // we can skip the argument.
498
- if (arg.variadic) {
499
- skipOptionArgument = true;
500
- }
501
- else if (option.args?.length === 1) {
502
- skipArgument = true;
503
- }
504
- else {
505
- // will be mapped to undefined later.
506
- result = "";
507
- }
508
- increase = true;
509
- }
510
- else if (arg.list && hasNext(arg)) {
511
- const parsed = parseListValue(opts, {
512
- label: "Option",
513
- name: `--${option.name}`,
514
- type: arg.type || "string",
515
- value: next(),
516
- separator: arg.separator,
517
- });
518
- if (parsed?.length) {
519
- result = parsed;
520
- }
521
- increase = true;
522
- }
523
- else {
524
- if (hasNext(arg)) {
525
- result = parseValue(opts, {
526
- label: "Option",
527
- name: `--${option.name}`,
528
- type: arg.type || "string",
529
- value: next(),
530
- });
531
- if (typeof result !== "undefined") {
532
- increase = true;
533
- }
534
- }
535
- else if (arg.optional && arg.type === "boolean") {
536
- result = true;
537
- }
538
- }
539
- if (increase && typeof currentValue === "undefined") {
540
- ctx.parsedFlags.push(args[argsIndex + 1]);
541
- argsIndex++;
542
- if (!arg.variadic) {
543
- optionArgsIndex++;
544
- }
545
- else if (option.args[optionArgsIndex + 1]) {
546
- throw new UnexpectedArgumentAfterVariadicArgumentError(next());
547
- }
548
- }
549
- if (skipOptionArgument) {
550
- if (hasNext(arg)) {
551
- parseNext(option);
552
- }
553
- return;
554
- }
555
- if (skipArgument) {
556
- return;
557
- }
558
- if (typeof result !== "undefined" &&
559
- (option.args.length > 1 || arg.variadic)) {
560
- if (!ctx.flags[propName]) {
561
- setFlagValue([]);
562
- }
563
- if (result === "") {
564
- result = undefined;
565
- }
566
- ctx.flags[propName].push(result);
567
- if (hasNext(arg)) {
568
- parseNext(option);
569
- }
570
- }
571
- else {
572
- setFlagValue(result);
573
- }
574
- /** Check if current option should have an argument. */
575
- function hasNext(arg) {
576
- if (!option.args?.length) {
577
- return false;
578
- }
579
- const nextValue = next();
580
- if (nextValue === undefined) {
581
- return false;
582
- }
583
- if (option.args.length > 1 && optionArgsIndex >= option.args.length) {
584
- return false;
585
- }
586
- let nextOption;
587
- if (!arg.optional &&
588
- (!arg.variadic ||
589
- !(nextOption = getOption(opts.flags ?? [], nextValue)))) {
590
- return true;
591
- }
592
- // require optional values to be called with an equal sign: foo=bar
593
- if (option.equalsSign && arg.optional && !arg.variadic &&
594
- typeof currentValue === "undefined") {
595
- return false;
596
- }
597
- if ((arg.optional || arg.variadic) &&
598
- !(nextOption ?? getOption(opts.flags ?? [], nextValue))) {
599
- return nextValue[0] !== "-" ||
600
- typeof currentValue !== "undefined" ||
601
- (arg.type === "number" && !isNaN(Number(nextValue)));
602
- }
603
- return false;
604
- }
605
- }
606
- // deno-lint-ignore no-inner-declarations
607
- function setFlagValue(value) {
608
- ctx.flags[propName] = value;
609
- if (ctx.defaults[propName]) {
610
- delete ctx.defaults[propName];
611
- }
612
- }
613
- }
614
- return optionsMap;
615
- }
616
- function parseDottedOptions(ctx) {
617
- // convert dotted option keys into nested objects
618
- ctx.flags = Object.keys(ctx.flags).reduce((result, key) => {
619
- if (~key.indexOf(".")) {
620
- key.split(".").reduce((
621
- // deno-lint-ignore no-explicit-any
622
- result, subKey, index, parts) => {
623
- if (index === parts.length - 1) {
624
- result[subKey] = ctx.flags[key];
625
- }
626
- else {
627
- result[subKey] = result[subKey] ?? {};
628
- }
629
- return result[subKey];
630
- }, result);
631
- }
632
- else {
633
- result[key] = ctx.flags[key];
634
- }
635
- return result;
636
- }, {});
637
- }
638
- function splitFlags(flag) {
639
- flag = flag.slice(1);
640
- const normalized = [];
641
- const index = flag.indexOf("=");
642
- const flags = (index !== -1 ? flag.slice(0, index) : flag).split("");
643
- if (isNaN(Number(flag[flag.length - 1]))) {
644
- flags.forEach((val) => normalized.push(`-${val}`));
645
- }
646
- else {
647
- normalized.push(`-${flags.shift()}`);
648
- if (flags.length) {
649
- normalized.push(flags.join(""));
650
- }
651
- }
652
- if (index !== -1) {
653
- normalized[normalized.length - 1] += flag.slice(index);
654
- }
655
- return normalized;
656
- }
657
- /** Parse argument value. */
658
- function parseValue(opts, options) {
659
- return opts.parse ? opts.parse(options) : parseDefaultType(options);
660
- }
661
- function parseListValue(opts, options) {
662
- return options.value
663
- .split(options.separator || ",")
664
- .map((nextValue) => {
665
- const value = parseValue(opts, {
666
- ...options,
667
- value: nextValue,
668
- });
669
- if (typeof value === "undefined") {
670
- throw new InvalidOptionValueError(options.name, options.type || "?", nextValue);
671
- }
672
- return value;
673
- });
674
- }
675
- function parseDefaultType({ label, name, type, value, }) {
676
- const parseType = DefaultTypes[type];
677
- if (!parseType) {
678
- throw new UnknownTypeError(type, Object.keys(DefaultTypes));
679
- }
680
- return parseType({
681
- label,
682
- type,
683
- name,
684
- value,
685
- });
686
- }
687
- function validateArguments(ctx, opts, options = new Map()) {
688
- if (!opts.args?.length) {
689
- return;
690
- }
691
- const hasDefaults = opts.args.some((arg) => arg.default !== undefined);
692
- if (!ctx.args?.length && !hasDefaults) {
693
- const required = opts.args
694
- .filter((expectedArg) => !expectedArg.optional)
695
- .map((expectedArg) => expectedArg.name ?? `arg[${opts.args?.indexOf(expectedArg)}]`);
696
- if (required.length) {
697
- const hasStandaloneOption = [...options.keys()].some((name) => opts.flags && getOption(opts.flags, name)?.standalone);
698
- if (!hasStandaloneOption) {
699
- throw new MissingArgumentsError(required);
700
- }
701
- }
702
- }
703
- else {
704
- ctx.args ??= [];
705
- for (const [index, expectedArg] of opts.args?.entries() ?? []) {
706
- const mapArgValue = (parsed) => {
707
- return expectedArg.value ? expectedArg.value(parsed) : parsed;
708
- };
709
- if (typeof ctx.args[index] === "undefined") {
710
- if (expectedArg.default !== undefined) {
711
- const defaultValue = typeof expectedArg.default === "function"
712
- ? expectedArg.default()
713
- : expectedArg.default;
714
- const mappedValue = mapArgValue(defaultValue);
715
- if (expectedArg.variadic && Array.isArray(mappedValue)) {
716
- ctx.args.splice(index, 0, ...mappedValue);
717
- continue;
718
- }
719
- else {
720
- ctx.args[index] = mappedValue;
721
- continue;
722
- }
723
- }
724
- if (expectedArg.optional) {
725
- continue;
726
- }
727
- throw new MissingArgumentError(expectedArg.name ?? `arg[${index}]`);
728
- }
729
- let mappedValue;
730
- if (expectedArg.variadic) {
731
- mappedValue = mapArgValue(ctx.args.splice(index));
732
- }
733
- else {
734
- mappedValue = mapArgValue(ctx.args[index]);
735
- }
736
- if (typeof mappedValue !== "undefined" ||
737
- typeof ctx.args[index] !== "undefined") {
738
- if (expectedArg.variadic && Array.isArray(mappedValue)) {
739
- ctx.args.splice(index, 0, ...mappedValue);
740
- }
741
- else if (typeof mappedValue !== "undefined") {
742
- ctx.args[index] = mappedValue;
743
- }
744
- }
745
- }
746
- if (ctx.unknown.length) {
747
- throw new TooManyArgumentsError(ctx.unknown);
748
- }
749
- }
750
- }