@bubblydoo/uxp-test-framework-plugin 0.0.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.
Files changed (39) hide show
  1. package/.npmignore +4 -0
  2. package/.turbo/daemon/b38c7656669412eb-turbo.log.2026-01-28 +0 -0
  3. package/.turbo/turbo-build.log +14 -0
  4. package/CHANGELOG.md +11 -0
  5. package/create-vite-config.ts +91 -0
  6. package/dist/create-vite-config.js +13965 -0
  7. package/index.html +12 -0
  8. package/package.json +63 -0
  9. package/postcss.config.cjs +8 -0
  10. package/public-zip/readme.txt +1 -0
  11. package/src/assets/bolt-uxp-quickstart.gif +0 -0
  12. package/src/assets/bolt-uxp.png +0 -0
  13. package/src/assets/bolt-uxp.svg +55 -0
  14. package/src/assets/built-with-bolt-uxp/Built_With_BOLT_UXP_Logo_Black_V01.png +0 -0
  15. package/src/assets/built-with-bolt-uxp/Built_With_BOLT_UXP_Logo_Black_V01.svg +78 -0
  16. package/src/assets/built-with-bolt-uxp/Built_With_BOLT_UXP_Logo_White_V01.png +0 -0
  17. package/src/assets/built-with-bolt-uxp/Built_With_BOLT_UXP_Logo_White_V01.svg +81 -0
  18. package/src/assets/react.png +0 -0
  19. package/src/assets/react.svg +36 -0
  20. package/src/assets/sass.png +0 -0
  21. package/src/assets/sass.svg +45 -0
  22. package/src/assets/svelte.png +0 -0
  23. package/src/assets/svelte.svg +1 -0
  24. package/src/assets/typescript.png +0 -0
  25. package/src/assets/typescript.svg +6 -0
  26. package/src/assets/vite.png +0 -0
  27. package/src/assets/vite.svg +1 -0
  28. package/src/assets/vue.png +0 -0
  29. package/src/assets/vue.svg +2 -0
  30. package/src/bolt-uxp-ws-listener.js +26 -0
  31. package/src/components/ErrorView.tsx +69 -0
  32. package/src/index-react.tsx +14 -0
  33. package/src/index.css +11 -0
  34. package/src/lib/resolvePath.ts +19 -0
  35. package/src/main.tsx +238 -0
  36. package/src/tests.d.ts +5 -0
  37. package/tailwind.config.js +15 -0
  38. package/tsup.config.ts +11 -0
  39. package/uxp.config.ts +109 -0
