@jsenv/core 39.12.0 → 39.13.1

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 (38) hide show
  1. package/dist/css/directory_listing.css +211 -0
  2. package/dist/html/directory_listing.html +18 -0
  3. package/dist/js/directory_listing.js +240 -0
  4. package/dist/jsenv_core.js +1035 -764
  5. package/dist/other/dir.png +0 -0
  6. package/dist/other/file.png +0 -0
  7. package/dist/other/home.svg +6 -0
  8. package/package.json +6 -6
  9. package/src/build/build.js +7 -7
  10. package/src/build/build_specifier_manager.js +0 -1
  11. package/src/build/build_urls_generator.js +0 -1
  12. package/src/dev/start_dev_server.js +66 -52
  13. package/src/kitchen/kitchen.js +1 -4
  14. package/src/kitchen/out_directory_url.js +2 -1
  15. package/src/kitchen/url_graph/references.js +1 -1
  16. package/src/kitchen/url_graph/url_graph.js +1 -0
  17. package/src/kitchen/url_graph/url_info_transformations.js +37 -4
  18. package/src/plugins/inlining/jsenv_plugin_inlining_into_html.js +10 -8
  19. package/src/plugins/plugin_controller.js +170 -114
  20. package/src/plugins/plugins.js +10 -6
  21. package/src/plugins/protocol_file/client/assets/home.svg +5 -5
  22. package/src/plugins/protocol_file/client/directory_listing.css +190 -0
  23. package/src/plugins/protocol_file/client/directory_listing.html +18 -0
  24. package/src/plugins/protocol_file/client/directory_listing.jsx +250 -0
  25. package/src/plugins/protocol_file/file_and_server_urls_converter.js +32 -0
  26. package/src/plugins/protocol_file/jsenv_plugin_directory_listing.js +398 -0
  27. package/src/plugins/protocol_file/jsenv_plugin_protocol_file.js +43 -370
  28. package/src/plugins/protocol_http/jsenv_plugin_protocol_http.js +3 -2
  29. package/src/plugins/reference_analysis/html/jsenv_plugin_html_reference_analysis.js +7 -6
  30. package/src/plugins/reference_analysis/js/jsenv_plugin_js_reference_analysis.js +1 -3
  31. package/src/plugins/reference_analysis/jsenv_plugin_reference_analysis.js +2 -18
  32. package/src/plugins/server_events/jsenv_plugin_server_events.js +100 -0
  33. package/dist/html/directory.html +0 -184
  34. package/dist/html/html_404_and_ancestor_dir.html +0 -222
  35. package/src/plugins/protocol_file/client/assets/directory.css +0 -150
  36. package/src/plugins/protocol_file/client/directory.html +0 -17
  37. package/src/plugins/protocol_file/client/html_404_and_ancestor_dir.html +0 -54
  38. package/src/plugins/server_events/jsenv_plugin_server_events_client_injection.js +0 -37
