datatruck 0.0.6 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,26 @@
1
1
  # datatruck
2
2
 
3
+ ## 0.3.0
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [[`d63fd25`](https://github.com/swordev/datatruck/commit/d63fd25ffa8d2e539d2125dfd6a3f55020086804), [`486ef4a`](https://github.com/swordev/datatruck/commit/486ef4add27ae1dbfd166b16c257522f43537ecd), [`d1b3ea9`](https://github.com/swordev/datatruck/commit/d1b3ea9c9540d30898c00490963523a4fbc68193), [`617dae2`](https://github.com/swordev/datatruck/commit/617dae2c8ed90e6e65e8109f03cfad0e64bd7c02)]:
8
+ - @datatruck/cli@0.3.0
9
+
10
+ ## 0.2.0
11
+
12
+ ### Patch Changes
13
+
14
+ - Updated dependencies [[`e30ede3`](https://github.com/swordev/datatruck/commit/e30ede371bc7ab3fc1cd47758fdac7a28e8e2705), [`8539d28`](https://github.com/swordev/datatruck/commit/8539d285b2c51d700aa811cd772d573fa0d613eb), [`120460c`](https://github.com/swordev/datatruck/commit/120460c8824cef4184e43f571a4cc0798b899b66)]:
15
+ - @datatruck/cli@0.2.0
16
+
17
+ ## 0.1.0
18
+
19
+ ### Patch Changes
20
+
21
+ - Updated dependencies [[`24a1e5e`](https://github.com/swordev/datatruck/commit/24a1e5e86336e7a92556287e49548dc542f0e579), [`88d46cd`](https://github.com/swordev/datatruck/commit/88d46cd56293df4c6fc21a9ad61d6236ac91f325)]:
22
+ - @datatruck/cli@0.1.0
23
+
3
24
  ## 0.0.6
4
25
 
5
26
  ### Patch Changes
@@ -0,0 +1,969 @@
1
+ {
2
+ "definitions": {
3
+ "stringlist-util": {
4
+ "type": "array",
5
+ "items": {
6
+ "type": "string"
7
+ }
8
+ },
9
+ "repository": {
10
+ "type": "object",
11
+ "additionalProperties": false,
12
+ "required": [
13
+ "type",
14
+ "name"
15
+ ],
16
+ "properties": {
17
+ "type": {
18
+ "type": "string"
19
+ },
20
+ "name": {
21
+ "type": "string"
22
+ },
23
+ "config": {}
24
+ },
25
+ "anyOf": [
26
+ {
27
+ "if": {
28
+ "type": "object",
29
+ "properties": {
30
+ "type": {
31
+ "const": "restic"
32
+ }
33
+ }
34
+ },
35
+ "then": {
36
+ "type": "object",
37
+ "properties": {
38
+ "config": {
39
+ "$ref": "#/definitions/restic-repository"
40
+ }
41
+ }
42
+ },
43
+ "else": false
44
+ },
45
+ {
46
+ "if": {
47
+ "type": "object",
48
+ "properties": {
49
+ "type": {
50
+ "const": "local"
51
+ }
52
+ }
53
+ },
54
+ "then": {
55
+ "type": "object",
56
+ "properties": {
57
+ "config": {
58
+ "$ref": "#/definitions/local-repository"
59
+ }
60
+ }
61
+ },
62
+ "else": false
63
+ },
64
+ {
65
+ "if": {
66
+ "type": "object",
67
+ "properties": {
68
+ "type": {
69
+ "const": "git"
70
+ }
71
+ }
72
+ },
73
+ "then": {
74
+ "type": "object",
75
+ "properties": {
76
+ "config": {
77
+ "$ref": "#/definitions/git-repository"
78
+ }
79
+ }
80
+ },
81
+ "else": false
82
+ }
83
+ ]
84
+ },
85
+ "package": {
86
+ "type": "object",
87
+ "required": [
88
+ "name"
89
+ ],
90
+ "additionalProperties": false,
91
+ "properties": {
92
+ "name": {
93
+ "type": "string"
94
+ },
95
+ "enabled": {
96
+ "type": "boolean"
97
+ },
98
+ "task": {
99
+ "$ref": "#/definitions/task"
100
+ },
101
+ "path": {
102
+ "type": "string"
103
+ },
104
+ "restorePath": {
105
+ "type": "string"
106
+ },
107
+ "restorePermissions": {
108
+ "type": "object",
109
+ "required": [
110
+ "uid",
111
+ "gid"
112
+ ],
113
+ "additionalProperties": false,
114
+ "properties": {
115
+ "uid": {
116
+ "anyOf": [
117
+ {
118
+ "type": "string"
119
+ },
120
+ {
121
+ "type": "integer"
122
+ }
123
+ ]
124
+ },
125
+ "gid": {
126
+ "anyOf": [
127
+ {
128
+ "type": "string"
129
+ },
130
+ {
131
+ "type": "integer"
132
+ }
133
+ ]
134
+ }
135
+ }
136
+ },
137
+ "include": {
138
+ "type": "array",
139
+ "items": {
140
+ "anyOf": [
141
+ {
142
+ "type": "string"
143
+ },
144
+ {
145
+ "$ref": "#/definitions/paths-object"
146
+ }
147
+ ]
148
+ }
149
+ },
150
+ "exclude": {
151
+ "type": "array",
152
+ "items": {
153
+ "anyOf": [
154
+ {
155
+ "type": "string"
156
+ },
157
+ {
158
+ "$ref": "#/definitions/paths-object"
159
+ }
160
+ ]
161
+ }
162
+ },
163
+ "repositoryNames": {
164
+ "$ref": "#/definitions/stringlist-util"
165
+ },
166
+ "repositoryConfigs": {
167
+ "type": "array",
168
+ "items": {
169
+ "$ref": "#/definitions/package-repository"
170
+ }
171
+ },
172
+ "prunePolicy": {
173
+ "$ref": "#/definitions/prune-policy"
174
+ }
175
+ }
176
+ },
177
+ "package-repository": {
178
+ "type": "object",
179
+ "additionalProperties": false,
180
+ "required": [
181
+ "type"
182
+ ],
183
+ "properties": {
184
+ "type": {
185
+ "type": "string"
186
+ },
187
+ "names": {
188
+ "$ref": "#/definitions/stringlist-util"
189
+ },
190
+ "config": {}
191
+ },
192
+ "anyOf": [
193
+ {
194
+ "if": {
195
+ "type": "object",
196
+ "properties": {
197
+ "type": {
198
+ "const": "restic"
199
+ }
200
+ }
201
+ },
202
+ "then": {
203
+ "type": "object",
204
+ "properties": {
205
+ "config": {
206
+ "$ref": "#/definitions/restic-package-repository"
207
+ }
208
+ }
209
+ },
210
+ "else": false
211
+ },
212
+ {
213
+ "if": {
214
+ "type": "object",
215
+ "properties": {
216
+ "type": {
217
+ "const": "local"
218
+ }
219
+ }
220
+ },
221
+ "then": {
222
+ "type": "object",
223
+ "properties": {
224
+ "config": {
225
+ "$ref": "#/definitions/local-package-repository"
226
+ }
227
+ }
228
+ },
229
+ "else": false
230
+ },
231
+ {
232
+ "if": {
233
+ "type": "object",
234
+ "properties": {
235
+ "type": {
236
+ "const": "git"
237
+ }
238
+ }
239
+ },
240
+ "then": {
241
+ "type": "object",
242
+ "properties": {
243
+ "config": {
244
+ "$ref": "#/definitions/git-package-repository"
245
+ }
246
+ }
247
+ },
248
+ "else": false
249
+ }
250
+ ]
251
+ },
252
+ "task": {
253
+ "type": "object",
254
+ "required": [
255
+ "name"
256
+ ],
257
+ "properties": {
258
+ "name": {
259
+ "enum": [
260
+ "git",
261
+ "mariadb",
262
+ "mssql",
263
+ "mysql-dump",
264
+ "postgresql-dump",
265
+ "script"
266
+ ]
267
+ },
268
+ "config": {}
269
+ },
270
+ "anyOf": [
271
+ {
272
+ "if": {
273
+ "type": "object",
274
+ "properties": {
275
+ "name": {
276
+ "const": "git"
277
+ }
278
+ }
279
+ },
280
+ "then": {
281
+ "type": "object",
282
+ "properties": {
283
+ "config": {
284
+ "$ref": "#/definitions/git-task"
285
+ }
286
+ }
287
+ },
288
+ "else": false
289
+ },
290
+ {
291
+ "if": {
292
+ "type": "object",
293
+ "properties": {
294
+ "name": {
295
+ "const": "mariadb"
296
+ }
297
+ }
298
+ },
299
+ "then": {
300
+ "type": "object",
301
+ "properties": {
302
+ "config": {
303
+ "$ref": "#/definitions/mariadb-task"
304
+ }
305
+ }
306
+ },
307
+ "else": false
308
+ },
309
+ {
310
+ "if": {
311
+ "type": "object",
312
+ "properties": {
313
+ "name": {
314
+ "const": "mssql"
315
+ }
316
+ }
317
+ },
318
+ "then": {
319
+ "type": "object",
320
+ "properties": {
321
+ "config": {
322
+ "$ref": "#/definitions/mssql-task"
323
+ }
324
+ }
325
+ },
326
+ "else": false
327
+ },
328
+ {
329
+ "if": {
330
+ "type": "object",
331
+ "properties": {
332
+ "name": {
333
+ "const": "mysql-dump"
334
+ }
335
+ }
336
+ },
337
+ "then": {
338
+ "type": "object",
339
+ "properties": {
340
+ "config": {
341
+ "$ref": "#/definitions/mysql-dump-task"
342
+ }
343
+ }
344
+ },
345
+ "else": false
346
+ },
347
+ {
348
+ "if": {
349
+ "type": "object",
350
+ "properties": {
351
+ "name": {
352
+ "const": "postgresql-dump"
353
+ }
354
+ }
355
+ },
356
+ "then": {
357
+ "type": "object",
358
+ "properties": {
359
+ "config": {
360
+ "$ref": "#/definitions/postgresql-dump-task"
361
+ }
362
+ }
363
+ },
364
+ "else": false
365
+ },
366
+ {
367
+ "if": {
368
+ "type": "object",
369
+ "properties": {
370
+ "name": {
371
+ "const": "script"
372
+ }
373
+ }
374
+ },
375
+ "then": {
376
+ "type": "object",
377
+ "properties": {
378
+ "config": {
379
+ "$ref": "#/definitions/script-task"
380
+ }
381
+ }
382
+ },
383
+ "else": false
384
+ }
385
+ ]
386
+ },
387
+ "git-repository": {
388
+ "type": "object",
389
+ "additionalProperties": false,
390
+ "required": [
391
+ "repo"
392
+ ],
393
+ "properties": {
394
+ "repo": {
395
+ "type": "string"
396
+ },
397
+ "branch": {
398
+ "type": "string"
399
+ }
400
+ }
401
+ },
402
+ "git-package-repository": {
403
+ "type": "object",
404
+ "additionalProperties": false,
405
+ "properties": {}
406
+ },
407
+ "local-repository": {
408
+ "type": "object",
409
+ "required": [
410
+ "outPath"
411
+ ],
412
+ "additionalProperties": false,
413
+ "properties": {
414
+ "outPath": {
415
+ "type": "string"
416
+ },
417
+ "compress": {
418
+ "type": "boolean"
419
+ }
420
+ }
421
+ },
422
+ "local-package-repository": {
423
+ "type": "object",
424
+ "additionalProperties": false,
425
+ "properties": {
426
+ "compress": {
427
+ "anyOf": [
428
+ {
429
+ "type": "boolean"
430
+ },
431
+ {
432
+ "type": "object",
433
+ "additionalProperties": false,
434
+ "properties": {
435
+ "packs": {
436
+ "type": "array",
437
+ "items": {
438
+ "type": "object",
439
+ "additionalProperties": false,
440
+ "required": [
441
+ "include"
442
+ ],
443
+ "properties": {
444
+ "include": {
445
+ "$ref": "#/definitions/stringlist-util"
446
+ },
447
+ "exclude": {
448
+ "$ref": "#/definitions/stringlist-util"
449
+ },
450
+ "onePackByResult": {
451
+ "type": "boolean"
452
+ }
453
+ }
454
+ }
455
+ }
456
+ }
457
+ }
458
+ ]
459
+ }
460
+ }
461
+ },
462
+ "restic-repository": {
463
+ "type": "object",
464
+ "required": [
465
+ "passwordFile",
466
+ "repository"
467
+ ],
468
+ "additionalProperties": false,
469
+ "properties": {
470
+ "passwordFile": {
471
+ "type": "string"
472
+ },
473
+ "repository": {
474
+ "type": "object",
475
+ "additionalProperties": false,
476
+ "required": [
477
+ "backend"
478
+ ],
479
+ "properties": {
480
+ "name": {
481
+ "type": "string"
482
+ },
483
+ "env": {
484
+ "type": "object",
485
+ "patternProperties": {
486
+ ".+": {
487
+ "type": "string"
488
+ }
489
+ }
490
+ },
491
+ "backend": {
492
+ "enum": [
493
+ "local",
494
+ "rest",
495
+ "sftp",
496
+ "s3",
497
+ "azure",
498
+ "gs",
499
+ "rclone"
500
+ ]
501
+ },
502
+ "protocol": {
503
+ "enum": [
504
+ "http",
505
+ "https"
506
+ ]
507
+ },
508
+ "host": {
509
+ "type": "string"
510
+ },
511
+ "username": {
512
+ "type": "string"
513
+ },
514
+ "passwordFile": {
515
+ "type": "string"
516
+ },
517
+ "port": {
518
+ "type": "integer"
519
+ },
520
+ "path": {
521
+ "type": "string"
522
+ }
523
+ }
524
+ }
525
+ }
526
+ },
527
+ "restic-package-repository": {
528
+ "type": "object",
529
+ "additionalProperties": false,
530
+ "properties": {}
531
+ },
532
+ "git-task": {
533
+ "type": "object",
534
+ "additionalProperties": false,
535
+ "properties": {
536
+ "command": {
537
+ "type": "string"
538
+ },
539
+ "includeModified": {
540
+ "anyOf": [
541
+ {
542
+ "type": "boolean"
543
+ },
544
+ {
545
+ "$ref": "#/definitions/stringlist-util"
546
+ }
547
+ ]
548
+ },
549
+ "includeUntracked": {
550
+ "anyOf": [
551
+ {
552
+ "type": "boolean"
553
+ },
554
+ {
555
+ "$ref": "#/definitions/stringlist-util"
556
+ }
557
+ ]
558
+ },
559
+ "includeIgnored": {
560
+ "anyOf": [
561
+ {
562
+ "type": "boolean"
563
+ },
564
+ {
565
+ "$ref": "#/definitions/stringlist-util"
566
+ }
567
+ ]
568
+ },
569
+ "includeConfig": {
570
+ "type": "boolean"
571
+ }
572
+ }
573
+ },
574
+ "script-task": {
575
+ "type": "object",
576
+ "additionalProperties": false,
577
+ "required": [
578
+ "backupSteps",
579
+ "restoreSteps"
580
+ ],
581
+ "properties": {
582
+ "env": {
583
+ "type": "object",
584
+ "patternProperties": {
585
+ ".+": {
586
+ "type": "string"
587
+ }
588
+ }
589
+ },
590
+ "backupSteps": {
591
+ "type": "array",
592
+ "items": {
593
+ "$ref": "#/definitions/script-task_step"
594
+ }
595
+ },
596
+ "restoreSteps": {
597
+ "type": "array",
598
+ "items": {
599
+ "$ref": "#/definitions/script-task_step"
600
+ }
601
+ }
602
+ }
603
+ },
604
+ "sqldump-task": {
605
+ "type": "object",
606
+ "required": [
607
+ "password",
608
+ "hostname",
609
+ "username",
610
+ "database"
611
+ ],
612
+ "properties": {
613
+ "password": {
614
+ "anyOf": [
615
+ {
616
+ "type": "string"
617
+ },
618
+ {
619
+ "type": "object",
620
+ "additionalProperties": false,
621
+ "required": [
622
+ "path"
623
+ ],
624
+ "properties": {
625
+ "path": {
626
+ "type": "string"
627
+ }
628
+ }
629
+ }
630
+ ]
631
+ },
632
+ "hostname": {
633
+ "type": "string"
634
+ },
635
+ "port": {
636
+ "type": "integer"
637
+ },
638
+ "username": {
639
+ "type": "string"
640
+ },
641
+ "database": {
642
+ "type": "string"
643
+ },
644
+ "targetDatabase": {
645
+ "type": "object",
646
+ "required": [
647
+ "name"
648
+ ],
649
+ "properties": {
650
+ "name": {
651
+ "type": "string"
652
+ },
653
+ "charset": {
654
+ "type": "string"
655
+ },
656
+ "collate": {
657
+ "type": "string"
658
+ }
659
+ }
660
+ },
661
+ "includeTables": {
662
+ "$ref": "#/definitions/stringlist-util"
663
+ },
664
+ "excludeTables": {
665
+ "$ref": "#/definitions/stringlist-util"
666
+ },
667
+ "oneFileByTable": {
668
+ "type": "boolean"
669
+ }
670
+ }
671
+ },
672
+ "mariadb-task": {
673
+ "type": "object",
674
+ "required": [
675
+ "hostname",
676
+ "username",
677
+ "password"
678
+ ],
679
+ "additionalProperties": false,
680
+ "properties": {
681
+ "command": {
682
+ "type": "string"
683
+ },
684
+ "hostname": {
685
+ "type": "string"
686
+ },
687
+ "username": {
688
+ "type": "string"
689
+ },
690
+ "password": {
691
+ "anyOf": [
692
+ {
693
+ "type": "string"
694
+ },
695
+ {
696
+ "type": "object",
697
+ "additionalProperties": false,
698
+ "required": [
699
+ "path"
700
+ ],
701
+ "properties": {
702
+ "path": {
703
+ "type": "string"
704
+ }
705
+ }
706
+ }
707
+ ]
708
+ },
709
+ "includeTables": {
710
+ "$ref": "#/definitions/stringlist-util"
711
+ },
712
+ "excludeTables": {
713
+ "$ref": "#/definitions/stringlist-util"
714
+ },
715
+ "includeDatabases": {
716
+ "$ref": "#/definitions/stringlist-util"
717
+ },
718
+ "excludeDatabases": {
719
+ "$ref": "#/definitions/stringlist-util"
720
+ }
721
+ }
722
+ },
723
+ "mssql-task": {
724
+ "type": "object",
725
+ "additionalProperties": false,
726
+ "properties": {
727
+ "command": {
728
+ "type": "string"
729
+ },
730
+ "hostname": {
731
+ "type": "string"
732
+ },
733
+ "username": {
734
+ "type": "string"
735
+ },
736
+ "passwordFile": {
737
+ "type": "string"
738
+ },
739
+ "includeDatabases": {
740
+ "$ref": "#/definitions/stringlist-util"
741
+ },
742
+ "excludeDatabases": {
743
+ "$ref": "#/definitions/stringlist-util"
744
+ }
745
+ }
746
+ },
747
+ "mysql-dump-task": {
748
+ "allOf": [
749
+ {
750
+ "$ref": "#/definitions/sqldump-task"
751
+ }
752
+ ]
753
+ },
754
+ "postgresql-dump-task": {
755
+ "allOf": [
756
+ {
757
+ "$ref": "#/definitions/sqldump-task"
758
+ }
759
+ ]
760
+ },
761
+ "config": {
762
+ "type": "object",
763
+ "required": [
764
+ "repositories",
765
+ "packages"
766
+ ],
767
+ "additionalProperties": false,
768
+ "properties": {
769
+ "$schema": {
770
+ "type": "string"
771
+ },
772
+ "repositories": {
773
+ "type": "array",
774
+ "items": {
775
+ "$ref": "#/definitions/repository"
776
+ }
777
+ },
778
+ "packages": {
779
+ "type": "array",
780
+ "items": {
781
+ "$ref": "#/definitions/package"
782
+ }
783
+ }
784
+ }
785
+ },
786
+ "prune-policy": {
787
+ "type": "object",
788
+ "properties": {
789
+ "keepDaily": {
790
+ "type": "integer"
791
+ },
792
+ "keepHourly": {
793
+ "type": "integer"
794
+ },
795
+ "keepMinutely": {
796
+ "type": "integer"
797
+ },
798
+ "keepLast": {
799
+ "type": "integer"
800
+ },
801
+ "keepMonthly": {
802
+ "type": "integer"
803
+ },
804
+ "keepWeekly": {
805
+ "type": "integer"
806
+ },
807
+ "keepYearly": {
808
+ "type": "integer"
809
+ },
810
+ "groupBy": {
811
+ "type": "array",
812
+ "items": {
813
+ "type": "string",
814
+ "enum": [
815
+ "packageName",
816
+ "repositoryName",
817
+ "repositoryType"
818
+ ]
819
+ }
820
+ },
821
+ "tags": {
822
+ "$ref": "#/definitions/stringlist-util"
823
+ }
824
+ }
825
+ },
826
+ "paths-object": {
827
+ "type": "object",
828
+ "required": [
829
+ "type"
830
+ ],
831
+ "properties": {
832
+ "type": {
833
+ "type": "string"
834
+ }
835
+ },
836
+ "anyOf": [
837
+ {
838
+ "if": {
839
+ "type": "object",
840
+ "properties": {
841
+ "type": {
842
+ "const": "spawn"
843
+ }
844
+ }
845
+ },
846
+ "then": {
847
+ "type": "object",
848
+ "required": [
849
+ "command"
850
+ ],
851
+ "properties": {
852
+ "command": {
853
+ "type": "string"
854
+ },
855
+ "args": {
856
+ "$ref": "#/definitions/stringlist-util"
857
+ }
858
+ }
859
+ },
860
+ "else": false
861
+ }
862
+ ]
863
+ },
864
+ "script-task_step": {
865
+ "type": "object",
866
+ "required": [
867
+ "type"
868
+ ],
869
+ "properties": {
870
+ "type": {
871
+ "enum": [
872
+ "process",
873
+ "node"
874
+ ]
875
+ },
876
+ "config": {}
877
+ },
878
+ "anyOf": [
879
+ {
880
+ "if": {
881
+ "type": "object",
882
+ "properties": {
883
+ "type": {
884
+ "const": "process"
885
+ }
886
+ }
887
+ },
888
+ "then": {
889
+ "type": "object",
890
+ "properties": {
891
+ "config": {
892
+ "$ref": "#/definitions/script-task_processStepConfig"
893
+ }
894
+ }
895
+ },
896
+ "else": false
897
+ },
898
+ {
899
+ "if": {
900
+ "type": "object",
901
+ "properties": {
902
+ "type": {
903
+ "const": "node"
904
+ }
905
+ }
906
+ },
907
+ "then": {
908
+ "type": "object",
909
+ "properties": {
910
+ "config": {
911
+ "$ref": "#/definitions/script-task_nodeStepConfig"
912
+ }
913
+ }
914
+ },
915
+ "else": false
916
+ }
917
+ ]
918
+ },
919
+ "script-task_processStepConfig": {
920
+ "type": "object",
921
+ "required": [
922
+ "command"
923
+ ],
924
+ "properties": {
925
+ "command": {
926
+ "type": "string"
927
+ },
928
+ "env": {
929
+ "type": "object",
930
+ "patternProperties": {
931
+ ".+": {
932
+ "type": "string"
933
+ }
934
+ }
935
+ },
936
+ "args": {
937
+ "$ref": "#/definitions/stringlist-util"
938
+ }
939
+ }
940
+ },
941
+ "script-task_nodeStepConfig": {
942
+ "type": "object",
943
+ "required": [
944
+ "code"
945
+ ],
946
+ "properties": {
947
+ "code": {
948
+ "anyOf": [
949
+ {
950
+ "type": "string"
951
+ },
952
+ {
953
+ "$ref": "#/definitions/stringlist-util"
954
+ }
955
+ ]
956
+ },
957
+ "env": {
958
+ "type": "object",
959
+ "patternProperties": {
960
+ ".+": {
961
+ "type": "string"
962
+ }
963
+ }
964
+ }
965
+ }
966
+ }
967
+ },
968
+ "$ref": "#/definitions/config"
969
+ }
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "datatruck",
3
- "version": "0.0.6",
3
+ "version": "0.3.0",
4
4
  "dependencies": {
5
- "@datatruck/cli": "0.0.6"
5
+ "@datatruck/cli": "0.3.0"
6
6
  },
7
7
  "engine": {
8
8
  "node": ">=16.0.0"