designlang 4.0.1 → 6.0.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.
Files changed (40) hide show
  1. package/README.md +66 -5
  2. package/bin/design-extract.js +269 -70
  3. package/package.json +9 -4
  4. package/src/apply.js +65 -0
  5. package/src/config.js +36 -0
  6. package/src/crawler.js +247 -82
  7. package/src/darkdiff.js +65 -0
  8. package/src/extractors/animations.js +76 -8
  9. package/src/extractors/borders.js +40 -5
  10. package/src/extractors/components.js +100 -1
  11. package/src/extractors/fonts.js +82 -0
  12. package/src/extractors/gradients.js +100 -0
  13. package/src/extractors/icons.js +80 -0
  14. package/src/extractors/images.js +76 -0
  15. package/src/extractors/shadows.js +60 -17
  16. package/src/extractors/spacing.js +31 -2
  17. package/src/extractors/variables.js +20 -1
  18. package/src/extractors/zindex.js +65 -0
  19. package/src/formatters/figma.js +66 -47
  20. package/src/formatters/markdown.js +98 -0
  21. package/src/formatters/preview.js +65 -22
  22. package/src/formatters/svelte-theme.js +40 -0
  23. package/src/formatters/tailwind.js +57 -4
  24. package/src/formatters/theme.js +134 -0
  25. package/src/formatters/vue-theme.js +44 -0
  26. package/src/formatters/wordpress.js +84 -0
  27. package/src/history.js +8 -1
  28. package/src/index.js +54 -16
  29. package/src/utils.js +68 -0
  30. package/tests/cli.test.js +34 -0
  31. package/tests/extractors.test.js +661 -0
  32. package/tests/formatters.test.js +477 -0
  33. package/tests/utils.test.js +413 -0
  34. package/website/app/api/extract/route.js +85 -0
  35. package/website/app/components/Extractor.js +184 -0
  36. package/website/app/globals.css +291 -0
  37. package/website/app/page.js +13 -0
  38. package/website/next.config.mjs +10 -1
  39. package/website/package-lock.json +356 -0
  40. package/website/package.json +4 -1
@@ -8,7 +8,10 @@
8
8
  "name": "website",
9
9
  "version": "0.1.0",
10
10
  "dependencies": {
11
+ "@sparticuz/chromium": "^147.0.0",
12
+ "jszip": "^3.10.1",
11
13
  "next": "16.2.3",
14
+ "playwright-core": "^1.59.1",
12
15
  "react": "19.2.4",
13
16
  "react-dom": "19.2.4"
14
17
  }
@@ -623,6 +626,19 @@
623
626
  "node": ">= 10"
624
627
  }
625
628
  },
629
+ "node_modules/@sparticuz/chromium": {
630
+ "version": "147.0.0",
631
+ "resolved": "https://registry.npmjs.org/@sparticuz/chromium/-/chromium-147.0.0.tgz",
632
+ "integrity": "sha512-4ZKeAQQa8up2mt675qSitztLdbQrlf8BKdC5naeap+5Mv1OV1OlJdPoU+EJC/p5sQUJUQmN4r+q5+EhaaOUHpQ==",
633
+ "license": "MIT",
634
+ "dependencies": {
635
+ "follow-redirects": "^1.15.11",
636
+ "tar-fs": "^3.1.2"
637
+ },
638
+ "engines": {
639
+ "node": ">=20.11.0"
640
+ }
641
+ },
626
642
  "node_modules/@swc/helpers": {
627
643
  "version": "0.5.15",
628
644
  "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz",
@@ -632,6 +648,111 @@
632
648
  "tslib": "^2.8.0"
633
649
  }
634
650
  },