package/index.html ADDED
@@ -0,0 +1,12 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>UXP Test Framework Plugin</title>
7
+ </head>
8
+ <body>
9
+ <div id="app"></div>
10
+ <script type="module" src="/src/index-react.tsx"></script>
11
+ </body>
12
+ </html>
package/package.json ADDED
@@ -0,0 +1,63 @@
1
+ {
2
+ "name": "@bubblydoo/uxp-test-framework-plugin",
3
+ "version": "0.0.2",
4
+ "type": "module",
5
+ "license": "MIT",
6
+ "author": "Hans Otto Wirtz <hansottowirtz@gmail.com>",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/bubblydoo/uxp-toolkit.git"
10
+ },
11
+ "homepage": "https://github.com/bubblydoo/uxp-toolkit/tree/main/packages/uxp-test-framework-plugin",
12
+ "exports": {
13
+ "./create-vite-config": {
14
+ "types": "./dist/create-vite-config.d.ts",
15
+ "import": "./dist/create-vite-config.js"
16
+ },
17
+ "./package.json": "./package.json"
18
+ },
19
+ "publishConfig": {
20
+ "access": "public"
21
+ },
22
+ "files": [
23
+ "*"
24
+ ],
25
+ "peerDependencies": {
26
+ "@bubblydoo/uxp-toolkit": "0.0.2"
27
+ },
28
+ "dependencies": {
29
+ "@tanstack/react-query": "^5.90.20",
30
+ "error-stack-parser": "^2.1.4",
31
+ "react": "^19.1.0",
32
+ "react-dom": "^19.1.0",
33
+ "source-map-js": "^1.2.1",
34
+ "vite-plugin-static-copy": "^3.1.6",
35
+ "vite-tsconfig-paths": "^6.0.5",
36
+ "@bubblydoo/uxp-polyfills": "0.0.2",
37
+ "@bubblydoo/uxp-test-framework-base": "0.0.2"
38
+ },
39
+ "devDependencies": {
40
+ "@adobe/cc-ext-uxp-types": "https://github.com/justintaylor-dev/cc-ext-uxp-types.git",
41
+ "@types/node": "^20.8.7",
42
+ "@types/photoshop": "^25.0.2",
43
+ "@types/react": "^19.1.6",
44
+ "@types/react-dom": "^19.1.6",
45
+ "@types/ws": "^8.5.8",
46
+ "@vitejs/plugin-react": "^5.1.2",
47
+ "tailwindcss": "^3",
48
+ "postcss": "^8",
49
+ "autoprefixer": "^10",
50
+ "cross-env": "^7.0.3",
51
+ "npm-run-all": "^4.1.5",
52
+ "tsup": "^8.5.1",
53
+ "typescript": "^5.9.3",
54
+ "vite": "^7.3.1",
55
+ "vite-uxp-plugin": "^1.2.5",
56
+ "ws": "^8.14.2",
57
+ "zod": "^4.3.6",
58
+ "@bubblydoo/tsconfig": "0.0.1"
59
+ },
60
+ "scripts": {
61
+ "build": "tsup"
62
+ }
63
+ }
@@ -0,0 +1,8 @@
1
+ const path = require("path");
2
+
3
+ module.exports = {
4
+ plugins: {
5
+ tailwindcss: { config: path.resolve(__dirname, "tailwind.config.js") },
6
+ autoprefixer: {}
7
+ }
8
+ }
@@ -0,0 +1 @@
1
+ This is a sample readme that gets copied to the zip
Binary file
@@ -0,0 +1,55 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!-- Generator: Adobe Illustrator 27.9.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
4
+ viewBox="0 0 683.496 206.562" style="enable-background:new 0 0 683.496 206.562;" xml:space="preserve">
5
+ <g id="Layer_1">
6
+ </g>
7
+ <g id="_x3C_Layer_x3E_">
8
+ <linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="91.7656" y1="181.7306" x2="91.7656" y2="22.7706">
9
+ <stop offset="0" style="stop-color:#FF5923"/>
10
+ <stop offset="0.9684" style="stop-color:#F69000"/>
11
+ </linearGradient>
12
+ <path style="fill:url(#SVGID_1_);" d="M23.64,181.731h136.252v-66.056l-13.698-11.668l13.698-11.354V22.771H23.64V181.731z
13
+ M69.056,63.874h45.418v19.983H69.056V63.874z M69.056,123.369h45.418v19.983H69.056V123.369z"/>
14
+
15
+ <linearGradient id="SVGID_00000111189668751528194390000017824479021962424488_" gradientUnits="userSpaceOnUse" x1="385.8651" y1="181.6225" x2="385.8651" y2="22.6626">
16
+ <stop offset="0" style="stop-color:#FF5923"/>
17
+ <stop offset="0.9684" style="stop-color:#F69000"/>
18
+ </linearGradient>
19
+ <polygon style="fill:url(#SVGID_00000111189668751528194390000017824479021962424488_);" points="379.109,22.663 333.692,22.663
20
+ 333.692,181.623 438.038,181.623 438.038,136.206 379.109,136.206 "/>
21
+
22
+ <linearGradient id="SVGID_00000090262101450964057930000007872518388840716961_" gradientUnits="userSpaceOnUse" x1="480.0841" y1="181.6225" x2="480.0841" y2="22.6626">
23
+ <stop offset="0" style="stop-color:#FF5923"/>
24
+ <stop offset="0.9684" style="stop-color:#F69000"/>
25
+ </linearGradient>
26
+ <polygon style="fill:url(#SVGID_00000090262101450964057930000007872518388840716961_);" points="411.958,22.663 411.958,68.08
27
+ 457.375,68.08 457.375,181.623 502.793,181.623 502.793,68.08 548.21,68.08 548.21,22.663 "/>
28
+ <g>
29
+
30
+ <linearGradient id="SVGID_00000070118838056978580040000015187374072555349407_" gradientUnits="userSpaceOnUse" x1="214.6258" y1="211.7142" x2="214.6258" y2="-7.4292">
31
+ <stop offset="0" style="stop-color:#FF5923"/>
32
+ <stop offset="0.9684" style="stop-color:#F69000"/>
33
+ </linearGradient>
34
+ <polygon style="fill:url(#SVGID_00000070118838056978580040000015187374072555349407_);" points="211.176,121.074 250.819,22.663
35
+ 178.432,22.663 178.432,181.623 234.769,181.623 241.331,121.074 "/>
36
+
37
+ <linearGradient id="SVGID_00000133526093614772055810000003077513770715629226_" gradientUnits="userSpaceOnUse" x1="279.1567" y1="211.7142" x2="279.1567" y2="-7.4292">
38
+ <stop offset="0" style="stop-color:#FF5923"/>
39
+ <stop offset="0.9684" style="stop-color:#F69000"/>
40
+ </linearGradient>
41
+ <polygon style="fill:url(#SVGID_00000133526093614772055810000003077513770715629226_);" points="314.684,22.663 259.68,22.663
42
+ 253.118,83.211 283.273,83.211 243.63,181.623 314.684,181.623 "/>
43
+ </g>
44
+ <g>
45
+ <path style="fill:#FFFFFF;" d="M526.647,161.824v-26.398h10.163v26.134c0,7.523,3.762,11.417,9.966,11.417
46
+ c6.203,0,9.965-3.762,9.965-11.087v-26.464h10.163v26.068c0,13.99-7.854,20.854-20.261,20.854
47
+ C534.237,182.348,526.647,175.419,526.647,161.824z"/>
48
+ <path style="fill:#FFFFFF;" d="M589.215,158.128l-15.442-22.702h11.879l9.635,14.981l9.833-14.981h11.549l-15.442,22.57
49
+ l16.103,23.626h-11.879l-10.361-15.839l-10.427,15.839h-11.549L589.215,158.128z"/>
50
+ <path style="fill:#FFFFFF;" d="M624.922,135.426h18.874c11.021,0,17.687,6.534,17.687,15.971v0.132
51
+ c0,10.691-8.315,16.235-18.677,16.235h-7.721v13.858h-10.163V135.426z M643.136,158.722c5.082,0,8.052-3.035,8.052-6.995v-0.132
52
+ c0-4.554-3.168-6.995-8.25-6.995h-7.853v14.122H643.136z"/>
53
+ </g>
54
+ </g>
55
+ </svg>
@@ -0,0 +1,78 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 28.3.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
4
+ viewBox="0 0 683.5 255.5" style="enable-background:new 0 0 683.5 255.5;" xml:space="preserve">
5
+ <style type="text/css">
6
+ .st0{fill:url(#SVGID_1_);}
7
+ .st1{fill:url(#SVGID_00000121276174219457231300000010533878893480414102_);}
8
+ .st2{fill:url(#SVGID_00000060743898745577369420000003973104976019752583_);}
9
+ .st3{fill:url(#SVGID_00000075133827034294662940000002269505722960545674_);}
10
+ .st4{fill:url(#SVGID_00000057106308376330260390000000642646518858836391_);}
11
+ </style>
12
+ <image style="overflow:visible;" width="300" height="91" xlink:href="34669EA.jpg" transform="matrix(1 0 0 1 -7232 -7652)">
13
+ </image>
14
+ <g id="Layer_1_00000070827164070502073640000010549570326128044194_">
15
+ </g>
16
+ <g id="_x3C_Layer_x3E_">
17
+ <g>
18
+ <path d="M47.4,42.2c0,4.3-3.4,6.8-9.9,6.8H24.6V24.1h12.1c6.2,0,9.4,2.6,9.4,6.5c0,2.5-1.3,4.4-3.3,5.5
19
+ C45.6,36.9,47.4,39,47.4,42.2z M30.3,28.4v5.9H36c2.8,0,4.3-1,4.3-2.9c0-2-1.5-2.9-4.3-2.9h-5.7V28.4z M41.6,41.5
20
+ c0-2.1-1.6-3.1-4.6-3.1h-6.7v6.1H37C40,44.6,41.6,43.7,41.6,41.5z"/>
21
+ <path d="M60,38V24.1h5.7v13.7c0,4.7,2.1,6.7,5.5,6.7c3.5,0,5.5-2,5.5-6.7V24.1h5.7V38c0,7.3-4.2,11.4-11.2,11.4S60,45.3,60,38z"/>
22
+ <path d="M96.7,24.1h5.7v24.8h-5.7V24.1z"/>
23
+ <path d="M116.8,24.1h5.7v20.2H135V49h-18.2V24.1z"/>
24
+ <path d="M149.6,28.8h-7.9v-4.7h21.6v4.7h-7.9V49h-5.7V28.8H149.6z"/>
25
+ <path d="M228.9,24.1l-8.1,24.8h-6.2l-5.5-16.8l-5.6,16.8h-6.1l-8.2-24.8h6l5.6,17.5l5.9-17.5h5.3l5.7,17.6l5.8-17.6
26
+ C223.5,24.1,228.9,24.1,228.9,24.1z"/>
27
+ <path d="M240.6,24.1h5.7v24.8h-5.7V24.1z"/>
28
+ <path d="M265.9,28.8H258v-4.7h21.6v4.7h-7.9V49H266V28.8H265.9z"/>
29
+ <path d="M313.9,24.1v24.8h-5.7V38.7h-11.3v10.2h-5.7V24.1h5.7v9.8h11.3v-9.8C308.2,24.1,313.9,24.1,313.9,24.1z"/>
30
+ </g>
31
+ </g>
32
+ <g id="_x3C_Layer_x3E__00000101805166356094482930000004025362215859257989_">
33
+
34
+ <linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="89.547" y1="25.854" x2="89.547" y2="184.814" gradientTransform="matrix(1 0 0 -1 0 258)">
35
+ <stop offset="0" style="stop-color:#FF5923"/>
36
+ <stop offset="0.9684" style="stop-color:#F69000"/>
37
+ </linearGradient>
38
+ <path class="st0" d="M21.4,232.1h136.3v-66.1L144,154.4l13.7-11.4V73.2H21.4V232.1z M66.8,114.3h45.4v20H66.8V114.3z M66.8,173.8
39
+ h45.4v20H66.8V173.8z"/>
40
+
41
+ <linearGradient id="SVGID_00000163044567990024584640000002000984115619028895_" gradientUnits="userSpaceOnUse" x1="383.646" y1="25.962" x2="383.646" y2="184.922" gradientTransform="matrix(1 0 0 -1 0 258)">
42
+ <stop offset="0" style="stop-color:#FF5923"/>
43
+ <stop offset="0.9684" style="stop-color:#F69000"/>
44
+ </linearGradient>
45
+ <polygon style="fill:url(#SVGID_00000163044567990024584640000002000984115619028895_);" points="376.9,73.1 331.5,73.1 331.5,232
46
+ 435.8,232 435.8,186.6 376.9,186.6 "/>
47
+
48
+ <linearGradient id="SVGID_00000054243227629055278000000013565882483315057296_" gradientUnits="userSpaceOnUse" x1="477.865" y1="25.962" x2="477.865" y2="184.922" gradientTransform="matrix(1 0 0 -1 0 258)">
49
+ <stop offset="0" style="stop-color:#FF5923"/>
50
+ <stop offset="0.9684" style="stop-color:#F69000"/>
51
+ </linearGradient>
52
+ <polygon style="fill:url(#SVGID_00000054243227629055278000000013565882483315057296_);" points="409.7,73.1 409.7,118.5
53
+ 455.2,118.5 455.2,232 500.6,232 500.6,118.5 546,118.5 546,73.1 "/>
54
+ <g>
55
+
56
+ <linearGradient id="SVGID_00000060014388774615594410000000364989930750226580_" gradientUnits="userSpaceOnUse" x1="212.4065" y1="-4.1292" x2="212.4065" y2="215.0142" gradientTransform="matrix(1 0 0 -1 0 258)">
57
+ <stop offset="0" style="stop-color:#FF5923"/>
58
+ <stop offset="0.9684" style="stop-color:#F69000"/>
59
+ </linearGradient>
60
+ <polygon style="fill:url(#SVGID_00000060014388774615594410000000364989930750226580_);" points="209,171.5 248.6,73.1
61
+ 176.2,73.1 176.2,232 232.6,232 239.1,171.5 "/>
62
+
63
+ <linearGradient id="SVGID_00000092434537771690778750000015980361271206018223_" gradientUnits="userSpaceOnUse" x1="276.938" y1="-4.1292" x2="276.938" y2="215.0142" gradientTransform="matrix(1 0 0 -1 0 258)">
64
+ <stop offset="0" style="stop-color:#FF5923"/>
65
+ <stop offset="0.9684" style="stop-color:#F69000"/>
66
+ </linearGradient>
67
+ <polygon style="fill:url(#SVGID_00000092434537771690778750000015980361271206018223_);" points="312.5,73.1 257.5,73.1
68
+ 250.9,133.6 281.1,133.6 241.4,232 312.5,232 "/>
69
+ </g>
70
+ <g>
71
+ <path d="M524.4,212.2v-26.4h10.2V212c0,7.5,3.8,11.4,10,11.4c6.2,0,10-3.8,10-11.1v-26.5h10.2v26.1c0,14-7.9,20.9-20.3,20.9
72
+ C532,232.8,524.4,225.8,524.4,212.2z"/>
73
+ <path d="M587,208.5l-15.4-22.7h11.9l9.6,15l9.8-15h11.5L599,208.4l16.1,23.6h-11.9l-10.4-15.8L582.4,232h-11.5L587,208.5z"/>
74
+ <path d="M622.7,185.8h18.9c11,0,17.7,6.5,17.7,16v0.1c0,10.7-8.3,16.2-18.7,16.2h-7.7V232h-10.2V185.8z M640.9,209.1
75
+ c5.1,0,8.1-3,8.1-7V202c0-4.6-3.2-7-8.2-7h-7.9v14.1H640.9z"/>
76
+ </g>
77
+ </g>
78
+ </svg>
@@ -0,0 +1,81 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 28.3.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
4
+ viewBox="0 0 683.5 255.5" style="enable-background:new 0 0 683.5 255.5;" xml:space="preserve">
5
+ <style type="text/css">
6
+ .st0{fill:#FFFFFF;}
7
+ .st1{fill:url(#SVGID_1_);}
8
+ .st2{fill:url(#SVGID_00000072979084552313586570000015270553819689257126_);}
9
+ .st3{fill:url(#SVGID_00000128480616981507573170000017960744447824107944_);}
10
+ .st4{fill:url(#SVGID_00000141427817798010686350000016577372726904544394_);}
11
+ .st5{fill:url(#SVGID_00000068646362542149341450000014146853836348775592_);}
12
+ </style>
13
+ <image style="overflow:visible;" width="300" height="91" xlink:href="6EEACCE4.jpg" transform="matrix(1 0 0 1 -7232 -7652)">
14
+ </image>
15
+ <g id="Layer_1_00000070827164070502073640000010549570326128044194_">
16
+ </g>
17
+ <g id="_x3C_Layer_x3E_">
18
+ <g>
19
+ <path class="st0" d="M47.4,42.2c0,4.3-3.4,6.8-9.9,6.8H24.6V24.1h12.1c6.2,0,9.4,2.6,9.4,6.5c0,2.5-1.3,4.4-3.3,5.5
20
+ C45.6,36.9,47.4,39,47.4,42.2z M30.3,28.4v5.9H36c2.8,0,4.3-1,4.3-2.9c0-2-1.5-2.9-4.3-2.9h-5.7V28.4z M41.6,41.5
21
+ c0-2.1-1.6-3.1-4.6-3.1h-6.7v6.1H37C40,44.6,41.6,43.7,41.6,41.5z"/>
22
+ <path class="st0" d="M60,38V24.1h5.7v13.7c0,4.7,2.1,6.7,5.5,6.7c3.5,0,5.5-2,5.5-6.7V24.1h5.7V38c0,7.3-4.2,11.4-11.2,11.4
23
+ S60,45.3,60,38z"/>
24
+ <path class="st0" d="M96.7,24.1h5.7v24.8h-5.7V24.1z"/>
25
+ <path class="st0" d="M116.8,24.1h5.7v20.2H135V49h-18.2V24.1z"/>
26
+ <path class="st0" d="M149.6,28.8h-7.9v-4.7h21.6v4.7h-7.9V49h-5.7V28.8H149.6z"/>
27
+ <path class="st0" d="M228.9,24.1l-8.1,24.8h-6.2l-5.5-16.8l-5.6,16.8h-6.1l-8.2-24.8h6l5.6,17.5l5.9-17.5h5.3l5.7,17.6l5.8-17.6
28
+ C223.5,24.1,228.9,24.1,228.9,24.1z"/>
29
+ <path class="st0" d="M240.6,24.1h5.7v24.8h-5.7V24.1z"/>
30
+ <path class="st0" d="M265.9,28.8H258v-4.7h21.6v4.7h-7.9V49H266V28.8H265.9z"/>
31
+ <path class="st0" d="M313.9,24.1v24.8h-5.7V38.7h-11.3v10.2h-5.7V24.1h5.7v9.8h11.3v-9.8C308.2,24.1,313.9,24.1,313.9,24.1z"/>
32
+ </g>
33
+ </g>
34
+ <g id="_x3C_Layer_x3E__00000101805166356094482930000004025362215859257989_">
35
+
36
+ <linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="89.547" y1="25.854" x2="89.547" y2="184.814" gradientTransform="matrix(1 0 0 -1 0 258)">
37
+ <stop offset="0" style="stop-color:#FF5923"/>
38
+ <stop offset="0.9684" style="stop-color:#F69000"/>
39
+ </linearGradient>
40
+ <path class="st1" d="M21.4,232.1h136.3v-66.1L144,154.4l13.7-11.4V73.2H21.4V232.1z M66.8,114.3h45.4v20H66.8V114.3z M66.8,173.8
41
+ h45.4v20H66.8V173.8z"/>
42
+
43
+ <linearGradient id="SVGID_00000070841144729624967970000005245630123913129657_" gradientUnits="userSpaceOnUse" x1="383.646" y1="25.962" x2="383.646" y2="184.922" gradientTransform="matrix(1 0 0 -1 0 258)">
44
+ <stop offset="0" style="stop-color:#FF5923"/>
45
+ <stop offset="0.9684" style="stop-color:#F69000"/>
46
+ </linearGradient>
47
+ <polygon style="fill:url(#SVGID_00000070841144729624967970000005245630123913129657_);" points="376.9,73.1 331.5,73.1 331.5,232
48
+ 435.8,232 435.8,186.6 376.9,186.6 "/>
49
+
50
+ <linearGradient id="SVGID_00000168802606548574150560000014772286791638619055_" gradientUnits="userSpaceOnUse" x1="477.865" y1="25.962" x2="477.865" y2="184.922" gradientTransform="matrix(1 0 0 -1 0 258)">
51
+ <stop offset="0" style="stop-color:#FF5923"/>
52
+ <stop offset="0.9684" style="stop-color:#F69000"/>
53
+ </linearGradient>
54
+ <polygon style="fill:url(#SVGID_00000168802606548574150560000014772286791638619055_);" points="409.7,73.1 409.7,118.5
55
+ 455.2,118.5 455.2,232 500.6,232 500.6,118.5 546,118.5 546,73.1 "/>
56
+ <g>
57
+
58
+ <linearGradient id="SVGID_00000008134429892908128910000012482203268585221297_" gradientUnits="userSpaceOnUse" x1="212.4065" y1="-4.1292" x2="212.4065" y2="215.0142" gradientTransform="matrix(1 0 0 -1 0 258)">
59
+ <stop offset="0" style="stop-color:#FF5923"/>
60
+ <stop offset="0.9684" style="stop-color:#F69000"/>
61
+ </linearGradient>
62
+ <polygon style="fill:url(#SVGID_00000008134429892908128910000012482203268585221297_);" points="209,171.5 248.6,73.1
63
+ 176.2,73.1 176.2,232 232.6,232 239.1,171.5 "/>
64
+
65
+ <linearGradient id="SVGID_00000009553211967572776220000013466792826988740233_" gradientUnits="userSpaceOnUse" x1="276.938" y1="-4.1292" x2="276.938" y2="215.0142" gradientTransform="matrix(1 0 0 -1 0 258)">
66
+ <stop offset="0" style="stop-color:#FF5923"/>
67
+ <stop offset="0.9684" style="stop-color:#F69000"/>
68
+ </linearGradient>
69
+ <polygon style="fill:url(#SVGID_00000009553211967572776220000013466792826988740233_);" points="312.5,73.1 257.5,73.1
70
+ 250.9,133.6 281.1,133.6 241.4,232 312.5,232 "/>
71
+ </g>
72
+ <g>
73
+ <path class="st0" d="M524.4,212.2v-26.4h10.2V212c0,7.5,3.8,11.4,10,11.4c6.2,0,10-3.8,10-11.1v-26.5h10.2v26.1
74
+ c0,14-7.9,20.9-20.3,20.9C532,232.8,524.4,225.8,524.4,212.2z"/>
75
+ <path class="st0" d="M587,208.5l-15.4-22.7h11.9l9.6,15l9.8-15h11.5L599,208.4l16.1,23.6h-11.9l-10.4-15.8L582.4,232h-11.5
76
+ L587,208.5z"/>
77
+ <path class="st0" d="M622.7,185.8h18.9c11,0,17.7,6.5,17.7,16v0.1c0,10.7-8.3,16.2-18.7,16.2h-7.7V232h-10.2V185.8z M640.9,209.1
78
+ c5.1,0,8.1-3,8.1-7V202c0-4.6-3.2-7-8.2-7h-7.9v14.1H640.9z"/>
79
+ </g>
80
+ </g>
81
+ </svg>
Binary file
@@ -0,0 +1,36 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 25.4.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
4
+ viewBox="0 0 506.1 458.7" style="enable-background:new 0 0 506.1 458.7;" xml:space="preserve">
5
+ <style type="text/css">
6
+ .st0{fill:#61DAFB;}
7
+ </style>
8
+ <g>
9
+ <path class="st0" d="M498.4,228.2c0-32.5-40.7-63.3-103.1-82.4c14.4-63.6,8-114.2-20.2-130.4c-6.5-3.8-14.1-5.6-22.4-5.6v22.3
10
+ c4.6,0,8.3,0.9,11.4,2.6c13.6,7.8,19.5,37.5,14.9,75.7c-1.1,9.4-2.9,19.3-5.1,29.4c-19.6-4.8-41-8.5-63.5-10.9
11
+ c-13.5-18.5-27.5-35.3-41.6-50C301.4,48.6,332,32,352.8,32V9.7c-27.5,0-63.5,19.6-99.9,53.6c-36.4-33.8-72.4-53.2-99.9-53.2v22.3
12
+ c20.7,0,51.4,16.5,84,46.6c-14,14.7-28,31.4-41.3,49.9c-22.6,2.4-44,6.1-63.6,11c-2.3-10-4-19.7-5.2-29
13
+ c-4.7-38.2,1.1-67.9,14.6-75.8c3-1.8,6.9-2.6,11.5-2.6V10.2c-8.4,0-16,1.8-22.6,5.6C102.3,32,96,82.5,110.5,145.9
14
+ C48.3,165.1,7.8,195.8,7.8,228.2c0,32.5,40.7,63.3,103.1,82.4c-14.4,63.6-8,114.2,20.2,130.4c6.5,3.8,14.1,5.6,22.5,5.6
15
+ c27.5,0,63.5-19.6,99.9-53.6c36.4,33.8,72.4,53.2,99.9,53.2c8.4,0,16-1.8,22.6-5.6c28.1-16.2,34.4-66.7,19.9-130.1
16
+ C457.9,291.4,498.4,260.6,498.4,228.2L498.4,228.2z M368.2,161.5c-3.7,12.9-8.3,26.2-13.5,39.5c-4.1-8-8.4-16-13.1-24
17
+ c-4.6-8-9.5-15.8-14.4-23.4C341.4,155.7,355.1,158.3,368.2,161.5L368.2,161.5z M322.4,268c-7.8,13.5-15.8,26.3-24.1,38.2
18
+ c-14.9,1.3-30,2-45.2,2c-15.1,0-30.2-0.7-45-1.9c-8.3-11.9-16.4-24.6-24.2-38c-7.6-13.1-14.5-26.4-20.8-39.8
19
+ c6.2-13.4,13.2-26.8,20.7-39.9c7.8-13.5,15.8-26.3,24.1-38.2c14.9-1.3,30-2,45.2-2c15.1,0,30.2,0.7,45,1.9
20
+ c8.3,11.9,16.4,24.6,24.2,38c7.6,13.1,14.5,26.4,20.8,39.8C336.8,241.5,329.9,254.9,322.4,268L322.4,268z M354.7,255
21
+ c5.4,13.4,10,26.8,13.8,39.8c-13.1,3.2-26.9,5.9-41.2,8c4.9-7.7,9.8-15.6,14.4-23.7C346.3,271.1,350.6,263,354.7,255L354.7,255z
22
+ M253.3,361.7c-9.3-9.6-18.6-20.3-27.8-32c9,0.4,18.2,0.7,27.5,0.7c9.4,0,18.7-0.2,27.8-0.7C271.8,341.4,262.5,352.1,253.3,361.7z
23
+ M178.9,302.8c-14.2-2.1-27.9-4.7-41-7.9c3.7-12.9,8.3-26.2,13.5-39.5c4.1,8,8.4,16,13.1,24S174,295.2,178.9,302.8z M252.8,94.7
24
+ c9.3,9.6,18.6,20.3,27.8,32c-9-0.4-18.2-0.7-27.5-0.7c-9.4,0-18.7,0.2-27.8,0.7C234.3,115,243.6,104.3,252.8,94.7z M178.8,153.6
25
+ c-4.9,7.7-9.8,15.6-14.4,23.7c-4.6,8-8.9,16-13,24c-5.4-13.4-10-26.8-13.8-39.8C150.7,158.4,164.5,155.7,178.8,153.6L178.8,153.6z
26
+ M88.3,278.8C52.9,263.7,30,243.9,30,228.2s22.9-35.6,58.3-50.6c8.6-3.7,18-7,27.7-10.1c5.7,19.6,13.2,40,22.5,60.9
27
+ c-9.2,20.8-16.6,41.1-22.2,60.6C106.4,285.9,97,282.5,88.3,278.8L88.3,278.8z M142.1,421.7c-13.6-7.8-19.5-37.5-14.9-75.7
28
+ c1.1-9.4,2.9-19.3,5.1-29.4c19.6,4.8,41,8.5,63.5,10.9c13.5,18.5,27.5,35.3,41.6,50c-32.6,30.3-63.2,46.9-84,46.9
29
+ C148.9,424.3,145.1,423.4,142.1,421.7L142.1,421.7z M379.3,345.5c4.7,38.2-1.1,67.9-14.6,75.8c-3,1.8-6.9,2.6-11.5,2.6
30
+ c-20.7,0-51.4-16.5-84-46.6c14-14.7,28-31.4,41.3-49.9c22.6-2.4,44-6.1,63.6-11C376.4,326.5,378.2,336.2,379.3,345.5z M417.8,278.8
31
+ c-8.6,3.7-18,7-27.7,10.1c-5.7-19.6-13.2-40-22.5-60.9c9.2-20.8,16.6-41.1,22.2-60.6c9.9,3.1,19.3,6.5,28.1,10.2
32
+ c35.4,15.1,58.3,34.9,58.3,50.6C476.1,243.9,453.2,263.8,417.8,278.8L417.8,278.8z"/>
33
+ <circle class="st0" cx="253" cy="228.2" r="45.7"/>
34
+ <path class="st0" d="M352.6,9.8"/>
35
+ </g>
36
+ </svg>
Binary file
@@ -0,0 +1,45 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 17.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
5
+ viewBox="0 0 547.8 410.6" enable-background="new 0 0 547.8 410.6" xml:space="preserve">
6
+ <path fill="#CD6799" d="M471.4,236c-19.1,0.1-35.7,4.7-49.6,11.5c-5.1-10.1-10.2-19.1-11.1-25.7c-1-7.7-2.2-12.4-1-21.6
7
+ c1.2-9.2,6.6-22.3,6.5-23.3s-1.2-5.7-12.2-5.8c-11-0.1-20.5,2.1-21.6,5c-1.1,2.9-3.2,9.5-4.6,16.3c-1.9,10-22,45.7-33.5,64.4
8
+ c-3.7-7.3-6.9-13.7-7.6-18.8c-1-7.7-2.2-12.4-1-21.6c1.2-9.2,6.6-22.3,6.5-23.3c-0.1-1-1.2-5.7-12.2-5.8c-11-0.1-20.5,2.1-21.6,5
9
+ c-1.1,2.9-2.3,9.7-4.6,16.3c-2.3,6.6-29,66.2-36,81.6c-3.6,7.9-6.7,14.2-8.9,18.5c0,0,0,0,0,0s-0.1,0.3-0.4,0.8
10
+ c-1.9,3.7-3,5.7-3,5.7s0,0,0,0.1c-1.5,2.7-3.1,5.2-3.9,5.2c-0.6,0-1.7-7.2,0.2-17c4-20.7,13.5-52.9,13.4-54c0-0.6,1.8-6.2-6.2-9.1
11
+ c-7.8-2.9-10.6,1.9-11.3,1.9c-0.7,0-1.2,1.7-1.2,1.7s8.7-36.2-16.6-36.2c-15.8,0-37.6,17.3-48.4,32.9c-6.8,3.7-21.3,11.6-36.8,20.1
12
+ c-5.9,3.3-12,6.6-17.7,9.7c-0.4-0.4-0.8-0.9-1.2-1.3c-30.6-32.7-87.2-55.8-84.8-99.7c0.9-16,6.4-58,108.7-109
13
+ C233.9,19,300.9,30.5,312.5,56c16.6,36.4-35.9,104-122.9,113.8c-33.2,3.7-50.6-9.1-55-13.9c-4.6-5-5.3-5.3-7-4.3c-2.8,1.5-1,6,0,8.6
14
+ c2.6,6.8,13.3,18.8,31.4,24.7c16,5.2,54.9,8.1,102-10.1c52.7-20.4,93.9-77.1,81.8-124.6C330.7,2,250.7-13.9,175,13
15
+ C130,29,81.2,54.2,46.1,87c-41.7,39-48.3,72.9-45.6,87.1c9.7,50.4,79.2,83.2,107,107.5c-1.4,0.8-2.7,1.5-3.8,2.1
16
+ c-13.9,6.9-66.9,34.6-80.1,63.9c-15,33.2,2.4,57,13.9,60.2c35.7,9.9,72.4-7.9,92.1-37.3c19.7-29.4,17.3-67.6,8.2-85.1
17
+ c-0.1-0.2-0.2-0.4-0.4-0.6c3.6-2.1,7.3-4.3,10.9-6.4c7.1-4.2,14.1-8.1,20.1-11.3c-3.4,9.3-5.9,20.4-7.1,36.4
18
+ c-1.5,18.8,6.2,43.2,16.3,52.8c4.5,4.2,9.8,4.3,13.2,4.3c11.8,0,17.1-9.8,23-21.4c7.2-14.2,13.7-30.7,13.7-30.7s-8.1,44.6,13.9,44.6
19
+ c8,0,16.1-10.4,19.7-15.7c0,0.1,0,0.1,0,0.1s0.2-0.3,0.6-1c0.8-1.3,1.3-2.1,1.3-2.1s0-0.1,0-0.2c3.2-5.6,10.4-18.3,21.1-39.4
20
+ c13.8-27.2,27.1-61.2,27.1-61.2s1.2,8.3,5.3,22.1c2.4,8.1,7.4,17,11.4,25.6c-3.2,4.5-5.2,7-5.2,7s0,0,0.1,0.1
21
+ c-2.6,3.4-5.4,7.1-8.5,10.7c-10.9,13-23.9,27.9-25.7,32.2c-2.1,5.1-1.6,8.8,2.4,11.8c2.9,2.2,8.1,2.5,13.4,2.2
22
+ c9.8-0.7,16.7-3.1,20.1-4.6c5.3-1.9,11.5-4.8,17.3-9.1c10.7-7.9,17.2-19.2,16.6-34.1c-0.3-8.2-3-16.4-6.3-24.1
23
+ c1-1.4,1.9-2.8,2.9-4.2c16.9-24.7,30-51.8,30-51.8s1.2,8.3,5.3,22.1c2,7,6.1,14.6,9.7,22c-15.9,12.9-25.7,27.9-29.2,37.7
24
+ c-6.3,18.2-1.4,26.4,7.9,28.3c4.2,0.9,10.2-1.1,14.6-3c5.6-1.8,12.2-4.9,18.5-9.5c10.7-7.9,21-18.9,20.4-33.8
25
+ c-0.3-6.8-2.1-13.5-4.6-20c13.5-5.6,30.9-8.7,53.1-6.1c47.6,5.6,57,35.3,55.2,47.8c-1.8,12.5-11.8,19.3-15.1,21.4
26
+ c-3.3,2.1-4.4,2.8-4.1,4.3c0.4,2.2,2,2.1,4.8,1.7c3.9-0.7,25-10.1,25.9-33.1C548.9,267.8,520.9,235.7,471.4,236z M104.2,359.8
27
+ C88.4,377,66.4,383.5,56.9,378c-10.2-5.9-6.2-31.3,13.2-49.5c11.8-11.1,27-21.4,37.1-27.7c2.3-1.4,5.7-3.4,9.8-5.9
28
+ c0.7-0.4,1.1-0.6,1.1-0.6l0,0c0.8-0.5,1.6-1,2.4-1.5C127.6,318.8,120.8,341.7,104.2,359.8z M219.2,281.6c-5.5,13.4-17,47.7-24,45.8
29
+ c-6-1.6-9.7-27.6-1.2-53.3c4.3-12.9,13.4-28.3,18.7-34.3c8.6-9.6,18.1-12.8,20.4-8.9C236,236,222.6,273.2,219.2,281.6z M314.1,327
30
+ c-2.3,1.2-4.5,2-5.5,1.4c-0.7-0.4,1-2,1-2s11.9-12.8,16.6-18.6c2.7-3.4,5.9-7.4,9.3-11.9c0,0.4,0,0.9,0,1.3
31
+ C335.5,312.5,320.7,322.8,314.1,327z M387.3,310.3c-1.7-1.2-1.4-5.2,4.3-17.7c2.2-4.9,7.4-13.1,16.3-21c1,3.2,1.7,6.3,1.6,9.2
32
+ C409.4,300.1,395.6,307.3,387.3,310.3z"/>
33
+ <g>
34
+ </g>
35
+ <g>
36
+ </g>
37
+ <g>
38
+ </g>
39
+ <g>
40
+ </g>
41
+ <g>
42
+ </g>
43
+ <g>
44
+ </g>
45
+ </svg>
Binary file
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="26.6" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 308"><path fill="#FF3E00" d="M239.682 40.707C211.113-.182 154.69-12.301 113.895 13.69L42.247 59.356a82.198 82.198 0 0 0-37.135 55.056a86.566 86.566 0 0 0 8.536 55.576a82.425 82.425 0 0 0-12.296 30.719a87.596 87.596 0 0 0 14.964 66.244c28.574 40.893 84.997 53.007 125.787 27.016l71.648-45.664a82.182 82.182 0 0 0 37.135-55.057a86.601 86.601 0 0 0-8.53-55.577a82.409 82.409 0 0 0 12.29-30.718a87.573 87.573 0 0 0-14.963-66.244"></path><path fill="#FFF" d="M106.889 270.841c-23.102 6.007-47.497-3.036-61.103-22.648a52.685 52.685 0 0 1-9.003-39.85a49.978 49.978 0 0 1 1.713-6.693l1.35-4.115l3.671 2.697a92.447 92.447 0 0 0 28.036 14.007l2.663.808l-.245 2.659a16.067 16.067 0 0 0 2.89 10.656a17.143 17.143 0 0 0 18.397 6.828a15.786 15.786 0 0 0 4.403-1.935l71.67-45.672a14.922 14.922 0 0 0 6.734-9.977a15.923 15.923 0 0 0-2.713-12.011a17.156 17.156 0 0 0-18.404-6.832a15.78 15.78 0 0 0-4.396 1.933l-27.35 17.434a52.298 52.298 0 0 1-14.553 6.391c-23.101 6.007-47.497-3.036-61.101-22.649a52.681 52.681 0 0 1-9.004-39.849a49.428 49.428 0 0 1 22.34-33.114l71.664-45.677a52.218 52.218 0 0 1 14.563-6.398c23.101-6.007 47.497 3.036 61.101 22.648a52.685 52.685 0 0 1 9.004 39.85a50.559 50.559 0 0 1-1.713 6.692l-1.35 4.116l-3.67-2.693a92.373 92.373 0 0 0-28.037-14.013l-2.664-.809l.246-2.658a16.099 16.099 0 0 0-2.89-10.656a17.143 17.143 0 0 0-18.398-6.828a15.786 15.786 0 0 0-4.402 1.935l-71.67 45.674a14.898 14.898 0 0 0-6.73 9.975a15.9 15.9 0 0 0 2.709 12.012a17.156 17.156 0 0 0 18.404 6.832a15.841 15.841 0 0 0 4.402-1.935l27.345-17.427a52.147 52.147 0 0 1 14.552-6.397c23.101-6.006 47.497 3.037 61.102 22.65a52.681 52.681 0 0 1 9.003 39.848a49.453 49.453 0 0 1-22.34 33.12l-71.664 45.673a52.218 52.218 0 0 1-14.563 6.398"></path></svg>
Binary file
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg width="512" height="512" fill="none" version="1.1" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
3
+ <title>TypeScript logo</title>
4
+ <rect width="512" height="512" rx="50" fill="#3178c6"/>
5
+ <path d="m317 407v50c8.1 4.2 18 7.3 29 9.4s23 3.1 35 3.1c12 0 23-1.1 34-3.4 11-2.3 20-6.1 28-11 8.1-5.3 15-12 19-21s7.1-19 7.1-32c0-9.1-1.4-17-4.1-24s-6.6-13-12-18c-5.1-5.3-11-10-18-14s-15-8.2-24-12c-6.6-2.7-12-5.3-18-7.9-5.2-2.6-9.7-5.2-13-7.8-3.7-2.7-6.5-5.5-8.5-8.4-2-3-3-6.3-3-10 0-3.4 0.89-6.5 2.7-9.3s4.3-5.1 7.5-7.1c3.2-2 7.2-3.5 12-4.6 4.7-1.1 9.9-1.6 16-1.6 4.2 0 8.6 0.31 13 0.94 4.6 0.63 9.3 1.6 14 2.9 4.7 1.3 9.3 2.9 14 4.9 4.4 2 8.5 4.3 12 6.9v-47c-7.6-2.9-16-5.1-25-6.5s-19-2.1-31-2.1c-12 0-23 1.3-34 3.8s-20 6.5-28 12c-8.1 5.4-14 12-19 21-4.7 8.4-7 18-7 30 0 15 4.3 28 13 38 8.6 11 22 19 39 27 6.9 2.8 13 5.6 19 8.3s11 5.5 15 8.4c4.3 2.9 7.7 6.1 10 9.5 2.5 3.4 3.8 7.4 3.8 12 0 3.2-0.78 6.2-2.3 9s-3.9 5.2-7.1 7.2-7.1 3.6-12 4.8c-4.7 1.1-10 1.7-17 1.7-11 0-22-1.9-32-5.7-11-3.8-21-9.5-30-17zm-84-123h64v-41h-179v41h64v183h51z" clip-rule="evenodd" fill="#fff" fill-rule="evenodd" style="fill:#fff"/>
6
+ </svg>
Binary file
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>
Binary file
@@ -0,0 +1,2 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg version="1.1" viewBox="0 0 261.76 226.69" xmlns="http://www.w3.org/2000/svg"><g transform="matrix(1.3333 0 0 -1.3333 -76.311 313.34)"><g transform="translate(178.06 235.01)"><path d="m0 0-22.669-39.264-22.669 39.264h-75.491l98.16-170.02 98.16 170.02z" fill="#41b883"/></g><g transform="translate(178.06 235.01)"><path d="m0 0-22.669-39.264-22.669 39.264h-36.227l58.896-102.01 58.896 102.01z" fill="#34495e"/></g></g></svg>
@@ -0,0 +1,26 @@
1
+ const prefix = "[⚡ Bolt Hot Reload]";
2
+
3
+ const log = console.log.bind(console, prefix);
4
+
5
+ const listenForHotReload = () => {
6
+ const reconnect = (reason) => {
7
+ log(
8
+ `Disconnected from hot reload server (${reason}). Attempting to reconnect in 3 seconds...`,
9
+ );
10
+ setTimeout(listenForHotReload, 3000);
11
+ };
12
+ const ws = new WebSocket(`ws://localhost:${BOLT_UXP_HOT_RELOAD_PORT}`);
13
+ ws.onclose = () => reconnect("closed");
14
+ ws.onmessage = (event) => {
15
+ const data = JSON.parse(event.data);
16
+ if (data.id === BOLT_UXP_MANIFEST_ID && data.status === "updated") {
17
+ log("Hot reloading...");
18
+ location.reload();
19
+ }
20
+ };
21
+ ws.onopen = () => {
22
+ log("Connected to server");
23
+ };
24
+ };
25
+
26
+ listenForHotReload();
@@ -0,0 +1,69 @@
1
+ import { useMutation, useQuery } from "@tanstack/react-query";
2
+ import { BasicStackFrame, copyToClipboard, getBasicStackFrameAbsoluteFilePath, parseUxpErrorSourcemaps } from "@bubblydoo/uxp-toolkit";
3
+
4
+ declare const __UNSOURCEMAPPED_HEADER_LINES__: number;
5
+
6
+ const UNSOURCEMAPPED_HEADER_LINES =
7
+ typeof __UNSOURCEMAPPED_HEADER_LINES__ === "number"
8
+ ? __UNSOURCEMAPPED_HEADER_LINES__
9
+ : 0;
10
+
11
+ export function ErrorView({ error }: { error: Error }) {
12
+ const sourcemappedError = useQuery({
13
+ queryKey: ["sourcemappedError", error],
14
+ queryFn: async () => {
15
+ return await parseUxpErrorSourcemaps(error, {
16
+ unsourcemappedHeaderLines: UNSOURCEMAPPED_HEADER_LINES,
17
+ });
18
+ },
19
+ });
20
+
21
+ const copyMutation = useMutation({
22
+ mutationFn: async (frame: BasicStackFrame) => {
23
+ await copyToClipboard(await getBasicStackFrameAbsoluteFilePath(frame));
24
+ },
25
+ });
26
+
27
+ return (
28
+ <div className="border-white border-2 rounded-md">
29
+ <div className="border-b-2 border-white p-2">
30
+ <div>Original error:</div>
31
+ <div className="text-red-500 whitespace-pre-wrap">
32
+ {errorToString(error)}
33
+ </div>
34
+ </div>
35
+ <div className="p-2">
36
+ <div>Sourcemapped error:</div>
37
+ {copyMutation.error && (
38
+ <>Copy error: {errorToString(copyMutation.error)}</>
39
+ )}
40
+ {sourcemappedError.isPending && (
41
+ <div>⏳ Loading sourcemapped error...</div>
42
+ )}
43
+ {sourcemappedError.error && (
44
+ <div>❌ Error loading sourcemapped error</div>
45
+ )}
46
+ {sourcemappedError.data && (
47
+ <div className="text-red-500 whitespace-pre-wrap">
48
+ {error.name}: {error.message}
49
+ {sourcemappedError.data.map((frame, i) => (
50
+ <div key={i}>
51
+ {frame.functionName} @{" "}
52
+ <span
53
+ className="underline"
54
+ onClick={() => copyMutation.mutate(frame)}
55
+ >
56
+ {frame.fileName}:{frame.lineNumber}:{frame.columnNumber}
57
+ </span>
58
+ </div>
59
+ ))}
60
+ </div>
61
+ )}
62
+ </div>
63
+ </div>
64
+ );
65
+ }
66
+
67
+ function errorToString(e: any): string {
68
+ return e?.name ? `${e.name}: ${e.message} ${e.stack}` : e.toString();
69
+ }
@@ -0,0 +1,14 @@
1
+ import "@bubblydoo/uxp-polyfills";
2
+ import "./bolt-uxp-ws-listener";
3
+
4
+ import "./index.css";
5
+ import React from "react";
6
+ import ReactDOM from "react-dom/client";
7
+
8
+ import { App } from "./main";
9
+
10
+ ReactDOM.createRoot(document.getElementById("app") as HTMLElement).render(
11
+ <React.StrictMode>
12
+ <App />
13
+ </React.StrictMode>,
14
+ );
package/src/index.css ADDED
@@ -0,0 +1,11 @@
1
+ @tailwind base;
2
+ @tailwind components;
3
+ @tailwind utilities;
4
+
5
+ html,
6
+ body {
7
+ height: 100vh;
8
+ background-color: #242424;
9
+ overflow: auto;
10
+ color: white;
11
+ }
@@ -0,0 +1,19 @@
1
+ import { resolve as nativeResolve } from "path";
2
+
3
+ /** for some reason native path.resolve in UXP returns a URL object
4
+ * this function converts it to a string
5
+ */
6
+ export function pathResolve(...pathSegments: string[]): string {
7
+ const urlOrString = nativeResolve(...pathSegments) as URL | string;
8
+ if (typeof urlOrString === "string") {
9
+ return urlOrString;
10
+ }
11
+ if (isUrl(urlOrString)) {
12
+ return urlOrString.toString();
13
+ }
14
+ throw new Error("Unexpected URL object");
15
+ }
16
+
17
+ function isUrl(urlOrString: any): urlOrString is URL {
18
+ return urlOrString instanceof URL;
19
+ }