@@ -1,184 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <title>Directory explorer</title>
5
- <meta charset="utf-8">
6
- <link rel="icon" href="data:,">
7
- <style>
8
- html, body, h1, div, p, ul, li, a, p, button {
9
- -webkit-font-smoothing: antialiased;
10
- -moz-osx-font-smoothing: grayscale;
11
- border: 0;
12
- margin: 0;
13
- padding: 0;
14
- font-family: Helvetica Neue, Helvetica, Arial, sans-serif;
15
- }
16
-
17
- .directory_nav {
18
- gap: .3em;
19
- margin: 20px 25px 15px;
20
- font-size: 16px;
21
- font-weight: bold;
22
- display: flex;
23
- }
24
-
25
- .directory_nav_item {
26
- align-items: center;
27
- display: flex;
28
- }
29
-
30
- .directory_nav_item a {
31
- color: inherit;
32
- text-decoration: none;
33
- position: relative;
34
- }
35
-
36
- .directory_root_for_server {
37
- width: 1em;
38
- height: 1em;
39
- margin-right: .25em;
40
- text-decoration: none;
41
- display: flex;
42
- }
43
-
44
- .directory_empty_message {
45
- color: #bbb;
46
- margin: 1em;
47
- padding: .5em;
48
- }
49
-
50
- .directory_content {
51
- border-radius: 3px;
52
- margin: 10px 15px;
53
- list-style-type: none;
54
- }
55
-
56
- .directory_child {
57
- text-indent: 30px;
58
- box-sizing: border-box;
59
- background-position: 15px;
60
- background-repeat: no-repeat;
61
- background-size: 16px 16px;
62
- min-height: 19px;
63
- padding: 10px 15px;
64
- font-size: 15px;
65
- position: relative;
66
- }
67
-
68
- .directory_child:after {
69
- content: " ";
70
- display: block;
71
- position: absolute;
72
- bottom: 0;
73
- left: 15px;
74
- right: 0;
75
- }
76
-
77
- .directory_child:last-child {
78
- border-bottom: none;
79
- padding-bottom: 10px;
80
- }
81
-
82
- .directory_child:last-child:after {
83
- content: none;
84
- }
85
-
86
- .directory_child[data-type="file"] {
87
- background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAJBlWElmTU0AKgAAAAgABgEGAAMAAAABAAIAAAESAAMAAAABAAEAAAEaAAUAAAABAAAAVgEbAAUAAAABAAAAXgEoAAMAAAABAAIAAIdpAAQAAAABAAAAZgAAAAAAAABIAAAAAQAAAEgAAAABAAOgAQADAAAAAQABAACgAgAEAAAAAQAAACCgAwAEAAAAAQAAACAAAAAAF9yy1AAAAAlwSFlzAAALEwAACxMBAJqcGAAAAgtpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDYuMC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPgogICAgICAgICA8dGlmZjpQaG90b21ldHJpY0ludGVycHJldGF0aW9uPjI8L3RpZmY6UGhvdG9tZXRyaWNJbnRlcnByZXRhdGlvbj4KICAgICAgICAgPHRpZmY6T3JpZW50YXRpb24+MTwvdGlmZjpPcmllbnRhdGlvbj4KICAgICAgICAgPHRpZmY6Q29tcHJlc3Npb24+MTwvdGlmZjpDb21wcmVzc2lvbj4KICAgICAgICAgPHRpZmY6UmVzb2x1dGlvblVuaXQ+MjwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+Cu3MPn8AAAK5SURBVFgJ5Vc7jhpBEG1+MyA7sGxpQWScZU/g1HLqi+wl9goOnKxvQkCKRIjEahJYloEB1+udZ9U01cPMBk48UvOqql9Vve4e2F7n/venY2xAZ71efx0Oh4/n8/kO85fLxdNCZG5RFPl+v/+VJMmP6XT6wngT7BqkJE3TR4nfdTpv+mKochMR8E14v+fz+QcVv2laAtJut+tXjsax5oyjg+yUEwFuNBrdTyaTpzYiLAE9FGWDJiJwNHmeu8Fg4OToWomwBEjP6taHgkJf3gEvoN/vO4w2IiwBqH+1A3U7gSM4Ho+u1+t5AW1EmALCHdC+tr1S+cAOnE4nJ+9OaxGmgHAHQj8UAR/nj/cgFCHfqPvxePy0WCw+UrBG63fg83a7fSYp/O5rHzbG4XBwm83GZVnmvxE4CgjCUZQvppPfiJ+z2ey71C1YG2gK2O12z2wEEm0LEeM7gGOAjx3BTuABljt2lJ34JKHKD1Xfs258oAALh4hUNJGtxip9JXDwEL3j3EAQhIoA8x1AQ44ymaswsVyhOcf8Eq/6XQWYEBZFPIzRr5vTHNbWaApgUoixRuBxxDi6qbZNAbeKhMK0r22rjm4O2xQQK6KTYxzEY3M6n7YpAJNWEcaYTN9CK8Y8jaaAWDLiHCxyiwseOczRaArQSUwOURcJ57SvbZ1D2xQQJlk+YyxE30LGyNVoCgCBSXXIORakbyFj5BJNASQ3QXDIQ1HaMWRjoimgSaG6BnVzbEyMCvhXIkwBXMF7RHBlVq6eo20K0MnaprA65Bwb0CcyTrQE4I/5BgSdRLsJksMm8OVugJpvFwVOCFoCiuVy+SAJGXi6GO0mCA55cmnNVqvVg5SrXMd8fXwETyr+l3IMBa1rW5BS62LVrzJwz8Q4yPj7WMURw9UJQvBfksWRcOMHArByNM5lVI7hD10h1EqG5mxPAAAAAElFTkSuQmCC);
88
- }
89
-
90
- .directory_child[data-type="dir"] {
91
- background-image: url(data:image/png;base64,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);
92
- }
93
-
94
- .directory_child[data-main-file], .directory_root_for_server {
95
- background-image: url(data:image/svg+xml;base64,PHN2ZyBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxMDAgMTAwOyIgZmlsbD0iI2YxZjFmMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIzMC40IDIzLjQ3IDQwLjA1IDQ1LjYzIj4KICAgIDxwYXRoIGQ9Ik0zMi41LDY5LjFjLTAuNiwwLTEuMS0wLjItMS40LTAuNWMtMC43LTAuNi0wLjctMS41LTAuNy0xLjhWNDEuMWg0djI0aDl2NEgzMi45QzMyLjgsNjkuMSwzMi42LDY5LjEsMzIuNSw2OS4xeiIvPgogICAgPHBhdGggZD0iTTY3LjgsNjkuMWMtMC4yLDAtMC4zLDAtMC41LDBjLTAuMSwwLTAuMSwwLTAuMiwwSDU2LjR2LTRoMTB2LTIzaDR2MjQuN2MwLDAuNi0wLjMsMS4yLTAuNywxLjcgIEM2OS4xLDY5LDY4LjMsNjkuMSw2Ny44LDY5LjF6Ii8+CiAgICA8cGF0aCAgZD0iTTY4LjQsNDQuMWMtMC41LDAtMS0wLjItMS4zLTAuNUw1MCwyOC4yTDMzLjcsNDIuNmMtMC44LDAuNy0yLjEsMC43LTIuOC0wLjJjLTAuNy0wLjgtMC43LTIuMSwwLjItMi44TDQ4LjcsMjQgIGMwLjgtMC43LDEuOS0wLjcsMi43LDBsMTguNCwxNi42YzAuOCwwLjcsMC45LDIsMC4xLDIuOEM2OS41LDQzLjgsNjguOSw0NC4xLDY4LjQsNDQuMXoiLz4KICAgIDxwYXRoICBkPSJNNTguNCw2OS4xaC00di0xM2gtOHYxM2gtNHYtMTVjMC0xLjEsMC45LTIsMi0yaDEyYzEuMSwwLDIsMC45LDIsMlY2OS4xeiIvPgo8L3N2Zz4=);
96
- background-repeat: no-repeat;
97
- }
98
-
99
- .directory_child[data-type="dir"]:before {
100
- content: " ";
101
- border-top-right-radius: 1px;
102
- width: 5px;
103
- height: 5px;
104
- display: block;
105
- position: absolute;
106
- top: 16px;
107
- right: 15px;
108
- transform: rotate(45deg);
109
- }
110
-
111
- .directory_child a {
112
- text-decoration: none;
113
- display: block;
114
- }
115
-
116
- body[data-theme="dark"] {
117
- background: #121212;
118
- }
119
-
120
- body[data-theme="light"] {
121
- background: #f1f1f1;
122
- }
123
-
124
- body[data-theme="dark"] .directory_nav_item {
125
- color: #999;
126
- }
127
-
128
- body[data-theme="dark"] .directory_nav_item[data-current] {
129
- color: #f1f1f1;
130
- }
131
-
132
- body[data-theme="light"] .directory_nav_item {
133
- color: #000;
134
- }
135
-
136
- body[data-theme="dark"] .directory_separator {
137
- color: #666;
138
- }
139
-
140
- body[data-theme="light"] .directory_separator {
141
- color: #999;
142
- }
143
-
144
- body[data-theme="dark"] .directory_content {
145
- background: #1e1e1e;
146
- }
147
-
148
- body[data-theme="light"] .directory_content {
149
- background: #fefefe;
150
- }
151
-
152
- body[data-theme="dark"] .directory_child {
153
- border-bottom: 1px solid #121212;
154
- }
155
-
156
- body[data-theme="light"] .directory_child {
157
- border-bottom: 1px solid #f1f1f1;
158
- }
159
-
160
- body[data-theme="dark"] .directory_child[data-type="dir"]:before {
161
- border-top: 2px solid #666;
162
- border-right: 2px solid #666;
163
- }
164
-
165
- body[data-theme="light"] .directory_child[data-type="file"]:before {
166
- border-top: 2px solid #999;
167
- border-right: 2px solid #999;
168
- }
169
-
170
- body[data-theme="dark"] .directory_child a {
171
- color: #fff;
172
- }
173
-
174
- body[data-theme="light"] .directory_child a {
175
- color: #000;
176
- }
177
- </style>
178
- </head>
179
-
180
- <body data-theme="dark">
181
- <h1 class="directory_nav">${directoryNav}</h1>
182
- ${directoryContent}
183
- </body>
184
- </html>
@@ -1,222 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <title>404 ENOENT</title>
5
- <meta charset="utf-8">
6
- <link rel="icon" href="data:,">
7
- <style>
8
- html, body, h1, div, p, ul, li, a, p, button {
9
- -webkit-font-smoothing: antialiased;
10
- -moz-osx-font-smoothing: grayscale;
11
- border: 0;
12
- margin: 0;
13
- padding: 0;
14
- font-family: Helvetica Neue, Helvetica, Arial, sans-serif;
15
- }
16
-
17
- .directory_nav {
18
- gap: .3em;
19
- margin: 20px 25px 15px;
20
- font-size: 16px;
21
- font-weight: bold;
22
- display: flex;
23
- }
24
-
25
- .directory_nav_item {
26
- align-items: center;
27
- display: flex;
28
- }
29
-
30
- .directory_nav_item a {
31
- color: inherit;
32
- text-decoration: none;
33
- position: relative;
34
- }
35
-
36
- .directory_root_for_server {
37
- width: 1em;
38
- height: 1em;
39
- margin-right: .25em;
40
- text-decoration: none;
41
- display: flex;
42
- }
43
-
44
- .directory_empty_message {
45
- color: #bbb;
46
- margin: 1em;
47
- padding: .5em;
48
- }
49
-
50
- .directory_content {
51
- border-radius: 3px;
52
- margin: 10px 15px;
53
- list-style-type: none;
54
- }
55
-
56
- .directory_child {
57
- text-indent: 30px;
58
- box-sizing: border-box;
59
- background-position: 15px;
60
- background-repeat: no-repeat;
61
- background-size: 16px 16px;
62
- min-height: 19px;
63
- padding: 10px 15px;
64
- font-size: 15px;
65
- position: relative;
66
- }
67
-
68
- .directory_child:after {
69
- content: " ";
70
- display: block;
71
- position: absolute;
72
- bottom: 0;
73
- left: 15px;
74
- right: 0;
75
- }
76
-
77
- .directory_child:last-child {
78
- border-bottom: none;
79
- padding-bottom: 10px;
80
- }
81
-
82
- .directory_child:last-child:after {
83
- content: none;
84
- }
85
-
86
- .directory_child[data-type="file"] {
87
- background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAJBlWElmTU0AKgAAAAgABgEGAAMAAAABAAIAAAESAAMAAAABAAEAAAEaAAUAAAABAAAAVgEbAAUAAAABAAAAXgEoAAMAAAABAAIAAIdpAAQAAAABAAAAZgAAAAAAAABIAAAAAQAAAEgAAAABAAOgAQADAAAAAQABAACgAgAEAAAAAQAAACCgAwAEAAAAAQAAACAAAAAAF9yy1AAAAAlwSFlzAAALEwAACxMBAJqcGAAAAgtpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDYuMC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPgogICAgICAgICA8dGlmZjpQaG90b21ldHJpY0ludGVycHJldGF0aW9uPjI8L3RpZmY6UGhvdG9tZXRyaWNJbnRlcnByZXRhdGlvbj4KICAgICAgICAgPHRpZmY6T3JpZW50YXRpb24+MTwvdGlmZjpPcmllbnRhdGlvbj4KICAgICAgICAgPHRpZmY6Q29tcHJlc3Npb24+MTwvdGlmZjpDb21wcmVzc2lvbj4KICAgICAgICAgPHRpZmY6UmVzb2x1dGlvblVuaXQ+MjwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+Cu3MPn8AAAK5SURBVFgJ5Vc7jhpBEG1+MyA7sGxpQWScZU/g1HLqi+wl9goOnKxvQkCKRIjEahJYloEB1+udZ9U01cPMBk48UvOqql9Vve4e2F7n/venY2xAZ71efx0Oh4/n8/kO85fLxdNCZG5RFPl+v/+VJMmP6XT6wngT7BqkJE3TR4nfdTpv+mKochMR8E14v+fz+QcVv2laAtJut+tXjsax5oyjg+yUEwFuNBrdTyaTpzYiLAE9FGWDJiJwNHmeu8Fg4OToWomwBEjP6taHgkJf3gEvoN/vO4w2IiwBqH+1A3U7gSM4Ho+u1+t5AW1EmALCHdC+tr1S+cAOnE4nJ+9OaxGmgHAHQj8UAR/nj/cgFCHfqPvxePy0WCw+UrBG63fg83a7fSYp/O5rHzbG4XBwm83GZVnmvxE4CgjCUZQvppPfiJ+z2ey71C1YG2gK2O12z2wEEm0LEeM7gGOAjx3BTuABljt2lJ34JKHKD1Xfs258oAALh4hUNJGtxip9JXDwEL3j3EAQhIoA8x1AQ44ymaswsVyhOcf8Eq/6XQWYEBZFPIzRr5vTHNbWaApgUoixRuBxxDi6qbZNAbeKhMK0r22rjm4O2xQQK6KTYxzEY3M6n7YpAJNWEcaYTN9CK8Y8jaaAWDLiHCxyiwseOczRaArQSUwOURcJ57SvbZ1D2xQQJlk+YyxE30LGyNVoCgCBSXXIORakbyFj5BJNASQ3QXDIQ1HaMWRjoimgSaG6BnVzbEyMCvhXIkwBXMF7RHBlVq6eo20K0MnaprA65Bwb0CcyTrQE4I/5BgSdRLsJksMm8OVugJpvFwVOCFoCiuVy+SAJGXi6GO0mCA55cmnNVqvVg5SrXMd8fXwETyr+l3IMBa1rW5BS62LVrzJwz8Q4yPj7WMURw9UJQvBfksWRcOMHArByNM5lVI7hD10h1EqG5mxPAAAAAElFTkSuQmCC);
88
- }
89
-
90
- .directory_child[data-type="dir"] {
91
- background-image: url(data:image/png;base64,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);
92
- }
93
-
94
- .directory_child[data-main-file], .directory_root_for_server {
95
- background-image: url(data:image/svg+xml;base64,PHN2ZyBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxMDAgMTAwOyIgZmlsbD0iI2YxZjFmMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIzMC40IDIzLjQ3IDQwLjA1IDQ1LjYzIj4KICAgIDxwYXRoIGQ9Ik0zMi41LDY5LjFjLTAuNiwwLTEuMS0wLjItMS40LTAuNWMtMC43LTAuNi0wLjctMS41LTAuNy0xLjhWNDEuMWg0djI0aDl2NEgzMi45QzMyLjgsNjkuMSwzMi42LDY5LjEsMzIuNSw2OS4xeiIvPgogICAgPHBhdGggZD0iTTY3LjgsNjkuMWMtMC4yLDAtMC4zLDAtMC41LDBjLTAuMSwwLTAuMSwwLTAuMiwwSDU2LjR2LTRoMTB2LTIzaDR2MjQuN2MwLDAuNi0wLjMsMS4yLTAuNywxLjcgIEM2OS4xLDY5LDY4LjMsNjkuMSw2Ny44LDY5LjF6Ii8+CiAgICA8cGF0aCAgZD0iTTY4LjQsNDQuMWMtMC41LDAtMS0wLjItMS4zLTAuNUw1MCwyOC4yTDMzLjcsNDIuNmMtMC44LDAuNy0yLjEsMC43LTIuOC0wLjJjLTAuNy0wLjgtMC43LTIuMSwwLjItMi44TDQ4LjcsMjQgIGMwLjgtMC43LDEuOS0wLjcsMi43LDBsMTguNCwxNi42YzAuOCwwLjcsMC45LDIsMC4xLDIuOEM2OS41LDQzLjgsNjguOSw0NC4xLDY4LjQsNDQuMXoiLz4KICAgIDxwYXRoICBkPSJNNTguNCw2OS4xaC00di0xM2gtOHYxM2gtNHYtMTVjMC0xLjEsMC45LTIsMi0yaDEyYzEuMSwwLDIsMC45LDIsMlY2OS4xeiIvPgo8L3N2Zz4=);
96
- background-repeat: no-repeat;
97
- }
98
-
99
- .directory_child[data-type="dir"]:before {
100
- content: " ";
101
- border-top-right-radius: 1px;
102
- width: 5px;
103
- height: 5px;
104
- display: block;
105
- position: absolute;
106
- top: 16px;
107
- right: 15px;
108
- transform: rotate(45deg);
109
- }
110
-
111
- .directory_child a {
112
- text-decoration: none;
113
- display: block;
114
- }
115
-
116
- body[data-theme="dark"] {
117
- background: #121212;
118
- }
119
-
120
- body[data-theme="light"] {
121
- background: #f1f1f1;
122
- }
123
-
124
- body[data-theme="dark"] .directory_nav_item {
125
- color: #999;
126
- }
127
-
128
- body[data-theme="dark"] .directory_nav_item[data-current] {
129
- color: #f1f1f1;
130
- }
131
-
132
- body[data-theme="light"] .directory_nav_item {
133
- color: #000;
134
- }
135
-
136
- body[data-theme="dark"] .directory_separator {
137
- color: #666;
138
- }
139
-
140
- body[data-theme="light"] .directory_separator {
141
- color: #999;
142
- }
143
-
144
- body[data-theme="dark"] .directory_content {
145
- background: #1e1e1e;
146
- }
147
-
148
- body[data-theme="light"] .directory_content {
149
- background: #fefefe;
150
- }
151
-
152
- body[data-theme="dark"] .directory_child {
153
- border-bottom: 1px solid #121212;
154
- }
155
-
156
- body[data-theme="light"] .directory_child {
157
- border-bottom: 1px solid #f1f1f1;
158
- }
159
-
160
- body[data-theme="dark"] .directory_child[data-type="dir"]:before {
161
- border-top: 2px solid #666;
162
- border-right: 2px solid #666;
163
- }
164
-
165
- body[data-theme="light"] .directory_child[data-type="file"]:before {
166
- border-top: 2px solid #999;
167
- border-right: 2px solid #999;
168
- }
169
-
170
- body[data-theme="dark"] .directory_child a {
171
- color: #fff;
172
- }
173
-
174
- body[data-theme="light"] .directory_child a {
175
- color: #000;
176
- }
177
- </style>
178
- <style>.error_message {
179
- background-color: #fce4e4;
180
- border: 1px solid #fcc2c3;
181
- margin: 1em;
182
- padding: 1.5em 1.2em;
183
- display: block;
184
- }
185
-
186
- .error_text {
187
- color: #c03;
188
- text-shadow: 1px 1px #fafafa4d;
189
- font-weight: bold;
190
- line-height: 2em;
191
- }
192
-
193
- .hint_message {
194
- background-color: #add8e6;
195
- border: 1px solid #fcc2c3;
196
- margin: 1em;
197
- padding: 1.5em 1.2em;
198
- display: block;
199
- }
200
-
201
- .hint_text {
202
- color: #000;
203
- text-shadow: 1px 1px #fafafa4d;
204
- font-weight: bold;
205
- line-height: 2em;
206
- }
207
- </style>
208
- </head>
209
-
210
- <body data-theme="dark">
211
- <p class="error_message">
212
- <span class="error_text">
213
- No entry on the filesystem for <code>/${fileRelativeUrl}</code> (at
214
- ${fileUrl})
215
- <br>
216
- Content of first ancestor directory is listed below:
217
- </span>
218
- </p>
219
- <h1 class="directory_nav">${ancestorDirectoryNav}</h1>
220
- ${ancestorDirectoryContent}
221
- </body>
222
- </html>
@@ -1,150 +0,0 @@
1
- html,
2
- body,
3
- h1,
4
- div,
5
- p,
6
- ul,
7
- li,
8
- a,
9
- p,
10
- button {
11
- margin: 0;
12
- padding: 0;
13
- border: 0;
14
- font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
15
- -webkit-font-smoothing: antialiased;
16
- -moz-osx-font-smoothing: grayscale;
17
- }
18
- .directory_nav {
19
- font-size: 16px;
20
- font-weight: bold;
21
- margin: 20px 25px 15px 25px;
22
- display: flex;
23
- gap: 0.3em;
24
- }
25
- .directory_nav_item {
26
- display: flex;
27
- align-items: center;
28
- }
29
- .directory_nav_item a {
30
- text-decoration: none;
31
- position: relative;
32
- color: inherit;
33
- }
34
- .directory_root_for_server {
35
- text-decoration: none;
36
- display: flex;
37
- width: 1em;
38
- height: 1em;
39
- margin-right: 0.25em;
40
- }
41
- .directory_empty_message {
42
- margin: 1em;
43
- padding: 0.5em;
44
- color: #bbbbbb;
45
- }
46
- .directory_content {
47
- margin: 10px 15px 10px 15px;
48
- list-style-type: none;
49
- border-radius: 3px;
50
- }
51
- .directory_child {
52
- position: relative;
53
- padding: 10px 15px 10px 15px;
54
- background-size: 16px 16px;
55
- background-position: 15px center;
56
- background-repeat: no-repeat;
57
- text-indent: 30px;
58
- font-size: 15px;
59
- min-height: 19px;
60
- box-sizing: border-box;
61
- }
62
- .directory_child::after {
63
- position: absolute;
64
- content: " ";
65
- display: block;
66
- bottom: 0;
67
- left: 15px;
68
- right: 0;
69
- }
70
- .directory_child:last-child {
71
- border-bottom: none;
72
- padding-bottom: 10px;
73
- }
74
- .directory_child:last-child::after {
75
- content: none;
76
- }
77
- .directory_child[data-type="file"] {
78
- background-image: url("./file.png?inline");
79
- }
80
- .directory_child[data-type="dir"] {
81
- background-image: url("./dir.png?inline");
82
- }
83
- .directory_child[data-main-file],
84
- .directory_root_for_server {
85
- background-image: url("./home.svg?inline");
86
- background-repeat: no-repeat;
87
- }
88
- .directory_child[data-type="dir"]::before {
89
- content: " ";
90
- position: absolute;
91
- display: block;
92
- width: 5px;
93
- height: 5px;
94
- border-top-right-radius: 1px;
95
- transform: rotate(45deg);
96
- right: 15px;
97
- top: 16px;
98
- }
99
- .directory_child a {
100
- text-decoration: none;
101
- display: block;
102
- }
103
-
104
- body[data-theme="dark"] {
105
- background: #121212;
106
- }
107
- body[data-theme="light"] {
108
- background: #f1f1f1;
109
- }
110
- body[data-theme="dark"] .directory_nav_item {
111
- color: #999999;
112
- }
113
- body[data-theme="dark"] .directory_nav_item[data-current] {
114
- color: #f1f1f1;
115
- }
116
- body[data-theme="light"] .directory_nav_item {
117
- color: #000000;
118
- }
119
- body[data-theme="dark"] .directory_separator {
120
- color: #666666;
121
- }
122
- body[data-theme="light"] .directory_separator {
123
- color: #999999;
124
- }
125
- body[data-theme="dark"] .directory_content {
126
- background: #1e1e1e;
127
- }
128
- body[data-theme="light"] .directory_content {
129
- background: #fefefe;
130
- }
131
- body[data-theme="dark"] .directory_child {
132
- border-bottom: 1px solid #121212;
133
- }
134
- body[data-theme="light"] .directory_child {
135
- border-bottom: 1px solid #f1f1f1;
136
- }
137
- body[data-theme="dark"] .directory_child[data-type="dir"]::before {
138
- border-top: 2px solid #666666;
139
- border-right: 2px solid #666666;
140
- }
141
- body[data-theme="light"] .directory_child[data-type="file"]::before {
142
- border-top: 2px solid #999999;
143
- border-right: 2px solid #999999;
144
- }
145
- body[data-theme="dark"] .directory_child a {
146
- color: #ffffff;
147
- }
148
- body[data-theme="light"] .directory_child a {
149
- color: #000000;
150
- }
@@ -1,17 +0,0 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <title>Directory explorer</title>
5
- <meta charset="utf-8" />
6
- <link rel="icon" href="data:," />
7
- <link
8
- rel="stylesheet"
9
- href="node_esm:@jsenv/core/src/plugins/protocol_file/client/assets/directory.css?inline"
10
- />
11
- </head>
12
-
13
- <body data-theme="dark">
14
- <h1 class="directory_nav">${directoryNav}</h1>
15
- ${directoryContent}
16
- </body>
17
- </html>
@@ -1,54 +0,0 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <title>404 ENOENT</title>
5
- <meta charset="utf-8" />
6
- <link rel="icon" href="data:," />
7
- <link
8
- rel="stylesheet"
9
- href="node_esm:@jsenv/core/src/plugins/protocol_file/client/assets/directory.css?inline"
10
- />
11
- <style>
12
- .error_message {
13
- background-color: #fce4e4;
14
- border: 1px solid #fcc2c3;
15
- padding: 1.5em 1.2em;
16
- margin: 1em;
17
- display: block;
18
- }
19
- .error_text {
20
- color: #cc0033;
21
- font-weight: bold;
22
- line-height: 2em;
23
- text-shadow: 1px 1px rgba(250, 250, 250, 0.3);
24
- }
25
-
26
- .hint_message {
27
- background-color: lightblue;
28
- border: 1px solid #fcc2c3;
29
- padding: 1.5em 1.2em;
30
- margin: 1em;
31
- display: block;
32
- }
33
- .hint_text {
34
- color: black;
35
- font-weight: bold;
36
- line-height: 2em;
37
- text-shadow: 1px 1px rgba(250, 250, 250, 0.3);
38
- }
39
- </style>
40
- </head>
41
-
42
- <body data-theme="dark">
43
- <p class="error_message">
44
- <span class="error_text">
45
- No entry on the filesystem for <code>/${fileRelativeUrl}</code> (at
46
- ${fileUrl})
47
- <br />
48
- Content of first ancestor directory is listed below:
49
- </span>
50
- </p>
51
- <h1 class="directory_nav">${ancestorDirectoryNav}</h1>
52
- ${ancestorDirectoryContent}
53
- </body>
54
- </html>
@@ -1,37 +0,0 @@
1
- /*
2
- * This plugin is very special because it is here
3
- * to provide "serverEvents" used by other plugins
4
- */
5
-
6
- import { injectJsenvScript, parseHtml, stringifyHtmlAst } from "@jsenv/ast";
7
-
8
- const serverEventsClientFileUrl = new URL(
9
- "./client/server_events_client.js",
10
- import.meta.url,
11
- ).href;
12
-
13
- export const jsenvPluginServerEventsClientInjection = ({ logs = true }) => {
14
- return {
15
- name: "jsenv:server_events_client_injection",
16
- appliesDuring: "*",
17
- transformUrlContent: {
18
- html: (urlInfo) => {
19
- const htmlAst = parseHtml({
20
- html: urlInfo.content,
21
- url: urlInfo.url,
22
- });
23
- injectJsenvScript(htmlAst, {
24
- src: serverEventsClientFileUrl,
25
- initCall: {
26
- callee: "window.__server_events__.setup",
27
- params: {
28
- logs,
29
- },
30
- },
31
- pluginName: "jsenv:server_events_client_injection",
32
- });
33
- return stringifyHtmlAst(htmlAst);
34
- },
35
- },
36
- };
37
- };