git-remote-ops 0.1.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.
- package/AGENTS.md +177 -0
- package/LICENSE +21 -0
- package/README.md +247 -0
- package/esm/_dnt.shims.js +72 -0
- package/esm/cli.js +217 -0
- package/esm/client.js +439 -0
- package/esm/deps/jsr.io/@cliffy/command/1.1.0/_argument_types.js +1 -0
- package/esm/deps/jsr.io/@cliffy/command/1.1.0/_errors.js +133 -0
- package/esm/deps/jsr.io/@cliffy/command/1.1.0/_spread.js +1 -0
- package/esm/deps/jsr.io/@cliffy/command/1.1.0/_type_utils.js +1 -0
- package/esm/deps/jsr.io/@cliffy/command/1.1.0/_utils.js +141 -0
- package/esm/deps/jsr.io/@cliffy/command/1.1.0/command.js +1861 -0
- package/esm/deps/jsr.io/@cliffy/command/1.1.0/help/_help_generator.js +357 -0
- package/esm/deps/jsr.io/@cliffy/command/1.1.0/mod.js +13 -0
- package/esm/deps/jsr.io/@cliffy/command/1.1.0/type.js +27 -0
- package/esm/deps/jsr.io/@cliffy/command/1.1.0/types/action_list.js +16 -0
- package/esm/deps/jsr.io/@cliffy/command/1.1.0/types/boolean.js +13 -0
- package/esm/deps/jsr.io/@cliffy/command/1.1.0/types/child_command.js +14 -0
- package/esm/deps/jsr.io/@cliffy/command/1.1.0/types/command.js +9 -0
- package/esm/deps/jsr.io/@cliffy/command/1.1.0/types/enum.js +24 -0
- package/esm/deps/jsr.io/@cliffy/command/1.1.0/types/file.js +12 -0
- package/esm/deps/jsr.io/@cliffy/command/1.1.0/types/integer.js +9 -0
- package/esm/deps/jsr.io/@cliffy/command/1.1.0/types/number.js +9 -0
- package/esm/deps/jsr.io/@cliffy/command/1.1.0/types/secret.js +7 -0
- package/esm/deps/jsr.io/@cliffy/command/1.1.0/types/string.js +9 -0
- package/esm/deps/jsr.io/@cliffy/command/1.1.0/types.js +2 -0
- package/esm/deps/jsr.io/@cliffy/command/1.1.0/upgrade/_check_version.js +26 -0
- package/esm/deps/jsr.io/@cliffy/flags/1.1.0/_errors.js +129 -0
- package/esm/deps/jsr.io/@cliffy/flags/1.1.0/_utils.js +100 -0
- package/esm/deps/jsr.io/@cliffy/flags/1.1.0/_validate_flags.js +166 -0
- package/esm/deps/jsr.io/@cliffy/flags/1.1.0/flags.js +750 -0
- package/esm/deps/jsr.io/@cliffy/flags/1.1.0/mod.js +55 -0
- package/esm/deps/jsr.io/@cliffy/flags/1.1.0/types/boolean.js +11 -0
- package/esm/deps/jsr.io/@cliffy/flags/1.1.0/types/integer.js +9 -0
- package/esm/deps/jsr.io/@cliffy/flags/1.1.0/types/number.js +11 -0
- package/esm/deps/jsr.io/@cliffy/flags/1.1.0/types/string.js +4 -0
- package/esm/deps/jsr.io/@cliffy/flags/1.1.0/types.js +1 -0
- package/esm/deps/jsr.io/@cliffy/internal/1.1.0/runtime/exit.js +16 -0
- package/esm/deps/jsr.io/@cliffy/internal/1.1.0/runtime/get_args.js +11 -0
- package/esm/deps/jsr.io/@cliffy/internal/1.1.0/runtime/get_columns.js +25 -0
- package/esm/deps/jsr.io/@cliffy/internal/1.1.0/runtime/get_env.js +18 -0
- package/esm/deps/jsr.io/@cliffy/internal/1.1.0/runtime/inspect.js +11 -0
- package/esm/deps/jsr.io/@cliffy/table/1.1.0/_layout.js +616 -0
- package/esm/deps/jsr.io/@cliffy/table/1.1.0/_utils.js +79 -0
- package/esm/deps/jsr.io/@cliffy/table/1.1.0/border.js +18 -0
- package/esm/deps/jsr.io/@cliffy/table/1.1.0/cell.js +190 -0
- package/esm/deps/jsr.io/@cliffy/table/1.1.0/column.js +117 -0
- package/esm/deps/jsr.io/@cliffy/table/1.1.0/consume_words.js +64 -0
- package/esm/deps/jsr.io/@cliffy/table/1.1.0/mod.js +42 -0
- package/esm/deps/jsr.io/@cliffy/table/1.1.0/row.js +82 -0
- package/esm/deps/jsr.io/@cliffy/table/1.1.0/table.js +341 -0
- package/esm/deps/jsr.io/@cliffy/table/1.1.0/unicode_width.js +101 -0
- package/esm/deps/jsr.io/@std/crypto/1.1.0/_types.js +2 -0
- package/esm/deps/jsr.io/@std/crypto/1.1.0/_wasm/lib/deno_std_wasm_crypto.internal.js +237 -0
- package/esm/deps/jsr.io/@std/crypto/1.1.0/_wasm/lib/deno_std_wasm_crypto.js +2277 -0
- package/esm/deps/jsr.io/@std/crypto/1.1.0/_wasm/mod.js +46 -0
- package/esm/deps/jsr.io/@std/crypto/1.1.0/aes_gcm.js +132 -0
- package/esm/deps/jsr.io/@std/crypto/1.1.0/crypto.js +270 -0
- package/esm/deps/jsr.io/@std/crypto/1.1.0/mod.js +23 -0
- package/esm/deps/jsr.io/@std/crypto/1.1.0/timing_safe_equal.js +61 -0
- package/esm/deps/jsr.io/@std/encoding/1.0.10/_common16.js +51 -0
- package/esm/deps/jsr.io/@std/encoding/1.0.10/_common_detach.js +13 -0
- package/esm/deps/jsr.io/@std/encoding/1.0.10/_types.js +2 -0
- package/esm/deps/jsr.io/@std/encoding/1.0.10/hex.js +87 -0
- package/esm/deps/jsr.io/@std/fmt/1.0.10/colors.js +903 -0
- package/esm/deps/jsr.io/@std/text/1.0.18/closest_string.js +46 -0
- package/esm/deps/jsr.io/@std/text/1.0.18/levenshtein_distance.js +127 -0
- package/esm/errors.js +38 -0
- package/esm/index.js +10 -0
- package/esm/logger.js +216 -0
- package/esm/objects/commit.js +47 -0
- package/esm/objects/index.js +2 -0
- package/esm/objects/tree.js +149 -0
- package/esm/pack/delta.js +179 -0
- package/esm/pack/index.js +3 -0
- package/esm/pack/objects.js +72 -0
- package/esm/pack/parser.js +304 -0
- package/esm/package.json +3 -0
- package/esm/protocol/index.js +3 -0
- package/esm/protocol/pkt_line.js +103 -0
- package/esm/protocol/refs.js +100 -0
- package/esm/protocol/upload_pack.js +259 -0
- package/esm/transport.js +128 -0
- package/esm/types.js +8 -0
- package/package.json +50 -0
- package/types/_dnt.shims.d.ts +16 -0
- package/types/_dnt.shims.d.ts.map +1 -0
- package/types/cli.d.ts +3 -0
- package/types/cli.d.ts.map +1 -0
- package/types/client.d.ts +108 -0
- package/types/client.d.ts.map +1 -0
- package/types/deps/jsr.io/@cliffy/command/1.1.0/_argument_types.d.ts +163 -0
- package/types/deps/jsr.io/@cliffy/command/1.1.0/_argument_types.d.ts.map +1 -0
- package/types/deps/jsr.io/@cliffy/command/1.1.0/_errors.d.ts +71 -0
- package/types/deps/jsr.io/@cliffy/command/1.1.0/_errors.d.ts.map +1 -0
- package/types/deps/jsr.io/@cliffy/command/1.1.0/_spread.d.ts +16 -0
- package/types/deps/jsr.io/@cliffy/command/1.1.0/_spread.d.ts.map +1 -0
- package/types/deps/jsr.io/@cliffy/command/1.1.0/_type_utils.d.ts +15 -0
- package/types/deps/jsr.io/@cliffy/command/1.1.0/_type_utils.d.ts.map +1 -0
- package/types/deps/jsr.io/@cliffy/command/1.1.0/_utils.d.ts +38 -0
- package/types/deps/jsr.io/@cliffy/command/1.1.0/_utils.d.ts.map +1 -0
- package/types/deps/jsr.io/@cliffy/command/1.1.0/command.d.ts +1086 -0
- package/types/deps/jsr.io/@cliffy/command/1.1.0/command.d.ts.map +1 -0
- package/types/deps/jsr.io/@cliffy/command/1.1.0/help/_help_generator.d.ts +33 -0
- package/types/deps/jsr.io/@cliffy/command/1.1.0/help/_help_generator.d.ts.map +1 -0
- package/types/deps/jsr.io/@cliffy/command/1.1.0/mod.d.ts +78 -0
- package/types/deps/jsr.io/@cliffy/command/1.1.0/mod.d.ts.map +1 -0
- package/types/deps/jsr.io/@cliffy/command/1.1.0/type.d.ts +51 -0
- package/types/deps/jsr.io/@cliffy/command/1.1.0/type.d.ts.map +1 -0
- package/types/deps/jsr.io/@cliffy/command/1.1.0/types/action_list.d.ts +10 -0
- package/types/deps/jsr.io/@cliffy/command/1.1.0/types/action_list.d.ts.map +1 -0
- package/types/deps/jsr.io/@cliffy/command/1.1.0/types/boolean.d.ts +10 -0
- package/types/deps/jsr.io/@cliffy/command/1.1.0/types/boolean.d.ts.map +1 -0
- package/types/deps/jsr.io/@cliffy/command/1.1.0/types/child_command.d.ts +10 -0
- package/types/deps/jsr.io/@cliffy/command/1.1.0/types/child_command.d.ts.map +1 -0
- package/types/deps/jsr.io/@cliffy/command/1.1.0/types/command.d.ts +8 -0
- package/types/deps/jsr.io/@cliffy/command/1.1.0/types/command.d.ts.map +1 -0
- package/types/deps/jsr.io/@cliffy/command/1.1.0/types/enum.d.ts +11 -0
- package/types/deps/jsr.io/@cliffy/command/1.1.0/types/enum.d.ts.map +1 -0
- package/types/deps/jsr.io/@cliffy/command/1.1.0/types/file.d.ts +6 -0
- package/types/deps/jsr.io/@cliffy/command/1.1.0/types/file.d.ts.map +1 -0
- package/types/deps/jsr.io/@cliffy/command/1.1.0/types/integer.d.ts +8 -0
- package/types/deps/jsr.io/@cliffy/command/1.1.0/types/integer.d.ts.map +1 -0
- package/types/deps/jsr.io/@cliffy/command/1.1.0/types/number.d.ts +8 -0
- package/types/deps/jsr.io/@cliffy/command/1.1.0/types/number.d.ts.map +1 -0
- package/types/deps/jsr.io/@cliffy/command/1.1.0/types/secret.d.ts +6 -0
- package/types/deps/jsr.io/@cliffy/command/1.1.0/types/secret.d.ts.map +1 -0
- package/types/deps/jsr.io/@cliffy/command/1.1.0/types/string.d.ts +8 -0
- package/types/deps/jsr.io/@cliffy/command/1.1.0/types/string.d.ts.map +1 -0
- package/types/deps/jsr.io/@cliffy/command/1.1.0/types.d.ts +161 -0
- package/types/deps/jsr.io/@cliffy/command/1.1.0/types.d.ts.map +1 -0
- package/types/deps/jsr.io/@cliffy/command/1.1.0/upgrade/_check_version.d.ts +4 -0
- package/types/deps/jsr.io/@cliffy/command/1.1.0/upgrade/_check_version.d.ts.map +1 -0
- package/types/deps/jsr.io/@cliffy/flags/1.1.0/_errors.d.ts +67 -0
- package/types/deps/jsr.io/@cliffy/flags/1.1.0/_errors.d.ts.map +1 -0
- package/types/deps/jsr.io/@cliffy/flags/1.1.0/_utils.d.ts +17 -0
- package/types/deps/jsr.io/@cliffy/flags/1.1.0/_utils.d.ts.map +1 -0
- package/types/deps/jsr.io/@cliffy/flags/1.1.0/_validate_flags.d.ts +11 -0
- package/types/deps/jsr.io/@cliffy/flags/1.1.0/_validate_flags.d.ts.map +1 -0
- package/types/deps/jsr.io/@cliffy/flags/1.1.0/flags.d.ts +154 -0
- package/types/deps/jsr.io/@cliffy/flags/1.1.0/flags.d.ts.map +1 -0
- package/types/deps/jsr.io/@cliffy/flags/1.1.0/mod.d.ts +57 -0
- package/types/deps/jsr.io/@cliffy/flags/1.1.0/mod.d.ts.map +1 -0
- package/types/deps/jsr.io/@cliffy/flags/1.1.0/types/boolean.d.ts +4 -0
- package/types/deps/jsr.io/@cliffy/flags/1.1.0/types/boolean.d.ts.map +1 -0
- package/types/deps/jsr.io/@cliffy/flags/1.1.0/types/integer.d.ts +4 -0
- package/types/deps/jsr.io/@cliffy/flags/1.1.0/types/integer.d.ts.map +1 -0
- package/types/deps/jsr.io/@cliffy/flags/1.1.0/types/number.d.ts +4 -0
- package/types/deps/jsr.io/@cliffy/flags/1.1.0/types/number.d.ts.map +1 -0
- package/types/deps/jsr.io/@cliffy/flags/1.1.0/types/string.d.ts +4 -0
- package/types/deps/jsr.io/@cliffy/flags/1.1.0/types/string.d.ts.map +1 -0
- package/types/deps/jsr.io/@cliffy/flags/1.1.0/types.d.ts +170 -0
- package/types/deps/jsr.io/@cliffy/flags/1.1.0/types.d.ts.map +1 -0
- package/types/deps/jsr.io/@cliffy/internal/1.1.0/runtime/exit.d.ts +8 -0
- package/types/deps/jsr.io/@cliffy/internal/1.1.0/runtime/exit.d.ts.map +1 -0
- package/types/deps/jsr.io/@cliffy/internal/1.1.0/runtime/get_args.d.ts +7 -0
- package/types/deps/jsr.io/@cliffy/internal/1.1.0/runtime/get_args.d.ts.map +1 -0
- package/types/deps/jsr.io/@cliffy/internal/1.1.0/runtime/get_columns.d.ts +7 -0
- package/types/deps/jsr.io/@cliffy/internal/1.1.0/runtime/get_columns.d.ts.map +1 -0
- package/types/deps/jsr.io/@cliffy/internal/1.1.0/runtime/get_env.d.ts +8 -0
- package/types/deps/jsr.io/@cliffy/internal/1.1.0/runtime/get_env.d.ts.map +1 -0
- package/types/deps/jsr.io/@cliffy/internal/1.1.0/runtime/inspect.d.ts +7 -0
- package/types/deps/jsr.io/@cliffy/internal/1.1.0/runtime/inspect.d.ts.map +1 -0
- package/types/deps/jsr.io/@cliffy/table/1.1.0/_layout.d.ts +108 -0
- package/types/deps/jsr.io/@cliffy/table/1.1.0/_layout.d.ts.map +1 -0
- package/types/deps/jsr.io/@cliffy/table/1.1.0/_utils.d.ts +26 -0
- package/types/deps/jsr.io/@cliffy/table/1.1.0/_utils.d.ts.map +1 -0
- package/types/deps/jsr.io/@cliffy/table/1.1.0/border.d.ts +21 -0
- package/types/deps/jsr.io/@cliffy/table/1.1.0/border.d.ts.map +1 -0
- package/types/deps/jsr.io/@cliffy/table/1.1.0/cell.d.ts +155 -0
- package/types/deps/jsr.io/@cliffy/table/1.1.0/cell.d.ts.map +1 -0
- package/types/deps/jsr.io/@cliffy/table/1.1.0/column.d.ts +97 -0
- package/types/deps/jsr.io/@cliffy/table/1.1.0/column.d.ts.map +1 -0
- package/types/deps/jsr.io/@cliffy/table/1.1.0/consume_words.d.ts +30 -0
- package/types/deps/jsr.io/@cliffy/table/1.1.0/consume_words.d.ts.map +1 -0
- package/types/deps/jsr.io/@cliffy/table/1.1.0/mod.d.ts +43 -0
- package/types/deps/jsr.io/@cliffy/table/1.1.0/mod.d.ts.map +1 -0
- package/types/deps/jsr.io/@cliffy/table/1.1.0/row.d.ts +67 -0
- package/types/deps/jsr.io/@cliffy/table/1.1.0/row.d.ts.map +1 -0
- package/types/deps/jsr.io/@cliffy/table/1.1.0/table.d.ts +235 -0
- package/types/deps/jsr.io/@cliffy/table/1.1.0/table.d.ts.map +1 -0
- package/types/deps/jsr.io/@cliffy/table/1.1.0/unicode_width.d.ts +40 -0
- package/types/deps/jsr.io/@cliffy/table/1.1.0/unicode_width.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/crypto/1.1.0/_types.d.ts +9 -0
- package/types/deps/jsr.io/@std/crypto/1.1.0/_types.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/crypto/1.1.0/_wasm/lib/deno_std_wasm_crypto.d.ts +2 -0
- package/types/deps/jsr.io/@std/crypto/1.1.0/_wasm/lib/deno_std_wasm_crypto.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/crypto/1.1.0/_wasm/lib/deno_std_wasm_crypto.internal.d.ts +69 -0
- package/types/deps/jsr.io/@std/crypto/1.1.0/_wasm/lib/deno_std_wasm_crypto.internal.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/crypto/1.1.0/_wasm/mod.d.ts +13 -0
- package/types/deps/jsr.io/@std/crypto/1.1.0/_wasm/mod.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/crypto/1.1.0/aes_gcm.d.ts +76 -0
- package/types/deps/jsr.io/@std/crypto/1.1.0/aes_gcm.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/crypto/1.1.0/crypto.d.ts +149 -0
- package/types/deps/jsr.io/@std/crypto/1.1.0/crypto.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/crypto/1.1.0/mod.d.ts +22 -0
- package/types/deps/jsr.io/@std/crypto/1.1.0/mod.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/crypto/1.1.0/timing_safe_equal.d.ts +40 -0
- package/types/deps/jsr.io/@std/crypto/1.1.0/timing_safe_equal.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/encoding/1.0.10/_common16.d.ts +23 -0
- package/types/deps/jsr.io/@std/encoding/1.0.10/_common16.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/encoding/1.0.10/_common_detach.d.ts +4 -0
- package/types/deps/jsr.io/@std/encoding/1.0.10/_common_detach.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/encoding/1.0.10/_types.d.ts +9 -0
- package/types/deps/jsr.io/@std/encoding/1.0.10/_types.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/encoding/1.0.10/hex.d.ts +39 -0
- package/types/deps/jsr.io/@std/encoding/1.0.10/hex.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/fmt/1.0.10/colors.d.ts +700 -0
- package/types/deps/jsr.io/@std/fmt/1.0.10/colors.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/text/1.0.18/closest_string.d.ts +42 -0
- package/types/deps/jsr.io/@std/text/1.0.18/closest_string.d.ts.map +1 -0
- package/types/deps/jsr.io/@std/text/1.0.18/levenshtein_distance.d.ts +23 -0
- package/types/deps/jsr.io/@std/text/1.0.18/levenshtein_distance.d.ts.map +1 -0
- package/types/errors.d.ts +73 -0
- package/types/errors.d.ts.map +1 -0
- package/types/index.d.ts +14 -0
- package/types/index.d.ts.map +1 -0
- package/types/logger.d.ts +70 -0
- package/types/logger.d.ts.map +1 -0
- package/types/objects/commit.d.ts +23 -0
- package/types/objects/commit.d.ts.map +1 -0
- package/types/objects/index.d.ts +3 -0
- package/types/objects/index.d.ts.map +1 -0
- package/types/objects/tree.d.ts +49 -0
- package/types/objects/tree.d.ts.map +1 -0
- package/types/pack/delta.d.ts +47 -0
- package/types/pack/delta.d.ts.map +1 -0
- package/types/pack/index.d.ts +4 -0
- package/types/pack/index.d.ts.map +1 -0
- package/types/pack/objects.d.ts +53 -0
- package/types/pack/objects.d.ts.map +1 -0
- package/types/pack/parser.d.ts +61 -0
- package/types/pack/parser.d.ts.map +1 -0
- package/types/protocol/index.d.ts +4 -0
- package/types/protocol/index.d.ts.map +1 -0
- package/types/protocol/pkt_line.d.ts +44 -0
- package/types/protocol/pkt_line.d.ts.map +1 -0
- package/types/protocol/refs.d.ts +40 -0
- package/types/protocol/refs.d.ts.map +1 -0
- package/types/protocol/upload_pack.d.ts +45 -0
- package/types/protocol/upload_pack.d.ts.map +1 -0
- package/types/transport.d.ts +24 -0
- package/types/transport.d.ts.map +1 -0
- package/types/types.d.ts +121 -0
- package/types/types.d.ts.map +1 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/** Default border characters. */
|
|
2
|
+
export const border = {
|
|
3
|
+
top: "─",
|
|
4
|
+
topMid: "┬",
|
|
5
|
+
topLeft: "┌",
|
|
6
|
+
topRight: "┐",
|
|
7
|
+
bottom: "─",
|
|
8
|
+
bottomMid: "┴",
|
|
9
|
+
bottomLeft: "└",
|
|
10
|
+
bottomRight: "┘",
|
|
11
|
+
left: "│",
|
|
12
|
+
leftMid: "├",
|
|
13
|
+
mid: "─",
|
|
14
|
+
midMid: "┼",
|
|
15
|
+
right: "│",
|
|
16
|
+
rightMid: "┤",
|
|
17
|
+
middle: "│",
|
|
18
|
+
};
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cell representation.
|
|
3
|
+
*
|
|
4
|
+
* Can be used to customize a single cell.
|
|
5
|
+
*
|
|
6
|
+
* ```ts
|
|
7
|
+
* import { Cell, Table } from "./mod.ts";
|
|
8
|
+
*
|
|
9
|
+
* new Table()
|
|
10
|
+
* .body([
|
|
11
|
+
* ["Foo", new Cell("Bar").align("right")],
|
|
12
|
+
* ["Beep", "Boop"],
|
|
13
|
+
* ])
|
|
14
|
+
* .render();
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export class Cell {
|
|
18
|
+
value;
|
|
19
|
+
options = {};
|
|
20
|
+
/** Get cell length. */
|
|
21
|
+
get length() {
|
|
22
|
+
return this.toString().length;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Any unterminated ANSI formatting overflowed from previous lines of a
|
|
26
|
+
* multi-line cell.
|
|
27
|
+
*/
|
|
28
|
+
get unclosedAnsiRuns() {
|
|
29
|
+
return this.options.unclosedAnsiRuns ?? "";
|
|
30
|
+
}
|
|
31
|
+
set unclosedAnsiRuns(val) {
|
|
32
|
+
this.options.unclosedAnsiRuns = val;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Create a new cell. If value is a cell, the value and all options of the cell
|
|
36
|
+
* will be copied to the new cell.
|
|
37
|
+
*
|
|
38
|
+
* @param value Cell or cell value.
|
|
39
|
+
*/
|
|
40
|
+
static from(value) {
|
|
41
|
+
let cell;
|
|
42
|
+
if (value instanceof Cell) {
|
|
43
|
+
cell = new this(value.getValue());
|
|
44
|
+
cell.options = { ...value.options };
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
cell = new this(value);
|
|
48
|
+
}
|
|
49
|
+
return cell;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Cell constructor.
|
|
53
|
+
*
|
|
54
|
+
* @param value Cell value.
|
|
55
|
+
*/
|
|
56
|
+
constructor(value) {
|
|
57
|
+
this.value = value;
|
|
58
|
+
}
|
|
59
|
+
/** Get cell string value. */
|
|
60
|
+
toString() {
|
|
61
|
+
return this.value.toString();
|
|
62
|
+
}
|
|
63
|
+
/** Get cell value. */
|
|
64
|
+
getValue() {
|
|
65
|
+
return this.value;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Set cell value.
|
|
69
|
+
*
|
|
70
|
+
* @param value Cell or cell value.
|
|
71
|
+
*/
|
|
72
|
+
setValue(value) {
|
|
73
|
+
this.value = value;
|
|
74
|
+
return this;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Clone cell with all options.
|
|
78
|
+
*
|
|
79
|
+
* @param value Cell or cell value.
|
|
80
|
+
*/
|
|
81
|
+
clone(value) {
|
|
82
|
+
return Cell.from(value ?? this);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Setter:
|
|
86
|
+
*/
|
|
87
|
+
/**
|
|
88
|
+
* Enable/disable cell border.
|
|
89
|
+
*
|
|
90
|
+
* @param enable Enable/disable cell border.
|
|
91
|
+
* @param override Override existing value.
|
|
92
|
+
*/
|
|
93
|
+
border(enable = true, override = true) {
|
|
94
|
+
if (override || typeof this.options.border === "undefined") {
|
|
95
|
+
this.options.border = enable;
|
|
96
|
+
}
|
|
97
|
+
return this;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Set col span.
|
|
101
|
+
*
|
|
102
|
+
* ```ts
|
|
103
|
+
* import { Cell, Table } from "./mod.ts";
|
|
104
|
+
*
|
|
105
|
+
* new Table()
|
|
106
|
+
* .body([
|
|
107
|
+
* [
|
|
108
|
+
* new Cell("Row 1 & 2 Column 1").rowSpan(2),
|
|
109
|
+
* "Row 1 Column 2",
|
|
110
|
+
* "Row 1 Column 3",
|
|
111
|
+
* ],
|
|
112
|
+
* [new Cell("Row 2 Column 2 & 3").colSpan(2)],
|
|
113
|
+
* ])
|
|
114
|
+
* .border()
|
|
115
|
+
* .render();
|
|
116
|
+
* ```
|
|
117
|
+
*
|
|
118
|
+
* @param span Number of cols to span.
|
|
119
|
+
* @param override Override existing value.
|
|
120
|
+
*/
|
|
121
|
+
colSpan(span, override = true) {
|
|
122
|
+
if (override || typeof this.options.colSpan === "undefined") {
|
|
123
|
+
this.options.colSpan = span;
|
|
124
|
+
}
|
|
125
|
+
return this;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Set row span.
|
|
129
|
+
*
|
|
130
|
+
* ```ts
|
|
131
|
+
* import { Cell, Table } from "./mod.ts";
|
|
132
|
+
*
|
|
133
|
+
* new Table()
|
|
134
|
+
* .body([
|
|
135
|
+
* [
|
|
136
|
+
* new Cell("Row 1 & 2 Column 1").rowSpan(2),
|
|
137
|
+
* "Row 1 Column 2",
|
|
138
|
+
* "Row 1 Column 3",
|
|
139
|
+
* ],
|
|
140
|
+
* [new Cell("Row 2 Column 2 & 3").colSpan(2)],
|
|
141
|
+
* ])
|
|
142
|
+
* .border()
|
|
143
|
+
* .render();
|
|
144
|
+
* ```
|
|
145
|
+
*
|
|
146
|
+
* @param span Number of rows to span.
|
|
147
|
+
* @param override Override existing value.
|
|
148
|
+
*/
|
|
149
|
+
rowSpan(span, override = true) {
|
|
150
|
+
if (override || typeof this.options.rowSpan === "undefined") {
|
|
151
|
+
this.options.rowSpan = span;
|
|
152
|
+
}
|
|
153
|
+
return this;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Align cell content.
|
|
157
|
+
*
|
|
158
|
+
* @param direction Align direction.
|
|
159
|
+
* @param override Override existing value.
|
|
160
|
+
*/
|
|
161
|
+
align(direction, override = true) {
|
|
162
|
+
if (override || typeof this.options.align === "undefined") {
|
|
163
|
+
this.options.align = direction;
|
|
164
|
+
}
|
|
165
|
+
return this;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Getter:
|
|
169
|
+
*/
|
|
170
|
+
/** Check if cell has border. */
|
|
171
|
+
getBorder() {
|
|
172
|
+
return this.options.border === true;
|
|
173
|
+
}
|
|
174
|
+
/** Get col span. */
|
|
175
|
+
getColSpan() {
|
|
176
|
+
return typeof this.options.colSpan === "number" && this.options.colSpan > 0
|
|
177
|
+
? this.options.colSpan
|
|
178
|
+
: 1;
|
|
179
|
+
}
|
|
180
|
+
/** Get row span. */
|
|
181
|
+
getRowSpan() {
|
|
182
|
+
return typeof this.options.rowSpan === "number" && this.options.rowSpan > 0
|
|
183
|
+
? this.options.rowSpan
|
|
184
|
+
: 1;
|
|
185
|
+
}
|
|
186
|
+
/** Get row span. */
|
|
187
|
+
getAlign() {
|
|
188
|
+
return this.options.align ?? "left";
|
|
189
|
+
}
|
|
190
|
+
}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Column representation.
|
|
3
|
+
*
|
|
4
|
+
* Can be used to customize a single column.
|
|
5
|
+
*
|
|
6
|
+
* ```ts
|
|
7
|
+
* import { Column, Table } from "./mod.ts";
|
|
8
|
+
*
|
|
9
|
+
* new Table()
|
|
10
|
+
* .body([
|
|
11
|
+
* ["Foo", "bar"],
|
|
12
|
+
* ["Beep", "Boop"],
|
|
13
|
+
* ])
|
|
14
|
+
* .column(0, new Column().border())
|
|
15
|
+
* .render();
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export class Column {
|
|
19
|
+
/**
|
|
20
|
+
* Create a new cell from column options or an existing column.
|
|
21
|
+
* @param options
|
|
22
|
+
*/
|
|
23
|
+
static from(options) {
|
|
24
|
+
const opts = options instanceof Column ? options.opts : options;
|
|
25
|
+
return new Column().options(opts);
|
|
26
|
+
}
|
|
27
|
+
opts = {};
|
|
28
|
+
/** Set column options. */
|
|
29
|
+
options(options) {
|
|
30
|
+
Object.assign(this.opts, options);
|
|
31
|
+
return this;
|
|
32
|
+
}
|
|
33
|
+
/** Set min column width. */
|
|
34
|
+
minWidth(width) {
|
|
35
|
+
this.opts.minWidth = width;
|
|
36
|
+
return this;
|
|
37
|
+
}
|
|
38
|
+
/** Set max column width. */
|
|
39
|
+
maxWidth(width) {
|
|
40
|
+
this.opts.maxWidth = width;
|
|
41
|
+
return this;
|
|
42
|
+
}
|
|
43
|
+
/** Set column border. */
|
|
44
|
+
border(border = true) {
|
|
45
|
+
this.opts.border = border;
|
|
46
|
+
return this;
|
|
47
|
+
}
|
|
48
|
+
/** Set column padding. */
|
|
49
|
+
padding(padding) {
|
|
50
|
+
this.opts.padding = padding;
|
|
51
|
+
return this;
|
|
52
|
+
}
|
|
53
|
+
/** Set column alignment. */
|
|
54
|
+
align(direction) {
|
|
55
|
+
this.opts.align = direction;
|
|
56
|
+
return this;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Set column flex-shrink weight. Follows CSS flex-shrink semantics: each
|
|
60
|
+
* column's share of the reduction is proportional to `weight × width`, so
|
|
61
|
+
* a wider column or one with a higher weight absorbs more of the overflow.
|
|
62
|
+
* 0 = rigid (never shrinks), 1 = default. See MDN flex-shrink for full detail.
|
|
63
|
+
*/
|
|
64
|
+
flexShrink(weight = 1) {
|
|
65
|
+
this.opts.flexShrink = weight;
|
|
66
|
+
return this;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Set column flex-grow weight. Follows CSS flex-grow semantics: available
|
|
70
|
+
* slack is distributed proportionally by weight, so weight 2 receives twice
|
|
71
|
+
* the extra space of weight 1. 0 = no grow.
|
|
72
|
+
* See MDN flex-grow for full detail.
|
|
73
|
+
*/
|
|
74
|
+
flexGrow(weight = 1) {
|
|
75
|
+
this.opts.flexGrow = weight;
|
|
76
|
+
return this;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Shorthand to set both flex-grow and flex-shrink to the same value. Follows
|
|
80
|
+
* CSS flex semantics: the column will both expand into and contract out of
|
|
81
|
+
* available space proportionally. 0 = rigid.
|
|
82
|
+
* See MDN flex for full detail.
|
|
83
|
+
*/
|
|
84
|
+
flex(weight = 1) {
|
|
85
|
+
this.opts.flexGrow = weight;
|
|
86
|
+
this.opts.flexShrink = weight;
|
|
87
|
+
return this;
|
|
88
|
+
}
|
|
89
|
+
/** Get min column width. */
|
|
90
|
+
getMinWidth() {
|
|
91
|
+
return this.opts.minWidth;
|
|
92
|
+
}
|
|
93
|
+
/** Get max column width. */
|
|
94
|
+
getMaxWidth() {
|
|
95
|
+
return this.opts.maxWidth;
|
|
96
|
+
}
|
|
97
|
+
/** Get column border. */
|
|
98
|
+
getBorder() {
|
|
99
|
+
return this.opts.border;
|
|
100
|
+
}
|
|
101
|
+
/** Get column padding. */
|
|
102
|
+
getPadding() {
|
|
103
|
+
return this.opts.padding;
|
|
104
|
+
}
|
|
105
|
+
/** Get column alignment. */
|
|
106
|
+
getAlign() {
|
|
107
|
+
return this.opts.align;
|
|
108
|
+
}
|
|
109
|
+
/** Get column flex-shrink weight. */
|
|
110
|
+
getFlexShrink() {
|
|
111
|
+
return this.opts.flexShrink;
|
|
112
|
+
}
|
|
113
|
+
/** Get column flex-grow weight. */
|
|
114
|
+
getFlexGrow() {
|
|
115
|
+
return this.opts.flexGrow;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { ansiRegexSource, strLength } from "./_utils.js";
|
|
2
|
+
/**
|
|
3
|
+
* Consumes the maximum amount of words from a string which is not longer than
|
|
4
|
+
* given length. This function returns at least one word.
|
|
5
|
+
*
|
|
6
|
+
* ```ts
|
|
7
|
+
* import { consumeWords } from "./mod.ts";
|
|
8
|
+
*
|
|
9
|
+
* const str = consumeWords(9, "This is an example."); // returns: "This is"
|
|
10
|
+
* ```
|
|
11
|
+
*
|
|
12
|
+
* @param length The maximum length of the returned string.
|
|
13
|
+
* @param content The content from which the string should be consumed.
|
|
14
|
+
*/
|
|
15
|
+
export function consumeWords(length, content) {
|
|
16
|
+
let consumed = "";
|
|
17
|
+
const words = content.split("\n")[0]?.split(/ /g);
|
|
18
|
+
for (let i = 0; i < words.length; i++) {
|
|
19
|
+
const word = words[i];
|
|
20
|
+
// consume minimum one word
|
|
21
|
+
if (consumed) {
|
|
22
|
+
const nextLength = strLength(word);
|
|
23
|
+
const consumedLength = strLength(consumed);
|
|
24
|
+
if (consumedLength + nextLength >= length) {
|
|
25
|
+
break;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
consumed += (i > 0 ? " " : "") + word;
|
|
29
|
+
}
|
|
30
|
+
return consumed;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Consumes the maximum amount of chars from a string which is not longer than
|
|
34
|
+
* given length, ignoring ANSI codes when calculating the length.
|
|
35
|
+
* This function returns at least one char.
|
|
36
|
+
*
|
|
37
|
+
* ```ts
|
|
38
|
+
* import { consumeChars } from "./consume_words.ts";
|
|
39
|
+
*
|
|
40
|
+
* const str = consumeChars(9, "\x1b[31mThis is an example."); // returns: "\x1b[31mThis is a"
|
|
41
|
+
* ```
|
|
42
|
+
*
|
|
43
|
+
* @param length The maximum length of the returned string.
|
|
44
|
+
* @param content The content from which the string should be consumed.
|
|
45
|
+
*/
|
|
46
|
+
export function consumeChars(length, content) {
|
|
47
|
+
let consumed = "";
|
|
48
|
+
const chars = [
|
|
49
|
+
...content.split("\n")[0].matchAll(new RegExp(`(?:${ansiRegexSource})+|.`, "gu")),
|
|
50
|
+
]
|
|
51
|
+
.map(([match]) => match);
|
|
52
|
+
for (const char of chars) {
|
|
53
|
+
// consume minimum one char
|
|
54
|
+
if (consumed) {
|
|
55
|
+
const nextLength = strLength(char);
|
|
56
|
+
const consumedLength = strLength(consumed);
|
|
57
|
+
if (consumedLength + nextLength > length) {
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
consumed += char;
|
|
62
|
+
}
|
|
63
|
+
return consumed;
|
|
64
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A table module to render unicode tables with [Deno](https://deno.com),
|
|
3
|
+
* [Node](https://nodejs.org) and [Bun](https://bun.sh/).
|
|
4
|
+
*
|
|
5
|
+
* > [!NOTE]\
|
|
6
|
+
* > The full documentation can be found at
|
|
7
|
+
* > [cliffy.io](https://cliffy.io/docs/table).
|
|
8
|
+
*
|
|
9
|
+
* ## Usage
|
|
10
|
+
*
|
|
11
|
+
* The table class provides a few chainable option methods. To see a list of all
|
|
12
|
+
* available options see [Table options](https://cliffy.io/docs/table/options).
|
|
13
|
+
*
|
|
14
|
+
* ```ts
|
|
15
|
+
* import { Table } from "@cliffy/table";
|
|
16
|
+
*
|
|
17
|
+
* const table = new Table()
|
|
18
|
+
* .header(["Name", "Date", "City", "Country"])
|
|
19
|
+
* .body([
|
|
20
|
+
* ["Baxter Herman", "Oct 1, 2020", "Harderwijk", "Slovenia"],
|
|
21
|
+
* ["Jescie Wolfe", "Dec 4, 2020", "Alto Hospicio", "Japan"],
|
|
22
|
+
* ["Allegra Cleveland", "Apr 16, 2020", "Avernas-le-Bauduin", "Samoa"],
|
|
23
|
+
* ])
|
|
24
|
+
* .maxColWidth(10)
|
|
25
|
+
* .padding(1)
|
|
26
|
+
* .indent(2)
|
|
27
|
+
* .border(true)
|
|
28
|
+
* .render();
|
|
29
|
+
*
|
|
30
|
+
* table.push(["Aretha Gamble", "Feb 22, 2021", "Honolulu", "Georgia"]);
|
|
31
|
+
* table.sort();
|
|
32
|
+
* table.render();
|
|
33
|
+
* ```
|
|
34
|
+
*
|
|
35
|
+
* @module
|
|
36
|
+
*/
|
|
37
|
+
export { border } from "./border.js";
|
|
38
|
+
export { Cell } from "./cell.js";
|
|
39
|
+
export { Column } from "./column.js";
|
|
40
|
+
export { consumeWords } from "./consume_words.js";
|
|
41
|
+
export { Row } from "./row.js";
|
|
42
|
+
export { Table } from "./table.js";
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { Cell } from "./cell.js";
|
|
2
|
+
/**
|
|
3
|
+
* Row representation.
|
|
4
|
+
*
|
|
5
|
+
* Can be used to customize a single row.
|
|
6
|
+
*
|
|
7
|
+
* ```ts
|
|
8
|
+
* import { Row, Table } from "./mod.ts";
|
|
9
|
+
*
|
|
10
|
+
* new Table()
|
|
11
|
+
* .body([
|
|
12
|
+
* new Row("Foo", "Bar").align("right"),
|
|
13
|
+
* ["Beep", "Boop"],
|
|
14
|
+
* ])
|
|
15
|
+
* .render();
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export class Row extends Array {
|
|
19
|
+
options = {};
|
|
20
|
+
/**
|
|
21
|
+
* Create a new row. If cells is a row, all cells and options of the row will
|
|
22
|
+
* be copied to the new row.
|
|
23
|
+
*
|
|
24
|
+
* @param cells Cells or row.
|
|
25
|
+
*/
|
|
26
|
+
static from(cells) {
|
|
27
|
+
const row = new this(...cells);
|
|
28
|
+
if (cells instanceof Row) {
|
|
29
|
+
row.options = { ...cells.options };
|
|
30
|
+
}
|
|
31
|
+
return row;
|
|
32
|
+
}
|
|
33
|
+
/** Clone row recursively with all options. */
|
|
34
|
+
clone() {
|
|
35
|
+
const row = new Row(...this.map((cell) => cell instanceof Cell ? cell.clone() : cell));
|
|
36
|
+
row.options = { ...this.options };
|
|
37
|
+
return row;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Setter:
|
|
41
|
+
*/
|
|
42
|
+
/**
|
|
43
|
+
* Enable/disable cell border.
|
|
44
|
+
*
|
|
45
|
+
* @param enable Enable/disable cell border.
|
|
46
|
+
* @param override Override existing value.
|
|
47
|
+
*/
|
|
48
|
+
border(enable = true, override = true) {
|
|
49
|
+
if (override || typeof this.options.border === "undefined") {
|
|
50
|
+
this.options.border = enable;
|
|
51
|
+
}
|
|
52
|
+
return this;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Align row content.
|
|
56
|
+
*
|
|
57
|
+
* @param direction Align direction.
|
|
58
|
+
* @param override Override existing value.
|
|
59
|
+
*/
|
|
60
|
+
align(direction, override = true) {
|
|
61
|
+
if (override || typeof this.options.align === "undefined") {
|
|
62
|
+
this.options.align = direction;
|
|
63
|
+
}
|
|
64
|
+
return this;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Getter:
|
|
68
|
+
*/
|
|
69
|
+
/** Check if row has border. */
|
|
70
|
+
getBorder() {
|
|
71
|
+
return this.options.border === true;
|
|
72
|
+
}
|
|
73
|
+
/** Check if row or any child cell has border. */
|
|
74
|
+
hasBorder() {
|
|
75
|
+
return this.getBorder() ||
|
|
76
|
+
this.some((cell) => cell instanceof Cell && cell.getBorder());
|
|
77
|
+
}
|
|
78
|
+
/** Get row alignment. */
|
|
79
|
+
getAlign() {
|
|
80
|
+
return this.options.align ?? "left";
|
|
81
|
+
}
|
|
82
|
+
}
|