@itcase/config 1.6.76 → 1.6.78
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/package.json +4 -4
- package/smart-commit/cli.js +169 -35
- package/smart-commit/dancing-banana.js +339 -224
- package/smart-commit/nyan-cat.js +327 -0
- package/smart-commit/scripts/extract-banana.py +0 -255
|
@@ -1,265 +1,380 @@
|
|
|
1
|
-
//
|
|
2
|
-
// 8 frames
|
|
1
|
+
// Native pixels from the classic dancing banana GIF (Trym Stene, 1999).
|
|
2
|
+
// 33×35px, 8 frames — 2-space cells, integer scale to the terminal.
|
|
3
3
|
|
|
4
4
|
const RESET = '\x1b[0m'
|
|
5
|
-
const FRAME_WIDTH =
|
|
6
|
-
const FRAME_HEIGHT =
|
|
5
|
+
const FRAME_WIDTH = 33
|
|
6
|
+
const FRAME_HEIGHT = 35
|
|
7
7
|
|
|
8
8
|
const COLORS = {
|
|
9
9
|
B: 236,
|
|
10
|
-
d:
|
|
11
|
-
E: 255,
|
|
10
|
+
d: 142,
|
|
12
11
|
R: 196,
|
|
13
|
-
W:
|
|
12
|
+
W: 231,
|
|
14
13
|
Y: 226,
|
|
15
|
-
y:
|
|
14
|
+
y: 184,
|
|
16
15
|
}
|
|
17
16
|
|
|
18
17
|
const FRAMES = [
|
|
19
18
|
[
|
|
20
|
-
'
|
|
21
|
-
'
|
|
22
|
-
'
|
|
23
|
-
'
|
|
24
|
-
'
|
|
25
|
-
'
|
|
26
|
-
'
|
|
27
|
-
'
|
|
28
|
-
'
|
|
29
|
-
'
|
|
30
|
-
'
|
|
31
|
-
'
|
|
32
|
-
'..........
|
|
33
|
-
'
|
|
34
|
-
'
|
|
35
|
-
'
|
|
36
|
-
'
|
|
37
|
-
'
|
|
38
|
-
'
|
|
39
|
-
'
|
|
40
|
-
'
|
|
41
|
-
'
|
|
42
|
-
'
|
|
43
|
-
'
|
|
44
|
-
'
|
|
19
|
+
'.................................',
|
|
20
|
+
'.................................',
|
|
21
|
+
'.................................',
|
|
22
|
+
'.................................',
|
|
23
|
+
'.................................',
|
|
24
|
+
'.................................',
|
|
25
|
+
'.................BB..............',
|
|
26
|
+
'................BBBB.............',
|
|
27
|
+
'................BddB.............',
|
|
28
|
+
'................BdYBB............',
|
|
29
|
+
'................BYYYBB...........',
|
|
30
|
+
'................BYYYyBB..........',
|
|
31
|
+
'................BYYYyyB..........',
|
|
32
|
+
'..............BBBBBYYyBB.........',
|
|
33
|
+
'.............BWBWWWBYyyB.........',
|
|
34
|
+
'.............BBBBWWBYyyB.........',
|
|
35
|
+
'.............BWBWWWBYyyB.........',
|
|
36
|
+
'..............BBBBBYYByB.........',
|
|
37
|
+
'...............BYYYBBByB.........',
|
|
38
|
+
'...............BBBBRRByB.........',
|
|
39
|
+
'................BRRRByyB.........',
|
|
40
|
+
'................BRBBYyyB.........',
|
|
41
|
+
'...............BBBYYYyyB.........',
|
|
42
|
+
'.........BBB...BYYYYyyBB.BBB.....',
|
|
43
|
+
'........BWWBB.BBYYYYyyBWBBWWB....',
|
|
44
|
+
'........BWWWB.BYYYYyyBBWBWWWB....',
|
|
45
|
+
'........BWWBB.BYYYyyyBWWBBWWB....',
|
|
46
|
+
'.........BBBWBBYYyyyBBWWBBBB.....',
|
|
47
|
+
'...........BWBYYyyyBBBWBB........',
|
|
48
|
+
'...........BBBByyBBBWBBB.........',
|
|
49
|
+
'..........BBBBBBBBBBBBB..........',
|
|
50
|
+
'.........BBB........BBBB.........',
|
|
51
|
+
'........BWWWBBB...BBBWWWB........',
|
|
52
|
+
'........BWWWWWB...BWWWWWB........',
|
|
53
|
+
'.........BBBBBB...BBBBBB.........',
|
|
45
54
|
],
|
|
46
55
|
[
|
|
47
|
-
'
|
|
48
|
-
'
|
|
49
|
-
'
|
|
50
|
-
'
|
|
51
|
-
'
|
|
52
|
-
'
|
|
53
|
-
'
|
|
54
|
-
'............
|
|
55
|
-
'
|
|
56
|
-
'
|
|
57
|
-
'
|
|
58
|
-
'
|
|
59
|
-
'
|
|
60
|
-
'
|
|
61
|
-
'
|
|
62
|
-
'
|
|
63
|
-
'
|
|
64
|
-
'
|
|
65
|
-
'
|
|
66
|
-
'.........
|
|
67
|
-
'.........
|
|
68
|
-
'
|
|
69
|
-
'
|
|
70
|
-
'......
|
|
71
|
-
'
|
|
56
|
+
'.................................',
|
|
57
|
+
'.................................',
|
|
58
|
+
'.................................',
|
|
59
|
+
'.................................',
|
|
60
|
+
'.................BB..............',
|
|
61
|
+
'................BBBB.............',
|
|
62
|
+
'................BddB.............',
|
|
63
|
+
'................BdYBB............',
|
|
64
|
+
'................BYYYBB...........',
|
|
65
|
+
'................BYYYyBB..........',
|
|
66
|
+
'................BYYYyyB..........',
|
|
67
|
+
'..............BBBBBYYyBB.........',
|
|
68
|
+
'.............BWBWWWBYyyB.........',
|
|
69
|
+
'.............BBBBWWBYyyB.........',
|
|
70
|
+
'.............BWBWWWBYyyB.........',
|
|
71
|
+
'..............BBBBBYYByB.........',
|
|
72
|
+
'...............BYYYBBByB.........',
|
|
73
|
+
'...............BBBBRRByB.........',
|
|
74
|
+
'................BRRRByyB.........',
|
|
75
|
+
'................BRBBYyyB.........',
|
|
76
|
+
'...............BBBYYYyyB.........',
|
|
77
|
+
'.......BBB.....BYYYYYyyB...BBB...',
|
|
78
|
+
'......BWWBB....BYYYYyyBB..BBWWB..',
|
|
79
|
+
'......BWWWB...BBYYYYyyB...BWWWB..',
|
|
80
|
+
'......BWWBB...BYYYYyyBB...BBWWB..',
|
|
81
|
+
'.......BBBBB.BBYYYyyyBBB.BBBBB...',
|
|
82
|
+
'...........BBBBYYyyyBB.BBB.......',
|
|
83
|
+
'.............BYYyyyBB............',
|
|
84
|
+
'............BBByyBBB.............',
|
|
85
|
+
'...........BBBBBBB.BB............',
|
|
86
|
+
'...........B........B............',
|
|
87
|
+
'.........BBBB.......BBBB.........',
|
|
88
|
+
'........BWWWWBB...BBWWWWB........',
|
|
89
|
+
'........BWWWWWB...BWWWWWB........',
|
|
90
|
+
'.........BBBBB.....BBBBB.........',
|
|
72
91
|
],
|
|
73
92
|
[
|
|
74
|
-
'
|
|
75
|
-
'
|
|
76
|
-
'
|
|
77
|
-
'
|
|
78
|
-
'
|
|
79
|
-
'
|
|
80
|
-
'
|
|
81
|
-
'.
|
|
82
|
-
'.
|
|
83
|
-
'
|
|
84
|
-
'
|
|
85
|
-
'
|
|
86
|
-
'
|
|
87
|
-
'
|
|
88
|
-
'.........
|
|
89
|
-
'.........
|
|
90
|
-
'
|
|
91
|
-
'
|
|
92
|
-
'
|
|
93
|
-
'
|
|
94
|
-
'
|
|
95
|
-
'
|
|
96
|
-
'
|
|
97
|
-
'
|
|
98
|
-
'
|
|
93
|
+
'................BB...............',
|
|
94
|
+
'...............BddB..............',
|
|
95
|
+
'...............BddB..............',
|
|
96
|
+
'...............BydBB.............',
|
|
97
|
+
'..............BBYYyB.............',
|
|
98
|
+
'..............BYYYyBB............',
|
|
99
|
+
'..............BYYYYyB............',
|
|
100
|
+
'..BBB........BBBYBBBB........BBB.',
|
|
101
|
+
'.BWWBB......BWWWBWWWBB......BBWWB',
|
|
102
|
+
'.BWWWB......BWBWBWBWBB......BWWWB',
|
|
103
|
+
'.BWWBB......BWWWBWWWBB......BBWWB',
|
|
104
|
+
'..BBBB.......BBBYBBByB......BBBB.',
|
|
105
|
+
'.....BBB.....BYYYYYdBB....BBB....',
|
|
106
|
+
'.......BBB...BBBBBBRBB..BBB......',
|
|
107
|
+
'.........BBB.BRRRRRByB.BB........',
|
|
108
|
+
'...........BBBBRRRBYyBBB.........',
|
|
109
|
+
'.............BYBBBYYyB...........',
|
|
110
|
+
'.............BYYYYYyyB...........',
|
|
111
|
+
'.............BYYYYYyyB...........',
|
|
112
|
+
'.............BYYYYYyBB...........',
|
|
113
|
+
'.............BYYYYYyB............',
|
|
114
|
+
'.............BYYYYyyB............',
|
|
115
|
+
'.............BYYYYyBB............',
|
|
116
|
+
'.............BYYYyyB.............',
|
|
117
|
+
'.............BYYyyBB.............',
|
|
118
|
+
'.............BBByBB..............',
|
|
119
|
+
'..............BBBBB..............',
|
|
120
|
+
'..............B...B..............',
|
|
121
|
+
'.............BB...BB.............',
|
|
122
|
+
'.............B.....B.............',
|
|
123
|
+
'.............B.....B.............',
|
|
124
|
+
'..........BBBBB...BBBBB..........',
|
|
125
|
+
'........BBWWWWB...BWWWWBB........',
|
|
126
|
+
'........BWWWWBB...BBWWWWB........',
|
|
127
|
+
'........BBBBB.......BBBBB........',
|
|
99
128
|
],
|
|
100
129
|
[
|
|
101
|
-
'
|
|
102
|
-
'
|
|
103
|
-
'
|
|
104
|
-
'
|
|
105
|
-
'
|
|
106
|
-
'
|
|
107
|
-
'
|
|
108
|
-
'
|
|
109
|
-
'
|
|
110
|
-
'
|
|
111
|
-
'
|
|
112
|
-
'
|
|
113
|
-
'....
|
|
114
|
-
'....
|
|
115
|
-
'
|
|
116
|
-
'
|
|
117
|
-
'
|
|
118
|
-
'.........
|
|
119
|
-
'
|
|
120
|
-
'
|
|
121
|
-
'
|
|
122
|
-
'..............
|
|
123
|
-
'
|
|
124
|
-
'
|
|
125
|
-
'
|
|
130
|
+
'.................................',
|
|
131
|
+
'.................................',
|
|
132
|
+
'..............BB.................',
|
|
133
|
+
'.............BddB................',
|
|
134
|
+
'.............BddB................',
|
|
135
|
+
'............BBdyB................',
|
|
136
|
+
'............ByYYBB...............',
|
|
137
|
+
'...........BByYYYB...............',
|
|
138
|
+
'...........ByYYYYB...............',
|
|
139
|
+
'...........BBBBYBBB..............',
|
|
140
|
+
'..........BBWWWBWWWB.............',
|
|
141
|
+
'..........BBWBWBWBWB.............',
|
|
142
|
+
'..BB......BBWWWBWWWB....BBB......',
|
|
143
|
+
'.BWWBB....ByBBBYBBB....BBWWB.....',
|
|
144
|
+
'.BWWWB....BBdYYYYYB....BWWWB.....',
|
|
145
|
+
'.BWWBB....BBRBBBBBB....BBWWB.....',
|
|
146
|
+
'..BBBB....ByBRRRRRB....BBBB......',
|
|
147
|
+
'.....BB...ByYBRRRBB...BB.........',
|
|
148
|
+
'......BB..ByYYBBBYB..BB..........',
|
|
149
|
+
'.......BBBByyYYYYYBBBB...........',
|
|
150
|
+
'..........BByYYYYYB..............',
|
|
151
|
+
'...........ByYYYYYB..............',
|
|
152
|
+
'...........ByyYYYYB..............',
|
|
153
|
+
'...........BByYYYYB..............',
|
|
154
|
+
'............ByyYYYB..............',
|
|
155
|
+
'............BByyYYB..............',
|
|
156
|
+
'.............BByBBB..............',
|
|
157
|
+
'.............BBBBBB..............',
|
|
158
|
+
'.............B....B..............',
|
|
159
|
+
'............BB....BB.............',
|
|
160
|
+
'............B......B.............',
|
|
161
|
+
'..........BBB......BBBB..........',
|
|
162
|
+
'........BBWWWBB...BBWWWBB........',
|
|
163
|
+
'........BWWWWWB...BWWWWWB........',
|
|
164
|
+
'........BBBBBB.....BBBBBB........',
|
|
126
165
|
],
|
|
127
166
|
[
|
|
128
|
-
'
|
|
129
|
-
'
|
|
130
|
-
'
|
|
131
|
-
'
|
|
132
|
-
'
|
|
133
|
-
'
|
|
134
|
-
'
|
|
135
|
-
'
|
|
136
|
-
'
|
|
137
|
-
'
|
|
138
|
-
'
|
|
139
|
-
'
|
|
140
|
-
'
|
|
141
|
-
'
|
|
142
|
-
'
|
|
143
|
-
'
|
|
144
|
-
'
|
|
145
|
-
'
|
|
146
|
-
'
|
|
147
|
-
'
|
|
148
|
-
'
|
|
149
|
-
'
|
|
150
|
-
'
|
|
151
|
-
'
|
|
152
|
-
'
|
|
167
|
+
'.................................',
|
|
168
|
+
'.................................',
|
|
169
|
+
'.................................',
|
|
170
|
+
'.................................',
|
|
171
|
+
'.................................',
|
|
172
|
+
'.................................',
|
|
173
|
+
'..............BB.................',
|
|
174
|
+
'.............BBBB................',
|
|
175
|
+
'.............BddB................',
|
|
176
|
+
'............BBYdB................',
|
|
177
|
+
'...........BBYYYB................',
|
|
178
|
+
'..........BByYYYB................',
|
|
179
|
+
'..........ByyYYYB................',
|
|
180
|
+
'.........BByYYBBBBB..............',
|
|
181
|
+
'.........ByyYBWWWBWB.............',
|
|
182
|
+
'.........ByyYBWWBBBB.............',
|
|
183
|
+
'.........ByyYBWWWBWB.............',
|
|
184
|
+
'.........ByBYYBBBBB..............',
|
|
185
|
+
'.........ByBBBYYYB...............',
|
|
186
|
+
'.........ByBRRBBBB...............',
|
|
187
|
+
'.........ByyBRRRB................',
|
|
188
|
+
'.........ByyYBBRB................',
|
|
189
|
+
'.........ByyYYYBBB...............',
|
|
190
|
+
'.....BBB.BByyYYYYB...BBB.........',
|
|
191
|
+
'....BWWBBWByyYYYYBB.BBWWB........',
|
|
192
|
+
'....BWWWBWBByyYYYYB.BWWWB........',
|
|
193
|
+
'....BWWBBWWByyyYYYB.BBWWB........',
|
|
194
|
+
'.....BBBBWWBByyyYYBB.BBB.........',
|
|
195
|
+
'........BBWBBByyyYYB.B...........',
|
|
196
|
+
'.........BBBWBBByyBBBB...........',
|
|
197
|
+
'..........BBBBBBBBBBBBB..........',
|
|
198
|
+
'.........BBBB........BBB.........',
|
|
199
|
+
'........BWWWBBB...BBBWWWB........',
|
|
200
|
+
'........BWWWWWB...BWWWWWB........',
|
|
201
|
+
'.........BBBBBB...BBBBBB.........',
|
|
153
202
|
],
|
|
154
203
|
[
|
|
155
|
-
'
|
|
156
|
-
'
|
|
157
|
-
'
|
|
158
|
-
'
|
|
159
|
-
'
|
|
160
|
-
'
|
|
161
|
-
'
|
|
162
|
-
'
|
|
163
|
-
'
|
|
164
|
-
'
|
|
165
|
-
'
|
|
166
|
-
'
|
|
167
|
-
'
|
|
168
|
-
'
|
|
169
|
-
'
|
|
170
|
-
'
|
|
171
|
-
'
|
|
172
|
-
'
|
|
173
|
-
'
|
|
174
|
-
'.........
|
|
175
|
-
'.........
|
|
176
|
-
'
|
|
177
|
-
'
|
|
178
|
-
'
|
|
179
|
-
'
|
|
204
|
+
'.................................',
|
|
205
|
+
'.................................',
|
|
206
|
+
'.................................',
|
|
207
|
+
'.................................',
|
|
208
|
+
'..............BB.................',
|
|
209
|
+
'.............BBBB................',
|
|
210
|
+
'.............BddB................',
|
|
211
|
+
'............BBYdB................',
|
|
212
|
+
'...........BBYYYB................',
|
|
213
|
+
'..........BByYYYB................',
|
|
214
|
+
'..........ByyYYYB................',
|
|
215
|
+
'.........BByYYBBBBB..............',
|
|
216
|
+
'.........ByyYBWWWBWB.............',
|
|
217
|
+
'.........ByyYBWWBBBB.............',
|
|
218
|
+
'.........ByyYBWWWBWB.............',
|
|
219
|
+
'.........ByBYYBBBBB..............',
|
|
220
|
+
'.........ByBBBYYYB...............',
|
|
221
|
+
'.........ByBRRBBBB...............',
|
|
222
|
+
'.........ByyBRRRB................',
|
|
223
|
+
'.........ByyYBBRB................',
|
|
224
|
+
'.........ByyYYYBBB...............',
|
|
225
|
+
'...BBB...ByyYYYYYB.....BBB.......',
|
|
226
|
+
'..BWWBB..BByyYYYYB....BBWWB......',
|
|
227
|
+
'..BWWWB...ByyYYYYBB...BWWWB......',
|
|
228
|
+
'..BWWBB...BByyYYYYB...BBWWB......',
|
|
229
|
+
'...BBBBB.BBByyyYYYBB.BBBBB.......',
|
|
230
|
+
'.......BBB.BByyyYYBBBB...........',
|
|
231
|
+
'............BByyyYYB.............',
|
|
232
|
+
'.............BBByyBBB............',
|
|
233
|
+
'............BB.BBBBBBB...........',
|
|
234
|
+
'............B........B...........',
|
|
235
|
+
'.........BBBB.......BBBB.........',
|
|
236
|
+
'........BWWWWBB...BBWWWWB........',
|
|
237
|
+
'........BWWWWWB...BWWWWWB........',
|
|
238
|
+
'.........BBBBB.....BBBBB.........',
|
|
180
239
|
],
|
|
181
240
|
[
|
|
182
|
-
'
|
|
183
|
-
'
|
|
184
|
-
'
|
|
185
|
-
'
|
|
186
|
-
'
|
|
187
|
-
'
|
|
188
|
-
'
|
|
189
|
-
'
|
|
190
|
-
'.
|
|
191
|
-
'
|
|
192
|
-
'......
|
|
193
|
-
'
|
|
194
|
-
'
|
|
195
|
-
'
|
|
196
|
-
'.........
|
|
197
|
-
'.........
|
|
198
|
-
'
|
|
199
|
-
'
|
|
200
|
-
'
|
|
201
|
-
'
|
|
202
|
-
'
|
|
203
|
-
'
|
|
204
|
-
'
|
|
205
|
-
'
|
|
206
|
-
'
|
|
241
|
+
'...............BB................',
|
|
242
|
+
'..............BddB...............',
|
|
243
|
+
'..............BddB...............',
|
|
244
|
+
'.............BBdyB...............',
|
|
245
|
+
'.............ByYYBB..............',
|
|
246
|
+
'............BByYYYB..............',
|
|
247
|
+
'............ByYYYYB..............',
|
|
248
|
+
'.BBB........BBBBYBBB........BBB..',
|
|
249
|
+
'BWWBB......BBWWWBWWWB......BBWWB.',
|
|
250
|
+
'BWWWB......BBWBWBWBWB......BWWWB.',
|
|
251
|
+
'BWWBB......BBWWWBWWWB......BBWWB.',
|
|
252
|
+
'.BBBB......ByBBBYBBB.......BBBB..',
|
|
253
|
+
'....BBB....BBdYYYYYB.....BBB.....',
|
|
254
|
+
'......BBB..BBRBBBBBB...BBB.......',
|
|
255
|
+
'........BB.ByBRRRRRB.BBB.........',
|
|
256
|
+
'.........BBByYBRRRBBBB...........',
|
|
257
|
+
'...........ByYYBBBYB.............',
|
|
258
|
+
'...........ByyYYYYYB.............',
|
|
259
|
+
'...........ByyYYYYYB.............',
|
|
260
|
+
'...........BByYYYYYB.............',
|
|
261
|
+
'............ByYYYYYB.............',
|
|
262
|
+
'............ByyYYYYB.............',
|
|
263
|
+
'............BByYYYYB.............',
|
|
264
|
+
'.............ByyYYYB.............',
|
|
265
|
+
'.............BByyYYB.............',
|
|
266
|
+
'..............BByBBB.............',
|
|
267
|
+
'..............BBBBB..............',
|
|
268
|
+
'..............B...B..............',
|
|
269
|
+
'.............BB...BB.............',
|
|
270
|
+
'.............B.....B.............',
|
|
271
|
+
'.............B.....B.............',
|
|
272
|
+
'..........BBBBB...BBBBB..........',
|
|
273
|
+
'........BBWWWWB...BWWWWBB........',
|
|
274
|
+
'........BWWWWBB...BBWWWWB........',
|
|
275
|
+
'........BBBBB.......BBBBB........',
|
|
207
276
|
],
|
|
208
277
|
[
|
|
209
|
-
'
|
|
210
|
-
'
|
|
211
|
-
'
|
|
212
|
-
'
|
|
213
|
-
'
|
|
214
|
-
'
|
|
215
|
-
'
|
|
216
|
-
'
|
|
217
|
-
'
|
|
218
|
-
'
|
|
219
|
-
'
|
|
220
|
-
'
|
|
221
|
-
'
|
|
222
|
-
'
|
|
223
|
-
'
|
|
224
|
-
'
|
|
225
|
-
'
|
|
226
|
-
'
|
|
227
|
-
'..........
|
|
228
|
-
'
|
|
229
|
-
'..........
|
|
230
|
-
'
|
|
231
|
-
'
|
|
232
|
-
'
|
|
233
|
-
'
|
|
278
|
+
'.................................',
|
|
279
|
+
'.................................',
|
|
280
|
+
'.................BB..............',
|
|
281
|
+
'................BddB.............',
|
|
282
|
+
'................BddB.............',
|
|
283
|
+
'................BydBB............',
|
|
284
|
+
'...............BBYYyB............',
|
|
285
|
+
'...............BYYYyBB...........',
|
|
286
|
+
'...............BYYYYyB...........',
|
|
287
|
+
'..............BBBYBBBB...........',
|
|
288
|
+
'.............BWWWBWWWBB..........',
|
|
289
|
+
'.............BWBWBWBWBB..........',
|
|
290
|
+
'......BBB....BWWWBWWWBB.....BBB..',
|
|
291
|
+
'.....BWWBB....BBBYBBByB....BBWWB.',
|
|
292
|
+
'.....BWWWB....BYYYYYdBB....BWWWB.',
|
|
293
|
+
'.....BWWBB....BBBBBBRBB....BBWWB.',
|
|
294
|
+
'......BBBB....BRRRRRByB....BBBB..',
|
|
295
|
+
'.........BB...BBRRRBYyB...BB.....',
|
|
296
|
+
'..........BB..BYBBBYYyB..BB......',
|
|
297
|
+
'...........BBBBYYYYYyyBBBB.......',
|
|
298
|
+
'..............BYYYYYyBB..........',
|
|
299
|
+
'..............BYYYYYyB...........',
|
|
300
|
+
'..............BYYYYyyB...........',
|
|
301
|
+
'..............BYYYYyBB...........',
|
|
302
|
+
'..............BYYYyyB............',
|
|
303
|
+
'..............BYYyyBB............',
|
|
304
|
+
'..............BBByBB.............',
|
|
305
|
+
'..............BBBBBB.............',
|
|
306
|
+
'..............B....B.............',
|
|
307
|
+
'.............BB....BB............',
|
|
308
|
+
'.............B......B............',
|
|
309
|
+
'..........BBBB......BBB..........',
|
|
310
|
+
'........BBWWWBB...BBWWWBB........',
|
|
311
|
+
'........BWWWWWB...BWWWWWB........',
|
|
312
|
+
'........BBBBBB.....BBBBBB........',
|
|
234
313
|
],
|
|
235
314
|
]
|
|
236
315
|
|
|
237
|
-
function
|
|
316
|
+
function pickIndexes(srcSize, maxSize) {
|
|
317
|
+
if (srcSize <= maxSize) {
|
|
318
|
+
return Array.from({ length: srcSize }, (_, i) => i)
|
|
319
|
+
}
|
|
320
|
+
return Array.from({ length: maxSize }, (_, i) =>
|
|
321
|
+
Math.round((i * (srcSize - 1)) / (maxSize - 1)),
|
|
322
|
+
)
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
function cellScale(terminalColumns, terminalRows) {
|
|
326
|
+
const maxCols = Math.max(8, Math.floor((terminalColumns - 1) / 2))
|
|
327
|
+
const maxRows = Math.max(8, (terminalRows || 24) - 2)
|
|
328
|
+
return Math.max(
|
|
329
|
+
1,
|
|
330
|
+
Math.min(
|
|
331
|
+
Math.floor(maxCols / FRAME_WIDTH),
|
|
332
|
+
Math.floor(maxRows / FRAME_HEIGHT),
|
|
333
|
+
),
|
|
334
|
+
)
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
function renderRow(row, colIndexes, scale) {
|
|
238
338
|
const padded = row.padEnd(FRAME_WIDTH, '.').slice(0, FRAME_WIDTH)
|
|
239
339
|
let line = ''
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
340
|
+
let last = -1
|
|
341
|
+
for (const x of colIndexes) {
|
|
342
|
+
const code = padded[x] === '.' ? undefined : COLORS[padded[x]]
|
|
343
|
+
for (let s = 0; s < scale; s += 1) {
|
|
344
|
+
if (code === undefined) {
|
|
345
|
+
if (last !== -1) {
|
|
346
|
+
line += RESET
|
|
347
|
+
last = -1
|
|
348
|
+
}
|
|
349
|
+
line += ' '
|
|
350
|
+
continue
|
|
351
|
+
}
|
|
352
|
+
if (code !== last) {
|
|
353
|
+
line += `\x1b[48;5;${code}m`
|
|
354
|
+
last = code
|
|
355
|
+
}
|
|
247
356
|
line += ' '
|
|
248
|
-
continue
|
|
249
357
|
}
|
|
250
|
-
const bold = cell === 'E' ? '\x1b[1m' : ''
|
|
251
|
-
line += `${bold}\x1b[48;5;${code}m ${RESET}`
|
|
252
358
|
}
|
|
359
|
+
if (last !== -1) line += RESET
|
|
253
360
|
return line
|
|
254
361
|
}
|
|
255
362
|
|
|
256
|
-
export function getBananaFrame(index) {
|
|
363
|
+
export function getBananaFrame(index, terminalColumns = 80, terminalRows = 24) {
|
|
364
|
+
const scale = cellScale(terminalColumns, terminalRows)
|
|
365
|
+
const maxCols = Math.max(8, Math.floor((terminalColumns - 1) / (2 * scale)))
|
|
366
|
+
const maxRows = Math.max(8, Math.floor(((terminalRows || 24) - 2) / scale))
|
|
367
|
+
const colIndexes = pickIndexes(FRAME_WIDTH, maxCols)
|
|
368
|
+
const rowIndexes = pickIndexes(FRAME_HEIGHT, maxRows)
|
|
257
369
|
const frame = FRAMES[index % FRAMES.length]
|
|
258
|
-
const lines =
|
|
259
|
-
|
|
260
|
-
|
|
370
|
+
const lines = []
|
|
371
|
+
for (const y of rowIndexes) {
|
|
372
|
+
const rendered = renderRow(frame[y], colIndexes, scale)
|
|
373
|
+
for (let s = 0; s < scale; s += 1) {
|
|
374
|
+
lines.push(rendered)
|
|
375
|
+
}
|
|
261
376
|
}
|
|
262
|
-
return lines.
|
|
377
|
+
return lines.join('\n')
|
|
263
378
|
}
|
|
264
379
|
|
|
265
380
|
export function getBananaFrameCount() {
|