651
+ "node_modules/b4a": {
652
+ "version": "1.8.0",
653
+ "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.8.0.tgz",
654
+ "integrity": "sha512-qRuSmNSkGQaHwNbM7J78Wwy+ghLEYF1zNrSeMxj4Kgw6y33O3mXcQ6Ie9fRvfU/YnxWkOchPXbaLb73TkIsfdg==",
655
+ "license": "Apache-2.0",
656
+ "peerDependencies": {
657
+ "react-native-b4a": "*"
658
+ },
659
+ "peerDependenciesMeta": {
660
+ "react-native-b4a": {
661
+ "optional": true
662
+ }
663
+ }
664
+ },
665
+ "node_modules/bare-events": {
666
+ "version": "2.8.2",
667
+ "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz",
668
+ "integrity": "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==",
669
+ "license": "Apache-2.0",
670
+ "peerDependencies": {
671
+ "bare-abort-controller": "*"
672
+ },
673
+ "peerDependenciesMeta": {
674
+ "bare-abort-controller": {
675
+ "optional": true
676
+ }
677
+ }
678
+ },
679
+ "node_modules/bare-fs": {
680
+ "version": "4.7.1",
681
+ "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.7.1.tgz",
682
+ "integrity": "sha512-WDRsyVN52eAx/lBamKD6uyw8H4228h/x0sGGGegOamM2cd7Pag88GfMQalobXI+HaEUxpCkbKQUDOQqt9wawRw==",
683
+ "license": "Apache-2.0",
684
+ "dependencies": {
685
+ "bare-events": "^2.5.4",
686
+ "bare-path": "^3.0.0",
687
+ "bare-stream": "^2.6.4",
688
+ "bare-url": "^2.2.2",
689
+ "fast-fifo": "^1.3.2"
690
+ },
691
+ "engines": {
692
+ "bare": ">=1.16.0"
693
+ },
694
+ "peerDependencies": {
695
+ "bare-buffer": "*"
696
+ },
697
+ "peerDependenciesMeta": {
698
+ "bare-buffer": {
699
+ "optional": true
700
+ }
701
+ }
702
+ },
703
+ "node_modules/bare-os": {
704
+ "version": "3.8.7",
705
+ "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.8.7.tgz",
706
+ "integrity": "sha512-G4Gr1UsGeEy2qtDTZwL7JFLo2wapUarz7iTMcYcMFdS89AIQuBoyjgXZz0Utv7uHs3xA9LckhVbeBi8lEQrC+w==",
707
+ "license": "Apache-2.0",
708
+ "engines": {
709
+ "bare": ">=1.14.0"
710
+ }
711
+ },
712
+ "node_modules/bare-path": {
713
+ "version": "3.0.0",
714
+ "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz",
715
+ "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==",
716
+ "license": "Apache-2.0",
717
+ "dependencies": {
718
+ "bare-os": "^3.0.1"
719
+ }
720
+ },
721
+ "node_modules/bare-stream": {
722
+ "version": "2.13.0",
723
+ "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.13.0.tgz",
724
+ "integrity": "sha512-3zAJRZMDFGjdn+RVnNpF9kuELw+0Fl3lpndM4NcEOhb9zwtSo/deETfuIwMSE5BXanA0FrN1qVjffGwAg2Y7EA==",
725
+ "license": "Apache-2.0",
726
+ "dependencies": {
727
+ "streamx": "^2.25.0",
728
+ "teex": "^1.0.1"
729
+ },
730
+ "peerDependencies": {
731
+ "bare-abort-controller": "*",
732
+ "bare-buffer": "*",
733
+ "bare-events": "*"
734
+ },
735
+ "peerDependenciesMeta": {
736
+ "bare-abort-controller": {
737
+ "optional": true
738
+ },
739
+ "bare-buffer": {
740
+ "optional": true
741
+ },
742
+ "bare-events": {
743
+ "optional": true
744
+ }
745
+ }
746
+ },
747
+ "node_modules/bare-url": {
748
+ "version": "2.4.0",
749
+ "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.4.0.tgz",
750
+ "integrity": "sha512-NSTU5WN+fy/L0DDenfE8SXQna4voXuW0FHM7wH8i3/q9khUSchfPbPezO4zSFMnDGIf9YE+mt/RWhZgNRKRIXA==",
751
+ "license": "Apache-2.0",
752
+ "dependencies": {
753
+ "bare-path": "^3.0.0"
754
+ }
755
+ },
635
756
  "node_modules/baseline-browser-mapping": {
636
757
  "version": "2.10.19",
637
758
  "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.19.tgz",
@@ -670,6 +791,12 @@
670
791
  "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==",
671
792
  "license": "MIT"
672
793
  },
794
+ "node_modules/core-util-is": {
795
+ "version": "1.0.3",
796
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
797
+ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
798
+ "license": "MIT"
799
+ },
673
800
  "node_modules/detect-libc": {
674
801
  "version": "2.1.2",
675
802
  "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
@@ -680,6 +807,89 @@
680
807
  "node": ">=8"
681
808
  }
682
809
  },
810
+ "node_modules/end-of-stream": {
811
+ "version": "1.4.5",
812
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz",
813
+ "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==",
814
+ "license": "MIT",
815
+ "dependencies": {
816
+ "once": "^1.4.0"
817
+ }
818
+ },
819
+ "node_modules/events-universal": {
820
+ "version": "1.0.1",
821
+ "resolved": "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz",
822
+ "integrity": "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==",
823
+ "license": "Apache-2.0",
824
+ "dependencies": {
825
+ "bare-events": "^2.7.0"
826
+ }
827
+ },
828
+ "node_modules/fast-fifo": {
829
+ "version": "1.3.2",
830
+ "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz",
831
+ "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==",
832
+ "license": "MIT"
833
+ },
834
+ "node_modules/follow-redirects": {
835
+ "version": "1.16.0",
836
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz",
837
+ "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==",
838
+ "funding": [
839
+ {
840
+ "type": "individual",
841
+ "url": "https://github.com/sponsors/RubenVerborgh"
842
+ }
843
+ ],
844
+ "license": "MIT",
845
+ "engines": {
846
+ "node": ">=4.0"
847
+ },
848
+ "peerDependenciesMeta": {
849
+ "debug": {
850
+ "optional": true
851
+ }
852
+ }
853
+ },
854
+ "node_modules/immediate": {
855
+ "version": "3.0.6",
856
+ "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
857
+ "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==",
858
+ "license": "MIT"
859
+ },
860
+ "node_modules/inherits": {
861
+ "version": "2.0.4",
862
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
863
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
864
+ "license": "ISC"
865
+ },
866
+ "node_modules/isarray": {
867
+ "version": "1.0.0",
868
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
869
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
870
+ "license": "MIT"
871
+ },
872
+ "node_modules/jszip": {
873
+ "version": "3.10.1",
874
+ "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz",
875
+ "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==",
876
+ "license": "(MIT OR GPL-3.0-or-later)",
877
+ "dependencies": {
878
+ "lie": "~3.3.0",
879
+ "pako": "~1.0.2",
880
+ "readable-stream": "~2.3.6",
881
+ "setimmediate": "^1.0.5"
882
+ }
883
+ },
884
+ "node_modules/lie": {
885
+ "version": "3.3.0",
886
+ "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz",
887
+ "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==",
888
+ "license": "MIT",
889
+ "dependencies": {
890
+ "immediate": "~3.0.5"
891
+ }
892
+ },
683
893
  "node_modules/nanoid": {
684
894
  "version": "3.3.11",
685
895
  "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
@@ -751,12 +961,39 @@
751
961
  }
752
962
  }
753
963
  },
964
+ "node_modules/once": {
965
+ "version": "1.4.0",
966
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
967
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
968
+ "license": "ISC",
969
+ "dependencies": {
970
+ "wrappy": "1"
971
+ }
972
+ },
973
+ "node_modules/pako": {
974
+ "version": "1.0.11",
975
+ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
976
+ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
977
+ "license": "(MIT AND Zlib)"
978
+ },
754
979
  "node_modules/picocolors": {
755
980
  "version": "1.1.1",
756
981
  "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
757
982
  "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
758
983
  "license": "ISC"
759
984
  },
985
+ "node_modules/playwright-core": {
986
+ "version": "1.59.1",
987
+ "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.59.1.tgz",
988
+ "integrity": "sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==",
989
+ "license": "Apache-2.0",
990
+ "bin": {
991
+ "playwright-core": "cli.js"
992
+ },
993
+ "engines": {
994
+ "node": ">=18"
995
+ }
996
+ },
760
997
  "node_modules/postcss": {
761
998
  "version": "8.4.31",
762
999
  "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
@@ -785,6 +1022,22 @@
785
1022
  "node": "^10 || ^12 || >=14"
786
1023
  }
787
1024
  },
1025
+ "node_modules/process-nextick-args": {
1026
+ "version": "2.0.1",
1027
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
1028
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
1029
+ "license": "MIT"
1030
+ },
1031
+ "node_modules/pump": {
1032
+ "version": "3.0.4",
1033
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.4.tgz",
1034
+ "integrity": "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==",
1035
+ "license": "MIT",
1036
+ "dependencies": {
1037
+ "end-of-stream": "^1.1.0",
1038
+ "once": "^1.3.1"
1039
+ }
1040
+ },
788
1041
  "node_modules/react": {
789
1042
  "version": "19.2.4",
790
1043
  "resolved": "https://registry.npmjs.org/react/-/react-19.2.4.tgz",
@@ -806,6 +1059,27 @@
806
1059
  "react": "^19.2.4"
807
1060
  }
808
1061
  },
1062
+ "node_modules/readable-stream": {
1063
+ "version": "2.3.8",
1064
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
1065
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
1066
+ "license": "MIT",
1067
+ "dependencies": {
1068
+ "core-util-is": "~1.0.0",
1069
+ "inherits": "~2.0.3",
1070
+ "isarray": "~1.0.0",
1071
+ "process-nextick-args": "~2.0.0",
1072
+ "safe-buffer": "~5.1.1",
1073
+ "string_decoder": "~1.1.1",
1074
+ "util-deprecate": "~1.0.1"
1075
+ }
1076
+ },
1077
+ "node_modules/safe-buffer": {
1078
+ "version": "5.1.2",
1079
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
1080
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
1081
+ "license": "MIT"
1082
+ },
809
1083
  "node_modules/scheduler": {
810
1084
  "version": "0.27.0",
811
1085
  "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz",
@@ -825,6 +1099,12 @@
825
1099
  "node": ">=10"
826
1100
  }
827
1101
  },
1102
+ "node_modules/setimmediate": {
1103
+ "version": "1.0.5",
1104
+ "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
1105
+ "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==",
1106
+ "license": "MIT"
1107
+ },
828
1108
  "node_modules/sharp": {
829
1109
  "version": "0.34.5",
830
1110
  "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.5.tgz",
@@ -879,6 +1159,26 @@
879
1159
  "node": ">=0.10.0"
880
1160
  }
881
1161
  },
1162
+ "node_modules/streamx": {
1163
+ "version": "2.25.0",
1164
+ "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.25.0.tgz",
1165
+ "integrity": "sha512-0nQuG6jf1w+wddNEEXCF4nTg3LtufWINB5eFEN+5TNZW7KWJp6x87+JFL43vaAUPyCfH1wID+mNVyW6OHtFamg==",
1166
+ "license": "MIT",
1167
+ "dependencies": {
1168
+ "events-universal": "^1.0.0",
1169
+ "fast-fifo": "^1.3.2",
1170
+ "text-decoder": "^1.1.0"
1171
+ }
1172
+ },
1173
+ "node_modules/string_decoder": {
1174
+ "version": "1.1.1",
1175
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
1176
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
1177
+ "license": "MIT",
1178
+ "dependencies": {
1179
+ "safe-buffer": "~5.1.0"
1180
+ }
1181
+ },
882
1182
  "node_modules/styled-jsx": {
883
1183
  "version": "5.1.6",
884
1184
  "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz",
@@ -902,11 +1202,67 @@
902
1202
  }
903
1203
  }
904
1204
  },
1205
+ "node_modules/tar-fs": {
1206
+ "version": "3.1.2",
1207
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.2.tgz",
1208
+ "integrity": "sha512-QGxxTxxyleAdyM3kpFs14ymbYmNFrfY+pHj7Z8FgtbZ7w2//VAgLMac7sT6nRpIHjppXO2AwwEOg0bPFVRcmXw==",
1209
+ "license": "MIT",
1210
+ "dependencies": {
1211
+ "pump": "^3.0.0",
1212
+ "tar-stream": "^3.1.5"
1213
+ },
1214
+ "optionalDependencies": {
1215
+ "bare-fs": "^4.0.1",
1216
+ "bare-path": "^3.0.0"
1217
+ }
1218
+ },
1219
+ "node_modules/tar-stream": {
1220
+ "version": "3.1.8",
1221
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.8.tgz",
1222
+ "integrity": "sha512-U6QpVRyCGHva435KoNWy9PRoi2IFYCgtEhq9nmrPPpbRacPs9IH4aJ3gbrFC8dPcXvdSZ4XXfXT5Fshbp2MtlQ==",
1223
+ "license": "MIT",
1224
+ "dependencies": {
1225
+ "b4a": "^1.6.4",
1226
+ "bare-fs": "^4.5.5",
1227
+ "fast-fifo": "^1.2.0",
1228
+ "streamx": "^2.15.0"
1229
+ }
1230
+ },
1231
+ "node_modules/teex": {
1232
+ "version": "1.0.1",
1233
+ "resolved": "https://registry.npmjs.org/teex/-/teex-1.0.1.tgz",
1234
+ "integrity": "sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==",
1235
+ "license": "MIT",
1236
+ "dependencies": {
1237
+ "streamx": "^2.12.5"
1238
+ }
1239
+ },
1240
+ "node_modules/text-decoder": {
1241
+ "version": "1.2.7",
1242
+ "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.7.tgz",
1243
+ "integrity": "sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ==",
1244
+ "license": "Apache-2.0",
1245
+ "dependencies": {
1246
+ "b4a": "^1.6.4"
1247
+ }
1248
+ },
905
1249
  "node_modules/tslib": {
906
1250
  "version": "2.8.1",
907
1251
  "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
908
1252
  "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
909
1253
  "license": "0BSD"
1254
+ },
1255
+ "node_modules/util-deprecate": {
1256
+ "version": "1.0.2",
1257
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
1258
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
1259
+ "license": "MIT"
1260
+ },
1261
+ "node_modules/wrappy": {
1262
+ "version": "1.0.2",
1263
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
1264
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
1265
+ "license": "ISC"
910
1266
  }
911
1267
  }
912
1268
  }
@@ -4,11 +4,14 @@
4
4
  "private": true,
5
5
  "scripts": {
6
6
  "dev": "next dev",
7
- "build": "next build",
7
+ "build": "next build --webpack",
8
8
  "start": "next start"
9
9
  },
10
10
  "dependencies": {
11
+ "@sparticuz/chromium": "^147.0.0",
12
+ "jszip": "^3.10.1",
11
13
  "next": "16.2.3",
14
+ "playwright-core": "^1.59.1",
12
15
  "react": "19.2.4",
13
16
  "react-dom": "19.2.4"
14
17
  }