[READ-ONLY] Mirror of https://github.com/bombshell-dev/clack. Effortlessly build beautiful command-line apps bomb.sh/docs/clack/basics/getting-started/
cli command-line command-line-app node prompt prompts
5

Configure Feed

Select the types of activity you want to include in your feed.

test: use ansi serializer (#303)

authored by

James Garbutt and committed by
GitHub
(Apr 18, 2025, 12:36 PM +0100) 3942b5d6 127b3429

+1519 -1499
+2 -1
packages/prompts/package.json
··· 56 56 }, 57 57 "devDependencies": { 58 58 "is-unicode-supported": "^1.3.0", 59 - "vitest": "^3.1.1" 59 + "vitest": "^3.1.1", 60 + "vitest-ansi-serializer": "^0.1.2" 60 61 } 61 62 }
+94 -94
packages/prompts/test/__snapshots__/confirm.test.ts.snap
··· 2 2 3 3 exports[`confirm (isCI = false) > can cancel 1`] = ` 4 4 [ 5 - "[?25l", 5 + "<cursor.hide>", 6 6 "│ 7 7 ◆ foo 8 8 │ ● Yes / ○ No 9 9 └ 10 10 ", 11 - "", 12 - "", 13 - "", 11 + "<cursor.backward count=999><cursor.up count=4>", 12 + "<cursor.down count=1>", 13 + "<erase.down>", 14 14 "■ foo 15 15 │ No 16 16 │", 17 17 " 18 18 ", 19 - "[?25h", 19 + "<cursor.show>", 20 20 ] 21 21 `; 22 22 23 23 exports[`confirm (isCI = false) > can set initialValue 1`] = ` 24 24 [ 25 - "[?25l", 25 + "<cursor.hide>", 26 26 "│ 27 27 ◆ foo 28 28 │ ○ Yes / ● No 29 29 └ 30 30 ", 31 - "", 32 - "", 33 - "", 31 + "<cursor.backward count=999><cursor.up count=4>", 32 + "<cursor.down count=1>", 33 + "<erase.down>", 34 34 "◇ foo 35 35 │ No", 36 36 " 37 37 ", 38 - "[?25h", 38 + "<cursor.show>", 39 39 ] 40 40 `; 41 41 42 42 exports[`confirm (isCI = false) > left arrow moves to previous choice 1`] = ` 43 43 [ 44 - "[?25l", 44 + "<cursor.hide>", 45 45 "│ 46 46 ◆ foo 47 47 │ ● Yes / ○ No 48 48 └ 49 49 ", 50 - "", 51 - "", 52 - "", 50 + "<cursor.backward count=999><cursor.up count=4>", 51 + "<cursor.down count=2>", 52 + "<erase.line><cursor.left count=1>", 53 53 "│ ○ Yes / ● No", 54 - "", 55 - "", 56 - "", 57 - "", 54 + "<cursor.down count=2>", 55 + "<cursor.backward count=999><cursor.up count=4>", 56 + "<cursor.down count=2>", 57 + "<erase.line><cursor.left count=1>", 58 58 "│ ● Yes / ○ No", 59 - "", 60 - "", 61 - "", 62 - "", 59 + "<cursor.down count=2>", 60 + "<cursor.backward count=999><cursor.up count=4>", 61 + "<cursor.down count=1>", 62 + "<erase.down>", 63 63 "◇ foo 64 64 │ Yes", 65 65 " 66 66 ", 67 - "[?25h", 67 + "<cursor.show>", 68 68 ] 69 69 `; 70 70 71 71 exports[`confirm (isCI = false) > renders custom active choice 1`] = ` 72 72 [ 73 - "[?25l", 73 + "<cursor.hide>", 74 74 "│ 75 75 ◆ foo 76 76 │ ● bleep / ○ No 77 77 └ 78 78 ", 79 - "", 80 - "", 81 - "", 79 + "<cursor.backward count=999><cursor.up count=4>", 80 + "<cursor.down count=1>", 81 + "<erase.down>", 82 82 "◇ foo 83 83 │ bleep", 84 84 " 85 85 ", 86 - "[?25h", 86 + "<cursor.show>", 87 87 ] 88 88 `; 89 89 90 90 exports[`confirm (isCI = false) > renders custom inactive choice 1`] = ` 91 91 [ 92 - "[?25l", 92 + "<cursor.hide>", 93 93 "│ 94 94 ◆ foo 95 95 │ ● Yes / ○ bleep 96 96 └ 97 97 ", 98 - "", 99 - "", 100 - "", 98 + "<cursor.backward count=999><cursor.up count=4>", 99 + "<cursor.down count=1>", 100 + "<erase.down>", 101 101 "◇ foo 102 102 │ Yes", 103 103 " 104 104 ", 105 - "[?25h", 105 + "<cursor.show>", 106 106 ] 107 107 `; 108 108 109 109 exports[`confirm (isCI = false) > renders message with choices 1`] = ` 110 110 [ 111 - "[?25l", 111 + "<cursor.hide>", 112 112 "│ 113 113 ◆ foo 114 114 │ ● Yes / ○ No 115 115 └ 116 116 ", 117 - "", 118 - "", 119 - "", 117 + "<cursor.backward count=999><cursor.up count=4>", 118 + "<cursor.down count=1>", 119 + "<erase.down>", 120 120 "◇ foo 121 121 │ Yes", 122 122 " 123 123 ", 124 - "[?25h", 124 + "<cursor.show>", 125 125 ] 126 126 `; 127 127 128 128 exports[`confirm (isCI = false) > right arrow moves to next choice 1`] = ` 129 129 [ 130 - "[?25l", 130 + "<cursor.hide>", 131 131 "│ 132 132 ◆ foo 133 133 │ ● Yes / ○ No 134 134 └ 135 135 ", 136 - "", 137 - "", 138 - "", 136 + "<cursor.backward count=999><cursor.up count=4>", 137 + "<cursor.down count=2>", 138 + "<erase.line><cursor.left count=1>", 139 139 "│ ○ Yes / ● No", 140 - "", 141 - "", 142 - "", 143 - "", 140 + "<cursor.down count=2>", 141 + "<cursor.backward count=999><cursor.up count=4>", 142 + "<cursor.down count=1>", 143 + "<erase.down>", 144 144 "◇ foo 145 145 │ No", 146 146 " 147 147 ", 148 - "[?25h", 148 + "<cursor.show>", 149 149 ] 150 150 `; 151 151 152 152 exports[`confirm (isCI = true) > can cancel 1`] = ` 153 153 [ 154 - "[?25l", 154 + "<cursor.hide>", 155 155 "│ 156 156 ◆ foo 157 157 │ ● Yes / ○ No 158 158 └ 159 159 ", 160 - "", 161 - "", 162 - "", 160 + "<cursor.backward count=999><cursor.up count=4>", 161 + "<cursor.down count=1>", 162 + "<erase.down>", 163 163 "■ foo 164 164 │ No 165 165 │", 166 166 " 167 167 ", 168 - "[?25h", 168 + "<cursor.show>", 169 169 ] 170 170 `; 171 171 172 172 exports[`confirm (isCI = true) > can set initialValue 1`] = ` 173 173 [ 174 - "[?25l", 174 + "<cursor.hide>", 175 175 "│ 176 176 ◆ foo 177 177 │ ○ Yes / ● No 178 178 └ 179 179 ", 180 - "", 181 - "", 182 - "", 180 + "<cursor.backward count=999><cursor.up count=4>", 181 + "<cursor.down count=1>", 182 + "<erase.down>", 183 183 "◇ foo 184 184 │ No", 185 185 " 186 186 ", 187 - "[?25h", 187 + "<cursor.show>", 188 188 ] 189 189 `; 190 190 191 191 exports[`confirm (isCI = true) > left arrow moves to previous choice 1`] = ` 192 192 [ 193 - "[?25l", 193 + "<cursor.hide>", 194 194 "│ 195 195 ◆ foo 196 196 │ ● Yes / ○ No 197 197 └ 198 198 ", 199 - "", 200 - "", 201 - "", 199 + "<cursor.backward count=999><cursor.up count=4>", 200 + "<cursor.down count=2>", 201 + "<erase.line><cursor.left count=1>", 202 202 "│ ○ Yes / ● No", 203 - "", 204 - "", 205 - "", 206 - "", 203 + "<cursor.down count=2>", 204 + "<cursor.backward count=999><cursor.up count=4>", 205 + "<cursor.down count=2>", 206 + "<erase.line><cursor.left count=1>", 207 207 "│ ● Yes / ○ No", 208 - "", 209 - "", 210 - "", 211 - "", 208 + "<cursor.down count=2>", 209 + "<cursor.backward count=999><cursor.up count=4>", 210 + "<cursor.down count=1>", 211 + "<erase.down>", 212 212 "◇ foo 213 213 │ Yes", 214 214 " 215 215 ", 216 - "[?25h", 216 + "<cursor.show>", 217 217 ] 218 218 `; 219 219 220 220 exports[`confirm (isCI = true) > renders custom active choice 1`] = ` 221 221 [ 222 - "[?25l", 222 + "<cursor.hide>", 223 223 "│ 224 224 ◆ foo 225 225 │ ● bleep / ○ No 226 226 └ 227 227 ", 228 - "", 229 - "", 230 - "", 228 + "<cursor.backward count=999><cursor.up count=4>", 229 + "<cursor.down count=1>", 230 + "<erase.down>", 231 231 "◇ foo 232 232 │ bleep", 233 233 " 234 234 ", 235 - "[?25h", 235 + "<cursor.show>", 236 236 ] 237 237 `; 238 238 239 239 exports[`confirm (isCI = true) > renders custom inactive choice 1`] = ` 240 240 [ 241 - "[?25l", 241 + "<cursor.hide>", 242 242 "│ 243 243 ◆ foo 244 244 │ ● Yes / ○ bleep 245 245 └ 246 246 ", 247 - "", 248 - "", 249 - "", 247 + "<cursor.backward count=999><cursor.up count=4>", 248 + "<cursor.down count=1>", 249 + "<erase.down>", 250 250 "◇ foo 251 251 │ Yes", 252 252 " 253 253 ", 254 - "[?25h", 254 + "<cursor.show>", 255 255 ] 256 256 `; 257 257 258 258 exports[`confirm (isCI = true) > renders message with choices 1`] = ` 259 259 [ 260 - "[?25l", 260 + "<cursor.hide>", 261 261 "│ 262 262 ◆ foo 263 263 │ ● Yes / ○ No 264 264 └ 265 265 ", 266 - "", 267 - "", 268 - "", 266 + "<cursor.backward count=999><cursor.up count=4>", 267 + "<cursor.down count=1>", 268 + "<erase.down>", 269 269 "◇ foo 270 270 │ Yes", 271 271 " 272 272 ", 273 - "[?25h", 273 + "<cursor.show>", 274 274 ] 275 275 `; 276 276 277 277 exports[`confirm (isCI = true) > right arrow moves to next choice 1`] = ` 278 278 [ 279 - "[?25l", 279 + "<cursor.hide>", 280 280 "│ 281 281 ◆ foo 282 282 │ ● Yes / ○ No 283 283 └ 284 284 ", 285 - "", 286 - "", 287 - "", 285 + "<cursor.backward count=999><cursor.up count=4>", 286 + "<cursor.down count=2>", 287 + "<erase.line><cursor.left count=1>", 288 288 "│ ○ Yes / ● No", 289 - "", 290 - "", 291 - "", 292 - "", 289 + "<cursor.down count=2>", 290 + "<cursor.backward count=999><cursor.up count=4>", 291 + "<cursor.down count=1>", 292 + "<erase.down>", 293 293 "◇ foo 294 294 │ No", 295 295 " 296 296 ", 297 - "[?25h", 297 + "<cursor.show>", 298 298 ] 299 299 `;
+342 -342
packages/prompts/test/__snapshots__/group-multi-select.test.ts.snap
··· 2 2 3 3 exports[`groupMultiselect (isCI = false) > can deselect an option 1`] = ` 4 4 [ 5 - "[?25l", 5 + "<cursor.hide>", 6 6 "│ 7 7 ◆ foo 8 8 │ ◻ group1 ··· 10 10 │ └ ◻ group1value1 11 11 └ 12 12 ", 13 - "", 14 - "", 15 - "", 13 + "<cursor.backward count=999><cursor.up count=6>", 14 + "<cursor.down count=2>", 15 + "<erase.down>", 16 16 "│ ◻ group1 17 17 │ │ ◻ group1value0 18 18 │ └ ◻ group1value1 19 19 └ 20 20 ", 21 - "", 22 - "", 23 - "", 21 + "<cursor.backward count=999><cursor.up count=6>", 22 + "<cursor.down count=3>", 23 + "<erase.line><cursor.left count=1>", 24 24 "│ │ ◼ group1value0", 25 - "", 26 - "", 27 - "", 28 - "", 25 + "<cursor.down count=3>", 26 + "<cursor.backward count=999><cursor.up count=6>", 27 + "<cursor.down count=3>", 28 + "<erase.down>", 29 29 "│ │ ◼ group1value0 30 30 │ └ ◻ group1value1 31 31 └ 32 32 ", 33 - "", 34 - "", 35 - "", 33 + "<cursor.backward count=999><cursor.up count=6>", 34 + "<cursor.down count=2>", 35 + "<erase.down>", 36 36 "│ ◼ group1 37 37 │ │ ◼ group1value0 38 38 │ └ ◼ group1value1 39 39 └ 40 40 ", 41 - "", 42 - "", 43 - "", 41 + "<cursor.backward count=999><cursor.up count=6>", 42 + "<cursor.down count=2>", 43 + "<erase.down>", 44 44 "│ ◻ group1 45 45 │ │ ◼ group1value0 46 46 │ └ ◻ group1value1 47 47 └ 48 48 ", 49 - "", 50 - "", 51 - "", 49 + "<cursor.backward count=999><cursor.up count=6>", 50 + "<cursor.down count=1>", 51 + "<erase.down>", 52 52 "◇ foo 53 53 │ group1value0", 54 54 " 55 55 ", 56 - "[?25h", 56 + "<cursor.show>", 57 57 ] 58 58 `; 59 59 60 60 exports[`groupMultiselect (isCI = false) > can select a group 1`] = ` 61 61 [ 62 - "[?25l", 62 + "<cursor.hide>", 63 63 "│ 64 64 ◆ foo 65 65 │ ◻ group1 ··· 67 67 │ └ ◻ group1value1 68 68 └ 69 69 ", 70 - "", 71 - "", 72 - "", 70 + "<cursor.backward count=999><cursor.up count=6>", 71 + "<cursor.down count=2>", 72 + "<erase.down>", 73 73 "│ ◼ group1 74 74 │ │ ◼ group1value0 75 75 │ └ ◼ group1value1 76 76 └ 77 77 ", 78 - "", 79 - "", 80 - "", 78 + "<cursor.backward count=999><cursor.up count=6>", 79 + "<cursor.down count=1>", 80 + "<erase.down>", 81 81 "◇ foo 82 82 │ group1value0, group1value1", 83 83 " 84 84 ", 85 - "[?25h", 85 + "<cursor.show>", 86 86 ] 87 87 `; 88 88 89 89 exports[`groupMultiselect (isCI = false) > can select a group by selecting all members 1`] = ` 90 90 [ 91 - "[?25l", 91 + "<cursor.hide>", 92 92 "│ 93 93 ◆ foo 94 94 │ ◻ group1 ··· 96 96 │ └ ◻ group1value1 97 97 └ 98 98 ", 99 - "", 100 - "", 101 - "", 99 + "<cursor.backward count=999><cursor.up count=6>", 100 + "<cursor.down count=2>", 101 + "<erase.down>", 102 102 "│ ◻ group1 103 103 │ │ ◻ group1value0 104 104 │ └ ◻ group1value1 105 105 └ 106 106 ", 107 - "", 108 - "", 109 - "", 107 + "<cursor.backward count=999><cursor.up count=6>", 108 + "<cursor.down count=3>", 109 + "<erase.line><cursor.left count=1>", 110 110 "│ │ ◼ group1value0", 111 - "", 112 - "", 113 - "", 114 - "", 111 + "<cursor.down count=3>", 112 + "<cursor.backward count=999><cursor.up count=6>", 113 + "<cursor.down count=3>", 114 + "<erase.down>", 115 115 "│ │ ◼ group1value0 116 116 │ └ ◻ group1value1 117 117 └ 118 118 ", 119 - "", 120 - "", 121 - "", 119 + "<cursor.backward count=999><cursor.up count=6>", 120 + "<cursor.down count=2>", 121 + "<erase.down>", 122 122 "│ ◼ group1 123 123 │ │ ◼ group1value0 124 124 │ └ ◼ group1value1 125 125 └ 126 126 ", 127 - "", 128 - "", 129 - "", 127 + "<cursor.backward count=999><cursor.up count=6>", 128 + "<cursor.down count=1>", 129 + "<erase.down>", 130 130 "◇ foo 131 131 │ group1value0, group1value1", 132 132 " 133 133 ", 134 - "[?25h", 134 + "<cursor.show>", 135 135 ] 136 136 `; 137 137 138 138 exports[`groupMultiselect (isCI = false) > can select multiple options 1`] = ` 139 139 [ 140 - "[?25l", 140 + "<cursor.hide>", 141 141 "│ 142 142 ◆ foo 143 143 │ ◻ group1 ··· 146 146 │ └ ◻ group1value2 147 147 └ 148 148 ", 149 - "", 150 - "", 151 - "", 149 + "<cursor.backward count=999><cursor.up count=7>", 150 + "<cursor.down count=2>", 151 + "<erase.down>", 152 152 "│ ◻ group1 153 153 │ │ ◻ group1value0 154 154 │ │ ◻ group1value1 155 155 │ └ ◻ group1value2 156 156 └ 157 157 ", 158 - "", 159 - "", 160 - "", 158 + "<cursor.backward count=999><cursor.up count=7>", 159 + "<cursor.down count=3>", 160 + "<erase.line><cursor.left count=1>", 161 161 "│ │ ◼ group1value0", 162 - "", 163 - "", 164 - "", 165 - "", 162 + "<cursor.down count=4>", 163 + "<cursor.backward count=999><cursor.up count=7>", 164 + "<cursor.down count=3>", 165 + "<erase.down>", 166 166 "│ │ ◼ group1value0 167 167 │ │ ◻ group1value1 168 168 │ └ ◻ group1value2 169 169 └ 170 170 ", 171 - "", 172 - "", 173 - "", 171 + "<cursor.backward count=999><cursor.up count=7>", 172 + "<cursor.down count=4>", 173 + "<erase.line><cursor.left count=1>", 174 174 "│ │ ◼ group1value1", 175 - "", 176 - "", 177 - "", 178 - "", 175 + "<cursor.down count=3>", 176 + "<cursor.backward count=999><cursor.up count=7>", 177 + "<cursor.down count=1>", 178 + "<erase.down>", 179 179 "◇ foo 180 180 │ group1value0, group1value1", 181 181 " 182 182 ", 183 - "[?25h", 183 + "<cursor.show>", 184 184 ] 185 185 `; 186 186 187 187 exports[`groupMultiselect (isCI = false) > can submit empty selection when require = false 1`] = ` 188 188 [ 189 - "[?25l", 189 + "<cursor.hide>", 190 190 "│ 191 191 ◆ foo 192 192 │ ◻ group1 ··· 194 194 │ └ ◻ group1value1 195 195 └ 196 196 ", 197 - "", 198 - "", 199 - "", 197 + "<cursor.backward count=999><cursor.up count=6>", 198 + "<cursor.down count=1>", 199 + "<erase.down>", 200 200 "◇ foo 201 201 │", 202 202 " 203 203 ", 204 - "[?25h", 204 + "<cursor.show>", 205 205 ] 206 206 `; 207 207 208 208 exports[`groupMultiselect (isCI = false) > cursorAt sets initial selection 1`] = ` 209 209 [ 210 - "[?25l", 210 + "<cursor.hide>", 211 211 "│ 212 212 ◆ foo 213 213 │ ◻ group1 ··· 215 215 │ └ ◻ group1value1 216 216 └ 217 217 ", 218 - "", 219 - "", 220 - "", 218 + "<cursor.backward count=999><cursor.up count=6>", 219 + "<cursor.down count=4>", 220 + "<erase.line><cursor.left count=1>", 221 221 "│ └ ◼ group1value1", 222 - "", 223 - "", 224 - "", 225 - "", 222 + "<cursor.down count=2>", 223 + "<cursor.backward count=999><cursor.up count=6>", 224 + "<cursor.down count=1>", 225 + "<erase.down>", 226 226 "◇ foo 227 227 │ group1value1", 228 228 " 229 229 ", 230 - "[?25h", 230 + "<cursor.show>", 231 231 ] 232 232 `; 233 233 234 234 exports[`groupMultiselect (isCI = false) > groupSpacing > negative spacing is ignored 1`] = ` 235 235 [ 236 - "[?25l", 236 + "<cursor.hide>", 237 237 "│ 238 238 ◆ foo 239 239 │ ◻ group1 ··· 242 242 │ └ ◻ group2value0 243 243 └ 244 244 ", 245 - "", 246 - "", 247 - "", 245 + "<cursor.backward count=999><cursor.up count=7>", 246 + "<cursor.down count=2>", 247 + "<erase.down>", 248 248 "│ ◻ group1 249 249 │ └ ◻ group1value0 250 250 │ ◻ group2 251 251 │ └ ◻ group2value0 252 252 └ 253 253 ", 254 - "", 255 - "", 256 - "", 254 + "<cursor.backward count=999><cursor.up count=7>", 255 + "<cursor.down count=2>", 256 + "<erase.down>", 257 257 "│ ◼ group1 258 258 │ └ ◼ group1value0 259 259 │ ◻ group2 260 260 │ └ ◻ group2value0 261 261 └ 262 262 ", 263 - "", 264 - "", 265 - "", 263 + "<cursor.backward count=999><cursor.up count=7>", 264 + "<cursor.down count=1>", 265 + "<erase.down>", 266 266 "◇ foo 267 267 │ group1value0", 268 268 " 269 269 ", 270 - "[?25h", 270 + "<cursor.show>", 271 271 ] 272 272 `; 273 273 274 274 exports[`groupMultiselect (isCI = false) > groupSpacing > renders spaced groups 1`] = ` 275 275 [ 276 - "[?25l", 276 + "<cursor.hide>", 277 277 "│ 278 278 ◆ foo 279 279 │ ··· 286 286 │ └ ◻ group2value0 287 287 └ 288 288 ", 289 - "", 290 - "", 291 - "", 289 + "<cursor.backward count=999><cursor.up count=11>", 290 + "<cursor.down count=4>", 291 + "<erase.down>", 292 292 "│ ◻ group1 293 293 │ └ ◻ group1value0 294 294 │ ··· 297 297 │ └ ◻ group2value0 298 298 └ 299 299 ", 300 - "", 301 - "", 302 - "", 300 + "<cursor.backward count=999><cursor.up count=11>", 301 + "<cursor.down count=4>", 302 + "<erase.down>", 303 303 "│ ◼ group1 304 304 │ └ ◼ group1value0 305 305 │ ··· 308 308 │ └ ◻ group2value0 309 309 └ 310 310 ", 311 - "", 312 - "", 313 - "", 311 + "<cursor.backward count=999><cursor.up count=11>", 312 + "<cursor.down count=1>", 313 + "<erase.down>", 314 314 "◇ foo 315 315 │ group1value0", 316 316 " 317 317 ", 318 - "[?25h", 318 + "<cursor.show>", 319 319 ] 320 320 `; 321 321 322 322 exports[`groupMultiselect (isCI = false) > initial values can be set 1`] = ` 323 323 [ 324 - "[?25l", 324 + "<cursor.hide>", 325 325 "│ 326 326 ◆ foo 327 327 │ ◻ group1 ··· 329 329 │ └ ◼ group1value1 330 330 └ 331 331 ", 332 - "", 333 - "", 334 - "", 332 + "<cursor.backward count=999><cursor.up count=6>", 333 + "<cursor.down count=1>", 334 + "<erase.down>", 335 335 "◇ foo 336 336 │ group1value1", 337 337 " 338 338 ", 339 - "[?25h", 339 + "<cursor.show>", 340 340 ] 341 341 `; 342 342 343 343 exports[`groupMultiselect (isCI = false) > renders error when nothing selected 1`] = ` 344 344 [ 345 - "[?25l", 345 + "<cursor.hide>", 346 346 "│ 347 347 ◆ foo 348 348 │ ◻ group1 ··· 350 350 │ └ ◻ group1value1 351 351 └ 352 352 ", 353 - "", 354 - "", 355 - "", 353 + "<cursor.backward count=999><cursor.up count=6>", 354 + "<cursor.down count=1>", 355 + "<erase.down>", 356 356 "▲ foo 357 357 │ ◻ group1 358 358 │ │ ◻ group1value0 ··· 360 360 └ Please select at least one option. 361 361 Press  space  to select,  enter  to submit 362 362 ", 363 - "", 364 - "", 365 - "", 363 + "<cursor.backward count=999><cursor.up count=7>", 364 + "<cursor.down count=1>", 365 + "<erase.down>", 366 366 "◆ foo 367 367 │ ◻ group1 368 368 │ │ ◻ group1value0 369 369 │ └ ◻ group1value1 370 370 └ 371 371 ", 372 - "", 373 - "", 374 - "", 372 + "<cursor.backward count=999><cursor.up count=6>", 373 + "<cursor.down count=3>", 374 + "<erase.line><cursor.left count=1>", 375 375 "│ │ ◼ group1value0", 376 - "", 377 - "", 378 - "", 379 - "", 376 + "<cursor.down count=3>", 377 + "<cursor.backward count=999><cursor.up count=6>", 378 + "<cursor.down count=1>", 379 + "<erase.down>", 380 380 "◇ foo 381 381 │ group1value0", 382 382 " 383 383 ", 384 - "[?25h", 384 + "<cursor.show>", 385 385 ] 386 386 `; 387 387 388 388 exports[`groupMultiselect (isCI = false) > renders message with options 1`] = ` 389 389 [ 390 - "[?25l", 390 + "<cursor.hide>", 391 391 "│ 392 392 ◆ foo 393 393 │ ◻ group1 ··· 397 397 │ └ ◻ group2value0 398 398 └ 399 399 ", 400 - "", 401 - "", 402 - "", 400 + "<cursor.backward count=999><cursor.up count=8>", 401 + "<cursor.down count=2>", 402 + "<erase.down>", 403 403 "│ ◻ group1 404 404 │ │ ◻ group1value0 405 405 │ └ ◻ group1value1 ··· 407 407 │ └ ◻ group2value0 408 408 └ 409 409 ", 410 - "", 411 - "", 412 - "", 410 + "<cursor.backward count=999><cursor.up count=8>", 411 + "<cursor.down count=3>", 412 + "<erase.line><cursor.left count=1>", 413 413 "│ │ ◼ group1value0", 414 - "", 415 - "", 416 - "", 417 - "", 414 + "<cursor.down count=5>", 415 + "<cursor.backward count=999><cursor.up count=8>", 416 + "<cursor.down count=1>", 417 + "<erase.down>", 418 418 "◇ foo 419 419 │ group1value0", 420 420 " 421 421 ", 422 - "[?25h", 422 + "<cursor.show>", 423 423 ] 424 424 `; 425 425 426 426 exports[`groupMultiselect (isCI = false) > selectableGroups = false > cannot select groups 1`] = ` 427 427 [ 428 - "[?25l", 428 + "<cursor.hide>", 429 429 "│ 430 430 ◆ foo 431 431 │  group1 ··· 433 433 │  ◻ group1value1 434 434 └ 435 435 ", 436 - "", 437 - "", 438 - "", 436 + "<cursor.backward count=999><cursor.up count=6>", 437 + "<cursor.down count=3>", 438 + "<erase.line><cursor.left count=1>", 439 439 "│  ◼ group1value0", 440 - "", 441 - "", 442 - "", 443 - "", 440 + "<cursor.down count=3>", 441 + "<cursor.backward count=999><cursor.up count=6>", 442 + "<cursor.down count=1>", 443 + "<erase.down>", 444 444 "◇ foo 445 445 │ group1value0", 446 446 " 447 447 ", 448 - "[?25h", 448 + "<cursor.show>", 449 449 ] 450 450 `; 451 451 452 452 exports[`groupMultiselect (isCI = false) > selectableGroups = false > selecting all members of group does not select group 1`] = ` 453 453 [ 454 - "[?25l", 454 + "<cursor.hide>", 455 455 "│ 456 456 ◆ foo 457 457 │  group1 ··· 459 459 │  ◻ group1value1 460 460 └ 461 461 ", 462 - "", 463 - "", 464 - "", 462 + "<cursor.backward count=999><cursor.up count=6>", 463 + "<cursor.down count=3>", 464 + "<erase.line><cursor.left count=1>", 465 465 "│  ◼ group1value0", 466 - "", 467 - "", 468 - "", 469 - "", 466 + "<cursor.down count=3>", 467 + "<cursor.backward count=999><cursor.up count=6>", 468 + "<cursor.down count=3>", 469 + "<erase.down>", 470 470 "│  ◼ group1value0 471 471 │  ◻ group1value1 472 472 └ 473 473 ", 474 - "", 475 - "", 476 - "", 474 + "<cursor.backward count=999><cursor.up count=6>", 475 + "<cursor.down count=4>", 476 + "<erase.line><cursor.left count=1>", 477 477 "│  ◼ group1value1", 478 - "", 479 - "", 480 - "", 481 - "", 478 + "<cursor.down count=2>", 479 + "<cursor.backward count=999><cursor.up count=6>", 480 + "<cursor.down count=1>", 481 + "<erase.down>", 482 482 "◇ foo 483 483 │ group1value0, group1value1", 484 484 " 485 485 ", 486 - "[?25h", 486 + "<cursor.show>", 487 487 ] 488 488 `; 489 489 490 490 exports[`groupMultiselect (isCI = false) > values can be non-primitive 1`] = ` 491 491 [ 492 - "[?25l", 492 + "<cursor.hide>", 493 493 "│ 494 494 ◆ foo 495 495 │ ◻ group1 ··· 497 497 │ └ ◻ value1 498 498 └ 499 499 ", 500 - "", 501 - "", 502 - "", 500 + "<cursor.backward count=999><cursor.up count=6>", 501 + "<cursor.down count=2>", 502 + "<erase.down>", 503 503 "│ ◻ group1 504 504 │ │ ◻ value0 505 505 │ └ ◻ value1 506 506 └ 507 507 ", 508 - "", 509 - "", 510 - "", 508 + "<cursor.backward count=999><cursor.up count=6>", 509 + "<cursor.down count=3>", 510 + "<erase.line><cursor.left count=1>", 511 511 "│ │ ◼ value0", 512 - "", 513 - "", 514 - "", 515 - "", 512 + "<cursor.down count=3>", 513 + "<cursor.backward count=999><cursor.up count=6>", 514 + "<cursor.down count=1>", 515 + "<erase.down>", 516 516 "◇ foo 517 517 │ value0", 518 518 " 519 519 ", 520 - "[?25h", 520 + "<cursor.show>", 521 521 ] 522 522 `; 523 523 524 524 exports[`groupMultiselect (isCI = true) > can deselect an option 1`] = ` 525 525 [ 526 - "[?25l", 526 + "<cursor.hide>", 527 527 "│ 528 528 ◆ foo 529 529 │ ◻ group1 ··· 531 531 │ └ ◻ group1value1 532 532 └ 533 533 ", 534 - "", 535 - "", 536 - "", 534 + "<cursor.backward count=999><cursor.up count=6>", 535 + "<cursor.down count=2>", 536 + "<erase.down>", 537 537 "│ ◻ group1 538 538 │ │ ◻ group1value0 539 539 │ └ ◻ group1value1 540 540 └ 541 541 ", 542 - "", 543 - "", 544 - "", 542 + "<cursor.backward count=999><cursor.up count=6>", 543 + "<cursor.down count=3>", 544 + "<erase.line><cursor.left count=1>", 545 545 "│ │ ◼ group1value0", 546 - "", 547 - "", 548 - "", 549 - "", 546 + "<cursor.down count=3>", 547 + "<cursor.backward count=999><cursor.up count=6>", 548 + "<cursor.down count=3>", 549 + "<erase.down>", 550 550 "│ │ ◼ group1value0 551 551 │ └ ◻ group1value1 552 552 └ 553 553 ", 554 - "", 555 - "", 556 - "", 554 + "<cursor.backward count=999><cursor.up count=6>", 555 + "<cursor.down count=2>", 556 + "<erase.down>", 557 557 "│ ◼ group1 558 558 │ │ ◼ group1value0 559 559 │ └ ◼ group1value1 560 560 └ 561 561 ", 562 - "", 563 - "", 564 - "", 562 + "<cursor.backward count=999><cursor.up count=6>", 563 + "<cursor.down count=2>", 564 + "<erase.down>", 565 565 "│ ◻ group1 566 566 │ │ ◼ group1value0 567 567 │ └ ◻ group1value1 568 568 └ 569 569 ", 570 - "", 571 - "", 572 - "", 570 + "<cursor.backward count=999><cursor.up count=6>", 571 + "<cursor.down count=1>", 572 + "<erase.down>", 573 573 "◇ foo 574 574 │ group1value0", 575 575 " 576 576 ", 577 - "[?25h", 577 + "<cursor.show>", 578 578 ] 579 579 `; 580 580 581 581 exports[`groupMultiselect (isCI = true) > can select a group 1`] = ` 582 582 [ 583 - "[?25l", 583 + "<cursor.hide>", 584 584 "│ 585 585 ◆ foo 586 586 │ ◻ group1 ··· 588 588 │ └ ◻ group1value1 589 589 └ 590 590 ", 591 - "", 592 - "", 593 - "", 591 + "<cursor.backward count=999><cursor.up count=6>", 592 + "<cursor.down count=2>", 593 + "<erase.down>", 594 594 "│ ◼ group1 595 595 │ │ ◼ group1value0 596 596 │ └ ◼ group1value1 597 597 └ 598 598 ", 599 - "", 600 - "", 601 - "", 599 + "<cursor.backward count=999><cursor.up count=6>", 600 + "<cursor.down count=1>", 601 + "<erase.down>", 602 602 "◇ foo 603 603 │ group1value0, group1value1", 604 604 " 605 605 ", 606 - "[?25h", 606 + "<cursor.show>", 607 607 ] 608 608 `; 609 609 610 610 exports[`groupMultiselect (isCI = true) > can select a group by selecting all members 1`] = ` 611 611 [ 612 - "[?25l", 612 + "<cursor.hide>", 613 613 "│ 614 614 ◆ foo 615 615 │ ◻ group1 ··· 617 617 │ └ ◻ group1value1 618 618 └ 619 619 ", 620 - "", 621 - "", 622 - "", 620 + "<cursor.backward count=999><cursor.up count=6>", 621 + "<cursor.down count=2>", 622 + "<erase.down>", 623 623 "│ ◻ group1 624 624 │ │ ◻ group1value0 625 625 │ └ ◻ group1value1 626 626 └ 627 627 ", 628 - "", 629 - "", 630 - "", 628 + "<cursor.backward count=999><cursor.up count=6>", 629 + "<cursor.down count=3>", 630 + "<erase.line><cursor.left count=1>", 631 631 "│ │ ◼ group1value0", 632 - "", 633 - "", 634 - "", 635 - "", 632 + "<cursor.down count=3>", 633 + "<cursor.backward count=999><cursor.up count=6>", 634 + "<cursor.down count=3>", 635 + "<erase.down>", 636 636 "│ │ ◼ group1value0 637 637 │ └ ◻ group1value1 638 638 └ 639 639 ", 640 - "", 641 - "", 642 - "", 640 + "<cursor.backward count=999><cursor.up count=6>", 641 + "<cursor.down count=2>", 642 + "<erase.down>", 643 643 "│ ◼ group1 644 644 │ │ ◼ group1value0 645 645 │ └ ◼ group1value1 646 646 └ 647 647 ", 648 - "", 649 - "", 650 - "", 648 + "<cursor.backward count=999><cursor.up count=6>", 649 + "<cursor.down count=1>", 650 + "<erase.down>", 651 651 "◇ foo 652 652 │ group1value0, group1value1", 653 653 " 654 654 ", 655 - "[?25h", 655 + "<cursor.show>", 656 656 ] 657 657 `; 658 658 659 659 exports[`groupMultiselect (isCI = true) > can select multiple options 1`] = ` 660 660 [ 661 - "[?25l", 661 + "<cursor.hide>", 662 662 "│ 663 663 ◆ foo 664 664 │ ◻ group1 ··· 667 667 │ └ ◻ group1value2 668 668 └ 669 669 ", 670 - "", 671 - "", 672 - "", 670 + "<cursor.backward count=999><cursor.up count=7>", 671 + "<cursor.down count=2>", 672 + "<erase.down>", 673 673 "│ ◻ group1 674 674 │ │ ◻ group1value0 675 675 │ │ ◻ group1value1 676 676 │ └ ◻ group1value2 677 677 └ 678 678 ", 679 - "", 680 - "", 681 - "", 679 + "<cursor.backward count=999><cursor.up count=7>", 680 + "<cursor.down count=3>", 681 + "<erase.line><cursor.left count=1>", 682 682 "│ │ ◼ group1value0", 683 - "", 684 - "", 685 - "", 686 - "", 683 + "<cursor.down count=4>", 684 + "<cursor.backward count=999><cursor.up count=7>", 685 + "<cursor.down count=3>", 686 + "<erase.down>", 687 687 "│ │ ◼ group1value0 688 688 │ │ ◻ group1value1 689 689 │ └ ◻ group1value2 690 690 └ 691 691 ", 692 - "", 693 - "", 694 - "", 692 + "<cursor.backward count=999><cursor.up count=7>", 693 + "<cursor.down count=4>", 694 + "<erase.line><cursor.left count=1>", 695 695 "│ │ ◼ group1value1", 696 - "", 697 - "", 698 - "", 699 - "", 696 + "<cursor.down count=3>", 697 + "<cursor.backward count=999><cursor.up count=7>", 698 + "<cursor.down count=1>", 699 + "<erase.down>", 700 700 "◇ foo 701 701 │ group1value0, group1value1", 702 702 " 703 703 ", 704 - "[?25h", 704 + "<cursor.show>", 705 705 ] 706 706 `; 707 707 708 708 exports[`groupMultiselect (isCI = true) > can submit empty selection when require = false 1`] = ` 709 709 [ 710 - "[?25l", 710 + "<cursor.hide>", 711 711 "│ 712 712 ◆ foo 713 713 │ ◻ group1 ··· 715 715 │ └ ◻ group1value1 716 716 └ 717 717 ", 718 - "", 719 - "", 720 - "", 718 + "<cursor.backward count=999><cursor.up count=6>", 719 + "<cursor.down count=1>", 720 + "<erase.down>", 721 721 "◇ foo 722 722 │", 723 723 " 724 724 ", 725 - "[?25h", 725 + "<cursor.show>", 726 726 ] 727 727 `; 728 728 729 729 exports[`groupMultiselect (isCI = true) > cursorAt sets initial selection 1`] = ` 730 730 [ 731 - "[?25l", 731 + "<cursor.hide>", 732 732 "│ 733 733 ◆ foo 734 734 │ ◻ group1 ··· 736 736 │ └ ◻ group1value1 737 737 └ 738 738 ", 739 - "", 740 - "", 741 - "", 739 + "<cursor.backward count=999><cursor.up count=6>", 740 + "<cursor.down count=4>", 741 + "<erase.line><cursor.left count=1>", 742 742 "│ └ ◼ group1value1", 743 - "", 744 - "", 745 - "", 746 - "", 743 + "<cursor.down count=2>", 744 + "<cursor.backward count=999><cursor.up count=6>", 745 + "<cursor.down count=1>", 746 + "<erase.down>", 747 747 "◇ foo 748 748 │ group1value1", 749 749 " 750 750 ", 751 - "[?25h", 751 + "<cursor.show>", 752 752 ] 753 753 `; 754 754 755 755 exports[`groupMultiselect (isCI = true) > groupSpacing > negative spacing is ignored 1`] = ` 756 756 [ 757 - "[?25l", 757 + "<cursor.hide>", 758 758 "│ 759 759 ◆ foo 760 760 │ ◻ group1 ··· 763 763 │ └ ◻ group2value0 764 764 └ 765 765 ", 766 - "", 767 - "", 768 - "", 766 + "<cursor.backward count=999><cursor.up count=7>", 767 + "<cursor.down count=2>", 768 + "<erase.down>", 769 769 "│ ◻ group1 770 770 │ └ ◻ group1value0 771 771 │ ◻ group2 772 772 │ └ ◻ group2value0 773 773 └ 774 774 ", 775 - "", 776 - "", 777 - "", 775 + "<cursor.backward count=999><cursor.up count=7>", 776 + "<cursor.down count=2>", 777 + "<erase.down>", 778 778 "│ ◼ group1 779 779 │ └ ◼ group1value0 780 780 │ ◻ group2 781 781 │ └ ◻ group2value0 782 782 └ 783 783 ", 784 - "", 785 - "", 786 - "", 784 + "<cursor.backward count=999><cursor.up count=7>", 785 + "<cursor.down count=1>", 786 + "<erase.down>", 787 787 "◇ foo 788 788 │ group1value0", 789 789 " 790 790 ", 791 - "[?25h", 791 + "<cursor.show>", 792 792 ] 793 793 `; 794 794 795 795 exports[`groupMultiselect (isCI = true) > groupSpacing > renders spaced groups 1`] = ` 796 796 [ 797 - "[?25l", 797 + "<cursor.hide>", 798 798 "│ 799 799 ◆ foo 800 800 │ ··· 807 807 │ └ ◻ group2value0 808 808 └ 809 809 ", 810 - "", 811 - "", 812 - "", 810 + "<cursor.backward count=999><cursor.up count=11>", 811 + "<cursor.down count=4>", 812 + "<erase.down>", 813 813 "│ ◻ group1 814 814 │ └ ◻ group1value0 815 815 │ ··· 818 818 │ └ ◻ group2value0 819 819 └ 820 820 ", 821 - "", 822 - "", 823 - "", 821 + "<cursor.backward count=999><cursor.up count=11>", 822 + "<cursor.down count=4>", 823 + "<erase.down>", 824 824 "│ ◼ group1 825 825 │ └ ◼ group1value0 826 826 │ ··· 829 829 │ └ ◻ group2value0 830 830 └ 831 831 ", 832 - "", 833 - "", 834 - "", 832 + "<cursor.backward count=999><cursor.up count=11>", 833 + "<cursor.down count=1>", 834 + "<erase.down>", 835 835 "◇ foo 836 836 │ group1value0", 837 837 " 838 838 ", 839 - "[?25h", 839 + "<cursor.show>", 840 840 ] 841 841 `; 842 842 843 843 exports[`groupMultiselect (isCI = true) > initial values can be set 1`] = ` 844 844 [ 845 - "[?25l", 845 + "<cursor.hide>", 846 846 "│ 847 847 ◆ foo 848 848 │ ◻ group1 ··· 850 850 │ └ ◼ group1value1 851 851 └ 852 852 ", 853 - "", 854 - "", 855 - "", 853 + "<cursor.backward count=999><cursor.up count=6>", 854 + "<cursor.down count=1>", 855 + "<erase.down>", 856 856 "◇ foo 857 857 │ group1value1", 858 858 " 859 859 ", 860 - "[?25h", 860 + "<cursor.show>", 861 861 ] 862 862 `; 863 863 864 864 exports[`groupMultiselect (isCI = true) > renders error when nothing selected 1`] = ` 865 865 [ 866 - "[?25l", 866 + "<cursor.hide>", 867 867 "│ 868 868 ◆ foo 869 869 │ ◻ group1 ··· 871 871 │ └ ◻ group1value1 872 872 └ 873 873 ", 874 - "", 875 - "", 876 - "", 874 + "<cursor.backward count=999><cursor.up count=6>", 875 + "<cursor.down count=1>", 876 + "<erase.down>", 877 877 "▲ foo 878 878 │ ◻ group1 879 879 │ │ ◻ group1value0 ··· 881 881 └ Please select at least one option. 882 882 Press  space  to select,  enter  to submit 883 883 ", 884 - "", 885 - "", 886 - "", 884 + "<cursor.backward count=999><cursor.up count=7>", 885 + "<cursor.down count=1>", 886 + "<erase.down>", 887 887 "◆ foo 888 888 │ ◻ group1 889 889 │ │ ◻ group1value0 890 890 │ └ ◻ group1value1 891 891 └ 892 892 ", 893 - "", 894 - "", 895 - "", 893 + "<cursor.backward count=999><cursor.up count=6>", 894 + "<cursor.down count=3>", 895 + "<erase.line><cursor.left count=1>", 896 896 "│ │ ◼ group1value0", 897 - "", 898 - "", 899 - "", 900 - "", 897 + "<cursor.down count=3>", 898 + "<cursor.backward count=999><cursor.up count=6>", 899 + "<cursor.down count=1>", 900 + "<erase.down>", 901 901 "◇ foo 902 902 │ group1value0", 903 903 " 904 904 ", 905 - "[?25h", 905 + "<cursor.show>", 906 906 ] 907 907 `; 908 908 909 909 exports[`groupMultiselect (isCI = true) > renders message with options 1`] = ` 910 910 [ 911 - "[?25l", 911 + "<cursor.hide>", 912 912 "│ 913 913 ◆ foo 914 914 │ ◻ group1 ··· 918 918 │ └ ◻ group2value0 919 919 └ 920 920 ", 921 - "", 922 - "", 923 - "", 921 + "<cursor.backward count=999><cursor.up count=8>", 922 + "<cursor.down count=2>", 923 + "<erase.down>", 924 924 "│ ◻ group1 925 925 │ │ ◻ group1value0 926 926 │ └ ◻ group1value1 ··· 928 928 │ └ ◻ group2value0 929 929 └ 930 930 ", 931 - "", 932 - "", 933 - "", 931 + "<cursor.backward count=999><cursor.up count=8>", 932 + "<cursor.down count=3>", 933 + "<erase.line><cursor.left count=1>", 934 934 "│ │ ◼ group1value0", 935 - "", 936 - "", 937 - "", 938 - "", 935 + "<cursor.down count=5>", 936 + "<cursor.backward count=999><cursor.up count=8>", 937 + "<cursor.down count=1>", 938 + "<erase.down>", 939 939 "◇ foo 940 940 │ group1value0", 941 941 " 942 942 ", 943 - "[?25h", 943 + "<cursor.show>", 944 944 ] 945 945 `; 946 946 947 947 exports[`groupMultiselect (isCI = true) > selectableGroups = false > cannot select groups 1`] = ` 948 948 [ 949 - "[?25l", 949 + "<cursor.hide>", 950 950 "│ 951 951 ◆ foo 952 952 │  group1 ··· 954 954 │  ◻ group1value1 955 955 └ 956 956 ", 957 - "", 958 - "", 959 - "", 957 + "<cursor.backward count=999><cursor.up count=6>", 958 + "<cursor.down count=3>", 959 + "<erase.line><cursor.left count=1>", 960 960 "│  ◼ group1value0", 961 - "", 962 - "", 963 - "", 964 - "", 961 + "<cursor.down count=3>", 962 + "<cursor.backward count=999><cursor.up count=6>", 963 + "<cursor.down count=1>", 964 + "<erase.down>", 965 965 "◇ foo 966 966 │ group1value0", 967 967 " 968 968 ", 969 - "[?25h", 969 + "<cursor.show>", 970 970 ] 971 971 `; 972 972 973 973 exports[`groupMultiselect (isCI = true) > selectableGroups = false > selecting all members of group does not select group 1`] = ` 974 974 [ 975 - "[?25l", 975 + "<cursor.hide>", 976 976 "│ 977 977 ◆ foo 978 978 │  group1 ··· 980 980 │  ◻ group1value1 981 981 └ 982 982 ", 983 - "", 984 - "", 985 - "", 983 + "<cursor.backward count=999><cursor.up count=6>", 984 + "<cursor.down count=3>", 985 + "<erase.line><cursor.left count=1>", 986 986 "│  ◼ group1value0", 987 - "", 988 - "", 989 - "", 990 - "", 987 + "<cursor.down count=3>", 988 + "<cursor.backward count=999><cursor.up count=6>", 989 + "<cursor.down count=3>", 990 + "<erase.down>", 991 991 "│  ◼ group1value0 992 992 │  ◻ group1value1 993 993 └ 994 994 ", 995 - "", 996 - "", 997 - "", 995 + "<cursor.backward count=999><cursor.up count=6>", 996 + "<cursor.down count=4>", 997 + "<erase.line><cursor.left count=1>", 998 998 "│  ◼ group1value1", 999 - "", 1000 - "", 1001 - "", 1002 - "", 999 + "<cursor.down count=2>", 1000 + "<cursor.backward count=999><cursor.up count=6>", 1001 + "<cursor.down count=1>", 1002 + "<erase.down>", 1003 1003 "◇ foo 1004 1004 │ group1value0, group1value1", 1005 1005 " 1006 1006 ", 1007 - "[?25h", 1007 + "<cursor.show>", 1008 1008 ] 1009 1009 `; 1010 1010 1011 1011 exports[`groupMultiselect (isCI = true) > values can be non-primitive 1`] = ` 1012 1012 [ 1013 - "[?25l", 1013 + "<cursor.hide>", 1014 1014 "│ 1015 1015 ◆ foo 1016 1016 │ ◻ group1 ··· 1018 1018 │ └ ◻ value1 1019 1019 └ 1020 1020 ", 1021 - "", 1022 - "", 1023 - "", 1021 + "<cursor.backward count=999><cursor.up count=6>", 1022 + "<cursor.down count=2>", 1023 + "<erase.down>", 1024 1024 "│ ◻ group1 1025 1025 │ │ ◻ value0 1026 1026 │ └ ◻ value1 1027 1027 └ 1028 1028 ", 1029 - "", 1030 - "", 1031 - "", 1029 + "<cursor.backward count=999><cursor.up count=6>", 1030 + "<cursor.down count=3>", 1031 + "<erase.line><cursor.left count=1>", 1032 1032 "│ │ ◼ value0", 1033 - "", 1034 - "", 1035 - "", 1036 - "", 1033 + "<cursor.down count=3>", 1034 + "<cursor.backward count=999><cursor.up count=6>", 1035 + "<cursor.down count=1>", 1036 + "<erase.down>", 1037 1037 "◇ foo 1038 1038 │ value0", 1039 1039 " 1040 1040 ", 1041 - "[?25h", 1041 + "<cursor.show>", 1042 1042 ] 1043 1043 `;
+384 -384
packages/prompts/test/__snapshots__/multi-select.test.ts.snap
··· 2 2 3 3 exports[`multiselect (isCI = false) > can cancel 1`] = ` 4 4 [ 5 - "[?25l", 5 + "<cursor.hide>", 6 6 "│ 7 7 ◆ foo 8 8 │ ◻ opt0 9 9 │ ◻ opt1 10 10 └ 11 11 ", 12 - "", 13 - "", 14 - "", 12 + "<cursor.backward count=999><cursor.up count=5>", 13 + "<cursor.down count=1>", 14 + "<erase.down>", 15 15 "■ foo 16 16 │", 17 17 " 18 18 ", 19 - "[?25h", 19 + "<cursor.show>", 20 20 ] 21 21 `; 22 22 23 23 exports[`multiselect (isCI = false) > can render option hints 1`] = ` 24 24 [ 25 - "[?25l", 25 + "<cursor.hide>", 26 26 "│ 27 27 ◆ foo 28 28 │ ◻ opt0 (Hint 0) 29 29 │ ◻ opt1 30 30 └ 31 31 ", 32 - "", 33 - "", 34 - "", 32 + "<cursor.backward count=999><cursor.up count=5>", 33 + "<cursor.down count=2>", 34 + "<erase.line><cursor.left count=1>", 35 35 "│ ◼ opt0 (Hint 0)", 36 - "", 37 - "", 38 - "", 39 - "", 36 + "<cursor.down count=3>", 37 + "<cursor.backward count=999><cursor.up count=5>", 38 + "<cursor.down count=1>", 39 + "<erase.down>", 40 40 "◇ foo 41 41 │ opt0", 42 42 " 43 43 ", 44 - "[?25h", 44 + "<cursor.show>", 45 45 ] 46 46 `; 47 47 48 48 exports[`multiselect (isCI = false) > can set cursorAt to preselect an option 1`] = ` 49 49 [ 50 - "[?25l", 50 + "<cursor.hide>", 51 51 "│ 52 52 ◆ foo 53 53 │ ◻ opt0 54 54 │ ◻ opt1 55 55 └ 56 56 ", 57 - "", 58 - "", 59 - "", 57 + "<cursor.backward count=999><cursor.up count=5>", 58 + "<cursor.down count=3>", 59 + "<erase.line><cursor.left count=1>", 60 60 "│ ◼ opt1", 61 - "", 62 - "", 63 - "", 64 - "", 61 + "<cursor.down count=2>", 62 + "<cursor.backward count=999><cursor.up count=5>", 63 + "<cursor.down count=1>", 64 + "<erase.down>", 65 65 "◇ foo 66 66 │ opt1", 67 67 " 68 68 ", 69 - "[?25h", 69 + "<cursor.show>", 70 70 ] 71 71 `; 72 72 73 73 exports[`multiselect (isCI = false) > can set custom labels 1`] = ` 74 74 [ 75 - "[?25l", 75 + "<cursor.hide>", 76 76 "│ 77 77 ◆ foo 78 78 │ ◻ Option 0 79 79 │ ◻ Option 1 80 80 └ 81 81 ", 82 - "", 83 - "", 84 - "", 82 + "<cursor.backward count=999><cursor.up count=5>", 83 + "<cursor.down count=2>", 84 + "<erase.line><cursor.left count=1>", 85 85 "│ ◼ Option 0", 86 - "", 87 - "", 88 - "", 89 - "", 86 + "<cursor.down count=3>", 87 + "<cursor.backward count=999><cursor.up count=5>", 88 + "<cursor.down count=1>", 89 + "<erase.down>", 90 90 "◇ foo 91 91 │ Option 0", 92 92 " 93 93 ", 94 - "[?25h", 94 + "<cursor.show>", 95 95 ] 96 96 `; 97 97 98 98 exports[`multiselect (isCI = false) > can set initial values 1`] = ` 99 99 [ 100 - "[?25l", 100 + "<cursor.hide>", 101 101 "│ 102 102 ◆ foo 103 103 │ ◻ opt0 104 104 │ ◼ opt1 105 105 └ 106 106 ", 107 - "", 108 - "", 109 - "", 107 + "<cursor.backward count=999><cursor.up count=5>", 108 + "<cursor.down count=1>", 109 + "<erase.down>", 110 110 "◇ foo 111 111 │ opt1", 112 112 " 113 113 ", 114 - "[?25h", 114 + "<cursor.show>", 115 115 ] 116 116 `; 117 117 118 118 exports[`multiselect (isCI = false) > can submit without selection when required = false 1`] = ` 119 119 [ 120 - "[?25l", 120 + "<cursor.hide>", 121 121 "│ 122 122 ◆ foo 123 123 │ ◻ opt0 124 124 │ ◻ opt1 125 125 └ 126 126 ", 127 - "", 128 - "", 129 - "", 127 + "<cursor.backward count=999><cursor.up count=5>", 128 + "<cursor.down count=1>", 129 + "<erase.down>", 130 130 "◇ foo 131 131 │ none", 132 132 " 133 133 ", 134 - "[?25h", 134 + "<cursor.show>", 135 135 ] 136 136 `; 137 137 138 138 exports[`multiselect (isCI = false) > maxItems renders a sliding window 1`] = ` 139 139 [ 140 - "[?25l", 140 + "<cursor.hide>", 141 141 "│ 142 142 ◆ foo 143 143 │ ◻ opt0 ··· 148 148 │ ... 149 149 └ 150 150 ", 151 - "", 152 - "", 153 - "", 151 + "<cursor.backward count=999><cursor.up count=9>", 152 + "<cursor.down count=2>", 153 + "<erase.down>", 154 154 "│ ◻ opt0 155 155 │ ◻ opt1 156 156 │ ◻ opt2 ··· 159 159 │ ... 160 160 └ 161 161 ", 162 - "", 163 - "", 164 - "", 162 + "<cursor.backward count=999><cursor.up count=9>", 163 + "<cursor.down count=3>", 164 + "<erase.down>", 165 165 "│ ◻ opt1 166 166 │ ◻ opt2 167 167 │ ◻ opt3 ··· 169 169 │ ... 170 170 └ 171 171 ", 172 - "", 173 - "", 174 - "", 172 + "<cursor.backward count=999><cursor.up count=9>", 173 + "<cursor.down count=4>", 174 + "<erase.down>", 175 175 "│ ◻ opt2 176 176 │ ◻ opt3 177 177 │ ◻ opt4 178 178 │ ... 179 179 └ 180 180 ", 181 - "", 182 - "", 183 - "", 181 + "<cursor.backward count=999><cursor.up count=9>", 182 + "<cursor.down count=2>", 183 + "<erase.down>", 184 184 "│ ... 185 185 │ ◻ opt2 186 186 │ ◻ opt3 ··· 189 189 │ ... 190 190 └ 191 191 ", 192 - "", 193 - "", 194 - "", 192 + "<cursor.backward count=999><cursor.up count=9>", 193 + "<cursor.down count=3>", 194 + "<erase.down>", 195 195 "│ ◻ opt3 196 196 │ ◻ opt4 197 197 │ ◻ opt5 ··· 199 199 │ ... 200 200 └ 201 201 ", 202 - "", 203 - "", 204 - "", 202 + "<cursor.backward count=999><cursor.up count=9>", 203 + "<cursor.down count=3>", 204 + "<erase.down>", 205 205 "│ ◻ opt4 206 206 │ ◻ opt5 207 207 │ ◻ opt6 ··· 209 209 │ ... 210 210 └ 211 211 ", 212 - "", 213 - "", 214 - "", 212 + "<cursor.backward count=999><cursor.up count=9>", 213 + "<cursor.down count=5>", 214 + "<erase.line><cursor.left count=1>", 215 215 "│ ◼ opt6", 216 - "", 217 - "", 218 - "", 219 - "", 216 + "<cursor.down count=4>", 217 + "<cursor.backward count=999><cursor.up count=9>", 218 + "<cursor.down count=1>", 219 + "<erase.down>", 220 220 "◇ foo 221 221 │ opt6", 222 222 " 223 223 ", 224 - "[?25h", 224 + "<cursor.show>", 225 225 ] 226 226 `; 227 227 228 228 exports[`multiselect (isCI = false) > renders message 1`] = ` 229 229 [ 230 - "[?25l", 230 + "<cursor.hide>", 231 231 "│ 232 232 ◆ foo 233 233 │ ◻ opt0 234 234 │ ◻ opt1 235 235 └ 236 236 ", 237 - "", 238 - "", 239 - "", 237 + "<cursor.backward count=999><cursor.up count=5>", 238 + "<cursor.down count=2>", 239 + "<erase.line><cursor.left count=1>", 240 240 "│ ◼ opt0", 241 - "", 242 - "", 243 - "", 244 - "", 241 + "<cursor.down count=3>", 242 + "<cursor.backward count=999><cursor.up count=5>", 243 + "<cursor.down count=1>", 244 + "<erase.down>", 245 245 "◇ foo 246 246 │ opt0", 247 247 " 248 248 ", 249 - "[?25h", 249 + "<cursor.show>", 250 250 ] 251 251 `; 252 252 253 253 exports[`multiselect (isCI = false) > renders multiple cancelled values 1`] = ` 254 254 [ 255 - "[?25l", 255 + "<cursor.hide>", 256 256 "│ 257 257 ◆ foo 258 258 │ ◻ opt0 ··· 260 260 │ ◻ opt2 261 261 └ 262 262 ", 263 - "", 264 - "", 265 - "", 263 + "<cursor.backward count=999><cursor.up count=6>", 264 + "<cursor.down count=2>", 265 + "<erase.line><cursor.left count=1>", 266 266 "│ ◼ opt0", 267 - "", 268 - "", 269 - "", 270 - "", 267 + "<cursor.down count=4>", 268 + "<cursor.backward count=999><cursor.up count=6>", 269 + "<cursor.down count=2>", 270 + "<erase.down>", 271 271 "│ ◼ opt0 272 272 │ ◻ opt1 273 273 │ ◻ opt2 274 274 └ 275 275 ", 276 - "", 277 - "", 278 - "", 276 + "<cursor.backward count=999><cursor.up count=6>", 277 + "<cursor.down count=3>", 278 + "<erase.line><cursor.left count=1>", 279 279 "│ ◼ opt1", 280 - "", 281 - "", 282 - "", 283 - "", 280 + "<cursor.down count=3>", 281 + "<cursor.backward count=999><cursor.up count=6>", 282 + "<cursor.down count=1>", 283 + "<erase.down>", 284 284 "■ foo 285 285 │ opt0, opt1 286 286 │", 287 287 " 288 288 ", 289 - "[?25h", 289 + "<cursor.show>", 290 290 ] 291 291 `; 292 292 293 293 exports[`multiselect (isCI = false) > renders multiple selected options 1`] = ` 294 294 [ 295 - "[?25l", 295 + "<cursor.hide>", 296 296 "│ 297 297 ◆ foo 298 298 │ ◻ opt0 ··· 300 300 │ ◻ opt2 301 301 └ 302 302 ", 303 - "", 304 - "", 305 - "", 303 + "<cursor.backward count=999><cursor.up count=6>", 304 + "<cursor.down count=2>", 305 + "<erase.line><cursor.left count=1>", 306 306 "│ ◼ opt0", 307 - "", 308 - "", 309 - "", 310 - "", 307 + "<cursor.down count=4>", 308 + "<cursor.backward count=999><cursor.up count=6>", 309 + "<cursor.down count=2>", 310 + "<erase.down>", 311 311 "│ ◼ opt0 312 312 │ ◻ opt1 313 313 │ ◻ opt2 314 314 └ 315 315 ", 316 - "", 317 - "", 318 - "", 316 + "<cursor.backward count=999><cursor.up count=6>", 317 + "<cursor.down count=3>", 318 + "<erase.line><cursor.left count=1>", 319 319 "│ ◼ opt1", 320 - "", 321 - "", 322 - "", 323 - "", 320 + "<cursor.down count=3>", 321 + "<cursor.backward count=999><cursor.up count=6>", 322 + "<cursor.down count=3>", 323 + "<erase.down>", 324 324 "│ ◼ opt1 325 325 │ ◻ opt2 326 326 └ 327 327 ", 328 - "", 329 - "", 330 - "", 328 + "<cursor.backward count=999><cursor.up count=6>", 329 + "<cursor.down count=1>", 330 + "<erase.down>", 331 331 "◇ foo 332 332 │ opt0, opt1", 333 333 " 334 334 ", 335 - "[?25h", 335 + "<cursor.show>", 336 336 ] 337 337 `; 338 338 339 339 exports[`multiselect (isCI = false) > renders validation errors 1`] = ` 340 340 [ 341 - "[?25l", 341 + "<cursor.hide>", 342 342 "│ 343 343 ◆ foo 344 344 │ ◻ opt0 345 345 │ ◻ opt1 346 346 └ 347 347 ", 348 - "", 349 - "", 350 - "", 348 + "<cursor.backward count=999><cursor.up count=5>", 349 + "<cursor.down count=1>", 350 + "<erase.down>", 351 351 "▲ foo 352 352 │ ◻ opt0 353 353 │ ◻ opt1 354 354 └ Please select at least one option. 355 355 Press  space  to select,  enter  to submit 356 356 ", 357 - "", 358 - "", 359 - "", 357 + "<cursor.backward count=999><cursor.up count=6>", 358 + "<cursor.down count=1>", 359 + "<erase.down>", 360 360 "◆ foo 361 361 │ ◼ opt0 362 362 │ ◻ opt1 363 363 └ 364 364 ", 365 - "", 366 - "", 367 - "", 365 + "<cursor.backward count=999><cursor.up count=5>", 366 + "<cursor.down count=1>", 367 + "<erase.down>", 368 368 "◇ foo 369 369 │ opt0", 370 370 " 371 371 ", 372 - "[?25h", 372 + "<cursor.show>", 373 373 ] 374 374 `; 375 375 376 376 exports[`multiselect (isCI = false) > shows hints for all selected options 1`] = ` 377 377 [ 378 - "[?25l", 378 + "<cursor.hide>", 379 379 "│ 380 380 ◆ foo 381 381 │ ◼ opt0 (Hint 0) ··· 383 383 │ ◻ opt2 384 384 └ 385 385 ", 386 - "", 387 - "", 388 - "", 386 + "<cursor.backward count=999><cursor.up count=6>", 387 + "<cursor.down count=2>", 388 + "<erase.down>", 389 389 "│ ◼ opt0 (Hint 0) 390 390 │ ◼ opt1 (Hint 1) 391 391 │ ◻ opt2 392 392 └ 393 393 ", 394 - "", 395 - "", 396 - "", 394 + "<cursor.backward count=999><cursor.up count=6>", 395 + "<cursor.down count=3>", 396 + "<erase.down>", 397 397 "│ ◼ opt1 (Hint 1) 398 398 │ ◻ opt2 (Hint 2) 399 399 └ 400 400 ", 401 - "", 402 - "", 403 - "", 401 + "<cursor.backward count=999><cursor.up count=6>", 402 + "<cursor.down count=1>", 403 + "<erase.down>", 404 404 "◇ foo 405 405 │ opt0, opt1", 406 406 " 407 407 ", 408 - "[?25h", 408 + "<cursor.show>", 409 409 ] 410 410 `; 411 411 412 412 exports[`multiselect (isCI = false) > sliding window loops downwards 1`] = ` 413 413 [ 414 - "[?25l", 414 + "<cursor.hide>", 415 415 "│ 416 416 ◆ foo 417 417 │ ◻ opt0 ··· 422 422 │ ... 423 423 └ 424 424 ", 425 - "", 426 - "", 427 - "", 425 + "<cursor.backward count=999><cursor.up count=9>", 426 + "<cursor.down count=2>", 427 + "<erase.down>", 428 428 "│ ◻ opt0 429 429 │ ◻ opt1 430 430 │ ◻ opt2 ··· 433 433 │ ... 434 434 └ 435 435 ", 436 - "", 437 - "", 438 - "", 436 + "<cursor.backward count=999><cursor.up count=9>", 437 + "<cursor.down count=3>", 438 + "<erase.down>", 439 439 "│ ◻ opt1 440 440 │ ◻ opt2 441 441 │ ◻ opt3 ··· 443 443 │ ... 444 444 └ 445 445 ", 446 - "", 447 - "", 448 - "", 446 + "<cursor.backward count=999><cursor.up count=9>", 447 + "<cursor.down count=4>", 448 + "<erase.down>", 449 449 "│ ◻ opt2 450 450 │ ◻ opt3 451 451 │ ◻ opt4 452 452 │ ... 453 453 └ 454 454 ", 455 - "", 456 - "", 457 - "", 455 + "<cursor.backward count=999><cursor.up count=9>", 456 + "<cursor.down count=2>", 457 + "<erase.down>", 458 458 "│ ... 459 459 │ ◻ opt2 460 460 │ ◻ opt3 ··· 463 463 │ ... 464 464 └ 465 465 ", 466 - "", 467 - "", 468 - "", 466 + "<cursor.backward count=999><cursor.up count=9>", 467 + "<cursor.down count=3>", 468 + "<erase.down>", 469 469 "│ ◻ opt3 470 470 │ ◻ opt4 471 471 │ ◻ opt5 ··· 473 473 │ ... 474 474 └ 475 475 ", 476 - "", 477 - "", 478 - "", 476 + "<cursor.backward count=999><cursor.up count=9>", 477 + "<cursor.down count=3>", 478 + "<erase.down>", 479 479 "│ ◻ opt4 480 480 │ ◻ opt5 481 481 │ ◻ opt6 ··· 483 483 │ ... 484 484 └ 485 485 ", 486 - "", 487 - "", 488 - "", 486 + "<cursor.backward count=999><cursor.up count=9>", 487 + "<cursor.down count=3>", 488 + "<erase.down>", 489 489 "│ ◻ opt5 490 490 │ ◻ opt6 491 491 │ ◻ opt7 ··· 493 493 │ ... 494 494 └ 495 495 ", 496 - "", 497 - "", 498 - "", 496 + "<cursor.backward count=999><cursor.up count=9>", 497 + "<cursor.down count=3>", 498 + "<erase.down>", 499 499 "│ ◻ opt6 500 500 │ ◻ opt7 501 501 │ ◻ opt8 ··· 503 503 │ ... 504 504 └ 505 505 ", 506 - "", 507 - "", 508 - "", 506 + "<cursor.backward count=999><cursor.up count=9>", 507 + "<cursor.down count=3>", 508 + "<erase.down>", 509 509 "│ ◻ opt7 510 510 │ ◻ opt8 511 511 │ ◻ opt9 ··· 513 513 │ ◻ opt11 514 514 └ 515 515 ", 516 - "", 517 - "", 518 - "", 516 + "<cursor.backward count=999><cursor.up count=9>", 517 + "<cursor.down count=5>", 518 + "<erase.down>", 519 519 "│ ◻ opt9 520 520 │ ◻ opt10 521 521 │ ◻ opt11 522 522 └ 523 523 ", 524 - "", 525 - "", 526 - "", 524 + "<cursor.backward count=999><cursor.up count=9>", 525 + "<cursor.down count=6>", 526 + "<erase.down>", 527 527 "│ ◻ opt10 528 528 │ ◻ opt11 529 529 └ 530 530 ", 531 - "", 532 - "", 533 - "", 531 + "<cursor.backward count=999><cursor.up count=9>", 532 + "<cursor.down count=2>", 533 + "<erase.down>", 534 534 "│ ◻ opt0 535 535 │ ◻ opt1 536 536 │ ◻ opt2 ··· 539 539 │ ... 540 540 └ 541 541 ", 542 - "", 543 - "", 544 - "", 542 + "<cursor.backward count=999><cursor.up count=9>", 543 + "<cursor.down count=2>", 544 + "<erase.line><cursor.left count=1>", 545 545 "│ ◼ opt0", 546 - "", 547 - "", 548 - "", 549 - "", 546 + "<cursor.down count=7>", 547 + "<cursor.backward count=999><cursor.up count=9>", 548 + "<cursor.down count=1>", 549 + "<erase.down>", 550 550 "◇ foo 551 551 │ opt0", 552 552 " 553 553 ", 554 - "[?25h", 554 + "<cursor.show>", 555 555 ] 556 556 `; 557 557 558 558 exports[`multiselect (isCI = false) > sliding window loops upwards 1`] = ` 559 559 [ 560 - "[?25l", 560 + "<cursor.hide>", 561 561 "│ 562 562 ◆ foo 563 563 │ ◻ opt0 ··· 568 568 │ ... 569 569 └ 570 570 ", 571 - "", 572 - "", 573 - "", 571 + "<cursor.backward count=999><cursor.up count=9>", 572 + "<cursor.down count=2>", 573 + "<erase.down>", 574 574 "│ ... 575 575 │ ◻ opt7 576 576 │ ◻ opt8 ··· 579 579 │ ◻ opt11 580 580 └ 581 581 ", 582 - "", 583 - "", 584 - "", 582 + "<cursor.backward count=999><cursor.up count=9>", 583 + "<cursor.down count=7>", 584 + "<erase.line><cursor.left count=1>", 585 585 "│ ◼ opt11", 586 - "", 587 - "", 588 - "", 589 - "", 586 + "<cursor.down count=2>", 587 + "<cursor.backward count=999><cursor.up count=9>", 588 + "<cursor.down count=1>", 589 + "<erase.down>", 590 590 "◇ foo 591 591 │ opt11", 592 592 " 593 593 ", 594 - "[?25h", 594 + "<cursor.show>", 595 595 ] 596 596 `; 597 597 598 598 exports[`multiselect (isCI = true) > can cancel 1`] = ` 599 599 [ 600 - "[?25l", 600 + "<cursor.hide>", 601 601 "│ 602 602 ◆ foo 603 603 │ ◻ opt0 604 604 │ ◻ opt1 605 605 └ 606 606 ", 607 - "", 608 - "", 609 - "", 607 + "<cursor.backward count=999><cursor.up count=5>", 608 + "<cursor.down count=1>", 609 + "<erase.down>", 610 610 "■ foo 611 611 │", 612 612 " 613 613 ", 614 - "[?25h", 614 + "<cursor.show>", 615 615 ] 616 616 `; 617 617 618 618 exports[`multiselect (isCI = true) > can render option hints 1`] = ` 619 619 [ 620 - "[?25l", 620 + "<cursor.hide>", 621 621 "│ 622 622 ◆ foo 623 623 │ ◻ opt0 (Hint 0) 624 624 │ ◻ opt1 625 625 └ 626 626 ", 627 - "", 628 - "", 629 - "", 627 + "<cursor.backward count=999><cursor.up count=5>", 628 + "<cursor.down count=2>", 629 + "<erase.line><cursor.left count=1>", 630 630 "│ ◼ opt0 (Hint 0)", 631 - "", 632 - "", 633 - "", 634 - "", 631 + "<cursor.down count=3>", 632 + "<cursor.backward count=999><cursor.up count=5>", 633 + "<cursor.down count=1>", 634 + "<erase.down>", 635 635 "◇ foo 636 636 │ opt0", 637 637 " 638 638 ", 639 - "[?25h", 639 + "<cursor.show>", 640 640 ] 641 641 `; 642 642 643 643 exports[`multiselect (isCI = true) > can set cursorAt to preselect an option 1`] = ` 644 644 [ 645 - "[?25l", 645 + "<cursor.hide>", 646 646 "│ 647 647 ◆ foo 648 648 │ ◻ opt0 649 649 │ ◻ opt1 650 650 └ 651 651 ", 652 - "", 653 - "", 654 - "", 652 + "<cursor.backward count=999><cursor.up count=5>", 653 + "<cursor.down count=3>", 654 + "<erase.line><cursor.left count=1>", 655 655 "│ ◼ opt1", 656 - "", 657 - "", 658 - "", 659 - "", 656 + "<cursor.down count=2>", 657 + "<cursor.backward count=999><cursor.up count=5>", 658 + "<cursor.down count=1>", 659 + "<erase.down>", 660 660 "◇ foo 661 661 │ opt1", 662 662 " 663 663 ", 664 - "[?25h", 664 + "<cursor.show>", 665 665 ] 666 666 `; 667 667 668 668 exports[`multiselect (isCI = true) > can set custom labels 1`] = ` 669 669 [ 670 - "[?25l", 670 + "<cursor.hide>", 671 671 "│ 672 672 ◆ foo 673 673 │ ◻ Option 0 674 674 │ ◻ Option 1 675 675 └ 676 676 ", 677 - "", 678 - "", 679 - "", 677 + "<cursor.backward count=999><cursor.up count=5>", 678 + "<cursor.down count=2>", 679 + "<erase.line><cursor.left count=1>", 680 680 "│ ◼ Option 0", 681 - "", 682 - "", 683 - "", 684 - "", 681 + "<cursor.down count=3>", 682 + "<cursor.backward count=999><cursor.up count=5>", 683 + "<cursor.down count=1>", 684 + "<erase.down>", 685 685 "◇ foo 686 686 │ Option 0", 687 687 " 688 688 ", 689 - "[?25h", 689 + "<cursor.show>", 690 690 ] 691 691 `; 692 692 693 693 exports[`multiselect (isCI = true) > can set initial values 1`] = ` 694 694 [ 695 - "[?25l", 695 + "<cursor.hide>", 696 696 "│ 697 697 ◆ foo 698 698 │ ◻ opt0 699 699 │ ◼ opt1 700 700 └ 701 701 ", 702 - "", 703 - "", 704 - "", 702 + "<cursor.backward count=999><cursor.up count=5>", 703 + "<cursor.down count=1>", 704 + "<erase.down>", 705 705 "◇ foo 706 706 │ opt1", 707 707 " 708 708 ", 709 - "[?25h", 709 + "<cursor.show>", 710 710 ] 711 711 `; 712 712 713 713 exports[`multiselect (isCI = true) > can submit without selection when required = false 1`] = ` 714 714 [ 715 - "[?25l", 715 + "<cursor.hide>", 716 716 "│ 717 717 ◆ foo 718 718 │ ◻ opt0 719 719 │ ◻ opt1 720 720 └ 721 721 ", 722 - "", 723 - "", 724 - "", 722 + "<cursor.backward count=999><cursor.up count=5>", 723 + "<cursor.down count=1>", 724 + "<erase.down>", 725 725 "◇ foo 726 726 │ none", 727 727 " 728 728 ", 729 - "[?25h", 729 + "<cursor.show>", 730 730 ] 731 731 `; 732 732 733 733 exports[`multiselect (isCI = true) > maxItems renders a sliding window 1`] = ` 734 734 [ 735 - "[?25l", 735 + "<cursor.hide>", 736 736 "│ 737 737 ◆ foo 738 738 │ ◻ opt0 ··· 743 743 │ ... 744 744 └ 745 745 ", 746 - "", 747 - "", 748 - "", 746 + "<cursor.backward count=999><cursor.up count=9>", 747 + "<cursor.down count=2>", 748 + "<erase.down>", 749 749 "│ ◻ opt0 750 750 │ ◻ opt1 751 751 │ ◻ opt2 ··· 754 754 │ ... 755 755 └ 756 756 ", 757 - "", 758 - "", 759 - "", 757 + "<cursor.backward count=999><cursor.up count=9>", 758 + "<cursor.down count=3>", 759 + "<erase.down>", 760 760 "│ ◻ opt1 761 761 │ ◻ opt2 762 762 │ ◻ opt3 ··· 764 764 │ ... 765 765 └ 766 766 ", 767 - "", 768 - "", 769 - "", 767 + "<cursor.backward count=999><cursor.up count=9>", 768 + "<cursor.down count=4>", 769 + "<erase.down>", 770 770 "│ ◻ opt2 771 771 │ ◻ opt3 772 772 │ ◻ opt4 773 773 │ ... 774 774 └ 775 775 ", 776 - "", 777 - "", 778 - "", 776 + "<cursor.backward count=999><cursor.up count=9>", 777 + "<cursor.down count=2>", 778 + "<erase.down>", 779 779 "│ ... 780 780 │ ◻ opt2 781 781 │ ◻ opt3 ··· 784 784 │ ... 785 785 └ 786 786 ", 787 - "", 788 - "", 789 - "", 787 + "<cursor.backward count=999><cursor.up count=9>", 788 + "<cursor.down count=3>", 789 + "<erase.down>", 790 790 "│ ◻ opt3 791 791 │ ◻ opt4 792 792 │ ◻ opt5 ··· 794 794 │ ... 795 795 └ 796 796 ", 797 - "", 798 - "", 799 - "", 797 + "<cursor.backward count=999><cursor.up count=9>", 798 + "<cursor.down count=3>", 799 + "<erase.down>", 800 800 "│ ◻ opt4 801 801 │ ◻ opt5 802 802 │ ◻ opt6 ··· 804 804 │ ... 805 805 └ 806 806 ", 807 - "", 808 - "", 809 - "", 807 + "<cursor.backward count=999><cursor.up count=9>", 808 + "<cursor.down count=5>", 809 + "<erase.line><cursor.left count=1>", 810 810 "│ ◼ opt6", 811 - "", 812 - "", 813 - "", 814 - "", 811 + "<cursor.down count=4>", 812 + "<cursor.backward count=999><cursor.up count=9>", 813 + "<cursor.down count=1>", 814 + "<erase.down>", 815 815 "◇ foo 816 816 │ opt6", 817 817 " 818 818 ", 819 - "[?25h", 819 + "<cursor.show>", 820 820 ] 821 821 `; 822 822 823 823 exports[`multiselect (isCI = true) > renders message 1`] = ` 824 824 [ 825 - "[?25l", 825 + "<cursor.hide>", 826 826 "│ 827 827 ◆ foo 828 828 │ ◻ opt0 829 829 │ ◻ opt1 830 830 └ 831 831 ", 832 - "", 833 - "", 834 - "", 832 + "<cursor.backward count=999><cursor.up count=5>", 833 + "<cursor.down count=2>", 834 + "<erase.line><cursor.left count=1>", 835 835 "│ ◼ opt0", 836 - "", 837 - "", 838 - "", 839 - "", 836 + "<cursor.down count=3>", 837 + "<cursor.backward count=999><cursor.up count=5>", 838 + "<cursor.down count=1>", 839 + "<erase.down>", 840 840 "◇ foo 841 841 │ opt0", 842 842 " 843 843 ", 844 - "[?25h", 844 + "<cursor.show>", 845 845 ] 846 846 `; 847 847 848 848 exports[`multiselect (isCI = true) > renders multiple cancelled values 1`] = ` 849 849 [ 850 - "[?25l", 850 + "<cursor.hide>", 851 851 "│ 852 852 ◆ foo 853 853 │ ◻ opt0 ··· 855 855 │ ◻ opt2 856 856 └ 857 857 ", 858 - "", 859 - "", 860 - "", 858 + "<cursor.backward count=999><cursor.up count=6>", 859 + "<cursor.down count=2>", 860 + "<erase.line><cursor.left count=1>", 861 861 "│ ◼ opt0", 862 - "", 863 - "", 864 - "", 865 - "", 862 + "<cursor.down count=4>", 863 + "<cursor.backward count=999><cursor.up count=6>", 864 + "<cursor.down count=2>", 865 + "<erase.down>", 866 866 "│ ◼ opt0 867 867 │ ◻ opt1 868 868 │ ◻ opt2 869 869 └ 870 870 ", 871 - "", 872 - "", 873 - "", 871 + "<cursor.backward count=999><cursor.up count=6>", 872 + "<cursor.down count=3>", 873 + "<erase.line><cursor.left count=1>", 874 874 "│ ◼ opt1", 875 - "", 876 - "", 877 - "", 878 - "", 875 + "<cursor.down count=3>", 876 + "<cursor.backward count=999><cursor.up count=6>", 877 + "<cursor.down count=1>", 878 + "<erase.down>", 879 879 "■ foo 880 880 │ opt0, opt1 881 881 │", 882 882 " 883 883 ", 884 - "[?25h", 884 + "<cursor.show>", 885 885 ] 886 886 `; 887 887 888 888 exports[`multiselect (isCI = true) > renders multiple selected options 1`] = ` 889 889 [ 890 - "[?25l", 890 + "<cursor.hide>", 891 891 "│ 892 892 ◆ foo 893 893 │ ◻ opt0 ··· 895 895 │ ◻ opt2 896 896 └ 897 897 ", 898 - "", 899 - "", 900 - "", 898 + "<cursor.backward count=999><cursor.up count=6>", 899 + "<cursor.down count=2>", 900 + "<erase.line><cursor.left count=1>", 901 901 "│ ◼ opt0", 902 - "", 903 - "", 904 - "", 905 - "", 902 + "<cursor.down count=4>", 903 + "<cursor.backward count=999><cursor.up count=6>", 904 + "<cursor.down count=2>", 905 + "<erase.down>", 906 906 "│ ◼ opt0 907 907 │ ◻ opt1 908 908 │ ◻ opt2 909 909 └ 910 910 ", 911 - "", 912 - "", 913 - "", 911 + "<cursor.backward count=999><cursor.up count=6>", 912 + "<cursor.down count=3>", 913 + "<erase.line><cursor.left count=1>", 914 914 "│ ◼ opt1", 915 - "", 916 - "", 917 - "", 918 - "", 915 + "<cursor.down count=3>", 916 + "<cursor.backward count=999><cursor.up count=6>", 917 + "<cursor.down count=3>", 918 + "<erase.down>", 919 919 "│ ◼ opt1 920 920 │ ◻ opt2 921 921 └ 922 922 ", 923 - "", 924 - "", 925 - "", 923 + "<cursor.backward count=999><cursor.up count=6>", 924 + "<cursor.down count=1>", 925 + "<erase.down>", 926 926 "◇ foo 927 927 │ opt0, opt1", 928 928 " 929 929 ", 930 - "[?25h", 930 + "<cursor.show>", 931 931 ] 932 932 `; 933 933 934 934 exports[`multiselect (isCI = true) > renders validation errors 1`] = ` 935 935 [ 936 - "[?25l", 936 + "<cursor.hide>", 937 937 "│ 938 938 ◆ foo 939 939 │ ◻ opt0 940 940 │ ◻ opt1 941 941 └ 942 942 ", 943 - "", 944 - "", 945 - "", 943 + "<cursor.backward count=999><cursor.up count=5>", 944 + "<cursor.down count=1>", 945 + "<erase.down>", 946 946 "▲ foo 947 947 │ ◻ opt0 948 948 │ ◻ opt1 949 949 └ Please select at least one option. 950 950 Press  space  to select,  enter  to submit 951 951 ", 952 - "", 953 - "", 954 - "", 952 + "<cursor.backward count=999><cursor.up count=6>", 953 + "<cursor.down count=1>", 954 + "<erase.down>", 955 955 "◆ foo 956 956 │ ◼ opt0 957 957 │ ◻ opt1 958 958 └ 959 959 ", 960 - "", 961 - "", 962 - "", 960 + "<cursor.backward count=999><cursor.up count=5>", 961 + "<cursor.down count=1>", 962 + "<erase.down>", 963 963 "◇ foo 964 964 │ opt0", 965 965 " 966 966 ", 967 - "[?25h", 967 + "<cursor.show>", 968 968 ] 969 969 `; 970 970 971 971 exports[`multiselect (isCI = true) > shows hints for all selected options 1`] = ` 972 972 [ 973 - "[?25l", 973 + "<cursor.hide>", 974 974 "│ 975 975 ◆ foo 976 976 │ ◼ opt0 (Hint 0) ··· 978 978 │ ◻ opt2 979 979 └ 980 980 ", 981 - "", 982 - "", 983 - "", 981 + "<cursor.backward count=999><cursor.up count=6>", 982 + "<cursor.down count=2>", 983 + "<erase.down>", 984 984 "│ ◼ opt0 (Hint 0) 985 985 │ ◼ opt1 (Hint 1) 986 986 │ ◻ opt2 987 987 └ 988 988 ", 989 - "", 990 - "", 991 - "", 989 + "<cursor.backward count=999><cursor.up count=6>", 990 + "<cursor.down count=3>", 991 + "<erase.down>", 992 992 "│ ◼ opt1 (Hint 1) 993 993 │ ◻ opt2 (Hint 2) 994 994 └ 995 995 ", 996 - "", 997 - "", 998 - "", 996 + "<cursor.backward count=999><cursor.up count=6>", 997 + "<cursor.down count=1>", 998 + "<erase.down>", 999 999 "◇ foo 1000 1000 │ opt0, opt1", 1001 1001 " 1002 1002 ", 1003 - "[?25h", 1003 + "<cursor.show>", 1004 1004 ] 1005 1005 `; 1006 1006 1007 1007 exports[`multiselect (isCI = true) > sliding window loops downwards 1`] = ` 1008 1008 [ 1009 - "[?25l", 1009 + "<cursor.hide>", 1010 1010 "│ 1011 1011 ◆ foo 1012 1012 │ ◻ opt0 ··· 1017 1017 │ ... 1018 1018 └ 1019 1019 ", 1020 - "", 1021 - "", 1022 - "", 1020 + "<cursor.backward count=999><cursor.up count=9>", 1021 + "<cursor.down count=2>", 1022 + "<erase.down>", 1023 1023 "│ ◻ opt0 1024 1024 │ ◻ opt1 1025 1025 │ ◻ opt2 ··· 1028 1028 │ ... 1029 1029 └ 1030 1030 ", 1031 - "", 1032 - "", 1033 - "", 1031 + "<cursor.backward count=999><cursor.up count=9>", 1032 + "<cursor.down count=3>", 1033 + "<erase.down>", 1034 1034 "│ ◻ opt1 1035 1035 │ ◻ opt2 1036 1036 │ ◻ opt3 ··· 1038 1038 │ ... 1039 1039 └ 1040 1040 ", 1041 - "", 1042 - "", 1043 - "", 1041 + "<cursor.backward count=999><cursor.up count=9>", 1042 + "<cursor.down count=4>", 1043 + "<erase.down>", 1044 1044 "│ ◻ opt2 1045 1045 │ ◻ opt3 1046 1046 │ ◻ opt4 1047 1047 │ ... 1048 1048 └ 1049 1049 ", 1050 - "", 1051 - "", 1052 - "", 1050 + "<cursor.backward count=999><cursor.up count=9>", 1051 + "<cursor.down count=2>", 1052 + "<erase.down>", 1053 1053 "│ ... 1054 1054 │ ◻ opt2 1055 1055 │ ◻ opt3 ··· 1058 1058 │ ... 1059 1059 └ 1060 1060 ", 1061 - "", 1062 - "", 1063 - "", 1061 + "<cursor.backward count=999><cursor.up count=9>", 1062 + "<cursor.down count=3>", 1063 + "<erase.down>", 1064 1064 "│ ◻ opt3 1065 1065 │ ◻ opt4 1066 1066 │ ◻ opt5 ··· 1068 1068 │ ... 1069 1069 └ 1070 1070 ", 1071 - "", 1072 - "", 1073 - "", 1071 + "<cursor.backward count=999><cursor.up count=9>", 1072 + "<cursor.down count=3>", 1073 + "<erase.down>", 1074 1074 "│ ◻ opt4 1075 1075 │ ◻ opt5 1076 1076 │ ◻ opt6 ··· 1078 1078 │ ... 1079 1079 └ 1080 1080 ", 1081 - "", 1082 - "", 1083 - "", 1081 + "<cursor.backward count=999><cursor.up count=9>", 1082 + "<cursor.down count=3>", 1083 + "<erase.down>", 1084 1084 "│ ◻ opt5 1085 1085 │ ◻ opt6 1086 1086 │ ◻ opt7 ··· 1088 1088 │ ... 1089 1089 └ 1090 1090 ", 1091 - "", 1092 - "", 1093 - "", 1091 + "<cursor.backward count=999><cursor.up count=9>", 1092 + "<cursor.down count=3>", 1093 + "<erase.down>", 1094 1094 "│ ◻ opt6 1095 1095 │ ◻ opt7 1096 1096 │ ◻ opt8 ··· 1098 1098 │ ... 1099 1099 └ 1100 1100 ", 1101 - "", 1102 - "", 1103 - "", 1101 + "<cursor.backward count=999><cursor.up count=9>", 1102 + "<cursor.down count=3>", 1103 + "<erase.down>", 1104 1104 "│ ◻ opt7 1105 1105 │ ◻ opt8 1106 1106 │ ◻ opt9 ··· 1108 1108 │ ◻ opt11 1109 1109 └ 1110 1110 ", 1111 - "", 1112 - "", 1113 - "", 1111 + "<cursor.backward count=999><cursor.up count=9>", 1112 + "<cursor.down count=5>", 1113 + "<erase.down>", 1114 1114 "│ ◻ opt9 1115 1115 │ ◻ opt10 1116 1116 │ ◻ opt11 1117 1117 └ 1118 1118 ", 1119 - "", 1120 - "", 1121 - "", 1119 + "<cursor.backward count=999><cursor.up count=9>", 1120 + "<cursor.down count=6>", 1121 + "<erase.down>", 1122 1122 "│ ◻ opt10 1123 1123 │ ◻ opt11 1124 1124 └ 1125 1125 ", 1126 - "", 1127 - "", 1128 - "", 1126 + "<cursor.backward count=999><cursor.up count=9>", 1127 + "<cursor.down count=2>", 1128 + "<erase.down>", 1129 1129 "│ ◻ opt0 1130 1130 │ ◻ opt1 1131 1131 │ ◻ opt2 ··· 1134 1134 │ ... 1135 1135 └ 1136 1136 ", 1137 - "", 1138 - "", 1139 - "", 1137 + "<cursor.backward count=999><cursor.up count=9>", 1138 + "<cursor.down count=2>", 1139 + "<erase.line><cursor.left count=1>", 1140 1140 "│ ◼ opt0", 1141 - "", 1142 - "", 1143 - "", 1144 - "", 1141 + "<cursor.down count=7>", 1142 + "<cursor.backward count=999><cursor.up count=9>", 1143 + "<cursor.down count=1>", 1144 + "<erase.down>", 1145 1145 "◇ foo 1146 1146 │ opt0", 1147 1147 " 1148 1148 ", 1149 - "[?25h", 1149 + "<cursor.show>", 1150 1150 ] 1151 1151 `; 1152 1152 1153 1153 exports[`multiselect (isCI = true) > sliding window loops upwards 1`] = ` 1154 1154 [ 1155 - "[?25l", 1155 + "<cursor.hide>", 1156 1156 "│ 1157 1157 ◆ foo 1158 1158 │ ◻ opt0 ··· 1163 1163 │ ... 1164 1164 └ 1165 1165 ", 1166 - "", 1167 - "", 1168 - "", 1166 + "<cursor.backward count=999><cursor.up count=9>", 1167 + "<cursor.down count=2>", 1168 + "<erase.down>", 1169 1169 "│ ... 1170 1170 │ ◻ opt7 1171 1171 │ ◻ opt8 ··· 1174 1174 │ ◻ opt11 1175 1175 └ 1176 1176 ", 1177 - "", 1178 - "", 1179 - "", 1177 + "<cursor.backward count=999><cursor.up count=9>", 1178 + "<cursor.down count=7>", 1179 + "<erase.line><cursor.left count=1>", 1180 1180 "│ ◼ opt11", 1181 - "", 1182 - "", 1183 - "", 1184 - "", 1181 + "<cursor.down count=2>", 1182 + "<cursor.backward count=999><cursor.up count=9>", 1183 + "<cursor.down count=1>", 1184 + "<erase.down>", 1185 1185 "◇ foo 1186 1186 │ opt11", 1187 1187 " 1188 1188 ", 1189 - "[?25h", 1189 + "<cursor.show>", 1190 1190 ] 1191 1191 `;
+110 -110
packages/prompts/test/__snapshots__/password.test.ts.snap
··· 2 2 3 3 exports[`password (isCI = false) > renders and clears validation errors 1`] = ` 4 4 [ 5 - "[?25l", 5 + "<cursor.hide>", 6 6 "│ 7 7 ◆ foo 8 8 │ _ 9 9 └ 10 10 ", 11 - "", 12 - "", 13 - "", 11 + "<cursor.backward count=999><cursor.up count=4>", 12 + "<cursor.down count=2>", 13 + "<erase.line><cursor.left count=1>", 14 14 "│ ▪_", 15 - "", 16 - "", 17 - "", 18 - "", 15 + "<cursor.down count=2>", 16 + "<cursor.backward count=999><cursor.up count=4>", 17 + "<cursor.down count=1>", 18 + "<erase.down>", 19 19 "▲ foo 20 20 │ ▪ 21 21 └ Password must be at least 2 characters 22 22 ", 23 - "", 24 - "", 25 - "", 23 + "<cursor.backward count=999><cursor.up count=4>", 24 + "<cursor.down count=1>", 25 + "<erase.down>", 26 26 "◆ foo 27 27 │ ▪▪_ 28 28 └ 29 29 ", 30 - "", 31 - "", 32 - "", 30 + "<cursor.backward count=999><cursor.up count=4>", 31 + "<cursor.down count=1>", 32 + "<erase.down>", 33 33 "◇ foo 34 34 │ ▪▪", 35 35 " 36 36 ", 37 - "[?25h", 37 + "<cursor.show>", 38 38 ] 39 39 `; 40 40 41 41 exports[`password (isCI = false) > renders cancelled value 1`] = ` 42 42 [ 43 - "[?25l", 43 + "<cursor.hide>", 44 44 "│ 45 45 ◆ foo 46 46 │ _ 47 47 └ 48 48 ", 49 - "", 50 - "", 51 - "", 49 + "<cursor.backward count=999><cursor.up count=4>", 50 + "<cursor.down count=2>", 51 + "<erase.line><cursor.left count=1>", 52 52 "│ ▪_", 53 - "", 54 - "", 55 - "", 56 - "", 53 + "<cursor.down count=2>", 54 + "<cursor.backward count=999><cursor.up count=4>", 55 + "<cursor.down count=1>", 56 + "<erase.down>", 57 57 "■ foo 58 58 │ ▪ 59 59 │", 60 60 " 61 61 ", 62 - "[?25h", 62 + "<cursor.show>", 63 63 ] 64 64 `; 65 65 66 66 exports[`password (isCI = false) > renders custom mask 1`] = ` 67 67 [ 68 - "[?25l", 68 + "<cursor.hide>", 69 69 "│ 70 70 ◆ foo 71 71 │ _ 72 72 └ 73 73 ", 74 - "", 75 - "", 76 - "", 74 + "<cursor.backward count=999><cursor.up count=4>", 75 + "<cursor.down count=2>", 76 + "<erase.line><cursor.left count=1>", 77 77 "│ *_", 78 - "", 79 - "", 80 - "", 81 - "", 78 + "<cursor.down count=2>", 79 + "<cursor.backward count=999><cursor.up count=4>", 80 + "<cursor.down count=2>", 81 + "<erase.line><cursor.left count=1>", 82 82 "│ **_", 83 - "", 84 - "", 85 - "", 86 - "", 83 + "<cursor.down count=2>", 84 + "<cursor.backward count=999><cursor.up count=4>", 85 + "<cursor.down count=1>", 86 + "<erase.down>", 87 87 "◇ foo 88 88 │ **", 89 89 " 90 90 ", 91 - "[?25h", 91 + "<cursor.show>", 92 92 ] 93 93 `; 94 94 95 95 exports[`password (isCI = false) > renders masked value 1`] = ` 96 96 [ 97 - "[?25l", 97 + "<cursor.hide>", 98 98 "│ 99 99 ◆ foo 100 100 │ _ 101 101 └ 102 102 ", 103 - "", 104 - "", 105 - "", 103 + "<cursor.backward count=999><cursor.up count=4>", 104 + "<cursor.down count=2>", 105 + "<erase.line><cursor.left count=1>", 106 106 "│ ▪_", 107 - "", 108 - "", 109 - "", 110 - "", 107 + "<cursor.down count=2>", 108 + "<cursor.backward count=999><cursor.up count=4>", 109 + "<cursor.down count=2>", 110 + "<erase.line><cursor.left count=1>", 111 111 "│ ▪▪_", 112 - "", 113 - "", 114 - "", 115 - "", 112 + "<cursor.down count=2>", 113 + "<cursor.backward count=999><cursor.up count=4>", 114 + "<cursor.down count=1>", 115 + "<erase.down>", 116 116 "◇ foo 117 117 │ ▪▪", 118 118 " 119 119 ", 120 - "[?25h", 120 + "<cursor.show>", 121 121 ] 122 122 `; 123 123 124 124 exports[`password (isCI = false) > renders message 1`] = ` 125 125 [ 126 - "[?25l", 126 + "<cursor.hide>", 127 127 "│ 128 128 ◆ foo 129 129 │ _ 130 130 └ 131 131 ", 132 - "", 133 - "", 134 - "", 132 + "<cursor.backward count=999><cursor.up count=4>", 133 + "<cursor.down count=1>", 134 + "<erase.down>", 135 135 "◇ foo 136 136 │", 137 137 " 138 138 ", 139 - "[?25h", 139 + "<cursor.show>", 140 140 ] 141 141 `; 142 142 143 143 exports[`password (isCI = true) > renders and clears validation errors 1`] = ` 144 144 [ 145 - "[?25l", 145 + "<cursor.hide>", 146 146 "│ 147 147 ◆ foo 148 148 │ _ 149 149 └ 150 150 ", 151 - "", 152 - "", 153 - "", 151 + "<cursor.backward count=999><cursor.up count=4>", 152 + "<cursor.down count=2>", 153 + "<erase.line><cursor.left count=1>", 154 154 "│ ▪_", 155 - "", 156 - "", 157 - "", 158 - "", 155 + "<cursor.down count=2>", 156 + "<cursor.backward count=999><cursor.up count=4>", 157 + "<cursor.down count=1>", 158 + "<erase.down>", 159 159 "▲ foo 160 160 │ ▪ 161 161 └ Password must be at least 2 characters 162 162 ", 163 - "", 164 - "", 165 - "", 163 + "<cursor.backward count=999><cursor.up count=4>", 164 + "<cursor.down count=1>", 165 + "<erase.down>", 166 166 "◆ foo 167 167 │ ▪▪_ 168 168 └ 169 169 ", 170 - "", 171 - "", 172 - "", 170 + "<cursor.backward count=999><cursor.up count=4>", 171 + "<cursor.down count=1>", 172 + "<erase.down>", 173 173 "◇ foo 174 174 │ ▪▪", 175 175 " 176 176 ", 177 - "[?25h", 177 + "<cursor.show>", 178 178 ] 179 179 `; 180 180 181 181 exports[`password (isCI = true) > renders cancelled value 1`] = ` 182 182 [ 183 - "[?25l", 183 + "<cursor.hide>", 184 184 "│ 185 185 ◆ foo 186 186 │ _ 187 187 └ 188 188 ", 189 - "", 190 - "", 191 - "", 189 + "<cursor.backward count=999><cursor.up count=4>", 190 + "<cursor.down count=2>", 191 + "<erase.line><cursor.left count=1>", 192 192 "│ ▪_", 193 - "", 194 - "", 195 - "", 196 - "", 193 + "<cursor.down count=2>", 194 + "<cursor.backward count=999><cursor.up count=4>", 195 + "<cursor.down count=1>", 196 + "<erase.down>", 197 197 "■ foo 198 198 │ ▪ 199 199 │", 200 200 " 201 201 ", 202 - "[?25h", 202 + "<cursor.show>", 203 203 ] 204 204 `; 205 205 206 206 exports[`password (isCI = true) > renders custom mask 1`] = ` 207 207 [ 208 - "[?25l", 208 + "<cursor.hide>", 209 209 "│ 210 210 ◆ foo 211 211 │ _ 212 212 └ 213 213 ", 214 - "", 215 - "", 216 - "", 214 + "<cursor.backward count=999><cursor.up count=4>", 215 + "<cursor.down count=2>", 216 + "<erase.line><cursor.left count=1>", 217 217 "│ *_", 218 - "", 219 - "", 220 - "", 221 - "", 218 + "<cursor.down count=2>", 219 + "<cursor.backward count=999><cursor.up count=4>", 220 + "<cursor.down count=2>", 221 + "<erase.line><cursor.left count=1>", 222 222 "│ **_", 223 - "", 224 - "", 225 - "", 226 - "", 223 + "<cursor.down count=2>", 224 + "<cursor.backward count=999><cursor.up count=4>", 225 + "<cursor.down count=1>", 226 + "<erase.down>", 227 227 "◇ foo 228 228 │ **", 229 229 " 230 230 ", 231 - "[?25h", 231 + "<cursor.show>", 232 232 ] 233 233 `; 234 234 235 235 exports[`password (isCI = true) > renders masked value 1`] = ` 236 236 [ 237 - "[?25l", 237 + "<cursor.hide>", 238 238 "│ 239 239 ◆ foo 240 240 │ _ 241 241 └ 242 242 ", 243 - "", 244 - "", 245 - "", 243 + "<cursor.backward count=999><cursor.up count=4>", 244 + "<cursor.down count=2>", 245 + "<erase.line><cursor.left count=1>", 246 246 "│ ▪_", 247 - "", 248 - "", 249 - "", 250 - "", 247 + "<cursor.down count=2>", 248 + "<cursor.backward count=999><cursor.up count=4>", 249 + "<cursor.down count=2>", 250 + "<erase.line><cursor.left count=1>", 251 251 "│ ▪▪_", 252 - "", 253 - "", 254 - "", 255 - "", 252 + "<cursor.down count=2>", 253 + "<cursor.backward count=999><cursor.up count=4>", 254 + "<cursor.down count=1>", 255 + "<erase.down>", 256 256 "◇ foo 257 257 │ ▪▪", 258 258 " 259 259 ", 260 - "[?25h", 260 + "<cursor.show>", 261 261 ] 262 262 `; 263 263 264 264 exports[`password (isCI = true) > renders message 1`] = ` 265 265 [ 266 - "[?25l", 266 + "<cursor.hide>", 267 267 "│ 268 268 ◆ foo 269 269 │ _ 270 270 └ 271 271 ", 272 - "", 273 - "", 274 - "", 272 + "<cursor.backward count=999><cursor.up count=4>", 273 + "<cursor.down count=1>", 274 + "<erase.down>", 275 275 "◇ foo 276 276 │", 277 277 " 278 278 ", 279 - "[?25h", 279 + "<cursor.show>", 280 280 ] 281 281 `;
+134 -134
packages/prompts/test/__snapshots__/progress-bar.test.ts.snap
··· 2 2 3 3 exports[`prompts - progress (isCI = false) > message > sets message for next frame 1`] = ` 4 4 [ 5 - "[?25l", 5 + "<cursor.hide>", 6 6 "│ 7 7 ", 8 8 "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ", 9 - "", 10 - "", 9 + "<cursor.backward count=999>", 10 + "<erase.down>", 11 11 "◐ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ foo", 12 12 ] 13 13 `; 14 14 15 15 exports[`prompts - progress (isCI = false) > process exit handling > prioritizes cancel option over global setting 1`] = ` 16 16 [ 17 - "[?25l", 17 + "<cursor.hide>", 18 18 "│ 19 19 ", 20 20 "■ Progress cancel message 21 21 ", 22 - "[?25h", 22 + "<cursor.show>", 23 23 ] 24 24 `; 25 25 26 26 exports[`prompts - progress (isCI = false) > process exit handling > prioritizes error option over global setting 1`] = ` 27 27 [ 28 - "[?25l", 28 + "<cursor.hide>", 29 29 "│ 30 30 ", 31 31 "▲ Progress error message 32 32 ", 33 - "[?25h", 33 + "<cursor.show>", 34 34 ] 35 35 `; 36 36 37 37 exports[`prompts - progress (isCI = false) > process exit handling > uses custom cancel message when provided directly 1`] = ` 38 38 [ 39 - "[?25l", 39 + "<cursor.hide>", 40 40 "│ 41 41 ", 42 42 "■ Custom cancel message 43 43 ", 44 - "[?25h", 44 + "<cursor.show>", 45 45 ] 46 46 `; 47 47 48 48 exports[`prompts - progress (isCI = false) > process exit handling > uses custom error message when provided directly 1`] = ` 49 49 [ 50 - "[?25l", 50 + "<cursor.hide>", 51 51 "│ 52 52 ", 53 53 "▲ Custom error message 54 54 ", 55 - "[?25h", 55 + "<cursor.show>", 56 56 ] 57 57 `; 58 58 59 59 exports[`prompts - progress (isCI = false) > process exit handling > uses default cancel message 1`] = ` 60 60 [ 61 - "[?25l", 61 + "<cursor.hide>", 62 62 "│ 63 63 ", 64 64 "■ Canceled 65 65 ", 66 - "[?25h", 66 + "<cursor.show>", 67 67 ] 68 68 `; 69 69 70 70 exports[`prompts - progress (isCI = false) > process exit handling > uses global custom cancel message from settings 1`] = ` 71 71 [ 72 - "[?25l", 72 + "<cursor.hide>", 73 73 "│ 74 74 ", 75 75 "■ Global cancel message 76 76 ", 77 - "[?25h", 77 + "<cursor.show>", 78 78 ] 79 79 `; 80 80 81 81 exports[`prompts - progress (isCI = false) > process exit handling > uses global custom error message from settings 1`] = ` 82 82 [ 83 - "[?25l", 83 + "<cursor.hide>", 84 84 "│ 85 85 ", 86 86 "▲ Global error message 87 87 ", 88 - "[?25h", 88 + "<cursor.show>", 89 89 ] 90 90 `; 91 91 92 92 exports[`prompts - progress (isCI = false) > start > renders frames at interval 1`] = ` 93 93 [ 94 - "[?25l", 94 + "<cursor.hide>", 95 95 "│ 96 96 ", 97 97 "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ", 98 - "", 99 - "", 98 + "<cursor.backward count=999>", 99 + "<erase.down>", 100 100 "◐ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ", 101 - "", 102 - "", 101 + "<cursor.backward count=999>", 102 + "<erase.down>", 103 103 "◓ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ", 104 - "", 105 - "", 104 + "<cursor.backward count=999>", 105 + "<erase.down>", 106 106 "◑ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ", 107 107 ] 108 108 `; 109 109 110 110 exports[`prompts - progress (isCI = false) > start > renders message 1`] = ` 111 111 [ 112 - "[?25l", 112 + "<cursor.hide>", 113 113 "│ 114 114 ", 115 115 "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ foo", ··· 118 118 119 119 exports[`prompts - progress (isCI = false) > start > renders timer when indicator is "timer" 1`] = ` 120 120 [ 121 - "[?25l", 121 + "<cursor.hide>", 122 122 "│ 123 123 ", 124 124 "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ [0s]", ··· 127 127 128 128 exports[`prompts - progress (isCI = false) > stop > renders cancel symbol if code = 1 1`] = ` 129 129 [ 130 - "[?25l", 130 + "<cursor.hide>", 131 131 "│ 132 132 ", 133 133 "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ", 134 - "", 135 - "", 134 + "<cursor.backward count=999>", 135 + "<erase.down>", 136 136 "■ 137 137 ", 138 - "[?25h", 138 + "<cursor.show>", 139 139 ] 140 140 `; 141 141 142 142 exports[`prompts - progress (isCI = false) > stop > renders error symbol if code > 1 1`] = ` 143 143 [ 144 - "[?25l", 144 + "<cursor.hide>", 145 145 "│ 146 146 ", 147 147 "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ", 148 - "", 149 - "", 148 + "<cursor.backward count=999>", 149 + "<erase.down>", 150 150 "▲ 151 151 ", 152 - "[?25h", 152 + "<cursor.show>", 153 153 ] 154 154 `; 155 155 156 156 exports[`prompts - progress (isCI = false) > stop > renders message 1`] = ` 157 157 [ 158 - "[?25l", 158 + "<cursor.hide>", 159 159 "│ 160 160 ", 161 161 "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ", 162 - "", 163 - "", 162 + "<cursor.backward count=999>", 163 + "<erase.down>", 164 164 "◇ foo 165 165 ", 166 - "[?25h", 166 + "<cursor.show>", 167 167 ] 168 168 `; 169 169 170 170 exports[`prompts - progress (isCI = false) > stop > renders message without removing dots 1`] = ` 171 171 [ 172 - "[?25l", 172 + "<cursor.hide>", 173 173 "│ 174 174 ", 175 175 "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ", 176 - "", 177 - "", 176 + "<cursor.backward count=999>", 177 + "<erase.down>", 178 178 "◇ foo. 179 179 ", 180 - "[?25h", 180 + "<cursor.show>", 181 181 ] 182 182 `; 183 183 184 184 exports[`prompts - progress (isCI = false) > stop > renders submit symbol and stops progress 1`] = ` 185 185 [ 186 - "[?25l", 186 + "<cursor.hide>", 187 187 "│ 188 188 ", 189 189 "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ", 190 - "", 191 - "", 190 + "<cursor.backward count=999>", 191 + "<erase.down>", 192 192 "◇ 193 193 ", 194 - "[?25h", 194 + "<cursor.show>", 195 195 ] 196 196 `; 197 197 198 198 exports[`prompts - progress (isCI = false) > style > renders block progressbar 1`] = ` 199 199 [ 200 - "[?25l", 200 + "<cursor.hide>", 201 201 "│ 202 202 ", 203 203 "◒ ██████████ ", 204 - "", 205 - "", 204 + "<cursor.backward count=999>", 205 + "<erase.down>", 206 206 "◐ ██████████ ", 207 - "", 208 - "", 207 + "<cursor.backward count=999>", 208 + "<erase.down>", 209 209 "◓ ██████████ ", 210 - "", 211 - "", 210 + "<cursor.backward count=999>", 211 + "<erase.down>", 212 212 "◑ ██████████ ", 213 - "", 214 - "", 213 + "<cursor.backward count=999>", 214 + "<erase.down>", 215 215 "◇ 216 216 ", 217 - "[?25h", 217 + "<cursor.show>", 218 218 ] 219 219 `; 220 220 221 221 exports[`prompts - progress (isCI = false) > style > renders heavy progressbar 1`] = ` 222 222 [ 223 - "[?25l", 223 + "<cursor.hide>", 224 224 "│ 225 225 ", 226 226 "◒ ━━━━━━━━━━ ", 227 - "", 228 - "", 227 + "<cursor.backward count=999>", 228 + "<erase.down>", 229 229 "◐ ━━━━━━━━━━ ", 230 - "", 231 - "", 230 + "<cursor.backward count=999>", 231 + "<erase.down>", 232 232 "◓ ━━━━━━━━━━ ", 233 - "", 234 - "", 233 + "<cursor.backward count=999>", 234 + "<erase.down>", 235 235 "◑ ━━━━━━━━━━ ", 236 - "", 237 - "", 236 + "<cursor.backward count=999>", 237 + "<erase.down>", 238 238 "◇ 239 239 ", 240 - "[?25h", 240 + "<cursor.show>", 241 241 ] 242 242 `; 243 243 244 244 exports[`prompts - progress (isCI = false) > style > renders light progressbar 1`] = ` 245 245 [ 246 - "[?25l", 246 + "<cursor.hide>", 247 247 "│ 248 248 ", 249 249 "◒ ────────── ", 250 - "", 251 - "", 250 + "<cursor.backward count=999>", 251 + "<erase.down>", 252 252 "◐ ────────── ", 253 - "", 254 - "", 253 + "<cursor.backward count=999>", 254 + "<erase.down>", 255 255 "◓ ────────── ", 256 - "", 257 - "", 256 + "<cursor.backward count=999>", 257 + "<erase.down>", 258 258 "◑ ────────── ", 259 - "", 260 - "", 259 + "<cursor.backward count=999>", 260 + "<erase.down>", 261 261 "◇ 262 262 ", 263 - "[?25h", 263 + "<cursor.show>", 264 264 ] 265 265 `; 266 266 267 267 exports[`prompts - progress (isCI = true) > message > sets message for next frame 1`] = ` 268 268 [ 269 - "[?25l", 269 + "<cursor.hide>", 270 270 "│ 271 271 ", 272 272 "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ...", 273 273 " 274 274 ", 275 - "", 276 - "", 275 + "<cursor.backward count=999>", 276 + "<erase.down>", 277 277 "◐ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ foo...", 278 278 ] 279 279 `; 280 280 281 281 exports[`prompts - progress (isCI = true) > process exit handling > prioritizes cancel option over global setting 1`] = ` 282 282 [ 283 - "[?25l", 283 + "<cursor.hide>", 284 284 "│ 285 285 ", 286 286 "■ Progress cancel message 287 287 ", 288 - "[?25h", 288 + "<cursor.show>", 289 289 ] 290 290 `; 291 291 292 292 exports[`prompts - progress (isCI = true) > process exit handling > prioritizes error option over global setting 1`] = ` 293 293 [ 294 - "[?25l", 294 + "<cursor.hide>", 295 295 "│ 296 296 ", 297 297 "▲ Progress error message 298 298 ", 299 - "[?25h", 299 + "<cursor.show>", 300 300 ] 301 301 `; 302 302 303 303 exports[`prompts - progress (isCI = true) > process exit handling > uses custom cancel message when provided directly 1`] = ` 304 304 [ 305 - "[?25l", 305 + "<cursor.hide>", 306 306 "│ 307 307 ", 308 308 "■ Custom cancel message 309 309 ", 310 - "[?25h", 310 + "<cursor.show>", 311 311 ] 312 312 `; 313 313 314 314 exports[`prompts - progress (isCI = true) > process exit handling > uses custom error message when provided directly 1`] = ` 315 315 [ 316 - "[?25l", 316 + "<cursor.hide>", 317 317 "│ 318 318 ", 319 319 "▲ Custom error message 320 320 ", 321 - "[?25h", 321 + "<cursor.show>", 322 322 ] 323 323 `; 324 324 325 325 exports[`prompts - progress (isCI = true) > process exit handling > uses default cancel message 1`] = ` 326 326 [ 327 - "[?25l", 327 + "<cursor.hide>", 328 328 "│ 329 329 ", 330 330 "■ Canceled 331 331 ", 332 - "[?25h", 332 + "<cursor.show>", 333 333 ] 334 334 `; 335 335 336 336 exports[`prompts - progress (isCI = true) > process exit handling > uses global custom cancel message from settings 1`] = ` 337 337 [ 338 - "[?25l", 338 + "<cursor.hide>", 339 339 "│ 340 340 ", 341 341 "■ Global cancel message 342 342 ", 343 - "[?25h", 343 + "<cursor.show>", 344 344 ] 345 345 `; 346 346 347 347 exports[`prompts - progress (isCI = true) > process exit handling > uses global custom error message from settings 1`] = ` 348 348 [ 349 - "[?25l", 349 + "<cursor.hide>", 350 350 "│ 351 351 ", 352 352 "▲ Global error message 353 353 ", 354 - "[?25h", 354 + "<cursor.show>", 355 355 ] 356 356 `; 357 357 358 358 exports[`prompts - progress (isCI = true) > start > renders frames at interval 1`] = ` 359 359 [ 360 - "[?25l", 360 + "<cursor.hide>", 361 361 "│ 362 362 ", 363 363 "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ...", ··· 366 366 367 367 exports[`prompts - progress (isCI = true) > start > renders message 1`] = ` 368 368 [ 369 - "[?25l", 369 + "<cursor.hide>", 370 370 "│ 371 371 ", 372 372 "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ foo...", ··· 375 375 376 376 exports[`prompts - progress (isCI = true) > start > renders timer when indicator is "timer" 1`] = ` 377 377 [ 378 - "[?25l", 378 + "<cursor.hide>", 379 379 "│ 380 380 ", 381 381 "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ...", ··· 384 384 385 385 exports[`prompts - progress (isCI = true) > stop > renders cancel symbol if code = 1 1`] = ` 386 386 [ 387 - "[?25l", 387 + "<cursor.hide>", 388 388 "│ 389 389 ", 390 390 "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ...", 391 391 " 392 392 ", 393 - "", 394 - "", 393 + "<cursor.backward count=999>", 394 + "<erase.down>", 395 395 "■ 396 396 ", 397 - "[?25h", 397 + "<cursor.show>", 398 398 ] 399 399 `; 400 400 401 401 exports[`prompts - progress (isCI = true) > stop > renders error symbol if code > 1 1`] = ` 402 402 [ 403 - "[?25l", 403 + "<cursor.hide>", 404 404 "│ 405 405 ", 406 406 "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ...", 407 407 " 408 408 ", 409 - "", 410 - "", 409 + "<cursor.backward count=999>", 410 + "<erase.down>", 411 411 "▲ 412 412 ", 413 - "[?25h", 413 + "<cursor.show>", 414 414 ] 415 415 `; 416 416 417 417 exports[`prompts - progress (isCI = true) > stop > renders message 1`] = ` 418 418 [ 419 - "[?25l", 419 + "<cursor.hide>", 420 420 "│ 421 421 ", 422 422 "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ...", 423 423 " 424 424 ", 425 - "", 426 - "", 425 + "<cursor.backward count=999>", 426 + "<erase.down>", 427 427 "◇ foo 428 428 ", 429 - "[?25h", 429 + "<cursor.show>", 430 430 ] 431 431 `; 432 432 433 433 exports[`prompts - progress (isCI = true) > stop > renders message without removing dots 1`] = ` 434 434 [ 435 - "[?25l", 435 + "<cursor.hide>", 436 436 "│ 437 437 ", 438 438 "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ...", 439 439 " 440 440 ", 441 - "", 442 - "", 441 + "<cursor.backward count=999>", 442 + "<erase.down>", 443 443 "◇ foo. 444 444 ", 445 - "[?25h", 445 + "<cursor.show>", 446 446 ] 447 447 `; 448 448 449 449 exports[`prompts - progress (isCI = true) > stop > renders submit symbol and stops progress 1`] = ` 450 450 [ 451 - "[?25l", 451 + "<cursor.hide>", 452 452 "│ 453 453 ", 454 454 "◒ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ...", 455 455 " 456 456 ", 457 - "", 458 - "", 457 + "<cursor.backward count=999>", 458 + "<erase.down>", 459 459 "◇ 460 460 ", 461 - "[?25h", 461 + "<cursor.show>", 462 462 ] 463 463 `; 464 464 465 465 exports[`prompts - progress (isCI = true) > style > renders block progressbar 1`] = ` 466 466 [ 467 - "[?25l", 467 + "<cursor.hide>", 468 468 "│ 469 469 ", 470 470 "◒ ██████████ ...", 471 471 " 472 472 ", 473 - "", 474 - "", 473 + "<cursor.backward count=999>", 474 + "<erase.down>", 475 475 "◐ ██████████ ...", 476 476 " 477 477 ", 478 - "", 479 - "", 478 + "<cursor.backward count=999>", 479 + "<erase.down>", 480 480 "◇ 481 481 ", 482 - "[?25h", 482 + "<cursor.show>", 483 483 ] 484 484 `; 485 485 486 486 exports[`prompts - progress (isCI = true) > style > renders heavy progressbar 1`] = ` 487 487 [ 488 - "[?25l", 488 + "<cursor.hide>", 489 489 "│ 490 490 ", 491 491 "◒ ━━━━━━━━━━ ...", 492 492 " 493 493 ", 494 - "", 495 - "", 494 + "<cursor.backward count=999>", 495 + "<erase.down>", 496 496 "◐ ━━━━━━━━━━ ...", 497 497 " 498 498 ", 499 - "", 500 - "", 499 + "<cursor.backward count=999>", 500 + "<erase.down>", 501 501 "◇ 502 502 ", 503 - "[?25h", 503 + "<cursor.show>", 504 504 ] 505 505 `; 506 506 507 507 exports[`prompts - progress (isCI = true) > style > renders light progressbar 1`] = ` 508 508 [ 509 - "[?25l", 509 + "<cursor.hide>", 510 510 "│ 511 511 ", 512 512 "◒ ────────── ...", 513 513 " 514 514 ", 515 - "", 516 - "", 515 + "<cursor.backward count=999>", 516 + "<erase.down>", 517 517 "◐ ────────── ...", 518 518 " 519 519 ", 520 - "", 521 - "", 520 + "<cursor.backward count=999>", 521 + "<erase.down>", 522 522 "◇ 523 523 ", 524 - "[?25h", 524 + "<cursor.show>", 525 525 ] 526 526 `;
+78 -78
packages/prompts/test/__snapshots__/select.test.ts.snap
··· 2 2 3 3 exports[`select (isCI = false) > can cancel 1`] = ` 4 4 [ 5 - "[?25l", 5 + "<cursor.hide>", 6 6 "│ 7 7 ◆ foo 8 8 │ ● opt0 9 9 │ ○ opt1 10 10 └ 11 11 ", 12 - "", 13 - "", 14 - "", 12 + "<cursor.backward count=999><cursor.up count=5>", 13 + "<cursor.down count=1>", 14 + "<erase.down>", 15 15 "■ foo 16 16 │ opt0 17 17 │", 18 18 " 19 19 ", 20 - "[?25h", 20 + "<cursor.show>", 21 21 ] 22 22 `; 23 23 24 24 exports[`select (isCI = false) > down arrow selects next option 1`] = ` 25 25 [ 26 - "[?25l", 26 + "<cursor.hide>", 27 27 "│ 28 28 ◆ foo 29 29 │ ● opt0 30 30 │ ○ opt1 31 31 └ 32 32 ", 33 - "", 34 - "", 35 - "", 33 + "<cursor.backward count=999><cursor.up count=5>", 34 + "<cursor.down count=2>", 35 + "<erase.down>", 36 36 "│ ○ opt0 37 37 │ ● opt1 38 38 └ 39 39 ", 40 - "", 41 - "", 42 - "", 40 + "<cursor.backward count=999><cursor.up count=5>", 41 + "<cursor.down count=1>", 42 + "<erase.down>", 43 43 "◇ foo 44 44 │ opt1", 45 45 " 46 46 ", 47 - "[?25h", 47 + "<cursor.show>", 48 48 ] 49 49 `; 50 50 51 51 exports[`select (isCI = false) > renders option hints 1`] = ` 52 52 [ 53 - "[?25l", 53 + "<cursor.hide>", 54 54 "│ 55 55 ◆ foo 56 56 │ ● opt0 (Hint 0) 57 57 │ ○ opt1 58 58 └ 59 59 ", 60 - "", 61 - "", 62 - "", 60 + "<cursor.backward count=999><cursor.up count=5>", 61 + "<cursor.down count=1>", 62 + "<erase.down>", 63 63 "◇ foo 64 64 │ opt0", 65 65 " 66 66 ", 67 - "[?25h", 67 + "<cursor.show>", 68 68 ] 69 69 `; 70 70 71 71 exports[`select (isCI = false) > renders option labels 1`] = ` 72 72 [ 73 - "[?25l", 73 + "<cursor.hide>", 74 74 "│ 75 75 ◆ foo 76 76 │ ● Option 0 77 77 │ ○ Option 1 78 78 └ 79 79 ", 80 - "", 81 - "", 82 - "", 80 + "<cursor.backward count=999><cursor.up count=5>", 81 + "<cursor.down count=1>", 82 + "<erase.down>", 83 83 "◇ foo 84 84 │ Option 0", 85 85 " 86 86 ", 87 - "[?25h", 87 + "<cursor.show>", 88 88 ] 89 89 `; 90 90 91 91 exports[`select (isCI = false) > renders options and message 1`] = ` 92 92 [ 93 - "[?25l", 93 + "<cursor.hide>", 94 94 "│ 95 95 ◆ foo 96 96 │ ● opt0 97 97 │ ○ opt1 98 98 └ 99 99 ", 100 - "", 101 - "", 102 - "", 100 + "<cursor.backward count=999><cursor.up count=5>", 101 + "<cursor.down count=1>", 102 + "<erase.down>", 103 103 "◇ foo 104 104 │ opt0", 105 105 " 106 106 ", 107 - "[?25h", 107 + "<cursor.show>", 108 108 ] 109 109 `; 110 110 111 111 exports[`select (isCI = false) > up arrow selects previous option 1`] = ` 112 112 [ 113 - "[?25l", 113 + "<cursor.hide>", 114 114 "│ 115 115 ◆ foo 116 116 │ ● opt0 117 117 │ ○ opt1 118 118 └ 119 119 ", 120 - "", 121 - "", 122 - "", 120 + "<cursor.backward count=999><cursor.up count=5>", 121 + "<cursor.down count=2>", 122 + "<erase.down>", 123 123 "│ ○ opt0 124 124 │ ● opt1 125 125 └ 126 126 ", 127 - "", 128 - "", 129 - "", 127 + "<cursor.backward count=999><cursor.up count=5>", 128 + "<cursor.down count=2>", 129 + "<erase.down>", 130 130 "│ ● opt0 131 131 │ ○ opt1 132 132 └ 133 133 ", 134 - "", 135 - "", 136 - "", 134 + "<cursor.backward count=999><cursor.up count=5>", 135 + "<cursor.down count=1>", 136 + "<erase.down>", 137 137 "◇ foo 138 138 │ opt0", 139 139 " 140 140 ", 141 - "[?25h", 141 + "<cursor.show>", 142 142 ] 143 143 `; 144 144 145 145 exports[`select (isCI = true) > can cancel 1`] = ` 146 146 [ 147 - "[?25l", 147 + "<cursor.hide>", 148 148 "│ 149 149 ◆ foo 150 150 │ ● opt0 151 151 │ ○ opt1 152 152 └ 153 153 ", 154 - "", 155 - "", 156 - "", 154 + "<cursor.backward count=999><cursor.up count=5>", 155 + "<cursor.down count=1>", 156 + "<erase.down>", 157 157 "■ foo 158 158 │ opt0 159 159 │", 160 160 " 161 161 ", 162 - "[?25h", 162 + "<cursor.show>", 163 163 ] 164 164 `; 165 165 166 166 exports[`select (isCI = true) > down arrow selects next option 1`] = ` 167 167 [ 168 - "[?25l", 168 + "<cursor.hide>", 169 169 "│ 170 170 ◆ foo 171 171 │ ● opt0 172 172 │ ○ opt1 173 173 └ 174 174 ", 175 - "", 176 - "", 177 - "", 175 + "<cursor.backward count=999><cursor.up count=5>", 176 + "<cursor.down count=2>", 177 + "<erase.down>", 178 178 "│ ○ opt0 179 179 │ ● opt1 180 180 └ 181 181 ", 182 - "", 183 - "", 184 - "", 182 + "<cursor.backward count=999><cursor.up count=5>", 183 + "<cursor.down count=1>", 184 + "<erase.down>", 185 185 "◇ foo 186 186 │ opt1", 187 187 " 188 188 ", 189 - "[?25h", 189 + "<cursor.show>", 190 190 ] 191 191 `; 192 192 193 193 exports[`select (isCI = true) > renders option hints 1`] = ` 194 194 [ 195 - "[?25l", 195 + "<cursor.hide>", 196 196 "│ 197 197 ◆ foo 198 198 │ ● opt0 (Hint 0) 199 199 │ ○ opt1 200 200 └ 201 201 ", 202 - "", 203 - "", 204 - "", 202 + "<cursor.backward count=999><cursor.up count=5>", 203 + "<cursor.down count=1>", 204 + "<erase.down>", 205 205 "◇ foo 206 206 │ opt0", 207 207 " 208 208 ", 209 - "[?25h", 209 + "<cursor.show>", 210 210 ] 211 211 `; 212 212 213 213 exports[`select (isCI = true) > renders option labels 1`] = ` 214 214 [ 215 - "[?25l", 215 + "<cursor.hide>", 216 216 "│ 217 217 ◆ foo 218 218 │ ● Option 0 219 219 │ ○ Option 1 220 220 └ 221 221 ", 222 - "", 223 - "", 224 - "", 222 + "<cursor.backward count=999><cursor.up count=5>", 223 + "<cursor.down count=1>", 224 + "<erase.down>", 225 225 "◇ foo 226 226 │ Option 0", 227 227 " 228 228 ", 229 - "[?25h", 229 + "<cursor.show>", 230 230 ] 231 231 `; 232 232 233 233 exports[`select (isCI = true) > renders options and message 1`] = ` 234 234 [ 235 - "[?25l", 235 + "<cursor.hide>", 236 236 "│ 237 237 ◆ foo 238 238 │ ● opt0 239 239 │ ○ opt1 240 240 └ 241 241 ", 242 - "", 243 - "", 244 - "", 242 + "<cursor.backward count=999><cursor.up count=5>", 243 + "<cursor.down count=1>", 244 + "<erase.down>", 245 245 "◇ foo 246 246 │ opt0", 247 247 " 248 248 ", 249 - "[?25h", 249 + "<cursor.show>", 250 250 ] 251 251 `; 252 252 253 253 exports[`select (isCI = true) > up arrow selects previous option 1`] = ` 254 254 [ 255 - "[?25l", 255 + "<cursor.hide>", 256 256 "│ 257 257 ◆ foo 258 258 │ ● opt0 259 259 │ ○ opt1 260 260 └ 261 261 ", 262 - "", 263 - "", 264 - "", 262 + "<cursor.backward count=999><cursor.up count=5>", 263 + "<cursor.down count=2>", 264 + "<erase.down>", 265 265 "│ ○ opt0 266 266 │ ● opt1 267 267 └ 268 268 ", 269 - "", 270 - "", 271 - "", 269 + "<cursor.backward count=999><cursor.up count=5>", 270 + "<cursor.down count=2>", 271 + "<erase.down>", 272 272 "│ ● opt0 273 273 │ ○ opt1 274 274 └ 275 275 ", 276 - "", 277 - "", 278 - "", 276 + "<cursor.backward count=999><cursor.up count=5>", 277 + "<cursor.down count=1>", 278 + "<erase.down>", 279 279 "◇ foo 280 280 │ opt0", 281 281 " 282 282 ", 283 - "[?25h", 283 + "<cursor.show>", 284 284 ] 285 285 `;
+86 -86
packages/prompts/test/__snapshots__/spinner.test.ts.snap
··· 2 2 3 3 exports[`spinner (isCI = false) > message > sets message for next frame 1`] = ` 4 4 [ 5 - "[?25l", 5 + "<cursor.hide>", 6 6 "│ 7 7 ", 8 8 "◒ ", 9 - "", 10 - "", 9 + "<cursor.backward count=999>", 10 + "<erase.down>", 11 11 "◐ foo", 12 12 ] 13 13 `; 14 14 15 15 exports[`spinner (isCI = false) > process exit handling > prioritizes cancel option over global setting 1`] = ` 16 16 [ 17 - "[?25l", 17 + "<cursor.hide>", 18 18 "│ 19 19 ", 20 20 "■ Spinner cancel message 21 21 ", 22 - "[?25h", 22 + "<cursor.show>", 23 23 ] 24 24 `; 25 25 26 26 exports[`spinner (isCI = false) > process exit handling > prioritizes error option over global setting 1`] = ` 27 27 [ 28 - "[?25l", 28 + "<cursor.hide>", 29 29 "│ 30 30 ", 31 31 "▲ Spinner error message 32 32 ", 33 - "[?25h", 33 + "<cursor.show>", 34 34 ] 35 35 `; 36 36 37 37 exports[`spinner (isCI = false) > process exit handling > uses custom cancel message when provided directly 1`] = ` 38 38 [ 39 - "[?25l", 39 + "<cursor.hide>", 40 40 "│ 41 41 ", 42 42 "■ Custom cancel message 43 43 ", 44 - "[?25h", 44 + "<cursor.show>", 45 45 ] 46 46 `; 47 47 48 48 exports[`spinner (isCI = false) > process exit handling > uses custom error message when provided directly 1`] = ` 49 49 [ 50 - "[?25l", 50 + "<cursor.hide>", 51 51 "│ 52 52 ", 53 53 "▲ Custom error message 54 54 ", 55 - "[?25h", 55 + "<cursor.show>", 56 56 ] 57 57 `; 58 58 59 59 exports[`spinner (isCI = false) > process exit handling > uses default cancel message 1`] = ` 60 60 [ 61 - "[?25l", 61 + "<cursor.hide>", 62 62 "│ 63 63 ", 64 64 "■ Canceled 65 65 ", 66 - "[?25h", 66 + "<cursor.show>", 67 67 ] 68 68 `; 69 69 70 70 exports[`spinner (isCI = false) > process exit handling > uses global custom cancel message from settings 1`] = ` 71 71 [ 72 - "[?25l", 72 + "<cursor.hide>", 73 73 "│ 74 74 ", 75 75 "■ Global cancel message 76 76 ", 77 - "[?25h", 77 + "<cursor.show>", 78 78 ] 79 79 `; 80 80 81 81 exports[`spinner (isCI = false) > process exit handling > uses global custom error message from settings 1`] = ` 82 82 [ 83 - "[?25l", 83 + "<cursor.hide>", 84 84 "│ 85 85 ", 86 86 "▲ Global error message 87 87 ", 88 - "[?25h", 88 + "<cursor.show>", 89 89 ] 90 90 `; 91 91 92 92 exports[`spinner (isCI = false) > start > renders frames at interval 1`] = ` 93 93 [ 94 - "[?25l", 94 + "<cursor.hide>", 95 95 "│ 96 96 ", 97 97 "◒ ", 98 - "", 99 - "", 98 + "<cursor.backward count=999>", 99 + "<erase.down>", 100 100 "◐ ", 101 - "", 102 - "", 101 + "<cursor.backward count=999>", 102 + "<erase.down>", 103 103 "◓ ", 104 - "", 105 - "", 104 + "<cursor.backward count=999>", 105 + "<erase.down>", 106 106 "◑ ", 107 107 ] 108 108 `; 109 109 110 110 exports[`spinner (isCI = false) > start > renders message 1`] = ` 111 111 [ 112 - "[?25l", 112 + "<cursor.hide>", 113 113 "│ 114 114 ", 115 115 "◒ foo", ··· 118 118 119 119 exports[`spinner (isCI = false) > start > renders timer when indicator is "timer" 1`] = ` 120 120 [ 121 - "[?25l", 121 + "<cursor.hide>", 122 122 "│ 123 123 ", 124 124 "◒ [0s]", ··· 127 127 128 128 exports[`spinner (isCI = false) > stop > renders cancel symbol if code = 1 1`] = ` 129 129 [ 130 - "[?25l", 130 + "<cursor.hide>", 131 131 "│ 132 132 ", 133 133 "◒ ", 134 - "", 135 - "", 134 + "<cursor.backward count=999>", 135 + "<erase.down>", 136 136 "■ 137 137 ", 138 - "[?25h", 138 + "<cursor.show>", 139 139 ] 140 140 `; 141 141 142 142 exports[`spinner (isCI = false) > stop > renders error symbol if code > 1 1`] = ` 143 143 [ 144 - "[?25l", 144 + "<cursor.hide>", 145 145 "│ 146 146 ", 147 147 "◒ ", 148 - "", 149 - "", 148 + "<cursor.backward count=999>", 149 + "<erase.down>", 150 150 "▲ 151 151 ", 152 - "[?25h", 152 + "<cursor.show>", 153 153 ] 154 154 `; 155 155 156 156 exports[`spinner (isCI = false) > stop > renders message 1`] = ` 157 157 [ 158 - "[?25l", 158 + "<cursor.hide>", 159 159 "│ 160 160 ", 161 161 "◒ ", 162 - "", 163 - "", 162 + "<cursor.backward count=999>", 163 + "<erase.down>", 164 164 "◇ foo 165 165 ", 166 - "[?25h", 166 + "<cursor.show>", 167 167 ] 168 168 `; 169 169 170 170 exports[`spinner (isCI = false) > stop > renders message without removing dots 1`] = ` 171 171 [ 172 - "[?25l", 172 + "<cursor.hide>", 173 173 "│ 174 174 ", 175 175 "◒ ", 176 - "", 177 - "", 176 + "<cursor.backward count=999>", 177 + "<erase.down>", 178 178 "◇ foo. 179 179 ", 180 - "[?25h", 180 + "<cursor.show>", 181 181 ] 182 182 `; 183 183 184 184 exports[`spinner (isCI = false) > stop > renders submit symbol and stops spinner 1`] = ` 185 185 [ 186 - "[?25l", 186 + "<cursor.hide>", 187 187 "│ 188 188 ", 189 189 "◒ ", 190 - "", 191 - "", 190 + "<cursor.backward count=999>", 191 + "<erase.down>", 192 192 "◇ 193 193 ", 194 - "[?25h", 194 + "<cursor.show>", 195 195 ] 196 196 `; 197 197 198 198 exports[`spinner (isCI = true) > message > sets message for next frame 1`] = ` 199 199 [ 200 - "[?25l", 200 + "<cursor.hide>", 201 201 "│ 202 202 ", 203 203 "◒ ...", 204 204 " 205 205 ", 206 - "", 207 - "", 206 + "<cursor.backward count=999>", 207 + "<erase.down>", 208 208 "◐ foo...", 209 209 ] 210 210 `; 211 211 212 212 exports[`spinner (isCI = true) > process exit handling > prioritizes cancel option over global setting 1`] = ` 213 213 [ 214 - "[?25l", 214 + "<cursor.hide>", 215 215 "│ 216 216 ", 217 217 "■ Spinner cancel message 218 218 ", 219 - "[?25h", 219 + "<cursor.show>", 220 220 ] 221 221 `; 222 222 223 223 exports[`spinner (isCI = true) > process exit handling > prioritizes error option over global setting 1`] = ` 224 224 [ 225 - "[?25l", 225 + "<cursor.hide>", 226 226 "│ 227 227 ", 228 228 "▲ Spinner error message 229 229 ", 230 - "[?25h", 230 + "<cursor.show>", 231 231 ] 232 232 `; 233 233 234 234 exports[`spinner (isCI = true) > process exit handling > uses custom cancel message when provided directly 1`] = ` 235 235 [ 236 - "[?25l", 236 + "<cursor.hide>", 237 237 "│ 238 238 ", 239 239 "■ Custom cancel message 240 240 ", 241 - "[?25h", 241 + "<cursor.show>", 242 242 ] 243 243 `; 244 244 245 245 exports[`spinner (isCI = true) > process exit handling > uses custom error message when provided directly 1`] = ` 246 246 [ 247 - "[?25l", 247 + "<cursor.hide>", 248 248 "│ 249 249 ", 250 250 "▲ Custom error message 251 251 ", 252 - "[?25h", 252 + "<cursor.show>", 253 253 ] 254 254 `; 255 255 256 256 exports[`spinner (isCI = true) > process exit handling > uses default cancel message 1`] = ` 257 257 [ 258 - "[?25l", 258 + "<cursor.hide>", 259 259 "│ 260 260 ", 261 261 "■ Canceled 262 262 ", 263 - "[?25h", 263 + "<cursor.show>", 264 264 ] 265 265 `; 266 266 267 267 exports[`spinner (isCI = true) > process exit handling > uses global custom cancel message from settings 1`] = ` 268 268 [ 269 - "[?25l", 269 + "<cursor.hide>", 270 270 "│ 271 271 ", 272 272 "■ Global cancel message 273 273 ", 274 - "[?25h", 274 + "<cursor.show>", 275 275 ] 276 276 `; 277 277 278 278 exports[`spinner (isCI = true) > process exit handling > uses global custom error message from settings 1`] = ` 279 279 [ 280 - "[?25l", 280 + "<cursor.hide>", 281 281 "│ 282 282 ", 283 283 "▲ Global error message 284 284 ", 285 - "[?25h", 285 + "<cursor.show>", 286 286 ] 287 287 `; 288 288 289 289 exports[`spinner (isCI = true) > start > renders frames at interval 1`] = ` 290 290 [ 291 - "[?25l", 291 + "<cursor.hide>", 292 292 "│ 293 293 ", 294 294 "◒ ...", ··· 297 297 298 298 exports[`spinner (isCI = true) > start > renders message 1`] = ` 299 299 [ 300 - "[?25l", 300 + "<cursor.hide>", 301 301 "│ 302 302 ", 303 303 "◒ foo...", ··· 306 306 307 307 exports[`spinner (isCI = true) > start > renders timer when indicator is "timer" 1`] = ` 308 308 [ 309 - "[?25l", 309 + "<cursor.hide>", 310 310 "│ 311 311 ", 312 312 "◒ ...", ··· 315 315 316 316 exports[`spinner (isCI = true) > stop > renders cancel symbol if code = 1 1`] = ` 317 317 [ 318 - "[?25l", 318 + "<cursor.hide>", 319 319 "│ 320 320 ", 321 321 "◒ ...", 322 322 " 323 323 ", 324 - "", 325 - "", 324 + "<cursor.backward count=999>", 325 + "<erase.down>", 326 326 "■ 327 327 ", 328 - "[?25h", 328 + "<cursor.show>", 329 329 ] 330 330 `; 331 331 332 332 exports[`spinner (isCI = true) > stop > renders error symbol if code > 1 1`] = ` 333 333 [ 334 - "[?25l", 334 + "<cursor.hide>", 335 335 "│ 336 336 ", 337 337 "◒ ...", 338 338 " 339 339 ", 340 - "", 341 - "", 340 + "<cursor.backward count=999>", 341 + "<erase.down>", 342 342 "▲ 343 343 ", 344 - "[?25h", 344 + "<cursor.show>", 345 345 ] 346 346 `; 347 347 348 348 exports[`spinner (isCI = true) > stop > renders message 1`] = ` 349 349 [ 350 - "[?25l", 350 + "<cursor.hide>", 351 351 "│ 352 352 ", 353 353 "◒ ...", 354 354 " 355 355 ", 356 - "", 357 - "", 356 + "<cursor.backward count=999>", 357 + "<erase.down>", 358 358 "◇ foo 359 359 ", 360 - "[?25h", 360 + "<cursor.show>", 361 361 ] 362 362 `; 363 363 364 364 exports[`spinner (isCI = true) > stop > renders message without removing dots 1`] = ` 365 365 [ 366 - "[?25l", 366 + "<cursor.hide>", 367 367 "│ 368 368 ", 369 369 "◒ ...", 370 370 " 371 371 ", 372 - "", 373 - "", 372 + "<cursor.backward count=999>", 373 + "<erase.down>", 374 374 "◇ foo. 375 375 ", 376 - "[?25h", 376 + "<cursor.show>", 377 377 ] 378 378 `; 379 379 380 380 exports[`spinner (isCI = true) > stop > renders submit symbol and stops spinner 1`] = ` 381 381 [ 382 - "[?25l", 382 + "<cursor.hide>", 383 383 "│ 384 384 ", 385 385 "◒ ...", 386 386 " 387 387 ", 388 - "", 389 - "", 388 + "<cursor.backward count=999>", 389 + "<erase.down>", 390 390 "◇ 391 391 ", 392 - "[?25h", 392 + "<cursor.show>", 393 393 ] 394 394 `;
+118 -118
packages/prompts/test/__snapshots__/task-log.test.ts.snap
··· 10 10 ", 11 11 "│ line 0 12 12 ", 13 - "", 13 + "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 14 14 "│ line 0 15 15 │ line 1 16 16 ", 17 - "", 17 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 18 18 "│ 19 19 ■ some error! 20 20 ", ··· 31 31 ", 32 32 "│ line 0 33 33 ", 34 - "", 34 + "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 35 35 "│ line 0 36 36 │ line 1 37 37 ", 38 - "", 38 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 39 39 "│ 40 40 ■ some error! 41 41 ", ··· 56 56 ", 57 57 "│ line 0 58 58 ", 59 - "", 59 + "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 60 60 "│ line 0 61 61 │ line 1 62 62 ", ··· 87 87 ", 88 88 "│ line 0 89 89 ", 90 - "", 90 + "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 91 91 "│ line 0 92 92 │ line 1 93 93 ", 94 - "", 94 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 95 95 "│ line 1 96 96 │ line 2 97 97 ", ··· 110 110 ", 111 111 "│ line 1 112 112 ", 113 - "", 113 + "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 114 114 "│ line 1 115 115 │  116 116 ", 117 - "", 117 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 118 118 "│ line 1 119 119 │  120 120 │ line 3 ··· 132 132 ", 133 133 "│ line 0 134 134 ", 135 - "", 135 + "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 136 136 "│ line 0still line 0 137 137 ", 138 - "", 138 + "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 139 139 "│ line 0still line 0 140 140 │ line 1 141 141 ", ··· 152 152 ", 153 153 "│ line 0 154 154 ", 155 - "", 155 + "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 156 156 "│ line 0still line 0 157 157 ", 158 - "", 158 + "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 159 159 "│ line 0still line 0 160 160 │ line 1 161 161 ", ··· 172 172 ", 173 173 "│ line 0 174 174 ", 175 - "", 175 + "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 176 176 "│ line 0 177 177 │ line 1 178 178 ", 179 - "", 179 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 180 180 "│ line 0 181 181 │ line 1still line 1 182 182 ", ··· 193 193 ", 194 194 "│ line 0 195 195 ", 196 - "", 196 + "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 197 197 "│ line 0 198 198 │ line 1 199 199 ", 200 - "", 200 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 201 201 "│ line 1 202 202 │ line 2 203 203 ", 204 - "", 204 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 205 205 "│ line 2 206 206 │ line 3 207 207 ", 208 - "", 208 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 209 209 "│ 210 210 ■ woo! 211 211 ", ··· 226 226 ", 227 227 "│ line 0 228 228 ", 229 - "", 229 + "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 230 230 "│ line 0 231 231 │ line 1 232 232 ", 233 - "", 233 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 234 234 "│ line 0 235 235 │ line 1 236 236 │ line 2 237 237 ", 238 - "", 238 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 239 239 "│ line 0 240 240 │ line 1 241 241 │ line 2 242 242 │ line 3 243 243 ", 244 - "", 244 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 245 245 "│ 246 246 ■ woo! 247 247 ", ··· 264 264 ", 265 265 "│ line 0 266 266 ", 267 - "", 267 + "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 268 268 "│ line 0 269 269 │ line 1 270 270 ", 271 - "", 271 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 272 272 "│ line 1 273 273 │ line 2 274 274 ", 275 - "", 275 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 276 276 "│ line 2 277 277 │ line 3 278 278 ", 279 - "", 279 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 280 280 "│ 281 281 ■ woo! 282 282 ", ··· 297 297 ", 298 298 "│ line 0 299 299 ", 300 - "", 300 + "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 301 301 "│ line 0 302 302 │ line 1 303 303 ", 304 - "", 304 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 305 305 "│ line 0 306 306 │ line 1 307 307 │ line 2 308 308 ", 309 - "", 309 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 310 310 "│ line 0 311 311 │ line 1 312 312 │ line 2 313 313 │ line 3 314 314 ", 315 - "", 315 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 316 316 "│ 317 317 ■ woo! 318 318 ", ··· 335 335 ", 336 336 "│ line 0 337 337 ", 338 - "", 338 + "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 339 339 "│ line 0 340 340 │ line 1 341 341 ", 342 - "", 342 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 343 343 "│ line 1 344 344 │ line 2 345 345 ", 346 - "", 346 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 347 347 "│ line 2 348 348 │ line 3 349 349 ", 350 - "", 350 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 351 351 "│ 352 352 ■ woo! 353 353 ", ··· 370 370 ", 371 371 "│ line 0 372 372 ", 373 - "", 373 + "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 374 374 "│ line 0 375 375 │ line 1 376 376 ", 377 - "", 377 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 378 378 "│ line 1 379 379 │ line 2 380 380 ", 381 - "", 381 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 382 382 "│ line 2 383 383 │ line 3 384 384 ", 385 - "", 385 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 386 386 "│ 387 387 ◆ woo! 388 388 ", ··· 403 403 ", 404 404 "│ line 0 405 405 ", 406 - "", 406 + "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 407 407 "│ line 0 408 408 │ line 1 409 409 ", 410 - "", 410 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 411 411 "│ line 0 412 412 │ line 1 413 413 │ line 2 414 414 ", 415 - "", 415 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 416 416 "│ line 0 417 417 │ line 1 418 418 │ line 2 419 419 │ line 3 420 420 ", 421 - "", 421 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 422 422 "│ 423 423 ◆ woo! 424 424 ", ··· 441 441 ", 442 442 "│ line 0 443 443 ", 444 - "", 444 + "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 445 445 "│ line 0 446 446 │ line 1 447 447 ", 448 - "", 448 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 449 449 "│ line 1 450 450 │ line 2 451 451 ", 452 - "", 452 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 453 453 "│ line 2 454 454 │ line 3 455 455 ", 456 - "", 456 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 457 457 "│ 458 458 ◆ woo! 459 459 ", ··· 474 474 ", 475 475 "│ line 0 476 476 ", 477 - "", 477 + "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 478 478 "│ line 0 479 479 │ line 1 480 480 ", 481 - "", 481 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 482 482 "│ line 0 483 483 │ line 1 484 484 │ line 2 485 485 ", 486 - "", 486 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 487 487 "│ line 0 488 488 │ line 1 489 489 │ line 2 490 490 │ line 3 491 491 ", 492 - "", 492 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 493 493 "│ 494 494 ◆ woo! 495 495 ", ··· 512 512 ", 513 513 "│ line 0 514 514 ", 515 - "", 515 + "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 516 516 "│ line 0 517 517 │ line 1 518 518 ", 519 - "", 519 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 520 520 "│ line 1 521 521 │ line 2 522 522 ", 523 - "", 523 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 524 524 "│ line 2 525 525 │ line 3 526 526 ", 527 - "", 527 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 528 528 "│ 529 529 ◆ woo! 530 530 ", ··· 547 547 ", 548 548 "│ line 0 549 549 ", 550 - "", 550 + "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 551 551 "│ line 0 552 552 │ line 1 553 553 ", 554 - "", 554 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 555 555 "│ 556 556 ◆ success! 557 557 ", ··· 568 568 ", 569 569 "│ line 0 570 570 ", 571 - "", 571 + "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 572 572 "│ line 0 573 573 │ line 1 574 574 ", 575 - "", 575 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 576 576 "│ 577 577 ◆ success! 578 578 ", ··· 602 602 ", 603 603 "│ 604 604 ", 605 - "", 606 - "", 605 + "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 606 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 607 607 "│ 608 608 ■ some error! 609 609 ", ··· 618 618 ", 619 619 "│ 620 620 ", 621 - "", 622 - "", 621 + "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 622 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 623 623 "│ 624 624 ■ some error! 625 625 ", ··· 638 638 ", 639 639 "│ 640 640 ", 641 - "", 641 + "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 642 642 ] 643 643 `; 644 644 ··· 661 661 ", 662 662 "│ 663 663 ", 664 - "", 665 - "", 664 + "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 665 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 666 666 ] 667 667 `; 668 668 ··· 674 674 ", 675 675 "│ 676 676 ", 677 - "", 678 - "", 677 + "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 678 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 679 679 ] 680 680 `; 681 681 ··· 687 687 ", 688 688 "│ 689 689 ", 690 - "", 691 - "", 690 + "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 691 + "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 692 692 ] 693 693 `; 694 694 ··· 700 700 ", 701 701 "│ 702 702 ", 703 - "", 704 - "", 703 + "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 704 + "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 705 705 ] 706 706 `; 707 707 ··· 713 713 ", 714 714 "│ 715 715 ", 716 - "", 717 - "", 716 + "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 717 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 718 718 ] 719 719 `; 720 720 ··· 726 726 ", 727 727 "│ 728 728 ", 729 - "", 730 - "", 731 - "", 732 - "", 729 + "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 730 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 731 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 732 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 733 733 "│ 734 734 ■ woo! 735 735 ", ··· 748 748 ", 749 749 "│ 750 750 ", 751 - "", 752 - "", 753 - "", 754 - "", 751 + "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 752 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 753 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 754 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 755 755 "│ 756 756 ■ woo! 757 757 ", ··· 772 772 ", 773 773 "│ 774 774 ", 775 - "", 776 - "", 777 - "", 778 - "", 775 + "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 776 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 777 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 778 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 779 779 "│ 780 780 ■ woo! 781 781 ", ··· 794 794 ", 795 795 "│ 796 796 ", 797 - "", 798 - "", 799 - "", 800 - "", 797 + "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 798 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 799 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 800 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 801 801 "│ 802 802 ■ woo! 803 803 ", ··· 818 818 ", 819 819 "│ 820 820 ", 821 - "", 822 - "", 823 - "", 824 - "", 821 + "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 822 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 823 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 824 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 825 825 "│ 826 826 ■ woo! 827 827 ", ··· 842 842 ", 843 843 "│ 844 844 ", 845 - "", 846 - "", 847 - "", 848 - "", 845 + "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 846 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 847 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 848 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 849 849 "│ 850 850 ◆ woo! 851 851 ", ··· 864 864 ", 865 865 "│ 866 866 ", 867 - "", 868 - "", 869 - "", 870 - "", 867 + "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 868 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 869 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 870 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 871 871 "│ 872 872 ◆ woo! 873 873 ", ··· 888 888 ", 889 889 "│ 890 890 ", 891 - "", 892 - "", 893 - "", 894 - "", 891 + "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 892 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 893 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 894 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 895 895 "│ 896 896 ◆ woo! 897 897 ", ··· 910 910 ", 911 911 "│ 912 912 ", 913 - "", 914 - "", 915 - "", 916 - "", 913 + "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 914 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 915 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 916 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 917 917 "│ 918 918 ◆ woo! 919 919 ", ··· 934 934 ", 935 935 "│ 936 936 ", 937 - "", 938 - "", 939 - "", 940 - "", 937 + "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 938 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 939 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 940 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 941 941 "│ 942 942 ◆ woo! 943 943 ", ··· 958 958 ", 959 959 "│ 960 960 ", 961 - "", 962 - "", 961 + "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 962 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 963 963 "│ 964 964 ◆ success! 965 965 ", ··· 974 974 ", 975 975 "│ 976 976 ", 977 - "", 978 - "", 977 + "<erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 978 + "<erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.up count=1><erase.line><cursor.left count=1>", 979 979 "│ 980 980 ◆ success! 981 981 ",
+152 -152
packages/prompts/test/__snapshots__/text.test.ts.snap
··· 2 2 3 3 exports[`text (isCI = false) > can cancel 1`] = ` 4 4 [ 5 - "[?25l", 5 + "<cursor.hide>", 6 6 "│ 7 7 ◆ foo 8 8 │ _ 9 9 └ 10 10 ", 11 - "", 12 - "", 13 - "", 11 + "<cursor.backward count=999><cursor.up count=4>", 12 + "<cursor.down count=1>", 13 + "<erase.down>", 14 14 "■ foo 15 15 │", 16 16 " 17 17 ", 18 - "[?25h", 18 + "<cursor.show>", 19 19 ] 20 20 `; 21 21 22 22 exports[`text (isCI = false) > defaultValue sets the value but does not render 1`] = ` 23 23 [ 24 - "[?25l", 24 + "<cursor.hide>", 25 25 "│ 26 26 ◆ foo 27 27 │ _ 28 28 └ 29 29 ", 30 - "", 31 - "", 32 - "", 30 + "<cursor.backward count=999><cursor.up count=4>", 31 + "<cursor.down count=1>", 32 + "<erase.down>", 33 33 "◇ foo 34 34 │ bar", 35 35 " 36 36 ", 37 - "[?25h", 37 + "<cursor.show>", 38 38 ] 39 39 `; 40 40 41 41 exports[`text (isCI = false) > renders cancelled value if one set 1`] = ` 42 42 [ 43 - "[?25l", 43 + "<cursor.hide>", 44 44 "│ 45 45 ◆ foo 46 46 │ _ 47 47 └ 48 48 ", 49 - "", 50 - "", 51 - "", 49 + "<cursor.backward count=999><cursor.up count=4>", 50 + "<cursor.down count=2>", 51 + "<erase.line><cursor.left count=1>", 52 52 "│ x█", 53 - "", 54 - "", 55 - "", 56 - "", 53 + "<cursor.down count=2>", 54 + "<cursor.backward count=999><cursor.up count=4>", 55 + "<cursor.down count=2>", 56 + "<erase.line><cursor.left count=1>", 57 57 "│ xy█", 58 - "", 59 - "", 60 - "", 61 - "", 58 + "<cursor.down count=2>", 59 + "<cursor.backward count=999><cursor.up count=4>", 60 + "<cursor.down count=1>", 61 + "<erase.down>", 62 62 "■ foo 63 63 │ xy 64 64 │", 65 65 " 66 66 ", 67 - "[?25h", 67 + "<cursor.show>", 68 68 ] 69 69 `; 70 70 71 71 exports[`text (isCI = false) > renders message 1`] = ` 72 72 [ 73 - "[?25l", 73 + "<cursor.hide>", 74 74 "│ 75 75 ◆ foo 76 76 │ _ 77 77 └ 78 78 ", 79 - "", 80 - "", 81 - "", 79 + "<cursor.backward count=999><cursor.up count=4>", 80 + "<cursor.down count=1>", 81 + "<erase.down>", 82 82 "◇ foo 83 83 │ undefined", 84 84 " 85 85 ", 86 - "[?25h", 86 + "<cursor.show>", 87 87 ] 88 88 `; 89 89 90 90 exports[`text (isCI = false) > renders placeholder if set 1`] = ` 91 91 [ 92 - "[?25l", 92 + "<cursor.hide>", 93 93 "│ 94 94 ◆ foo 95 95 │ bar 96 96 └ 97 97 ", 98 - "", 99 - "", 100 - "", 98 + "<cursor.backward count=999><cursor.up count=4>", 99 + "<cursor.down count=1>", 100 + "<erase.down>", 101 101 "◇ foo 102 102 │ bar", 103 103 " 104 104 ", 105 - "[?25h", 105 + "<cursor.show>", 106 106 ] 107 107 `; 108 108 109 109 exports[`text (isCI = false) > renders submitted value 1`] = ` 110 110 [ 111 - "[?25l", 111 + "<cursor.hide>", 112 112 "│ 113 113 ◆ foo 114 114 │ _ 115 115 └ 116 116 ", 117 - "", 118 - "", 119 - "", 117 + "<cursor.backward count=999><cursor.up count=4>", 118 + "<cursor.down count=2>", 119 + "<erase.line><cursor.left count=1>", 120 120 "│ x█", 121 - "", 122 - "", 123 - "", 124 - "", 121 + "<cursor.down count=2>", 122 + "<cursor.backward count=999><cursor.up count=4>", 123 + "<cursor.down count=2>", 124 + "<erase.line><cursor.left count=1>", 125 125 "│ xy█", 126 - "", 127 - "", 128 - "", 129 - "", 126 + "<cursor.down count=2>", 127 + "<cursor.backward count=999><cursor.up count=4>", 128 + "<cursor.down count=1>", 129 + "<erase.down>", 130 130 "◇ foo 131 131 │ xy", 132 132 " 133 133 ", 134 - "[?25h", 134 + "<cursor.show>", 135 135 ] 136 136 `; 137 137 138 138 exports[`text (isCI = false) > validation errors render and clear (using Error) 1`] = ` 139 139 [ 140 - "[?25l", 140 + "<cursor.hide>", 141 141 "│ 142 142 ◆ foo 143 143 │ _ 144 144 └ 145 145 ", 146 - "", 147 - "", 148 - "", 146 + "<cursor.backward count=999><cursor.up count=4>", 147 + "<cursor.down count=2>", 148 + "<erase.line><cursor.left count=1>", 149 149 "│ x█", 150 - "", 151 - "", 152 - "", 153 - "", 150 + "<cursor.down count=2>", 151 + "<cursor.backward count=999><cursor.up count=4>", 152 + "<cursor.down count=1>", 153 + "<erase.down>", 154 154 "▲ foo 155 155 │ x█ 156 156 └ should be xy 157 157 ", 158 - "", 159 - "", 160 - "", 158 + "<cursor.backward count=999><cursor.up count=4>", 159 + "<cursor.down count=1>", 160 + "<erase.down>", 161 161 "◆ foo 162 162 │ xy█ 163 163 └ 164 164 ", 165 - "", 166 - "", 167 - "", 165 + "<cursor.backward count=999><cursor.up count=4>", 166 + "<cursor.down count=1>", 167 + "<erase.down>", 168 168 "◇ foo 169 169 │ xy", 170 170 " 171 171 ", 172 - "[?25h", 172 + "<cursor.show>", 173 173 ] 174 174 `; 175 175 176 176 exports[`text (isCI = false) > validation errors render and clear 1`] = ` 177 177 [ 178 - "[?25l", 178 + "<cursor.hide>", 179 179 "│ 180 180 ◆ foo 181 181 │ _ 182 182 └ 183 183 ", 184 - "", 185 - "", 186 - "", 184 + "<cursor.backward count=999><cursor.up count=4>", 185 + "<cursor.down count=2>", 186 + "<erase.line><cursor.left count=1>", 187 187 "│ x█", 188 - "", 189 - "", 190 - "", 191 - "", 188 + "<cursor.down count=2>", 189 + "<cursor.backward count=999><cursor.up count=4>", 190 + "<cursor.down count=1>", 191 + "<erase.down>", 192 192 "▲ foo 193 193 │ x█ 194 194 └ should be xy 195 195 ", 196 - "", 197 - "", 198 - "", 196 + "<cursor.backward count=999><cursor.up count=4>", 197 + "<cursor.down count=1>", 198 + "<erase.down>", 199 199 "◆ foo 200 200 │ xy█ 201 201 └ 202 202 ", 203 - "", 204 - "", 205 - "", 203 + "<cursor.backward count=999><cursor.up count=4>", 204 + "<cursor.down count=1>", 205 + "<erase.down>", 206 206 "◇ foo 207 207 │ xy", 208 208 " 209 209 ", 210 - "[?25h", 210 + "<cursor.show>", 211 211 ] 212 212 `; 213 213 214 214 exports[`text (isCI = true) > can cancel 1`] = ` 215 215 [ 216 - "[?25l", 216 + "<cursor.hide>", 217 217 "│ 218 218 ◆ foo 219 219 │ _ 220 220 └ 221 221 ", 222 - "", 223 - "", 224 - "", 222 + "<cursor.backward count=999><cursor.up count=4>", 223 + "<cursor.down count=1>", 224 + "<erase.down>", 225 225 "■ foo 226 226 │", 227 227 " 228 228 ", 229 - "[?25h", 229 + "<cursor.show>", 230 230 ] 231 231 `; 232 232 233 233 exports[`text (isCI = true) > defaultValue sets the value but does not render 1`] = ` 234 234 [ 235 - "[?25l", 235 + "<cursor.hide>", 236 236 "│ 237 237 ◆ foo 238 238 │ _ 239 239 └ 240 240 ", 241 - "", 242 - "", 243 - "", 241 + "<cursor.backward count=999><cursor.up count=4>", 242 + "<cursor.down count=1>", 243 + "<erase.down>", 244 244 "◇ foo 245 245 │ bar", 246 246 " 247 247 ", 248 - "[?25h", 248 + "<cursor.show>", 249 249 ] 250 250 `; 251 251 252 252 exports[`text (isCI = true) > renders cancelled value if one set 1`] = ` 253 253 [ 254 - "[?25l", 254 + "<cursor.hide>", 255 255 "│ 256 256 ◆ foo 257 257 │ _ 258 258 └ 259 259 ", 260 - "", 261 - "", 262 - "", 260 + "<cursor.backward count=999><cursor.up count=4>", 261 + "<cursor.down count=2>", 262 + "<erase.line><cursor.left count=1>", 263 263 "│ x█", 264 - "", 265 - "", 266 - "", 267 - "", 264 + "<cursor.down count=2>", 265 + "<cursor.backward count=999><cursor.up count=4>", 266 + "<cursor.down count=2>", 267 + "<erase.line><cursor.left count=1>", 268 268 "│ xy█", 269 - "", 270 - "", 271 - "", 272 - "", 269 + "<cursor.down count=2>", 270 + "<cursor.backward count=999><cursor.up count=4>", 271 + "<cursor.down count=1>", 272 + "<erase.down>", 273 273 "■ foo 274 274 │ xy 275 275 │", 276 276 " 277 277 ", 278 - "[?25h", 278 + "<cursor.show>", 279 279 ] 280 280 `; 281 281 282 282 exports[`text (isCI = true) > renders message 1`] = ` 283 283 [ 284 - "[?25l", 284 + "<cursor.hide>", 285 285 "│ 286 286 ◆ foo 287 287 │ _ 288 288 └ 289 289 ", 290 - "", 291 - "", 292 - "", 290 + "<cursor.backward count=999><cursor.up count=4>", 291 + "<cursor.down count=1>", 292 + "<erase.down>", 293 293 "◇ foo 294 294 │ undefined", 295 295 " 296 296 ", 297 - "[?25h", 297 + "<cursor.show>", 298 298 ] 299 299 `; 300 300 301 301 exports[`text (isCI = true) > renders placeholder if set 1`] = ` 302 302 [ 303 - "[?25l", 303 + "<cursor.hide>", 304 304 "│ 305 305 ◆ foo 306 306 │ bar 307 307 └ 308 308 ", 309 - "", 310 - "", 311 - "", 309 + "<cursor.backward count=999><cursor.up count=4>", 310 + "<cursor.down count=1>", 311 + "<erase.down>", 312 312 "◇ foo 313 313 │ bar", 314 314 " 315 315 ", 316 - "[?25h", 316 + "<cursor.show>", 317 317 ] 318 318 `; 319 319 320 320 exports[`text (isCI = true) > renders submitted value 1`] = ` 321 321 [ 322 - "[?25l", 322 + "<cursor.hide>", 323 323 "│ 324 324 ◆ foo 325 325 │ _ 326 326 └ 327 327 ", 328 - "", 329 - "", 330 - "", 328 + "<cursor.backward count=999><cursor.up count=4>", 329 + "<cursor.down count=2>", 330 + "<erase.line><cursor.left count=1>", 331 331 "│ x█", 332 - "", 333 - "", 334 - "", 335 - "", 332 + "<cursor.down count=2>", 333 + "<cursor.backward count=999><cursor.up count=4>", 334 + "<cursor.down count=2>", 335 + "<erase.line><cursor.left count=1>", 336 336 "│ xy█", 337 - "", 338 - "", 339 - "", 340 - "", 337 + "<cursor.down count=2>", 338 + "<cursor.backward count=999><cursor.up count=4>", 339 + "<cursor.down count=1>", 340 + "<erase.down>", 341 341 "◇ foo 342 342 │ xy", 343 343 " 344 344 ", 345 - "[?25h", 345 + "<cursor.show>", 346 346 ] 347 347 `; 348 348 349 349 exports[`text (isCI = true) > validation errors render and clear (using Error) 1`] = ` 350 350 [ 351 - "[?25l", 351 + "<cursor.hide>", 352 352 "│ 353 353 ◆ foo 354 354 │ _ 355 355 └ 356 356 ", 357 - "", 358 - "", 359 - "", 357 + "<cursor.backward count=999><cursor.up count=4>", 358 + "<cursor.down count=2>", 359 + "<erase.line><cursor.left count=1>", 360 360 "│ x█", 361 - "", 362 - "", 363 - "", 364 - "", 361 + "<cursor.down count=2>", 362 + "<cursor.backward count=999><cursor.up count=4>", 363 + "<cursor.down count=1>", 364 + "<erase.down>", 365 365 "▲ foo 366 366 │ x█ 367 367 └ should be xy 368 368 ", 369 - "", 370 - "", 371 - "", 369 + "<cursor.backward count=999><cursor.up count=4>", 370 + "<cursor.down count=1>", 371 + "<erase.down>", 372 372 "◆ foo 373 373 │ xy█ 374 374 └ 375 375 ", 376 - "", 377 - "", 378 - "", 376 + "<cursor.backward count=999><cursor.up count=4>", 377 + "<cursor.down count=1>", 378 + "<erase.down>", 379 379 "◇ foo 380 380 │ xy", 381 381 " 382 382 ", 383 - "[?25h", 383 + "<cursor.show>", 384 384 ] 385 385 `; 386 386 387 387 exports[`text (isCI = true) > validation errors render and clear 1`] = ` 388 388 [ 389 - "[?25l", 389 + "<cursor.hide>", 390 390 "│ 391 391 ◆ foo 392 392 │ _ 393 393 └ 394 394 ", 395 - "", 396 - "", 397 - "", 395 + "<cursor.backward count=999><cursor.up count=4>", 396 + "<cursor.down count=2>", 397 + "<erase.line><cursor.left count=1>", 398 398 "│ x█", 399 - "", 400 - "", 401 - "", 402 - "", 399 + "<cursor.down count=2>", 400 + "<cursor.backward count=999><cursor.up count=4>", 401 + "<cursor.down count=1>", 402 + "<erase.down>", 403 403 "▲ foo 404 404 │ x█ 405 405 └ should be xy 406 406 ", 407 - "", 408 - "", 409 - "", 407 + "<cursor.backward count=999><cursor.up count=4>", 408 + "<cursor.down count=1>", 409 + "<erase.down>", 410 410 "◆ foo 411 411 │ xy█ 412 412 └ 413 413 ", 414 - "", 415 - "", 416 - "", 414 + "<cursor.backward count=999><cursor.up count=4>", 415 + "<cursor.down count=1>", 416 + "<erase.down>", 417 417 "◇ foo 418 418 │ xy", 419 419 " 420 420 ", 421 - "[?25h", 421 + "<cursor.show>", 422 422 ] 423 423 `;
+7
packages/prompts/vitest.config.ts
··· 1 + import { defineConfig } from 'vitest/config'; 2 + 3 + export default defineConfig({ 4 + test: { 5 + snapshotSerializers: ['vitest-ansi-serializer'] 6 + }, 7 + });
+12
pnpm-lock.yaml
··· 92 92 vitest: 93 93 specifier: ^3.1.1 94 94 version: 3.1.1(@types/node@18.16.0) 95 + vitest-ansi-serializer: 96 + specifier: ^0.1.2 97 + version: 0.1.2(vitest@3.1.1(@types/node@18.16.0)) 95 98 96 99 packages: 97 100 ··· 2616 2619 optional: true 2617 2620 terser: 2618 2621 optional: true 2622 + 2623 + vitest-ansi-serializer@0.1.2: 2624 + resolution: {integrity: sha512-9GHM76QixD3bwEPvbuZXWSJfTZKiTml5WuFxk41MlB/ZrSdsIyePaZoG6kA+xDmQepVbzmW1ozg2s0iSpEOp+Q==} 2625 + peerDependencies: 2626 + vitest: ^3.1.1 2619 2627 2620 2628 vitest@3.1.1: 2621 2629 resolution: {integrity: sha512-kiZc/IYmKICeBAZr9DQ5rT7/6bD9G7uqQEki4fxazi1jdVl2mWGzedtBs5s6llz59yQhVb7FFY2MbHzHCnT79Q==} ··· 5272 5280 optionalDependencies: 5273 5281 '@types/node': 18.16.0 5274 5282 fsevents: 2.3.3 5283 + 5284 + vitest-ansi-serializer@0.1.2(vitest@3.1.1(@types/node@18.16.0)): 5285 + dependencies: 5286 + vitest: 3.1.1(@types/node@18.16.0) 5275 5287 5276 5288 vitest@3.1.1(@types/node@18.16.0): 5277 5289 dependencies: