pinokiod 3.9.2 → 3.9.12
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/kernel/api/index.js +150 -67
- package/kernel/api/rm/index.js +3 -2
- package/kernel/api/set/index.js +4 -2
- package/kernel/bin/caddy.js +0 -2
- package/kernel/bin/index.js +13 -0
- package/kernel/index.js +10 -8
- package/kernel/info.js +3 -0
- package/kernel/plugin.js +34 -0
- package/kernel/router/index.js +1 -1
- package/kernel/router/localhost_variable_router.js +1 -1
- package/kernel/router/peer_variable_router.js +1 -1
- package/kernel/shell.js +14 -0
- package/kernel/util.js +19 -1
- package/package.json +1 -1
- package/server/index.js +296 -98
- package/server/public/modalinput.js +7 -2
- package/server/public/opener.js +32 -0
- package/server/public/style.css +37 -2
- package/server/socket.js +7 -3
- package/server/views/app.ejs +199 -79
- package/server/views/env_editor.ejs +1 -0
- package/server/views/file_explorer.ejs +1 -1
- package/server/views/index.ejs +66 -43
- package/server/views/partials/dynamic.ejs +54 -6
- package/server/views/partials/menu.ejs +11 -6
- package/server/views/prototype/index.ejs +366 -31
- package/server/views/prototype/show.ejs +386 -30
- package/server/views/required_env_editor.ejs +1 -0
- package/server/views/settings.ejs +58 -43
- package/server/views/terminal.ejs +6 -0
package/server/views/index.ejs
CHANGED
|
@@ -128,9 +128,12 @@ body.dark .browser-options-row {
|
|
|
128
128
|
border-bottom: 1px solid rgba(255,255,255,0.05);
|
|
129
129
|
}
|
|
130
130
|
*/
|
|
131
|
-
.context-menu-wrapper {
|
|
132
|
-
padding: 2px 0;
|
|
131
|
+
body.dark .context-menu-wrapper {
|
|
133
132
|
background: rgba(0,0,0,0.9);
|
|
133
|
+
color: white;
|
|
134
|
+
}
|
|
135
|
+
.context-menu-wrapper {
|
|
136
|
+
background: rgba(0,0,0,0.06) !important;
|
|
134
137
|
}
|
|
135
138
|
.context-menu {
|
|
136
139
|
/*
|
|
@@ -150,6 +153,10 @@ body.dark .browser-options-row {
|
|
|
150
153
|
width: 80px;
|
|
151
154
|
padding: 6px 10px !important;
|
|
152
155
|
text-align: left;
|
|
156
|
+
color: black;
|
|
157
|
+
}
|
|
158
|
+
body.dark .context-menu .btn {
|
|
159
|
+
color: white;
|
|
153
160
|
}
|
|
154
161
|
.context-menu.collapsed {
|
|
155
162
|
/*
|
|
@@ -157,16 +164,19 @@ body.dark .browser-options-row {
|
|
|
157
164
|
*/
|
|
158
165
|
display: none;
|
|
159
166
|
}
|
|
160
|
-
body.dark .open-menu {
|
|
167
|
+
body.dark .open-menu, body.dark .browse {
|
|
168
|
+
border: none !important;
|
|
161
169
|
background: black !important;
|
|
162
170
|
color: white !important;
|
|
163
171
|
}
|
|
164
|
-
.open-menu {
|
|
172
|
+
.open-menu, .browse {
|
|
165
173
|
width: 80px;
|
|
166
174
|
border-radius: 0 !important;
|
|
167
|
-
background:
|
|
175
|
+
background: rgba(0,0,0,0.06) !important;
|
|
168
176
|
color: black !important;
|
|
177
|
+
/*
|
|
169
178
|
border: 1px solid rgba(0, 0, 0, 0.3);
|
|
179
|
+
*/
|
|
170
180
|
}
|
|
171
181
|
.open-menu.selected {
|
|
172
182
|
border: none !important;
|
|
@@ -367,27 +377,35 @@ body.dark .open-menu {
|
|
|
367
377
|
<div class='uri'><i class="fa-regular fa-folder"></i><%=item.url%></div>
|
|
368
378
|
<div class='title'><%=item.name%></div>
|
|
369
379
|
<div class='description'><%=item.description%></div>
|
|
370
|
-
<div>
|
|
371
|
-
<
|
|
372
|
-
<
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
<
|
|
376
|
-
<
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
<
|
|
380
|
-
<
|
|
381
|
-
|
|
380
|
+
<div class='menu-btns'>
|
|
381
|
+
<div>
|
|
382
|
+
<button class='btn browse' data-src="<%=item.browser_url%>/browse">
|
|
383
|
+
<i class='fa-solid fa-code'></i> Dev
|
|
384
|
+
</button>
|
|
385
|
+
<button class='btn open-menu'>
|
|
386
|
+
<i class="fa-solid fa-bars"></i><span> Menu</span>
|
|
387
|
+
</button>
|
|
388
|
+
<div class='context-menu collapsed'>
|
|
389
|
+
<div class='context-menu-wrapper'>
|
|
390
|
+
<button class='btn copy-menu' data-src="<%=item.browser_url%>/browse">
|
|
391
|
+
<i class='fa-solid fa-copy'></i> Copy
|
|
392
|
+
</button>
|
|
393
|
+
</div>
|
|
382
394
|
</div>
|
|
383
|
-
<div class='flexible'></div>
|
|
384
395
|
</div>
|
|
385
396
|
<% if (item.running_scripts) { %>
|
|
386
397
|
<% item.running_scripts.forEach((s) => { %>
|
|
398
|
+
<% if (s.id) { %>
|
|
399
|
+
<button class='btn shutdown' data-id="<%=s.id%>">
|
|
400
|
+
<i class="fa-solid fa-stop"></i> Stop <%=s.name%>
|
|
401
|
+
<i class='fa-solid fa-spin fa-circle-notch'></i>
|
|
402
|
+
</button>
|
|
403
|
+
<% } else { %>
|
|
387
404
|
<button class='btn shutdown' data-src="<%=s.path%>">
|
|
388
405
|
<i class="fa-solid fa-stop"></i> Stop <%=s.name%>
|
|
389
406
|
<i class='fa-solid fa-spin fa-circle-notch'></i>
|
|
390
407
|
</button>
|
|
408
|
+
<% } %>
|
|
391
409
|
<% }) %>
|
|
392
410
|
<% } %>
|
|
393
411
|
</div>
|
|
@@ -434,29 +452,31 @@ body.dark .open-menu {
|
|
|
434
452
|
<div class='uri'><i class="fa-regular fa-folder"></i><%=item.url%></div>
|
|
435
453
|
<div class='title'><%=item.name%></div>
|
|
436
454
|
<div class='description'><%=item.description%></div>
|
|
437
|
-
<
|
|
438
|
-
<
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
<
|
|
442
|
-
<
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
<
|
|
446
|
-
<
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
<
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
<
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
<
|
|
456
|
-
|
|
455
|
+
<div class='menu-btns'>
|
|
456
|
+
<button class='btn browse' data-src="<%=item.browser_url%>/browse">
|
|
457
|
+
<i class='fa-solid fa-code'></i> Dev
|
|
458
|
+
</button>
|
|
459
|
+
<button class='btn open-menu'>
|
|
460
|
+
<i class="fa-solid fa-bars"></i><span> Menu</span>
|
|
461
|
+
</button>
|
|
462
|
+
<div class='context-menu collapsed'>
|
|
463
|
+
<div class='context-menu-wrapper'>
|
|
464
|
+
<button class='btn copy-menu' data-src="<%=item.browser_url%>/browse">
|
|
465
|
+
<i class='fa-solid fa-copy'></i> Copy
|
|
466
|
+
</button>
|
|
467
|
+
<button class='btn move-menu' data-src="<%=item.browser_url%>/browse">
|
|
468
|
+
<i class="fa-solid fa-pencil"></i> Move
|
|
469
|
+
</button>
|
|
470
|
+
<button class='btn edit-menu' data-src="<%=item.browser_url%>/browse">
|
|
471
|
+
<i class='fa-solid fa-pen-to-square'></i> Edit
|
|
472
|
+
</button>
|
|
473
|
+
<button class='btn del' data-src="<%=item.url%>">
|
|
474
|
+
<i class="fa-solid fa-trash-can"></i> Delete
|
|
475
|
+
</button>
|
|
476
|
+
</div>
|
|
457
477
|
</div>
|
|
458
|
-
<div class='fiexible'></div>
|
|
459
478
|
</div>
|
|
479
|
+
<div class='fiexible'></div>
|
|
460
480
|
<% if (item.shortcuts && item.shortcuts.length > 0) { %>
|
|
461
481
|
<div class='btns'>
|
|
462
482
|
<% item.shortcuts.forEach((btn) => { %>
|
|
@@ -868,13 +888,16 @@ document.addEventListener("click", async (e) => {
|
|
|
868
888
|
e.preventDefault()
|
|
869
889
|
e.stopPropagation()
|
|
870
890
|
let src = target.getAttribute("data-src")
|
|
891
|
+
let id = target.getAttribute('data-id')
|
|
871
892
|
console.log("src", src)
|
|
872
893
|
|
|
894
|
+
let params = {}
|
|
895
|
+
if (id) params.id = id
|
|
896
|
+
if (src) params.uri = "~/" + src
|
|
897
|
+
|
|
873
898
|
socket.run({
|
|
874
899
|
method: "kernel.api.stop",
|
|
875
|
-
params
|
|
876
|
-
uri: "~/" + src
|
|
877
|
-
}
|
|
900
|
+
params,
|
|
878
901
|
}, (packet) => {
|
|
879
902
|
console.log("packet", packet)
|
|
880
903
|
if (packet.type === "result") {
|
|
@@ -902,7 +925,7 @@ document.addEventListener("click", async (e) => {
|
|
|
902
925
|
e.preventDefault()
|
|
903
926
|
e.stopPropagation()
|
|
904
927
|
let contextMenu = target.closest(".col").querySelector(".context-menu").classList.toggle("collapsed")
|
|
905
|
-
target.classList.toggle("selected")
|
|
928
|
+
// target.classList.toggle("selected")
|
|
906
929
|
return
|
|
907
930
|
}
|
|
908
931
|
|
|
@@ -1,9 +1,57 @@
|
|
|
1
|
-
<% dynamic.forEach((item,
|
|
2
|
-
|
|
3
|
-
<div class='
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
<% dynamic.forEach((item, index) => { %>
|
|
2
|
+
<% if (item.menu) { %>
|
|
3
|
+
<div class='nested-menu <%=item.display || ""%>'>
|
|
4
|
+
<div class='btn header-item frame-link reveal'>
|
|
5
|
+
<div class='tab'><%-item.btn%></div>
|
|
6
|
+
<div class='loader'><i class="fa-solid fa-caret-down"></i><i class="fa-solid fa-caret-up hidden"></i></div>
|
|
6
7
|
</div>
|
|
8
|
+
<div class='submenu hidden'>
|
|
9
|
+
<%- include('./menu', { menu: item.menu }) %>
|
|
10
|
+
</div>
|
|
11
|
+
</div>
|
|
12
|
+
<% } else { %>
|
|
13
|
+
<% if (item.btn) { %>
|
|
14
|
+
<% if (item.action) { %>
|
|
15
|
+
<div <%=item.default ? 'data-default' : ''%> data-action="<%=JSON.stringify(item.action)%>" class='btn header-item frame-link <%=item.display || ""%>'>
|
|
16
|
+
<div class='tab'><%-item.btn%></div>
|
|
17
|
+
</div>
|
|
18
|
+
<% } else if (item.run) { %>
|
|
19
|
+
<div data-run="<%=item.run%>" data-cwd="<%=item.cwd%>" class='btn header-item frame-link <%=item.display || ""%>'>
|
|
20
|
+
<div class='tab'><%-item.btn%></div>
|
|
21
|
+
</div>
|
|
22
|
+
<% } else if (item.command) { %>
|
|
23
|
+
<div data-command="<%=item.command%>" data-filepath="<%=item.href%>" class='btn header-item frame-link <%=item.display || ""%>'>
|
|
24
|
+
<div class='tab'><%-item.btn%></div>
|
|
25
|
+
</div>
|
|
26
|
+
<% } else if (item.fs) { %>
|
|
27
|
+
<div data-filepath="<%=item.href%>" class='btn header-item frame-link <%=item.display || ""%>'>
|
|
28
|
+
<div class='tab'><%-item.btn%></div>
|
|
29
|
+
</div>
|
|
30
|
+
<% } else if (item.target === "_blank") { %>
|
|
31
|
+
<a <%=item.default ? 'data-default' : ''%> data-confirm="<%=item.confirm%>" data-index="<%=index+4%>" target="<%=item.target%>" data-mode="<%=item.mode%>" href="<%=item.href%>" class='btn header-item frame-link <%=item.display || ""%>'>
|
|
32
|
+
<div class='tab'><%-item.btn%></div>
|
|
33
|
+
<div class='loader'>
|
|
34
|
+
<i class="fa-solid fa-up-right-from-square"></i>
|
|
35
|
+
</div>
|
|
36
|
+
</a>
|
|
37
|
+
<% } else { %>
|
|
38
|
+
<a <%=item.default ? 'data-default' : ''%> data-confirm="<%=item.confirm%>" data-index="<%=index+4%>" target="<%=item.target%>" data-mode="<%=item.mode%>" href="<%=item.href%>" class='btn header-item frame-link <%=item.display || ""%>'>
|
|
39
|
+
<div class='tab'><%-item.btn%></div>
|
|
40
|
+
<% if (item.running) { %>
|
|
41
|
+
<div class='loader shutdown online'>
|
|
42
|
+
</div>
|
|
43
|
+
<div class='loader shutdown hidden'>
|
|
44
|
+
<!--
|
|
45
|
+
<i class='fa-solid fa-spin fa-circle-notch'></i>
|
|
46
|
+
<i class="fa-solid fa-chevron-right"></i>
|
|
47
|
+
-->
|
|
48
|
+
<button class='btn'>
|
|
49
|
+
<i class="fa-solid fa-square"></i> Stop
|
|
50
|
+
</button>
|
|
51
|
+
</div>
|
|
52
|
+
<% } %>
|
|
53
|
+
</a>
|
|
54
|
+
<% } %>
|
|
7
55
|
<% } %>
|
|
8
|
-
|
|
56
|
+
<% } %>
|
|
9
57
|
<% }) %>
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
<% menu.forEach((item, index) => { %>
|
|
2
2
|
<% if (item.menu) { %>
|
|
3
|
-
<div class='nested-menu'>
|
|
3
|
+
<div class='nested-menu <%=item.display || ""%>'>
|
|
4
4
|
<div class='btn header-item frame-link reveal'>
|
|
5
5
|
<div class='tab'><%-item.btn%></div>
|
|
6
|
+
<div class='loader'><i class="fa-solid fa-caret-down"></i><i class="fa-solid fa-caret-up hidden"></i></div>
|
|
6
7
|
</div>
|
|
7
8
|
<div class='submenu hidden'>
|
|
8
9
|
<%- include('./menu', { menu: item.menu }) %>
|
|
@@ -11,26 +12,30 @@
|
|
|
11
12
|
<% } else { %>
|
|
12
13
|
<% if (item.btn) { %>
|
|
13
14
|
<% if (item.action) { %>
|
|
14
|
-
<div <%=item.default ? 'data-default' : ''%> data-action="<%=JSON.stringify(item.action)%>" class='btn header-item frame-link'>
|
|
15
|
+
<div <%=item.default ? 'data-default' : ''%> data-action="<%=JSON.stringify(item.action)%>" class='btn header-item frame-link <%=item.display || ""%>'>
|
|
16
|
+
<div class='tab'><%-item.btn%></div>
|
|
17
|
+
</div>
|
|
18
|
+
<% } else if (item.run) { %>
|
|
19
|
+
<div data-run="<%=item.run%>" data-cwd="<%=item.cwd%>" class='btn header-item frame-link <%=item.display || ""%>'>
|
|
15
20
|
<div class='tab'><%-item.btn%></div>
|
|
16
21
|
</div>
|
|
17
22
|
<% } else if (item.command) { %>
|
|
18
|
-
<div data-command="<%=item.command%>" data-filepath="<%=item.href%>" class='btn header-item frame-link'>
|
|
23
|
+
<div data-command="<%=item.command%>" data-filepath="<%=item.href%>" class='btn header-item frame-link <%=item.display || ""%>'>
|
|
19
24
|
<div class='tab'><%-item.btn%></div>
|
|
20
25
|
</div>
|
|
21
26
|
<% } else if (item.fs) { %>
|
|
22
|
-
<div data-filepath="<%=item.href%>" class='btn header-item frame-link'>
|
|
27
|
+
<div data-filepath="<%=item.href%>" class='btn header-item frame-link <%=item.display || ""%>'>
|
|
23
28
|
<div class='tab'><%-item.btn%></div>
|
|
24
29
|
</div>
|
|
25
30
|
<% } else if (item.target === "_blank") { %>
|
|
26
|
-
<a <%=item.default ? 'data-default' : ''%> data-confirm="<%=item.confirm%>" data-index="<%=index%>" target="<%=item.target%>" data-mode="<%=item.mode%>" href="<%=item.href%>" class='btn header-item frame-link'>
|
|
31
|
+
<a <%=item.default ? 'data-default' : ''%> data-confirm="<%=item.confirm%>" data-index="<%=index%>" target="<%=item.target%>" data-mode="<%=item.mode%>" href="<%=item.href%>" class='btn header-item frame-link <%=item.display || ""%>'>
|
|
27
32
|
<div class='tab'><%-item.btn%></div>
|
|
28
33
|
<div class='loader'>
|
|
29
34
|
<i class="fa-solid fa-up-right-from-square"></i>
|
|
30
35
|
</div>
|
|
31
36
|
</a>
|
|
32
37
|
<% } else { %>
|
|
33
|
-
<a <%=item.default ? 'data-default' : ''%> data-confirm="<%=item.confirm%>" data-index="<%=index%>" target="<%=item.target%>" data-mode="<%=item.mode%>" href="<%=item.href%>" class='btn header-item frame-link'>
|
|
38
|
+
<a <%=item.default ? 'data-default' : ''%> data-confirm="<%=item.confirm%>" data-index="<%=index%>" target="<%=item.target%>" data-mode="<%=item.mode%>" href="<%=item.href%>" class='btn header-item frame-link <%=item.display || ""%>'>
|
|
34
39
|
<div class='tab'><%-item.btn%></div>
|
|
35
40
|
<% if (item.running) { %>
|
|
36
41
|
<div class='loader shutdown online'>
|