@valuerail/cli 1.0.0 → 1.1.0-beta.2

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/dist/index.js CHANGED
@@ -43028,6 +43028,1646 @@ var require_lib = __commonJS((exports, module) => {
43028
43028
  };
43029
43029
  });
43030
43030
 
43031
+ // ../../node_modules/cli-spinners/spinners.json
43032
+ var require_spinners = __commonJS((exports, module) => {
43033
+ module.exports = {
43034
+ dots: {
43035
+ interval: 80,
43036
+ frames: [
43037
+ "⠋",
43038
+ "⠙",
43039
+ "⠹",
43040
+ "⠸",
43041
+ "⠼",
43042
+ "⠴",
43043
+ "⠦",
43044
+ "⠧",
43045
+ "⠇",
43046
+ "⠏"
43047
+ ]
43048
+ },
43049
+ dots2: {
43050
+ interval: 80,
43051
+ frames: [
43052
+ "⣾",
43053
+ "⣽",
43054
+ "⣻",
43055
+ "⢿",
43056
+ "⡿",
43057
+ "⣟",
43058
+ "⣯",
43059
+ "⣷"
43060
+ ]
43061
+ },
43062
+ dots3: {
43063
+ interval: 80,
43064
+ frames: [
43065
+ "⠋",
43066
+ "⠙",
43067
+ "⠚",
43068
+ "⠞",
43069
+ "⠖",
43070
+ "⠦",
43071
+ "⠴",
43072
+ "⠲",
43073
+ "⠳",
43074
+ "⠓"
43075
+ ]
43076
+ },
43077
+ dots4: {
43078
+ interval: 80,
43079
+ frames: [
43080
+ "⠄",
43081
+ "⠆",
43082
+ "⠇",
43083
+ "⠋",
43084
+ "⠙",
43085
+ "⠸",
43086
+ "⠰",
43087
+ "⠠",
43088
+ "⠰",
43089
+ "⠸",
43090
+ "⠙",
43091
+ "⠋",
43092
+ "⠇",
43093
+ "⠆"
43094
+ ]
43095
+ },
43096
+ dots5: {
43097
+ interval: 80,
43098
+ frames: [
43099
+ "⠋",
43100
+ "⠙",
43101
+ "⠚",
43102
+ "⠒",
43103
+ "⠂",
43104
+ "⠂",
43105
+ "⠒",
43106
+ "⠲",
43107
+ "⠴",
43108
+ "⠦",
43109
+ "⠖",
43110
+ "⠒",
43111
+ "⠐",
43112
+ "⠐",
43113
+ "⠒",
43114
+ "⠓",
43115
+ "⠋"
43116
+ ]
43117
+ },
43118
+ dots6: {
43119
+ interval: 80,
43120
+ frames: [
43121
+ "⠁",
43122
+ "⠉",
43123
+ "⠙",
43124
+ "⠚",
43125
+ "⠒",
43126
+ "⠂",
43127
+ "⠂",
43128
+ "⠒",
43129
+ "⠲",
43130
+ "⠴",
43131
+ "⠤",
43132
+ "⠄",
43133
+ "⠄",
43134
+ "⠤",
43135
+ "⠴",
43136
+ "⠲",
43137
+ "⠒",
43138
+ "⠂",
43139
+ "⠂",
43140
+ "⠒",
43141
+ "⠚",
43142
+ "⠙",
43143
+ "⠉",
43144
+ "⠁"
43145
+ ]
43146
+ },
43147
+ dots7: {
43148
+ interval: 80,
43149
+ frames: [
43150
+ "⠈",
43151
+ "⠉",
43152
+ "⠋",
43153
+ "⠓",
43154
+ "⠒",
43155
+ "⠐",
43156
+ "⠐",
43157
+ "⠒",
43158
+ "⠖",
43159
+ "⠦",
43160
+ "⠤",
43161
+ "⠠",
43162
+ "⠠",
43163
+ "⠤",
43164
+ "⠦",
43165
+ "⠖",
43166
+ "⠒",
43167
+ "⠐",
43168
+ "⠐",
43169
+ "⠒",
43170
+ "⠓",
43171
+ "⠋",
43172
+ "⠉",
43173
+ "⠈"
43174
+ ]
43175
+ },
43176
+ dots8: {
43177
+ interval: 80,
43178
+ frames: [
43179
+ "⠁",
43180
+ "⠁",
43181
+ "⠉",
43182
+ "⠙",
43183
+ "⠚",
43184
+ "⠒",
43185
+ "⠂",
43186
+ "⠂",
43187
+ "⠒",
43188
+ "⠲",
43189
+ "⠴",
43190
+ "⠤",
43191
+ "⠄",
43192
+ "⠄",
43193
+ "⠤",
43194
+ "⠠",
43195
+ "⠠",
43196
+ "⠤",
43197
+ "⠦",
43198
+ "⠖",
43199
+ "⠒",
43200
+ "⠐",
43201
+ "⠐",
43202
+ "⠒",
43203
+ "⠓",
43204
+ "⠋",
43205
+ "⠉",
43206
+ "⠈",
43207
+ "⠈"
43208
+ ]
43209
+ },
43210
+ dots9: {
43211
+ interval: 80,
43212
+ frames: [
43213
+ "⢹",
43214
+ "⢺",
43215
+ "⢼",
43216
+ "⣸",
43217
+ "⣇",
43218
+ "⡧",
43219
+ "⡗",
43220
+ "⡏"
43221
+ ]
43222
+ },
43223
+ dots10: {
43224
+ interval: 80,
43225
+ frames: [
43226
+ "⢄",
43227
+ "⢂",
43228
+ "⢁",
43229
+ "⡁",
43230
+ "⡈",
43231
+ "⡐",
43232
+ "⡠"
43233
+ ]
43234
+ },
43235
+ dots11: {
43236
+ interval: 100,
43237
+ frames: [
43238
+ "⠁",
43239
+ "⠂",
43240
+ "⠄",
43241
+ "⡀",
43242
+ "⢀",
43243
+ "⠠",
43244
+ "⠐",
43245
+ "⠈"
43246
+ ]
43247
+ },
43248
+ dots12: {
43249
+ interval: 80,
43250
+ frames: [
43251
+ "⢀⠀",
43252
+ "⡀⠀",
43253
+ "⠄⠀",
43254
+ "⢂⠀",
43255
+ "⡂⠀",
43256
+ "⠅⠀",
43257
+ "⢃⠀",
43258
+ "⡃⠀",
43259
+ "⠍⠀",
43260
+ "⢋⠀",
43261
+ "⡋⠀",
43262
+ "⠍⠁",
43263
+ "⢋⠁",
43264
+ "⡋⠁",
43265
+ "⠍⠉",
43266
+ "⠋⠉",
43267
+ "⠋⠉",
43268
+ "⠉⠙",
43269
+ "⠉⠙",
43270
+ "⠉⠩",
43271
+ "⠈⢙",
43272
+ "⠈⡙",
43273
+ "⢈⠩",
43274
+ "⡀⢙",
43275
+ "⠄⡙",
43276
+ "⢂⠩",
43277
+ "⡂⢘",
43278
+ "⠅⡘",
43279
+ "⢃⠨",
43280
+ "⡃⢐",
43281
+ "⠍⡐",
43282
+ "⢋⠠",
43283
+ "⡋⢀",
43284
+ "⠍⡁",
43285
+ "⢋⠁",
43286
+ "⡋⠁",
43287
+ "⠍⠉",
43288
+ "⠋⠉",
43289
+ "⠋⠉",
43290
+ "⠉⠙",
43291
+ "⠉⠙",
43292
+ "⠉⠩",
43293
+ "⠈⢙",
43294
+ "⠈⡙",
43295
+ "⠈⠩",
43296
+ "⠀⢙",
43297
+ "⠀⡙",
43298
+ "⠀⠩",
43299
+ "⠀⢘",
43300
+ "⠀⡘",
43301
+ "⠀⠨",
43302
+ "⠀⢐",
43303
+ "⠀⡐",
43304
+ "⠀⠠",
43305
+ "⠀⢀",
43306
+ "⠀⡀"
43307
+ ]
43308
+ },
43309
+ dots13: {
43310
+ interval: 80,
43311
+ frames: [
43312
+ "⣼",
43313
+ "⣹",
43314
+ "⢻",
43315
+ "⠿",
43316
+ "⡟",
43317
+ "⣏",
43318
+ "⣧",
43319
+ "⣶"
43320
+ ]
43321
+ },
43322
+ dots8Bit: {
43323
+ interval: 80,
43324
+ frames: [
43325
+ "⠀",
43326
+ "⠁",
43327
+ "⠂",
43328
+ "⠃",
43329
+ "⠄",
43330
+ "⠅",
43331
+ "⠆",
43332
+ "⠇",
43333
+ "⡀",
43334
+ "⡁",
43335
+ "⡂",
43336
+ "⡃",
43337
+ "⡄",
43338
+ "⡅",
43339
+ "⡆",
43340
+ "⡇",
43341
+ "⠈",
43342
+ "⠉",
43343
+ "⠊",
43344
+ "⠋",
43345
+ "⠌",
43346
+ "⠍",
43347
+ "⠎",
43348
+ "⠏",
43349
+ "⡈",
43350
+ "⡉",
43351
+ "⡊",
43352
+ "⡋",
43353
+ "⡌",
43354
+ "⡍",
43355
+ "⡎",
43356
+ "⡏",
43357
+ "⠐",
43358
+ "⠑",
43359
+ "⠒",
43360
+ "⠓",
43361
+ "⠔",
43362
+ "⠕",
43363
+ "⠖",
43364
+ "⠗",
43365
+ "⡐",
43366
+ "⡑",
43367
+ "⡒",
43368
+ "⡓",
43369
+ "⡔",
43370
+ "⡕",
43371
+ "⡖",
43372
+ "⡗",
43373
+ "⠘",
43374
+ "⠙",
43375
+ "⠚",
43376
+ "⠛",
43377
+ "⠜",
43378
+ "⠝",
43379
+ "⠞",
43380
+ "⠟",
43381
+ "⡘",
43382
+ "⡙",
43383
+ "⡚",
43384
+ "⡛",
43385
+ "⡜",
43386
+ "⡝",
43387
+ "⡞",
43388
+ "⡟",
43389
+ "⠠",
43390
+ "⠡",
43391
+ "⠢",
43392
+ "⠣",
43393
+ "⠤",
43394
+ "⠥",
43395
+ "⠦",
43396
+ "⠧",
43397
+ "⡠",
43398
+ "⡡",
43399
+ "⡢",
43400
+ "⡣",
43401
+ "⡤",
43402
+ "⡥",
43403
+ "⡦",
43404
+ "⡧",
43405
+ "⠨",
43406
+ "⠩",
43407
+ "⠪",
43408
+ "⠫",
43409
+ "⠬",
43410
+ "⠭",
43411
+ "⠮",
43412
+ "⠯",
43413
+ "⡨",
43414
+ "⡩",
43415
+ "⡪",
43416
+ "⡫",
43417
+ "⡬",
43418
+ "⡭",
43419
+ "⡮",
43420
+ "⡯",
43421
+ "⠰",
43422
+ "⠱",
43423
+ "⠲",
43424
+ "⠳",
43425
+ "⠴",
43426
+ "⠵",
43427
+ "⠶",
43428
+ "⠷",
43429
+ "⡰",
43430
+ "⡱",
43431
+ "⡲",
43432
+ "⡳",
43433
+ "⡴",
43434
+ "⡵",
43435
+ "⡶",
43436
+ "⡷",
43437
+ "⠸",
43438
+ "⠹",
43439
+ "⠺",
43440
+ "⠻",
43441
+ "⠼",
43442
+ "⠽",
43443
+ "⠾",
43444
+ "⠿",
43445
+ "⡸",
43446
+ "⡹",
43447
+ "⡺",
43448
+ "⡻",
43449
+ "⡼",
43450
+ "⡽",
43451
+ "⡾",
43452
+ "⡿",
43453
+ "⢀",
43454
+ "⢁",
43455
+ "⢂",
43456
+ "⢃",
43457
+ "⢄",
43458
+ "⢅",
43459
+ "⢆",
43460
+ "⢇",
43461
+ "⣀",
43462
+ "⣁",
43463
+ "⣂",
43464
+ "⣃",
43465
+ "⣄",
43466
+ "⣅",
43467
+ "⣆",
43468
+ "⣇",
43469
+ "⢈",
43470
+ "⢉",
43471
+ "⢊",
43472
+ "⢋",
43473
+ "⢌",
43474
+ "⢍",
43475
+ "⢎",
43476
+ "⢏",
43477
+ "⣈",
43478
+ "⣉",
43479
+ "⣊",
43480
+ "⣋",
43481
+ "⣌",
43482
+ "⣍",
43483
+ "⣎",
43484
+ "⣏",
43485
+ "⢐",
43486
+ "⢑",
43487
+ "⢒",
43488
+ "⢓",
43489
+ "⢔",
43490
+ "⢕",
43491
+ "⢖",
43492
+ "⢗",
43493
+ "⣐",
43494
+ "⣑",
43495
+ "⣒",
43496
+ "⣓",
43497
+ "⣔",
43498
+ "⣕",
43499
+ "⣖",
43500
+ "⣗",
43501
+ "⢘",
43502
+ "⢙",
43503
+ "⢚",
43504
+ "⢛",
43505
+ "⢜",
43506
+ "⢝",
43507
+ "⢞",
43508
+ "⢟",
43509
+ "⣘",
43510
+ "⣙",
43511
+ "⣚",
43512
+ "⣛",
43513
+ "⣜",
43514
+ "⣝",
43515
+ "⣞",
43516
+ "⣟",
43517
+ "⢠",
43518
+ "⢡",
43519
+ "⢢",
43520
+ "⢣",
43521
+ "⢤",
43522
+ "⢥",
43523
+ "⢦",
43524
+ "⢧",
43525
+ "⣠",
43526
+ "⣡",
43527
+ "⣢",
43528
+ "⣣",
43529
+ "⣤",
43530
+ "⣥",
43531
+ "⣦",
43532
+ "⣧",
43533
+ "⢨",
43534
+ "⢩",
43535
+ "⢪",
43536
+ "⢫",
43537
+ "⢬",
43538
+ "⢭",
43539
+ "⢮",
43540
+ "⢯",
43541
+ "⣨",
43542
+ "⣩",
43543
+ "⣪",
43544
+ "⣫",
43545
+ "⣬",
43546
+ "⣭",
43547
+ "⣮",
43548
+ "⣯",
43549
+ "⢰",
43550
+ "⢱",
43551
+ "⢲",
43552
+ "⢳",
43553
+ "⢴",
43554
+ "⢵",
43555
+ "⢶",
43556
+ "⢷",
43557
+ "⣰",
43558
+ "⣱",
43559
+ "⣲",
43560
+ "⣳",
43561
+ "⣴",
43562
+ "⣵",
43563
+ "⣶",
43564
+ "⣷",
43565
+ "⢸",
43566
+ "⢹",
43567
+ "⢺",
43568
+ "⢻",
43569
+ "⢼",
43570
+ "⢽",
43571
+ "⢾",
43572
+ "⢿",
43573
+ "⣸",
43574
+ "⣹",
43575
+ "⣺",
43576
+ "⣻",
43577
+ "⣼",
43578
+ "⣽",
43579
+ "⣾",
43580
+ "⣿"
43581
+ ]
43582
+ },
43583
+ sand: {
43584
+ interval: 80,
43585
+ frames: [
43586
+ "⠁",
43587
+ "⠂",
43588
+ "⠄",
43589
+ "⡀",
43590
+ "⡈",
43591
+ "⡐",
43592
+ "⡠",
43593
+ "⣀",
43594
+ "⣁",
43595
+ "⣂",
43596
+ "⣄",
43597
+ "⣌",
43598
+ "⣔",
43599
+ "⣤",
43600
+ "⣥",
43601
+ "⣦",
43602
+ "⣮",
43603
+ "⣶",
43604
+ "⣷",
43605
+ "⣿",
43606
+ "⡿",
43607
+ "⠿",
43608
+ "⢟",
43609
+ "⠟",
43610
+ "⡛",
43611
+ "⠛",
43612
+ "⠫",
43613
+ "⢋",
43614
+ "⠋",
43615
+ "⠍",
43616
+ "⡉",
43617
+ "⠉",
43618
+ "⠑",
43619
+ "⠡",
43620
+ "⢁"
43621
+ ]
43622
+ },
43623
+ line: {
43624
+ interval: 130,
43625
+ frames: [
43626
+ "-",
43627
+ "\\",
43628
+ "|",
43629
+ "/"
43630
+ ]
43631
+ },
43632
+ line2: {
43633
+ interval: 100,
43634
+ frames: [
43635
+ "⠂",
43636
+ "-",
43637
+ "–",
43638
+ "—",
43639
+ "–",
43640
+ "-"
43641
+ ]
43642
+ },
43643
+ pipe: {
43644
+ interval: 100,
43645
+ frames: [
43646
+ "┤",
43647
+ "┘",
43648
+ "┴",
43649
+ "└",
43650
+ "├",
43651
+ "┌",
43652
+ "┬",
43653
+ "┐"
43654
+ ]
43655
+ },
43656
+ simpleDots: {
43657
+ interval: 400,
43658
+ frames: [
43659
+ ". ",
43660
+ ".. ",
43661
+ "...",
43662
+ " "
43663
+ ]
43664
+ },
43665
+ simpleDotsScrolling: {
43666
+ interval: 200,
43667
+ frames: [
43668
+ ". ",
43669
+ ".. ",
43670
+ "...",
43671
+ " ..",
43672
+ " .",
43673
+ " "
43674
+ ]
43675
+ },
43676
+ star: {
43677
+ interval: 70,
43678
+ frames: [
43679
+ "✶",
43680
+ "✸",
43681
+ "✹",
43682
+ "✺",
43683
+ "✹",
43684
+ "✷"
43685
+ ]
43686
+ },
43687
+ star2: {
43688
+ interval: 80,
43689
+ frames: [
43690
+ "+",
43691
+ "x",
43692
+ "*"
43693
+ ]
43694
+ },
43695
+ flip: {
43696
+ interval: 70,
43697
+ frames: [
43698
+ "_",
43699
+ "_",
43700
+ "_",
43701
+ "-",
43702
+ "`",
43703
+ "`",
43704
+ "'",
43705
+ "´",
43706
+ "-",
43707
+ "_",
43708
+ "_",
43709
+ "_"
43710
+ ]
43711
+ },
43712
+ hamburger: {
43713
+ interval: 100,
43714
+ frames: [
43715
+ "☱",
43716
+ "☲",
43717
+ "☴"
43718
+ ]
43719
+ },
43720
+ growVertical: {
43721
+ interval: 120,
43722
+ frames: [
43723
+ "▁",
43724
+ "▃",
43725
+ "▄",
43726
+ "▅",
43727
+ "▆",
43728
+ "▇",
43729
+ "▆",
43730
+ "▅",
43731
+ "▄",
43732
+ "▃"
43733
+ ]
43734
+ },
43735
+ growHorizontal: {
43736
+ interval: 120,
43737
+ frames: [
43738
+ "▏",
43739
+ "▎",
43740
+ "▍",
43741
+ "▌",
43742
+ "▋",
43743
+ "▊",
43744
+ "▉",
43745
+ "▊",
43746
+ "▋",
43747
+ "▌",
43748
+ "▍",
43749
+ "▎"
43750
+ ]
43751
+ },
43752
+ balloon: {
43753
+ interval: 140,
43754
+ frames: [
43755
+ " ",
43756
+ ".",
43757
+ "o",
43758
+ "O",
43759
+ "@",
43760
+ "*",
43761
+ " "
43762
+ ]
43763
+ },
43764
+ balloon2: {
43765
+ interval: 120,
43766
+ frames: [
43767
+ ".",
43768
+ "o",
43769
+ "O",
43770
+ "°",
43771
+ "O",
43772
+ "o",
43773
+ "."
43774
+ ]
43775
+ },
43776
+ noise: {
43777
+ interval: 100,
43778
+ frames: [
43779
+ "▓",
43780
+ "▒",
43781
+ "░"
43782
+ ]
43783
+ },
43784
+ bounce: {
43785
+ interval: 120,
43786
+ frames: [
43787
+ "⠁",
43788
+ "⠂",
43789
+ "⠄",
43790
+ "⠂"
43791
+ ]
43792
+ },
43793
+ boxBounce: {
43794
+ interval: 120,
43795
+ frames: [
43796
+ "▖",
43797
+ "▘",
43798
+ "▝",
43799
+ "▗"
43800
+ ]
43801
+ },
43802
+ boxBounce2: {
43803
+ interval: 100,
43804
+ frames: [
43805
+ "▌",
43806
+ "▀",
43807
+ "▐",
43808
+ "▄"
43809
+ ]
43810
+ },
43811
+ triangle: {
43812
+ interval: 50,
43813
+ frames: [
43814
+ "◢",
43815
+ "◣",
43816
+ "◤",
43817
+ "◥"
43818
+ ]
43819
+ },
43820
+ binary: {
43821
+ interval: 80,
43822
+ frames: [
43823
+ "010010",
43824
+ "001100",
43825
+ "100101",
43826
+ "111010",
43827
+ "111101",
43828
+ "010111",
43829
+ "101011",
43830
+ "111000",
43831
+ "110011",
43832
+ "110101"
43833
+ ]
43834
+ },
43835
+ arc: {
43836
+ interval: 100,
43837
+ frames: [
43838
+ "◜",
43839
+ "◠",
43840
+ "◝",
43841
+ "◞",
43842
+ "◡",
43843
+ "◟"
43844
+ ]
43845
+ },
43846
+ circle: {
43847
+ interval: 120,
43848
+ frames: [
43849
+ "◡",
43850
+ "⊙",
43851
+ "◠"
43852
+ ]
43853
+ },
43854
+ squareCorners: {
43855
+ interval: 180,
43856
+ frames: [
43857
+ "◰",
43858
+ "◳",
43859
+ "◲",
43860
+ "◱"
43861
+ ]
43862
+ },
43863
+ circleQuarters: {
43864
+ interval: 120,
43865
+ frames: [
43866
+ "◴",
43867
+ "◷",
43868
+ "◶",
43869
+ "◵"
43870
+ ]
43871
+ },
43872
+ circleHalves: {
43873
+ interval: 50,
43874
+ frames: [
43875
+ "◐",
43876
+ "◓",
43877
+ "◑",
43878
+ "◒"
43879
+ ]
43880
+ },
43881
+ squish: {
43882
+ interval: 100,
43883
+ frames: [
43884
+ "╫",
43885
+ "╪"
43886
+ ]
43887
+ },
43888
+ toggle: {
43889
+ interval: 250,
43890
+ frames: [
43891
+ "⊶",
43892
+ "⊷"
43893
+ ]
43894
+ },
43895
+ toggle2: {
43896
+ interval: 80,
43897
+ frames: [
43898
+ "▫",
43899
+ "▪"
43900
+ ]
43901
+ },
43902
+ toggle3: {
43903
+ interval: 120,
43904
+ frames: [
43905
+ "□",
43906
+ "■"
43907
+ ]
43908
+ },
43909
+ toggle4: {
43910
+ interval: 100,
43911
+ frames: [
43912
+ "■",
43913
+ "□",
43914
+ "▪",
43915
+ "▫"
43916
+ ]
43917
+ },
43918
+ toggle5: {
43919
+ interval: 100,
43920
+ frames: [
43921
+ "▮",
43922
+ "▯"
43923
+ ]
43924
+ },
43925
+ toggle6: {
43926
+ interval: 300,
43927
+ frames: [
43928
+ "ဝ",
43929
+ "၀"
43930
+ ]
43931
+ },
43932
+ toggle7: {
43933
+ interval: 80,
43934
+ frames: [
43935
+ "⦾",
43936
+ "⦿"
43937
+ ]
43938
+ },
43939
+ toggle8: {
43940
+ interval: 100,
43941
+ frames: [
43942
+ "◍",
43943
+ "◌"
43944
+ ]
43945
+ },
43946
+ toggle9: {
43947
+ interval: 100,
43948
+ frames: [
43949
+ "◉",
43950
+ "◎"
43951
+ ]
43952
+ },
43953
+ toggle10: {
43954
+ interval: 100,
43955
+ frames: [
43956
+ "㊂",
43957
+ "㊀",
43958
+ "㊁"
43959
+ ]
43960
+ },
43961
+ toggle11: {
43962
+ interval: 50,
43963
+ frames: [
43964
+ "⧇",
43965
+ "⧆"
43966
+ ]
43967
+ },
43968
+ toggle12: {
43969
+ interval: 120,
43970
+ frames: [
43971
+ "☗",
43972
+ "☖"
43973
+ ]
43974
+ },
43975
+ toggle13: {
43976
+ interval: 80,
43977
+ frames: [
43978
+ "=",
43979
+ "*",
43980
+ "-"
43981
+ ]
43982
+ },
43983
+ arrow: {
43984
+ interval: 100,
43985
+ frames: [
43986
+ "←",
43987
+ "↖",
43988
+ "↑",
43989
+ "↗",
43990
+ "→",
43991
+ "↘",
43992
+ "↓",
43993
+ "↙"
43994
+ ]
43995
+ },
43996
+ arrow2: {
43997
+ interval: 80,
43998
+ frames: [
43999
+ "⬆️ ",
44000
+ "↗️ ",
44001
+ "➡️ ",
44002
+ "↘️ ",
44003
+ "⬇️ ",
44004
+ "↙️ ",
44005
+ "⬅️ ",
44006
+ "↖️ "
44007
+ ]
44008
+ },
44009
+ arrow3: {
44010
+ interval: 120,
44011
+ frames: [
44012
+ "▹▹▹▹▹",
44013
+ "▸▹▹▹▹",
44014
+ "▹▸▹▹▹",
44015
+ "▹▹▸▹▹",
44016
+ "▹▹▹▸▹",
44017
+ "▹▹▹▹▸"
44018
+ ]
44019
+ },
44020
+ bouncingBar: {
44021
+ interval: 80,
44022
+ frames: [
44023
+ "[ ]",
44024
+ "[= ]",
44025
+ "[== ]",
44026
+ "[=== ]",
44027
+ "[====]",
44028
+ "[ ===]",
44029
+ "[ ==]",
44030
+ "[ =]",
44031
+ "[ ]",
44032
+ "[ =]",
44033
+ "[ ==]",
44034
+ "[ ===]",
44035
+ "[====]",
44036
+ "[=== ]",
44037
+ "[== ]",
44038
+ "[= ]"
44039
+ ]
44040
+ },
44041
+ bouncingBall: {
44042
+ interval: 80,
44043
+ frames: [
44044
+ "( ● )",
44045
+ "( ● )",
44046
+ "( ● )",
44047
+ "( ● )",
44048
+ "( ●)",
44049
+ "( ● )",
44050
+ "( ● )",
44051
+ "( ● )",
44052
+ "( ● )",
44053
+ "(● )"
44054
+ ]
44055
+ },
44056
+ smiley: {
44057
+ interval: 200,
44058
+ frames: [
44059
+ "😄 ",
44060
+ "😝 "
44061
+ ]
44062
+ },
44063
+ monkey: {
44064
+ interval: 300,
44065
+ frames: [
44066
+ "🙈 ",
44067
+ "🙈 ",
44068
+ "🙉 ",
44069
+ "🙊 "
44070
+ ]
44071
+ },
44072
+ hearts: {
44073
+ interval: 100,
44074
+ frames: [
44075
+ "💛 ",
44076
+ "💙 ",
44077
+ "💜 ",
44078
+ "💚 ",
44079
+ "❤️ "
44080
+ ]
44081
+ },
44082
+ clock: {
44083
+ interval: 100,
44084
+ frames: [
44085
+ "🕛 ",
44086
+ "🕐 ",
44087
+ "🕑 ",
44088
+ "🕒 ",
44089
+ "🕓 ",
44090
+ "🕔 ",
44091
+ "🕕 ",
44092
+ "🕖 ",
44093
+ "🕗 ",
44094
+ "🕘 ",
44095
+ "🕙 ",
44096
+ "🕚 "
44097
+ ]
44098
+ },
44099
+ earth: {
44100
+ interval: 180,
44101
+ frames: [
44102
+ "🌍 ",
44103
+ "🌎 ",
44104
+ "🌏 "
44105
+ ]
44106
+ },
44107
+ material: {
44108
+ interval: 17,
44109
+ frames: [
44110
+ "█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
44111
+ "██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
44112
+ "███▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
44113
+ "████▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
44114
+ "██████▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
44115
+ "██████▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
44116
+ "███████▁▁▁▁▁▁▁▁▁▁▁▁▁",
44117
+ "████████▁▁▁▁▁▁▁▁▁▁▁▁",
44118
+ "█████████▁▁▁▁▁▁▁▁▁▁▁",
44119
+ "█████████▁▁▁▁▁▁▁▁▁▁▁",
44120
+ "██████████▁▁▁▁▁▁▁▁▁▁",
44121
+ "███████████▁▁▁▁▁▁▁▁▁",
44122
+ "█████████████▁▁▁▁▁▁▁",
44123
+ "██████████████▁▁▁▁▁▁",
44124
+ "██████████████▁▁▁▁▁▁",
44125
+ "▁██████████████▁▁▁▁▁",
44126
+ "▁██████████████▁▁▁▁▁",
44127
+ "▁██████████████▁▁▁▁▁",
44128
+ "▁▁██████████████▁▁▁▁",
44129
+ "▁▁▁██████████████▁▁▁",
44130
+ "▁▁▁▁█████████████▁▁▁",
44131
+ "▁▁▁▁██████████████▁▁",
44132
+ "▁▁▁▁██████████████▁▁",
44133
+ "▁▁▁▁▁██████████████▁",
44134
+ "▁▁▁▁▁██████████████▁",
44135
+ "▁▁▁▁▁██████████████▁",
44136
+ "▁▁▁▁▁▁██████████████",
44137
+ "▁▁▁▁▁▁██████████████",
44138
+ "▁▁▁▁▁▁▁█████████████",
44139
+ "▁▁▁▁▁▁▁█████████████",
44140
+ "▁▁▁▁▁▁▁▁████████████",
44141
+ "▁▁▁▁▁▁▁▁████████████",
44142
+ "▁▁▁▁▁▁▁▁▁███████████",
44143
+ "▁▁▁▁▁▁▁▁▁███████████",
44144
+ "▁▁▁▁▁▁▁▁▁▁██████████",
44145
+ "▁▁▁▁▁▁▁▁▁▁██████████",
44146
+ "▁▁▁▁▁▁▁▁▁▁▁▁████████",
44147
+ "▁▁▁▁▁▁▁▁▁▁▁▁▁███████",
44148
+ "▁▁▁▁▁▁▁▁▁▁▁▁▁▁██████",
44149
+ "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████",
44150
+ "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████",
44151
+ "█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████",
44152
+ "██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███",
44153
+ "██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███",
44154
+ "███▁▁▁▁▁▁▁▁▁▁▁▁▁▁███",
44155
+ "████▁▁▁▁▁▁▁▁▁▁▁▁▁▁██",
44156
+ "█████▁▁▁▁▁▁▁▁▁▁▁▁▁▁█",
44157
+ "█████▁▁▁▁▁▁▁▁▁▁▁▁▁▁█",
44158
+ "██████▁▁▁▁▁▁▁▁▁▁▁▁▁█",
44159
+ "████████▁▁▁▁▁▁▁▁▁▁▁▁",
44160
+ "█████████▁▁▁▁▁▁▁▁▁▁▁",
44161
+ "█████████▁▁▁▁▁▁▁▁▁▁▁",
44162
+ "█████████▁▁▁▁▁▁▁▁▁▁▁",
44163
+ "█████████▁▁▁▁▁▁▁▁▁▁▁",
44164
+ "███████████▁▁▁▁▁▁▁▁▁",
44165
+ "████████████▁▁▁▁▁▁▁▁",
44166
+ "████████████▁▁▁▁▁▁▁▁",
44167
+ "██████████████▁▁▁▁▁▁",
44168
+ "██████████████▁▁▁▁▁▁",
44169
+ "▁██████████████▁▁▁▁▁",
44170
+ "▁██████████████▁▁▁▁▁",
44171
+ "▁▁▁█████████████▁▁▁▁",
44172
+ "▁▁▁▁▁████████████▁▁▁",
44173
+ "▁▁▁▁▁████████████▁▁▁",
44174
+ "▁▁▁▁▁▁███████████▁▁▁",
44175
+ "▁▁▁▁▁▁▁▁█████████▁▁▁",
44176
+ "▁▁▁▁▁▁▁▁█████████▁▁▁",
44177
+ "▁▁▁▁▁▁▁▁▁█████████▁▁",
44178
+ "▁▁▁▁▁▁▁▁▁█████████▁▁",
44179
+ "▁▁▁▁▁▁▁▁▁▁█████████▁",
44180
+ "▁▁▁▁▁▁▁▁▁▁▁████████▁",
44181
+ "▁▁▁▁▁▁▁▁▁▁▁████████▁",
44182
+ "▁▁▁▁▁▁▁▁▁▁▁▁███████▁",
44183
+ "▁▁▁▁▁▁▁▁▁▁▁▁███████▁",
44184
+ "▁▁▁▁▁▁▁▁▁▁▁▁▁███████",
44185
+ "▁▁▁▁▁▁▁▁▁▁▁▁▁███████",
44186
+ "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████",
44187
+ "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████",
44188
+ "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████",
44189
+ "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████",
44190
+ "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███",
44191
+ "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███",
44192
+ "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██",
44193
+ "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██",
44194
+ "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██",
44195
+ "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█",
44196
+ "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█",
44197
+ "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█",
44198
+ "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
44199
+ "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
44200
+ "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
44201
+ "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁"
44202
+ ]
44203
+ },
44204
+ moon: {
44205
+ interval: 80,
44206
+ frames: [
44207
+ "🌑 ",
44208
+ "🌒 ",
44209
+ "🌓 ",
44210
+ "🌔 ",
44211
+ "🌕 ",
44212
+ "🌖 ",
44213
+ "🌗 ",
44214
+ "🌘 "
44215
+ ]
44216
+ },
44217
+ runner: {
44218
+ interval: 140,
44219
+ frames: [
44220
+ "🚶 ",
44221
+ "🏃 "
44222
+ ]
44223
+ },
44224
+ pong: {
44225
+ interval: 80,
44226
+ frames: [
44227
+ "▐⠂ ▌",
44228
+ "▐⠈ ▌",
44229
+ "▐ ⠂ ▌",
44230
+ "▐ ⠠ ▌",
44231
+ "▐ ⡀ ▌",
44232
+ "▐ ⠠ ▌",
44233
+ "▐ ⠂ ▌",
44234
+ "▐ ⠈ ▌",
44235
+ "▐ ⠂ ▌",
44236
+ "▐ ⠠ ▌",
44237
+ "▐ ⡀ ▌",
44238
+ "▐ ⠠ ▌",
44239
+ "▐ ⠂ ▌",
44240
+ "▐ ⠈ ▌",
44241
+ "▐ ⠂▌",
44242
+ "▐ ⠠▌",
44243
+ "▐ ⡀▌",
44244
+ "▐ ⠠ ▌",
44245
+ "▐ ⠂ ▌",
44246
+ "▐ ⠈ ▌",
44247
+ "▐ ⠂ ▌",
44248
+ "▐ ⠠ ▌",
44249
+ "▐ ⡀ ▌",
44250
+ "▐ ⠠ ▌",
44251
+ "▐ ⠂ ▌",
44252
+ "▐ ⠈ ▌",
44253
+ "▐ ⠂ ▌",
44254
+ "▐ ⠠ ▌",
44255
+ "▐ ⡀ ▌",
44256
+ "▐⠠ ▌"
44257
+ ]
44258
+ },
44259
+ shark: {
44260
+ interval: 120,
44261
+ frames: [
44262
+ "▐|\\____________▌",
44263
+ "▐_|\\___________▌",
44264
+ "▐__|\\__________▌",
44265
+ "▐___|\\_________▌",
44266
+ "▐____|\\________▌",
44267
+ "▐_____|\\_______▌",
44268
+ "▐______|\\______▌",
44269
+ "▐_______|\\_____▌",
44270
+ "▐________|\\____▌",
44271
+ "▐_________|\\___▌",
44272
+ "▐__________|\\__▌",
44273
+ "▐___________|\\_▌",
44274
+ "▐____________|\\▌",
44275
+ "▐____________/|▌",
44276
+ "▐___________/|_▌",
44277
+ "▐__________/|__▌",
44278
+ "▐_________/|___▌",
44279
+ "▐________/|____▌",
44280
+ "▐_______/|_____▌",
44281
+ "▐______/|______▌",
44282
+ "▐_____/|_______▌",
44283
+ "▐____/|________▌",
44284
+ "▐___/|_________▌",
44285
+ "▐__/|__________▌",
44286
+ "▐_/|___________▌",
44287
+ "▐/|____________▌"
44288
+ ]
44289
+ },
44290
+ dqpb: {
44291
+ interval: 100,
44292
+ frames: [
44293
+ "d",
44294
+ "q",
44295
+ "p",
44296
+ "b"
44297
+ ]
44298
+ },
44299
+ weather: {
44300
+ interval: 100,
44301
+ frames: [
44302
+ "☀️ ",
44303
+ "☀️ ",
44304
+ "☀️ ",
44305
+ "🌤 ",
44306
+ "⛅️ ",
44307
+ "🌥 ",
44308
+ "☁️ ",
44309
+ "🌧 ",
44310
+ "🌨 ",
44311
+ "🌧 ",
44312
+ "🌨 ",
44313
+ "🌧 ",
44314
+ "🌨 ",
44315
+ "⛈ ",
44316
+ "🌨 ",
44317
+ "🌧 ",
44318
+ "🌨 ",
44319
+ "☁️ ",
44320
+ "🌥 ",
44321
+ "⛅️ ",
44322
+ "🌤 ",
44323
+ "☀️ ",
44324
+ "☀️ "
44325
+ ]
44326
+ },
44327
+ christmas: {
44328
+ interval: 400,
44329
+ frames: [
44330
+ "🌲",
44331
+ "🎄"
44332
+ ]
44333
+ },
44334
+ grenade: {
44335
+ interval: 80,
44336
+ frames: [
44337
+ "، ",
44338
+ "′ ",
44339
+ " ´ ",
44340
+ " ‾ ",
44341
+ " ⸌",
44342
+ " ⸊",
44343
+ " |",
44344
+ " ⁎",
44345
+ " ⁕",
44346
+ " ෴ ",
44347
+ " ⁓",
44348
+ " ",
44349
+ " ",
44350
+ " "
44351
+ ]
44352
+ },
44353
+ point: {
44354
+ interval: 125,
44355
+ frames: [
44356
+ "∙∙∙",
44357
+ "●∙∙",
44358
+ "∙●∙",
44359
+ "∙∙●",
44360
+ "∙∙∙"
44361
+ ]
44362
+ },
44363
+ layer: {
44364
+ interval: 150,
44365
+ frames: [
44366
+ "-",
44367
+ "=",
44368
+ "≡"
44369
+ ]
44370
+ },
44371
+ betaWave: {
44372
+ interval: 80,
44373
+ frames: [
44374
+ "ρββββββ",
44375
+ "βρβββββ",
44376
+ "ββρββββ",
44377
+ "βββρβββ",
44378
+ "ββββρββ",
44379
+ "βββββρβ",
44380
+ "ββββββρ"
44381
+ ]
44382
+ },
44383
+ fingerDance: {
44384
+ interval: 160,
44385
+ frames: [
44386
+ "🤘 ",
44387
+ "🤟 ",
44388
+ "🖖 ",
44389
+ "✋ ",
44390
+ "🤚 ",
44391
+ "👆 "
44392
+ ]
44393
+ },
44394
+ fistBump: {
44395
+ interval: 80,
44396
+ frames: [
44397
+ "🤜    🤛 ",
44398
+ "🤜    🤛 ",
44399
+ "🤜    🤛 ",
44400
+ " 🤜  🤛  ",
44401
+ "  🤜🤛   ",
44402
+ " 🤜✨🤛   ",
44403
+ "🤜 ✨ 🤛  "
44404
+ ]
44405
+ },
44406
+ soccerHeader: {
44407
+ interval: 80,
44408
+ frames: [
44409
+ " 🧑⚽️ 🧑 ",
44410
+ "🧑 ⚽️ 🧑 ",
44411
+ "🧑 ⚽️ 🧑 ",
44412
+ "🧑 ⚽️ 🧑 ",
44413
+ "🧑 ⚽️ 🧑 ",
44414
+ "🧑 ⚽️ 🧑 ",
44415
+ "🧑 ⚽️🧑 ",
44416
+ "🧑 ⚽️ 🧑 ",
44417
+ "🧑 ⚽️ 🧑 ",
44418
+ "🧑 ⚽️ 🧑 ",
44419
+ "🧑 ⚽️ 🧑 ",
44420
+ "🧑 ⚽️ 🧑 "
44421
+ ]
44422
+ },
44423
+ mindblown: {
44424
+ interval: 160,
44425
+ frames: [
44426
+ "😐 ",
44427
+ "😐 ",
44428
+ "😮 ",
44429
+ "😮 ",
44430
+ "😦 ",
44431
+ "😦 ",
44432
+ "😧 ",
44433
+ "😧 ",
44434
+ "🤯 ",
44435
+ "💥 ",
44436
+ "✨ ",
44437
+ "  ",
44438
+ "  ",
44439
+ "  "
44440
+ ]
44441
+ },
44442
+ speaker: {
44443
+ interval: 160,
44444
+ frames: [
44445
+ "🔈 ",
44446
+ "🔉 ",
44447
+ "🔊 ",
44448
+ "🔉 "
44449
+ ]
44450
+ },
44451
+ orangePulse: {
44452
+ interval: 100,
44453
+ frames: [
44454
+ "🔸 ",
44455
+ "🔶 ",
44456
+ "🟠 ",
44457
+ "🟠 ",
44458
+ "🔶 "
44459
+ ]
44460
+ },
44461
+ bluePulse: {
44462
+ interval: 100,
44463
+ frames: [
44464
+ "🔹 ",
44465
+ "🔷 ",
44466
+ "🔵 ",
44467
+ "🔵 ",
44468
+ "🔷 "
44469
+ ]
44470
+ },
44471
+ orangeBluePulse: {
44472
+ interval: 100,
44473
+ frames: [
44474
+ "🔸 ",
44475
+ "🔶 ",
44476
+ "🟠 ",
44477
+ "🟠 ",
44478
+ "🔶 ",
44479
+ "🔹 ",
44480
+ "🔷 ",
44481
+ "🔵 ",
44482
+ "🔵 ",
44483
+ "🔷 "
44484
+ ]
44485
+ },
44486
+ timeTravel: {
44487
+ interval: 100,
44488
+ frames: [
44489
+ "🕛 ",
44490
+ "🕚 ",
44491
+ "🕙 ",
44492
+ "🕘 ",
44493
+ "🕗 ",
44494
+ "🕖 ",
44495
+ "🕕 ",
44496
+ "🕔 ",
44497
+ "🕓 ",
44498
+ "🕒 ",
44499
+ "🕑 ",
44500
+ "🕐 "
44501
+ ]
44502
+ },
44503
+ aesthetic: {
44504
+ interval: 80,
44505
+ frames: [
44506
+ "▰▱▱▱▱▱▱",
44507
+ "▰▰▱▱▱▱▱",
44508
+ "▰▰▰▱▱▱▱",
44509
+ "▰▰▰▰▱▱▱",
44510
+ "▰▰▰▰▰▱▱",
44511
+ "▰▰▰▰▰▰▱",
44512
+ "▰▰▰▰▰▰▰",
44513
+ "▰▱▱▱▱▱▱"
44514
+ ]
44515
+ },
44516
+ dwarfFortress: {
44517
+ interval: 80,
44518
+ frames: [
44519
+ " ██████£££ ",
44520
+ "☺██████£££ ",
44521
+ "☺██████£££ ",
44522
+ "☺▓█████£££ ",
44523
+ "☺▓█████£££ ",
44524
+ "☺▒█████£££ ",
44525
+ "☺▒█████£££ ",
44526
+ "☺░█████£££ ",
44527
+ "☺░█████£££ ",
44528
+ "☺ █████£££ ",
44529
+ " ☺█████£££ ",
44530
+ " ☺█████£££ ",
44531
+ " ☺▓████£££ ",
44532
+ " ☺▓████£££ ",
44533
+ " ☺▒████£££ ",
44534
+ " ☺▒████£££ ",
44535
+ " ☺░████£££ ",
44536
+ " ☺░████£££ ",
44537
+ " ☺ ████£££ ",
44538
+ " ☺████£££ ",
44539
+ " ☺████£££ ",
44540
+ " ☺▓███£££ ",
44541
+ " ☺▓███£££ ",
44542
+ " ☺▒███£££ ",
44543
+ " ☺▒███£££ ",
44544
+ " ☺░███£££ ",
44545
+ " ☺░███£££ ",
44546
+ " ☺ ███£££ ",
44547
+ " ☺███£££ ",
44548
+ " ☺███£££ ",
44549
+ " ☺▓██£££ ",
44550
+ " ☺▓██£££ ",
44551
+ " ☺▒██£££ ",
44552
+ " ☺▒██£££ ",
44553
+ " ☺░██£££ ",
44554
+ " ☺░██£££ ",
44555
+ " ☺ ██£££ ",
44556
+ " ☺██£££ ",
44557
+ " ☺██£££ ",
44558
+ " ☺▓█£££ ",
44559
+ " ☺▓█£££ ",
44560
+ " ☺▒█£££ ",
44561
+ " ☺▒█£££ ",
44562
+ " ☺░█£££ ",
44563
+ " ☺░█£££ ",
44564
+ " ☺ █£££ ",
44565
+ " ☺█£££ ",
44566
+ " ☺█£££ ",
44567
+ " ☺▓£££ ",
44568
+ " ☺▓£££ ",
44569
+ " ☺▒£££ ",
44570
+ " ☺▒£££ ",
44571
+ " ☺░£££ ",
44572
+ " ☺░£££ ",
44573
+ " ☺ £££ ",
44574
+ " ☺£££ ",
44575
+ " ☺£££ ",
44576
+ " ☺▓££ ",
44577
+ " ☺▓££ ",
44578
+ " ☺▒££ ",
44579
+ " ☺▒££ ",
44580
+ " ☺░££ ",
44581
+ " ☺░££ ",
44582
+ " ☺ ££ ",
44583
+ " ☺££ ",
44584
+ " ☺££ ",
44585
+ " ☺▓£ ",
44586
+ " ☺▓£ ",
44587
+ " ☺▒£ ",
44588
+ " ☺▒£ ",
44589
+ " ☺░£ ",
44590
+ " ☺░£ ",
44591
+ " ☺ £ ",
44592
+ " ☺£ ",
44593
+ " ☺£ ",
44594
+ " ☺▓ ",
44595
+ " ☺▓ ",
44596
+ " ☺▒ ",
44597
+ " ☺▒ ",
44598
+ " ☺░ ",
44599
+ " ☺░ ",
44600
+ " ☺ ",
44601
+ " ☺ &",
44602
+ " ☺ ☼&",
44603
+ " ☺ ☼ &",
44604
+ " ☺☼ &",
44605
+ " ☺☼ & ",
44606
+ " ‼ & ",
44607
+ " ☺ & ",
44608
+ " ‼ & ",
44609
+ " ☺ & ",
44610
+ " ‼ & ",
44611
+ " ☺ & ",
44612
+ "‼ & ",
44613
+ " & ",
44614
+ " & ",
44615
+ " & ░ ",
44616
+ " & ▒ ",
44617
+ " & ▓ ",
44618
+ " & £ ",
44619
+ " & ░£ ",
44620
+ " & ▒£ ",
44621
+ " & ▓£ ",
44622
+ " & ££ ",
44623
+ " & ░££ ",
44624
+ " & ▒££ ",
44625
+ "& ▓££ ",
44626
+ "& £££ ",
44627
+ " ░£££ ",
44628
+ " ▒£££ ",
44629
+ " ▓£££ ",
44630
+ " █£££ ",
44631
+ " ░█£££ ",
44632
+ " ▒█£££ ",
44633
+ " ▓█£££ ",
44634
+ " ██£££ ",
44635
+ " ░██£££ ",
44636
+ " ▒██£££ ",
44637
+ " ▓██£££ ",
44638
+ " ███£££ ",
44639
+ " ░███£££ ",
44640
+ " ▒███£££ ",
44641
+ " ▓███£££ ",
44642
+ " ████£££ ",
44643
+ " ░████£££ ",
44644
+ " ▒████£££ ",
44645
+ " ▓████£££ ",
44646
+ " █████£££ ",
44647
+ " ░█████£££ ",
44648
+ " ▒█████£££ ",
44649
+ " ▓█████£££ ",
44650
+ " ██████£££ ",
44651
+ " ██████£££ "
44652
+ ]
44653
+ }
44654
+ };
44655
+ });
44656
+
44657
+ // ../../node_modules/cli-spinners/index.js
44658
+ var require_cli_spinners = __commonJS((exports, module) => {
44659
+ var spinners = Object.assign({}, require_spinners());
44660
+ var spinnersList = Object.keys(spinners);
44661
+ Object.defineProperty(spinners, "random", {
44662
+ get() {
44663
+ const randomIndex = Math.floor(Math.random() * spinnersList.length);
44664
+ const spinnerName = spinnersList[randomIndex];
44665
+ return spinners[spinnerName];
44666
+ }
44667
+ });
44668
+ module.exports = spinners;
44669
+ });
44670
+
43031
44671
  // ../../node_modules/ink/build/render.js
43032
44672
  import { Stream } from "node:stream";
43033
44673
  import process12 from "node:process";
@@ -48666,9 +50306,9 @@ var import_react20 = __toESM(require_react(), 1);
48666
50306
  // ../../node_modules/ink/build/hooks/use-focus-manager.js
48667
50307
  var import_react21 = __toESM(require_react(), 1);
48668
50308
  // src/ui/App.tsx
48669
- var import_react31 = __toESM(require_react(), 1);
48670
- import fs8 from "fs";
48671
- import path3 from "path";
50309
+ var import_react34 = __toESM(require_react(), 1);
50310
+ import fs9 from "fs";
50311
+ import path4 from "path";
48672
50312
 
48673
50313
  // src/ui/components/Header.tsx
48674
50314
  var import_react22 = __toESM(require_react(), 1);
@@ -49025,7 +50665,7 @@ function Banner({ hideStatus = false }) {
49025
50665
  const isVrailProject = hasVrailConfig();
49026
50666
  const [version, setVersion] = import_react26.useState("v0.0.1");
49027
50667
  import_react26.useEffect(() => {
49028
- const v = "1.0.0";
50668
+ const v = "1.1.0-beta.2";
49029
50669
  setVersion(v);
49030
50670
  }, []);
49031
50671
  return /* @__PURE__ */ jsx_dev_runtime3.jsxDEV(Box_default, {
@@ -50548,19 +52188,500 @@ function GoodbyeView({ version, cwd: cwd2, isVrailProject }) {
50548
52188
  }, undefined, false, undefined, this);
50549
52189
  }
50550
52190
 
50551
- // src/ui/App.tsx
52191
+ // src/ui/views/InitProject.tsx
52192
+ var import_react33 = __toESM(require_react(), 1);
52193
+
52194
+ // ../../node_modules/ink-text-input/build/index.js
52195
+ var import_react31 = __toESM(require_react(), 1);
52196
+ function TextInput({ value: originalValue, placeholder = "", focus = true, mask, highlightPastedText = false, showCursor = true, onChange, onSubmit }) {
52197
+ const [state, setState] = import_react31.useState({
52198
+ cursorOffset: (originalValue || "").length,
52199
+ cursorWidth: 0
52200
+ });
52201
+ const { cursorOffset, cursorWidth } = state;
52202
+ import_react31.useEffect(() => {
52203
+ setState((previousState) => {
52204
+ if (!focus || !showCursor) {
52205
+ return previousState;
52206
+ }
52207
+ const newValue = originalValue || "";
52208
+ if (previousState.cursorOffset > newValue.length - 1) {
52209
+ return {
52210
+ cursorOffset: newValue.length,
52211
+ cursorWidth: 0
52212
+ };
52213
+ }
52214
+ return previousState;
52215
+ });
52216
+ }, [originalValue, focus, showCursor]);
52217
+ const cursorActualWidth = highlightPastedText ? cursorWidth : 0;
52218
+ const value = mask ? mask.repeat(originalValue.length) : originalValue;
52219
+ let renderedValue = value;
52220
+ let renderedPlaceholder = placeholder ? source_default.grey(placeholder) : undefined;
52221
+ if (showCursor && focus) {
52222
+ renderedPlaceholder = placeholder.length > 0 ? source_default.inverse(placeholder[0]) + source_default.grey(placeholder.slice(1)) : source_default.inverse(" ");
52223
+ renderedValue = value.length > 0 ? "" : source_default.inverse(" ");
52224
+ let i = 0;
52225
+ for (const char of value) {
52226
+ renderedValue += i >= cursorOffset - cursorActualWidth && i <= cursorOffset ? source_default.inverse(char) : char;
52227
+ i++;
52228
+ }
52229
+ if (value.length > 0 && cursorOffset === value.length) {
52230
+ renderedValue += source_default.inverse(" ");
52231
+ }
52232
+ }
52233
+ use_input_default((input, key) => {
52234
+ if (key.upArrow || key.downArrow || key.ctrl && input === "c" || key.tab || key.shift && key.tab) {
52235
+ return;
52236
+ }
52237
+ if (key.return) {
52238
+ if (onSubmit) {
52239
+ onSubmit(originalValue);
52240
+ }
52241
+ return;
52242
+ }
52243
+ let nextCursorOffset = cursorOffset;
52244
+ let nextValue = originalValue;
52245
+ let nextCursorWidth = 0;
52246
+ if (key.leftArrow) {
52247
+ if (showCursor) {
52248
+ nextCursorOffset--;
52249
+ }
52250
+ } else if (key.rightArrow) {
52251
+ if (showCursor) {
52252
+ nextCursorOffset++;
52253
+ }
52254
+ } else if (key.backspace || key.delete) {
52255
+ if (cursorOffset > 0) {
52256
+ nextValue = originalValue.slice(0, cursorOffset - 1) + originalValue.slice(cursorOffset, originalValue.length);
52257
+ nextCursorOffset--;
52258
+ }
52259
+ } else {
52260
+ nextValue = originalValue.slice(0, cursorOffset) + input + originalValue.slice(cursorOffset, originalValue.length);
52261
+ nextCursorOffset += input.length;
52262
+ if (input.length > 1) {
52263
+ nextCursorWidth = input.length;
52264
+ }
52265
+ }
52266
+ if (cursorOffset < 0) {
52267
+ nextCursorOffset = 0;
52268
+ }
52269
+ if (cursorOffset > originalValue.length) {
52270
+ nextCursorOffset = originalValue.length;
52271
+ }
52272
+ setState({
52273
+ cursorOffset: nextCursorOffset,
52274
+ cursorWidth: nextCursorWidth
52275
+ });
52276
+ if (nextValue !== originalValue) {
52277
+ onChange(nextValue);
52278
+ }
52279
+ }, { isActive: focus });
52280
+ return import_react31.default.createElement(Text, null, placeholder ? value.length > 0 ? renderedValue : renderedPlaceholder : renderedValue);
52281
+ }
52282
+ var build_default = TextInput;
52283
+
52284
+ // ../../node_modules/ink-spinner/build/index.js
52285
+ var import_react32 = __toESM(require_react(), 1);
52286
+ var import_cli_spinners = __toESM(require_cli_spinners(), 1);
52287
+ function Spinner({ type = "dots" }) {
52288
+ const [frame, setFrame] = import_react32.useState(0);
52289
+ const spinner = import_cli_spinners.default[type];
52290
+ import_react32.useEffect(() => {
52291
+ const timer = setInterval(() => {
52292
+ setFrame((previousFrame) => {
52293
+ const isLastFrame = previousFrame === spinner.frames.length - 1;
52294
+ return isLastFrame ? 0 : previousFrame + 1;
52295
+ });
52296
+ }, spinner.interval);
52297
+ return () => {
52298
+ clearInterval(timer);
52299
+ };
52300
+ }, [spinner]);
52301
+ return import_react32.default.createElement(Text, null, spinner.frames[frame]);
52302
+ }
52303
+ var build_default2 = Spinner;
52304
+
52305
+ // src/ui/views/InitProject.tsx
50552
52306
  var jsx_dev_runtime10 = __toESM(require_jsx_dev_runtime(), 1);
52307
+ import fs8 from "fs";
52308
+ import path3 from "path";
52309
+ import { fileURLToPath as fileURLToPath2 } from "url";
52310
+ import { spawn } from "child_process";
52311
+ function InitProject({ onComplete, onBack }) {
52312
+ const [step, setStep] = import_react33.useState("name");
52313
+ const [projectName, setProjectName] = import_react33.useState("");
52314
+ const [error, setError] = import_react33.useState(null);
52315
+ const [targetDir, setTargetDir] = import_react33.useState(null);
52316
+ const [actualProjectName, setActualProjectName] = import_react33.useState("");
52317
+ const [commandOutput, setCommandOutput] = import_react33.useState([]);
52318
+ const handleSubmit = async () => {
52319
+ let name = projectName.trim();
52320
+ if (!name)
52321
+ name = "my-app";
52322
+ let targetPath;
52323
+ let resolvedProjectName;
52324
+ if (name === ".") {
52325
+ targetPath = process.cwd();
52326
+ resolvedProjectName = path3.basename(targetPath);
52327
+ } else {
52328
+ const sanitizedName = name.toLowerCase().replace(/[^a-z0-9-_]/g, "-");
52329
+ targetPath = path3.join(process.cwd(), sanitizedName);
52330
+ resolvedProjectName = sanitizedName;
52331
+ }
52332
+ if (name !== "." && fs8.existsSync(targetPath)) {
52333
+ setError(`Directory "${resolvedProjectName}" already exists`);
52334
+ return;
52335
+ }
52336
+ setActualProjectName(resolvedProjectName);
52337
+ setTargetDir(targetPath);
52338
+ setStep("creating");
52339
+ try {
52340
+ const __filename2 = fileURLToPath2(import.meta.url);
52341
+ const __dirname3 = path3.dirname(__filename2);
52342
+ const templatePath = path3.join(__dirname3, "..", "templates", "nextjs");
52343
+ await copyTemplate(templatePath, targetPath, resolvedProjectName);
52344
+ setStep("selection");
52345
+ } catch (err) {
52346
+ setError(err instanceof Error ? err.message : "Unknown error");
52347
+ setStep("error");
52348
+ }
52349
+ };
52350
+ const handleSelection = async (item) => {
52351
+ if (item.value === "manual") {
52352
+ setStep("done");
52353
+ } else {
52354
+ setStep("executing");
52355
+ try {
52356
+ await runCommand("bun", ["install"], targetDir);
52357
+ setStep("done");
52358
+ } catch (err) {
52359
+ setError(err instanceof Error ? err.message : "Command failed");
52360
+ setStep("error");
52361
+ }
52362
+ }
52363
+ };
52364
+ const runCommand = (command, args, cwd2) => {
52365
+ return new Promise((resolve, reject) => {
52366
+ const child = spawn(command, args, { cwd: cwd2, shell: true });
52367
+ child.stdout.on("data", (data) => {
52368
+ const line = data.toString().trim();
52369
+ if (line) {
52370
+ setCommandOutput((prev) => [...prev.slice(-5), line]);
52371
+ }
52372
+ });
52373
+ child.stderr.on("data", (data) => {
52374
+ const line = data.toString().trim();
52375
+ if (line) {
52376
+ setCommandOutput((prev) => [...prev.slice(-5), `[stderr] ${line}`]);
52377
+ }
52378
+ });
52379
+ child.on("close", (code) => {
52380
+ if (code === 0)
52381
+ resolve();
52382
+ else
52383
+ reject(new Error(`${command} exited with code ${code}`));
52384
+ });
52385
+ });
52386
+ };
52387
+ if (step === "name") {
52388
+ return /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Box_default, {
52389
+ flexDirection: "column",
52390
+ padding: 1,
52391
+ children: [
52392
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
52393
+ bold: true,
52394
+ color: "#CD6052",
52395
+ children: "\uD83D\uDE80 Initialize New Project"
52396
+ }, undefined, false, undefined, this),
52397
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Box_default, {
52398
+ height: 1
52399
+ }, undefined, false, undefined, this),
52400
+ error && /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(jsx_dev_runtime10.Fragment, {
52401
+ children: [
52402
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
52403
+ color: "red",
52404
+ children: [
52405
+ "⚠ ",
52406
+ error
52407
+ ]
52408
+ }, undefined, true, undefined, this),
52409
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Box_default, {
52410
+ height: 1
52411
+ }, undefined, false, undefined, this)
52412
+ ]
52413
+ }, undefined, true, undefined, this),
52414
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Box_default, {
52415
+ children: [
52416
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
52417
+ children: "Project name (default: "
52418
+ }, undefined, false, undefined, this),
52419
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
52420
+ color: "#CD6052",
52421
+ children: "my-app"
52422
+ }, undefined, false, undefined, this),
52423
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
52424
+ children: "): "
52425
+ }, undefined, false, undefined, this)
52426
+ ]
52427
+ }, undefined, true, undefined, this),
52428
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Box_default, {
52429
+ children: [
52430
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
52431
+ color: "#CD6052",
52432
+ children: "> "
52433
+ }, undefined, false, undefined, this),
52434
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(build_default, {
52435
+ value: projectName,
52436
+ onChange: setProjectName,
52437
+ onSubmit: handleSubmit,
52438
+ placeholder: "my-app"
52439
+ }, undefined, false, undefined, this)
52440
+ ]
52441
+ }, undefined, true, undefined, this),
52442
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Box_default, {
52443
+ height: 1
52444
+ }, undefined, false, undefined, this),
52445
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
52446
+ dimColor: true,
52447
+ children: 'Tip: Use "." to create in current directory'
52448
+ }, undefined, false, undefined, this),
52449
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
52450
+ dimColor: true,
52451
+ children: "Press Enter to create, ESC to cancel"
52452
+ }, undefined, false, undefined, this)
52453
+ ]
52454
+ }, undefined, true, undefined, this);
52455
+ }
52456
+ if (step === "creating") {
52457
+ return /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Box_default, {
52458
+ flexDirection: "column",
52459
+ padding: 1,
52460
+ children: [
52461
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
52462
+ bold: true,
52463
+ color: "#CD6052",
52464
+ children: "\uD83D\uDE80 Initialize New Project"
52465
+ }, undefined, false, undefined, this),
52466
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Box_default, {
52467
+ height: 1
52468
+ }, undefined, false, undefined, this),
52469
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
52470
+ children: [
52471
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
52472
+ color: "#CD6052",
52473
+ children: /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(build_default2, {
52474
+ type: "dots"
52475
+ }, undefined, false, undefined, this)
52476
+ }, undefined, false, undefined, this),
52477
+ " ",
52478
+ "Creating project structure..."
52479
+ ]
52480
+ }, undefined, true, undefined, this)
52481
+ ]
52482
+ }, undefined, true, undefined, this);
52483
+ }
52484
+ if (step === "selection") {
52485
+ return /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Box_default, {
52486
+ flexDirection: "column",
52487
+ padding: 1,
52488
+ children: [
52489
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
52490
+ bold: true,
52491
+ color: "#CD6052",
52492
+ children: "\uD83D\uDE80 Project Created!"
52493
+ }, undefined, false, undefined, this),
52494
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Box_default, {
52495
+ height: 1
52496
+ }, undefined, false, undefined, this),
52497
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
52498
+ children: "What would you like to do next?"
52499
+ }, undefined, false, undefined, this),
52500
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Box_default, {
52501
+ height: 1
52502
+ }, undefined, false, undefined, this),
52503
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(SelectInput_default, {
52504
+ items: [
52505
+ { label: "\uD83D\uDE80 Run setup (bun install)", value: "auto" },
52506
+ { label: "\uD83D\uDEE0️ I'll do it myself", value: "manual" }
52507
+ ],
52508
+ onSelect: handleSelection,
52509
+ indicatorComponent: ({ isSelected }) => /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
52510
+ color: "#CD6052",
52511
+ children: isSelected ? "> " : " "
52512
+ }, undefined, false, undefined, this),
52513
+ itemComponent: ({ isSelected, label }) => /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
52514
+ color: isSelected ? "#CD6052" : "white",
52515
+ children: label
52516
+ }, undefined, false, undefined, this)
52517
+ }, undefined, false, undefined, this)
52518
+ ]
52519
+ }, undefined, true, undefined, this);
52520
+ }
52521
+ if (step === "executing") {
52522
+ return /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Box_default, {
52523
+ flexDirection: "column",
52524
+ padding: 1,
52525
+ children: [
52526
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
52527
+ bold: true,
52528
+ color: "#CD6052",
52529
+ children: "⚙️ Running Setup Commands"
52530
+ }, undefined, false, undefined, this),
52531
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Box_default, {
52532
+ height: 1
52533
+ }, undefined, false, undefined, this),
52534
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
52535
+ children: [
52536
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
52537
+ color: "#CD6052",
52538
+ children: /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(build_default2, {
52539
+ type: "dots"
52540
+ }, undefined, false, undefined, this)
52541
+ }, undefined, false, undefined, this),
52542
+ " ",
52543
+ "Executing bun install..."
52544
+ ]
52545
+ }, undefined, true, undefined, this),
52546
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Box_default, {
52547
+ height: 1
52548
+ }, undefined, false, undefined, this),
52549
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Box_default, {
52550
+ flexDirection: "column",
52551
+ borderStyle: "round",
52552
+ borderColor: "gray",
52553
+ paddingX: 1,
52554
+ children: commandOutput.map((line, idx) => /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
52555
+ dimColor: true,
52556
+ wrap: "truncate-end",
52557
+ children: line
52558
+ }, idx, false, undefined, this))
52559
+ }, undefined, false, undefined, this)
52560
+ ]
52561
+ }, undefined, true, undefined, this);
52562
+ }
52563
+ if (step === "done") {
52564
+ return /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Box_default, {
52565
+ flexDirection: "column",
52566
+ padding: 1,
52567
+ children: [
52568
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
52569
+ bold: true,
52570
+ color: "#CD6052",
52571
+ children: "\uD83D\uDE80 Project Ready!"
52572
+ }, undefined, false, undefined, this),
52573
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Box_default, {
52574
+ height: 1
52575
+ }, undefined, false, undefined, this),
52576
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
52577
+ color: "green",
52578
+ children: [
52579
+ "✔ Project created successfully in ",
52580
+ targetDir
52581
+ ]
52582
+ }, undefined, true, undefined, this),
52583
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Box_default, {
52584
+ height: 1
52585
+ }, undefined, false, undefined, this),
52586
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
52587
+ children: "Next steps:"
52588
+ }, undefined, false, undefined, this),
52589
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
52590
+ dimColor: true,
52591
+ children: [
52592
+ " cd ",
52593
+ actualProjectName
52594
+ ]
52595
+ }, undefined, true, undefined, this),
52596
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
52597
+ dimColor: true,
52598
+ children: " bun install"
52599
+ }, undefined, false, undefined, this),
52600
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
52601
+ dimColor: true,
52602
+ children: " bun dev"
52603
+ }, undefined, false, undefined, this),
52604
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Box_default, {
52605
+ height: 1
52606
+ }, undefined, false, undefined, this),
52607
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
52608
+ dimColor: true,
52609
+ children: "Press Enter to return to Dashboard"
52610
+ }, undefined, false, undefined, this),
52611
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(build_default, {
52612
+ value: "",
52613
+ onChange: () => {},
52614
+ onSubmit: () => onComplete(true, targetDir)
52615
+ }, undefined, false, undefined, this)
52616
+ ]
52617
+ }, undefined, true, undefined, this);
52618
+ }
52619
+ if (step === "error") {
52620
+ return /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Box_default, {
52621
+ flexDirection: "column",
52622
+ padding: 1,
52623
+ children: [
52624
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
52625
+ bold: true,
52626
+ color: "#CD6052",
52627
+ children: "\uD83D\uDE80 Project Error"
52628
+ }, undefined, false, undefined, this),
52629
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Box_default, {
52630
+ height: 1
52631
+ }, undefined, false, undefined, this),
52632
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
52633
+ color: "red",
52634
+ children: [
52635
+ "✘ Error: ",
52636
+ error
52637
+ ]
52638
+ }, undefined, true, undefined, this),
52639
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Box_default, {
52640
+ height: 1
52641
+ }, undefined, false, undefined, this),
52642
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
52643
+ dimColor: true,
52644
+ children: "Press ESC to go back"
52645
+ }, undefined, false, undefined, this)
52646
+ ]
52647
+ }, undefined, true, undefined, this);
52648
+ }
52649
+ return null;
52650
+ }
52651
+ async function copyTemplate(src, dest, projectName) {
52652
+ if (!fs8.existsSync(dest)) {
52653
+ fs8.mkdirSync(dest, { recursive: true });
52654
+ }
52655
+ const entries = fs8.readdirSync(src, { withFileTypes: true });
52656
+ for (const entry of entries) {
52657
+ const srcPath = path3.join(src, entry.name);
52658
+ const destPath = path3.join(dest, entry.name);
52659
+ if (entry.name === "node_modules" || entry.name === ".next" || entry.name === "bun.lock") {
52660
+ continue;
52661
+ }
52662
+ if (entry.isDirectory()) {
52663
+ await copyTemplate(srcPath, destPath, projectName);
52664
+ } else {
52665
+ let content = fs8.readFileSync(srcPath, "utf-8");
52666
+ content = content.replace(/\{\{PROJECT_NAME\}\}/g, projectName);
52667
+ fs8.writeFileSync(destPath, content);
52668
+ }
52669
+ }
52670
+ }
52671
+
52672
+ // src/ui/App.tsx
52673
+ var jsx_dev_runtime11 = __toESM(require_jsx_dev_runtime(), 1);
50553
52674
  var hasVrailConfig2 = () => {
50554
52675
  try {
50555
- return fs8.existsSync(path3.join(process.cwd(), "vrail.config.ts"));
52676
+ return fs9.existsSync(path4.join(process.cwd(), "vrail.config.ts"));
50556
52677
  } catch {
50557
52678
  return false;
50558
52679
  }
50559
52680
  };
50560
52681
  function App2() {
50561
52682
  const { exit } = use_app_default();
50562
- const [currentView, setCurrentView] = import_react31.useState("dashboard");
50563
- const [focusArea, setFocusArea] = import_react31.useState("content");
52683
+ const [currentView, setCurrentView] = import_react34.useState("dashboard");
52684
+ const [focusArea, setFocusArea] = import_react34.useState("content");
50564
52685
  const goToHeader = () => setFocusArea("header");
50565
52686
  const goToDashboard = () => {
50566
52687
  setCurrentView("dashboard");
@@ -50574,6 +52695,8 @@ function App2() {
50574
52695
  return;
50575
52696
  if (currentView === "exit-confirm")
50576
52697
  return;
52698
+ if (currentView === "init")
52699
+ return;
50577
52700
  if (key.escape) {
50578
52701
  if (focusArea === "content") {
50579
52702
  setFocusArea("header");
@@ -50586,15 +52709,15 @@ function App2() {
50586
52709
  setFocusArea((prev) => prev === "header" ? "content" : "header");
50587
52710
  }
50588
52711
  });
50589
- return /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Box_default, {
52712
+ return /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Box_default, {
50590
52713
  flexDirection: "column",
50591
52714
  height: "100%",
50592
52715
  padding: 1,
50593
52716
  children: [
50594
- /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Banner, {
52717
+ /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Banner, {
50595
52718
  hideStatus: currentView === "goodbye"
50596
52719
  }, undefined, false, undefined, this),
50597
- currentView !== "goodbye" && /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Header, {
52720
+ currentView !== "goodbye" && /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Header, {
50598
52721
  currentView: currentView === "exit-confirm" ? "dashboard" : currentView,
50599
52722
  onViewChange: (view) => {
50600
52723
  setCurrentView(view);
@@ -50602,42 +52725,51 @@ function App2() {
50602
52725
  },
50603
52726
  isFocused: focusArea === "header"
50604
52727
  }, undefined, false, undefined, this),
50605
- /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Box_default, {
52728
+ /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Box_default, {
50606
52729
  marginTop: 1,
50607
52730
  flexDirection: "column",
50608
52731
  children: [
50609
- currentView === "dashboard" && /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Dashboard, {
52732
+ currentView === "dashboard" && /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Dashboard, {
50610
52733
  isFocused: focusArea === "content",
50611
52734
  onAction: (action) => {
50612
52735
  if (action === "exit") {
50613
52736
  setCurrentView("exit-confirm");
52737
+ } else if (action === "init") {
52738
+ setCurrentView("init");
52739
+ setFocusArea("content");
50614
52740
  }
50615
52741
  }
50616
52742
  }, undefined, false, undefined, this),
50617
- currentView === "author" && /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Author, {
52743
+ currentView === "author" && /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Author, {
50618
52744
  onViewChange: goToHeader,
50619
52745
  isFocused: focusArea === "content"
50620
52746
  }, undefined, false, undefined, this),
50621
- currentView === "npm" && /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(ExternalLink, {
52747
+ currentView === "npm" && /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(ExternalLink, {
50622
52748
  label: "NPM Registry",
50623
52749
  url: "https://www.npmjs.com/package/@valuerail/cli",
50624
52750
  onBack: goToHeader
50625
52751
  }, undefined, false, undefined, this),
50626
- currentView === "repo" && /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(ExternalLink, {
52752
+ currentView === "repo" && /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(ExternalLink, {
50627
52753
  label: "GitHub Repository",
50628
52754
  url: "https://github.com/kamilguszpit/valuerail",
50629
52755
  onBack: goToHeader
50630
52756
  }, undefined, false, undefined, this),
50631
- currentView === "license" && /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(License, {
52757
+ currentView === "license" && /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(License, {
50632
52758
  onBack: goToHeader,
50633
52759
  isFocused: focusArea === "content"
50634
52760
  }, undefined, false, undefined, this),
50635
- currentView === "exit-confirm" && /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(ExitConfirmation, {
52761
+ currentView === "exit-confirm" && /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(ExitConfirmation, {
50636
52762
  onCancel: goToDashboard,
50637
52763
  onExit: handleExit
50638
52764
  }, undefined, false, undefined, this),
50639
- currentView === "goodbye" && /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(GoodbyeView, {
50640
- version: "1.0.0",
52765
+ currentView === "init" && /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(InitProject, {
52766
+ onComplete: (success) => {
52767
+ goToDashboard();
52768
+ },
52769
+ onBack: goToDashboard
52770
+ }, undefined, false, undefined, this),
52771
+ currentView === "goodbye" && /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(GoodbyeView, {
52772
+ version: "1.1.0-beta.2",
50641
52773
  cwd: process.cwd(),
50642
52774
  isVrailProject: hasVrailConfig2()
50643
52775
  }, undefined, false, undefined, this)
@@ -50648,7 +52780,7 @@ function App2() {
50648
52780
  }
50649
52781
 
50650
52782
  // src/index.tsx
50651
- var jsx_dev_runtime11 = __toESM(require_jsx_dev_runtime(), 1);
52783
+ var jsx_dev_runtime12 = __toESM(require_jsx_dev_runtime(), 1);
50652
52784
  process.on("uncaughtException", (err) => {
50653
52785
  console.error("Uncaught Exception:", err);
50654
52786
  process.exit(1);
@@ -50657,5 +52789,5 @@ process.on("unhandledRejection", (reason, promise) => {
50657
52789
  console.error("Unhandled Rejection at:", promise, "reason:", reason);
50658
52790
  process.exit(1);
50659
52791
  });
50660
- var { waitUntilExit } = render_default(/* @__PURE__ */ jsx_dev_runtime11.jsxDEV(App2, {}, undefined, false, undefined, this));
52792
+ var { waitUntilExit } = render_default(/* @__PURE__ */ jsx_dev_runtime12.jsxDEV(App2, {}, undefined, false, undefined, this));
50661
52793
  await waitUntilExit();